PR22263 ld test
authorAlan Modra <amodra@gmail.com>
Fri, 26 May 2023 02:21:57 +0000 (11:51 +0930)
committerAlan Modra <amodra@gmail.com>
Fri, 26 May 2023 02:44:36 +0000 (12:14 +0930)
A number of targets that I test regularly fail the "Build pr22263-1"
test for various reasons.

arm-linux-gnueabi: "undefined reference to `__aeabi_read_tp'"
ia64-linux-gnu: "Explicit stops are ignored in auto mode"
m68k-linux-gnu: "undefined reference to `__m68k_read_tp'"
microblaze-linux-gnu: "undefined reference to `__tls_get_addr'"
nios2-linux-gnu, s390-linux-gnu and sh4-linux-gnu have a tprel reloc in .got
riscv64-linux-gnu has a dynamic relocation in text

So only riscv really fails the pr.  The rest fail due to test issues
or lack of a linker optimisation.  Lack of an optimisation isn't
really a fail, but it's worth keeping the test to ensure those
optimisations don't regress.  The xfail targets may not be an
exhaustive list.  This just tidies test results for those for which I
have cross compilers installed.

PR 22263
* testsuite/ld-elf/tls.exp: Split pr22263 test into two parts,
one to check for -z text errors, the other to check tprel
linker optimisation.  Supply needed symbols and assembler flags.
xfail the linker optimisation on targets known to fail.

ld/testsuite/ld-elf/tls.exp

index 305eb5f68cdeec495b464384dd960a2696366076..31435128b2b04fff1143f79f3c691ab13ade28a2 100644 (file)
@@ -37,17 +37,43 @@ if { ![check_compiler_available] } {
 set AFLAGS_PIC ""
 if [istarget "sparc*-*-*"] {
     append AFLAGS_PIC " -K PIC -Av9"
+} elseif [istarget ia64-*-*] {
+    append AFLAGS_PIC " -x"
+}
+
+set ldflags "-pie -e _start -z text"
+if [istarget arm*-*-*] {
+    append ldflags " --defsym __aeabi_read_tp=0"
+} elseif [istarget m68*-*-*] {
+    append ldflags " --defsym __m68k_read_tp=0"
+} elseif [istarget microblaze-*-*] {
+    append ldflags " --defsym __tls_get_addr=0"
 }
 
 run_ld_link_tests [list \
     [list \
-       "Build pr22263-1" \
-       "-pie -e _start -z text" \
+       "pr22263-1 -z text" \
+       $ldflags \
        "" \
        "$AFLAGS_PIC" \
        { pr22263-1a.c pr22263-1b.c } \
-       {{readelf -r pr22263-1.rd}} \
+       {} \
        "pr22263-1" \
        "-fPIE -O2 $NOSANITIZE_CFLAGS" \
     ] \
 ]
+
+if [file exists tmpdir/pr22263-1] {
+    run_ld_link_tests [list \
+       [list \
+           "pr22263-1 tprel optimisation" \
+           $ldflags \
+           "tmpdir/pr22263-1a.o tmpdir/pr22263-1b.o" \
+           "" \
+           {} \
+           {{readelf -r pr22263-1.rd}} \
+           "pr22263-1" \
+           "" \
+       ] \
+    ] ia64-*-* m68*-*-* nios2-*-* s390-*-* sh*-*-*
+}