public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
* [PATCH v2] gdb,testsuite: fix gdb.base/list-dot-nodebug and make it more robust
@ 2024-06-27 18:42 Guinevere Larsen
  0 siblings, 0 replies; only message in thread
From: Guinevere Larsen @ 2024-06-27 18:42 UTC (permalink / raw)
  To: gdb-patches; +Cc: Guinevere Larsen, Tom de Vries, Thiago Jung Bauermann

Thiago Jung Bauermann noticed that gdb.base/list-dot-nodebug was not
actually compiling the test with some debuginfo in the relevant part,
and while fixing I noticed that the base assumption of the "some" case
was wrong, GDB would select some symtab as a default location and the
test would always fail. This fix makes printing the default location
only be tested when there is no debuginfo.

When testing with no debuginfo, if a system had static libc debuginfo,
the test would also fail. To add an extra layer of robustness to the
test, this rewrite also strips any stray debuginfo from the executable.
The test would only fail now if it runs in a system that can't handle
stripped debuginfo and has static debuginfo pre-installed.

Reported-By: Tom de Vries <tdevries@suse.de>
Reported-By: Thiago Jung Bauermann <thiago.bauermann@linaro.org>
Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=31721
---
 gdb/testsuite/gdb.base/list-dot-nodebug.exp | 37 +++++++++++++++------
 1 file changed, 26 insertions(+), 11 deletions(-)

diff --git a/gdb/testsuite/gdb.base/list-dot-nodebug.exp b/gdb/testsuite/gdb.base/list-dot-nodebug.exp
index c9d732e801b..b7359be1a45 100644
--- a/gdb/testsuite/gdb.base/list-dot-nodebug.exp
+++ b/gdb/testsuite/gdb.base/list-dot-nodebug.exp
@@ -34,21 +34,36 @@ standard_testfile .c -extra.c
 
 foreach_with_prefix debug {"none" "some"} {
 
-    set flags "nodebug"
     if {$debug == "some"} {
-	set flags "debug"
-    }
+	if {[prepare_for_testing_full "failed to prepare" \
+		[list ${testfile}-${debug} $linkflags \
+		    $srcfile [list nodebug] \
+		    $srcfile2 [list debug]]]} {
+	    return -1
+	}
 
-    if {[prepare_for_testing_full "failed to prepare" \
-	    [list ${testfile}-${debug} $linkflags \
-		$srcfile [list nodebug] \
-		$srcfile2 [list $debug]]]} {
-	return -1
+	# We don't test "list ." before starting with some debug info
+	# because GDB will choose the symtab that has debuginfo, and
+	# print the copyright blurb.  This test isn't interested (yet?)
+	# in checking if this default location choice is consistent.
+    } else {
+	set executable ${testfile}-none
+	if {[build_executable "failed to prepare" ${executable} \
+		[list $srcfile $srcfile2] $linkflags]} {
+	    return -1
+	}
+
+	# Stripping is a backup in case the system has static libc debuginfo.
+	# We can continue the test even if it fails.
+	gdb_gnu_strip_debug $executable no-debuglink
+
+	clean_restart ${executable}
+
+	gdb_test "list ." \
+	    "^Insufficient debug info for showing source lines at default location" \
+	    "print before start"
     }
 
-    gdb_test "list ." \
-	"^Insufficient debug info for showing source lines at default location" \
-	"print before start"
 
     if { ![runto bar] } {
 	return -1
-- 
2.45.2


^ permalink raw reply	[flat|nested] only message in thread

only message in thread, other threads:[~2024-06-27 18:42 UTC | newest]

Thread overview: (only message) (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2024-06-27 18:42 [PATCH v2] gdb,testsuite: fix gdb.base/list-dot-nodebug and make it more robust Guinevere Larsen

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