The follow mips asm fragment when assembled and link -shared the following error messages from ld:
mips64el--netbsd-as -KPIC -mabi=new -o devname.so devname.o mips64el--netbsd-ld: error: /tmp/devname.so contains a reloc (0x0000000000000914) for section .text that references a non-existent global symbol mips64el--netbsd-ld: final link failed: Bad value .file 1 "devname.c" .section .mdebug.abiN32 .previous .abicalls addiu $sp,$sp,-16 move $12,$28 lui $28,%hi(%neg(%gp_rel(_devname))) addu $28,$28,$25 addiu $28,$28,%lo(%neg(%gp_rel(_devname))) lw $2,%got_page($LC4+5)($28) addiu $2,$2,%got_ofst($LC4+5) move $28,$12 j $31 addiu $sp,$sp,16 .set macro .set reorder .end _devname .size _devname, .-_devname However, if the follow diff is applied then the error goes away. @@ -25,8 +25,9 @@ lui $28,%hi(%neg(%gp_rel(_devname))) addu $28,$28,$25 addiu $28,$28,%lo(%neg(%gp_rel(_devname))) - lw $2,%got_page($LC4+5)($28) - addiu $2,$2,%got_ofst($LC4+5) +$LC5=$LC4+5 + lw $2,%got_page($LC5)($28) + addiu $2,$2,%got_ofst($LC5) move $28,$12 j $31 addiu $sp,$sp,16 Obviously that change should not caused anything to change but it did. It seems that when the reloc is emitted, the $LC4 + 5 should have been changed to .rodata.str1.8 + offset($LC4) + 5. This bug exists in 2.16 and in 2.19 and on HEAD. -- Summary: gas emits invalid reloc which causes ld to abort Product: binutils Version: 2.19 Status: NEW Severity: normal Priority: P2 Component: gas AssignedTo: unassigned at sources dot redhat dot com ReportedBy: matt at NetBSD dot org CC: bug-binutils at gnu dot org GCC build triplet: x86_64--netbsd GCC host triplet: x86_64--netbsd GCC target triplet: mips64el--netbsd http://sourceware.org/bugzilla/show_bug.cgi?id=10558 ------- You are receiving this mail because: ------- You are on the CC list for the bug, or are watching someone who is. _______________________________________________ bug-binutils mailing list bug-binutils@gnu.org http://lists.gnu.org/mailman/listinfo/bug-binutils