public inbox for gdb-cvs@sourceware.org
help / color / mirror / Atom feed
From: Tom de Vries <vries@sourceware.org>
To: gdb-cvs@sourceware.org
Subject: [binutils-gdb] [gdb/testsuite] Better error checking in has_hw_wp_support
Date: Fri, 11 Nov 2022 14:30:47 +0000 (GMT)	[thread overview]
Message-ID: <20221111143048.0241738582BD@sourceware.org> (raw)

https://sourceware.org/git/gitweb.cgi?p=binutils-gdb.git;h=4f04dba96d4783bae62e7fe4a5eace9fc414723d

commit 4f04dba96d4783bae62e7fe4a5eace9fc414723d
Author: Tom de Vries <tdevries@suse.de>
Date:   Fri Nov 11 15:30:44 2022 +0100

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

Diff:
---
 gdb/testsuite/lib/gdb.exp | 12 ++++++++++--
 1 file changed, 10 insertions(+), 2 deletions(-)

diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp
index 3e0a46445ca..d70b6410441 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
     }

                 reply	other threads:[~2022-11-11 14:30 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20221111143048.0241738582BD@sourceware.org \
    --to=vries@sourceware.org \
    --cc=gdb-cvs@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
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).