Add reloc sort test
authorAlan Modra <amodra@gmail.com>
Thu, 27 Aug 2015 06:35:54 +0000 (16:05 +0930)
committerAlan Modra <amodra@gmail.com>
Thu, 27 Aug 2015 13:51:21 +0000 (23:21 +0930)
* ld-powerpc/relocsort.s, * ld-powerpc/relocsort.d: New test.
* ld-powerpc/powerpc.exp: Run it.

ld/testsuite/ChangeLog
ld/testsuite/ld-powerpc/powerpc.exp
ld/testsuite/ld-powerpc/relocsort.d [new file with mode: 0644]
ld/testsuite/ld-powerpc/relocsort.s [new file with mode: 0644]

index 67ef467366dd7ea309bbb28d94e76a74a6043a65..7650cda48b0656f491f3b4dc5927efc403cdf24d 100644 (file)
@@ -1,3 +1,8 @@
+2015-08-27  Alan Modra  <amodra@gmail.com>
+
+       * ld-powerpc/relocsort.s, * ld-powerpc/relocsort.d: New test.
+       * ld-powerpc/powerpc.exp: Run it.
+
 2015-08-26  Nick Clifton  <nickc@redhat.com>
 
        PR ld/18401
index 0b53c0b2c2e018b40414eb1972b73c21c5fc40dc..4211063586667204563ff8de58e1f49a5190a848 100644 (file)
@@ -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 (file)
index 0000000..a32e725
--- /dev/null
@@ -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 (file)
index 0000000..8e05d69
--- /dev/null
@@ -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