Re: [tip:x86/tdx 8/12] vmlinux.o: warning: objtool: __tdx_hypercall+0x128: __tdx_hypercall_failed() is missing a __noreturn annotation

From: Ingo Molnar
Date: Thu Sep 14 2023 - 10:16:55 EST



* Peter Zijlstra <peterz@xxxxxxxxxxxxx> wrote:

> > It appears the __noreturn must be annotated to the function declaration
> > but not the function body. I'll send out the fix as soon as I confirm
> > the fix with LKP.
>
> FWIW, the reason being that...
>
> The point of noreturn is that the caller should know to stop generating
> code. For that the declaration needs the attribute, because call sites
> typically do not have access to the function definition in C.

BTW., arguably shouldn't the compiler generate a warning to begin with,
when it encounters a noreturn function definition whose prototype doesn't
have the attribute?

Thanks,

Ingo