diff options
author | Daniel Jacobowitz <drow@false.org> | 2006-12-18 22:10:13 +0000 |
---|---|---|
committer | Daniel Jacobowitz <drow@false.org> | 2006-12-18 22:10:13 +0000 |
commit | 69fbadd53d1404744d3e6032c42397c894d66be3 (patch) | |
tree | 6f115b4082bce63d732c29181053beec72fa944e | |
parent | e565971c4eea628ca031ca4230b00b792d7bfffb (diff) | |
download | gdb-69fbadd53d1404744d3e6032c42397c894d66be3.zip gdb-69fbadd53d1404744d3e6032c42397c894d66be3.tar.gz gdb-69fbadd53d1404744d3e6032c42397c894d66be3.tar.bz2 |
* breakpoint.c (watchpoint_check): Double-check the found frame.
-rw-r--r-- | gdb/ChangeLog | 4 | ||||
-rw-r--r-- | gdb/breakpoint.c | 7 |
2 files changed, 11 insertions, 0 deletions
diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 084534e..bf28d52 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,7 @@ +2006-12-18 Daniel Jacobowitz <dan@codesourcery.com> + + * breakpoint.c (watchpoint_check): Double-check the found frame. + 2006-12-17 Nick Hudson <skrll@netbsd.org> Mark Kettenis <kettenis@gnu.org> diff --git a/gdb/breakpoint.c b/gdb/breakpoint.c index e68878b..ed91c1e 100644 --- a/gdb/breakpoint.c +++ b/gdb/breakpoint.c @@ -2564,6 +2564,13 @@ watchpoint_check (void *p) reinit_frame_cache (); fr = frame_find_by_id (b->watchpoint_frame); within_current_scope = (fr != NULL); + + /* If we've gotten confused in the unwinder, we might have + returned a frame that can't describe this variable. */ + if (within_current_scope + && block_function (b->exp_valid_block) != get_frame_function (fr)) + within_current_scope = 0; + /* in_function_epilogue_p() returns a non-zero value if we're still in the function but the stack frame has already been invalidated. Since we can't rely on the values of local variables after the |