1130803Smarcel/* Frame unwinder for frames with libunwind frame information.
2130803Smarcel
3130803Smarcel   Copyright 2003 Free Software Foundation, Inc.
4130803Smarcel
5130803Smarcel   Contributed by Jeff Johnston.
6130803Smarcel
7130803Smarcel   This file is part of GDB.
8130803Smarcel
9130803Smarcel   This program is free software; you can redistribute it and/or modify
10130803Smarcel   it under the terms of the GNU General Public License as published by
11130803Smarcel   the Free Software Foundation; either version 2 of the License, or
12130803Smarcel   (at your option) any later version.
13130803Smarcel
14130803Smarcel   This program is distributed in the hope that it will be useful,
15130803Smarcel   but WITHOUT ANY WARRANTY; without even the implied warranty of
16130803Smarcel   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
17130803Smarcel   GNU General Public License for more details.
18130803Smarcel
19130803Smarcel   You should have received a copy of the GNU General Public License
20130803Smarcel   along with this program; if not, write to the Free Software
21130803Smarcel   Foundation, Inc., 59 Temple Place - Suite 330,
22130803Smarcel   Boston, MA 02111-1307, USA.  */
23130803Smarcel
24130803Smarcel#ifdef HAVE_LIBUNWIND_H
25130803Smarcel
26130803Smarcelstruct frame_info;
27130803Smarcelstruct frame_id;
28130803Smarcel
29130803Smarcel#ifndef LIBUNWIND_FRAME_H
30130803Smarcel#define LIBUNWIND_FRAME_H 1
31130803Smarcel
32130803Smarcel#include "libunwind.h"
33130803Smarcel
34130803Smarcelstruct libunwind_descr
35130803Smarcel{
36130803Smarcel  int (*gdb2uw) (int);
37130803Smarcel  int (*uw2gdb) (int);
38130803Smarcel  int (*is_fpreg) (int);
39130803Smarcel  void *accessors;
40130803Smarcel};
41130803Smarcel
42130803Smarcelconst struct frame_unwind *libunwind_frame_sniffer (struct frame_info *next_frame);
43130803Smarcel
44130803Smarcelvoid libunwind_frame_set_descr (struct gdbarch *arch, struct libunwind_descr *descr);
45130803Smarcel
46130803Smarcelvoid libunwind_frame_this_id (struct frame_info *next_frame, void **this_cache,
47130803Smarcel			      struct frame_id *this_id);
48130803Smarcelvoid libunwind_frame_prev_register (struct frame_info *next_frame, void **this_cache,
49130803Smarcel				    int regnum, int *optimizedp,
50130803Smarcel				    enum lval_type *lvalp, CORE_ADDR *addrp,
51130803Smarcel				    int *realnump, void *valuep);
52130803SmarcelCORE_ADDR libunwind_frame_base_address (struct frame_info *next_frame, void **this_cache);
53130803Smarcel
54130803Smarcelint libunwind_is_initialized (void);
55130803Smarcel
56130803Smarcelint libunwind_search_unwind_table (void *as, long ip, void *di,
57130803Smarcel				   void *pi, int need_unwind_info, void *args);
58130803Smarcel
59130803Smarcelunw_word_t libunwind_find_dyn_list (unw_addr_space_t, unw_dyn_info_t *,
60130803Smarcel				    void *);
61130803Smarcel
62130803Smarcel#endif /* libunwind-frame.h */
63130803Smarcel
64130803Smarcel#endif /* HAVE_LIBUNWIND_H  */
65