summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/testsuite/ChangeLog7
-rw-r--r--gdb/testsuite/gdb.base/reread.exp16
-rw-r--r--gdb/testsuite/lib/gdb.exp48
3 files changed, 63 insertions, 8 deletions
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index bf126dce8f8..109a544d22d 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -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.
diff --git a/gdb/testsuite/gdb.base/reread.exp b/gdb/testsuite/gdb.base/reread.exp
index 78d1126421d..291de546e81 100644
--- a/gdb/testsuite/gdb.base/reread.exp
+++ b/gdb/testsuite/gdb.base/reread.exp
@@ -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 $" {
diff --git a/gdb/testsuite/lib/gdb.exp b/gdb/testsuite/lib/gdb.exp
index 5979888fb0c..c50a73277b4 100644
--- a/gdb/testsuite/lib/gdb.exp
+++ b/gdb/testsuite/lib/gdb.exp
@@ -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.