OSDN Git Service

2001-10-12 Daniel Jacobowitz <drow@mvista.com>
authordrow <drow>
Fri, 12 Oct 2001 23:51:25 +0000 (23:51 +0000)
committerdrow <drow>
Fri, 12 Oct 2001 23:51:25 +0000 (23:51 +0000)
        * symtab.h (struct block): (ALL_BLOCK_SYMBOLS): New macro.

        * symtab.c (find_pc_sect_symtab): Use ALL_BLOCK_SYMBOLS.
        (make_symbol_completion_list): Likewise.
        (make_symbol_overload_list): Likewise.
        * buildsym.c (finish_block): Likewise.
        * breakpoint.c (get_catch_sals):  Likewise.
        * mdebugread.c (mylookup_symbol): Likewise.
        * objfiles.c (objfile_relocate): Likewise.
        * printcmd.c (print_frame_args): Likewise.
        * stack.c (print_block_frame_locals): Likewise.
        (print_block_frame_labels): Likewise.
        (print_frame_arg_vars): Likewise.
        * symmisc.c (dump_symtab): Likewise.
        * tracepoint.c (add_local_symbols): Likewise.
        (scope_info): Likewise.

2001-10-12  Daniel Jacobowitz  <drow@mvista.com>

        * mi-cmd-stack.c (list_args_or_locals): Use ALL_BLOCK_SYMBOLS.

2001-10-12  Daniel Jacobowitz  <drow@mvista.com>

        * generic/gdbtk-cmds.c (gdb_listfuncs): Use ALL_BLOCK_SYMBOLS.
        * generic/gdbtk-stack.c (gdb_block_vars): Likewise.
        (gdb_get_blocks): Likewise.
        (gdb_get_vars_command): Likewise.
5~

16 files changed:
gdb/ChangeLog
gdb/breakpoint.c
gdb/buildsym.c
gdb/gdbtk/ChangeLog
gdb/gdbtk/generic/gdbtk-cmds.c
gdb/gdbtk/generic/gdbtk-stack.c
gdb/mdebugread.c
gdb/mi/ChangeLog
gdb/mi/mi-cmd-stack.c
gdb/objfiles.c
gdb/printcmd.c
gdb/stack.c
gdb/symmisc.c
gdb/symtab.c
gdb/symtab.h
gdb/tracepoint.c

index 5675302..d06c216 100644 (file)
@@ -1,5 +1,24 @@
 2001-10-12  Daniel Jacobowitz  <drow@mvista.com>
 
+       * symtab.h (struct block): (ALL_BLOCK_SYMBOLS): New macro.
+
+       * symtab.c (find_pc_sect_symtab): Use ALL_BLOCK_SYMBOLS.
+       (make_symbol_completion_list): Likewise.
+       (make_symbol_overload_list): Likewise.
+       * buildsym.c (finish_block): Likewise.
+       * breakpoint.c (get_catch_sals):  Likewise.
+       * mdebugread.c (mylookup_symbol): Likewise.
+       * objfiles.c (objfile_relocate): Likewise.
+       * printcmd.c (print_frame_args): Likewise.
+       * stack.c (print_block_frame_locals): Likewise.
+       (print_block_frame_labels): Likewise.
+       (print_frame_arg_vars): Likewise.
+       * symmisc.c (dump_symtab): Likewise.
+       * tracepoint.c (add_local_symbols): Likewise.
+       (scope_info): Likewise.
+
+2001-10-12  Daniel Jacobowitz  <drow@mvista.com>
+
        * minsyms.c (msymbol_hash): Use better hash function.
        (msymbol_hash_iw): Likewise.  Terminate loop at '(' properly.
 
index 2ce0970..6593b37 100644 (file)
@@ -5871,15 +5871,11 @@ get_catch_sals (int this_level_only)
          if (blocks_searched[index] == 0)
            {
              struct block *b = BLOCKVECTOR_BLOCK (bl, index);
-             int nsyms;
              register int i;
              register struct symbol *sym;
 
-             nsyms = BLOCK_NSYMS (b);
-
-             for (i = 0; i < nsyms; i++)
+             ALL_BLOCK_SYMBOLS (b, i, sym)
                {
-                 sym = BLOCK_SYM (b, i);
                  if (STREQ (SYMBOL_NAME (sym), "default"))
                    {
                      if (have_default)
index b62c346..a2c92f2 100644 (file)
@@ -275,9 +275,8 @@ finish_block (struct symbol *symbol, struct pending **listhead,
             parameter symbols. */
          int nparams = 0, iparams;
          struct symbol *sym;
-         for (i = 0; i < BLOCK_NSYMS (block); i++)
+         ALL_BLOCK_SYMBOLS (block, i, sym)
            {
-             sym = BLOCK_SYM (block, i);
              switch (SYMBOL_CLASS (sym))
                {
                case LOC_ARG:
index 32d7bbe..4a22153 100644 (file)
@@ -1,3 +1,10 @@
+2001-10-12  Daniel Jacobowitz  <drow@mvista.com>
+
+       * generic/gdbtk-cmds.c (gdb_listfuncs): Use ALL_BLOCK_SYMBOLS.
+       * generic/gdbtk-stack.c (gdb_block_vars): Likewise.
+       (gdb_get_blocks): Likewise.
+       (gdb_get_vars_command): Likewise.
+
 2001-10-10  Ian Roxborough  <irox@redhat.com>
 
        * library/gdbtoolbar.itcl (GDBToolBar::add): Add option
index 84e44a4..7141005 100644 (file)
@@ -1498,9 +1498,8 @@ gdb_listfuncs (clientData, interp, objc, objv)
       /* Skip the sort if this block is always sorted.  */
       if (!BLOCK_SHOULD_SORT (b))
        sort_block_syms (b);
-      for (j = 0; j < BLOCK_NSYMS (b); j++)
+      ALL_BLOCK_SYMBOLS (b, j, sym)
        {
-         sym = BLOCK_SYM (b, j);
          if (SYMBOL_CLASS (sym) == LOC_BLOCK)
            {
 
index 94b1c45..fee1986 100644 (file)
@@ -19,6 +19,7 @@
    Boston, MA 02111-1307, USA.  */
 
 #include "defs.h"
+#include "symtab.h"
 #include "frame.h"
 #include "value.h"
 #include "target.h"
@@ -93,7 +94,7 @@ gdb_block_vars (clientData, interp, objc, objv)
      Tcl_Obj *CONST objv[];
 {
   struct block *block;
-  int nsyms, i;
+  int i;
   struct symbol *sym;
   CORE_ADDR start, end;
 
@@ -117,10 +118,8 @@ gdb_block_vars (clientData, interp, objc, objv)
     {
       if (BLOCK_START (block) == start && BLOCK_END (block) == end)
        {
-         nsyms = BLOCK_NSYMS (block);
-         for (i = 0; i < nsyms; i++)
+         ALL_BLOCK_SYMBOLS (block, i, sym)
            {
-             sym = BLOCK_SYM (block, i);
              switch (SYMBOL_CLASS (sym))
                {
                case LOC_ARG:             /* argument              */
@@ -172,7 +171,7 @@ gdb_get_blocks (clientData, interp, objc, objv)
      Tcl_Obj *CONST objv[];
 {
   struct block *block;
-  int nsyms, i, junk;
+  int i, junk;
   struct symbol *sym;
   CORE_ADDR pc;
 
@@ -184,11 +183,9 @@ gdb_get_blocks (clientData, interp, objc, objv)
       pc = get_frame_pc (selected_frame);
       while (block != 0)
        {
-         nsyms = BLOCK_NSYMS (block);
          junk = 0;
-         for (i = 0; i < nsyms; i++)
+         ALL_BLOCK_SYMBOLS (block, i, sym)
            {
-             sym = BLOCK_SYM (block, i);
              switch (SYMBOL_CLASS (sym))
                {
                default:
@@ -301,7 +298,7 @@ gdb_get_vars_command (clientData, interp, objc, objv)
   struct symbol *sym;
   struct block *block;
   char **canonical, *args;
-  int i, nsyms, arguments;
+  int i, arguments;
 
   if (objc > 2)
     {
@@ -344,10 +341,8 @@ gdb_get_vars_command (clientData, interp, objc, objv)
 
   while (block != 0)
     {
-      nsyms = BLOCK_NSYMS (block);
-      for (i = 0; i < nsyms; i++)
+      ALL_BLOCK_SYMBOLS (block, i, sym)
        {
-         sym = BLOCK_SYM (block, i);
          switch (SYMBOL_CLASS (sym))
            {
            default:
index ed7e490..130a458 100644 (file)
@@ -3853,22 +3853,19 @@ static struct symbol *
 mylookup_symbol (char *name, register struct block *block,
                 namespace_enum namespace, enum address_class class)
 {
-  register int bot, top, inc;
-  register struct symbol *sym;
+  int i, inc;
+  struct symbol *sym;
 
-  bot = 0;
-  top = BLOCK_NSYMS (block);
   inc = name[0];
-  while (bot < top)
+  ALL_BLOCK_SYMBOLS (block, i, sym)
     {
-      sym = BLOCK_SYM (block, bot);
       if (SYMBOL_NAME (sym)[0] == inc
          && SYMBOL_NAMESPACE (sym) == namespace
          && SYMBOL_CLASS (sym) == class
          && strcmp (SYMBOL_NAME (sym), name) == 0)
        return sym;
-      bot++;
     }
+
   block = BLOCK_SUPERBLOCK (block);
   if (block)
     return mylookup_symbol (name, block, namespace, class);
index 2bd27c3..3ac824c 100644 (file)
@@ -1,3 +1,7 @@
+2001-10-12  Daniel Jacobowitz  <drow@mvista.com>
+
+       * mi-cmd-stack.c (list_args_or_locals): Use ALL_BLOCK_SYMBOLS.
+
 2001-09-18  Andrew Cagney  <ac131313@redhat.com>
 
        * mi-main.c (mi_cmd_thread_select): Pass uiout to
index 3cfdadb..e9f2dba 100644 (file)
@@ -25,6 +25,7 @@
 #include "value.h"
 #include "mi-cmds.h"
 #include "ui-out.h"
+#include "symtab.h"
 
 #ifdef UI_OUT
 /* FIXME: these should go in some .h file but stack.c doesn't have a
@@ -226,10 +227,8 @@ list_args_or_locals (int locals, int values, struct frame_info *fi)
 
   while (block != 0)
     {
-      nsyms = BLOCK_NSYMS (block);
-      for (i = 0; i < nsyms; i++)
+      ALL_BLOCK_SYMBOLS (block, i, sym)
        {
-         sym = BLOCK_SYM (block, i);
          switch (SYMBOL_CLASS (sym))
            {
            default:
index 85762c3..73ef667 100644 (file)
@@ -557,16 +557,15 @@ objfile_relocate (struct objfile *objfile, struct section_offsets *new_offsets)
       for (i = 0; i < BLOCKVECTOR_NBLOCKS (bv); ++i)
        {
          struct block *b;
+         struct symbol *sym;
          int j;
 
          b = BLOCKVECTOR_BLOCK (bv, i);
          BLOCK_START (b) += ANOFFSET (delta, s->block_line_section);
          BLOCK_END (b) += ANOFFSET (delta, s->block_line_section);
 
-         for (j = 0; j < BLOCK_NSYMS (b); ++j)
+         ALL_BLOCK_SYMBOLS (b, j, sym)
            {
-             struct symbol *sym = BLOCK_SYM (b, j);
-
              fixup_symbol_section (sym, objfile);
 
              /* The RS6000 code from which this was taken skipped
index fa75af8..c601d88 100644 (file)
@@ -1783,7 +1783,6 @@ print_frame_args (struct symbol *func, struct frame_info *fi, int num,
                  struct ui_file *stream)
 {
   struct block *b = NULL;
-  int nsyms = 0;
   int first = 1;
   register int i;
   register struct symbol *sym;
@@ -1806,12 +1805,9 @@ print_frame_args (struct symbol *func, struct frame_info *fi, int num,
   if (func)
     {
       b = SYMBOL_BLOCK_VALUE (func);
-      nsyms = BLOCK_NSYMS (b);
-
-      for (i = 0; i < nsyms; i++)
+      ALL_BLOCK_SYMBOLS (b, i, sym)
         {
          QUIT;
-         sym = BLOCK_SYM (b, i);
 
          /* Keep track of the highest stack argument offset seen, and
             skip over any kinds of symbols we don't care about.  */
index c461ed2..f2536aa 100644 (file)
@@ -1207,16 +1207,12 @@ static int
 print_block_frame_locals (struct block *b, register struct frame_info *fi,
                          int num_tabs, register struct ui_file *stream)
 {
-  int nsyms;
   register int i, j;
   register struct symbol *sym;
   register int values_printed = 0;
 
-  nsyms = BLOCK_NSYMS (b);
-
-  for (i = 0; i < nsyms; i++)
+  ALL_BLOCK_SYMBOLS (b, i, sym)
     {
-      sym = BLOCK_SYM (b, i);
       switch (SYMBOL_CLASS (sym))
        {
        case LOC_LOCAL:
@@ -1246,16 +1242,12 @@ static int
 print_block_frame_labels (struct block *b, int *have_default,
                          register struct ui_file *stream)
 {
-  int nsyms;
   register int i;
   register struct symbol *sym;
   register int values_printed = 0;
 
-  nsyms = BLOCK_NSYMS (b);
-
-  for (i = 0; i < nsyms; i++)
+  ALL_BLOCK_SYMBOLS (b, i, sym)
     {
-      sym = BLOCK_SYM (b, i);
       if (STREQ (SYMBOL_NAME (sym), "default"))
        {
          if (*have_default)
@@ -1432,7 +1424,6 @@ print_frame_arg_vars (register struct frame_info *fi,
 {
   struct symbol *func = get_frame_function (fi);
   register struct block *b;
-  int nsyms;
   register int i;
   register struct symbol *sym, *sym2;
   register int values_printed = 0;
@@ -1444,11 +1435,8 @@ print_frame_arg_vars (register struct frame_info *fi,
     }
 
   b = SYMBOL_BLOCK_VALUE (func);
-  nsyms = BLOCK_NSYMS (b);
-
-  for (i = 0; i < nsyms; i++)
+  ALL_BLOCK_SYMBOLS (b, i, sym)
     {
-      sym = BLOCK_SYM (b, i);
       switch (SYMBOL_CLASS (sym))
        {
        case LOC_ARG:
@@ -1483,7 +1471,6 @@ print_frame_arg_vars (register struct frame_info *fi,
          break;
        }
     }
-
   if (!values_printed)
     {
       fprintf_filtered (stream, "No arguments.\n");
index 8199648..f440f07 100644 (file)
@@ -410,6 +410,7 @@ dump_symtab (struct objfile *objfile, struct symtab *symtab,
   int len, blen;
   register struct linetable *l;
   struct blockvector *bv;
+  struct symbol *sym;
   register struct block *b;
   int depth;
 
@@ -471,11 +472,12 @@ dump_symtab (struct objfile *objfile, struct symtab *symtab,
          if (BLOCK_GCC_COMPILED (b))
            fprintf_filtered (outfile, ", compiled with gcc%d", BLOCK_GCC_COMPILED (b));
          fprintf_filtered (outfile, "\n");
-         /* Now print each symbol in this block */
-         for (j = 0; j < blen; j++)
+         /* Now print each symbol in this block.  */
+         /* FIXMED: Sort?  */
+         ALL_BLOCK_SYMBOLS (b, j, sym)
            {
              struct print_symbol_args s;
-             s.symbol = BLOCK_SYM (b, j);
+             s.symbol = sym;
              s.depth = depth + 1;
              s.outfile = outfile;
              catch_errors (print_symbol, &s, "Error printing symbol:\n",
index 237006f..53ed050 100644 (file)
@@ -2992,9 +2992,8 @@ make_symbol_completion_list (char *text, char *word)
       /* Also catch fields of types defined in this places which match our
          text string.  Only complete on types visible from current context. */
 
-      for (i = 0; i < BLOCK_NSYMS (b); i++)
+      ALL_BLOCK_SYMBOLS (b, i, sym)
        {
-         sym = BLOCK_SYM (b, i);
          COMPLETION_LIST_ADD_SYMBOL (sym, sym_text, sym_text_len, text, word);
          if (SYMBOL_CLASS (sym) == LOC_TYPEDEF)
            {
@@ -3023,9 +3022,8 @@ make_symbol_completion_list (char *text, char *word)
   {
     QUIT;
     b = BLOCKVECTOR_BLOCK (BLOCKVECTOR (s), GLOBAL_BLOCK);
-    for (i = 0; i < BLOCK_NSYMS (b); i++)
+    ALL_BLOCK_SYMBOLS (b, i, sym)
       {
-       sym = BLOCK_SYM (b, i);
        COMPLETION_LIST_ADD_SYMBOL (sym, sym_text, sym_text_len, text, word);
       }
   }
@@ -3037,9 +3035,8 @@ make_symbol_completion_list (char *text, char *word)
     /* Don't do this block twice.  */
     if (b == surrounding_static_block)
       continue;
-    for (i = 0; i < BLOCK_NSYMS (b); i++)
+    ALL_BLOCK_SYMBOLS (b, i, sym)
       {
-       sym = BLOCK_SYM (b, i);
        COMPLETION_LIST_ADD_SYMBOL (sym, sym_text, sym_text_len, text, word);
       }
   }
@@ -3143,16 +3140,14 @@ make_file_symbol_completion_list (char *text, char *word, char *srcfile)
      symbols which match.  */
 
   b = BLOCKVECTOR_BLOCK (BLOCKVECTOR (s), GLOBAL_BLOCK);
-  for (i = 0; i < BLOCK_NSYMS (b); i++)
+  ALL_BLOCK_SYMBOLS (b, i, sym)
     {
-      sym = BLOCK_SYM (b, i);
       COMPLETION_LIST_ADD_SYMBOL (sym, sym_text, sym_text_len, text, word);
     }
 
   b = BLOCKVECTOR_BLOCK (BLOCKVECTOR (s), STATIC_BLOCK);
-  for (i = 0; i < BLOCK_NSYMS (b); i++)
+  ALL_BLOCK_SYMBOLS (b, i, sym)
     {
-      sym = BLOCK_SYM (b, i);
       COMPLETION_LIST_ADD_SYMBOL (sym, sym_text, sym_text_len, text, word);
     }
 
@@ -3530,9 +3525,8 @@ make_symbol_overload_list (struct symbol *fsym)
       /* Also catch fields of types defined in this places which match our
          text string.  Only complete on types visible from current context. */
 
-      for (i = 0; i < BLOCK_NSYMS (b); i++)
+      ALL_BLOCK_SYMBOLS (b, i, sym)
        {
-         sym = BLOCK_SYM (b, i);
          overload_list_add_symbol (sym, oload_name);
        }
     }
@@ -3544,9 +3538,8 @@ make_symbol_overload_list (struct symbol *fsym)
   {
     QUIT;
     b = BLOCKVECTOR_BLOCK (BLOCKVECTOR (s), GLOBAL_BLOCK);
-    for (i = 0; i < BLOCK_NSYMS (b); i++)
+    ALL_BLOCK_SYMBOLS (b, i, sym)
       {
-       sym = BLOCK_SYM (b, i);
        overload_list_add_symbol (sym, oload_name);
       }
   }
@@ -3558,9 +3551,8 @@ make_symbol_overload_list (struct symbol *fsym)
     /* Don't do this block twice.  */
     if (b == surrounding_static_block)
       continue;
-    for (i = 0; i < BLOCK_NSYMS (b); i++)
+    ALL_BLOCK_SYMBOLS (b, i, sym)
       {
-       sym = BLOCK_SYM (b, i);
        overload_list_add_symbol (sym, oload_name);
       }
   }
index 7ae9346..841da4d 100644 (file)
@@ -467,6 +467,14 @@ struct block
 #define BLOCK_SUPERBLOCK(bl)   (bl)->superblock
 #define BLOCK_GCC_COMPILED(bl) (bl)->gcc_compile_flag
 
+/* Macro to loop through all symbols in a block BL.
+   i counts which symbol we are looking at, and sym points to the current
+   symbol.  */
+#define ALL_BLOCK_SYMBOLS(bl, i, sym)                  \
+       for ((i) = 0, (sym) = BLOCK_SYM ((bl), (i));    \
+            (i) < BLOCK_NSYMS ((bl));                  \
+            ++(i), (sym) = BLOCK_SYM ((bl), (i)))
+
 /* Nonzero if symbols of block BL should be sorted alphabetically.
    Don't sort a block which corresponds to a function.  If we did the
    sorting would have to preserve the order of the symbols for the
index 2e5cd73..57d2ae2 100644 (file)
@@ -1296,16 +1296,14 @@ add_local_symbols (struct collection_list *collect, CORE_ADDR pc,
 {
   struct symbol *sym;
   struct block *block;
-  int i, nsyms, count = 0;
+  int i, count = 0;
 
   block = block_for_pc (pc);
   while (block != 0)
     {
       QUIT;                    /* allow user to bail out with ^C */
-      nsyms = BLOCK_NSYMS (block);
-      for (i = 0; i < nsyms; i++)
+      ALL_BLOCK_SYMBOLS (block, i, sym)
        {
-         sym = BLOCK_SYM (block, i);
          switch (SYMBOL_CLASS (sym))
            {
            default:
@@ -2335,7 +2333,7 @@ scope_info (char *args, int from_tty)
   struct minimal_symbol *msym;
   struct block *block;
   char **canonical, *symname, *save_args = args;
-  int i, j, nsyms, count = 0;
+  int i, j, count = 0;
 
   if (args == 0 || *args == 0)
     error ("requires an argument (function, line or *addr) to define a scope");
@@ -2351,14 +2349,13 @@ scope_info (char *args, int from_tty)
   while (block != 0)
     {
       QUIT;                    /* allow user to bail out with ^C */
-      nsyms = BLOCK_NSYMS (block);
-      for (i = 0; i < nsyms; i++)
+      ALL_BLOCK_SYMBOLS (block, i, sym)
        {
          QUIT;                 /* allow user to bail out with ^C */
          if (count == 0)
            printf_filtered ("Scope for %s:\n", save_args);
          count++;
-         sym = BLOCK_SYM (block, i);
+
          symname = SYMBOL_NAME (sym);
          if (symname == NULL || *symname == '\0')
            continue;           /* probably botched, certainly useless */