Fix: annotate bytecode interpreter for kernel stack validator
authorMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Wed, 15 Jun 2016 18:39:41 +0000 (14:39 -0400)
committerMathieu Desnoyers <mathieu.desnoyers@efficios.com>
Wed, 15 Jun 2016 18:43:34 +0000 (14:43 -0400)
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>

No differences found
This page took 0.025978 seconds and 4 git commands to generate.