[Bug 213137] boot2 too large when using gcc-4.6 or later

bugzilla-noreply at freebsd.org bugzilla-noreply at freebsd.org
Sun Oct 2 00:04:02 UTC 2016


https://bugs.freebsd.org/bugzilla/show_bug.cgi?id=213137

--- Comment #3 from Yuta Satoh <nigoro.dev at gmail.com> ---
(In reply to Dimitry Andric from comment #2)
When using gcc-5.4.0, get a error is too large as well.
When you disable fasynchronous-unwind-tables, it fits in the correct size.

# gcc5 -v
<snip>
gcc version 5.4.0 (FreeBSD Ports Collection)

# gcc5 -Os -Q --help=optimize | grep unwind-tables
  -fasynchronous-unwind-tables          [enabled]
  -funwind-tables                       [disabled]

# cd /usr/src/sys/boot
# CC=gcc5 make

Part of error log)
gcc5 -fomit-frame-pointer  -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 -march=i386 -ffreestanding -mno-mmx -mno-sse  -msoft-float -m32 -g 
-std=gnu99  -Wno-error=unused-function -Wno-error=enum-compare
-Wno-error=logical-not-parentheses -Wno-error=bool-compare
-Wno-error=uninitialized -Wno-error=array-bounds -Wno-error=clobbered
-Wno-error=cast-align -Wno-error=extra -Wno-error=attributes -Wno-error=inline
-Wno-error=unused-but-set-variable -Wno-error=unused-value
-Wno-error=strict-aliasing -Wno-error=address   -Os 
-fno-guess-branch-probability  -fno-unit-at-a-time  --param
max-inline-insns-single=100 -mpreferred-stack-boundary=2   -m32  -c sio.S -o
sio.o
ld -static -N --gc-sections -m elf_i386_fbsd -Ttext 0x2000 -o boot2.out
/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/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=174d text=0 data=0 bss=0 entry=0
output: fmt=bin size=1fdd text=200 data=1ddd org=0 entry=0
-477 bytes available



Part of log to add -fno-asynchronous-unwind-tables)
gcc5 -fomit-frame-pointer  -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 -march=i386 -ffreestanding -mno-mmx -mno-sse  -msoft-float -m32 -g 
-std=gnu99  -Wno-error=unused-function -Wno-error=enum-compare
-Wno-error=logical-not-parentheses -Wno-error=bool-compare
-Wno-error=uninitialized -Wno-error=array-bounds -Wno-error=clobbered
-Wno-error=cast-align -Wno-error=extra -Wno-error=attributes -Wno-error=inline
-Wno-error=unused-but-set-variable -Wno-error=unused-value
-Wno-error=strict-aliasing -Wno-error=address   -Os 
-fno-guess-branch-probability  -fno-unit-at-a-time  --param
max-inline-insns-single=100 -fno-asynchronous-unwind-tables
-mpreferred-stack-boundary=2   -m32  -c sio.S -o sio.o
ld -static -N --gc-sections -m elf_i386_fbsd -Ttext 0x2000 -o boot2.out
/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/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=13ff text=0 data=0 bss=0 entry=0
output: fmt=bin size=1c8f text=200 data=1a8f org=0 entry=0
369 bytes available
dd if=boot2.ld of=boot2 obs=7680 conv=osync status=none
cat boot1 boot2 > boot

-- 
You are receiving this mail because:
You are the assignee for the bug.


More information about the freebsd-bugs mailing list