On Nov 25 11:21, Jeremy Drake via Cygwin-patches wrote:
> From: Jeremy Drake <[email protected]>
>
> This was already used in the FAST_CWD check, and could be used in a
> couple other places.
>
> I found the "emulated"/process value returned from the function largely
> useless, so I did not cache it. It is useless because, as the docs say,
> it is set to IMAGE_FILE_MACHINE_UNKNOWN (0) if the process is not
> running under WOW64, but Microsoft also doesn't consider x64-on-ARM64 to
> be WOW64, so it is set to 0 regardless if the process is ARM64 or x64.
> You can tell the difference via
> GetProcessInformation(ProcessMachineTypeInfo), but for the current
> process even that's overkill: what we really want to know is the
> IMAGE_FILE_MACHINE_* constant for the Cygwin dll itself, which is
> conveniently located in memory already, so make an accessor function to
> access that. (It could also be cached in a member variable for a
> simpler accessor, and looked up in init).
>
> Signed-off-by: Jeremy Drake <[email protected]>
> ---
> v2: rename current_module_machine to cygwin_machine, adjust comment and
> remove ifdefs from fallback case when IsWow64Process2 fails.
>
> winsup/cygwin/local_includes/wincap.h | 3 +++
> winsup/cygwin/path.cc | 6 ++----
> winsup/cygwin/wincap.cc | 22 ++++++++++++++++++++++
> 3 files changed, 27 insertions(+), 4 deletions(-)
> [...]
> +extern const IMAGE_DOS_HEADER
> +dosheader __asm__ ("__image_base__");
On second thought, shouldn't we just use GetModuleHandle ("cygwin1.dll")
instead of going asm here?
Thanks,
Corinna