From b1672234e05537a6d983d36a9ca9a1e4446dce7d Mon Sep 17 00:00:00 2001 From: Jan Janssen Date: Fri, 20 May 2022 12:47:43 +0200 Subject: [PATCH 1/2] boot: Build with C11 too --- src/boot/efi/meson.build | 2 +- src/fundamental/macro-fundamental.h | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/src/boot/efi/meson.build b/src/boot/efi/meson.build index e0edbf18a2..299a01b9be 100644 --- a/src/boot/efi/meson.build +++ b/src/boot/efi/meson.build @@ -187,7 +187,7 @@ efi_cflags = cc.get_supported_arguments( ] ) + [ '-nostdlib', - '-std=gnu99', + '-std=gnu11', '-ffreestanding', '-fshort-wchar', '-fvisibility=hidden', diff --git a/src/fundamental/macro-fundamental.h b/src/fundamental/macro-fundamental.h index 1c198f6ad9..597429dc6c 100644 --- a/src/fundamental/macro-fundamental.h +++ b/src/fundamental/macro-fundamental.h @@ -53,7 +53,7 @@ #define CONCATENATE(x, y) XCONCATENATE(x, y) #ifdef SD_BOOT - void efi_assert(const char *expr, const char *file, unsigned line, const char *function) _noreturn_; + _noreturn_ void efi_assert(const char *expr, const char *file, unsigned line, const char *function); #ifdef NDEBUG #define assert(expr) From 6c405f20a3bfa50355fbeecdae9cd718c4e4e620 Mon Sep 17 00:00:00 2001 From: Jan Janssen Date: Fri, 20 May 2022 12:49:50 +0200 Subject: [PATCH 2/2] macro: Use C11 static_assert Now that we require C11 everywhere, we can always use static_assert. --- src/fundamental/macro-fundamental.h | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/src/fundamental/macro-fundamental.h b/src/fundamental/macro-fundamental.h index 597429dc6c..083fca3e95 100644 --- a/src/fundamental/macro-fundamental.h +++ b/src/fundamental/macro-fundamental.h @@ -62,6 +62,7 @@ #define assert(expr) ({ _likely_(expr) ? VOID_0 : efi_assert(#expr, __FILE__, __LINE__, __PRETTY_FUNCTION__); }) #define assert_not_reached() efi_assert("Code should not be reached", __FILE__, __LINE__, __PRETTY_FUNCTION__) #endif + #define static_assert _Static_assert #define assert_se(expr) ({ _likely_(expr) ? VOID_0 : efi_assert(#expr, __FILE__, __LINE__, __PRETTY_FUNCTION__); }) #define memcpy(a, b, c) CopyMem((a), (b), (c)) @@ -83,15 +84,8 @@ _expr_; \ }) -#if defined(static_assert) -#define assert_cc(expr) \ - static_assert(expr, #expr) -#else -#define assert_cc(expr) \ - struct CONCATENATE(_assert_struct_, __COUNTER__) { \ - char x[(expr) ? 0 : -1]; \ - } -#endif +#define assert_cc(expr) static_assert(expr, #expr) + #define UNIQ_T(x, uniq) CONCATENATE(__unique_prefix_, CONCATENATE(x, uniq)) #define UNIQ __COUNTER__