Applied this patch as obvious after the switch to GNU-C23 in

https://gcc.gnu.org/r15-5327

Johann

--

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.
    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.

diff --git a/libgcc/config/avr/libf7/libf7.h b/libgcc/config/avr/libf7/libf7.h
index 38ee27054da..7226c0e38da 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"

Reply via email to