[PowerPC64] pc-relative TLS relocations
[deliverable/binutils-gdb.git] / ld / testsuite / ld-powerpc / powerpc.exp
index 0735ab71c2c84838d7ba3055615803ce99ca7dee..87a7462fa01ebe016dcf64302d98347deae440be 100644 (file)
@@ -1,5 +1,5 @@
 # Expect script for ld-powerpc tests
-#   Copyright (C) 2002-2017 Free Software Foundation, Inc.
+#   Copyright (C) 2002-2019 Free Software Foundation, Inc.
 #
 # This file is part of the GNU Binutils.
 #
@@ -70,7 +70,7 @@ if {[istarget "*-*-vxworks"]} {
 # is ELF, because we pass -melf32ppc to ld and powerpc-nto-ld wants
 # -melf32ppcnto.
 
-if { [istarget "*-*-macos*"] || [istarget "*-*-netware*"]
+if { [istarget "*-*-macos*"]
      || [istarget "*-*-pe"] || [istarget "*-*-winnt*"]
      || [istarget "*-*-cygwin*"] || [istarget "*-*-aix*"]
      || [istarget "*-*-beos*"] || [istarget "*-*-lynxos*"]
@@ -121,11 +121,11 @@ set ppcelftests {
      "tls32"}
     {"TLS32 helper shared library" "-shared -melf32ppc tmpdir/tlslib32.o" "" "" {}
      {} "libtlslib32.so"}
-    {"TLS32 dynamic exec" "-melf32ppc --no-ld-generated-unwind-info --hash-style=sysv tmpdir/tls32.o tmpdir/libtlslib32.so" "" "" {}
+    {"TLS32 dynamic exec" "-melf32ppc --no-plt-align --no-ld-generated-unwind-info --hash-style=sysv tmpdir/tls32.o tmpdir/libtlslib32.so" "" "" {}
      {{readelf -WSsrl tlsexe32.r} {objdump -dr tlsexe32.d}
       {objdump -sj.got tlsexe32.g} {objdump -sj.tdata tlsexe32.t}}
      "tlsexe32"}
-    {"TLS32 shared" "-shared -melf32ppc --no-ld-generated-unwind-info --hash-style=sysv tmpdir/tls32.o" "" "" {}
+    {"TLS32 shared" "-shared -melf32ppc --no-plt-align --no-ld-generated-unwind-info --hash-style=sysv tmpdir/tls32.o" "" "" {}
      {{readelf -WSsrl tlsso32.r} {objdump -dr tlsso32.d}
       {objdump -sj.got tlsso32.g} {objdump -sj.tdata tlsso32.t}}
      "tls32.so"}
@@ -147,7 +147,7 @@ set ppcelftests {
     {"TLS32 DLL" "-shared -melf32ppc --version-script tlsdll.ver" ""
      "-a32" {tlsdll_32.s}
      {} "tlsdll32.so"}
-    {"TLS32 opt 5" "-melf32ppc -shared --gc-sections --secure-plt tmpdir/tlsdll32.so" "" "-a32"  {tlsopt5_32.s}
+    {"TLS32 opt 5" "-melf32ppc -shared --gc-sections --secure-plt --no-plt-align tmpdir/tlsdll32.so" "" "-a32"  {tlsopt5_32.s}
      {{objdump -dr tlsopt5_32.d}}
      "tlsopt5_32"}
     {"Shared library with global symbol" "-shared -melf32ppc" "" "-a32" {sdalib.s}
@@ -160,29 +160,32 @@ set ppcelftests {
     {"relocatable relaxing" "-melf32ppc -r --relax" "" "-a32" "relax.s"
      {{objdump -dr relaxr.d}}
      "rrelax"}
+    {"relocatable relaxing large" "-melf32ppc -r --relax" "" "-a32" "relax.s big.s"
+     {{objdump -dr relaxrl.d}}
+     "rrelax"}
 }
 
 set ppc64elftests {
-    {"TLS static exec (markers)" "-melf64ppc" ""
+    {"TLS static exec (markers)" "-melf64ppc --no-plt-align" ""
      "-a64 --defsym TLSMARK=1"  {tls.s tlslib.s}
      {{objdump -dr tls.d} {objdump -sj.got tls.g} {objdump -sj.tdata tls.t}}
      "tlsm"}
-    {"TLS static exec" "-melf64ppc" "" "-a64"  {tls.s tlslib.s}
+    {"TLS static exec" "-melf64ppc --no-plt-align" "" "-a64"  {tls.s tlslib.s}
      {{objdump -dr tls.d} {objdump -sj.got tls.g} {objdump -sj.tdata tls.t}}
      "tls"}
     {"TLS helper shared library" "-shared -melf64ppc tmpdir/tlslib.o" "" "" {}
      {} "libtlslib.so"}
     {"TLS helper old shared lib" "-shared -melf64ppc" "" "-a64" {oldtlslib.s}
      {} "liboldlib.so"}
-    {"TLS dynamic exec" "-melf64ppc --no-ld-generated-unwind-info --hash-style=sysv tmpdir/tls.o tmpdir/libtlslib.so" "" "" {}
+    {"TLS dynamic exec" "-melf64ppc --no-plt-align --no-ld-generated-unwind-info --hash-style=sysv tmpdir/tls.o tmpdir/libtlslib.so" "" "" {}
      {{readelf -WSsrl tlsexe.r} {objdump -dr tlsexe.d}
       {objdump -sj.got tlsexe.g} {objdump -sj.tdata tlsexe.t}}
      "tlsexe"}
-    {"TLS dynamic old" "-melf64ppc --no-ld-generated-unwind-info --hash-style=sysv tmpdir/tls.o tmpdir/liboldlib.so" "" "" {}
+    {"TLS dynamic old" "-melf64ppc --no-plt-align --no-ld-generated-unwind-info --hash-style=sysv tmpdir/tls.o tmpdir/liboldlib.so" "" "" {}
      {{readelf -WSsrl tlsexe.r} {objdump -dr tlsexe.d}
       {objdump -sj.got tlsexe.g} {objdump -sj.tdata tlsexe.t}}
      "tlsexeold"}
-    {"TLS shared" "-shared -melf64ppc --no-ld-generated-unwind-info --hash-style=sysv tmpdir/tls.o" "" "" {}
+    {"TLS shared" "-shared -melf64ppc --no-plt-align --no-ld-generated-unwind-info --hash-style=sysv tmpdir/tls.o" "" "" {}
      {{readelf -WSsrl tlsso.r} {objdump -dr tlsso.d}
       {objdump -sj.got tlsso.g} {objdump -sj.tdata tlsso.t}}
      "tls.so"}
@@ -190,17 +193,17 @@ set ppc64elftests {
      {{objdump -dr tlstoc.d} {objdump -sj.got tlstoc.g}
       {objdump -sj.tdata tlstoc.t}}
      "tlstoc"}
-    {"TLSTOC dynamic exec" "-melf64ppc --no-ld-generated-unwind-info --hash-style=sysv tmpdir/tlstoc.o tmpdir/libtlslib.so" ""
+    {"TLSTOC dynamic exec" "-melf64ppc --no-plt-align --no-ld-generated-unwind-info --hash-style=sysv tmpdir/tlstoc.o tmpdir/libtlslib.so" ""
      "" {}
      {{readelf -WSsrl tlsexetoc.r} {objdump -dr tlsexetoc.d}
       {objdump -sj.got tlsexetoc.g} {objdump -sj.tdata tlsexetoc.t}}
      "tlsexetoc"}
-    {"TLSTOC dynamic old" "-melf64ppc --no-ld-generated-unwind-info --hash-style=sysv tmpdir/tlstoc.o tmpdir/liboldlib.so" ""
+    {"TLSTOC dynamic old" "-melf64ppc --no-plt-align --no-ld-generated-unwind-info --hash-style=sysv tmpdir/tlstoc.o tmpdir/liboldlib.so" ""
      "" {}
      {{readelf -WSsrl tlsexetoc.r} {objdump -dr tlsexetoc.d}
       {objdump -sj.got tlsexetoc.g} {objdump -sj.tdata tlsexetoc.t}}
      "tlsexetocold"}
-    {"TLSTOC shared" "-shared -melf64ppc --no-ld-generated-unwind-info --hash-style=sysv tmpdir/tlstoc.o" "" "" {}
+    {"TLSTOC shared" "-shared -melf64ppc --no-plt-align --no-ld-generated-unwind-info --hash-style=sysv tmpdir/tlstoc.o" "" "" {}
      {{readelf -WSsrl tlstocso.r} {objdump -dr tlstocso.d}
       {objdump -sj.got tlstocso.g} {objdump -sj.tdata tlstocso.t}}
      "tlstoc.so"}
@@ -221,7 +224,7 @@ set ppc64elftests {
      "tlsopt4"}
     {"TLS DLL" "-shared -melf64ppc --version-script tlsdll.ver" "" "-a64" {tlsdll.s}
      {} "tlsdll.so"}
-    {"TLS opt 5" "-melf64ppc -shared --gc-sections --no-plt-localentry tmpdir/tlsdll.so" "" "-a64"  {tlsopt5.s}
+    {"TLS opt 5" "-melf64ppc -shared --hash-style=both --gc-sections --no-plt-localentry tmpdir/tlsdll.so" "" "-a64"  {tlsopt5.s}
      {{objdump -dr tlsopt5.d} {readelf -wf tlsopt5.wf}}
      "tlsopt5"}
     {"sym@tocbase" "-shared -melf64ppc" "" "-a64" {symtocbase-1.s symtocbase-2.s}
@@ -254,32 +257,41 @@ set ppc64elftests {
        {{objdump -dr tocsave2a.d}} "tocsave2a"}
     {"ambig shared v1" "-shared -melf64ppc" "" "-a64" {funv1.s} {} "funv1.so"}
     {"ambig shared v2" "-shared -melf64ppc" "" "-a64" {funv2.s} {} "funv2.so"}
+    {"notoc ext" "" "" "-a64" {ext.s} {} ""}
+    {"notoc" "-melf64ppc --no-plt-localentry -T ext.lnk" "" "-a64" {notoc.s}
+       {{objdump -d notoc.d} {readelf {-wf -W} notoc.wf}} "notoc"}
+    {"notoc2" "-melf64ppc -shared" "" "-a64 -mfuture" {notoc2.s}
+       {{objdump {-d -Mfuture} notoc2.d}} "notoc2"}
+    {"pcrelopt" "-melf64ppc --hash-style=gnu" "tmpdir/symtocbase.so"
+       "-a64 -mfuture" {pcrelopt.s}
+       {{objdump {-d -Mfuture} pcrelopt.d}
+        {readelf {-S --wide} pcrelopt.sec}} "pcrelopt" }
 }
 
 set ppceabitests {
-    {"VLE multiple segments 1" "-T vle-multiseg-1.ld" ""
-     "-mregnames -mvle" {vle-multiseg.s}
+    {"VLE multiple segments 1" "-melf32ppc -T vle-multiseg-1.ld" ""
+     "-a32 -mbig -mregnames -mvle" {vle-multiseg.s}
     {{readelf "-l" vle-multiseg-1.d}} "vle-multiseg-1"}
-    {"VLE multiple segments 2" "-T vle-multiseg-2.ld" ""
-     "-mregnames -mvle" {vle-multiseg.s}
+    {"VLE multiple segments 2" "-melf32ppc -T vle-multiseg-2.ld" ""
+     "-a32 -mbig -mregnames -mvle" {vle-multiseg.s}
     {{readelf "-l" vle-multiseg-2.d}} "vle-multiseg-2"}
-    {"VLE multiple segments 3" "-T vle-multiseg-3.ld" ""
-     "-mregnames -mvle" {vle-multiseg.s}
+    {"VLE multiple segments 3" "-melf32ppc -T vle-multiseg-3.ld" ""
+     "-a32 -mbig -mregnames -mvle" {vle-multiseg.s}
     {{readelf "-l" vle-multiseg-3.d}} "vle-multiseg-3"}
-    {"VLE multiple segments 4" "-T vle-multiseg-4.ld" ""
-     "-mregnames -mvle" {vle-multiseg.s}
+    {"VLE multiple segments 4" "-melf32ppc -T vle-multiseg-4.ld" ""
+     "-a32 -mbig -mregnames -mvle" {vle-multiseg.s}
     {{readelf "-l" vle-multiseg-4.d}} "vle-multiseg-4"}
-    {"VLE multiple segments 5" "-T vle-multiseg-5.ld" ""
-     "-mregnames -mvle" {vle-multiseg.s}
+    {"VLE multiple segments 5" "-melf32ppc -T vle-multiseg-5.ld" ""
+     "-a32 -mbig -mregnames -mvle" {vle-multiseg.s}
     {{readelf "-l" vle-multiseg-5.d}} "vle-multiseg-5"}
-    {"VLE relocations 1" "-T vle.ld" ""
-     "-mvle" {vle-reloc-1.s vle-reloc-def-1.s}
+    {"VLE relocations 1" "-melf32ppc -T vle.ld" ""
+     "-a32 -mbig -mvle" {vle-reloc-1.s vle-reloc-def-1.s}
     {{objdump "-Mvle -d" vle-reloc-1.d}} "vle-reloc-1"}
-    {"VLE relocations 2" "-T vle.ld" ""
-     "-mvle" {vle-reloc-2.s vle-reloc-def-2.s}
+    {"VLE relocations 2" "-melf32ppc -T vle.ld" ""
+     "-a32 -mbig -mvle" {vle-reloc-2.s vle-reloc-def-2.s}
     {{objdump "-Mvle -d" vle-reloc-2.d}} "vle-reloc-2"}
-    {"VLE relocations 3" "-T vle.ld" ""
-     "-mvle" {vle-reloc-3.s vle-reloc-def-3.s}
+    {"VLE relocations 3" "-melf32ppc -T vle.ld" ""
+     "-a32 -mbig -mvle" {vle-reloc-3.s vle-reloc-def-3.s}
     {{objdump "-Mvle -d" vle-reloc-3.d}} "vle-reloc-3"}
 }
 
@@ -321,20 +333,24 @@ if [ supports_ppc64 ] then {
     run_dump_test "defsym"
     run_dump_test "tocvar"
     run_dump_test "tocnovar"
-    run_dump_test "tlsld"
+    run_dump_test "tlsldopt"
     run_dump_test "relocsort"
     run_dump_test "addpcis"
     run_dump_test "dotsym1"
     run_dump_test "dotsym2"
     run_dump_test "dotsym3"
     run_dump_test "dotsym4"
+    run_dump_test "pr23937"
+    run_dump_test "callstub-1"
+    run_dump_test "callstub-2"
+    run_dump_test "tlsgd"
+    run_dump_test "tlsld"
+    run_dump_test "tlsie"
 }
 
-run_dump_test "tlsld32"
+run_dump_test "tlsldopt32"
 
-if { [istarget "powerpc*-eabi*"] } {
-    run_ld_link_tests $ppceabitests
-}
+run_ld_link_tests $ppceabitests
 
 run_dump_test "plt1"
 run_dump_test "sdabase"
This page took 0.028245 seconds and 4 git commands to generate.