Module Name: src
Committed By: rin
Date: Wed Jul 26 03:39:56 UTC 2023
Modified Files:
src/sys/arch/aarch64/conf: Makefile.aarch64
src/sys/arch/arm/conf: Makefile.arm
src/sys/conf: Makefile.kern.inc
Log Message:
Fix kernel size inflation for arm and aarch64 (PR toolchain/57146)
For some conditions, SYSTEM_LD_TAIL is set for arm and aarch64.
Then, ctfmerge(1) in default SYSTEM_LD_TAIL is unintentionally
skipped, which results in the catastrophic kernel size inflation,
as reported in the PR.
Also, introduce and use OBJCOPY_STRIPFLAGS variable instead of
STRIPFLAGS, as strip(1) is replaced by objcopy(1) during MI
kernel build procedure.
XXX
For Makefile.{arm,aarch64}, weird logic is used to determine how
to handle debug symbols; MKDEBUG{,KERNEL} are taken into account
later in sys/conf/Makefile.kern.inc.
To generate a diff of this commit:
cvs rdiff -u -r1.23 -r1.24 src/sys/arch/aarch64/conf/Makefile.aarch64
cvs rdiff -u -r1.55 -r1.56 src/sys/arch/arm/conf/Makefile.arm
cvs rdiff -u -r1.297 -r1.298 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/arch/aarch64/conf/Makefile.aarch64
diff -u src/sys/arch/aarch64/conf/Makefile.aarch64:1.23 src/sys/arch/aarch64/conf/Makefile.aarch64:1.24
--- src/sys/arch/aarch64/conf/Makefile.aarch64:1.23 Thu May 27 06:19:38 2021
+++ src/sys/arch/aarch64/conf/Makefile.aarch64 Wed Jul 26 03:39:55 2023
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile.aarch64,v 1.23 2021/05/27 06:19:38 ryo Exp $
+# $NetBSD: Makefile.aarch64,v 1.24 2023/07/26 03:39:55 rin Exp $
# Makefile for NetBSD
#
@@ -95,13 +95,14 @@ LOADADDRESS?= 0xffffc00000000000
LINKFLAGS_NORMAL= -X
# Strip AArch64 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} -w --strip-symbol='[$$][dx]' \
- --strip-symbol='[$$][dx]\.*' $@ ;\
- ${SIZE} $@; chmod 755 $@
+# with ddb, but don't strip them in netbsd.gdb.
+AA64_STRIP_SYMBOLS= --strip-symbol='[$$][dx]' \
+ --strip-symbol='[$$][dx]\.*'
+.if (defined(DEBUG) && !empty(DEBUG:M-g*)) || (!defined(DEBUG) && \
+ (${MKDEBUGKERNEL:Uno} == "yes" || ${MKDEBUG:Uno} == "yes"))
+OBJCOPY_STRIPFLAGS= -g -w ${AA64_STRIP_SYMBOLS}
.else
-STRIPFLAGS=-g --strip-symbol='$$x' --strip-symbol='$$d'
+SYSTEM_LD_TAIL= @${OBJCOPY} -w ${AA64_STRIP_SYMBOLS} $@
.endif
##
Index: src/sys/arch/arm/conf/Makefile.arm
diff -u src/sys/arch/arm/conf/Makefile.arm:1.55 src/sys/arch/arm/conf/Makefile.arm:1.56
--- src/sys/arch/arm/conf/Makefile.arm:1.55 Fri Jul 10 12:25:09 2020
+++ src/sys/arch/arm/conf/Makefile.arm Wed Jul 26 03:39:55 2023
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile.arm,v 1.55 2020/07/10 12:25:09 skrll Exp $
+# $NetBSD: Makefile.arm,v 1.56 2023/07/26 03:39:55 rin Exp $
# Makefile for NetBSD
#
@@ -106,14 +106,14 @@ locore.o: ${ARM}/arm32/locore.S assym.h
LOADADDRESS?= 0xF0000000
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} --wildcard --strip-symbol='[$$][atd]' \
- --strip-symbol='[$$][atd]\.*' $@; \
- ${SIZE} $@; chmod 755 $@
+# with ddb, but don't strip them in netbsd.gdb.
+ARM_STRIP_SYMBOLS= --strip-symbol='[$$][atd]' \
+ --strip-symbol='[$$][atd]\.*'
+.if (defined(DEBUG) && !empty(DEBUG:M-g*)) || (!defined(DEBUG) && \
+ (${MKDEBUGKERNEL:Uno} == "yes" || ${MKDEBUG:Uno} == "yes"))
+OBJCOPY_STRIPFLAGS= -g -w ${ARM_STRIP_SYMBOLS}
.else
-STRIPFLAGS=-g --wildcard --strip-symbol='[$$][atd]' \
- --strip-symbol='[$$][atd]\.*'
+SYSTEM_LD_TAIL= @${OBJCOPY} -w ${ARM_STRIP_SYMBOLS} $@
.endif
##
Index: src/sys/conf/Makefile.kern.inc
diff -u src/sys/conf/Makefile.kern.inc:1.297 src/sys/conf/Makefile.kern.inc:1.298
--- src/sys/conf/Makefile.kern.inc:1.297 Sat Jun 3 21:26:29 2023
+++ src/sys/conf/Makefile.kern.inc Wed Jul 26 03:39:55 2023
@@ -1,4 +1,4 @@
-# $NetBSD: Makefile.kern.inc,v 1.297 2023/06/03 21:26:29 lukem Exp $
+# $NetBSD: Makefile.kern.inc,v 1.298 2023/07/26 03:39:55 rin Exp $
#
# This file contains common `MI' targets and definitions and it is included
# at the bottom of each `MD' ${MACHINE}/conf/Makefile.${MACHINE}.
@@ -245,14 +245,17 @@ LINKFLAGS?= ${LINKFORMAT} ${LINKSCRIPT}
LINKFLAGS_DEBUG?= -X
KERNEL_CONFIG?= ${KERNEL_BUILD:T}
-SYSTEM_LD_TAIL?=@${TOOL_SED} '/const char sccs/!d;s/.*@(.)//;s/" "//;s/\\.*//' vers.c && \
+SYSTEM_LD_TAIL?= @${_MKSHECHO}
+SYSTEM_LD_TAIL+= && ${TOOL_SED} '/const char sccs/!d;s/.*@(.)//;s/" "//;s/\\.*//' vers.c && \
${SIZE} $@ && ${SYSTEM_CTFMERGE} && chmod 755 $@
SYSTEM_LD_TAIL+= && runit() { echo $$@; $$@; }
+OBJCOPY_STRIPFLAGS?= -g
+
SYSTEM_LD_TAIL_DEBUG?=&& \
runit mv -f $@ [email protected] && \
runit ${OBJCOPY} --only-keep-debug [email protected] $@-${KERNEL_CONFIG}.debug && \
- runit ${OBJCOPY} --strip-debug -p -R .gnu_debuglink \
+ runit ${OBJCOPY} ${OBJCOPY_STRIPFLAGS} -p -R .gnu_debuglink \
--add-gnu-debuglink=$@-${KERNEL_CONFIG}.debug [email protected] $@ && \
runit chmod 755 $@ [email protected] $@-${KERNEL_CONFIG}.debug