Re: RFC: -Wl,--as-needed by default (and glibc ldconfig file trigger)

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On 21 November 2017 at 10:43, Igor Gnatenko
<ignatenkobrain@xxxxxxxxxxxxxxxxx> wrote:
> -----BEGIN PGP SIGNED MESSAGE-----
> Hash: SHA256
>
> On Tue, 2017-11-21 at 10:26 +0000, Tomasz Kłoczko wrote:
>> So is it any final decision about start use by default --as-needed in
>> linker options?
>
> Can you link Change Proposal you (or someone else) submitted? I have not heard
> anything about that.

https://src.fedoraproject.org/rpms/redhat-rpm-config/pull-request/3

[..]
>> In my opinion number of affected packages will be very low (few).
>
> Counting numbers of affected packages by guessing is very bad idea.

Call it educated guess if you want.
More than decade ago when I've been leading maintenance of PLD
distribution applying --as-needed on the scale of ~3.6k source
packages.
During introduction of such change none of the packages has been left
behind and ~hundredth packages have been fixed by add
<package>-as-needed.patch files.
Most of those patches have been pushed to original source trees.
After what happened in PLD for example SuSE added to own binutils package patch

--- ld/ldmain.c.orig    2016-01-27 13:44:14.092983985 +0100
+++ ld/ldmain.c 2016-01-27 13:44:37.389254054 +0100
@@ -286,6 +286,8 @@ main (int argc, char **argv)
 #ifdef DEFAULT_FLAG_COMPRESS_DEBUG
   link_info.compress_debug = COMPRESS_DEBUG_GABI_ZLIB;
 #endif
+  if (getenv ("SUSE_ASNEEDED") && atoi(getenv ("SUSE_ASNEEDED")) > 0)
+    input_flags.add_DT_NEEDED_for_regular = TRUE;

   ldfile_add_arch ("");
   emulation = get_emulation (argc, argv);

which is kind of JFDI/dirty hack to add --as-needed as default linker behavior.
Other distributions like Arch Linux are using --as-needed as well as
default liner options.
As result many more packages have been fixed and those fixes mostly
have been in meantime as well integrated into source tree.

PLD, SuSE and Arch are not only iterations done on full scale distributions.
In the past I saw many --as-needed fixes in Debian patches and now it
is hard to find those patches.
SuSE has now ~12k source packages.
AltLinux (almost 18 src.rpm) IIRC is using --as-needed as well. I'm
not sure about Mageia (+20.5k src.rpm) .. I wouldn't be surprised if
Fedora is one of those few which are still not using --as-needed.

Do you really need more?

Many projects on switching from autoonf/automake/libtool to meson have
been test as meson adds --as-needed to linker options so all packages
build using meson are free of those issues.
More than decade ago *all* KDE packages added in own build frameworks
use --as-needed.
People around the world wasted probably thousands man/hours to
implement use --as-needed in many packages (for example net-snmp has

[tkloczko@domek net-snmp-5.7.3]$ ./configure --help | grep need
  --disable-as-needed             Link libperl against applications rather

This autoconf switch has been added only because net-snmp maintainer
did not understood nature of some perl related issues which should not
be fixed in net-snmp (btw necessary fix in perl in mean time has been
integrated). There is hundreds of packages which are already adding
--as-needed to the linker options in own build frameworks.

Probably more than year/man of developers time has been wasted because
binutils ld still is not producing by default DSOs linked with *only*
libraries which are needed.
To be hones still I do not understand why --as-needed is the option
because default ld behavior is causing produce non-optimally linked
binaries on MASSIVE SCALE.
This option should be IMO removed as current --as-needed behavior
should be hardcoded into ld!!!
One line change in redhat-rpm-config package will fix all those issues
at least on the scale of Fedora distribution.

I'm trying to support push such change in Fedora as for me it is way
easier to discuss importance of --as-needed than discussing it with
binutils maintainers who in many cases spend many years maintaining
only binutils code and by this organically do not understand why ld
should always produce correctly linked binaries.

So this is why I'm 100% sure that in +99.9% Fedora most frequently
used packages it will be no issues related to start use --as-needed.
If anything still could require add (trivial) fixes will be amongst
those less frequently used.

[..]
>> As f28 development cycle still is in the middle IMO it is right time
>> to apply at least one of those two changes (if not both).
>
> While personally I think both changes are good to make, there seem to be some
> concert from glibc developers so it would be better if you could discuss this
> in bugreport with glibc maintainers and FPC members.

Looks like you did not check what is in the comments of the ticket
which I've posted
(https://bugzilla.redhat.com/show_bug.cgi?id=1380878).
In comments of this ticket is not only whole discussion but as well
concrete propositions about how to implement glibc file trigger (with
my personal proposal about how to implement those triggers in simplest
possible form).

> Also I think we should not mix those 2 things.

Yes they are however looks like both changes are sharing the same
non-technical reason why they are still not introduced despite very
big positive impact which they care separately (probably bigger than
many other large changes in Fedora  introduced in recent years).
This is only reason why I've decided to glue those tow things together.

To be hones I'm not expecting any technical discussions about those
two changes as whatever was to discuss from technical point of view
already have been disused in more than last few years or decade in
case of --as-needed.
As all has been discussed and everything is ready I'm only expecting
answer from Fedora Packaging Committee on the question "when?" and
maybe some comments about "why not now yet?" (it maybe already
scheduled some other large scale change in Fedora and here is some
collision ..??).

As I wrote IMO looks like reasons why those two changes still have not
been integrated *are the same* and are not technical.
I can only guess most of the Fedora maintainers/developers are usually
working on scale of the single packages or few of them.
There is only few Fedora guys able to work on scale of whole groups of
the packages and even less on scale whole distribution.
Most of the Fedora developers are enough skilled and even less enough
experienced and confined to support such changes.
As result whole situation now is like in old joke about angels
visiting inferno to check why furnaces stopped heating it up ..

In other words looks like both changes are stuck in Fedora decision
making process mixed with shortage of man/hours people able to
introduce those changes.
As result we should be not discussing anything related to ld
--as-neded or glibc ldconfig file triggers per se but how focus few
decision making people that here we are dealing with some Fedora
maintenance problems.

kloczek
-- 
Tomasz Kłoczko | LinkedIn: http://lnkd.in/FXPWxH
_______________________________________________
devel mailing list -- devel@xxxxxxxxxxxxxxxxxxxxxxx
To unsubscribe send an email to devel-leave@xxxxxxxxxxxxxxxxxxxxxxx




[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Index of Archives]     [Fedora Announce]     [Fedora Kernel]     [Fedora Testing]     [Fedora Formulas]     [Fedora PHP Devel]     [Kernel Development]     [Fedora Legacy]     [Fedora Maintainers]     [Fedora Desktop]     [PAM]     [Red Hat Development]     [Gimp]     [Yosemite News]
  Powered by Linux