## Check that llvm-bolt is able to read a file with DWARF Exception CFI
## information and annotate this into a disassembled function.
# RUN: llvm-mc -filetype=obj -triple x86_64-unknown-unknown %s -o %t.o
# RUN: %clang %cflags %t.o -o %t.exe
# RUN: llvm-bolt %t.exe -o %t.null --print-cfg 2>&1 | FileCheck %s
#
# CHECK: Binary Function "_Z7catchitv" after building cfg {
# CHECK: CFI Instrs : 6
# CHECK: }
# CHECK: DWARF CFI Instructions:
# CHECK: 0: OpDefCfaOffset
# CHECK: 1: OpOffset
# CHECK: 2: OpDefCfaRegister
# CHECK: 3: OpOffset
# CHECK: 4: OpOffset
# CHECK: 5: OpDefCfa
# CHECK: End of Function "_Z7catchitv"
.text
.globl main
.type main, %function
main:
# FDATA: 0 [unknown] 0 1 main 0 0 0
.cfi_startproc
.LBB000:
pushq %rbp
.cfi_def_cfa_offset 16
.cfi_offset %rbp, -16
movq %rsp, %rbp
.cfi_def_cfa_register %rbp
movl $0x400c4c, %esi
movl $0x6012e0, %edi
callq _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
movl $0x400908, %esi
movq %rax, %rdi
callq _ZNSolsEPFRSoS_E@PLT
callq _Z7catchitv
movl $0x0, %eax
leave
.cfi_def_cfa %rsp, 8
retq
.cfi_endproc
.size main, .-main
.globl _Z7catchitv
.type _Z7catchitv, %function
_Z7catchitv:
# FDATA: 0 [unknown] 0 1 _Z7catchitv 0 0 0
.cfi_startproc
.LBB00:
pushq %rbp
.cfi_def_cfa_offset 16
.cfi_offset %rbp, -16
movq %rsp, %rbp
.cfi_def_cfa_register %rbp
pushq %r12
pushq %rbx
subq $0x10, %rsp
.cfi_offset %rbx, -32
.cfi_offset %r12, -24
callq _Z5raisev
.LBB00_br: jmp .Ltmp0
# FDATA: 1 _Z7catchitv #.LBB00_br# 1 _Z7catchitv #.Ltmp0# 0 0
.LLP0:
cmpq $0x1, %rdx
.LLP0_br: je .Ltmp1
# FDATA: 1 _Z7catchitv #.LLP0_br# 1 _Z7catchitv #.Ltmp1# 0 0
# FDATA: 1 _Z7catchitv #.LLP0_br# 1 _Z7catchitv #.LFT0# 0 0
.LFT0:
movq %rax, %rdi
.LFT0_br: callq _Unwind_Resume@PLT
# FDATA: 1 _Z7catchitv #.LFT0_br# 1 _Z7catchitv #.Ltmp1# 0 0
.Ltmp1:
movq %rax, %rdi
callq __cxa_begin_catch@PLT
movq %rax, -0x18(%rbp)
movl $0x400c40, %esi
movl $0x6012e0, %edi
callq _ZStlsISt11char_traitsIcEERSt13basic_ostreamIcT_ES5_PKc@PLT
.Ltmp1_br: jmp .Ltmp2
# FDATA: 1 _Z7catchitv #.Ltmp1_br# 1 _Z7catchitv #.Ltmp2# 0 0
.LLP1:
movl %edx, %ebx
movq %rax, %r12
callq __cxa_end_catch@PLT
movq %r12, %rax
movslq %ebx, %rdx
movq %rax, %rdi
.LLP1_br: callq _Unwind_Resume@PLT
# FDATA: 1 _Z7catchitv #.LLP1_br# 1 _Z7catchitv #.Ltmp2# 0 0
.Ltmp2:
.Ltmp2_br: callq __cxa_end_catch@PLT
# FDATA: 1 _Z7catchitv #.Ltmp2_br# 1 _Z7catchitv #.Ltmp0# 0 0
.Ltmp0:
addq $0x10, %rsp
popq %rbx
popq %r12
leave
.cfi_def_cfa %rsp, 8
retq
.cfi_endproc
.size _Z7catchitv, .-_Z7catchitv