bc1c6a0b44
This restores part of r359311 that was reverted by r359830. Rewrite the symbol types to fix several issues. Notable difference is that the type of __init_array_start changes from 't' to 'd'. GNU nm used to mark ELF symbols relative to .init_array as 't' https://sourceware.org/bugzilla/show_bug.cgi?id=24505 (before 2.33) because ".init" is the prefix. The bug was copied by r287803. Reviewed By: jhenderson Differential Revision: https://reviews.llvm.org/D61551 llvm-svn: 360339
58 lines
1.4 KiB
Plaintext
58 lines
1.4 KiB
Plaintext
# RUN: yaml2obj %s -o %t
|
|
# RUN: llvm-nm --no-sort %t | FileCheck %s
|
|
|
|
## We used to be wrong with some linker synthesized symbols.
|
|
|
|
## We mark __init_array_start as 'd', as consistent with GNU nm >= 2.33 (older GNU
|
|
## nm marks it as 't'). See https://sourceware.org/bugzilla/show_bug.cgi?id=24511
|
|
|
|
# CHECK: d __fini_array_start
|
|
# CHECK: d __init_array_start
|
|
# CHECK: d __preinit_array_start
|
|
# CHECK: B __bss_start
|
|
# CHECK: D _edata
|
|
# CHECK: B _end
|
|
|
|
!ELF
|
|
FileHeader:
|
|
Class: ELFCLASS64
|
|
Data: ELFDATA2LSB
|
|
Type: ET_EXEC
|
|
Machine: EM_X86_64
|
|
Sections:
|
|
- Name: .text
|
|
Type: SHT_PROGBITS
|
|
Flags: [ SHF_ALLOC, SHF_EXECINSTR ]
|
|
- Name: .fini_array
|
|
Type: SHT_FINI_ARRAY
|
|
Flags: [ SHF_ALLOC, SHF_WRITE ]
|
|
- Name: .init_array
|
|
Type: SHT_INIT_ARRAY
|
|
Flags: [ SHF_ALLOC, SHF_WRITE ]
|
|
- Name: .preinit_array
|
|
Type: SHT_PREINIT_ARRAY
|
|
Flags: [ SHF_ALLOC, SHF_WRITE ]
|
|
- Name: .data
|
|
Type: SHT_PROGBITS
|
|
Flags: [ SHF_ALLOC, SHF_WRITE ]
|
|
- Name: .bss
|
|
Type: SHT_NOBITS
|
|
Flags: [ SHF_ALLOC, SHF_WRITE ]
|
|
Symbols:
|
|
- Name: __fini_array_start
|
|
Section: .fini_array
|
|
- Name: __init_array_start
|
|
Section: .init_array
|
|
- Name: __preinit_array_start
|
|
Section: .preinit_array
|
|
|
|
- Name: __bss_start
|
|
Section: .bss
|
|
Binding: STB_GLOBAL
|
|
- Name: _edata
|
|
Section: .data
|
|
Binding: STB_GLOBAL
|
|
- Name: _end
|
|
Section: .bss
|
|
Binding: STB_GLOBAL
|