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-make mailing list Bug-make@gnu.org http://lists.gnu.org/mailman/listinfo/bug-make