Mirror of the gdb-patches mailing list
 help / color / mirror / Atom feed
* [PATCH 0/2] [gdb/testsuite] Two fixes in gdb.python/py-section-script.exp
@ 2026-07-28 16:00 Tom de Vries
  2026-07-28 16:00 ` [PATCH 1/2] [gdb/testsuite] Fix gdb.python/py-section-script.exp with make-check-all.sh Tom de Vries
  2026-07-28 16:00 ` [PATCH 2/2] [gdb/testsuite] Fix gdb.python/py-section-script.exp with older objdump Tom de Vries
  0 siblings, 2 replies; 3+ messages in thread
From: Tom de Vries @ 2026-07-28 16:00 UTC (permalink / raw)
  To: gdb-patches

The first patch fixes problems found with make-check-all.sh.

The second patch fixes a problem when using an older objdump that doesn't
suppport --decompress.

Tom de Vries (2):
  [gdb/testsuite] Fix gdb.python/py-section-script.exp with
    make-check-all.sh
  [gdb/testsuite] Fix gdb.python/py-section-script.exp with older
    objdump

 .../gdb.python/py-section-script.exp          | 59 +++++++++++--------
 1 file changed, 35 insertions(+), 24 deletions(-)


base-commit: cd02e2a209482dd9fa06945ffec0675da7dfd74e
-- 
2.51.0


^ permalink raw reply	[flat|nested] 3+ messages in thread

* [PATCH 1/2] [gdb/testsuite] Fix gdb.python/py-section-script.exp with make-check-all.sh
  2026-07-28 16:00 [PATCH 0/2] [gdb/testsuite] Two fixes in gdb.python/py-section-script.exp Tom de Vries
@ 2026-07-28 16:00 ` Tom de Vries
  2026-07-28 16:00 ` [PATCH 2/2] [gdb/testsuite] Fix gdb.python/py-section-script.exp with older objdump Tom de Vries
  1 sibling, 0 replies; 3+ messages in thread
From: Tom de Vries @ 2026-07-28 16:00 UTC (permalink / raw)
  To: gdb-patches

When running test-case gdb.python/py-section-script.exp with
make-check-all.sh, I get:
...
LOCAL:
 # of expected passes		38
TARGET BOARD: read1
 # of expected passes		38
TARGET BOARD: readmore
 # of expected passes		38
TARGET BOARD: cc-with-gdb-index
 # of expected passes		38
TARGET BOARD: cc-with-index-cache
 # of untested testcases		1
TARGET BOARD: cc-with-debug-names
FAIL: $exp: variant=compressed: gdb_breakpoint: set breakpoint at main
 # of expected passes		25
 # of unexpected failures	1
TARGET BOARD: cc-with-dwz
 # of expected passes		19
 # of untested testcases		1
TARGET BOARD: cc-with-dwz-m
 # of expected passes		19
 # of untested testcases		1
TARGET BOARD: cc-with-gnu-debuglink
ERROR: Undefined command "test-cmd 1 2 3".
FAIL: $exp: variant=plain: sepdebug from eu-strip: verify scripts loaded
FAIL: $exp: variant=plain: sepdebug from objcopy: strip py-section-script-plain-objcopy debuginfo
FAIL: $exp: variant=plain: verify scripts loaded
 # of expected passes		12
 # of unexpected failures	3
 # of unresolved testcases	1
TARGET BOARD: debug-types
 # of expected passes		38
TARGET BOARD: dwarf4-gdb-index
 # of expected passes		38
TARGET BOARD: dwarf5-fission-debug-types
 # of expected passes		38
TARGET BOARD: dwarf64
 # of expected passes		38
TARGET BOARD: fission
 # of untested testcases		1
TARGET BOARD: fission-dwp
 # of untested testcases		1
TARGET BOARD: gold
 # of untested testcases		1
TARGET BOARD: gold-gdb-index
 # of untested testcases		1
TARGET BOARD: readnow
 # of expected passes		38
TARGET BOARD: native-extended-gdbserver
 # of expected passes		38
TARGET BOARD: native-gdbserver
 # of expected passes		38
TARGET BOARD: native-stdio-gdbserver
 # of expected passes		38
TARGET BOARD: remote-gdbserver-on-localhost
 # of expected passes		38
TARGET BOARD: remote-stdio-gdbserver
 # of expected passes		38
HOST BOARD: local-remote-host, TARGET BOARD: remote-gdbserver-on-localhost
 # of untested testcases		1
HOST BOARD: local-remote-host, TARGET BOARD: remote-stdio-gdbserver
 # of untested testcases		1
HOST BOARD: local-remote-host-notty, TARGET BOARD: remote-gdbserver-on-localhost
 # of untested testcases		1
HOST BOARD: local-remote-host-notty, TARGET BOARD: remote-stdio-gdbserver
 # of untested testcases		1
HOST/TARGET BOARD: local-remote-host-native
 # of untested testcases		1
...

I've filed a PR about the cc-with-debug-names failure [1].

The untested for remote host configurations is because of compilation failure.

There's some evidence of remote host support in the test-case, but making it
work in general requires a lot of changes, because the test-case is
file-manipulation heavy.  Instead, just require local host and remove any
suggestion that remote host is supported.

Finally, cc-with-gnu-debuglink config fails because it moves the
.debug_gdb_scripts section out of the executable.  Detect this and bail out.

[1] https://sourceware.org/bugzilla/show_bug.cgi?id=34440
---
 .../gdb.python/py-section-script.exp          | 38 +++++++++----------
 1 file changed, 17 insertions(+), 21 deletions(-)

diff --git a/gdb/testsuite/gdb.python/py-section-script.exp b/gdb/testsuite/gdb.python/py-section-script.exp
index 91c280da2b1..04ff14a8d0a 100644
--- a/gdb/testsuite/gdb.python/py-section-script.exp
+++ b/gdb/testsuite/gdb.python/py-section-script.exp
@@ -18,26 +18,23 @@
 
 require is_elf_target
 require allow_python_tests
+require {!is_remote host}
 
 standard_testfile
 
-# Make this available to gdb before the program starts, it is
-# automagically loaded by gdb.
-set remote_python_file [gdb_remote_download host \
-			    ${srcdir}/${subdir}/${testfile}.py]
-
-set quoted_name "\"$remote_python_file\""
+set python_file $srcdir/$subdir/$testfile.py
+set quoted_name "\"$python_file\""
 
 # Helper proc to 'set auto-load safe-path ...'.  Build the new path value by
 # joining ARGS together with an appropriate path separator character.
 proc set_auto_load_safe_path { args } {
     if {[ishost *-*-mingw*]} {
-	set remote_pathsep ";"
+	set pathsep ";"
     } else {
-	set remote_pathsep ":"
+	set pathsep ":"
     }
 
-    set safe_path [join $args $remote_pathsep]
+    set safe_path [join $args $pathsep]
 
     gdb_test_no_output "set auto-load safe-path $safe_path" \
 	"set auto-load safe-path"
@@ -59,6 +56,13 @@ foreach_with_prefix variant {plain compressed} {
 	return
     }
 
+    if {[section_get $the_binfile ".debug_gdb_scripts"] eq ""} {
+	# Target board cc-with-gnu-debug-link moves .debug_gdb_scripts into
+	# a separate debug file.
+	unsupported "Section .debug_gdb_scripts not in binfile"
+	return
+    }
+
     if {$variant == "compressed"} {
 	set objdump_program [gdb_find_objdump]
 	set debug_sect [exec $objdump_program -j .debug_gdb_scripts -s "$the_binfile"]
@@ -92,16 +96,8 @@ foreach_with_prefix variant {plain compressed} {
 
     clean_restart
 
-    # Get the name of the binfile on the host; on a remote host this means
-    # stripping off any directory prefix.
-    if {[is_remote host]} {
-	set remote_binfile [file tail ${the_binfile}]
-    } else {
-	set remote_binfile ${the_binfile}
-    }
-
-    set_auto_load_safe_path $remote_python_file $remote_binfile
-    gdb_load ${the_binfile}
+    set_auto_load_safe_path $python_file $the_binfile
+    gdb_load $the_binfile
     # Verify gdb loaded each script and they appear once in the list.
     gdb_test_multiple "info auto-load python-scripts" "verify scripts loaded" {
 	-re -wrap "Yes.*${testfile}.py.*Yes.*inlined-script.*" {
@@ -153,7 +149,7 @@ foreach_with_prefix variant {plain compressed} {
 	    return
 	}
 
-	set_auto_load_safe_path $remote_python_file $eu_strip_binfile
+	set_auto_load_safe_path $python_file $eu_strip_binfile
 	gdb_test_multiple "file $eu_strip_binfile" "load sepdebug" {
 	    -re -wrap "\r\nwarning: Invalid entry in \\.debug_gdb_scripts section.*" {
 		fail $gdb_test_name
@@ -203,7 +199,7 @@ foreach_with_prefix variant {plain compressed} {
 	# Add the directory containing OBJCOPY_BINFILE because the scripts
 	# section will be auto-loaded from the separate .debug file (not the
 	# main executable), which resides alongside it.
-	set_auto_load_safe_path $remote_python_file \
+	set_auto_load_safe_path $python_file \
 	    [file dirname ${objcopy_binfile}]
 	gdb_load $objcopy_binfile
 
-- 
2.51.0


^ permalink raw reply	[flat|nested] 3+ messages in thread

* [PATCH 2/2] [gdb/testsuite] Fix gdb.python/py-section-script.exp with older objdump
  2026-07-28 16:00 [PATCH 0/2] [gdb/testsuite] Two fixes in gdb.python/py-section-script.exp Tom de Vries
  2026-07-28 16:00 ` [PATCH 1/2] [gdb/testsuite] Fix gdb.python/py-section-script.exp with make-check-all.sh Tom de Vries
@ 2026-07-28 16:00 ` Tom de Vries
  1 sibling, 0 replies; 3+ messages in thread
From: Tom de Vries @ 2026-07-28 16:00 UTC (permalink / raw)
  To: gdb-patches

On AlmaLinux 9.8 ppc64le with objdump 2.35.2 I run into:
...
ERROR: tcl error sourcing gdb/testsuite/gdb.python/py-section-script.exp.
ERROR: tcl error code CHILDSTATUS 3614626 1
ERROR: objdump: unrecognized option '--decompress'
...

Fix this by using remote_exec instead of exec, and checking the result.

Tested on x86_64-linux and ppc64le-linux.
---
 .../gdb.python/py-section-script.exp          | 21 ++++++++++++++++---
 1 file changed, 18 insertions(+), 3 deletions(-)

diff --git a/gdb/testsuite/gdb.python/py-section-script.exp b/gdb/testsuite/gdb.python/py-section-script.exp
index 04ff14a8d0a..6a83ff31602 100644
--- a/gdb/testsuite/gdb.python/py-section-script.exp
+++ b/gdb/testsuite/gdb.python/py-section-script.exp
@@ -65,9 +65,24 @@ foreach_with_prefix variant {plain compressed} {
 
     if {$variant == "compressed"} {
 	set objdump_program [gdb_find_objdump]
-	set debug_sect [exec $objdump_program -j .debug_gdb_scripts -s "$the_binfile"]
-	set debug_sect_decompressed [exec $objdump_program -j .debug_gdb_scripts \
-			    -s "$the_binfile" --decompress]
+
+	set res \
+	    [remote_exec host \
+		 "$objdump_program -j .debug_gdb_scripts -s \"$the_binfile\""]
+	if {[lindex $res 0] != 0} {
+	    unsupported "Couldn't run objdump"
+	    return
+	}
+	set debug_sect [lindex $res 1]
+
+	set res \
+	    [remote_exec host \
+		 "$objdump_program -j .debug_gdb_scripts -s \"$the_binfile\" --decompress"]
+	if {[lindex $res 0] != 0} {
+	    unsupported "Couldn't run objdump --decompress"
+	    return
+	}
+	set debug_sect_decompressed [lindex $res 1]
 
 	if {$debug_sect == $debug_sect_decompressed} {
 	    fail ".debug_gdb_scripts in $the_binfile is not compressed"
-- 
2.51.0


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2026-07-28 16:02 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2026-07-28 16:00 [PATCH 0/2] [gdb/testsuite] Two fixes in gdb.python/py-section-script.exp Tom de Vries
2026-07-28 16:00 ` [PATCH 1/2] [gdb/testsuite] Fix gdb.python/py-section-script.exp with make-check-all.sh Tom de Vries
2026-07-28 16:00 ` [PATCH 2/2] [gdb/testsuite] Fix gdb.python/py-section-script.exp with older objdump Tom de Vries

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox