svn commit: r232570 - head/sys/boot/i386/boot2
Jung-uk Kim
jkim at FreeBSD.org
Thu Mar 8 00:03:42 UTC 2012
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
-------------- next part --------------
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
More information about the svn-src-all
mailing list