diff options
Diffstat (limited to 'gdb/objfiles.c')
-rw-r--r-- | gdb/objfiles.c | 16 |
1 files changed, 7 insertions, 9 deletions
diff --git a/gdb/objfiles.c b/gdb/objfiles.c index dd18e73..6102091 100644 --- a/gdb/objfiles.c +++ b/gdb/objfiles.c @@ -93,7 +93,7 @@ add_to_objfile_sections (struct bfd *abfd, struct bfd_section *asect, section.ovly_mapped = 0; section.addr = bfd_section_vma (abfd, asect); section.endaddr = section.addr + bfd_section_size (abfd, asect); - obstack_grow (&objfile->psymbol_obstack, (char *) §ion, sizeof (section)); + obstack_grow (&objfile->objfile_obstack, (char *) §ion, sizeof (section)); objfile->sections_end = (struct obj_section *) (((unsigned long) objfile->sections_end) + 1); } @@ -119,13 +119,13 @@ build_objfile_section_table (struct objfile *objfile) /* objfile->sections can be already set when reading a mapped symbol file. I believe that we do need to rebuild the section table in this case (we rebuild other things derived from the bfd), but we - can't free the old one (it's in the psymbol_obstack). So we just + can't free the old one (it's in the objfile_obstack). So we just waste some memory. */ objfile->sections_end = 0; bfd_map_over_sections (objfile->obfd, add_to_objfile_sections, (char *) objfile); objfile->sections = (struct obj_section *) - obstack_finish (&objfile->psymbol_obstack); + obstack_finish (&objfile->objfile_obstack); objfile->sections_end = objfile->sections + (unsigned long) objfile->sections_end; return (0); } @@ -165,12 +165,10 @@ allocate_objfile (bfd *abfd, int flags) objfile->md = NULL; objfile->psymbol_cache = bcache_xmalloc (); objfile->macro_cache = bcache_xmalloc (); - obstack_specify_allocation (&objfile->psymbol_obstack, 0, 0, xmalloc, + obstack_specify_allocation (&objfile->objfile_obstack, 0, 0, xmalloc, xfree); obstack_specify_allocation (&objfile->symbol_obstack, 0, 0, xmalloc, xfree); - obstack_specify_allocation (&objfile->objfile_obstack, 0, 0, xmalloc, - xfree); terminate_minimal_symbol_table (objfile); } @@ -342,7 +340,7 @@ unlink_objfile (struct objfile *objfile) /* Destroy an objfile and all the symtabs and psymtabs under it. Note that as much as possible is allocated on the symbol_obstack and - psymbol_obstack, so that the memory can be efficiently freed. + objfile_obstack, so that the memory can be efficiently freed. Things which we do NOT free because they are not in malloc'd memory or not in memory specific to the objfile include: @@ -431,9 +429,9 @@ free_objfile (struct objfile *objfile) bcache_xfree (objfile->macro_cache); if (objfile->demangled_names_hash) htab_delete (objfile->demangled_names_hash); - obstack_free (&objfile->psymbol_obstack, 0); - obstack_free (&objfile->symbol_obstack, 0); obstack_free (&objfile->objfile_obstack, 0); + obstack_free (&objfile->symbol_obstack, 0); + xmfree (objfile->md, objfile); objfile = NULL; } |