Improve gdb_remote_download, remove gdb_download
This patch removes gdb_download in favor of gdb_remote_download, since they are very close in functionality. Also, in preparation for the following patch about shared library handling during tests, it improves gdb_remote_download so that it uses standard_output_file for any destination board that is local, not only host. If the destination board is remote, gdb_remote_download will use the standard remote_download from DejaGnu, resulting in the file being transferred on the remote system. If the destination is local, gdb_remote_download will copy the file to the standard test directory (found using standard_output_file). Tcl's file copy seems to handle gracefully cases where the source file is the same as the destination, so I don't think it's necessary to check for that case ourselves, as a previous version of the patch did. I'd prefer to keep the name gdb_download instead of gdb_remote_download, since I don't like the fact that gdb_remote_download implies that the destination is remote, when it's not always the case. However, gdb_remote_download is used at many more places than gdb_download, so it's easier to reuse that. Also, since it's a wrapper around DejaGnu's remote_download, it might be better to keep that name. I don't know. I ran the testsuite native, with native-gdbserver and with a remote gdbserver, and didn't see any related failure. gdb/testsuite/ChangeLog: * gdb.base/jit-so.exp: Use gdb_remote_download instead of gdb_download. Use it even if the target is not remote. * gdb.base/jit.exp (compile_jit_test): Likewise. * lib/gdb.exp (gdb_remote_download): Copy files to the standard output directory if the destination board is local, otherwise use the standard remote_download from DejaGnu. (gdb_download): Remove. (gdb_load_shlibs): Use gdb_remote_download instead of gdb_download. * lib/gdbserver-support.exp (gdbserver_download_current_prog): Use gdb_remote_download instead of gdb_download. Use it even if the target is not remote. * lib/mi-support.exp (mi_load_shlibs): Use gdb_remote_download instead of gdb_download.
This commit is contained in:
parent
4dca19f828
commit
7817ea4614
@ -1,3 +1,20 @@
|
||||
2016-04-05 Simon Marchi <simon.marchi@ericsson.com>
|
||||
|
||||
* gdb.base/jit-so.exp: Use gdb_remote_download instead of
|
||||
gdb_download. Use it even if the target is not remote.
|
||||
* gdb.base/jit.exp (compile_jit_test): Likewise.
|
||||
* lib/gdb.exp (gdb_remote_download): Copy files to the standard
|
||||
output directory if the destination board is local, otherwise use
|
||||
the standard remote_download from DejaGnu.
|
||||
(gdb_download): Remove.
|
||||
(gdb_load_shlibs): Use gdb_remote_download instead of
|
||||
gdb_download.
|
||||
* lib/gdbserver-support.exp (gdbserver_download_current_prog):
|
||||
Use gdb_remote_download instead of gdb_download. Use it even if
|
||||
the target is not remote.
|
||||
* lib/mi-support.exp (mi_load_shlibs): Use gdb_remote_download
|
||||
instead of gdb_download.
|
||||
|
||||
2016-04-04 Simon Marchi <simon.marchi@polymtl.ca>
|
||||
|
||||
* gdb.mi/mi-breakpoint-changed.exp: Add some with_test_prefix.
|
||||
|
@ -61,11 +61,7 @@ if { [gdb_compile_shlib ${solib_srcfile} ${solib_binfile} {}] != "" } {
|
||||
return -1
|
||||
}
|
||||
|
||||
if {[is_remote target]} {
|
||||
set solib_binfile_target [gdb_download ${solib_binfile}]
|
||||
} else {
|
||||
set solib_binfile_target $solib_binfile
|
||||
}
|
||||
set solib_binfile_target [gdb_remote_download target ${solib_binfile}]
|
||||
|
||||
proc one_jit_test {count match_str} {
|
||||
with_test_prefix "one_jit_test-$count" {
|
||||
|
@ -57,11 +57,7 @@ proc compile_jit_test {testname binsuffix options} {
|
||||
return -1
|
||||
}
|
||||
|
||||
if {[is_remote target]} {
|
||||
set solib_binfile_target [gdb_download ${solib_binfile}]
|
||||
} else {
|
||||
set solib_binfile_target $solib_binfile
|
||||
}
|
||||
set solib_binfile_target [gdb_remote_download target ${solib_binfile}]
|
||||
|
||||
return 0
|
||||
}
|
||||
|
@ -4183,36 +4183,44 @@ proc gdb_touch_execfile { binfile } {
|
||||
}
|
||||
}
|
||||
|
||||
# Like remote_download but provides a gdb-specific behavior. If DEST
|
||||
# is "host", and the host is not remote, and TOFILE is not specified,
|
||||
# then the [file tail] of FROMFILE is passed through
|
||||
# standard_output_file to compute the destination.
|
||||
# Like remote_download but provides a gdb-specific behavior.
|
||||
#
|
||||
# If the destination board is remote, the local file FROMFILE is transferred as
|
||||
# usual with remote_download to TOFILE on the remote board. The destination
|
||||
# filename is added to the CLEANFILES global, so it can be cleaned up at the
|
||||
# end of the test.
|
||||
#
|
||||
# If the destination board is local, the destination path TOFILE is passed
|
||||
# through standard_output_file, and FROMFILE is copied there.
|
||||
#
|
||||
# In both cases, if TOFILE is omitted, it defaults to the [file tail] of
|
||||
# FROMFILE.
|
||||
|
||||
proc gdb_remote_download {dest fromfile {tofile {}}} {
|
||||
if {$dest == "host" && ![is_remote host] && $tofile == ""} {
|
||||
set tofile [standard_output_file [file tail $fromfile]]
|
||||
# If TOFILE is not given, default to the same filename as FROMFILE.
|
||||
if {[string length $tofile] == 0} {
|
||||
set tofile [file tail $fromfile]
|
||||
}
|
||||
|
||||
if { $tofile == "" } {
|
||||
return [remote_download $dest $fromfile]
|
||||
if {[is_remote $dest]} {
|
||||
# When the DEST is remote, we simply send the file to DEST.
|
||||
global cleanfiles
|
||||
|
||||
set destname [remote_download $dest $fromfile $tofile]
|
||||
lappend cleanfiles $destname
|
||||
|
||||
return $destname
|
||||
} else {
|
||||
return [remote_download $dest $fromfile $tofile]
|
||||
# When the DEST is local, we copy the file to the test directory
|
||||
# (where the executable is), except if that's already where it is.
|
||||
set tofile [standard_output_file $tofile]
|
||||
|
||||
file copy -force $fromfile $tofile
|
||||
|
||||
return $tofile
|
||||
}
|
||||
}
|
||||
|
||||
# gdb_download
|
||||
#
|
||||
# Copy a file to the remote target and return its target filename.
|
||||
# Schedule the file to be deleted at the end of this test.
|
||||
|
||||
proc gdb_download { filename } {
|
||||
global cleanfiles
|
||||
|
||||
set destname [remote_download target $filename]
|
||||
lappend cleanfiles $destname
|
||||
return $destname
|
||||
}
|
||||
|
||||
# gdb_load_shlibs LIB...
|
||||
#
|
||||
# Copy the listed libraries to the target.
|
||||
@ -4223,7 +4231,7 @@ proc gdb_load_shlibs { args } {
|
||||
}
|
||||
|
||||
foreach file $args {
|
||||
gdb_download [shlib_target_file $file]
|
||||
gdb_remote_download target [shlib_target_file $file]
|
||||
}
|
||||
|
||||
# Even if the target supplies full paths for shared libraries,
|
||||
|
@ -176,11 +176,7 @@ proc gdbserver_download_current_prog { } {
|
||||
if { $reuse == 0 } {
|
||||
set gdbserver_host_exec $host_exec
|
||||
set gdbserver_host_mtime [file mtime $host_exec]
|
||||
if [is_remote target] {
|
||||
set gdbserver_server_exec [gdb_download $host_exec]
|
||||
} else {
|
||||
set gdbserver_server_exec $host_exec
|
||||
}
|
||||
set gdbserver_server_exec [gdb_remote_download target $host_exec]
|
||||
}
|
||||
|
||||
return $gdbserver_server_exec
|
||||
|
@ -1960,7 +1960,7 @@ proc mi_load_shlibs { args } {
|
||||
}
|
||||
|
||||
foreach file $args {
|
||||
gdb_download [shlib_target_file $file]
|
||||
gdb_remote_download target [shlib_target_file $file]
|
||||
}
|
||||
|
||||
# Even if the target supplies full paths for shared libraries,
|
||||
|
Loading…
x
Reference in New Issue
Block a user