diff options
author | Daniel Jacobowitz <drow@false.org> | 2009-11-13 22:05:06 +0000 |
---|---|---|
committer | Daniel Jacobowitz <drow@false.org> | 2009-11-13 22:05:06 +0000 |
commit | 66076460436b4f9f7917fce7b073fcc79cb81ce9 (patch) | |
tree | bd8252aea5cffe3a5a730d0fc645b01d2c1ab485 /gdb | |
parent | 55409f9d5fa988a19cd0b69fff68fe83b306bfd2 (diff) | |
download | gdb-66076460436b4f9f7917fce7b073fcc79cb81ce9.zip gdb-66076460436b4f9f7917fce7b073fcc79cb81ce9.tar.gz gdb-66076460436b4f9f7917fce7b073fcc79cb81ce9.tar.bz2 |
2009-11-13 Maciej W. Rozycki <macro@codesourcery.com>
* breakpoint.c (update_watchpoint): Only fiddle with frames for
local watchpoints.
Diffstat (limited to 'gdb')
-rw-r--r-- | gdb/ChangeLog | 5 | ||||
-rw-r--r-- | gdb/breakpoint.c | 20 |
2 files changed, 18 insertions, 7 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index cf4d2c0..e55b4d3 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,8 @@ +2009-11-13 Maciej W. Rozycki <macro@codesourcery.com> + + * breakpoint.c (update_watchpoint): Only fiddle with frames for + local watchpoints. + 2009-11-13 Pedro Alves <pedro@codesourcery.com> * infrun.c (handle_inferior_event): Set stop_print_frame on diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c index 757c76d..cadc536 100644 --- a/gdb/breakpoint.c +++ b/gdb/breakpoint.c @@ -1000,6 +1000,7 @@ update_watchpoint (struct breakpoint *b, int reparse) int within_current_scope; struct frame_id saved_frame_id; struct bp_location *loc; + int frame_saved; bpstat bs; struct program_space *frame_pspace; @@ -1011,12 +1012,7 @@ update_watchpoint (struct breakpoint *b, int reparse) if (b->disposition == disp_del_at_next_stop) return; - /* Save the current frame's ID so we can restore it after - evaluating the watchpoint expression on its own frame. */ - /* FIXME drow/2003-09-09: It would be nice if evaluate_expression - took a frame parameter, so that we didn't have to change the - selected frame. */ - saved_frame_id = get_frame_id (get_selected_frame (NULL)); + frame_saved = 0; /* Determine if the watchpoint is within scope. */ if (b->exp_valid_block == NULL) @@ -1024,6 +1020,15 @@ update_watchpoint (struct breakpoint *b, int reparse) else { struct frame_info *fi; + + /* Save the current frame's ID so we can restore it after + evaluating the watchpoint expression on its own frame. */ + /* FIXME drow/2003-09-09: It would be nice if evaluate_expression + took a frame parameter, so that we didn't have to change the + selected frame. */ + frame_saved = 1; + saved_frame_id = get_frame_id (get_selected_frame (NULL)); + fi = frame_find_by_id (b->watchpoint_frame); within_current_scope = (fi != NULL); if (within_current_scope) @@ -1169,7 +1174,8 @@ in which its expression is valid.\n"), } /* Restore the selected frame. */ - select_frame (frame_find_by_id (saved_frame_id)); + if (frame_saved) + select_frame (frame_find_by_id (saved_frame_id)); } |