From: David Daney Date: Thu, 8 Dec 2011 04:41:45 +0000 (+1100) Subject: kernel.h: Add BUILD_BUG() macro. X-Git-Tag: next-20111212~1^2~155 X-Git-Url: https://git.karo-electronics.de/?a=commitdiff_plain;h=dfc074fbcc7f1677af3162f15d6a5e04fbcb1e28;p=karo-tx-linux.git kernel.h: Add BUILD_BUG() macro. We can place this in definitions that we expect the compiler to remove by dead code elimination. If this assertion fails, we get a nice error message at build time. The GCC function attribute error("message") was added in version 4.3, so we define a new macro __linktime_error(message) to expand to this for GCC-4.3 and later. This will give us an error diagnostic from the compiler on the line that fails. For other compilers __linktime_error(message) expands to nothing, and we have to be content with a link time error, but at least we will still get a build error. BUILD_BUG() expands to the undefined function __build_bug_failed() and will fail at link time if the compiler ever emits code for it. On GCC-4.3 and later, attribute((error())) is used so that the failure will be noted at compile time instead. Acked-by: David Howells Acked-by: David Rientjes Signed-off-by: David Daney Cc: David Rientjes Cc: DM Cc: Ralf Baechle Signed-off-by: Andrew Morton --- diff --git a/include/linux/kernel.h b/include/linux/kernel.h index 34ce1102b1c7..d0a7a0c71661 100644 --- a/include/linux/kernel.h +++ b/include/linux/kernel.h @@ -710,7 +710,7 @@ extern int __build_bug_on_failed; * BUILD_BUG - break compile if used. * * If you have some code that you expect the compiler to eliminate at - * build time, you should use BUILD_BUG_ON_USED to detect if it is + * build time, you should use BUILD_BUG to detect if it is * unexpectedly used. */ #define BUILD_BUG() \