Assembler messages

Shaun Jackman sjackman@telus.net
Wed Jun 16 16:07:00 GMT 2004


> > [a.s]
> > .text
> > a:
> > .word 0
> >
> > [b.s]
> > .text
> > b:
> > 	ldr r0, a
> >
> > To me, just because the symbol and the referencer are in
> > different files shouldn't end the world. That's why we have a
> > linker. If you merge the two files it works just fine.
>
>   Yes, that'll work fine.  In the prior example, the symbol X was
> assumed not to actually be defined anywhere else, I assume.

Ah, but it doesn't work, and I don't understand why.

$ arm-elf-gcc -c a.s b.s
b.s: Assembler messages:
b.s:3: Error: internal_relocation (type: OFFSET_IMM) not fixed up
$ cat a.s b.s > ab.s
$ arm-elf-gcc -c ab.s
$

Can this be made to work?

> > and a check for the second case is needed:
> > 	"`%s' must be defined in the same section"
>
>   When gas detects that two symbols are in different sections and
> the abi doesn't support the necessary reloc, it emits the following
> message (gas/write.c:fixup_segment)
>
> Error: can't resolve `.text' {.text section} - `.L13' {.rodata
> section}
>
>   May I suggest it would be good to make the messages consistent
> between assembler and linker?

I found that the assembler produced the same cryptic message.

$ cat > c.s
.data
a:
.word 0
.text
b:
        ldr r0, a
$ arm-elf-gcc -c c.s
c.s: Assembler messages:
c.s:6: Error: internal_relocation (type: OFFSET_IMM) not fixed up

I'd like to replace all occurrences of this message this a message 
explaining why the assembler was unable to fix up the relocation.

Cheers,
Shaun



More information about the Binutils mailing list