diff options
Diffstat (limited to 'gdb')
-rw-r--r-- | gdb/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/breakpoint.c | 26 |
2 files changed, 20 insertions, 11 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index e7e3f42..26bce5f 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +Thu Feb 27 20:07:43 1992 Stu Grossman (grossman at cygnus.com) + + * breakpoint.c (breakpoint_re_set_one): Don't reset breakpoint + unless symbol table indicates that something has changed. + Thu Feb 27 11:48:47 1992 John Gilmore (gnu at cygnus.com) * remote.c: Make it work for embedded MIPS. Increase buffer diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c index 1f2d4e5..b9aef04 100644 --- a/gdb/breakpoint.c +++ b/gdb/breakpoint.c @@ -2212,20 +2212,25 @@ breakpoint_re_set_one (bint) for (i = 0; i < sals.nelts; i++) { resolve_sal_pc (&sals.sals[i]); - b->symtab = sals.sals[i].symtab; - b->line_number = sals.sals[i].line; - b->address = sals.sals[i].pc; - - if (b->cond_string != NULL) + if (b->symtab != sals.sals[i].symtab + || b->line_number != sals.sals[i].line + || b->address != sals.sals[i].pc) { - s = b->cond_string; - b->cond = parse_exp_1 (&s, block_for_pc (sals.sals[i].pc), 0); - } + b->symtab = sals.sals[i].symtab; + b->line_number = sals.sals[i].line; + b->address = sals.sals[i].pc; + + if (b->cond_string != NULL) + { + s = b->cond_string; + b->cond = parse_exp_1 (&s, block_for_pc (sals.sals[i].pc), 0); + } - check_duplicates (b->address); + check_duplicates (b->address); + mention (b); + } b->enable = save_enable; /* Restore it, this worked. */ - mention (b); } free (sals.sals); break; @@ -2256,7 +2261,6 @@ breakpoint_re_set () ALL_BREAKPOINTS_SAFE (b, temp) { - b->symtab = 0; /* Be sure we don't point to old dead symtab */ sprintf (message, message1, b->number); /* Format possible error msg */ (void) catch_errors (breakpoint_re_set_one, (char *) b, message); } |