From owner-freebsd-current@FreeBSD.ORG Thu Mar 8 19:26:28 2012 Return-Path: Delivered-To: freebsd-current@freebsd.org Received: from mx1.freebsd.org (mx1.freebsd.org [IPv6:2001:4f8:fff6::34]) by hub.freebsd.org (Postfix) with ESMTP id B60D61065672; Thu, 8 Mar 2012 19:26:28 +0000 (UTC) (envelope-from jhb@freebsd.org) Received: from cyrus.watson.org (cyrus.watson.org [65.122.17.42]) by mx1.freebsd.org (Postfix) with ESMTP id 724188FC13; Thu, 8 Mar 2012 19:26:28 +0000 (UTC) Received: from bigwig.baldwin.cx (bigwig.baldwin.cx [96.47.65.170]) by cyrus.watson.org (Postfix) with ESMTPSA id 10C7D46B3C; Thu, 8 Mar 2012 14:26:28 -0500 (EST) Received: from jhbbsd.localnet (unknown [209.249.190.124]) by bigwig.baldwin.cx (Postfix) with ESMTPSA id 74CB4B940; Thu, 8 Mar 2012 14:26:27 -0500 (EST) From: John Baldwin To: freebsd-current@freebsd.org Date: Thu, 8 Mar 2012 10:46:19 -0500 User-Agent: KMail/1.13.5 (FreeBSD/8.2-CBSD-20110714-p10; KDE/4.5.5; amd64; ; ) References: <201203071919.01511.jkim@FreeBSD.org> In-Reply-To: <201203071919.01511.jkim@FreeBSD.org> MIME-Version: 1.0 Content-Type: Text/Plain; charset="iso-8859-15" Content-Transfer-Encoding: 7bit Message-Id: <201203081046.19330.jhb@freebsd.org> X-Greylist: Sender succeeded SMTP AUTH, not delayed by milter-greylist-4.2.7 (bigwig.baldwin.cx); Thu, 08 Mar 2012 14:26:27 -0500 (EST) Cc: Jia-Shiun Li , Jung-uk Kim Subject: Re: boot2 overflow when building with clang X-BeenThere: freebsd-current@freebsd.org X-Mailman-Version: 2.1.5 Precedence: list List-Id: Discussions about the use of FreeBSD-current List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 08 Mar 2012 19:26:28 -0000 On Wednesday, March 07, 2012 7:18:56 pm Jung-uk Kim wrote: > On Tuesday 06 March 2012 11:51 pm, Jia-Shiun Li wrote: > > 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. > > Here is a patch to work around the problem: > > http://people.freebsd.org/~jkim/boot2.diff > > Please note this patch creates two separate boot codes, one for UFS1 > and one for UFS2. To generate previous boot code (i.e., UFS1+UFS2) > with GCC, clean objects, add the following line to > your /etc/make.conf, rebuild, and install: > > BOOT2_UFS=UFS1_AND_UFS2 I would really rather not go this route. That is going to cause a lot of pain and suffering for users. -- John Baldwin