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/>. */
25 #include "obsd-tdep.h"
28 obsd_skip_solib_resolver (struct gdbarch *gdbarch, CORE_ADDR pc)
30 struct bound_minimal_symbol msym;
32 msym = lookup_minimal_symbol("_dl_bind", NULL, NULL);
33 if (msym.minsym && BMSYMBOL_VALUE_ADDRESS (msym) == pc)
34 return frame_unwind_caller_pc (get_current_frame ());
36 return find_solib_trampoline_target (get_current_frame (), pc);
39 /* OpenBSD signal numbers. From <sys/signal.h>. */
77 /* Implement the "gdb_signal_from_target" gdbarch method. */
79 static enum gdb_signal
80 obsd_gdb_signal_from_target (struct gdbarch *gdbarch, int signal)
88 return GDB_SIGNAL_HUP;
91 return GDB_SIGNAL_INT;
94 return GDB_SIGNAL_QUIT;
97 return GDB_SIGNAL_ILL;
100 return GDB_SIGNAL_TRAP;
103 return GDB_SIGNAL_ABRT;
106 return GDB_SIGNAL_EMT;
109 return GDB_SIGNAL_FPE;
112 return GDB_SIGNAL_KILL;
115 return GDB_SIGNAL_BUS;
118 return GDB_SIGNAL_SEGV;
121 return GDB_SIGNAL_SYS;
124 return GDB_SIGNAL_PIPE;
127 return GDB_SIGNAL_ALRM;
130 return GDB_SIGNAL_TERM;
133 return GDB_SIGNAL_URG;
136 return GDB_SIGNAL_STOP;
139 return GDB_SIGNAL_TSTP;
142 return GDB_SIGNAL_CONT;
145 return GDB_SIGNAL_CHLD;
148 return GDB_SIGNAL_TTIN;
151 return GDB_SIGNAL_TTOU;
154 return GDB_SIGNAL_IO;
157 return GDB_SIGNAL_XCPU;
160 return GDB_SIGNAL_XFSZ;
163 return GDB_SIGNAL_VTALRM;
166 return GDB_SIGNAL_PROF;
169 return GDB_SIGNAL_WINCH;
172 return GDB_SIGNAL_INFO;
175 return GDB_SIGNAL_USR1;
178 return GDB_SIGNAL_USR2;
181 return GDB_SIGNAL_UNKNOWN;
184 /* Implement the "gdb_signal_to_target" gdbarch method. */
187 obsd_gdb_signal_to_target (struct gdbarch *gdbarch,
188 enum gdb_signal signal)
201 case GDB_SIGNAL_QUIT:
207 case GDB_SIGNAL_TRAP:
210 case GDB_SIGNAL_ABRT:
219 case GDB_SIGNAL_KILL:
225 case GDB_SIGNAL_SEGV:
231 case GDB_SIGNAL_PIPE:
234 case GDB_SIGNAL_ALRM:
237 case GDB_SIGNAL_TERM:
243 case GDB_SIGNAL_STOP:
246 case GDB_SIGNAL_TSTP:
249 case GDB_SIGNAL_CONT:
252 case GDB_SIGNAL_CHLD:
255 case GDB_SIGNAL_TTIN:
258 case GDB_SIGNAL_TTOU:
264 case GDB_SIGNAL_XCPU:
267 case GDB_SIGNAL_XFSZ:
270 case GDB_SIGNAL_VTALRM:
271 return OBSD_SIGVTALRM;
273 case GDB_SIGNAL_PROF:
276 case GDB_SIGNAL_WINCH:
277 return OBSD_SIGWINCH;
279 case GDB_SIGNAL_USR1:
282 case GDB_SIGNAL_USR2:
285 case GDB_SIGNAL_INFO:
294 obsd_init_abi (struct gdbarch_info info, struct gdbarch *gdbarch)
296 set_gdbarch_gdb_signal_from_target (gdbarch,
297 obsd_gdb_signal_from_target);
298 set_gdbarch_gdb_signal_to_target (gdbarch,
299 obsd_gdb_signal_to_target);