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"