blob: f65655afbcc0d1acd39fcf594a6f0af331ea6045 [file] [log] [blame]
# Show that all regular section types are properly printed for both LLVM and
# GNU styles.
# RUN: yaml2obj %s -o %t-basic.o
# RUN: llvm-readobj --section-headers %t-basic.o | FileCheck %s --check-prefix=LLVM
# RUN: llvm-readelf --section-headers %t-basic.o | FileCheck %s --check-prefix=GNU
# LLVM: Name: (0)
# LLVM: Type: SHT_NULL
# LLVM: Name: progbits
# LLVM: Type: SHT_PROGBITS
# LLVM: Name: rela
# LLVM: Type: SHT_RELA
# LLVM: Name: hash
# LLVM: Type: SHT_HASH
# LLVM: Name: dynamic
# LLVM: Type: SHT_DYNAMIC
# LLVM: Name: note
# LLVM: Type: SHT_NOTE
# LLVM: Name: nobits
# LLVM: Type: SHT_NOBITS
# LLVM: Name: rel
# LLVM: Type: SHT_REL
# LLVM: Name: shlib
# LLVM: Type: SHT_SHLIB
# LLVM: Name: dynsym
# LLVM: Type: SHT_DYNSYM
# LLVM: Name: init_array
# LLVM: Type: SHT_INIT_ARRAY
# LLVM: Name: fini_array
# LLVM: Type: SHT_FINI_ARRAY
# LLVM: Name: preinit_array
# LLVM: Type: SHT_PREINIT_ARRAY
# LLVM: Name: group
# LLVM: Type: SHT_GROUP
# LLVM: Name: symtab_shndx
# LLVM: Type: SHT_SYMTAB_SHNDX
# LLVM: Name: relr
# LLVM: Type: SHT_RELR
# LLVM: Name: android_rel
# LLVM: Type: SHT_ANDROID_REL
# LLVM: Name: android_rela
# LLVM: Type: SHT_ANDROID_RELA
# LLVM: Name: android_relr
# LLVM: Type: SHT_ANDROID_RELR
# LLVM: Name: llvm_odrtab
# LLVM: Type: SHT_LLVM_ODRTAB
# LLVM: Name: linker_options
# LLVM: Type: SHT_LLVM_LINKER_OPTIONS
# LLVM: Name: llvm_call_graph_profile
# LLVM: Type: SHT_LLVM_CALL_GRAPH_PROFILE
# LLVM: Name: llvm_addrsig
# LLVM: Type: SHT_LLVM_ADDRSIG
# LLVM: Name: gnu_attributes
# LLVM: Type: SHT_GNU_ATTRIBUTES
# LLVM: Name: gnu_hash
# LLVM: Type: SHT_GNU_HASH
# LLVM: Name: gnu_verdef
# LLVM: Type: SHT_GNU_verdef
# LLVM: Name: gnu_verneed
# LLVM: Type: SHT_GNU_verneed
# LLVM: Name: unknown
# LLVM: Type: Unknown (0x1000)
# LLVM: Name: loos
# LLVM: Type: Unknown (0x60000000)
# LLVM: Name: fooos
# LLVM: Type: Unknown (0x60000F00)
# LLVM: Name: hios
# LLVM: Type: SHT_GNU_versym
# LLVM: Name: loproc
# LLVM: Type: Unknown (0x70000000)
# LLVM: Name: fooproc
# LLVM: Type: Unknown (0x70000F00)
# LLVM: Name: hiproc
# LLVM: Type: Unknown (0x7FFFFFFF)
# LLVM: Name: louser
# LLVM: Type: Unknown (0x80000000)
# LLVM: Name: foouser
# LLVM: Type: Unknown (0x80000F00)
# LLVM: Name: hiuser
# LLVM: Type: Unknown (0xFFFFFFFF)
# LLVM: Name: .symtab
# LLVM: Type: SHT_SYMTAB
# LLVM: Name: .strtab
# LLVM: Type: SHT_STRTAB
# GNU: [ 0] NULL
# GNU-NEXT: progbits PROGBITS
# GNU-NEXT: rela RELA
# GNU-NEXT: hash HASH
# GNU-NEXT: dynamic DYNAMIC
# GNU-NEXT: note NOTE
# GNU-NEXT: nobits NOBITS
# GNU-NEXT: rel REL
# GNU-NEXT: shlib SHLIB
# GNU-NEXT: dynsym DYNSYM
# GNU-NEXT: init_array INIT_ARRAY
# GNU-NEXT: fini_array FINI_ARRAY
# GNU-NEXT: preinit_array PREINIT_ARRAY
# GNU-NEXT: group GROUP
# GNU-NEXT: symtab_shndx SYMTAB SECTION INDICES
# GNU-NEXT: relr RELR
# GNU-NEXT: android_rel ANDROID_REL
# GNU-NEXT: android_rela ANDROID_RELA
# GNU-NEXT: android_relr RELR
# GNU-NEXT: llvm_odrtab LLVM_ODRTAB
# GNU-NEXT: linker_options LLVM_LINKER_OPTIONS
# GNU-NEXT: llvm_call_graph_profile LLVM_CALL_GRAPH_PROFILE
# GNU-NEXT: llvm_addrsig LLVM_ADDRSIG
# GNU-NEXT: gnu_attributes ATTRIBUTES
# GNU-NEXT: gnu_hash GNU_HASH
# GNU-NEXT: gnu_verdef VERDEF
# GNU-NEXT: gnu_verneed VERNEED
# GNU-NEXT: unknown 0x1000: <unknown>
# GNU-NEXT: loos LOOS+0x0
# GNU-NEXT: fooos LOOS+0xF00
# GNU-NEXT: hios VERSYM
# GNU-NEXT: loproc LOPROC+0x0
# GNU-NEXT: fooproc LOPROC+0xF00
# GNU-NEXT: hiproc LOPROC+0xFFFFFFF
# GNU-NEXT: louser LOUSER+0x0
# GNU-NEXT: foouser LOUSER+0xF00
# GNU-NEXT: hiuser LOUSER+0x7FFFFFFF
# GNU-NEXT: .symtab SYMTAB
# GNU-NEXT: .strtab STRTAB
--- !ELF
FileHeader:
Class: ELFCLASS64
Data: ELFDATA2LSB
Type: ET_REL
Machine: EM_X86_64
Sections:
- Name: progbits
Type: SHT_PROGBITS
- Name: rela
Type: SHT_RELA
Info: progbits
- Name: hash
Type: SHT_HASH
- Name: dynamic
Type: SHT_DYNAMIC
- Name: note
Type: SHT_NOTE
- Name: nobits
Type: SHT_NOBITS
- Name: rel
Type: SHT_REL
Info: progbits
- Name: shlib
Type: SHT_SHLIB
- Name: dynsym
Type: SHT_DYNSYM
Link: .strtab
- Name: init_array
Type: SHT_INIT_ARRAY
- Name: fini_array
Type: SHT_FINI_ARRAY
- Name: preinit_array
Type: SHT_PREINIT_ARRAY
- Name: group
Type: SHT_GROUP
Info: foo
Members:
- SectionOrType: 0
- Name: symtab_shndx
Type: SHT_SYMTAB_SHNDX
Link: .symtab
EntSize: 0x4
Content: "0000000000000000"
- Name: relr
Type: SHT_RELR
- Name: android_rel
Type: SHT_ANDROID_REL
- Name: android_rela
Type: SHT_ANDROID_RELA
- Name: android_relr
Type: SHT_ANDROID_RELR
- Name: llvm_odrtab
Type: SHT_LLVM_ODRTAB
- Name: linker_options
Type: SHT_LLVM_LINKER_OPTIONS
- Name: llvm_call_graph_profile
Type: SHT_LLVM_CALL_GRAPH_PROFILE
- Name: llvm_addrsig
Type: SHT_LLVM_ADDRSIG
- Name: gnu_attributes
Type: SHT_GNU_ATTRIBUTES
- Name: gnu_hash
Type: SHT_GNU_HASH
- Name: gnu_verdef
Type: SHT_GNU_verdef
Info: 0
Entries:
- Name: gnu_verneed
Type: SHT_GNU_verneed
Info: 0
Dependencies:
- Name: unknown
Type: 0x1000
- Name: loos
Type: 0x60000000
- Name: fooos
Type: 0x60000F00
- Name: hios
Type: 0x6fffffff
Entries: []
- Name: loproc
Type: 0x70000000
- Name: fooproc
Type: 0x70000F00
- Name: hiproc
Type: 0x7fffffff
- Name: louser
Type: 0x80000000
- Name: foouser
Type: 0x80000F00
- Name: hiuser
Type: 0xffffffff
Symbols:
- Name: foo
Binding: STB_GLOBAL