summaryrefslogtreecommitdiff
path: root/gdb/frame.h
diff options
context:
space:
mode:
Diffstat (limited to 'gdb/frame.h')
-rw-r--r--gdb/frame.h23
1 files changed, 14 insertions, 9 deletions
diff --git a/gdb/frame.h b/gdb/frame.h
index 98dace6cb1e..f77a05edf63 100644
--- a/gdb/frame.h
+++ b/gdb/frame.h
@@ -663,17 +663,22 @@ extern struct frame_extra_info *get_frame_extra_info (struct frame_info *fi);
extern CORE_ADDR *frame_saved_regs_zalloc (struct frame_info *);
extern CORE_ADDR *get_frame_saved_regs (struct frame_info *);
-/* FIXME: cagney/2002-12-06: Has the PC in the current frame changed?
- "infrun.c", Thanks to DECR_PC_AFTER_BREAK, can change the PC after
- the initial frame create. This puts things back in sync. */
+/* FIXME: cagney/2003-01-11: Fix up this frame's frame ID / PC (which
+ is cached in the next frame). The problem here is with read_fp()/
+ FRAME_CHAIN() and read_pc() / FRAME_SAVED_PC. Legacy code, instead
+ of returning the correct frame base from the word go, returns a
+ draft frame base and then fixes it up in INIT_FRAME_PC,
+ INIT_FRAME_PC_FIRST or INIT_EXTRA_FRAME_INFO. Back patch the next
+ frame's frame ID so that it will now return the correct id.
+
+ For the PC, the problems are caused by DECR_PC_AFTER_BREAK and
+ DECR_PC_AFTER_HW_BREAK.
+
+ For the FP, the problems are caused by GDB requesting the FP
+ instead of the SP and, as a consequence, code trying to avoid the
+ overhead of unnecessary prologue analysis. */
extern void deprecated_update_frame_pc_hack (struct frame_info *frame,
CORE_ADDR pc);
-
-/* FIXME: cagney/2002-12-18: Has the frame's base changed? Or to be
- more exact, whas that initial guess at the frame's base as returned
- by read_fp() wrong. If it was, fix it. This shouldn't be
- necessary since the code should be getting the frame's base correct
- from the outset. */
extern void deprecated_update_frame_base_hack (struct frame_info *frame,
CORE_ADDR base);