From 8d847f4e94acea433d18c2397221e726ab2d06ec Mon Sep 17 00:00:00 2001 From: Jeremy Drake Date: Wed, 27 Nov 2024 11:26:50 -0800 Subject: [PATCH] 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 a978363f1c..ba73edda43 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);