public inbox for cygwin-cvs@sourceware.org
help / color / mirror / Atom feed
From: Corinna Vinschen <corinna@sourceware.org>
To: cygwin-cvs@sourceware.org
Subject: [newlib-cygwin/main] Cygwin: find_fast_cwd: don't run assembler checking code on ARM64
Date: Tue, 13 Feb 2024 16:22:39 +0000 (GMT)	[thread overview]
Message-ID: <20240213162239.B4D33385828B@sourceware.org> (raw)

https://sourceware.org/git/gitweb.cgi?p=newlib-cygwin.git;h=4e77fa9b8bf4818ff90c013f7e7b2b0ac0b968c5

commit 4e77fa9b8bf4818ff90c013f7e7b2b0ac0b968c5
Author:     Corinna Vinschen <corinna@vinschen.de>
AuthorDate: Tue Feb 13 16:47:51 2024 +0100
Commit:     Corinna Vinschen <corinna@vinschen.de>
CommitDate: Tue Feb 13 16:48:15 2024 +0100

    Cygwin: find_fast_cwd: don't run assembler checking code on ARM64
    
    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.
    
    At least for testing, pull the code checking the host HW
    up to be called before trying to evaluate assembler code.
    
    Signed-off-by: Corinna Vinschen <corinna@vinschen.de>

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 == 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 = find_fast_cwd_pointer ();
+  f_cwd_ptr = find_fast_cwd_pointer ();
   if (!f_cwd_ptr)
-    {
-      bool warn = 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 == IMAGE_FILE_MACHINE_ARM64)
-	warn = 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 using\n"
 "  an older Cygwin version on a newer Windows.  Please update to the latest\n"
 "  available Cygwin version from https://cygwin.com/.  If the problem persists,\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;
 }

                 reply	other threads:[~2024-02-13 16:22 UTC|newest]

Thread overview: [no followups] expand[flat|nested]  mbox.gz  Atom feed

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20240213162239.B4D33385828B@sourceware.org \
    --to=corinna@sourceware.org \
    --cc=cygwin-cvs@sourceware.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).