[newlib-cygwin/main] Cygwin: uname: add host machine tag to sysname.

Corinna Vinschen corinna@sourceware.org
Fri Nov 29 09:57:45 GMT 2024


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

commit 7923059bff6c120c6fb74b63c7553ea345c0a8f3
Author:     Jeremy Drake <cygwin@jdrake.com>
AuthorDate: Wed Nov 27 11:26:50 2024 -0800
Commit:     Corinna Vinschen <corinna@vinschen.de>
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 <cygwin@jdrake.com>

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);


More information about the Cygwin-cvs mailing list