18ad75c10SLang Hames# REQUIRES: asserts 28ad75c10SLang Hames# UNSUPPORTED: system-windows 38ad75c10SLang Hames# RUN: llvm-mc -triple=x86_64-unknown-linux -position-independent \ 48ad75c10SLang Hames# RUN: -filetype=obj -o %t %s 5*bfb0a518SLang Hames# RUN: llvm-jitlink -num-threads=0 -debug-only=jitlink -noexec \ 6*bfb0a518SLang Hames# RUN: -abs bar=0x01 -abs _ZTIi=0x02 %t 2>&1 \ 7*bfb0a518SLang Hames# RUN: | FileCheck %s 88ad75c10SLang Hames# 98ad75c10SLang Hames# FIXME: This test should run on windows. Investigate spurious 108ad75c10SLang Hames# 'note: command had no output on stdout or stderr' errors, then re-enable. 118ad75c10SLang Hames# 128ad75c10SLang Hames# Check that a basic .eh-frame section is recognized and parsed. We 138ad75c10SLang Hames# Expect to see two FDEs with corresponding keep-alive edges. 148ad75c10SLang Hames# 158ad75c10SLang Hames# CHECK: Adding keep-alive edge from target at {{.*}} to FDE at 168ad75c10SLang Hames# CHECK: Adding keep-alive edge from target at {{.*}} to FDE at 178ad75c10SLang Hames 188ad75c10SLang Hames .text 198ad75c10SLang Hames .file "exceptions.cpp" 208ad75c10SLang Hames .globl foo 218ad75c10SLang Hames .p2align 4, 0x90 228ad75c10SLang Hames .type foo,@function 238ad75c10SLang Hamesfoo: 248ad75c10SLang Hames .cfi_startproc 258ad75c10SLang Hames 268ad75c10SLang Hames pushq %rax 278ad75c10SLang Hames .cfi_def_cfa_offset 16 288ad75c10SLang Hames movl $4, %edi 298ad75c10SLang Hames callq __cxa_allocate_exception@PLT 308ad75c10SLang Hames movl $1, (%rax) 318ad75c10SLang Hames movq _ZTIi@GOTPCREL(%rip), %rsi 328ad75c10SLang Hames movq %rax, %rdi 338ad75c10SLang Hames xorl %edx, %edx 348ad75c10SLang Hames callq __cxa_throw@PLT 358ad75c10SLang Hames.Lfunc_end0: 368ad75c10SLang Hames .size foo, .Lfunc_end0-foo 378ad75c10SLang Hames .cfi_endproc 388ad75c10SLang Hames 398ad75c10SLang Hames .globl main 408ad75c10SLang Hames .p2align 4, 0x90 418ad75c10SLang Hames .type main,@function 428ad75c10SLang Hamesmain: 438ad75c10SLang Hames.Lfunc_begin0: 448ad75c10SLang Hames .cfi_startproc 458ad75c10SLang Hames .cfi_personality 155, DW.ref.__gxx_personality_v0 468ad75c10SLang Hames .cfi_lsda 27, .Lexception0 478ad75c10SLang Hames 488ad75c10SLang Hames pushq %rbx 498ad75c10SLang Hames .cfi_def_cfa_offset 16 508ad75c10SLang Hames .cfi_offset %rbx, -16 518ad75c10SLang Hames xorl %ebx, %ebx 528ad75c10SLang Hames.Ltmp0: 538ad75c10SLang Hames callq bar@PLT 548ad75c10SLang Hames.Ltmp1: 558ad75c10SLang Hames 568ad75c10SLang Hames movl %ebx, %eax 578ad75c10SLang Hames popq %rbx 588ad75c10SLang Hames .cfi_def_cfa_offset 8 598ad75c10SLang Hames retq 608ad75c10SLang Hames.LBB1_1: 618ad75c10SLang Hames .cfi_def_cfa_offset 16 628ad75c10SLang Hames.Ltmp2: 638ad75c10SLang Hames movq %rax, %rdi 648ad75c10SLang Hames callq __cxa_begin_catch@PLT 658ad75c10SLang Hames callq __cxa_end_catch@PLT 668ad75c10SLang Hames movl $1, %ebx 678ad75c10SLang Hames movl %ebx, %eax 688ad75c10SLang Hames popq %rbx 698ad75c10SLang Hames .cfi_def_cfa_offset 8 708ad75c10SLang Hames retq 718ad75c10SLang Hames.Lfunc_end1: 728ad75c10SLang Hames .size main, .Lfunc_end1-main 738ad75c10SLang Hames .cfi_endproc 748ad75c10SLang Hames .section .gcc_except_table,"a",@progbits 758ad75c10SLang Hames .p2align 2 768ad75c10SLang HamesGCC_except_table1: 778ad75c10SLang Hames.Lexception0: 788ad75c10SLang Hames .byte 255 798ad75c10SLang Hames .byte 156 808ad75c10SLang Hames .uleb128 .Lttbase0-.Lttbaseref0 818ad75c10SLang Hames.Lttbaseref0: 828ad75c10SLang Hames .byte 1 838ad75c10SLang Hames .uleb128 .Lcst_end0-.Lcst_begin0 848ad75c10SLang Hames.Lcst_begin0: 858ad75c10SLang Hames .uleb128 .Ltmp0-.Lfunc_begin0 868ad75c10SLang Hames .uleb128 .Ltmp1-.Ltmp0 878ad75c10SLang Hames .uleb128 .Ltmp2-.Lfunc_begin0 888ad75c10SLang Hames .byte 1 898ad75c10SLang Hames .uleb128 .Ltmp1-.Lfunc_begin0 908ad75c10SLang Hames .uleb128 .Lfunc_end1-.Ltmp1 918ad75c10SLang Hames .byte 0 928ad75c10SLang Hames .byte 0 938ad75c10SLang Hames.Lcst_end0: 948ad75c10SLang Hames .byte 1 958ad75c10SLang Hames 968ad75c10SLang Hames .byte 0 978ad75c10SLang Hames .p2align 2 988ad75c10SLang Hames 998ad75c10SLang Hames.Ltmp3: 1008ad75c10SLang Hames .quad .L_ZTIi.DW.stub-.Ltmp3 1018ad75c10SLang Hames.Lttbase0: 1028ad75c10SLang Hames .p2align 2 1038ad75c10SLang Hames 1048ad75c10SLang Hames .data 1058ad75c10SLang Hames .p2align 3 1068ad75c10SLang Hames.L_ZTIi.DW.stub: 1078ad75c10SLang Hames .quad _ZTIi 1088ad75c10SLang Hames .hidden DW.ref.__gxx_personality_v0 1098ad75c10SLang Hames .weak DW.ref.__gxx_personality_v0 110f972e4d3SFangrui Song .section .data.DW.ref.__gxx_personality_v0,"awG",@progbits,DW.ref.__gxx_personality_v0,comdat 1118ad75c10SLang Hames .p2align 3 1128ad75c10SLang Hames .type DW.ref.__gxx_personality_v0,@object 1138ad75c10SLang Hames .size DW.ref.__gxx_personality_v0, 8 1148ad75c10SLang HamesDW.ref.__gxx_personality_v0: 1158ad75c10SLang Hames .quad __gxx_personality_v0 1168ad75c10SLang Hames .ident "clang version 12.0.0 (git@github.com:llvm/llvm-project.git afd483e57d166418e94a65bd9716e7dc4c114eed)" 1178ad75c10SLang Hames .section ".note.GNU-stack","",@progbits 1188ad75c10SLang Hames .addrsig 1198ad75c10SLang Hames .addrsig_sym __gxx_personality_v0 1208ad75c10SLang Hames .addrsig_sym _ZTIi 121