summaryrefslogtreecommitdiffstats
path: root/sys/boot
diff options
context:
space:
mode:
authoravg <avg@FreeBSD.org>2011-09-13 14:03:55 +0000
committeravg <avg@FreeBSD.org>2011-09-13 14:03:55 +0000
commit85867a4f6ca6828664f36d7198c5cc29ccff0453 (patch)
tree3049aaa9eaa07eb1cfd64fc465229fce5b1be773 /sys/boot
parentdab0468c873fe125b8dae06cd584e4933cfd69d1 (diff)
downloadFreeBSD-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/Makefile7
-rw-r--r--sys/boot/i386/gptzfsboot/Makefile7
-rw-r--r--sys/boot/i386/zfsboot/Makefile19
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
OpenPOWER on IntegriCloud