[LowerTypeTests] Add ENDBR to .cfi.jumptable for x86 Indirect Branch Tracking
authorFangrui Song <i@maskray.me>
Wed, 4 Jan 2023 20:28:07 +0000 (12:28 -0800)
committerFangrui Song <i@maskray.me>
Wed, 4 Jan 2023 20:28:07 +0000 (12:28 -0800)
commit73c9f167ffed8454e80b584ac2f75f817f90eca0
tree1b08fa0eb42bdfc65f4cf8efe02c83f0f1858059
parent9768a71a5ee04df88e35c02657ab29b418f5fd31
[LowerTypeTests] Add ENDBR to .cfi.jumptable for x86 Indirect Branch Tracking

Similar to D81251 for AArch64 BTI. This fixes `./a.out test` for

```
void foo(void) {}
void bar(void) {}
static void (*fptr)(void);
int main(int argc, char **argv) {
  if (argv[1]) fptr = foo;
  else fptr = bar;
  fptr();
}
```

`clang -flto=thin -fvisibility=hidden -fsanitize=cfi-icall -fcf-protection=branch -fuse-ld=lld a.cc`

Reviewed By: tejohnson

Differential Revision: https://reviews.llvm.org/D140655
llvm/lib/Transforms/IPO/LowerTypeTests.cpp
llvm/test/Transforms/LowerTypeTests/function.ll
llvm/test/Transforms/LowerTypeTests/x86-jumptable.ll [new file with mode: 0644]