ping: [PATCH] Cygwin needs -no-undefined libtool flag.

Michael Haubenwallner michael.haubenwallner at ssi-schaefer.com
Thu Mar 23 08:51:45 CET 2017


Any further thoughts?
Thanks!
/haubi/

On 03/08/2017 01:02 PM, Michael Haubenwallner wrote:
> 
> On 03/07/2017 08:27 PM, Werner Koch wrote:
>> On Mon,  6 Mar 2017 18:04, michael.haubenwallner at ssi-schaefer.com said:
>>
>>> Cygwin is not a "real" Win32 system, but uses the Win32 binary format,
>>> so libtool needs the -no-undefined flag.
>>
>> This needs to be patched in libtool and not in libgpg-error et al.  it
>> might be that upstream libtool already has that.  However due to
>> problems we had with the upstream version we keep our version which has
>> a few patches we require.
> 
> Well, there's nothing libtool can do about here.  Instead, there's a
> (widespread) misinterpretation about the -no-undefined libtool flag.
> 
> Agreed this might be easier to understand when it were not a "no-"flag,
> but this is for historical reasons when there were static libraries only.
> 
> 
> Please let me try to explain:
> 
> Creating a static library does not need to know which libraries to link
> against, as no linking is done at all.  So libtool does not require
> library maintainers to specify enough libraries to resolve all symbols.
> 
> But with the introduction of shared libraries this requirement changed:
> While each operating system does "support" undefined symbols with static
> libraries, some operating systems also do support undefined symbols with
> shared libraries, but some don't.
> 
> On the other hand, each operating system supporting shared libraries
> obviously does support shared libraries without undefined symbols.
> 
> Without the -no-undefined flag, libtool assumes the library does have
> undefined symbols, and does not create the shared library when the
> operating system is known to lack support for undefined symbols in
> shared libraries.
> 
> With the -no-undefined flag, libtool knows that the library maintainer
> does provide necessary libraries to resolve all symbols, so libtool can
> create the shared library even on operating systems without support for
> undefined symbols in shared libraries.
> 
> 
> As far as I can see, libgpg-error does not rely on undefined symbols at all.
> 
> So -no-undefined really makes sense for any platform here, as proposed in
> https://lists.gnupg.org/pipermail/gnupg-devel/2016-November/032186.html
> 
> Beyond that: With linkers that support yelling on undefined symbols (like
> GNU ld with -zdefs flag), the -no-undefined flag allows to unhide obscure
> bugs related to undefined symbols at library linking time already.
> 
> However, because of the -zdefs (or similar) linker flag (where supported),
> I can understand not to add the -no-undefined flag in minor releases,
> to not unhide bugs that do not (seem to) harm when left hidden.
> 
> Uhm, lots of inversive logic here...
> 
> Thanks!
> /haubi/
> 


-- 
Michael Haubenwallner     Senior Software Engineer
SSI SCHÄFER                      IT Solutions GmbH
Friesachstraße 15  8114 Friesach bei Graz  Austria
Phone +43 3127 200-308         Fax +43 3127 200-22



More information about the Gnupg-devel mailing list