PR22263 ld test

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.
This commit is contained in:
Alan Modra 2023-05-26 11:51:57 +09:30
parent 9158e49a70
commit 9dc7ab5c01

View 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*-*-*
}