diff options
author | Pedro Alves <palves@redhat.com> | 2009-02-05 17:28:21 +0000 |
---|---|---|
committer | Pedro Alves <palves@redhat.com> | 2009-02-05 17:28:21 +0000 |
commit | 9d49bdc28ad672f6e23e9f33759f73968d6885ff (patch) | |
tree | 6bdaf0312e8701db011376578e7b6022e72231e4 /gdb/frame.c | |
parent | 12453b93bd8de559235835300eac68118c4ade70 (diff) | |
download | gdb-9d49bdc28ad672f6e23e9f33759f73968d6885ff.zip gdb-9d49bdc28ad672f6e23e9f33759f73968d6885ff.tar.gz gdb-9d49bdc28ad672f6e23e9f33759f73968d6885ff.tar.bz2 |
* frame.c (has_stack_frames): Make public.
(get_prev_frame): Don't allow a NULL this_frame anymore.
* frame.h (has_stack_frames): Declare.
* varobj.c (find_frame_addr_in_frame_chain): Don't ever pass NULL
to get_prev_frame, instead start at get_current_frame.
(varobj_create): Check has_stack_frames before getting any frame;
eliminate one usage of deprecated_safe_get_selected_frame.
Diffstat (limited to 'gdb/frame.c')
-rw-r--r-- | gdb/frame.c | 38 |
1 files changed, 1 insertions, 37 deletions
diff --git a/gdb/frame.c b/gdb/frame.c index 7f67d2e..f0aefb5 100644 --- a/gdb/frame.c +++ b/gdb/frame.c @@ -997,7 +997,7 @@ get_current_frame (void) static struct frame_info *selected_frame; -static int +int has_stack_frames (void) { if (!target_has_registers || !target_has_stack || !target_has_memory) @@ -1458,42 +1458,6 @@ get_prev_frame (struct frame_info *this_frame) { struct frame_info *prev_frame; - /* Return the inner-most frame, when the caller passes in NULL. */ - /* NOTE: cagney/2002-11-09: Not sure how this would happen. The - caller should have previously obtained a valid frame using - get_selected_frame() and then called this code - only possibility - I can think of is code behaving badly. - - NOTE: cagney/2003-01-10: Talk about code behaving badly. Check - block_innermost_frame(). It does the sequence: frame = NULL; - while (1) { frame = get_prev_frame (frame); .... }. Ulgh! Why - it couldn't be written better, I don't know. - - NOTE: cagney/2003-01-11: I suspect what is happening in - block_innermost_frame() is, when the target has no state - (registers, memory, ...), it is still calling this function. The - assumption being that this function will return NULL indicating - that a frame isn't possible, rather than checking that the target - has state and then calling get_current_frame() and - get_prev_frame(). This is a guess mind. */ - if (this_frame == NULL) - { - /* NOTE: cagney/2002-11-09: There was a code segment here that - would error out when CURRENT_FRAME was NULL. The comment - that went with it made the claim ... - - ``This screws value_of_variable, which just wants a nice - clean NULL return from block_innermost_frame if there are no - frames. I don't think I've ever seen this message happen - otherwise. And returning NULL here is a perfectly legitimate - thing to do.'' - - Per the above, this code shouldn't even be called with a NULL - THIS_FRAME. */ - frame_debug_got_null_frame (this_frame, "this_frame NULL"); - return current_frame; - } - /* There is always a frame. If this assertion fails, suspect that something should be calling get_selected_frame() or get_current_frame(). */ |