From 307b11179aeeab3a837ea287a5557763e99f6f89 Mon Sep 17 00:00:00 2001
From: Georg-Johann Lay <avr@gjlay.de>
Date: Sat, 16 Nov 2024 22:12:05 +0100
Subject: [PATCH] AVR: Fix building LibF7 after switching to C23.

Since r15-5327, GNU-C23 is being used as C language default.
libf7.h doesn't assume headers like stdbool.h are present
and defines bool, true and false on its own.

libgcc/config/avr/libf7/
	* libf7.h (bool, true, false): Don't define in C23 or higher.
---
 libgcc/config/avr/libf7/libf7.h | 10 +++++++---
 1 file changed, 7 insertions(+), 3 deletions(-)

diff --git a/libgcc/config/avr/libf7/libf7.h b/libgcc/config/avr/libf7/libf7.h
index 38ee27054da3..7226c0e38da9 100644
--- a/libgcc/config/avr/libf7/libf7.h
+++ b/libgcc/config/avr/libf7/libf7.h
@@ -95,12 +95,16 @@ typedef __INT64_TYPE__ int64_t;
 typedef __INT32_TYPE__ int32_t;
 typedef __INT16_TYPE__ int16_t;
 typedef __INT8_TYPE__  int8_t;
-typedef _Bool bool;
-#define false 0
-#define true  1
 #define INT8_MIN  (-1 - __INT8_MAX__)
 #define INT16_MAX __INT16_MAX__
 #define NULL ((void*) 0)
+#if defined __STDC_VERSION__ && __STDC_VERSION__ > 201710L
+/* bool, true and false are keywords.  */
+#else
+#define bool  _Bool
+#define true  1
+#define false 0
+#endif /* C23 ? */
 #endif /* IN_LIBGCC2 */
 
 #include "asm-defs.h"
-- 
GitLab