From fd774e065c5d4df1f708a33139bf820ac8bfb7a7 Mon Sep 17 00:00:00 2001 From: Piotr Kubaj Date: Thu, 29 Jun 2023 01:41:56 +0200 Subject: [PATCH] gdtoa: fix endianness issue on powerpc64le The current code assumes running on big-endian, which causes issues with e.g. strtod() as reported on https://github.com/ocaml/ocaml/pull/10837#issuecomment-1605346422 This is probably a leftover from when powerpc64le was introduced. Approved by: jhibbits (on IRC) --- lib/libc/powerpc64/gd_qnan.h | 14 ++++++++++++++ 1 file changed, 14 insertions(+) diff --git a/lib/libc/powerpc64/gd_qnan.h b/lib/libc/powerpc64/gd_qnan.h index d70d8c318c4..8ce5594b81b 100644 --- a/lib/libc/powerpc64/gd_qnan.h +++ b/lib/libc/powerpc64/gd_qnan.h @@ -8,6 +8,19 @@ */ #define f_QNAN 0x7fc00000 +#if __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__ +#define d_QNAN0 0x0 +#define d_QNAN1 0x7ff80000 +#define ld_QNAN0 0x0 +#define ld_QNAN1 0x7ff80000 +#define ld_QNAN2 0x0 +#define ld_QNAN3 0x0 +#define ldus_QNAN0 0x0 +#define ldus_QNAN1 0x0 +#define ldus_QNAN2 0x0 +#define ldus_QNAN3 0x7ff8 +#define ldus_QNAN4 0x0 +#else #define d_QNAN0 0x7ff80000 #define d_QNAN1 0x0 #define ld_QNAN0 0x7ff80000 @@ -19,3 +32,4 @@ #define ldus_QNAN2 0x0 #define ldus_QNAN3 0x0 #define ldus_QNAN4 0x0 +#endif