tools/mpfr: update to 4.1.1

Changes:
- Bug fixes
- Improved manual formatting

Refresh patches:
- 001-only_src.patch

Import patch fixing macro bug:
- 002-Fix-mpfr_custom_get_kind-macro-bug.patch

Signed-off-by: Nick Hainke <vincent@systemli.org>
This commit is contained in:
Nick Hainke 2022-11-24 01:28:09 +01:00 committed by Hauke Mehrtens
parent 9a542930cd
commit 6bac7bbf46
3 changed files with 80 additions and 4 deletions

View File

@ -7,12 +7,12 @@
include $(TOPDIR)/rules.mk include $(TOPDIR)/rules.mk
PKG_NAME:=mpfr PKG_NAME:=mpfr
PKG_VERSION:=4.1.0 PKG_VERSION:=4.1.1
PKG_CPE_ID:=cpe:/a:mpfr:gnu_mpfr PKG_CPE_ID:=cpe:/a:mpfr:gnu_mpfr
PKG_SOURCE_URL:=@GNU/mpfr http://www.mpfr.org/mpfr-$(PKG_VERSION) PKG_SOURCE_URL:=@GNU/mpfr http://www.mpfr.org/mpfr-$(PKG_VERSION)
PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz PKG_SOURCE:=$(PKG_NAME)-$(PKG_VERSION).tar.xz
PKG_HASH:=0c98a3f1732ff6ca4ea690552079da9c597872d30e96ec28414ee23c95558a7f PKG_HASH:=ffd195bd567dbaffc3b98b23fd00aad0537680c9896171e44fe3ff79e28ac33d
HOST_BUILD_PARALLEL:=1 HOST_BUILD_PARALLEL:=1
HOST_FIXUP:=autoreconf HOST_FIXUP:=autoreconf

View File

@ -1,6 +1,6 @@
--- a/Makefile.am --- a/Makefile.am
+++ b/Makefile.am +++ b/Makefile.am
@@ -24,7 +24,7 @@ AUTOMAKE_OPTIONS = gnu @@ -34,7 +34,7 @@ AUTOMAKE_OPTIONS = gnu
# old Automake version. # old Automake version.
ACLOCAL_AMFLAGS = -I m4 ACLOCAL_AMFLAGS = -I m4
@ -11,7 +11,7 @@
pkgconfig_DATA = mpfr.pc pkgconfig_DATA = mpfr.pc
--- a/Makefile.in --- a/Makefile.in
+++ b/Makefile.in +++ b/Makefile.in
@@ -384,7 +384,7 @@ AUTOMAKE_OPTIONS = gnu @@ -397,7 +397,7 @@ AUTOMAKE_OPTIONS = gnu
# libtoolize and in case some developer needs to switch back to an # libtoolize and in case some developer needs to switch back to an
# old Automake version. # old Automake version.
ACLOCAL_AMFLAGS = -I m4 ACLOCAL_AMFLAGS = -I m4

View File

@ -0,0 +1,76 @@
From 0ce17bae34a6c54de31b126f969d3ddd72c6bc37 Mon Sep 17 00:00:00 2001
From: Vincent Lefevre <vincent@vinc17.net>
Date: Tue, 22 Nov 2022 16:33:00 +0100
Subject: [PATCH] Fix mpfr_custom_get_kind() macro bug.
* src/mpfr.h: in the mpfr_custom_get_kind() macro, changed mpfr_ptr to
mpfr_srcptr for _x to agree with the function prototype, in order to
avoid a compilation failure of user code in some cases. This bug was
introduced by commit 9f94e0311ed53d0c64d4fbca249d19cc4888027e, which
introduced the temporary variable _x to avoid an incorrect number of
evaluations of the x argument.
* tests/tstckintc.c: improved the tests to detect this bug.
This should fix mpfr bug #1.
Bug initially reported by FX Coudert:
https://github.com/CGAL/cgal/issues/7064
It affects Fedora Linux:
https://bugzilla.redhat.com/show_bug.cgi?id=2144197
---
src/mpfr.h | 2 +-
tests/tstckintc.c | 10 +++++++---
2 files changed, 8 insertions(+), 4 deletions(-)
--- a/src/mpfr.h
+++ b/src/mpfr.h
@@ -1027,7 +1027,7 @@ __MPFR_DECLSPEC int mpfr_total_order_p (
#if __GNUC__ > 2 || __GNUC_MINOR__ >= 95
#define mpfr_custom_get_kind(x) \
__extension__ ({ \
- mpfr_ptr _x = (x); \
+ mpfr_srcptr _x = (x); \
_x->_mpfr_exp > __MPFR_EXP_INF ? \
(mpfr_int) MPFR_REGULAR_KIND * MPFR_SIGN (_x) \
: _x->_mpfr_exp == __MPFR_EXP_INF ? \
--- a/tests/tstckintc.c
+++ b/tests/tstckintc.c
@@ -295,14 +295,16 @@ static void
test_nan_inf_zero (void)
{
mpfr_ptr val;
+ mpfr_srcptr sval; /* for compilation error checking */
int sign;
int kind;
reset_stack ();
val = new_mpfr (MPFR_PREC_MIN);
+ sval = val;
mpfr_set_nan (val);
- kind = (mpfr_custom_get_kind) (val);
+ kind = (mpfr_custom_get_kind) (sval);
if (kind != MPFR_NAN_KIND)
{
printf ("mpfr_custom_get_kind error: ");
@@ -380,7 +382,8 @@ static long *
dummy_set_si (long si)
{
mpfr_t x;
- long * r = dummy_new ();
+ mpfr_srcptr px; /* for compilation error checking */
+ long *r = dummy_new ();
int i1, i2, i3, i4, i5;
/* Check that the type "void *" can be used, like with the function.
@@ -405,7 +408,8 @@ dummy_set_si (long si)
MPFR_ASSERTN (i5 == 1);
mpfr_set_si (x, si, MPFR_RNDN);
- r[0] = mpfr_custom_get_kind (x);
+ px = x;
+ r[0] = mpfr_custom_get_kind (px);
/* Check that the type "void *" can be used in C, like with the function
(forbidden in C++). Also check side effects. */