diff options
author | Andrew Cagney <cagney@redhat.com> | 2003-04-05 18:54:38 +0000 |
---|---|---|
committer | Andrew Cagney <cagney@redhat.com> | 2003-04-05 18:54:38 +0000 |
commit | be41e9f456f8eb05e1aa2eae0532d0ea5e97a662 (patch) | |
tree | 055243a66f382d80493ca48da5b0dbf91a0521b9 /gdb/frame.c | |
parent | a01dd7cc8d585aa836a74523790343e52fcad23d (diff) | |
download | gdb-be41e9f456f8eb05e1aa2eae0532d0ea5e97a662.zip gdb-be41e9f456f8eb05e1aa2eae0532d0ea5e97a662.tar.gz gdb-be41e9f456f8eb05e1aa2eae0532d0ea5e97a662.tar.bz2 |
2003-04-05 Andrew Cagney <cagney@redhat.com>
* frame.c (frame_func_unwind, get_frame_func): New functions.
* frame.h (get_frame_func, frame_func_unwind): Declare.
(struct frame_info): Add field "prev_func" for caching the
previous frame's function address.
* arm-tdep.c (arm_frameless_function_invocation): Combine
get_pc_function_start and get_frame_pc into get_frame_func.
* sh-tdep.c (sh_nofp_frame_init_saved_regs): Ditto.
(sh64_nofp_frame_init_saved_regs): Ditto.
* s390-tdep.c (s390_function_start): Ditto.
* rs6000-tdep.c (rs6000_pop_frame): Ditto.
(rs6000_frameless_function_invocation): Ditto.
(rs6000_frame_saved_pc): Ditto.
* m68k-tdep.c (m68k_frame_init_saved_regs): Ditto.
* ia64-tdep.c (ia64_frame_init_saved_regs): Ditto.
* i386-tdep.c (i386_frameless_signal_p): Ditto.
(i386_frame_init_saved_regs): Ditto.
* hppa-tdep.c (hppa_frame_find_saved_regs): Ditto.
* d10v-tdep.c (d10v_frame_unwind_cache): Combine
get_pc_function_start and frame_pc_unwind into frame_func_unwind.
* cris-tdep.c (cris_frame_init_saved_regs): Ditto.
* blockframe.c (frameless_look_for_prologue): Ditto.
Diffstat (limited to 'gdb/frame.c')
-rw-r--r-- | gdb/frame.c | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/gdb/frame.c b/gdb/frame.c index 161ff60..b58900b 100644 --- a/gdb/frame.c +++ b/gdb/frame.c @@ -190,6 +190,23 @@ frame_pc_unwind (struct frame_info *this_frame) return this_frame->pc_unwind_cache; } +CORE_ADDR +frame_func_unwind (struct frame_info *fi) +{ + if (!fi->prev_func.p) + { + fi->prev_func.p = 1; + fi->prev_func.addr = get_pc_function_start (frame_pc_unwind (fi)); + } + return fi->prev_func.addr; +} + +CORE_ADDR +get_frame_func (struct frame_info *fi) +{ + return frame_func_unwind (fi->next); +} + static int do_frame_unwind_register (void *src, int regnum, void *buf) { |