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