All of lore.kernel.org
 help / color / mirror / Atom feed
* [Buildroot] [PATCH 1/1] boot/at91bootstrap3: fix build with host GCC 15
@ 2025-07-02 10:15 Edgar Bonet via buildroot
  2025-07-06 16:02 ` Romain Naour via buildroot
  2025-07-11 10:44 ` Thomas Perale via buildroot
  0 siblings, 2 replies; 6+ messages in thread
From: Edgar Bonet via buildroot @ 2025-07-02 10:15 UTC (permalink / raw)
  To: Buildroot development; +Cc: Simon Dawson

Building at91bootstrap3 with GCC15 fails with:

    include/types.h:23:23: error: ‘bool’ cannot be defined via ‘typedef’
       23 | typedef unsigned char bool;
          |                       ^~~~
    include/types.h:23:23: note: ‘bool’ is a keyword with ‘-std=c23’ onwards

This is due to GCC 15 defaulting to the C23 language dialect.

Signed-off-by: Edgar Bonet <bonet@grenoble.cnrs.fr>
---

Tested on an Acmesystems Acqua board.

Also build-tested with a 2×2×2 test matrix:
 - GCC version:        14, 15
 - patch included:     no, yes
 - bootloader version: v3.10.3, v4.0.0
as expected, all tests passed save for those with GCC 15 without the patch.

 ...conditionally-define-bool-false-and-.patch | 47 +++++++++++++++++++
 ...conditionally-define-bool-false-and-.patch | 46 ++++++++++++++++++
 2 files changed, 93 insertions(+)
 create mode 100644 boot/at91bootstrap3/v3.10.3/0001-include-types.h-conditionally-define-bool-false-and-.patch
 create mode 100644 boot/at91bootstrap3/v4.0.0/0001-include-types.h-conditionally-define-bool-false-and-.patch

diff --git a/boot/at91bootstrap3/v3.10.3/0001-include-types.h-conditionally-define-bool-false-and-.patch b/boot/at91bootstrap3/v3.10.3/0001-include-types.h-conditionally-define-bool-false-and-.patch
new file mode 100644
index 0000000000..d4e37a86f6
--- /dev/null
+++ b/boot/at91bootstrap3/v3.10.3/0001-include-types.h-conditionally-define-bool-false-and-.patch
@@ -0,0 +1,47 @@
+From 908c65678867565a934ea5a967bfe7e204d1ccaf Mon Sep 17 00:00:00 2001
+From: Edgar Bonet <bonet@grenoble.cnrs.fr>
+Date: Wed, 25 Jun 2025 11:13:43 +0200
+Subject: [PATCH] include/types.h: conditionally define bool, false and true
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+include/types.h typedefs ‘bool’ and macro-defines ‘false’ and ‘true’.
+However, since C23, these are predefine keywords. As C23 is the default
+C dialect for GCC 15, building with this compiler fails with:
+
+    include/types.h:23:23: error: ‘bool’ cannot be defined via ‘typedef’
+       23 | typedef unsigned char bool;
+          |                       ^~~~
+    include/types.h:23:23: note: ‘bool’ is a keyword with ‘-std=c23’ onwards
+
+Fix this build failure by only defining ‘bool’, ‘false’ and ‘true’ on C
+dialects older than C23.
+
+Upstream: https://github.com/linux4sam/at91bootstrap/pull/188
+
+Signed-off-by: Edgar Bonet <bonet@grenoble.cnrs.fr>
+(cherry picked from commit 4aab60e634d588dffbd3154fd0cfce78272b750a)
+---
+ include/types.h | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/include/types.h b/include/types.h
+index 1246a4df..2c1a41cf 100644
+--- a/include/types.h
++++ b/include/types.h
+@@ -42,8 +42,11 @@ typedef signed long long s64;
+ typedef unsigned long size_t;
+ typedef signed long ssize_t;
+ 
++/* bool, false and true are predefined since C23. */
++#if __STDC_VERSION__ < 202311L
+ typedef unsigned char bool;
+ #define false	0U
+ #define true	1U
++#endif
+ 
+ #endif /* TYPES_H_ */
+-- 
+2.43.0
+
diff --git a/boot/at91bootstrap3/v4.0.0/0001-include-types.h-conditionally-define-bool-false-and-.patch b/boot/at91bootstrap3/v4.0.0/0001-include-types.h-conditionally-define-bool-false-and-.patch
new file mode 100644
index 0000000000..772a808690
--- /dev/null
+++ b/boot/at91bootstrap3/v4.0.0/0001-include-types.h-conditionally-define-bool-false-and-.patch
@@ -0,0 +1,46 @@
+From 4aab60e634d588dffbd3154fd0cfce78272b750a Mon Sep 17 00:00:00 2001
+From: Edgar Bonet <bonet@grenoble.cnrs.fr>
+Date: Wed, 25 Jun 2025 11:13:43 +0200
+Subject: [PATCH] include/types.h: conditionally define bool, false and true
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+include/types.h typedefs ‘bool’ and macro-defines ‘false’ and ‘true’.
+However, since C23, these are predefine keywords. As C23 is the default
+C dialect for GCC 15, building with this compiler fails with:
+
+    include/types.h:23:23: error: ‘bool’ cannot be defined via ‘typedef’
+       23 | typedef unsigned char bool;
+          |                       ^~~~
+    include/types.h:23:23: note: ‘bool’ is a keyword with ‘-std=c23’ onwards
+
+Fix this build failure by only defining ‘bool’, ‘false’ and ‘true’ on C
+dialects older than C23.
+
+Upstream: https://github.com/linux4sam/at91bootstrap/pull/188
+
+Signed-off-by: Edgar Bonet <bonet@grenoble.cnrs.fr>
+---
+ include/types.h | 3 +++
+ 1 file changed, 3 insertions(+)
+
+diff --git a/include/types.h b/include/types.h
+index 950b1a46..0ad9ae61 100644
+--- a/include/types.h
++++ b/include/types.h
+@@ -20,8 +20,11 @@ typedef signed long long s64;
+ typedef unsigned long size_t;
+ typedef signed long ssize_t;
+ 
++/* bool, false and true are predefined since C23. */
++#if __STDC_VERSION__ < 202311L
+ typedef unsigned char bool;
+ #define false	0U
+ #define true	1U
++#endif
+ 
+ #endif /* TYPES_H_ */
+-- 
+2.43.0
+
-- 
2.34.1
_______________________________________________
buildroot mailing list
buildroot@buildroot.org
https://lists.buildroot.org/mailman/listinfo/buildroot

^ permalink raw reply related	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2025-07-11 12:03 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2025-07-02 10:15 [Buildroot] [PATCH 1/1] boot/at91bootstrap3: fix build with host GCC 15 Edgar Bonet via buildroot
2025-07-06 16:02 ` Romain Naour via buildroot
2025-07-06 16:43   ` Edgar Bonet via buildroot
2025-07-11 10:44 ` Thomas Perale via buildroot
2025-07-11 11:07   ` Baruch Siach via buildroot
2025-07-11 12:02     ` Edgar Bonet via buildroot

This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.