On Mon, Jul 31, 2023 at 11:46:12PM +0200, Peter Zijlstra wrote:
quoted
Ideally it would only print a single warning for this case, something
like:
vmlinux.o: warning: objtool: __flush_tlb_all_noinstr+0x4: indirect call to native_flush_tlb_local() leaves .noinstr.text section
But then what for the case where there are multiple implementations and
more than one isn't noinstr?
The warning would be in the loop in pv_call_dest(), so it would
potentially print multiple warnings, one for each potential dest.
IIRC that is where these double prints came from. One is the callsite
(always one) and the second is the offending implementation (but there
could be more).
It's confusing to warn about the call site and the destination in two
separate warnings. That's why I'm proposing combining them into a
single warning (which still could end up as multiple warnings if there
are multiple affected dests).
quoted
I left out "pv_ops[1]" because it's already long enough :-)
The index number is useful when also looking at the assembler, which
IIRC is an indexed indirect call.
Ok, so something like so?
vmlinux.o: warning: objtool: __flush_tlb_all_noinstr+0x4: indirect call to pv_ops[1] (native_flush_tlb_local) leaves .noinstr.text section
--
Josh