1# REQUIRES: x86
2## Test SORT_BY_INIT_PRIORITY can be used to convert .ctors into .init_array
3
4# RUN: split-file %s %t
5# RUN: llvm-mc -filetype=obj -triple=x86_64 %t/asm -o %t.o
6# RUN: ld.lld -T %t/lds %t.o -o %t.out
7# RUN: llvm-readelf -x .init_array %t.out | FileCheck %s
8
9# CHECK:      Hex dump of section '.init_array':
10# CHECK-NEXT: 0x00000001 00010203 04050607
11
12#--- asm
13.globl _start
14_start:
15  nop
16
17.section foo, "aw", @init_array
18  .byte 5
19
20.section .ctors.65435, "a"
21  .byte 3
22.section .init_array.100, "aw", @init_array
23  .byte 4
24
25.section .init_array.7, "aw", @init_array
26  .byte 2
27.section .ctors.65529,"a"
28  .byte 1
29.section .init_array.5, "aw", @init_array
30  .byte 0
31
32.section .init_array, "aw", @init_array
33  .byte 6
34.section .ctors, "a"
35  .byte 7
36
37#--- lds
38SECTIONS {
39  .init_array : {
40    *(SORT_BY_INIT_PRIORITY(.init_array.* .ctors.*) SORT_BY_INIT_PRIORITY(foo*))
41    *(.init_array .ctors)
42  }
43}
44