## Check how the "Content", "Size" and "Members" keys can be used to
## describe the content for group sections.

## Check we can use the "Content" key with the "Size" key when the size is greater
## than or equal to the content size.

# RUN: not yaml2obj -DSIZE=1 -DCONTENT="'0011'" %s 2>&1 | \
# RUN:   FileCheck %s --check-prefix=CONTENT-SIZE-ERR

# CONTENT-SIZE-ERR: error: Section size must be greater than or equal to the content size

--- !ELF
FileHeader:
  Class: ELFCLASS64
  Data:  ELFDATA2LSB
  Type:  ET_DYN
Sections:
  - Name:    .group
    Type:    SHT_GROUP
    Link:    0x1
    Info:    0x2
    EntSize: [[ENTSIZE=<none>]]
    Size:    [[SIZE=<none>]]
    Content: [[CONTENT=<none>]]
    Members: [[MEMBERS=<none>]]

# RUN: yaml2obj -DSIZE=2 -DCONTENT="'0011'" %s -o %t.cont.size.eq.o
# RUN: llvm-readobj --sections --section-data %t.cont.size.eq.o | \
# RUN:   FileCheck %s --check-prefix=CHECK-CONTENT -DDATA="0011"

# RUN: yaml2obj -DSIZE=3 -DCONTENT="'0011'" %s -o %t.cont.size.gr.o
# RUN: llvm-readobj --sections --section-data %t.cont.size.gr.o | \
# RUN:   FileCheck %s --check-prefix=CHECK-CONTENT -DDATA="001100"

# CHECK-CONTENT:      Name: .group
# CHECK-CONTENT-NEXT: Type: SHT_GROUP
# CHECK-CONTENT-NEXT: Flags [
# CHECK-CONTENT-NEXT: ]
# CHECK-CONTENT-NEXT: Address:
# CHECK-CONTENT-NEXT: Offset:
# CHECK-CONTENT-NEXT: Size:
# CHECK-CONTENT-NEXT: Link: 1
# CHECK-CONTENT-NEXT: Info: 2
# CHECK-CONTENT-NEXT: AddressAlignment:
# CHECK-CONTENT-NEXT: EntrySize: 4
# CHECK-CONTENT-NEXT: SectionData (
# CHECK-CONTENT-NEXT:   0000: [[DATA]] |
# CHECK-CONTENT-NEXT: )

## Check we can use the "Size" key alone to create the section.

# RUN: yaml2obj -DSIZE=3 %s -o %t.size.o
# RUN: llvm-readobj --sections --section-data %t.size.o | \
# RUN:   FileCheck %s --check-prefix=CHECK-CONTENT -DDATA="000000"

## Check we can use the "Content" key alone to create the section.

# RUN: yaml2obj -DCONTENT="'112233'" %s -o %t.content.o
# RUN: llvm-readobj --sections --section-data %t.content.o | \
# RUN:   FileCheck %s --check-prefix=CHECK-CONTENT -DDATA="112233"

## Check we can't use the "Members" key together with the "Content" or "Size" keys.

# RUN: not yaml2obj -DSIZE=0 -DMEMBERS="[]" %s 2>&1 | \
# RUN:   FileCheck %s --check-prefix=MEMBERS-ERR
# RUN: not yaml2obj -DCONTENT="'00'" -DMEMBERS="[]" %s 2>&1 | \
# RUN:   FileCheck %s --check-prefix=MEMBERS-ERR

# MEMBERS-ERR: error: "Members" cannot be used with "Content" or "Size"

## Check we create an empty section when none of "Size", "Content" or "Members" are specified.
## Check that the default value of sh_entsize is 4.

# RUN: yaml2obj %s -o %t.empty.o
# RUN: llvm-readelf --sections --section-data %t.empty.o | \
# RUN:   FileCheck %s --check-prefix=EMPTY-SEC

# EMPTY-SEC: [Nr] Name   Type  Address          Off    Size   ES Flg
# EMPTY-SEC: [ 1] .group GROUP 0000000000000000 000040 000000 04 1

## Check that we are able to set an arbitrary entry size for the group section.

# RUN: yaml2obj %s -DENTSIZE=0xFE -o %t.entsize.o
# RUN: llvm-readelf --sections %t.entsize.o | FileCheck %s --check-prefix=ENTSIZE

# ENTSIZE: [Nr] Name   Type  Address          Off    Size   ES Flg
# ENTSIZE: [ 1] .group GROUP 0000000000000000 000040 000000 fe 1
