summaryrefslogtreecommitdiff
path: root/gdb/testsuite/gdb.base
diff options
context:
space:
mode:
authorTom de Vries <tdevries@suse.de>2020-05-14 17:24:49 +0200
committerTom de Vries <tdevries@suse.de>2020-05-14 17:24:49 +0200
commit971a374783061ad1d1574508235e364dfd0fc6e2 (patch)
tree3504af430b52c2bedde6932eed5bb51f1c742e74 /gdb/testsuite/gdb.base
parenta05575d39a5348bd9979fc09e658a03ff22722b9 (diff)
downloadbinutils-gdb-971a374783061ad1d1574508235e364dfd0fc6e2.tar.gz
[gdb/testsuite] Split up multi-exec test-cases
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. 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.
Diffstat (limited to 'gdb/testsuite/gdb.base')
-rw-r--r--gdb/testsuite/gdb.base/align-c++.exp27
-rw-r--r--gdb/testsuite/gdb.base/align-c.exp23
-rw-r--r--gdb/testsuite/gdb.base/align.exp.in (renamed from gdb/testsuite/gdb.base/align.exp)26
-rw-r--r--gdb/testsuite/gdb.base/infcall-nested-structs-c++.exp24
-rw-r--r--gdb/testsuite/gdb.base/infcall-nested-structs-c.exp20
-rw-r--r--gdb/testsuite/gdb.base/infcall-nested-structs.exp.in (renamed from gdb/testsuite/gdb.base/infcall-nested-structs.exp)27
-rw-r--r--gdb/testsuite/gdb.base/info-types-c++.exp22
-rw-r--r--gdb/testsuite/gdb.base/info-types-c.exp18
-rw-r--r--gdb/testsuite/gdb.base/info-types.exp.in (renamed from gdb/testsuite/gdb.base/info-types.exp)21
-rw-r--r--gdb/testsuite/gdb.base/max-depth-c++.exp22
-rw-r--r--gdb/testsuite/gdb.base/max-depth-c.exp18
-rw-r--r--gdb/testsuite/gdb.base/max-depth.exp.in (renamed from gdb/testsuite/gdb.base/max-depth.exp)21
12 files changed, 186 insertions, 83 deletions
diff --git a/gdb/testsuite/gdb.base/align-c++.exp b/gdb/testsuite/gdb.base/align-c++.exp
new file mode 100644
index 00000000000..09632d8bfaa
--- /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 00000000000..d7852f4ea83
--- /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
index 26827eb5a91..0653371c04b 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 00000000000..9da0621384e
--- /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 00000000000..a715c5bd0d2
--- /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
index 48c0373712e..f7409612f80 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 00000000000..4f44369fe98
--- /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 00000000000..800d6389a4b
--- /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
index 7cce756e92d..8c065b1c5f4 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 00000000000..b88b2c118d8
--- /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 00000000000..3bd93098d2c
--- /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
index 7a0fe2455ae..8c0d7120d17 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