adding COPTS to shrink kernel binary size

Izumi Tsutsui <[email protected]>
Newsgroups gmane.os.netbsd.ports.vax,gmane.os.netbsd.devel.toolchain
Message-ID <[email protected]>
Hi,

Currently vax GENERIC kernel is built with the default COPTS="-O2".
On the other hand, several m68k (and other) ports have
"-fno-unwind-tables" and "-fno-reorder-blocks" to shrink binary size.

I've tried these options and "-freorder-blocks-algorithm=simple"
that has been added since gcc 6 or 7 that gcc man page says:

>>   -freorder-blocks-algorithm=algorithm
>>       Use the specified algorithm for basic block reordering.  The
>>       algorithm argument can be simple, which does not increase code size
>>       (except sometimes due to secondary effects like alignment), or stc,
>>       the "software trace cache" algorithm, which tries to put all often
>>       executed code together, minimizing the number of branches executed
>>       by making extra copies of code.

It looks significantly reduce -current GENERIC kernel size:

---
default (COPTS="-O2")
>    text    data     bss     dec     hex filename
> 3482718  101432  185756 3769906  398632 netbsd

makeoptions COPTS="-O2 -fno-unwind-tables"
>    text    data     bss     dec     hex filename
> 3067628  101432  185756 3354816  3330c0 netbsd

makeoptions COPTS="-O2 -freorder-blocks-algorithm=simple"
>    text    data     bss     dec     hex filename
> 3173462  101432  185756 3460650  34ce2a netbsd

makeoptions COPTS="-O2 -fno-unwind-tables -freorder-blocks-algorithm=simple"
>    text    data     bss     dec     hex filename
> 2758370  101432  185756 3045558  2e78b6 netbsd

makeoptions COPTS="-O2 -fno-unwind-tables -fno-reorder-blocks"
>    text    data     bss     dec     hex filename
> 2742510  101432  185756 3029698  2e3ac2 netbsd
---

I think it's reasonable to add -fno-unwind-tables and
-freorder-blocks-algorithm=simple for vax, but
I wonder if how many VAXen users has memory size issue.

I also wonder if we should add at least '-fno-unwind-tables"
to MI src/sys/conf/Makefile.kern.inc because no C++ exceptions
in kernel ops..

Thanks,
---
Izumi Tsutsui
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.