/* Tracing functionality for remote targets in custom GDB protocol
- Copyright (C) 1997-2016 Free Software Foundation, Inc.
+ Copyright (C) 1997-2017 Free Software Foundation, Inc.
This file is part of GDB.
char *trace_stop_notes = NULL;
/* ======= Important command functions: ======= */
-static void trace_actions_command (char *, int);
-static void trace_start_command (char *, int);
-static void trace_stop_command (char *, int);
-static void trace_status_command (char *, int);
-static void trace_find_command (char *, int);
-static void trace_find_pc_command (char *, int);
-static void trace_find_tracepoint_command (char *, int);
-static void trace_find_line_command (char *, int);
-static void trace_find_range_command (char *, int);
-static void trace_find_outside_command (char *, int);
-static void trace_dump_command (char *, int);
+static void actions_command (char *, int);
+static void tstart_command (char *, int);
+static void tstop_command (char *, int);
+static void tstatus_command (char *, int);
+static void tfind_command (char *, int);
+static void tfind_pc_command (char *, int);
+static void tfind_tracepoint_command (char *, int);
+static void tfind_line_command (char *, int);
+static void tfind_range_command (char *, int);
+static void tfind_outside_command (char *, int);
+static void tdump_command (char *, int);
/* support routines */
struct cleanup *back_to;
struct ui_out *uiout = current_uiout;
- if (VEC_length (tsv_s, tvariables) == 0 && !ui_out_is_mi_like_p (uiout))
+ if (VEC_length (tsv_s, tvariables) == 0 && !uiout->is_mi_like_p ())
{
printf_filtered (_("No trace state variables.\n"));
return;
back_to = make_cleanup_ui_out_table_begin_end (uiout, 3,
count, "trace-variables");
- ui_out_table_header (uiout, 15, ui_left, "name", "Name");
- ui_out_table_header (uiout, 11, ui_left, "initial", "Initial");
- ui_out_table_header (uiout, 11, ui_left, "current", "Current");
+ uiout->table_header (15, ui_left, "name", "Name");
+ uiout->table_header (11, ui_left, "initial", "Initial");
+ uiout->table_header (11, ui_left, "current", "Current");
- ui_out_table_body (uiout);
+ uiout->table_body ();
for (ix = 0; VEC_iterate (tsv_s, tvariables, ix, tsv); ++ix)
{
name = concat ("$", tsv->name, (char *) NULL);
make_cleanup (xfree, name);
- ui_out_field_string (uiout, "name", name);
- ui_out_field_string (uiout, "initial", plongest (tsv->initial_value));
+ uiout->field_string ("name", name);
+ uiout->field_string ("initial", plongest (tsv->initial_value));
if (tsv->value_known)
c = plongest (tsv->value);
- else if (ui_out_is_mi_like_p (uiout))
+ else if (uiout->is_mi_like_p ())
/* For MI, we prefer not to use magic string constants, but rather
omit the field completely. The difference between unknown and
undefined does not seem important enough to represent. */
/* It is not meaningful to ask about the value. */
c = "<undefined>";
if (c)
- ui_out_field_string (uiout, "current", c);
- ui_out_text (uiout, "\n");
+ uiout->field_string ("current", c);
+ uiout->text ("\n");
do_cleanups (back_to2);
}
/* Enter a list of actions for a tracepoint. */
static void
-trace_actions_command (char *args, int from_tty)
+actions_command (char *args, int from_tty)
{
struct tracepoint *t;
struct command_line *l;
/* Add a memrange to a collection list. */
void
-collection_list::add_memrange (int type, bfd_signed_vma base,
+collection_list::add_memrange (struct gdbarch *gdbarch,
+ int type, bfd_signed_vma base,
unsigned long len)
{
if (info_verbose)
- {
- printf_filtered ("(%d,", type);
- printf_vma (base);
- printf_filtered (",%ld)\n", len);
- }
+ printf_filtered ("(%d,%s,%ld)\n", type, paddress (gdbarch, base), len);
/* type: memrange_absolute == memory, other n == basereg */
/* base: addr if memory, offset if reg relative. */
/* len: we actually save end (base + len) for convenience */
- m_memranges.push_back (memrange (type, base, base + len));
+ m_memranges.emplace_back (type, base, base + len);
if (type != memrange_absolute) /* Better collect the base register! */
add_register (type);
offset = SYMBOL_VALUE_ADDRESS (sym);
if (info_verbose)
{
- char tmp[40];
-
- sprintf_vma (tmp, offset);
printf_filtered ("LOC_STATIC %s: collect %ld bytes at %s.\n",
SYMBOL_PRINT_NAME (sym), len,
- tmp /* address */);
+ paddress (gdbarch, offset));
}
/* A struct may be a C++ class with static fields, go to general
expression handling. */
if (TYPE_CODE (SYMBOL_TYPE (sym)) == TYPE_CODE_STRUCT)
treat_as_expr = 1;
else
- add_memrange (memrange_absolute, offset, len);
+ add_memrange (gdbarch, memrange_absolute, offset, len);
break;
case LOC_REGISTER:
reg = SYMBOL_REGISTER_OPS (sym)->register_number (sym, gdbarch);
offset = frame_offset + SYMBOL_VALUE (sym);
if (info_verbose)
{
- printf_filtered ("LOC_LOCAL %s: Collect %ld bytes at offset ",
- SYMBOL_PRINT_NAME (sym), len);
- printf_vma (offset);
- printf_filtered (" from frame ptr reg %d\n", reg);
+ printf_filtered ("LOC_LOCAL %s: Collect %ld bytes at offset %s"
+ " from frame ptr reg %d\n",
+ SYMBOL_PRINT_NAME (sym), len,
+ paddress (gdbarch, offset), reg);
}
- add_memrange (reg, offset, len);
+ add_memrange (gdbarch, reg, offset, len);
break;
case LOC_REGPARM_ADDR:
reg = SYMBOL_VALUE (sym);
offset = 0;
if (info_verbose)
{
- printf_filtered ("LOC_REGPARM_ADDR %s: Collect %ld bytes at offset ",
- SYMBOL_PRINT_NAME (sym), len);
- printf_vma (offset);
- printf_filtered (" from reg %d\n", reg);
+ printf_filtered ("LOC_REGPARM_ADDR %s: Collect %ld bytes at offset %s"
+ " from reg %d\n",
+ SYMBOL_PRINT_NAME (sym), len,
+ paddress (gdbarch, offset), reg);
}
- add_memrange (reg, offset, len);
+ add_memrange (gdbarch, reg, offset, len);
break;
case LOC_LOCAL:
reg = frame_regno;
offset = frame_offset + SYMBOL_VALUE (sym);
if (info_verbose)
{
- printf_filtered ("LOC_LOCAL %s: Collect %ld bytes at offset ",
- SYMBOL_PRINT_NAME (sym), len);
- printf_vma (offset);
- printf_filtered (" from frame ptr reg %d\n", reg);
+ printf_filtered ("LOC_LOCAL %s: Collect %ld bytes at offset %s"
+ " from frame ptr reg %d\n",
+ SYMBOL_PRINT_NAME (sym), len,
+ paddress (gdbarch, offset), reg);
}
- add_memrange (reg, offset, len);
+ add_memrange (gdbarch, reg, offset, len);
break;
case LOC_UNRESOLVED:
}
}
- add_aexpr (gdb::move (aexpr));
+ add_aexpr (std::move (aexpr));
}
}
m_aexprs.reserve (128);
}
-collection_list::~collection_list ()
-{
- for (int ndx = 0; ndx < m_aexprs.size (); ndx++)
- delete m_aexprs[ndx];
-}
-
/* Reduce a collection list to string form (for gdb protocol). */
char **
collection_list::stringify ()
{
char temp_buf[2048];
- char tmp2[40];
int count;
int ndx = 0;
char *(*str_list)[];
for (i = 0, count = 0, end = temp_buf; i < m_memranges.size (); i++)
{
QUIT; /* Allow user to bail out with ^C. */
- sprintf_vma (tmp2, m_memranges[i].start);
if (info_verbose)
{
printf_filtered ("(%d, %s, %ld)\n",
m_memranges[i].type,
- tmp2,
+ paddress (target_gdbarch (),
+ m_memranges[i].start),
(long) (m_memranges[i].end
- m_memranges[i].start));
}
"FFFFFFFF" (or more, depending on sizeof (unsigned)).
Special-case it. */
if (m_memranges[i].type == memrange_absolute)
- sprintf (end, "M-1,%s,%lX", tmp2, (long) length);
+ sprintf (end, "M-1,%s,%lX", phex_nz (m_memranges[i].start, 0),
+ (long) length);
else
- sprintf (end, "M%X,%s,%lX", m_memranges[i].type, tmp2, (long) length);
+ sprintf (end, "M%X,%s,%lX", m_memranges[i].type,
+ phex_nz (m_memranges[i].start, 0), (long) length);
}
count += strlen (end);
void
collection_list::append_exp (struct expression *exp)
{
- struct ui_file *tmp_stream = mem_fileopen ();
+ string_file tmp_stream;
- print_expression (exp, tmp_stream);
+ print_expression (exp, &tmp_stream);
- m_computed.push_back (ui_file_as_string (tmp_stream));
- ui_file_delete (tmp_stream);
+ m_computed.push_back (std::move (tmp_stream.string ()));
}
void
}
}
- collect->add_aexpr (gdb::move (aexpr));
+ collect->add_aexpr (std::move (aexpr));
action_exp = strchr (action_exp, ','); /* more? */
}
else if (0 == strncasecmp ("$_sdata", action_exp, 7))
addr = value_address (tempval);
/* Initialize the TYPE_LENGTH if it is a typedef. */
check_typedef (exp->elts[1].type);
- collect->add_memrange (memrange_absolute, addr,
+ collect->add_memrange (target_gdbarch (),
+ memrange_absolute, addr,
TYPE_LENGTH (exp->elts[1].type));
collect->append_exp (exp.get ());
break;
}
}
- collect->add_aexpr (gdb::move (aexpr));
+ collect->add_aexpr (std::move (aexpr));
collect->append_exp (exp.get ());
break;
} /* switch */
/* Even though we're not officially collecting, add
to the collect list anyway. */
- collect->add_aexpr (gdb::move (aexpr));
+ collect->add_aexpr (std::move (aexpr));
} /* do */
}
while (action_exp && *action_exp++ == ',');
void
collection_list::add_aexpr (agent_expr_up aexpr)
{
- m_aexprs.push_back (aexpr.release ());
+ m_aexprs.push_back (std::move (aexpr));
}
static void
anybody else messing with the target. */
static void
-trace_start_command (char *args, int from_tty)
+tstart_command (char *args, int from_tty)
{
dont_repeat (); /* Like "run", dangerous to repeat accidentally. */
of the trace run's status. */
static void
-trace_stop_command (char *args, int from_tty)
+tstop_command (char *args, int from_tty)
{
if (!current_trace_status ()->running)
error (_("Trace is not running."));
/* tstatus command */
static void
-trace_status_command (char *args, int from_tty)
+tstatus_command (char *args, int from_tty)
{
struct trace_status *ts = current_trace_status ();
int status, ix;
case trace_never_run:
printf_filtered (_("No trace has been run on the target.\n"));
break;
- case tstop_command:
+ case trace_stop_command:
if (ts->stop_desc)
printf_filtered (_("Trace stopped by a tstop command (%s).\n"),
ts->stop_desc);
if (status == -1 && ts->filename == NULL)
{
- ui_out_field_string (uiout, "supported", "0");
+ uiout->field_string ("supported", "0");
return;
}
if (ts->filename != NULL)
- ui_out_field_string (uiout, "supported", "file");
+ uiout->field_string ("supported", "file");
else if (!on_stop)
- ui_out_field_string (uiout, "supported", "1");
+ uiout->field_string ("supported", "1");
if (ts->filename != NULL)
- ui_out_field_string (uiout, "trace-file", ts->filename);
+ uiout->field_string ("trace-file", ts->filename);
gdb_assert (ts->running_known);
if (ts->running)
{
- ui_out_field_string (uiout, "running", "1");
+ uiout->field_string ("running", "1");
/* Unlike CLI, do not show the state of 'disconnected-tracing' variable.
Given that the frontend gets the status either on -trace-stop, or from
int stopping_tracepoint = -1;
if (!on_stop)
- ui_out_field_string (uiout, "running", "0");
+ uiout->field_string ("running", "0");
if (ts->stop_reason != trace_stop_reason_unknown)
{
switch (ts->stop_reason)
{
- case tstop_command:
+ case trace_stop_command:
stop_reason = "request";
break;
case trace_buffer_full:
if (stop_reason)
{
- ui_out_field_string (uiout, "stop-reason", stop_reason);
+ uiout->field_string ("stop-reason", stop_reason);
if (stopping_tracepoint != -1)
- ui_out_field_int (uiout, "stopping-tracepoint",
+ uiout->field_int ("stopping-tracepoint",
stopping_tracepoint);
if (ts->stop_reason == tracepoint_error)
- ui_out_field_string (uiout, "error-description",
+ uiout->field_string ("error-description",
ts->stop_desc);
}
}
}
if (ts->traceframe_count != -1)
- ui_out_field_int (uiout, "frames", ts->traceframe_count);
+ uiout->field_int ("frames", ts->traceframe_count);
if (ts->traceframes_created != -1)
- ui_out_field_int (uiout, "frames-created", ts->traceframes_created);
+ uiout->field_int ("frames-created", ts->traceframes_created);
if (ts->buffer_size != -1)
- ui_out_field_int (uiout, "buffer-size", ts->buffer_size);
+ uiout->field_int ("buffer-size", ts->buffer_size);
if (ts->buffer_free != -1)
- ui_out_field_int (uiout, "buffer-free", ts->buffer_free);
+ uiout->field_int ("buffer-free", ts->buffer_free);
- ui_out_field_int (uiout, "disconnected", ts->disconnected_tracing);
- ui_out_field_int (uiout, "circular", ts->circular_buffer);
+ uiout->field_int ("disconnected", ts->disconnected_tracing);
+ uiout->field_int ("circular", ts->circular_buffer);
- ui_out_field_string (uiout, "user-name", ts->user_name);
- ui_out_field_string (uiout, "notes", ts->notes);
+ uiout->field_string ("user-name", ts->user_name);
+ uiout->field_string ("notes", ts->notes);
{
char buf[100];
xsnprintf (buf, sizeof buf, "%ld.%06ld",
(long int) (ts->start_time / 1000000),
(long int) (ts->start_time % 1000000));
- ui_out_field_string (uiout, "start-time", buf);
+ uiout->field_string ("start-time", buf);
xsnprintf (buf, sizeof buf, "%ld.%06ld",
(long int) (ts->stop_time / 1000000),
(long int) (ts->stop_time % 1000000));
- ui_out_field_string (uiout, "stop-time", buf);
+ uiout->field_string ("stop-time", buf);
}
}
#if 0 /* dubious now? */
/* The following will not recurse, since it's
special-cased. */
- trace_find_command ("-1", from_tty);
+ tfind_command ("-1", from_tty);
#endif
}
}
{
/* Use different branches for MI and CLI to make CLI messages
i18n-eable. */
- if (ui_out_is_mi_like_p (uiout))
+ if (uiout->is_mi_like_p ())
{
- ui_out_field_string (uiout, "found", "1");
- ui_out_field_int (uiout, "tracepoint", tracepoint_number);
- ui_out_field_int (uiout, "traceframe", traceframe_number);
+ uiout->field_string ("found", "1");
+ uiout->field_int ("tracepoint", tracepoint_number);
+ uiout->field_int ("traceframe", traceframe_number);
}
else
{
}
else
{
- if (ui_out_is_mi_like_p (uiout))
- ui_out_field_string (uiout, "found", "0");
+ if (uiout->is_mi_like_p ())
+ uiout->field_string ("found", "0");
else if (type == tfind_number && num == -1)
printf_unfiltered (_("No longer looking at any trace frame\n"));
else /* This case may never occur, check. */
/* tfind command */
static void
-trace_find_command (char *args, int from_tty)
+tfind_command (char *args, int from_tty)
{ /* This should only be called with a numeric argument. */
int frameno = -1;
/* tfind end */
static void
-trace_find_end_command (char *args, int from_tty)
+tfind_end_command (char *args, int from_tty)
{
- trace_find_command ("-1", from_tty);
+ tfind_command ("-1", from_tty);
}
/* tfind start */
static void
-trace_find_start_command (char *args, int from_tty)
+tfind_start_command (char *args, int from_tty)
{
- trace_find_command ("0", from_tty);
+ tfind_command ("0", from_tty);
}
/* tfind pc command */
static void
-trace_find_pc_command (char *args, int from_tty)
+tfind_pc_command (char *args, int from_tty)
{
CORE_ADDR pc;
/* tfind tracepoint command */
static void
-trace_find_tracepoint_command (char *args, int from_tty)
+tfind_tracepoint_command (char *args, int from_tty)
{
int tdp;
struct tracepoint *tp;
corresponding to a source line OTHER THAN THE CURRENT ONE. */
static void
-trace_find_line_command (char *args, int from_tty)
+tfind_line_command (char *args, int from_tty)
{
static CORE_ADDR start_pc, end_pc;
struct symtabs_and_lines sals;
/* tfind range command */
static void
-trace_find_range_command (char *args, int from_tty)
+tfind_range_command (char *args, int from_tty)
{
static CORE_ADDR start, stop;
char *tmp;
/* tfind outside command */
static void
-trace_find_outside_command (char *args, int from_tty)
+tfind_outside_command (char *args, int from_tty)
{
CORE_ADDR start, stop;
char *tmp;
/* The tdump command. */
static void
-trace_dump_command (char *args, int from_tty)
+tdump_command (char *args, int from_tty)
{
int stepping_frame = 0;
struct bp_location *loc;
ts->stop_reason = tracepoint_passcount;
ts->stopping_tracepoint = val;
}
- else if (strncmp (p, stop_reason_names[tstop_command], p1 - p) == 0)
+ else if (strncmp (p, stop_reason_names[trace_stop_command], p1 - p) == 0)
{
p2 = strchr (++p1, ':');
if (!p2 || p2 > p3)
ts->stop_desc = xstrdup ("");
p = unpack_varlen_hex (++p2, &val);
- ts->stop_reason = tstop_command;
+ ts->stop_reason = trace_stop_command;
}
else if (strncmp (p, stop_reason_names[trace_disconnected], p1 - p) == 0)
{
/* A counter field to help readability. This is not a stable
identifier! */
- ui_out_field_int (uiout, "count", count);
+ uiout->field_int ("count", count);
- ui_out_field_string (uiout, "marker-id", marker->str_id);
+ uiout->field_string ("marker-id", marker->str_id);
- ui_out_field_fmt (uiout, "enabled", "%c",
+ uiout->field_fmt ("enabled", "%c",
!VEC_empty (breakpoint_p, tracepoints) ? 'y' : 'n');
- ui_out_spaces (uiout, 2);
+ uiout->spaces (2);
strcpy (wrap_indent, " ");
strcpy (extra_field_indent, " ");
- ui_out_field_core_addr (uiout, "addr", marker->gdbarch, marker->address);
+ uiout->field_core_addr ("addr", marker->gdbarch, marker->address);
sal = find_pc_line (marker->address, 0);
sym = find_pc_sect_function (marker->address, NULL);
if (sym)
{
- ui_out_text (uiout, "in ");
- ui_out_field_string (uiout, "func",
+ uiout->text ("in ");
+ uiout->field_string ("func",
SYMBOL_PRINT_NAME (sym));
- ui_out_wrap_hint (uiout, wrap_indent);
- ui_out_text (uiout, " at ");
+ uiout->wrap_hint (wrap_indent);
+ uiout->text (" at ");
}
else
- ui_out_field_skip (uiout, "func");
+ uiout->field_skip ("func");
if (sal.symtab != NULL)
{
- ui_out_field_string (uiout, "file",
+ uiout->field_string ("file",
symtab_to_filename_for_display (sal.symtab));
- ui_out_text (uiout, ":");
+ uiout->text (":");
- if (ui_out_is_mi_like_p (uiout))
+ if (uiout->is_mi_like_p ())
{
const char *fullname = symtab_to_fullname (sal.symtab);
- ui_out_field_string (uiout, "fullname", fullname);
+ uiout->field_string ("fullname", fullname);
}
else
- ui_out_field_skip (uiout, "fullname");
+ uiout->field_skip ("fullname");
- ui_out_field_int (uiout, "line", sal.line);
+ uiout->field_int ("line", sal.line);
}
else
{
- ui_out_field_skip (uiout, "fullname");
- ui_out_field_skip (uiout, "line");
+ uiout->field_skip ("fullname");
+ uiout->field_skip ("line");
}
- ui_out_text (uiout, "\n");
- ui_out_text (uiout, extra_field_indent);
- ui_out_text (uiout, _("Data: \""));
- ui_out_field_string (uiout, "extra-data", marker->extra);
- ui_out_text (uiout, "\"\n");
+ uiout->text ("\n");
+ uiout->text (extra_field_indent);
+ uiout->text (_("Data: \""));
+ uiout->field_string ("extra-data", marker->extra);
+ uiout->text ("\"\n");
if (!VEC_empty (breakpoint_p, tracepoints))
{
cleanup_chain = make_cleanup_ui_out_tuple_begin_end (uiout,
"tracepoints-at");
- ui_out_text (uiout, extra_field_indent);
- ui_out_text (uiout, _("Probed by static tracepoints: "));
+ uiout->text (extra_field_indent);
+ uiout->text (_("Probed by static tracepoints: "));
for (ix = 0; VEC_iterate(breakpoint_p, tracepoints, ix, b); ix++)
{
if (ix > 0)
- ui_out_text (uiout, ", ");
- ui_out_text (uiout, "#");
- ui_out_field_int (uiout, "tracepoint-id", b->number);
+ uiout->text (", ");
+ uiout->text ("#");
+ uiout->field_int ("tracepoint-id", b->number);
}
do_cleanups (cleanup_chain);
- if (ui_out_is_mi_like_p (uiout))
- ui_out_field_int (uiout, "number-of-tracepoints",
+ if (uiout->is_mi_like_p ())
+ uiout->field_int ("number-of-tracepoints",
VEC_length(breakpoint_p, tracepoints));
else
- ui_out_text (uiout, "\n");
+ uiout->text ("\n");
}
VEC_free (breakpoint_p, tracepoints);
= make_cleanup_ui_out_table_begin_end (uiout, 5, -1,
"StaticTracepointMarkersTable");
- ui_out_table_header (uiout, 7, ui_left, "counter", "Cnt");
+ uiout->table_header (7, ui_left, "counter", "Cnt");
- ui_out_table_header (uiout, 40, ui_left, "marker-id", "ID");
+ uiout->table_header (40, ui_left, "marker-id", "ID");
- ui_out_table_header (uiout, 3, ui_left, "enabled", "Enb");
+ uiout->table_header (3, ui_left, "enabled", "Enb");
if (gdbarch_addr_bit (target_gdbarch ()) <= 32)
- ui_out_table_header (uiout, 10, ui_left, "addr", "Address");
+ uiout->table_header (10, ui_left, "addr", "Address");
else
- ui_out_table_header (uiout, 18, ui_left, "addr", "Address");
- ui_out_table_header (uiout, 40, ui_noalign, "what", "What");
+ uiout->table_header (18, ui_left, "addr", "Address");
+ uiout->table_header (40, ui_noalign, "what", "What");
- ui_out_table_body (uiout);
+ uiout->table_body ();
markers = target_static_tracepoint_markers_by_strid (NULL);
make_cleanup (VEC_cleanup (static_tracepoint_marker_p), &markers);
_("Tracing of program execution without stopping the program."),
&cmdlist);
- add_com ("tdump", class_trace, trace_dump_command,
+ add_com ("tdump", class_trace, tdump_command,
_("Print everything collected at the current tracepoint."));
c = add_com ("tvariable", class_trace, trace_variable_command,_("\
List target static tracepoints markers.\n\
"));
- add_prefix_cmd ("tfind", class_trace, trace_find_command, _("\
+ add_prefix_cmd ("tfind", class_trace, tfind_command, _("\
Select a trace frame;\n\
No argument means forward by one frame; '-' means backward by one frame."),
&tfindlist, "tfind ", 1, &cmdlist);
- add_cmd ("outside", class_trace, trace_find_outside_command, _("\
+ add_cmd ("outside", class_trace, tfind_outside_command, _("\
Select a trace frame whose PC is outside the given range (exclusive).\n\
Usage: tfind outside addr1, addr2"),
&tfindlist);
- add_cmd ("range", class_trace, trace_find_range_command, _("\
+ add_cmd ("range", class_trace, tfind_range_command, _("\
Select a trace frame whose PC is in the given range (inclusive).\n\
Usage: tfind range addr1,addr2"),
&tfindlist);
- add_cmd ("line", class_trace, trace_find_line_command, _("\
+ add_cmd ("line", class_trace, tfind_line_command, _("\
Select a trace frame by source line.\n\
Argument can be a line number (with optional source file),\n\
a function name, or '*' followed by an address.\n\
Default argument is 'the next source line that was traced'."),
&tfindlist);
- add_cmd ("tracepoint", class_trace, trace_find_tracepoint_command, _("\
+ add_cmd ("tracepoint", class_trace, tfind_tracepoint_command, _("\
Select a trace frame by tracepoint number.\n\
Default is the tracepoint for the current trace frame."),
&tfindlist);
- add_cmd ("pc", class_trace, trace_find_pc_command, _("\
+ add_cmd ("pc", class_trace, tfind_pc_command, _("\
Select a trace frame by PC.\n\
Default is the current PC, or the PC of the current trace frame."),
&tfindlist);
- add_cmd ("end", class_trace, trace_find_end_command, _("\
+ add_cmd ("end", class_trace, tfind_end_command, _("\
De-select any trace frame and resume 'live' debugging."),
&tfindlist);
add_alias_cmd ("none", "end", class_trace, 0, &tfindlist);
- add_cmd ("start", class_trace, trace_find_start_command,
+ add_cmd ("start", class_trace, tfind_start_command,
_("Select the first trace frame in the trace buffer."),
&tfindlist);
- add_com ("tstatus", class_trace, trace_status_command,
+ add_com ("tstatus", class_trace, tstatus_command,
_("Display the status of the current trace data collection."));
- add_com ("tstop", class_trace, trace_stop_command, _("\
+ add_com ("tstop", class_trace, tstop_command, _("\
Stop trace data collection.\n\
Usage: tstop [ <notes> ... ]\n\
Any arguments supplied are recorded with the trace as a stop reason and\n\
reported by tstatus (if the target supports trace notes)."));
- add_com ("tstart", class_trace, trace_start_command, _("\
+ add_com ("tstart", class_trace, tstart_command, _("\
Start trace data collection.\n\
Usage: tstart [ <notes> ... ]\n\
Any arguments supplied are recorded with the trace as a note and\n\
The result of each evaluation will be discarded.\n\
Note: this command can only be used in a tracepoint \"actions\" list."));
- add_com ("actions", class_trace, trace_actions_command, _("\
+ add_com ("actions", class_trace, actions_command, _("\
Specify the actions to be taken at a tracepoint.\n\
Tracepoint actions may include collecting of specified data,\n\
single-stepping, or enabling/disabling other tracepoints,\n\