[Bug target/77300] [MIPS] incorrectly moves instruction containing local GOT16 relocation into a delay slot
james410 at cowgill dot org.uk
gcc-bugzilla@gcc.gnu.org
Thu Sep 29 10:47:00 GMT 2016
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=77300
--- Comment #3 from James Cowgill <james410 at cowgill dot org.uk> ---
$ mipsel-linux-gnu-readelf -r src.o
Relocation section '.rel.text' at offset 0x584 contains 6 entries:
Offset Info Type Sym.Value Sym. Name
00000000 00001005 R_MIPS_HI16 00000000 _gp_disp
00000004 00001006 R_MIPS_LO16 00000000 _gp_disp
00000010 0000170b R_MIPS_CALL16 00000000 _ZN1GC1Ei
00000028 00001725 R_MIPS_JALR 00000000 _ZN1GC1Ei
00000038 0000130b R_MIPS_CALL16 00000000 _ZN1HIiE5m_fn5ERK1G
0000003c 00001325 R_MIPS_JALR 00000000 _ZN1HIiE5m_fn5ERK1G
Relocation section '.rel.pdr' at offset 0x5b4 contains 3 entries:
Offset Info Type Sym.Value Sym. Name
00000000 00000702 R_MIPS_32 00000000 _ZN1HIiE5m_fn4ERK1G.is
00000020 00001302 R_MIPS_32 00000000 _ZN1HIiE5m_fn5ERK1G
00000040 00001802 R_MIPS_32 00000000 _Z3fn1v
Relocation section '.rel.text._ZN1HIiE5m_fn4ERK1G.isra.1' at offset 0x5cc
contains 6 entries:
Offset Info Type Sym.Value Sym. Name
00000000 00001005 R_MIPS_HI16 00000000 _gp_disp
00000004 00001006 R_MIPS_LO16 00000000 _gp_disp
00000010 0000110b R_MIPS_CALL16 00000000 _ZN1DC1EP1C
00000030 00001125 R_MIPS_JALR 00000000 _ZN1DC1EP1C
00000044 0000120b R_MIPS_CALL16 00000000 _ZN1HIiE5m_fn3EP1C
00000048 00001225 R_MIPS_JALR 00000000 _ZN1HIiE5m_fn3EP1C
Relocation section '.rel.text._ZN1HIiE5m_fn5ERK1G' at offset 0x5fc contains 18
entries:
Offset Info Type Sym.Value Sym. Name
00000000 00001005 R_MIPS_HI16 00000000 _gp_disp
00000004 00001006 R_MIPS_LO16 00000000 _gp_disp
00000010 0000140b R_MIPS_CALL16 00000000 _ZN1HIiE5m_fn2Ev
00000028 00001425 R_MIPS_JALR 00000000 _ZN1HIiE5m_fn2Ev
00000038 0000150b R_MIPS_CALL16 00000000 _ZN1HIiE5m_fn1Ev
0000003c 00001525 R_MIPS_JALR 00000000 _ZN1HIiE5m_fn1Ev
00000048 0000160b R_MIPS_CALL16 00000000 _ZN1HIiE5m_fn6Ev
0000004c 00001625 R_MIPS_JALR 00000000 _ZN1HIiE5m_fn6Ev
0000005c 00000709 R_MIPS_GOT16 00000000 _ZN1HIiE5m_fn4ERK1G.is
00000060 00000706 R_MIPS_LO16 00000000 _ZN1HIiE5m_fn4ERK1G.is
00000068 00000725 R_MIPS_JALR 00000000 _ZN1HIiE5m_fn4ERK1G.is
00000074 00000725 R_MIPS_JALR 00000000 _ZN1HIiE5m_fn4ERK1G.is
00000094 0000170b R_MIPS_CALL16 00000000 _ZN1GC1Ei
0000009c 00001725 R_MIPS_JALR 00000000 _ZN1GC1Ei
000000b0 0000150b R_MIPS_CALL16 00000000 _ZN1HIiE5m_fn1Ev
000000b4 00001525 R_MIPS_JALR 00000000 _ZN1HIiE5m_fn1Ev
000000cc 00000709 R_MIPS_GOT16 00000000 _ZN1HIiE5m_fn4ERK1G.is
000000d4 0000150b R_MIPS_CALL16 00000000 _ZN1HIiE5m_fn1Ev
Relocation section '.rel.eh_frame' at offset 0x68c contains 3 entries:
Offset Info Type Sym.Value Sym. Name
0000001c 00000602 R_MIPS_32 00000000 .text._ZN1HIiE5m_fn4ER
00000054 00000802 R_MIPS_32 00000000 .text._ZN1HIiE5m_fn5ER
00000090 00000202 R_MIPS_32 00000000 .text
$ mipsel-linux-gnu-gcc -fuse-ld=bfd src.o
[... omitted irrelevant undefined references]
/usr/lib/gcc-cross/mipsel-linux-gnu/6/../../../../mipsel-linux-gnu/bin/ld.bfd:
src.o: Can't find matching LO16 reloc against `_ZN1HIiE5m_fn4ERK1G.isra.1' for
R_MIPS_GOT16 at 0xcc in section
`.text._ZN1HIiE5m_fn5ERK1G[_ZN1HIiE5m_fn5ERK1G]'
[...]
$ mipsel-linux-gnu-gcc -fuse-ld=gold src.o
/usr/lib/gcc-cross/mipsel-linux-gnu/6/../../../../mipsel-linux-gnu/bin/ld.gold:
error: Can't find matching LO16 reloc
/usr/lib/gcc-cross/mipsel-linux-gnu/6/../../../../mipsel-linux-gnu/bin/ld.gold:
error: Can't find matching LO16 reloc
/usr/lib/gcc-cross/mipsel-linux-gnu/6/../../../../mipsel-linux-gnu/bin/ld.gold:
error: Can't find matching LO16 reloc
/usr/lib/gcc-cross/mipsel-linux-gnu/6/../../../../mipsel-linux-gnu/bin/ld.gold:
error: Can't find matching LO16 reloc
[...]
More information about the Gcc-bugs
mailing list