[pushed,2/2,gdb/testsuite] Check remote_exec results in board files

Message ID 20230321125341.20523-2-tdevries@suse.de
State Committed
Headers
Series [pushed,1/2,gdb/testsuite] Add missing quote in remote-gdbserver-on-localhost.exp |

Commit Message

Tom de Vries March 21, 2023, 12:53 p.m. UTC
  Make sure the result of each remote_exec in gdb/testsuite/boards/*.exp is
checked.

Tested on x86_64-linux.
---
 gdb/testsuite/boards/local-remote-host.exp    | 45 +++++++++++--------
 .../boards/remote-gdbserver-on-localhost.exp  | 14 +++---
 2 files changed, 36 insertions(+), 23 deletions(-)
  

Patch

diff --git a/gdb/testsuite/boards/local-remote-host.exp b/gdb/testsuite/boards/local-remote-host.exp
index 021b2203d33..e8ac676f788 100644
--- a/gdb/testsuite/boards/local-remote-host.exp
+++ b/gdb/testsuite/boards/local-remote-host.exp
@@ -32,30 +32,39 @@  if { [info exists REMOTE_HOST_USERNAME] } {
     set_board_info username $env(USER)
 }
 
-# Handle separate test account.
-if { [board_info $board username] != $env(USER) } {
-    # We're pretending that some local user account is remote host.
-    # Make things a bit more realistic by restricting file permissions.
-
-    # Make sure remote host can't see files on build.
-    remote_exec build "chmod go-rx $objdir"
-
-    # Make sure build can't see files on remote host.  We can't use
-    # remote_exec host, because we're in the middle of parsing the
-    # host board.
-    remote_exec build \
-	"[board_info $board rsh_prog] \
-		     -l [board_info $board username] \
-			[board_info $board hostname] \
-	chmod go-rx ."
-}
-
 # The ssh key should be correctly set up that you ssh to localhost
 # without having to type password.
 set_board_info rsh_prog /usr/bin/ssh
 set_board_info rcp_prog /usr/bin/scp
 set_board_info file_transfer "rsh"
 
+save_vars {rsh_cmd res} {
+    set rsh_cmd \
+	[join \
+	     [list \
+		  [board_info $board rsh_prog] \
+		  -l [board_info $board username] \
+		  [board_info $board hostname]]]
+
+    # Handle separate test account.
+    if { [board_info $board username] != $env(USER) } {
+	# We're pretending that some local user account is remote host.
+	# Make things a bit more realistic by restricting file permissions.
+
+	# Make sure remote host can't see files on build.
+	set res [remote_exec build "chmod go-rx $objdir"]
+	if { [lindex $res 0] != 0 } {
+	    error "Couldn't remove permissions for $objdir on build"
+	}
+
+	# Make sure build can't see files on remote host.
+	set res [remote_exec build $rsh_cmd "chmod go-rx ."]
+	if { [lindex $res 0] != 0 } {
+	    error "Couldn't remove permissions for . on host"
+	}
+    }
+}
+
 # Like standard_spawn, but force pseudo-tty allocation, with 'ssh -t'.
 
 proc ${board}_spawn { board cmd } {
diff --git a/gdb/testsuite/boards/remote-gdbserver-on-localhost.exp b/gdb/testsuite/boards/remote-gdbserver-on-localhost.exp
index a38edacf130..6e3cbc290a5 100644
--- a/gdb/testsuite/boards/remote-gdbserver-on-localhost.exp
+++ b/gdb/testsuite/boards/remote-gdbserver-on-localhost.exp
@@ -51,12 +51,16 @@  save_vars {rsh_cmd res} {
 	# Make things a bit more realistic by restricting file permissions.
 
 	# Make sure remote target can't see files on build.
-	remote_exec build "chmod go-rx $objdir"
+	set res [remote_exec build "chmod go-rx $objdir"]
+	if { [lindex $res 0] != 0 } {
+	    error "Couldn't remove permissions for $objdir on build"
+	}
 
-	# Make sure build can't see files on remote target.  We can't use
-	# remote_exec target, because we're in the middle of parsing the
-	# target board.
-	remote_exec build $rsh_cmd "chmod go-rx ."
+	# Make sure build can't see files on remote target.
+	set res [remote_exec build $rsh_cmd "chmod go-rx ."]
+	if { [lindex $res 0] != 0 } {
+	    error "Couldn't remove permissions for . on target"
+	}
     }
 
     # Set remotedir by default, to force remote_download target to give an