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

Michael Haubenwallner michael.haubenwallner at
Thu Mar 23 08:51:45 CET 2017

Any further thoughts?

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 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
> 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