aboutsummaryrefslogtreecommitdiff
path: root/gdb/breakpoint.c
diff options
context:
space:
mode:
authorStu Grossman <grossman@cygnus>1992-02-28 04:10:02 +0000
committerStu Grossman <grossman@cygnus>1992-02-28 04:10:02 +0000
commit8537ba607b34d6142d98849e89fb42e1e0829c1a (patch)
tree66c7810c614737663a362c5c2c6972433abe0b47 /gdb/breakpoint.c
parentb543979cda1c55abab524c4dd9700d4bfe9f29dd (diff)
downloadgdb-8537ba607b34d6142d98849e89fb42e1e0829c1a.zip
gdb-8537ba607b34d6142d98849e89fb42e1e0829c1a.tar.gz
gdb-8537ba607b34d6142d98849e89fb42e1e0829c1a.tar.bz2
* breakpoint.c (breakpoint_re_set_one): Don't reset breakpoint
unless symbol table indicates that something has changed.
Diffstat (limited to 'gdb/breakpoint.c')
-rw-r--r--gdb/breakpoint.c26
1 files changed, 15 insertions, 11 deletions
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);
}