svn commit: r317416 - in head: gnu/usr.bin/gdb share/mk tools/build/mk tools/build/options usr.sbin/crashinfo
John Baldwin
jhb at FreeBSD.org
Tue Apr 25 18:08:58 UTC 2017
Author: jhb
Date: Tue Apr 25 18:08:56 2017
New Revision: 317416
URL: https://svnweb.freebsd.org/changeset/base/317416
Log:
Add a new GDB_LIBEXEC option to install gdb and kgdb to /usr/libexec.
When this option is enabled, only gdb and kgdb are installed to
/usr/libexec for use by crashinfo(8). Other bits of GDB such as
gdbserver and gdbtui are not installed. For this option to be
effective, GDB must be enabled.
Rework r317094 to re-enable GDB on all platforms but enable
GDB_LIBEXEC on platforms for which the GDB in ports is a superset of
functionality.
Reviewed by: emaste, kib
Suggested by: kib
Relnotes: yes
Differential Revision: https://reviews.freebsd.org/D10449
Added:
head/tools/build/options/WITHOUT_GDB_LIBEXEC (contents, props changed)
head/tools/build/options/WITH_GDB_LIBEXEC (contents, props changed)
Modified:
head/gnu/usr.bin/gdb/Makefile
head/gnu/usr.bin/gdb/Makefile.inc
head/share/mk/src.opts.mk
head/tools/build/mk/OptionalObsoleteFiles.inc
head/usr.sbin/crashinfo/crashinfo.sh
Modified: head/gnu/usr.bin/gdb/Makefile
==============================================================================
--- head/gnu/usr.bin/gdb/Makefile Tue Apr 25 18:07:48 2017 (r317415)
+++ head/gnu/usr.bin/gdb/Makefile Tue Apr 25 18:08:56 2017 (r317416)
@@ -1,9 +1,15 @@
# $FreeBSD$
-SUBDIR= libgdb gdb gdbtui kgdb
+.include <src.opts.mk>
+
+SUBDIR= libgdb gdb kgdb
+
+.if ${MK_GDB_LIBEXEC} == "no"
+SUBDIR+= gdbtui
.if exists(${.CURDIR}/gdbserver/reg-${MACHINE_CPUARCH}.c)
SUBDIR+=gdbserver
.endif
+.endif
.include <bsd.subdir.mk>
Modified: head/gnu/usr.bin/gdb/Makefile.inc
==============================================================================
--- head/gnu/usr.bin/gdb/Makefile.inc Tue Apr 25 18:07:48 2017 (r317415)
+++ head/gnu/usr.bin/gdb/Makefile.inc Tue Apr 25 18:08:56 2017 (r317416)
@@ -1,5 +1,7 @@
# $FreeBSD$
+.include <src.opts.mk>
+
VERSION= "6.1.1 [FreeBSD]"
VENDOR= marcel
@@ -53,6 +55,9 @@ GENSRCS+= nm.h tm.h
CFLAGS+= -DCROSS_DEBUGGER -I${BMAKE_ROOT:H:H}
GDB_SUFFIX= -${TARGET_ARCH}
MAN=
+.elif ${MK_GDB_LIBEXEC} != "no"
+BINDIR?= /usr/libexec
+MAN=
.endif
.include "${TARGET_SUBDIR}/Makefile"
Modified: head/share/mk/src.opts.mk
==============================================================================
--- head/share/mk/src.opts.mk Tue Apr 25 18:07:48 2017 (r317415)
+++ head/share/mk/src.opts.mk Tue Apr 25 18:08:56 2017 (r317416)
@@ -97,6 +97,7 @@ __DEFAULT_YES_OPTIONS = \
FTP \
GAMES \
GCOV \
+ GDB \
GNU_DIFF \
GNU_GREP \
GPIO \
@@ -267,9 +268,9 @@ BROKEN_OPTIONS+=LLDB
# does not yet contain kernel support for arm, and sparc64 kernel support
# has not been tested.
.if ${__T:Marm*} != "" || ${__T} == "sparc64"
-__DEFAULT_YES_OPTIONS+=GDB
+__DEFAULT_NO_OPTIONS+=GDB_LIBEXEC
.else
-__DEFAULT_NO_OPTIONS+=GDB
+__DEFAULT_YES_OPTIONS+=GDB_LIBEXEC
.endif
# Only doing soft float API stuff on armv6
.if ${__T} != "armv6"
Modified: head/tools/build/mk/OptionalObsoleteFiles.inc
==============================================================================
--- head/tools/build/mk/OptionalObsoleteFiles.inc Tue Apr 25 18:07:48 2017 (r317415)
+++ head/tools/build/mk/OptionalObsoleteFiles.inc Tue Apr 25 18:08:56 2017 (r317416)
@@ -2431,7 +2431,7 @@ OLD_FILES+=usr/bin/gcov
OLD_FILES+=usr/share/man/man1/gcov.1.gz
.endif
-.if ${MK_GDB} == no
+.if ${MK_GDB} == no || ${MK_GDB_LIBEXEC} == yes
OLD_FILES+=usr/bin/gdb
OLD_FILES+=usr/bin/gdbserver
OLD_FILES+=usr/bin/gdbtui
@@ -2441,6 +2441,11 @@ OLD_FILES+=usr/share/man/man1/gdbserver.
OLD_FILES+=usr/share/man/man1/kgdb.1.gz
.endif
+.if ${MK_GDB} == no || ${MK_GDB_LIBEXEC} == no
+OLD_FILES+=usr/libexec/gdb
+OLD_FILES+=usr/libexec/kgdb
+.endif
+
.if ${MK_GPIO} == no
OLD_FILES+=usr/include/libgpio.h
OLD_FILES+=usr/lib/libgpio.a
Added: head/tools/build/options/WITHOUT_GDB_LIBEXEC
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/tools/build/options/WITHOUT_GDB_LIBEXEC Tue Apr 25 18:08:56 2017 (r317416)
@@ -0,0 +1,5 @@
+.\" $FreeBSD$
+Set to install
+.Xr gdb 1
+into
+.Pa /usr/bin .
Added: head/tools/build/options/WITH_GDB_LIBEXEC
==============================================================================
--- /dev/null 00:00:00 1970 (empty, because file is newly added)
+++ head/tools/build/options/WITH_GDB_LIBEXEC Tue Apr 25 18:08:56 2017 (r317416)
@@ -0,0 +1,10 @@
+.\" $FreeBSD$
+Set to install
+.Xr gdb 1
+into
+.Pa /usr/libexec .
+This permits
+.Xr gdb 1
+to be used as a fallback for
+.Xr crashinfo 8
+if a newer version is not installed.
Modified: head/usr.sbin/crashinfo/crashinfo.sh
==============================================================================
--- head/usr.sbin/crashinfo/crashinfo.sh Tue Apr 25 18:07:48 2017 (r317415)
+++ head/usr.sbin/crashinfo/crashinfo.sh Tue Apr 25 18:08:56 2017 (r317416)
@@ -35,6 +35,19 @@ usage()
exit 1
}
+# Find a gdb binary to use and save the value in GDB.
+find_gdb()
+{
+ local binary
+
+ for binary in /usr/local/bin/gdb /usr/libexec/gdb /usr/bin/gdb; do
+ if [ -x ${binary} ]; then
+ GDB=${binary}
+ return
+ fi
+ done
+}
+
# Run a single gdb command against a kernel file in batch mode.
# The kernel file is specified as the first argument and the command
# is given in the remaining arguments.
@@ -44,10 +57,10 @@ gdb_command()
k=$1 ; shift
- if [ -x /usr/local/bin/gdb ]; then
- /usr/local/bin/gdb -batch -ex "$@" $k
+ if [ ${GDB} = /usr/local/bin/gdb ]; then
+ ${GDB} -batch -ex "$@" $k
else
- echo -e "$@" | /usr/bin/gdb -x /dev/stdin -batch $k
+ echo -e "$@" | ${GDB} -x /dev/stdin -batch $k
fi
}
@@ -140,6 +153,12 @@ INFO=$CRASHDIR/info.$DUMPNR
FILE=$CRASHDIR/core.txt.$DUMPNR
HOSTNAME=`hostname`
+find_gdb
+if [ -z "$GDB" ]; then
+ echo "Unable to find a kernel debugger."
+ exit 1
+fi
+
if [ ! -e $VMCORE ]; then
echo "$VMCORE not found"
exit 1
@@ -189,11 +208,7 @@ file=`mktemp /tmp/crashinfo.XXXXXX`
if [ $? -eq 0 ]; then
echo "bt" >> $file
echo "quit" >> $file
- if [ -x /usr/local/bin/kgdb ]; then
- /usr/local/bin/kgdb $KERNEL $VMCORE < $file
- else
- kgdb $KERNEL $VMCORE < $file
- fi
+ ${GDB%gdb}kgdb $KERNEL $VMCORE < $file
rm -f $file
echo
fi
More information about the svn-src-all
mailing list