This is the mail archive of the gdb-cvs@sourceware.org mailing list for the GDB project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[binutils-gdb] Guarantee save-and-restore of GDBFLAGS on gdb.base/checkpoint-ns.exp


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

commit 5ba325978c354b9f0e238864e3afb4f9b528c04e
Author: Sergio Durigan Junior <sergiodj@redhat.com>
Date:   Wed Aug 12 12:32:16 2015 -0400

    Guarantee save-and-restore of GDBFLAGS on gdb.base/checkpoint-ns.exp
    
    Keith found out that several tests were failing when testing the
    native-gdbserver board on Fedora (x86_64).  Strangely, these failures
    had not been reported by our BuildBot.  Later, he found that the reason
    for this was because the failures only happened when running the
    testsuite without FORCE_PARALLEL (i.e., on serial mode; maybe it would
    be worth having a builder testing things on serial...).  Then, he
    decided to start bisecting the changes to see which one introduced the
    failure (it was not trivial to know this only by looking at gdb.log).
    
    After a lot of time, he found that Pedro's commit
    e1316e60d4d1fe406efc6e7536b2bdb43733e9d2 was the culprit.  There was
    nothing wrong in the code, but the new gdb.base/checkpoint-ns.exp
    testcase did something that left the GDBFLAGS variable in an
    inconsistent state.  This test works by modifying this variable to set
    non-stop on, sourcing gdb.base/checkpoint.exp (which does the hard
    work), and then restoring the old value on GDBFLAGS.  However, this was
    not working because gdb.base/checkpoint.exp bails out if it is being
    tested on gdbserver, and when it calls "continue" the control goes back
    to the function calling the tests, and not to
    gdb.base/checkpoint-ns.exp.
    
    The fix is simple: just wrap the "source" call, and make
    gdb.base/checkpoint-ns.exp aware of the "continue"/"return" calls made
    by gdb.base/checkpoint.exp.
    
    gdb/testsuite/ChangeLog:
    2015-08-12  Sergio Durigan Junior  <sergiodj@redhat.com>
    	    Pedro Alves  <palves@redhat.com>
    	    Keith Seitz  <keiths@redhat.com>
    
    	* gdb.base/checkpoint-ns.exp: Use save_vars to save and restore
    	GDBFLAGS.

Diff:
---
 gdb/testsuite/ChangeLog                  | 7 +++++++
 gdb/testsuite/gdb.base/checkpoint-ns.exp | 9 ++++-----
 2 files changed, 11 insertions(+), 5 deletions(-)

diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index 3324baa..916da1f 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,10 @@
+2015-08-12  Sergio Durigan Junior  <sergiodj@redhat.com>
+	    Pedro Alves  <palves@redhat.com>
+	    Keith Seitz  <keiths@redhat.com>
+
+	* gdb.base/checkpoint-ns.exp: Use save_vars to save and restore
+	GDBFLAGS.
+
 2015-08-12  Patrick Palka  <patrick@parcs.ath.cx>
 
 	* gdb.base/gdbhistsize-history.exp
diff --git a/gdb/testsuite/gdb.base/checkpoint-ns.exp b/gdb/testsuite/gdb.base/checkpoint-ns.exp
index d3698ba..d470bc4 100644
--- a/gdb/testsuite/gdb.base/checkpoint-ns.exp
+++ b/gdb/testsuite/gdb.base/checkpoint-ns.exp
@@ -18,9 +18,8 @@
 # We drive non-stop mode from a separate file because the whole test
 # takes a while to run.  This way, we can test both modes in parallel.
 
-set saved_gdbflags $GDBFLAGS
-append GDBFLAGS " -ex \"set non-stop on\""
+save_vars { GDBFLAGS } {
+    append GDBFLAGS " -ex \"set non-stop on\""
 
-source $srcdir/$subdir/checkpoint.exp
-
-set GDBFLAGS $saved_gdbflags
+    source $srcdir/$subdir/checkpoint.exp
+}


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]