[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