Change to DSO-linking semantics of the compiler

Kevin Kofler kevin.kofler at chello.at
Wed Jan 13 00:52:50 UTC 2010


On Wednesday 13 January 2010, Adam Williamson wrote:
> On Tue, 2010-01-12 at 01:59 +0100, Milos Jakubicek wrote:
> > Also I have really doubts what concerns upstreamability of the necessary
> > changes in packages. Especially if other distributions will (???)
> > continue shipping ld with the traditional semantics, this means hours of
> > headache discussions with upstream not willing to accept the patch.
> 
> I may be misunderstanding, but I believe this is the same thing Mandriva
> refers to as underlinking:
> 
> http://wiki.mandriva.com/en/Underlinking

No, it's not the same thing: Consider an executable a, a library libb.so and a 
library libc.so, and a is linked against -lb:
* underlinking is if libb.so uses symbols from libc.so, but does not link 
against -lc. Then you have to link a explicitly against -lb -lc even if it 
only uses symbols from libb.so. This is a bug in libb.so.
* what is being discussed here is if libb.so DOES link libc.so, but now 
executable a uses symbols from libc.so without also using -lc. If libb shipped 
a libb.la file which did -lb -lc (which .la files tend to do), then a will link 
file everywhere else, just not on Fedora because we delete .la files. The old 
semantics made this case work without the .la file, the new semantics lead to 
programs failing to link in Fedora, making Fedora incompatible with upstream 
(unless we start to ship .la files again).

        Kevin Kofler



More information about the devel mailing list