[newlib-cygwin/main] Cygwin: Update _endian.h to handle unsupported arch

Corinna Vinschen corinna@sourceware.org
Fri Jan 9 10:41:04 GMT 2026


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

commit 4b9707306525f4f8e1685e97d29cf72a0db92348
Author:     Thirumalai Nagalingam <thirumalai.nagalingam@multicorewareinc.com>
AuthorDate: Fri Jan 9 14:19:05 2026 +0530
Commit:     Corinna Vinschen <corinna@vinschen.de>
CommitDate: Fri Jan 9 10:57:00 2026 +0100

    Cygwin: Update _endian.h to handle unsupported arch
    
    Update _endian.h so that it explicitly throw an error when encountering
    an unsupported architecture instead of returning the unmodified x.
    Also tighten the arch detection logic by adding an explicit LE check.
    
    Fixes: b14e2e7d15a8 ("Cygwin: _endian.h: Add AArch64 implementations for ntohl and ntohs")
    Signed-off-by: Thirumalai Nagalingam <thirumalai.nagalingam@multicorewareinc.com>

Diff:
---
 winsup/cygwin/include/machine/_endian.h | 8 ++++++--
 1 file changed, 6 insertions(+), 2 deletions(-)

diff --git a/winsup/cygwin/include/machine/_endian.h b/winsup/cygwin/include/machine/_endian.h
index 622d7a2e9ab2..48ff242b589b 100644
--- a/winsup/cygwin/include/machine/_endian.h
+++ b/winsup/cygwin/include/machine/_endian.h
@@ -28,8 +28,10 @@ __ntohl(__uint32_t _x)
 {
 #if defined(__x86_64__)
 	__asm__("bswap %0" : "=r" (_x) : "0" (_x));
-#elif defined(__aarch64__)
+#elif defined(__aarch64__) && __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
 	__asm__("rev %w0, %w0" : "=r" (_x) : "0" (_x));
+#else
+#error "unsupported architecture"
 #endif
 	return _x;
 }
@@ -41,10 +43,12 @@ __ntohs(__uint16_t _x)
 	__asm__("xchgb %b0,%h0"		/* swap bytes		*/
 		: "=Q" (_x)
 		:  "0" (_x));
-#elif defined(__aarch64__)
+#elif defined(__aarch64__) && __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__
 	__asm__("uxth %w0, %w0\n\t"
 		"rev16 %w0, %w0"
 		: "+r" (_x));
+#else
+#error "unsupported architecture"
 #endif
 	return _x;
 }


More information about the Cygwin-cvs mailing list