## Check we are able to override the sh_type field for different sections.
## When doing this we are still able to use YAML keys that can be normally used
## to describe a section with the original type specified with the Type key.

# RUN: yaml2obj %s -o %t1
# RUN: llvm-readobj --sections --section-data %t1 | FileCheck %s --check-prefixes=COMMON,ORIGINAL

## Check we can use a hex value for the ShType. SHT_PROGBITS == 0x1.
# RUN: yaml2obj -DTYPE=0x1 %s -o %t2
# RUN: llvm-readobj --sections --section-data %t2 | FileCheck %s --check-prefixes=COMMON,OVERRIDE

# COMMON:        Name: .gnu.version_r
# ORIGINAL-NEXT: Type: SHT_GNU_verneed
# OVERRIDE-NEXT: Type: SHT_PROGBITS
# COMMON:        SectionData (
# COMMON-NEXT:     0000: 01000100 04000000 10000000 00000000 |
# COMMON-NEXT:     0010: 91070000 00000300 01000000 00000000 |
# COMMON-NEXT:   )

## Check we can use a string type name for the ShType.
# RUN: yaml2obj -DTYPE=SHT_PROGBITS %s -o %t3
# RUN: cmp %t2 %t3

--- !ELF
FileHeader:
  Class: ELFCLASS64
  Data:  ELFDATA2LSB
  Type:  ET_EXEC
Sections:
  - Name:   .gnu.version_r
    Type:   SHT_GNU_verneed
    Flags:  [ SHF_ALLOC ]
    ShType: [[TYPE=SHT_GNU_verneed]]
    Dependencies:
      - Version: 1
        File:    dso.so.0
        Entries:
          - Name:  v1
            Hash:  1937
            Flags: 0
            Other: 3
DynamicSymbols: []
