Module Name:    src
Committed By:   skrll
Date:           Fri Aug  9 09:08:47 UTC 2013

Modified Files:
        src/sys/conf: Makefile.kern.inc

Log Message:
Fix debug kernel builds when the automatic symbol table resizing kicks in.
Previously, the TAIL/HEAD link steps were being executed twice and the
(relinked/stripped) kernel would overwrite the debug version.

XXX this is all ugly.


To generate a diff of this commit:
cvs rdiff -u -r1.160 -r1.161 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/sys/conf/Makefile.kern.inc
diff -u src/sys/conf/Makefile.kern.inc:1.160 src/sys/conf/Makefile.kern.inc:1.161
--- src/sys/conf/Makefile.kern.inc:1.160	Wed Jul 17 14:05:43 2013
+++ src/sys/conf/Makefile.kern.inc	Fri Aug  9 09:08:47 2013
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile.kern.inc,v 1.160 2013/07/17 14:05:43 matt Exp $
+#	$NetBSD: Makefile.kern.inc,v 1.161 2013/08/09 09:08:47 skrll Exp $
 #
 # This file contains common `MI' targets and definitions and it is included
 # at the bottom of each `MD' ${MACHINE}/conf/Makefile.${MACHINE}.
@@ -262,15 +262,6 @@ SYSTEM_LD_TAIL_DBSYM?=	\
 	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 &/}
 LINKDATA?=	${DATAADDR:C/.+/-Tdata &/}
@@ -280,10 +271,24 @@ LINKFLAGS?=	${LINKFORMAT} ${LINKTEXT} ${
 		${EXTRA_LINKFLAGS}
 
 LINKFLAGS_DEBUG?=	-X
+
+#
+# If we're relinking due to _SYMTAB_SPACE_ADJUSTED then don't perform
+# SYSTEM_LD_TAIL{,_DEBUG}. They'll be done in the parent invocation.
+#
+.if defined(_SYMTAB_SPACE_ADJUSTED)
+SYSTEM_LD_TAIL?=true
+SYSTEM_LD_TAIL_DEBUG?=true
+.else
+SYSTEM_LD_TAIL?=@${SYSTEM_LD_TAIL_DBSYM} ; \
+		${TOOL_SED} '/const char sccs/!d;s/.*@(.)//;s/\\.*//' vers.c; \
+		${SIZE} $@; chmod 755 $@; \
+		${SYSTEM_CTFMERGE}
 SYSTEM_LD_TAIL_DEBUG?=; \
 		echo mv -f $@ $@.gdb; mv -f $@ $@.gdb; \
 		echo ${STRIP} ${STRIPFLAGS} -o $@ $@.gdb; \
 		${STRIP} ${STRIPFLAGS} -o $@ $@.gdb
+.endif
 LINKFLAGS_NORMAL?=	-S
 STRIPFLAGS?=	-g
 
@@ -304,16 +309,20 @@ SYSTEM_LD_TAIL+=; \
 LINKFLAGS+=	${LINKFLAGS_NORMAL}
 .endif
 
+#
+# More steps to skip if we're relinking due to _SYMTAB_SPACE_ADJUSTED (see
+# above)
+#
 .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}
+.endif
 
 ##
 ## (6) port independent targets and dependencies: assym.h, vers.o

Reply via email to