From: Andi Kleen Date: Tue, 13 Sep 2005 08:25:13 +0000 (-0700) Subject: [PATCH] Make BUILD_BUG_ON fail at compile time. X-Git-Tag: v2.6.14-rc2~95 X-Git-Url: https://openfabrics.org/gitweb/?a=commitdiff_plain;h=921717a2a1cde78c9b2aa971c16510d63efe7320;p=~emulex%2Finfiniband.git [PATCH] Make BUILD_BUG_ON fail at compile time. Force a compiler error instead of a link error, because they are easier to track down. Idea stolen from code by Jan Beulich If the argument to BUILD_BUG_ON evaluates to non-zero the compiler will do: t.c:6: error: size of array `type name' is negative (surprised that gcc doesn't have an extension for this) Signed-off-by: "Andi Kleen" Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds --- diff --git a/include/linux/kernel.h b/include/linux/kernel.h index 687ba8c9973..4367ce4db52 100644 --- a/include/linux/kernel.h +++ b/include/linux/kernel.h @@ -307,8 +307,8 @@ struct sysinfo { char _f[20-2*sizeof(long)-sizeof(int)]; /* Padding: libc5 uses this.. */ }; -extern void BUILD_BUG(void); -#define BUILD_BUG_ON(condition) do { if (condition) BUILD_BUG(); } while(0) +/* Force a compilation error if condition is false */ +#define BUILD_BUG_ON(condition) ((void)sizeof(char[1 - 2*!!(condition)])) #ifdef CONFIG_SYSCTL extern int randomize_va_space;