Back out default debug kernel. The flags revert to historical behaviour.

Requested-by:	ache
		bde
		dg

Modify targets for debug kernels:  when -g was specified, make will
now build a debug kernel called kernel.debug, and create a stripped
version called kernel at the same time.  The two targets install and
install.debug are otherwise unchanged.

Requested-by:	dillon

Update man page accordingly.
This commit is contained in:
Greg Lehey 1999-04-11 03:40:11 +00:00
parent 4e697da8b3
commit 4357ca882d
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=45579
10 changed files with 74 additions and 87 deletions

View file

@ -1,7 +1,7 @@
# Makefile.alpha -- with config changes.
# Copyright 1990 W. Jolitz
# from: @(#)Makefile.alpha 7.1 5/10/91
# $Id: Makefile.alpha,v 1.18 1999/02/14 13:56:15 des Exp $
# $Id: Makefile.alpha,v 1.19 1999/04/07 09:27:59 grog Exp $
#
# Makefile for FreeBSD
#
@ -260,13 +260,10 @@ install: ${KERNEL}
fi
install -c -m 555 -o root -g wheel -fschg ${KERNEL} ${DESTDIR}/
${KERNEL}: ${KERNEL}.debug
objcopy --strip-debug ${KERNEL}.debug ${KERNEL}
.endif
${INSTALL}:
@if [ ! -f ${FULLKERNEL} ] ; then \
@if [ ! -f ${KERNEL} ] ; then \
echo "You must first build your kernel before trying to install." ; \
exit 1 ; \
fi

View file

@ -1,7 +1,7 @@
# Makefile.alpha -- with config changes.
# Copyright 1990 W. Jolitz
# from: @(#)Makefile.alpha 7.1 5/10/91
# $Id: Makefile.alpha,v 1.18 1999/02/14 13:56:15 des Exp $
# $Id: Makefile.alpha,v 1.19 1999/04/07 09:27:59 grog Exp $
#
# Makefile for FreeBSD
#
@ -260,13 +260,10 @@ install: ${KERNEL}
fi
install -c -m 555 -o root -g wheel -fschg ${KERNEL} ${DESTDIR}/
${KERNEL}: ${KERNEL}.debug
objcopy --strip-debug ${KERNEL}.debug ${KERNEL}
.endif
${INSTALL}:
@if [ ! -f ${FULLKERNEL} ] ; then \
@if [ ! -f ${KERNEL} ] ; then \
echo "You must first build your kernel before trying to install." ; \
exit 1 ; \
fi

View file

@ -1,7 +1,7 @@
# Makefile.i386 -- with config changes.
# Copyright 1990 W. Jolitz
# from: @(#)Makefile.i386 7.1 5/10/91
# $Id: Makefile.i386,v 1.141 1999/03/11 18:28:41 dg Exp $
# $Id: Makefile.i386,v 1.142 1999/04/07 09:28:01 grog Exp $
#
# Makefile for FreeBSD
#
@ -229,13 +229,10 @@ install: ${KERNEL}
fi
install -c -m 555 -o root -g wheel -fschg ${KERNEL} ${DESTDIR}/
${KERNEL}: ${KERNEL}.debug
objcopy --strip-debug ${KERNEL}.debug ${KERNEL}
.endif
${INSTALL}:
@if [ ! -f ${FULLKERNEL} ] ; then \
@if [ ! -f ${KERNEL} ] ; then \
echo "You must first build your kernel before trying to install." ; \
exit 1 ; \
fi

View file

@ -3,7 +3,7 @@
# Makefile.i386 -- with config changes.
# Copyright 1990 W. Jolitz
# from: @(#)Makefile.i386 7.1 5/10/91
# $Id: Makefile.pc98,v 1.57 1999/03/13 13:18:00 kato Exp $
# $Id: Makefile.pc98,v 1.58 1999/04/07 09:28:03 grog Exp $
#
# Makefile for FreeBSD
#
@ -233,13 +233,10 @@ install: ${KERNEL}
fi
install -c -m 555 -o root -g wheel -fschg ${KERNEL} ${DESTDIR}/
${KERNEL}: ${KERNEL}.debug
objcopy --strip-debug ${KERNEL}.debug ${KERNEL}
.endif
${INSTALL}:
@if [ ! -f ${FULLKERNEL} ] ; then \
@if [ ! -f ${KERNEL} ] ; then \
echo "You must first build your kernel before trying to install." ; \
exit 1 ; \
fi

View file

@ -1,7 +1,7 @@
# Makefile.i386 -- with config changes.
# Copyright 1990 W. Jolitz
# from: @(#)Makefile.i386 7.1 5/10/91
# $Id: Makefile.i386,v 1.141 1999/03/11 18:28:41 dg Exp $
# $Id: Makefile.i386,v 1.142 1999/04/07 09:28:01 grog Exp $
#
# Makefile for FreeBSD
#
@ -229,13 +229,10 @@ install: ${KERNEL}
fi
install -c -m 555 -o root -g wheel -fschg ${KERNEL} ${DESTDIR}/
${KERNEL}: ${KERNEL}.debug
objcopy --strip-debug ${KERNEL}.debug ${KERNEL}
.endif
${INSTALL}:
@if [ ! -f ${FULLKERNEL} ] ; then \
@if [ ! -f ${KERNEL} ] ; then \
echo "You must first build your kernel before trying to install." ; \
exit 1 ; \
fi

View file

@ -1,7 +1,7 @@
# Makefile.i386 -- with config changes.
# Copyright 1990 W. Jolitz
# from: @(#)Makefile.i386 7.1 5/10/91
# $Id: Makefile.i386,v 1.141 1999/03/11 18:28:41 dg Exp $
# $Id: Makefile.i386,v 1.142 1999/04/07 09:28:01 grog Exp $
#
# Makefile for FreeBSD
#
@ -229,13 +229,10 @@ install: ${KERNEL}
fi
install -c -m 555 -o root -g wheel -fschg ${KERNEL} ${DESTDIR}/
${KERNEL}: ${KERNEL}.debug
objcopy --strip-debug ${KERNEL}.debug ${KERNEL}
.endif
${INSTALL}:
@if [ ! -f ${FULLKERNEL} ] ; then \
@if [ ! -f ${KERNEL} ] ; then \
echo "You must first build your kernel before trying to install." ; \
exit 1 ; \
fi

View file

@ -3,7 +3,7 @@
# Makefile.i386 -- with config changes.
# Copyright 1990 W. Jolitz
# from: @(#)Makefile.i386 7.1 5/10/91
# $Id: Makefile.pc98,v 1.57 1999/03/13 13:18:00 kato Exp $
# $Id: Makefile.pc98,v 1.58 1999/04/07 09:28:03 grog Exp $
#
# Makefile for FreeBSD
#
@ -233,13 +233,10 @@ install: ${KERNEL}
fi
install -c -m 555 -o root -g wheel -fschg ${KERNEL} ${DESTDIR}/
${KERNEL}: ${KERNEL}.debug
objcopy --strip-debug ${KERNEL}.debug ${KERNEL}
.endif
${INSTALL}:
@if [ ! -f ${FULLKERNEL} ] ; then \
@if [ ! -f ${KERNEL} ] ; then \
echo "You must first build your kernel before trying to install." ; \
exit 1 ; \
fi

View file

@ -39,7 +39,7 @@
.Nd build system configuration files
.Sh SYNOPSIS
.Nm config
.Op Fl gprs
.Op Fl gpr
.Ar SYSTEM_NAME
.Sh DESCRIPTION
This is the old version of the
@ -73,8 +73,7 @@ Available options and operands:
.Pp
.Bl -tag -width SYSTEM_NAME
.It Fl g
Configure a system for debugging. This is the default, so this flag has no
meaning, and causes a warning message to be printed.
Configure a system for debugging.
.It Fl p
Configure a system for profiling; for example,
.Xr kgmon 8
@ -87,10 +86,6 @@ options are supplied,
configures a system for high resolution profiling.
.It Fl r
Remove the old compile directory (see below).
.It Fl s
Configure a system without debugging symbols. This saves both time and space,
but if problems occur with the kernel, it will be almost impossible to find out
their causes.
.It Ar SYSTEM_NAME
Specifies the name of the system configuration file
containing device specifications, configuration options
@ -101,9 +96,12 @@ and other system parameters for one system configuration.
should be run from the
.Pa conf
subdirectory of the system source (usually
.Pa /sys/ARCH/conf ) .
.Pa /sys/ARCH/conf ) ,
where
.Pa ARCH
represents one of the architectures supported by FreeBSD.
.Nm Config
will create the directory
creates the directory
.Pa ../../compile/SYSTEM_NAME
as necessary and place all output files there.
If the directory already exists and the
@ -152,30 +150,43 @@ are likely to fail.
If the option "INCLUDE_CONFIG_FILE" is used in the configuration file the
entire input file is embedded in the new kernel. This means that
.Xr strings 1
can be used to extract it from a kernel.
.Pp
Strings | grep ___ will print just the configure information.
can be used to extract it from a kernel:
to extract the configuration information, use the command
.Bd -literal
strings kernel | grep ___
.Ed
.Sh DEBUG KERNELS
Traditional BSD kernels were compiled without symbols due to the heavy load on
the system when compiling a
Traditional BSD kernels compiled without symbols due to the heavy load on the
system when compiling a
.if n "debug"
.if t ``debug''
kernel. A debug kernel contains complete symbols for all the source files, and
enables an experienced kernel programmer to analyse the cause of a problem. The
debuggers available prior to 4.4BSD-Lite were able to find some information
from a normal kernel; this is no longer the case with
.Xr gdb 8 ,
and a debug kernel is needed for any meaningful analysis.
from a normal kernel;
.Xr gdb 8
provides very little support for normal kernels, and a debug kernel is needed
for any meaningful analysis.
.Pp
Building a debug kernel is the default with FreeBSD, and the
.Fl s
option is required to revert to historical behaviour. A debug kernel takes up
to 30% longer to build and requires about 30 MB of disk storage in the build
directory, compared to about 6 MB for a non-debug kernel. A debug kernel is
about 11 MB in size, compared to about 2 MB for a non-debug kernel. This space
is used both in the root file system and at run time in memory. Since kernel
storage is non-pageable, the additional space required by a debug kernel is lost
to the system when not debugging.
For reasons of history, time and space, building a debug kernel is not the
default with FreeBSD: a debug kernel takes up to 30% longer to build and
requires about 30 MB of disk storage in the build directory, compared to about 6
MB for a non-debug kernel. A debug kernel is about 11 MB in size, compared to
about 2 MB for a non-debug kernel. This space is used both in the root file
system and at run time in memory. Use the
.Fl g
option to build a debug kernel. With this option,
.Nm
causes two kernel files to be built in the kernel build directory:
.Bl -bullet
.It
.Nm kernel.debug
is the complete debug kernel.
.It
.Nm kernel
is a copy of the kernel with the debug symbols stripped off. This is equivalent
to the normal non-debug kernel.
.El
.Pp
There is currently little sense in installing and booting from a debug kernel,
since the only tools available which use the symbols do not run on-line. There
@ -184,11 +195,15 @@ are therefore two options for installing a debug kernel:
.It
.Nm make
.Ar install
makes a stripped copy of the kernel and installs it in the root file system.
installs
.Nm kernel
in the root file system.
.It
.Nm make
.Ar install.debug
installs the complete debug kernel in the root file system.
installs
.Nm kernel.debug
in the root file system.
.El
.Sh FILES
.Bl -tag -width /sys/i386/conf/Makefile.i386 -compact
@ -208,6 +223,9 @@ name to major device mapping file for the
list of files specific to
.Em ERNIE
system
.It Pa /sys/compile/SYSTEM_NAME
kernel build directory for system
.Pa SYSTEM_NAME .
.El
.Sh SEE ALSO
The SYNOPSIS portion of each device in section 4.

View file

@ -42,7 +42,7 @@ static const char copyright[] =
static char sccsid[] = "@(#)main.c 8.1 (Berkeley) 6/6/93";
#endif
static const char rcsid[] =
"$Id: main.c,v 1.27 1999/04/07 09:27:56 grog Exp $";
"$Id: main.c,v 1.28 1999/04/10 14:03:38 ache Exp $";
#endif /* not lint */
#include <sys/types.h>
@ -86,13 +86,10 @@ main(argc, argv)
int ch;
char *p;
debugging = 1; /* on by default */
while ((ch = getopt(argc, argv, "gprns")) != -1)
while ((ch = getopt(argc, argv, "gprn")) != -1)
switch (ch) {
case 'g':
fprintf(stderr,
"Debugging is enabled by default, there is "
"no need to specify the -g option\n" );
debugging++;
break;
case 'p':
profiling++;
@ -105,9 +102,6 @@ main(argc, argv)
case 'r':
no_config_clobber = FALSE;
break;
case 's':
debugging = 0;
break;
case '?':
default:
usage();
@ -118,14 +112,6 @@ main(argc, argv)
if (argc != 1)
usage();
if (debugging)
printf("Building kernel with full debugging symbols. Do\n"
"\"config -s %s\" "
"for historic partial symbolic support.\n"
"To install the debugging kernel, do "
"make install.debug\n",
argv [0] );
if (freopen(PREFIX = *argv, "r", stdin) == NULL)
err(2, "%s", PREFIX);
@ -224,7 +210,7 @@ main(argc, argv)
static void
usage()
{
fprintf(stderr, "usage: config [-gprs] sysname\n");
fprintf(stderr, "usage: config [-gpr] sysname\n");
exit(1);
}

View file

@ -36,7 +36,7 @@
static char sccsid[] = "@(#)mkmakefile.c 8.1 (Berkeley) 6/6/93";
#endif
static const char rcsid[] =
"$Id: mkmakefile.c,v 1.34 1998/09/15 21:07:54 gibbs Exp $";
"$Id: mkmakefile.c,v 1.35 1999/04/07 09:27:56 grog Exp $";
#endif /* not lint */
/*
@ -790,10 +790,7 @@ do_load(f)
fputs("all:", f);
for (fl = conf_list; fl; fl = fl->f_next)
if (fl->f_type == SYSTEMSPEC)
if (debugging)
fprintf(f, " %s.debug", fl->f_needs);
else
fprintf(f, " %s", fl->f_needs);
fprintf(f, " %s", fl->f_needs);
putc('\n', f);
}
@ -831,7 +828,14 @@ do_systemspec(f, fl, first)
fprintf(f,
"KERNEL=\t\t%s\n"
"FULLKERNEL=\t%s.debug\n"
"INSTALL=\tinstall.debug\n\n",
"INSTALL=\tinstall.debug\n\n"
"%s: %s.debug\n",
fl->f_needs,
fl->f_needs,
fl->f_needs,
fl->f_needs );
fprintf (f,
"\tobjcopy --strip-debug %s.debug %s\n\n",
fl->f_needs,
fl->f_needs );
fprintf(f, "%s.debug: ${SYSTEM_DEP} swap%s.o", fl->f_needs, fl->f_fn);