From: Ulrich Weigand Date: Sat, 9 Aug 2008 12:15:10 +0000 (+0000) Subject: * target.c: Include "solib.h". X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=b9db4cedffdf2dadeac790e78d1d0a8583da3fef;p=binutils-gdb.git * 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. --- diff --git a/gdb/ChangeLog b/gdb/ChangeLog index d6169fa8cd6..3dcf5ce5ee8 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,11 @@ +2008-08-09 Ulrich Weigand + + * 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 * i386obsd-nat.c (i386obsd_supply_pcb): Supply the right bytes for diff --git a/gdb/infcmd.c b/gdb/infcmd.c index e4198b50184..572555c69d5 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 461cfe390c2..6cda0959a69 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 ();