## 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
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=CASE2

# CASE2:     Name: .dynsym
# CASE2-NOT: Info:
# CASE2:     Info: 1{{$}}
# CASE2:     Name: .dynstr
# CASE2-NOT: Info:
# CASE2:     Info: 0{{$}}
# CASE2:     Name: .symtab
# CASE2-NOT: Info:
# CASE2:     Info: 2{{$}}
# CASE2:     Name: .strtab
# CASE2-NOT: Info:
# CASE2:     Info: 0{{$}}

--- !ELF
FileHeader:
  Class: ELFCLASS64
  Data:  ELFDATA2LSB
  Type:  ET_DYN
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=CASE3

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

--- !ELF
FileHeader:
  Class: ELFCLASS64
  Data:  ELFDATA2LSB
  Type:  ET_DYN
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
