mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-12-05 00:04:22 +08:00
[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
This commit is contained in:
parent
454f8b67a8
commit
80d6c79866
@ -77,9 +77,7 @@ proc test_remote { remote host_is_target } {
|
||||
}
|
||||
|
||||
with_test_prefix copy-from-remote {
|
||||
# Note: we're using $remote_file here instead of $file, otherwise
|
||||
# this breaks with board_info remotedir.
|
||||
set build_file [remote_upload $remote $remote_file]
|
||||
set build_file [remote_upload $remote $file]
|
||||
gdb_assert { [string equal [file tail $build_file] $file] == 1 } \
|
||||
"remote_upload returns valid value"
|
||||
|
||||
|
@ -5917,6 +5917,21 @@ proc gdb_touch_execfile { binfile } {
|
||||
}
|
||||
}
|
||||
|
||||
# Override of dejagnu's remote_upload, which doesn't handle remotedir.
|
||||
|
||||
rename remote_upload dejagnu_remote_upload
|
||||
proc remote_upload { dest srcfile args } {
|
||||
if { [is_remote $dest] && [board_info $dest exists remotedir] } {
|
||||
set remotedir [board_info $dest remotedir]
|
||||
if { ![string match "$remotedir*" $srcfile] } {
|
||||
# Use hardcoded '/' as separator, as in dejagnu's remote_download.
|
||||
set srcfile $remotedir/$srcfile
|
||||
}
|
||||
}
|
||||
|
||||
return [dejagnu_remote_upload $dest $srcfile {*}$args]
|
||||
}
|
||||
|
||||
# Like remote_download but provides a gdb-specific behavior.
|
||||
#
|
||||
# If the destination board is remote, the local file FROMFILE is transferred as
|
||||
|
Loading…
Reference in New Issue
Block a user