mirror of
https://github.com/opnsense/src.git
synced 2026-05-28 04:12:45 -04:00
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
This commit is contained in:
parent
b3ac6549ca
commit
73ad3fb536
7 changed files with 59 additions and 12 deletions
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
|
|
|
|||
|
|
@ -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.1.gz
|
|||
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
|
||||
|
|
|
|||
5
tools/build/options/WITHOUT_GDB_LIBEXEC
Normal file
5
tools/build/options/WITHOUT_GDB_LIBEXEC
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
.\" $FreeBSD$
|
||||
Set to install
|
||||
.Xr gdb 1
|
||||
into
|
||||
.Pa /usr/bin .
|
||||
10
tools/build/options/WITH_GDB_LIBEXEC
Normal file
10
tools/build/options/WITH_GDB_LIBEXEC
Normal file
|
|
@ -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.
|
||||
|
|
@ -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
|
||||
|
|
|
|||
Loading…
Reference in a new issue