From 02238d2c36c27d6754b380b241e6717926b2a157 Mon Sep 17 00:00:00 2001 From: Jeremy Drake Date: Wed, 27 Nov 2024 11:26:50 -0800 Subject: [PATCH 44/N] 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 (cherry picked from commit 7923059bff6c120c6fb74b63c7553ea345c0a8f3) --- winsup/cygwin/uname.cc | 20 +++++++++++++++++--- 1 file changed, 17 insertions(+), 3 deletions(-) diff --git a/winsup/cygwin/uname.cc b/winsup/cygwin/uname.cc index a978363..ba73edd 100644 --- a/winsup/cygwin/uname.cc +++ b/winsup/cygwin/uname.cc @@ -51,13 +51,27 @@ uname_x (struct utsname *name) __try { char buf[NI_MAXHOST + 1] ATTRIBUTE_NONSTRING; + int n; memset (name, 0, sizeof (*name)); /* sysname */ const char* sysname = get_sysname(); - __small_sprintf (name->sysname, "%s_%s-%u", - sysname, - wincap.osname (), wincap.build_number ()); + n = __small_sprintf (name->sysname, "%s_%s-%u", + sysname, + 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);