From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Received: by sourceware.org (Postfix, from userid 2155) id B4D33385828B; Tue, 13 Feb 2024 16:22:39 +0000 (GMT) DKIM-Filter: OpenDKIM Filter v2.11.0 sourceware.org B4D33385828B DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=sourceware.org; s=default; t=1707841359; bh=U1JgR0U46pb4IkLbNBNDasP2PUEYGrCK6XZY7aUBVic=; h=From:To:Subject:Date:From; b=fdC9HVdRaD+44TY3T7oJYG6KCPFoyuxE0lb8ds5MysHKH4N6tQN7snChX1P7rm6LW DC2RV3zcegI5Az2/Y5/MKX9RtdU1WLL3J55CWTEWKOsQMYJvK+fQwsSXLniULkuBr6 gml/LAq7lorGlIOfW758w+os2j6LRuew5q7tYlgs= Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: quoted-printable From: Corinna Vinschen To: cygwin-cvs@sourceware.org Subject: [newlib-cygwin/main] Cygwin: find_fast_cwd: don't run assembler checking code on ARM64 X-Act-Checkin: newlib-cygwin X-Git-Author: Corinna Vinschen X-Git-Refname: refs/heads/main X-Git-Oldrev: 8aad3a7edeb27b163db551403eecc94c959c857a X-Git-Newrev: 4e77fa9b8bf4818ff90c013f7e7b2b0ac0b968c5 Message-Id: <20240213162239.B4D33385828B@sourceware.org> Date: Tue, 13 Feb 2024 16:22:39 +0000 (GMT) List-Id: https://sourceware.org/git/gitweb.cgi?p=3Dnewlib-cygwin.git;h=3D4e77fa9b8bf= 4818ff90c013f7e7b2b0ac0b968c5 commit 4e77fa9b8bf4818ff90c013f7e7b2b0ac0b968c5 Author: Corinna Vinschen AuthorDate: Tue Feb 13 16:47:51 2024 +0100 Commit: Corinna Vinschen CommitDate: Tue Feb 13 16:48:15 2024 +0100 Cygwin: find_fast_cwd: don't run assembler checking code on ARM64 =20 https://cygwin.com/pipermail/cygwin/2024-February/255397.html reports a crash on ARM64 probably related to checking x86_64 code on the x86_64 emulator on AArch64. =20 At least for testing, pull the code checking the host HW up to be called before trying to evaluate assembler code. =20 Signed-off-by: Corinna Vinschen Diff: --- winsup/cygwin/path.cc | 28 +++++++++++++--------------- 1 file changed, 13 insertions(+), 15 deletions(-) diff --git a/winsup/cygwin/path.cc b/winsup/cygwin/path.cc index 69749dc38187..68639f323972 100644 --- a/winsup/cygwin/path.cc +++ b/winsup/cygwin/path.cc @@ -4608,29 +4608,27 @@ find_fast_cwd_pointer () static fcwd_access_t ** find_fast_cwd () { + USHORT emulated, hosted; + fcwd_access_t **f_cwd_ptr; + + /* First check if we're running in WOW64 on ARM64 emulating AMD64. Skip + fetching FAST_CWD pointer as long as there's no solution for finding + it on that system. */ + if (IsWow64Process2 (GetCurrentProcess (), &emulated, &hosted) + && hosted =3D=3D IMAGE_FILE_MACHINE_ARM64) + return NULL; + /* Fetch the pointer but don't set the global fast_cwd_ptr yet. First we have to make sure we know the version of the FAST_CWD structure used on the system. */ - fcwd_access_t **f_cwd_ptr =3D find_fast_cwd_pointer (); + f_cwd_ptr =3D find_fast_cwd_pointer (); if (!f_cwd_ptr) - { - bool warn =3D 1; - USHORT emulated, hosted; - - /* Check if we're running in WOW64 on ARM64 emulating AMD64. Skip - warning as long as there's no solution for finding the FAST_CWD - pointer on that system. */ - if (IsWow64Process2 (GetCurrentProcess (), &emulated, &hosted) - && hosted =3D=3D IMAGE_FILE_MACHINE_ARM64) - warn =3D 0; - - if (warn) - small_printf ("Cygwin WARNING:\n" + small_printf ("Cygwin WARNING:\n" " Couldn't compute FAST_CWD pointer. This typically occurs if you're usi= ng\n" " an older Cygwin version on a newer Windows. Please update to the lates= t\n" " available Cygwin version from https://cygwin.com/. If the problem pers= ists,\n" " please see https://cygwin.com/problems.html\n\n"); - } + /* Eventually, after we set the version as well, set fast_cwd_ptr. */ return f_cwd_ptr; }