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/objfiles.c | |
parent | a978a3e5d8dec1a24c0851ecf16e241f7a23f946 (diff) | |
download | binutils-gdb-99d9066e57c4ff29e314af000b11c62ce6253b59.tar.gz |
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/objfiles.c')
-rw-r--r-- | gdb/objfiles.c | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/gdb/objfiles.c b/gdb/objfiles.c index e2a6f850554..32bda87b91d 100644 --- a/gdb/objfiles.c +++ b/gdb/objfiles.c @@ -190,6 +190,8 @@ allocate_objfile (bfd *abfd, int flags) /* Update pointers to functions to *our* copies */ obstack_chunkfun (&objfile->psymbol_cache.cache, xmmalloc); obstack_freefun (&objfile->psymbol_cache.cache, xmfree); + obstack_chunkfun (&objfile->macro_cache.cache, xmmalloc); + obstack_freefun (&objfile->macro_cache.cache, xmfree); obstack_chunkfun (&objfile->psymbol_obstack, xmmalloc); obstack_freefun (&objfile->psymbol_obstack, xmfree); obstack_chunkfun (&objfile->symbol_obstack, xmmalloc); @@ -220,6 +222,9 @@ allocate_objfile (bfd *abfd, int flags) obstack_specify_allocation_with_arg (&objfile->psymbol_cache.cache, 0, 0, xmmalloc, xmfree, objfile->md); + obstack_specify_allocation_with_arg (&objfile->macro_cache.cache, + 0, 0, xmmalloc, xmfree, + objfile->md); obstack_specify_allocation_with_arg (&objfile->psymbol_obstack, 0, 0, xmmalloc, xmfree, objfile->md); @@ -266,6 +271,8 @@ allocate_objfile (bfd *abfd, int flags) objfile->md = NULL; obstack_specify_allocation (&objfile->psymbol_cache.cache, 0, 0, xmalloc, xfree); + obstack_specify_allocation (&objfile->macro_cache.cache, 0, 0, + xmalloc, xfree); obstack_specify_allocation (&objfile->psymbol_obstack, 0, 0, xmalloc, xfree); obstack_specify_allocation (&objfile->symbol_obstack, 0, 0, xmalloc, @@ -477,6 +484,7 @@ free_objfile (struct objfile *objfile) xmfree (objfile->md, objfile->static_psymbols.list); /* Free the obstacks for non-reusable objfiles */ free_bcache (&objfile->psymbol_cache); + free_bcache (&objfile->macro_cache); obstack_free (&objfile->psymbol_obstack, 0); obstack_free (&objfile->symbol_obstack, 0); obstack_free (&objfile->type_obstack, 0); |