Module Name: src Committed By: bsh Date: Mon Mar 19 05:38:26 UTC 2012
Modified Files: src/external/gpl3/binutils/usr.sbin/dbsym: dbsym.8 dbsym.c src/sys/arch/arm/conf: Makefile.arm src/sys/conf: Makefile.kern.inc Log Message: adjust the size of db_symtab space automatically. proposed on tech-toolchain@, and got no objections. To generate a diff of this commit: cvs rdiff -u -r1.1 -r1.2 src/external/gpl3/binutils/usr.sbin/dbsym/dbsym.8 \ src/external/gpl3/binutils/usr.sbin/dbsym/dbsym.c cvs rdiff -u -r1.32 -r1.33 src/sys/arch/arm/conf/Makefile.arm cvs rdiff -u -r1.152 -r1.153 src/sys/conf/Makefile.kern.inc Please note that diffs are not public domain; they are subject to the copyright notices on the relevant files.
Modified files: Index: src/external/gpl3/binutils/usr.sbin/dbsym/dbsym.8 diff -u src/external/gpl3/binutils/usr.sbin/dbsym/dbsym.8:1.1 src/external/gpl3/binutils/usr.sbin/dbsym/dbsym.8:1.2 --- src/external/gpl3/binutils/usr.sbin/dbsym/dbsym.8:1.1 Tue Aug 18 20:22:20 2009 +++ src/external/gpl3/binutils/usr.sbin/dbsym/dbsym.8 Mon Mar 19 05:38:26 2012 @@ -1,4 +1,4 @@ -.\" $NetBSD: dbsym.8,v 1.1 2009/08/18 20:22:20 skrll Exp $ +.\" $NetBSD: dbsym.8,v 1.2 2012/03/19 05:38:26 bsh Exp $ .\" .Dd November 9, 2001 .Dt DBSYM 8 @@ -8,7 +8,7 @@ .Nd copy kernel symbol table into db_symtab space .Sh SYNOPSIS .Nm -.Op Fl v +.Op Fl pv .Op Fl b Ar bfdname .Ar kernel .Sh DESCRIPTION @@ -39,6 +39,14 @@ flag is given, will print out status information as it is copying the symbol table. .Pp +If the +.Fl p +flag is given, +.Nm +will report the size of the kernel symbol table and the size of the +db_symtab space. +Two values are printed out in a line separated by a space. +.Pp Note that debugging symbols are not useful to the .Xr ddb 4 kernel debugger, so to minimize the size of the kernel, one should Index: src/external/gpl3/binutils/usr.sbin/dbsym/dbsym.c diff -u src/external/gpl3/binutils/usr.sbin/dbsym/dbsym.c:1.1 src/external/gpl3/binutils/usr.sbin/dbsym/dbsym.c:1.2 --- src/external/gpl3/binutils/usr.sbin/dbsym/dbsym.c:1.1 Tue Aug 18 20:22:20 2009 +++ src/external/gpl3/binutils/usr.sbin/dbsym/dbsym.c Mon Mar 19 05:38:26 2012 @@ -1,4 +1,4 @@ -/* $NetBSD: dbsym.c,v 1.1 2009/08/18 20:22:20 skrll Exp $ */ +/* $NetBSD: dbsym.c,v 1.2 2012/03/19 05:38:26 bsh Exp $ */ /* * Copyright (c) 2001 Simon Burge (for Wasabi Systems) @@ -39,7 +39,7 @@ __COPYRIGHT("@(#) Copyright (c) 1996 Christopher G. Demetriou.\ Copyright 2001 Simon Burge.\ All rights reserved."); -__RCSID("$NetBSD: dbsym.c,v 1.1 2009/08/18 20:22:20 skrll Exp $"); +__RCSID("$NetBSD: dbsym.c,v 1.2 2012/03/19 05:38:26 bsh Exp $"); #endif /* not lint */ #include <sys/param.h> @@ -75,6 +75,7 @@ int find_symtab(bfd *, struct symbols *) int load_symtab(bfd *, int fd, char **, u_int32_t *); int verbose; +int printsize; int main(int argc, char **argv) @@ -90,7 +91,7 @@ main(int argc, char **argv) setprogname(argv[0]); bfdname = NULL; - while ((ch = getopt(argc, argv, "b:v")) != -1) + while ((ch = getopt(argc, argv, "b:pv")) != -1) switch (ch) { case 'b': bfdname = optarg; @@ -98,6 +99,9 @@ main(int argc, char **argv) case 'v': verbose = 1; break; + case 'p': + printsize = 1; + break; case '?': default: usage(); @@ -150,6 +154,11 @@ main(int argc, char **argv) symtab_space = bfd_get_32(abfd, &mappedkfile[db_symtab_symbols[X_DB_SYMTABSIZE].offset]); + if (printsize) { + printf("%d %d\n", symtabsize, symtab_space); + goto done; + } + if (symtabsize > symtab_space) errx(1, "symbol table (%u bytes) too big for buffer (%u bytes)\n" "Increase options SYMTAB_SPACE in your kernel config", @@ -168,6 +177,7 @@ main(int argc, char **argv) bfd_put_32(abfd, symtabsize, &mappedkfile[db_symtab_symbols[X_DB_SYMTABSIZE].offset]); +done: munmap(mappedkfile, ksb.st_size); close(kfd); Index: src/sys/arch/arm/conf/Makefile.arm diff -u src/sys/arch/arm/conf/Makefile.arm:1.32 src/sys/arch/arm/conf/Makefile.arm:1.33 --- src/sys/arch/arm/conf/Makefile.arm:1.32 Sun Apr 27 03:23:13 2008 +++ src/sys/arch/arm/conf/Makefile.arm Mon Mar 19 05:38:26 2012 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile.arm,v 1.32 2008/04/27 03:23:13 tsutsui Exp $ +# $NetBSD: Makefile.arm,v 1.33 2012/03/19 05:38:26 bsh Exp $ # Makefile for NetBSD # @@ -63,7 +63,8 @@ LINKFLAGS_NORMAL= -X # Strip ARM mapping symbols from the kernel image, as they interfere # with ddb. Do it differently if 'makeoptions DEBUG="-g"' was specified. .if !defined(DEBUG) || empty(DEBUG:M-g*) -SYSTEM_LD_TAIL?= @${OBJCOPY} --strip-symbol='$$a' \ +SYSTEM_LD_TAIL?= @${SYSTEM_LD_TAIL_DBSYM} ; \ + ${OBJCOPY} --strip-symbol='$$a' \ --strip-symbol='$$t' \ --strip-symbol='$$d' $@ ;\ ${SIZE} $@; chmod 755 $@ Index: src/sys/conf/Makefile.kern.inc diff -u src/sys/conf/Makefile.kern.inc:1.152 src/sys/conf/Makefile.kern.inc:1.153 --- src/sys/conf/Makefile.kern.inc:1.152 Sun Feb 12 16:34:11 2012 +++ src/sys/conf/Makefile.kern.inc Mon Mar 19 05:38:26 2012 @@ -1,4 +1,4 @@ -# $NetBSD: Makefile.kern.inc,v 1.152 2012/02/12 16:34:11 matt Exp $ +# $NetBSD: Makefile.kern.inc,v 1.153 2012/03/19 05:38:26 bsh Exp $ # # This file contains common `MI' targets and definitions and it is included # at the bottom of each `MD' ${MACHINE}/conf/Makefile.${MACHINE}. @@ -233,9 +233,43 @@ SYSTEM_LD?= @${_MKSHMSG} " link ${.CU ${_MKSHECHO}\ ${LD} -Map $@.map --cref ${LINKFLAGS} -o $@ '$${SYSTEM_OBJ}' '$${EXTRA_OBJ}' vers.o; \ ${LD} -Map $@.map --cref ${LINKFLAGS} -o $@ ${SYSTEM_OBJ} ${EXTRA_OBJ} vers.o -SYSTEM_LD_TAIL?=@${TOOL_SED} '/const char sccs/!d;s/.*@(.)//;s/\\.*//' vers.c; \ + +AUTO_SYMTAB_SPACE?= yes + +.if empty(AUTO_SYMTAB_SPACE:M[Yy][Ee][Ss]) || defined(_SYMTAB_SPACE_ADJUSTED) +SYSTEM_LD_TAIL_DBSYM?= true +.else +SYSTEM_LD_TAIL_DBSYM?= \ + if grep '^\#define.*SYMTAB_SPACE' opt_ksyms.h > /dev/null; then \ + _modify_opt_ksyms_h () { \ + ${TOOL_SED} \ + -e 's/^\(\#define.*SYMTAB_SPACE[ ]*\)[0-9]*/\1'$$1/ \ + -e 's/\(.equiv[ ]*_KERNEL_OPT_SYMTAB_SPACE,0x\)[0-9a-f]*/\1'$$(printf %x $$1)/ \ + opt_ksyms.h > opt_ksyms.h.ADJ && \ + mv opt_ksyms.h.ADJ opt_ksyms.h && \ + ${MAKE} ${MFLAGS} _SYMTAB_SPACE_ADJUSTED=1 $@; \ + }; \ + _adj_symtab_space () { \ + set -- $$(${DBSYM} -p $@); \ + echo Symtab size: $$1, space: $$2; \ + if [ "$$1" -gt "$$2" ]; then \ + echo Adjusting symtab space; \ + rm -f $@; \ + _modify_opt_ksyms_h $$1; \ + fi; \ + }; \ + _adj_symtab_space; \ + fi +.endif + +.if defined(_SYMTAB_SPACE_ADJUSTED) +SYSTEM_LD_TAIL?=true +.else +SYSTEM_LD_TAIL?=@${SYSTEM_LD_TAIL_DBSYM} ; \ + ${TOOL_SED} '/const char sccs/!d;s/.*@(.)//;s/\\.*//' vers.c; \ ${SIZE} $@; chmod 755 $@; \ ${SYSTEM_CTFMERGE} +.endif TEXTADDR?= ${LOADADDRESS} # backwards compatibility LINKTEXT?= ${TEXTADDR:C/.+/-Ttext &/} @@ -259,21 +293,24 @@ SYSTEM_LD_TAIL+=${SYSTEM_LD_TAIL_DEBUG} LINKFLAGS+= ${LINKFLAGS_DEBUG} EXTRA_KERNELS+= ${KERNELS:@.KERNEL.@${.KERNEL.}.gdb@} CTFFLAGS+= -g +.if !defined(_SYMTAB_SPACE_ADJUSTED) SYSTEM_LD_TAIL+=; \ if grep '^\#define.*SYMTAB_SPACE' opt_ksyms.h > /dev/null; then \ echo "${DBSYM} $@.gdb"; \ ${DBSYM} $@.gdb || (rm -f $@ ; exit 1) || exit 1; \ fi - +.endif .elifndef PROF LINKFLAGS+= ${LINKFLAGS_NORMAL} .endif +.if !defined(_SYMTAB_SPACE_ADJUSTED) SYSTEM_LD_TAIL+=; \ if grep '^\#define.*SYMTAB_SPACE' opt_ksyms.h > /dev/null; then \ echo "${DBSYM} $@"; \ ${DBSYM} $@ || (rm -f $@ ; exit 1) || exit 1; \ fi +.endif SYSTEM_LD_HEAD+=${SYSTEM_LD_HEAD_EXTRA} SYSTEM_LD_TAIL+=${SYSTEM_LD_TAIL_EXTRA}