# 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
