aboutsummaryrefslogtreecommitdiff
path: root/gdb/testsuite/lib
diff options
context:
space:
mode:
authorTom de Vries <tdevries@suse.de>2022-11-11 15:30:44 +0100
committerTom de Vries <tdevries@suse.de>2022-11-11 15:30:44 +0100
commit4f04dba96d4783bae62e7fe4a5eace9fc414723d (patch)
treee6ef88a0d0419c82fde3a1700e3532666f3d88dd /gdb/testsuite/lib
parent40b355f24ec288c29bc9d3dd569758b5e80b51e3 (diff)
downloadgdb-4f04dba96d4783bae62e7fe4a5eace9fc414723d.zip
gdb-4f04dba96d4783bae62e7fe4a5eace9fc414723d.tar.gz
gdb-4f04dba96d4783bae62e7fe4a5eace9fc414723d.tar.bz2
[gdb/testsuite] Better error checking in has_hw_wp_support
With gdb 12.1, on powerpc64le I ran into ERRORs related to has_hw_wp_support usage, which was already fixed on trunk by commits: - 13f72372413 ("gdb/testsuite: fix gdb.base/break-idempotent.exp on ppc"), and - 01a32ee0b8c ("PowerPC, fix gdb.base/watchpoint.exp on Power 9") While looking into these ERRORs and the commits that fix them, it occurred to me that while the commits fix the root cause, the failure mode is not great. The test-cases expect a running instance of gdb upon return, which is not there, so there's an long stream of ERRORs generated as a result. Fix this at the start of has_hw_wp_support, by (instead of accomodating a running gdb instance by calling gdb_exit), checking whether it's called without a running gdb instance, and erroring out otherwise. This way, there's just one error. I also noticed that in case we do an early exit due to !runto_main, we don't clean up, so copy the missing cleanups (gdb_exit and $obj file deletion) from the regular exit. Tested on x86_64-linux, using has_hw_wp_support for x86_64 in skip_hw_watchpoint_tests.
Diffstat (limited to 'gdb/testsuite/lib')
-rw-r--r--gdb/testsuite/lib/gdb.exp12
1 files changed, 10 insertions, 2 deletions
diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp
index 3e0a464..d70b641 100644
--- a/gdb/testsuite/lib/gdb.exp
+++ b/gdb/testsuite/lib/gdb.exp
@@ -9045,9 +9045,15 @@ gdb_caching_proc has_hw_wp_support {
# support for HW watchpoints.
global srcdir subdir gdb_prompt inferior_exited_re
- set compile_flags {debug nowarnings quiet}
set me "has_hw_wp_support"
+ global gdb_spawn_id
+ if { [info exists gdb_spawn_id] } {
+ error "$me called with running gdb instance"
+ }
+
+ set compile_flags {debug nowarnings quiet}
+
# Compile a test program to test if HW watchpoints are supported
set src {
int main (void) {
@@ -9063,12 +9069,14 @@ gdb_caching_proc has_hw_wp_support {
return 0
}
- gdb_exit
gdb_start
gdb_reinitialize_dir $srcdir/$subdir
gdb_load "$obj"
if ![runto_main] {
+ gdb_exit
+ remote_file build delete $obj
+
set has_hw_wp_support 0
return $has_hw_wp_support
}