boot2 overflow when building with clang

Jia-Shiun Li jiashiun at gmail.com
Wed Mar 7 04:52:30 UTC 2012


I am not familiar with boot2, but it looks like allocated size for
boot2 is not enough to hold code generated by clang. Reverting r232570
fixes it.

===> sys/boot/i386/boot2 (all)
objcopy -S -O binary boot1.out boot1
dd if=/dev/zero of=boot2.ldr bs=512 count=1
clang -Os  -fno-guess-branch-probability  -fomit-frame-pointer
-fno-unit-at-a-time  -mno-align-long-strings  -mrtd  -mregparm=3
-DUSE_XREAD  -DUFS1_AND_UFS2  -DFLAGS=0x80  -DSIOPRT=0x3f8
-DSIOFMT=0x3  -DSIOSPD=9600
-I/usr/src/sys/boot/i386/boot2/../../common
-I/usr/src/sys/boot/i386/boot2/../btx/lib -I.  -Wall
-Waggregate-return -Wbad-function-cast -Wcast-align
-Wmissing-declarations -Wmissing-prototypes -Wnested-externs
-Wpointer-arith -Wshadow -Wstrict-prototypes -Wwrite-strings  -Winline
--param max-inline-insns-single=100  -mllvm -stack-alignment=8 -mllvm
-inline-threshold=3  -mllvm -enable-load-pre=false -ffreestanding
-mpreferred-stack-boundary=2  -mno-mmx -mno-3dnow -mno-sse -mno-sse2
-mno-sse3 -msoft-float -std=gnu99    -S -o boot2.s.tmp
/usr/src/sys/boot/i386/boot2/boot2.c
sed -e '/align/d' -e '/nop/d' < boot2.s.tmp > boot2.s
rm -f boot2.s.tmp
clang  -c boot2.s
clang -Os  -fno-guess-branch-probability  -fomit-frame-pointer
-fno-unit-at-a-time  -mno-align-long-strings  -mrtd  -mregparm=3
-DUSE_XREAD  -DUFS1_AND_UFS2  -DFLAGS=0x80  -DSIOPRT=0x3f8
-DSIOFMT=0x3  -DSIOSPD=9600
-I/usr/src/sys/boot/i386/boot2/../../common
-I/usr/src/sys/boot/i386/boot2/../btx/lib -I.  -Wall
-Waggregate-return -Wbad-function-cast -Wcast-align
-Wmissing-declarations -Wmissing-prototypes -Wnested-externs
-Wpointer-arith -Wshadow -Wstrict-prototypes -Wwrite-strings  -Winline
--param max-inline-insns-single=100  -mllvm -stack-alignment=8 -mllvm
-inline-threshold=3  -mllvm -enable-load-pre=false -ffreestanding
-mpreferred-stack-boundary=2  -mno-mmx -mno-3dnow -mno-sse -mno-sse2
-mno-sse3 -msoft-float -std=gnu99     -c
/usr/src/sys/boot/i386/boot2/sio.S
ld -static -N --gc-sections -nostdlib -Ttext 0x2000 -o boot2.out
/usr/obj/usr/src/sys/boot/i386/boot2/../btx/lib/crt0.o boot2.o sio.o
objcopy -S -O binary boot2.out boot2.bin
btxld -v -E 0x2000 -f bin -b
/usr/obj/usr/src/sys/boot/i386/boot2/../btx/btx/btx -l boot2.ldr  -o
boot2.ld -P 1 boot2.bin
kernel: ver=1.02 size=690 load=9000 entry=9010 map=16M pgctl=1:1
client: fmt=bin size=15a1 text=0 data=0 bss=0 entry=0
output: fmt=bin size=1e31 text=200 data=1c31 org=0 entry=0
-49 bytes available
*** [boot2] Error code 1

Stop in /usr/src/sys/boot/i386/boot2.
*** [all] Error code 1

Stop in /usr/src/sys/boot/i386.
*** [all] Error code 1

Stop in /usr/src/sys/boot.
*** [all] Error code 1

Stop in /usr/src/sys.
*** [sys.all__D] Error code 1

Stop in /usr/src.
*** [everything] Error code 1

Stop in /usr/src.
*** [buildworld] Error code 1

Stop in /usr/src.


Jia-Shiun.


More information about the freebsd-current mailing list