include tag in uname -s for ARM64 hosts
Corinna Vinschen
corinna-cygwin@cygwin.com
Thu Nov 21 18:44:55 GMT 2024
On Nov 21 10:15, Jeremy Drake via Cygwin wrote:
> On Thu, 21 Nov 2024, Corinna Vinschen via Cygwin wrote:
>
> > > i686 x86_64 -WOW64-x64 (or omit arch to match existing?)
> >
> > Just -WOW64
> >
> > For backward compat and it's a sole representative of an intel-intel
> > emulation anyway. I think we may safely ignore "WOW"
> >
> > > i686 ARM64 -WOW64-ARM64
> >
> > Just -ARM64
> >
> > The suffix already indicates an emulator, the target CPU is in the
> > machine field.
> >
> > > ARM ARM64 -WOW64-ARM64
> >
> > Apart from not supporting 32 bit targets anymore (the tiny address space
> > is simply not feasible anymore) just -ARM64. Again, the target CPU is
> > in the machine field.
>
>
> Interesting. So basically disregard the wincap.is_wow64 (which is gone
> anyway in supported versions), and only look at the host arch, appending a
> tag only when it's different from Cygwin's own arch, with the special case
> that x64 is called "WOW64"? (Maybe the special case should be if the host
> is x64 AND Cygwin is i686, otherwise use x64, just in case MS does
> something useful like adding ARM64 emulation to x86_64)
I bet, they won't. There's no reason to. These emulators are meant
to enable old, paid applications to run on a new system.
Now consider that 99.9% of Windows apps are x86{_64} and 0.01% of apps
are ARM64. Of these 0.01%, 100% are available as x86{_64} app anyway.
IMHO:
if (IsWow64Process2 (GetCurrentProcess (), &emulated, &hosted))
&& emulated != IMAGE_FILE_MACHINE_UNKNOWN)
if (hosted == IMAGE_FILE_MACHINE_AMD64)
strcat (sysname, "-WOW64");
else if (hosted == IMAGE_FILE_MACHINE_ARM64)
strcat (sysname, "-ARM64");
else
stract (sysname, "-WTF");
}
And the target machine is in the machine field, so the info should
be sufficient to identify the emulation environment.
Corinna
More information about the Cygwin
mailing list