https://sourceware.org/bugzilla/show_bug.cgi?id=18010
--- Comment #1 from Alan Modra <amodra at gmail dot com> --- We have a bunch of strings in a string merge section .section .rodata.str1.8,"aMS",@progbits,1 all nicely aligned to 8 byte boundaries (as you'd expect from the .8 in the name). Somehow the alignment isn't respected and we end up with misaligned strings. Since a powerpc64 ld reg+offset form address must be a multiple of 4, we lose low bits of the address. This is the code reading the " break;\n" string. .LC84 happens to be defined at .rodata.str1.8+0x570. 1d50: 3d 02 00 00 addis r8,r2,0 1d52: R_PPC64_TOC16_HA .LC84+0x8 1d54: 80 e8 00 00 lwz r7,0(r8) 1d56: R_PPC64_TOC16_LO .LC84+0x8 1d58: 3d 02 00 00 addis r8,r2,0 1d5a: R_PPC64_TOC16_HA .LC84+0xc 1d5c: 89 28 00 00 lbz r9,0(r8) 1d5e: R_PPC64_TOC16_LO .LC84+0xc 1d60: 3d 02 00 00 addis r8,r2,0 1d62: R_PPC64_TOC16_HA .rodata.str1.8+0x570 1d64: 90 ea 00 08 stw r7,8(r10) 1d68: 99 2a 00 0c stb r9,12(r10) 1d6c: e9 28 00 00 ld r9,0(r8) 1d6e: R_PPC64_TOC16_LO_DS .rodata.str1.8+0x570 This is linked to 100fdad0: 3d 02 ff fb addis r8,r2,-5 100fdad4: 80 e8 7b 22 lwz r7,31522(r8) 100fdad8: 3d 02 ff fb addis r8,r2,-5 100fdadc: 89 28 7b 26 lbz r9,31526(r8) 100fdae0: 3d 02 ff fb addis r8,r2,-5 100fdae4: 90 ea 00 08 stw r7,8(r10) 100fdae8: 99 2a 00 0c stb r9,12(r10) 100fdaec: e9 28 7b 18 ld r9,31512(r8) For starters, I'll be committing a patch that makes gold complain if LO_DS relocs attempt to apply a misaligned value. -- 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