diff options
author | Ulrich Weigand <uweigand@de.ibm.com> | 2008-08-26 17:40:25 +0000 |
---|---|---|
committer | Ulrich Weigand <uweigand@de.ibm.com> | 2008-08-26 17:40:25 +0000 |
commit | a45ae3ed061717e5a1538b1ac402cad93f81cb55 (patch) | |
tree | 27192166c6239fdae09810dd0b92f692fc566264 /gdb/stack.c | |
parent | 879d1e6b4674bc8c09b64dafad9248fb782c8924 (diff) | |
download | gdb-a45ae3ed061717e5a1538b1ac402cad93f81cb55.zip gdb-a45ae3ed061717e5a1538b1ac402cad93f81cb55.tar.gz gdb-a45ae3ed061717e5a1538b1ac402cad93f81cb55.tar.bz2 |
* dummy-frame.h (dummy_frame_pop): Add prototype.
* dummy-frame.c: Include "observer.h".
(dummy_frame_push): Do not check for stale frames.
(dummy_frame_pop): New function.
(cleanup_dummy_frames): New function.
(_initialize_dummy_frame): Install it as inferior_created observer.
* frame.h (struct frame_id): Update comments.
(frame_id_inner): Remove prototype.
* frame.c (frame_id_inner): Make static. Add comments.
(frame_find_by_id): Update frame_id_inner safety net check to avoid
false positives for targets using non-contiguous stack ranges.
(get_prev_frame_1): Update frame_id_inner safety net check.
(frame_pop): Call dummy_frame_pop when popping a dummy frame.
* stack.c (return_command): Directly pop the selected frame.
* infrun.c (handle_inferior_event): Remove dead code.
* i386-tdep.c (i386_push_dummy_call): Update comment.
Diffstat (limited to 'gdb/stack.c')
-rw-r--r-- | gdb/stack.c | 25 |
1 files changed, 2 insertions, 23 deletions
diff --git a/gdb/stack.c b/gdb/stack.c index d9c4f0a..61c799d 100644 --- a/gdb/stack.c +++ b/gdb/stack.c @@ -1844,29 +1844,8 @@ If you continue, the return value that you specified will be ignored.\n"; error (_("Not confirmed")); } - /* NOTE: cagney/2003-01-18: Is this silly? Rather than pop each - frame in turn, should this code just go straight to the relevant - frame and pop that? */ - - /* First discard all frames inner-to the selected frame (making the - selected frame current). */ - { - struct frame_id selected_id = get_frame_id (get_selected_frame (NULL)); - while (!frame_id_eq (selected_id, get_frame_id (get_current_frame ()))) - { - struct frame_info *frame = get_current_frame (); - if (frame_id_inner (get_frame_arch (frame), selected_id, - get_frame_id (frame))) - /* Caught in the safety net, oops! We've gone way past the - selected frame. */ - error (_("Problem while popping stack frames (corrupt stack?)")); - frame_pop (get_current_frame ()); - } - } - - /* Second discard the selected frame (which is now also the current - frame). */ - frame_pop (get_current_frame ()); + /* Discard the selected frame and all frames inner-to it. */ + frame_pop (get_selected_frame (NULL)); /* Store RETURN_VALUE in the just-returned register set. */ if (return_value != NULL) |