diff options
author | Fred Fish <fnf@specifix.com> | 1992-03-19 21:57:15 +0000 |
---|---|---|
committer | Fred Fish <fnf@specifix.com> | 1992-03-19 21:57:15 +0000 |
commit | 80d68b1d49a92b6ea0b5b79d9be413f0002ae200 (patch) | |
tree | 6a042b0583d1b178e375b6288dc7d2811c763d90 /gdb/objfiles.c | |
parent | dc52fc71183fc32594388a619c4fa55e83648ced (diff) | |
download | gdb-80d68b1d49a92b6ea0b5b79d9be413f0002ae200.zip gdb-80d68b1d49a92b6ea0b5b79d9be413f0002ae200.tar.gz gdb-80d68b1d49a92b6ea0b5b79d9be413f0002ae200.tar.bz2 |
* coffread.c, mipsread.c, xcoffread.c, coffread.c, dbxread.c,
elfread.c (coff_symfile_finish): Add function, prototype, and
add to the xxxx_sym_fns struct for each file type. Also reformat
the xxxx_sym_fns vector to a standard format and add comments.
* coffread.c, mipsread.c, xcoffread.c, coffread.c, dbxread.c,
elfread.c (xxx_symfile_new_init, xxx_symfile_init, xxx_symfile_read):
Pass pointer to struct objfile rather than pointer to sym_fns.
Change references inside each function accordingly. Allocate any
symbol file specific info in the per-objfile memory region.
* dbxread.c (free_and_init_header_files): Break function into
free_header_files(), called from dbx_symfile_finish(), and
init_header_files(), called from dbx_new_init().
* dbxread.c (dbx_new_init): Move deallocation things to new
dbx_symfile_finish function.
* elfread.c (elf_new_init): Call buildsym_new_init().
* objfiles.c (free_objfile): Call the appropriate symfile_finish()
routine for the objfile before deallocating other stuff.
* sparc-tdep.c (get_longjmp_target): Cast target_read_memory arg.
* symfile.h: Move struct sym_fns to before struct objfile def.
Add sym_finish function pointer and change prototypes of other
function pointers to reflect passing struct objfile pointer rather
than struct sym_fns pointer.
* symfile.c: Remove now obsolete symtab_fns pointer.
* symfile.c (symfile_init): Renamed to find_sym_fns, and now only
locates the correct sym_fns struct for the given objfile.
* symfile.c (syms_from_objfile, symbol_file_add): Restructured
for better support of mapped symbol tables.
* symfile.c (symbol_file_command): Remove obsolete code using
symfile_fns.
* symfile.h: Remove duplicate declarations for symfile_objfile,
entry_point, and object_files.
* target.c (target_info): Compare symfile_objfile to NULL.
* xcoffread.c (aixcoff_new_init): Move deallocation stuff to
aixcoff_symfile_finish().
Diffstat (limited to 'gdb/objfiles.c')
-rw-r--r-- | gdb/objfiles.c | 17 |
1 files changed, 14 insertions, 3 deletions
diff --git a/gdb/objfiles.c b/gdb/objfiles.c index 677d605..c243005 100644 --- a/gdb/objfiles.c +++ b/gdb/objfiles.c @@ -173,7 +173,14 @@ allocate_objfile (abfd, mapped) /* 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. */ + psymbol_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: + + objfile -> sf + + */ void free_objfile (objfile) @@ -181,11 +188,15 @@ free_objfile (objfile) { struct objfile *ofp; - if (objfile -> name) + if (objfile -> sf != NULL) + { + (*objfile -> sf -> sym_finish) (objfile); + } + if (objfile -> name != NULL) { mfree (objfile -> md, objfile -> name); } - if (objfile -> obfd) + if (objfile -> obfd != NULL) { bfd_close (objfile -> obfd); } |