This is the mail archive of the
cygwin-developers
mailing list for the Cygwin project.
Re: RFC: Cygwin 64 bit?
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