aboutsummaryrefslogtreecommitdiff
path: root/gdb/blockframe.c
diff options
context:
space:
mode:
Diffstat (limited to 'gdb/blockframe.c')
-rw-r--r--gdb/blockframe.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/gdb/blockframe.c b/gdb/blockframe.c
index 0c79461..bbd4287 100644
--- a/gdb/blockframe.c
+++ b/gdb/blockframe.c
@@ -805,6 +805,29 @@ block_innermost_frame (block)
}
}
+/* Return the full FRAME which corresponds to the given FRAME_ADDR
+ or NULL if no FRAME on the chain corresponds to FRAME_ADDR. */
+
+FRAME
+find_frame_addr_in_frame_chain (frame_addr)
+ FRAME_ADDR frame_addr;
+{
+ FRAME frame = NULL;
+
+ if (frame_addr == NULL)
+ return NULL;
+
+ while (1)
+ {
+ frame = get_prev_frame (frame);
+ if (frame == NULL)
+ return NULL;
+
+ if (FRAME_FP (frame) == frame_addr)
+ return frame;
+ }
+}
+
#ifdef SIGCONTEXT_PC_OFFSET
/* Get saved user PC for sigtramp from sigcontext for BSD style sigtramp. */