summaryrefslogtreecommitdiff
path: root/gdb/objfiles.c
diff options
context:
space:
mode:
authorJim Blandy <jimb@codesourcery.com>2000-03-15 16:55:07 +0000
committerJim Blandy <jimb@codesourcery.com>2000-03-15 16:55:07 +0000
commitb15305a438e8da0d98653a370c84c7cb1edade0f (patch)
tree08f32f7f9ac330bf681ba09821c7f2ceabb64ca0 /gdb/objfiles.c
parent2c86ddaf73006f1d212efae1715f5f47617d10e9 (diff)
downloadgdb-b15305a438e8da0d98653a370c84c7cb1edade0f.tar.gz
Deal with the inferior unloading shared objects.
* solib.c (current_sos): New function, replacing find_solib. (find_solib): Deleted. (free_so): New function. (clear_solib): Call free_so, instead of writing it out. (solib_add): Rewritten: compare the inferior's current list of shared objects with GDB's list, and do the required loads and unloads. (info_sharedlibrary_command, solib_address): Don't use find_solib to walk the list of shared libraries: call solib_add, and then walk the list at so_list_head normally. * objfiles.c (free_objfile): Don't call CLEAR_SOLIB, and don't detach the core target. These tasks are taken care of elsewhere. * target.c (remove_target_sections): New function. * target.h (remove_target_sections): New declaration. * solib.c (symbol_add_stub): Check whether we've already created an objfile for this shared object first, before doing all that work to compute section addresses, etc. * objfiles.c (unlink_objfile): Report an internal error if objfile doesn't occur in the object_files list. * solib.c (special_symbol_handling): Delete argument; it's not used. * solib.c (SOLIB_EXTRACT_ADDRESS): New macro to extract addresses from solib structures. Use it throughout solib.c, get rid of all CORE_ADDR casts. (struct so_list): Change type of lmaddr to CORE_ADDR. (first_link_map_member): Change return value type to CORE_ADDR, update callers. (solib_add_common_symbols): Change parameter type to CORE_ADDR, update callers. (open_symbol_file_object, find_solib): Change type of lm variable to CORE_ADDR.
Diffstat (limited to 'gdb/objfiles.c')
-rw-r--r--gdb/objfiles.c15
1 files changed, 3 insertions, 12 deletions
diff --git a/gdb/objfiles.c b/gdb/objfiles.c
index bcd047c11ce..41ec317bc5c 100644
--- a/gdb/objfiles.c
+++ b/gdb/objfiles.c
@@ -370,9 +370,11 @@ unlink_objfile (objfile)
{
*objpp = (*objpp)->next;
objfile->next = NULL;
- break;
+ return;
}
}
+
+ internal_error ("objfiles.c (unlink_objfile): objfile already unlinked");
}
@@ -436,17 +438,6 @@ free_objfile (objfile)
is unknown, but we play it safe for now and keep each action until
it is shown to be no longer needed. */
-#if defined (CLEAR_SOLIB)
- CLEAR_SOLIB ();
- /* CLEAR_SOLIB closes the bfd's for any shared libraries. But
- the to_sections for a core file might refer to those bfd's. So
- detach any core file. */
- {
- struct target_ops *t = find_core_target ();
- if (t != NULL)
- (t->to_detach) (NULL, 0);
- }
-#endif
/* I *think* all our callers call clear_symtab_users. If so, no need
to call this here. */
clear_pc_function_cache ();