aboutsummaryrefslogtreecommitdiff
path: root/gdb
diff options
context:
space:
mode:
Diffstat (limited to 'gdb')
-rw-r--r--gdb/testsuite/ChangeLog8
-rw-r--r--gdb/testsuite/gdb.trace/mi-traceframe-changed.exp20
-rw-r--r--gdb/testsuite/gdb.trace/tfile.exp10
-rw-r--r--gdb/testsuite/lib/trace-support.exp27
4 files changed, 51 insertions, 14 deletions
diff --git a/gdb/testsuite/ChangeLog b/gdb/testsuite/ChangeLog
index 08a3a61..865fd0c 100644
--- a/gdb/testsuite/ChangeLog
+++ b/gdb/testsuite/ChangeLog
@@ -1,3 +1,11 @@
+2014-04-22 Yao Qi <yao@codesourcery.com>
+
+ * lib/trace-support.exp (generate_tracefile): New procedure.
+ * gdb.trace/tfile.exp: Skip the test if generate_tracefile
+ return 0.
+ * gdb.trace/mi-traceframe-changed.exp: Invoke test_tfind_tfile
+ if generate_tracefile returns 1.
+
2014-04-18 Tom Tromey <palves@redhat.com>
Pedro alves <tromey@redhat.com>
diff --git a/gdb/testsuite/gdb.trace/mi-traceframe-changed.exp b/gdb/testsuite/gdb.trace/mi-traceframe-changed.exp
index 4bcf379..a4c06b0 100644
--- a/gdb/testsuite/gdb.trace/mi-traceframe-changed.exp
+++ b/gdb/testsuite/gdb.trace/mi-traceframe-changed.exp
@@ -43,14 +43,6 @@ if { [gdb_compile "${srcdir}/${subdir}/${srcfile}" "${binfile}" \
remote_file host delete $tfile_basic
remote_file target delete $tfile_basic
-remote_exec target "$binfile"
-
-if {!$purely_local} {
- # Copy tracefile from target to host.
- remote_download host [remote_upload target tfile-basic.tf] \
- tfile-basic.tf
-}
-
proc test_tfind_tfile { } {
with_test_prefix "tfile" {
global binfile
@@ -88,7 +80,17 @@ proc test_tfind_tfile { } {
}
}
-test_tfind_tfile
+# If tracefile is generated successfully, copy tracefile to host and
+# run tests.
+if [generate_tracefile $binfile] {
+ if {!$purely_local} {
+ # Copy tracefile from target to host.
+ remote_download host [remote_upload target tfile-basic.tf] \
+ tfile-basic.tf
+ }
+
+ test_tfind_tfile
+}
# Change to a different test case in order to run it on target, and get
# several traceframes.
diff --git a/gdb/testsuite/gdb.trace/tfile.exp b/gdb/testsuite/gdb.trace/tfile.exp
index c98e64c..d6a60e5 100644
--- a/gdb/testsuite/gdb.trace/tfile.exp
+++ b/gdb/testsuite/gdb.trace/tfile.exp
@@ -34,8 +34,6 @@ if {![is_remote host] && ![is_remote target]} {
set purely_local 0
}
-gdb_exit
-gdb_start
standard_testfile
if { [gdb_compile "$srcdir/$subdir/$srcfile" $binfile \
executable \
@@ -45,7 +43,6 @@ if { [gdb_compile "$srcdir/$subdir/$srcfile" $binfile \
untested ${testfile}.exp
return -1
}
-gdb_reinitialize_dir $srcdir/$subdir
# Make sure we are starting fresh.
remote_file host delete $tfile_basic
@@ -53,14 +50,17 @@ remote_file host delete $tfile_error
remote_file target delete $tfile_basic
remote_file target delete $tfile_error
-remote_exec target "$binfile"
+if { ![generate_tracefile $binfile] } {
+ unsupported "Unable to generate trace file"
+}
+
if {!$purely_local} {
# Copy tracefile from target to host through build.
remote_download host [remote_upload target tfile-basic.tf] tfile-basic.tf
remote_download host [remote_upload target tfile-error.tf] tfile-error.tf
}
-gdb_load $binfile
+clean_restart $binfile
# Program has presumably exited, now target a trace file it created.
diff --git a/gdb/testsuite/lib/trace-support.exp b/gdb/testsuite/lib/trace-support.exp
index 34c01cb..a076bac 100644
--- a/gdb/testsuite/lib/trace-support.exp
+++ b/gdb/testsuite/lib/trace-support.exp
@@ -327,3 +327,30 @@ proc get_in_proc_agent {} {
return $objdir/../gdbserver/libinproctrace.so
}
}
+
+# Execute BINFILE on target to generate tracefile. Return 1 if
+# tracefile is generated successfully, return 0 otherwise.
+
+proc generate_tracefile { binfile } {
+ set status [remote_exec target "$binfile"]
+
+ if { [lindex $status 0] != 0 } {
+ # Failed to execute $binfile, for example on bare metal targets.
+ # Alternatively, load the binary and run it. If target doesn't
+ # have fileio capabilities, tracefile can't be generated. Skip
+ # the test.
+ if [target_info exists gdb,nofileio] {
+ return 0
+ }
+
+ clean_restart $binfile
+
+ if ![runto_main] then {
+ return 0
+ }
+ gdb_continue_to_end "" continue 1
+ gdb_exit
+ }
+
+ return 1
+}