From 1cb0b71f5a2e5b55e1c4b41fc308414572180893 Mon Sep 17 00:00:00 2001 From: Alan Modra Date: Thu, 27 Aug 2015 16:05:54 +0930 Subject: [PATCH] Add reloc sort test * ld-powerpc/relocsort.s, * ld-powerpc/relocsort.d: New test. * ld-powerpc/powerpc.exp: Run it. --- ld/testsuite/ChangeLog | 5 +++++ ld/testsuite/ld-powerpc/powerpc.exp | 1 + ld/testsuite/ld-powerpc/relocsort.d | 30 +++++++++++++++++++++++++++++ ld/testsuite/ld-powerpc/relocsort.s | 26 +++++++++++++++++++++++++ 4 files changed, 62 insertions(+) create mode 100644 ld/testsuite/ld-powerpc/relocsort.d create mode 100644 ld/testsuite/ld-powerpc/relocsort.s diff --git a/ld/testsuite/ChangeLog b/ld/testsuite/ChangeLog index 67ef467366d..7650cda48b0 100644 --- a/ld/testsuite/ChangeLog +++ b/ld/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2015-08-27 Alan Modra + + * ld-powerpc/relocsort.s, * ld-powerpc/relocsort.d: New test. + * ld-powerpc/powerpc.exp: Run it. + 2015-08-26 Nick Clifton PR ld/18401 diff --git a/ld/testsuite/ld-powerpc/powerpc.exp b/ld/testsuite/ld-powerpc/powerpc.exp index 0b53c0b2c2e..42110635866 100644 --- a/ld/testsuite/ld-powerpc/powerpc.exp +++ b/ld/testsuite/ld-powerpc/powerpc.exp @@ -287,6 +287,7 @@ if [ supports_ppc64 ] then { run_dump_test "tocvar" run_dump_test "tocnovar" run_dump_test "tlsld" + run_dump_test "relocsort" } run_dump_test "tlsld32" diff --git a/ld/testsuite/ld-powerpc/relocsort.d b/ld/testsuite/ld-powerpc/relocsort.d new file mode 100644 index 00000000000..a32e7253772 --- /dev/null +++ b/ld/testsuite/ld-powerpc/relocsort.d @@ -0,0 +1,30 @@ +#source: relocsort.s +#as: -a64 +#ld: -r -melf64ppc +#readelf: -r --wide + +.* contains 23 entries: +.* +0+0 +[0-9a-f]+ R_PPC64_GOT_TLSGD16 +0+0 x \+ 0 +0+0 +[0-9a-f]+ R_PPC64_NONE +0 +0+0 +[0-9a-f]+ R_PPC64_ADDR32 +1 +0+0 +[0-9a-f]+ R_PPC64_ADDR24 +2 +0+0 +[0-9a-f]+ R_PPC64_ADDR16 +3 +0+0 +[0-9a-f]+ R_PPC64_ADDR16_LO +4 +0+0 +[0-9a-f]+ R_PPC64_ADDR16_HI +5 +0+0 +[0-9a-f]+ R_PPC64_ADDR16_HA +6 +0+0 +[0-9a-f]+ R_PPC64_ADDR14 +7 +0+0 +[0-9a-f]+ R_PPC64_ADDR14_BRTAKEN +8 +0+0 +[0-9a-f]+ R_PPC64_ADDR14_BRNTAKE +9 +0+4 +[0-9a-f]+ R_PPC64_REL24 +0+0 __tls_get_addr \+ 0 +0+4 +[0-9a-f]+ R_PPC64_TLSGD +0+0 x \+ 0 +0+8 +[0-9a-f]+ R_PPC64_REL24 +a +0+8 +[0-9a-f]+ R_PPC64_REL14 +b +0+8 +[0-9a-f]+ R_PPC64_REL14_BRTAKEN +c +0+8 +[0-9a-f]+ R_PPC64_REL14_BRNTAKEN +d +0+8 +[0-9a-f]+ R_PPC64_GOT16 +e +0+8 +[0-9a-f]+ R_PPC64_GOT16_LO +f +0+8 +[0-9a-f]+ R_PPC64_GOT16_HI +10 +0+8 +[0-9a-f]+ R_PPC64_GOT16_HA +11 +0+8 +[0-9a-f]+ R_PPC64_NONE +12 +0+8 +[0-9a-f]+ R_PPC64_COPY +13 diff --git a/ld/testsuite/ld-powerpc/relocsort.s b/ld/testsuite/ld-powerpc/relocsort.s new file mode 100644 index 00000000000..8e05d690287 --- /dev/null +++ b/ld/testsuite/ld-powerpc/relocsort.s @@ -0,0 +1,26 @@ +# Deliberately create out-of-order relocs to test that ld -r sorts them. + .text + .long 0, 0, 0 + .reloc 4, R_PPC64_REL24, __tls_get_addr + .reloc 4, R_PPC64_TLSGD, x + .reloc 0, R_PPC64_GOT_TLSGD16, x + .reloc 0, R_PPC64_NONE, 0 + .reloc 0, R_PPC64_ADDR32, 1 + .reloc 0, R_PPC64_ADDR24, 2 + .reloc 8, R_PPC64_REL24, 10 + .reloc 8, R_PPC64_REL14, 11 + .reloc 8, R_PPC64_REL14_BRTAKEN, 12 + .reloc 0, R_PPC64_ADDR16, 3 + .reloc 0, R_PPC64_ADDR16_LO, 4 + .reloc 0, R_PPC64_ADDR16_HI, 5 + .reloc 0, R_PPC64_ADDR16_HA, 6 + .reloc 0, R_PPC64_ADDR14, 7 + .reloc 8, R_PPC64_REL14_BRNTAKEN, 13 + .reloc 8, R_PPC64_GOT16, 14 + .reloc 8, R_PPC64_GOT16_LO, 15 + .reloc 8, R_PPC64_GOT16_HI, 16 + .reloc 8, R_PPC64_GOT16_HA, 17 + .reloc 8, R_PPC64_NONE, 18 + .reloc 8, R_PPC64_COPY, 19 + .reloc 0, R_PPC64_ADDR14_BRTAKEN, 8 + .reloc 0, R_PPC64_ADDR14_BRNTAKEN, 9 -- 2.30.2