GDB (API)
|
00001 /* Frame unwinder for ia64 frames with libunwind frame information. 00002 00003 Copyright (C) 2003-2013 Free Software Foundation, Inc. 00004 00005 Contributed by Jeff Johnston. 00006 00007 This file is part of GDB. 00008 00009 This program is free software; you can redistribute it and/or modify 00010 it under the terms of the GNU General Public License as published by 00011 the Free Software Foundation; either version 3 of the License, or 00012 (at your option) any later version. 00013 00014 This program is distributed in the hope that it will be useful, 00015 but WITHOUT ANY WARRANTY; without even the implied warranty of 00016 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 00017 GNU General Public License for more details. 00018 00019 You should have received a copy of the GNU General Public License 00020 along with this program. If not, see <http://www.gnu.org/licenses/>. */ 00021 00022 #ifndef IA64_LIBUNWIND_TDEP_H 00023 #define IA64_LIBUNWIND_TDEP_H 1 00024 00025 struct frame_info; 00026 struct frame_id; 00027 struct regcache; 00028 struct gdbarch; 00029 struct frame_unwind; 00030 00031 /* IA-64 is the only target that currently uses libunwind. If some 00032 other target wants to use it, we will need to do some abstracting 00033 in order to make it possible to have more than one 00034 ia64-libunwind-tdep instance. Including "libunwind.h" is wrong as 00035 that ends up including the libunwind-$(arch).h for the host gdb is 00036 running on. */ 00037 #include "libunwind-ia64.h" 00038 00039 struct libunwind_descr 00040 { 00041 int (*gdb2uw) (int); 00042 int (*uw2gdb) (int); 00043 int (*is_fpreg) (int); 00044 void *accessors; 00045 void *special_accessors; 00046 }; 00047 00048 int libunwind_frame_sniffer (const struct frame_unwind *self, 00049 struct frame_info *this_frame, 00050 void **this_cache); 00051 00052 int libunwind_sigtramp_frame_sniffer (const struct frame_unwind *self, 00053 struct frame_info *this_frame, 00054 void **this_cache); 00055 00056 void libunwind_frame_set_descr (struct gdbarch *arch, 00057 struct libunwind_descr *descr); 00058 00059 void libunwind_frame_this_id (struct frame_info *this_frame, void **this_cache, 00060 struct frame_id *this_id); 00061 struct value *libunwind_frame_prev_register (struct frame_info *this_frame, 00062 void **this_cache, int regnum); 00063 void libunwind_frame_dealloc_cache (struct frame_info *self, void *cache); 00064 00065 int libunwind_is_initialized (void); 00066 00067 int libunwind_search_unwind_table (void *as, long ip, void *di, 00068 void *pi, int need_unwind_info, void *args); 00069 00070 unw_word_t libunwind_find_dyn_list (unw_addr_space_t, unw_dyn_info_t *, 00071 void *); 00072 00073 int libunwind_get_reg_special (struct gdbarch *gdbarch, 00074 struct regcache *regcache, 00075 int regnum, void *buf); 00076 00077 #endif /* IA64_LIBUNWIND_TDEP_H */