/* Target-dependent code for GNU/Linux UltraSPARC.
- Copyright (C) 2003-2020 Free Software Foundation, Inc.
+ Copyright (C) 2003-2022 Free Software Foundation, Inc.
This file is part of GDB.
#include "defs.h"
#include "frame.h"
#include "frame-unwind.h"
-#include "dwarf2-frame.h"
+#include "dwarf2/frame.h"
#include "regset.h"
#include "regcache.h"
#include "gdbarch.h"
trad_frame_set_id (this_cache, frame_id_build (base, func));
}
-/* sparc64 GNU/Linux implementation of the handle_segmentation_fault
+/* sparc64 GNU/Linux implementation of the report_signal_info
gdbarch hook.
Displays information related to ADI memory corruptions. */
static void
-sparc64_linux_handle_segmentation_fault (struct gdbarch *gdbarch,
- struct ui_out *uiout)
+sparc64_linux_report_signal_info (struct gdbarch *gdbarch, struct ui_out *uiout,
+ enum gdb_signal siggnal)
{
- if (gdbarch_bfd_arch_info (gdbarch)->bits_per_word != 64)
+ if (gdbarch_bfd_arch_info (gdbarch)->bits_per_word != 64
+ || siggnal != GDB_SIGNAL_SEGV)
return;
CORE_ADDR addr = 0;
si_code = parse_and_eval_long ("$_siginfo.si_code\n");
if (si_code >= SEGV_ACCADI && si_code <= SEGV_ADIPERR)
- addr = parse_and_eval_long ("$_siginfo._sifields._sigfault.si_addr");
+ addr = parse_and_eval_long ("$_siginfo._sifields._sigfault.si_addr");
}
catch (const gdb_exception &exception)
{
static void
sparc64_linux_write_pc (struct regcache *regcache, CORE_ADDR pc)
{
- struct gdbarch_tdep *tdep = gdbarch_tdep (regcache->arch ());
+ gdbarch *arch = regcache->arch ();
+ sparc_gdbarch_tdep *tdep = (sparc_gdbarch_tdep *) gdbarch_tdep (arch);
ULONGEST state;
regcache_cooked_write_unsigned (regcache, tdep->pc_regnum, pc);
static void
sparc64_linux_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
{
- struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
+ sparc_gdbarch_tdep *tdep = (sparc_gdbarch_tdep *) gdbarch_tdep (gdbarch);
- linux_init_abi (info, gdbarch);
+ linux_init_abi (info, gdbarch, 0);
tdep->gregset = &sparc64_linux_gregset;
tdep->sizeof_gregset = 288;
/* GNU/Linux has SVR4-style shared libraries... */
set_gdbarch_skip_trampoline_code (gdbarch, find_solib_trampoline_target);
set_solib_svr4_fetch_link_map_offsets
- (gdbarch, svr4_lp64_fetch_link_map_offsets);
+ (gdbarch, linux_lp64_fetch_link_map_offsets);
/* ...which means that we need some special handling when doing
prologue analysis. */
/* Enable TLS support. */
set_gdbarch_fetch_tls_load_module_address (gdbarch,
- svr4_fetch_objfile_link_map);
+ svr4_fetch_objfile_link_map);
/* Make sure we can single-step over signal return system calls. */
tdep->step_trap = sparc64_linux_step_trap;
/* Functions for 'catch syscall'. */
set_xml_syscall_file_name (gdbarch, XML_SYSCALL_FILENAME_SPARC64);
set_gdbarch_get_syscall_number (gdbarch,
- sparc64_linux_get_syscall_number);
- set_gdbarch_handle_segmentation_fault (gdbarch,
- sparc64_linux_handle_segmentation_fault);
+ sparc64_linux_get_syscall_number);
+ set_gdbarch_report_signal_info (gdbarch, sparc64_linux_report_signal_info);
}
void _initialize_sparc64_linux_tdep ();