Skip gdb ifunc tests on targets that don't support this feature.

2018-10-03  Sandra Loosemore  <sandra@codesourcery.com>

	* 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.
This commit is contained in:
Sandra Loosemore 2018-10-03 09:16:53 -07:00
parent c8d3f93237
commit ca98345e0b
4 changed files with 33 additions and 3 deletions

View File

@ -1,3 +1,10 @@
2018-10-03 Sandra Loosemore <sandra@codesourcery.com>
* 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 <simon.marchi@ericsson.com>
* gdb.arch/i386-avx512.exp: Fix setting of nr_regs based on

View File

@ -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
}
}
}
}

View File

@ -13,6 +13,10 @@
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
if {[skip_ifunc_tests]} {
return 0
}
standard_testfile
with_test_prefix "nodebug" {

View File

@ -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.