## Check how obj2yaml dumps the sh_entsize field.

## Check we don't dump the "EntSize" key for SHT_SYMTAB/SHT_DYNSYM sections
## when the value of sh_entsize is equal to sizeof(ELF_Sym) == 0x18.

# RUN: yaml2obj %s -o %t
# RUN: obj2yaml %t | FileCheck %s

# CHECK:       - Name:    .rodata.cst4
# CHECK-NEXT:    Type:    SHT_PROGBITS
# CHECK-NEXT:    EntSize: 0x4
# CHECK-NEXT:  - Name: .mysymtab
# CHECK-NEXT:    Type: SHT_SYMTAB
# CHECK-NEXT:    Link: .strtab
# CHECK-NEXT:    Size: 0x0
# CHECK-NEXT:  - Name: .mydynsym
# CHECK-NEXT:    Type: SHT_DYNSYM
# CHECK-NEXT:    Size: 0x0
# CHECK-NEXT: ...

--- !ELF
FileHeader:
  Class: ELFCLASS64
  Data:  ELFDATA2LSB
  Type:  ET_REL
Sections:
  - Name:    .rodata.cst4
    Type:    SHT_PROGBITS
    EntSize: 0x4
  - Name:    .mysymtab
    Type:    SHT_SYMTAB
    EntSize: [[SYMTABES=0x18]]
  - Name:    .mydynsym
    Type:    SHT_DYNSYM
    EntSize: [[DYNSYMES=0x18]]

## Document that we are unable to dump a SHT_SYMTAB section when its entry size
## is not equal to sizeof(ELF_Sym).

# RUN: yaml2obj %s -DSYMTABES=0x19 -o %t2
# RUN: not obj2yaml %t2 2>&1 | FileCheck %s -DFILE=%t2 --check-prefix=ERR1

# ERR1: Error reading file: [[FILE]]: section [index 2] has invalid sh_entsize: expected 24, but got 25

## Document that we are unable to dump a SHT_DYNSYM section when its entry size
## is not equal to sizeof(ELF_Sym).

# RUN: yaml2obj %s -DDYNSYMES=0x19 -o %t3
# RUN: not obj2yaml %t3 2>&1 | FileCheck %s -DFILE=%t3 --check-prefix=ERR2

# ERR2: Error reading file: [[FILE]]: section [index 3] has invalid sh_entsize: expected 24, but got 25
