/* Target-dependent code for the ia64.
- Copyright (C) 2004, 2005, 2007, 2008, 2009, 2010, 2011
- Free Software Foundation, Inc.
+ Copyright (C) 2004-2022 Free Software Foundation, Inc.
This file is part of GDB.
#ifndef IA64_TDEP_H
#define IA64_TDEP_H
+#include "gdbarch.h"
+
+#ifdef HAVE_LIBUNWIND_IA64_H
+#include "libunwind-ia64.h"
+#include "ia64-libunwind-tdep.h"
+#endif
+
/* Register numbers of various important registers. */
/* General registers; there are 128 of these 64 bit wide registers.
/* Store the argument stored in BUF into the appropriate location
given the BSP and the SLOTNUM. */
void (*store_argument_in_slot) (struct regcache *regcache, CORE_ADDR bsp,
- int slotnum, gdb_byte *buf);
+ int slotnum, gdb_byte *buf);
/* For targets where we cannot call the function directly, store
the address of the function we want to call at the location
void (*set_function_addr) (struct regcache *regcache, CORE_ADDR func_addr);
};
-struct gdbarch_tdep
+struct ia64_gdbarch_tdep : gdbarch_tdep
{
- CORE_ADDR (*sigcontext_register_address) (struct gdbarch *, CORE_ADDR, int);
- int (*pc_in_sigtramp) (CORE_ADDR);
+ CORE_ADDR (*sigcontext_register_address) (struct gdbarch *, CORE_ADDR, int)
+ = nullptr;
+ int (*pc_in_sigtramp) (CORE_ADDR) = nullptr;
/* Return the total size of THIS_FRAME's register frame.
CFM is THIS_FRAME's cfm register value.
Normally, the size of the register frame is always obtained by
extracting the lowest 7 bits ("cfm & 0x7f"). */
- int (*size_of_register_frame) (struct frame_info *this_frame, ULONGEST cfm);
+ int (*size_of_register_frame) (struct frame_info *this_frame, ULONGEST cfm)
+ = nullptr;
/* Determine the function address FADDR belongs to a shared library.
If it does, then return the associated global pointer. If no shared
This pointer may be NULL. */
CORE_ADDR (*find_global_pointer_from_solib) (struct gdbarch *gdbarch,
- CORE_ADDR faddr);
+ CORE_ADDR faddr) = nullptr;
/* ISA-specific data types. */
- struct type *ia64_ext_type;
+ struct type *ia64_ext_type = nullptr;
- struct ia64_infcall_ops infcall_ops;
+ struct ia64_infcall_ops infcall_ops {};
};
extern void ia64_write_pc (struct regcache *, CORE_ADDR);
+#ifdef HAVE_LIBUNWIND_IA64_H
+extern unw_accessors_t ia64_unw_accessors;
+extern unw_accessors_t ia64_unw_rse_accessors;
+extern struct libunwind_descr ia64_libunwind_descr;
+#endif
+
#endif /* ia64-tdep.h */