[Clfs-commits] [Cross-LFS]Cross-LFS Book branch, master, updated. clfs-2.0.0-493-g8213adb

git git at cross-lfs.org
Mon Nov 11 10:17:29 PST 2013


This is an automated email from the git hooks/post-receive script. It was
generated because a ref change was pushed to the repository containing
the project "Cross-LFS Book".

The branch, master has been updated
       via  8213adb6b1efd41ff33c8b3d598588a5d887c807 (commit)
       via  3cff62555f82bc2e6c11f26ad31a4c07088da769 (commit)
       via  f697061c0ba5570ac59d49fd535849d2fb407809 (commit)
       via  d42579b5c0e5e10d0b0ce47235082ed1053570b0 (commit)
      from  1fc9ac0baccb6551c8d2518c480701c8444c3fab (commit)

Those revisions listed above that are new to this repository have
not appeared on any other notification email; so we list those
revisions in full, below.

- Log -----------------------------------------------------------------
commit 8213adb6b1efd41ff33c8b3d598588a5d887c807
Author: William Harrington <kb0iic at cross-lfs.org>
Date:   Mon Nov 11 18:08:56 2013 -0600

    Add mpfr patch commands to all sections.

diff --git a/BOOK/cross-tools/common/mpfr.xml b/BOOK/cross-tools/common/mpfr.xml
index 4220c63..186c81d 100644
--- a/BOOK/cross-tools/common/mpfr.xml
+++ b/BOOK/cross-tools/common/mpfr.xml
@@ -22,6 +22,14 @@
   <sect2 role="installation">
     <title>Installation of MPFR</title>
 
+    <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
+    href="../../final-system/common/mpfr.xml"
+    xpointer="xpointer(//*[@os='p1'])"/>
+
+    <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
+    href="../../final-system/common/mpfr.xml"
+    xpointer="xpointer(//*[@os='p2'])"/>
+
     <para os="a">Prepare MPFR for compilation:</para>
 
 <screen os="b"><userinput>LDFLAGS="-Wl,-rpath,/cross-tools/lib" \
diff --git a/BOOK/final-system/common/mpfr.xml b/BOOK/final-system/common/mpfr.xml
index 2745063..85acd77 100644
--- a/BOOK/final-system/common/mpfr.xml
+++ b/BOOK/final-system/common/mpfr.xml
@@ -25,6 +25,10 @@
   <sect2 role="installation">
     <title>Installation of MPFR</title>
 
+    <para os="p1">Apply a patch with upstream fixes:</para>
+
+<screen os="p2"><userinput>patch -Np1 -i ../&mpfr-fixes-patch;</userinput></screen>
+
     <para os="a">Prepare MPFR for compilation:</para>
 
 <screen os="b"><userinput>CC="gcc -isystem /usr/include" \
diff --git a/BOOK/final-system/multilib/mpfr-64bit.xml b/BOOK/final-system/multilib/mpfr-64bit.xml
index 81c0b5e..7acbcf9 100644
--- a/BOOK/final-system/multilib/mpfr-64bit.xml
+++ b/BOOK/final-system/multilib/mpfr-64bit.xml
@@ -23,6 +23,14 @@
 
     <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
     href="../common/mpfr.xml"
+    xpointer="xpointer(//*[@os='p1'])"/>
+
+    <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
+    href="../common/mpfr.xml"
+    xpointer="xpointer(//*[@os='p2'])"/>
+
+    <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
+    href="../common/mpfr.xml"
     xpointer="xpointer(//*[@os='a'])"/>
 
 <screen os="b"><userinput>CC="gcc -isystem /usr/include ${BUILD64}" \
diff --git a/BOOK/final-system/multilib/mpfr-n32.xml b/BOOK/final-system/multilib/mpfr-n32.xml
index 981a062..d9f3b96 100644
--- a/BOOK/final-system/multilib/mpfr-n32.xml
+++ b/BOOK/final-system/multilib/mpfr-n32.xml
@@ -24,6 +24,14 @@
 
     <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
     href="../common/mpfr.xml"
+    xpointer="xpointer(//*[@os='p1'])"/>
+
+    <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
+    href="../common/mpfr.xml"
+    xpointer="xpointer(//*[@os='p2'])"/>
+
+    <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
+    href="../common/mpfr.xml"
     xpointer="xpointer(//*[@os='a'])"/>
 
 <screen os="b"><userinput>CC="gcc -isystem /usr/include ${BUILDN32}" \
diff --git a/BOOK/final-system/multilib/mpfr.xml b/BOOK/final-system/multilib/mpfr.xml
index a542829..8d7c8a4 100644
--- a/BOOK/final-system/multilib/mpfr.xml
+++ b/BOOK/final-system/multilib/mpfr.xml
@@ -24,6 +24,14 @@
 
     <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
     href="../common/mpfr.xml"
+    xpointer="xpointer(//*[@os='p1'])"/>
+
+    <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
+    href="../common/mpfr.xml"
+    xpointer="xpointer(//*[@os='p2'])"/>
+
+    <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
+    href="../common/mpfr.xml"
     xpointer="xpointer(//*[@os='a'])"/>
 
 <screen os="b"><userinput>CC="gcc -isystem /usr/include ${BUILD32}" \
diff --git a/BOOK/temp-system/64/mpfr.xml b/BOOK/temp-system/64/mpfr.xml
index d5915d3..e7a2a28 100644
--- a/BOOK/temp-system/64/mpfr.xml
+++ b/BOOK/temp-system/64/mpfr.xml
@@ -23,6 +23,14 @@
     <title>Installation of MPFR</title>
 
     <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
+    href="../../final-system/common/mpfr.xml"
+    xpointer="xpointer(//*[@os='p1'])"/>
+
+    <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
+    href="../../final-system/common/mpfr.xml"
+    xpointer="xpointer(//*[@os='p2'])"/>
+
+    <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
     href="../common/mpfr.xml"
     xpointer="xpointer(//*[@os='a'])"/>
 
diff --git a/BOOK/temp-system/common/mpfr.xml b/BOOK/temp-system/common/mpfr.xml
index 588531d..2c6ea76 100644
--- a/BOOK/temp-system/common/mpfr.xml
+++ b/BOOK/temp-system/common/mpfr.xml
@@ -22,6 +22,14 @@
   <sect2 role="installation">
     <title>Installation of MPFR</title>
 
+    <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
+    href="../../final-system/common/mpfr.xml"
+    xpointer="xpointer(//*[@os='p1'])"/>
+
+    <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
+    href="../../final-system/common/mpfr.xml"
+    xpointer="xpointer(//*[@os='p2'])"/>
+
     <para os="a">Prepare MPFR for compilation:</para>
 
 <screen os="b"><userinput>./configure --prefix=/tools \
diff --git a/BOOK/temp-system/multilib/mpfr.xml b/BOOK/temp-system/multilib/mpfr.xml
index c8440ab..f1fca47 100644
--- a/BOOK/temp-system/multilib/mpfr.xml
+++ b/BOOK/temp-system/multilib/mpfr.xml
@@ -23,6 +23,14 @@
     <title>Installation of MPFR</title>
 
     <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
+    href="../../final-system/common/mpfr.xml"
+    xpointer="xpointer(//*[@os='p1'])"/>
+
+    <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
+    href="../../final-system/common/mpfr.xml"
+    xpointer="xpointer(//*[@os='p2'])"/>
+
+    <xi:include xmlns:xi="http://www.w3.org/2001/XInclude"
     href="../common/mpfr.xml"
     xpointer="xpointer(//*[@os='a'])"/>
 

commit 3cff62555f82bc2e6c11f26ad31a4c07088da769
Author: William Harrington <kb0iic at cross-lfs.org>
Date:   Mon Nov 11 18:08:36 2013 -0600

    Add mpfr fixes patch entry to materials.

diff --git a/BOOK/materials/common/patches.xml b/BOOK/materials/common/patches.xml
index dacdefe..a7edb71 100644
--- a/BOOK/materials/common/patches.xml
+++ b/BOOK/materials/common/patches.xml
@@ -103,6 +103,15 @@
     </varlistentry>
 
     <varlistentry>
+      <term>MPFR Fixes Patch - <token>&mpfr-fixes-patch-size;</token>:</term>
+      <listitem>
+        <para>Download: <ulink
+        url="&patches-root;&mpfr-fixes-patch;"/></para>
+        <para>MD5 sum: <literal>&mpfr-fixes-patch-md5;</literal></para>
+      </listitem>
+    </varlistentry>
+
+    <varlistentry>
       <term>Ncurses Bash Patch - <token>&ncurses-bashfix-patch-size;</token>:</term>
       <listitem>
         <para>Download: <ulink

commit f697061c0ba5570ac59d49fd535849d2fb407809
Author: William Harrington <kb0iic at cross-lfs.org>
Date:   Mon Nov 11 18:08:19 2013 -0600

    Add mpfr fixes patch entries to patches.

diff --git a/BOOK/patches.ent b/BOOK/patches.ent
index d340854..8edc05f 100644
--- a/BOOK/patches.ent
+++ b/BOOK/patches.ent
@@ -48,6 +48,10 @@
 <!ENTITY man-i18n-patch-md5 "a5aba0cb5a95a7945db8c882334b7dab">
 <!ENTITY man-i18n-patch-size "11 KB">
 
+<!ENTITY mpfr-fixes-patch "mpfr-&mpfr-version;-fixes-1.patch">
+<!ENTITY mpfr-fixes-patch-md5 "9c3b271ded070f8cb202459165a87f88">
+<!ENTITY mpfr-fixes-patch-size "23 KB">
+
 <!ENTITY ncurses-bashfix-patch "ncurses-&ncurses-version;-bash_fix-1.patch">
 <!ENTITY ncurses-bashfix-patch-md5 "c6f7f2ab0ebaf7721ebeb266641352db">
 <!ENTITY ncurses-bashfix-patch-size ".743 KB">

commit d42579b5c0e5e10d0b0ce47235082ed1053570b0
Author: William Harrington <kb0iic at cross-lfs.org>
Date:   Mon Nov 11 18:08:07 2013 -0600

    Create mpfr 3.1.2 fixes patch.

diff --git a/patches/mpfr-3.1.2-fixes-1.patch b/patches/mpfr-3.1.2-fixes-1.patch
new file mode 100644
index 0000000..c19b74e
--- /dev/null
+++ b/patches/mpfr-3.1.2-fixes-1.patch
@@ -0,0 +1,737 @@
+Submitted By: William Harrington (kb0iic at cross-lfs dot org)
+Date: 2013-11-11
+Initial Package Version: 3.1.2
+Origin: Upstream
+Upstream Status: Applied
+Description: Contains all upstream patches of mpfr current.
+
+diff -Naur mpfr-3.1.2.orig/PATCHES mpfr-3.1.2/PATCHES
+--- mpfr-3.1.2.orig/PATCHES	2013-03-13 15:37:38.000000000 +0000
++++ mpfr-3.1.2/PATCHES	2013-11-11 23:55:16.818732551 +0000
+@@ -0,0 +1,3 @@
++clang-divby0
++fits-smallneg
++exp_2
+diff -Naur mpfr-3.1.2.orig/VERSION mpfr-3.1.2/VERSION
+--- mpfr-3.1.2.orig/VERSION	2013-03-13 15:37:28.000000000 +0000
++++ mpfr-3.1.2/VERSION	2013-11-11 23:55:16.818732551 +0000
+@@ -1 +1 @@
+-3.1.2
++3.1.2-p3
+diff -Naur mpfr-3.1.2.orig/src/exp_2.c mpfr-3.1.2/src/exp_2.c
+--- mpfr-3.1.2.orig/src/exp_2.c	2013-03-13 15:37:28.000000000 +0000
++++ mpfr-3.1.2/src/exp_2.c	2013-11-11 23:55:16.810732551 +0000
+@@ -204,7 +204,7 @@
+           for (k = 0; k < K; k++)
+             {
+               mpz_mul (ss, ss, ss);
+-              exps <<= 1;
++              exps *= 2;
+               exps += mpz_normalize (ss, ss, q);
+             }
+           mpfr_set_z (s, ss, MPFR_RNDN);
+diff -Naur mpfr-3.1.2.orig/src/fits_u.h mpfr-3.1.2/src/fits_u.h
+--- mpfr-3.1.2.orig/src/fits_u.h	2013-03-13 15:37:35.000000000 +0000
++++ mpfr-3.1.2/src/fits_u.h	2013-11-11 23:55:16.818732551 +0000
+@@ -32,17 +32,20 @@
+   int res;
+ 
+   if (MPFR_UNLIKELY (MPFR_IS_SINGULAR (f)))
+-    /* Zero always fit */
+-    return MPFR_IS_ZERO (f) ? 1 : 0;
+-  else if (MPFR_IS_NEG (f))
+-    /* Negative numbers don't fit */
+-    return 0;
+-  /* now it fits if
+-     (a) f <= MAXIMUM
+-     (b) round(f, prec(slong), rnd) <= MAXIMUM */
++    return MPFR_IS_ZERO (f) ? 1 : 0;  /* Zero always fits */
+ 
+   e = MPFR_GET_EXP (f);
+ 
++  if (MPFR_IS_NEG (f))
++    return e >= 1 ? 0  /* f <= -1 does not fit */
++      : rnd != MPFR_RNDN ? MPFR_IS_LIKE_RNDU (rnd, -1)  /* directed mode */
++      : e < 0 ? 1  /* f > -1/2 fits in MPFR_RNDN */
++      : mpfr_powerof2_raw(f);  /* -1/2 fits, -1 < f < -1/2 don't */
++
++  /* Now it fits if
++     (a) f <= MAXIMUM
++     (b) round(f, prec(slong), rnd) <= MAXIMUM */
++
+   /* first compute prec(MAXIMUM); fits in an int */
+   for (s = MAXIMUM, prec = 0; s != 0; s /= 2, prec ++);
+ 
+diff -Naur mpfr-3.1.2.orig/src/fits_uintmax.c mpfr-3.1.2/src/fits_uintmax.c
+--- mpfr-3.1.2.orig/src/fits_uintmax.c	2013-03-13 15:37:33.000000000 +0000
++++ mpfr-3.1.2/src/fits_uintmax.c	2013-11-11 23:55:16.818732551 +0000
+@@ -27,51 +27,19 @@
+ #include "mpfr-intmax.h"
+ #include "mpfr-impl.h"
+ 
+-#ifdef _MPFR_H_HAVE_INTMAX_T
+-
+-/* We can't use fits_u.h <= mpfr_cmp_ui */
+-int
+-mpfr_fits_uintmax_p (mpfr_srcptr f, mpfr_rnd_t rnd)
+-{
+-  mpfr_exp_t e;
+-  int prec;
+-  uintmax_t s;
+-  mpfr_t x;
+-  int res;
+-
+-  if (MPFR_UNLIKELY (MPFR_IS_SINGULAR (f)))
+-    /* Zero always fit */
+-    return MPFR_IS_ZERO (f) ? 1 : 0;
+-  else if (MPFR_IS_NEG (f))
+-    /* Negative numbers don't fit */
+-    return 0;
+-  /* now it fits if
+-     (a) f <= MAXIMUM
+-     (b) round(f, prec(slong), rnd) <= MAXIMUM */
+-
+-  e = MPFR_GET_EXP (f);
++/* Note: though mpfr-impl.h is included in fits_u.h, we also include it
++   above so that it gets included even when _MPFR_H_HAVE_INTMAX_T is not
++   defined; this is necessary to avoid an empty translation unit, which
++   is forbidden by ISO C. Without this, a failing test can be reproduced
++   by creating an invalid stdint.h somewhere in the default include path
++   and by compiling MPFR with "gcc -ansi -pedantic-errors". */
+ 
+-  /* first compute prec(MAXIMUM); fits in an int */
+-  for (s = MPFR_UINTMAX_MAX, prec = 0; s != 0; s /= 2, prec ++);
+-
+-  /* MAXIMUM needs prec bits, i.e. MAXIMUM = 2^prec - 1 */
+-
+-  /* if e <= prec - 1, then f < 2^(prec-1) < MAXIMUM */
+-  if (e <= prec - 1)
+-    return 1;
+-
+-  /* if e >= prec + 1, then f >= 2^prec > MAXIMUM */
+-  if (e >= prec + 1)
+-    return 0;
++#ifdef _MPFR_H_HAVE_INTMAX_T
+ 
+-  MPFR_ASSERTD (e == prec);
++#define FUNCTION   mpfr_fits_uintmax_p
++#define MAXIMUM    MPFR_UINTMAX_MAX
++#define TYPE       uintmax_t
+ 
+-  /* hard case: first round to prec bits, then check */
+-  mpfr_init2 (x, prec);
+-  mpfr_set (x, f, rnd);
+-  res = MPFR_GET_EXP (x) == e;
+-  mpfr_clear (x);
+-  return res;
+-}
++#include "fits_u.h"
+ 
+ #endif
+diff -Naur mpfr-3.1.2.orig/src/mpfr-impl.h mpfr-3.1.2/src/mpfr-impl.h
+--- mpfr-3.1.2.orig/src/mpfr-impl.h	2013-03-13 15:37:36.000000000 +0000
++++ mpfr-3.1.2/src/mpfr-impl.h	2013-11-11 23:55:16.818732551 +0000
+@@ -468,8 +468,16 @@
+ #define MPFR_LIMBS_PER_FLT ((IEEE_FLT_MANT_DIG-1)/GMP_NUMB_BITS+1)
+ 
+ /* Visual C++ doesn't support +1.0/0.0, -1.0/0.0 and 0.0/0.0
+-   at compile time. */
+-#if defined(_MSC_VER) && defined(_WIN32) && (_MSC_VER >= 1200)
++   at compile time.
++   Clang with -fsanitize=undefined is a bit similar due to a bug:
++     http://llvm.org/bugs/show_bug.cgi?id=17381
++   but even without its sanitizer, it may be better to use the
++   double_zero version until IEEE 754 division by zero is properly
++   supported:
++     http://llvm.org/bugs/show_bug.cgi?id=17000
++*/
++#if (defined(_MSC_VER) && defined(_WIN32) && (_MSC_VER >= 1200)) || \
++    defined(__clang__)
+ static double double_zero = 0.0;
+ # define DBL_NAN (double_zero/double_zero)
+ # define DBL_POS_INF ((double) 1.0/double_zero)
+@@ -501,6 +509,8 @@
+    (with Xcode 2.4.1, i.e. the latest one). */
+ #define LVALUE(x) (&(x) == &(x) || &(x) != &(x))
+ #define DOUBLE_ISINF(x) (LVALUE(x) && ((x) > DBL_MAX || (x) < -DBL_MAX))
++/* The DOUBLE_ISNAN(x) macro is also valid on long double x
++   (assuming that the compiler isn't too broken). */
+ #ifdef MPFR_NANISNAN
+ /* Avoid MIPSpro / IRIX64 / gcc -ffast-math (incorrect) optimizations.
+    The + must not be replaced by a ||. With gcc -ffast-math, NaN is
+diff -Naur mpfr-3.1.2.orig/src/mpfr.h mpfr-3.1.2/src/mpfr.h
+--- mpfr-3.1.2.orig/src/mpfr.h	2013-03-13 15:37:37.000000000 +0000
++++ mpfr-3.1.2/src/mpfr.h	2013-11-11 23:55:16.818732551 +0000
+@@ -27,7 +27,7 @@
+ #define MPFR_VERSION_MAJOR 3
+ #define MPFR_VERSION_MINOR 1
+ #define MPFR_VERSION_PATCHLEVEL 2
+-#define MPFR_VERSION_STRING "3.1.2"
++#define MPFR_VERSION_STRING "3.1.2-p3"
+ 
+ /* Macros dealing with MPFR VERSION */
+ #define MPFR_VERSION_NUM(a,b,c) (((a) << 16L) | ((b) << 8) | (c))
+diff -Naur mpfr-3.1.2.orig/src/version.c mpfr-3.1.2/src/version.c
+--- mpfr-3.1.2.orig/src/version.c	2013-03-13 15:37:34.000000000 +0000
++++ mpfr-3.1.2/src/version.c	2013-11-11 23:55:16.818732551 +0000
+@@ -25,5 +25,5 @@
+ const char *
+ mpfr_get_version (void)
+ {
+-  return "3.1.2";
++  return "3.1.2-p3";
+ }
+diff -Naur mpfr-3.1.2.orig/tests/tfits.c mpfr-3.1.2/tests/tfits.c
+--- mpfr-3.1.2.orig/tests/tfits.c	2013-03-13 15:37:45.000000000 +0000
++++ mpfr-3.1.2/tests/tfits.c	2013-11-11 23:55:16.818732551 +0000
+@@ -33,155 +33,176 @@
+ #include "mpfr-intmax.h"
+ #include "mpfr-test.h"
+ 
+-#define ERROR1 { printf("Initial error for x="); mpfr_dump(x); exit(1); }
+-#define ERROR2 { printf("Error for x="); mpfr_dump(x); exit(1); }
++#define ERROR1(N)                                               \
++  do                                                            \
++    {                                                           \
++      printf("Error %d for rnd = %s and x = ", N,               \
++             mpfr_print_rnd_mode ((mpfr_rnd_t) r));             \
++      mpfr_dump(x);                                             \
++      exit(1);                                                  \
++    }                                                           \
++  while (0)
+ 
+ static void check_intmax (void);
+ 
+ int
+ main (void)
+ {
+-  mpfr_t x;
++  mpfr_t x, y;
++  int i, r;
+ 
+   tests_start_mpfr ();
+ 
+   mpfr_init2 (x, 256);
++  mpfr_init2 (y, 8);
+ 
+-  /* Check NAN */
+-  mpfr_set_nan (x);
+-  if (mpfr_fits_ulong_p (x, MPFR_RNDN))
+-    ERROR1;
+-  if (mpfr_fits_slong_p (x, MPFR_RNDN))
+-    ERROR1;
+-  if (mpfr_fits_uint_p (x, MPFR_RNDN))
+-    ERROR1;
+-  if (mpfr_fits_sint_p (x, MPFR_RNDN))
+-    ERROR1;
+-  if (mpfr_fits_ushort_p (x, MPFR_RNDN))
+-    ERROR1;
+-  if (mpfr_fits_sshort_p (x, MPFR_RNDN))
+-    ERROR1;
+-
+-  /* Check INF */
+-  mpfr_set_inf (x, 1);
+-  if (mpfr_fits_ulong_p (x, MPFR_RNDN))
+-    ERROR1;
+-  if (mpfr_fits_slong_p (x, MPFR_RNDN))
+-    ERROR1;
+-  if (mpfr_fits_uint_p (x, MPFR_RNDN))
+-    ERROR1;
+-  if (mpfr_fits_sint_p (x, MPFR_RNDN))
+-    ERROR1;
+-  if (mpfr_fits_ushort_p (x, MPFR_RNDN))
+-    ERROR1;
+-  if (mpfr_fits_sshort_p (x, MPFR_RNDN))
+-    ERROR1;
+-
+-  /* Check Zero */
+-  MPFR_SET_ZERO (x);
+-  if (!mpfr_fits_ulong_p (x, MPFR_RNDN))
+-    ERROR2;
+-  if (!mpfr_fits_slong_p (x, MPFR_RNDN))
+-    ERROR2;
+-  if (!mpfr_fits_uint_p (x, MPFR_RNDN))
+-    ERROR2;
+-  if (!mpfr_fits_sint_p (x, MPFR_RNDN))
+-    ERROR2;
+-  if (!mpfr_fits_ushort_p (x, MPFR_RNDN))
+-    ERROR2;
+-  if (!mpfr_fits_sshort_p (x, MPFR_RNDN))
+-    ERROR2;
+-
+-  /* Check small op */
+-  mpfr_set_str1 (x, "1 at -1");
+-  if (!mpfr_fits_ulong_p (x, MPFR_RNDN))
+-    ERROR2;
+-  if (!mpfr_fits_slong_p (x, MPFR_RNDN))
+-    ERROR2;
+-  if (!mpfr_fits_uint_p (x, MPFR_RNDN))
+-    ERROR2;
+-  if (!mpfr_fits_sint_p (x, MPFR_RNDN))
+-    ERROR2;
+-  if (!mpfr_fits_ushort_p (x, MPFR_RNDN))
+-    ERROR2;
+-  if (!mpfr_fits_sshort_p (x, MPFR_RNDN))
+-    ERROR2;
+-
+-  /* Check 17 */
+-  mpfr_set_ui (x, 17, MPFR_RNDN);
+-  if (!mpfr_fits_ulong_p (x, MPFR_RNDN))
+-    ERROR2;
+-  if (!mpfr_fits_slong_p (x, MPFR_RNDN))
+-    ERROR2;
+-  if (!mpfr_fits_uint_p (x, MPFR_RNDN))
+-    ERROR2;
+-  if (!mpfr_fits_sint_p (x, MPFR_RNDN))
+-    ERROR2;
+-  if (!mpfr_fits_ushort_p (x, MPFR_RNDN))
+-    ERROR2;
+-  if (!mpfr_fits_sshort_p (x, MPFR_RNDN))
+-    ERROR2;
+-
+-  /* Check all other values */
+-  mpfr_set_ui (x, ULONG_MAX, MPFR_RNDN);
+-  mpfr_mul_2exp (x, x, 1, MPFR_RNDN);
+-  if (mpfr_fits_ulong_p (x, MPFR_RNDN))
+-    ERROR1;
+-  if (mpfr_fits_slong_p (x, MPFR_RNDN))
+-    ERROR1;
+-  mpfr_mul_2exp (x, x, 40, MPFR_RNDN);
+-  if (mpfr_fits_ulong_p (x, MPFR_RNDN))
+-    ERROR1;
+-  if (mpfr_fits_uint_p (x, MPFR_RNDN))
+-    ERROR1;
+-  if (mpfr_fits_sint_p (x, MPFR_RNDN))
+-    ERROR1;
+-  if (mpfr_fits_ushort_p (x, MPFR_RNDN))
+-    ERROR1;
+-  if (mpfr_fits_sshort_p (x, MPFR_RNDN))
+-    ERROR1;
+-
+-  mpfr_set_ui (x, ULONG_MAX, MPFR_RNDN);
+-  if (!mpfr_fits_ulong_p (x, MPFR_RNDN))
+-    ERROR2;
+-  mpfr_set_ui (x, LONG_MAX, MPFR_RNDN);
+-  if (!mpfr_fits_slong_p (x, MPFR_RNDN))
+-    ERROR2;
+-  mpfr_set_ui (x, UINT_MAX, MPFR_RNDN);
+-  if (!mpfr_fits_uint_p (x, MPFR_RNDN))
+-    ERROR2;
+-  mpfr_set_ui (x, INT_MAX, MPFR_RNDN);
+-  if (!mpfr_fits_sint_p (x, MPFR_RNDN))
+-    ERROR2;
+-  mpfr_set_ui (x, USHRT_MAX, MPFR_RNDN);
+-  if (!mpfr_fits_ushort_p (x, MPFR_RNDN))
+-    ERROR2;
+-  mpfr_set_ui (x, SHRT_MAX, MPFR_RNDN);
+-  if (!mpfr_fits_sshort_p (x, MPFR_RNDN))
+-    ERROR2;
+-
+-  mpfr_set_si (x, 1, MPFR_RNDN);
+-  if (!mpfr_fits_sint_p (x, MPFR_RNDN))
+-    ERROR2;
+-  if (!mpfr_fits_sshort_p (x, MPFR_RNDN))
+-    ERROR2;
+-
+-  /* Check negative value */
+-  mpfr_set_si (x, -1, MPFR_RNDN);
+-  if (!mpfr_fits_sint_p (x, MPFR_RNDN))
+-    ERROR2;
+-  if (!mpfr_fits_sshort_p (x, MPFR_RNDN))
+-    ERROR2;
+-  if (!mpfr_fits_slong_p (x, MPFR_RNDN))
+-    ERROR2;
+-  if (mpfr_fits_uint_p (x, MPFR_RNDN))
+-    ERROR1;
+-  if (mpfr_fits_ushort_p (x, MPFR_RNDN))
+-    ERROR1;
+-  if (mpfr_fits_ulong_p (x, MPFR_RNDN))
+-    ERROR1;
++  RND_LOOP (r)
++    {
++
++      /* Check NAN */
++      mpfr_set_nan (x);
++      if (mpfr_fits_ulong_p (x, (mpfr_rnd_t) r))
++        ERROR1 (1);
++      if (mpfr_fits_slong_p (x, (mpfr_rnd_t) r))
++        ERROR1 (2);
++      if (mpfr_fits_uint_p (x, (mpfr_rnd_t) r))
++        ERROR1 (3);
++      if (mpfr_fits_sint_p (x, (mpfr_rnd_t) r))
++        ERROR1 (4);
++      if (mpfr_fits_ushort_p (x, (mpfr_rnd_t) r))
++        ERROR1 (5);
++      if (mpfr_fits_sshort_p (x, (mpfr_rnd_t) r))
++        ERROR1 (6);
++
++      /* Check INF */
++      mpfr_set_inf (x, 1);
++      if (mpfr_fits_ulong_p (x, (mpfr_rnd_t) r))
++        ERROR1 (7);
++      if (mpfr_fits_slong_p (x, (mpfr_rnd_t) r))
++        ERROR1 (8);
++      if (mpfr_fits_uint_p (x, (mpfr_rnd_t) r))
++        ERROR1 (9);
++      if (mpfr_fits_sint_p (x, (mpfr_rnd_t) r))
++        ERROR1 (10);
++      if (mpfr_fits_ushort_p (x, (mpfr_rnd_t) r))
++        ERROR1 (11);
++      if (mpfr_fits_sshort_p (x, (mpfr_rnd_t) r))
++        ERROR1 (12);
++
++      /* Check Zero */
++      MPFR_SET_ZERO (x);
++      if (!mpfr_fits_ulong_p (x, (mpfr_rnd_t) r))
++        ERROR1 (13);
++      if (!mpfr_fits_slong_p (x, (mpfr_rnd_t) r))
++        ERROR1 (14);
++      if (!mpfr_fits_uint_p (x, (mpfr_rnd_t) r))
++        ERROR1 (15);
++      if (!mpfr_fits_sint_p (x, (mpfr_rnd_t) r))
++        ERROR1 (16);
++      if (!mpfr_fits_ushort_p (x, (mpfr_rnd_t) r))
++        ERROR1 (17);
++      if (!mpfr_fits_sshort_p (x, (mpfr_rnd_t) r))
++        ERROR1 (18);
++
++      /* Check small positive op */
++      mpfr_set_str1 (x, "1 at -1");
++      if (!mpfr_fits_ulong_p (x, (mpfr_rnd_t) r))
++        ERROR1 (19);
++      if (!mpfr_fits_slong_p (x, (mpfr_rnd_t) r))
++        ERROR1 (20);
++      if (!mpfr_fits_uint_p (x, (mpfr_rnd_t) r))
++        ERROR1 (21);
++      if (!mpfr_fits_sint_p (x, (mpfr_rnd_t) r))
++        ERROR1 (22);
++      if (!mpfr_fits_ushort_p (x, (mpfr_rnd_t) r))
++        ERROR1 (23);
++      if (!mpfr_fits_sshort_p (x, (mpfr_rnd_t) r))
++        ERROR1 (24);
++
++      /* Check 17 */
++      mpfr_set_ui (x, 17, MPFR_RNDN);
++      if (!mpfr_fits_ulong_p (x, (mpfr_rnd_t) r))
++        ERROR1 (25);
++      if (!mpfr_fits_slong_p (x, (mpfr_rnd_t) r))
++        ERROR1 (26);
++      if (!mpfr_fits_uint_p (x, (mpfr_rnd_t) r))
++        ERROR1 (27);
++      if (!mpfr_fits_sint_p (x, (mpfr_rnd_t) r))
++        ERROR1 (28);
++      if (!mpfr_fits_ushort_p (x, (mpfr_rnd_t) r))
++        ERROR1 (29);
++      if (!mpfr_fits_sshort_p (x, (mpfr_rnd_t) r))
++        ERROR1 (30);
++
++      /* Check all other values */
++      mpfr_set_ui (x, ULONG_MAX, MPFR_RNDN);
++      mpfr_mul_2exp (x, x, 1, MPFR_RNDN);
++      if (mpfr_fits_ulong_p (x, (mpfr_rnd_t) r))
++        ERROR1 (31);
++      if (mpfr_fits_slong_p (x, (mpfr_rnd_t) r))
++        ERROR1 (32);
++      mpfr_mul_2exp (x, x, 40, MPFR_RNDN);
++      if (mpfr_fits_ulong_p (x, (mpfr_rnd_t) r))
++        ERROR1 (33);
++      if (mpfr_fits_uint_p (x, (mpfr_rnd_t) r))
++        ERROR1 (34);
++      if (mpfr_fits_sint_p (x, (mpfr_rnd_t) r))
++        ERROR1 (35);
++      if (mpfr_fits_ushort_p (x, (mpfr_rnd_t) r))
++        ERROR1 (36);
++      if (mpfr_fits_sshort_p (x, (mpfr_rnd_t) r))
++        ERROR1 (37);
++
++      mpfr_set_ui (x, ULONG_MAX, MPFR_RNDN);
++      if (!mpfr_fits_ulong_p (x, (mpfr_rnd_t) r))
++        ERROR1 (38);
++      mpfr_set_ui (x, LONG_MAX, MPFR_RNDN);
++      if (!mpfr_fits_slong_p (x, (mpfr_rnd_t) r))
++        ERROR1 (39);
++      mpfr_set_ui (x, UINT_MAX, MPFR_RNDN);
++      if (!mpfr_fits_uint_p (x, (mpfr_rnd_t) r))
++        ERROR1 (40);
++      mpfr_set_ui (x, INT_MAX, MPFR_RNDN);
++      if (!mpfr_fits_sint_p (x, (mpfr_rnd_t) r))
++        ERROR1 (41);
++      mpfr_set_ui (x, USHRT_MAX, MPFR_RNDN);
++      if (!mpfr_fits_ushort_p (x, (mpfr_rnd_t) r))
++        ERROR1 (42);
++      mpfr_set_ui (x, SHRT_MAX, MPFR_RNDN);
++      if (!mpfr_fits_sshort_p (x, (mpfr_rnd_t) r))
++        ERROR1 (43);
++
++      mpfr_set_si (x, 1, MPFR_RNDN);
++      if (!mpfr_fits_sint_p (x, (mpfr_rnd_t) r))
++        ERROR1 (44);
++      if (!mpfr_fits_sshort_p (x, (mpfr_rnd_t) r))
++        ERROR1 (45);
++
++      /* Check negative op */
++      for (i = 1; i <= 4; i++)
++        {
++          int inv;
++
++          mpfr_set_si_2exp (x, -i, -2, MPFR_RNDN);
++          mpfr_rint (y, x, (mpfr_rnd_t) r);
++          inv = MPFR_NOTZERO (y);
++          if (!mpfr_fits_ulong_p (x, (mpfr_rnd_t) r) ^ inv)
++            ERROR1 (46);
++          if (!mpfr_fits_slong_p (x, (mpfr_rnd_t) r))
++            ERROR1 (47);
++          if (!mpfr_fits_uint_p (x, (mpfr_rnd_t) r) ^ inv)
++            ERROR1 (48);
++          if (!mpfr_fits_sint_p (x, (mpfr_rnd_t) r))
++            ERROR1 (49);
++          if (!mpfr_fits_ushort_p (x, (mpfr_rnd_t) r) ^ inv)
++            ERROR1 (50);
++          if (!mpfr_fits_sshort_p (x, (mpfr_rnd_t) r))
++            ERROR1 (51);
++        }
++    }
+ 
+   mpfr_clear (x);
++  mpfr_clear (y);
+ 
+   check_intmax ();
+ 
+@@ -189,85 +210,98 @@
+   return 0;
+ }
+ 
+-static void check_intmax (void)
++static void
++check_intmax (void)
+ {
+ #ifdef _MPFR_H_HAVE_INTMAX_T
+-  mpfr_t x;
++  mpfr_t x, y;
++  int i, r;
+ 
+-  mpfr_init2 (x, sizeof (uintmax_t)*CHAR_BIT);
++  mpfr_init2 (x, sizeof (uintmax_t) * CHAR_BIT);
++  mpfr_init2 (y, 8);
+ 
+-  /* Check NAN */
+-  mpfr_set_nan (x);
+-  if (mpfr_fits_uintmax_p (x, MPFR_RNDN))
+-    ERROR1;
+-  if (mpfr_fits_intmax_p (x, MPFR_RNDN))
+-    ERROR1;
+-
+-  /* Check INF */
+-  mpfr_set_inf (x, 1);
+-  if (mpfr_fits_uintmax_p (x, MPFR_RNDN))
+-    ERROR1;
+-  if (mpfr_fits_intmax_p (x, MPFR_RNDN))
+-    ERROR1;
+-
+-  /* Check Zero */
+-  MPFR_SET_ZERO (x);
+-  if (!mpfr_fits_uintmax_p (x, MPFR_RNDN))
+-    ERROR2;
+-  if (!mpfr_fits_intmax_p (x, MPFR_RNDN))
+-    ERROR2;
+-
+-  /* Check small op */
+-  mpfr_set_str1 (x, "1 at -1");
+-  if (!mpfr_fits_uintmax_p (x, MPFR_RNDN))
+-    ERROR2;
+-  if (!mpfr_fits_intmax_p (x, MPFR_RNDN))
+-    ERROR2;
+-
+-  /* Check 17 */
+-  mpfr_set_ui (x, 17, MPFR_RNDN);
+-  if (!mpfr_fits_uintmax_p (x, MPFR_RNDN))
+-    ERROR2;
+-  if (!mpfr_fits_intmax_p (x, MPFR_RNDN))
+-    ERROR2;
+-
+-  /* Check hugest */
+-  mpfr_set_ui_2exp (x, 42, sizeof (uintmax_t) * 32, MPFR_RNDN);
+-  if (mpfr_fits_uintmax_p (x, MPFR_RNDN))
+-    ERROR1;
+-  if (mpfr_fits_intmax_p (x, MPFR_RNDN))
+-    ERROR1;
+-
+-  /* Check all other values */
+-  mpfr_set_uj (x, MPFR_UINTMAX_MAX, MPFR_RNDN);
+-  mpfr_add_ui (x, x, 1, MPFR_RNDN);
+-  if (mpfr_fits_uintmax_p (x, MPFR_RNDN))
+-    ERROR1;
+-  mpfr_set_uj (x, MPFR_UINTMAX_MAX, MPFR_RNDN);
+-  if (!mpfr_fits_uintmax_p (x, MPFR_RNDN))
+-    ERROR2;
+-  mpfr_set_sj (x, MPFR_INTMAX_MAX, MPFR_RNDN);
+-  mpfr_add_ui (x, x, 1, MPFR_RNDN);
+-  if (mpfr_fits_intmax_p (x, MPFR_RNDN))
+-    ERROR1;
+-  mpfr_set_sj (x, MPFR_INTMAX_MAX, MPFR_RNDN);
+-  if (!mpfr_fits_intmax_p (x, MPFR_RNDN))
+-    ERROR2;
+-  mpfr_set_sj (x, MPFR_INTMAX_MIN, MPFR_RNDN);
+-  if (!mpfr_fits_intmax_p (x, MPFR_RNDN))
+-    ERROR2;
+-  mpfr_sub_ui (x, x, 1, MPFR_RNDN);
+-  if (mpfr_fits_intmax_p (x, MPFR_RNDN))
+-    ERROR1;
+-
+-  /* Check negative value */
+-  mpfr_set_si (x, -1, MPFR_RNDN);
+-  if (!mpfr_fits_intmax_p (x, MPFR_RNDN))
+-    ERROR2;
+-  if (mpfr_fits_uintmax_p (x, MPFR_RNDN))
+-    ERROR1;
++  RND_LOOP (r)
++    {
++      /* Check NAN */
++      mpfr_set_nan (x);
++      if (mpfr_fits_uintmax_p (x, (mpfr_rnd_t) r))
++        ERROR1 (52);
++      if (mpfr_fits_intmax_p (x, (mpfr_rnd_t) r))
++        ERROR1 (53);
++
++      /* Check INF */
++      mpfr_set_inf (x, 1);
++      if (mpfr_fits_uintmax_p (x, (mpfr_rnd_t) r))
++        ERROR1 (54);
++      if (mpfr_fits_intmax_p (x, (mpfr_rnd_t) r))
++        ERROR1 (55);
++
++      /* Check Zero */
++      MPFR_SET_ZERO (x);
++      if (!mpfr_fits_uintmax_p (x, (mpfr_rnd_t) r))
++        ERROR1 (56);
++      if (!mpfr_fits_intmax_p (x, (mpfr_rnd_t) r))
++        ERROR1 (57);
++
++      /* Check positive small op */
++      mpfr_set_str1 (x, "1 at -1");
++      if (!mpfr_fits_uintmax_p (x, (mpfr_rnd_t) r))
++        ERROR1 (58);
++      if (!mpfr_fits_intmax_p (x, (mpfr_rnd_t) r))
++        ERROR1 (59);
++
++      /* Check 17 */
++      mpfr_set_ui (x, 17, MPFR_RNDN);
++      if (!mpfr_fits_uintmax_p (x, (mpfr_rnd_t) r))
++        ERROR1 (60);
++      if (!mpfr_fits_intmax_p (x, (mpfr_rnd_t) r))
++        ERROR1 (61);
++
++      /* Check hugest */
++      mpfr_set_ui_2exp (x, 42, sizeof (uintmax_t) * 32, MPFR_RNDN);
++      if (mpfr_fits_uintmax_p (x, (mpfr_rnd_t) r))
++        ERROR1 (62);
++      if (mpfr_fits_intmax_p (x, (mpfr_rnd_t) r))
++        ERROR1 (63);
++
++      /* Check all other values */
++      mpfr_set_uj (x, MPFR_UINTMAX_MAX, MPFR_RNDN);
++      mpfr_add_ui (x, x, 1, MPFR_RNDN);
++      if (mpfr_fits_uintmax_p (x, (mpfr_rnd_t) r))
++        ERROR1 (64);
++      mpfr_set_uj (x, MPFR_UINTMAX_MAX, MPFR_RNDN);
++      if (!mpfr_fits_uintmax_p (x, (mpfr_rnd_t) r))
++        ERROR1 (65);
++      mpfr_set_sj (x, MPFR_INTMAX_MAX, MPFR_RNDN);
++      mpfr_add_ui (x, x, 1, MPFR_RNDN);
++      if (mpfr_fits_intmax_p (x, (mpfr_rnd_t) r))
++        ERROR1 (66);
++      mpfr_set_sj (x, MPFR_INTMAX_MAX, MPFR_RNDN);
++      if (!mpfr_fits_intmax_p (x, (mpfr_rnd_t) r))
++        ERROR1 (67);
++      mpfr_set_sj (x, MPFR_INTMAX_MIN, MPFR_RNDN);
++      if (!mpfr_fits_intmax_p (x, (mpfr_rnd_t) r))
++        ERROR1 (68);
++      mpfr_sub_ui (x, x, 1, MPFR_RNDN);
++      if (mpfr_fits_intmax_p (x, (mpfr_rnd_t) r))
++        ERROR1 (69);
++
++      /* Check negative op */
++      for (i = 1; i <= 4; i++)
++        {
++          int inv;
++
++          mpfr_set_si_2exp (x, -i, -2, MPFR_RNDN);
++          mpfr_rint (y, x, (mpfr_rnd_t) r);
++          inv = MPFR_NOTZERO (y);
++          if (!mpfr_fits_uintmax_p (x, (mpfr_rnd_t) r) ^ inv)
++            ERROR1 (70);
++          if (!mpfr_fits_intmax_p (x, (mpfr_rnd_t) r))
++            ERROR1 (71);
++        }
++    }
+ 
+   mpfr_clear (x);
++  mpfr_clear (y);
+ #endif
+ }
+-
+diff -Naur mpfr-3.1.2.orig/tests/tget_flt.c mpfr-3.1.2/tests/tget_flt.c
+--- mpfr-3.1.2.orig/tests/tget_flt.c	2013-03-13 15:37:44.000000000 +0000
++++ mpfr-3.1.2/tests/tget_flt.c	2013-11-11 23:55:16.818732551 +0000
+@@ -28,9 +28,17 @@
+ main (void)
+ {
+   mpfr_t x, y;
+-  float f, g, infp;
++  float f, g;
+   int i;
++#if !defined(MPFR_ERRDIVZERO)
++  float infp;
++#endif
+ 
++  tests_start_mpfr ();
++
++#if !defined(MPFR_ERRDIVZERO)
++  /* The definition of DBL_POS_INF involves a division by 0. This makes
++     "clang -O2 -fsanitize=undefined -fno-sanitize-recover" fail. */
+   infp = (float) DBL_POS_INF;
+   if (infp * 0.5 != infp)
+     {
+@@ -38,8 +46,7 @@
+       fprintf (stderr, "(this is probably a compiler bug, please report)\n");
+       exit (1);
+     }
+-
+-  tests_start_mpfr ();
++#endif
+ 
+   mpfr_init2 (x, 24);
+   mpfr_init2 (y, 24);
+@@ -353,6 +360,7 @@
+       printf ("expected %.8e, got %.8e\n", g, f);
+       exit (1);
+     }
++#if !defined(MPFR_ERRDIVZERO)
+   f = mpfr_get_flt (x, MPFR_RNDN); /* first round to 2^128 (even rule),
+                                       thus we should get +Inf */
+   g = infp;
+@@ -376,6 +384,7 @@
+       printf ("expected %.8e, got %.8e\n", g, f);
+       exit (1);
+     }
++#endif
+ 
+   mpfr_clear (x);
+   mpfr_clear (y);
+diff -Naur mpfr-3.1.2.orig/tests/tset_ld.c mpfr-3.1.2/tests/tset_ld.c
+--- mpfr-3.1.2.orig/tests/tset_ld.c	2013-03-13 15:37:44.000000000 +0000
++++ mpfr-3.1.2/tests/tset_ld.c	2013-11-11 23:55:16.818732551 +0000
+@@ -47,8 +47,11 @@
+ static int
+ Isnan_ld (long double d)
+ {
+-  double e = (double) d;
+-  if (DOUBLE_ISNAN (e))
++  /* Do not convert d to double as this can give an overflow, which
++     may confuse compilers without IEEE 754 support (such as clang
++     -fsanitize=undefined), or trigger a trap if enabled.
++     The DOUBLE_ISNAN macro should work fine on long double. */
++  if (DOUBLE_ISNAN (d))
+     return 1;
+   LONGDOUBLE_NAN_ACTION (d, goto yes);
+   return 0;

-----------------------------------------------------------------------

Summary of changes:
 BOOK/cross-tools/common/mpfr.xml          |    8 +
 BOOK/final-system/common/mpfr.xml         |    4 +
 BOOK/final-system/multilib/mpfr-64bit.xml |    8 +
 BOOK/final-system/multilib/mpfr-n32.xml   |    8 +
 BOOK/final-system/multilib/mpfr.xml       |    8 +
 BOOK/materials/common/patches.xml         |    9 +
 BOOK/patches.ent                          |    4 +
 BOOK/temp-system/64/mpfr.xml              |    8 +
 BOOK/temp-system/common/mpfr.xml          |    8 +
 BOOK/temp-system/multilib/mpfr.xml        |    8 +
 patches/mpfr-3.1.2-fixes-1.patch          |  737 +++++++++++++++++++++++++++++
 11 files changed, 810 insertions(+), 0 deletions(-)
 create mode 100644 patches/mpfr-3.1.2-fixes-1.patch


hooks/post-receive
-- 
Cross-LFS Book



More information about the Clfs-commits mailing list