bug.h: Fix up CONFIG_BUG=n implicit function declarations.
PATCH 1/1 bug.h: Fix up CONFIG_BUG=n implicit function declarations.
2603efa31a0377eeaa06723bded8a1d644dd4901 (bug.h: Fix up powerpc build regression.) corrected the powerpc build case and extended the __ASSEMBLY__ guards, but it also got caught in pre-processor hell accidentally matching the else case of CONFIG_BUG resulting in the BUG disabled case tripping up on -Werror=implicit-function-declaration.
It's not possible to __ASSEMBLY__ guard the entire file as architecture code needs to get at the BUGFLAG_WARNING definition in the GENERIC_BUG case, but the rest of the CONFIG_BUG=y/n case needs to be guarded. Rather than littering endless __ASSEMBLY__ checks in each of the if/else cases we just move the BUGFLAG definitions up under their own GENERIC_BUG test and then shove everything else under one big __ASSEMBLY__ guard.
Build tested on all of x86 CONFIG_BUG=y, CONFIG_BUG=n, powerpc (due to it's dependence on BUGFLAG definitions in assembly code), and sh (due to not bringing in linux/kernel.h to satisfy the taint flag definitions used by the generic bug code).
Hopefully that's the end of the corner cases and I can abstain from ever having to touch this infernal header ever again.
---
include/asm-generic/bug.h | 19 +++++++++---------- 1 file changed, 9 insertions(+), 10 deletions(-)
include/asm-generic/bug.h +9 -10
@@ -3,10 +3,18 @@#include <linux/compiler.h> +#ifdef CONFIG_GENERIC_BUG +#define BUGFLAG_WARNING (1 << 0) +#define BUGFLAG_TAINT (taint) (BUGFLAG_WARNING | ((taint) << 8)) +#define BUG_GET_TAINT (bug) ((bug)->flags >> 8) +#endif + +#ifndef __ASSEMBLY__ +#include <linux/kernel.h> + #ifdef CONFIG_BUG #ifdef CONFIG_GENERIC_BUG -#ifndef __ASSEMBLY__ struct bug_entry { #ifndef CONFIG_GENERIC_BUG_RELATIVE_POINTERS unsigned long bug_addr;
@@ -23,17 +31,8 @@ struct bug_entry {#endif unsigned short flags; }; -#endif /* __ASSEMBLY__ */ - -#define BUGFLAG_WARNING (1 << 0) -#define BUGFLAG_TAINT (taint) (BUGFLAG_WARNING | ((taint) << 8)) -#define BUG_GET_TAINT (bug) ((bug)->flags >> 8) -#endif /* CONFIG_GENERIC_BUG */ -#ifndef __ASSEMBLY__ -#include <linux/kernel.h> -/* * Don't use BUG() or BUG_ON() unless there's really no way out; one * example might be detecting data structure corruption in the middle