Date: Wed, 7 Mar 2012 19:03:23 -0500 From: Jung-uk Kim <jkim@FreeBSD.org> To: "src-committers@freebsd.org" <src-committers@freebsd.org> Cc: "svn-src-head@freebsd.org" <svn-src-head@freebsd.org>, "svn-src-all@freebsd.org" <svn-src-all@freebsd.org>, John Baldwin <jhb@freebsd.org> Subject: Re: svn commit: r232570 - head/sys/boot/i386/boot2 Message-ID: <201203071903.36731.jkim@FreeBSD.org> In-Reply-To: <201203071700.21259.jkim@FreeBSD.org> References: <201203051953.q25JrIS1002269@svn.freebsd.org> <201203071700.21259.jkim@FreeBSD.org>
next in thread | previous in thread | raw e-mail | index | archive | help
--Boundary-00=_Yd/VPakYDBLxXp2 Content-Type: text/plain; charset="iso-8859-1" Content-Transfer-Encoding: 7bit Content-Disposition: inline On Wednesday 07 March 2012 05:00 pm, Jung-uk Kim wrote: > On Monday 05 March 2012 02:53 pm, John Baldwin wrote: > > Author: jhb > > Date: Mon Mar 5 19:53:17 2012 > > New Revision: 232570 > > URL: http://svn.freebsd.org/changeset/base/232570 > > > > Log: > > Fix boot2 to handle boot config files that only contain a > > custom path to a loader or kernel. Specifically, kname cannot be > > pointed at cmd[] since it's value is change to be an empty string > > after the initial call to parse, and cmd[]'s value can be changed > > (thus losing a prior setting for kname) due to user input at the > > boot prompt. While here, ensure that that initial boot config > > file text is nul-terminated, that ops is initialized to zero, and > > that kname is always initialized to a valid string. > > As many people pointed out, Clang overflows boot2 again after this > commit. Long long time ago, I asked this question on arch@: > > http://docs.freebsd.org/cgi/mid.cgi?200509081418.47794.jkim > > Why can't we do that now? Can't we build separate ufs1-only and > ufs2-only boot2's, at least? Having ufs1+ufs2 boot block is great > but I see very little benefit to support that in 2012. :-/ FYI, this patch does the separation. Also available from here: http://people.freebsd.org/~jkim/boot2.diff Jung-uk Kim --Boundary-00=_Yd/VPakYDBLxXp2 Content-Type: text/plain; charset="iso-8859-1"; name="boot2.diff" Content-Transfer-Encoding: 7bit Content-Disposition: attachment; filename="boot2.diff" Index: sys/boot/i386/Makefile =================================================================== --- sys/boot/i386/Makefile (revision 232670) +++ sys/boot/i386/Makefile (working copy) @@ -2,8 +2,8 @@ .include <bsd.own.mk> -SUBDIR= mbr pmbr boot0 boot0sio btx boot2 cdboot gptboot kgzldr \ - libi386 libfirewire loader +SUBDIR= mbr pmbr boot0 boot0sio btx boot2 boot2ufs1 cdboot gptboot \ + kgzldr libi386 libfirewire loader # special boot programs, 'self-extracting boot2+loader' SUBDIR+= pxeldr Index: sys/boot/i386/boot2/Makefile =================================================================== --- sys/boot/i386/boot2/Makefile (revision 232670) +++ sys/boot/i386/boot2/Makefile (working copy) @@ -2,8 +2,10 @@ .include <bsd.own.mk> -FILES= boot boot1 boot2 +FILES= boot${BOOT_SUFFIX} boot2${BOOT2_SUFFIX} +SRCDIR= ${.CURDIR}/../boot2 + NM?= nm # A value of 0x80 enables LBA support. @@ -18,10 +20,22 @@ ORG1= 0x7c00 ORG2= 0x2000 # Decide level of UFS support. -BOOT2_UFS?= UFS1_AND_UFS2 -#BOOT2_UFS?= UFS2_ONLY -#BOOT2_UFS?= UFS1_ONLY +BOOT2_UFS?= UFS2_ONLY +#BOOT2_UFS?= UFS1_AND_UFS2 +.if ${BOOT2_UFS} != UFS1_ONLY +FILES+= boot1 +.endif +.if ${BOOT2_UFS} == UFS1_ONLY +BOOT_SUFFIX= .ufs1 +BOOT2_SUFFIX= ufs1 +.elif ${BOOT2_UFS} == UFS2_ONLY +BOOT_SUFFIX= .ufs2 +BOOT2_SUFFIX= ufs2 +LINKS= ${BINDIR}/boot${BOOT_SUFFIX} ${BINDIR}/boot \ + ${BINDIR}/boot2${BOOT2_SUFFIX} ${BINDIR}/boot2 +.endif + CFLAGS= -Os \ -fno-guess-branch-probability \ -fomit-frame-pointer \ @@ -50,8 +64,8 @@ LDFLAGS=-static -N --gc-sections CLEANFILES= boot -boot: boot1 boot2 - cat boot1 boot2 > boot +boot${BOOT_SUFFIX}: boot1 boot2${BOOT2_SUFFIX} + cat ${.ALLSRC} > ${.TARGET} CLEANFILES+= boot1 boot1.out boot1.o @@ -64,7 +78,7 @@ boot1.out: boot1.o CLEANFILES+= boot2 boot2.ld boot2.ldr boot2.bin boot2.out boot2.o \ boot2.s boot2.s.tmp boot2.h sio.o -boot2: boot2.ld +boot2${BOOT2_SUFFIX}: boot2.ld @set -- `ls -l boot2.ld`; x=$$((7680-$$5)); \ echo "$$x bytes available"; test $$x -ge 0 dd if=boot2.ld of=${.TARGET} obs=7680 conv=osync @@ -88,7 +102,7 @@ boot2.o: boot2.s SRCS= boot2.c boot2.h boot2.s: boot2.c boot2.h ${.CURDIR}/../../common/ufsread.c - ${CC} ${CFLAGS} -S -o boot2.s.tmp ${.CURDIR}/boot2.c + ${CC} ${CFLAGS} -S -o boot2.s.tmp ${SRCDIR}/boot2.c sed -e '/align/d' -e '/nop/d' < boot2.s.tmp > boot2.s rm -f boot2.s.tmp Index: sys/boot/i386/boot2ufs1/Makefile =================================================================== --- sys/boot/i386/boot2ufs1/Makefile (revision 0) +++ sys/boot/i386/boot2ufs1/Makefile (working copy) @@ -0,0 +1,7 @@ +# $FreeBSD$ + +.PATH: ${.CURDIR}/../boot2 + +BOOT2_UFS= UFS1_ONLY + +.include "${.CURDIR}/../boot2/Makefile" Property changes on: sys/boot/i386/boot2ufs1/Makefile ___________________________________________________________________ Added: svn:mime-type ## -0,0 +1 ## +text/plain \ No newline at end of property Added: svn:keywords ## -0,0 +1 ## +FreeBSD=%H \ No newline at end of property Added: svn:eol-style ## -0,0 +1 ## +native \ No newline at end of property --Boundary-00=_Yd/VPakYDBLxXp2--
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?201203071903.36731.jkim>