Date: Wed, 18 Sep 2013 18:32:51 +1000 From: Jan Mikkelsen <janm-freebsd-current@transactionware.com> To: FreeBSD Current <freebsd-current@freebsd.org> Subject: Re: -ffunction-sections, -fdata-sections and -Wl,--gc-sections Message-ID: <802FC0A4-D9CE-4B0F-B7BD-9E005266E52D@transactionware.com> In-Reply-To: <20130918062241.GW41229@kib.kiev.ua> References: <CAJOYFBBGY0GosPwG1B=1MKyapChEtX-O97r2zhXpGS8o7WO3gA@mail.gmail.com> <CAMBSHm_Qk13P=j1VOzuibYaeHFVF%2BCuXbTYL=q8ToDP6wL5X5w@mail.gmail.com> <CAJOYFBBUT5v1E6L0JkdrAXFmJmR0W2tmyNrC71k8mahLiF5vWg@mail.gmail.com> <20130918062241.GW41229@kib.kiev.ua>
next in thread | previous in thread | raw e-mail | index | archive | help
(Copy for the list, wrong "from" address problem ...) On 18/09/2013, at 4:22 PM, Konstantin Belousov <kostikbel@gmail.com> = wrote: > On Tue, Sep 17, 2013 at 11:45:19PM +0200, Ed Schouten wrote: >> [...] >> Honestly, I think we can assume we'll never reach the point where all >> the components listed above will properly have all functions >> partitioned over separate compilation units. >>=20 >> I suspect that it would make a lot of sense to at least enable these >> build flags for our core libraries (libc, libc++, libpthread, >> libcompiler_rt, libcxxrt, etc). We could also enable it on >> INTERNALLIBs (libraries that are not installed into /usr/lib), as for >> these libraries, it would of course not come at any cost. >>=20 >> Would that sound okay? >=20 > I think this is a wrong direction. First, the split should be done at > the source level, as it was usually done forever. One of the offender > there was you, AFAIR. >=20 > Second, I would rather see init and devd, and in fact all other = statically > linked binaries from our base system, to become dynamically linked. = At > least I added a knob for building toolchain dynamic, but avoided the > fight of making this default. Why do things by hand when there are good tools? Note "... as it was = usually done forever" doesn't contain a good argument, and compilers and = linkers on other platforms have been doing it like this for an awfully = long time. Adding the flags has a benefit in the case where there are many = functions in a source file and minimal cost when everything is perfect. = Not having the flags means paying a bigger price when things are not = perfect. And things are very rarely perfect. Having the structure of your source code driven by link-time = considerations when there is a choice seems silly to me. Larger source = files gives the compiler more scope for optimisation, and you can = structure the code in a way useful to people working in the codebase. If you have a moral argument about how code should be structured, I = think that is separate discussion. Adding the flags has a benefit, = regardless of how the code is structured. I can see all upside, and I am = having trouble seeing a problem with adding them at all. On the static linking vs. dynamic linking argument: I am strongly on the = static linking side. But that is also a different discussion. Regards, Jan Mikkelsen
Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?802FC0A4-D9CE-4B0F-B7BD-9E005266E52D>