* lib/gdb.exp (exec_target_file, exec_symbol_file,
gdb_rename_execfile, gdb_touch_execfile): New. * gdb.base/reread.exp: Use new procs to handle multiple exec files.
This commit is contained in:
parent
4c67c79814
commit
56744f0ad5
|
@ -1,3 +1,10 @@
|
|||
20110-5-05 Janis Johnson <janisjo@codesourcery.com>
|
||||
|
||||
* lib/gdb.exp (exec_target_file, exec_symbol_file,
|
||||
gdb_rename_execfile, gdb_touch_execfile): New.
|
||||
* gdb.base/reread.exp: Use new procs to handle multiple
|
||||
exec files.
|
||||
|
||||
2011-05-05 Yao Qi <yao@codesourcery.com>
|
||||
|
||||
* gdb.arch/arm-disp-step.S(test_ldr_literal): New.
|
||||
|
|
|
@ -53,7 +53,7 @@ gdb_reinitialize_dir $srcdir/$subdir
|
|||
|
||||
# Load the first executable.
|
||||
|
||||
gdb_test "shell mv ${binfile1} ${binfile}" ".*" ""
|
||||
gdb_rename_execfile ${binfile1} ${binfile}
|
||||
gdb_load ${binfile}
|
||||
|
||||
# Set a breakpoint at foo
|
||||
|
@ -82,10 +82,10 @@ gdb_expect {
|
|||
# second executable into its place. Ensure that the new
|
||||
# executable is at least a second newer than the old.
|
||||
|
||||
gdb_test "shell mv ${binfile} ${binfile1}" ".*" ""
|
||||
gdb_test "shell mv ${binfile2} ${binfile}" ".*" ""
|
||||
gdb_rename_execfile ${binfile} ${binfile1}
|
||||
gdb_rename_execfile ${binfile2} ${binfile}
|
||||
gdb_test "shell sleep 1" ".*" ""
|
||||
gdb_test "shell touch ${binfile}" ".*" ""
|
||||
gdb_touch_execfile ${binfile}
|
||||
|
||||
# Run a second time; GDB should detect that the executable has changed
|
||||
# and reset the breakpoints correctly.
|
||||
|
@ -120,8 +120,8 @@ if [is_remote target] {
|
|||
} else {
|
||||
|
||||
# Put the older executable back in place.
|
||||
gdb_test "shell mv ${binfile} ${binfile2}" ".*" ""
|
||||
gdb_test "shell mv ${binfile1} ${binfile}" ".*" ""
|
||||
gdb_rename_execfile ${binfile} ${binfile2}
|
||||
gdb_rename_execfile ${binfile1} ${binfile}
|
||||
|
||||
# Restart GDB entirely.
|
||||
gdb_start
|
||||
|
@ -154,8 +154,8 @@ if [is_remote target] {
|
|||
# Now move the newer executable into place, and re-run. GDB
|
||||
# should still notice that the executable file has changed,
|
||||
# and still re-set the breakpoint appropriately.
|
||||
gdb_test "shell mv ${binfile} ${binfile1}" ".*" ""
|
||||
gdb_test "shell mv ${binfile2} ${binfile}" ".*" ""
|
||||
gdb_rename_execfile ${binfile} ${binfile1}
|
||||
gdb_rename_execfile ${binfile2} ${binfile}
|
||||
gdb_run_cmd
|
||||
gdb_expect {
|
||||
-re ".*Breakpoint.* foo .* at .*:9.*$gdb_prompt $" {
|
||||
|
|
|
@ -2653,6 +2653,54 @@ proc shlib_symbol_file { libname } {
|
|||
return $libname
|
||||
}
|
||||
|
||||
# Return the filename to download to the target and load for this
|
||||
# executable. Normally just BINFILE unless it is renamed to something
|
||||
# else for this target.
|
||||
|
||||
proc exec_target_file { binfile } {
|
||||
return $binfile
|
||||
}
|
||||
|
||||
# Return the filename GDB will load symbols from when debugging this
|
||||
# executable. Normally just BINFILE unless executables for this target
|
||||
# have separate files for symbols.
|
||||
|
||||
proc exec_symbol_file { binfile } {
|
||||
return $binfile
|
||||
}
|
||||
|
||||
# Rename the executable file. Normally this is just BINFILE1 being renamed
|
||||
# to BINFILE2, but some targets require multiple binary files.
|
||||
proc gdb_rename_execfile { binfile1 binfile2 } {
|
||||
catch { file rename -force \
|
||||
[exec_target_file ${binfile1}] \
|
||||
[exec_target_file ${binfile2}] }
|
||||
if { [exec_target_file ${binfile1}] != [exec_symbol_file ${binfile1}] } {
|
||||
catch { file rename -force \
|
||||
[exec_symbol_file ${binfile1}] \
|
||||
[exec_symbol_file ${binfile2}] }
|
||||
}
|
||||
}
|
||||
|
||||
# "Touch" the executable file to update the date. Normally this is just
|
||||
# BINFILE, but some targets require multiple files.
|
||||
proc gdb_touch_execfile { binfile } {
|
||||
catch { file copy -force \
|
||||
[exec_target_file ${binfile}] \
|
||||
[exec_target_file ${binfile}.tmp] }
|
||||
catch { file rename -force \
|
||||
[exec_target_file ${binfile}.tmp] \
|
||||
[exec_target_file ${binfile}] }
|
||||
if { [exec_target_file ${binfile}] != [exec_symbol_file ${binfile}] } {
|
||||
catch { file copy -force \
|
||||
[exec_symbol_file ${binfile}] \
|
||||
[exec_symbol_file ${binfile}.tmp] }
|
||||
catch { file rename -force \
|
||||
[exec_symbol_file ${binfile}.tmp] \
|
||||
[exec_symbol_file ${binfile}] }
|
||||
}
|
||||
}
|
||||
|
||||
# gdb_download
|
||||
#
|
||||
# Copy a file to the remote target and return its target filename.
|
||||
|
|
Loading…
Reference in New Issue