From 8b92e4d54f80aae37af6b0b2a23e114ae4b5d29d Mon Sep 17 00:00:00 2001 From: Elena Zannoni Date: Sat, 7 Feb 2004 18:29:54 +0000 Subject: [PATCH] 2004-02-07 Elena Zannoni * dbxread.c (dbx_symfile_init, start_psymtab, end_psymtab, coffstab_build_psymtabs, elfstab_build_psymtabs) (stabsect_build_psymtabs): Replace psymbol_obstack with objfile_obstack. * dwarf2-frame.c (decode_frame_entry_1): Ditto. * dwarf2read.c (dwarf2_build_psymtabs_hard, dwarf2_read_section): Ditto. * dwarfread.c (scan_compilation_units): Ditto. * elfread.c (elfstab_offset_sections): Ditto. * hppa-tdep.c (read_unwind_info): Ditto. * hpread.c (hpread_build_psymtabs, hpread_start_psymtab) (hpread_end_psymtab): Ditto. * mdebugread.c (mdebug_build_psymtabs, add_pending) (parse_partial_symbols, new_psymtab, elfmdebug_build_psymtabs): Ditto. * mips-tdep.c (non_heuristic_proc_desc): Ditto. * objfiles.c (add_to_objfile_sections) (build_objfile_section_table): Ditto. (allocate_objfile): Remove init of psymbol_obstack. (free_objfile): Remove freeing of psymbol_obstack. * objfiles.h (struct objfile): Remove field psymbol_obstack. Update comments. * pa64solib.c (pa64_solib_add_solib_objfile): Replace psymbol_obstack with objfile_obstack. * solib-sunos.c (allocate_rt_common_objfile): Remove init of psymbol_obstack. * somread.c (som_symfile_offsets, init_import_symbols) (init_export_symbols): Replace psymbol_obstack with objfile_obstack. * somsolib.c (som_solib_add_solib_objfile): Ditto. * symfile.c (default_symfile_offsets, syms_from_objfile) (reread_symbols): Remove freeing and init of psymbol_obstack. (cashier_psymtab): Update comment. * symmisc.c (print_objfile_statistics): Don't report stats for psymbol obstack. * symtab.h (struct general_symbol_info, struct partial_symtab): Update comments. * xcoffread.c (xcoff_start_psymtab, xcoff_end_psymtab, swap_sym) (xcoff_symfile_offsets): Replace psymbol_obstack with objfile_obstack. --- gdb/ChangeLog | 43 +++++++++++++++++++++++++++++++++++++++++++ gdb/dbxread.c | 23 +++++++++++------------ gdb/dwarf2-frame.c | 4 ++-- gdb/dwarf2read.c | 8 ++++---- gdb/dwarfread.c | 2 +- gdb/elfread.c | 4 ++-- gdb/hppa-tdep.c | 6 +++--- gdb/hpread.c | 10 +++++----- gdb/mdebugread.c | 16 ++++++++-------- gdb/mips-tdep.c | 8 ++++---- gdb/objfiles.c | 16 +++++++--------- gdb/objfiles.h | 8 +++----- gdb/pa64solib.c | 4 ++-- gdb/solib-sunos.c | 5 ++--- gdb/somread.c | 18 +++++++++--------- gdb/somsolib.c | 4 ++-- gdb/symfile.c | 21 +++++++++------------ gdb/symmisc.c | 2 -- gdb/symtab.h | 4 ++-- gdb/xcoffread.c | 14 +++++++------- 20 files changed, 126 insertions(+), 94 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 86f3449c558..27fac564493 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -18,6 +18,49 @@ * tui/tui-stack.c, tui/tui-win.c, tui/tui-wingeneral.c: Ditto. * tui/tui-winsource.c: Ditto. +2004-02-07 Elena Zannoni + + * dbxread.c (dbx_symfile_init, start_psymtab, end_psymtab, + coffstab_build_psymtabs, elfstab_build_psymtabs) + (stabsect_build_psymtabs): Replace psymbol_obstack with + objfile_obstack. + * dwarf2-frame.c (decode_frame_entry_1): Ditto. + * dwarf2read.c (dwarf2_build_psymtabs_hard, dwarf2_read_section): + Ditto. + * dwarfread.c (scan_compilation_units): Ditto. + * elfread.c (elfstab_offset_sections): Ditto. + * hppa-tdep.c (read_unwind_info): Ditto. + * hpread.c (hpread_build_psymtabs, hpread_start_psymtab) + (hpread_end_psymtab): Ditto. + * mdebugread.c (mdebug_build_psymtabs, add_pending) + (parse_partial_symbols, new_psymtab, elfmdebug_build_psymtabs): + Ditto. + * mips-tdep.c (non_heuristic_proc_desc): Ditto. + * objfiles.c (add_to_objfile_sections) + (build_objfile_section_table): Ditto. + (allocate_objfile): Remove init of psymbol_obstack. + (free_objfile): Remove freeing of psymbol_obstack. + * objfiles.h (struct objfile): Remove field + psymbol_obstack. Update comments. + * pa64solib.c (pa64_solib_add_solib_objfile): Replace + psymbol_obstack with objfile_obstack. + * solib-sunos.c (allocate_rt_common_objfile): Remove init of + psymbol_obstack. + * somread.c (som_symfile_offsets, init_import_symbols) + (init_export_symbols): Replace psymbol_obstack with + objfile_obstack. + * somsolib.c (som_solib_add_solib_objfile): Ditto. + * symfile.c (default_symfile_offsets, syms_from_objfile) + (reread_symbols): Remove freeing and init of psymbol_obstack. + (cashier_psymtab): Update comment. + * symmisc.c (print_objfile_statistics): Don't report stats for + psymbol obstack. + * symtab.h (struct general_symbol_info, struct partial_symtab): + Update comments. + * xcoffread.c (xcoff_start_psymtab, xcoff_end_psymtab, swap_sym) + (xcoff_symfile_offsets): Replace psymbol_obstack with + objfile_obstack. + 2004-02-07 Elena Zannoni * objfiles.h (struct objfile): Add objfile_obstack field. diff --git a/gdb/dbxread.c b/gdb/dbxread.c index 62a583f0fff..c1f7f8c7603 100644 --- a/gdb/dbxread.c +++ b/gdb/dbxread.c @@ -651,14 +651,13 @@ dbx_symfile_init (struct objfile *objfile) DBX_SYMCOUNT (objfile) = bfd_get_symcount (sym_bfd); DBX_SYMTAB_OFFSET (objfile) = SYMBOL_TABLE_OFFSET; - /* Read the string table and stash it away in the psymbol_obstack. It is - only needed as long as we need to expand psymbols into full symbols, - so when we blow away the psymbol the string table goes away as well. + /* Read the string table and stash it away in the objfile_obstack. + When we blow away the objfile the string table goes away as well. Note that gdb used to use the results of attempting to malloc the string table, based on the size it read, as a form of sanity check for botched byte swapping, on the theory that a byte swapped string table size would be so totally bogus that the malloc would fail. Now - that we put in on the psymbol_obstack, we can't do this since gdb gets + that we put in on the objfile_obstack, we can't do this since gdb gets a fatal error (out of virtual memory) if the size is bogus. We can however at least check to see if the size is less than the size of the size field itself, or larger than the size of the entire file. @@ -710,7 +709,7 @@ dbx_symfile_init (struct objfile *objfile) DBX_STRINGTAB_SIZE (objfile)); DBX_STRINGTAB (objfile) = - (char *) obstack_alloc (&objfile->psymbol_obstack, + (char *) obstack_alloc (&objfile->objfile_obstack, DBX_STRINGTAB_SIZE (objfile)); OBJSTAT (objfile, sz_strtab += DBX_STRINGTAB_SIZE (objfile)); @@ -2147,7 +2146,7 @@ start_psymtab (struct objfile *objfile, char *filename, CORE_ADDR textlow, filename, textlow, global_syms, static_syms); result->read_symtab_private = (char *) - obstack_alloc (&objfile->psymbol_obstack, sizeof (struct symloc)); + obstack_alloc (&objfile->objfile_obstack, sizeof (struct symloc)); LDSYMOFF (result) = ldsymoff; result->read_symtab = dbx_psymtab_to_symtab; SYMBOL_SIZE (result) = symbol_size; @@ -2269,7 +2268,7 @@ end_psymtab (struct partial_symtab *pst, char **include_list, int num_includes, if (number_dependencies) { pst->dependencies = (struct partial_symtab **) - obstack_alloc (&objfile->psymbol_obstack, + obstack_alloc (&objfile->objfile_obstack, number_dependencies * sizeof (struct partial_symtab *)); memcpy (pst->dependencies, dependency_list, number_dependencies * sizeof (struct partial_symtab *)); @@ -2285,7 +2284,7 @@ end_psymtab (struct partial_symtab *pst, char **include_list, int num_includes, /* Copy the sesction_offsets array from the main psymtab. */ subpst->section_offsets = pst->section_offsets; subpst->read_symtab_private = - (char *) obstack_alloc (&objfile->psymbol_obstack, + (char *) obstack_alloc (&objfile->objfile_obstack, sizeof (struct symloc)); LDSYMOFF (subpst) = LDSYMLEN (subpst) = @@ -2295,7 +2294,7 @@ end_psymtab (struct partial_symtab *pst, char **include_list, int num_includes, /* We could save slight bits of space by only making one of these, shared by the entire set of include files. FIXME-someday. */ subpst->dependencies = (struct partial_symtab **) - obstack_alloc (&objfile->psymbol_obstack, + obstack_alloc (&objfile->objfile_obstack, sizeof (struct partial_symtab *)); subpst->dependencies[0] = pst; subpst->number_of_dependencies = 1; @@ -3344,7 +3343,7 @@ coffstab_build_psymtabs (struct objfile *objfile, int mainline, if (stabstrsize > bfd_get_size (sym_bfd)) error ("ridiculous string table size: %d bytes", stabstrsize); DBX_STRINGTAB (objfile) = (char *) - obstack_alloc (&objfile->psymbol_obstack, stabstrsize + 1); + obstack_alloc (&objfile->objfile_obstack, stabstrsize + 1); OBJSTAT (objfile, sz_strtab += stabstrsize + 1); /* Now read in the string table in one big gulp. */ @@ -3442,7 +3441,7 @@ elfstab_build_psymtabs (struct objfile *objfile, int mainline, if (stabstrsize > bfd_get_size (sym_bfd)) error ("ridiculous string table size: %d bytes", stabstrsize); DBX_STRINGTAB (objfile) = (char *) - obstack_alloc (&objfile->psymbol_obstack, stabstrsize + 1); + obstack_alloc (&objfile->objfile_obstack, stabstrsize + 1); OBJSTAT (objfile, sz_strtab += stabstrsize + 1); /* Now read in the string table in one big gulp. */ @@ -3536,7 +3535,7 @@ stabsect_build_psymtabs (struct objfile *objfile, int mainline, char *stab_name, if (DBX_STRINGTAB_SIZE (objfile) > bfd_get_size (sym_bfd)) error ("ridiculous string table size: %d bytes", DBX_STRINGTAB_SIZE (objfile)); DBX_STRINGTAB (objfile) = (char *) - obstack_alloc (&objfile->psymbol_obstack, DBX_STRINGTAB_SIZE (objfile) + 1); + obstack_alloc (&objfile->objfile_obstack, DBX_STRINGTAB_SIZE (objfile) + 1); OBJSTAT (objfile, sz_strtab += DBX_STRINGTAB_SIZE (objfile) + 1); /* Now read in the string table in one big gulp. */ diff --git a/gdb/dwarf2-frame.c b/gdb/dwarf2-frame.c index ed7f4ab95fa..5a559762fb3 100644 --- a/gdb/dwarf2-frame.c +++ b/gdb/dwarf2-frame.c @@ -1211,7 +1211,7 @@ decode_frame_entry_1 (struct comp_unit *unit, char *start, int eh_frame_p) return end; cie = (struct dwarf2_cie *) - obstack_alloc (&unit->objfile->psymbol_obstack, + obstack_alloc (&unit->objfile->objfile_obstack, sizeof (struct dwarf2_cie)); cie->initial_instructions = NULL; cie->cie_pointer = cie_pointer; @@ -1327,7 +1327,7 @@ decode_frame_entry_1 (struct comp_unit *unit, char *start, int eh_frame_p) return NULL; fde = (struct dwarf2_fde *) - obstack_alloc (&unit->objfile->psymbol_obstack, + obstack_alloc (&unit->objfile->objfile_obstack, sizeof (struct dwarf2_fde)); fde->cie = find_cie (unit, cie_pointer); if (fde->cie == NULL) diff --git a/gdb/dwarf2read.c b/gdb/dwarf2read.c index 3c93215e40e..d732401fa6c 100644 --- a/gdb/dwarf2read.c +++ b/gdb/dwarf2read.c @@ -446,7 +446,7 @@ static int isreg; /* Object lives in register. /* We put a pointer to this structure in the read_symtab_private field of the psymtab. The complete dwarf information for an objfile is kept in the - psymbol_obstack, so that absolute die references can be handled. + objfile_obstack, so that absolute die references can be handled. Most of the information in this structure is related to an entire object file and could be passed via the sym_private field of the objfile. It is however conceivable that dwarf2 might not be the only type @@ -1256,7 +1256,7 @@ dwarf2_build_psymtabs_hard (struct objfile *objfile, int mainline) objfile->static_psymbols.next); pst->read_symtab_private = (char *) - obstack_alloc (&objfile->psymbol_obstack, sizeof (struct dwarf2_pinfo)); + obstack_alloc (&objfile->objfile_obstack, sizeof (struct dwarf2_pinfo)); DWARF_INFO_BUFFER (pst) = dwarf_info_buffer; DWARF_INFO_OFFSET (pst) = beg_of_comp_unit - dwarf_info_buffer; DWARF_ABBREV_BUFFER (pst) = dwarf_abbrev_buffer; @@ -4132,7 +4132,7 @@ make_cleanup_free_die_list (struct die_info *dies) /* Read the contents of the section at OFFSET and of size SIZE from the - object file specified by OBJFILE into the psymbol_obstack and return it. */ + object file specified by OBJFILE into the objfile_obstack and return it. */ char * dwarf2_read_section (struct objfile *objfile, asection *sectp) @@ -4144,7 +4144,7 @@ dwarf2_read_section (struct objfile *objfile, asection *sectp) if (size == 0) return NULL; - buf = (char *) obstack_alloc (&objfile->psymbol_obstack, size); + buf = (char *) obstack_alloc (&objfile->objfile_obstack, size); retbuf = (char *) symfile_relocate_debug_section (abfd, sectp, (bfd_byte *) buf); if (retbuf != NULL) diff --git a/gdb/dwarfread.c b/gdb/dwarfread.c index 0452886f7e5..2ad035335af 100644 --- a/gdb/dwarfread.c +++ b/gdb/dwarfread.c @@ -2800,7 +2800,7 @@ scan_compilation_units (char *thisdie, char *enddie, file_ptr dbfoff, pst->texthigh = di.at_high_pc; pst->read_symtab_private = (char *) - obstack_alloc (&objfile->psymbol_obstack, + obstack_alloc (&objfile->objfile_obstack, sizeof (struct dwfinfo)); DBFOFF (pst) = dbfoff; DBROFF (pst) = curoff; diff --git a/gdb/elfread.c b/gdb/elfread.c index d3779c07ec3..9cc89e662e3 100644 --- a/gdb/elfread.c +++ b/gdb/elfread.c @@ -1,7 +1,7 @@ /* Read ELF (Executable and Linking Format) object files for GDB. Copyright 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, - 2000, 2001, 2002, 2003 Free Software Foundation, Inc. + 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc. Written by Fred Fish at Cygnus Support. @@ -712,7 +712,7 @@ elfstab_offset_sections (struct objfile *objfile, struct partial_symtab *pst) /* Found it! Allocate a new psymtab struct, and fill it in. */ maybe->found++; pst->section_offsets = (struct section_offsets *) - obstack_alloc (&objfile->psymbol_obstack, + obstack_alloc (&objfile->objfile_obstack, SIZEOF_N_SECTION_OFFSETS (objfile->num_sections)); for (i = 0; i < maybe->num_sections; i++) (pst->section_offsets)->offsets[i] = maybe->sections[i]; diff --git a/gdb/hppa-tdep.c b/gdb/hppa-tdep.c index 2241e7e66b7..e11d8715d10 100644 --- a/gdb/hppa-tdep.c +++ b/gdb/hppa-tdep.c @@ -510,7 +510,7 @@ read_unwind_info (struct objfile *objfile) obj_private_data_t *obj_private; text_offset = ANOFFSET (objfile->section_offsets, 0); - ui = (struct obj_unwind_info *) obstack_alloc (&objfile->psymbol_obstack, + ui = (struct obj_unwind_info *) obstack_alloc (&objfile->objfile_obstack, sizeof (struct obj_unwind_info)); ui->table = NULL; @@ -560,7 +560,7 @@ read_unwind_info (struct objfile *objfile) /* Allocate memory for the unwind table. */ ui->table = (struct unwind_table_entry *) - obstack_alloc (&objfile->psymbol_obstack, total_size); + obstack_alloc (&objfile->objfile_obstack, total_size); ui->last = total_entries - 1; /* Now read in each unwind section and internalize the standard unwind @@ -623,7 +623,7 @@ read_unwind_info (struct objfile *objfile) if (objfile->obj_private == NULL) { obj_private = (obj_private_data_t *) - obstack_alloc (&objfile->psymbol_obstack, + obstack_alloc (&objfile->objfile_obstack, sizeof (obj_private_data_t)); obj_private->unwind_info = NULL; obj_private->so_info = NULL; diff --git a/gdb/hpread.c b/gdb/hpread.c index 1edb81c8a12..a770b805edf 100644 --- a/gdb/hpread.c +++ b/gdb/hpread.c @@ -1973,7 +1973,7 @@ hpread_build_psymtabs (struct objfile *objfile, int mainline) if (!have_name) { pst->filename = (char *) - obstack_alloc (&pst->objfile->psymbol_obstack, + obstack_alloc (&pst->objfile->objfile_obstack, strlen (namestring) + 1); strcpy (pst->filename, namestring); have_name = 1; @@ -2392,7 +2392,7 @@ hpread_start_psymtab (struct objfile *objfile, char *filename, result->textlow += offset; result->read_symtab_private = (char *) - obstack_alloc (&objfile->psymbol_obstack, sizeof (struct symloc)); + obstack_alloc (&objfile->objfile_obstack, sizeof (struct symloc)); LDSYMOFF (result) = ldsymoff; result->read_symtab = hpread_psymtab_to_symtab; @@ -2453,7 +2453,7 @@ hpread_end_psymtab (struct partial_symtab *pst, char **include_list, if (number_dependencies) { pst->dependencies = (struct partial_symtab **) - obstack_alloc (&objfile->psymbol_obstack, + obstack_alloc (&objfile->objfile_obstack, number_dependencies * sizeof (struct partial_symtab *)); memcpy (pst->dependencies, dependency_list, number_dependencies * sizeof (struct partial_symtab *)); @@ -2468,7 +2468,7 @@ hpread_end_psymtab (struct partial_symtab *pst, char **include_list, subpst->section_offsets = pst->section_offsets; subpst->read_symtab_private = - (char *) obstack_alloc (&objfile->psymbol_obstack, + (char *) obstack_alloc (&objfile->objfile_obstack, sizeof (struct symloc)); LDSYMOFF (subpst) = LDSYMLEN (subpst) = @@ -2478,7 +2478,7 @@ hpread_end_psymtab (struct partial_symtab *pst, char **include_list, /* We could save slight bits of space by only making one of these, shared by the entire set of include files. FIXME-someday. */ subpst->dependencies = (struct partial_symtab **) - obstack_alloc (&objfile->psymbol_obstack, + obstack_alloc (&objfile->objfile_obstack, sizeof (struct partial_symtab *)); subpst->dependencies[0] = pst; subpst->number_of_dependencies = 1; diff --git a/gdb/mdebugread.c b/gdb/mdebugread.c index a5b4d5b9782..012fa0e7c15 100644 --- a/gdb/mdebugread.c +++ b/gdb/mdebugread.c @@ -428,7 +428,7 @@ mdebug_build_psymtabs (struct objfile *objfile, char *fdr_end; FDR *fdr_ptr; - info->fdr = (FDR *) obstack_alloc (&objfile->psymbol_obstack, + info->fdr = (FDR *) obstack_alloc (&objfile->objfile_obstack, (info->symbolic_header.ifdMax * sizeof (FDR))); fdr_src = info->external_fdr; @@ -581,7 +581,7 @@ add_pending (FDR *fh, char *sh, struct type *t) if (!p) { p = ((struct mdebug_pending *) - obstack_alloc (¤t_objfile->psymbol_obstack, + obstack_alloc (¤t_objfile->objfile_obstack, sizeof (struct mdebug_pending))); p->s = sh; p->t = t; @@ -2262,7 +2262,7 @@ parse_partial_symbols (struct objfile *objfile) && (bfd_get_section_flags (cur_bfd, text_sect) & SEC_RELOC)) relocatable = 1; - extern_tab = (EXTR *) obstack_alloc (&objfile->psymbol_obstack, + extern_tab = (EXTR *) obstack_alloc (&objfile->objfile_obstack, sizeof (EXTR) * hdr->iextMax); includes_allocated = 30; @@ -2306,7 +2306,7 @@ parse_partial_symbols (struct objfile *objfile) /* Allocate the global pending list. */ pending_list = ((struct mdebug_pending **) - obstack_alloc (&objfile->psymbol_obstack, + obstack_alloc (&objfile->objfile_obstack, hdr->ifdMax * sizeof (struct mdebug_pending *))); memset (pending_list, 0, hdr->ifdMax * sizeof (struct mdebug_pending *)); @@ -2558,7 +2558,7 @@ parse_partial_symbols (struct objfile *objfile) objfile->global_psymbols.next, objfile->static_psymbols.next); pst->read_symtab_private = ((char *) - obstack_alloc (&objfile->psymbol_obstack, + obstack_alloc (&objfile->objfile_obstack, sizeof (struct symloc))); memset (pst->read_symtab_private, 0, sizeof (struct symloc)); @@ -3661,7 +3661,7 @@ parse_partial_symbols (struct objfile *objfile) pst->number_of_dependencies = 0; pst->dependencies = ((struct partial_symtab **) - obstack_alloc (&objfile->psymbol_obstack, + obstack_alloc (&objfile->objfile_obstack, ((fh->crfd - 1) * sizeof (struct partial_symtab *)))); for (s_idx = 1; s_idx < fh->crfd; s_idx++) @@ -4609,7 +4609,7 @@ new_psymtab (char *name, struct objfile *objfile) /* Keep a backpointer to the file's symbols */ psymtab->read_symtab_private = ((char *) - obstack_alloc (&objfile->psymbol_obstack, + obstack_alloc (&objfile->objfile_obstack, sizeof (struct symloc))); memset (psymtab->read_symtab_private, 0, sizeof (struct symloc)); CUR_BFD (psymtab) = cur_bfd; @@ -4740,7 +4740,7 @@ elfmdebug_build_psymtabs (struct objfile *objfile, back_to = make_cleanup_discard_minimal_symbols (); info = ((struct ecoff_debug_info *) - obstack_alloc (&objfile->psymbol_obstack, + obstack_alloc (&objfile->objfile_obstack, sizeof (struct ecoff_debug_info))); if (!(*swap->read_debug_info) (abfd, sec, info)) diff --git a/gdb/mips-tdep.c b/gdb/mips-tdep.c index 41bfc7c1dc1..ee23f4a8468 100644 --- a/gdb/mips-tdep.c +++ b/gdb/mips-tdep.c @@ -2286,7 +2286,7 @@ non_heuristic_proc_desc (CORE_ADDR pc, CORE_ADDR *addrptr) This means that we should not bother with this method on 64-bit targets (until that is fixed). */ - priv = obstack_alloc (&sec->objfile->psymbol_obstack, + priv = obstack_alloc (&sec->objfile->objfile_obstack, sizeof (struct mips_objfile_private)); priv->size = 0; sec->objfile->obj_private = priv; @@ -2295,14 +2295,14 @@ non_heuristic_proc_desc (CORE_ADDR pc, CORE_ADDR *addrptr) { asection *bfdsec; - priv = obstack_alloc (&sec->objfile->psymbol_obstack, + priv = obstack_alloc (&sec->objfile->objfile_obstack, sizeof (struct mips_objfile_private)); bfdsec = bfd_get_section_by_name (sec->objfile->obfd, ".pdr"); if (bfdsec != NULL) { priv->size = bfd_section_size (sec->objfile->obfd, bfdsec); - priv->contents = obstack_alloc (&sec->objfile->psymbol_obstack, + priv->contents = obstack_alloc (&sec->objfile->objfile_obstack, priv->size); bfd_get_section_contents (sec->objfile->obfd, bfdsec, priv->contents, 0, priv->size); @@ -2354,7 +2354,7 @@ non_heuristic_proc_desc (CORE_ADDR pc, CORE_ADDR *addrptr) /* Fill in what we need of the proc_desc. */ proc_desc = (mips_extra_func_info_t) - obstack_alloc (&sec->objfile->psymbol_obstack, + obstack_alloc (&sec->objfile->objfile_obstack, sizeof (struct mips_extra_func_info)); PROC_LOW_ADDR (proc_desc) = startaddr; diff --git a/gdb/objfiles.c b/gdb/objfiles.c index dd18e738625..6102091a0fd 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; } diff --git a/gdb/objfiles.h b/gdb/objfiles.h index 62f239ca994..e512e547233 100644 --- a/gdb/objfiles.h +++ b/gdb/objfiles.h @@ -294,8 +294,6 @@ struct objfile /* Obstacks to hold objects that should be freed when we load a new symbol table from this object file. */ - - struct obstack psymbol_obstack; /* Partial symbols */ struct obstack symbol_obstack; /* Full symbols */ /* A byte cache where we can stash arbitrary "chunks" of bytes that @@ -312,7 +310,7 @@ struct objfile struct htab *demangled_names_hash; /* Vectors of all partial symbols read in from file. The actual data - is stored in the psymbol_obstack. */ + is stored in the objfile_obstack. */ struct psymbol_allocation_list global_psymbols; struct psymbol_allocation_list static_psymbols; @@ -402,7 +400,7 @@ struct objfile unsigned num_data; /* Set of relocation offsets to apply to each section. - Currently on the psymbol_obstack (which makes no sense, but I'm + Currently on the objfile_obstack (which makes no sense, but I'm not sure it's harming anything). These offsets indicate that all symbols (including partial and @@ -430,7 +428,7 @@ struct objfile SECTIONS points to the first entry in the table, and SECTIONS_END points to the first location past the last entry in the table. Currently the table is stored on the - psymbol_obstack (which makes no sense, but I'm not sure it's + objfile_obstack (which makes no sense, but I'm not sure it's harming anything). */ struct obj_section diff --git a/gdb/pa64solib.c b/gdb/pa64solib.c index 8a5cae188cd..ee235ad1c92 100644 --- a/gdb/pa64solib.c +++ b/gdb/pa64solib.c @@ -1,6 +1,6 @@ /* Handle HP ELF shared libraries for GDB, the GNU Debugger. - Copyright 1999, 2000, 2001, 2002, 2003 Free Software Foundation, + Copyright 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc. This file is part of GDB. @@ -281,7 +281,7 @@ pa64_solib_add_solib_objfile (struct so_list *so, char *name, int from_tty, if (so->objfile->obj_private == NULL) { obj_private = (obj_private_data_t *) - obstack_alloc (&so->objfile->psymbol_obstack, + obstack_alloc (&so->objfile->objfile_obstack, sizeof (obj_private_data_t)); obj_private->unwind_info = NULL; obj_private->so_info = NULL; diff --git a/gdb/solib-sunos.c b/gdb/solib-sunos.c index 15dc8a3eeba..e66463147cc 100644 --- a/gdb/solib-sunos.c +++ b/gdb/solib-sunos.c @@ -145,12 +145,11 @@ allocate_rt_common_objfile (void) 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); + objfile->name = mstrsave (objfile->md, "rt_common"); /* Add this file onto the tail of the linked list of other such files. */ diff --git a/gdb/somread.c b/gdb/somread.c index 971fea25f73..4ffa4c1c9e4 100644 --- a/gdb/somread.c +++ b/gdb/somread.c @@ -1,6 +1,6 @@ /* Read HP PA/Risc object files for GDB. - Copyright 1991, 1992, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002 - Free Software Foundation, Inc. + Copyright 1991, 1992, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002, + 2004 Free Software Foundation, Inc. Written by Fred Fish at Cygnus Support. This file is part of GDB. @@ -432,7 +432,7 @@ som_symfile_offsets (struct objfile *objfile, struct section_addr_info *addrs) objfile->num_sections = bfd_count_sections (objfile->obfd); objfile->section_offsets = (struct section_offsets *) - obstack_alloc (&objfile->psymbol_obstack, + obstack_alloc (&objfile->objfile_obstack, SIZEOF_N_SECTION_OFFSETS (objfile->num_sections)); /* FIXME: ezannoni 2000-04-20 The section names in SOM are not @@ -534,7 +534,7 @@ init_import_symbols (struct objfile *objfile) to do with psymbols, just a matter of convenience. We want the import list to be freed when the objfile is deallocated */ objfile->import_list - = (ImportEntry *) obstack_alloc (&objfile->psymbol_obstack, + = (ImportEntry *) obstack_alloc (&objfile->objfile_obstack, import_list_size * sizeof (ImportEntry)); /* Read in the import entries, a bunch at a time */ @@ -550,7 +550,7 @@ init_import_symbols (struct objfile *objfile) if (buffer[i].type != (unsigned char) 0) { objfile->import_list[k] - = (char *) obstack_alloc (&objfile->psymbol_obstack, strlen (string_buffer + buffer[i].name) + 1); + = (char *) obstack_alloc (&objfile->objfile_obstack, strlen (string_buffer + buffer[i].name) + 1); strcpy (objfile->import_list[k], string_buffer + buffer[i].name); /* Some day we might want to record the type and other information too */ } @@ -570,7 +570,7 @@ init_import_symbols (struct objfile *objfile) if (buffer[i].type != (unsigned char) 0) { objfile->import_list[k] - = (char *) obstack_alloc (&objfile->psymbol_obstack, strlen (string_buffer + buffer[i].name) + 1); + = (char *) obstack_alloc (&objfile->objfile_obstack, strlen (string_buffer + buffer[i].name) + 1); strcpy (objfile->import_list[k], string_buffer + buffer[i].name); /* Some day we might want to record the type and other information too */ } @@ -657,7 +657,7 @@ init_export_symbols (struct objfile *objfile) to do with psymbols, just a matter of convenience. We want the export list to be freed when the objfile is deallocated */ objfile->export_list - = (ExportEntry *) obstack_alloc (&objfile->psymbol_obstack, + = (ExportEntry *) obstack_alloc (&objfile->objfile_obstack, export_list_size * sizeof (ExportEntry)); /* Read in the export entries, a bunch at a time */ @@ -673,7 +673,7 @@ init_export_symbols (struct objfile *objfile) if (buffer[i].type != (unsigned char) 0) { objfile->export_list[k].name - = (char *) obstack_alloc (&objfile->psymbol_obstack, strlen (string_buffer + buffer[i].name) + 1); + = (char *) obstack_alloc (&objfile->objfile_obstack, strlen (string_buffer + buffer[i].name) + 1); strcpy (objfile->export_list[k].name, string_buffer + buffer[i].name); objfile->export_list[k].address = buffer[i].value; /* Some day we might want to record the type and other information too */ @@ -697,7 +697,7 @@ init_export_symbols (struct objfile *objfile) if (buffer[i].type != (unsigned char) 0) { objfile->export_list[k].name - = (char *) obstack_alloc (&objfile->psymbol_obstack, strlen (string_buffer + buffer[i].name) + 1); + = (char *) obstack_alloc (&objfile->objfile_obstack, strlen (string_buffer + buffer[i].name) + 1); strcpy (objfile->export_list[k].name, string_buffer + buffer[i].name); /* Some day we might want to record the type and other information too */ objfile->export_list[k].address = buffer[i].value; diff --git a/gdb/somsolib.c b/gdb/somsolib.c index b2a833cbada..f1a0a6e3d93 100644 --- a/gdb/somsolib.c +++ b/gdb/somsolib.c @@ -1,7 +1,7 @@ /* Handle HP SOM shared libraries for GDB, the GNU Debugger. Copyright 1993, 1994, 1995, 1996, 1998, 1999, 2000, 2001, 2002, - 2003 Free Software Foundation, Inc. + 2003, 2004 Free Software Foundation, Inc. This file is part of GDB. @@ -310,7 +310,7 @@ som_solib_add_solib_objfile (struct so_list *so, char *name, int from_tty, if (so->objfile->obj_private == NULL) { obj_private = (obj_private_data_t *) - obstack_alloc (&so->objfile->psymbol_obstack, + obstack_alloc (&so->objfile->objfile_obstack, sizeof (obj_private_data_t)); obj_private->unwind_info = NULL; obj_private->so_info = NULL; diff --git a/gdb/symfile.c b/gdb/symfile.c index 1aa5ff76b3b..30330afaabc 100644 --- a/gdb/symfile.c +++ b/gdb/symfile.c @@ -485,7 +485,7 @@ default_symfile_offsets (struct objfile *objfile, objfile->num_sections = bfd_count_sections (objfile->obfd); objfile->section_offsets = (struct section_offsets *) - obstack_alloc (&objfile->psymbol_obstack, + obstack_alloc (&objfile->objfile_obstack, SIZEOF_N_SECTION_OFFSETS (objfile->num_sections)); memset (objfile->section_offsets, 0, SIZEOF_N_SECTION_OFFSETS (objfile->num_sections)); @@ -690,7 +690,7 @@ syms_from_objfile (struct objfile *objfile, objfile->num_sections = num_offsets; objfile->section_offsets = ((struct section_offsets *) - obstack_alloc (&objfile->psymbol_obstack, size)); + obstack_alloc (&objfile->objfile_obstack, size)); memcpy (objfile->section_offsets, offsets, size); init_objfile_sect_indices (objfile); @@ -1879,7 +1879,7 @@ reread_symbols (void) bfd_errmsg (bfd_get_error ())); /* Save the offsets, we will nuke them with the rest of the - psymbol_obstack. */ + objfile_obstack. */ num_offsets = objfile->num_sections; offsets = ((struct section_offsets *) alloca (SIZEOF_N_SECTION_OFFSETS (num_offsets))); @@ -1911,9 +1911,8 @@ reread_symbols (void) htab_delete (objfile->demangled_names_hash); objfile->demangled_names_hash = NULL; } - obstack_free (&objfile->psymbol_obstack, 0); - obstack_free (&objfile->symbol_obstack, 0); obstack_free (&objfile->objfile_obstack, 0); + obstack_free (&objfile->symbol_obstack, 0); objfile->sections = NULL; objfile->symtabs = NULL; objfile->psymtabs = NULL; @@ -1939,12 +1938,10 @@ reread_symbols (void) it is empty. */ objfile->psymbol_cache = bcache_xmalloc (); objfile->macro_cache = bcache_xmalloc (); - obstack_specify_allocation (&objfile->psymbol_obstack, 0, 0, + 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); if (build_objfile_section_table (objfile)) { error ("Can't find the file sections in `%s': %s", @@ -1955,7 +1952,7 @@ reread_symbols (void) /* We use the same section offsets as from last time. I'm not sure whether that is always correct for shared libraries. */ objfile->section_offsets = (struct section_offsets *) - obstack_alloc (&objfile->psymbol_obstack, + obstack_alloc (&objfile->objfile_obstack, SIZEOF_N_SECTION_OFFSETS (num_offsets)); memcpy (objfile->section_offsets, offsets, SIZEOF_N_SECTION_OFFSETS (num_offsets)); @@ -2279,12 +2276,12 @@ allocate_psymtab (char *filename, struct objfile *objfile) } else psymtab = (struct partial_symtab *) - obstack_alloc (&objfile->psymbol_obstack, + obstack_alloc (&objfile->objfile_obstack, sizeof (struct partial_symtab)); memset (psymtab, 0, sizeof (struct partial_symtab)); psymtab->filename = obsavestring (filename, strlen (filename), - &objfile->psymbol_obstack); + &objfile->objfile_obstack); psymtab->symtab = NULL; /* Prepend it to the psymtab list for the objfile it belongs to. @@ -2433,7 +2430,7 @@ cashier_psymtab (struct partial_symtab *pst) partial_symbol lists (global_psymbols/static_psymbols) that this psymtab points to. These just take up space until all the psymtabs are reclaimed. Ditto the dependencies list and - filename, which are all in the psymbol_obstack. */ + filename, which are all in the objfile_obstack. */ /* We need to cashier any psymtab that has this one as a dependency... */ again: diff --git a/gdb/symmisc.c b/gdb/symmisc.c index 10274d04595..81084a21e26 100644 --- a/gdb/symmisc.c +++ b/gdb/symmisc.c @@ -230,8 +230,6 @@ print_objfile_statistics (void) if (OBJSTAT (objfile, sz_strtab) > 0) printf_filtered (" Space used by a.out string tables: %d\n", OBJSTAT (objfile, sz_strtab)); - printf_filtered (" Total memory used for psymbol obstack: %d\n", - obstack_memory_used (&objfile->psymbol_obstack)); printf_filtered (" Total memory used for psymbol cache: %d\n", bcache_memory_used (objfile->psymbol_cache)); printf_filtered (" Total memory used for macro cache: %d\n", diff --git a/gdb/symtab.h b/gdb/symtab.h index c56c05366d3..e10ea616670 100644 --- a/gdb/symtab.h +++ b/gdb/symtab.h @@ -88,7 +88,7 @@ struct agent_expr; struct general_symbol_info { /* Name of the symbol. This is a required field. Storage for the - name is allocated on the psymbol_obstack or symbol_obstack for + name is allocated on the objfile_obstack or symbol_obstack for the associated objfile. For languages like C++ that make a distinction between the mangled name and demangled name, this is the mangled name. */ @@ -858,7 +858,7 @@ struct symtab Even after the source file has been read into a symtab, the partial_symtab remains around. They are allocated on an obstack, - psymbol_obstack. FIXME, this is bad for dynamic linking or VxWorks- + objfile_obstack. FIXME, this is bad for dynamic linking or VxWorks- style execution of a bunch of .o's. */ struct partial_symtab diff --git a/gdb/xcoffread.c b/gdb/xcoffread.c index 4375d18afdf..51aaa37958c 100644 --- a/gdb/xcoffread.c +++ b/gdb/xcoffread.c @@ -1,6 +1,6 @@ /* Read AIX xcoff symbol tables and convert to internal format, for GDB. Copyright 1986, 1987, 1988, 1989, 1990, 1991, 1992, 1993, 1994, 1995, - 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003 + 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004 Free Software Foundation, Inc. Derived from coffread.c, dbxread.c, and a lot of hacking. Contributed by IBM Corporation. @@ -1946,7 +1946,7 @@ xcoff_start_psymtab (struct objfile *objfile, char *filename, int first_symnum, global_syms, static_syms); result->read_symtab_private = (char *) - obstack_alloc (&objfile->psymbol_obstack, sizeof (struct symloc)); + obstack_alloc (&objfile->objfile_obstack, sizeof (struct symloc)); ((struct symloc *) result->read_symtab_private)->first_symnum = first_symnum; result->read_symtab = xcoff_psymtab_to_symtab; @@ -1993,7 +1993,7 @@ xcoff_end_psymtab (struct partial_symtab *pst, char **include_list, if (number_dependencies) { pst->dependencies = (struct partial_symtab **) - obstack_alloc (&objfile->psymbol_obstack, + obstack_alloc (&objfile->objfile_obstack, number_dependencies * sizeof (struct partial_symtab *)); memcpy (pst->dependencies, dependency_list, number_dependencies * sizeof (struct partial_symtab *)); @@ -2008,7 +2008,7 @@ xcoff_end_psymtab (struct partial_symtab *pst, char **include_list, subpst->section_offsets = pst->section_offsets; subpst->read_symtab_private = - (char *) obstack_alloc (&objfile->psymbol_obstack, + (char *) obstack_alloc (&objfile->objfile_obstack, sizeof (struct symloc)); ((struct symloc *) subpst->read_symtab_private)->first_symnum = 0; ((struct symloc *) subpst->read_symtab_private)->numsyms = 0; @@ -2018,7 +2018,7 @@ xcoff_end_psymtab (struct partial_symtab *pst, char **include_list, /* We could save slight bits of space by only making one of these, shared by the entire set of include files. FIXME-someday. */ subpst->dependencies = (struct partial_symtab **) - obstack_alloc (&objfile->psymbol_obstack, + obstack_alloc (&objfile->objfile_obstack, sizeof (struct partial_symtab *)); subpst->dependencies[0] = pst; subpst->number_of_dependencies = 1; @@ -2081,7 +2081,7 @@ swap_sym (struct internal_syment *symbol, union internal_auxent *aux, /* FIXME: wastes memory for symbols which we don't end up putting into the minimal symbols. */ char *p; - p = obstack_alloc (&objfile->psymbol_obstack, E_SYMNMLEN + 1); + p = obstack_alloc (&objfile->objfile_obstack, E_SYMNMLEN + 1); strncpy (p, symbol->n_name, E_SYMNMLEN); p[E_SYMNMLEN] = '\0'; *name = p; @@ -2959,7 +2959,7 @@ xcoff_symfile_offsets (struct objfile *objfile, struct section_addr_info *addrs) objfile->num_sections = bfd_count_sections (objfile->obfd); objfile->section_offsets = (struct section_offsets *) - obstack_alloc (&objfile->psymbol_obstack, + obstack_alloc (&objfile->objfile_obstack, SIZEOF_N_SECTION_OFFSETS (objfile->num_sections)); /* Initialize the section indexes for future use. */ -- 2.30.2