Handle multiple target events before commit resume
[deliverable/binutils-gdb.git] / gdb / arm-nbsd-tdep.c
CommitLineData
424f3115 1/* Target-dependent code for NetBSD/arm.
527ca6bb 2
11bc5fe4 3 Copyright (C) 2002-2020 Free Software Foundation, Inc.
66e810cd
RE
4
5 This file is part of GDB.
6
7 This program is free software; you can redistribute it and/or modify
8 it under the terms of the GNU General Public License as published by
a9762ec7 9 the Free Software Foundation; either version 3 of the License, or
66e810cd
RE
10 (at your option) any later version.
11
12 This program is distributed in the hope that it will be useful,
13 but WITHOUT ANY WARRANTY; without even the implied warranty of
14 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 GNU General Public License for more details.
16
17 You should have received a copy of the GNU General Public License
a9762ec7 18 along with this program. If not, see <http://www.gnu.org/licenses/>. */
66e810cd
RE
19
20#include "defs.h"
4de283e4 21#include "osabi.h"
66e810cd 22
cba7e83f 23#include "arch/arm.h"
66e810cd 24#include "arm-tdep.h"
9eeef8ef 25#include "solib-svr4.h"
66e810cd 26
9df628e0 27/* Description of the longjmp buffer. */
625602f2 28#define ARM_NBSD_JB_PC 24
f0452268 29#define ARM_NBSD_JB_ELEMENT_SIZE ARM_INT_REGISTER_SIZE
9df628e0 30
85102364 31/* For compatibility with previous implementations of GDB on arm/NetBSD,
66e810cd 32 override the default little-endian breakpoint. */
948f8e3d
PA
33static const gdb_byte arm_nbsd_arm_le_breakpoint[] = {0x11, 0x00, 0x00, 0xe6};
34static const gdb_byte arm_nbsd_arm_be_breakpoint[] = {0xe6, 0x00, 0x00, 0x11};
35static const gdb_byte arm_nbsd_thumb_le_breakpoint[] = {0xfe, 0xde};
36static const gdb_byte arm_nbsd_thumb_be_breakpoint[] = {0xde, 0xfe};
66e810cd
RE
37
38static void
39arm_netbsd_init_abi_common (struct gdbarch_info info,
40 struct gdbarch *gdbarch)
41{
42 struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
43
44 tdep->lowest_pc = 0x8000;
2afeb6b8
RE
45 switch (info.byte_order)
46 {
47 case BFD_ENDIAN_LITTLE:
48 tdep->arm_breakpoint = arm_nbsd_arm_le_breakpoint;
49 tdep->thumb_breakpoint = arm_nbsd_thumb_le_breakpoint;
50 tdep->arm_breakpoint_size = sizeof (arm_nbsd_arm_le_breakpoint);
51 tdep->thumb_breakpoint_size = sizeof (arm_nbsd_thumb_le_breakpoint);
52 break;
53
54 case BFD_ENDIAN_BIG:
55 tdep->arm_breakpoint = arm_nbsd_arm_be_breakpoint;
56 tdep->thumb_breakpoint = arm_nbsd_thumb_be_breakpoint;
57 tdep->arm_breakpoint_size = sizeof (arm_nbsd_arm_be_breakpoint);
58 tdep->thumb_breakpoint_size = sizeof (arm_nbsd_thumb_be_breakpoint);
59 break;
60
61 default:
62 internal_error (__FILE__, __LINE__,
edefbb7c 63 _("arm_gdbarch_init: bad byte order for float format"));
2afeb6b8 64 }
9df628e0 65
625602f2
RE
66 tdep->jb_pc = ARM_NBSD_JB_PC;
67 tdep->jb_elt_size = ARM_NBSD_JB_ELEMENT_SIZE;
190dce09
UW
68
69 /* Single stepping. */
70 set_gdbarch_software_single_step (gdbarch, arm_software_single_step);
66e810cd
RE
71}
72
66e810cd 73static void
424f3115 74arm_netbsd_elf_init_abi (struct gdbarch_info info,
66e810cd
RE
75 struct gdbarch *gdbarch)
76{
08216dd7
RE
77 struct gdbarch_tdep *tdep = gdbarch_tdep (gdbarch);
78
66e810cd 79 arm_netbsd_init_abi_common (info, gdbarch);
28e97307
DJ
80 if (tdep->fp_model == ARM_FLOAT_AUTO)
81 tdep->fp_model = ARM_FLOAT_SOFT_VFP;
a4ab4a25
MK
82
83 /* NetBSD ELF uses SVR4-style shared libraries. */
84 set_solib_svr4_fetch_link_map_offsets
424f3115 85 (gdbarch, svr4_ilp32_fetch_link_map_offsets);
66e810cd
RE
86}
87
88void
89_initialize_arm_netbsd_tdep (void)
90{
1736a7bd 91 gdbarch_register_osabi (bfd_arch_arm, 0, GDB_OSABI_NETBSD,
70f80edf 92 arm_netbsd_elf_init_abi);
66e810cd 93}
This page took 1.061654 seconds and 4 git commands to generate.