Index: gdb/solib.c |
diff --git a/gdb/solib.c b/gdb/solib.c |
index f5917856d1509a11d28c8d308822033e1f03c827..90439ba584df76fab8ae9d4bfb53c9f32a1e4aba 100644 |
--- a/gdb/solib.c |
+++ b/gdb/solib.c |
@@ -380,8 +380,6 @@ solib_bfd_fopen (char *pathname, int fd) |
if (abfd) |
bfd_set_cacheable (abfd, 1); |
- else if (fd != -1) |
- close (fd); |
} |
if (!abfd) |
@@ -592,6 +590,8 @@ solib_read_symbols (struct so_list *so, int flags) |
{ |
volatile struct gdb_exception e; |
+ flags |= current_inferior ()->symfile_flags; |
+ |
TRY_CATCH (e, RETURN_MASK_ERROR) |
{ |
struct section_addr_info *sap; |
@@ -758,6 +758,9 @@ update_solib_list (int from_tty, struct target_ops *target) |
unloaded before we remove it from GDB's tables. */ |
observer_notify_solib_unloaded (gdb); |
+ VEC_safe_push (char_ptr, current_program_space->deleted_solibs, |
+ xstrdup (gdb->so_name)); |
+ |
*gdb_link = gdb->next; |
/* Unless the user loaded it explicitly, free SO's objfile. */ |
@@ -793,6 +796,7 @@ update_solib_list (int from_tty, struct target_ops *target) |
volatile struct gdb_exception e; |
i->pspace = current_program_space; |
+ VEC_safe_push (so_list_ptr, current_program_space->added_solibs, i); |
TRY_CATCH (e, RETURN_MASK_ERROR) |
{ |