Fix: annotate bytecode interpreter for kernel stack validator
With gcc 6.1.1, kernel 4.6, with
CONFIG_STACK_VALIDATION=y, building lttng-modules master
at commit
6c09dd94 gives this warning:
lttng-modules/lttng-filter-interpreter.o: warning: objtool:
lttng_filter_interpret_bytecode()+0x58: sibling call from
callable instruction with changed frame pointer
This object implements a bytecode interpreter using an explicit
jump table.
If we define "INTERPRETER_USE_SWITCH" at the top of the file,
thus using the switch-case fallback implementation, the
warning vanishes.
We use an explicit jump table rather than a switch case whenever
possible for performance reasons.
Unfortunately objtool doesn't know how to validate this type of jump
table. So to avoid the warning we need to add an annotation to tell
objtool to ignore it.
Kernel developers has to annotate __bpf_prog_run() in the kernel for the
same reason.
Signed-off-by: Mathieu Desnoyers <mathieu.desnoyers@efficios.com>