summaryrefslogtreecommitdiff
path: root/gdb/libunwind-frame.h
diff options
context:
space:
mode:
authorJeff Johnston <jjohnstn@redhat.com>2005-06-08 21:54:23 +0000
committerJeff Johnston <jjohnstn@redhat.com>2005-06-08 21:54:23 +0000
commit8cfe1b751939b4067196f2411d2401f811559d30 (patch)
tree1d4ccf43bf3b12891ff41788ef04089eab64dcb7 /gdb/libunwind-frame.h
parentd96960bb461ba09b1eb9ab7984a26874d06f205f (diff)
downloadgdb-8cfe1b751939b4067196f2411d2401f811559d30.tar.gz
2005-06-08 Jeff Johnston <jjohnstn@redhat.com>
David Mosberger <davidm@hpl.hp.com> * ia64-tdep.c (KERNEL_START): New macro. (ia64_pseudo_register_read): Fix code to use libunwind to properly get the rse registers. (ia64_frame_this_id): Mark outermost frame with null frame id. (ia64_sigtramp_frame_prev_register): Fix up debug output. (ia64_access_rse_reg): New accessor function. (ia64_access_mem): Add special logic for accessing the kernel's unwind table. (getunwind_table): Fix for corefiles. (get_kernel_table): Fix to handle vDSO. (ia64_libunwind_frame_this_id): Check for null frame id and don't unwind past pc value of 0. Fix debugging output. (ia64_libunwind_sigtramp_frame_this_id): New function. (ia64_libunwind_sigtramp_frame_prev_register): Ditto. (ia64_libunwind_sigtramp_frame_sniffer): Ditto. (ia64_libunwind_sigtramp_frame_unwind): New unwinder. (ia64_unw_rse_accessors): New libunwind accessors. (ia64_libunwind_descr): Add ia64_unw_rse_accessors. (ia64_gdbarch_init)[HAVE_LIBUNWIND_IA64_H]: Use ia64_libunwind_sigtramp_frame_sniffer instead of ia64_sigtramp_frame_sniffer. * libunwind-frame.c (libunwind_frame_set_descr): Add special register accessors. (libunwind_frame_cache): Add special logic to check for 0 pc value. Check for a signal trampoline frame. (libunwind_frame_this_id): Check if libunwind_frame_cache returns NULL. (libunwind_frame_prev_register): Check for NULL cache. (libunwind_frame_base_address): Ditto. (libunwind_sigtramp_frame_sniffer): New function. (libunwind_get_reg_special): Ditto. (libunwind_load): Add unw_is_signal_frame support. * libunwind-frame.h (struct libunwind_descr): Add special_accessors field. (libunwind_sigtramp_frame_sniffer): New prototype. (libunwind_get_reg_special): Ditto.
Diffstat (limited to 'gdb/libunwind-frame.h')
-rw-r--r--gdb/libunwind-frame.h5
1 files changed, 5 insertions, 0 deletions
diff --git a/gdb/libunwind-frame.h b/gdb/libunwind-frame.h
index e47a792cc98..5a90235f6d7 100644
--- a/gdb/libunwind-frame.h
+++ b/gdb/libunwind-frame.h
@@ -25,6 +25,7 @@
struct frame_info;
struct frame_id;
+struct gdbarch;
#ifndef LIBUNWIND_FRAME_H
#define LIBUNWIND_FRAME_H 1
@@ -37,9 +38,11 @@ struct libunwind_descr
int (*uw2gdb) (int);
int (*is_fpreg) (int);
void *accessors;
+ void *special_accessors;
};
const struct frame_unwind *libunwind_frame_sniffer (struct frame_info *next_frame);
+const struct frame_unwind *libunwind_sigtramp_frame_sniffer (struct frame_info *next_frame);
void libunwind_frame_set_descr (struct gdbarch *arch, struct libunwind_descr *descr);
@@ -59,6 +62,8 @@ int libunwind_search_unwind_table (void *as, long ip, void *di,
unw_word_t libunwind_find_dyn_list (unw_addr_space_t, unw_dyn_info_t *,
void *);
+int libunwind_get_reg_special (struct gdbarch *gdbarch, int regnum, void *buf);
+
#endif /* libunwind-frame.h */
#endif /* HAVE_LIBUNWIND_H */