Skip site navigation (1)Skip section navigation (2)
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>