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## Test REVERSE can be used to reverse the order of .init_array and .ctors 13 14# RUN: ld.lld -T %t/reverse.lds %t.o -o %t2.out 15# RUN: llvm-readelf -x .init_array %t2.out | FileCheck %s --check-prefix=CHECK2 16 17# CHECK2: Hex dump of section '.init_array': 18# CHECK2-NEXT: 0x00000001 04030201 00050706 19 20#--- asm 21.globl _start 22_start: 23 nop 24 25.section foo, "aw", @init_array 26 .byte 5 27 28.section .ctors.65435, "a" 29 .byte 3 30.section .init_array.100, "aw", @init_array 31 .byte 4 32 33.section .init_array.7, "aw", @init_array 34 .byte 2 35.section .ctors.65529,"a" 36 .byte 1 37.section .init_array.5, "aw", @init_array 38 .byte 0 39 40.section .init_array, "aw", @init_array 41 .byte 6 42.section .ctors, "a" 43 .byte 7 44 45#--- lds 46SECTIONS { 47 .init_array : { 48 *(SORT_BY_INIT_PRIORITY(.init_array.* .ctors.*) SORT_BY_INIT_PRIORITY(foo*)) 49 *(.init_array .ctors) 50 } 51} 52 53#--- reverse.lds 54SECTIONS { 55 .init_array : { 56 *(REVERSE(SORT_BY_INIT_PRIORITY(.init_array.* .ctors.*)) SORT_BY_INIT_PRIORITY(foo*)) 57 *(REVERSE(.init_array .ctors)) 58 } 59} 60