2002-12-05 David Carlton <carlton@math.stanford.edu>
authorDavid Carlton <carlton@bactrian.org>
Thu, 5 Dec 2002 21:07:49 +0000 (21:07 +0000)
committerDavid Carlton <carlton@bactrian.org>
Thu, 5 Dec 2002 21:07:49 +0000 (21:07 +0000)
* symtab.c (lookup_symbol_aux_block): New function.
(lookup_symbol_aux_local): Move code into lookup_symbol_aux_block.

gdb/ChangeLog
gdb/symtab.c

index 51fa80e210c8ec9a817b7d8faf603daf2e2f11fe..808548abbcd3f7b0b025ea278354657e37277ffb 100644 (file)
@@ -1,3 +1,8 @@
+2002-12-05  David Carlton  <carlton@math.stanford.edu>
+
+       * symtab.c (lookup_symbol_aux_block): New function.
+       (lookup_symbol_aux_local): Move code into lookup_symbol_aux_block.
+
 2002-12-05  Andrew Cagney  <ac131313@redhat.com>
 
        * gdbarch.sh: Dump the predicate function and macro values.
index a891d356616d0f954d11fd0de0a23d6c8944854c..53c1f082bf9322c47615bcb514559720a79e6740 100644 (file)
@@ -89,6 +89,13 @@ static struct symbol *lookup_symbol_aux_local (const char *name,
                                               const namespace_enum namespace,
                                               struct symtab **symtab);
 
+static
+struct symbol *lookup_symbol_aux_block (const char *name,
+                                       const char *mangled_name,
+                                       const struct block *block,
+                                       const namespace_enum namespace,
+                                       struct symtab **symtab);
+
 static
 struct symbol *lookup_symbol_aux_symtabs (int block_index,
                                          const char *name,
@@ -964,36 +971,55 @@ lookup_symbol_aux_local (const char *name, const char *mangled_name,
                         struct symtab **symtab)
 {
   struct symbol *sym;
+  
+  while (block != 0)
+    {
+      sym = lookup_symbol_aux_block (name, mangled_name, block, namespace,
+                                    symtab);
+      if (sym != NULL)
+       return sym;
+      block = BLOCK_SUPERBLOCK (block);
+    }
+
+  return NULL;
+}
+
+/* Look up a symbol in a block; if found, locate its symtab, fixup the
+   symbol, and set block_found appropriately.  */
+
+static struct symbol *
+lookup_symbol_aux_block (const char *name, const char *mangled_name,
+                        const struct block *block,
+                        const namespace_enum namespace,
+                        struct symtab **symtab)
+{
+  struct symbol *sym;
   struct objfile *objfile = NULL;
   struct blockvector *bv;
   struct block *b;
   struct symtab *s = NULL;
-  
-  while (block != 0)
+
+  sym = lookup_block_symbol (block, name, mangled_name, namespace);
+  if (sym)
     {
-      sym = lookup_block_symbol (block, name, mangled_name, namespace);
-      if (sym)
+      block_found = block;
+      if (symtab != NULL)
        {
-         block_found = block;
-         if (symtab != NULL)
+         /* Search the list of symtabs for one which contains the
+            address of the start of this block.  */
+         ALL_SYMTABS (objfile, s)
            {
-             /* Search the list of symtabs for one which contains the
-                address of the start of this block.  */
-             ALL_SYMTABS (objfile, s)
-             {
-               bv = BLOCKVECTOR (s);
-               b = BLOCKVECTOR_BLOCK (bv, GLOBAL_BLOCK);
-               if (BLOCK_START (b) <= BLOCK_START (block)
-                   && BLOCK_END (b) > BLOCK_START (block))
-                 goto found;
-             }
-           found:
-             *symtab = s;
+             bv = BLOCKVECTOR (s);
+             b = BLOCKVECTOR_BLOCK (bv, GLOBAL_BLOCK);
+             if (BLOCK_START (b) <= BLOCK_START (block)
+                 && BLOCK_END (b) > BLOCK_START (block))
+               goto found;
            }
-
-         return fixup_symbol_section (sym, objfile);
+       found:
+         *symtab = s;
        }
-      block = BLOCK_SUPERBLOCK (block);
+      
+      return fixup_symbol_section (sym, objfile);
     }
 
   return NULL;