From ef0e66c42ccb585b8d91b91a76ea7fe39e05363a Mon Sep 17 00:00:00 2001 From: "Arnold D. Robbins" Date: Tue, 14 Jul 2026 10:14:50 +0300 Subject: [PATCH] Workaround fix for systems without MPFR and GMP. --- ChangeLog | 10 ++++++++++ awk.h | 23 ++++++++++++++--------- 2 files changed, 24 insertions(+), 9 deletions(-) diff --git ChangeLog ChangeLog index 1376843b77be..f37d4f2d85c7 100644 --- ChangeLog +++ ChangeLog @@ -1,3 +1,13 @@ +2026-07-14 Arnold D. Robbins + + Unrelated: Make things works when built on systems without + the GMP and MPFR libraries. Thanks to Thomas Trepl + and Bruce Dubbs for the reports. + + * awk.h (struct exp_node): Add alignment padding when we don't + have MPFR. This is a hack, pending a total refactoring of + the NODE structure. + 2026-07-08 Arnold D. Robbins * 5.4.1: Release tar ball made. diff --git awk.h awk.h index dbad0d810df2..f4a84300f3fc 100644 --- awk.h +++ awk.h @@ -406,17 +406,24 @@ typedef struct exp_node { } nodep; struct { -#ifdef HAVE_MPFR union { AWKNUM fltnum; +#ifdef HAVE_MPFR mpfr_t mpnum; mpz_t mpi; - } nm; - int rndmode; #else - AWKNUM fltnum; - int for_alignment_only; // especially on 32-bit -#endif + // 7/2026: + // This is a workaround for systems that build + // gawk without MPFR and GMP. The NODE struct + // desperately needs to be refactored. +#if SIZEOF_VOID_P == 4 + char alignment[28]; +#else // SIZEOF_VOID_P != 4 + char alignment[48]; +#endif // SIZEOF_VOID_P != 4 +#endif // HAVE_MPFR + } nm; + int rndmode; // only used for MPFR. char *sp; size_t slen; int idx; @@ -561,10 +568,8 @@ typedef struct exp_node { #ifdef HAVE_MPFR #define mpg_numbr sub.val.nm.mpnum #define mpg_i sub.val.nm.mpi -#define numbr sub.val.nm.fltnum -#else -#define numbr sub.val.fltnum #endif +#define numbr sub.val.nm.fltnum #define typed_re sub.val.typre /* -- 2.55.0