Building sources from CVS.

Corinna Vinschen corinna-cygwin@cygwin.com
Wed Nov 20 20:29:00 GMT 2013


On Nov 20 23:54, Alexey Pavlov wrote:
> 2013/11/20 Christopher Faylor:
> > On Wed, Nov 20, 2013 at 10:18:37PM +0400, Alexey Pavlov wrote:
> >>Recent changes in CVS sources break build:
> >>
> >>-lgcc /usr/lib/gcc/x86_64-pc-cygwin/4.8.2/../../../../lib/w32api/libkernel32.a
> >>/usr/lib/gcc/x86_64-pc-cygwin/4.8.2/../../../../lib/w32api/libntdll.a
> >>-Wl,-Map,cygwin.map
> >>
> >>/usr/lib/gcc/x86_64-pc-cygwin/4.8.2/../../../../lib/w32api/libkernel32.a(dcnbs00754.o):(.text+0x0):
> >>multiple definition of `IdnToUnicode'
> >>
> >>autoload.o:autoload.cc:(.kernel32_autoload_text+0x180): first defined here
> >>
> >>/usr/lib/gcc/x86_64-pc-cygwin/4.8.2/../../../../lib/w32api/libkernel32.a(dcnbs00752.o):(.text+0x0):
> >>multiple definition of `IdnToAscii'
> >>
> >>autoload.o:autoload.cc:(.kernel32_autoload_text+0x140): first defined here
> >>
> >>collect2: error: ld returned 1 exit status
> >
> > The existence of two snapshots generated from latest CVS would
> > imply that the error is on your end.
> 
> I think this is because I'm use win32-api from latest mingw-w64 trunk.

This must be a bug in latest mingw-w64.  autoload.cc defines multiple
symbols which already exist in kernel32.dll.  And all of these symbols
also exist in mingw-w64 libkernel.a:

$ grep kernel32 autoload.cc
LoadDLLfuncEx (CancelSynchronousIo, 4, kernel32, 1)
LoadDLLfunc (CreateSymbolicLinkW, 12, kernel32)
LoadDLLfuncEx (GetNamedPipeClientProcessId, 8, kernel32, 1)
LoadDLLfunc (GetSystemTimePreciseAsFileTime, 4, kernel32)
LoadDLLfuncEx2 (IdnToAscii, 20, kernel32, 1, 0)
LoadDLLfuncEx2 (IdnToUnicode, 20, kernel32, 1, 0)
LoadDLLfunc (LocaleNameToLCID, 8, kernel32)

$ strings /usr/lib/w32api/libkernel32.a | grep CancelSynchronousIo
CancelSynchronousIo
__imp_CancelSynchronousIo
CancelSynchronousIo
CancelSynchronousIo
__imp_CancelSynchronousIo

And the Idn symbols are already exported by the current w32api version:

$ strings /usr/lib/w32api/libkernel32.a | grep IdnToAscii
IdnToAscii
__imp_IdnToAscii
IdnToAscii
IdnToAscii
__imp_IdnToAscii

So I don't see why these two IdnToXXX functions should result in
problems but not any of the other kernel32 autoload symbols.  For
completeness I tried to build ther Cygwin DLL natively on Cygwin, not on
Linux as usual, and it builds fine.


Corinna

-- 
Corinna Vinschen                  Please, send mails regarding Cygwin to
Cygwin Maintainer                 cygwin AT cygwin DOT com
Red Hat
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 836 bytes
Desc: not available
URL: <http://cygwin.com/pipermail/cygwin/attachments/20131120/5cf39d4e/attachment.sig>


More information about the Cygwin mailing list