mirror of
https://sourceware.org/git/binutils-gdb.git
synced 2024-11-24 02:24:46 +08:00
2010-04-06 Stan Shebs <stan@codesourcery.com>
* defs.h (char_ptr): Move typedef here from... * ada-lang.c (char_ptr): Remove. * charset.c (char_ptr): Remove. * tracepoint.h (struct uploaded_string): Remove. (struct uploaded_tp): Use vectors for string arrays. * tracepoint.c (trace_save): Use vectors of actions. (parse_tracepoint_definition): Ditto. (get_uploaded_tp): Clear vectors. * breakpoint.c (create_tracepoint_from_upload): Use vectors. (next_cmd): Change to an int. (read_next_cmd): Use vector of command strings.
This commit is contained in:
parent
4cc23edeb9
commit
3149d8c115
@ -1,3 +1,17 @@
|
||||
2010-04-06 Stan Shebs <stan@codesourcery.com>
|
||||
|
||||
* defs.h (char_ptr): Move typedef here from...
|
||||
* ada-lang.c (char_ptr): Remove.
|
||||
* charset.c (char_ptr): Remove.
|
||||
* tracepoint.h (struct uploaded_string): Remove.
|
||||
(struct uploaded_tp): Use vectors for string arrays.
|
||||
* tracepoint.c (trace_save): Use vectors of actions.
|
||||
(parse_tracepoint_definition): Ditto.
|
||||
(get_uploaded_tp): Clear vectors.
|
||||
* breakpoint.c (create_tracepoint_from_upload): Use vectors.
|
||||
(next_cmd): Change to an int.
|
||||
(read_next_cmd): Use vector of command strings.
|
||||
|
||||
2010-04-06 Doug Evans <dje@google.com>
|
||||
|
||||
* top.h (source_script, cd_command): Delete.
|
||||
@ -118,7 +132,6 @@
|
||||
* remote.c (remote_parse_stop_reply): Use hex_string instead
|
||||
of phex_nz for error.
|
||||
|
||||
>>>>>>> 1.11571
|
||||
2010-04-01 Stan Shebs <stan@codesourcery.com>
|
||||
Nathan Sidwell <nathan@codesourcery.com>
|
||||
|
||||
|
@ -5076,7 +5076,6 @@ symbol_completion_match (const char *sym_name,
|
||||
return sym_name;
|
||||
}
|
||||
|
||||
typedef char *char_ptr;
|
||||
DEF_VEC_P (char_ptr);
|
||||
|
||||
/* A companion function to ada_make_symbol_completion_list().
|
||||
|
@ -10348,18 +10348,16 @@ ftrace_command (char *arg, int from_tty)
|
||||
list that was acquired during tracepoint uploading. */
|
||||
|
||||
static struct uploaded_tp *this_utp;
|
||||
static struct uploaded_string *next_cmd;
|
||||
static int next_cmd;
|
||||
|
||||
static char *
|
||||
read_uploaded_action (void)
|
||||
{
|
||||
char *rslt;
|
||||
|
||||
if (!next_cmd)
|
||||
return NULL;
|
||||
VEC_iterate (char_ptr, this_utp->cmd_strings, next_cmd, rslt);
|
||||
|
||||
rslt = next_cmd->str;
|
||||
next_cmd = next_cmd->next;
|
||||
next_cmd++;
|
||||
|
||||
return rslt;
|
||||
}
|
||||
@ -10425,18 +10423,19 @@ create_tracepoint_from_upload (struct uploaded_tp *utp)
|
||||
special-purpose "reader" function and call the usual command line
|
||||
reader, then pass the result to the breakpoint command-setting
|
||||
function. */
|
||||
if (utp->cmd_strings)
|
||||
if (!VEC_empty (char_ptr, utp->cmd_strings))
|
||||
{
|
||||
struct command_line *cmd_list;
|
||||
|
||||
this_utp = utp;
|
||||
next_cmd = utp->cmd_strings;
|
||||
next_cmd = 0;
|
||||
|
||||
cmd_list = read_command_lines_1 (read_uploaded_action, 1, NULL, NULL);
|
||||
|
||||
breakpoint_set_commands (tp, cmd_list);
|
||||
}
|
||||
else if (utp->numactions > 0 || utp->num_step_actions > 0)
|
||||
else if (!VEC_empty (char_ptr, utp->actions)
|
||||
|| !VEC_empty (char_ptr, utp->step_actions))
|
||||
warning (_("Uploaded tracepoint %d actions have no source form, ignoring them"),
|
||||
utp->number);
|
||||
|
||||
|
@ -702,7 +702,6 @@ wchar_iterate (struct wchar_iterator *iter,
|
||||
|
||||
extern initialize_file_ftype _initialize_charset; /* -Wmissing-prototype */
|
||||
|
||||
typedef char *char_ptr;
|
||||
DEF_VEC_P (char_ptr);
|
||||
|
||||
static VEC (char_ptr) *charsets;
|
||||
|
@ -312,6 +312,10 @@ struct cleanup
|
||||
#define ENUM_BITFIELD(TYPE) unsigned int
|
||||
#endif
|
||||
|
||||
/* vec.h-style vectors of strings want a typedef for char * . */
|
||||
|
||||
typedef char * char_ptr;
|
||||
|
||||
/* Needed for various prototypes */
|
||||
|
||||
struct symtab;
|
||||
|
@ -2538,7 +2538,7 @@ trace_save (const char *filename, int target_does_save)
|
||||
struct uploaded_tp *uploaded_tps = NULL, *utp;
|
||||
struct uploaded_tsv *uploaded_tsvs = NULL, *utsv;
|
||||
int a;
|
||||
struct uploaded_string *cmd;
|
||||
char *act;
|
||||
LONGEST gotten = 0;
|
||||
ULONGEST offset = 0;
|
||||
#define MAX_TRACE_UPLOAD 2000
|
||||
@ -2646,14 +2646,12 @@ trace_save (const char *filename, int target_does_save)
|
||||
fprintf (fp, ":X%x,%s", (unsigned int) strlen (utp->cond) / 2,
|
||||
utp->cond);
|
||||
fprintf (fp, "\n");
|
||||
for (a = 0; a < utp->numactions; ++a)
|
||||
for (a = 0; VEC_iterate (char_ptr, utp->actions, a, act); ++a)
|
||||
fprintf (fp, "tp A%x:%s:%s\n",
|
||||
utp->number, phex_nz (utp->addr, sizeof (utp->addr)),
|
||||
utp->actions[a]);
|
||||
for (a = 0; a < utp->num_step_actions; ++a)
|
||||
utp->number, phex_nz (utp->addr, sizeof (utp->addr)), act);
|
||||
for (a = 0; VEC_iterate (char_ptr, utp->actions, a, act); ++a)
|
||||
fprintf (fp, "tp S%x:%s:%s\n",
|
||||
utp->number, phex_nz (utp->addr, sizeof (utp->addr)),
|
||||
utp->step_actions[a]);
|
||||
utp->number, phex_nz (utp->addr, sizeof (utp->addr)), act);
|
||||
if (utp->at_string)
|
||||
{
|
||||
encode_source_string (utp->number, utp->addr,
|
||||
@ -2666,9 +2664,9 @@ trace_save (const char *filename, int target_does_save)
|
||||
"cond", utp->cond_string, buf, MAX_TRACE_UPLOAD);
|
||||
fprintf (fp, "tp Z%s\n", buf);
|
||||
}
|
||||
for (cmd = utp->cmd_strings; cmd; cmd = cmd->next)
|
||||
for (a = 0; VEC_iterate (char_ptr, utp->cmd_strings, a, act); ++a)
|
||||
{
|
||||
encode_source_string (utp->number, utp->addr, "cmd", cmd->str,
|
||||
encode_source_string (utp->number, utp->addr, "cmd", act,
|
||||
buf, MAX_TRACE_UPLOAD);
|
||||
fprintf (fp, "tp Z%s\n", buf);
|
||||
}
|
||||
@ -2870,6 +2868,9 @@ get_uploaded_tp (int num, ULONGEST addr, struct uploaded_tp **utpp)
|
||||
memset (utp, 0, sizeof (struct uploaded_tp));
|
||||
utp->number = num;
|
||||
utp->addr = addr;
|
||||
utp->actions = NULL;
|
||||
utp->step_actions = NULL;
|
||||
utp->cmd_strings = NULL;
|
||||
utp->next = *utpp;
|
||||
*utpp = utp;
|
||||
return utp;
|
||||
@ -3424,12 +3425,12 @@ parse_tracepoint_definition (char *line, struct uploaded_tp **utpp)
|
||||
else if (piece == 'A')
|
||||
{
|
||||
utp = get_uploaded_tp (num, addr, utpp);
|
||||
utp->actions[utp->numactions++] = xstrdup (p);
|
||||
VEC_safe_push (char_ptr, utp->actions, xstrdup (p));
|
||||
}
|
||||
else if (piece == 'S')
|
||||
{
|
||||
utp = get_uploaded_tp (num, addr, utpp);
|
||||
utp->step_actions[utp->num_step_actions++] = xstrdup (p);
|
||||
VEC_safe_push (char_ptr, utp->step_actions, xstrdup (p));
|
||||
}
|
||||
else if (piece == 'Z')
|
||||
{
|
||||
@ -3453,21 +3454,7 @@ parse_tracepoint_definition (char *line, struct uploaded_tp **utpp)
|
||||
else if (strncmp (srctype, "cond:", strlen ("cond:")) == 0)
|
||||
utp->cond_string = xstrdup (buf);
|
||||
else if (strncmp (srctype, "cmd:", strlen ("cmd:")) == 0)
|
||||
{
|
||||
/* FIXME consider using a vector? */
|
||||
struct uploaded_string *last, *newlast;
|
||||
newlast = (struct uploaded_string *) xmalloc (sizeof (struct uploaded_string));
|
||||
newlast->str = xstrdup (buf);
|
||||
newlast->next = NULL;
|
||||
if (utp->cmd_strings)
|
||||
{
|
||||
for (last = utp->cmd_strings; last->next; last = last->next)
|
||||
;
|
||||
last->next = newlast;
|
||||
}
|
||||
else
|
||||
utp->cmd_strings = newlast;
|
||||
}
|
||||
VEC_safe_push (char_ptr, utp->cmd_strings, xstrdup (buf));
|
||||
}
|
||||
else
|
||||
{
|
||||
|
@ -114,11 +114,7 @@ extern char *default_collect;
|
||||
|
||||
/* Struct to collect random info about tracepoints on the target. */
|
||||
|
||||
struct uploaded_string
|
||||
{
|
||||
char *str;
|
||||
struct uploaded_string *next;
|
||||
};
|
||||
DEF_VEC_P (char_ptr);
|
||||
|
||||
struct uploaded_tp
|
||||
{
|
||||
@ -129,11 +125,13 @@ struct uploaded_tp
|
||||
int step;
|
||||
int pass;
|
||||
int orig_size;
|
||||
|
||||
/* String that is the encoded form of the tracepoint's condition. */
|
||||
char *cond;
|
||||
int numactions;
|
||||
char *actions[100];
|
||||
int num_step_actions;
|
||||
char *step_actions[100];
|
||||
|
||||
/* Vectors of strings that are the encoded forms of a tracepoint's actions. */
|
||||
VEC(char_ptr) *actions;
|
||||
VEC(char_ptr) *step_actions;
|
||||
|
||||
/* The original string defining the location of the tracepoint. */
|
||||
char *at_string;
|
||||
@ -142,7 +140,7 @@ struct uploaded_tp
|
||||
char *cond_string;
|
||||
|
||||
/* List of original strings defining the tracepoint's actions. */
|
||||
struct uploaded_string *cmd_strings;
|
||||
VEC(char_ptr) *cmd_strings;
|
||||
|
||||
struct uploaded_tp *next;
|
||||
};
|
||||
|
Loading…
Reference in New Issue
Block a user