[Buildroot] [PATCH] package/uclibc: fix for gcc libquadmath conflict

Waldemar Brodkorb <[email protected]>
Newsgroups net.busybox.buildroot
Message-ID <[email protected]>
As seen in the Buildroot autobuilders, struct rm_ctx should
not be exposed in the public fenv.h header.

Fixes:
 - https://autobuild.buildroot.net/results/761/7613538e0847a10eb3e2a7e40f3ae76386ac015b/

Signed-off-by: Waldemar Brodkorb <[email protected]>
---
 ...tx-should-be-private-and-not-exposed.patch | 151 ++++++++++++++++++
 1 file changed, 151 insertions(+)
 create mode 100644 package/uclibc/0003-fenv-struct-rm_ctx-should-be-private-and-not-exposed.patch

diff --git a/package/uclibc/0003-fenv-struct-rm_ctx-should-be-private-and-not-exposed.patch b/package/uclibc/0003-fenv-struct-rm_ctx-should-be-private-and-not-exposed.patch
new file mode 100644
index 0000000000..e77f079dcc
--- /dev/null
+++ b/package/uclibc/0003-fenv-struct-rm_ctx-should-be-private-and-not-exposed.patch
@@ -0,0 +1,151 @@
+From 1105fd6c97f020f6ca7426e19d29081f404b567d Mon Sep 17 00:00:00 2001
+From: Waldemar Brodkorb <[email protected]>
+Date: Tue, 18 Aug 2026 18:13:29 +0200
+Subject: [PATCH] fenv: struct rm_ctx should be private and not exposed in a
+ public header
+
+Upstream: https://gogs.waldemar-brodkorb.de/oss/uclibc-ng/commit/1105fd6c97f020f6ca7426e19d29081f404b567d
+Signed-off-by: Waldemar Brodkorb <[email protected]>
+---
+ include/fenv.h              | 10 ----------
+ include/fenv_private.h      | 24 ++++++++++++++++++++++++
+ libm/aarch64/fenv_private.h |  1 +
+ libm/arc/fenv_private.h     |  1 +
+ libm/arm/fenv_private.h     |  1 +
+ libm/csky/fenv_private.h    |  1 +
+ libm/mips/fenv_private.h    |  1 +
+ libm/sparc/fenv_private.h   |  1 +
+ 8 files changed, 30 insertions(+), 10 deletions(-)
+ create mode 100644 include/fenv_private.h
+
+diff --git a/include/fenv.h b/include/fenv.h
+index 4b532c573..34042d5ac 100644
+--- a/include/fenv.h
++++ b/include/fenv.h
+@@ -1,5 +1,4 @@
+ /* Copyright (C) 1997, 1999, 2000 Free Software Foundation, Inc.
+-   This file is part of the GNU C Library.
+ 
+    The GNU C Library is free software; you can redistribute it and/or
+    modify it under the terms of the GNU Lesser General Public
+@@ -131,15 +130,6 @@ extern int fedisableexcept (int __excepts) __THROW;
+ extern int fegetexcept (void) __THROW;
+ #endif
+ 
+-/* Rounding mode context.  This allows functions to set/restore rounding mode
+-   only when the desired rounding mode is different from the current rounding
+-   mode.  */
+-struct rm_ctx
+-{
+-  fenv_t env;
+-  bool updated_status;
+-};
+-
+ __END_DECLS
+ 
+ #endif /* fenv.h */
+diff --git a/include/fenv_private.h b/include/fenv_private.h
+new file mode 100644
+index 000000000..5e81c71aa
+--- /dev/null
++++ b/include/fenv_private.h
+@@ -0,0 +1,24 @@
++/* Copyright (C) 1997, 1999, 2000 Free Software Foundation, Inc.
++
++   The GNU C Library is free software; you can redistribute it and/or
++   modify it under the terms of the GNU Lesser General Public
++   License as published by the Free Software Foundation; either
++   version 2.1 of the License, or (at your option) any later version.
++
++   The GNU C Library is distributed in the hope that it will be useful,
++   but WITHOUT ANY WARRANTY; without even the implied warranty of
++   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
++   Lesser General Public License for more details.
++
++   You should have received a copy of the GNU Lesser General Public
++   License along with the GNU C Library; if not, see
++   <http://www.gnu.org/licenses/>.  */
++
++/* Rounding mode context.  This allows functions to set/restore rounding mode
++   only when the desired rounding mode is different from the current rounding
++   mode.  */
++struct rm_ctx
++{
++  fenv_t env;
++  bool updated_status;
++};
+diff --git a/libm/aarch64/fenv_private.h b/libm/aarch64/fenv_private.h
+index 5afb790ea..3eaf0eb3f 100644
+--- a/libm/aarch64/fenv_private.h
++++ b/libm/aarch64/fenv_private.h
+@@ -19,6 +19,7 @@
+ #define AARCH64_FENV_PRIVATE_H 1
+ 
+ #include <fenv.h>
++#include <fenv_private.h>
+ #include <fpu_control.h>
+ 
+ static __always_inline void
+diff --git a/libm/arc/fenv_private.h b/libm/arc/fenv_private.h
+index 5f74c5e13..2e985722f 100644
+--- a/libm/arc/fenv_private.h
++++ b/libm/arc/fenv_private.h
+@@ -19,6 +19,7 @@
+ #define _FENV_PRIVATE_H 1
+ 
+ #include <fenv.h>
++#include <fenv_private.h>
+ #include "get-rounding-mode.h"
+ 
+ /* The standards only specify one variant of the fenv.h interfaces.
+diff --git a/libm/arm/fenv_private.h b/libm/arm/fenv_private.h
+index 566bf443c..61418d9f4 100644
+--- a/libm/arm/fenv_private.h
++++ b/libm/arm/fenv_private.h
+@@ -19,6 +19,7 @@
+ #define ARM_FENV_PRIVATE_H 1
+ 
+ #include <fenv.h>
++#include <fenv_private.h>
+ #include <fpu_control.h>
+ 
+ static __always_inline void
+diff --git a/libm/csky/fenv_private.h b/libm/csky/fenv_private.h
+index f0f48a88a..e6015abee 100644
+--- a/libm/csky/fenv_private.h
++++ b/libm/csky/fenv_private.h
+@@ -19,6 +19,7 @@
+ #define CSKY_FENV_PRIVATE_H 1
+ 
+ #include <fenv.h>
++#include <fenv_private.h>
+ #include <fpu_control.h>
+ #include "fenv_libc.h"
+ 
+diff --git a/libm/mips/fenv_private.h b/libm/mips/fenv_private.h
+index bc9be3b62..273d6faf8 100644
+--- a/libm/mips/fenv_private.h
++++ b/libm/mips/fenv_private.h
+@@ -24,6 +24,7 @@
+    code instead.  */
+ 
+ #include <fenv.h>
++#include <fenv_private.h>
+ #include "fenv_libc.h"
+ #include <fpu_control.h>
+ 
+diff --git a/libm/sparc/fenv_private.h b/libm/sparc/fenv_private.h
+index b888d8442..c76fbad7f 100644
+--- a/libm/sparc/fenv_private.h
++++ b/libm/sparc/fenv_private.h
+@@ -2,6 +2,7 @@
+ #define SPARC_FENV_PRIVATE_H 1
+ 
+ #include <fenv.h>
++#include <fenv_private.h>
+ #include <fpu_control.h>
+ 
+ /* For internal use only: access the fp state register.  */
+-- 
+2.47.3
+
-- 
2.47.3

_______________________________________________
buildroot mailing list
[email protected]
https://lists.buildroot.org/mailman/listinfo/buildroot
lmpx.com only provides a reader for public news (NNTP) servers. It is not affiliated with the servers or forums shown here and is not responsible for the content of articles, which is written by their respective authors.