From eb7cedd98560138862f06e1cdbe182229b8703f4 Mon Sep 17 00:00:00 2001 From: Mark Kettenis Date: Fri, 23 Nov 2001 23:01:54 +0000 Subject: [PATCH] Add x86 OpenBSD native configuration. * config/i386/obsd.mt, config/i386/tm-obsd.h, config/i386/obsd.mh, config/i386/nm-obsd.h: New files. * configure.host (i[3456]86-*-openbsd*): New host. * configure.tgt (i[3456]86-*-openbsd*): New target. * NEWS: Update. --- gdb/ChangeLog | 9 ++++ gdb/NEWS | 6 +++ gdb/config/i386/nm-obsd.h | 110 ++++++++++++++++++++++++++++++++++++++ gdb/config/i386/obsd.mh | 8 +++ gdb/config/i386/obsd.mt | 3 ++ gdb/config/i386/tm-obsd.h | 77 ++++++++++++++++++++++++++ gdb/configure.host | 1 + gdb/configure.tgt | 1 + 8 files changed, 215 insertions(+) create mode 100644 gdb/config/i386/nm-obsd.h create mode 100644 gdb/config/i386/obsd.mh create mode 100644 gdb/config/i386/obsd.mt create mode 100644 gdb/config/i386/tm-obsd.h diff --git a/gdb/ChangeLog b/gdb/ChangeLog index 1fed8152a41..8f5dc9111d8 100644 --- a/gdb/ChangeLog +++ b/gdb/ChangeLog @@ -1,3 +1,12 @@ +2001-11-23 Mark Kettenis + + Add x86 OpenBSD native configuration. + * config/i386/obsd.mt, config/i386/tm-obsd.h, config/i386/obsd.mh, + config/i386/nm-obsd.h: New files. + * configure.host (i[3456]86-*-openbsd*): New host. + * configure.tgt (i[3456]86-*-openbsd*): New target. + * NEWS: Update. + 2001-11-21 GDB Administrator * GDB 5.1 was released. diff --git a/gdb/NEWS b/gdb/NEWS index efc79d70d8d..5d9468566b9 100644 --- a/gdb/NEWS +++ b/gdb/NEWS @@ -1,6 +1,12 @@ What has changed in GDB? (Organized release by release) +*** Changes since GDB 5.1: + +* New native configurations + +x86 OpenBSD i[3456]86-*-openbsd* + *** Changes in GDB 5.1: * New native configurations diff --git a/gdb/config/i386/nm-obsd.h b/gdb/config/i386/nm-obsd.h new file mode 100644 index 00000000000..6113e140088 --- /dev/null +++ b/gdb/config/i386/nm-obsd.h @@ -0,0 +1,110 @@ +/* Native-dependent definitions for OpenBSD/i386. + Copyright 2001 Free Software Foundation, Inc. + + This file is part of GDB. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#ifndef NM_OBSD_H +#define NM_OBSD_H + +/* Type of the third argument to the `ptrace' system call. */ +#define PTRACE_ARG3_TYPE caddr_t + +/* Override copies of {fetch,store}_inferior_registers in `infptrace.c'. */ +#define FETCH_INFERIOR_REGISTERS + +/* We can attach and detach. */ +#define ATTACH_DETACH + + +/* Support for the user struct. */ + +/* Return the size of the user struct. */ + +#define KERNEL_U_SIZE kernel_u_size () +extern int kernel_u_size (void); + +/* This is the amount to subtract from u.u_ar0 + to get the offset in the core file of the register values. */ + +#include +#define KERNEL_U_ADDR USRSTACK + +#define REGISTER_U_ADDR(addr, blockend, regno) \ + (addr) = register_u_addr ((blockend), (regno)) +extern CORE_ADDR register_u_addr (CORE_ADDR blockend, int regno); + + +/* Shared library support. */ + +#include "solib.h" /* Support for shared libraries. */ + +/* Make structure definitions match up with those expected in `solib.c'. */ + +#define link_object sod +#define lo_name sod_name +#define lo_library sod_library +#define lo_unused sod_reserved +#define lo_major sod_major +#define lo_minor sod_minor +#define lo_next sod_next + +#define link_map so_map +#define lm_addr som_addr +#define lm_name som_path +#define lm_next som_next +#define lm_lop som_sod +#define lm_lob som_sodbase +#define lm_rwt som_write +#define lm_ld som_dynamic +#define lm_lpd som_spd + +#define link_dynamic_2 section_dispatch_table +#define ld_loaded sdt_loaded +#define ld_need sdt_sods +#define ld_rules sdt_filler1 +#define ld_got sdt_got +#define ld_plt sdt_plt +#define ld_rel sdt_rel +#define ld_hash sdt_hash +#define ld_stab sdt_nzlist +#define ld_stab_hash sdt_filler2 +#define ld_buckets sdt_buckets +#define ld_symbols sdt_strings +#define ld_symb_size sdt_str_sz +#define ld_text sdt_text_sz +#define ld_plt_sz sdt_plt_sz + +#define rtc_symb rt_symbol +#define rtc_sp rt_sp +#define rtc_next rt_next + +#define ld_debug so_debug +#define ldd_version dd_version +#define ldd_in_debugger dd_in_debugger +#define ldd_sym_loaded dd_sym_loaded +#define ldd_bp_addr dd_bpt_addr +#define ldd_bp_inst dd_bpt_shadow +#define ldd_cp dd_cc + +#define link_dynamic _dynamic +#define ld_version d_version +#define ldd d_debug +#define ld_un d_un +#define ld_2 d_sdt + +#endif /* nm-obsd.h */ diff --git a/gdb/config/i386/obsd.mh b/gdb/config/i386/obsd.mh new file mode 100644 index 00000000000..e3f5f45f552 --- /dev/null +++ b/gdb/config/i386/obsd.mh @@ -0,0 +1,8 @@ +# Host: Intel 386 running OpenBSD + +XM_FILE= xm-i386.h +XDEPFILES= + +NAT_FILE= nm-obsd.h +# NOTE: Do not spread NATDEPFILES over several lines - it hurts BSD make. +NATDEPFILES= fork-child.o infptrace.o inftarg.o solib.o solib-sunos.o corelow.o core-aout.o i386-nat.o i387-nat.o i386bsd-nat.o diff --git a/gdb/config/i386/obsd.mt b/gdb/config/i386/obsd.mt new file mode 100644 index 00000000000..5c96426b96d --- /dev/null +++ b/gdb/config/i386/obsd.mt @@ -0,0 +1,3 @@ +# Target: Intel 386 running OpenBSD +TDEPFILES= i386-tdep.o i387-tdep.o i386bsd-tdep.o +TM_FILE= tm-obsd.h diff --git a/gdb/config/i386/tm-obsd.h b/gdb/config/i386/tm-obsd.h new file mode 100644 index 00000000000..d26b03bf41d --- /dev/null +++ b/gdb/config/i386/tm-obsd.h @@ -0,0 +1,77 @@ +/* Target-dependent definitions for OpenBSD/i386. + Copyright 2001 Free Software Foundation, Inc. + + This file is part of GDB. + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + GNU General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 59 Temple Place - Suite 330, + Boston, MA 02111-1307, USA. */ + +#ifndef TM_OBSD_H +#define TM_OBSD_H + +#define HAVE_I387_REGS +#include "i386/tm-i386.h" + +/* OpenBSD uses the old gcc convention for struct returns. */ + +#define USE_STRUCT_CONVENTION(gcc_p, type) \ + generic_use_struct_convention (1, type) + + +/* Support for longjmp. */ + +/* Details about jmp_buf. It's supposed to be an array of integers. */ + +#define JB_ELEMENT_SIZE 4 /* Size of elements in jmp_buf. */ +#define JB_PC 0 /* Array index of saved PC. */ + +/* Figure out where the longjmp will land. Store the address that + longjmp will jump to in *ADDR, and return non-zero if successful. */ + +#define GET_LONGJMP_TARGET(addr) get_longjmp_target (addr) +extern int get_longjmp_target (CORE_ADDR *addr); + + +/* Support for signal handlers. */ + +#define IN_SIGTRAMP(pc, name) i386bsd_in_sigtramp (pc, name) +extern int i386bsd_in_sigtramp (CORE_ADDR pc, char *name); + +/* These defines allow the recognition of sigtramps as a function name + . + + FIXME: kettenis/2001-07-13: These should be added to the target + vector and turned into functions when we go "multi-arch". */ + +#define SIGTRAMP_START(pc) i386bsd_sigtramp_start +#define SIGTRAMP_END(pc) i386bsd_sigtramp_end +extern CORE_ADDR i386bsd_sigtramp_start; +extern CORE_ADDR i386bsd_sigtramp_end; + +/* Override FRAME_SAVED_PC to enable the recognition of signal handlers. */ + +#undef FRAME_SAVED_PC +#define FRAME_SAVED_PC(frame) i386bsd_frame_saved_pc (frame) +extern CORE_ADDR i386bsd_frame_saved_pc (struct frame_info *frame); + + +/* Shared library support. */ + +/* Return non-zero if we are in a shared library trampoline code stub. */ + +#define IN_SOLIB_CALL_TRAMPOLINE(pc, name) \ + (name && !strcmp(name, "_DYNAMIC")) + +#endif /* tm-obsd.h */ diff --git a/gdb/configure.host b/gdb/configure.host index 403957b7084..cd6658be0b5 100644 --- a/gdb/configure.host +++ b/gdb/configure.host @@ -65,6 +65,7 @@ i[3456]86-*-lynxos*) gdb_host=i386lynx ;; i[3456]86-*-mach3*) gdb_host=i386m3 ;; i[3456]86-*-mach*) gdb_host=i386mach ;; i[3456]86-*-gnu*) gdb_host=i386gnu ;; +i[3456]86-*-openbsd*) gdb_host=obsd ;; i[3456]86-*-osf1mk*) gdb_host=i386mk ;; i[3456]86-*-sco3.2v5*) gdb_host=i386sco5 ;; i[3456]86-*-sco3.2v4*) gdb_host=i386sco4 ;; diff --git a/gdb/configure.tgt b/gdb/configure.tgt index 30942b3dd0a..a9c94ce5037 100644 --- a/gdb/configure.tgt +++ b/gdb/configure.tgt @@ -103,6 +103,7 @@ i[3456]86-*-go32*) gdb_target=i386aout ;; i[3456]86-*-msdosdjgpp*) gdb_target=go32 ;; i[3456]86-*-lynxos*) gdb_target=i386lynx configdirs="${configdirs} gdbserver" ;; +i[3456]86-*-openbsd*) gdb_target=obsd ;; i[3456]86-*-solaris*) gdb_target=i386sol2 ;; # OBSOLETE i[3456]86-*-sunos*) gdb_target=sun386 ;; i[3456]86-*-sysv4.2*) gdb_target=i386v42mp ;; -- 2.30.2