This change adds test cases targeting the AArch64 Linux platform to the ORC runtime integration test suite. Reviewed By: lhames, sunho Differential Revision: https://reviews.llvm.org/D127720
112 lines
2.0 KiB
ArmAsm
112 lines
2.0 KiB
ArmAsm
// Test that ELF static initializers with different constructor priorities work
|
|
// and are executed in the proper order.
|
|
//
|
|
// RUN: %clang -c -o %t %s
|
|
// RUN: %llvm_jitlink %t | FileCheck %s
|
|
|
|
// CHECK: constructor 100
|
|
// CHECK-NEXT: constructor 200
|
|
// CHECK-NEXT: constructor 65535
|
|
// CHECK-NEXT: main
|
|
// CHECK-NEXT: destructor
|
|
|
|
.text
|
|
.globl destructor
|
|
.p2align 2
|
|
.type destructor,@function
|
|
destructor:
|
|
.Ldestructor$local:
|
|
|
|
adrp x0, .L.str.2
|
|
add x0, x0, :lo12:.L.str.2
|
|
b puts
|
|
|
|
.globl main
|
|
.p2align 2
|
|
.type main,@function
|
|
main:
|
|
|
|
str x30, [sp, #-16]!
|
|
adrp x0, .L.str
|
|
add x0, x0, :lo12:.L.str
|
|
bl puts
|
|
mov w0, wzr
|
|
ldr x30, [sp], #16
|
|
ret
|
|
|
|
.p2align 2
|
|
.type constructor.65535,@function
|
|
constructor.65535:
|
|
|
|
str x30, [sp, #-16]!
|
|
adrp x0, .L.str.65535
|
|
add x0, x0, :lo12:.L.str.65535
|
|
bl puts
|
|
adrp x0, .Ldestructor$local
|
|
add x0, x0, :lo12:.Ldestructor$local
|
|
adrp x2, __dso_handle
|
|
add x2, x2, :lo12:__dso_handle
|
|
mov x1, xzr
|
|
ldr x30, [sp], #16
|
|
b __cxa_atexit
|
|
|
|
.p2align 2
|
|
.type constructor.100,@function
|
|
constructor.100:
|
|
|
|
str x30, [sp, #-16]!
|
|
adrp x0, .L.str.100
|
|
add x0, x0, :lo12:.L.str.100
|
|
bl puts
|
|
ldr x30, [sp], #16
|
|
ret
|
|
|
|
.p2align 2
|
|
.type constructor.200,@function
|
|
constructor.200:
|
|
|
|
str x30, [sp, #-16]!
|
|
adrp x0, .L.str.200
|
|
add x0, x0, :lo12:.L.str.200
|
|
bl puts
|
|
ldr x30, [sp], #16
|
|
ret
|
|
|
|
.hidden __dso_handle
|
|
.type .L.str,@object
|
|
.section .rodata.str1.1,"aMS",@progbits,1
|
|
.L.str:
|
|
.asciz "main"
|
|
.size .L.str, 5
|
|
|
|
.type .L.str.100,@object
|
|
.L.str.100:
|
|
.asciz "constructor 100"
|
|
.size .L.str.100, 16
|
|
|
|
.type .L.str.200,@object
|
|
.L.str.200:
|
|
.asciz "constructor 200"
|
|
.size .L.str.200, 16
|
|
|
|
.type .L.str.65535,@object
|
|
.L.str.65535:
|
|
.asciz "constructor 65535"
|
|
.size .L.str.65535, 18
|
|
|
|
|
|
.type .L.str.2,@object
|
|
.L.str.2:
|
|
.asciz "destructor"
|
|
.size .L.str.2, 11
|
|
|
|
.section .init_array.100,"aw",@init_array
|
|
.p2align 3
|
|
.xword constructor.100
|
|
.section .init_array.200,"aw",@init_array
|
|
.p2align 3
|
|
.xword constructor.200
|
|
.section .init_array,"aw",@init_array
|
|
.p2align 3
|
|
.xword constructor.65535
|