39 lines · plain
1// REQUIRES: x862 3/// Test we correctly wrap PLT calls.4 5// RUN: llvm-mc -filetype=obj -triple=x86_64-pc-linux %s -o %t6 7// RUN: ld.lld -o %t2 %t -wrap foo -shared8// RUN: llvm-readobj -S -r %t2 | FileCheck %s9// RUN: llvm-objdump -d %t2 | FileCheck --check-prefix=DISASM %s10 11// CHECK: Relocations [12// CHECK-NEXT: Section ({{.*}}) .rela.plt {13// CHECK-NEXT: R_X86_64_JUMP_SLOT foo 0x014// CHECK-NEXT: R_X86_64_JUMP_SLOT __wrap_foo 0x015// CHECK-NEXT: R_X86_64_JUMP_SLOT _start 0x016// CHECK-NEXT: }17// CHECK-NEXT: ]18 19// DISASM: <_start>:20// DISASM-NEXT: jmp {{.*}} <__wrap_foo@plt>21// DISASM-NEXT: jmp {{.*}} <__wrap_foo@plt>22// DISASM-NEXT: jmp {{.*}} <foo@plt>23// DISASM-NEXT: jmp {{.*}} <_start@plt>24 25.global foo26foo:27 nop28 29.global __wrap_foo30__wrap_foo:31 nop32 33.global _start34_start:35 jmp foo@plt36 jmp __wrap_foo@plt37 jmp __real_foo@plt38 jmp _start@plt39