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 b9641a09860264c9604c0deed72b092eb7ccdf43..129b23ec53f645d501fb0b562b09d4c8a7eb3626 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 12460df1fa20478598ab4a0fb01c18b0ac286356..41d41f730c1da62991fb6b9e7940236d839c7aec 100644 (file)
@@ -1,3 +1,8 @@
+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
index e40428f8ecc2659473bba96cd9457d443978c9aa..c3a7ec3d0d52127fe52d5900724bfc56c60c9a7d 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 8b70bd3eaf333057161554d9199c08591a519a4c..ce61fb7b2f6345335992de680c7034322a55700f 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);