[gdb/testsuite] Handle remotedir in remote_upload
authorTom de Vries <tdevries@suse.de>
Mon, 20 Mar 2023 16:06:49 +0000 (17:06 +0100)
committerTom de Vries <tdevries@suse.de>
Mon, 20 Mar 2023 16:06:49 +0000 (17:06 +0100)
commit80d6c79866f16cb2e184ea4952e2ca7f797dee44
treede8017639d3ae3426666392f08e8d899eea40fe2
parent454f8b67a85130b6d6f6a7c987d868183b411369
[gdb/testsuite] Handle remotedir in remote_upload

Dejagnu's remotedir implementation has support in remote_exec and
remote_download, but not remote_upload.

Consider the following scenario:
- downloading an executable to target,
- running it,
- uploading a file produced by the executable
while assuming remote target user remote-target with homedir
/home/remote-target and remotedir set to /home/remote-target/tmp.

Concretely, it looks like this:
...
 # binfile == "$outputs/gdb.abc/a.out"
 set target_binfile [remote_download target $binfile]
 # target_binfile == "/home/remote-target/tmp/a.out"
 remote_exec target $target_binfile
 # Running $target_binfile produced /home/remote-target/tmp/result.txt.
 set result [remote_upload target /home/remote-target/tmp/result.txt \
                 $outputs/gdb.abc/result.txt]
 # result == $outputs/gdb.abc/result.txt.
...

Add a remote_upload implementation that also handles remotedir in lib/gdb.exp,
overriding dejagnu's remote_upload, such that we can simplify the
remote_upload call to:
...
 set result [remote_upload target result.txt $outputs/gdb.abc/result.txt]
...

Tested on x86_64-linux.

PR testsuite/30250
Bug: https://sourceware.org/bugzilla/show_bug.cgi?id=30250
gdb/testsuite/gdb.testsuite/board-sanity.exp
gdb/testsuite/lib/gdb.exp