# Check ordering of .ctors.* sections. # RUN: yaml2obj -format=elf -docnum 1 %s > %t-crtbeginS.o # RUN: yaml2obj -format=elf -docnum 2 %s > %t-crtendS.o # RUN: yaml2obj -format=elf -docnum 3 %s > %t-obj.o # RUN: lld -flavor old-gnu -target mipsel -shared --output-filetype=yaml \ # RUN: %t-crtbeginS.o %t-obj.o %t-crtendS.o | FileCheck %s # RUN: lld -flavor old-gnu -target mipsel -shared -o %t.so \ # RUN: %t-crtbeginS.o %t-obj.o %t-crtendS.o # RUN: llvm-objdump -s %t.so | FileCheck -check-prefix=RAW %s # CHECK: defined-atoms: # CHECK-NEXT: - type: data # CHECK-NEXT: alignment: 4 # CHECK-NEXT: section-choice: custom-required # CHECK-NEXT: section-name: .ctors # CHECK-NEXT: references: # CHECK-NEXT: - kind: layout-after # CHECK-NEXT: offset: 0 # CHECK-NEXT: target: __CTOR_LIST__ # CHECK-NEXT: - name: __CTOR_LIST__ # CHECK-NEXT: type: data # CHECK-NEXT: content: [ FF, FF, FF, FF ] # CHECK-NEXT: alignment: 4 # CHECK-NEXT: section-choice: custom-required # CHECK-NEXT: section-name: .ctors # CHECK-NEXT: - type: data # CHECK-NEXT: content: [ 11, 11, 11, 11 ] # CHECK-NEXT: alignment: 4 # CHECK-NEXT: section-choice: custom-required # CHECK-NEXT: section-name: .ctors.1 # CHECK-NEXT: - type: data # CHECK-NEXT: content: [ 22, 22, 22, 22 ] # CHECK-NEXT: alignment: 4 # CHECK-NEXT: section-choice: custom-required # CHECK-NEXT: section-name: .ctors.2 # CHECK-NEXT: - ref-name: L004 # CHECK-NEXT: type: data # CHECK-NEXT: alignment: 4 # CHECK-NEXT: section-choice: custom-required # CHECK-NEXT: section-name: .ctors # CHECK-NEXT: references: # CHECK-NEXT: - kind: layout-after # CHECK-NEXT: offset: 0 # CHECK-NEXT: target: __CTOR_END__ # CHECK-NEXT: - name: __CTOR_END__ # CHECK-NEXT: type: data # CHECK-NEXT: content: [ 00, 00, 00, 00 ] # CHECK-NEXT: alignment: 4 # CHECK-NEXT: section-choice: custom-required # CHECK-NEXT: section-name: .ctors # RAW: Contents of section .ctors: # RAW-NEXT: 1000 ffffffff 11111111 22222222 00000000 # crtbeginS.o --- FileHeader: Class: ELFCLASS32 Data: ELFDATA2LSB Type: ET_REL Machine: EM_MIPS Flags: [ EF_MIPS_NOREORDER, EF_MIPS_CPIC, EF_MIPS_ABI_O32, EF_MIPS_ARCH_32R2 ] Sections: - Name: .ctors Type: SHT_PROGBITS Flags: [ SHF_WRITE, SHF_ALLOC ] AddressAlign: 0x04 Content: 'FFFFFFFF' Symbols: Local: - Name: .ctors Type: STT_SECTION Section: .ctors - Name: __CTOR_LIST__ Type: STT_OBJECT Section: .ctors # crtendS.o --- FileHeader: Class: ELFCLASS32 Data: ELFDATA2LSB Type: ET_REL Machine: EM_MIPS Flags: [ EF_MIPS_NOREORDER, EF_MIPS_CPIC, EF_MIPS_ABI_O32, EF_MIPS_ARCH_32R2 ] Sections: - Name: .text Type: SHT_PROGBITS Flags: [ SHF_ALLOC, SHF_EXECINSTR ] AddressAlign: 0x04 Size: 0x0F - Name: .rel.text Type: SHT_REL Link: .symtab Info: .text AddressAlign: 0x04 Relocations: - Offset: 0x00 Symbol: .ctors Type: R_MIPS_GOT16 - Offset: 0x04 Symbol: .ctors Type: R_MIPS_LO16 - Offset: 0x08 Symbol: .ctors Type: R_MIPS_GOT16 - Offset: 0x0C Symbol: .ctors Type: R_MIPS_LO16 - Name: .ctors Type: SHT_PROGBITS Flags: [ SHF_WRITE, SHF_ALLOC ] AddressAlign: 0x04 Size: 0x04 Symbols: Local: - Name: .text Type: STT_SECTION Section: .text - Name: .ctors Type: STT_SECTION Section: .ctors - Name: __CTOR_END__ Type: STT_OBJECT Section: .ctors - Name: __do_global_ctors_aux Type: STT_FUNC Section: .text # obj.o --- FileHeader: Class: ELFCLASS32 Data: ELFDATA2LSB Type: ET_REL Machine: EM_MIPS Flags: [ EF_MIPS_NOREORDER, EF_MIPS_CPIC, EF_MIPS_ABI_O32, EF_MIPS_ARCH_32 ] Sections: - Name: .ctors.2 Type: SHT_PROGBITS Flags: [ SHF_WRITE, SHF_ALLOC ] AddressAlign: 0x04 Content: '22222222' - Name: .ctors.1 Type: SHT_PROGBITS Flags: [ SHF_WRITE, SHF_ALLOC ] AddressAlign: 0x04 Content: '11111111' Symbols: Local: - Name: .ctors.2 Type: STT_SECTION Section: .ctors.2 - Name: .ctors.1 Type: STT_SECTION Section: .ctors.1 ...