gdb/
authorYao Qi <yao@codesourcery.com>
Wed, 31 Jul 2013 00:44:42 +0000 (00:44 +0000)
committerYao Qi <yao@codesourcery.com>
Wed, 31 Jul 2013 00:44:42 +0000 (00:44 +0000)
* tracepoint.c (trace_dump_command): Select the current frame.

gdb/testsuite/

* gdb.trace/backtrace.exp (gdb_backtrace_tdp_4): Test command
'tdump' on stack frame 0 and 1 respectively.

gdb/ChangeLog
gdb/testsuite/ChangeLog
gdb/testsuite/gdb.trace/backtrace.exp
gdb/tracepoint.c

index b9641a0..129b23e 100644 (file)
@@ -1,3 +1,8 @@
+2013-07-31  Pedro Alves  <pedro@codesourcery.com>
+           Yao Qi  <yao@codesourcery.com>
+
+       * tracepoint.c (trace_dump_command): Select the current frame.
+
 2013-07-30  Doug Evans  <dje@google.com>
 
        * dwarf2read.c (process_queue): Add type signature to debug output.
index 12460df..41d41f7 100644 (file)
@@ -1,5 +1,10 @@
 2013-07-31  Yao Qi  <yao@codesourcery.com>
 
+       * gdb.trace/backtrace.exp (gdb_backtrace_tdp_4): Test command
+       'tdump' on stack frame 0 and 1 respectively.
+
+2013-07-31  Yao Qi  <yao@codesourcery.com>
+
        PR gdb/13443
        * gdb.trace/backtrace.exp (gdb_backtrace_tdp_3): Add parameter
        'traceframe'.  Wrap test with with_test_prefix.
index e40428f..c3a7ec3 100644 (file)
@@ -230,6 +230,37 @@ proc gdb_backtrace_tdp_4 { msg depth traceframe } {
                fail "$msg (fewer than $depth stack frames found)"
            }
        }
+
+       set output_string0 ""
+       # Match the output of command 'tdump' and save it in
+       # $output_string0.
+       set test "tdump on frame 0"
+       gdb_test_multiple "tdump" $test {
+           -re "tdump\[\r\n\]+(.*)\[\r\n\]+$gdb_prompt $" {
+               set output_string0 $expect_out(1,string)
+           }
+       }
+
+       gdb_test "up" ".*" ""
+
+       # Test that command 'tdump' still works properly when the
+       # selected frame is not the current frame, and save the output
+       # in $output_string1.
+       set test "tdump on frame 1"
+       set output_string1 ""
+       gdb_test_multiple "tdump" $test {
+           -re "tdump\[\r\n\]+(.*)\[\r\n\]+$gdb_prompt $" {
+               set output_string1 $expect_out(1,string)
+           }
+       }
+
+       # Output of 'tdump' on frame 0 and frame 1 should be
+       # identical.
+       if ![string compare $output_string0 $output_string1]  {
+           pass "tdump output"
+       } else {
+           fail "tdump output"
+       }
     }
 }
 
index 8b70bd3..ce61fb7 100644 (file)
@@ -3065,6 +3065,12 @@ trace_dump_command (char *args, int from_tty)
                   tracepoint_number, traceframe_number);
 
   old_chain = make_cleanup (null_cleanup, NULL);
+
+  /* This command only makes sense for the current frame, not the
+     selected frame.  */
+  make_cleanup_restore_current_thread ();
+  select_frame (get_current_frame ());
+
   actions = all_tracepoint_actions_and_cleanup (loc->owner);
 
   trace_dump_actions (actions, 0, stepping_frame, from_tty);