On Thu, 10 Oct 2024 at 14:28, Ard Biesheuvel <ardb+...@google.com> wrote: > > From: Ard Biesheuvel <a...@kernel.org> > > Jump table handling has faded into the background a little due to the > fact that jump tables are [currently] disabled when enabling retpoline > mitigations and/or IBT on x86. > > However, this is likely to come back and bite us later, so it still > needs to be addressed. Given the difficulty in identifying jump tables > from .rodata references and indirect jump instructions that often have > no obvious correlation, it would be better to do this in the compiler. > > This series implements [on the objtool side] the suggestion made at GNU > Cauldron this year to annotate the indirect jump with a R_X86_64_NONE > relocation that refers to the jump table, and ensure that it is covered > by a STT_OBJECT symbol whose size accurately reflects the size of the > jump table. >
For the adventurous, I have a branch [0] that implements the first part of this in Clang. Getting the jump table emitted as a STT_OBJECT with a proper size shouldn't be too hard either, but I'll look into that later. [0] https://github.com/ardbiesheuvel/llvm-project/tree/jump-table-annotations