• David Daney's avatar
    kernel.h: add BUILD_BUG() macro · 693c2419
    David Daney authored
    commit 1399ff86 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: default avatarDavid Daney <david.daney@cavium.com>
    Acked-by: default avatarDavid Rientjes <rientjes@google.com>
    Cc: DM <dm.n9107@gmail.com>
    Cc: Ralf Baechle <ralf@linux-mips.org>
    Acked-by: default avatarDavid Howells <dhowells@redhat.com>
    Signed-off-by: default avatarAndrew Morton <akpm@linux-foundation.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@linux-foundation.org>
    [bwh: Backported to 3.2: adjust context]
    Signed-off-by: default avatarBen Hutchings <ben@decadent.org.uk>
    693c2419
kernel.h 24.2 KB