[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