| # 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 /dev/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 |