Hi,

On Wed, 21 Jul 2021, LIU Hao wrote:

在 7/20/21 11:44 AM, Jonathan Marler 写道:
How's this?


Thanks for the update. I believe it's 100% safe, but let's have it in master for a while and see whether something breaks.

Actually it turns out that this does break building mingw-w64-crt (at least with Clang), with errors like these:

../libsrc/ws2tcpip/in6_addr_equal.c:9:5: error: redefinition of 'IN6_ADDR_EQUAL'
int IN6_ADDR_EQUAL(const struct in6_addr *a,const struct in6_addr *b)
    ^
/home/martin/fate/llvm-mingw/prefix/i686-w64-mingw32/include/ws2ipdef.h:244:21:
note: previous definition is here
WS2TCPIP_INLINE int IN6_ADDR_EQUAL(const struct in6_addr *a, const struct in6_ad
dr *b) {
                    ^
1 error generated.


So given that, I think we need to revert this for now and get back to the drawing board with this change.


Is the case that some of the functions listed as inline don't exist as non-inline versions in the library? In that case, the fix would be to make those individual ones available as non-inline too.


But the error case that was quoted before, IN6_IS_ADDR_UNSPECIFIED, is defined in mingw-w64-crt/libsrc/ws2tcpip/in6_is_addr_unspecified.c. So is the issue that that particular function doesn't actually end up included in the right library, even though it exists in source? Doesn't seem so - I do get the IN6_IS_ADDR_UNSPECIFIED symbol in libws2_32.a.


So, is the actual root issue that you're trying to fix, that you could get away with using IN6_IS_ADDR_UNSPECIFIED without linking -lws2_32 with GCC? So the function is made available in headers, but with attributes saying the compiler is entirely free to use a non-inline version if the compiler feels like it? And some project out there has implicitly started relying on this being inlined, without linking with the relevant library? In that case, the proper fix would be to actually link with the library.


// Martin

_______________________________________________
Mingw-w64-public mailing list
Mingw-w64-public@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/mingw-w64-public

Reply via email to