Return to BSD News archive
Newsgroups: comp.unix.bsd
Path: sserve!manuel!munnari.oz.au!uunet!math.fu-berlin.de!informatik.tu-muenchen.de!regent!pes
From: pes@regent.e-technik.tu-muenchen.dbp.de (Peter Schauer)
Subject: gdb-4.6 patches for 386BSD 0.1
Message-ID: <pes.713825651@regent.e-technik.tu-muenchen.de>
Sender: news@regent.e-technik.tu-muenchen.de (News System)
Organization: Technical University of Munich, Germany
Date: Fri, 14 Aug 1992 20:54:11 GMT
Lines: 337
Here are the patches to gdb-4.6 to make it run under 386BSD 0.1.
Appply them with patch -p <this_message
Configure with i386-none-bsd386.
They make gdb-4.6 run under 386BSD 0.1.
They do not include kernel debugging facilities and floating point support.
Peter Schauer pes@regent.e-technik.tu-muenchen.de
*** ./bfd/config/i386-bsd.mt.orig Mon Aug 10 16:23:39 1992
--- ./bfd/config/i386-bsd.mt Mon Aug 10 16:25:09 1992
***************
*** 0 ****
--- 1,3 ----
+ # Target: Intel 386 running 386bsd using a.out
+ TDEFAULTS = -DDEFAULT_VECTOR=i386bsd_vec
+ TDEPFILES= i386bsd.o
*** ./bfd/config/i386bsd.mh.orig Mon Aug 10 16:22:20 1992
--- ./bfd/config/i386bsd.mh Mon Aug 10 16:22:12 1992
***************
*** 0 ****
--- 1,2 ----
+ HDEFINES=-DTRAD_CORE
+ HDEPFILES=trad-core.o
*** ./bfd/configure.in.orig Wed Jul 8 10:01:12 1992
--- ./bfd/configure.in Wed Aug 12 18:05:09 1992
***************
*** 84,89 ****
--- 84,90 ----
mach*) my_host=i386mach ;;
msdos*) my_host=dose ;;
linux) my_host=i386linux ;;
+ bsd386) my_host=i386bsd ;;
esac
;;
esac
***************
*** 205,210 ****
--- 206,212 ----
*-*-solaris2* ) bfd_target=${target_cpu}-elf ;;
*-*-go32 ) bfd_target=${target_cpu}-aout ;;
*-*-linux* ) bfd_target=${target_cpu}-linux ;;
+ *-*-bsd386 ) bfd_target=${target_cpu}-bsd ;;
*-*-sysv* ) bfd_target=${target_cpu}-coff ;;
*-*-scosysv* ) bfd_target=${target_cpu}-coff ;;
tahoe-*-none ) bfd_target=${target_cpu} ;;
*** ./bfd/hosts/i386bsd.h.orig Mon Aug 10 16:30:10 1992
--- ./bfd/hosts/i386bsd.h Wed Aug 12 10:31:04 1992
***************
*** 0 ****
--- 1,47 ----
+ #include <fcntl.h>
+ #include <errno.h>
+ #include <stdio.h>
+ #include <sys/types.h>
+ #include <sys/stat.h>
+ #include <ctype.h>
+ #include <string.h>
+ #include <sys/file.h>
+ #include <stdlib.h>
+ #ifndef O_ACCMODE
+ #define O_ACCMODE (O_RDONLY | O_WRONLY | O_RDWR)
+ #endif
+ #define SEEK_SET 0
+ #define SEEK_CUR 1
+
+ /* fdopen() won't let you open read-only files for update */
+ #define FASCIST_FDOPEN
+
+ #include <machine/param.h>
+ #include <machine/vmparam.h>
+ #define HOST_PAGE_SIZE NBPG
+ #define HOST_MACHINE_ARCH bfd_arch_i386
+
+ #define HOST_TEXT_START_ADDR USRTEXT
+ #define HOST_STACK_END_ADDR (u.u_kproc.kp_eproc.e_vm.vm_maxsaddr + MAXSSIZ)
+
+ #define TRAD_UNIX_CORE_FILE_FAILING_SIGNAL(core_bfd) \
+ ((core_bfd)->tdata.trad_core_data->u.u_sig)
+ #define u_comm u_kproc.kp_proc.p_comm
+
+ /* EXACT TYPES */
+ typedef char int8e_type;
+ typedef unsigned char uint8e_type;
+ typedef short int16e_type;
+ typedef unsigned short uint16e_type;
+ typedef int int32e_type;
+ typedef unsigned int uint32e_type;
+
+ /* CORRECT SIZE OR GREATER */
+ typedef char int8_type;
+ typedef unsigned char uint8_type;
+ typedef short int16_type;
+ typedef unsigned short uint16_type;
+ typedef int int32_type;
+ typedef unsigned int uint32_type;
+
+ #include "fopen-same.h"
*** ./bfd/i386bsd.c.orig Mon Aug 10 16:26:59 1992
--- ./bfd/i386bsd.c Mon Aug 10 16:26:52 1992
***************
*** 0 ****
--- 1,40 ----
+ /* BFD back-end for bsd386 a.out binaries.
+ Copyright (C) 1990, 1991 Free Software Foundation, Inc.
+
+ This file is part of BFD, the Binary File Descriptor library.
+
+ 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., 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+ #define PAGE_SIZE 4096
+ #define SEGMENT_SIZE PAGE_SIZE
+ #define TEXT_START_ADDR 0
+ #define N_SHARED_LIB(n) 0
+ #define N_HEADER_IN_TEXT(n) 0
+ #define ARCH 32
+ #define BYTES_IN_WORD 4
+
+ #include "bfd.h"
+ #include "sysdep.h"
+ #include "libbfd.h"
+ #include "aout/aout64.h"
+ #include "aout/stab_gnu.h"
+ #include "aout/ar.h"
+ #include "libaout.h" /* BFD a.out internal data structures */
+
+ #define DEFAULT_ARCH bfd_arch_i386
+ #define MY(OP) CAT(i386bsd_,OP)
+ #define TARGETNAME "a.out-bsd386"
+
+ #include "aout-target.h"
*** ./gdb/bsd386-xdep.c.orig Mon Aug 10 20:28:33 1992
--- ./gdb/bsd386-xdep.c Wed Aug 12 15:52:30 1992
***************
*** 0 ****
--- 1,59 ----
+ /* 386BSD host interface.
+ Copyright (C) 1988, 1989, 1991 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., 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+ #include "defs.h"
+
+ #include <machine/reg.h>
+
+
+ /* this table must line up with REGISTER_NAMES in tm-i386.h */
+ /* symbols like 'tEAX' come from <machine/reg.h> */
+ static int tregmap[] =
+ {
+ tEAX, tECX, tEDX, tEBX,
+ tESP, tEBP, tESI, tEDI,
+ tEIP, tEFLAGS, tCS, tSS
+ };
+ static int sregmap[] =
+ {
+ sEAX, sECX, sEDX, sEBX,
+ sESP, sEBP, sESI, sEDI,
+ sEIP, sEFLAGS, sCS, sSS
+ };
+
+ /* blockend is the value of u.u_ar0, and points to the
+ place where ES is stored. */
+
+ int
+ i386_register_u_addr (blockend, regnum)
+ int blockend;
+ int regnum;
+ {
+ /* The following condition is a kludge to get at the proper register map
+ depending upon the state of pcb_flag.
+ The proper condition would be
+ if (u.u_pcb.pcb_flag & FM_TRAP)
+ but that would require a ptrace call here and wouldn't work
+ for corefiles. */
+
+ if (blockend < 0x1fcc)
+ return (blockend + 4 * tregmap[regnum]);
+ else
+ return (blockend + 4 * sregmap[regnum]);
+ }
*** ./gdb/config/i386bsd.mh.orig Mon Aug 10 20:48:42 1992
--- ./gdb/config/i386bsd.mh Wed Aug 12 10:31:49 1992
***************
*** 0 ****
--- 1,5 ----
+ # Host: Intel 386 running 386BSD
+ XDEPFILES= infptrace.o coredep.o bsd386-xdep.o
+ XM_FILE= xm-386bsd.h
+ REGEX=regex.o
+ REGEX1=regex.o
*** ./gdb/config/i386bsd.mt.orig Mon Aug 10 20:47:00 1992
--- ./gdb/config/i386bsd.mt Wed Aug 12 18:44:43 1992
***************
*** 0 ****
--- 1,4 ----
+ # Target: Intel 386 with 386BSD
+
+ TDEPFILES= exec.o i386-tdep.o i386-pinsn.o
+ TM_FILE= tm-386bsd.h
*** ./gdb/configure.in.orig Wed Jul 8 10:01:38 1992
--- ./gdb/configure.in Wed Aug 12 18:06:39 1992
***************
*** 109,114 ****
--- 109,115 ----
scosysv*) gdb_host=i386sco ;;
mach) gdb_host=i386mach ;;
linux) gdb_host=linux ;;
+ bsd386) gdb_host=i386bsd ;;
esac
;;
esac
***************
*** 319,324 ****
--- 320,326 ----
coff) gdb_target=i386v ;;
aout) gdb_target=i386aout ;;
linux) gdb_target=linux ;;
+ bsd386) gdb_target=i386bsd ;;
esac
esac
;;
*** ./gdb/tm-386bsd.h.orig Mon Aug 10 20:32:15 1992
--- ./gdb/tm-386bsd.h Wed Aug 12 15:45:08 1992
***************
*** 0 ****
--- 1,34 ----
+ /* Macro definitions for i386 running under 386BSD.
+ Copyright (C) 1986, 1987, 1989, 1991 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., 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+ /* Override number of expected traps from sysv. */
+ #define START_INFERIOR_TRAPS_EXPECTED 2
+
+ /* Most definitions from sysv could be used. */
+ #include "tm-i386v.h"
+
+ /* Define this if the C compiler puts an underscore at the front
+ of external names before giving them to the linker. */
+ #define NAMES_HAVE_UNDERSCORE
+
+ #undef FLOAT_INFO /* No float info yet */
+
+ /* 386BSD cannot handle the segment registers. */
+ #undef NUM_REGS
+ #define NUM_REGS 12
*** ./gdb/xm-386bsd.h.orig Mon Aug 10 20:19:28 1992
--- ./gdb/xm-386bsd.h Wed Aug 12 18:46:57 1992
***************
*** 0 ****
--- 1,45 ----
+ /* Macro definitions for 386BSD.
+ Copyright (C) 1986, 1987, 1989 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., 675 Mass Ave, Cambridge, MA 02139, USA. */
+
+ #define HOST_BYTE_ORDER LITTLE_ENDIAN
+ #define GDB_HOST_IS_I386
+
+ /* Avoid "INT_MIN redefined" warnings -- by defining it here, exactly
+ the same as in the system <machine/limits.h> file. */
+ #undef INT_MIN
+ #define INT_MIN (-0x7fffffff-1)
+
+ /* Get rid of any system-imposed stack limit if possible. */
+
+ #define SET_STACK_LIMIT_HUGE
+
+ /* This is the amount to subtract from u.u_ar0
+ to get the offset in the core file of the register values. */
+
+ #include <machine/vmparam.h>
+ #define KERNEL_U_ADDR USRSTACK
+
+ #define REGISTER_U_ADDR(addr, blockend, regno) \
+ (addr) = i386_register_u_addr ((blockend),(regno));
+
+ extern int
+ i386_register_u_addr PARAMS ((int, int));
+
+ #define PSIGNAL_IN_SIGNAL_H
+ #define PTRACE_ARG3_TYPE char*