On Tue, May 18, 2021 at 11:19:46AM +0200, Rasmus Villemoes wrote: > [Linux commit 6bab69c65013bed5fce9f101a64a84d0385b3946] > > BUILD_BUG_ON() is a little annoying, since it cannot be used outside > function scope. So one cannot put assertions about the sizeof() a > struct next to the struct definition, but has to hide that in some more > or less arbitrary function. > > Since gcc 4.6 (which is now also the required minimum), there is support > for the C11 _Static_assert in all C modes, including gnu89. So add a > simple wrapper for that. > > _Static_assert() requires a message argument, which is usually quite > redundant (and I believe that bug got fixed at least in newer C++ > standards), but we can easily work around that with a little macro > magic, making it optional. > > For example, adding > > static_assert(sizeof(struct printf_spec) == 8); > > in vsprintf.c and modifying that struct to violate it, one gets > > ./include/linux/build_bug.h:78:41: error: static assertion failed: > "sizeof(struct printf_spec) == 8" > #define __static_assert(expr, msg, ...) _Static_assert(expr, "" msg "") > > godbolt.org suggests that _Static_assert() has been support by clang > since at least 3.0.0. > > Signed-off-by: Rasmus Villemoes <rasmus.villem...@prevas.dk> > Reviewed-by: Simon Glass <s...@chromium.org>
Applied to u-boot/next, thanks! -- Tom
signature.asc
Description: PGP signature