# RUN: yaml2obj %s > %t
# RUN: obj2yaml %t | FileCheck %s

## Test checks that we are able to handle symbols with special/reserved indices.

# CHECK:      Symbols:
# CHECK-NEXT:   - Name:    absolute
# CHECK-NEXT:     Index:   SHN_ABS
# CHECK-NEXT:     Binding: STB_GLOBAL
# CHECK-NEXT:     Value:   0x0000000000001234
# CHECK-NEXT:   - Name:    common
# CHECK-NEXT:     Index:   SHN_COMMON
# CHECK-NEXT:     Binding: STB_GLOBAL
# CHECK-NEXT:   - Name:    valid_index
# CHECK-NEXT:     Section: .text
# CHECK-NEXT:     Binding: STB_GLOBAL
# CHECK-NEXT:   - Name:    processor_specific_index
# CHECK-NEXT:     Index:   SHN_HEXAGON_SCOMMON_1
# CHECK-NEXT:     Binding: STB_GLOBAL
# CHECK-NEXT:   - Name:    unknown_index
# CHECK-NEXT:     Index:   0x0000FFFE
# CHECK-NEXT:     Binding: STB_GLOBAL

!ELF
FileHeader:
  Class:           ELFCLASS64
  Data:            ELFDATA2LSB
  Type:            ET_EXEC
  Machine:         EM_HEXAGON
Sections:
  - Name: .text
    Type: SHT_PROGBITS
Symbols:
  - Name:     absolute
    Index:    SHN_ABS
    Value:    0x1234
    Binding:  STB_GLOBAL
  - Name:     common
    Index:    SHN_COMMON
    Binding:  STB_GLOBAL
  - Name:     valid_index
    Index:    0x1
    Binding:  STB_GLOBAL
  - Name:     processor_specific_index
    Index:    SHN_HEXAGON_SCOMMON_1
    Binding:  STB_GLOBAL
  - Name:     unknown_index
    Index:    0xfffe
    Binding:  STB_GLOBAL

## shn_xindex.o contains a symbol with st_shndx == SHN_XINDEX.
## We do not support it at this moment.
# RUN: not obj2yaml %S/Inputs/shn_xindex.o 2>&1 | FileCheck %s --check-prefix=ERR
# ERR: Error reading file: {{.*}}shn_xindex.o: SHN_XINDEX symbols are not supported
