as constant calculation question
Nick Clifton
nickc@redhat.com
Wed Apr 30 13:04:00 GMT 2008
Hi Efim,
> does anyone know why as for ARM can use
> .word __load_section_end__
> .word __init_start__
> .word __load_section_end__ - 0x300000
>
> but not:
> .word __load_section_end__ - __init_start__
Because the ARM ABI does not define a reloc (or rather pair of relocs)
to handle the difference between two undefined symbols.
A single reloc can only reference at most one symbol. Thus the first
three cases can all be handled by the R_ARM_ABS32 reloc which will refer
to the appropriate (undefined) symbol. The last case however requires
that *two* symbols be referenced. This requires that two relocs be
generated and the ARM ABI has not been set up to enable this feature.
Cheers
Nick
More information about the Binutils
mailing list