]> git.ipfire.org Git - thirdparty/binutils-gdb.git/blame - gdb/ia64-libunwind-tdep.h
Fix regression on aarch64-linux gdbserver
[thirdparty/binutils-gdb.git] / gdb / ia64-libunwind-tdep.h
CommitLineData
05e7c244 1/* Frame unwinder for ia64 frames with libunwind frame information.
0e5d83e3 2
1d506c26 3 Copyright (C) 2003-2024 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
05e7c244
JK
22#ifndef IA64_LIBUNWIND_TDEP_H
23#define IA64_LIBUNWIND_TDEP_H 1
24
bd2b40ac 25class frame_info_ptr;
5439edaa 26struct frame_id;
45ecac4b 27struct regcache;
c5a27d9c 28struct gdbarch;
3755cbfd 29struct frame_unwind;
5439edaa 30
b54a8fd7
PA
31/* IA-64 is the only target that currently uses libunwind. If some
32 other target wants to use it, we will need to do some abstracting
05e7c244
JK
33 in order to make it possible to have more than one
34 ia64-libunwind-tdep instance. Including "libunwind.h" is wrong as
35 that ends up including the libunwind-$(arch).h for the host gdb is
36 running on. */
b54a8fd7 37#include "libunwind-ia64.h"
0e5d83e3 38
f1264162
TT
39#include "gdbarch.h"
40
0e5d83e3
JJ
41struct libunwind_descr
42{
cb275538
TT
43 int (*gdb2uw) (int) = nullptr;
44 int (*uw2gdb) (int) = nullptr;
45 int (*is_fpreg) (int) = nullptr;
46 void *accessors = nullptr;
47 void *special_accessors = nullptr;
0e5d83e3
JJ
48};
49
15c1e57f 50int libunwind_frame_sniffer (const struct frame_unwind *self,
8480a37e 51 const frame_info_ptr &this_frame,
dda83cd7
SM
52 void **this_cache);
53
15c1e57f 54int libunwind_sigtramp_frame_sniffer (const struct frame_unwind *self,
8480a37e 55 const frame_info_ptr &this_frame,
dda83cd7 56 void **this_cache);
0e5d83e3 57
3e43a32a
MS
58void libunwind_frame_set_descr (struct gdbarch *arch,
59 struct libunwind_descr *descr);
0e5d83e3 60
8480a37e 61void libunwind_frame_this_id (const frame_info_ptr &this_frame, void **this_cache,
0e5d83e3 62 struct frame_id *this_id);
8480a37e 63struct value *libunwind_frame_prev_register (const frame_info_ptr &this_frame,
dda83cd7 64 void **this_cache, int regnum);
bd2b40ac 65void libunwind_frame_dealloc_cache (frame_info_ptr self, void *cache);
0e5d83e3
JJ
66
67int libunwind_is_initialized (void);
68
69int libunwind_search_unwind_table (void *as, long ip, void *di,
70 void *pi, int need_unwind_info, void *args);
71
503ff15d
KB
72unw_word_t libunwind_find_dyn_list (unw_addr_space_t, unw_dyn_info_t *,
73 void *);
74
45ecac4b 75int libunwind_get_reg_special (struct gdbarch *gdbarch,
933522d1 76 readable_regcache *regcache,
45ecac4b 77 int regnum, void *buf);
c5a27d9c 78
05e7c244 79#endif /* IA64_LIBUNWIND_TDEP_H */