brintos

brintos / llvm-project-archived public Read only

0
0
Text · 3.5 KiB · 9e2ce7a Raw
127 lines · plain
1// Test that ELF static initializers with different constructor priorities work2// and are executed in the proper order.3//4// RUN: %clang -c -o %t %s5// RUN: %llvm_jitlink %t | FileCheck %s6 7// CHECK: constructor 1008// CHECK-NEXT: constructor 2009// CHECK-NEXT: constructor 6553510// CHECK-NEXT: main11// CHECK-NEXT: destructor12 13    .text14    .globl    destructor15    .p2align    216    .type    destructor,@function17destructor:18.Ldestructor$local:19 20    pcalau12i    $a0, %pc_hi20(.L.str.2)21    addi.d    $a0, $a0, %pc_lo12(.L.str.2)22    b    %plt(puts)23 24    .globl    main25    .p2align    226    .type    main,@function27main:28 29    addi.d    $sp, $sp, -1630    st.d    $ra, $sp, 8                     # 8-byte Folded Spill31    pcalau12i    $a0, %pc_hi20(.L.str)32    addi.d    $a0, $a0, %pc_lo12(.L.str)33    bl    %plt(puts)34    move    $a0, $zero35    ld.d    $ra, $sp, 8                     # 8-byte Folded Reload36    addi.d    $sp, $sp, 1637    ret38 39    .p2align    240    .type    constructor.65535,@function41constructor.65535:42 43    addi.d    $sp, $sp, -1644    st.d    $ra, $sp, 8                     # 8-byte Folded Spill45    pcalau12i    $a0, %pc_hi20(.L.str.65535)46    addi.d    $a0, $a0, %pc_lo12(.L.str.65535)47    bl    %plt(puts)48    pcalau12i    $a0, %got_pc_hi20(__dso_handle)49    ld.d    $a0, $a0, %got_pc_lo12(__dso_handle)50    ld.d    $a2, $a0, 051    pcalau12i    $a0, %pc_hi20(.Ldestructor$local)52    addi.d    $a0, $a0, %pc_lo12(.Ldestructor$local)53    move    $a1, $zero54    ld.d    $ra, $sp, 8                     # 8-byte Folded Reload55    addi.d    $sp, $sp, 1656    b    %plt(__cxa_atexit)57 58    .p2align    259    .type    constructor.100,@function60constructor.100:61 62    addi.d    $sp, $sp, -1663    st.d    $ra, $sp, 8                     # 8-byte Folded Spill64    st.d    $fp, $sp, 0                     # 8-byte Folded Spill65    addi.d    $fp, $sp, 1666    pcalau12i    $a0, %pc_hi20(.L.str.100)67    addi.d    $a0, $a0, %pc_lo12(.L.str.100)68    bl    %plt(puts)69    ld.d    $fp, $sp, 0                     # 8-byte Folded Reload70    ld.d    $ra, $sp, 8                     # 8-byte Folded Reload71    addi.d    $sp, $sp, 1672    ret73 74    .p2align    275    .type    constructor.200,@function76constructor.200:77 78    addi.d    $sp, $sp, -1679    st.d    $ra, $sp, 8                     # 8-byte Folded Spill80    st.d    $fp, $sp, 0                     # 8-byte Folded Spill81    addi.d    $fp, $sp, 1682    pcalau12i    $a0, %pc_hi20(.L.str.200)83    addi.d    $a0, $a0, %pc_lo12(.L.str.200)84    bl    %plt(puts)85    ld.d    $fp, $sp, 0                     # 8-byte Folded Reload86    ld.d    $ra, $sp, 8                     # 8-byte Folded Reload87    addi.d    $sp, $sp, 1688    ret89 90    .hidden    __dso_handle91    .type    .L.str,@object92    .section    .rodata.str1.1,"aMS",@progbits,193.L.str:94    .asciz    "main"95    .size    .L.str, 596 97    .type    .L.str.100,@object98.L.str.100:99    .asciz    "constructor 100"100    .size    .L.str.100, 16101 102    .type    .L.str.200,@object103.L.str.200:104    .asciz    "constructor 200"105    .size    .L.str.200, 16106 107    .type    .L.str.65535,@object108.L.str.65535:109    .asciz    "constructor 65535"110    .size    .L.str.65535, 18111 112 113    .type    .L.str.2,@object114.L.str.2:115    .asciz    "destructor"116    .size    .L.str.2, 11117 118    .section    .init_array.100,"aw",@init_array119    .p2align    3120    .dword    constructor.100121    .section    .init_array.200,"aw",@init_array122    .p2align    3123    .dword    constructor.200124    .section    .init_array,"aw",@init_array125    .p2align    3126    .dword    constructor.65535127