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

commit 7923059bff6c120c6fb74b63c7553ea345c0a8f3
Author:     Jeremy Drake <[email protected]>
AuthorDate: Wed Nov 27 11:26:50 2024 -0800
Commit:     Corinna Vinschen <[email protected]>
CommitDate: Thu Nov 28 23:52:40 2024 +0100

    Cygwin: uname: add host machine tag to sysname.
    
    If the Cygwin dll's architecture is different from the host system's
    architecture, append an additional tag that indicates the host system
    architecture (the Cygwin dll's architecture is already indicated in
    machine).
    
    Signed-off-by: Jeremy Drake <[email protected]>

Diff:
---
 winsup/cygwin/uname.cc | 18 ++++++++++++++++--
 1 file changed, 16 insertions(+), 2 deletions(-)

diff --git a/winsup/cygwin/uname.cc b/winsup/cygwin/uname.cc
index dd4160189c3a..52c807ae54aa 100644
--- a/winsup/cygwin/uname.cc
+++ b/winsup/cygwin/uname.cc
@@ -33,11 +33,25 @@ uname_x (struct utsname *name)
   __try
     {
       char buf[NI_MAXHOST + 1] ATTRIBUTE_NONSTRING;
+      int n;
 
       memset (name, 0, sizeof (*name));
       /* sysname */
-      __small_sprintf (name->sysname, "CYGWIN_%s-%u",
-                      wincap.osname (), wincap.build_number ());
+      n = __small_sprintf (name->sysname, "CYGWIN_%s-%u",
+                          wincap.osname (), wincap.build_number ());
+      if (wincap.host_machine () != wincap.cygwin_machine ())
+       {
+         switch (wincap.host_machine ())
+           {
+             case IMAGE_FILE_MACHINE_ARM64:
+               n = stpcpy (name->sysname + n, "-ARM64") - name->sysname;
+               break;
+             default:
+               n += __small_sprintf (name->sysname + n, "-%04y",
+                                     (int) wincap.host_machine ());
+               break;
+           }
+       }
       /* nodename */
       memset (buf, 0, sizeof buf);
       cygwin_gethostname (buf, sizeof buf - 1);

Reply via email to