diff options
author | avg <avg@FreeBSD.org> | 2011-09-13 14:03:55 +0000 |
---|---|---|
committer | avg <avg@FreeBSD.org> | 2011-09-13 14:03:55 +0000 |
commit | 85867a4f6ca6828664f36d7198c5cc29ccff0453 (patch) | |
tree | 3049aaa9eaa07eb1cfd64fc465229fce5b1be773 /sys/boot | |
parent | dab0468c873fe125b8dae06cd584e4933cfd69d1 (diff) | |
download | FreeBSD-src-85867a4f6ca6828664f36d7198c5cc29ccff0453.zip FreeBSD-src-85867a4f6ca6828664f36d7198c5cc29ccff0453.tar.gz |
gpt/zfs boot blocks: reduce optimizing CFLAGS to -O1
gpt and zfs boot blocks are not nearly as size-constrained as boot2
from which they inherited their current optimization and anti-optimization
options. As such the current options do not provide any benefit, but
make debugging of the code much harder.
Also, it has been demonstrated that combination of -mrtd and
-fno-unit-at-a-time may result in mis-compilation of the boot code
with the current base gcc.
Additionally, intermediate assembly file filtering is removed for
zfsboot.
The new boot blocks are all compile- and boot- tested using qemu.
gptzfsboot is tested with real hardware.
Reported by: Peter Jeremy <peterjeremy@acm.org> [miscompilation]
Discussed with: bde, jhb
Tested by: Sebastian Chmielewski <chmielsster@gmail.com> [gptzfsboot]
Approved by: re (kib)
MFC after: 3 weeks
Diffstat (limited to 'sys/boot')
-rw-r--r-- | sys/boot/i386/gptboot/Makefile | 7 | ||||
-rw-r--r-- | sys/boot/i386/gptzfsboot/Makefile | 7 | ||||
-rw-r--r-- | sys/boot/i386/zfsboot/Makefile | 19 |
3 files changed, 4 insertions, 29 deletions
diff --git a/sys/boot/i386/gptboot/Makefile b/sys/boot/i386/gptboot/Makefile index 5642220..48a6d59 100644 --- a/sys/boot/i386/gptboot/Makefile +++ b/sys/boot/i386/gptboot/Makefile @@ -20,12 +20,7 @@ GPTBOOT_UFS?= UFS1_AND_UFS2 #GPTBOOT_UFS?= UFS1_ONLY CFLAGS= -DBOOTPROG=\"gptboot\" \ - -Os \ - -fno-guess-branch-probability \ - -fomit-frame-pointer \ - -fno-unit-at-a-time \ - -mno-align-long-strings \ - -mrtd \ + -O1 \ -DGPT \ -D${GPTBOOT_UFS} \ -DSIOPRT=${BOOT_COMCONSOLE_PORT} \ diff --git a/sys/boot/i386/gptzfsboot/Makefile b/sys/boot/i386/gptzfsboot/Makefile index f0ee578..2067162 100644 --- a/sys/boot/i386/gptzfsboot/Makefile +++ b/sys/boot/i386/gptzfsboot/Makefile @@ -17,12 +17,7 @@ ORG1= 0x7c00 ORG2= 0x0 CFLAGS= -DBOOTPROG=\"gptzfsboot\" \ - -Os \ - -fno-guess-branch-probability \ - -fomit-frame-pointer \ - -fno-unit-at-a-time \ - -mno-align-long-strings \ - -mrtd \ + -O1 \ -DGPT -DBOOT2 \ -DSIOPRT=${BOOT_COMCONSOLE_PORT} \ -DSIOFMT=${B2SIOFMT} \ diff --git a/sys/boot/i386/zfsboot/Makefile b/sys/boot/i386/zfsboot/Makefile index 8caff27..024fa25 100644 --- a/sys/boot/i386/zfsboot/Makefile +++ b/sys/boot/i386/zfsboot/Makefile @@ -15,12 +15,7 @@ ORG1= 0x7c00 ORG2= 0x2000 CFLAGS= -DBOOTPROG=\"zfsboot\" \ - -Os \ - -fno-guess-branch-probability \ - -fomit-frame-pointer \ - -fno-unit-at-a-time \ - -mno-align-long-strings \ - -mrtd \ + -O1 \ -DBOOT2 \ -DSIOPRT=${BOOT_COMCONSOLE_PORT} \ -DSIOFMT=${B2SIOFMT} \ @@ -85,20 +80,10 @@ zfsboot.bin: zfsboot.out zfsboot.out: ${BTXCRT} zfsboot.o sio.o drv.o cons.o util.o ${LD} ${LDFLAGS} -Ttext ${ORG2} -o ${.TARGET} ${.ALLSRC} ${LIBSTAND} -zfsboot.o: zfsboot.s -.if ${CC:T:Mclang} == "clang" - ${CC} ${ACFLAGS} -c zfsboot.s -.endif - SRCS= zfsboot.c -zfsboot.s: zfsboot.c ${.CURDIR}/../../zfs/zfsimpl.c - ${CC} ${CFLAGS} -S -o zfsboot.s.tmp ${.CURDIR}/zfsboot.c - sed -e '/align/d' -e '/nop/d' < zfsboot.s.tmp > zfsboot.s - rm -f zfsboot.s.tmp - .if ${MACHINE_CPUARCH} == "amd64" -beforedepend zfsboot.s: machine +beforedepend zfsboot.o: machine CLEANFILES+= machine machine: ln -sf ${.CURDIR}/../../../i386/include machine |