Module Name:    src
Committed By:   ozaki-r
Date:           Thu Apr 20 09:29:11 UTC 2017

Modified Files:
        src: BUILDING
        src/doc: BUILDING.mdoc
        src/share/man/man5: mk.conf.5
        src/share/mk: bsd.README bsd.lib.mk bsd.lua.mk bsd.sys.mk

Log Message:
Introduce MKSTRIPSYM build option

If it's yes, all local symbols of shared libraries are stripped
(default). If it's no, only temporary local symbols are stripped;
for example, symbols of static functions are kept. Keeping such
symbols is useful on using DTrace for userland libraries and
getting a backtrace from a rump server loading modules (shared
libraries).

Proposed and discussed on tech-kern and tech-toolchain


To generate a diff of this commit:
cvs rdiff -u -r1.124 -r1.125 src/BUILDING
cvs rdiff -u -r1.116 -r1.117 src/doc/BUILDING.mdoc
cvs rdiff -u -r1.72 -r1.73 src/share/man/man5/mk.conf.5
cvs rdiff -u -r1.358 -r1.359 src/share/mk/bsd.README
cvs rdiff -u -r1.368 -r1.369 src/share/mk/bsd.lib.mk
cvs rdiff -u -r1.7 -r1.8 src/share/mk/bsd.lua.mk
cvs rdiff -u -r1.270 -r1.271 src/share/mk/bsd.sys.mk

Please note that diffs are not public domain; they are subject to the
copyright notices on the relevant files.

Modified files:

Index: src/BUILDING
diff -u src/BUILDING:1.124 src/BUILDING:1.125
--- src/BUILDING:1.124	Mon Feb 20 21:28:48 2017
+++ src/BUILDING	Thu Apr 20 09:29:10 2017
@@ -396,6 +396,18 @@ CONFIGURATION
 
                  Default: ``no''
 
+     MKSTRIPSYM  Can be set to ``yes'' or ``no''.  Indicates whether all local
+                 symbols should be stripped from shared libraries.  If ``yes'',
+                 strip all local symbols from shared libraries; the affect is
+                 equivalent to -x option of ld(1). If ``no'', strip only
+                 temporary local symbols; the affect is equivalent to -X
+                 option of ld(1). Keeping non-temporary local symbols such as
+                 static function names is useful on using DTrace for userland
+                 libraries and getting a backtrace from a rump kernel loading
+                 shared libraries.
+
+                 Default: ``yes''
+
      MKUNPRIVED  Can be set to ``yes'' or ``no''.  Indicates whether an
                  unprivileged install will occur.  The user, group,
                  permissions, and file flags, will not be set on the installed

Index: src/doc/BUILDING.mdoc
diff -u src/doc/BUILDING.mdoc:1.116 src/doc/BUILDING.mdoc:1.117
--- src/doc/BUILDING.mdoc:1.116	Mon Feb 20 20:56:30 2017
+++ src/doc/BUILDING.mdoc	Thu Apr 20 09:29:10 2017
@@ -1,4 +1,4 @@
-.\"	$NetBSD: BUILDING.mdoc,v 1.116 2017/02/20 20:56:30 christos Exp $
+.\"	$NetBSD: BUILDING.mdoc,v 1.117 2017/04/20 09:29:10 ozaki-r Exp $
 .\"
 .\" Copyright (c) 2001-2011 The NetBSD Foundation, Inc.
 .\" All rights reserved.
@@ -33,7 +33,7 @@
 .\" Toolchain prefix for commands
 .ds toolprefix nb
 .
-.Dd February 20, 2017
+.Dd April 13, 2017
 .Dt BUILDING 8
 .Os NetBSD
 .
@@ -697,6 +697,21 @@ Indicates whether RCS IDs, for use with
 should be stripped from program binaries and shared libraries.
 .DFLTn
 .
+.It Sy MKSTRIPSYM
+.YorN
+Indicates whether all local symbols should be stripped from shared libraries.
+If
+.Dq yes ,
+strip all local symbols from shared libraries;
+the affect is equivalent to -x option of ld(1). If
+.Dq no ,
+strip only temporary local symbols; the affect is equivalent
+to -X option of ld(1). Keeping non-temporary local symbols
+such as static function names is useful on using DTrace for
+userland libraries and getting a backtrace from a rump kernel
+loading shared libraries.
+.DFLTy
+.
 .It Sy MKUNPRIVED
 .YorN
 Indicates whether an unprivileged install will occur.

Index: src/share/man/man5/mk.conf.5
diff -u src/share/man/man5/mk.conf.5:1.72 src/share/man/man5/mk.conf.5:1.73
--- src/share/man/man5/mk.conf.5:1.72	Thu Feb 16 17:15:26 2017
+++ src/share/man/man5/mk.conf.5	Thu Apr 20 09:29:10 2017
@@ -1,4 +1,4 @@
-.\"	$NetBSD: mk.conf.5,v 1.72 2017/02/16 17:15:26 rin Exp $
+.\"	$NetBSD: mk.conf.5,v 1.73 2017/04/20 09:29:10 ozaki-r Exp $
 .\"
 .\"  Copyright (c) 1999-2003 The NetBSD Foundation, Inc.
 .\"  All rights reserved.
@@ -783,6 +783,21 @@ Indicates whether RCS IDs, for use with
 should be stripped from program binaries and shared libraries.
 .DFLTn
 .
+.It Sy MKSTRIPSYM
+.YorN
+Indicates whether all local symbols should be stripped from shared libraries.
+If
+.Dq yes ,
+strip all local symbols from shared libraries;
+the affect is equivalent to -x option of ld(1). If
+.Dq no ,
+strip only temporary local symbols; the affect is equivalent
+to -X option of ld(1). Keeping non-temporary local symbols
+such as static function names is useful on using DTrace for
+userland libraries and getting a backtrace from a rump kernel
+loading shared libraries.
+.DFLTy
+.
 .It Sy MKUNPRIVED
 .YorN
 Indicates whether an unprivileged install will occur.

Index: src/share/mk/bsd.README
diff -u src/share/mk/bsd.README:1.358 src/share/mk/bsd.README:1.359
--- src/share/mk/bsd.README:1.358	Wed Feb  8 03:44:41 2017
+++ src/share/mk/bsd.README	Thu Apr 20 09:29:10 2017
@@ -1,4 +1,4 @@
-#	$NetBSD: bsd.README,v 1.358 2017/02/08 03:44:41 kamil Exp $
+#	$NetBSD: bsd.README,v 1.359 2017/04/20 09:29:10 ozaki-r Exp $
 #	@(#)bsd.README	8.2 (Berkeley) 4/2/94
 
 This is the README file for the make "include" files for the NetBSD
@@ -409,6 +409,15 @@ MKSTATICLIB	If "no", don't build or inst
 		libraries.
 		Default: yes
 
+MKSTRIPSYM	If "yes", strip all local symbols from shared libraries;
+		the affect is equivalent to -x option of ld(1). If "no",
+		strip only temporary local symbols; the affect is equivalent
+		to -X option of ld(1). Keeping non-temporary local symbols
+		such as static function names is useful on using DTrace for
+		userland libraries and getting a backtrace from a rump kernel
+		loading shared libraries.
+		Default: yes
+
 MKTOOLSDEBUG	If "yes" build the tools with debugging symbols.
 		Default: no
 

Index: src/share/mk/bsd.lib.mk
diff -u src/share/mk/bsd.lib.mk:1.368 src/share/mk/bsd.lib.mk:1.369
--- src/share/mk/bsd.lib.mk:1.368	Sun Jan  8 17:40:44 2017
+++ src/share/mk/bsd.lib.mk	Thu Apr 20 09:29:11 2017
@@ -1,4 +1,4 @@
-#	$NetBSD: bsd.lib.mk,v 1.368 2017/01/08 17:40:44 christos Exp $
+#	$NetBSD: bsd.lib.mk,v 1.369 2017/04/20 09:29:11 ozaki-r Exp $
 #	@(#)bsd.lib.mk	8.3 (Berkeley) 4/22/94
 
 .include <bsd.init.mk>
@@ -577,6 +577,11 @@ _LIBLDOPTS+=	-Wl,-rpath,${SHLIBDIR} \
 _LIBLDOPTS+=	-Wl,-rpath-link,${DESTDIR}${SHLIBINSTALLDIR} \
 		-L=${SHLIBINSTALLDIR}
 .endif
+.if ${MKSTRIPSYM:Uyes} == "yes"
+_LIBLDOPTS+=	-Wl,-x
+.else
+_LIBLDOPTS+=	-Wl,-X
+.endif
 
 # gcc -shared now adds -lc automatically. For libraries other than libc and
 # libgcc* we add as a dependency the installed shared libc. For libc and
@@ -635,7 +640,7 @@ ${_LIB.so.full}: ${_MAINLIBDEPS}
 .endif
 	${_MKTARGET_BUILD}
 	rm -f ${.TARGET}
-	${LIBCC} ${LDLIBC} -Wl,-x -shared ${SHLIB_SHFLAGS} \
+	${LIBCC} ${LDLIBC} -shared ${SHLIB_SHFLAGS} \
 	    ${_LDFLAGS.${_LIB}} -o ${.TARGET} ${_LIBLDOPTS} \
 	    -Wl,--whole-archive ${SOLIB} \
 	    -Wl,--no-whole-archive ${_LDADD.${_LIB}}

Index: src/share/mk/bsd.lua.mk
diff -u src/share/mk/bsd.lua.mk:1.7 src/share/mk/bsd.lua.mk:1.8
--- src/share/mk/bsd.lua.mk:1.7	Sat Jul 19 18:38:34 2014
+++ src/share/mk/bsd.lua.mk	Thu Apr 20 09:29:11 2017
@@ -1,4 +1,4 @@
-#	$NetBSD: bsd.lua.mk,v 1.7 2014/07/19 18:38:34 lneto Exp $
+#	$NetBSD: bsd.lua.mk,v 1.8 2017/04/20 09:29:11 ozaki-r Exp $
 #
 # Build rules and definitions for Lua modules
 
@@ -128,6 +128,13 @@ CLEANFILES+=${LUA_OBJS.${_M}} ${LUA_LOBJ
 DPSRCS+=${LUA_SRCS.${_M}}
 SRCS+=${LUA_SRCS.${_M}}
 
+LUA_LDOPTS=	-Wl,--warn-shared-textrel
+.if ${MKSTRIPSYM:Uyes} == "yes"
+LUA_LDOPTS+=	-Wl,-x
+.else
+LUA_LDOPTS+=	-Wl,-X
+.endif
+
 .NOPATH:		${LUA_OBJS.${_M}} ${LUA_LOBJ.${_M}} ${LUA_TARG.${_M}}
 .if ${MKLINT} != "no"
 ${LUA_TARG.${_M}}:	${LUA_LOBJ.${_M}}
@@ -137,8 +144,7 @@ lua-all:		${LUA_TARG.${_M}}
 ${LUA_TARG.${_M}}:	${LUA_OBJS.${_M}} ${DPADD} ${DPADD.${_M}}
 	${_MKTARGET_BUILD}
 	rm -f ${.TARGET}
-	${CC} -Wl,--warn-shared-textrel \
-	    -Wl,-x -shared ${LUA_OBJS.${_M}} \
+	${CC} ${LUA_LDOPTS} -shared ${LUA_OBJS.${_M}} \
 	    -Wl,-soname,${LUA_NAME.${_M}} -o ${.TARGET} \
 	    ${LDADD} ${LDADD.${_M}} ${LDFLAGS} ${LDFLAGS.${_M}}
 

Index: src/share/mk/bsd.sys.mk
diff -u src/share/mk/bsd.sys.mk:1.270 src/share/mk/bsd.sys.mk:1.271
--- src/share/mk/bsd.sys.mk:1.270	Wed Mar 22 23:11:09 2017
+++ src/share/mk/bsd.sys.mk	Thu Apr 20 09:29:11 2017
@@ -1,4 +1,4 @@
-#	$NetBSD: bsd.sys.mk,v 1.270 2017/03/22 23:11:09 chs Exp $
+#	$NetBSD: bsd.sys.mk,v 1.271 2017/04/20 09:29:11 ozaki-r Exp $
 #
 # Build definitions used for NetBSD source tree builds.
 
@@ -308,6 +308,11 @@ OBJCOPYLIBFLAGS_EXTRA=-w -K '[$$][dx]' -
 # ARM big endian needs to preserve $a/$d/$t symbols for the linker.
 OBJCOPYLIBFLAGS_EXTRA=-w -K '[$$][adt]' -K '[$$][adt]\.*'
 .endif
+
+.if ${MKSTRIPSYM:Uyes} == "yes"
 OBJCOPYLIBFLAGS?=${"${.TARGET:M*.po}" != "":?-X:-x} ${OBJCOPYLIBFLAGS_EXTRA}
+.else
+OBJCOPYLIBFLAGS?=-X ${OBJCOPYLIBFLAGS_EXTRA}
+.endif
 
 .endif	# !defined(_BSD_SYS_MK_)

Reply via email to