## For implicit string table sections, the `Flags` field can also
## be specified in YAML. Here we test the behavior in different cases.

## When flags are not explicitly specified, yaml2obj assigns no flags
## for .strtab and the SHF_ALLOC flag for .dynstr by default.

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

# CASE1:      Name: .strtab
# CASE1-NEXT: Type: SHT_STRTAB
# CASE1-NEXT: Flags [
# CASE1-NEXT: ]
# CASE1:      Name: .dynstr
# CASE1-NEXT: Type: SHT_STRTAB
# CASE1-NEXT: Flags [
# CASE1-NEXT:   SHF_ALLOC
# CASE1-NEXT: ]

--- !ELF
FileHeader:
  Class:   ELFCLASS64
  Data:    ELFDATA2LSB
  Type:    ET_DYN
  Machine: EM_X86_64
Sections:
  - Name:    .strtab
    Type:    SHT_STRTAB
  - Name:    .dynstr
    Type:    SHT_STRTAB

## Check we can set arbitrary flags for .strtab/.dynstr.

# RUN: yaml2obj --docnum=2 %s -o %t2
# RUN: llvm-readobj %t2 -S | FileCheck %s --check-prefix=CASE2

# CASE2:      Name: .strtab
# CASE2-NEXT: Type: SHT_STRTAB
# CASE2-NEXT: Flags [
# CASE2-NEXT:   SHF_ALLOC
# CASE2-NEXT:   SHF_STRINGS
# CASE2-NEXT: ]
# CASE2:      Name: .dynstr
# CASE2-NEXT: Type: SHT_STRTAB
# CASE2-NEXT: Flags [
# CASE2-NEXT:   SHF_STRINGS
# CASE2-NEXT: ]

--- !ELF
FileHeader:
  Class:   ELFCLASS64
  Data:    ELFDATA2LSB
  Type:    ET_DYN
  Machine: EM_X86_64
Sections:
  - Name:  .strtab
    Type:  SHT_STRTAB
    Flags: [ SHF_ALLOC, SHF_STRINGS ]
  - Name:  .dynstr
    Type:  SHT_STRTAB
    Flags: [ SHF_STRINGS ]

## Check no flags are set by default for .strtab when it is not
## described in the YAML.

# RUN: yaml2obj --docnum=3 %s -o %t3
# RUN: llvm-readobj %t3 -S | FileCheck %s --check-prefix=CASE3

# CASE3:      Name: .strtab
# CASE3-NEXT: Type: SHT_STRTAB
# CASE3-NEXT: Flags [
# CASE3-NEXT: ]

--- !ELF
FileHeader:
  Class:   ELFCLASS64
  Data:    ELFDATA2LSB
  Type:    ET_DYN
  Machine: EM_X86_64
