1 /* Target-dependent code for OpenBSD.
3 Copyright (C) 2005-2014 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/>. */
24 #include "obsd-tdep.h"
27 obsd_skip_solib_resolver (struct gdbarch *gdbarch, CORE_ADDR pc)
29 struct minimal_symbol *msym;
31 msym = lookup_minimal_symbol("_dl_bind", NULL, NULL);
32 if (msym && MSYMBOL_VALUE_ADDRESS (msym) == 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:
293 obsd_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
295 set_gdbarch_gdb_signal_from_target (gdbarch,
296 obsd_gdb_signal_from_target);
297 set_gdbarch_gdb_signal_to_target (gdbarch,
298 obsd_gdb_signal_to_target);