52 lines
1.7 KiB
Diff
52 lines
1.7 KiB
Diff
From 02238d2c36c27d6754b380b241e6717926b2a157 Mon Sep 17 00:00:00 2001
|
|
From: Jeremy Drake <cygwin@jdrake.com>
|
|
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 <cygwin@jdrake.com>
|
|
(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);
|