42 lines
1.8 KiB
Diff
42 lines
1.8 KiB
Diff
|
From 3706b5e8e92fe6a4ff21cefe66f2eb27953a3fdf Mon Sep 17 00:00:00 2001
|
||
|
From: =?UTF-8?q?Cristian=20Rodr=C3=ADguez?= <cristian@rodriguez.im>
|
||
|
Date: Thu, 13 Jun 2024 11:59:28 -0400
|
||
|
Subject: [PATCH] fundamental: declare flex array updated for gcc15 and clang
|
||
|
19
|
||
|
|
||
|
Silly workaround that:
|
||
|
- allowed flexible arrays in unions
|
||
|
- allowed flexible arrays in otherwise empty structs
|
||
|
|
||
|
Is no longer needed since https://gcc.gnu.org/git/?p=gcc.git;a=commit;h=adb1c8a0f167c3a1f7593d75f5a10eb07a5d741a
|
||
|
(GCC15) or clang 19 https://github.com/llvm/llvm-project/commit/14ba782a87e16e9e15460a51f50e67e2744c26d9
|
||
|
|
||
|
(cherry picked from commit 3c2f2146f50c75662987541719bedc4aee9df939)
|
||
|
---
|
||
|
src/fundamental/macro-fundamental.h | 5 +++++
|
||
|
1 file changed, 5 insertions(+)
|
||
|
|
||
|
diff --git a/src/fundamental/macro-fundamental.h b/src/fundamental/macro-fundamental.h
|
||
|
index 5ccbda5186..8aca5f784a 100644
|
||
|
--- a/src/fundamental/macro-fundamental.h
|
||
|
+++ b/src/fundamental/macro-fundamental.h
|
||
|
@@ -517,6 +517,10 @@ static inline uint64_t ALIGN_OFFSET_U64(uint64_t l, uint64_t ali) {
|
||
|
} \
|
||
|
}
|
||
|
|
||
|
+/* Restriction/bug (see above) was fixed in GCC 15 and clang 19.*/
|
||
|
+#if __GNUC__ >= 15 || (defined(__clang__) && __clang_major__ >= 19)
|
||
|
+#define DECLARE_FLEX_ARRAY(type, name) type name[];
|
||
|
+#else
|
||
|
/* Declare a flexible array usable in a union.
|
||
|
* This is essentially a work-around for a pointless constraint in C99
|
||
|
* and might go away in some future version of the standard.
|
||
|
@@ -528,6 +532,7 @@ static inline uint64_t ALIGN_OFFSET_U64(uint64_t l, uint64_t ali) {
|
||
|
dummy_t __empty__ ## name; \
|
||
|
type name[]; \
|
||
|
}
|
||
|
+#endif
|
||
|
|
||
|
/* Declares an ELF read-only string section that does not occupy memory at runtime. */
|
||
|
#define DECLARE_NOALLOC_SECTION(name, text) \
|