[AVR][PATCH] Add linker relaxation support / Fix 64 bit bug in gas rev. 5
Björn Haase
bjoern.m.haase@web.de
Tue Nov 8 22:04:00 GMT 2005
Nick Clifton wrote on Dienstag, 8. November 2005 13:16 :
>
> Which in turn is probably related to the fact that the reloc is being
> made against a local symbol ("here") rather than a global symbol.
the problem seems to be deeper. I'm a bit lost. I most certainly would have to
learn how strange objects defined by .set directives are represented in gas.
Symbols themselves? It seems that the .set directive is sometimes completely
ignored as soon as linkrelax is set to 1. The simple test case
.data
here:
.set sym, here
.long sym
Output of objdump:
/tmp/test.o: file format elf32-avr
RELOCATION RECORDS FOR [.data]:
OFFSET TYPE VALUE
00000000 R_AVR_32 sym
Contents of section .data:
0000 00000000 ....
shows that a reloc for an external symbol "sym" is generated. Is it possible
that in tc_gen_reloc after
*reloc->sym_ptr_ptr = symbol_get_bfdsym (fixp->fx_addsy);
one would need some kind of recursion for the case where the value of the
symbol sym itself is taken from another symbol?
Bjoern.
More information about the Binutils
mailing list