RFC: Cygwin 64 bit?

Yaakov (Cygwin/X) yselkowitz@users.sourceforge.net
Fri Jul 8 19:07:00 GMT 2011


On Fri, 2011-07-08 at 11:56 +0200, Corinna Vinschen wrote:
> Where did you get the mingw64 gpg-error stuff from?  It's not in the
> Cygwin distro.

It's in Ports.

> Thanks for performing these tests.  I still have to see it with my own
> eyes :}
> 
> OK, let's assume DLLs with the wrong bit-ness are skipped on CreateProcess
> as well as on LoadLibrary.  What are the implications for us?
> 
> - If we use the same "cyg" prefix, we have to split the /bin directory
>   into a 32 and a 64 bit bin directory, or

ABSOLUTELY NOT.  /usr/bin is dictated by FHS, and there are way too many
assumptions built around that.  Not only are you breaking every CMake
package in existence, but think about she-bang lines and the like.

Remember that were not trying to support two versions of executables,
only the shared libraries.

> - if we stick to a single /bin directory, we have to use another prefix
>   like "cyg64", or

Which means changing all build systems and library loaders.

I just realized another problem with this that even patching dlopen()
won't solve: a module loading system may construct a file path, then
check the module's existence before attempting to load it.

Unless we use "cyg64" only for non-module shared libraries, and leave
"cyg" for modules (which would be under /usr/lib64 and loaded by fully
qualified path anyway).  Then dlopen() could do the cyg -> cyg64 dance
only if no absolute path is given.  I know, I was against this at first,
but with a modified dlopen() it might work.

> - we have to put the DLLs into a separate directory like /usr/lib64.
>   Separate directory has the problem that it always has to be in $PATH,
>   which is not such a good idea, IMHO.

I presume you mean because of all the other stuff (*.a, *.la) that
resides there.  Is that really so bad though?  At least we have
EXECIGNORE now.

I suppose there is another option: setup installs i686 packages into a
sysroot, and then we append /usr/i686-pc-cygwin/sys-root/usr/bin to
PATH.

Let me think more about the "cyg64"shlib/"cyg"module idea, it just might
be the better of all these options.


Yaakov




More information about the Cygwin-developers mailing list