From ab92d69b1e3a3db7bd4f9564ad3b5bbccc9a7988 Mon Sep 17 00:00:00 2001 From: Pedro Alves Date: Wed, 24 Feb 2010 00:29:02 +0000 Subject: [PATCH] * breakpoint.c (breakpoint_init_inferior): Also delete bp_shlib_event breakpoints. * solib-frv.c (enable_break): Remove call to remove_solib_event_breakpoints. * solib-svr4.c (enable_break): Ditto. * solib-darwin.c (darwin_solib_create_inferior_hook): Ditto. * solib-pa64.c (pa64_solib_create_inferior_hook): Ditto. * solib-som.c (som_solib_create_inferior_hook): Ditto. * solib-spu.c (spu_enable_break): Ditto. --- gdb/ChangeLog | 12 ++++++++++++ gdb/breakpoint.c | 26 ++++++++++++++++++++++---- gdb/solib-darwin.c | 4 ---- gdb/solib-frv.c | 4 ---- gdb/solib-pa64.c | 4 ---- gdb/solib-som.c | 4 ---- gdb/solib-spu.c | 4 ---- gdb/solib-svr4.c | 4 ---- 8 files changed, 34 insertions(+), 28 deletions(-) diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 3d9db889998..2fa16f416b1 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,15 @@ +2010-02-24 Pedro Alves + + * breakpoint.c (breakpoint_init_inferior): Also delete + bp_shlib_event breakpoints. + * solib-frv.c (enable_break): Remove call to + remove_solib_event_breakpoints. + * solib-svr4.c (enable_break): Ditto. + * solib-darwin.c (darwin_solib_create_inferior_hook): Ditto. + * solib-pa64.c (pa64_solib_create_inferior_hook): Ditto. + * solib-som.c (som_solib_create_inferior_hook): Ditto. + * solib-spu.c (spu_enable_break): Ditto. + 2010-02-23 Harald Koenig * c-exp.y (token_and_value): s/union YYSTYPE/YYSTYPE. diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c index 4224c76cbc5..4af69a4a2d3 100644 --- a/gdb/breakpoint.c +++ b/gdb/breakpoint.c @@ -2248,13 +2248,31 @@ breakpoint_init_inferior (enum inf_context context) switch (b->type) { case bp_call_dummy: - case bp_watchpoint_scope: /* If the call dummy breakpoint is at the entry point it will - cause problems when the inferior is rerun, so we better - get rid of it. + cause problems when the inferior is rerun, so we better get + rid of it. */ + + case bp_watchpoint_scope: + + /* Also get rid of scope breakpoints. */ + + case bp_shlib_event: + + /* Also remove solib event breakpoints. Their addresses may + have changed since the last time we ran the program. + Actually we may now be debugging against different target; + and so the solib backend that installed this breakpoint may + not be used in by the target. E.g., + + (gdb) file prog-linux + (gdb) run # native linux target + ... + (gdb) kill + (gdb) file prog-win.exe + (gdb) tar rem :9999 # remote Windows gdbserver. + */ - Also get rid of scope breakpoints. */ delete_breakpoint (b); break; diff --git a/gdb/solib-darwin.c b/gdb/solib-darwin.c index 3c700899d40..34925671114 100644 --- a/gdb/solib-darwin.c +++ b/gdb/solib-darwin.c @@ -309,10 +309,6 @@ darwin_solib_create_inferior_hook (int from_tty) bfd *dyld_bfd = NULL; struct inferior *inf = current_inferior (); - /* First, remove all the solib event breakpoints. Their addresses - may have changed since the last time we ran the program. */ - remove_solib_event_breakpoints (); - /* Find the program interpreter. */ interp_name = find_program_interpreter (); if (!interp_name) diff --git a/gdb/solib-frv.c b/gdb/solib-frv.c index 0976c8352ea..245ca84f763 100644 --- a/gdb/solib-frv.c +++ b/gdb/solib-frv.c @@ -818,10 +818,6 @@ enable_break (void) { asection *interp_sect; - /* Remove all the solib event breakpoints. Their addresses - may have changed since the last time we ran the program. */ - remove_solib_event_breakpoints (); - if (symfile_objfile == NULL) { if (solib_frv_debug) diff --git a/gdb/solib-pa64.c b/gdb/solib-pa64.c index df97f319cf0..1643e4e5988 100644 --- a/gdb/solib-pa64.c +++ b/gdb/solib-pa64.c @@ -338,10 +338,6 @@ pa64_solib_create_inferior_hook (int from_tty) struct objfile *objfile; CORE_ADDR anaddr; - /* First, remove all the solib event breakpoints. Their addresses - may have changed since the last time we ran the program. */ - remove_solib_event_breakpoints (); - if (symfile_objfile == NULL) return; diff --git a/gdb/solib-som.c b/gdb/solib-som.c index 6540d0b7bd5..1ac83e15c37 100644 --- a/gdb/solib-som.c +++ b/gdb/solib-som.c @@ -192,10 +192,6 @@ som_solib_create_inferior_hook (int from_tty) char buf[4]; CORE_ADDR anaddr; - /* First, remove all the solib event breakpoints. Their addresses - may have changed since the last time we ran the program. */ - remove_solib_event_breakpoints (); - if (symfile_objfile == NULL) return; diff --git a/gdb/solib-spu.c b/gdb/solib-spu.c index 94a77fb692f..75e62362030 100644 --- a/gdb/solib-spu.c +++ b/gdb/solib-spu.c @@ -367,10 +367,6 @@ spu_enable_break (struct objfile *objfile) static void spu_solib_create_inferior_hook (int from_tty) { - /* Remove all previously installed solib breakpoints. Both the SVR4 - code and us will re-install all required breakpoints. */ - remove_solib_event_breakpoints (); - /* Handle SPE stand-alone executables. */ if (spu_standalone_p ()) { diff --git a/gdb/solib-svr4.c b/gdb/solib-svr4.c index 8edc8891ac1..43172834488 100644 --- a/gdb/solib-svr4.c +++ b/gdb/solib-svr4.c @@ -1315,10 +1315,6 @@ enable_break (struct svr4_info *info, int from_tty) gdb_byte *interp_name; CORE_ADDR sym_addr; - /* First, remove all the solib event breakpoints. Their addresses - may have changed since the last time we ran the program. */ - remove_solib_event_breakpoints (); - info->interp_text_sect_low = info->interp_text_sect_high = 0; info->interp_plt_sect_low = info->interp_plt_sect_high = 0; -- 2.30.2