From 4a9a1d63b991b6579a640b9312ee1985525911b0 Mon Sep 17 00:00:00 2001 From: dim Date: Thu, 11 Nov 2010 23:41:36 +0000 Subject: Do not build or install gasp.info anymore, as gasp has not been built or installed for more than 6 years. Obtained from: projects/binutils-2.17 --- gnu/usr.bin/binutils/doc/Makefile | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) (limited to 'gnu') diff --git a/gnu/usr.bin/binutils/doc/Makefile b/gnu/usr.bin/binutils/doc/Makefile index b271f19..42c1784 100644 --- a/gnu/usr.bin/binutils/doc/Makefile +++ b/gnu/usr.bin/binutils/doc/Makefile @@ -4,10 +4,9 @@ .PATH: ${SRCDIR}/gas/doc ${SRCDIR}/ld ${SRCDIR}/bfd/doc -INFO= as ld gasp binutils +INFO= as ld binutils INFOSECTION= "Programming & development tools." INFOENTRY_as= "* As: (as). The GNU assembler." -INFOENTRY_gasp= "* Gasp: (gasp). The GNU Assembler Macro Preprocessor." INFOENTRY_ld= "* Ld: (ld). The GNU linker." INFOENTRY_binutils= "* Binutils: (binutils). The GNU Binary Utilities." -- cgit v1.1 From 872d2c10e7bd1a3d795734eb3f467f710fbff4ea Mon Sep 17 00:00:00 2001 From: dim Date: Thu, 11 Nov 2010 23:45:19 +0000 Subject: Garbage collect gnu/usr.bin/binutils/{gasp,gdb,gdbreplay}, as these have not been connected to the build for more than 6 years. Obtained from: projects/binutils-2.17 --- gnu/usr.bin/binutils/gasp/Makefile | 21 - gnu/usr.bin/binutils/gasp/gasp.1 | 115 ---- gnu/usr.bin/binutils/gdb/Makefile | 139 ----- gnu/usr.bin/binutils/gdb/Makefile.arm | 5 - gnu/usr.bin/binutils/gdb/Makefile.i386 | 9 - gnu/usr.bin/binutils/gdb/Makefile.ia64 | 5 - gnu/usr.bin/binutils/gdb/Makefile.powerpc | 5 - gnu/usr.bin/binutils/gdb/Makefile.powerpc64 | 5 - gnu/usr.bin/binutils/gdb/Makefile.sparc64 | 4 - gnu/usr.bin/binutils/gdb/config.h | 505 --------------- gnu/usr.bin/binutils/gdb/fbsd-kgdb-alpha.h | 14 - gnu/usr.bin/binutils/gdb/fbsd-kgdb-amd64.h | 8 - gnu/usr.bin/binutils/gdb/fbsd-kgdb-arm.h | 8 - gnu/usr.bin/binutils/gdb/fbsd-kgdb-i386.h | 21 - gnu/usr.bin/binutils/gdb/fbsd-kgdb-ia64.h | 8 - gnu/usr.bin/binutils/gdb/fbsd-kgdb-powerpc.h | 8 - gnu/usr.bin/binutils/gdb/fbsd-kgdb-sparc64.h | 9 - gnu/usr.bin/binutils/gdb/fbsd-kgdb.h | 34 - gnu/usr.bin/binutils/gdb/freebsd-uthread.c | 889 --------------------------- gnu/usr.bin/binutils/gdb/gdb.1 | 385 ------------ gnu/usr.bin/binutils/gdb/kvm-fbsd-alpha.h | 77 --- gnu/usr.bin/binutils/gdb/kvm-fbsd-i386.h | 131 ---- gnu/usr.bin/binutils/gdb/kvm-fbsd-sparc64.h | 96 --- gnu/usr.bin/binutils/gdb/kvm-fbsd.c | 502 --------------- gnu/usr.bin/binutils/gdb/solib-fbsd-kld.c | 304 --------- gnu/usr.bin/binutils/gdbreplay/Makefile | 23 - 26 files changed, 3330 deletions(-) delete mode 100644 gnu/usr.bin/binutils/gasp/Makefile delete mode 100644 gnu/usr.bin/binutils/gasp/gasp.1 delete mode 100644 gnu/usr.bin/binutils/gdb/Makefile delete mode 100644 gnu/usr.bin/binutils/gdb/Makefile.arm delete mode 100644 gnu/usr.bin/binutils/gdb/Makefile.i386 delete mode 100644 gnu/usr.bin/binutils/gdb/Makefile.ia64 delete mode 100644 gnu/usr.bin/binutils/gdb/Makefile.powerpc delete mode 100644 gnu/usr.bin/binutils/gdb/Makefile.powerpc64 delete mode 100644 gnu/usr.bin/binutils/gdb/Makefile.sparc64 delete mode 100644 gnu/usr.bin/binutils/gdb/config.h delete mode 100644 gnu/usr.bin/binutils/gdb/fbsd-kgdb-alpha.h delete mode 100644 gnu/usr.bin/binutils/gdb/fbsd-kgdb-amd64.h delete mode 100644 gnu/usr.bin/binutils/gdb/fbsd-kgdb-arm.h delete mode 100644 gnu/usr.bin/binutils/gdb/fbsd-kgdb-i386.h delete mode 100644 gnu/usr.bin/binutils/gdb/fbsd-kgdb-ia64.h delete mode 100644 gnu/usr.bin/binutils/gdb/fbsd-kgdb-powerpc.h delete mode 100644 gnu/usr.bin/binutils/gdb/fbsd-kgdb-sparc64.h delete mode 100644 gnu/usr.bin/binutils/gdb/fbsd-kgdb.h delete mode 100644 gnu/usr.bin/binutils/gdb/freebsd-uthread.c delete mode 100644 gnu/usr.bin/binutils/gdb/gdb.1 delete mode 100644 gnu/usr.bin/binutils/gdb/kvm-fbsd-alpha.h delete mode 100644 gnu/usr.bin/binutils/gdb/kvm-fbsd-i386.h delete mode 100644 gnu/usr.bin/binutils/gdb/kvm-fbsd-sparc64.h delete mode 100644 gnu/usr.bin/binutils/gdb/kvm-fbsd.c delete mode 100644 gnu/usr.bin/binutils/gdb/solib-fbsd-kld.c delete mode 100644 gnu/usr.bin/binutils/gdbreplay/Makefile (limited to 'gnu') diff --git a/gnu/usr.bin/binutils/gasp/Makefile b/gnu/usr.bin/binutils/gasp/Makefile deleted file mode 100644 index 51ea9d9..0000000 --- a/gnu/usr.bin/binutils/gasp/Makefile +++ /dev/null @@ -1,21 +0,0 @@ -# $FreeBSD$ - -.include "../Makefile.inc0" - -.PATH: ${SRCDIR}/gas - -PROG= gasp -SRCS+= gasp.c macro.c sb.c hash.c xregex.h -WARNS?= 2 -CFLAGS+= -DBFD_ASSEMBLER -CFLAGS+= -I${.CURDIR}/../as/${TARGET_ARCH}-freebsd -I${.CURDIR}/../as -CFLAGS+= -I${.CURDIR} -CFLAGS+= -I${SRCDIR} -I${SRCDIR}/gas -I${SRCDIR}/gas/config -DPADD= ${RELTOP}/libiberty/libiberty.a -LDADD= ${DPADD} -CLEANFILES= xregex.h - -xregex.h: - @echo '#include ' >${.TARGET} - -.include diff --git a/gnu/usr.bin/binutils/gasp/gasp.1 b/gnu/usr.bin/binutils/gasp/gasp.1 deleted file mode 100644 index 5aaff9a..0000000 --- a/gnu/usr.bin/binutils/gasp/gasp.1 +++ /dev/null @@ -1,115 +0,0 @@ -.\" Copyright (c) 1999 -.\" The Regents of the University of California. All rights reserved. -.\" and David E. O'Brien -.\" -.\" Redistribution and use in source and binary forms, with or without -.\" modification, are permitted provided that the following conditions -.\" are met: -.\" 1. Redistributions of source code must retain the above copyright -.\" notice, this list of conditions and the following disclaimer. -.\" 2. Redistributions in binary form must reproduce the above copyright -.\" notice, this list of conditions and the following disclaimer in the -.\" documentation and/or other materials provided with the distribution. -.\" 3. Neither the name of the University nor the names of its contributors -.\" may be used to endorse or promote products derived from this software -.\" without specific prior written permission. -.\" -.\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND -.\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE -.\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE -.\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE -.\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL -.\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS -.\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) -.\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT -.\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY -.\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF -.\" SUCH DAMAGE. -.\" -.\" $FreeBSD$ -.\" -.Dd December 29, 1999 -.Dt GASP 1 -.Os -.Sh NAME -.Nm gasp -.Nd the GNU Assembler Macro Preprocessor -.Sh SYNOPSIS -.Nm -.Op Fl adhMpsuv -.Op Fl c Ar char -.Op Fl o Ar outfile -.Op Fl D Ns Ar name=value -.Op Fl I Ns Ar path -.Op infile -.Sh DESCRIPTION -.Nm -is the GNU Assembler Macro Preprocessor. -The argument -.Ar infile -is processed and the resulting text is sent to the standard output. -.Pp -The options are as follows: -.Bl -tag -width "-Dname=value" -.It Fl a -Enter enter alternate macro mode. -Also specifiable as -.Op Fl \-alternate -.It Fl c Ar char -Change the comment character from `!' -Also specifiable as -.Op Fl \-commentchar\ char -.It Fl d -Print limited debugging information. -Also specifiable as -.Op Fl \-debug -.It Fl h -Print the help message. -Also specifiable as -.Op Fl \-help -.It Fl M -Enter MRI compatibility mode -Also specifiable as -.Op Fl \-mri -.It Fl o Ar outfile -Specify the output file. -Also specifiable as -.Op Fl \-output\ outfile -.It Fl p -Print line numbers. -Also specifiable as -.Op Fl \-print -.It Fl s -Copy source through as comments. -Also specifiable as -.Op Fl \-copysource -.It Fl u -Allow unreasonable nesting. -Also specifiable as -.Op Fl \-unreasonable -.It Fl v -Print the program version and exit. -Also specifiable as -.Op Fl \-version -.It Fl D Ns Ar name=value -Define the preprocessor symbol -.Ar name -to have the value specified by "value". -.It Fl I Ns Ar path -Add -.Ar path -to the include path list. -.El -.Sh SEE ALSO -.Xr cpp 1 , -.Xr m4 1 -.Rs -.%T The gasp GNU hypertext system info pages -.Re -.Sh HISTORY -The -.Nm -command is part of the GNU Binutils package. -.Sh AUTHORS -This man page was written by -.An David E. O'Brien . diff --git a/gnu/usr.bin/binutils/gdb/Makefile b/gnu/usr.bin/binutils/gdb/Makefile deleted file mode 100644 index f51d9e3..0000000 --- a/gnu/usr.bin/binutils/gdb/Makefile +++ /dev/null @@ -1,139 +0,0 @@ -# ex:ts=8 -# $FreeBSD$ - -.include "../Makefile.inc0" - -GDBDIR= ${.CURDIR}/../../../../contrib/gdb -.PATH: ${GDBDIR}/gdb ${GDBDIR}/gdb/cli ${GDBDIR}/gdb/mi -.PATH: ${SRCDIR}/opcodes ${SRCDIR}/binutils - -# For FSF GDB files, use their CPU (arch) name; for our files use ours. -GDB_CPU=${TARGET_CPUARCH:C/amd64/i386/:C/powerpc.*/rs6000/:C/sparc64/sparc/} -NO_SHARED?=yes -PROG= gdb -XSRCS= annotate.c arch-utils.c ax-general.c ax-gdb.c bcache.c \ - blockframe.c breakpoint.c buildsym.c complaints.c completer.c \ - copying.c corefile.c corelow.c dcache.c doublest.c event-loop.c \ - event-top.c environ.c eval.c exec.c expprint.c fork-child.c \ - frame.c gdb-events.c gdbarch.c gdbtypes.c infcmd.c inflow.c \ - infptrace.c inf-loop.c infrun.c inftarg.c language.c linespec.c \ - main.c maint.c mdebugread.c mem-break.c memattr.c minsyms.c \ - objfiles.c parse.c printcmd.c regcache.c remote.c \ - remote-utils.c signals.c source.c stabsread.c stack.c symfile.c \ - symmisc.c symtab.c target.c thread.c top.c tracepoint.c \ - typeprint.c ui-file.c ui-out.c utils.c valarith.c valops.c \ - varobj.c valprint.c values.c wrapper.c \ - cli-cmds.c cli-cmds.h cli-decode.c cli-decode.h cli-out.c \ - cli-script.c cli-script.h cli-setshow.c cli-setshow.h \ - cli-utils.c cli-utils.h \ - mi-cmd-break.c mi-cmd-disas.c mi-cmd-stack.c mi-cmd-var.c \ - mi-cmds.c mi-console.c mi-getopt.c mi-main.c mi-out.c mi-parse.c\ - serial.c ser-unix.c ser-tcp.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 \ - cp-abi.c gnu-v2-abi.c gnu-v3-abi.c cp-valprint.c demangle.c \ - f-exp.y f-lang.c f-typeprint.c f-valprint.c findvar.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 \ - scm-exp.c scm-lang.c scm-valprint.c \ - coffread.c dbxread.c dwarfread.c dwarf2read.c elfread.c \ - solib.c solib-svr4.c solib-legacy.c -XSRCS+= freebsd-uthread.c kvm-fbsd.c kvm-fbsd-machine.h solib-fbsd-kld.c -SRCS= init.c ${XSRCS} nm.h tm.h xm.h gdbversion.c xregex.h - -.include "${.CURDIR}/Makefile.${TARGET_ARCH}" - -WARNS?= 0 -.if ${TARGET_ARCH} != ${MACHINE_ARCH} -CFLAGS+= -DCROSS_COMPILE=1 -.endif -CFLAGS+= -DDEFAULT_BFD_ARCH=bfd_${GDB_CPU}_arch -CFLAGS+= -I${.CURDIR}/${TARGET_CPUARCH} -CFLAGS+= -I${SRCDIR}/binutils -I${SRCDIR}/bfd -CFLAGS+= -I${GDBDIR}/gdb -I${GDBDIR}/gdb/config -CFLAGS+= -I$(.CURDIR) - -YFLAGS= - -DPADD= ${LIBKVM} ${LIBM} -DPADD+= ${RELTOP}/libbfd/libbfd.a ${RELTOP}/libopcodes/libopcodes.a -DPADD+= ${LIBGNUREGEX} -DPADD+= ${RELTOP}/libiberty/libiberty.a -DPADD+= ${LIBREADLINE} ${LIBTERMCAP} -LDADD= -lkvm -lm -LDADD+= ${RELTOP}/libbfd/libbfd.a ${RELTOP}/libopcodes/libopcodes.a -LDADD+= -lgnuregex -LDADD+= ${RELTOP}/libiberty/libiberty.a -LDADD+= -lreadline -ltermcap - -CLEANFILES= init.c init.c-tmp nm.h tm.h xm.h gdbversion.c xregex.h kvm-fbsd-machine.h - -# 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.). -# -# Formatting conventions: The name of the _initialize_* routines must start -# in column zero, and must not be inside #if. -# -# Note that the set of files with init functions might change, or the names -# of the functions might change, so this files needs to depend on all the -# object files that will be linked into gdb. - -init.c: ${XSRCS} - @${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 - @echo '#include "defs.h"' >>init.c-tmp - @echo '#include "call-cmds.h"' >>init.c-tmp - @echo 'void initialize_all_files () {' >>init.c-tmp - @for i in ${.ALLSRC} ; do \ - filename=`echo $$i | sed \ - -e '/^Onindy.c/d' \ - -e '/^nindy.c/d' \ - -e '/ttyflush.c/d' \ - -e '/xdr_ld.c/d' \ - -e '/xdr_ptrace.c/d' \ - -e '/xdr_rdb.c/d' \ - -e '/udr.c/d' \ - -e '/udip2soc.c/d' \ - -e '/udi2go32.c/d' \ - -e '/version.c/d' \ - -e '/^[a-z0-9A-Z_]*_[SU].c/d' \ - -e '/[a-z0-9A-Z_]*-exp.tab.c/d'` ; \ - case $$filename in \ - "") ;; \ - *) sed <$$filename >>init.c-tmp -n \ - -e '/^_initialize_[a-z_0-9A-Z]* *(/s/^\([a-z_0-9A-Z]*\).*/ {extern void \1 (); \1 ();}/p' ; ;; \ - esac ; \ - done - @echo '}' >>init.c-tmp - @mv init.c-tmp ${.TARGET} - -.PRECIOUS: init.c - -tm.h: - echo '#include "${GDB_CPU}/tm-fbsd.h"' > ${.TARGET} -.if exists(${.CURDIR}/fbsd-kgdb-${TARGET_CPUARCH}.h) - echo '#include "fbsd-kgdb-${TARGET_CPUARCH}.h"' >> ${.TARGET} -.endif - -.for H in nm-fbsd xm-${GDB_CPU} -${H:C/-.*$//}.h: - ln -sf ${GDBDIR}/gdb/config/${GDB_CPU}/${H}.h ${.TARGET} -.endfor - -kvm-fbsd-machine.h: - ln -sf ${.CURDIR}/kvm-fbsd-${TARGET_CPUARCH}.h ${.TARGET} - -GDB_VERSION= "5.2.1 (FreeBSD)" -gdbversion.c: Makefile - @echo '#include "version.h"' > ${.TARGET} - @echo 'const char version[] = ${GDB_VERSION};' >>${.TARGET} - @echo 'const char host_name[] = "${MACHINE_ARCH}-undermydesk-freebsd";' >>${.TARGET} - @echo 'const char target_name[] = "${TARGET_ARCH}-undermydesk-freebsd";' >>${.TARGET} - -xregex.h: - @echo '#include ' >${.TARGET} - -.include diff --git a/gnu/usr.bin/binutils/gdb/Makefile.arm b/gnu/usr.bin/binutils/gdb/Makefile.arm deleted file mode 100644 index 3a8bcff..0000000 --- a/gnu/usr.bin/binutils/gdb/Makefile.arm +++ /dev/null @@ -1,5 +0,0 @@ -# $FreeBSD$ - -XSRCS+= armnbsd-nat.c armnbsd-tdep.c arm-tdep.c \ - core-regset.c -CFLAGS+= -DDEFAULT_BFD_VEC=bfd_elf32_arm_vec diff --git a/gnu/usr.bin/binutils/gdb/Makefile.i386 b/gnu/usr.bin/binutils/gdb/Makefile.i386 deleted file mode 100644 index 14e7a3f..0000000 --- a/gnu/usr.bin/binutils/gdb/Makefile.i386 +++ /dev/null @@ -1,9 +0,0 @@ -# $FreeBSD$ - -XSRCS+= i386fbsd-nat.c i386bsd-tdep.c i386bsd-nat.c i386-nat.c i386-tdep.c \ - i387-nat.c i387-tdep.c \ - core-regset.c core-aout.c - -CFLAGS+= -Dprint_insn_i386=print_insn_i386_att -CFLAGS+= -DDEFAULT_BFD_VEC=bfd_elf32_i386_freebsd_vec -CFLAGS+= -DGDB_XM_FILE diff --git a/gnu/usr.bin/binutils/gdb/Makefile.ia64 b/gnu/usr.bin/binutils/gdb/Makefile.ia64 deleted file mode 100644 index 08283c7..0000000 --- a/gnu/usr.bin/binutils/gdb/Makefile.ia64 +++ /dev/null @@ -1,5 +0,0 @@ -# $FreeBSD$ - -XSRCS+= ia64-tdep.c ia64-fbsd-nat.c \ - core-regset.c -CFLAGS+= -DDEFAULT_BFD_VEC=bfd_elf64_ia64_vec diff --git a/gnu/usr.bin/binutils/gdb/Makefile.powerpc b/gnu/usr.bin/binutils/gdb/Makefile.powerpc deleted file mode 100644 index b5f9778..0000000 --- a/gnu/usr.bin/binutils/gdb/Makefile.powerpc +++ /dev/null @@ -1,5 +0,0 @@ -# $FreeBSD$ - -XSRCS+= ppcnbsd-nat.c ppc-tdep.c \ - core-regset.c -CFLAGS+= -DDEFAULT_BFD_VEC=bfd_elf32_powerpc_vec diff --git a/gnu/usr.bin/binutils/gdb/Makefile.powerpc64 b/gnu/usr.bin/binutils/gdb/Makefile.powerpc64 deleted file mode 100644 index 4cea113..0000000 --- a/gnu/usr.bin/binutils/gdb/Makefile.powerpc64 +++ /dev/null @@ -1,5 +0,0 @@ -# $FreeBSD$ - -XSRCS+= ppcnbsd-nat.c ppc-tdep.c \ - core-regset.c -CFLAGS+= -DDEFAULT_BFD_VEC=bfd_elf64_powerpc_vec diff --git a/gnu/usr.bin/binutils/gdb/Makefile.sparc64 b/gnu/usr.bin/binutils/gdb/Makefile.sparc64 deleted file mode 100644 index 5eb0f2e..0000000 --- a/gnu/usr.bin/binutils/gdb/Makefile.sparc64 +++ /dev/null @@ -1,4 +0,0 @@ -# $FreeBSD$ - -XSRCS+= sparc-nat.c sparc-tdep.c -CFLAGS+= -DDEFAULT_BFD_VEC=bfd_elf64_sparc_vec diff --git a/gnu/usr.bin/binutils/gdb/config.h b/gnu/usr.bin/binutils/gdb/config.h deleted file mode 100644 index a573126..0000000 --- a/gnu/usr.bin/binutils/gdb/config.h +++ /dev/null @@ -1,505 +0,0 @@ -/* $FreeBSD$ */ - -/* config.h. Generated automatically by configure. */ -/* config.in. Generated automatically from configure.in by autoheader. */ - -/* Define if on AIX 3. - System headers sometimes define this. - We just want to avoid a redefinition error message. */ -#ifndef _ALL_SOURCE -/* #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 you have . */ -/* #undef HAVE_VFORK_H */ - -/* Define as __inline if that's what the C compiler calls it. */ -/* #undef inline */ - -/* Define to `long' if doesn't define. */ -/* #undef off_t */ - -/* Define to `int' if doesn't define. */ -/* #undef pid_t */ - -/* Define as the return type of signal handlers (int or void). */ -#define RETSIGTYPE void - -/* Define if the `setpgrp' function takes no argument. */ -/* #undef SETPGRP_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 vfork as fork if vfork does not work. */ -/* #undef vfork */ - -/* Define if compiling on Solaris 7. */ -/* #undef _MSE_INT_H */ - -/* Define if your struct reg has r_fs. */ -#define HAVE_STRUCT_REG_R_FS 1 - -/* Define if your struct reg has r_gs. */ -#define HAVE_STRUCT_REG_R_GS 1 - -/* Define if exists and defines struct link_map which has - members with an ``l_'' prefix. (For Solaris, SVR4, and - SVR4-like systems.) */ -#define HAVE_STRUCT_LINK_MAP_WITH_L_MEMBERS 1 - -/* Define if exists and defines struct link_map which has - members with an ``lm_'' prefix. (For SunOS.) */ -/* #undef HAVE_STRUCT_LINK_MAP_WITH_LM_MEMBERS */ - -/* Define if exists and defines a struct so_map which has - members with an ``som_'' prefix. (Found on older *BSD systems.) */ -/* #undef HAVE_STRUCT_SO_MAP_WITH_SOM_MEMBERS */ - -/* Define if has struct link_map32 */ -/* #undef HAVE_STRUCT_LINK_MAP32 */ - -/* Define if the prfpregset_t type is broken. */ -/* #undef PRFPREGSET_T_BROKEN */ - -/* Define if you want to use new multi-fd /proc interface - (replaces HAVE_MULTIPLE_PROC_FDS as well as other macros). */ -/* #undef NEW_PROC_API */ - -/* Define if ioctl argument PIOCSET is available. */ -/* #undef HAVE_PROCFS_PIOCSET */ - -/* 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 on solaris uses int instead of - size_t, and assorted other type changes. */ -/* #undef PROC_SERVICE_IS_OLD */ - -/* If you want to specify a default CPU variant, define this to be its - name, as a C string. */ -/* #undef TARGET_CPU_DEFAULT */ - -/* Define if the simulator is being linked in. */ -/* #undef WITH_SIM */ - -/* Set to true if the save_state_t structure is present */ -/* #undef HAVE_STRUCT_SAVE_STATE_T */ - -/* Set to true if the save_state_t structure has the ss_wide member */ -/* #undef HAVE_STRUCT_MEMBER_SS_WIDE */ - -/* Define if defines the PTRACE_GETREGS request. */ -/* #undef HAVE_PTRACE_GETREGS */ - -/* Define if defines the PTRACE_GETFPXREGS request. */ -/* #undef HAVE_PTRACE_GETFPXREGS */ - -/* Define if defines the PT_GETDBREGS request. */ -#define HAVE_PT_GETDBREGS 1 - -/* Define if defines the PT_GETXMMREGS request. */ -/* #undef HAVE_PT_GETXMMREGS */ - -/* Define if gnu-regex.c included with GDB should be used. */ -#define USE_INCLUDED_REGEX 1 - -/* BFD's default architecture. */ -/* #define DEFAULT_BFD_ARCH bfd_alpha_arch */ - -/* BFD's default target vector. */ -/* #define DEFAULT_BFD_VEC bfd_elf64_alpha_vec */ - -/* Multi-arch enabled. */ -/* #undef GDB_MULTI_ARCH */ - -/* hostfile */ -/* #define GDB_XM_FILE 1 */ - -/* targetfile */ -#define GDB_TM_FILE 1 - -/* nativefile */ -#define GDB_NM_FILE 1 - -/* 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 canonicalize_file_name function. */ -/* #undef HAVE_CANONICALIZE_FILE_NAME */ - -/* 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 poll function. */ -#define HAVE_POLL 1 - -/* Define if you have the putenv function. */ -#define HAVE_PUTENV 1 - -/* Define if you have the realpath function. */ -#define HAVE_REALPATH 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 setpgrp function. */ -#define HAVE_SETPGRP 1 - -/* Define if you have the sigaction function. */ -#define HAVE_SIGACTION 1 - -/* Define if you have the sigprocmask function. */ -#define HAVE_SIGPROCMASK 1 - -/* Define if you have the sigsetmask function. */ -#define HAVE_SIGSETMASK 1 - -/* Define if you have the socketpair function. */ -#define HAVE_SOCKETPAIR 1 - -/* Define if you have the stpcpy function. */ -#define HAVE_STPCPY 1 - -/* 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. */ -#define HAVE_DIRENT_H 1 - -/* Define if you have the header file. */ -#define HAVE_LIMITS_H 1 - -/* 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_NCURSES_H 1 - -/* Define if you have the header file. */ -/* #undef HAVE_NDIR_H */ - -/* Define if you have the header file. */ -#define HAVE_NL_TYPES_H 1 - -/* Define if you have the header file. */ -#define HAVE_NLIST_H 1 - -/* Define if you have the header file. */ -/* #undef HAVE_OBJLIST_H */ - -/* Define if you have the header file. */ -#define HAVE_POLL_H 1 - -/* Define if you have the header file. */ -/* #undef HAVE_PROC_SERVICE_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_STDINT_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. */ -/* #undef HAVE_SYS_DEBUGREG_H */ - -/* Define if you have the header file. */ -/* #undef HAVE_SYS_DIR_H */ - -/* Define if you have the header file. */ -/* #undef HAVE_SYS_FAULT_H */ - -/* Define if you have the header file. */ -#define HAVE_SYS_FILE_H 1 - -/* Define if you have the header file. */ -#define HAVE_SYS_FILIO_H 1 - -/* Define if you have the header file. */ -#define HAVE_SYS_IOCTL_H 1 - -/* Define if you have the header file. */ -/* #undef HAVE_SYS_NDIR_H */ - -/* Define if you have the header file. */ -#define HAVE_SYS_PARAM_H 1 - -/* Define if you have the header file. */ -#define HAVE_SYS_POLL_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_SELECT_H 1 - -/* Define if you have the header file. */ -#define HAVE_SYS_SYSCALL_H 1 - -/* Define if you have the header file. */ -#define HAVE_SYS_USER_H 1 - -/* 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 */ - -/* Define if you have the header file. */ -#define HAVE_TERMIOS_H 1 - -/* Define if you have the header file. */ -/* #undef HAVE_THREAD_DB_H */ - -/* Define if you have the header file. */ -#define HAVE_TIME_H 1 - -/* 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. */ -#define HAVE_WCHAR_H 1 - -/* Define if you have the header file. */ -#define HAVE_WCTYPE_H 1 - -/* 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 socket library (-lsocket). */ -/* #undef HAVE_LIBSOCKET */ - -/* Define if you have the w library (-lw). */ -/* #undef HAVE_LIBW */ - -/* Define if you have the stpcpy function */ -#define HAVE_STPCPY 1 - -/* 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 sigsetjmp is available. */ -#define HAVE_SIGSETJMP 1 - -/* 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 strstr is not declared in system header files. */ -/* #undef NEED_DECLARATION_STRSTR */ - -/* Define if has pstatus_t. */ -/* #undef HAVE_PSTATUS_T */ - -/* Define if has prrun_t. */ -/* #undef HAVE_PRRUN_T */ - -/* Define if has gregset_t. */ -#ifndef CROSS_COMPILE -#define HAVE_GREGSET_T 1 -#endif - -/* Define if has fpregset_t. */ -#define HAVE_FPREGSET_T 1 - -/* Define if has prgregset_t. */ -/* #undef HAVE_PRGREGSET_T */ - -/* Define if has prfpregset_t. */ -#define HAVE_PRFPREGSET_T 1 - -/* Define if has prgregset32_t. */ -/* #undef HAVE_PRGREGSET32_T */ - -/* Define if has prfpregset32_t. */ -/* #undef HAVE_PRFPREGSET32_T */ - -/* Define if has lwpid_t. */ -/* #undef HAVE_LWPID_T */ - -/* Define if has psaddr_t. */ -/* #undef HAVE_PSADDR_T */ - -/* Define if has prsysent_t. */ -/* #undef HAVE_PRSYSENT_T */ - -/* Define if has pr_sigset_t. */ -/* #undef HAVE_PR_SIGSET_T */ - -/* Define if has pr_sigaction64_t. */ -/* #undef HAVE_PR_SIGACTION64_T */ - -/* Define if has pr_siginfo64_t. */ -/* #undef HAVE_PR_SIGINFO64_T */ diff --git a/gnu/usr.bin/binutils/gdb/fbsd-kgdb-alpha.h b/gnu/usr.bin/binutils/gdb/fbsd-kgdb-alpha.h deleted file mode 100644 index 6b5cf20..0000000 --- a/gnu/usr.bin/binutils/gdb/fbsd-kgdb-alpha.h +++ /dev/null @@ -1,14 +0,0 @@ -/* $FreeBSD$ */ - -#ifndef FBSD_KGDB_ALPHA_H -#define FBSD_KGDB_ALPHA_H - -#include "alpha/tm-fbsd.h" -#include "fbsd-kgdb.h" - -#undef FRAME_SAVED_PC -#define FRAME_SAVED_PC(FRAME) \ - (kernel_debugging ? fbsd_kern_frame_saved_pc(FRAME) : \ - alpha_saved_pc_after_call(FRAME)) - -#endif /* FBSD_KGDB_ALPHA_H */ diff --git a/gnu/usr.bin/binutils/gdb/fbsd-kgdb-amd64.h b/gnu/usr.bin/binutils/gdb/fbsd-kgdb-amd64.h deleted file mode 100644 index ee62200..0000000 --- a/gnu/usr.bin/binutils/gdb/fbsd-kgdb-amd64.h +++ /dev/null @@ -1,8 +0,0 @@ -/* $FreeBSD$ */ - -#ifndef FBSD_KGDB_AMD64_H -#define FBSD_KGDB_AMD64_H - -#include "fbsd-kgdb.h" - -#endif /* FBSD_KGDB_AMD64_H */ diff --git a/gnu/usr.bin/binutils/gdb/fbsd-kgdb-arm.h b/gnu/usr.bin/binutils/gdb/fbsd-kgdb-arm.h deleted file mode 100644 index 5896125..0000000 --- a/gnu/usr.bin/binutils/gdb/fbsd-kgdb-arm.h +++ /dev/null @@ -1,8 +0,0 @@ -/* $FreeBSD$ */ - -#ifndef FBSD_KGDB_ARM_H -#define FBSD_KGDB_ARM_H - -#include "fbsd-kgdb.h" - -#endif /* FBSD_KGDB_ARM_H */ diff --git a/gnu/usr.bin/binutils/gdb/fbsd-kgdb-i386.h b/gnu/usr.bin/binutils/gdb/fbsd-kgdb-i386.h deleted file mode 100644 index 3196316..0000000 --- a/gnu/usr.bin/binutils/gdb/fbsd-kgdb-i386.h +++ /dev/null @@ -1,21 +0,0 @@ -/* $FreeBSD$ */ - -#ifndef FBSD_KGDB_I386_H -#define FBSD_KGDB_I386_H - -#include "i386/tm-fbsd.h" -#include "fbsd-kgdb.h" - -/* Override FRAME_SAVED_PC to enable the recognition of signal handlers. */ -#undef FRAME_SAVED_PC -#define FRAME_SAVED_PC(FRAME) \ - (kernel_debugging \ - ? fbsd_kern_frame_saved_pc (FRAME) \ - : i386bsd_frame_saved_pc (FRAME)) -extern CORE_ADDR fbsd_kern_frame_saved_pc(struct frame_info *fr); - -/* Offset to saved PC in sigcontext, from . */ -/* DEO:XXX where is this really from??? */ -#define SIGCONTEXT_PC_OFFSET 20 - -#endif /* FBSD_KGDB_I386_H */ diff --git a/gnu/usr.bin/binutils/gdb/fbsd-kgdb-ia64.h b/gnu/usr.bin/binutils/gdb/fbsd-kgdb-ia64.h deleted file mode 100644 index 8f198fd..0000000 --- a/gnu/usr.bin/binutils/gdb/fbsd-kgdb-ia64.h +++ /dev/null @@ -1,8 +0,0 @@ -/* $FreeBSD$ */ - -#ifndef FBSD_KGDB_IA64_H -#define FBSD_KGDB_IA64_H - -#include "fbsd-kgdb.h" - -#endif /* FBSD_KGDB_IA64_H */ diff --git a/gnu/usr.bin/binutils/gdb/fbsd-kgdb-powerpc.h b/gnu/usr.bin/binutils/gdb/fbsd-kgdb-powerpc.h deleted file mode 100644 index c6821e1..0000000 --- a/gnu/usr.bin/binutils/gdb/fbsd-kgdb-powerpc.h +++ /dev/null @@ -1,8 +0,0 @@ -/* $FreeBSD$ */ - -#ifndef FBSD_KGDB_POWERPC_H -#define FBSD_KGDB_POWERPC_H - -#include "fbsd-kgdb.h" - -#endif /* FBSD_KGDB_POWERPC_H */ diff --git a/gnu/usr.bin/binutils/gdb/fbsd-kgdb-sparc64.h b/gnu/usr.bin/binutils/gdb/fbsd-kgdb-sparc64.h deleted file mode 100644 index 56fd480..0000000 --- a/gnu/usr.bin/binutils/gdb/fbsd-kgdb-sparc64.h +++ /dev/null @@ -1,9 +0,0 @@ -/* $FreeBSD$ */ - -#ifndef FBSD_KGDB_SPARC64_H -#define FBSD_KGDB_SPARC64_H - -#include "sparc/tm-fbsd.h" -#include "fbsd-kgdb.h" - -#endif /* FBSD_KGDB_SPARC64_H */ diff --git a/gnu/usr.bin/binutils/gdb/fbsd-kgdb.h b/gnu/usr.bin/binutils/gdb/fbsd-kgdb.h deleted file mode 100644 index e774436..0000000 --- a/gnu/usr.bin/binutils/gdb/fbsd-kgdb.h +++ /dev/null @@ -1,34 +0,0 @@ -/* Native-kernel debugging definitions for FreeBSD. - * $FreeBSD$ - */ - -#ifndef FBSD_KGDB_H -#define FBSD_KGDB_H - -extern int kernel_debugging; -extern int kernel_writablecore; -extern struct target_so_ops kgdb_so_ops; - -#define ADDITIONAL_OPTIONS \ - {"kernel", no_argument, &kernel_debugging, 1}, \ - {"k", no_argument, &kernel_debugging, 1}, \ - {"wcore", no_argument, &kernel_writablecore, 1}, \ - {"w", no_argument, &kernel_writablecore, 1}, - -#define ADDITIONAL_OPTION_HELP \ - "\ - --kernel Enable kernel debugging.\n\ - --wcore Make core file writable (only works for /dev/mem).\n\ - This option only works while debugging a kernel !!\n\ -" - -#define DEFAULT_PROMPT kernel_debugging?"(kgdb) ":"(gdb) " - -/* misuse START_PROGRESS to test whether we're running as kgdb */ -/* START_PROGRESS is called at the top of main */ -#undef START_PROGRESS -#define START_PROGRESS(STR,N) \ - if (!strcmp (STR, "kgdb")) \ - kernel_debugging = 1; - -#endif /* FBSD_KGDB_H */ diff --git a/gnu/usr.bin/binutils/gdb/freebsd-uthread.c b/gnu/usr.bin/binutils/gdb/freebsd-uthread.c deleted file mode 100644 index 0974c3e..0000000 --- a/gnu/usr.bin/binutils/gdb/freebsd-uthread.c +++ /dev/null @@ -1,889 +0,0 @@ -/* Low level interface for debugging FreeBSD user threads for GDB, the GNU debugger. - Copyright 1996, 1999 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. */ - -/* $FreeBSD$ */ - -/* This module implements a sort of half target that sits between the - machine-independent parts of GDB and the ptrace interface (infptrace.c) to - provide access to the FreeBSD user-mode thread implementation. - - FreeBSD threads are true user-mode threads, which are invoked via - the pthread_* interfaces. These are mostly implemented in - user-space, with all thread context kept in various structures that - live in the user's heap. For the most part, the kernel has no - knowlege of these threads. - - Based largely on hpux-thread.c - - */ - - -#include "defs.h" -#include -#include -#include -#include "gdbthread.h" -#include "target.h" -#include "inferior.h" -#include -#include -#include -#include -#include "gdbcore.h" - -extern int child_suppress_run; -extern struct target_ops child_ops; /* target vector for inftarg.c */ - -extern void _initialize_freebsd_uthread PARAMS ((void)); - -/* Set to true while we are part-way through attaching */ -static int freebsd_uthread_attaching; - -static int freebsd_uthread_active = 0; -static CORE_ADDR P_thread_list; -static CORE_ADDR P_thread_run; - -/* Pointer to the next function on the objfile event chain. */ -static void (*target_new_objfile_chain) (struct objfile *objfile); - -static void freebsd_uthread_resume PARAMS ((ptid_t pid, int step, - enum target_signal signo)); - -static void init_freebsd_uthread_ops PARAMS ((void)); - -static struct target_ops freebsd_uthread_ops; - -static ptid_t find_active_ptid PARAMS ((void)); - -struct cached_pthread { - u_int64_t uniqueid; - int state; - CORE_ADDR name; - union { - ucontext_t uc; - jmp_buf jb; - } ctx; -}; - -static ptid_t cached_ptid; -static struct cached_pthread cached_pthread; -static CORE_ADDR cached_pthread_addr; - -LIST_HEAD(idmaplist, idmap); - -struct idmap { - LIST_ENTRY(idmap) link; - u_int64_t uniqueid; - int tid; -}; - -#define MAPHASH_SIZE 257 -#define TID_MIN 1 -#define TID_MAX 16383 - -static int tid_to_hash[TID_MAX + 1]; /* set to map_hash index */ -static struct idmaplist map_hash[MAPHASH_SIZE]; -static int next_free_tid = TID_MIN; /* first available tid */ -static int last_free_tid = TID_MIN; /* first unavailable */ - -static CORE_ADDR P_thread_next_offset; -static CORE_ADDR P_thread_uniqueid_offset; -static CORE_ADDR P_thread_state_offset; -static CORE_ADDR P_thread_name_offset; -static CORE_ADDR P_thread_ctx_offset; -static CORE_ADDR P_thread_PS_RUNNING_value; -static CORE_ADDR P_thread_PS_DEAD_value; - -static int next_offset; -static int uniqueid_offset; -static int state_offset; -static int name_offset; -static int ctx_offset; -static int PS_RUNNING_value; -static int PS_DEAD_value; - -#define UNIQUEID_HASH(id) (id % MAPHASH_SIZE) -#define TID_ADD1(tid) (((tid) + 1) == TID_MAX + 1 \ - ? TID_MIN : (tid) + 1) -#define IS_TID_FREE(tid) (tid_to_hash[tid] == -1) - -static int -get_new_tid(int h) -{ - int tid = next_free_tid; - - tid_to_hash[tid] = h; - next_free_tid = TID_ADD1(next_free_tid); - if (next_free_tid == last_free_tid) - { - int i; - - for (i = last_free_tid; TID_ADD1(i) != last_free_tid; i = TID_ADD1(i)) - if (IS_TID_FREE(i)) - break; - if (TID_ADD1(i) == last_free_tid) - { - error("too many threads"); - return 0; - } - next_free_tid = i; - for (i = TID_ADD1(i); IS_TID_FREE(i); i = TID_ADD1(i)) - ; - last_free_tid = i; - } - - return tid; -} - -static ptid_t -find_ptid(u_int64_t uniqueid) -{ - int h = UNIQUEID_HASH(uniqueid); - struct idmap *im; - - LIST_FOREACH(im, &map_hash[h], link) - if (im->uniqueid == uniqueid) - return MERGEPID(PIDGET(inferior_ptid), im->tid); - - im = xmalloc(sizeof(struct idmap)); - im->uniqueid = uniqueid; - im->tid = get_new_tid(h); - LIST_INSERT_HEAD(&map_hash[h], im, link); - - return MERGEPID(PIDGET(inferior_ptid), im->tid); -} - -static void -free_ptid(ptid_t ptid) -{ - int tid = TIDGET(ptid); - int h = tid_to_hash[tid]; - struct idmap *im; - - if (!tid) return; - - LIST_FOREACH(im, &map_hash[h], link) - if (im->tid == tid) - break; - - if (!im) return; - - LIST_REMOVE(im, link); - tid_to_hash[tid] = -1; - free(im); -} - -#define READ_OFFSET(field) read_memory(P_thread_##field##_offset, \ - (char *) &field##_offset, \ - sizeof(field##_offset)) - -#define READ_VALUE(name) read_memory(P_thread_##name##_value, \ - (char *) &name##_value, \ - sizeof(name##_value)) - -static void -read_thread_offsets (void) -{ - READ_OFFSET(next); - READ_OFFSET(uniqueid); - READ_OFFSET(state); - READ_OFFSET(name); - READ_OFFSET(ctx); - - READ_VALUE(PS_RUNNING); - READ_VALUE(PS_DEAD); -} - -#define READ_FIELD(ptr, T, field, result) \ - read_memory ((ptr) + field##_offset, (char *) &(result), sizeof result) - -static u_int64_t -read_pthread_uniqueid (CORE_ADDR ptr) -{ - u_int64_t uniqueid; - READ_FIELD(ptr, u_int64_t, uniqueid, uniqueid); - return uniqueid; -} - -static CORE_ADDR -read_pthread_next (CORE_ADDR ptr) -{ - CORE_ADDR next; - READ_FIELD(ptr, CORE_ADDR, next, next); - return next; -} - -static void -read_cached_pthread (CORE_ADDR ptr, struct cached_pthread *cache) -{ - READ_FIELD(ptr, u_int64_t, uniqueid, cache->uniqueid); - READ_FIELD(ptr, int, state, cache->state); - READ_FIELD(ptr, CORE_ADDR, name, cache->name); - READ_FIELD(ptr, ucontext_t, ctx, cache->ctx); -} - -static ptid_t -find_active_ptid (void) -{ - CORE_ADDR ptr; - - read_memory ((CORE_ADDR)P_thread_run, - (char *)&ptr, - sizeof ptr); - - return find_ptid(read_pthread_uniqueid(ptr)); -} - -static CORE_ADDR find_pthread_addr PARAMS ((ptid_t ptid)); -static struct cached_pthread * find_pthread PARAMS ((ptid_t ptid)); - -static CORE_ADDR -find_pthread_addr (ptid_t ptid) -{ - CORE_ADDR ptr; - - if (ptid_equal(ptid, cached_ptid)) - return cached_pthread_addr; - - read_memory ((CORE_ADDR)P_thread_list, - (char *)&ptr, - sizeof ptr); - - while (ptr != 0) - { - if (ptid_equal(find_ptid(read_pthread_uniqueid(ptr)), ptid)) - { - cached_ptid = ptid; - cached_pthread_addr = ptr; - read_cached_pthread(ptr, &cached_pthread); - return ptr; - } - ptr = read_pthread_next(ptr); - } - - return NULL; -} - -static struct cached_pthread * -find_pthread (ptid_t ptid) -{ - CORE_ADDR ptr; - - if (ptid_equal(ptid, cached_ptid)) - return &cached_pthread; - - read_memory ((CORE_ADDR)P_thread_list, - (char *)&ptr, - sizeof ptr); - - while (ptr != 0) - { - if (ptid_equal(find_ptid(read_pthread_uniqueid(ptr)), ptid)) - { - cached_ptid = ptid; - cached_pthread_addr = ptr; - read_cached_pthread(ptr, &cached_pthread); - return &cached_pthread; - } - ptr = read_pthread_next(ptr); - } - -#if 0 - error ("Can't find pthread %d,%d", PIDGET(ptid), TIDGET(ptid)); -#endif - return NULL; -} - - -/* Most target vector functions from here on actually just pass through to - inftarg.c, as they don't need to do anything specific for threads. */ - -/* ARGSUSED */ -static void -freebsd_uthread_open (char *arg, int from_tty) -{ - child_ops.to_open (arg, from_tty); -} - -/* Attach to process PID, then initialize for debugging it - and wait for the trace-trap that results from attaching. */ - -static void -freebsd_uthread_attach (char *args, int from_tty) -{ - child_ops.to_attach (args, from_tty); - push_target (&freebsd_uthread_ops); - freebsd_uthread_attaching = 1; -} - -/* After an attach, see if the target is threaded */ - -static void -freebsd_uthread_post_attach (int pid) -{ - if (freebsd_uthread_active) - { - read_thread_offsets (); - inferior_ptid = find_active_ptid (); - add_thread (inferior_ptid); - } - else - { - unpush_target (&freebsd_uthread_ops); - push_target (&child_ops); - } - - freebsd_uthread_attaching = 0; -} - -/* Take a program previously attached to and detaches it. - The program resumes execution and will no longer stop - on signals, etc. We'd better not have left any breakpoints - in the program or it'll die when it hits one. For this - to work, it may be necessary for the process to have been - previously attached. It *might* work if the program was - started via the normal ptrace (PTRACE_TRACEME). */ - -static void -freebsd_uthread_detach (char *args, int from_tty) -{ - child_ops.to_detach (args, from_tty); -} - -/* Resume execution of process PID. If STEP is nozero, then - just single step it. If SIGNAL is nonzero, restart it with that - signal activated. We may have to convert pid from a thread-id to an LWP id - for procfs. */ - -static void -freebsd_uthread_resume (ptid_t ptid, int step, enum target_signal signo) -{ - if (freebsd_uthread_attaching) - { - child_ops.to_resume (ptid, step, signo); - return; - } - - child_ops.to_resume (ptid, step, signo); - cached_ptid = MERGEPID(0, 0); -} - -/* Wait for any threads to stop. We may have to convert PID from a thread id - to a LWP id, and vice versa on the way out. */ - -static ptid_t -freebsd_uthread_wait (ptid_t ptid, struct target_waitstatus *ourstatus) -{ - ptid_t rtnval; - - if (freebsd_uthread_attaching) - { - return child_ops.to_wait (ptid, ourstatus); - } - - rtnval = child_ops.to_wait (ptid, ourstatus); - - if (PIDGET(rtnval) >= 0) - { - rtnval = find_active_ptid (); - if (!in_thread_list (rtnval)) - add_thread (rtnval); - } - - return rtnval; -} - -/* XXX: this needs to be selected by target, not [build] host */ -#ifdef __i386__ - -static char jmpmap[MAX_NUM_REGS] = /* map reg to jmp_buf */ -{ - 6, /* eax */ - -1, /* ecx */ - -1, /* edx */ - 1, /* ebx */ - 2, /* esp */ - 3, /* ebp */ - 4, /* esi */ - 5, /* edi */ - 0, /* eip */ - -1, /* eflags */ - -1, /* cs */ - -1, /* ss */ - -1, /* ds */ - -1, /* es */ - -1, /* fs */ - -1, /* gs */ - -1, -1, -1, -1, -1, -1, -1, /* st0-st7 */ - -1, -1, -1, -1, -1, -1, -1, /* fctrl-fop */ - -1, -1, -1, -1, -1, -1, -1, /* xmm0-xmm7 */ - -1, /* mxcsr */ -}; - -#endif - -#ifdef __alpha__ - -static char jmpmap[NUM_REGS] = { - 4, 5, 6, 7, 8, 9, 10, 11, /* v0 - t6 */ - 12, 13, 14, 15, 16, 17, 18, 19, /* t7 - fp */ - 20, 21, 22, 23, 24, 25, 26, 27, /* a0 - t9 */ - 28, 29, 30, 31, 32, 33, 34, 35, /* t10 - zero */ - 37, 38, 39, 40, 41, 42, 43, 44, /* f0 - f7 */ - 45, 46, 47, 48, 49, 50, 51, 52, /* f8 - f15 */ - 53, 54, 55, 56, 57, 58, 59, 60, /* f16 - f23 */ - 61, 62, 63, 64, 65, 66, 67, 68, /* f24 - f31 */ - 2, -1, /* pc, vfp */ -}; - -#endif - -#ifdef __sparc64__ - -static char jmpmap[125] = { - -1 -}; - -#endif - -static void -freebsd_uthread_fetch_registers (int regno) -{ - struct cached_pthread *thread; - int active; - int first_regno, last_regno; - register_t *regbase; - char *regmap; - - if (freebsd_uthread_attaching || TIDGET(inferior_ptid) == 0) - { - child_ops.to_fetch_registers (regno); - return; - } - - thread = find_pthread (inferior_ptid); - active = (ptid_equal(inferior_ptid, find_active_ptid())); - - if (active) - { - child_ops.to_fetch_registers (regno); - return; - } - - if (regno == -1) - { - first_regno = 0; - last_regno = NUM_REGS - 1; - } - else - { - first_regno = regno; - last_regno = regno; - } - - regbase = (register_t*) &thread->ctx.jb[0]; - regmap = jmpmap; - - for (regno = first_regno; regno <= last_regno; regno++) - { - if (regmap[regno] == -1) - child_ops.to_fetch_registers (regno); - else - if (thread) - supply_register (regno, (char*) ®base[regmap[regno]]); - else - supply_register (regno, NULL); - } -} - -static void -freebsd_uthread_store_registers (int regno) -{ - struct cached_pthread *thread; - CORE_ADDR ptr; - int first_regno, last_regno; - u_int32_t *regbase; - char *regmap; - - if (freebsd_uthread_attaching) - { - child_ops.to_store_registers (regno); - return; - } - - thread = find_pthread (inferior_ptid); - - if (thread->state == PS_RUNNING_value) - { - child_ops.to_store_registers (regno); - return; - } - - if (regno == -1) - { - first_regno = 0; - last_regno = NUM_REGS - 1; - } - else - { - first_regno = regno; - last_regno = regno; - } - - regbase = (u_int32_t*) &thread->ctx.jb[0]; - regmap = jmpmap; - - ptr = find_pthread_addr (inferior_ptid); - for (regno = first_regno; regno <= last_regno; regno++) - { - if (regmap[regno] == -1) - child_ops.to_store_registers (regno); - else - { - u_int32_t *reg = ®base[regmap[regno]]; - int off; - - /* Hang onto cached value */ - memcpy(reg, registers + REGISTER_BYTE (regno), - REGISTER_RAW_SIZE (regno)); - - /* And push out to inferior */ - off = (char *) reg - (char *) thread; - write_memory (ptr + off, - registers + REGISTER_BYTE (regno), - REGISTER_RAW_SIZE (regno)); - } - } -} - -/* Get ready to modify the registers array. On machines which store - individual registers, this doesn't need to do anything. On machines - which store all the registers in one fell swoop, this makes sure - that registers contains all the registers from the program being - debugged. */ - -static void -freebsd_uthread_prepare_to_store (void) -{ - child_ops.to_prepare_to_store (); -} - -static int -freebsd_uthread_xfer_memory (CORE_ADDR memaddr, char *myaddr, int len, - int dowrite, struct mem_attrib *attrib, - struct target_ops *target) -{ - return child_ops.to_xfer_memory (memaddr, myaddr, len, dowrite, - attrib, target); -} - -/* Print status information about what we're accessing. */ - -static void -freebsd_uthread_files_info (struct target_ops *ignore) -{ - child_ops.to_files_info (ignore); -} - -static void -freebsd_uthread_kill_inferior (void) -{ - child_ops.to_kill (); -} - -static void -freebsd_uthread_notice_signals (ptid_t ptid) -{ - child_ops.to_notice_signals (ptid); -} - -/* Fork an inferior process, and start debugging it with /proc. */ - -static void -freebsd_uthread_create_inferior (char *exec_file, char *allargs, char **env) -{ - child_ops.to_create_inferior (exec_file, allargs, env); - - if (PIDGET(inferior_ptid) && freebsd_uthread_active) - { - read_thread_offsets (); - push_target (&freebsd_uthread_ops); - inferior_ptid = find_active_ptid (); - add_thread (inferior_ptid); - } -} - -/* This routine is called to find out if the inferior is using threads. - We check for the _thread_run and _thread_list globals. */ - -void -freebsd_uthread_new_objfile (struct objfile *objfile) -{ - struct minimal_symbol *ms; - - if (!objfile) - { - freebsd_uthread_active = 0; - return; - } - - ms = lookup_minimal_symbol ("_thread_run", NULL, objfile); - - if (!ms) - return; - - P_thread_run = SYMBOL_VALUE_ADDRESS (ms); - - ms = lookup_minimal_symbol ("_thread_list", NULL, objfile); - - if (!ms) - return; - - P_thread_list = SYMBOL_VALUE_ADDRESS (ms); - -#define OFFSET_SYM(field) "_thread_" #field "_offset" -#define LOOKUP_OFFSET(field) \ - do { \ - ms = lookup_minimal_symbol (OFFSET_SYM(field), NULL, objfile); \ - if (!ms) \ - return; \ - P_thread_##field##_offset = SYMBOL_VALUE_ADDRESS (ms); \ - } while (0); - -#define VALUE_SYM(name) "_thread_" #name "_value" -#define LOOKUP_VALUE(name) \ - do { \ - ms = lookup_minimal_symbol (VALUE_SYM(name), NULL, objfile); \ - if (!ms) \ - return; \ - P_thread_##name##_value = SYMBOL_VALUE_ADDRESS (ms); \ - } while (0); - - LOOKUP_OFFSET(next); - LOOKUP_OFFSET(uniqueid); - LOOKUP_OFFSET(state); - LOOKUP_OFFSET(name); - LOOKUP_OFFSET(ctx); - - LOOKUP_VALUE(PS_RUNNING); - LOOKUP_VALUE(PS_DEAD); - - freebsd_uthread_active = 1; -} - -/* Clean up after the inferior dies. */ - -static void -freebsd_uthread_mourn_inferior () -{ - child_ops.to_mourn_inferior (); - unpush_target (&freebsd_uthread_ops); -} - -/* Mark our target-struct as eligible for stray "run" and "attach" commands. */ - -static int -freebsd_uthread_can_run () -{ - return child_suppress_run; -} - -static int -freebsd_uthread_thread_alive (ptid_t ptid) -{ - struct cached_pthread *thread; - int ret = 0; - - if (freebsd_uthread_attaching) - return 1; - - /* - * We can get called from child_ops.to_wait() which passes the underlying - * pid (without a thread number). - */ - if (TIDGET(ptid) == 0) - return 1; - - if (find_pthread_addr (ptid) != 0) - { - thread = find_pthread (ptid); - ret = (thread->state != PS_DEAD_value); - } - - if (!ret) - free_ptid(ptid); - - return ret; -} - -static void -freebsd_uthread_stop (void) -{ - child_ops.to_stop (); -} - -static void -freebsd_uthread_find_new_threads (void) -{ - CORE_ADDR ptr; - int state; - u_int64_t uniqueid; - - read_memory ((CORE_ADDR)P_thread_list, - (char *)&ptr, - sizeof ptr); - - while (ptr != 0) - { - READ_FIELD(ptr, int, state, state); - READ_FIELD(ptr, u_int64_t, uniqueid, uniqueid); - if (state != PS_DEAD_value && - !in_thread_list (find_ptid(uniqueid))) - add_thread (find_ptid(uniqueid)); - ptr = read_pthread_next(ptr); - } -} - -/* MUST MATCH enum pthread_state */ -static const char *statenames[] = { - "RUNNING", - "SIGTHREAD", - "MUTEX_WAIT", - "COND_WAIT", - "FDLR_WAIT", - "FDLW_WAIT", - "FDR_WAIT", - "FDW_WAIT", - "POLL_WAIT", - "FILE_WAIT", - "SELECT_WAIT", - "SLEEP_WAIT", - "WAIT_WAIT", - "SIGSUSPEND", - "SIGWAIT", - "SPINBLOCK", - "JOIN", - "SUSPENDED", - "DEAD", - "DEADLOCK", -}; - -#if 0 - -static int -freebsd_uthread_get_thread_info (ref, selection, info) - gdb_threadref *ref; - int selection; - struct gdb_ext_thread_info *info; -{ - int pid = *ref; - struct cached_pthread *thread = find_pthread (pid); - struct cleanup *old_chain; - - old_chain = save_inferior_pid (); - inferior_pid = main_pid; - - memset(&info->threadid, 0, OPAQUETHREADBYTES); - - memcpy(&info->threadid, ref, sizeof *ref); - info->active = thread->state == PS_RUNNING_value; - strcpy(info->display, statenames[thread->state]); - if (thread->name) - read_memory ((CORE_ADDR) thread->name, info->shortname, 32); - else - strcpy(info->shortname, ""); - - do_cleanups (old_chain); - return (0); -} - -#endif - -char * -freebsd_uthread_pid_to_str (ptid_t ptid) -{ - static char buf[30]; - - if (STREQ (current_target.to_shortname, "freebsd-uthreads")) - sprintf (buf, "Process %d, Thread %ld", - PIDGET(ptid), TIDGET(ptid)); - else - sprintf (buf, "Process %d", PIDGET(ptid)); - - return buf; -} - - -static void -init_freebsd_uthread_ops () -{ - freebsd_uthread_ops.to_shortname = "freebsd-uthreads"; - freebsd_uthread_ops.to_longname = "FreeBSD uthreads"; - freebsd_uthread_ops.to_doc = "FreeBSD user threads support."; - freebsd_uthread_ops.to_open = freebsd_uthread_open; - freebsd_uthread_ops.to_attach = freebsd_uthread_attach; - freebsd_uthread_ops.to_post_attach = freebsd_uthread_post_attach; - freebsd_uthread_ops.to_detach = freebsd_uthread_detach; - freebsd_uthread_ops.to_resume = freebsd_uthread_resume; - freebsd_uthread_ops.to_wait = freebsd_uthread_wait; - freebsd_uthread_ops.to_fetch_registers = freebsd_uthread_fetch_registers; - freebsd_uthread_ops.to_store_registers = freebsd_uthread_store_registers; - freebsd_uthread_ops.to_prepare_to_store = freebsd_uthread_prepare_to_store; - freebsd_uthread_ops.to_xfer_memory = freebsd_uthread_xfer_memory; - freebsd_uthread_ops.to_files_info = freebsd_uthread_files_info; - freebsd_uthread_ops.to_insert_breakpoint = memory_insert_breakpoint; - freebsd_uthread_ops.to_remove_breakpoint = memory_remove_breakpoint; - freebsd_uthread_ops.to_terminal_init = terminal_init_inferior; - freebsd_uthread_ops.to_terminal_inferior = terminal_inferior; - freebsd_uthread_ops.to_terminal_ours_for_output = terminal_ours_for_output; - freebsd_uthread_ops.to_terminal_ours = terminal_ours; - freebsd_uthread_ops.to_terminal_info = child_terminal_info; - freebsd_uthread_ops.to_kill = freebsd_uthread_kill_inferior; - freebsd_uthread_ops.to_create_inferior = freebsd_uthread_create_inferior; - freebsd_uthread_ops.to_mourn_inferior = freebsd_uthread_mourn_inferior; - freebsd_uthread_ops.to_can_run = freebsd_uthread_can_run; - freebsd_uthread_ops.to_notice_signals = freebsd_uthread_notice_signals; - freebsd_uthread_ops.to_thread_alive = freebsd_uthread_thread_alive; - freebsd_uthread_ops.to_stop = freebsd_uthread_stop; - freebsd_uthread_ops.to_stratum = process_stratum; - freebsd_uthread_ops.to_has_all_memory = 1; - freebsd_uthread_ops.to_has_memory = 1; - freebsd_uthread_ops.to_has_stack = 1; - freebsd_uthread_ops.to_has_registers = 1; - freebsd_uthread_ops.to_has_execution = 1; - freebsd_uthread_ops.to_has_thread_control = 0; - freebsd_uthread_ops.to_magic = OPS_MAGIC; - freebsd_uthread_ops.to_find_new_threads = freebsd_uthread_find_new_threads; - freebsd_uthread_ops.to_pid_to_str = freebsd_uthread_pid_to_str; -#if 0 - freebsd_uthread_vec.get_thread_info = freebsd_uthread_get_thread_info; -#endif -} - -void -_initialize_freebsd_uthread () -{ - init_freebsd_uthread_ops (); - add_target (&freebsd_uthread_ops); - - target_new_objfile_chain = target_new_objfile_hook; - target_new_objfile_hook = freebsd_uthread_new_objfile; - - child_suppress_run = 1; -} diff --git a/gnu/usr.bin/binutils/gdb/gdb.1 b/gnu/usr.bin/binutils/gdb/gdb.1 deleted file mode 100644 index b6cd3cc..0000000 --- a/gnu/usr.bin/binutils/gdb/gdb.1 +++ /dev/null @@ -1,385 +0,0 @@ -.\" Copyright (c) 1991 Free Software Foundation -.\" See section COPYING for conditions for redistribution -.\" $FreeBSD$ -.TH gdb 1 "4nov1991" "GNU Tools" "GNU Tools" -.SH NAME -gdb \- The GNU Debugger -.SH SYNOPSIS -.na -.TP -.B gdb -.RB "[\|" \-help "\|]" -.RB "[\|" \-nx "\|]" -.RB "[\|" \-q "\|]" -.RB "[\|" \-batch "\|]" -.RB "[\|" \-cd=\c -.I dir\c -\|] -.RB "[\|" \-f "\|]" -.RB "[\|" \-k "\|]" -.RB "[\|" \-wcore "\|]" -.RB "[\|" "\-b\ "\c -.IR bps "\|]" -.RB "[\|" "\-tty="\c -.IR dev "\|]" -.RB "[\|" "\-s "\c -.I symfile\c -\&\|] -.RB "[\|" "\-e "\c -.I prog\c -\&\|] -.RB "[\|" "\-se "\c -.I prog\c -\&\|] -.RB "[\|" "\-c "\c -.I core\c -\&\|] -.RB "[\|" "\-x "\c -.I cmds\c -\&\|] -.RB "[\|" "\-d "\c -.I dir\c -\&\|] -.RB "[\|" \c -.I prog\c -.RB "[\|" \c -.IR core \||\| procID\c -\&\|]\&\|] -.ad b -.SH DESCRIPTION -The purpose of a debugger such as GDB is to allow you to see what is -going on ``inside'' another program while it executes\(em\&or what another -program was doing at the moment it crashed. - -GDB can do four main kinds of things (plus other things in support of -these) to help you catch bugs in the act: - -.TP -\ \ \ \(bu -Start your program, specifying anything that might affect its behavior. - -.TP -\ \ \ \(bu -Make your program stop on specified conditions. - -.TP -\ \ \ \(bu -Examine what has happened, when your program has stopped. - -.TP -\ \ \ \(bu -Change things in your program, so you can experiment with correcting the -effects of one bug and go on to learn about another. -.PP - -You can use GDB to debug programs written in C, C++, and Modula-2. -Fortran support will be added when a GNU Fortran compiler is ready. - -GDB is invoked with the shell command \c -.B gdb\c -\&. Once started, it reads -commands from the terminal until you tell it to exit with the GDB -command \c -.B quit\c -\&. You can get online help from \c -.B gdb\c -\& itself -by using the command \c -.B help\c -\&. - -You can run \c -.B gdb\c -\& with no arguments or options; but the most -usual way to start GDB is with one argument or two, specifying an -executable program as the argument: -.sp -.br -gdb\ program -.br -.sp - -You can also start with both an executable program and a core file specified: -.sp -.br -gdb\ program\ core -.br -.sp - -You can, instead, specify a process ID as a second argument, if you want -to debug a running process: -.sp -.br -gdb\ program\ 1234 -.br -.sp - -would attach GDB to process \c -.B 1234\c -\& (unless you also have a file -named `\|\c -.B 1234\c -\&\|'; GDB does check for a core file first). - -Here are some of the most frequently needed GDB commands: -.TP -.B break \fR[\|\fIfile\fB:\fR\|]\fIfunction -\& -Set a breakpoint at \c -.I function\c -\& (in \c -.I file\c -\&). -.TP -.B run \fR[\|\fIarglist\fR\|] -Start your program (with \c -.I arglist\c -\&, if specified). -.TP -.B bt -Backtrace: display the program stack. -.TP -.BI print " expr"\c -\& -Display the value of an expression. -.TP -.B c -Continue running your program (after stopping, e.g. at a breakpoint). -.TP -.B next -Execute next program line (after stopping); step \c -.I over\c -\& any -function calls in the line. -.TP -.B step -Execute next program line (after stopping); step \c -.I into\c -\& any -function calls in the line. -.TP -.B help \fR[\|\fIname\fR\|] -Show information about GDB command \c -.I name\c -\&, or general information -about using GDB. -.TP -.B quit -Exit from GDB. -.PP -For full details on GDB, see \c -.I -Using GDB: A Guide to the GNU Source-Level Debugger\c -\&, by Richard M. Stallman and Roland H. Pesch. The same text is available online -as the \c -.B gdb\c -\& entry in the \c -.B info\c -\& program. -.SH OPTIONS -Any arguments other than options specify an executable -file and core file (or process ID); that is, the first argument -encountered with no -associated option flag is equivalent to a `\|\c -.B \-se\c -\&\|' option, and the -second, if any, is equivalent to a `\|\c -.B \-c\c -\&\|' option if it's the name of a file. Many options have -both long and short forms; both are shown here. The long forms are also -recognized if you truncate them, so long as enough of the option is -present to be unambiguous. (If you prefer, you can flag option -arguments with `\|\c -.B +\c -\&\|' rather than `\|\c -.B \-\c -\&\|', though we illustrate the -more usual convention.) - -All the options and command line arguments you give are processed -in sequential order. The order makes a difference when the -`\|\c -.B \-x\c -\&\|' option is used. - -.TP -.B \-help -.TP -.B \-h -List all options, with brief explanations. - -.TP -.BI "\-symbols=" "file"\c -.TP -.BI "\-s " "file"\c -\& -Read symbol table from file \c -.I file\c -\&. - -.TP -.BI "\-exec=" "file"\c -.TP -.BI "\-e " "file"\c -\& -Use file \c -.I file\c -\& as the executable file to execute when -appropriate, and for examining pure data in conjunction with a core -dump. - -.TP -.BI "\-se=" "file"\c -\& -Read symbol table from file \c -.I file\c -\& and use it as the executable -file. - -.TP -.BI "\-core=" "file"\c -.TP -.BI "\-c " "file"\c -\& -Use file \c -.I file\c -\& as a core dump to examine. - -.TP -.BI "\-command=" "file"\c -.TP -.BI "\-x " "file"\c -\& -Execute GDB commands from file \c -.I file\c -\&. - -.TP -.BI "\-directory=" "directory"\c -.TP -.BI "\-d " "directory"\c -\& -Add \c -.I directory\c -\& to the path to search for source files. -.PP - -.TP -.B \-nx -.TP -.B \-n -Do not execute commands from any `\|\c -.B .gdbinit\c -\&\|' initialization files. -Normally, the commands in these files are executed after all the -command options and arguments have been processed. - - -.TP -.B \-quiet -.TP -.B \-q -``Quiet''. Do not print the introductory and copyright messages. These -messages are also suppressed in batch mode. - -.TP -.B \-batch -Run in batch mode. Exit with status \c -.B 0\c -\& after processing all the command -files specified with `\|\c -.B \-x\c -\&\|' (and `\|\c -.B .gdbinit\c -\&\|', if not inhibited). -Exit with nonzero status if an error occurs in executing the GDB -commands in the command files. - -Batch mode may be useful for running GDB as a filter, for example to -download and run a program on another computer; in order to make this -more useful, the message -.sp -.br -Program\ exited\ normally. -.br -.sp - -(which is ordinarily issued whenever a program running under GDB control -terminates) is not issued when running in batch mode. - -.TP -.BI "\-cd=" "directory"\c -\& -Run GDB using \c -.I directory\c -\& as its working directory, -instead of the current directory. - -.TP -.B \-fullname -.TP -.B \-f -Emacs sets this option when it runs GDB as a subprocess. It tells GDB -to output the full file name and line number in a standard, -recognizable fashion each time a stack frame is displayed (which -includes each time the program stops). This recognizable format looks -like two `\|\c -.B \032\c -\&\|' characters, followed by the file name, line number -and character position separated by colons, and a newline. The -Emacs-to-GDB interface program uses the two `\|\c -.B \032\c -\&\|' characters as -a signal to display the source code for the frame. - -.TP -.B \-kernel -.TP -.B \-k -Use gdb in kernel debugging mode. The prompt is set to ``(kgdb)''. - -.TP -.B \-wcore -This option may only be used in kernel debugging mode while -debugging a ``live'' kernel and makes the corefile (/dev/mem) -writable. - -.TP -.BI "\-b " "bps"\c -\& -Set the line speed (baud rate or bits per second) of any serial -interface used by GDB for remote debugging. - -.TP -.BI "\-tty=" "device"\c -\& -Run using \c -.I device\c -\& for your program's standard input and output. -.PP - -.SH "SEE ALSO" -.RB "`\|" gdb "\|'" -entry in -.B info\c -\&; -.I -Using GDB: A Guide to the GNU Source-Level Debugger\c -, Richard M. Stallman and Roland H. Pesch, July 1991. -.SH COPYING -Copyright (c) 1991 Free Software Foundation, Inc. -.PP -Permission is granted to make and distribute verbatim copies of -this manual provided the copyright notice and this permission notice -are preserved on all copies. -.PP -Permission is granted to copy and distribute modified versions of this -manual under the conditions for verbatim copying, provided that the -entire resulting derived work is distributed under the terms of a -permission notice identical to this one. -.PP -Permission is granted to copy and distribute translations of this -manual into another language, under the above conditions for modified -versions, except that this permission notice may be included in -translations approved by the Free Software Foundation instead of in -the original English. diff --git a/gnu/usr.bin/binutils/gdb/kvm-fbsd-alpha.h b/gnu/usr.bin/binutils/gdb/kvm-fbsd-alpha.h deleted file mode 100644 index 11260ac..0000000 --- a/gnu/usr.bin/binutils/gdb/kvm-fbsd-alpha.h +++ /dev/null @@ -1,77 +0,0 @@ -/* Kernel core dump functions below target vector, for GDB on FreeBSD/Alpha. - Copyright 1986, 1987, 1989, 1991, 1992, 1993, 1994, 1995 - 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. -*/ - -__FBSDID("$FreeBSD$"); - -#include "alpha/tm-alpha.h" - -#ifndef S0_REGNUM -#define S0_REGNUM (T7_REGNUM+1) -#endif - -static void -fetch_kcore_registers (struct pcb *pcbp) -{ - - /* First clear out any garbage. */ - memset (registers, '\0', REGISTER_BYTES); - - /* SP */ - *(long *) ®isters[REGISTER_BYTE (SP_REGNUM)] = - pcbp->pcb_hw.apcb_ksp; - - /* S0 through S6 */ - memcpy (®isters[REGISTER_BYTE (S0_REGNUM)], - &pcbp->pcb_context[0], 7 * sizeof (long)); - - /* PC */ - *(long *) ®isters[REGISTER_BYTE (PC_REGNUM)] = - pcbp->pcb_context[7]; - - registers_fetched (); -} - -CORE_ADDR -fbsd_kern_frame_saved_pc (struct frame_info *fi) -{ - struct minimal_symbol *sym; - CORE_ADDR this_saved_pc; - - this_saved_pc = alpha_frame_saved_pc (fi); - - sym = lookup_minimal_symbol_by_pc (this_saved_pc); - - if (sym != NULL && - (strcmp (SYMBOL_NAME (sym), "XentArith") == 0 || - strcmp (SYMBOL_NAME (sym), "XentIF") == 0 || - strcmp (SYMBOL_NAME (sym), "XentInt") == 0 || - strcmp (SYMBOL_NAME (sym), "XentMM") == 0 || - strcmp (SYMBOL_NAME (sym), "XentSys") == 0 || - strcmp (SYMBOL_NAME (sym), "XentUna") == 0 || - strcmp (SYMBOL_NAME (sym), "XentRestart") == 0)) - { - return (read_memory_integer (fi->frame + 32 * 8, 8)); - } - else - { - return (this_saved_pc); - } -} diff --git a/gnu/usr.bin/binutils/gdb/kvm-fbsd-i386.h b/gnu/usr.bin/binutils/gdb/kvm-fbsd-i386.h deleted file mode 100644 index b7e4a20..0000000 --- a/gnu/usr.bin/binutils/gdb/kvm-fbsd-i386.h +++ /dev/null @@ -1,131 +0,0 @@ -/* Kernel core dump functions below target vector, for GDB on FreeBSD/i386. - Copyright 1986, 1987, 1989, 1991, 1992, 1993, 1994, 1995 - 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. -*/ - -__FBSDID("$FreeBSD$"); - -#include - -static CORE_ADDR -ksym_maxuseraddr (void) -{ - static CORE_ADDR maxuseraddr; - struct minimal_symbol *sym; - - if (maxuseraddr == 0) - { - sym = lookup_minimal_symbol ("PTmap", NULL, NULL); - if (sym == NULL) { - maxuseraddr = VM_MAXUSER_ADDRESS; - } else { - maxuseraddr = SYMBOL_VALUE_ADDRESS (sym); - } - } - return maxuseraddr; -} - - -/* Symbol names of kernel entry points. Use special frames. */ -#define KSYM_TRAP "calltrap" -#define KSYM_INTR "Xintr" -#define KSYM_FASTINTR "Xfastintr" -#define KSYM_OLDSYSCALL "Xlcall_syscall" -#define KSYM_SYSCALL "Xint0x80_syscall" - -/* The following is FreeBSD-specific hackery to decode special frames - and elide the assembly-language stub. This could be made faster by - defining a frame_type field in the machine-dependent frame information, - but we don't think that's too important right now. */ -enum frametype { tf_normal, tf_trap, tf_interrupt, tf_syscall }; - -CORE_ADDR -fbsd_kern_frame_saved_pc (struct frame_info *fi) -{ - struct minimal_symbol *sym; - CORE_ADDR this_saved_pc; - enum frametype frametype; - - this_saved_pc = read_memory_integer (fi->frame + 4, 4); - sym = lookup_minimal_symbol_by_pc (this_saved_pc); - frametype = tf_normal; - if (sym != NULL) - { - if (strcmp (SYMBOL_NAME (sym), KSYM_TRAP) == 0) - frametype = tf_trap; - else - if (strncmp (SYMBOL_NAME (sym), KSYM_INTR, - strlen (KSYM_INTR)) == 0 || strncmp (SYMBOL_NAME(sym), - KSYM_FASTINTR, strlen (KSYM_FASTINTR)) == 0) - frametype = tf_interrupt; - else - if (strcmp (SYMBOL_NAME (sym), KSYM_SYSCALL) == 0 || - strcmp (SYMBOL_NAME (sym), KSYM_OLDSYSCALL) == 0) - frametype = tf_syscall; - } - - switch (frametype) - { - case tf_normal: - return (this_saved_pc); -#define oEIP offsetof (struct trapframe, tf_eip) - - case tf_trap: - return (read_memory_integer (fi->frame + 8 + oEIP, 4)); - - case tf_interrupt: - return (read_memory_integer (fi->frame + 12 + oEIP, 4)); - - case tf_syscall: - return (read_memory_integer (fi->frame + 8 + oEIP, 4)); -#undef oEIP - } -} - -static void -fetch_kcore_registers (struct pcb *pcb) -{ - int i; - int noreg; - - /* Get the register values out of the sys pcb and store them where - `read_register' will find them. */ - /* - * XXX many registers aren't available. - * XXX for the non-core case, the registers are stale - they are for - * the last context switch to the debugger. - * XXX gcc's register numbers aren't all #defined in tm-i386.h. - */ - noreg = 0; - for (i = 0; i < 3; ++i) /* eax,ecx,edx */ - supply_register (i, (char *)&noreg); - - supply_register (3, (char *) &pcb->pcb_ebx); - supply_register (SP_REGNUM, (char *) &pcb->pcb_esp); - supply_register (FP_REGNUM, (char *) &pcb->pcb_ebp); - supply_register (6, (char *) &pcb->pcb_esi); - supply_register (7, (char *) &pcb->pcb_edi); - supply_register (PC_REGNUM, (char *) &pcb->pcb_eip); - - for (i = 9; i < 14; ++i) /* eflags, cs, ss, ds, es, fs */ - supply_register (i, (char *) &noreg); - supply_register (15, (char *) &pcb->pcb_gs); - - /* XXX 80387 registers? */ -} diff --git a/gnu/usr.bin/binutils/gdb/kvm-fbsd-sparc64.h b/gnu/usr.bin/binutils/gdb/kvm-fbsd-sparc64.h deleted file mode 100644 index 52ed91c..0000000 --- a/gnu/usr.bin/binutils/gdb/kvm-fbsd-sparc64.h +++ /dev/null @@ -1,96 +0,0 @@ -/* Kernel core dump functions below target vector, for GDB on FreeBSD/sparc64. - Copyright 1986, 1987, 1989, 1991, 1992, 1993, 1994, 1995 - 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. -*/ - -__FBSDID("$FreeBSD$"); - -#define SPARC_INTREG_SIZE 8 - -static void -fetch_kcore_registers (struct pcb *pcbp) -{ - static struct frame top; - CORE_ADDR f_addr; - int i; - - /* Get the register values out of the sys pcb and store them where - `read_register' will find them. */ - /* - * XXX many registers aren't available. - * XXX for the non-core case, the registers are stale - they are for - * the last context switch to the debugger. - * XXX do something with the floating-point registers? - */ - supply_register (SP_REGNUM, (char *)&pcbp->pcb_ufp); - supply_register (PC_REGNUM, (char *)&pcbp->pcb_pc); - f_addr = extract_address (&pcbp->pcb_ufp, SPARC_INTREG_SIZE); - /* Load the previous frame by hand (XXX) and supply it. */ - read_memory (f_addr + SPOFF, (char *)&top, sizeof (top)); - for (i = 0; i < 8; i++) - supply_register (i + L0_REGNUM, (char *)&top.fr_local[i]); - for (i = 0; i < 8; i++) - supply_register (i + I0_REGNUM, (char *)&top.fr_in[i]); -} - -CORE_ADDR -fbsd_kern_frame_saved_pc (struct frame_info *fi) -{ - struct minimal_symbol *sym; - CORE_ADDR frame, pc_addr, pc; - char *buf; - - buf = alloca (MAX_REGISTER_RAW_SIZE); - /* XXX: duplicates fi->extra_info->bottom. */ - frame = (fi->next != NULL) ? fi->next->frame : read_sp (); - pc_addr = frame + offsetof (struct frame, fr_in[7]); - -#define READ_PC(pc, a, b) do { \ - read_memory (a, b, SPARC_INTREG_SIZE); \ - pc = extract_address (b, SPARC_INTREG_SIZE); \ -} while (0) - - READ_PC (pc, pc_addr, buf); - - sym = lookup_minimal_symbol_by_pc (pc); - if (sym != NULL) - { - if (strncmp (SYMBOL_NAME (sym), "tl0_", 4) == 0 || - strcmp (SYMBOL_NAME (sym), "btext") == 0 || - strcmp (SYMBOL_NAME (sym), "mp_startup") == 0 || - strcmp (SYMBOL_NAME (sym), "fork_trampoline") == 0) - { - /* - * Ugly kluge: user space addresses aren't separated from kernel - * ones by range; if encountering a trap from user space, just - * return a 0 to stop the trace. - * Do the same for entry points of kernel processes to avoid - * printing garbage. - */ - pc = 0; - } - if (strncmp (SYMBOL_NAME (sym), "tl1_", 4) == 0) - { - pc_addr = fi->frame + sizeof (struct frame) + - offsetof (struct trapframe, tf_tpc); - READ_PC (pc, pc_addr, buf); - } - } - return (pc); -} diff --git a/gnu/usr.bin/binutils/gdb/kvm-fbsd.c b/gnu/usr.bin/binutils/gdb/kvm-fbsd.c deleted file mode 100644 index 93395a7..0000000 --- a/gnu/usr.bin/binutils/gdb/kvm-fbsd.c +++ /dev/null @@ -1,502 +0,0 @@ -/* Kernel core dump functions below target vector, for GDB. - Copyright 1986, 1987, 1989, 1991, 1992, 1993, 1994, 1995 - 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 -__FBSDID("$FreeBSD$"); - -/* - * This works like "remote" but, you use it like this: - * target kcore /dev/mem - * or - * target kcore /var/crash/host/core.0 - * - * This way makes it easy to short-circut the whole bfd monster, - * and direct the inferior stuff to our libkvm implementation. - * - */ - -#include -#include -#include -#include -#include -#include -#include - -#include "defs.h" -#include -#include "gdb_string.h" -#include "frame.h" /* required by inferior.h */ -#include "inferior.h" -#include "symfile.h" -#include "objfiles.h" -#include "command.h" -#include "bfd.h" -#include "gdbcore.h" -#include "solist.h" - -#include "kvm-fbsd-machine.h" - -static void -kcore_files_info (struct target_ops *); - -static void -kcore_close (int); - -static void -get_kcore_registers (int); - -static int -xfer_umem (CORE_ADDR, char *, int, int); - -#ifdef SOLIB_ADD -static int kcore_solib_add_stub (PTR); -#endif - -static char *core_file; -static kvm_t *core_kd; -static struct pcb cur_pcb; -static struct kinfo_proc *cur_proc; - -static struct target_ops kcore_ops; - -int kernel_debugging; -int kernel_writablecore; - -/* Read the "thing" at kernel address 'addr' into the space pointed to - by point. The length of the "thing" is determined by the type of p. - Result is non-zero if transfer fails. */ - -#define kvread(addr, p) \ - (target_read_memory ((CORE_ADDR) (addr), (char *) (p), sizeof (*(p)))) - -static CORE_ADDR -ksym_kernbase (void) -{ - static CORE_ADDR kernbase; - struct minimal_symbol *sym; - - if (kernbase == 0) - { - sym = lookup_minimal_symbol ("kernbase", NULL, NULL); - if (sym == NULL) { - kernbase = KERNBASE; - } else { - kernbase = SYMBOL_VALUE_ADDRESS (sym); - } - } - return kernbase; -} - -#define KERNOFF (ksym_kernbase ()) -#define INKERNEL(x) ((x) >= KERNOFF) - -static CORE_ADDR -ksym_lookup(const char *name) -{ - struct minimal_symbol *sym; - - sym = lookup_minimal_symbol (name, NULL, NULL); - if (sym == NULL) - error ("kernel symbol `%s' not found.", name); - - return SYMBOL_VALUE_ADDRESS (sym); -} - -/* Provide the address of an initial PCB to use. - If this is a crash dump, try for "dumppcb". - If no "dumppcb" or it's /dev/mem, use proc0. - Return the core address of the PCB we found. */ - -static CORE_ADDR -initial_pcb (void) -{ - struct minimal_symbol *sym; - CORE_ADDR addr; - void *val; - - /* Make sure things are open... */ - if (!core_kd || !core_file) - return (0); - - /* If this is NOT /dev/mem try for dumppcb. */ - if (strncmp (core_file, _PATH_DEV, sizeof _PATH_DEV - 1)) - { - sym = lookup_minimal_symbol ("dumppcb", NULL, NULL); - if (sym != NULL) - { - addr = SYMBOL_VALUE_ADDRESS (sym); - return (addr); - } - } - - /* OK, just use thread0's pcb. Note that curproc might - not exist, and if it does, it will point to gdb. - Therefore, just use proc0 and let the user set - some other context if they care about it. */ - - addr = ksym_lookup ("thread0"); - if (kvread (addr, &val)) - { - error ("cannot read thread0 pointer at %x\n", addr); - val = 0; - } - else - { - /* Read the PCB address in thread structure. */ - addr += offsetof (struct thread, td_pcb); - if (kvread (addr, &val)) - { - error ("cannot read thread0->td_pcb pointer at %x\n", addr); - val = 0; - } - } - - /* thread0 is wholly in the kernel and cur_proc is only used for - reading user mem, so no point in setting this up. */ - cur_proc = 0; - - return ((CORE_ADDR)val); -} - -/* Set the current context to that of the PCB struct at the system address - passed. */ - -static int -set_context (CORE_ADDR addr) -{ - if (kvread (addr, &cur_pcb)) - error ("cannot read pcb at %#x", addr); - - /* Fetch all registers from core file. */ - target_fetch_registers (-1); - - /* Now, set up the frame cache, and print the top of stack. */ - flush_cached_frames (); - set_current_frame (create_new_frame (read_fp (), read_pc ())); - select_frame (get_current_frame (), 0); - return (0); -} - -/* Discard all vestiges of any previous core file and mark data and stack - spaces as empty. */ - -/* ARGSUSED */ -static void -kcore_close (int quitting) -{ - - inferior_ptid = null_ptid; /* Avoid confusion from thread stuff. */ - - /* Clear out solib state while the bfd is still open. See - comments in clear_solib in solib.c. */ -#ifdef CLEAR_SOLIB - CLEAR_SOLIB (); -#endif - - if (core_kd) - { - kvm_close (core_kd); - free (core_file); - core_file = NULL; - core_kd = NULL; - } -} - -/* This routine opens and sets up the core file bfd. */ - -static void -kcore_open (char *filename /* the core file */, int from_tty) -{ - kvm_t *kd; - const char *p; - struct cleanup *old_chain; - char buf[256], *cp; - int ontop; - CORE_ADDR addr; - - target_preopen (from_tty); - - /* The exec file is required for symbols. */ - if (exec_bfd == NULL) - error ("No kernel exec file specified"); - - if (core_kd) - { - error ("No core file specified." - " (Use `detach' to stop debugging a core file.)"); - return; - } - - if (!filename) - { - error ("No core file specified."); - return; - } - - filename = tilde_expand (filename); - if (filename[0] != '/') - { - cp = concat (current_directory, "/", filename, NULL); - free (filename); - filename = cp; - } - - old_chain = make_cleanup (free, filename); - - kd = kvm_open (bfd_get_filename(exec_bfd), filename, NULL, - kernel_writablecore ? O_RDWR: O_RDONLY, 0); - if (kd == NULL) - { - perror_with_name (filename); - return; - } - - /* Looks semi-reasonable. Toss the old core file and work on the new. */ - - discard_cleanups (old_chain); /* Don't free filename any more. */ - core_file = filename; - unpush_target (&kcore_ops); - ontop = !push_target (&kcore_ops); - - /* Note unpush_target (above) calls kcore_close. */ - core_kd = kd; - - /* Print out the panic string if there is one. */ - if (kvread (ksym_lookup ("panicstr"), &addr) == 0 && - addr != 0 && - target_read_memory (addr, buf, sizeof(buf)) == 0) - { - - for (cp = buf; cp < &buf[sizeof(buf)] && *cp; cp++) - if (!isascii (*cp) || (!isprint (*cp) && !isspace (*cp))) - *cp = '?'; - *cp = '\0'; - if (buf[0] != '\0') - printf_filtered ("panic: %s\n", buf); - } - - /* Print all the panic messages if possible. */ - if (symfile_objfile != NULL) - { - printf ("panic messages:\n---\n"); - snprintf (buf, sizeof buf, - "/sbin/dmesg -N %s -M %s | \ - /usr/bin/awk '/^(panic:|Fatal trap) / { printing = 1 } \ - { if (printing) print $0 }'", - symfile_objfile->name, filename); - fflush (stdout); - system (buf); - printf ("---\n"); - } - - if (ontop) - { - /* Add symbols and section mappings for any kernel modules. */ -#ifdef SOLIB_ADD - current_target_so_ops = &kgdb_so_ops; - catch_errors (kcore_solib_add_stub, &from_tty, (char *) 0, - RETURN_MASK_ALL); -#endif - } - else - { - warning ("you won't be able to access this core file until you terminate\n" - "your %s; do ``info files''", target_longname); - return; - } - - /* Now, set up process context, and print the top of stack. */ - (void)set_context (initial_pcb()); - print_stack_frame (selected_frame, selected_frame_level, 1); -} - -static void -kcore_detach (char *args, int from_tty) -{ - if (args) - error ("Too many arguments"); - unpush_target (&kcore_ops); - reinit_frame_cache (); - if (from_tty) - printf_filtered ("No kernel core file now.\n"); -} - -/* Get the registers out of a core file. This is the machine- - independent part. Fetch_core_registers is the machine-dependent - part, typically implemented in the xm-file for each architecture. */ - -/* We just get all the registers, so we don't use regno. */ - -/* ARGSUSED */ -static void -get_kcore_registers (int regno) -{ - - /* XXX - Only read the pcb when set_context() is called. - When looking at a live kernel this may be a problem, - but the user can do another "proc" or "pcb" command to - grab a new copy of the pcb... */ - - /* Zero out register set then fill in the ones we know about. */ - fetch_kcore_registers (&cur_pcb); -} - -static void -kcore_files_info (t) - struct target_ops *t; -{ - printf_filtered ("\t`%s'\n", core_file); -} - -static int -xfer_kmem (CORE_ADDR memaddr, char *myaddr, int len, int write, - struct mem_attrib *attrib, struct target_ops *target) -{ - int n; - - - if (!INKERNEL (memaddr)) - return xfer_umem (memaddr, myaddr, len, write); - - if (core_kd == NULL) - return 0; - - if (write) - n = kvm_write (core_kd, memaddr, myaddr, len); - else - n = kvm_read (core_kd, memaddr, myaddr, len) ; - if (n < 0) { - fprintf_unfiltered (gdb_stderr, "can not access 0x%x, %s\n", - (unsigned)memaddr, kvm_geterr (core_kd)); - n = 0; - } - - return n; -} - - -static int -xfer_umem (CORE_ADDR memaddr, char *myaddr, int len, int write /* ignored */) -{ - int n = 0; - - if (cur_proc == 0) - { - error ("---Can't read userspace from dump, or kernel process---\n"); - return 0; - } - - if (write) - error ("kvm_uwrite unimplemented\n"); - else - n = kvm_uread (core_kd, cur_proc, memaddr, myaddr, len) ; - - if (n < 0) - return 0; - - return n; -} - -static void -set_proc_cmd (char *arg, int from_tty) -{ - CORE_ADDR addr, pid_addr, first_td; - void *val; - struct kinfo_proc *kp; - int cnt; - pid_t pid; - - if (!arg) - error_no_arg ("proc address for the new context"); - - if (core_kd == NULL) - error ("no kernel core file"); - - addr = (CORE_ADDR) parse_and_eval_address (arg); - - if (!INKERNEL (addr)) - { - kp = kvm_getprocs (core_kd, KERN_PROC_PID, addr, &cnt); - if (!cnt) - error ("invalid pid"); - addr = (CORE_ADDR)kp->ki_paddr; - cur_proc = kp; - } - else - { - /* Update cur_proc. */ - pid_addr = addr + offsetof (struct proc, p_pid); - if (kvread (pid_addr, &pid)) - error ("cannot read pid ptr"); - cur_proc = kvm_getprocs (core_kd, KERN_PROC_PID, pid, &cnt); - if (!cnt) - error("invalid pid"); - } - - /* Find the first thread in the process. XXXKSE */ - addr += offsetof (struct proc, p_threads.tqh_first); - if (kvread (addr, &first_td)) - error ("cannot read thread ptr"); - - /* Read the PCB address in thread structure. */ - addr = first_td + offsetof (struct thread, td_pcb); - if (kvread (addr, &val)) - error("cannot read pcb ptr"); - - /* Read the PCB address in proc structure. */ - if (set_context ((CORE_ADDR) val)) - error ("invalid proc address"); -} - -#ifdef SOLIB_ADD -static int -kcore_solib_add_stub (PTR from_ttyp) -{ - SOLIB_ADD (NULL, *(int *) from_ttyp, ¤t_target, auto_solib_add); - return 0; -} -#endif /* SOLIB_ADD */ - -void -_initialize_kcorelow (void) -{ - 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 = 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"); -} diff --git a/gnu/usr.bin/binutils/gdb/solib-fbsd-kld.c b/gnu/usr.bin/binutils/gdb/solib-fbsd-kld.c deleted file mode 100644 index 190e6e6..0000000 --- a/gnu/usr.bin/binutils/gdb/solib-fbsd-kld.c +++ /dev/null @@ -1,304 +0,0 @@ -/* Handle FreeBSD kernel modules as shared libraries. - Copyright 1990, 1991, 1992, 1993, 1994, 1995, 1996, 1998, 1999, 2000, - 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. */ - -/* $FreeBSD$ */ - -#include -#include -#include -#define _KERNEL -#include -#undef _KERNEL - -/* XXX, kludge to avoid duplicate definitions while sys/linker.h is used. */ -#define _ELF_COMMON_H - -#include "defs.h" -#include "symtab.h" -#include "bfd.h" -#include "symfile.h" -#include "objfiles.h" -#include "gdbcore.h" -#include "target.h" -#include "inferior.h" - -#include "solist.h" - -struct lm_info - { - CORE_ADDR address; - }; - -static int try_modpath (char *buf, int buflen, char *fmt, ...); -static char *guess_modpath (char *modname); - -static void -kgdb_relocate_section_addresses (struct so_list *so, - struct section_table *sec) -{ - sec->addr += so->lm_info->address; - sec->endaddr += so->lm_info->address; -} - -static int -kgdb_open_symbol_file_object (void *from_ttyp) -{ - warning ("kgdb_open_symbol_file_object called\n"); - return 0; -} - -static struct so_list * -kgdb_current_sos (void) -{ - linker_file_list_t linker_files; - struct linker_file lfile; - struct minimal_symbol *msymbol; - struct linker_file *lfilek; - struct so_list *head = NULL; - struct so_list **link_ptr = &head; - - CORE_ADDR lfiles_addr; - - msymbol = lookup_minimal_symbol ("linker_files", NULL, symfile_objfile); - if (msymbol == NULL || SYMBOL_VALUE_ADDRESS (msymbol) == 0) - { - warning ("failed to find linker_files symbol\n"); - return 0; - } - lfiles_addr = SYMBOL_VALUE_ADDRESS (msymbol); - if (target_read_memory (lfiles_addr, (char *)&linker_files, - sizeof (linker_files))) - { - warning ("failed to read linker_files data\n"); - return 0; - } - for (lfilek = TAILQ_FIRST (&linker_files); lfilek != NULL; - lfilek = TAILQ_NEXT (&lfile, link)) - { - struct so_list *new; - struct cleanup *old_chain; - char *buf; - int errcode; - - if (target_read_memory ((CORE_ADDR) lfilek, (char *) &lfile, - sizeof (lfile))) - { - warning ("failed to read linker file data at %p\n", lfilek); - return 0; - } - target_read_string ((CORE_ADDR) lfile.filename, &buf, - SO_NAME_MAX_PATH_SIZE - 1, &errcode); - if (errcode != 0) - { - warning ("cannot read linker file pathname: %s\n", - safe_strerror (errcode)); - return 0; - } - if (strlen (buf) < 3 || strcmp (&buf[strlen (buf) - 3], ".ko") != 0) - { - xfree (buf); - continue; - } - - new = (struct so_list *) xmalloc (sizeof (struct so_list)); - old_chain = make_cleanup (xfree, new); - - memset (new, 0, sizeof (*new)); - - new->lm_info = xmalloc (sizeof (struct lm_info)); - make_cleanup (xfree, new->lm_info); - - new->lm_info->address = (CORE_ADDR) lfile.address; - - strncpy (new->so_original_name, buf, SO_NAME_MAX_PATH_SIZE - 1); - new->so_original_name[SO_NAME_MAX_PATH_SIZE - 1] = '\0'; - xfree (buf); - snprintf (new->so_name, SO_NAME_MAX_PATH_SIZE, "%s", - guess_modpath (new->so_original_name)); - - new->next = NULL; - *link_ptr = new; - link_ptr = &new->next; - - discard_cleanups (old_chain); - } - return head; -} - -static int -kgdb_in_dynsym_resolve_code (CORE_ADDR pc) -{ - warning ("kgdb_in_dynsym_resolve_code called\n"); - return 0; -} - -static void -kgdb_special_symbol_handling (void) -{ -} - -static void -kgdb_solib_create_inferior_hook (void) -{ - struct so_list *inferior_sos; - - inferior_sos = kgdb_current_sos (); - if (inferior_sos) - { - solib_add (NULL, /*from_tty*/0, NULL, auto_solib_add); - } -} - -static void -kgdb_clear_solib (void) -{ -} - -static void -kgdb_free_so (struct so_list *so) -{ - xfree (so->lm_info); -} - -static int -try_modpath (char *buf, int buflen, char *fmt, ...) -{ - struct stat sb; - va_list ap; - - va_start (ap, fmt); - vsnprintf (buf, buflen, fmt, ap); - va_end(ap); - - return (stat (buf, &sb) == 0); -} - -static char * -guess_modpath (char *modname) -{ - static char buf[2048], moddir[128], syspath[1024]; - struct minimal_symbol *msymbol; - char *kernpath, *objpath, *p, *version; - int errcode, n, syspathlen; - - /* Set default module location */ - snprintf (buf, sizeof (buf), "/boot/kernel/%s", modname); - - /* Guess at the subdirectory off sys/modules. XXX, only sometimes correct */ - n = strlen (modname); - if (n > 3 && strcmp (&modname[n - 3], ".ko") == 0) - n -= 3; - snprintf (moddir, sizeof (moddir), "%.*s", n, modname); - - /* Try to locate the kernel compile location from version[] */ - msymbol = lookup_minimal_symbol ("version", NULL, symfile_objfile); - if (msymbol == NULL || SYMBOL_VALUE_ADDRESS (msymbol) == 0) - { - warning("cannot find `version' symbol; using default module path\n"); - return buf; - } - target_read_string (SYMBOL_VALUE_ADDRESS (msymbol), &version, 2048, &errcode); - if (errcode != 0) - { - warning ("cannot read `version' string; using default module path: %s\n", - safe_strerror (errcode)); - return buf; - } - - /* Find the kernel build path after user@host: on the second line. */ - if ((p = strchr (version, '\n')) == NULL || - (kernpath = strchr (p, ':')) == NULL || - (p = strchr (kernpath, '\n')) == NULL) - { - warning ("cannot parse version[]; using default module path\n"); - xfree (version); - return buf; - } - kernpath++; - *p = '\0'; - - /* - * Find the absolute path to src/sys by skipping back over path - * components until we find a "/sys/". - */ - syspathlen = 0; - while (p > kernpath && syspathlen == 0) - { - while (p > kernpath && *p != '/') - p--; - if (strncmp (p, "/sys/", 5) == 0) - syspathlen = p - kernpath + 4; - else if (p > kernpath) - p--; - } - if (syspathlen == 0) - { - warning ("cannot find /sys/ in `%s'; using default module path\n", - kernpath); - xfree (version); - return buf; - } - /* - * For kernels compiled with buildkernel, the object path will have - * been prepended to the /sys/ path in `kernpath'. - */ - objpath = getenv ("MAKEOBJDIRPREFIX"); - if (objpath == NULL) - objpath = "/usr/obj"; - n = strlen (objpath); - if (syspathlen > n + 1 && strncmp (kernpath, objpath, n) == 0 && - kernpath[n] == '/') - snprintf (syspath, sizeof (syspath), "%.*s", syspathlen - n, kernpath + n); - else - snprintf (syspath, sizeof (syspath), "%.*s", syspathlen, kernpath); - - /* Now try to find the module file */ - if (!try_modpath (buf, sizeof (buf), "./%s.debug", modname) && - !try_modpath (buf, sizeof (buf), "./%s", modname) && !try_modpath (buf, - sizeof (buf), "%s/modules%s/modules/%s/%s.debug", kernpath, syspath, - moddir, modname) && !try_modpath (buf, sizeof (buf), - "%s/modules%s/modules/%s/%s", kernpath, syspath, moddir, modname) && - !try_modpath (buf, sizeof (buf), "/boot/kernel/%s.debug", modname) && - !try_modpath (buf, sizeof (buf), "/boot/kernel/%s", modname)) - { - warning ("cannot find file for module %s\n", modname); - snprintf (buf, sizeof (buf), "%s", modname); - } - xfree (version); - - return buf; -} - -struct target_so_ops kgdb_so_ops; - -void -_initialize_kgdb_solib (void) -{ - kgdb_so_ops.relocate_section_addresses = kgdb_relocate_section_addresses; - kgdb_so_ops.free_so = kgdb_free_so; - kgdb_so_ops.clear_solib = kgdb_clear_solib; - kgdb_so_ops.solib_create_inferior_hook = kgdb_solib_create_inferior_hook; - kgdb_so_ops.special_symbol_handling = kgdb_special_symbol_handling; - kgdb_so_ops.current_sos = kgdb_current_sos; - kgdb_so_ops.open_symbol_file_object = kgdb_open_symbol_file_object; - kgdb_so_ops.in_dynsym_resolve_code = kgdb_in_dynsym_resolve_code; -} diff --git a/gnu/usr.bin/binutils/gdbreplay/Makefile b/gnu/usr.bin/binutils/gdbreplay/Makefile deleted file mode 100644 index 107051a..0000000 --- a/gnu/usr.bin/binutils/gdbreplay/Makefile +++ /dev/null @@ -1,23 +0,0 @@ -# $FreeBSD$ - -.include "../Makefile.inc0" - -# Not elf specific so don't install in /usr/libexec/elf -BINDIR=/usr/bin - -GDBDIR= ${.CURDIR}/../../../../contrib/gdb -.PATH: ${GDBDIR}/gdb/gdbserver -.PATH: ${GDBDIR}/gdb - -PROG= gdbreplay -NO_MAN= - -SRCS= gdbreplay.c - -CFLAGS+= -I${.CURDIR}/../gdb -CFLAGS+= -I${GDBDIR}/gdb -CFLAGS+= -I${GDBDIR}/gdb/config -CFLAGS+= -I${GDBDIR}/gdb/gdbserver -CFLAGS+= -DNO_MMALLOC - -.include -- cgit v1.1 From 3bf90be3252bf06fbc103a421544d669b067fe33 Mon Sep 17 00:00:00 2001 From: ed Date: Fri, 12 Nov 2010 15:52:27 +0000 Subject: Revert to libgcc for sparc64. I've had a report of a sparc64 system where cc1 generates illegal instructions. We still have to diagnose this properly, but instead of hosing all sparc64 boxes out there, fall back to libgcc to prevent more damage. Reported by: Florian Smeets --- gnu/lib/libgcc/Makefile | 4 ++++ 1 file changed, 4 insertions(+) (limited to 'gnu') diff --git a/gnu/lib/libgcc/Makefile b/gnu/lib/libgcc/Makefile index 2021c8c..73fb1be 100644 --- a/gnu/lib/libgcc/Makefile +++ b/gnu/lib/libgcc/Makefile @@ -15,6 +15,10 @@ MK_SSP= no .include "${.CURDIR}/../../usr.bin/cc/Makefile.tgt" +.if ${TARGET_CPUARCH} == "sparc64" +LIB= gcc +.endif + .PATH: ${GCCDIR}/config/${GCC_CPU} ${GCCDIR}/config ${GCCDIR} CFLAGS+= -DIN_GCC -DIN_LIBGCC2 -D__GCC_FLOAT_NOT_NEEDED \ -- cgit v1.1