From ca98345e0b3fda08ae79e4cb07632eab84ef6ef2 Mon Sep 17 00:00:00 2001 From: Sandra Loosemore Date: Wed, 3 Oct 2018 09:16:53 -0700 Subject: [PATCH] Skip gdb ifunc tests on targets that don't support this feature. 2018-10-03 Sandra Loosemore * lib/gdb.exp (skip_ifunc_tests): New. * gdb.base/gnu-ifunc.exp: Skip if no ifunc support. Handle other compile failures. * gdb.compile/compile-ifunc.exp: Skip if no ifunc support. --- gdb/testsuite/ChangeLog | 7 +++++++ gdb/testsuite/gdb.base/gnu-ifunc.exp | 11 ++++++++--- gdb/testsuite/gdb.compile/compile-ifunc.exp | 4 ++++ gdb/testsuite/lib/gdb.exp | 14 ++++++++++++++ 4 files changed, 33 insertions(+), 3 deletions(-) diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog index 502c5bf0bbb..49945931e29 100644 --- a/gdb/testsuite/ChangeLog +++ b/gdb/testsuite/ChangeLog @@ -1,3 +1,10 @@ +2018-10-03 Sandra Loosemore + + * lib/gdb.exp (skip_ifunc_tests): New. + * gdb.base/gnu-ifunc.exp: Skip if no ifunc support. Handle + other compile failures. + * gdb.compile/compile-ifunc.exp: Skip if no ifunc support. + 2018-10-01 Simon Marchi * gdb.arch/i386-avx512.exp: Fix setting of nr_regs based on diff --git a/gdb/testsuite/gdb.base/gnu-ifunc.exp b/gdb/testsuite/gdb.base/gnu-ifunc.exp index d6ec6988a7d..322de5a6042 100644 --- a/gdb/testsuite/gdb.base/gnu-ifunc.exp +++ b/gdb/testsuite/gdb.base/gnu-ifunc.exp @@ -17,6 +17,10 @@ if {[skip_shlib_tests]} { return 0 } +if {[skip_ifunc_tests]} { + return 0 +} + standard_testfile .c set staticexecutable ${testfile}-static set staticbinfile [standard_output_file ${staticexecutable}] @@ -365,9 +369,10 @@ proc misc_tests {resolver_attr resolver_debug final_debug} { foreach_with_prefix resolver_attr {0 1} { foreach_with_prefix resolver_debug {0 1} { foreach_with_prefix final_debug {0 1} { - build $resolver_attr $resolver_debug $final_debug - misc_tests $resolver_attr $resolver_debug $final_debug - set-break $resolver_attr $resolver_debug $final_debug + if { [build $resolver_attr $resolver_debug $final_debug] != 0 } { + misc_tests $resolver_attr $resolver_debug $final_debug + set-break $resolver_attr $resolver_debug $final_debug + } } } } diff --git a/gdb/testsuite/gdb.compile/compile-ifunc.exp b/gdb/testsuite/gdb.compile/compile-ifunc.exp index 979e39147e7..bb3af4d753d 100644 --- a/gdb/testsuite/gdb.compile/compile-ifunc.exp +++ b/gdb/testsuite/gdb.compile/compile-ifunc.exp @@ -13,6 +13,10 @@ # You should have received a copy of the GNU General Public License # along with this program. If not, see . +if {[skip_ifunc_tests]} { + return 0 +} + standard_testfile with_test_prefix "nodebug" { diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp index 9284291ccd9..fbdb436e331 100644 --- a/gdb/testsuite/lib/gdb.exp +++ b/gdb/testsuite/lib/gdb.exp @@ -2893,6 +2893,20 @@ gdb_caching_proc has_int128_cxx { return [gdb_int128_helper c++] } +# Return true if the IFUNC feature is unsupported. +gdb_caching_proc skip_ifunc_tests { + if [gdb_can_simple_compile ifunc { + extern void f_ (); + typedef void F (void); + F* g (void) { return &f_; } + void f () __attribute__ ((ifunc ("g"))); + } object] { + return 0 + } else { + return 1 + } +} + # Return whether we should skip tests for showing inlined functions in # backtraces. Requires get_compiler_info and get_debug_format. -- 2.30.2