## Test reading ELF with .dynsym under the following conditions:
##  * Section headers are available.
##  * Section headers are stripped but there is a DT_GNU_HASH dynamic tag.
##  * Section headers are stripped but there is a DT_HASH dynamic tag.

## Test if llvm-ifs reads DT_SYMTAB size through section headers by puting the wrong terminator in DT_GNU_HASH.
# RUN: yaml2obj %s -o %tfull -DGNUHASHVALUE="[0x9]" -DTAG1="DT_GNU_HASH" -DVAL1="0xC00"
# RUN: llvm-ifs --input-format=ELF --output-format=IFS --output=- %tfull | FileCheck %s

## Test if llvm-ifs fails to read DT_SYMTAB size through section headers when the value of sh_entsize is invalid.
# RUN: yaml2obj %s -o %tfull -DGNUHASHVALUE="[0x9]" -DTAG1="DT_GNU_HASH" -DVAL1="0xC00" -DENTSIZE="0x19"
# RUN: not llvm-ifs --input-format=ELF --output-format=IFS --output=- %tfull 2>&1 | FileCheck %s --check-prefix=BADENTSIZE

## Test if llvm-ifs reads DT_SYMTAB size through DT_GNU_HASH.
# RUN: yaml2obj %s -o %tw.gnu.hash -DGNUHASHVALUE="[0x8, 0x9]" -DTAG1="DT_GNU_HASH" -DVAL1="0xC00" -DNOHEADER="true"
# RUN: llvm-ifs --input-format=ELF --output-format=IFS --output=- %tw.gnu.hash | FileCheck %s

## Test if llvm-ifs fails to read DT_SYMTAB size through DT_GNU_HASH when there is no terminator.
# RUN: yaml2obj %s -o %tw.gnu.hash -DGNUHASHVALUE="[0x8, 0xA]" -DTAG1="DT_GNU_HASH" -DVAL1="0xC00" -DNOHEADER="true"
# RUN: not llvm-ifs --input-format=ELF --output-format=IFS --output=- %tw.gnu.hash  2>&1 | FileCheck %s --check-prefix=NOTERMINATOR

# CHECK:      --- !ifs-v1
# CHECK-NEXT: IfsVersion:      3.0
# CHECK-NEXT: Target: { ObjectFormat: ELF, Arch: AArch64, Endianness: little, BitWidth: 64 }
# CHECK-NEXT: Symbols:
# CHECK-NEXT:   - { Name: bar, Type: Object, Size: 0, Undefined: true }
# CHECK-NEXT:   - { Name: foo, Type: Func, Undefined: true }
# CHECK-NEXT: ...

# BADENTSIZE: SHT_DYNSYM section has sh_size (72) % sh_entsize (25) that is not 0

# NOTERMINATOR: error: no terminator found for GNU hash section before buffer end

--- !ELF
FileHeader:
  Class:      ELFCLASS64
  Data:       ELFDATA2LSB
  Type:       ET_DYN
  Machine:    EM_AARCH64
Sections:
  - Name:         .text
    Type:         SHT_PROGBITS
  - Name:         .data
    Type:         SHT_PROGBITS
  - Name:         .strtab
    Type:         SHT_STRTAB
  - Name:         .shstrtab
    Type:         SHT_STRTAB
  - Name:         .dynsym
    Type:         SHT_DYNSYM
    Flags:        [ SHF_ALLOC ]
    EntSize:      [[ENTSIZE=0x18]]
    Address:      0x400
    AddressAlign: 0x400
  - Name:         .dynstr
    Type:         SHT_STRTAB
    Flags:        [ SHF_ALLOC ]
    Address:      0x600
    AddressAlign: 0x200
  - Name:         .dynamic
    Type:         SHT_DYNAMIC
    Flags:        [ SHF_ALLOC ]
    Address:      0x800
    AddressAlign: 0x200
    Entries:
      - Tag:   DT_STRTAB
        Value: 0x600
      - Tag:   DT_STRSZ
        Value: 9
      - Tag:   DT_SYMTAB
        Value: 0x400
      - Tag:   [[TAG1]]
        Value: [[VAL1]]
      - Tag:   DT_NULL
        Value: 0
  - Name:         .hash
    Type:         SHT_HASH
    Flags:        [ SHF_ALLOC ]
    Address:      0xA00
    AddressAlign: 0x200
    Bucket:       [ 1 ]
    Chain:        [ 1, 2, 3 ]
  - Name:         .gnu.hash
    Type:         SHT_GNU_HASH
    Flags:        [ SHF_ALLOC ]
    Address:      0xC00
    AddressAlign: 0x200
    Header:
      SymNdx:    0x1
      Shift2:    0x2
      MaskWords: 2
      NBuckets:  2
    BloomFilter: [0x3, 0x4]
    HashBuckets: [0x0, 0x1]
    HashValues:  [[GNUHASHVALUE]]
  - Type: SectionHeaderTable
    NoHeaders: [[NOHEADER=false]]
DynamicSymbols:
  - Name:    foo
    Type:    STT_FUNC
    Value:   0x100
    Binding: 1
  - Name:    bar
    Type:    STT_OBJECT
    Value:   0x200
    Binding: 1
ProgramHeaders:
  - Type:     PT_LOAD
    VAddr:    0x400
    FirstSec: .dynsym
    LastSec:  .gnu.hash
  - Type:     PT_DYNAMIC
    VAddr:    0x800
    FirstSec: .dynamic
    LastSec:  .dynamic
