2012-02-24 Luis Machado <lgustavo@codesourcery>
[deliverable/binutils-gdb.git] / gdb / libunwind-frame.h
CommitLineData
0e5d83e3
JJ
1/* Frame unwinder for frames with libunwind frame information.
2
0b302171 3 Copyright (C) 2003, 2006-2012 Free Software Foundation, Inc.
0e5d83e3
JJ
4
5 Contributed by Jeff Johnston.
6
7 This file is part of GDB.
8
9 This program is free software; you can redistribute it and/or modify
10 it under the terms of the GNU General Public License as published by
a9762ec7 11 the Free Software Foundation; either version 3 of the License, or
0e5d83e3
JJ
12 (at your option) any later version.
13
14 This program is distributed in the hope that it will be useful,
15 but WITHOUT ANY WARRANTY; without even the implied warranty of
16 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
17 GNU General Public License for more details.
18
19 You should have received a copy of the GNU General Public License
a9762ec7 20 along with this program. If not, see <http://www.gnu.org/licenses/>. */
0e5d83e3 21
5439edaa
AC
22struct frame_info;
23struct frame_id;
45ecac4b 24struct regcache;
c5a27d9c 25struct gdbarch;
5439edaa 26
0e5d83e3
JJ
27#ifndef LIBUNWIND_FRAME_H
28#define LIBUNWIND_FRAME_H 1
29
b54a8fd7
PA
30/* IA-64 is the only target that currently uses libunwind. If some
31 other target wants to use it, we will need to do some abstracting
32 in order to make it possible to have more than one libunwind-frame
33 instance. Including "libunwind.h" is wrong as that ends up
34 including the libunwind-$(arch).h for the host gdb is running
35 on. */
36#include "libunwind-ia64.h"
0e5d83e3 37
0e5d83e3
JJ
38struct libunwind_descr
39{
40 int (*gdb2uw) (int);
41 int (*uw2gdb) (int);
42 int (*is_fpreg) (int);
43 void *accessors;
c5a27d9c 44 void *special_accessors;
0e5d83e3
JJ
45};
46
15c1e57f
JB
47int libunwind_frame_sniffer (const struct frame_unwind *self,
48 struct frame_info *this_frame,
49 void **this_cache);
50
51int libunwind_sigtramp_frame_sniffer (const struct frame_unwind *self,
52 struct frame_info *this_frame,
53 void **this_cache);
0e5d83e3 54
3e43a32a
MS
55void libunwind_frame_set_descr (struct gdbarch *arch,
56 struct libunwind_descr *descr);
0e5d83e3 57
15c1e57f 58void libunwind_frame_this_id (struct frame_info *this_frame, void **this_cache,
0e5d83e3 59 struct frame_id *this_id);
15c1e57f
JB
60struct value *libunwind_frame_prev_register (struct frame_info *this_frame,
61 void **this_cache, int regnum);
272dfcfd 62void libunwind_frame_dealloc_cache (struct frame_info *self, void *cache);
15c1e57f
JB
63CORE_ADDR libunwind_frame_base_address (struct frame_info *this_frame,
64 void **this_cache);
0e5d83e3
JJ
65
66int libunwind_is_initialized (void);
67
68int libunwind_search_unwind_table (void *as, long ip, void *di,
69 void *pi, int need_unwind_info, void *args);
70
503ff15d
KB
71unw_word_t libunwind_find_dyn_list (unw_addr_space_t, unw_dyn_info_t *,
72 void *);
73
45ecac4b
UW
74int libunwind_get_reg_special (struct gdbarch *gdbarch,
75 struct regcache *regcache,
76 int regnum, void *buf);
c5a27d9c 77
0e5d83e3 78#endif /* libunwind-frame.h */
This page took 0.637948 seconds and 4 git commands to generate.