https://gcc.gnu.org/bugzilla/show_bug.cgi?id=119279

--- Comment #9 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
(In reply to peterz from comment #8)
> There is the additional constraint that as long as the frame pointer
> unwinder does not have to guess, it is assumed to be 100% correct.
> 
> By having calls before frame setup, we get functions missing from the
> unwind. This means that unwind can no longer be relied upon to determine
> live-ness of a function.
> 
> Live Patch in particular relies on this; it needs to determine if a
> function is in-use. Notably replacing functions that are in-use is a
> very bad idea.

So you build with -fno-optimize-sibling-calls and somehow ensure that the
kernel never uses [[gnu::musttail]], [[clang::musttail]] or
__attribute__((musttail)) (those will tail call even if
-fno-optimize-sibling-calls)?
Because as I said earlier, tail calls will also never show up in frame pointer
based backtraces and even for DWARF they will show there with smart consumers
only sometimes (no indirect tail calls in the callers and call graph where it
is proven it must have been some particular tail call).

Reply via email to