[Top][All Lists]
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[bug #27809] several win64 fixes
From: |
Ozkan Sezer |
Subject: |
[bug #27809] several win64 fixes |
Date: |
Mon, 26 Oct 2009 19:20:27 +0000 |
User-agent: |
Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.0.11) Gecko/2009061118 Fedora/3.0.11-1.fc9 Firefox/3.0.11 |
Follow-up Comment #2, bug #27809 (project make):
> 1. What versions of GCC and of MinGW runtime did you use to build Make?
Gcc version: gcc-4.4.3 prerelease.
MinGW runtime, however, seems as the confusion here: mingw.org
does not support win64. however the mingw-w64 project, (sf.net
project page: http://sourceforge.net/projects/mingw-w64/ , the
svn repo: http://mingw-w64.svn.sourceforge.net/ ) does support
both win32 and win64. As for the version of it, I use the release
v1.0 branch for the mingw-w64 svn.
> 2. Which header defines pid_t as appropriate for both 32-bit and 64-bit
> Windows? What is the definition for each one of them?
>
Either of process.h or sys/types.h:
Here is the mingw-w64 version from sys/types.h:
#ifndef _PID_T_
#define _PID_T_
#ifndef _WIN64
typedef int _pid_t;
#else
__MINGW_EXTENSION typedef __int64 _pid_t;
#endif
> 3. Why did you need casts in assignments, like this:
>
> - *pid_p = (int) hProcess;
> + *pid_p = (pid_t) hProcess;
>
Because you are casting a handle, which is a ptr*, to an int.
On the other hand, pid_t is wordsize dependant, int on w32 and
int64 on w64, and casting to pid_t is the correct way of doing
it.
> Didn't it work without a cast? (There are quite a few such casts; please
see
As I said above: the current code in the cvs is like casting a
pointter to an int on amd64 which results in pointer truncation.
> which ones are absolutely necessary.)
I tried my best to pick, but I can look again if necessary.
>
> 4. This change:
>
> - pipedes[0] = _open_osfhandle((long) hChildOutRd, O_RDONLY);
> + pipedes[0] = _open_osfhandle((intptr_t) hChildOutRd, O_RDONLY);
>
> assumes that _open_osfhandle accepts an intptr_t type as its first
argument.
> But the prototype I have on my machine (in io.h) says the first argument is
a
> `long'. Which version of MinGW changed that?
It is the same case. Your version is for w32-only.
The mingw-w64 version is like (from io.h):
_CRTIMP int __cdecl _open_osfhandle(intptr_t _OSFileHandle,int _Flags);
> 5. Finally, could you please see if the build_w32.bat script works for a
> 64-bit MinGW GCC? If you see problems there, please report them.
I did all my work on linux, cross-compiling for w64. When I reboot into
windows, I can try that one.
>
> Thanks.
My pleasure.
_______________________________________________________
Reply to this item at:
<http://savannah.gnu.org/bugs/?27809>
_______________________________________________
Message sent via/by Savannah
http://savannah.gnu.org/
- [bug #27809] several win64 fixes, Ozkan Sezer, 2009/10/26
- [bug #27809] several win64 fixes, Eli Zaretskii, 2009/10/26
- Re: [bug #27809] several win64 fixes, Eli Zaretskii, 2009/10/26
- RE: [bug #27809] several win64 fixes, Martin Dorey, 2009/10/26
- Re: [bug #27809] several win64 fixes, Ozkan Sezer, 2009/10/26
- Re: [bug #27809] several win64 fixes, Ozkan Sezer, 2009/10/26