llvm/llvm/test/ObjectYAML/wasm/section_header_size.yaml

## Test that obj2yaml output includes the section header size encoding length
## only when the length isn't padded to 5 bytes.
# RUN: yaml2obj --docnum=1 %s | obj2yaml | FileCheck %s

--- !WASM
FileHeader:
  Version:         0x1
Sections:
  - Type:            TYPE
    HeaderSecSizeEncodingLen:   3
    Signatures:
      - Index:           0
        ParamTypes:
          - I32
          - I32
        ReturnTypes:
          - I32
  - Type:            FUNCTION
    HeaderSecSizeEncodingLen:  4
    FunctionTypes:             [ 0 ]
  - Type:            MEMORY
    HeaderSecSizeEncodingLen:  1
    Memories:
      - Flags:           [ HAS_MAX ]
        Minimum:         0x100
        Maximum:         0x100
  - Type:            EXPORT
    HeaderSecSizeEncodingLen:  5
    Exports:
      - Name:            add
        Kind:            FUNCTION
        Index:           0
  - Type:            CODE
    HeaderSecSizeEncodingLen:  2
    Functions:
      - Index:           0
        Locals:          []
        Body:            200020016A0B
...
# CHECK: --- !WASM
# CHECK-NEXT: FileHeader:
# CHECK-NEXT:   Version:         0x1
# CHECK-NEXT: Sections:
# CHECK-NEXT:   - Type:            TYPE
# CHECK-NEXT:     HeaderSecSizeEncodingLen:   3
# CHECK-NEXT:     Signatures:
# CHECK-NEXT:       - Index:           0
# CHECK-NEXT:         ParamTypes:
# CHECK-NEXT:           - I32
# CHECK-NEXT:           - I32
# CHECK-NEXT:         ReturnTypes:
# CHECK-NEXT:           - I32
# CHECK-NEXT:   - Type:            FUNCTION
# CHECK-NEXT:     HeaderSecSizeEncodingLen:  4
# CHECK-NEXT:     FunctionTypes:             [ 0 ]
# CHECK-NEXT:   - Type:            MEMORY
# CHECK-NEXT:     Memories:
# CHECK-NEXT:       - Flags:           [ HAS_MAX ]
# CHECK-NEXT:         Minimum:         0x100
# CHECK-NEXT:         Maximum:         0x100
# CHECK-NEXT:   - Type:            EXPORT
# CHECK-NEXT:     Exports:
# CHECK-NEXT:       - Name:            add
# CHECK-NEXT:         Kind:            FUNCTION
# CHECK-NEXT:         Index:           0
# CHECK-NEXT:   - Type:            CODE
# CHECK-NEXT:     HeaderSecSizeEncodingLen:  2
# CHECK-NEXT:     Functions:
# CHECK-NEXT:       - Index:           0
# CHECK-NEXT:         Locals:          []
# CHECK-NEXT:         Body:            200020016A0B

## Test if we correctly error out if the provided section header size is less
## than the size required.
# RUN: not yaml2obj --docnum=2 %s -o /dev/null 2>&1 | FileCheck %s --check-prefix=INVALID
# INVALID: yaml2obj: error: section header length can't be encoded in a LEB of size 0

--- !WASM
FileHeader:
  Version:         0x1
Sections:
  - Type:            TYPE
    HeaderSecSizeEncodingLen:   0
    Signatures:
      - Index:           0
        ParamTypes:
          - I32
          - I32
        ReturnTypes:
          - I32
...