public inbox for gdb-patches@sourceware.org
 help / color / mirror / Atom feed
* [pushed 0/6] [gdb/testsuite] Fix gdb.server for remote host
@ 2023-03-28 15:48 Tom de Vries
  2023-03-28 15:48 ` [pushed 1/6] [gdb/testsuite] Fix local-remote-host-native.exp for gdb.server tests Tom de Vries
                   ` (5 more replies)
  0 siblings, 6 replies; 7+ messages in thread
From: Tom de Vries @ 2023-03-28 15:48 UTC (permalink / raw)
  To: gdb-patches

Fix gdb.server/*.exp for various host/target boards.

Results:
...
 $ ./test-all.sh
 HOST/TARGET: local
 # of expected failures          1
 # of expected passes            541
 # of unexpected core files      2
 # of unsupported tests          1
 HOST: local, TARGET: native-gdbserver
 # of expected failures          1
 # of expected passes            406
 # of unexpected core files      2
 # of unsupported tests          3
 HOST: local, TARGET: native-extended-gdbserver
 # of expected failures          1
 # of expected passes            569
 # of unexpected core files      3
 HOST: local, TARGET: native-stdio-gdbserver
 # of expected failures          1
 # of expected passes            406
 # of unexpected core files      2
 # of unsupported tests          3
 HOST: local, TARGET: remote-gdbserver-on-localhost
 # of expected failures          1
 # of expected passes            365
 # of unsupported tests          6
 HOST: local, TARGET: remote-stdio-gdbserver
 # of expected failures          1
 # of expected passes            365
 # of unsupported tests          6
 HOST: local, TARGET: remote-stdio-gdbserver-remotedir
 # of expected failures          1
 # of expected passes            365
 # of unsupported tests          6
 HOST: local-remote-host-notty, TARGET: native-gdbserver
 # of expected failures          1
 # of expected passes            375
 # of unexpected core files      2
 # of unsupported tests          5
 HOST: local-remote-host-notty, TARGET: native-extended-gdbserver
 # of expected failures          1
 # of expected passes            538
 # of unexpected core files      3
 # of unsupported tests          2
 HOST: local-remote-host-notty, TARGET: remote-gdbserver-on-localhost
 # of expected failures          1
 # of expected passes            351
 # of unsupported tests          7
 HOST: local-remote-host-notty, TARGET: remote-stdio-gdbserver
 # of expected failures          1
 # of expected passes            351
 # of unsupported tests          7
 HOST: local-remote-host-notty, TARGET: remote-stdio-gdbserver-remotedir
 # of expected failures          1
 # of expected passes            351
 # of unsupported tests          7
 HOST: local-remote-host, TARGET: native-gdbserver
 # of expected failures          1
 # of expected passes            375
 # of unexpected core files      2
 # of unsupported tests          5
 HOST: local-remote-host, TARGET: native-extended-gdbserver
 # of expected failures          1
 # of expected passes            538
 # of unexpected core files      3
 # of unsupported tests          2
 HOST: local-remote-host, TARGET: remote-gdbserver-on-localhost
 # of expected failures          1
 # of expected passes            351
 # of unsupported tests          7
 HOST: local-remote-host, TARGET: remote-stdio-gdbserver
 # of expected failures          1
 # of expected passes            351
 # of unsupported tests          7
 HOST: local-remote-host, TARGET: remote-stdio-gdbserver-remotedir
 # of expected failures          1
 # of expected passes            351
 # of unsupported tests          7
 HOST/TARGET: local-remote-host-native
 # of expected failures          1
 # of expected passes            356
 # of unsupported tests          7
...

Tom de Vries (6):
  [gdb/testsuite] Fix local-remote-host-native.exp for gdb.server tests
  [gdb/testsuite] Fix gdb.server/file-transfer.exp for remote host
  [gdb/testsuite] Fix gdb.server/solib-list.exp for remote host
  [gdb/testsuite] Require non-remote host for
    gdb.server/multi-ui-errors.exp
  [gdb/testsuite] Fix gdb.server/sysroot.exp for remote host
  [gdb/testsuite] Fix gdb.server/server-kill-python.exp for remote host

 gdb/testsuite/boards/local-remote-host-native.exp |  6 +++++-
 gdb/testsuite/gdb.server/bkpt-other-inferior.exp  |  3 ++-
 gdb/testsuite/gdb.server/file-transfer.exp        | 12 ++++++------
 gdb/testsuite/gdb.server/multi-ui-errors.exp      |  3 +++
 gdb/testsuite/gdb.server/server-kill-python.exp   |  6 +++++-
 gdb/testsuite/gdb.server/solib-list.exp           |  9 +++++----
 gdb/testsuite/gdb.server/sysroot.exp              |  9 +++++++--
 7 files changed, 33 insertions(+), 15 deletions(-)


base-commit: 134ec14b1502f30f0028293b35f57c18e44614d0
-- 
2.35.3


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

* [pushed 1/6] [gdb/testsuite] Fix local-remote-host-native.exp for gdb.server tests
  2023-03-28 15:48 [pushed 0/6] [gdb/testsuite] Fix gdb.server for remote host Tom de Vries
@ 2023-03-28 15:48 ` Tom de Vries
  2023-03-28 15:48 ` [pushed 2/6] [gdb/testsuite] Fix gdb.server/file-transfer.exp for remote host Tom de Vries
                   ` (4 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: Tom de Vries @ 2023-03-28 15:48 UTC (permalink / raw)
  To: gdb-patches

When running test-case gdb.server/stop-reply-no-thread-multi.exp with
host+target board local-remote-host-native, I run into a time-out:
...
(gdb) PASS: gdb.server/stop-reply-no-thread-multi.exp: target-non-stop=off: \
  to_disable=: disconnect
builtin_spawn /usr/bin/ssh -t -l vries 127.0.0.1 gdbserver --once \
  localhost:2346 stop-reply-no-thread-multi^M
Process stop-reply-no-thread-multi created; pid = 32600^M
Listening on port 2346^M
set remote threads-packet off^M
FAIL: gdb.server/stop-reply-no-thread-multi.exp: target-non-stop=off: \
  to_disable=: set remote threads-packet off (timeout)
...

This is due to this line in ${board}_spawn:
...
    set board_info($board,fileid) $spawn_id
...

We have the following series of events:
- gdb is spawned, setting fileid
- a few gdb commands (set height etc) are send using fileid, arrive at gdb and
  are successful
- gdbserver is spawned, overwriting fileid
- the next gdb command is sent using fileid, so it's send
  to gdbserver instead of gdb, and we run into the timeout.

There is some notion of current gdb, tracked in both gdb_spawn_id and fileid
of the host board (see switch_gdb_spawn_id).  And because the host and target
board are the same, spawning something on the target overwrites the fileid on
host, and consequently the current gdb.

Fix this by only setting fileid when spawning gdb.

Tested on x86_64-linux.

Now gdb.server/*.exp passes for host+target board local-remote-host-native,
except for file-transfer.exp.

Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=29734
---
 gdb/testsuite/boards/local-remote-host-native.exp | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/gdb/testsuite/boards/local-remote-host-native.exp b/gdb/testsuite/boards/local-remote-host-native.exp
index 21680d84118..b83d56efe74 100644
--- a/gdb/testsuite/boards/local-remote-host-native.exp
+++ b/gdb/testsuite/boards/local-remote-host-native.exp
@@ -83,7 +83,11 @@ proc ${board}_spawn { board cmd } {
     set RSH [board_info $board rsh_prog]
 
     spawn $RSH -t -l $username $remote $cmd
-    set board_info($board,fileid) $spawn_id
+
+    if { [string match "$::GDB*" $cmd] } {
+	set board_info($board,fileid) $spawn_id
+    }
+
     return $spawn_id
 }
 
-- 
2.35.3


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

* [pushed 2/6] [gdb/testsuite] Fix gdb.server/file-transfer.exp for remote host
  2023-03-28 15:48 [pushed 0/6] [gdb/testsuite] Fix gdb.server for remote host Tom de Vries
  2023-03-28 15:48 ` [pushed 1/6] [gdb/testsuite] Fix local-remote-host-native.exp for gdb.server tests Tom de Vries
@ 2023-03-28 15:48 ` Tom de Vries
  2023-03-28 15:48 ` [pushed 3/6] [gdb/testsuite] Fix gdb.server/solib-list.exp " Tom de Vries
                   ` (3 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: Tom de Vries @ 2023-03-28 15:48 UTC (permalink / raw)
  To: gdb-patches

Fix test-case gdb.server/file-transfer.exp for remote host using
gdb_remote_download and host_standard_output_file.

Tested on x86_64-linux.
---
 gdb/testsuite/gdb.server/file-transfer.exp | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/gdb/testsuite/gdb.server/file-transfer.exp b/gdb/testsuite/gdb.server/file-transfer.exp
index 05da514413c..5e273350f90 100644
--- a/gdb/testsuite/gdb.server/file-transfer.exp
+++ b/gdb/testsuite/gdb.server/file-transfer.exp
@@ -33,6 +33,8 @@ gdb_test "disconnect" ".*"
 gdbserver_run ""
 
 proc test_file_transfer { filename description } {
+    set host_filename [gdb_remote_download host $filename]
+
     set up_server up-server
     set down_server down-server
 
@@ -40,11 +42,9 @@ proc test_file_transfer { filename description } {
 	set down_server [standard_output_file $down_server]
     }
 
-    if {![is_remote host]} {
-	set up_server [standard_output_file $up_server]
-    }
+    set up_server [host_standard_output_file $up_server]
 
-    gdb_test "remote put \"$filename\" $down_server" \
+    gdb_test "remote put \"$host_filename\" $down_server" \
 	"Successfully sent .*" "put $description"
     gdb_test "remote get $down_server $up_server" \
 	"Successfully fetched .*" "get $description"
@@ -52,7 +52,7 @@ proc test_file_transfer { filename description } {
     if { ![is_remote target] } {
 	# If we can check the target copy of the file, do that too.
 	# This should catch symmetric errors in upload and download.
-	set result [remote_exec host "cmp -s $filename $down_server"]
+	set result [remote_exec build "cmp -s $filename $down_server"]
 	if { [lindex $result 0] == 0 } {
 	    pass "compare intermediate $description"
 	} else {
@@ -60,7 +60,7 @@ proc test_file_transfer { filename description } {
 	}
     }
 
-    set result [remote_exec host "cmp -s $filename $up_server"]
+    set result [remote_exec host "cmp -s $host_filename $up_server"]
     if { [lindex $result 0] == 0 } {
 	pass "compare $description"
     } else {
-- 
2.35.3


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

* [pushed 3/6] [gdb/testsuite] Fix gdb.server/solib-list.exp for remote host
  2023-03-28 15:48 [pushed 0/6] [gdb/testsuite] Fix gdb.server for remote host Tom de Vries
  2023-03-28 15:48 ` [pushed 1/6] [gdb/testsuite] Fix local-remote-host-native.exp for gdb.server tests Tom de Vries
  2023-03-28 15:48 ` [pushed 2/6] [gdb/testsuite] Fix gdb.server/file-transfer.exp for remote host Tom de Vries
@ 2023-03-28 15:48 ` Tom de Vries
  2023-03-28 15:48 ` [pushed 4/6] [gdb/testsuite] Require non-remote host for gdb.server/multi-ui-errors.exp Tom de Vries
                   ` (2 subsequent siblings)
  5 siblings, 0 replies; 7+ messages in thread
From: Tom de Vries @ 2023-03-28 15:48 UTC (permalink / raw)
  To: gdb-patches

Fix test-case gdb.server/solib-list.exp for remote host using
gdb_remote_download.

Likewise in another test-case.

Tested on x86_64-linux.
---
 gdb/testsuite/gdb.server/bkpt-other-inferior.exp | 3 ++-
 gdb/testsuite/gdb.server/solib-list.exp          | 9 +++++----
 2 files changed, 7 insertions(+), 5 deletions(-)

diff --git a/gdb/testsuite/gdb.server/bkpt-other-inferior.exp b/gdb/testsuite/gdb.server/bkpt-other-inferior.exp
index d4395d2c441..88f84a1228d 100644
--- a/gdb/testsuite/gdb.server/bkpt-other-inferior.exp
+++ b/gdb/testsuite/gdb.server/bkpt-other-inferior.exp
@@ -27,6 +27,7 @@ if { [prepare_for_testing "failed to prepare" ${binfile} "${srcfile}" \
 	  {debug pthreads}] } {
     return
 }
+set host_binfile [gdb_remote_download host $binfile]
 
 # Make sure we're disconnected, in case we're testing with an
 # extended-remote board, therefore already connected.
@@ -39,7 +40,7 @@ gdb_test "add-inferior" "Added inferior 2" \
     "add inferior 2"
 gdb_test "inferior 2" "Switching to inferior 2.*" \
     "switch to inferior 2"
-gdb_test "file ${binfile}" ".*" "load file in inferior 2"
+gdb_test "file ${host_binfile}" ".*" "load file in inferior 2"
 
 set target_exec [gdbserver_download_current_prog]
 
diff --git a/gdb/testsuite/gdb.server/solib-list.exp b/gdb/testsuite/gdb.server/solib-list.exp
index 2a239838477..564878be018 100644
--- a/gdb/testsuite/gdb.server/solib-list.exp
+++ b/gdb/testsuite/gdb.server/solib-list.exp
@@ -51,14 +51,15 @@ foreach nonstop { 0 1 } { with_test_prefix "non-stop $nonstop" {
 
     gdb_load_shlib ${binlibfile}
 
-    set remote_binfile [gdb_remote_download target $binfile]
+    set target_binfile [gdb_remote_download target $binfile]
+    set host_binfile [gdb_remote_download host $binfile]
 
     # When testing remote, the file path we receive may be only the file name,
     # "solib-list".  ld-linux doesn't seem to be able to find the file when
     # passing just the file name, it wants either the absolute path or a
     # relative path with at least one directory component.  Calling readlink on
     # the target to get the full path will make it happy.
-    set remote_binfile [lindex [remote_exec target "readlink -f $remote_binfile"] 1]
+    set target_binfile [lindex [remote_exec target "readlink -f $target_binfile"] 1]
 
     # Make sure we're disconnected, in case we're testing with an
     # extended-remote board, therefore already connected.
@@ -81,7 +82,7 @@ foreach nonstop { 0 1 } { with_test_prefix "non-stop $nonstop" {
     # argument here, instead of using gdb_load, because we don't want
     # to download the interpreter to the target (it's already there)
     # or to the test output directory.
-    set res [gdbserver_spawn "${interp_system} ${remote_binfile}"]
+    set res [gdbserver_spawn "${interp_system} ${target_binfile}"]
     set gdbserver_protocol [lindex $res 0]
     set gdbserver_gdbport [lindex $res 1]
 
@@ -89,7 +90,7 @@ foreach nonstop { 0 1 } { with_test_prefix "non-stop $nonstop" {
     # but before "target remote" below so that qSymbol data get already
     # initialized from BINFILE (and not from ld.so first needing a change to
     # BINFILE later).
-    gdb_test "file ${binfile}" {Reading symbols from .*\.\.\..*} "file binfile"
+    gdb_test "file ${host_binfile}" {Reading symbols from .*\.\.\..*} "file binfile"
 
     set test "target $gdbserver_protocol"
     set ok 0
-- 
2.35.3


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

* [pushed 4/6] [gdb/testsuite] Require non-remote host for gdb.server/multi-ui-errors.exp
  2023-03-28 15:48 [pushed 0/6] [gdb/testsuite] Fix gdb.server for remote host Tom de Vries
                   ` (2 preceding siblings ...)
  2023-03-28 15:48 ` [pushed 3/6] [gdb/testsuite] Fix gdb.server/solib-list.exp " Tom de Vries
@ 2023-03-28 15:48 ` Tom de Vries
  2023-03-28 15:48 ` [pushed 5/6] [gdb/testsuite] Fix gdb.server/sysroot.exp for remote host Tom de Vries
  2023-03-28 15:48 ` [pushed 6/6] [gdb/testsuite] Fix gdb.server/server-kill-python.exp " Tom de Vries
  5 siblings, 0 replies; 7+ messages in thread
From: Tom de Vries @ 2023-03-28 15:48 UTC (permalink / raw)
  To: gdb-patches

Require non-remote host for test-case gdb.server/multi-ui-errors.exp, because
it uses "spawn -pty", which creates a pty on build, which gdb cannot use on
remote host.

Tested on x86_64-linux.
---
 gdb/testsuite/gdb.server/multi-ui-errors.exp | 3 +++
 1 file changed, 3 insertions(+)

diff --git a/gdb/testsuite/gdb.server/multi-ui-errors.exp b/gdb/testsuite/gdb.server/multi-ui-errors.exp
index 266207a5f4b..af83614fe55 100644
--- a/gdb/testsuite/gdb.server/multi-ui-errors.exp
+++ b/gdb/testsuite/gdb.server/multi-ui-errors.exp
@@ -25,6 +25,9 @@ load_lib gdbserver-support.exp
 standard_testfile
 
 require allow_gdbserver_tests
+# The test-case uses "spawn -pty", which creates a pty on build, which gdb
+# cannot use on remote host.
+require {!is_remote host}
 
 save_vars { GDBFLAGS } {
     # If GDB and GDBserver are both running locally, set the sysroot to avoid
-- 
2.35.3


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

* [pushed 5/6] [gdb/testsuite] Fix gdb.server/sysroot.exp for remote host
  2023-03-28 15:48 [pushed 0/6] [gdb/testsuite] Fix gdb.server for remote host Tom de Vries
                   ` (3 preceding siblings ...)
  2023-03-28 15:48 ` [pushed 4/6] [gdb/testsuite] Require non-remote host for gdb.server/multi-ui-errors.exp Tom de Vries
@ 2023-03-28 15:48 ` Tom de Vries
  2023-03-28 15:48 ` [pushed 6/6] [gdb/testsuite] Fix gdb.server/server-kill-python.exp " Tom de Vries
  5 siblings, 0 replies; 7+ messages in thread
From: Tom de Vries @ 2023-03-28 15:48 UTC (permalink / raw)
  To: gdb-patches

Fix test-case gdb.server/sysroot.exp for remote host, by:
- using gdb_remote_download, and
- disabling the "local" scenario for remote host/target, unless
  remote host == remote target.

Tested on x86_64-linux.
---
 gdb/testsuite/gdb.server/sysroot.exp | 9 +++++++--
 1 file changed, 7 insertions(+), 2 deletions(-)

diff --git a/gdb/testsuite/gdb.server/sysroot.exp b/gdb/testsuite/gdb.server/sysroot.exp
index ac2a03d0c8f..35f15d6c60e 100644
--- a/gdb/testsuite/gdb.server/sysroot.exp
+++ b/gdb/testsuite/gdb.server/sysroot.exp
@@ -28,11 +28,16 @@ if {[build_executable "failed to prepare" $testfile $srcfile "additional_flags=-
 }
 
 set target_binfile [gdb_remote_download target $binfile]
+set host_binfile [gdb_remote_download host $binfile]
 
 # Run once with sysroot set to the local filesystem and once set to the remote
 # target.
 set modes {}
-if { ![is_remote target] } {
+if { ( ![is_remote host] && ![is_remote target ] )
+     || [board_info host name] == [board_info target name] } {
+    # Local means that gdb and gdbserver look at the same file system.  That's
+    # not the case for remote host or remote target, unless
+    # remote host == remote target.
     lappend modes "local"
 }
 lappend modes "remote"
@@ -44,7 +49,7 @@ foreach_with_prefix sysroot $modes {
 
     if { $sysroot == "local" } {
 	set sysroot_command "/"
-	set reading_symbols "Reading symbols from $binfile..."
+	set reading_symbols "Reading symbols from $host_binfile..."
 	set timeout_factor 1
     } else {
 	set sysroot_command "target:"
-- 
2.35.3


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

* [pushed 6/6] [gdb/testsuite] Fix gdb.server/server-kill-python.exp for remote host
  2023-03-28 15:48 [pushed 0/6] [gdb/testsuite] Fix gdb.server for remote host Tom de Vries
                   ` (4 preceding siblings ...)
  2023-03-28 15:48 ` [pushed 5/6] [gdb/testsuite] Fix gdb.server/sysroot.exp for remote host Tom de Vries
@ 2023-03-28 15:48 ` Tom de Vries
  5 siblings, 0 replies; 7+ messages in thread
From: Tom de Vries @ 2023-03-28 15:48 UTC (permalink / raw)
  To: gdb-patches

Fix test-case gdb.server/server-kill-python.exp for remote host using
gdb_remote_download.

Tested on x86_64-linux.
---
 gdb/testsuite/gdb.server/server-kill-python.exp | 6 +++++-
 1 file changed, 5 insertions(+), 1 deletion(-)

diff --git a/gdb/testsuite/gdb.server/server-kill-python.exp b/gdb/testsuite/gdb.server/server-kill-python.exp
index f6b373065a8..ae85791c770 100644
--- a/gdb/testsuite/gdb.server/server-kill-python.exp
+++ b/gdb/testsuite/gdb.server/server-kill-python.exp
@@ -31,6 +31,7 @@ if {[build_executable "failed to prepare" ${testfile} \
 }
 
 set target_binfile [gdb_remote_download target $binfile]
+set host_binfile [gdb_remote_download host $binfile]
 
 # Start gdbserver.
 set res [gdbserver_spawn "${target_binfile}"]
@@ -47,6 +48,7 @@ puts $fd \
 "import gdb
 
 def do_gdb_stuff ():
+    gdb.execute ('file $host_binfile')
     gdb.execute ('target $gdbserver_protocol $gdbserver_gdbport')
     gdb.execute ('break $srcfile:$break_linenr')
     gdb.execute ('continue')
@@ -56,10 +58,12 @@ def do_gdb_stuff ():
 do_gdb_stuff()"
 close $fd
 
+set host_file1 [gdb_remote_download host $file1]
+
 # Now start GDB, sourcing the python command file we generated above.
 # Set the height and width so we don't end up at a paging prompt.
 if {[gdb_spawn_with_cmdline_opts \
-	 "-quiet -iex \"set height 0\" -iex \"set width 0\" -ex \"source $file1\""] != 0} {
+	 "-quiet -iex \"set height 0\" -iex \"set width 0\" -ex \"source $host_file1\""] != 0} {
     fail "spawn"
     return
 }
-- 
2.35.3


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

end of thread, other threads:[~2023-03-28 15:48 UTC | newest]

Thread overview: 7+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2023-03-28 15:48 [pushed 0/6] [gdb/testsuite] Fix gdb.server for remote host Tom de Vries
2023-03-28 15:48 ` [pushed 1/6] [gdb/testsuite] Fix local-remote-host-native.exp for gdb.server tests Tom de Vries
2023-03-28 15:48 ` [pushed 2/6] [gdb/testsuite] Fix gdb.server/file-transfer.exp for remote host Tom de Vries
2023-03-28 15:48 ` [pushed 3/6] [gdb/testsuite] Fix gdb.server/solib-list.exp " Tom de Vries
2023-03-28 15:48 ` [pushed 4/6] [gdb/testsuite] Require non-remote host for gdb.server/multi-ui-errors.exp Tom de Vries
2023-03-28 15:48 ` [pushed 5/6] [gdb/testsuite] Fix gdb.server/sysroot.exp for remote host Tom de Vries
2023-03-28 15:48 ` [pushed 6/6] [gdb/testsuite] Fix gdb.server/server-kill-python.exp " 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;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).