From ef0e66c42ccb585b8d91b91a76ea7fe39e05363a Mon Sep 17 00:00:00 2001
From: "Arnold D. Robbins" <arnold@skeeve.com>
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     <arnold@skeeve.com>
+
+	Unrelated: Make things works when built on systems without
+	the GMP and MPFR libraries.  Thanks to Thomas Trepl <ttrepl@yahoo.de>
+	and Bruce Dubbs <bdubbs@linuxfromscratch.org> 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     <arnold@skeeve.com>
 
 	* 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

