svn commit: r288176 - in head: . etc/mtree share/man/man7 sys/conf
Ed Maste
emaste at FreeBSD.org
Thu Sep 24 16:55:25 UTC 2015
Author: emaste
Date: Thu Sep 24 16:55:22 2015
New Revision: 288176
URL: https://svnweb.freebsd.org/changeset/base/288176
Log:
Install kernel debug data under /usr/lib/debug
This avoids needing a large boot partition / file system in order to
accommodate multiple kernels, and provides consistency with userland
debug. This also simplifies the process of moving kernel debug files
to a separate package and installing them on demand.
In addition, change kernel debug file extension to .debug, to match
userland debug files.
When using the supported kernel installation method the
/usr/lib/debug/boot/kernel directory will be renamed (to kernel.old)
as is done with /boot/kernel.
Developers wishing to maintain the historical behavior of installing
debug files in /boot/kernel/ can set KERN_DEBUGDIR="" in src.conf(5).
Reviewed by: bdrewery, brooks, imp, markj
Relnotes: yes
Sponsored by: The FreeBSD Foundation
Differential Revision: https://reviews.freebsd.org/D1006
Modified:
head/UPDATING
head/etc/mtree/BSD.debug.dist
head/share/man/man7/hier.7
head/sys/conf/kern.post.mk
head/sys/conf/kmod.mk
Modified: head/UPDATING
==============================================================================
--- head/UPDATING Thu Sep 24 15:59:08 2015 (r288175)
+++ head/UPDATING Thu Sep 24 16:55:22 2015 (r288176)
@@ -31,6 +31,19 @@ NOTE TO PEOPLE WHO THINK THAT FreeBSD 11
disable the most expensive debugging functionality run
"ln -s 'abort:false,junk:false' /etc/malloc.conf".)
+20150925:
+ Kernel debug files have been moved to /usr/lib/debug/boot/kernel/,
+ and renamed from .symbols to .debug. This reduces the size requirements
+ on the boot partition or file system and provides consistency with
+ userland debug files.
+
+ When using the supported kernel installation method the
+ /usr/lib/debug/boot/kernel directory will be renamed (to kernel.old)
+ as is done with /boot/kernel.
+
+ Developers wishing to maintain the historical behavior of installing
+ debug files in /boot/kernel/ can set KERN_DEBUGDIR="" in src.conf(5).
+
20150827:
The wireless drivers had undergone changes that remove the 'parent
interface' from the ifconfig -l output. The rc.d network scripts
Modified: head/etc/mtree/BSD.debug.dist
==============================================================================
--- head/etc/mtree/BSD.debug.dist Thu Sep 24 15:59:08 2015 (r288175)
+++ head/etc/mtree/BSD.debug.dist Thu Sep 24 16:55:22 2015 (r288176)
@@ -9,6 +9,8 @@
bin
..
boot
+ kernel
+ ..
..
lib
geom
Modified: head/share/man/man7/hier.7
==============================================================================
--- head/share/man/man7/hier.7 Thu Sep 24 15:59:08 2015 (r288175)
+++ head/share/man/man7/hier.7 Thu Sep 24 16:55:22 2015 (r288176)
@@ -383,7 +383,7 @@ shared libraries for compatibility
a.out backward compatibility libraries
.El
.It Pa debug/
-standalone debug data for the base system libraries and binaries
+standalone debug data for the kernel and base system libraries and binaries
.It Pa dtrace/
DTrace library scripts
.It Pa engines/
Modified: head/sys/conf/kern.post.mk
==============================================================================
--- head/sys/conf/kern.post.mk Thu Sep 24 15:59:08 2015 (r288175)
+++ head/sys/conf/kern.post.mk Thu Sep 24 16:55:22 2015 (r288176)
@@ -23,6 +23,11 @@ MKMODULESENV+= CONF_CFLAGS="${CONF_CFLAG
MKMODULESENV+= WITH_CTF="${WITH_CTF}"
.endif
+# Allow overriding the kernel debug directory, so kernel and user debug may be
+# installed in different directories. Setting it to "" restores the historical
+# behavior of installing debug files in the kernel directory.
+KERN_DEBUGDIR?= ${DEBUGDIR}
+
.MAIN: all
.for target in all clean cleandepend cleandir clobber depend install \
@@ -101,11 +106,11 @@ modules-all modules-depend: modules-obj
.if !defined(DEBUG)
FULLKERNEL= ${KERNEL_KO}
.else
-FULLKERNEL= ${KERNEL_KO}.debug
-${KERNEL_KO}: ${FULLKERNEL} ${KERNEL_KO}.symbols
- ${OBJCOPY} --strip-debug --add-gnu-debuglink=${KERNEL_KO}.symbols\
+FULLKERNEL= ${KERNEL_KO}.full
+${KERNEL_KO}: ${FULLKERNEL} ${KERNEL_KO}.debug
+ ${OBJCOPY} --strip-debug --add-gnu-debuglink=${KERNEL_KO}.debug \
${FULLKERNEL} ${.TARGET}
-${KERNEL_KO}.symbols: ${FULLKERNEL}
+${KERNEL_KO}.debug: ${FULLKERNEL}
${OBJCOPY} --only-keep-debug ${FULLKERNEL} ${.TARGET}
install.debug reinstall.debug: gdbinit
cd ${.CURDIR}; ${MAKE} ${.TARGET:R}
@@ -151,7 +156,7 @@ ${mfile:T:S/.m$/.h/}: ${mfile}
kernel-clean:
rm -f *.o *.so *.So *.ko *.s eddep errs \
- ${FULLKERNEL} ${KERNEL_KO} ${KERNEL_KO}.symbols \
+ ${FULLKERNEL} ${KERNEL_KO} ${KERNEL_KO}.debug \
linterrs tags vers.c \
vnode_if.c vnode_if.h vnode_if_newproto.h vnode_if_typedef.h \
${MFILES:T:S/.m$/.c/} ${MFILES:T:S/.m$/.h/} \
@@ -249,19 +254,26 @@ kernel-install:
if [ ! "`dirname "$$thiskernel"`" -ef ${DESTDIR}${KODIR} ] ; then \
chflags -R noschg ${DESTDIR}${KODIR} ; \
rm -rf ${DESTDIR}${KODIR} ; \
+ rm -rf ${DESTDIR}${KERN_DEBUGDIR}${KODIR} ; \
else \
if [ -d ${DESTDIR}${KODIR}.old ] ; then \
chflags -R noschg ${DESTDIR}${KODIR}.old ; \
rm -rf ${DESTDIR}${KODIR}.old ; \
fi ; \
mv ${DESTDIR}${KODIR} ${DESTDIR}${KODIR}.old ; \
+ if [ -n "${KERN_DEBUGDIR}" -a \
+ -d ${DESTDIR}${KERN_DEBUGDIR}${KODIR} ]; then \
+ rm -rf ${DESTDIR}${KERN_DEBUGDIR}${KODIR}.old ; \
+ mv ${DESTDIR}${KERN_DEBUGDIR}${KODIR} ${DESTDIR}${KERN_DEBUGDIR}${KODIR}.old ; \
+ fi ; \
sysctl kern.bootfile=${DESTDIR}${KODIR}.old/"`basename "$$thiskernel"`" ; \
fi
.endif
mkdir -p ${DESTDIR}${KODIR}
${INSTALL} -p -m 555 -o ${KMODOWN} -g ${KMODGRP} ${KERNEL_KO} ${DESTDIR}${KODIR}
.if defined(DEBUG) && !defined(INSTALL_NODEBUG) && ${MK_KERNEL_SYMBOLS} != "no"
- ${INSTALL} -p -m 555 -o ${KMODOWN} -g ${KMODGRP} ${KERNEL_KO}.symbols ${DESTDIR}${KODIR}
+ mkdir -p ${DESTDIR}${KERN_DEBUGDIR}${KODIR}
+ ${INSTALL} -p -m 555 -o ${KMODOWN} -g ${KMODGRP} ${KERNEL_KO}.debug ${DESTDIR}${KERN_DEBUGDIR}${KODIR}
.endif
.if defined(KERNEL_EXTRA_INSTALL)
${INSTALL} -p -m 555 -o ${KMODOWN} -g ${KMODGRP} ${KERNEL_EXTRA_INSTALL} ${DESTDIR}${KODIR}
@@ -273,7 +285,7 @@ kernel-reinstall:
@-chflags -R noschg ${DESTDIR}${KODIR}
${INSTALL} -p -m 555 -o ${KMODOWN} -g ${KMODGRP} ${KERNEL_KO} ${DESTDIR}${KODIR}
.if defined(DEBUG) && !defined(INSTALL_NODEBUG) && ${MK_KERNEL_SYMBOLS} != "no"
- ${INSTALL} -p -m 555 -o ${KMODOWN} -g ${KMODGRP} ${KERNEL_KO}.symbols ${DESTDIR}${KODIR}
+ ${INSTALL} -p -m 555 -o ${KMODOWN} -g ${KMODGRP} ${KERNEL_KO}.debug ${DESTDIR}${KERN_DEBUGDIR}${KODIR}
.endif
config.o env.o hints.o vers.o vnode_if.o:
Modified: head/sys/conf/kmod.mk
==============================================================================
--- head/sys/conf/kmod.mk Thu Sep 24 15:59:08 2015 (r288175)
+++ head/sys/conf/kmod.mk Thu Sep 24 16:55:22 2015 (r288176)
@@ -172,11 +172,11 @@ PROG= ${KMOD}.ko
.if !defined(DEBUG_FLAGS)
FULLPROG= ${PROG}
.else
-FULLPROG= ${PROG}.debug
-${PROG}: ${FULLPROG} ${PROG}.symbols
- ${OBJCOPY} --strip-debug --add-gnu-debuglink=${PROG}.symbols\
+FULLPROG= ${PROG}.full
+${PROG}: ${FULLPROG} ${PROG}.debug
+ ${OBJCOPY} --strip-debug --add-gnu-debuglink=${PROG}.debug \
${FULLPROG} ${.TARGET}
-${PROG}.symbols: ${FULLPROG}
+${PROG}.debug: ${FULLPROG}
${OBJCOPY} --only-keep-debug ${FULLPROG} ${.TARGET}
.endif
@@ -266,7 +266,7 @@ ${_ILINKS}:
CLEANFILES+= ${PROG} ${KMOD}.kld ${OBJS}
.if defined(DEBUG_FLAGS)
-CLEANFILES+= ${FULLPROG} ${PROG}.symbols
+CLEANFILES+= ${FULLPROG} ${PROG}.debug
.endif
.if !target(install)
@@ -277,6 +277,7 @@ _INSTALLFLAGS:= ${_INSTALLFLAGS${ie}}
.endfor
.if !target(realinstall)
+KERN_DEBUGDIR?= ${DEBUGDIR}
realinstall: _kmodinstall
.ORDER: beforeinstall _kmodinstall
_kmodinstall:
@@ -284,7 +285,7 @@ _kmodinstall:
${_INSTALLFLAGS} ${PROG} ${DESTDIR}${KMODDIR}
.if defined(DEBUG_FLAGS) && !defined(INSTALL_NODEBUG) && ${MK_KERNEL_SYMBOLS} != "no"
${INSTALL} -o ${KMODOWN} -g ${KMODGRP} -m ${KMODMODE} \
- ${_INSTALLFLAGS} ${PROG}.symbols ${DESTDIR}${KMODDIR}
+ ${_INSTALLFLAGS} ${PROG}.debug ${DESTDIR}${KERN_DEBUGDIR}${KMODDIR}
.endif
.include <bsd.links.mk>
More information about the svn-src-all
mailing list