-ffunction-sections, -fdata-sections and -Wl,--gc-sections

Tim Kientzle kientzle at freebsd.org
Mon Sep 16 02:30:10 UTC 2013


On Sep 15, 2013, at 2:24 PM, Ed Schouten <ed at 80386.nl> wrote:
> GCC and Clang support the -ffunction-sections and -fdata-sections
> flags. Essentially, these flags force the compiler to put every
> function and variable in its own section. Though this will blow up the
….
> - devd suddenly becomes 500 KB in size, instead of a megabyte,
> - init's size drops from 900 KB to 600 KB,

Can you figure out what functions are getting omitted
when you make this change?

Can you extract a linkage map from a build done this
way and compare it to one done the regular way?

That big of a difference suggests we have some badly-factored
code in our libraries.  That is, some library is putting functions
into a single source file that shouldn't be combined.

Tim



More information about the freebsd-current mailing list