Re: [PATCH v2 0/5] Improve objtool jump table handling

From: Ard Biesheuvel
Date: Thu Oct 10 2024 - 13:50:59 EST


On Thu, 10 Oct 2024 at 14:28, Ard Biesheuvel <ardb+git@xxxxxxxxxx> wrote:
>
> From: Ard Biesheuvel <ardb@xxxxxxxxxx>
>
> 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