forked from OSchip/llvm-project
25 lines
873 B
Plaintext
25 lines
873 B
Plaintext
# Check that llvm-bolt retpoline all indirect branches and the resulting binary
|
|
# correctly runs.
|
|
|
|
REQUIRES: x86_64-linux
|
|
|
|
RUN: %clangxx %S/Inputs/retpoline_synthetic.cpp -fno-jump-tables -Wl,-q,-znow \
|
|
RUN: -O2 -o %t.exe
|
|
RUN: llvm-bolt %t.exe -o %t -insert-retpolines -trap-old-code
|
|
|
|
# Check indirect calls in the original binary
|
|
RUN: llvm-objdump -d %t.exe | FileCheck %s -check-prefix=CHECK-CALL-ORIG
|
|
CHECK-CALL-ORIG: callq *
|
|
# No indirect jumps
|
|
RUN: llvm-objdump -d -j ".text" %t | FileCheck %s -check-prefix=CHECK-JUMP-ORIG
|
|
CHECK-JUMP-ORIG-NOT: jmpq *
|
|
|
|
# Check that there are no indirect calls or jumps in the resulting binary
|
|
RUN: llvm-objdump -d %t | FileCheck %s -check-prefix=CHECK-CALL
|
|
CHECK-CALL-NOT: callq *
|
|
RUN: llvm-objdump -d -j ".text" %t | FileCheck %s -check-prefix=CHECK-JUMP
|
|
CHECK-JUMP-NOT: jmpq *
|
|
|
|
RUN: %t 1000 3 | FileCheck %s
|
|
CHECK: 30000000
|