GDB (API)
/home/stan/gdb/src/gdb/ia64-libunwind-tdep.h
Go to the documentation of this file.
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 */
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Defines