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/frame.h | |
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/frame.h')
-rw-r--r-- | gdb/frame.h | 25 |
1 files changed, 2 insertions, 23 deletions
diff --git a/gdb/frame.h b/gdb/frame.h index 1441e12..231aa32 100644 --- a/gdb/frame.h +++ b/gdb/frame.h @@ -111,7 +111,7 @@ struct frame_id frames that do not change the stack but are still distinct and have some form of distinct identifier (e.g. the ia64 which uses a 2nd stack for registers). This field is treated as unordered - i.e. will - not be used in frame ordering comparisons such as frame_id_inner(). + not be used in frame ordering comparisons. This field is valid only if special_addr_p is true. Otherwise, this frame is considered to have a wildcard special address, i.e. one that @@ -124,22 +124,7 @@ struct frame_id unsigned int special_addr_p : 1; }; -/* Methods for constructing and comparing Frame IDs. - - NOTE: Given stackless functions A and B, where A calls B (and hence - B is inner-to A). The relationships: !eq(A,B); !eq(B,A); - !inner(A,B); !inner(B,A); all hold. - - This is because, while B is inner-to A, B is not strictly inner-to A. - Being stackless, they have an identical .stack_addr value, and differ - only by their unordered .code_addr and/or .special_addr values. - - Because frame_id_inner is only used as a safety net (e.g., - detect a corrupt stack) the lack of strictness is not a problem. - Code needing to determine an exact relationship between two frames - must instead use frame_id_eq and frame_id_unwind. For instance, - in the above, to determine that A stepped-into B, the equation - "A.id != B.id && A.id == id_unwind (B)" can be used. */ +/* Methods for constructing and comparing Frame IDs. */ /* For convenience. All fields are zero. */ extern const struct frame_id null_frame_id; @@ -176,12 +161,6 @@ extern int frame_id_p (struct frame_id l); either L or R have a zero .func, then the same frame base. */ extern int frame_id_eq (struct frame_id l, struct frame_id r); -/* Returns non-zero when L is strictly inner-than R (they have - different frame .bases). Neither L, nor R can be `null'. See note - above about frameless functions. */ -extern int frame_id_inner (struct gdbarch *gdbarch, struct frame_id l, - struct frame_id r); - /* Write the internal representation of a frame ID on the specified stream. */ extern void fprint_frame_id (struct ui_file *file, struct frame_id id); |