On Oct 29, 2008, at 4:31 PM, Gustavo Seabra wrote:

Ugh.  IMHO, Cygwin != POSIX.

The problem is that we're making the assumption that if dlsym() is present, RTLD_NEXT is defined. I guess that's not true for cygwin (lame). I suppose that we could also check for RTLD_NEXT...? Is there any other OS where
dlsym() is present by RTLD_NEXT is not?

Would it be easier to run Linux in a virtual machine on your windows host?
You'll probably get a lot better performance...?

Hi Jeff,

Are you sure RTLD_NEXT is part of the POSIX standard? I may be looking
in the wrong place, but apparently it is *not* part of the standard,
at least as defined here:

http://www.opengroup.org/onlinepubs/000095399/basedefs/dlfcn.h.html

Fair enough -- my words were ambiguous, and probably overly broad. I was trying to convey that my prior experience with Cygwin has biased me to believe that Cygwin tends to be "different" than other POSIX- like OSs, such as Linux, Solaris, and OS X.

It would seem that this is a GNU extension, so it becomes available
when __USE_GNU is defined. Now, looking at the cygwin version of
dlfcn.h, I see that RTDL_NEXT is *not* defined, but RTDL_LAZY,
RTLD_NOW, RTLD_LOCAL and RTLD_GLOBAL, which makes it compliant with
POSIX, but not GNU.

The 'memory_mallopt_component.c' only checks if 'HAVE_DLSYM' is
defined. If so, it defines __USE_GNU then includes dlfcn.h. This is
ok, assuming you have a GNU version of dlfcn.h, but apparently this is
not present in Cygwin...

Understood; this was a more complete/precise meaning for my question "Is there any other OS where dlsym() is present by RTLD_NEXT is not?" I suppose we can extend the configure test to check for RTLD_NEXT as well. In this way, that component won't even decide to build itself. You won't need this component, because it's only really useful for the OpenFabrics and [ancient] Myricom GM drivers in Open MPI, neither of which are likely to be supported in Cygwin.

Also FWIW, my understanding is that running another OS in a VM (such as Linux or your favorite BSD) will run *much* faster than Cygwin. I have dim recollections of LAM's and OMPI's "configure" script taking loooooong periods of time (I no longer have easy access to a Windows machine to do such testing). Those with more Windows experience than me attributed it to Windows' process model implementation, which is quite different than Linux/Solaris/OSX/etc. So I'm just curious: do you have a reason for preferring Cygwin instead of a VM?

--
Jeff Squyres
Cisco Systems

Reply via email to