bug-libtool
[Top][All Lists]
Advanced

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

bug#27866: Handle clang's internal libraries when finding compiler's int


From: Martin Storsjö
Subject: bug#27866: Handle clang's internal libraries when finding compiler's internal libraries
Date: Fri, 16 Aug 2019 00:06:56 +0300 (EEST)
User-agent: Alpine 2.20 (DEB 67 2015-01-07)

On Thu, 15 Aug 2019, Bob Friesenhahn wrote:

On Thu, 15 Aug 2019, Martin Storsjö wrote:

But on Windows, the DLLs aren't allowed to have undefined references, so that mechanism of deferring linking of certain libraries don't work there. (And shouldn't this mechanism be sidestepped altogether if linking with -no-undefined in general?)

Libraries provided by the compiler should have a special status since they are built in a well-defined way and it should be possible to make assumptions about their suitability for use. The failure to ascribe this special status appears to be the problem here.

Hmm, ok... Is there code in libtool that actually tries to make this distinction, that should be adjusted so that it triggers here as well, or is that just a general thing that would be sensible to have?

Additionally, I don't know of any special options that need to be used to build code for a shared library on Windows (either MSVC or mingw), as e.g. -fPIC doesn't apply on windows at all. So given that, it seems to me that lt_cv_deplibs_check_method=pass_all on windows/mingw should be safe?

Actually, Windows DLL code does often require special options so that symbols are exposed and used in the correct way. It may be that GCC and Clang help by automating symbol export and import in a way that compilers like Visual Studio / MSVC do not.

Right, yes, the use or lack of dllimport is an issue, yes. But that doesn't mean one can't/shouldn't link to static libraries when building a shared one either, it only implies that one has to link against one that matches the attributes used when compiling the calling code.

And yes, GCC/Clang and ld.bfd and lld have special code that make most of this issue go away (making dllimport essentially unnecessary).

There are also often issues with exception handling since throwing exceptions across a DLL boundary is a special case, which historically has been handled in a couple of different ways by GCC.

Yeah, that's also a big potential issue.

But as far as I know, libtool doesn't actually check for either of these issues at the momemnt anyway, or does it? I.e. does the dependency check actually help detecting any of these issues specifically, or just refuse to link in static libraries in general (in certain cases) when building a shared one?

// Martin

reply via email to

[Prev in Thread] Current Thread [Next in Thread]