bug-gnulib
[Top][All Lists]
Advanced

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

Re: MinGW gai_strerror conflict


From: Simon Josefsson
Subject: Re: MinGW gai_strerror conflict
Date: Wed, 17 Jan 2007 14:50:05 +0100
User-agent: Gnus/5.110006 (No Gnus v0.6) Emacs/22.0.92 (gnu/linux)

Yoann Vandoorselaere <address@hidden> writes:

> Le mercredi 17 janvier 2007 à 13:57 +0100, Simon Josefsson a écrit :
>> Yoann Vandoorselaere <address@hidden> writes:
>> 
>> > Hi,
>> >
>> > This occur when trying to compile the getaddrinfo() module under MinGW:
>> >
>> > checking for library containing getaddrinfo... no
>> > checking for getaddrinfo... no
>> > checking for getaddrinfo in ws2tcpip.h and -lws2_32... yes
>> > checking for gai_strerror... no
>> > [...]
>> > checking whether gai_strerror is declared... yes
>> >
>> >
>> > gcc -std=gnu99 -DHAVE_CONFIG_H -I. -I. -I.. -g -O2 -Wall
>> > -Wstrict-prototypes -Wmissing-prototypes -Wmissing-declarations
>> > -Wbad-function-cast -Wcast-qual -Wcast-align -Wnested-externs -Wunused
>> > -MT gai_strerror.lo -MD -MP -MF .deps/gai_strerror.Tpo -c gai_strerror.c
>> > -DDLL_EXPORT -DPIC -o .libs/gai_strerror.o
>> > gai_strerror.c:68: conflicting types for `gai_strerrorA'
>> > c:/MinGW/include/ws2tcpip.h:301: previous declaration of `gai_strerrorA'
>> 
>> I don't get the same, I get:
>> 
>> http://autobuild.josefsson.org/gnulib-mingw32/log-200701171211588110000.txt
>> 
>> (Disregard the first ./configure output, it uses native cc.)
>
> Different MinGW version? The user reporting the problem is using
> MinGW-3.0.0.

Ouch...

>> > The definition in ws2tcpip.h look like:
>> >
>> > char* WSAAPI gai_strerrorA(int);
>> > WCHAR* WSAAPI gai_strerrorW(int);
>> > #ifdef UNICODE
>> > #define gai_strerror   gai_strerrorW
>> > #else
>> > #define gai_strerror   gai_strerrorA
>> > #endif  /* UNICODE */
>> >
>> >
>> > As a result, shouldn't we always declare gai_strerror() in case the
>> > function is missing but the declaration is available?
>> 
>> I'm not sure how to handle this.  Declaring the function doesn't seem
>> like a solution, since it will still collide with their definition (we
>> use 'const' and they don't, and they add 'WSAAPI', but the last part
>> may not matter).
>
> We could use a replacement function:
>
> #undef gai_strerror
> #define gai_strerror rpl_gai_strerror
>
> Shouldn't we?

Hm, yes, that might work.

>> However, perhaps the error is that getaddrinfo/gai_strerror is built
>> at all on your system.  mingw32 appear to have working getaddrinfo, so
>> we shouldn't need to build anything.
>
> getaddrinfo() seem to be working (and the module handle that part fine),
> but there is no gai_strerror() symbol available, which is a requirement
> in an environment using getaddrinfo(), thus we should compile the
> replacement function.

Ah, I remember, it happened for Windows 2000 if I remember correctly.

I don't have time to work on a solution here, but if you come up with
anything, we can commit it and let the build bot test it. :)

/Simon




reply via email to

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