Hello,
Some tests from gcc/testsuite/gcc.target/aarch64/aapcs64
resort to the abitest.S source, which defines a few weak symbols:
...
.weak testfunc
.weak testfunc_ptr
.weak saved_return_address
The attached patch is a proposal to prevent the execution of
those tests in configurations where weak symbols are advertised
as not supported.
This cures a significant number of failures on VxWorks and bootstrap
+ regress tests fine on aarch64-linux.
Is this ok to commit ?
Thanks in advance!
With Kind Regards,
Olivier
2019-12-16 Joel Brobecker <[email protected]>
Olivier Hainque <[email protected]>
testsuite/
* gcc.target/aarch64/aapcs64/aapcs64.exp: Guard tests using
abitest.S by check_weak_available.
.../gcc.target/aarch64/aapcs64/aapcs64.exp | 36 ++++++++++++-------
1 file changed, 23 insertions(+), 13 deletions(-)
diff --git a/gcc/testsuite/gcc.target/aarch64/aapcs64/aapcs64.exp
b/gcc/testsuite/gcc.target/aarch64/aapcs64/aapcs64.exp
index c17af6c3084..36687800ecd 100644
--- a/gcc/testsuite/gcc.target/aarch64/aapcs64/aapcs64.exp
+++ b/gcc/testsuite/gcc.target/aarch64/aapcs64/aapcs64.exp
@@ -29,12 +29,16 @@ torture-init
set-torture-options $C_TORTURE_OPTIONS
set additional_flags "-W -Wall -Wno-abi"
-# Test parameter passing.
-foreach src [lsort [glob -nocomplain $srcdir/$subdir/test_*.c]] {
- if {[runtest_file_p $runtests $src]} {
+# Test parameter passing. This uses abitest.S which relies on weak
+# symbols.
+
+if { [check_weak_available] } {
+ foreach src [lsort [glob -nocomplain $srcdir/$subdir/test_*.c]] {
+ if {[runtest_file_p $runtests $src]} {
c-torture-execute [list $src \
$srcdir/$subdir/abitest.S] \
$additional_flags
+ }
}
}
@@ -48,25 +52,31 @@ foreach src [lsort [glob -nocomplain
$srcdir/$subdir/rec_*.c]] {
}
}
-# Test unnamed argument retrieval via the va_arg macro.
-foreach src [lsort [glob -nocomplain $srcdir/$subdir/va_arg-*.c]] {
- if {[runtest_file_p $runtests $src]} {
+# Test unnamed argument retrieval via the va_arg macro. This uses abitest.S
+# which relies on weak symbols.
+if { [check_weak_available] } {
+ foreach src [lsort [glob -nocomplain $srcdir/$subdir/va_arg-*.c]] {
+ if {[runtest_file_p $runtests $src]} {
c-torture-execute [list $src \
$srcdir/$subdir/abitest.S] \
$additional_flags
+ }
}
}
-# Test function return value.
-# Disable -fipa-ra to prevent the compiler from generating
-# conflicting code.
-set additional_flags_for_func_ret $additional_flags
-append additional_flags_for_func_ret " -fno-ipa-ra"
-foreach src [lsort [glob -nocomplain $srcdir/$subdir/func-ret-*.c]] {
- if {[runtest_file_p $runtests $src]} {
+# Test function return value. This uses abitest.S which relies on
+# weak symbols.
+if { [check_weak_available] } {
+ # Disable -fipa-ra to prevent the compiler from generating
+ # conflicting code.
+ set additional_flags_for_func_ret $additional_flags
+ append additional_flags_for_func_ret " -fno-ipa-ra"
+ foreach src [lsort [glob -nocomplain $srcdir/$subdir/func-ret-*.c]] {
+ if {[runtest_file_p $runtests $src]} {
c-torture-execute [list $src \
$srcdir/$subdir/abitest.S] \
$additional_flags_for_func_ret
+ }
}
}
--
2.17.1