Hmm, I am not sure that this will actually fix just llvm, but break everything else.
We provide the Interloced API as inline functions/builtins on gcc. So we don't want those symbols to be exported, as we want to use our own version instead. The reasoning is that such builtins might be optimizable. Just in case somebody wants to reference to them as 'function' pointer, we provide the imp.. variant. So could you please explain more detailed, what you intend to fix by this? Cheers, Kai 2017-11-13 16:51 GMT+01:00 Martin Storsjö <mar...@martin.st>: > This reverts commit bea244b471878eb6924463987eddb04cc581e306. > Unfortunately this would also reintroduce the issue that commit > fixed - but the commit doesn't elaborate on the details of those > issues. > > We need to provide the version of these functions without a __imp_ > prefix. Even though calling code normally will use the __imp_ prefixed > version (since it is declared with a dllimport attribute in the headers), > statically initialized data (e.g. a global pointer or table containing > pointers, initialized to point to InterlockedCompareExchange) will end > up referencing the unprefixed version. > > GNU ld can fix up that automatically during linking, but lld can't. > > This fixes linking sqlite3 (as part of Qt) with clang/lld for i686. > > Signed-off-by: Martin Storsjö <mar...@martin.st> > --- > mingw-w64-crt/lib32/kernel32.def | 12 ++++++------ > 1 file changed, 6 insertions(+), 6 deletions(-) > > diff --git a/mingw-w64-crt/lib32/kernel32.def > b/mingw-w64-crt/lib32/kernel32.def > index 5b75f89..ece261f 100644 > --- a/mingw-w64-crt/lib32/kernel32.def > +++ b/mingw-w64-crt/lib32/kernel32.def > @@ -763,13 +763,13 @@ InitializeCriticalSectionEx@12 > InitializeProcThreadAttributeList@16 > InitializeSListHead@4 > InitializeSRWLock@4 > -InterlockedCompareExchange64@20 DATA ; FIXME: this is for Vista+. forwards > to NTDLL.RtlInterlockedCompareExchange64@20 > -InterlockedCompareExchange@12 DATA > -InterlockedDecrement@4 DATA > -InterlockedExchange@8 DATA > -InterlockedExchangeAdd@8 DATA > +InterlockedCompareExchange64@20 ; FIXME: this is for Vista+. forwards to > NTDLL.RtlInterlockedCompareExchange64@20 > +InterlockedCompareExchange@12 > +InterlockedDecrement@4 > +InterlockedExchange@8 > +InterlockedExchangeAdd@8 > InterlockedFlushSList@4 > -InterlockedIncrement@4 DATA > +InterlockedIncrement@4 > InterlockedPopEntrySList@4 > InterlockedPushEntrySList@8 > InvalidateConsoleDIBits@8 > -- > 2.7.4 > > > ------------------------------------------------------------------------------ > Check out the vibrant tech community on one of the world's most > engaging tech sites, Slashdot.org! http://sdm.link/slashdot > _______________________________________________ > Mingw-w64-public mailing list > Mingw-w64-public@lists.sourceforge.net > https://lists.sourceforge.net/lists/listinfo/mingw-w64-public ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ Mingw-w64-public mailing list Mingw-w64-public@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/mingw-w64-public