Re: [PATCH] powerpc/math_emu/efp: Include module.h

From: Christophe Leroy
Date: Thu Sep 01 2022 - 01:41:42 EST




Le 31/08/2022 à 17:20, Nathan Chancellor a écrit :
> When building with a recent version of clang, there are a couple of
> errors around the call to module_init():
>
> arch/powerpc/math-emu/math_efp.c:927:1: error: type specifier missing, defaults to 'int'; ISO C99 and later do not support implicit int [-Wimplicit-int]
> module_init(spe_mathemu_init);
> ^
> int
> arch/powerpc/math-emu/math_efp.c:927:13: error: a parameter list without types is only allowed in a function definition
> module_init(spe_mathemu_init);
> ^
> 2 errors generated.
>
> module_init() is a macro, which is not getting expanded because module.h
> is not included in this file. Add the include so that the macro can
> expand properly, clearing up the build failure.
>
> Reported-by: kernel test robot <lkp@xxxxxxxxx>
> Signed-off-by: Nathan Chancellor <nathan@xxxxxxxxxx>
> ---
>
> No Fixes tag because it seems likely that this is a transient include
> issue (the code builds with GCC). The robot blamed commit e8c07082a810
> ("Kbuild: move to -std=gnu11") but I think that just exposed these
> errors, not caused them.

Well spoted.

Seems like a GCC bug. The code builds fine but silently ignores the
issue and the following section is missing:

8 .initcall6.init 00000004 00000000 00000000 00008b30 2**2
CONTENTS, ALLOC, LOAD, RELOC, DATA

It means spe_mathemu_init() is never called.

I think it would be worth a GCC bug report.

And by the way:

Reviewed-by: Christophe Leroy <christophe.leroy@xxxxxxxxxx>
Fixes: ac6f120369ff ("powerpc/85xx: Workaroudn e500 CPU erratum A005")


>
> arch/powerpc/math-emu/math_efp.c | 1 +
> 1 file changed, 1 insertion(+)
>
> diff --git a/arch/powerpc/math-emu/math_efp.c b/arch/powerpc/math-emu/math_efp.c
> index 39b84e7452e1..aa3bb8da1cb9 100644
> --- a/arch/powerpc/math-emu/math_efp.c
> +++ b/arch/powerpc/math-emu/math_efp.c
> @@ -17,6 +17,7 @@
>
> #include <linux/types.h>
> #include <linux/prctl.h>
> +#include <linux/module.h>
>
> #include <linux/uaccess.h>
> #include <asm/reg.h>
>
> base-commit: dcf8e5633e2e69ad60b730ab5905608b756a032f