gdb/testsuite/
authorYao Qi <yao@codesourcery.com>
Sat, 24 Aug 2013 01:54:59 +0000 (01:54 +0000)
committerYao Qi <yao@codesourcery.com>
Sat, 24 Aug 2013 01:54:59 +0000 (01:54 +0000)
* gdb.trace/entry-values.c (end): New
(main): Call end.
* gdb.trace/entry-values.exp: Load trace-support.exp.  Set
tracepoint and collect data.  Test entry value is unavailable.

gdb/testsuite/ChangeLog
gdb/testsuite/gdb.trace/entry-values.c
gdb/testsuite/gdb.trace/entry-values.exp

index 49d4b38f62223a5a92141e210c4938ac91725fc8..f1b114d707b234498e501a209b16b43cd3c4bb32 100644 (file)
@@ -1,3 +1,10 @@
+2013-08-24  Yao Qi  <yao@codesourcery.com>
+
+       * gdb.trace/entry-values.c (end): New
+       (main): Call end.
+       * gdb.trace/entry-values.exp: Load trace-support.exp.  Set
+       tracepoint and collect data.  Test entry value is unavailable.
+
 2013-08-24  Yao Qi  <yao@codesourcery.com>
 
        * lib/dwarf.exp (_location): Handle DW_OP_deref_size.
index 3f98615ba5691bc6b7c073d99fff53031219f8bf..e2872035b819ea3dbbed1d1980bf3fbf780fc4c7 100644 (file)
@@ -32,6 +32,10 @@ bar (int i)
 int global1 = 1;
 int global2 = 2;
 
+static void
+end (void)
+{}
+
 int
 main (void)
 {
@@ -41,5 +45,6 @@ main (void)
   global2++;
   ret = bar (0);
 
+  end ();
   return ret;
 }
index 0fb060a043f992e3af42e029a7a6a3f97ebb33f0..bb62e5dbef5f2d1da207c80be1c04494c767d8cb 100644 (file)
@@ -230,3 +230,50 @@ gdb_test_sequence "bt" "bt (2)" {
     "\[\r\n\]#1 .* bar \\(i=<optimized out>, i@entry=<optimized out>\\)"
     "\[\r\n\]#2 .* main \\(\\)"
 }
+
+# Restart GDB and trace.
+
+clean_restart $binfile
+
+load_lib "trace-support.exp"
+
+if ![runto_main] {
+    fail "Can't run to main to check for trace support"
+    return -1
+}
+
+if ![gdb_target_supports_trace] {
+    unsupported "target does not support trace"
+    return -1
+}
+
+gdb_test "trace foo" "Tracepoint $decimal at .*"
+
+if [is_amd64_regs_target] {
+    set spreg "\$rsp"
+} elseif [is_x86_like_target] {
+    set spreg "\$esp"
+} else {
+    set spreg "\$sp"
+}
+
+# Collect arguments i and j.  Collect 'global1' which is entry value
+# of argument i.  Don't collect 'global2' to test the entry value of
+# argument j.
+
+gdb_trace_setactions "set action for tracepoint 1" "" \
+    "collect i, j, global1, \(\*\(void \*\*\) \($spreg\)\) @ 64" "^$"
+
+gdb_test_no_output "tstart"
+
+gdb_breakpoint "end"
+gdb_continue_to_breakpoint "end"
+
+gdb_test_no_output "tstop"
+
+gdb_test "tfind" "Found trace frame 0, .*" "tfind start"
+
+# Since 'global2' is not collected, j@entry is expected to be 'unavailable'.
+gdb_test "bt 1" "#0 .* foo \\(i=\[-\]?$decimal, i@entry=2, j=\[-\]?$decimal, j@entry=<unavailable>\\).*"
+
+gdb_test "tfind" "Target failed to find requested trace frame\..*"