public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
* [committed][gdb/testsuite] Split up multi-exec test-cases
@ 2020-05-14 15:25 Tom de Vries
  2020-05-14 15:32 ` Tom Tromey
  2020-05-14 17:04 ` [committed][gdb/testsuite] Split up multi-exec test-cases Pedro Alves
  0 siblings, 2 replies; 8+ messages in thread
From: Tom de Vries @ 2020-05-14 15:25 UTC (permalink / raw)
  To: gdb-patches

Hi,

With test-case gdb.base/align.exp and target board native-gdbserver, we run
into:
...
(gdb) file outputs/gdb.base/align/c/align^M
Reading symbols from outputs/gdb.base/align/c/align...^M
(gdb) delete breakpoints^M
(gdb) info breakpoints^M
No breakpoints or watchpoints.^M
(gdb) break main^M
Breakpoint 1 at 0x4004ab: file outputs/gdb.base/align/c/align.c, line 838.^M
(gdb) kill^M
The program is not being run.^M
(gdb) spawn gdbserver --once localhost:2592 outputs/gdb.base/align/align^M
Process outputs/gdb.base/align/align created; pid = 6946^M
Listening on port 2592^M
target remote localhost:2592^M
Remote debugging using localhost:2592^M
warning: Mismatch between current exec-file outputs/gdb.base/align/c/align^M
and automatically determined exec-file outputs/gdb.base/align/align^M
exec-file-mismatch handling is currently "ask"^M
Load new symbol table from "outputs/gdb.base/align/align"? (y or n) Quit^M
(gdb) ERROR: test suppressed
...

Fix this by turning this and similar test-cases into regular, single
executable test-cases.

This fixes 100+ FAILs with target board native-gdbserver.

Tested on x86_64-linux.

Committed to trunk.

Thanks,
- Tom

[gdb/testsuite] Split up multi-exec test-cases

gdb/testsuite/ChangeLog:

2020-05-14  Tom de Vries  <tdevries@suse.de>

	* gdb.base/align.exp: Split into ...
	* gdb.base/align.exp.in: ...
	* gdb.base/align-c++.exp: ...
	* gdb.base/align-c.exp: ... these.
	* gdb.base/infcall-nested-structs.exp: Split into ...
	* gdb.base/infcall-nested-structs.exp.in: ...
	* gdb.base/infcall-nested-structs-c++.exp: ...
	* gdb.base/infcall-nested-structs-c.exp: ... these.
	* gdb.base/info-types.exp: Split into ...
	* gdb.base/info-types.exp.in: ...
	* gdb.base/info-types-c++.exp: ...
	* gdb.base/info-types-c.exp: ... these.
	* gdb.base/max-depth.exp: Split into ...
	* gdb.base/max-depth.exp.in: ...
	* gdb.base/max-depth-c++.exp: ...
	* gdb.base/max-depth-c.exp: ... these.
	* gdb.cp/infcall-nodebug.exp: Split into ...
	* gdb.cp/infcall-nodebug.exp.in: ...
	* gdb.cp/infcall-nodebug-c++-d0.exp: ...
	* gdb.cp/infcall-nodebug-c++-d1.exp: ...
	* gdb.cp/infcall-nodebug-c-d0.exp: ...
	* gdb.cp/infcall-nodebug-c-d1.exp: ... these.

---
 gdb/testsuite/gdb.base/align-c++.exp               | 27 ++++++++++++++++++++++
 gdb/testsuite/gdb.base/align-c.exp                 | 23 ++++++++++++++++++
 gdb/testsuite/gdb.base/{align.exp => align.exp.in} | 26 +++------------------
 .../gdb.base/infcall-nested-structs-c++.exp        | 24 +++++++++++++++++++
 .../gdb.base/infcall-nested-structs-c.exp          | 20 ++++++++++++++++
 ...d-structs.exp => infcall-nested-structs.exp.in} | 27 ++++------------------
 gdb/testsuite/gdb.base/info-types-c++.exp          | 22 ++++++++++++++++++
 gdb/testsuite/gdb.base/info-types-c.exp            | 18 +++++++++++++++
 .../gdb.base/{info-types.exp => info-types.exp.in} | 21 +++--------------
 gdb/testsuite/gdb.base/max-depth-c++.exp           | 22 ++++++++++++++++++
 gdb/testsuite/gdb.base/max-depth-c.exp             | 18 +++++++++++++++
 .../gdb.base/{max-depth.exp => max-depth.exp.in}   | 21 ++---------------
 gdb/testsuite/gdb.cp/infcall-nodebug-c++-d0.exp    | 25 ++++++++++++++++++++
 gdb/testsuite/gdb.cp/infcall-nodebug-c++-d1.exp    | 25 ++++++++++++++++++++
 gdb/testsuite/gdb.cp/infcall-nodebug-c-d0.exp      | 21 +++++++++++++++++
 gdb/testsuite/gdb.cp/infcall-nodebug-c-d1.exp      | 21 +++++++++++++++++
 ...{infcall-nodebug.exp => infcall-nodebug.exp.in} | 26 ++++-----------------
 17 files changed, 282 insertions(+), 105 deletions(-)

diff --git a/gdb/testsuite/gdb.base/align-c++.exp b/gdb/testsuite/gdb.base/align-c++.exp
new file mode 100644
index 0000000000..09632d8bfa
--- /dev/null
+++ b/gdb/testsuite/gdb.base/align-c++.exp
@@ -0,0 +1,27 @@
+# Copyright 2018-2020 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# This file is part of the gdb testsuite
+
+# This tests that C++11 alignof works in gdb, and that it agrees with the
+# compiler.
+
+# Only test C++ if we are able.
+if { [skip_cplus_tests] || [get_compiler_info "c++"] } {
+    return -1
+}
+set lang c++
+
+source $srcdir/$subdir/align.exp.in
diff --git a/gdb/testsuite/gdb.base/align-c.exp b/gdb/testsuite/gdb.base/align-c.exp
new file mode 100644
index 0000000000..d7852f4ea8
--- /dev/null
+++ b/gdb/testsuite/gdb.base/align-c.exp
@@ -0,0 +1,23 @@
+# Copyright 2018-2020 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# This file is part of the gdb testsuite
+
+# This tests that C11 _Alignof works in gdb, and that it agrees with the
+# compiler.
+
+set lang c
+
+source $srcdir/$subdir/align.exp.in
diff --git a/gdb/testsuite/gdb.base/align.exp b/gdb/testsuite/gdb.base/align.exp.in
similarity index 87%
rename from gdb/testsuite/gdb.base/align.exp
rename to gdb/testsuite/gdb.base/align.exp.in
index 26827eb5a9..0653371c04 100644
--- a/gdb/testsuite/gdb.base/align.exp
+++ b/gdb/testsuite/gdb.base/align.exp.in
@@ -15,16 +15,6 @@
 
 # This file is part of the gdb testsuite
 
-# This tests that C11 _Alignof and C++11 alignof works in gdb, and
-# that it agrees with the compiler.
-
-# Only test C++ if we are able.  Always use C.
-if { [skip_cplus_tests] || [get_compiler_info "c++"] } {
-    set lang {c}
-} else {
-    set lang {c c++}
-}
-
 # The types we're going to test.
 
 set typelist {
@@ -60,7 +50,7 @@ proc prepare_test_source_file { lang } {
 	set align_func "_Alignof"
     }
 
-    set filename [standard_output_file "$lang/align.$suffix"]
+    set filename [standard_output_file "align.$suffix"]
     set outfile [open $filename w]
 
     # Prologue.
@@ -140,7 +130,7 @@ proc run_alignment_test { lang } {
 	lappend flags "additional_flags=-std=c++11"
     }
     standard_testfile $filename
-    if {[prepare_for_testing "failed to prepare" "$lang/$testfile" $srcfile $flags]} {
+    if {[prepare_for_testing "failed to prepare" "$testfile" $srcfile $flags]} {
 	return -1
     }
 
@@ -186,14 +176,4 @@ proc run_alignment_test { lang } {
     }
 }
 
-# Create nested 'c' and 'c++' directories within this tests directory.
-foreach l $lang {
-    set dir "$l"
-    remote_exec host "rm -rf [standard_output_file ${dir}]"
-    remote_exec host "mkdir -p [standard_output_file ${dir}]"
-}
-
-# Now run the test for each language.
-foreach_with_prefix l $lang {
-    run_alignment_test $l
-}
+run_alignment_test $lang
diff --git a/gdb/testsuite/gdb.base/infcall-nested-structs-c++.exp b/gdb/testsuite/gdb.base/infcall-nested-structs-c++.exp
new file mode 100644
index 0000000000..9da0621384
--- /dev/null
+++ b/gdb/testsuite/gdb.base/infcall-nested-structs-c++.exp
@@ -0,0 +1,24 @@
+# This testcase is part of GDB, the GNU debugger.
+
+# Copyright 2018-2020 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Only test C++ if we are able.
+if { [skip_cplus_tests] || [get_compiler_info "c++"] } {
+    return -1
+}
+set lang c++
+
+source $srcdir/$subdir/infcall-nested-structs.exp.in
diff --git a/gdb/testsuite/gdb.base/infcall-nested-structs-c.exp b/gdb/testsuite/gdb.base/infcall-nested-structs-c.exp
new file mode 100644
index 0000000000..a715c5bd0d
--- /dev/null
+++ b/gdb/testsuite/gdb.base/infcall-nested-structs-c.exp
@@ -0,0 +1,20 @@
+# This testcase is part of GDB, the GNU debugger.
+
+# Copyright 2018-2020 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+set lang {c}
+
+source $srcdir/$subdir/infcall-nested-structs.exp.in
diff --git a/gdb/testsuite/gdb.base/infcall-nested-structs.exp b/gdb/testsuite/gdb.base/infcall-nested-structs.exp.in
similarity index 90%
rename from gdb/testsuite/gdb.base/infcall-nested-structs.exp
rename to gdb/testsuite/gdb.base/infcall-nested-structs.exp.in
index 48c0373712..f7409612f8 100644
--- a/gdb/testsuite/gdb.base/infcall-nested-structs.exp
+++ b/gdb/testsuite/gdb.base/infcall-nested-structs.exp.in
@@ -15,7 +15,6 @@
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-
 # Some targets can't call functions, so don't even bother with this
 # test.
 
@@ -24,20 +23,6 @@ if [target_info exists gdb,cannot_call_functions] {
     continue
 }
 
-# Only test C++ if we are able.  Always use C.
-if { [skip_cplus_tests] || [get_compiler_info "c++"] } {
-    set lang {c}
-} else {
-    set lang {c c++}
-}
-
-foreach l $lang {
-    set dir "$l"
-    remote_exec host "rm -rf [standard_output_file ${dir}]"
-    remote_exec host "mkdir -p [standard_output_file ${dir}]"
-}
-
-
 set int_types { tc ts ti tl tll }
 set float_types { tf td tld }
 set complex_types { tfc tdc tldc }
@@ -67,8 +52,7 @@ proc start_nested_structs_test { lang types } {
     global srcdir
     global compile_flags
 
-    standard_testfile .c
-    set dir "$lang"
+    standard_testfile infcall-nested-structs.c
 
     # Create the additional flags
     set flags $compile_flags
@@ -82,7 +66,6 @@ proc start_nested_structs_test { lang types } {
 	append testfile "-" "$t"
     }
 
-    set binfile [standard_output_file ${dir}/${testfile}]
     if  { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" executable "${flags}"] != "" } {
 	unresolved "failed to compile"
 	return 0
@@ -161,11 +144,9 @@ proc start_gdb_and_run_tests { lang types } {
 	append prefix "-" "${t}"
     }
 
-    foreach_with_prefix l $lang {
-	with_test_prefix $prefix {
-	    if { [start_nested_structs_test $l $types] } {
-		run_tests $l $prefix
-	    }
+    with_test_prefix $prefix {
+	if { [start_nested_structs_test $lang $types] } {
+	    run_tests $lang $prefix
 	}
     }
 }
diff --git a/gdb/testsuite/gdb.base/info-types-c++.exp b/gdb/testsuite/gdb.base/info-types-c++.exp
new file mode 100644
index 0000000000..4f44369fe9
--- /dev/null
+++ b/gdb/testsuite/gdb.base/info-types-c++.exp
@@ -0,0 +1,22 @@
+# Copyright 2019-2020 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Only test C++ if we are able.
+if { [skip_cplus_tests] || [get_compiler_info "c++"] } {
+    return -1
+}
+set lang c++
+
+source $srcdir/$subdir/info-types.exp.in
diff --git a/gdb/testsuite/gdb.base/info-types-c.exp b/gdb/testsuite/gdb.base/info-types-c.exp
new file mode 100644
index 0000000000..800d6389a4
--- /dev/null
+++ b/gdb/testsuite/gdb.base/info-types-c.exp
@@ -0,0 +1,18 @@
+# Copyright 2019-2020 Free Software Foundation, Inc.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+set lang {c}
+
+source $srcdir/$subdir/info-types.exp.in
diff --git a/gdb/testsuite/gdb.base/info-types.exp b/gdb/testsuite/gdb.base/info-types.exp.in
similarity index 90%
rename from gdb/testsuite/gdb.base/info-types.exp
rename to gdb/testsuite/gdb.base/info-types.exp.in
index 7cce756e92..8c065b1c5f 100644
--- a/gdb/testsuite/gdb.base/info-types.exp
+++ b/gdb/testsuite/gdb.base/info-types.exp.in
@@ -16,19 +16,6 @@
 # Check that 'info types' produces the expected output for an inferior
 # containing a number of different types.
 
-# Only test C++ if we are able.  Always use C.
-if { [skip_cplus_tests] || [get_compiler_info "c++"] } {
-    set lang {c}
-} else {
-    set lang {c c++}
-}
-
-foreach l $lang {
-    set dir "$l"
-    remote_exec host "rm -rf [standard_output_file ${dir}]"
-    remote_exec host "mkdir -p [standard_output_file ${dir}]"
-}
-
 # Run 'info types' test, compiling the test file for language LANG,
 # which should be either 'c' or 'c++'.
 proc run_test { lang } {
@@ -39,10 +26,10 @@ proc run_test { lang } {
     global srcdir
     global compile_flags
 
-    standard_testfile .c
+    standard_testfile info-types.c
 
     if {[prepare_for_testing "failed to prepare" \
-	     "${lang}/${testfile}" $srcfile "debug $lang"]} {
+	     "${testfile}" $srcfile "debug $lang"]} {
 	return -1
     }
 
@@ -140,6 +127,4 @@ proc run_test { lang } {
     }
 }
 
-foreach_with_prefix l $lang {
-    run_test $l
-}
+run_test $lang
diff --git a/gdb/testsuite/gdb.base/max-depth-c++.exp b/gdb/testsuite/gdb.base/max-depth-c++.exp
new file mode 100644
index 0000000000..b88b2c118d
--- /dev/null
+++ b/gdb/testsuite/gdb.base/max-depth-c++.exp
@@ -0,0 +1,22 @@
+# Copyright 2019-2020 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Only test C++ if we are able.
+if { [skip_cplus_tests] || [get_compiler_info "c++"] } {
+    return -1
+}
+set lang c++
+
+source $srcdir/$subdir/max-depth.exp.in
diff --git a/gdb/testsuite/gdb.base/max-depth-c.exp b/gdb/testsuite/gdb.base/max-depth-c.exp
new file mode 100644
index 0000000000..3bd93098d2
--- /dev/null
+++ b/gdb/testsuite/gdb.base/max-depth-c.exp
@@ -0,0 +1,18 @@
+# Copyright 2019-2020 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+set lang {c}
+
+source $srcdir/$subdir/max-depth.exp.in
diff --git a/gdb/testsuite/gdb.base/max-depth.exp b/gdb/testsuite/gdb.base/max-depth.exp.in
similarity index 94%
rename from gdb/testsuite/gdb.base/max-depth.exp
rename to gdb/testsuite/gdb.base/max-depth.exp.in
index 7a0fe2455a..8c0d7120d1 100644
--- a/gdb/testsuite/gdb.base/max-depth.exp
+++ b/gdb/testsuite/gdb.base/max-depth.exp.in
@@ -15,26 +15,13 @@
 
 # Tests GDB's handling of 'set print max-depth'.
 
-# Only test C++ if we are able.  Always use C.
-if { [skip_cplus_tests] || [get_compiler_info "c++"] } {
-    set lang {c}
-} else {
-    set lang {c c++}
-}
-
-foreach l $lang {
-    set dir "$l"
-    remote_exec host "rm -rf [standard_output_file ${dir}]"
-    remote_exec host "mkdir -p [standard_output_file ${dir}]"
-}
-
 proc compile_and_run_tests { lang } {
     global testfile
     global srcfile
     global binfile
     global hex
 
-    standard_testfile .c
+    standard_testfile max-depth.c
 
     # Create the additional flags.
     set flags "debug"
@@ -43,8 +30,6 @@ proc compile_and_run_tests { lang } {
 	lappend flags "additional_flags=-std=c++11"
     }
 
-    set dir "$lang"
-    set binfile [standard_output_file ${dir}/${testfile}]
     if { [prepare_for_testing "failed to prepare" "${binfile}" "${srcfile}" "${flags}"] } {
 	return 0
     }
@@ -163,6 +148,4 @@ proc compile_and_run_tests { lang } {
     }
 }
 
-foreach_with_prefix l $lang {
-    compile_and_run_tests $l
-}
+compile_and_run_tests $lang
diff --git a/gdb/testsuite/gdb.cp/infcall-nodebug-c++-d0.exp b/gdb/testsuite/gdb.cp/infcall-nodebug-c++-d0.exp
new file mode 100644
index 0000000000..f06ab08628
--- /dev/null
+++ b/gdb/testsuite/gdb.cp/infcall-nodebug-c++-d0.exp
@@ -0,0 +1,25 @@
+# This testcase is part of GDB, the GNU debugger.
+# Copyright 2018-2020 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Only test C++ if we are able.  Always use C.
+if { [skip_cplus_tests] || [get_compiler_info "c++"] } {
+    return -1
+}
+set lang {c++}
+
+set debug nodebug
+
+source $srcdir/$subdir/infcall-nodebug.exp.in
diff --git a/gdb/testsuite/gdb.cp/infcall-nodebug-c++-d1.exp b/gdb/testsuite/gdb.cp/infcall-nodebug-c++-d1.exp
new file mode 100644
index 0000000000..d9dd14faf9
--- /dev/null
+++ b/gdb/testsuite/gdb.cp/infcall-nodebug-c++-d1.exp
@@ -0,0 +1,25 @@
+# This testcase is part of GDB, the GNU debugger.
+# Copyright 2018-2020 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# Only test C++ if we are able.  Always use C.
+if { [skip_cplus_tests] || [get_compiler_info "c++"] } {
+    return -1
+}
+set lang {c++}
+
+set debug debug
+
+source $srcdir/$subdir/infcall-nodebug.exp.in
diff --git a/gdb/testsuite/gdb.cp/infcall-nodebug-c-d0.exp b/gdb/testsuite/gdb.cp/infcall-nodebug-c-d0.exp
new file mode 100644
index 0000000000..cd65dd036a
--- /dev/null
+++ b/gdb/testsuite/gdb.cp/infcall-nodebug-c-d0.exp
@@ -0,0 +1,21 @@
+# This testcase is part of GDB, the GNU debugger.
+# Copyright 2018-2020 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+set lang {c}
+
+set debug nodebug
+
+source $srcdir/$subdir/infcall-nodebug.exp.in
diff --git a/gdb/testsuite/gdb.cp/infcall-nodebug-c-d1.exp b/gdb/testsuite/gdb.cp/infcall-nodebug-c-d1.exp
new file mode 100644
index 0000000000..4cb26ad3fd
--- /dev/null
+++ b/gdb/testsuite/gdb.cp/infcall-nodebug-c-d1.exp
@@ -0,0 +1,21 @@
+# This testcase is part of GDB, the GNU debugger.
+# Copyright 2018-2020 Free Software Foundation, Inc.
+
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 3 of the License, or
+# (at your option) any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+set lang {c}
+
+set debug debug
+
+source $srcdir/$subdir/infcall-nodebug.exp.in
diff --git a/gdb/testsuite/gdb.cp/infcall-nodebug.exp b/gdb/testsuite/gdb.cp/infcall-nodebug.exp.in
similarity index 82%
rename from gdb/testsuite/gdb.cp/infcall-nodebug.exp
rename to gdb/testsuite/gdb.cp/infcall-nodebug.exp.in
index 53d080dfcd..2346619627 100644
--- a/gdb/testsuite/gdb.cp/infcall-nodebug.exp
+++ b/gdb/testsuite/gdb.cp/infcall-nodebug.exp.in
@@ -24,13 +24,6 @@ if [target_info exists gdb,cannot_call_functions] {
     continue
 }
 
-# Only test C++ if we are able.  Always use C.
-if { [skip_cplus_tests] || [get_compiler_info "c++"] } {
-    set lang {c}
-} else {
-    set lang {c c++}
-}
-
 set main_basename infcall-nodebug-main
 set lib_basename infcall-nodebug-lib
 standard_testfile ${main_basename}.c ${lib_basename}.c
@@ -53,19 +46,13 @@ proc build_and_run_test { lang symbols } {
 	set debug_flags ""
     }
 
-    # Setup directory.
-
-    set dir "$lang-$symbols"
-    remote_exec build "rm -rf [standard_output_file ${dir}]"
-    remote_exec build "mkdir -p [standard_output_file ${dir}]"
-
     # Compile both files to objects, then link together.
 
     set main_flags "$lang debug"
     set lib_flags "$lang $debug_flags"
-    set main_o [standard_output_file ${dir}/${main_basename}.o]
-    set lib_o [standard_output_file ${dir}/${lib_basename}.o]
-    set binfile [standard_output_file ${dir}/${testfile}]
+    set main_o [standard_output_file ${main_basename}.o]
+    set lib_o [standard_output_file ${lib_basename}.o]
+    set binfile [standard_output_file ${testfile}]
 
     if { [gdb_compile $mainsrc $main_o object ${main_flags}] != "" } {
 	untested "failed to compile main file to object"
@@ -111,9 +98,4 @@ proc build_and_run_test { lang symbols } {
 
 }
 
-foreach_with_prefix l $lang {
-    foreach_with_prefix s {debug nodebug} {
-	build_and_run_test $l $s
-    }
-}
-
+build_and_run_test $lang $debug

^ permalink raw reply	[flat|nested] 8+ messages in thread

end of thread, other threads:[~2020-05-18 14:13 UTC | newest]

Thread overview: 8+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-05-14 15:25 [committed][gdb/testsuite] Split up multi-exec test-cases Tom de Vries
2020-05-14 15:32 ` Tom Tromey
2020-05-14 16:28   ` Tom de Vries
2020-05-14 17:14     ` Pedro Alves
2020-05-15 12:51     ` [committed][gdb/testsuite] Rename *.exp.in to *.exp.tcl Tom de Vries
2020-05-14 17:04 ` [committed][gdb/testsuite] Split up multi-exec test-cases Pedro Alves
2020-05-15 14:27   ` Tom de Vries
2020-05-18 14:13   ` Pedro Alves

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).