## Check we are able to describe the content of a section
## using the ContentArray key.

## Check we are able to use ContentArray to create multi-line descriptions
## of section contents with comments on the same line.
# RUN: yaml2obj --docnum=1 %s -o %t1
# RUN: llvm-readobj --sections --section-data %t1 | FileCheck %s

# CHECK:      Section {
# CHECK:        Index: 1
# CHECK-NEXT:   Name: .foo
# CHECK-NEXT:   Type: SHT_PROGBITS
# CHECK-NEXT:   Flags [
# CHECK-NEXT:   ]
# CHECK-NEXT:   Address: 0x0
# CHECK-NEXT:   Offset: 0x40
# CHECK-NEXT:   Size: 16
# CHECK-NEXT:   Link: 0
# CHECK-NEXT:   Info: 0
# CHECK-NEXT:   AddressAlignment: 0
# CHECK-NEXT:   EntrySize: 0
# CHECK-NEXT:   SectionData (
# CHECK-NEXT:     0000: 11223344 55667788 99AABBCC DDEEFF00
# CHECK-NEXT:   )
# CHECK-NEXT: }

--- !ELF
FileHeader:
  Class: ELFCLASS64
  Data:  ELFDATA2LSB
  Type:  ET_DYN
Sections:
  - Name:         .foo
    Type:         SHT_PROGBITS
    ContentArray: [ 0x11, 0x22, 0x33, 0x44,                                ## .long 11223344
                    0x55, 0x66,                                            ## .short 5566.
                    0x77,                                                  ## .byte 0x77
                    0x88, 0x99, 0xAA, 0xBB, 0xCC, 0xDD, 0xEE, 0xFF, 0x00 ] ## .quad 0x8899aabbccddeeff00

## Check we do not allow using 'Content' and 'ContentArray' at the same time.
# RUN: not yaml2obj --docnum=2 %s -o /dev/null 2>&1 | FileCheck %s --check-prefix=BOTH
# BOTH: error: Content and ContentArray can't be used together

--- !ELF
FileHeader:
  Class: ELFCLASS64
  Data:  ELFDATA2LSB
  Type:  ET_DYN
Sections:
  - Name:         .foo
    Type:         SHT_PROGBITS
    Content:      [ 0x0 ]
    ContentArray: [ 0x1 ]

## Check how the "Size" and the "ContentArray" keys can be used together.

## Case A: check that we report an error when the the value of "Size" is less than the content size.
# RUN: not yaml2obj --docnum=3 -DSIZE=1 %s -o /dev/null 2>&1 | FileCheck %s --check-prefix=SIZE-LESS
# SIZE-LESS: error: Section size must be greater than or equal to the content size

--- !ELF
FileHeader:
  Class: ELFCLASS64
  Data:  ELFDATA2LSB
  Type:  ET_DYN
Sections:
  - Name:         .foo
    Type:         SHT_PROGBITS
    ContentArray: [ 0x11, 0x22 ]
    Size:         [[SIZE]]

## Case B: check we are able to produce an output when the value of "Size" is equal
##         to the content size. In this case the "Size" key has no effect.
# RUN: yaml2obj --docnum=3 -DSIZE=2 %s -o %t3.eq
# RUN: llvm-readobj --sections --section-data %t3.eq | FileCheck %s --check-prefix=SIZE-EQ

# SIZE-EQ:      Name: .foo
# SIZE-EQ:      SectionData (
# SIZE-EQ-NEXT:   0000: 1122 |
# SIZE-EQ-NEXT: )

## Case C: check we are able to produce an output when the value of "Size" is greater
##         than the content size. In this case zeroes are added as padding after the
##         specified content.
# RUN: yaml2obj --docnum=3 -DSIZE=3 %s -o %t4.gr
# RUN: llvm-readobj --sections --section-data %t4.gr | FileCheck %s --check-prefix=SIZE-GR

# SIZE-GR:      Name: .foo
# SIZE-GR:      SectionData (
# SIZE-GR-NEXT:   0000: 112200 |
# SIZE-GR-NEXT: )
