From 64bb59fd597b04f774261fd11fdca9876c0726fe Mon Sep 17 00:00:00 2001 From: dfr Date: Sun, 2 May 1999 11:32:14 +0000 Subject: * Add bmake framework for using gdb alongside binutils. The old bmake framework was repository copied from gnu/usr.bin/gdb. * Add alpha support. --- gnu/usr.bin/binutils/gdb/Makefile | 125 ++++++------- gnu/usr.bin/binutils/gdb/Makefile.alpha | 7 + gnu/usr.bin/binutils/gdb/Makefile.i386 | 7 + gnu/usr.bin/binutils/gdb/alpha/freebsd-nat.c | 204 +++++++++++++++++++++ gnu/usr.bin/binutils/gdb/alpha/nm.h | 71 ++++++++ gnu/usr.bin/binutils/gdb/alpha/tm.h | 33 ++++ gnu/usr.bin/binutils/gdb/alpha/version.c | 3 + gnu/usr.bin/binutils/gdb/alpha/xm.h | 30 +++ gnu/usr.bin/binutils/gdb/config.h | 261 +++++++++++++++++++++++++-- gnu/usr.bin/binutils/gdb/i386/freebsd-nat.c | 2 +- gnu/usr.bin/binutils/gdb/i386/kvm-fbsd.c | 61 ++----- gnu/usr.bin/binutils/gdb/i386/nm.h | 6 +- gnu/usr.bin/binutils/gdb/i386/tm.h | 12 +- gnu/usr.bin/binutils/gdb/i386/version.c | 2 +- gnu/usr.bin/binutils/gdb/kvm-fbsd.c | 61 ++----- 15 files changed, 704 insertions(+), 181 deletions(-) create mode 100644 gnu/usr.bin/binutils/gdb/Makefile.alpha create mode 100644 gnu/usr.bin/binutils/gdb/Makefile.i386 create mode 100644 gnu/usr.bin/binutils/gdb/alpha/freebsd-nat.c create mode 100644 gnu/usr.bin/binutils/gdb/alpha/nm.h create mode 100644 gnu/usr.bin/binutils/gdb/alpha/tm.h create mode 100644 gnu/usr.bin/binutils/gdb/alpha/version.c create mode 100644 gnu/usr.bin/binutils/gdb/alpha/xm.h (limited to 'gnu') diff --git a/gnu/usr.bin/binutils/gdb/Makefile b/gnu/usr.bin/binutils/gdb/Makefile index 4acb63f..2e2f213 100644 --- a/gnu/usr.bin/binutils/gdb/Makefile +++ b/gnu/usr.bin/binutils/gdb/Makefile @@ -1,48 +1,62 @@ -# $Id: Makefile,v 1.38 1998/10/15 14:15:09 bde Exp $ +# +# $Id: Makefile,v 1.3 1998/06/03 18:00:57 peter Exp $ +# + +.include "../Makefile.inc0" +.PATH: ${SRCDIR}/binutils + +PROG= nm PROG = gdb +XSRCS = annotate.c ax-general.c ax-gdb.c bcache.c blockframe.c \ + breakpoint.c buildsym.c c-exp.y c-lang.c c-typeprint.c \ + c-valprint.c ch-exp.c ch-lang.c ch-typeprint.c ch-valprint.c \ + coffread.c command.c complaints.c copying.c corefile.c \ + corelow.c cp-valprint.c dcache.c dbxread.c demangle.c \ + dwarfread.c dwarf2read.c elfread.c environ.c eval.c exec.c \ + expprint.c f-exp.y f-lang.c f-typeprint.c f-valprint.c \ + findvar.c fork-child.c gdbarch.c gdbtypes.c infcmd.c inflow.c \ + infptrace.c infrun.c inftarg.c language.c jv-exp.y jv-lang.c \ + jv-valprint.c jv-typeprint.c nlmread.c m2-lang.c m2-exp.y \ + m2-typeprint.c m2-valprint.c main.c maint.c mdebugread.c \ + mem-break.c minsyms.c objfiles.c parse.c printcmd.c remote.c \ + remote-utils.c scm-exp.c scm-lang.c scm-valprint.c solib.c \ + source.c stabsread.c stack.c symfile.c symmisc.c symtab.c \ + target.c thread.c top.c tracepoint.c typeprint.c utils.c \ + valarith.c valops.c valprint.c values.c version.c serial.c \ + ser-unix.c ser-tcp.c callback.c +SRCS= init.c ${XSRCS} -GDBDIR= ${.CURDIR}/../../../../contrib/gdb -.if ${OBJFORMAT} == elf -BFDDIR= ${.CURDIR}/../../binutils/libbfd/${MACHINE_ARCH} -BINDIR= /usr/libexec/elf -.else -BFDDIR= ${.CURDIR}/../bfd -BINDIR= /usr/libexec/aout +.if exists(${.CURDIR}/Makefile.${MACHINE_ARCH}) +.include "${.CURDIR}/Makefile.${MACHINE_ARCH}" .endif + +#CFLAGS+= -I${.CURDIR}/${RELTOP}/libbinutils +CFLAGS+= -I${.CURDIR}/${MACHINE_ARCH} +CFLAGS+= -I${SRCDIR}/binutils +CFLAGS+= -I${SRCDIR}/bfd +CFLAGS+= -I${GDBDIR}/gdb +CFLAGS+= -I${GDBDIR}/gdb/config +LDADD+= -L${RELTOP}/libbfd -lbfd +LDADD+= -L${RELTOP}/libopcodes -lopcodes +LDADD+= -lreadline +LDADD+= -lgnuregex +LDADD+= -L${RELTOP}/libiberty -liberty +LDADD+= -ltermcap +DPADD+= ${RELTOP}/libbfd/libbfd.a +DPADD+= ${RELTOP}/libopcodes/libopcodes.a +DPADD+= ${LIBREADLINE} +DPADD+= ${LIBGNUREGEX} +DPADD+= ${RELTOP}/libiberty/libiberty.a +DPADD+= ${LIBTERMCAP} + +GDBDIR= ${.CURDIR}/../../../../contrib/gdb .PATH: ${GDBDIR}/gdb -.PATH: ${GDBDIR}/opcodes +.PATH: ${SRCDIR}/opcodes -.if ${OBJFORMAT} == elf CFLAGS+= -DFREEBSD_ELF -.endif - -XSRCS = annotate.c blockframe.c breakpoint.c buildsym.c c-lang.c \ - c-typeprint.c c-valprint.c ch-lang.c ch-typeprint.c \ - ch-valprint.c coffread.c command.c complaints.c copying.c \ - core-regset.c corelow.c cp-valprint.c \ - dcache.c dbxread.c demangle.c dwarfread.c \ - elfread.c environ.c eval.c exec.c expprint.c \ - findvar.c fork-child.c freebsd-nat.c gdbtypes.c \ - i386-tdep.c infcmd.c inflow.c infptrace.c \ - infrun.c inftarg.c language.c \ - m2-lang.c m2-typeprint.c m2-valprint.c main.c maint.c \ - mem-break.c minsyms.c objfiles.c parse.c \ - printcmd.c remote.c remote-utils.c solib.c source.c \ - stabsread.c stack.c symfile.c symmisc.c \ - symtab.c target.c thread.c top.c \ - typeprint.c utils.c valarith.c valops.c \ - valprint.c values.c version.c \ - serial.c ser-unix.c ser-tcp.c mdebugread.c \ - c-exp.y f-exp.y m2-exp.y i387-tdep.c \ - kvm-fbsd.c bcache.c \ - corefile.c ch-exp.c f-lang.c scm-exp.c scm-lang.c \ - scm-valprint.c f-typeprint.c f-valprint.c nlmread.c \ - callback.c -XSRCS+= i386-dis.c dis-buf.c disassemble.c -SRCS= init.c ${XSRCS} -CFLAGS+= -I$(.CURDIR) -I${DESTDIR}/usr/include/readline -I${BFDDIR} +CFLAGS+= -I$(.CURDIR) -I${DESTDIR}/usr/include/readline # use phkmalloc CFLAGS+= -DNO_MMALLOC # uncomment the next line if you want to debug gdb @@ -51,41 +65,6 @@ YFLAGS= CLEANFILES= init.c init.c-tmp -.if ${OBJFORMAT} == elf - -.if exists(${.OBJDIR}/../../binutils/libbfd) -LIBBFD= ${.OBJDIR}/../../binutils/libbfd/libbfd.a -.else -LIBBFD= ${.CURDIR}/../../binutils/libbfd/libbfd.a -.endif - -.if exists(${.OBJDIR}/../../binutils/libiberty) -LIBIBERTY= ${.OBJDIR}/../../binutils/libiberty/libiberty.a -.else -LIBIBERTY= ${.CURDIR}/../../binutils/libiberty/libiberty.a -.endif - -.else - -.if exists(${.OBJDIR}/../bfd) -LIBBFD= ${.OBJDIR}/../bfd/libbfd.a -.else -LIBBFD= ${.CURDIR}/../bfd/libbfd.a -.endif - -.if exists(${.OBJDIR}/../libiberty) -LIBIBERTY= ${.OBJDIR}/../libiberty/libiberty.a -.else -LIBIBERTY= ${.CURDIR}/../libiberty/libiberty.a -.endif - -.endif # OBJFORMAT - -DPADD= ${LIBBFD} ${LIBREADLINE} ${LIBGNUREGEX} ${LIBIBERTY} ${LIBTERMCAP} -LDADD= ${LIBBFD} -lreadline -lgnuregex ${LIBIBERTY} -ltermcap -DPADD+= ${LIBIBERTY} -LDADD+= ${LIBIBERTY} - # We do this by grepping through sources. If that turns out to be too slow, # maybe we could just require every .o file to have an initialization routine # of a given name (remote-udi.o -> _initialize_remote_udi, etc.). @@ -98,7 +77,7 @@ LDADD+= ${LIBIBERTY} # object files that will be linked into gdb. init.c: ${XSRCS} - @${ECHO} Making ${.TARGET} + @echo Making ${.TARGET} @rm -f init.c-tmp @echo '/* Do not modify this file. */' >init.c-tmp @echo '/* It is created automatically by the Makefile. */'>>init.c-tmp diff --git a/gnu/usr.bin/binutils/gdb/Makefile.alpha b/gnu/usr.bin/binutils/gdb/Makefile.alpha new file mode 100644 index 0000000..54a09ee --- /dev/null +++ b/gnu/usr.bin/binutils/gdb/Makefile.alpha @@ -0,0 +1,7 @@ +# +# $Id$ +# + +XSRCS+= freebsd-nat.c alpha-tdep.c + +.PATH: ${.CURDIR}/alpha diff --git a/gnu/usr.bin/binutils/gdb/Makefile.i386 b/gnu/usr.bin/binutils/gdb/Makefile.i386 new file mode 100644 index 0000000..364b525 --- /dev/null +++ b/gnu/usr.bin/binutils/gdb/Makefile.i386 @@ -0,0 +1,7 @@ +# +# $Id$ +# + +XSRCS+= freebsd-nat.c i386-tdep.c i387-tdep.c kvm-fbsd.c + +.PATH: ${.CURDIR}/i386 diff --git a/gnu/usr.bin/binutils/gdb/alpha/freebsd-nat.c b/gnu/usr.bin/binutils/gdb/alpha/freebsd-nat.c new file mode 100644 index 0000000..9424c83 --- /dev/null +++ b/gnu/usr.bin/binutils/gdb/alpha/freebsd-nat.c @@ -0,0 +1,204 @@ +/* Native-dependent code for BSD Unix running on i386's, for GDB. + Copyright 1988, 1989, 1991, 1992, 1994, 1996 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. */ + +#include "defs.h" + +#include +#include +#include +#include +#include +#include +#include +#include "gdbcore.h" +#include "value.h" +#include "inferior.h" + +int kernel_debugging = 0; + +/* Size of elements in jmpbuf */ + +#define JB_ELEMENT_SIZE 8 + +/* The definition for JB_PC in machine/reg.h is wrong. + And we can't get at the correct definition in setjmp.h as it is + not always available (eg. if _POSIX_SOURCE is defined which is the + default). As the defintion is unlikely to change (see comment + in , define the correct value here. */ + +#undef JB_PC +#define JB_PC 2 + +/* Figure out where the longjmp will land. + We expect the first arg to be a pointer to the jmp_buf structure from which + we extract the pc (JB_PC) that we will land at. The pc is copied into PC. + This routine returns true on success. */ + +int +get_longjmp_target (pc) + CORE_ADDR *pc; +{ + CORE_ADDR jb_addr; + char raw_buffer[MAX_REGISTER_RAW_SIZE]; + + jb_addr = read_register(A0_REGNUM); + + if (target_read_memory(jb_addr + JB_PC * JB_ELEMENT_SIZE, raw_buffer, + sizeof(CORE_ADDR))) + return 0; + + *pc = extract_address (raw_buffer, sizeof(CORE_ADDR)); + return 1; +} + +void +fetch_inferior_registers (regno) + int regno; +{ + struct reg regs; /* ptrace order, not gcc/gdb order */ + struct fpreg fpregs; + int r; + + ptrace (PT_GETREGS, inferior_pid, (PTRACE_ARG3_TYPE) ®s, 0); + ptrace (PT_GETFPREGS, inferior_pid, (PTRACE_ARG3_TYPE) &fpregs, 0); + + for (r = 0; r < 31; r++) + memcpy (®isters[REGISTER_BYTE (r)], + ®s.r_regs[r], sizeof(u_int64_t)); + for (r = 0; r < 32; r++) + memcpy (®isters[REGISTER_BYTE (r + FP0_REGNUM)], + &fpregs.fpr_regs[r], sizeof(u_int64_t)); + memcpy (®isters[REGISTER_BYTE (PC_REGNUM)], + ®s.r_regs[31], sizeof(u_int64_t)); + + memset (®isters[REGISTER_BYTE (ZERO_REGNUM)], 0, sizeof(u_int64_t)); + memset (®isters[REGISTER_BYTE (FP_REGNUM)], 0, sizeof(u_int64_t)); + + registers_fetched (); +} + +void +store_inferior_registers (regno) + int regno; +{ + struct reg regs; /* ptrace order, not gcc/gdb order */ + struct fpreg fpregs; + int r; + + for (r = 0; r < 31; r++) + memcpy (®s.r_regs[r], + ®isters[REGISTER_BYTE (r)], sizeof(u_int64_t)); + for (r = 0; r < 32; r++) + memcpy (&fpregs.fpr_regs[r], + ®isters[REGISTER_BYTE (r + FP0_REGNUM)], sizeof(u_int64_t)); + memcpy (®s.r_regs[31], + ®isters[REGISTER_BYTE (PC_REGNUM)], sizeof(u_int64_t)); + + ptrace (PT_SETREGS, inferior_pid, (PTRACE_ARG3_TYPE) ®s, 0); + ptrace (PT_SETFPREGS, inferior_pid, (PTRACE_ARG3_TYPE) &fpregs, 0); +} + +/* Extract the register values out of the core file and store + them where `read_register' will find them. + Extract the floating point state out of the core file and store + it where `float_info' will find it. + + CORE_REG_SECT points to the register values themselves, read into memory. + CORE_REG_SIZE is the size of that area. + WHICH says which set of registers we are handling (0 = int, 2 = float + on machines where they are discontiguous). + REG_ADDR is the offset from u.u_ar0 to the register values relative to + core_reg_sect. This is used with old-fashioned core files to + locate the registers in a large upage-plus-stack ".reg" section. + Original upage address X is at location core_reg_sect+x+reg_addr. + */ + +static void +fetch_core_registers (core_reg_sect, core_reg_size, which, reg_addr) + char *core_reg_sect; + unsigned core_reg_size; + int which; + CORE_ADDR reg_addr; +{ +#if 0 /* XXX laters */ + register int regno; + register int cregno; + register int addr; + int bad_reg = -1; + int offset; + struct user *tmp_uaddr; + + /* + * First get virtual address of user structure. Then calculate offset. + */ + memcpy(&tmp_uaddr, + &((struct user *) core_reg_sect)->u_kproc.kp_proc.p_addr, + sizeof(tmp_uaddr)); + offset = -reg_addr - (int) tmp_uaddr; + + for (regno = 0; regno < NUM_REGS; regno++) + { + cregno = tregmap[regno]; + if (cregno == tFS) + addr = offsetof (struct user, u_pcb) + offsetof (struct pcb, pcb_fs); + else if (cregno == tGS) + addr = offsetof (struct user, u_pcb) + offsetof (struct pcb, pcb_gs); + else + addr = offset + 4 * cregno; + if (addr < 0 || addr >= core_reg_size) + { + if (bad_reg < 0) + bad_reg = regno; + } + else + { + supply_register (regno, core_reg_sect + addr); + } + } + if (bad_reg >= 0) + { + error ("Register %s not found in core file.", gdb_register_names[bad_reg]); + } + + addr = offsetof (struct user, u_pcb) + offsetof (struct pcb, pcb_savefpu); + memcpy (&pcb_savefpu, core_reg_sect + addr, sizeof pcb_savefpu); +#endif +} + +int +kernel_u_size () +{ + return (sizeof (struct user)); +} + + +/* Register that we are able to handle aout (trad-core) file formats. */ + +static struct core_fns aout_core_fns = +{ + bfd_target_unknown_flavour, + fetch_core_registers, + NULL +}; + +void +_initialize_core_aout () +{ + add_core_fns (&aout_core_fns); +} diff --git a/gnu/usr.bin/binutils/gdb/alpha/nm.h b/gnu/usr.bin/binutils/gdb/alpha/nm.h new file mode 100644 index 0000000..b5a8b65 --- /dev/null +++ b/gnu/usr.bin/binutils/gdb/alpha/nm.h @@ -0,0 +1,71 @@ +/* Native definitions for alpha running FreeBSD. + Copyright (C) 1993, 1994 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. */ + +/* Figure out where the longjmp will land. We expect that we have just entered + longjmp and haven't yet setup the stack frame, so the args are still in the + argument regs. A0_REGNUM points at the jmp_buf structure from which we + extract the pc (JB_PC) that we will land at. The pc is copied into ADDR. + This routine returns true on success */ + +#define GET_LONGJMP_TARGET(ADDR) get_longjmp_target(ADDR) +extern int +get_longjmp_target PARAMS ((CORE_ADDR *)); + +/* Tell gdb that we can attach and detach other processes */ +#define ATTACH_DETACH + +/* We define our own fetch/store methods */ +#define FETCH_INFERIOR_REGISTERS + +extern CORE_ADDR alpha_u_regs_offset(); +#define U_REGS_OFFSET alpha_u_regs_offset() + +#define PTRACE_ARG3_TYPE char* + +/* ptrace transfers longs, the ptrace man page is lying. */ + +#define PTRACE_XFER_TYPE int + +/* The alpha does not step over a breakpoint, the manpage is lying again. */ + +#define CANNOT_STEP_BREAKPOINT + +/* Linux has shared libraries. */ + +#define GDB_TARGET_HAS_SHARED_LIBS + +/* Support for shared libraries. */ + +#include "solib.h" + +#ifdef __ELF__ +#define SVR4_SHARED_LIBS +#define TARGET_ELF64 +#endif + +/* This is a lie. It's actually in stdio.h. */ + +#define PSIGNAL_IN_SIGNAL_H + +/* Given a pointer to either a gregset_t or fpregset_t, return a + pointer to the first register. */ +#define ALPHA_REGSET_BASE(regsetp) ((long *) (regsetp)) + +extern int kernel_debugging; +extern int kernel_writablecore; diff --git a/gnu/usr.bin/binutils/gdb/alpha/tm.h b/gnu/usr.bin/binutils/gdb/alpha/tm.h new file mode 100644 index 0000000..a0667a5 --- /dev/null +++ b/gnu/usr.bin/binutils/gdb/alpha/tm.h @@ -0,0 +1,33 @@ +/* Definitions to make GDB run on an Alpha box under FreeBSD. The + definitions here are used when the _target_ system is running Linux. + Copyright 1996 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_FREEBSDALPHA_H +#define TM_FREEBSDALPHA_H + +#include "alpha/tm-alpha.h" + +/* Number of traps that happen between exec'ing the shell to run an + inferior, and when we finally get to the inferior code. This is 2 + on FreeBSD and most implementations. */ + +#undef START_INFERIOR_TRAPS_EXPECTED +#define START_INFERIOR_TRAPS_EXPECTED 2 + +#endif /* TM_FREEBSDALPHA_H */ diff --git a/gnu/usr.bin/binutils/gdb/alpha/version.c b/gnu/usr.bin/binutils/gdb/alpha/version.c new file mode 100644 index 0000000..b55c0d1 --- /dev/null +++ b/gnu/usr.bin/binutils/gdb/alpha/version.c @@ -0,0 +1,3 @@ +char *version = "4.18"; +char *host_name = "alpha-unknown-freebsd"; +char *target_name = "alpha-unknown-freebsd"; diff --git a/gnu/usr.bin/binutils/gdb/alpha/xm.h b/gnu/usr.bin/binutils/gdb/alpha/xm.h new file mode 100644 index 0000000..9d340a3 --- /dev/null +++ b/gnu/usr.bin/binutils/gdb/alpha/xm.h @@ -0,0 +1,30 @@ +/* Host definitions for GDB running on an Alpha under FreeBSD + Copyright (C) 1996 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. */ + +#if !defined (HOST_BYTE_ORDER) +#define HOST_BYTE_ORDER LITTLE_ENDIAN +#endif + +/* The alpha has no siginterrupt routine. */ +#define NO_SIGINTERRUPT + +#define HAVE_TERMIOS +#define HAVE_SIGSETMASK 1 + +#include diff --git a/gnu/usr.bin/binutils/gdb/config.h b/gnu/usr.bin/binutils/gdb/config.h index 6010886..f24a6ac 100644 --- a/gnu/usr.bin/binutils/gdb/config.h +++ b/gnu/usr.bin/binutils/gdb/config.h @@ -1,6 +1,18 @@ /* config.h. Generated automatically by configure. */ /* config.in. Generated automatically from configure.in by autoheader. */ +/* Whether malloc must be declared even if is included. */ +/* #undef NEED_DECLARATION_MALLOC */ + +/* Whether realloc must be declared even if is included. */ +/* #undef NEED_DECLARATION_REALLOC */ + +/* Whether free must be declared even if is included. */ +/* #undef NEED_DECLARATION_FREE */ + +/* Whether strerror must be declared even if is included. */ +/* #undef NEED_DECLARATION_STRERROR */ + /* Define if on AIX 3. System headers sometimes define this. We just want to avoid a redefinition error message. */ @@ -8,48 +20,180 @@ /* #undef _ALL_SOURCE */ #endif +/* Define if using alloca.c. */ +/* #undef C_ALLOCA */ + +/* Define to empty if the keyword does not work. */ +/* #undef const */ + +/* Define to one of _getb67, GETB67, getb67 for Cray-2 and Cray-YMP systems. + This function is required for alloca.c support on those systems. */ +/* #undef CRAY_STACKSEG_END */ + +/* Define if you have alloca, as a function or macro. */ +#define HAVE_ALLOCA 1 + +/* Define if you have and it should be used (not on Ultrix). */ +/* #undef HAVE_ALLOCA_H */ + /* Define if the `long double' type works. */ #define HAVE_LONG_DOUBLE 1 /* Define if you have a working `mmap' system call. */ #define HAVE_MMAP 1 -/* Define if on MINIX. */ -/* #undef _MINIX */ +/* Define as __inline if that's what the C compiler calls it. */ +/* #undef inline */ -/* Define if the system does not provide POSIX.1 features except - with this defined. */ -/* #undef _POSIX_1_SOURCE */ +/* Define to `long' if doesn't define. */ +/* #undef off_t */ /* Define if you need to in order for stat and other things to work. */ /* #undef _POSIX_SOURCE */ +/* Define as the return type of signal handlers (int or void). */ +#define RETSIGTYPE void + +/* Define to `unsigned' if doesn't define. */ +/* #undef size_t */ + +/* If using the C implementation of alloca, define if you know the + direction of stack growth for your system; otherwise it will be + automatically deduced at run-time. + STACK_DIRECTION > 0 => grows toward higher addresses + STACK_DIRECTION < 0 => grows toward lower addresses + STACK_DIRECTION = 0 => direction of growth unknown + */ +/* #undef STACK_DIRECTION */ + /* Define if the `S_IS*' macros in do not work properly. */ /* #undef STAT_MACROS_BROKEN */ /* Define if you have the ANSI C header files. */ #define STDC_HEADERS 1 -/* Define if fpregset_t type is available. */ -#define HAVE_FPREGSET_T 1 +/* Define if ioctl argument PIOCSET is available. */ +/* #undef HAVE_PROCFS_PIOCSET */ -/* Define if gregset_t type is available. */ -#define HAVE_GREGSET_T 1 +/* /proc PID entries are directories containing the files + ctl as map status */ +/* #undef HAVE_MULTIPLE_PROC_FDS */ + +/* Define if the `long long' type works. */ +#define CC_HAS_LONG_LONG 1 + +/* Define if the "ll" format works to print long long ints. */ +#define PRINTF_HAS_LONG_LONG 1 /* Define if the "%Lg" format works to print long doubles. */ #define PRINTF_HAS_LONG_DOUBLE 1 +/* Define if the "%Lg" format works to scan long doubles. */ +#define SCANF_HAS_LONG_DOUBLE 1 + +/* Define if using Solaris thread debugging. */ +/* #undef HAVE_THREAD_DB_LIB */ + +/* Define on a GNU/Linux system to work around problems in sys/procfs.h. */ +/* #undef START_INFERIOR_TRAPS_EXPECTED */ +/* #undef sys_quotactl */ + +/* Define if you have HPUX threads */ +/* #undef HAVE_HPUX_THREAD_SUPPORT */ + +/* Define if you want to use the memory mapped malloc package (mmalloc). */ +/* #undef USE_MMALLOC */ + +/* Define if the runtime uses a routine from mmalloc before gdb has a chance + to initialize mmalloc, and we want to force checking to be used anyway. + This may cause spurious memory corruption messages if the runtime tries + to explicitly deallocate that memory when gdb calls exit. */ +/* #undef MMCHECK_FORCE */ + +/* Define if you want to use the full-screen terminal user interface. */ +/* #undef TUI */ + +/* Define if on solaris uses int instead of + size_t, and assorted other type changes. */ +/* #undef PROC_SERVICE_IS_OLD */ + +/* Set to true if the save_state_t structure is present */ +#define HAVE_STRUCT_SAVE_STATE_T 0 + +/* Set to true if the save_state_t structure has the ss_wide member */ +#define HAVE_STRUCT_MEMBER_SS_WIDE 0 + +/* Define if you have the __argz_count function. */ +/* #undef HAVE___ARGZ_COUNT */ + +/* Define if you have the __argz_next function. */ +/* #undef HAVE___ARGZ_NEXT */ + +/* Define if you have the __argz_stringify function. */ +/* #undef HAVE___ARGZ_STRINGIFY */ + +/* Define if you have the bcopy function. */ +#define HAVE_BCOPY 1 + +/* Define if you have the btowc function. */ +/* #undef HAVE_BTOWC */ + +/* Define if you have the bzero function. */ +#define HAVE_BZERO 1 + +/* Define if you have the dcgettext function. */ +/* #undef HAVE_DCGETTEXT */ + +/* Define if you have the getcwd function. */ +#define HAVE_GETCWD 1 + /* Define if you have the getpagesize function. */ #define HAVE_GETPAGESIZE 1 +/* Define if you have the isascii function. */ +#define HAVE_ISASCII 1 + +/* Define if you have the munmap function. */ +#define HAVE_MUNMAP 1 + +/* Define if you have the putenv function. */ +#define HAVE_PUTENV 1 + /* Define if you have the sbrk function. */ #define HAVE_SBRK 1 +/* Define if you have the setenv function. */ +#define HAVE_SETENV 1 + +/* Define if you have the setlocale function. */ +#define HAVE_SETLOCALE 1 + /* Define if you have the setpgid function. */ #define HAVE_SETPGID 1 -/* Define if you have the valloc function. */ -#define HAVE_VALLOC 1 +/* Define if you have the sigaction function. */ +#define HAVE_SIGACTION 1 + +/* Define if you have the stpcpy function. */ +/* #undef HAVE_STPCPY */ + +/* Define if you have the strcasecmp function. */ +#define HAVE_STRCASECMP 1 + +/* Define if you have the strchr function. */ +#define HAVE_STRCHR 1 + +/* Define if you have the header file. */ +/* #undef HAVE_ARGZ_H */ + +/* Define if you have the header file. */ +/* #undef HAVE_ASM_DEBUGREG_H */ + +/* Define if you have the header file. */ +#define HAVE_CTYPE_H 1 + +/* Define if you have the header file. */ +#define HAVE_CURSES_H 1 /* Define if you have the header file. */ /* #undef HAVE_ENDIAN_H */ @@ -60,24 +204,57 @@ /* Define if you have the header file. */ #define HAVE_LINK_H 1 +/* Define if you have the header file. */ +#define HAVE_LOCALE_H 1 + +/* Define if you have the header file. */ +/* #undef HAVE_MALLOC_H */ + /* Define if you have the header file. */ #define HAVE_MEMORY_H 1 +/* Define if you have the header file. */ +#define HAVE_NL_TYPES_H 1 + +/* Define if you have the header file. */ +/* #undef HAVE_OBJLIST_H */ + +/* Define if you have the header file. */ +/* #undef HAVE_PTRACE_H */ + /* Define if you have the header file. */ #define HAVE_SGTTY_H 1 /* Define if you have the header file. */ #define HAVE_STDDEF_H 1 +/* Define if you have the header file. */ +#define HAVE_STDLIB_H 1 + /* Define if you have the header file. */ #define HAVE_STRING_H 1 -/* Define if you have the header file. */ -#define HAVE_STRINGS_H 1 +/* Define if you have the header file. */ +/* #undef HAVE_SYS_DEBUGREG_H */ + +/* Define if you have the header file. */ +#define HAVE_SYS_PARAM_H 1 /* Define if you have the header file. */ #define HAVE_SYS_PROCFS_H 1 +/* Define if you have the header file. */ +#define HAVE_SYS_PTRACE_H 1 + +/* Define if you have the header file. */ +/* #undef HAVE_SYS_REG_H */ + +/* Define if you have the header file. */ +#define HAVE_SYS_WAIT_H 1 + +/* Define if you have the header file. */ +#define HAVE_TERM_H 1 + /* Define if you have the header file. */ /* #undef HAVE_TERMIO_H */ @@ -87,5 +264,63 @@ /* Define if you have the header file. */ #define HAVE_UNISTD_H 1 +/* Define if you have the header file. */ +/* #undef HAVE_VALUES_H */ + +/* Define if you have the header file. */ +/* #undef HAVE_WAIT_H */ + +/* Define if you have the header file. */ +/* #undef HAVE_WCHAR_H */ + +/* Define if you have the header file. */ +/* #undef HAVE_WCTYPE_H */ + /* Define if you have the dl library (-ldl). */ /* #undef HAVE_LIBDL */ + +/* Define if you have the m library (-lm). */ +#define HAVE_LIBM 1 + +/* Define if you have the w library (-lw). */ +/* #undef HAVE_LIBW */ + +/* Define if you have the stpcpy function */ +/* #undef HAVE_STPCPY */ + +/* Define if your locale.h file contains LC_MESSAGES. */ +#define HAVE_LC_MESSAGES 1 + +/* Define to 1 if NLS is requested */ +#define ENABLE_NLS 1 + +/* Define as 1 if you have gettext and don't want to use GNU gettext. */ +/* #undef HAVE_GETTEXT */ + +/* Define if malloc is not declared in system header files. */ +/* #undef NEED_DECLARATION_MALLOC */ + +/* Define if realloc is not declared in system header files. */ +/* #undef NEED_DECLARATION_REALLOC */ + +/* Define if free is not declared in system header files. */ +/* #undef NEED_DECLARATION_FREE */ + +/* Define if strerror is not declared in system header files. */ +/* #undef NEED_DECLARATION_STRERROR */ + +/* Define if strdup is not declared in system header files. */ +/* #undef NEED_DECLARATION_STRDUP */ + +/* Define if has pstatus_t. */ +/* #undef HAVE_PSTATUS_T */ + +/* Define if has prrun_t. */ +/* #undef HAVE_PRRUN_T */ + +/* Define if has gregset_t. */ +#define HAVE_GREGSET_T 1 + +/* Define if has fpregset_t. */ +#define HAVE_FPREGSET_T 1 + diff --git a/gnu/usr.bin/binutils/gdb/i386/freebsd-nat.c b/gnu/usr.bin/binutils/gdb/i386/freebsd-nat.c index 3fbc7ef..84c121d 100644 --- a/gnu/usr.bin/binutils/gdb/i386/freebsd-nat.c +++ b/gnu/usr.bin/binutils/gdb/i386/freebsd-nat.c @@ -131,7 +131,7 @@ fetch_core_registers (core_reg_sect, core_reg_size, which, reg_addr) } if (bad_reg >= 0) { - error ("Register %s not found in core file.", reg_names[bad_reg]); + error ("Register %s not found in core file.", gdb_register_names[bad_reg]); } addr = offsetof (struct user, u_pcb) + offsetof (struct pcb, pcb_savefpu); diff --git a/gnu/usr.bin/binutils/gdb/i386/kvm-fbsd.c b/gnu/usr.bin/binutils/gdb/i386/kvm-fbsd.c index 900ce60..2608e3c 100644 --- a/gnu/usr.bin/binutils/gdb/i386/kvm-fbsd.c +++ b/gnu/usr.bin/binutils/gdb/i386/kvm-fbsd.c @@ -945,52 +945,29 @@ kernel_core_file_hook (fd, addr, buf, len) return (cp - buf); } -struct target_ops kcore_ops = { - "kcore", /* to_shortname */ - "Kernel core dump file", /* to_longname */ - "Use a core file as a target. Specify the filename of the core file.", /* to_doc */ - kcore_open, /* to_open */ - kcore_close, /* to_close */ - find_default_attach, /* to_attach */ - kcore_detach, /* to_detach */ - NULL, /* to_resume */ - NULL, /* to_wait */ - get_kcore_registers, /* to_fetch_registers */ - NULL, /* to_store_registers */ - NULL, /* to_prepare_to_store */ - kcore_xfer_kmem, /* to_xfer_memory */ - kcore_files_info, /* to_files_info */ - NULL, /* to_insert_breakpoint */ - NULL, /* to_remove_breakpoint */ - NULL, /* to_terminal_init */ - NULL, /* to_terminal_inferior */ - NULL, /* to_terminal_ours_for_output */ - NULL, /* to_terminal_ours */ - NULL, /* to_terminal_info */ - NULL, /* to_kill */ - NULL, /* to_load */ - NULL, /* to_lookup_symbol */ - find_default_create_inferior, /* to_create_inferior */ - NULL, /* to_mourn_inferior */ - 0, /* to_can_run */ - 0, /* to_notice_signals */ - NULL, /* to_thread_alive */ - 0, /* to_stop */ - kcore_stratum, /* to_stratum */ - NULL, /* to_next */ - 0, /* to_has_all_memory */ - 1, /* to_has_memory */ - 1, /* to_has_stack */ - 1, /* to_has_registers */ - 0, /* to_has_execution */ - NULL, /* sections */ - NULL, /* sections_end */ - OPS_MAGIC /* to_magic */ -}; +static struct target_ops kcore_ops; void _initialize_kcorelow() { + kcore_ops.to_shortname = "kcore"; + kcore_ops.to_longname = "Kernel core dump file"; + kcore_ops.to_doc = + "Use a core file as a target. Specify the filename of the core file."; + kcore_ops.to_open = kcore_open; + kcore_ops.to_close = kcore_close; + kcore_ops.to_attach = find_default_attach; + kcore_ops.to_detach = kcore_detach; + kcore_ops.to_fetch_registers = get_kcore_registers; + kcore_ops.to_xfer_memory = kcore_xfer_kmem; + kcore_ops.to_files_info = kcore_files_info; + kcore_ops.to_create_inferior = find_default_create_inferior; + kcore_ops.to_stratum = kcore_stratum; + kcore_ops.to_has_memory = 1; + kcore_ops.to_has_stack = 1; + kcore_ops.to_has_registers = 1; + kcore_ops.to_magic = OPS_MAGIC; + add_target (&kcore_ops); add_com ("proc", class_obscure, set_proc_cmd, "Set current process context"); add_com ("cpu", class_obscure, set_cpu_cmd, "Set current cpu"); diff --git a/gnu/usr.bin/binutils/gdb/i386/nm.h b/gnu/usr.bin/binutils/gdb/i386/nm.h index 84ec01e..786abc9 100644 --- a/gnu/usr.bin/binutils/gdb/i386/nm.h +++ b/gnu/usr.bin/binutils/gdb/i386/nm.h @@ -17,8 +17,8 @@ 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_FBSD_H -#define NM_FBSD_H +#ifndef NM_FREEBSD_H +#define NM_FREEBSD_H #define ATTACH_DETACH @@ -132,4 +132,4 @@ extern int kernel_writablecore; if (!strcmp(STR, "kgdb")) \ kernel_debugging = 1; -#endif /* NM_FBSD_H */ +#endif /* NM_FREEBSD_H */ diff --git a/gnu/usr.bin/binutils/gdb/i386/tm.h b/gnu/usr.bin/binutils/gdb/i386/tm.h index 39fda77..2afa02b 100644 --- a/gnu/usr.bin/binutils/gdb/i386/tm.h +++ b/gnu/usr.bin/binutils/gdb/i386/tm.h @@ -1,5 +1,5 @@ -/* Macro definitions for x86 running under FreeBSD Unix. - Copyright 1996 Free Software Foundation, Inc. +/* Target macro definitions for i386 running FreeBSD + Copyright (C) 1997 Free Software Foundation, Inc. This file is part of GDB. @@ -15,7 +15,7 @@ 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. */ +Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. */ #ifndef TM_FBSD_H #define TM_FBSD_H 1 @@ -52,7 +52,7 @@ extern CORE_ADDR fbsd_kern_frame_saved_pc (struct frame_info *); #undef SIGTRAMP_START #undef SIGTRAMP_END -#define SIGTRAMP_START 0xefbfdfd8 -#define SIGTRAMP_END 0xefbfdff0 - +#define SIGTRAMP_START(pc) 0xcfbfdfd8 +#define SIGTRAMP_END(pc) 0xcfbfdff0 + #endif /* ifndef TM_FBSD_H */ diff --git a/gnu/usr.bin/binutils/gdb/i386/version.c b/gnu/usr.bin/binutils/gdb/i386/version.c index 3d677fe..45b9acd 100644 --- a/gnu/usr.bin/binutils/gdb/i386/version.c +++ b/gnu/usr.bin/binutils/gdb/i386/version.c @@ -1,3 +1,3 @@ -char *version = "4.16"; +char *version = "4.18"; char *host_name = "i386-unknown-freebsd"; char *target_name = "i386-unknown-freebsd"; diff --git a/gnu/usr.bin/binutils/gdb/kvm-fbsd.c b/gnu/usr.bin/binutils/gdb/kvm-fbsd.c index 900ce60..2608e3c 100644 --- a/gnu/usr.bin/binutils/gdb/kvm-fbsd.c +++ b/gnu/usr.bin/binutils/gdb/kvm-fbsd.c @@ -945,52 +945,29 @@ kernel_core_file_hook (fd, addr, buf, len) return (cp - buf); } -struct target_ops kcore_ops = { - "kcore", /* to_shortname */ - "Kernel core dump file", /* to_longname */ - "Use a core file as a target. Specify the filename of the core file.", /* to_doc */ - kcore_open, /* to_open */ - kcore_close, /* to_close */ - find_default_attach, /* to_attach */ - kcore_detach, /* to_detach */ - NULL, /* to_resume */ - NULL, /* to_wait */ - get_kcore_registers, /* to_fetch_registers */ - NULL, /* to_store_registers */ - NULL, /* to_prepare_to_store */ - kcore_xfer_kmem, /* to_xfer_memory */ - kcore_files_info, /* to_files_info */ - NULL, /* to_insert_breakpoint */ - NULL, /* to_remove_breakpoint */ - NULL, /* to_terminal_init */ - NULL, /* to_terminal_inferior */ - NULL, /* to_terminal_ours_for_output */ - NULL, /* to_terminal_ours */ - NULL, /* to_terminal_info */ - NULL, /* to_kill */ - NULL, /* to_load */ - NULL, /* to_lookup_symbol */ - find_default_create_inferior, /* to_create_inferior */ - NULL, /* to_mourn_inferior */ - 0, /* to_can_run */ - 0, /* to_notice_signals */ - NULL, /* to_thread_alive */ - 0, /* to_stop */ - kcore_stratum, /* to_stratum */ - NULL, /* to_next */ - 0, /* to_has_all_memory */ - 1, /* to_has_memory */ - 1, /* to_has_stack */ - 1, /* to_has_registers */ - 0, /* to_has_execution */ - NULL, /* sections */ - NULL, /* sections_end */ - OPS_MAGIC /* to_magic */ -}; +static struct target_ops kcore_ops; void _initialize_kcorelow() { + kcore_ops.to_shortname = "kcore"; + kcore_ops.to_longname = "Kernel core dump file"; + kcore_ops.to_doc = + "Use a core file as a target. Specify the filename of the core file."; + kcore_ops.to_open = kcore_open; + kcore_ops.to_close = kcore_close; + kcore_ops.to_attach = find_default_attach; + kcore_ops.to_detach = kcore_detach; + kcore_ops.to_fetch_registers = get_kcore_registers; + kcore_ops.to_xfer_memory = kcore_xfer_kmem; + kcore_ops.to_files_info = kcore_files_info; + kcore_ops.to_create_inferior = find_default_create_inferior; + kcore_ops.to_stratum = kcore_stratum; + kcore_ops.to_has_memory = 1; + kcore_ops.to_has_stack = 1; + kcore_ops.to_has_registers = 1; + kcore_ops.to_magic = OPS_MAGIC; + add_target (&kcore_ops); add_com ("proc", class_obscure, set_proc_cmd, "Set current process context"); add_com ("cpu", class_obscure, set_cpu_cmd, "Set current cpu"); -- cgit v1.1