objtool: Decode jump_entry::key addend
authorPeter Zijlstra <peterz@infradead.org>
Thu, 6 May 2021 19:34:02 +0000 (21:34 +0200)
committerIngo Molnar <mingo@kernel.org>
Wed, 12 May 2021 12:54:55 +0000 (14:54 +0200)
commitcbf82a3dc241aea82b941a872ed5c52f6af527ea
treee47c96646bba61f34939a7807e371a7b00b87d0c
parente7bf1ba97afdde75b0ef43e4bdb718bf843613f1
objtool: Decode jump_entry::key addend

Teach objtool about the the low bits in the struct static_key pointer.

That is, the low two bits of @key in:

  struct jump_entry {
s32 code;
s32 target;
long key;
  }

as found in the __jump_table section. Since @key has a relocation to
the variable (to be resolved by the linker), the low two bits will be
reflected in the relocation's addend.

As such, find the reloc and store the addend, such that we can access
these bits.

Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Signed-off-by: Ingo Molnar <mingo@kernel.org>
Link: https://lore.kernel.org/r/20210506194158.028024143@infradead.org
tools/objtool/arch/x86/include/arch/special.h
tools/objtool/include/objtool/special.h
tools/objtool/special.c