[docs] Fix build-docs.sh
[llvm-project.git] / compiler-rt / test / orc / TestCases / Linux / aarch64 / trivial-static-initializer.S
blob9daf80827918be4354bf0520cc1410b4bcff4343
1 // Test that basic ELF static initializers work. The main function in this
2 // test returns the value of 'x', which is initially 1 in the data section,
3 // and reset to 0 if the _static_init function is run. If the static initializer
4 // does not run then main will return 1, causing the test to be treated as a
5 // failure.
6 //
7 // RUN: %clang -c -o %t %s
8 // RUN: %llvm_jitlink %t
10         .text
11         .globl  main
12         .p2align        2
13         .type   main,@function
14 main:
16         adrp    x8, :got:x
17         ldr     x8, [x8, :got_lo12:x]
18         ldr     w0, [x8]
19         ret
20 .Lfunc_end0:
21         .size   main, .Lfunc_end0-main
23 // static initializer sets the value of 'x' to zero.
25         .section        .text.startup,"ax",@progbits
26         .p2align        2
27         .type   static_init,@function
28 static_init:
30         adrp    x8, :got:x
31         ldr     x8, [x8, :got_lo12:x]
32         str     wzr, [x8]
33         ret
34 .Lfunc_end1:
35         .size   static_init, .Lfunc_end1-static_init
37         .type   x,@object
38         .data
39         .globl  x
40         .p2align        2
42         .word   1
43         .size   x, 4
45         .section        .init_array,"aw",@init_array
46         .p2align        3
47         .xword  static_init