[gdb/testsuite] Check remote_exec results in board files
authorTom de Vries <tdevries@suse.de>
Tue, 21 Mar 2023 12:52:57 +0000 (13:52 +0100)
committerTom de Vries <tdevries@suse.de>
Tue, 21 Mar 2023 12:52:57 +0000 (13:52 +0100)
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
gdb/testsuite/boards/remote-gdbserver-on-localhost.exp

index 021b2203d33a42a12e962aad98a8d3155dbea105..e8ac676f7885441a9f9531db457372d099f533e8 100644 (file)
@@ -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 } {
index a38edacf13063651d211de99cffbc0981fa29dcb..6e3cbc290a5f4d2b6d00082922e4df9dfb16ab32 100644 (file)
@@ -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