[fpc-devel] AVR - assembler error when compiling large files

Florian Klämpfl florian at freepascal.org
Sat Nov 25 18:27:52 CET 2017

Am 25.11.2017 um 16:53 schrieb Christo:
> I am busy adding extra definitions to the AVR mcu files.  I've
> encountered a problem when building some controller files with lots of
> record and set definitions.  When I build the RTL the build process
> fails with lots of assembler errors:
> ../../rtl/units/avr-embedded/atmega32u4.s: Assembler messages:
> ../../rtl/units/avr-embedded/atmega32u4.s:37285: Error: value of 65611
> too large for field of 2 bytes at 65609
> The lines surrounding the first error:
> _sATMEGA32U4s_Ld549:
> 	.uleb128	6
> 	.ascii	"rtti_enum_basetype_array_rec$00000070\000"
> 	.short	.La454  <===== line 37285
> .La454:
> 	.uleb128	12
> 	.ascii	"$RTTI_ENUM_BASETYPE_ARRAY_REC$00000070\000"
> It seems as if there are too many data entries to fit into a 16 bit
> value (.short). Note that this is only an issue for large files,
> smaller files do not have this problem.

What happens if you compile them with -CX?

>  Is there a way to instruct the compiler to use a larger data type when
> emitting this information to the assembler file?

This makes no sense as the program code using this data would not know about this.

More information about the fpc-devel mailing list