1 /* Target-dependent code for OpenBSD.
3 Copyright (C) 2005-2024 Free Software Foundation, Inc.
5 This file is part of GDB.
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
9 the Free Software Foundation; either version 3 of the License, or
10 (at your option) any later version.
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.
17 You should have received a copy of the GNU General Public License
18 along with this program. If not, see <http://www.gnu.org/licenses/>. */
25 #include "obsd-tdep.h"
28 obsd_skip_solib_resolver (struct gdbarch
*gdbarch
, CORE_ADDR pc
)
30 bound_minimal_symbol msym
31 = lookup_minimal_symbol (current_program_space
, "_dl_bind");
32 if (msym
.minsym
&& msym
.value_address () == pc
)
33 return frame_unwind_caller_pc (get_current_frame ());
35 return find_solib_trampoline_target (get_current_frame (), pc
);
38 /* OpenBSD signal numbers. From <sys/signal.h>. */
76 /* Implement the "gdb_signal_from_target" gdbarch method. */
78 static enum gdb_signal
79 obsd_gdb_signal_from_target (struct gdbarch
*gdbarch
, int signal
)
87 return GDB_SIGNAL_HUP
;
90 return GDB_SIGNAL_INT
;
93 return GDB_SIGNAL_QUIT
;
96 return GDB_SIGNAL_ILL
;
99 return GDB_SIGNAL_TRAP
;
102 return GDB_SIGNAL_ABRT
;
105 return GDB_SIGNAL_EMT
;
108 return GDB_SIGNAL_FPE
;
111 return GDB_SIGNAL_KILL
;
114 return GDB_SIGNAL_BUS
;
117 return GDB_SIGNAL_SEGV
;
120 return GDB_SIGNAL_SYS
;
123 return GDB_SIGNAL_PIPE
;
126 return GDB_SIGNAL_ALRM
;
129 return GDB_SIGNAL_TERM
;
132 return GDB_SIGNAL_URG
;
135 return GDB_SIGNAL_STOP
;
138 return GDB_SIGNAL_TSTP
;
141 return GDB_SIGNAL_CONT
;
144 return GDB_SIGNAL_CHLD
;
147 return GDB_SIGNAL_TTIN
;
150 return GDB_SIGNAL_TTOU
;
153 return GDB_SIGNAL_IO
;
156 return GDB_SIGNAL_XCPU
;
159 return GDB_SIGNAL_XFSZ
;
162 return GDB_SIGNAL_VTALRM
;
165 return GDB_SIGNAL_PROF
;
168 return GDB_SIGNAL_WINCH
;
171 return GDB_SIGNAL_INFO
;
174 return GDB_SIGNAL_USR1
;
177 return GDB_SIGNAL_USR2
;
180 return GDB_SIGNAL_UNKNOWN
;
183 /* Implement the "gdb_signal_to_target" gdbarch method. */
186 obsd_gdb_signal_to_target (struct gdbarch
*gdbarch
,
187 enum gdb_signal signal
)
200 case GDB_SIGNAL_QUIT
:
206 case GDB_SIGNAL_TRAP
:
209 case GDB_SIGNAL_ABRT
:
218 case GDB_SIGNAL_KILL
:
224 case GDB_SIGNAL_SEGV
:
230 case GDB_SIGNAL_PIPE
:
233 case GDB_SIGNAL_ALRM
:
236 case GDB_SIGNAL_TERM
:
242 case GDB_SIGNAL_STOP
:
245 case GDB_SIGNAL_TSTP
:
248 case GDB_SIGNAL_CONT
:
251 case GDB_SIGNAL_CHLD
:
254 case GDB_SIGNAL_TTIN
:
257 case GDB_SIGNAL_TTOU
:
263 case GDB_SIGNAL_XCPU
:
266 case GDB_SIGNAL_XFSZ
:
269 case GDB_SIGNAL_VTALRM
:
270 return OBSD_SIGVTALRM
;
272 case GDB_SIGNAL_PROF
:
275 case GDB_SIGNAL_WINCH
:
276 return OBSD_SIGWINCH
;
278 case GDB_SIGNAL_USR1
:
281 case GDB_SIGNAL_USR2
:
284 case GDB_SIGNAL_INFO
:
292 obsd_init_abi (struct gdbarch_info info
, struct gdbarch
*gdbarch
)
294 set_gdbarch_gdb_signal_from_target (gdbarch
,
295 obsd_gdb_signal_from_target
);
296 set_gdbarch_gdb_signal_to_target (gdbarch
,
297 obsd_gdb_signal_to_target
);
299 set_gdbarch_auxv_parse (gdbarch
, svr4_auxv_parse
);