* Makefile.am (libbfd.h): Add "Extracted from.." comment.
[deliverable/binutils-gdb.git] / gdb / buildsym.c
index abcf22a7cc467d00740d39f39beff9111b138ce5..5078935fefebb98e2eb2615bb904857fb0bcae54 100644 (file)
@@ -1,6 +1,6 @@
 /* Support routines for building symbol tables in GDB's internal format.
    Copyright 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995,
-   1996, 1997, 1998, 1999, 2000, 2001 Free Software Foundation, Inc.
+   1996, 1997, 1998, 1999, 2000, 2001, 2002 Free Software Foundation, Inc.
 
    This file is part of GDB.
 
 #include "complaints.h"
 #include "gdb_string.h"
 #include "expression.h"                /* For "enum exp_opcode" used by... */
-#include "language.h"          /* For "longest_local_hex_string_custom" */
+#include "language.h"          /* For "local_hex_string" */
 #include "bcache.h"
 #include "filenames.h"         /* For DOSish file names */
+#include "macrotab.h"
 /* Ask buildsym.h to define the vars it normally declares `extern'.  */
 #define        EXTERN
 /**/
@@ -192,6 +193,9 @@ really_free_pendings (PTR dummy)
       xfree ((void *) next);
     }
   global_symbols = NULL;
+
+  if (pending_macros)
+    free_macro_table (pending_macros);
 }
 
 /* This function is called to discard any pending blocks. */
@@ -509,7 +513,7 @@ make_blockvector (struct objfile *objfile)
                = BLOCK_START (BLOCKVECTOR_BLOCK (blockvector, i));
 
              complain (&blockvector_complaint,
-                       longest_local_hex_string ((LONGEST) start));
+                       local_hex_string ((LONGEST) start));
            }
        }
     }
@@ -883,7 +887,8 @@ end_symtab (CORE_ADDR end_addr, struct objfile *objfile, int section)
   if (pending_blocks == NULL
       && file_symbols == NULL
       && global_symbols == NULL
-      && have_line_numbers == 0)
+      && have_line_numbers == 0
+      && pending_macros == NULL)
     {
       /* Ignore symtabs that have no functions with real debugging
          info.  */
@@ -944,6 +949,7 @@ end_symtab (CORE_ADDR end_addr, struct objfile *objfile, int section)
 
          /* Fill in its components.  */
          symtab->blockvector = blockvector;
+          symtab->macro_table = pending_macros;
          if (subfile->line_vector)
            {
              /* Reallocate the line table on the symbol obstack */
@@ -1022,6 +1028,7 @@ end_symtab (CORE_ADDR end_addr, struct objfile *objfile, int section)
 
   last_source_file = NULL;
   current_subfile = NULL;
+  pending_macros = NULL;
 
   return symtab;
 }
@@ -1112,6 +1119,7 @@ buildsym_init (void)
   file_symbols = NULL;
   global_symbols = NULL;
   pending_blocks = NULL;
+  pending_macros = NULL;
 }
 
 /* Initialize anything that needs initializing when a completely new
This page took 0.02975 seconds and 4 git commands to generate.