Re: tinyconfig: kernel/time/timekeeping.c:286:1: error: no return statement in function returning non-void [-Werror=return-type]

From: Adrian Hunter
Date: Wed Apr 10 2024 - 11:35:35 EST


On 10/04/24 16:03, Adrian Hunter wrote:
> On 10/04/24 13:56, Naresh Kamboju wrote:
>> The powerpc,s390, superSh and sparc tinyconfig builds failed due to
>> following build
>> warnings / errors on the Linux next-20240410 with gcc-13 and gcc-11.
>>
>> List build failures:
>> ---
>> * s390, build
>> - gcc-13-tinyconfig - failed
>> - gcc-8-tinyconfig - failed
>>
>> * sh, build
>> - gcc-11-tinyconfig - failed
>>
>> * sparc, build
>> - gcc-11-tinyconfig - failed
>>
>> * mips, build
>> - gcc-12-tinyconfig - failed
>> - gcc-8-tinyconfig - failed
>>
>> * powerpc, build
>> - gcc-13-tinyconfig - failed
>> - gcc-8-tinyconfig - failed
>>
>> Reported-by: Linux Kernel Functional Testing <lkft@xxxxxxxxxx>
>>
>> Build log:
>> --------
>> kernel/time/timekeeping.c: In function 'timekeeping_debug_get_ns':
>> kernel/time/timekeeping.c:286:1: error: no return statement in
>> function returning non-void [-Werror=return-type]
>> 286 | }
>> | ^
>> cc1: some warnings being treated as errors
>
> Using unreachable() in the default BUG() seems to make this go
> away.
>
> diff --git a/include/asm-generic/bug.h b/include/asm-generic/bug.h
> index 6e794420bd39..891bd9b0be70 100644
> --- a/include/asm-generic/bug.h
> +++ b/include/asm-generic/bug.h
> @@ -156,7 +156,7 @@ extern __printf(1, 2) void __warn_printk(const char *fmt, ...);
>
> #else /* !CONFIG_BUG */
> #ifndef HAVE_ARCH_BUG
> -#define BUG() do {} while (1)
> +#define BUG() do { do {} while (1) ; unreachable(); } while (0)
> #endif
>
> #ifndef HAVE_ARCH_BUG_ON
>

Patch here:

https://lore.kernel.org/all/20240410153212.127477-1-adrian.hunter@xxxxxxxxx/