/* Tracing functionality for remote targets in custom GDB protocol
- Copyright 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
+
+ Copyright 1997, 1998, 1999, 2000, 2001, 2002 Free Software
+ Foundation, Inc.
This file is part of GDB.
if (*++buf == '0') /* general case: */
error ("tracepoint.c: error in outgoing packet.");
else
- error ("tracepoint.c: error in outgoing packet at field #%d.",
+ error ("tracepoint.c: error in outgoing packet at field #%ld.",
strtol (buf, NULL, 16));
case '2':
error ("trace API error 0x%s.", ++buf);
{
static struct type *func_string, *file_string;
static struct type *func_range, *file_range;
- static value_ptr func_val, file_val;
+ struct value *func_val;
+ struct value *file_val;
static struct type *charstar;
int len;
char *tmp;
if (TARGET_ADDR_BIT <= 32)
- tmp = longest_local_hex_string_custom (t->address
- & (CORE_ADDR) 0xffffffff,
- "08l");
+ tmp = local_hex_string_custom (t->address
+ & (CORE_ADDR) 0xffffffff,
+ "08l");
else
- tmp = longest_local_hex_string_custom (t->address, "016l");
+ tmp = local_hex_string_custom (t->address, "016l");
printf_filtered ("%s ", tmp);
}
line = (*readline_hook) (prompt);
else if (instream == stdin && ISATTY (instream))
{
- line = readline (prompt);
+ line = gdb_readline_wrapper (prompt);
if (line && *line) /* add it to command history */
add_history (line);
}
return BADLINE;
}
- if (c->function.cfunc == collect_pseudocommand)
+ if (cmd_cfunc_eq (c, collect_pseudocommand))
{
struct agent_expr *aexpr;
struct agent_reqs areqs;
while (p && *p++ == ',');
return GENERIC;
}
- else if (c->function.cfunc == while_stepping_pseudocommand)
+ else if (cmd_cfunc_eq (c, while_stepping_pseudocommand))
{
char *steparg; /* in case warning is necessary */
}
return STEPPING;
}
- else if (c->function.cfunc == end_actions_pseudocommand)
+ else if (cmd_cfunc_eq (c, end_actions_pseudocommand))
return END;
else
{
struct expression *exp = NULL;
struct action_line *action;
int i;
- value_ptr tempval;
+ struct value *tempval;
struct collection_list *collect;
struct cmd_list_element *cmd;
struct agent_expr *aexpr;
if (cmd == 0)
error ("Bad action list item: %s", action_exp);
- if (cmd->function.cfunc == collect_pseudocommand)
+ if (cmd_cfunc_eq (cmd, collect_pseudocommand))
{
do
{ /* repeat over a comma-separated list */
}
while (action_exp && *action_exp++ == ',');
} /* if */
- else if (cmd->function.cfunc == while_stepping_pseudocommand)
+ else if (cmd_cfunc_eq (cmd, while_stepping_pseudocommand))
{
collect = &stepping_list;
}
- else if (cmd->function.cfunc == end_actions_pseudocommand)
+ else if (cmd_cfunc_eq (cmd, end_actions_pseudocommand))
{
if (collect == &stepping_list) /* end stepping actions */
collect = &tracepoint_list;
flush_cached_frames ();
registers_changed ();
- select_frame (get_current_frame (), 0);
+ select_frame (get_current_frame ());
set_traceframe_num (target_frameno);
set_tracepoint_num (target_tracept);
if (target_frameno == -1)
else
source_only = 1;
- print_stack_frame (selected_frame, selected_frame_level, source_only);
+ print_stack_frame (selected_frame, frame_relative_level (selected_frame),
+ source_only);
do_displays ();
}
}
struct action_line *line;
FILE *fp;
char *i1 = " ", *i2 = " ";
- char *indent, *actionline;
+ char *indent, *actionline, *pathname;
char tmp[40];
if (args == 0 || *args == 0)
return;
}
- if (!(fp = fopen (args, "w")))
- error ("Unable to open file '%s' for saving tracepoints");
-
+ pathname = tilde_expand (args);
+ if (!(fp = fopen (pathname, "w")))
+ error ("Unable to open file '%s' for saving tracepoints (%s)",
+ args, safe_strerror (errno));
+ xfree (pathname);
+
ALL_TRACEPOINTS (tp)
{
if (tp->addr_string)
cmd = lookup_cmd (&actionline, cmdlist, "", -1, 1);
if (cmd == 0)
error ("Bad action list item: %s", actionline);
- if (cmd->function.cfunc == while_stepping_pseudocommand)
+ if (cmd_cfunc_eq (cmd, while_stepping_pseudocommand))
indent = i2;
- else if (cmd->function.cfunc == end_actions_pseudocommand)
+ else if (cmd_cfunc_eq (cmd, end_actions_pseudocommand))
indent = i1;
}
}
if (cmd == 0)
error ("Bad action list item: %s", action_exp);
- if (cmd->function.cfunc == while_stepping_pseudocommand)
+ if (cmd_cfunc_eq (cmd, while_stepping_pseudocommand))
stepping_actions = 1;
- else if (cmd->function.cfunc == end_actions_pseudocommand)
+ else if (cmd_cfunc_eq (cmd, end_actions_pseudocommand))
stepping_actions = 0;
- else if (cmd->function.cfunc == collect_pseudocommand)
+ else if (cmd_cfunc_eq (cmd, collect_pseudocommand))
{
/* Display the collected data.
For the trap frame, display only what was collected at the trap.
add_info ("scope", scope_info,
"List the variables local to a scope");
- add_cmd ("tracepoints", class_trace, NO_FUNCTION,
+ add_cmd ("tracepoints", class_trace, NULL,
"Tracing of program execution without stopping the program.",
&cmdlist);
c = add_com ("save-tracepoints", class_trace, tracepoint_save_command,
"Save current tracepoint definitions as a script.\n\
Use the 'source' command in another debug session to restore them.");
- c->completer = filename_completer;
+ set_cmd_completer (c, filename_completer);
add_com ("tdump", class_trace, trace_dump_command,
"Print everything collected at the current tracepoint.");
For a line number or function, trace at the start of its code.\n\
If an address is specified, trace at that exact address.\n\n\
Do \"help tracepoints\" for info on other tracepoint commands.");
- c->completer = location_completer;
+ set_cmd_completer (c, location_completer);
add_com_alias ("tp", "trace", class_alias, 0);
add_com_alias ("tr", "trace", class_alias, 1);