diff options
author | Jeff Johnston <jjohnstn@redhat.com> | 2005-06-08 21:54:23 +0000 |
---|---|---|
committer | Jeff Johnston <jjohnstn@redhat.com> | 2005-06-08 21:54:23 +0000 |
commit | c5a27d9ca51b32accd04503e79c8dd01fc47eed2 (patch) | |
tree | 3d42d414b51c4ff1bbd55a000fa18bf1ccfe9cd0 /gdb/libunwind-frame.h | |
parent | 4dddc1d199cc4301671b6612fcbcb5372f9d6237 (diff) | |
download | gdb-c5a27d9ca51b32accd04503e79c8dd01fc47eed2.zip gdb-c5a27d9ca51b32accd04503e79c8dd01fc47eed2.tar.gz gdb-c5a27d9ca51b32accd04503e79c8dd01fc47eed2.tar.bz2 |
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.h | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/gdb/libunwind-frame.h b/gdb/libunwind-frame.h index e47a792..5a90235 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 */ |