http://sourceware.org/bugzilla/show_bug.cgi?id=13899
Bug #: 13899 Summary: [avr]: Wrong relaxation of R_AVR_16_PM with gs() Product: binutils Version: 2.23 (HEAD) Status: NEW Severity: normal Priority: P2 Component: ld AssignedTo: unassig...@sourceware.org ReportedBy: g...@gcc.gnu.org CC: eric.wedding...@atmel.com Classification: Unclassified Target: avr Created attachment 6301 --> http://sourceware.org/bugzilla/attachment.cgi?id=6301 bug-relax.zip: Files to reproduce The linker computes wrong values for gs() initializers like from text.s: .global menuitem_text .section .progmem.data,"a",@progbits .type menuitem_text, @object .size menuitem_text, 14 menuitem_text: .word gs(onPixel_text) .word gs(onRedraw_text) .word gs(onKey_text) .word gs(onEnter_text) I tried to work out a small example, but with no avail. So I post the whole project. Steps to reproduce: 1) Unpack the attached zip file. It inflates to ./bug-relax/ 2) cd ./bug-relax 3) There are assembler sources in the directory and a small Makefile. Run make obj all 4) This generates two files bug.elf and bug.lst bug.lst is diff'ed against good.lst generated with avr-ld 2.21 All in all, the "make obj all" will print something like avr-as -mmcu=atmega168 frac8.ss -o frac8-asm.o avr-as -mmcu=atmega168 parith-16.ss -o parith-16-asm.o ... avr-ld -m avr5 -Tdata 0x800100 crtm168.o -v -o bug.elf --relax ... GNU ld (GNU Binutils) 2.22.52.20120322 diff -u1 good.lst bug.lst -good.elf: file format elf32-avr +bug.elf: file format elf32-avr @@ -81,3 +81,3 @@ 0000008e <menuitem_text>: - 8e: 78 06 23 06 af 05 18 06 19 01 28 04 4f 01 + 8e: 7c 06 24 06 af 05 18 06 19 01 28 04 4f 01 @@ -163,3 +163,3 @@ 00000299 <menuitem_asteroids>: - 299: 61 0c 6a 0d 1a 0b de 0a 8f 02 08 02 e8 02 + 299: 70 0c 7f 0d 1b 0b de 0a 8f 02 08 02 e8 02 @@ -217,3 +217,3 @@ 000003ae <menuitem_snake>: - 3ae: 92 11 7d 10 24 0f 58 0f 6d 03 52 02 bc 03 + 3ae: 92 11 7f 10 24 0f 58 0f 6d 03 52 02 bc 03 @@ -263,3 +263,3 @@ 00000491 <menuitem_schoner>: - 491: 9a 14 e3 13 18 14 09 14 02 01 00 08 9f 04 + 491: 9b 14 e3 13 18 14 09 14 02 01 00 08 9f 04 In text.s: menuitem_text the first enty is .word gs(onPixel_text) This function is located at word address 0x0678: 00000cf0 <onPixel_text> But bug.lst has 0x67c as printed in the diff above. -- Configure bugmail: http://sourceware.org/bugzilla/userprefs.cgi?tab=email ------- You are receiving this mail because: ------- You are on the CC list for the bug. _______________________________________________ bug-binutils mailing list bug-binutils@gnu.org https://lists.gnu.org/mailman/listinfo/bug-binutils