From: David Daney Date: Tue, 10 Jan 2012 23:07:25 +0000 (-0800) Subject: kernel.h: add BUILD_BUG() macro X-Git-Tag: v3.2.69~212 X-Git-Url: http://git.openpandora.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=693c24191a7fec64311458b21ce0126d99059606;p=pandora-kernel.git kernel.h: add BUILD_BUG() macro commit 1399ff86f2a2bbacbbe68fa00c5f8c752b344723 upstream. 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. Signed-off-by: David Daney Acked-by: David Rientjes Cc: DM Cc: Ralf Baechle Acked-by: David Howells Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds [bwh: Backported to 3.2: adjust context] Signed-off-by: Ben Hutchings --- diff --git a/include/linux/compiler-gcc4.h b/include/linux/compiler-gcc4.h index e2a360ad6108..59a7e4cd9d7b 100644 --- a/include/linux/compiler-gcc4.h +++ b/include/linux/compiler-gcc4.h @@ -29,6 +29,8 @@ the kernel context */ #define __cold __attribute__((__cold__)) +#define __linktime_error(message) __attribute__((__error__(message))) + /* * GCC 'asm goto' miscompiles certain code sequences: * Reading git-diff-tree failed