aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/ChangeLog5
-rw-r--r--gdb/tracepoint.c27
2 files changed, 31 insertions, 1 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index 4b4b82e..f7ab074 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,8 @@
+2010-04-09 Stan Shebs <stan@codesourcery.com>
+
+ * tracepoint.c (trace_dump_command): Include default-collect
+ expressions.
+
2010-04-09 Ulrich Weigand <uweigand@de.ibm.com>
* symtab.c (find_function_start_sal): Never return SAL pointing
diff --git a/gdb/tracepoint.c b/gdb/tracepoint.c
index 570ea5d..f5fa8c8 100644
--- a/gdb/tracepoint.c
+++ b/gdb/tracepoint.c
@@ -2481,6 +2481,9 @@ trace_dump_command (char *args, int from_tty)
struct breakpoint *t;
int stepping_frame = 0;
struct bp_location *loc;
+ char *line, *default_collect_line = NULL;
+ struct command_line *actions, *default_collect_action = NULL;
+ struct cleanup *old_chain = NULL;
if (tracepoint_number == -1)
{
@@ -2512,7 +2515,29 @@ trace_dump_command (char *args, int from_tty)
if (loc->address == regcache_read_pc (regcache))
stepping_frame = 0;
- trace_dump_actions (breakpoint_commands (t), 0, stepping_frame, from_tty);
+ actions = breakpoint_commands (t);
+
+ /* If there is a default-collect list, make up a collect command,
+ prepend to the tracepoint's commands, and pass the whole mess to
+ the trace dump scanner. We need to validate because
+ default-collect might have been junked since the trace run. */
+ if (*default_collect)
+ {
+ default_collect_line = xstrprintf ("collect %s", default_collect);
+ old_chain = make_cleanup (xfree, default_collect_line);
+ line = default_collect_line;
+ validate_actionline (&line, t);
+ default_collect_action = xmalloc (sizeof (struct command_line));
+ make_cleanup (xfree, default_collect_action);
+ default_collect_action->next = actions;
+ default_collect_action->line = line;
+ actions = default_collect_action;
+ }
+
+ trace_dump_actions (actions, 0, stepping_frame, from_tty);
+
+ if (*default_collect)
+ do_cleanups (old_chain);
}
/* Encode a piece of a tracepoint's source-level definition in a form