diff options
author | Jim Blandy <jimb@codesourcery.com> | 2002-05-15 21:19:21 +0000 |
---|---|---|
committer | Jim Blandy <jimb@codesourcery.com> | 2002-05-15 21:19:21 +0000 |
commit | 99d9066e57c4ff29e314af000b11c62ce6253b59 (patch) | |
tree | 73fefdfb07f9b7751fd104bd496068174af72a8d /gdb/buildsym.c | |
parent | a978a3e5d8dec1a24c0851ecf16e241f7a23f946 (diff) | |
download | gdb-99d9066e57c4ff29e314af000b11c62ce6253b59.zip gdb-99d9066e57c4ff29e314af000b11c62ce6253b59.tar.gz gdb-99d9066e57c4ff29e314af000b11c62ce6253b59.tar.bz2 |
Add macro structures to GDB's symbol tables. Nobody puts anything
in them yet.
* symtab.h (struct symtab): New member: `macro_table'.
* buildsym.h (pending_macros): New global variable.
* buildsym.c: #include "macrotab.h".
(buildsym_init): Initialize `pending_macros'.
(end_symtab): If we found macro information while reading a CU's
debugging info, do build a symtab structure for it. Make the
symtab point to the macro information, and clear the
`pending_macros' pointer which held it while we were reading the
debug info.
(really_free_pendings): Free any pending macro table.
* objfiles.h (struct objfile): New member: `macro_cache'.
* objfiles.c (allocate_objfile): Set allocate and free functions
for the macro cache's objstack.
(free_objfile): Empty the macro cache's obstack.
* symfile.c (reread_symbols): Empty the macro cache's obstack, and
set new allocate and free functions for it.
* solib-sunos.c (allocate_rt_common_objfile): Set allocate and
free functions for the macro cache's objstack. (Why is this
function building its own objfile?)
* symmisc.c (print_objfile_statistics): Print statistics on the
macro bcache.
* Makefile.in: Note that buildsym.o depends on macrotab.h.
Diffstat (limited to 'gdb/buildsym.c')
-rw-r--r-- | gdb/buildsym.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/gdb/buildsym.c b/gdb/buildsym.c index d7e99c0..5078935 100644 --- a/gdb/buildsym.c +++ b/gdb/buildsym.c @@ -39,6 +39,7 @@ #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. */ @@ -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 |