92 lines · plain
1# RUN: %clangxx %cflags -no-pie %s -o %t.exe -Wl,-q2# RUN: llvm-bolt %t.exe -o %t.exe.bolt3# RUN: %t.exe.bolt4 5# REQUIRES: system-linux6 7## Test that BOLT properly handles LPStart when LPStartEncoding is different8## from DW_EH_PE_omit.9 10# The test case compiled with -O1 from:11#12# int main() {13# try {14# throw 42;15# } catch (...) {16# return 0;17# }18# return 1;19# }20#21# The exception table was modified with udata4 LPStartEncoding and sdata422# CallSiteEncoding.23 24 .text25 .globl main # -- Begin function main26 .p2align 4, 0x9027 .type main,@function28main: # @main29.Lfunc_begin0:30 .cfi_startproc31 .cfi_personality 3, __gxx_personality_v032 .cfi_lsda 3, .Lexception033# %bb.0:34 pushq %rax35 .cfi_def_cfa_offset 1636 movl $4, %edi37 callq __cxa_allocate_exception38 movl $42, (%rax)39.Ltmp0:40 movl $_ZTIi, %esi41 movq %rax, %rdi42 xorl %edx, %edx43 callq __cxa_throw44.Ltmp1:45# %bb.1:46.LBB0_2:47.Ltmp2:48 movq %rax, %rdi49 callq __cxa_begin_catch50 callq __cxa_end_catch51 xorl %eax, %eax52 popq %rcx53 .cfi_def_cfa_offset 854 retq55.Lfunc_end0:56 .size main, .Lfunc_end0-main57 .cfi_endproc58 .section .gcc_except_table,"a",@progbits59 .p2align 260GCC_except_table0:61.Lexception0:62 .byte 3 # @LPStart Encoding = udata463 .long 064 .byte 3 # @TType Encoding = udata465 .uleb128 .Lttbase0-.Lttbaseref066.Lttbaseref0:67 .byte 11 # Call site Encoding = sdata468 .uleb128 .Lcst_end0-.Lcst_begin069.Lcst_begin0:70 .long .Lfunc_begin0-.Lfunc_begin0 # >> Call Site 1 <<71 .long .Ltmp0-.Lfunc_begin0 # Call between .Lfunc_begin0 and .Ltmp072 .long 0 # has no landing pad73 .byte 0 # On action: cleanup74 .long .Ltmp0-.Lfunc_begin0 # >> Call Site 2 <<75 .long .Ltmp1-.Ltmp0 # Call between .Ltmp0 and .Ltmp176 .long .Ltmp2 # jumps to .Ltmp277 .byte 1 # On action: 178 .long .Ltmp1-.Lfunc_begin0 # >> Call Site 3 <<79 .long .Lfunc_end0-.Ltmp1 # Call between .Ltmp1 and .Lfunc_end080 .long 0 # has no landing pad81 .byte 0 # On action: cleanup82.Lcst_end0:83 .byte 1 # >> Action Record 1 <<84 # Catch TypeInfo 185 .byte 0 # No further actions86 .p2align 287 # >> Catch TypeInfos <<88 .long 0 # TypeInfo 189.Lttbase0:90 .p2align 291 # -- End function92