diff --git a/gcc/testsuite/lib/gcc-dg.exp b/gcc/testsuite/lib/gcc-dg.exp index fce0989cd9ce32b1a41055335a4622540e80d593..c7722ba07daa271a06a7f3150dd7a5a5e290843f 100644 --- a/gcc/testsuite/lib/gcc-dg.exp +++ b/gcc/testsuite/lib/gcc-dg.exp @@ -621,18 +621,27 @@ proc gcc-dg-runtest { testcases flags default-extra-flags } { } } -proc gcc-dg-debug-runtest { target_compile trivial opt_opts testcases } { +# Check if the target system supports the debug format +proc gcc-dg-target-supports-debug-format { target_compile trivial type } { global srcdir subdir + set comp_output [$target_compile \ + "$srcdir/$subdir/$trivial" "trivial.S" assembly \ + "additional_flags=$type"] + if { ! [string match "*: target system does not support the * debug format*" \ + $comp_output] } { + remove-build-file "trivial.S" + return 1 + } + return 0 +} + +proc gcc-dg-debug-runtest { target_compile trivial opt_opts testcases } { if ![info exists DEBUG_TORTURE_OPTIONS] { set DEBUG_TORTURE_OPTIONS "" foreach type {-gdwarf-2 -gstabs -gstabs+ -gxcoff -gxcoff+} { - set comp_output [$target_compile \ - "$srcdir/$subdir/$trivial" "trivial.S" assembly \ - "additional_flags=$type"] - if { ! [string match "*: target system does not support the * debug format*" \ - $comp_output] } { - remove-build-file "trivial.S" + if [expr [gcc-dg-target-supports-debug-format \ + $target_compile $trivial $type]] { foreach level {1 "" 3} { if { ($type == "-gdwarf-2") && ($level != "") } { lappend DEBUG_TORTURE_OPTIONS [list "${type}" "-g${level}"]