2010-04-06 Stan Shebs <stan@codesourcery.com>
authorStan Shebs <shebs@codesourcery.com>
Tue, 6 Apr 2010 17:47:40 +0000 (17:47 +0000)
committerStan Shebs <shebs@codesourcery.com>
Tue, 6 Apr 2010 17:47:40 +0000 (17:47 +0000)
* 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.

gdb/ChangeLog
gdb/ada-lang.c
gdb/breakpoint.c
gdb/charset.c
gdb/defs.h
gdb/tracepoint.c
gdb/tracepoint.h

index 3c6c3ac..2cc9f29 100644 (file)
@@ -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.
        * 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>
 
index ea79500..df92993 100644 (file)
@@ -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().
index 36a28f6..c1c8b97 100644 (file)
@@ -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);
 
index b60c5fa..c422056 100644 (file)
@@ -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;
index b7fd97a..e8a1dd4 100644 (file)
@@ -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;
index 331d46c..c25be70 100644 (file)
@@ -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
     {
index dd16dcf..13e956f 100644 (file)
@@ -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;
 };