summaryrefslogtreecommitdiff
path: root/ld/testsuite
diff options
context:
space:
mode:
authorAlan Modra <amodra@gmail.com>2022-01-26 10:31:36 +1030
committerAlan Modra <amodra@gmail.com>2022-02-05 17:41:08 +1030
commit26995ab233de7fd18ccc8ed5ceb822f5aab9ecab (patch)
treebb697f063dcb54f2f10147048a430bdaa539a2a3 /ld/testsuite
parentd3ec1c514429b8c695974e785e47af8f71c388a2 (diff)
PowerPC64 treatment of absolute symbols
Supporting -static-pie on PowerPC64 requires the linker to properly treat SHN_ABS symbols for cases like glibc's _nl_current_LC_CTYPE_used absolute symbol. I've been slow to fix the linker on powerpc because there is some chance that this will break some shared libraries or PIEs. bfd/ * elf64-ppc.c (ppc64_elf_check_relocs): Consolidate local sym handling code. Don't count dyn relocs against non-dynamic absolute symbols. (dec_dynrel_count): Adjust to suit. (ppc64_elf_edit_toc): Don't remove entries for absolute symbols when pic. (allocate_got): Don't allocate space for got relocs against non-dynamic absolute syms. (ppc64_elf_layout_multitoc): Likewise. (got_and_plt_relr): Likewise. (ppc64_elf_size_dynamic_sections): Likewise for local got. (got_and_plt_relr_for_local_syms): Likewise. (ppc64_elf_size_stubs): Don't allocate space for relr either. (ppc64_elf_relocate_section): Don't write relocs against non-dynamic absolute symbols. Don't optimise got and toc code sequences loading absolute symbol entries. ld/ * testsuite/ld-powerpc/abs-reloc.s, * testsuite/ld-powerpc/abs-static.d, * testsuite/ld-powerpc/abs-static.r, * testsuite/ld-powerpc/abs-pie.d, * testsuite/ld-powerpc/abs-pie.r, * testsuite/ld-powerpc/abs-shared.d, * testsuite/ld-powerpc/abs-shared.r, * testsuite/ld-powerpc/abs-pie-relr.d, * testsuite/ld-powerpc/abs-pie-relr.r, * testsuite/ld-powerpc/abs-shared-relr.d, * testsuite/ld-powerpc/abs-shared-relr.r: New tests. * testsuite/ld-powerpc/powerpc.exp: Run them. (cherry picked from commit 3a3a4c1fe4ccb1914d29fbf8f5930d55aacec78f)
Diffstat (limited to 'ld/testsuite')
-rw-r--r--ld/testsuite/ld-powerpc/abs-pie-relr.d34
-rw-r--r--ld/testsuite/ld-powerpc/abs-pie-relr.r8
-rw-r--r--ld/testsuite/ld-powerpc/abs-pie.d34
-rw-r--r--ld/testsuite/ld-powerpc/abs-pie.r8
-rw-r--r--ld/testsuite/ld-powerpc/abs-reloc.s49
-rw-r--r--ld/testsuite/ld-powerpc/abs-shared-relr.d34
-rw-r--r--ld/testsuite/ld-powerpc/abs-shared-relr.r17
-rw-r--r--ld/testsuite/ld-powerpc/abs-shared.d34
-rw-r--r--ld/testsuite/ld-powerpc/abs-shared.r14
-rw-r--r--ld/testsuite/ld-powerpc/abs-static.d32
-rw-r--r--ld/testsuite/ld-powerpc/abs-static.r6
-rw-r--r--ld/testsuite/ld-powerpc/powerpc.exp20
12 files changed, 290 insertions, 0 deletions
diff --git a/ld/testsuite/ld-powerpc/abs-pie-relr.d b/ld/testsuite/ld-powerpc/abs-pie-relr.d
new file mode 100644
index 0000000000..edf0b430c7
--- /dev/null
+++ b/ld/testsuite/ld-powerpc/abs-pie-relr.d
@@ -0,0 +1,34 @@
+#source: abs-reloc.s
+#as: -a64
+#ld: -melf64ppc -pie --hash-style=sysv -z pack-relative-relocs --defsym a=1 --defsym 'HIDDEN(b=2)' --defsym c=0x123456789abcdef0
+#objdump: -sdr
+
+#...
+Contents of section .got:
+.* (00000000 00018300|00830100 00000000) (00000000 00000001|01000000 00000000) .*
+.* (00000000 00000002|02000000 00000000) (12345678 9abcdef0|f0debc9a 78563412) .*
+.* (00000000 00000002|02000000 00000000) (12345678 9abcdef0|f0debc9a 78563412) .*
+.* (00000000 00000001|01000000 00000000) .*
+Contents of section \.data:
+.* (00000000 00010338|38030100 00000000) (00000000 00000001|01000000 00000000) .*
+.* (00000000 00000002|02000000 00000000) (12345678 9abcdef0|f0debc9a 78563412) .*
+#...
+.* <_start>:
+.*: (3c 4c 00 02|02 00 4c 3c) addis r2,r12,2
+.*: (38 42 81 58|58 81 42 38) addi r2,r2,-32424
+.*: (60 00 00 00|00 00 00 60) nop
+.*: (38 62 80 38|38 80 62 38) addi r3,r2,-32712
+.*: (60 00 00 00|00 00 00 60) nop
+.*: (e8 82 80 08|08 80 82 e8) ld r4,-32760\(r2\)
+.*: (60 00 00 00|00 00 00 60) nop
+.*: (e8 a2 80 10|10 80 a2 e8) ld r5,-32752\(r2\)
+.*: (60 00 00 00|00 00 00 60) nop
+.*: (e8 c2 80 18|18 80 c2 e8) ld r6,-32744\(r2\)
+.*: (60 00 00 00|00 00 00 60) nop
+.*: (38 e2 80 38|38 80 e2 38) addi r7,r2,-32712
+.*: (3d 02 00 00|00 00 02 3d) addis r8,r2,0
+.*: (e9 08 80 30|30 80 08 e9) ld r8,-32720\(r8\)
+.*: (3d 22 00 00|00 00 22 3d) addis r9,r2,0
+.*: (e9 29 80 20|20 80 29 e9) ld r9,-32736\(r9\)
+.*: (3d 42 00 00|00 00 42 3d) addis r10,r2,0
+.*: (e9 4a 80 28|28 80 4a e9) ld r10,-32728\(r10\)
diff --git a/ld/testsuite/ld-powerpc/abs-pie-relr.r b/ld/testsuite/ld-powerpc/abs-pie-relr.r
new file mode 100644
index 0000000000..22effe8954
--- /dev/null
+++ b/ld/testsuite/ld-powerpc/abs-pie-relr.r
@@ -0,0 +1,8 @@
+#source: abs-reloc.s
+#as: -a64
+#ld: -melf64ppc -pie --hash-style=sysv -z pack-relative-relocs --defsym a=1 --defsym 'HIDDEN(b=2)' --defsym c=0x123456789abcdef0
+#readelf: -rW
+
+Relocation section '\.relr\.dyn' at offset .* contains 1 entry:
+ 1 offset
+0+10338
diff --git a/ld/testsuite/ld-powerpc/abs-pie.d b/ld/testsuite/ld-powerpc/abs-pie.d
new file mode 100644
index 0000000000..b0930b6269
--- /dev/null
+++ b/ld/testsuite/ld-powerpc/abs-pie.d
@@ -0,0 +1,34 @@
+#source: abs-reloc.s
+#as: -a64
+#ld: -melf64ppc -pie --hash-style=sysv --defsym a=1 --defsym 'HIDDEN(b=2)' --defsym c=0x123456789abcdef0
+#objdump: -sdr
+
+#...
+Contents of section \.got:
+.* (00000000 00018400|00840100 00000000) (00000000 00000001|01000000 00000000) .*
+.* (00000000 00000002|02000000 00000000) (12345678 9abcdef0|f0debc9a 78563412) .*
+.* (00000000 00000002|02000000 00000000) (12345678 9abcdef0|f0debc9a 78563412) .*
+.* (00000000 00000001|01000000 00000000) .*
+Contents of section \.data:
+.* (00000000 00010438|38040100 00000000) (00000000 00000001|01000000 00000000) .*
+.* (00000000 00000002|02000000 00000000) (12345678 9abcdef0|f0debc9a 78563412) .*
+#...
+.* <_start>:
+.*: (3c 4c 00 02|02 00 4c 3c) addis r2,r12,2
+.*: (38 42 82 10|10 82 42 38) addi r2,r2,-32240
+.*: (60 00 00 00|00 00 00 60) nop
+.*: (38 62 80 38|38 80 62 38) addi r3,r2,-32712
+.*: (60 00 00 00|00 00 00 60) nop
+.*: (e8 82 80 08|08 80 82 e8) ld r4,-32760\(r2\)
+.*: (60 00 00 00|00 00 00 60) nop
+.*: (e8 a2 80 10|10 80 a2 e8) ld r5,-32752\(r2\)
+.*: (60 00 00 00|00 00 00 60) nop
+.*: (e8 c2 80 18|18 80 c2 e8) ld r6,-32744\(r2\)
+.*: (60 00 00 00|00 00 00 60) nop
+.*: (38 e2 80 38|38 80 e2 38) addi r7,r2,-32712
+.*: (3d 02 00 00|00 00 02 3d) addis r8,r2,0
+.*: (e9 08 80 30|30 80 08 e9) ld r8,-32720\(r8\)
+.*: (3d 22 00 00|00 00 22 3d) addis r9,r2,0
+.*: (e9 29 80 20|20 80 29 e9) ld r9,-32736\(r9\)
+.*: (3d 42 00 00|00 00 42 3d) addis r10,r2,0
+.*: (e9 4a 80 28|28 80 4a e9) ld r10,-32728\(r10\)
diff --git a/ld/testsuite/ld-powerpc/abs-pie.r b/ld/testsuite/ld-powerpc/abs-pie.r
new file mode 100644
index 0000000000..2ae4d0e96a
--- /dev/null
+++ b/ld/testsuite/ld-powerpc/abs-pie.r
@@ -0,0 +1,8 @@
+#source: abs-reloc.s
+#as: -a64
+#ld: -melf64ppc -pie --hash-style=sysv --defsym a=1 --defsym 'HIDDEN(b=2)' --defsym c=0x123456789abcdef0
+#readelf: -rW
+
+Relocation section '\.rela\.dyn' at offset .* contains 1 entry:
+ +Offset +Info +Type +Symbol's Value +Symbol's Name \+ Addend
+0+10438 +0+16 R_PPC64_RELATIVE +10438
diff --git a/ld/testsuite/ld-powerpc/abs-reloc.s b/ld/testsuite/ld-powerpc/abs-reloc.s
new file mode 100644
index 0000000000..a5898e1dcb
--- /dev/null
+++ b/ld/testsuite/ld-powerpc/abs-reloc.s
@@ -0,0 +1,49 @@
+ .globl x
+ .hidden x
+
+ .section .toc,"aw"
+ .p2align 3
+.Lx:
+ .quad x
+.La:
+ .quad a
+.Lb:
+ .quad b
+.Lc:
+ .quad c
+
+ .data
+ .p2align 3
+x:
+ .quad x
+ .quad a
+ .quad b
+ .quad c
+
+ .text
+ .p2align 2
+ .globl _start
+ .type _start,@function
+_start:
+0:
+ addis 2,12,.TOC.-0b@ha
+ addi 2,2,.TOC.-0b@l
+ .localentry _start,.-_start
+ addis 3,2,.Lx@toc@ha
+ ld 3,.Lx@toc@l(3)
+ addis 4,2,.La@toc@ha
+ ld 4,.La@toc@l(4)
+ addis 5,2,.Lb@toc@ha
+ ld 5,.Lb@toc@l(5)
+ addis 6,2,.Lc@toc@ha
+ ld 6,.Lc@toc@l(6)
+
+ addis 7,2,x@got@ha
+ ld 7,x@got@l(7)
+ addis 8,2,a@got@ha
+ ld 8,a@got@l(8)
+ addis 9,2,b@got@ha
+ ld 9,b@got@l(9)
+ addis 10,2,c@got@ha
+ ld 10,c@got@l(10)
+ .size _start,.-_start
diff --git a/ld/testsuite/ld-powerpc/abs-shared-relr.d b/ld/testsuite/ld-powerpc/abs-shared-relr.d
new file mode 100644
index 0000000000..1460809bf0
--- /dev/null
+++ b/ld/testsuite/ld-powerpc/abs-shared-relr.d
@@ -0,0 +1,34 @@
+#source: abs-reloc.s
+#as: -a64
+#ld: -melf64ppc -shared --hash-style=sysv -z pack-relative-relocs --defsym a=1 --defsym 'HIDDEN(b=2)' --defsym c=0x123456789abcdef0
+#objdump: -sdr
+
+#...
+Contents of section \.got:
+.* (00000000 00018400|00840100 00000000) 00000000 00000000 .*
+.* (00000000 00000002|02000000 00000000) 00000000 00000000 .*
+.* (00000000 00000002|02000000 00000000) 00000000 00000000 .*
+.* 00000000 00000000 .*
+Contents of section \.data:
+.* (00000000 00010438|38040100 00000000) 00000000 00000000 .*
+.* (00000000 00000002|02000000 00000000) 00000000 00000000 .*
+#...
+.* <_start>:
+.*: (3c 4c 00 02|02 00 4c 3c) addis r2,r12,2
+.*: (38 42 81 b0|b0 81 42 38) addi r2,r2,-32336
+.*: (60 00 00 00|00 00 00 60) nop
+.*: (38 62 80 38|38 80 62 38) addi r3,r2,-32712
+.*: (60 00 00 00|00 00 00 60) nop
+.*: (e8 82 80 08|08 80 82 e8) ld r4,-32760\(r2\)
+.*: (60 00 00 00|00 00 00 60) nop
+.*: (e8 a2 80 10|10 80 a2 e8) ld r5,-32752\(r2\)
+.*: (60 00 00 00|00 00 00 60) nop
+.*: (e8 c2 80 18|18 80 c2 e8) ld r6,-32744\(r2\)
+.*: (60 00 00 00|00 00 00 60) nop
+.*: (38 e2 80 38|38 80 e2 38) addi r7,r2,-32712
+.*: (3d 02 00 00|00 00 02 3d) addis r8,r2,0
+.*: (e9 08 80 30|30 80 08 e9) ld r8,-32720\(r8\)
+.*: (3d 22 00 00|00 00 22 3d) addis r9,r2,0
+.*: (e9 29 80 20|20 80 29 e9) ld r9,-32736\(r9\)
+.*: (3d 42 00 00|00 00 42 3d) addis r10,r2,0
+.*: (e9 4a 80 28|28 80 4a e9) ld r10,-32728\(r10\)
diff --git a/ld/testsuite/ld-powerpc/abs-shared-relr.r b/ld/testsuite/ld-powerpc/abs-shared-relr.r
new file mode 100644
index 0000000000..978c43a38e
--- /dev/null
+++ b/ld/testsuite/ld-powerpc/abs-shared-relr.r
@@ -0,0 +1,17 @@
+#source: abs-reloc.s
+#as: -a64
+#ld: -melf64ppc -pie --hash-style=sysv -z pack-relative-relocs --defsym a=1 --defsym 'HIDDEN(b=2)' --defsym c=0x123456789abcdef0
+#readelf: -rW
+
+Relocation section '\.rela\.dyn' at offset .* contains 6 entries:
+ +Offset +Info +Type +Symbol's Value +Symbol's Name \+ Addend
+0+10408 0+500000026 R_PPC64_ADDR64 0+1 a \+ 0
+0+10430 0+500000014 R_PPC64_GLOB_DAT 0+1 a \+ 0
+0+10440 0+500000026 R_PPC64_ADDR64 0+1 a \+ 0
+0+10418 0+400000026 R_PPC64_ADDR64 123456789abcdef0 c \+ 0
+0+10428 0+400000014 R_PPC64_GLOB_DAT 123456789abcdef0 c \+ 0
+0+10450 0+400000026 R_PPC64_ADDR64 123456789abcdef0 c \+ 0
+
+Relocation section '\.relr\.dyn' at offset .* contains 1 entry:
+ 1 offset
+0+10438
diff --git a/ld/testsuite/ld-powerpc/abs-shared.d b/ld/testsuite/ld-powerpc/abs-shared.d
new file mode 100644
index 0000000000..b66a4b0b86
--- /dev/null
+++ b/ld/testsuite/ld-powerpc/abs-shared.d
@@ -0,0 +1,34 @@
+#source: abs-reloc.s
+#as: -a64
+#ld: -melf64ppc -shared --hash-style=sysv --defsym a=1 --defsym 'HIDDEN(b=2)' --defsym c=0x123456789abcdef0
+#objdump: -sdr
+
+#...
+Contents of section \.got:
+.* (00000000 00018400|00840100 00000000) 00000000 00000000 .*
+.* (00000000 00000002|02000000 00000000) 00000000 00000000 .*
+.* (00000000 00000002|02000000 00000000) 00000000 00000000 .*
+.* 00000000 00000000 .*
+Contents of section \.data:
+.* (00000000 00010438|38040100 00000000) 00000000 00000000 .*
+.* (00000000 00000002|02000000 00000000) 00000000 00000000 .*
+#...
+.* <_start>:
+.*: (3c 4c 00 02|02 00 4c 3c) addis r2,r12,2
+.*: (38 42 81 a0|a0 81 42 38) addi r2,r2,-32352
+.*: (60 00 00 00|00 00 00 60) nop
+.*: (38 62 80 38|38 80 62 38) addi r3,r2,-32712
+.*: (60 00 00 00|00 00 00 60) nop
+.*: (e8 82 80 08|08 80 82 e8) ld r4,-32760\(r2\)
+.*: (60 00 00 00|00 00 00 60) nop
+.*: (e8 a2 80 10|10 80 a2 e8) ld r5,-32752\(r2\)
+.*: (60 00 00 00|00 00 00 60) nop
+.*: (e8 c2 80 18|18 80 c2 e8) ld r6,-32744\(r2\)
+.*: (60 00 00 00|00 00 00 60) nop
+.*: (38 e2 80 38|38 80 e2 38) addi r7,r2,-32712
+.*: (3d 02 00 00|00 00 02 3d) addis r8,r2,0
+.*: (e9 08 80 30|30 80 08 e9) ld r8,-32720\(r8\)
+.*: (3d 22 00 00|00 00 22 3d) addis r9,r2,0
+.*: (e9 29 80 20|20 80 29 e9) ld r9,-32736\(r9\)
+.*: (3d 42 00 00|00 00 42 3d) addis r10,r2,0
+.*: (e9 4a 80 28|28 80 4a e9) ld r10,-32728\(r10\)
diff --git a/ld/testsuite/ld-powerpc/abs-shared.r b/ld/testsuite/ld-powerpc/abs-shared.r
new file mode 100644
index 0000000000..70fb78139b
--- /dev/null
+++ b/ld/testsuite/ld-powerpc/abs-shared.r
@@ -0,0 +1,14 @@
+#source: abs-reloc.s
+#as: -a64
+#ld: -melf64ppc -shared --hash-style=sysv --defsym a=1 --defsym 'HIDDEN(b=2)' --defsym c=0x123456789abcdef0
+#readelf: -rW
+
+Relocation section '\.rela\.dyn' at offset .* contains 7 entries:
+ +Offset +Info +Type +Symbol's Value +Symbol's Name \+ Addend
+0+10438 0+000000016 R_PPC64_RELATIVE +10438
+0+10408 0+500000026 R_PPC64_ADDR64 0+1 a \+ 0
+0+10430 0+500000014 R_PPC64_GLOB_DAT 0+1 a \+ 0
+0+10440 0+500000026 R_PPC64_ADDR64 0+1 a \+ 0
+0+10418 0+400000026 R_PPC64_ADDR64 123456789abcdef0 c \+ 0
+0+10428 0+400000014 R_PPC64_GLOB_DAT 123456789abcdef0 c \+ 0
+0+10450 0+400000026 R_PPC64_ADDR64 123456789abcdef0 c \+ 0
diff --git a/ld/testsuite/ld-powerpc/abs-static.d b/ld/testsuite/ld-powerpc/abs-static.d
new file mode 100644
index 0000000000..fafb1a6e94
--- /dev/null
+++ b/ld/testsuite/ld-powerpc/abs-static.d
@@ -0,0 +1,32 @@
+#source: abs-reloc.s
+#as: -a64
+#ld: -melf64ppc -static --defsym a=1 --defsym 'HIDDEN(b=2)' --defsym c=0x123456789abcdef0
+#objdump: -sdr
+
+#...
+Contents of section \.got:
+.* (00000000 10018100|00810110 00000000) (12345678 9abcdef0|f0debc9a 78563412) .*
+.* (12345678 9abcdef0|f0debc9a 78563412) .*
+Contents of section \.data:
+.* (00000000 10010118|18010110 00000000) (00000000 00000001|01000000 00000000) .*
+.* (00000000 00000002|02000000 00000000) (12345678 9abcdef0|f0debc9a 78563412) .*
+#...
+.* <_start>:
+.*: (3c 40 10 02|02 10 40 3c) lis r2,4098
+.*: (38 42 81 00|00 81 42 38) addi r2,r2,-32512
+.*: (60 00 00 00|00 00 00 60) nop
+.*: (38 62 80 18|18 80 62 38) addi r3,r2,-32744
+.*: (3c 82 ef fe|fe ef 82 3c) addis r4,r2,-4098
+.*: (38 84 7f 01|01 7f 84 38) addi r4,r4,32513
+.*: (3c a2 ef fe|fe ef a2 3c) addis r5,r2,-4098
+.*: (38 a5 7f 02|02 7f a5 38) addi r5,r5,32514
+.*: (60 00 00 00|00 00 00 60) nop
+.*: (e8 c2 80 08|08 80 c2 e8) ld r6,-32760\(r2\)
+.*: (60 00 00 00|00 00 00 60) nop
+.*: (38 e2 80 18|18 80 e2 38) addi r7,r2,-32744
+.*: (3d 02 ef fe|fe ef 02 3d) addis r8,r2,-4098
+.*: (39 08 7f 01|01 7f 08 39) addi r8,r8,32513
+.*: (3d 22 ef fe|fe ef 22 3d) addis r9,r2,-4098
+.*: (39 29 7f 02|02 7f 29 39) addi r9,r9,32514
+.*: (60 00 00 00|00 00 00 60) nop
+.*: (e9 42 80 10|10 80 42 e9) ld r10,-32752\(r2\)
diff --git a/ld/testsuite/ld-powerpc/abs-static.r b/ld/testsuite/ld-powerpc/abs-static.r
new file mode 100644
index 0000000000..4b5886cb02
--- /dev/null
+++ b/ld/testsuite/ld-powerpc/abs-static.r
@@ -0,0 +1,6 @@
+#source: abs-reloc.s
+#as: -a64
+#ld: -melf64ppc -static --defsym a=1 --defsym 'HIDDEN(b=2)' --defsym c=0x123456789abcdef0
+#readelf: -rW
+
+There are no relocations in this file.
diff --git a/ld/testsuite/ld-powerpc/powerpc.exp b/ld/testsuite/ld-powerpc/powerpc.exp
index 3d738f5f93..318bf92c85 100644
--- a/ld/testsuite/ld-powerpc/powerpc.exp
+++ b/ld/testsuite/ld-powerpc/powerpc.exp
@@ -354,6 +354,26 @@ set ppc64elftests {
{"startstop" "-shared -melf64ppc --hash-style=sysv --gc-sections -z start-stop-gc" ""
"-a64 -mpower10" {startstop.s}
{{objdump -d startstop.d} {readelf {-rW} startstop.r}} "startstop.so"}
+ {"abs-static" "-melf64ppc -static --defsym a=1 --defsym 'HIDDEN(b=2)' --defsym c=0x123456789abcdef0" ""
+ "-a64" {abs-reloc.s}
+ {{objdump {-sdr} abs-static.d}
+ {readelf {-rW} abs-static.r}} "abs-static"}
+ {"abs-pie" "-melf64ppc -pie --hash-style=sysv --defsym a=1 --defsym 'HIDDEN(b=2)' --defsym c=0x123456789abcdef0" ""
+ "-a64" {abs-reloc.s}
+ {{objdump {-sdr} abs-pie.d}
+ {readelf {-rW} abs-pie.r}} "abs-pie"}
+ {"abs-shared" "-melf64ppc -shared --hash-style=sysv --defsym a=1 --defsym 'HIDDEN(b=2)' --defsym c=0x123456789abcdef0" ""
+ "-a64" {abs-reloc.s}
+ {{objdump {-sdr} abs-shared.d}
+ {readelf {-rW} abs-shared.r}} "abs-shared"}
+ {"abs-pie-relr" "-melf64ppc -pie --hash-style=sysv -z pack-relative-relocs --defsym a=1 --defsym 'HIDDEN(b=2)' --defsym c=0x123456789abcdef0" ""
+ "-a64" {abs-reloc.s}
+ {{objdump {-sdr} abs-pie-relr.d}
+ {readelf {-rW} abs-pie-relr.r}} "abs-pie-relr"}
+ {"abs-shared-relr" "-melf64ppc -shared --hash-style=sysv -z pack-relative-relocs --defsym a=1 --defsym 'HIDDEN(b=2)' --defsym c=0x123456789abcdef0" ""
+ "-a64" {abs-reloc.s}
+ {{objdump {-sdr} abs-shared-relr.d}
+ {readelf {-rW} abs-shared-relr.r}} "abs-shared-relr"}
}
set ppceabitests {