diff options
author | Manuel A. Fernandez Montecelo <mafm@debian.org> | 2014-07-28 22:47:32 +0100 |
---|---|---|
committer | Manuel A. Fernandez Montecelo <manuel.montezelo@gmail.com> | 2016-05-26 15:19:20 +0100 |
commit | b2260e6df63425ff4e8b9e34a9d28c6d8ff6dce0 (patch) | |
tree | a4ace3a6767353d7a7d28844d24f0278523fb9af /debian/patches/float-endian-detection.patch | |
parent | 7c87dceb2cff351345f93592090989a2d6bc36a0 (diff) |
Imported Debian patch 0.9.3-5.1debian/0.9.3-5.1
Diffstat (limited to 'debian/patches/float-endian-detection.patch')
-rw-r--r-- | debian/patches/float-endian-detection.patch | 67 |
1 files changed, 67 insertions, 0 deletions
diff --git a/debian/patches/float-endian-detection.patch b/debian/patches/float-endian-detection.patch new file mode 100644 index 00000000..66bed0de --- /dev/null +++ b/debian/patches/float-endian-detection.patch @@ -0,0 +1,67 @@ +Description: Fix detection of floating point endianness + See https://lists.gnu.org/archive/html/bug-gnulib/2013-12/msg00104.html +Author: Alan Modra <amodra@gmail.com> +Author: Colin Watson <cjwatson@ubuntu.com> +Forwarded: no +Last-Update: 2013-12-18 + +Index: b/tests/test-isnanl.h +=================================================================== +--- a/tests/test-isnanl.h ++++ b/tests/test-isnanl.h +@@ -38,6 +38,12 @@ + long double minus_zero = -0.0L; + #endif + ++#ifdef __FLOAT_WORD_ORDER__ ++# define FLOAT_BIG_ENDIAN (__FLOAT_WORD_ORDER__ != __ORDER_LITTLE_ENDIAN__) ++#else ++# define FLOAT_BIG_ENDIAN (LDBL_EXPBIT0_WORD < NWORDS / 2) ++#endif ++ + int + main () + { +@@ -70,10 +76,10 @@ + # if LDBL_EXPBIT0_BIT > 0 + m.word[LDBL_EXPBIT0_WORD] ^= (unsigned int) 1 << (LDBL_EXPBIT0_BIT - 1); + # else +- m.word[LDBL_EXPBIT0_WORD + (LDBL_EXPBIT0_WORD < NWORDS / 2 ? 1 : - 1)] ++ m.word[LDBL_EXPBIT0_WORD + (FLOAT_BIG_ENDIAN ? 1 : - 1)] + ^= (unsigned int) 1 << (sizeof (unsigned int) * CHAR_BIT - 1); + # endif +- m.word[LDBL_EXPBIT0_WORD + (LDBL_EXPBIT0_WORD < NWORDS / 2 ? 1 : - 1)] ++ m.word[LDBL_EXPBIT0_WORD + (FLOAT_BIG_ENDIAN ? 1 : - 1)] + |= (unsigned int) 1 << LDBL_EXPBIT0_BIT; + ASSERT (isnanl (m.value)); + } +Index: b/tests/test-signbit.c +=================================================================== +--- a/tests/test-signbit.c ++++ b/tests/test-signbit.c +@@ -56,6 +56,12 @@ + long double minus_zerol = -0.0L; + #endif + ++#ifdef __FLOAT_WORD_ORDER__ ++# define FLOAT_BIG_ENDIAN (__FLOAT_WORD_ORDER__ != __ORDER_LITTLE_ENDIAN__) ++#else ++# define FLOAT_BIG_ENDIAN (LDBL_EXPBIT0_WORD < NWORDS / 2) ++#endif ++ + static void + test_signbitf () + { +@@ -176,10 +182,10 @@ + # if LDBL_EXPBIT0_BIT > 0 + m.word[LDBL_EXPBIT0_WORD] ^= (unsigned int) 1 << (LDBL_EXPBIT0_BIT - 1); + # else +- m.word[LDBL_EXPBIT0_WORD + (LDBL_EXPBIT0_WORD < NWORDS / 2 ? 1 : - 1)] ++ m.word[LDBL_EXPBIT0_WORD + (FLOAT_BIG_ENDIAN ? 1 : - 1)] + ^= (unsigned int) 1 << (sizeof (unsigned int) * CHAR_BIT - 1); + # endif +- m.word[LDBL_EXPBIT0_WORD + (LDBL_EXPBIT0_WORD < NWORDS / 2 ? 1 : - 1)] ++ m.word[LDBL_EXPBIT0_WORD + (FLOAT_BIG_ENDIAN ? 1 : - 1)] + |= (unsigned int) 1 << LDBL_EXPBIT0_BIT; + (void) signbit (m.value); + #undef NWORDS |