Module Name:    src
Committed By:   pooka
Date:           Sun Jan 31 00:38:36 UTC 2010

Modified Files:
        src/sys/rump: Makefile.rump

Log Message:
Make (no pun intended) it possible to perform component symbol
protection from a shell prompt with the command line:

    make -f /sys/rump/Makefile RUMP_SYMREN=module.kobj

This is benefitial especially on i386, where rump ABI matches the
kernel ABI (sans the renaming isolation).  In the above example
module.kobj can then be loaded in a rump kernel either statically
at link-time simply by giving module.kobj as an object to the
linker, or dynamically at runtime by calling rump_sys_modctl(MODCTL_LOAD).


To generate a diff of this commit:
cvs rdiff -u -r1.45 -r1.46 src/sys/rump/Makefile.rump

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

Modified files:

Index: src/sys/rump/Makefile.rump
diff -u src/sys/rump/Makefile.rump:1.45 src/sys/rump/Makefile.rump:1.46
--- src/sys/rump/Makefile.rump:1.45	Sat Dec 12 17:10:19 2009
+++ src/sys/rump/Makefile.rump	Sun Jan 31 00:38:36 2010
@@ -1,4 +1,4 @@
-#	$NetBSD: Makefile.rump,v 1.45 2009/12/12 17:10:19 pooka Exp $
+#	$NetBSD: Makefile.rump,v 1.46 2010/01/31 00:38:36 pooka Exp $
 #
 
 WARNS?=		3	# XXX: src/sys won't compile with -Wsign-compare yet
@@ -60,23 +60,46 @@
 # toolchain to toolchain.  The good news, however, is that this will
 # be detected by a compile-time failure, so we can fairly easily manage
 # a quirktable here.
+#
+# We also allow calling ourselves externally with e.g.:
+# make -f /sys/rump/Makefile.rump RUMP_SYMREN=ffs.kobj
+#
 .if ${MACHINE_CPU} == "mips"
 _SYMQUIRK='|_gp_disp'
 .elif ${MACHINE_CPU} == "hppa"
 _SYMQUIRK='|\$$\$$'
 .endif
+
+rump_symren: __archivebuild
+.if !defined(RUMP_SYMREN)
+	@echo "Must supply RUMP_SYMREN for target rump_symren"
+	@false
+.endif
+
+# if we are called from lib build (RUMP_SYMREN is not specified),
+# build the arrrrchive.  otherwise just rename symbols.
 __archivebuild: .USE
+.if defined(RUMP_SYMREN) && defined(RUMPTOP)
+	@echo "ERROR: RUMP_SYMREN can only be used standalone"
+	@false
+.endif
+.if defined(RUMP_SYMREN)
+	${_MKMSG} " symbol rename " ${RUMP_SYMREN}
+.else
 	${_MKTARGET_BUILD}
 	rm -f ${.TARGET}
 	${AR} ${_ARFL} ${.TARGET} `NM=${NM} ${LORDER} ${.ALLSRC:M*o} | ${TSORT}`
-	${NM} -go ${.TARGET} | ${TOOL_AWK} '	\
+.endif
+	${NM} -go ${RUMP_SYMREN:U${.TARGET}} | ${TOOL_AWK} '	\
 	    $$NF!~/^(rump|RUMP|__|_GLOBAL_OFFSET_TABLE'${_SYMQUIRK}')/ \
 	      {printf "%s rumpns_%s\n", $$NF, $$NF}' \
 	    | sort | uniq  > renametab.${.TARGET}
 	${OBJCOPY} --preserve-dates --redefine-syms \
-	    renametab.${.TARGET} ${.TARGET}
+	    renametab.${.TARGET} ${RUMP_SYMREN:U${.TARGET}}
 	rm -f renametab.${.TARGET}
+.if !defined(RUMP_SYMREN)
 	${AR} ${_ARRANFL} ${.TARGET}
-
+.endif
+	
 .-include "${NETBSDSRCDIR}/sys/arch/${MACHINE_CPU}/include/Makefile.inc"
 .-include "${NETBSDSRCDIR}/sys/arch/${MACHINE}/include/Makefile.inc"

Reply via email to