## This reproduces a bug with instrumentation crashes on internal call # REQUIRES: x86_64-linux,bolt-runtime,target=x86_64{{.*}} # RUN: llvm-mc -filetype=obj -triple x86_64-unknown-unknown %s -o %t.o # Delete our BB symbols so BOLT doesn't mark them as entry points # RUN: llvm-strip --strip-unneeded %t.o # RUN: %clang %cflags %t.o -o %t.exe -Wl,-q # RUN: llvm-bolt --instrument %t.exe --relocs -o %t.out .text .globl _start .type _start, %function .p2align 4 _start: call main ret .size _start, .-_start .globl main .type main, %function .p2align 4 main: push %rbp mov %rsp,%rbp push %r12 push %rbx sub $0x120,%rsp mov $0x3,%rbx movq rel(%rip), %rdi .J1: cmp $0x0,%rbx je .J2 callq .J3 nopl (%rax,%rax,1) movabs $0xdeadbeef,%rax retq .J2: add $0x120,%rsp pop %rbx pop %r12 jmp .J4 .J3: pop %rax add $0x4,%rax dec %rbx jmp .J1 .J4: pop %rbp retq end: .size main, .-main .globl _fini .type _fini, %function .p2align 4 _fini: hlt .size _fini, .-_fini .data rel: .quad end