Question on gas difference between 2.19.1 and 2.20
Phil Blundell
pb@reciva.com
Tue Nov 3 20:38:00 GMT 2009
On Tue, 2009-11-03 at 20:24 +0100, Lluís Batlle wrote:
> jumpStart:
>
> .section ".reset_vector_sect",#alloc, #execinstr
>
> /* Check if we booted from DRAM. If we did someone already */
> /* initialize the DRAM controller */
>
> adr r4, jumpStart /* r4 <- current position of
> code */ /* line 62 of the source file */
> mov r5, #~0xff
> Assembling with binutils 2.20 gas, I get:
> jump.S:62: Error: symbol .text is in a different section
>
> Does anybody understand this behaviour? Maybe I am doing something
> wrong? I don't understand the meaning of that message in this context.
I am rather surprised that binutils 2.19.1 accepted this code. What
output did it produce?
The "adr" pseudo-op is (approximately) an assembler shorthand for "add
rN, pc, #(dest - .)", i.e. it assembles to an arithmetic operation with
an immediate operand. Using adr across sections is possible in theory,
albeit with restrictions, but I don't think either GAS nor GNU ld
understand the relocation types that you would need to make it work.
p.
More information about the Binutils
mailing list