## Check we are able to set custom sh_size field
## for different sections.

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

# CASE1:      Section Headers:
# CASE1-NEXT:  [Nr] Name           Type     Address          Off    Size  
# CASE1-NEXT:  [ 0]                NULL     0000000000000000 000000 000000
# CASE1-NEXT:  [ 1] .dynsym        DYNSYM   0000000000000000 000040 000001
# CASE1-NEXT:  [ 2] .symtab        SYMTAB   0000000000000000 000058 000002
# CASE1-NEXT:  [ 3] .dynamic       DYNAMIC  0000000000000000 000070 000003
# CASE1-NEXT:  [ 4] .rela          RELA     0000000000000000 000070 000004
# CASE1-NEXT:  [ 5] .nobits        NOBITS   0000000000000000 000070 000005
# CASE1-NEXT:  [ 6] .group         GROUP    0000000000000000 000070 000006
# CASE1-NEXT:  [ 7] .gnu.version   VERSYM   0000000000000000 000070 000007
# CASE1-NEXT:  [ 8] .gnu.version_r VERNEED  0000000000000000 000070 000008
# CASE1-NEXT:  [ 9] .gnu.version_d VERDEF   0000000000000000 000070 000009
# CASE1-NEXT:  [10] .regular       PROGBITS 0000000000000000 000070 00000a
# CASE1-NEXT:  [11] .strtab        STRTAB   0000000000000000 000070 00000b

--- !ELF
FileHeader:
  Class:   ELFCLASS64
  Data:    ELFDATA2LSB
  Type:    ET_REL
  Machine: EM_X86_64
Sections:
  - Name: .dynsym
    Type: SHT_DYNSYM
    ShSize: 0x000000001
  - Name: .symtab
    Type: SHT_SYMTAB
    ShSize: 0x000000002
  - Name: .dynamic
    Type: SHT_DYNAMIC
    ShSize: 0x000000003
  - Name: .rela
    Type: SHT_RELA
    ShSize: 0x000000004
  - Name: .nobits
    Type: SHT_NOBITS
    ShSize: 0x000000005
  - Name: .group
    Type: SHT_GROUP
    Info: 0
    ShSize: 0x000000006
    Members:
  - Name: .gnu.version
    Type: SHT_GNU_versym
    Entries: [ ]
    ShSize: 0x000000007
  - Name: .gnu.version_r
    Type: SHT_GNU_verneed
    Info: 0x0000000000000001
    ShSize: 0x000000008
    Dependencies:
  - Name: .gnu.version_d
    Type: SHT_GNU_verdef
    Info: 0x0000000000000001
    ShSize: 0x000000009
    Entries:
  - Name: .regular
    Type: SHT_PROGBITS
    ShSize: 0x00000000A
  - Name: .strtab
    Type: SHT_STRTAB
    ShSize: 0x00000000B

## Here we check that defining ShSize does not actually change
## the content and also does not affect file size.

# RUN: yaml2obj --docnum=2 %s -o %t2
# RUN: yaml2obj --docnum=3 %s -o %t3
# RUN: od -t x1 -v %t2 > %t.txt
# RUN: od -t x1 -v %t3 >> %t.txt
# RUN: FileCheck %s --input-file=%t.txt --ignore-case --check-prefix=CASE2

# CASE2: [[OFFSET:.*]] fe fe fe fe fe fe fe fe
# CASE2: [[FILESIZE:.*]]{{$}}
# CASE2: [[OFFSET]] fe fe fe fe fe fe fe fe
# CASE2: [[FILESIZE]]{{$}}

--- !ELF
FileHeader:
  Class:   ELFCLASS64
  Data:    ELFDATA2LSB
  Type:    ET_REL
  Machine: EM_X86_64
Sections:
  - Name: .foo
    Type: SHT_PROGBITS
    Content: "fefefefefefefefe"

--- !ELF
FileHeader:
  Class:   ELFCLASS64
  Data:    ELFDATA2LSB
  Type:    ET_REL
  Machine: EM_X86_64
Sections:
  - Name: .foo
    Type: SHT_PROGBITS
    ShSize: 1
    Content: "fefefefefefefefe"

## Check we can define sh_size larger than section content size
## and thus create overlaping sections.

# RUN: yaml2obj --docnum=4 %s -o %t4
# RUN: llvm-readobj --sections --section-data %t4 | FileCheck %s --check-prefix=CASE4

# CASE4:      Name: .foo
# CASE4:      SectionData (
# CASE4-NEXT: 0000: AAAABBBB |....|
# CASE4:      Name: .bar
# CASE4:      SectionData (
# CASE4-NEXT: 0000: BBBB |..|

--- !ELF
FileHeader:
  Class:   ELFCLASS64
  Data:    ELFDATA2LSB
  Type:    ET_REL
  Machine: EM_X86_64
Sections:
  - Name: .foo
    Type: SHT_PROGBITS
    Content: "aaaa"
    ShSize: 4
  - Name: .bar
    Type: SHT_PROGBITS
    Content: "bbbb"

## Check we can set both Size and ShSize and the number of the actual
## bytes written is equal to Size in this case.

# RUN: yaml2obj --docnum=5 %s -o %t5
# RUN: od -t x1 -v %t5 | FileCheck %s --ignore-case --check-prefix=CASE5

# CASE5: aa aa 00 00 bb bb

--- !ELF
FileHeader:
  Class:   ELFCLASS64
  Data:    ELFDATA2LSB
  Type:    ET_REL
  Machine: EM_X86_64
Sections:
  - Name: .foo
    Type: SHT_PROGBITS
    Content: "aaaa"
  - Name: .bar
    Type: SHT_PROGBITS
    Size: 2
    ShSize: 4
  - Name: .zed
    Type: SHT_PROGBITS
    Content: "bbbb"
