summaryrefslogtreecommitdiffstats
path: root/winsup/cygwin/uname.cc
diff options
context:
space:
mode:
authorCorinna Vinschen <corinna@vinschen.de>2004-07-24 09:41:34 +0000
committerCorinna Vinschen <corinna@vinschen.de>2004-07-24 09:41:34 +0000
commit65c5aa77fbd14e8571ffcefb731748954bc2f4df (patch)
tree1b00e362d620e645a61f54541a4154ee6233ff2a /winsup/cygwin/uname.cc
parent61e6420f325111a3b596a324c6adddfebd7d53d1 (diff)
downloadcygnal-65c5aa77fbd14e8571ffcefb731748954bc2f4df.tar.gz
cygnal-65c5aa77fbd14e8571ffcefb731748954bc2f4df.tar.bz2
cygnal-65c5aa77fbd14e8571ffcefb731748954bc2f4df.zip
* autoload.cc (GetNativeSystemInfo): Add.
(IsWow64Process): Add. * init.cc (respawn_wow64_process): New function. (dll_entry): If process has been started from a 64 bit process, call respawn_wow64_process. * uname.cc (uname): On 64 bit systems, use GetNativeSystemInfo. Show actual CPU type.
Diffstat (limited to 'winsup/cygwin/uname.cc')
-rw-r--r--winsup/cygwin/uname.cc14
1 files changed, 13 insertions, 1 deletions
diff --git a/winsup/cygwin/uname.cc b/winsup/cygwin/uname.cc
index 277440937..65708f018 100644
--- a/winsup/cygwin/uname.cc
+++ b/winsup/cygwin/uname.cc
@@ -29,7 +29,11 @@ uname (struct utsname *name)
memset (name, 0, sizeof (*name));
__small_sprintf (name->sysname, "CYGWIN_%s", wincap.osname ());
- GetSystemInfo (&sysinfo);
+ BOOL is_64bit_machine = FALSE;
+ if (IsWow64Process (hMainProc, &is_64bit_machine) && is_64bit_machine)
+ GetNativeSystemInfo (&sysinfo);
+ else
+ GetSystemInfo (&sysinfo);
/* Computer name */
cygwin_gethostname (name->nodename, sizeof (name->nodename) - 1);
@@ -74,6 +78,14 @@ uname (struct utsname *name)
}
__small_sprintf (name->machine, "i%d86", ptype);
break;
+ case PROCESSOR_ARCHITECTURE_IA64:
+ strcpy (name->machine, "ia64");
+ break;
+ case PROCESSOR_ARCHITECTURE_AMD64:
+ strcpy (name->machine, "amd64");
+ break;
+ case PROCESSOR_ARCHITECTURE_IA32_ON_WIN64:
+ strcpy (name->machine, "ia32-win64");
case PROCESSOR_ARCHITECTURE_ALPHA:
strcpy (name->machine, "alpha");
break;