? foof.12580 Index: breakpoint.c =================================================================== RCS file: /cvs/src/src/gdb/breakpoint.c,v retrieving revision 1.393 diff -u -p -u -r1.393 breakpoint.c --- breakpoint.c 5 May 2009 13:24:48 -0000 1.393 +++ breakpoint.c 6 May 2009 00:46:59 -0000 @@ -72,6 +72,9 @@ #define CATCH_PERMANENT ((void *) (uintptr_t) 0) #define CATCH_TEMPORARY ((void *) (uintptr_t) 1) +/* If non-zero, breakpoin_re_set() is a no-op. */ +int suppress_breakpoint_reset; + /* Prototypes for local functions. */ static void enable_delete_command (char *, int); @@ -7723,6 +7726,9 @@ breakpoint_re_set (void) enum language save_language; int save_input_radix; + if (suppress_breakpoint_reset) + return; + save_language = current_language->la_language; save_input_radix = input_radix; ALL_BREAKPOINTS_SAFE (b, temp) Index: breakpoint.h =================================================================== RCS file: /cvs/src/src/gdb/breakpoint.h,v retrieving revision 1.90 diff -u -p -u -r1.90 breakpoint.h --- breakpoint.h 31 Mar 2009 16:44:17 -0000 1.90 +++ breakpoint.h 6 May 2009 00:46:59 -0000 @@ -669,6 +669,8 @@ enum breakpoint_here permanent_breakpoint_here }; +/* If non-zero, breakpoin_re_set() is a no-op. */ +extern int suppress_breakpoint_reset; /* Prototypes for breakpoint-related functions. */ Index: solib.c =================================================================== RCS file: /cvs/src/src/gdb/solib.c,v retrieving revision 1.115 diff -u -p -u -r1.115 solib.c --- solib.c 9 Mar 2009 22:38:37 -0000 1.115 +++ solib.c 6 May 2009 00:46:59 -0000 @@ -738,6 +738,9 @@ solib_add (char *pattern, int from_tty, int any_matches = 0; int loaded_any_symbols = 0; + /* Delay resetting breakpoints until after we added all solibs. */ + suppress_breakpoint_reset += 1; + for (gdb = so_list_head; gdb; gdb = gdb->next) if (! pattern || re_exec (gdb->so_name)) { @@ -754,6 +757,10 @@ solib_add (char *pattern, int from_tty, loaded_any_symbols = 1; } + suppress_breakpoint_reset -= 1; + if (loaded_any_symbols) + breakpoint_re_set (); + if (from_tty && pattern && ! any_matches) printf_unfiltered ("No loaded shared libraries match the pattern `%s'.\n", pattern);