aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gdb/ChangeLog8
-rw-r--r--gdb/infcmd.c23
-rw-r--r--gdb/target.c19
3 files changed, 27 insertions, 23 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog
index d6169fa..3dcf5ce 100644
--- a/gdb/ChangeLog
+++ b/gdb/ChangeLog
@@ -1,3 +1,11 @@
+2008-08-09 Ulrich Weigand <uweigand@de.ibm.com>
+
+ * target.c: Include "solib.h".
+ (target_pre_inferior): Call no_shared_libraries.
+ * infcmd.c (run_command_1): Do not call objfile_purge_solibs
+ or clear_solib.
+ (attach_command): Do not call clear_solib.
+
2008-08-09 Mark Kettenis <kettenis@gnu.org>
* i386obsd-nat.c (i386obsd_supply_pcb): Supply the right bytes for
diff --git a/gdb/infcmd.c b/gdb/infcmd.c
index e4198b5..572555c 100644
--- a/gdb/infcmd.c
+++ b/gdb/infcmd.c
@@ -487,11 +487,6 @@ run_command_1 (char *args, int from_tty, int tbreak_at_main)
this function should probably be moved into target_pre_inferior. */
target_pre_inferior (from_tty);
- /* Purge old solib objfiles. */
- objfile_purge_solibs ();
-
- clear_solib ();
-
/* The comment here used to read, "The exec file is re-read every
time we do a generic_mourn_inferior, so we just have to worry
about the symbol file." The `generic_mourn_inferior' function
@@ -2023,24 +2018,6 @@ attach_command (char *args, int from_tty)
this function should probably be moved into target_pre_inferior. */
target_pre_inferior (from_tty);
- /* Clear out solib state. Otherwise the solib state of the previous
- inferior might have survived and is entirely wrong for the new
- target. This has been observed on GNU/Linux using glibc 2.3. How
- to reproduce:
-
- bash$ ./foo&
- [1] 4711
- bash$ ./foo&
- [1] 4712
- bash$ gdb ./foo
- [...]
- (gdb) attach 4711
- (gdb) detach
- (gdb) attach 4712
- Cannot access memory at address 0xdeadbeef
- */
- clear_solib ();
-
if (args)
{
async_exec = strip_bg_char (&args);
diff --git a/gdb/target.c b/gdb/target.c
index 461cfe3..6cda095 100644
--- a/gdb/target.c
+++ b/gdb/target.c
@@ -40,6 +40,7 @@
#include "exceptions.h"
#include "target-descriptions.h"
#include "gdbthread.h"
+#include "solib.h"
static void target_info (char *, int);
@@ -1717,6 +1718,24 @@ target_info (char *args, int from_tty)
void
target_pre_inferior (int from_tty)
{
+ /* Clear out solib state. Otherwise the solib state of the previous
+ inferior might have survived and is entirely wrong for the new
+ target. This has been observed on GNU/Linux using glibc 2.3. How
+ to reproduce:
+
+ bash$ ./foo&
+ [1] 4711
+ bash$ ./foo&
+ [1] 4712
+ bash$ gdb ./foo
+ [...]
+ (gdb) attach 4711
+ (gdb) detach
+ (gdb) attach 4712
+ Cannot access memory at address 0xdeadbeef
+ */
+ no_shared_libraries (NULL, from_tty);
+
invalidate_target_mem_regions ();
target_clear_description ();