Index: sys/conf/mkldscript.sh =================================================================== RCS file: /cvsroot/src/sys/conf/mkldscript.sh,v retrieving revision 1.1 diff -u -u -r1.1 mkldscript.sh --- sys/conf/mkldscript.sh 4 Mar 2007 02:35:49 -0000 1.1 +++ sys/conf/mkldscript.sh 11 Nov 2014 23:30:55 -0000 @@ -1,15 +1,21 @@ #!/bin/sh # $NetBSD: mkldscript.sh,v 1.1 2007/03/04 02:35:49 tsutsui Exp $ -TEMPLATE=$1 +TEMPLATE="$1" shift -SETS=`$OBJDUMP -x $* | fgrep "RELOCATION RECORDS FOR [link_set" | \ - sort -u | sed 's/^.*\[\(.*\)\]:$/\1/'` +mksets() { + "${OBJDUMP:-objdump}" -x "$@" | fgrep "RELOCATION RECORDS FOR [link_set" | \ + sort -u | sed 's/^.*\[\(.*\)\]:$/\1/' +} +SETS=$(mksets "$@") + +grep -v '^}$' "$TEMPLATE" for s in $SETS; do - printf " . = ALIGN(4);\n" - printf " PROVIDE (__start_%s = .);\n" $s - printf " *(%s)\n" $s - printf " PROVIDE (__stop_%s = .);\n" $s -done + printf ' . = ALIGN(4);\n' + printf ' PROVIDE (__start_%s = .);\n' $s + printf ' %s : { *(%s) }\n' $s $s + printf ' PROVIDE (__stop_%s = .);\n' $s +done +printf '}\n' Index: share/mk/bsd.kmodule.mk =================================================================== RCS file: /cvsroot/src/share/mk/bsd.kmodule.mk,v retrieving revision 1.46 diff -u -u -r1.46 bsd.kmodule.mk --- share/mk/bsd.kmodule.mk 6 Nov 2014 12:05:44 -0000 1.46 +++ share/mk/bsd.kmodule.mk 11 Nov 2014 23:30:55 -0000 @@ -11,6 +11,7 @@ realinstall: kmodinstall KERN= $S/kern +MKLDSCRIPT?= no CFLAGS+= -ffreestanding ${COPTS} CPPFLAGS+= -nostdinc -I. -I${.CURDIR} -isystem $S -isystem $S/arch @@ -72,9 +73,14 @@ CLEANFILES+= ${_YKMSRCS} .if exists($S/../sys/modules/xldscripts/kmodule) -KMODSCRIPT= $S/../sys/modules/xldscripts/kmodule +KMODSCRIPTSRC= $S/../sys/modules/xldscripts/kmodule .else -KMODSCRIPT= ${DESTDIR}/usr/libdata/ldscripts/kmodule +KMODSCRIPTSRC= ${DESTDIR}/usr/libdata/ldscripts/kmodule +.endif +.if ${MKLDSCRIPT} == "yes" +KMODSCRIPT= kldscript +.else +KMODSCRIPT= ${KMODSCRIPTSRC} .endif PROG?= ${KMOD}.kmod @@ -102,6 +108,9 @@ ${PROG}: ${XOBJS} ${XSRCS} ${DPSRCS} ${DPADD} ${_MKTARGET_LINK} +.if ${MKLDSCRIPT} == "yes" + $S/conf/mkldscript.sh ${KMODSCRIPTSRC} ${XOBJS} > ${KMODSCRIPT} +.endif ${CC} ${LDFLAGS} -nostdlib -MD -combine -r -Wl,-T,${KMODSCRIPT},-d \ -Wl,-Map=${.TARGET}.map \ -o ${.TARGET} ${CFLAGS} ${CPPFLAGS} ${XOBJS} \ @@ -151,6 +160,9 @@ .else ${PROG}: ${OBJS} ${DPADD} ${_MKTARGET_LINK} +.if ${MKLDSCRIPT} == "yes" + $S/conf/mkldscript.sh ${KMODSCRIPTSRC} ${OBJS} > ${KMODSCRIPT} +.endif ${CC} ${LDFLAGS} -nostdlib -r -Wl,-T,${KMODSCRIPT},-d \ -Wl,-Map=${.TARGET}.map \ -o ${.TARGET} ${OBJS} @@ -200,6 +212,9 @@ ##### Clean rules CLEANFILES+= a.out [Ee]rrs mklog core *.core ${PROG} ${OBJS} ${LOBJS} CLEANFILES+= ${PROG}.map +.if ${MKLDSCRIPT} == "yes" +CLEANFILES+= kldscript +.endif ##### Custom rules lint: ${LOBJS}