[AVR][PATCH] Add linker relaxation support
[AVR][PATCH] Add linker relaxation support / Fix 64 bit bug in gas rev. 5
Nick Clifton nickc@redhat.comThu Nov 10 12:50:00 GMT 2005
- Previous message (by thread): [AVR][PATCH] Add linker relaxation support / Fix 64 bit bug in gas rev. 5
- Next message (by thread): [patch] Arm branch locations and BLX conversion
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
Hi Björn, > 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 Are you using version of GAS with your relaxation patch applied ? Without it (but with linkrelax set to 1 in md_begin) I get this: RELOCATION RECORDS FOR [.data]: OFFSET TYPE VALUE 00000000 R_AVR_32 .data Ie the reloc has been transformed into a reloc against the .data section symbol. Note - the .set pseudo-op does not create an alias, it creates an equivalence, so in your test case it creates a new symbol called "sym" whose value is the same as that of the symbol called "here". So for example with your test case if I run "objdump -t test.o" I see: SYMBOL TABLE: 00000000 l d .text 00000000 .text 00000000 l d .data 00000000 .data 00000000 l d .bss 00000000 .bss 00000000 l .data 00000000 here 00000000 l .data 00000000 sym ie both "sym" and "here" exist as local symbols. > 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? That should not be necessary. What should have happened is that before tc_gen_reloc() is called any relocs against local symbols should have been either resolved or else transformed into relocs against global symbols (usually section symbols). See adjust_reloc_syms() in gas/write.c. I am guessing that in your case tc_fix_adjustable() is defined and not allowing the local symbol reference to be transformed into a section symbol reference. Cheers Nick
- Previous message (by thread): [AVR][PATCH] Add linker relaxation support / Fix 64 bit bug in gas rev. 5
- Next message (by thread): [patch] Arm branch locations and BLX conversion
- Messages sorted by: [ date ] [ thread ] [ subject ] [ author ]
More information about the Binutils mailing list