Skip to content

Commit 63b2450

Browse files
authored
Merge pull request #522 from fosslinux/mpfr-fixup
mpfr: remove pregenerated files
2 parents 955fa21 + a7e0cc5 commit 63b2450

File tree

3 files changed

+62
-6
lines changed

3 files changed

+62
-6
lines changed

steps/SHA256SUMS.pkgs

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -49,13 +49,13 @@ f6c65eef86aa9f5317396a8443b25ed87a18f72d07dfd2231a594aa2c1a68942 findutils-4.2.
4949
2ba6bfb20ab603787a95bf293742f36cfd8270c616073a880bc6d0c703e2c870 flex-2.5.33_0.tar.bz2
5050
9e898068d570b5cfa016f0e14819d7f7a6577bae9177ef1e9bb62866d5b0f0b9 flex-2.6.4_0.tar.bz2
5151
c925739472260498342ba6dc3263da937abf5237e7e9102622bf5657ec98094a gawk-3.0.4_0.tar.bz2
52-
14c3c0b85ec7f98654496931b9ac0e0cea2f4d466724f1b72dbd5e6e68cf0b02 gawk-5.3.0_0.tar.bz2
52+
ce0a69589791196818d59ee49a76391741999ce9fcb6ab72bdbd6d5197df0cf3 gawk-5.3.0_0.tar.bz2
5353
b4fafdabdbd8c1f9f7c96fc4677023a8151fe2afe0702e3dee920157b30deb98 gc-8.0.4_0.tar.bz2
54-
a151c33be67b0d41b7470c20b5265c079bf7f83194e859dbdfbed308da9a64bd gcc-10.5.0_0.tar.bz2
55-
61c5fb7da5c77ea3395a6b56f08c2285c279f6deb10712cce9395643a2373c70 gcc-15.2.0_0.tar.bz2
54+
1edee9931fd23d02bf3f706cb43de3c141fbd8f9d3a1bf636ed460acaac2c5eb gcc-10.5.0_0.tar.bz2
55+
a2d4f9099ef92f8bd79f65a384764622a0aa50b5488826aef8a3afef8d57e46b gcc-15.2.0_0.tar.bz2
5656
d34de902de6de9204abedb834c4c39fbb95b993e545fbb090de2b028fa1d4a61 gcc-4.0.4_0.tar.bz2
5757
2f13b3306832d882536c97d0302f2ec1801193086dbbe62388f930858e5728a3 gcc-4.0.4_1.tar.bz2
58-
2c5268956c09c71efd6c793773dd2d8133274b6c846ec63cd67218af9080bd3d gcc-4.7.4_0.tar.bz2
58+
c523aff079101ce282793efc00934cf2ca20de58109a42746002c112c526b65f gcc-4.7.4_0.tar.bz2
5959
4791285848460b6645e1ece7d53d836900529d52af7cbab86978bddf687acfa2 gettext-0.21_0.tar.bz2
6060
96f33b53c24f5f46a23c2b9eef8147e684c796889a83bdd39254a73393594a49 gmp-6.2.1_0.tar.bz2
6161
8138c02c4fef718c97827f1d6476e2fc83433ff06eff4820b53589b5419b7e15 gperf-3.1_0.tar.bz2
@@ -84,7 +84,7 @@ d4dff784cac3d58d0cedfd9a51b52ff100ad8654e10a7c8c41590351f48f57d6 m4-1.4.7_0.tar
8484
38611790ea602063095c2819672932cbfbc29cd1244b68a8f46123e76a1ad630 make-3.82_0.tar.bz2
8585
d477947e4df6f4964fae00c9c16850caf0c8e3b09771007fcca1fec8f6da9d6e make-4.2.1_0.tar.bz2
8686
88318fd096fe26688f8e56a77f303b24eaa5674f1b77d9bd0d0538066a0e6f99 mpc-1.2.1_0.tar.bz2
87-
84bc11e89ab9427be5b142e51cfaba7565d88738e5373bb7f59fb6a8d74aba6c mpfr-4.1.0_0.tar.bz2
87+
d62c1bc02f67f12a1240390b9aae0ff3708229d660b9780dca5bf5e77867407c mpfr-4.1.0_0.tar.bz2
8888
becc0745a5a4b831dca4d4d8a6c463452922739832f66760e8238e6486039832 musl-1.1.24_0.tar.bz2
8989
ed34943339fea3ff414e851134dc2f32b68221e8eeead0ec675eeb2a9208447d musl-1.1.24_1.tar.bz2
9090
ded6ecc93cc194f5b22be26c6547c63a4b84959785212fded100440f71da1802 musl-1.1.24_2.tar.bz2

steps/mpfr-4.1.0/pass1.sh

Lines changed: 29 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,16 @@
55
src_prepare() {
66
default
77

8-
find . -name '*.info' -delete
8+
# Remove pregenerated table in strtofr.c
9+
sed -i '/^ {/,/ };$/d' src/strtofr.c
10+
cp src/strtofr.c{,.old}
11+
sed -i '/int RedInvLog2Table/ s/$/};/' src/strtofr.c
12+
13+
rm doc/*.info
14+
15+
# testfiles
16+
rm tests/tfpif_*.dat tests/tstrtofr.c
17+
918
AUTOMAKE=automake-1.15 ACLOCAL=aclocal-1.15 autoreconf-2.69 -fi
1019
}
1120

@@ -21,6 +30,25 @@ src_configure() {
2130

2231
src_compile() {
2332
make "${MAKEJOBS}" MAKEINFO=true DESTDIR="${DESTDIR}"
33+
34+
pushd src
35+
cat > strtofr_gen.c <<EOF
36+
#include <stdio.h>
37+
#include <gmp.h>
38+
#include <mpfr.h>
39+
EOF
40+
# Enable the bit of code that generates the table
41+
sed -n '/^#define N 8$/,/^}$/p' strtofr.c >> strtofr_gen.c
42+
gcc strtofr_gen.c -o strtofr_gen -std=gnu99 -I. -L.libs -lmpfr -lgmp
43+
# ordering of 2>&1 >/dev/null is intentional here;
44+
# stdout -> null
45+
# stderr -> file (NOT null)
46+
./strtofr_gen 2>strtofr_table >/dev/null
47+
echo "};" >> strtofr_table
48+
sed "/int RedInvLog2Table/ r strtofr_table" strtofr.c.old > strtofr.c
49+
popd
50+
51+
make "${MAKEJOBS}" MAKEINFO=true DESTDIR="${DESTDIR}"
2452
}
2553

2654
src_install() {
Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
SPDX-FileCopyrightText: 2025 fosslinux <[email protected]>
2+
3+
SPDX-License-Identifier: GPL-3.0-or-later
4+
5+
The code to generate the table in strtofr.c was written in 2004 and not
6+
updated since. Not sure if this case was ever actually handled.
7+
Without this check, we end up dividing by zero, which creates problematic
8+
results.
9+
To fix this, check if the divisor is zero, and if it is, early exit (and
10+
fill the rest of the continued fraction with zeros).
11+
12+
--- mpfr-4.1.0/src/strtofr.c 2025-10-03 22:15:37.527948986 +1000
13+
+++ mpfr-4.1.0/src/strtofr.c 2025-10-03 22:18:18.480958600 +1000
14+
@@ -136,6 +136,14 @@
15+
mpfr_floor (y, x);
16+
tab[i] = mpfr_get_ui (y, MPFR_RNDN);
17+
mpfr_sub (x, x, y, MPFR_RNDN);
18+
+ if (mpfr_zero_p(x))
19+
+ {
20+
+ for (i++; i < N; i++)
21+
+ {
22+
+ tab[i] = 0;
23+
+ }
24+
+ break;
25+
+ }
26+
mpfr_ui_div (x, 1, x, MPFR_RNDN);
27+
}
28+
for (i = N-1 ; i >= 0 ; i--)

0 commit comments

Comments
 (0)