* buildsym.c (subfile_stack): Move here from buildsym.h.
authorDoug Evans <dje@google.com>
Tue, 20 Aug 2013 18:57:00 +0000 (18:57 +0000)
committerDoug Evans <dje@google.com>
Tue, 20 Aug 2013 18:57:00 +0000 (18:57 +0000)
(pending_macros): Ditto.
(get_macro_table): New function.
(buildsym_init): Initialize subfile_stack.
* coffread.c (type_vector,type_vector_length): Moved here from
buildsym.h.
(INITIAL_TYPE_VECTOR_LENGTH): Ditto.
(coff_symtab_read): Use it.
* dbxread.c (read_ofile_symtab): Delete init of subfile_stack.
* dwarf2read.c (macro_start_file): Replace uses of pending_macros
with call to get_macro_table.
* stabsread.c (type_vector,type_vector_length): Moved here from
buildsym.h.
(INITIAL_TYPE_VECTOR_LENGTH): Ditto.
* buildsym.h (get_macro_table): Declare.

gdb/ChangeLog
gdb/buildsym.c
gdb/buildsym.h
gdb/coffread.c
gdb/dbxread.c
gdb/dwarf2read.c
gdb/stabsread.c

index b81014ee6bc84eb7a6746ac59392a63b9dca7311..7ed39f8fcb4e8a44ce42ee82772b4086af1ea6cd 100644 (file)
@@ -1,3 +1,21 @@
+2013-08-20  Doug Evans  <dje@google.com>
+
+       * buildsym.c (subfile_stack): Move here from buildsym.h.
+       (pending_macros): Ditto.
+       (get_macro_table): New function.
+       (buildsym_init): Initialize subfile_stack.
+       * coffread.c (type_vector,type_vector_length): Moved here from
+       buildsym.h.
+       (INITIAL_TYPE_VECTOR_LENGTH): Ditto.
+       (coff_symtab_read): Use it.
+       * dbxread.c (read_ofile_symtab): Delete init of subfile_stack.
+       * dwarf2read.c (macro_start_file): Replace uses of pending_macros
+       with call to get_macro_table.
+       * stabsread.c (type_vector,type_vector_length): Moved here from
+       buildsym.h.
+       (INITIAL_TYPE_VECTOR_LENGTH): Ditto.
+       * buildsym.h (get_macro_table): Declare.
+
 2013-08-20  Tom Tromey  <tromey@redhat.com>
 
        * dbxread.c (record_minimal_symbol): Make 'name' argument const.
index 823ad411198dd2c95c01266fcf8be543b1d3e804..1237e5edfb6de4b22e759cf0008ec222ea19a82f 100644 (file)
@@ -102,13 +102,24 @@ struct pending_block
    associated symtab.  */
 
 static struct pending_block *pending_blocks;
-\f
+
+struct subfile_stack
+  {
+    struct subfile_stack *next;
+    char *name;
+  };
+
+static struct subfile_stack *subfile_stack;
+
+/* The macro table for the compilation unit whose symbols we're
+   currently reading.  All the symtabs for the CU will point to this.  */
+static struct macro_table *pending_macros;
+
 static int compare_line_numbers (const void *ln1p, const void *ln2p);
 
 static void record_pending_block (struct objfile *objfile,
                                  struct block *block,
                                  struct pending_block *opblock);
-\f
 
 /* Initial sizes of data structures.  These are realloc'd larger if
    needed, and realloc'd down to the size actually used, when
@@ -825,6 +836,19 @@ compare_line_numbers (const void *ln1p, const void *ln2p)
   return ln1->line - ln2->line;
 }
 \f
+/* Return the macro table.
+   Initialize it if this is the first use.  */
+
+struct macro_table *
+get_macro_table (struct objfile *objfile, const char *comp_dir)
+{
+  if (! pending_macros)
+    pending_macros = new_macro_table (&objfile->per_bfd->storage_obstack,
+                                     objfile->per_bfd->macro_cache,
+                                     comp_dir);
+  return pending_macros;
+}
+\f
 /* Start a new symtab for a new source file.  Called, for example,
    when a stabs symbol of type N_SO is seen, or when a DWARF
    TAG_compile_unit DIE is seen.  It indicates the start of data for
@@ -1538,6 +1562,7 @@ buildsym_init (void)
   pending_blocks = NULL;
   pending_macros = NULL;
   using_directives = NULL;
+  subfile_stack = NULL;
 
   /* We shouldn't have any address map at this point.  */
   gdb_assert (! pending_addrmap);
index 4bde17a44c70e73658907a4294177947503f6f3c..9ac2d28499aac013fbf8846383538e64424ecb04 100644 (file)
@@ -173,37 +173,12 @@ EXTERN int within_function;
 
 \f
 
-struct subfile_stack
-  {
-    struct subfile_stack *next;
-    char *name;
-  };
-
-EXTERN struct subfile_stack *subfile_stack;
-
 #define next_symbol_text(objfile) (*next_symbol_text_func)(objfile)
 
 /* Function to invoke get the next symbol.  Return the symbol name.  */
 
 EXTERN char *(*next_symbol_text_func) (struct objfile *);
 
-/* Vector of types defined so far, indexed by their type numbers.
-   Used for both stabs and coff.  (In newer sun systems, dbx uses a
-   pair of numbers in parens, as in "(SUBFILENUM,NUMWITHINSUBFILE)".
-   Then these numbers must be translated through the type_translations
-   hash table to get the index into the type vector.)  */
-
-EXTERN struct type **type_vector;
-
-/* Number of elements allocated for type_vector currently.  */
-
-EXTERN int type_vector_length;
-
-/* Initial size of type vector.  Is realloc'd larger if needed, and
-   realloc'd down to the size actually used, when completed.  */
-
-#define        INITIAL_TYPE_VECTOR_LENGTH      160
-
 extern void add_symbol_to_list (struct symbol *symbol,
                                struct pending **listhead);
 
@@ -296,10 +271,10 @@ extern void set_last_source_file (const char *name);
 
 extern const char *get_last_source_file (void);
 
-/* The macro table for the compilation unit whose symbols we're
-   currently reading.  All the symtabs for this CU will point to
-   this.  */
-EXTERN struct macro_table *pending_macros;
+/* Return the macro table.  */
+
+extern struct macro_table *get_macro_table (struct objfile *objfile,
+                                           const char *comp_dir);
 
 #undef EXTERN
 
index 1402247b03dc30e0eed9d6ae53f8a6b5b2ebb75e..7ade38c92eb74e868ae947b2051c671b7e8da624 100644 (file)
@@ -146,6 +146,19 @@ struct coff_symbol
     unsigned int c_type;
   };
 
+/* Vector of types defined so far, indexed by their type numbers.  */
+
+static struct type **type_vector;
+
+/* Number of elements allocated for type_vector currently.  */
+
+static int type_vector_length;
+
+/* Initial size of type vector.  Is realloc'd larger if needed, and
+   realloc'd down to the size actually used, when completed.  */
+
+#define INITIAL_TYPE_VECTOR_LENGTH 160
+
 extern void stabsread_clear_cache (void);
 
 static struct type *coff_read_struct_type (int, int, int,
@@ -816,7 +829,7 @@ coff_symtab_read (long symtab_offset, unsigned int nsyms,
 
   if (type_vector)             /* Get rid of previous one.  */
     xfree (type_vector);
-  type_vector_length = 160;
+  type_vector_length = INITIAL_TYPE_VECTOR_LENGTH;
   type_vector = (struct type **)
     xmalloc (type_vector_length * sizeof (struct type *));
   memset (type_vector, 0, type_vector_length * sizeof (struct type *));
index 08cfc998da62f4d57b1278ab8605fea2a2a1315a..283b87feca75b5259f992e52e5e3aa8aa00862ba 100644 (file)
@@ -2530,7 +2530,6 @@ read_ofile_symtab (struct objfile *objfile, struct partial_symtab *pst)
   section_offsets = pst->section_offsets;
 
   dbxread_objfile = objfile;
-  subfile_stack = NULL;
 
   stringtab_global = DBX_STRINGTAB (objfile);
   set_last_source_file (NULL);
index d08e8b869f7a12b5c01b81735ece9f025cc36716..7891e32d7535f9a3d28cb0c0eef0c891266691b3 100644 (file)
@@ -18943,19 +18943,16 @@ macro_start_file (int file, int line,
   /* File name relative to the compilation directory of this source file.  */
   char *file_name = file_file_name (file, lh);
 
-  /* We don't create a macro table for this compilation unit
-     at all until we actually get a filename.  */
-  if (! pending_macros)
-    pending_macros = new_macro_table (&objfile->per_bfd->storage_obstack,
-                                     objfile->per_bfd->macro_cache,
-                                     comp_dir);
-
   if (! current_file)
     {
+      /* Note: We don't create a macro table for this compilation unit
+        at all until we actually get a filename.  */
+      struct macro_table *macro_table = get_macro_table (objfile, comp_dir);
+
       /* If we have no current file, then this must be the start_file
         directive for the compilation unit's main source file.  */
-      current_file = macro_set_main (pending_macros, file_name);
-      macro_define_special (pending_macros);
+      current_file = macro_set_main (macro_table, file_name);
+      macro_define_special (macro_table);
     }
   else
     current_file = macro_include (current_file, line, file_name);
index 875541c6e178b68fcdf41cddb44330ac6ffa8ed4..f16e54743f645928d4313f116617e0067c260467 100644 (file)
@@ -207,6 +207,23 @@ static int noname_undefs_length;
     if (**(pp) == '\\' || (**(pp) == '?' && (*(pp))[1] == '\0')) \
       *(pp) = next_symbol_text (objfile);      \
   } while (0)
+
+/* Vector of types defined so far, indexed by their type numbers.
+   (In newer sun systems, dbx uses a pair of numbers in parens,
+   as in "(SUBFILENUM,NUMWITHINSUBFILE)".
+   Then these numbers must be translated through the type_translations
+   hash table to get the index into the type vector.)  */
+
+static struct type **type_vector;
+
+/* Number of elements allocated for type_vector currently.  */
+
+static int type_vector_length;
+
+/* Initial size of type vector.  Is realloc'd larger if needed, and
+   realloc'd down to the size actually used, when completed.  */
+
+#define INITIAL_TYPE_VECTOR_LENGTH 160
 \f
 
 /* Look up a dbx type-number pair.  Return the address of the slot