On Mar 20 21:45, Corinna Vinschen wrote: > On Mar 20 19:19, Achim Gratz wrote: > > What's going wrong is that the symbols are also defined in libc.a on > > 32bit and only in libm.a on 64bit. The configury for Cygwin removes > > both -lc and -lm from the list of libraries that should explicitly be > > linked with, a comment is present that both libc and libm symlink to > > libcygwin and are implied by gcc anyway. However that doesn't seem to > > be the case anymore on both architectures (these files are not symlinked > > and not hardlinked either), but the symbol construction is just > > different enough for this not to work on 64bit it would seem. > > No, that's not quite it. The problem is that on 32 bit the > *underscored* functions are exported by libc.a. This is an accident, > and probably one which is many years old. Here's what's exported by > libm.a: > > nm libm.a | grep copysign > U __imp__copysign > 00000000 T _copysign > U __imp__copysignf > 00000000 T _copysignf > > And here's what's exported on 32 bit by libc.a. Note the extra leading > underscore: > > $ nm libc.a | grep copysign > 00000000 T __copysign > U __imp___copysign > 00000000 T __copysignf > U __imp___copysignf > > These underscored versions were always exported additionally by the 32 > bit version but they have never been exported on 64 bit since exporting > them was wrong from the start. I'd like to get rid of them but the 32 bit versions has to stick to them for backward compat. Corinna -- Corinna Vinschen Please, send mails regarding Cygwin to Cygwin Maintainer cygwin AT cygwin DOT com Red Hat