## Check the values of sh_info fields set by default for
## explicitly listed .dynstr, .dynsym, .strtab and .symtab
## sections.
##
## For symbol table sections, sh_info has a value which is
## one greater than the symbol table index of the last
## local symbol.
##
## sh_info isn't set for string table sections.

# RUN: yaml2obj --docnum=1 %s -o %t
# RUN: llvm-readobj --sections %t | FileCheck %s --check-prefix=CASE1

# CASE1:      Name: .symtab
# CASE1:      Info:
# CASE1-SAME: 2
# CASE1:      Name: .strtab
# CASE1:      Info:
# CASE1-SAME: 0
# CASE1:      Name: .dynsym
# CASE1:      Info:
# CASE1-SAME: 1
# CASE1:      Name: .dynstr
# CASE1:      Info:
# CASE1-SAME: 0

--- !ELF
FileHeader:
  Class:   ELFCLASS64
  Data:    ELFDATA2LSB
  Type:    ET_DYN
  Machine: EM_X86_64
Sections:
  - Name:  .symtab
    Type:  SHT_SYMTAB
  - Name:  .strtab
    Type:  SHT_STRTAB
  - Name:  .dynsym
    Type:  SHT_DYNSYM
  - Name:  .dynstr
    Type:  SHT_STRTAB
Symbols:
  - Name:    local
  - Name:    global1
    Binding: STB_GLOBAL
DynamicSymbols:
  - Name:    global2
    Binding: STB_GLOBAL

## In the case when these sections are not defined in YAML, the
## behavior is the same as when we define them, but do not set the Info.

# RUN: yaml2obj --docnum=2 %s -o %t
# RUN: llvm-readobj --sections %t | FileCheck %s --check-prefix=CASE1

--- !ELF
FileHeader:
  Class:   ELFCLASS64
  Data:    ELFDATA2LSB
  Type:    ET_DYN
  Machine: EM_X86_64
Symbols:
  - Name:    local
  - Name:    global1
    Binding: STB_GLOBAL
DynamicSymbols:
  - Name:    global2
    Binding: STB_GLOBAL

## Check we are able to set any sh_info explicitly.

# RUN: yaml2obj --docnum=3 %s -o %t
# RUN: llvm-readobj --sections %t | FileCheck %s --check-prefix=CASE2

# CASE2:      Name: .dynstr
# CASE2:      Info:
# CASE2-SAME: 10
# CASE2:      Name: .dynsym
# CASE2:      Info:
# CASE2-SAME: 11
# CASE2:      Name: .strtab
# CASE2:      Info:
# CASE2-SAME: 12
# CASE2:      Name: .symtab
# CASE2:      Info:
# CASE2-SAME: 13

--- !ELF
FileHeader:
  Class:   ELFCLASS64
  Data:    ELFDATA2LSB
  Type:    ET_DYN
  Machine: EM_X86_64
Sections:
  - Name:  .dynstr
    Type:  SHT_STRTAB
    Info:  10
  - Name:  .dynsym
    Type:  SHT_DYNSYM
    Info:  11
  - Name:  .strtab
    Type:  SHT_STRTAB
    Info:  12
  - Name:  .symtab
    Type:  SHT_SYMTAB
    Info:  13
Symbols:
  - Name:    local
  - Name:    global1
    Binding: STB_GLOBAL
DynamicSymbols:
  - Name:    global2
    Binding: STB_GLOBAL
