https://github.com/libffi/libffi/commit/efb98a72d8b9bdb71b4f972efced073bee3b30fc
https://github.com/libffi/libffi/commit/92d384df196a099fde384f9178864dbfe8c6b0fc

From efb98a72d8b9bdb71b4f972efced073bee3b30fc Mon Sep 17 00:00:00 2001
From: Anthony Green <green@moxielogic.com>
Date: Sun, 15 Sep 2024 07:31:33 -0400
Subject: [PATCH] Robustify floating point comparison in test

---
 testsuite/libffi.call/struct_int_float.c | 24 ++++++++++++------------
 1 file changed, 12 insertions(+), 12 deletions(-)

diff --git a/testsuite/libffi.call/struct_int_float.c b/testsuite/libffi.call/struct_int_float.c
index dab1d1fed..82685814c 100644
--- a/testsuite/libffi.call/struct_int_float.c
+++ b/testsuite/libffi.call/struct_int_float.c
@@ -54,35 +54,35 @@ int main (void)
   values[4] = &ts_arg[4];
   args[5] = &ts_type;
   values[5] = &ts_arg[5];
-  
+
   /* Initialize the cif */
   CHECK(ffi_prep_cif(&cif, ABI_NUM, 6, &ffi_type_float, args) == FFI_OK);
-  
+
   ts_arg[0].i = 1;
-  ts_arg[0].f = 1.11f;
+  ts_arg[0].f = 11.11f;
   ts_arg[1].i = 2;
-  ts_arg[1].f = 2.22f;
+  ts_arg[1].f = 22.22f;
   ts_arg[2].i = 3;
-  ts_arg[2].f = 3.33f;
+  ts_arg[2].f = 33.33f;
   ts_arg[3].i = 4;
-  ts_arg[3].f = 4.44f;
+  ts_arg[3].f = 44.44f;
   ts_arg[4].i = 5;
-  ts_arg[4].f = 5.55f;
+  ts_arg[4].f = 55.55f;
   ts_arg[5].i = 6;
-  ts_arg[5].f = 6.66f;
-  
+  ts_arg[5].f = 66.66f;
+
   printf ("%g\n", ts_arg[0].f);
   printf ("%g\n", ts_arg[1].f);
   printf ("%g\n", ts_arg[2].f);
   printf ("%g\n", ts_arg[3].f);
   printf ("%g\n", ts_arg[4].f);
   printf ("%g\n", ts_arg[5].f);
-  
+
   ffi_call(&cif, FFI_FN(struct_int_float), &rfloat, values);
 
   printf ("%g\n", rfloat);
-  
-  CHECK(rfloat == 1.11f);
+
+  CHECK(fabs(rfloat - 11.11) < FLT_EPSILON);
 
   exit(0);
 }

From 92d384df196a099fde384f9178864dbfe8c6b0fc Mon Sep 17 00:00:00 2001
From: Anthony Green <green@moxielogic.com>
Date: Sun, 15 Sep 2024 12:32:29 -0400
Subject: [PATCH] Fix floating point compare

---
 testsuite/libffi.call/struct_int_float.c | 12 ++++++------
 1 file changed, 6 insertions(+), 6 deletions(-)

diff --git a/testsuite/libffi.call/struct_int_float.c b/testsuite/libffi.call/struct_int_float.c
index 82685814..66ef6c45 100644
--- a/testsuite/libffi.call/struct_int_float.c
+++ b/testsuite/libffi.call/struct_int_float.c
@@ -14,11 +14,11 @@ typedef struct
 } test_structure_int_float;
 
 static float ABI_ATTR struct_int_float(test_structure_int_float ts1,
-                                       test_structure_int_float ts2,
-                                       test_structure_int_float ts3,
-                                       test_structure_int_float ts4,
-                                       test_structure_int_float ts5,
-                                       test_structure_int_float ts6)
+                                       test_structure_int_float ts2 __UNUSED__,
+                                       test_structure_int_float ts3 __UNUSED__,
+                                       test_structure_int_float ts4 __UNUSED__,
+                                       test_structure_int_float ts5 __UNUSED__,
+                                       test_structure_int_float ts6 __UNUSED__)
 {
   return ts1.f;
 }
@@ -82,7 +82,7 @@ int main (void)
 
   printf ("%g\n", rfloat);
 
-  CHECK(fabs(rfloat - 11.11) < FLT_EPSILON);
+  CHECK(fabs(rfloat - 11.11) < 3 * FLT_EPSILON);
 
   exit(0);
 }
