brintos

brintos / llvm-project-archived public Read only

0
0
Text · 5.5 KiB · df50a7f Raw
192 lines · plain
1## This test checks that trampolines are inserted in split fragments if2## necessary. There are 4 LSDA ranges with a landing pad to three landing pads.3## After splitting all blocks, there have to be 4 trampolines in the output.4 5# RUN: llvm-mc --filetype=obj --triple x86_64-unknown-unknown %s -o %t.o6# RUN: %clangxx %cxxflags %t.o -o %t.exe -Wl,-q -pie7# RUN: llvm-bolt %t.exe --split-functions --split-strategy=all --split-eh \8# RUN:         -o %t.bolt --print-split --print-only=main 2>&1 | FileCheck %s9 10# CHECK: -------   HOT-COLD SPLIT POINT   -------11# CHECK: .LFT012# CHECK: Landing Pads: .LBB013# CHECK: .LBB014# CHECK-NEXT: Landing Pad15# CHECK: -------   HOT-COLD SPLIT POINT   -------16# CHECK: .Ltmp017# CHECK: Landing Pads: .LBB1, .LBB218# CHECK: .LBB119# CHECK-NEXT: Landing Pad20# CHECK: .LBB221# CHECK-NEXT: Landing Pad22# CHECK: -------   HOT-COLD SPLIT POINT   -------23# CHECK: -------   HOT-COLD SPLIT POINT   -------24# CHECK: -------   HOT-COLD SPLIT POINT   -------25# CHECK: -------   HOT-COLD SPLIT POINT   -------26# CHECK: -------   HOT-COLD SPLIT POINT   -------27# CHECK: .Ltmp328# CHECK: Landing Pads: .LBB329# CHECK: .LBB330# CHECK-NEXT: Landing Pad31# CHECK: -------   HOT-COLD SPLIT POINT   -------32# CHECK: -------   HOT-COLD SPLIT POINT   -------33 34        .text35        .section        .rodata.str1.1,"aMS",@progbits,136.LC0:37        .string "E"38.LC1:39        .string "C"40        .text41        .globl  main42        .type   main, @function43main:44.LFB1265:45        .cfi_startproc46        .cfi_personality 0x9b,DW.ref.__gxx_personality_v047        .cfi_lsda 0x1b,.LLSDA126548        pushq   %r1249        .cfi_def_cfa_offset 1650        .cfi_offset 12, -1651        pushq   %rbp52        .cfi_def_cfa_offset 2453        .cfi_offset 6, -2454        pushq   %rbx55        .cfi_def_cfa_offset 3256        .cfi_offset 3, -3257        testb   $3, %dil58        jne     .L1359        leaq    .LC1(%rip), %rdi60.LEHB0:61        call    puts@PLT62        # Trampoline to .L963.LEHE0:64        jmp     .L1165.L13:66        movl    $16, %edi67        call    __cxa_allocate_exception@PLT68        movq    %rax, %rbx69        leaq    .LC0(%rip), %rsi70        movq    %rax, %rdi71.LEHB1:72        call    _ZNSt13runtime_errorC1EPKc@PLT73        # Trampoline to .L874.LEHE1:75        movq    _ZNSt13runtime_errorD1Ev@GOTPCREL(%rip), %rdx76        movq    _ZTISt13runtime_error@GOTPCREL(%rip), %rsi77        movq    %rbx, %rdi78.LEHB2:79        call    __cxa_throw@PLT80        # Trampoline to .L981.LEHE2:82.L9:83        movq    %rax, %rdi84        movq    %rdx, %rax85        jmp     .L486.L8:87        movq    %rax, %r1288        movq    %rdx, %rbp89        movq    %rbx, %rdi90        call    __cxa_free_exception@PLT91        movq    %r12, %rdi92        movq    %rbp, %rax93.L4:94        cmpq    $1, %rax95        je      .L596.LEHB3:97        call    _Unwind_Resume@PLT98.LEHE3:99.L5:100        call    __cxa_begin_catch@PLT101        movq    %rax, %rdi102        movq    (%rax), %rax103        call    *16(%rax)104        movq    %rax, %rdi105.LEHB4:106        call    puts@PLT107        # Trampoline to .L10108.LEHE4:109        call    __cxa_end_catch@PLT110.L11:111        movl    $0, %eax112        popq    %rbx113        .cfi_remember_state114        .cfi_def_cfa_offset 24115        popq    %rbp116        .cfi_def_cfa_offset 16117        popq    %r12118        .cfi_def_cfa_offset 8119        ret120.L10:121        .cfi_restore_state122        movq    %rax, %rbx123        call    __cxa_end_catch@PLT124        movq    %rbx, %rdi125.LEHB5:126        call    _Unwind_Resume@PLT127.LEHE5:128        .cfi_endproc129        .globl  __gxx_personality_v0130        .section        .gcc_except_table,"a",@progbits131        .align 4132.LLSDA1265:133        .byte   0xff134        .byte   0x9b135        .uleb128 .LLSDATT1265-.LLSDATTD1265136.LLSDATTD1265:137        .byte   0x1138        .uleb128 .LLSDACSE1265-.LLSDACSB1265139.LLSDACSB1265:140        .uleb128 .LEHB0-.LFB1265141        .uleb128 .LEHE0-.LEHB0142        .uleb128 .L9-.LFB1265143        .uleb128 0x1144        .uleb128 .LEHB1-.LFB1265145        .uleb128 .LEHE1-.LEHB1146        .uleb128 .L8-.LFB1265147        .uleb128 0x3148        .uleb128 .LEHB2-.LFB1265149        .uleb128 .LEHE2-.LEHB2150        .uleb128 .L9-.LFB1265151        .uleb128 0x1152        .uleb128 .LEHB3-.LFB1265153        .uleb128 .LEHE3-.LEHB3154        .uleb128 0155        .uleb128 0156        .uleb128 .LEHB4-.LFB1265157        .uleb128 .LEHE4-.LEHB4158        .uleb128 .L10-.LFB1265159        .uleb128 0160        .uleb128 .LEHB5-.LFB1265161        .uleb128 .LEHE5-.LEHB5162        .uleb128 0163        .uleb128 0164.LLSDACSE1265:165        .byte   0x1166        .byte   0167        .byte   0168        .byte   0x7d169        .align 4170        .long   DW.ref._ZTISt13runtime_error-.171.LLSDATT1265:172        .text173        .size   main, .-main174        .hidden DW.ref._ZTISt13runtime_error175        .weak   DW.ref._ZTISt13runtime_error176        .section        .data.rel.local.DW.ref._ZTISt13runtime_error,"awG",@progbits,DW.ref._ZTISt13runtime_error,comdat177        .align 8178        .type   DW.ref._ZTISt13runtime_error, @object179        .size   DW.ref._ZTISt13runtime_error, 8180DW.ref._ZTISt13runtime_error:181        .quad   _ZTISt13runtime_error182        .hidden DW.ref.__gxx_personality_v0183        .weak   DW.ref.__gxx_personality_v0184        .section        .data.rel.local.DW.ref.__gxx_personality_v0,"awG",@progbits,DW.ref.__gxx_personality_v0,comdat185        .align 8186        .type   DW.ref.__gxx_personality_v0, @object187        .size   DW.ref.__gxx_personality_v0, 8188DW.ref.__gxx_personality_v0:189        .quad   __gxx_personality_v0190        .ident  "GCC: (Compiler-Explorer-Build-gcc--binutils-2.38) 12.1.0"191        .section        .note.GNU-stack,"",@progbits192