mirror of
https://github.com/bminor/binutils-gdb.git
synced 2025-12-27 01:28:46 +00:00
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.
This commit is contained in:
@@ -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 */
|
||||
|
||||
Reference in New Issue
Block a user