llvm/llvm/test/tools/llvm-readobj/COFF/arm64x-reloc-invalid.yaml

# Test ARM64X dynamic relocation validation.

# RUN: yaml2obj %s --docnum=1 -o %t1.dll
# RUN: not llvm-readobj %t1.dll 2>&1 | FileCheck --check-prefix=ERR-HEADER-RVA %s
# ERR-HEADER-RVA: RVA 0x1002 for ARM64X reloc not found

--- !COFF
OptionalHeader:
  ImageBase:       0x180000000
  SectionAlignment: 4096
  FileAlignment:   512
  DLLCharacteristics: [ ]
  LoadConfigTable:
    RelativeVirtualAddress: 0x5000
    Size:            320
header:
  Machine:         IMAGE_FILE_MACHINE_ARM64
  Characteristics: [ IMAGE_FILE_EXECUTABLE_IMAGE, IMAGE_FILE_LARGE_ADDRESS_AWARE, IMAGE_FILE_DLL ]
sections:
  - Name:            .text
    Characteristics: [ IMAGE_SCN_CNT_CODE, IMAGE_SCN_MEM_EXECUTE, IMAGE_SCN_MEM_READ ]
    VirtualAddress:  0x2000
    VirtualSize:     0x2050
  - Name:            .rdata
    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ ]
    VirtualAddress:  0x5000
    VirtualSize:     328
    StructuredData:
      - LoadConfig:
          CHPEMetadataPointer: 0x180005000
          DynamicValueRelocTableOffset: 4
          DynamicValueRelocTableSection: 4
  - Name:            .data
    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ, IMAGE_SCN_MEM_WRITE ]
    VirtualAddress:  0x6000
    VirtualSize:     144
    StructuredData:
      - UInt32: 1       # Version
      - UInt32: 0x5050  # CodeMap
      - UInt32: 3       # CodeMapCount
      - UInt32: 0x5068  # CodeRangesToEntryPoints
      - UInt32: 0x5080  # RedirectionMetadata
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0       # CodeRangesToEntryPointsCount
      - UInt32: 0       # RedirectionMetadataCount
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0x1001  # CodeMap[0]
      - UInt32: 0x30
      - UInt32: 0x2000  # CodeMap[1]
      - UInt32: 0x40
      - UInt32: 0x3002  # CodeMap[2]
      - UInt32: 0x50
  - Name:            .reloc
    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ, IMAGE_SCN_MEM_DISCARDABLE ]
    VirtualAddress:  0x7000
    VirtualSize:     328
    StructuredData:
      - UInt32: 0         # pad
      - UInt32: 1         # coff_dynamic_reloc_table.Version
      - UInt32: 24        # coff_dynamic_reloc_table.Size
      - UInt32: 6         # coff_dynamic_relocation64.Symbol(low) = IMAGE_DYNAMIC_RELOCATION_ARM64X
      - UInt32: 0         # coff_dynamic_relocation64.Symbol(high)
      - UInt32: 12        # coff_dynamic_relocation64.BaseRelocSize
      - UInt32: 0x1000    # coff_base_reloc_block_header[0].PageRVA
      - UInt32: 12        # coff_base_reloc_block_header[0].BlockSize
      - Binary: 0040      # ZERO offset 0xf00, size 2
      - Binary: 0000      # terminator
symbols:         []
...

# RUN: yaml2obj %s --docnum=2 -o %t2.dll
# RUN: not llvm-readobj %t2.dll 2>&1 | FileCheck --check-prefix=ERR-SEC-INDEX %s
# ERR-SEC-INDEX: section index out of bounds

--- !COFF
OptionalHeader:
  ImageBase:       0x180000000
  SectionAlignment: 4096
  FileAlignment:   512
  DLLCharacteristics: [ ]
  LoadConfigTable:
    RelativeVirtualAddress: 0x4000
    Size:            320
header:
  Machine:         IMAGE_FILE_MACHINE_ARM64
  Characteristics: [ IMAGE_FILE_EXECUTABLE_IMAGE, IMAGE_FILE_LARGE_ADDRESS_AWARE, IMAGE_FILE_DLL ]
sections:
  - Name:            .text
    Characteristics: [ IMAGE_SCN_CNT_CODE, IMAGE_SCN_MEM_EXECUTE, IMAGE_SCN_MEM_READ ]
    VirtualAddress:  0x1000
    VirtualSize:     0x2050
  - Name:            .rdata
    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ ]
    VirtualAddress:  0x4000
    VirtualSize:     328
    StructuredData:
      - LoadConfig:
          CHPEMetadataPointer: 0x180005000
          DynamicValueRelocTableOffset: 4
          DynamicValueRelocTableSection: 5
  - Name:            .data
    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ, IMAGE_SCN_MEM_WRITE ]
    VirtualAddress:  0x5000
    VirtualSize:     144
    StructuredData:
      - UInt32: 1       # Version
      - UInt32: 0x5050  # CodeMap
      - UInt32: 3       # CodeMapCount
      - UInt32: 0x5068  # CodeRangesToEntryPoints
      - UInt32: 0x5080  # RedirectionMetadata
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0       # CodeRangesToEntryPointsCount
      - UInt32: 0       # RedirectionMetadataCount
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0x1001  # CodeMap[0]
      - UInt32: 0x30
      - UInt32: 0x2000  # CodeMap[1]
      - UInt32: 0x40
      - UInt32: 0x3002  # CodeMap[2]
      - UInt32: 0x50
symbols:         []
...

# RUN: yaml2obj %s --docnum=3 -o %t3.dll
# RUN: not llvm-readobj %t3.dll 2>&1 | FileCheck --check-prefix=ERR-DIR-INDEX %s
# ERR-DIR-INDEX: Too large DynamicValueRelocTableOffset (4)

--- !COFF
OptionalHeader:
  ImageBase:       0x180000000
  SectionAlignment: 4096
  FileAlignment:   512
  DLLCharacteristics: [ ]
  LoadConfigTable:
    RelativeVirtualAddress: 0x4000
    Size:            320
header:
  Machine:         IMAGE_FILE_MACHINE_ARM64
  Characteristics: [ IMAGE_FILE_EXECUTABLE_IMAGE, IMAGE_FILE_LARGE_ADDRESS_AWARE, IMAGE_FILE_DLL ]
sections:
  - Name:            .text
    Characteristics: [ IMAGE_SCN_CNT_CODE, IMAGE_SCN_MEM_EXECUTE, IMAGE_SCN_MEM_READ ]
    VirtualAddress:  0x1000
    VirtualSize:     0x2050
  - Name:            .rdata
    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ ]
    VirtualAddress:  0x4000
    VirtualSize:     328
    StructuredData:
      - LoadConfig:
          CHPEMetadataPointer: 0x180005000
          DynamicValueRelocTableOffset: 4
          DynamicValueRelocTableSection: 4
  - Name:            .data
    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ, IMAGE_SCN_MEM_WRITE ]
    VirtualAddress:  0x5000
    VirtualSize:     144
    StructuredData:
      - UInt32: 1       # Version
      - UInt32: 0x5050  # CodeMap
      - UInt32: 3       # CodeMapCount
      - UInt32: 0x5068  # CodeRangesToEntryPoints
      - UInt32: 0x5080  # RedirectionMetadata
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0       # CodeRangesToEntryPointsCount
      - UInt32: 0       # RedirectionMetadataCount
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0x1001  # CodeMap[0]
      - UInt32: 0x30
      - UInt32: 0x2000  # CodeMap[1]
      - UInt32: 0x40
      - UInt32: 0x3002  # CodeMap[2]
      - UInt32: 0x50
  - Name:            .reloc
    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ, IMAGE_SCN_MEM_DISCARDABLE ]
    VirtualAddress:  0x7000
    VirtualSize:     11
    StructuredData:
      - UInt32: 0         # pad
      - UInt32: 1         # coff_dynamic_reloc_table.Version
      - Binary: 010000    # coff_dynamic_reloc_table.Size
symbols:         []
...

# RUN: yaml2obj %s --docnum=4 -o %t4.dll
# RUN: not llvm-readobj %t4.dll 2>&1 | FileCheck --check-prefix=ERR-DIR-SIZE %s
# ERR-DIR-SIZE: Indvalid dynamic relocations directory size (2)

--- !COFF
OptionalHeader:
  ImageBase:       0x180000000
  SectionAlignment: 4096
  FileAlignment:   512
  DLLCharacteristics: [ ]
  LoadConfigTable:
    RelativeVirtualAddress: 0x4000
    Size:            320
header:
  Machine:         IMAGE_FILE_MACHINE_ARM64
  Characteristics: [ IMAGE_FILE_EXECUTABLE_IMAGE, IMAGE_FILE_LARGE_ADDRESS_AWARE, IMAGE_FILE_DLL ]
sections:
  - Name:            .text
    Characteristics: [ IMAGE_SCN_CNT_CODE, IMAGE_SCN_MEM_EXECUTE, IMAGE_SCN_MEM_READ ]
    VirtualAddress:  0x1000
    VirtualSize:     0x2050
  - Name:            .rdata
    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ ]
    VirtualAddress:  0x4000
    VirtualSize:     328
    StructuredData:
      - LoadConfig:
          CHPEMetadataPointer: 0x180005000
          DynamicValueRelocTableOffset: 4
          DynamicValueRelocTableSection: 4
  - Name:            .data
    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ, IMAGE_SCN_MEM_WRITE ]
    VirtualAddress:  0x5000
    VirtualSize:     144
    StructuredData:
      - UInt32: 1       # Version
      - UInt32: 0x5050  # CodeMap
      - UInt32: 3       # CodeMapCount
      - UInt32: 0x5068  # CodeRangesToEntryPoints
      - UInt32: 0x5080  # RedirectionMetadata
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0       # CodeRangesToEntryPointsCount
      - UInt32: 0       # RedirectionMetadataCount
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0x1001  # CodeMap[0]
      - UInt32: 0x30
      - UInt32: 0x2000  # CodeMap[1]
      - UInt32: 0x40
      - UInt32: 0x3002  # CodeMap[2]
      - UInt32: 0x50
  - Name:            .reloc
    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ, IMAGE_SCN_MEM_DISCARDABLE ]
    VirtualAddress:  0x7000
    VirtualSize:     13
    StructuredData:
      - UInt32: 0         # pad
      - UInt32: 1         # coff_dynamic_reloc_table.Version
      - UInt32: 2         # coff_dynamic_reloc_table.Size
      - Binary: 00
symbols:         []
...

# RUN: yaml2obj %s --docnum=5 -o %t5.dll
# RUN: not llvm-readobj %t5.dll 2>&1 | FileCheck --check-prefix=ERR-RELOC-SIZE %s
# ERR-RELOC-SIZE: Unexpected end of dynamic relocations data

--- !COFF
OptionalHeader:
  ImageBase:       0x180000000
  SectionAlignment: 4096
  FileAlignment:   512
  DLLCharacteristics: [ ]
  LoadConfigTable:
    RelativeVirtualAddress: 0x4000
    Size:            320
header:
  Machine:         IMAGE_FILE_MACHINE_ARM64
  Characteristics: [ IMAGE_FILE_EXECUTABLE_IMAGE, IMAGE_FILE_LARGE_ADDRESS_AWARE, IMAGE_FILE_DLL ]
sections:
  - Name:            .text
    Characteristics: [ IMAGE_SCN_CNT_CODE, IMAGE_SCN_MEM_EXECUTE, IMAGE_SCN_MEM_READ ]
    VirtualAddress:  0x1000
    VirtualSize:     0x2050
  - Name:            .rdata
    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ ]
    VirtualAddress:  0x4000
    VirtualSize:     328
    StructuredData:
      - LoadConfig:
          CHPEMetadataPointer: 0x180005000
          DynamicValueRelocTableOffset: 4
          DynamicValueRelocTableSection: 4
  - Name:            .data
    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ, IMAGE_SCN_MEM_WRITE ]
    VirtualAddress:  0x5000
    VirtualSize:     144
    StructuredData:
      - UInt32: 1       # Version
      - UInt32: 0x5050  # CodeMap
      - UInt32: 3       # CodeMapCount
      - UInt32: 0x5068  # CodeRangesToEntryPoints
      - UInt32: 0x5080  # RedirectionMetadata
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0       # CodeRangesToEntryPointsCount
      - UInt32: 0       # RedirectionMetadataCount
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0x1001  # CodeMap[0]
      - UInt32: 0x30
      - UInt32: 0x2000  # CodeMap[1]
      - UInt32: 0x40
      - UInt32: 0x3002  # CodeMap[2]
      - UInt32: 0x50
  - Name:            .reloc
    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ, IMAGE_SCN_MEM_DISCARDABLE ]
    VirtualAddress:  0x7000
    VirtualSize:     328
    StructuredData:
      - UInt32: 0         # pad
      - UInt32: 1         # coff_dynamic_reloc_table.Version
      - UInt32: 11        # coff_dynamic_reloc_table.Size
      - UInt32: 6         # coff_dynamic_relocation64.Symbol(low) = IMAGE_DYNAMIC_RELOCATION_ARM64X
      - UInt32: 0         # coff_dynamic_relocation64.Symbol(high)
      - Binary: 000000
symbols:         []
...

# RUN: yaml2obj %s --docnum=6 -o %t6.dll
# RUN: not llvm-readobj %t6.dll 2>&1 | FileCheck --check-prefix=ERR-RELOC-SIZE2 %s
# ERR-RELOC-SIZE2: Too large dynamic relocation size (4)

--- !COFF
OptionalHeader:
  ImageBase:       0x180000000
  SectionAlignment: 4096
  FileAlignment:   512
  DLLCharacteristics: [ ]
  LoadConfigTable:
    RelativeVirtualAddress: 0x4000
    Size:            320
header:
  Machine:         IMAGE_FILE_MACHINE_ARM64
  Characteristics: [ IMAGE_FILE_EXECUTABLE_IMAGE, IMAGE_FILE_LARGE_ADDRESS_AWARE, IMAGE_FILE_DLL ]
sections:
  - Name:            .text
    Characteristics: [ IMAGE_SCN_CNT_CODE, IMAGE_SCN_MEM_EXECUTE, IMAGE_SCN_MEM_READ ]
    VirtualAddress:  0x1000
    VirtualSize:     0x2050
  - Name:            .rdata
    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ ]
    VirtualAddress:  0x4000
    VirtualSize:     328
    StructuredData:
      - LoadConfig:
          CHPEMetadataPointer: 0x180005000
          DynamicValueRelocTableOffset: 4
          DynamicValueRelocTableSection: 4
  - Name:            .data
    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ, IMAGE_SCN_MEM_WRITE ]
    VirtualAddress:  0x5000
    VirtualSize:     144
    StructuredData:
      - UInt32: 1       # Version
      - UInt32: 0x5050  # CodeMap
      - UInt32: 3       # CodeMapCount
      - UInt32: 0x5068  # CodeRangesToEntryPoints
      - UInt32: 0x5080  # RedirectionMetadata
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0       # CodeRangesToEntryPointsCount
      - UInt32: 0       # RedirectionMetadataCount
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0x1001  # CodeMap[0]
      - UInt32: 0x30
      - UInt32: 0x2000  # CodeMap[1]
      - UInt32: 0x40
      - UInt32: 0x3002  # CodeMap[2]
      - UInt32: 0x50
  - Name:            .reloc
    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ, IMAGE_SCN_MEM_DISCARDABLE ]
    VirtualAddress:  0x7000
    VirtualSize:     328
    StructuredData:
      - UInt32: 0         # pad
      - UInt32: 1         # coff_dynamic_reloc_table.Version
      - UInt32: 15        # coff_dynamic_reloc_table.Size
      - UInt32: 6         # coff_dynamic_relocation64.Symbol(low) = IMAGE_DYNAMIC_RELOCATION_ARM64X
      - UInt32: 0         # coff_dynamic_relocation64.Symbol(high)
      - UInt32: 4         # coff_dynamic_relocation64.BaseRelocSize
      - Binary: 000000
symbols:         []
...

# RUN: yaml2obj %s --docnum=7 -o %t7.dll
# RUN: not llvm-readobj %t7.dll 2>&1 | FileCheck --check-prefix=ERR-BLOCK-SIZE %s
# ERR-BLOCK-SIZE: ARM64X relocations block size (7) is too small

--- !COFF
OptionalHeader:
  ImageBase:       0x180000000
  SectionAlignment: 4096
  FileAlignment:   512
  DLLCharacteristics: [ ]
  LoadConfigTable:
    RelativeVirtualAddress: 0x4000
    Size:            320
header:
  Machine:         IMAGE_FILE_MACHINE_ARM64
  Characteristics: [ IMAGE_FILE_EXECUTABLE_IMAGE, IMAGE_FILE_LARGE_ADDRESS_AWARE, IMAGE_FILE_DLL ]
sections:
  - Name:            .text
    Characteristics: [ IMAGE_SCN_CNT_CODE, IMAGE_SCN_MEM_EXECUTE, IMAGE_SCN_MEM_READ ]
    VirtualAddress:  0x1000
    VirtualSize:     0x2050
  - Name:            .rdata
    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ ]
    VirtualAddress:  0x4000
    VirtualSize:     328
    StructuredData:
      - LoadConfig:
          CHPEMetadataPointer: 0x180005000
          DynamicValueRelocTableOffset: 4
          DynamicValueRelocTableSection: 4
  - Name:            .data
    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ, IMAGE_SCN_MEM_WRITE ]
    VirtualAddress:  0x5000
    VirtualSize:     144
    StructuredData:
      - UInt32: 1       # Version
      - UInt32: 0x5050  # CodeMap
      - UInt32: 3       # CodeMapCount
      - UInt32: 0x5068  # CodeRangesToEntryPoints
      - UInt32: 0x5080  # RedirectionMetadata
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0       # CodeRangesToEntryPointsCount
      - UInt32: 0       # RedirectionMetadataCount
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0x1001  # CodeMap[0]
      - UInt32: 0x30
      - UInt32: 0x2000  # CodeMap[1]
      - UInt32: 0x40
      - UInt32: 0x3002  # CodeMap[2]
      - UInt32: 0x50
  - Name:            .reloc
    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ, IMAGE_SCN_MEM_DISCARDABLE ]
    VirtualAddress:  0x7000
    VirtualSize:     328
    StructuredData:
      - UInt32: 0         # pad
      - UInt32: 1         # coff_dynamic_reloc_table.Version
      - UInt32: 21        # coff_dynamic_reloc_table.Size
      - UInt32: 6         # coff_dynamic_relocation64.Symbol(low) = IMAGE_DYNAMIC_RELOCATION_ARM64X
      - UInt32: 0         # coff_dynamic_relocation64.Symbol(high)
      - UInt32: 9         # coff_dynamic_relocation64.BaseRelocSize
      - UInt32: 0         # coff_base_reloc_block_header[0].PageRVA
      - UInt32: 7         # coff_base_reloc_block_header[0].BlockSize
      - Binary: 00
symbols:         []
...

# RUN: yaml2obj %s --docnum=8 -o %t8.dll
# RUN: not llvm-readobj %t8.dll 2>&1 | FileCheck --check-prefix=ERR-BLOCK-SIZE2 %s
# ERR-BLOCK-SIZE2: Unaligned ARM64X relocations block size (10)

--- !COFF
OptionalHeader:
  ImageBase:       0x180000000
  SectionAlignment: 4096
  FileAlignment:   512
  DLLCharacteristics: [ ]
  LoadConfigTable:
    RelativeVirtualAddress: 0x4000
    Size:            320
header:
  Machine:         IMAGE_FILE_MACHINE_ARM64
  Characteristics: [ IMAGE_FILE_EXECUTABLE_IMAGE, IMAGE_FILE_LARGE_ADDRESS_AWARE, IMAGE_FILE_DLL ]
sections:
  - Name:            .text
    Characteristics: [ IMAGE_SCN_CNT_CODE, IMAGE_SCN_MEM_EXECUTE, IMAGE_SCN_MEM_READ ]
    VirtualAddress:  0x1000
    VirtualSize:     0x2050
  - Name:            .rdata
    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ ]
    VirtualAddress:  0x4000
    VirtualSize:     328
    StructuredData:
      - LoadConfig:
          CHPEMetadataPointer: 0x180005000
          DynamicValueRelocTableOffset: 4
          DynamicValueRelocTableSection: 4
  - Name:            .data
    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ, IMAGE_SCN_MEM_WRITE ]
    VirtualAddress:  0x5000
    VirtualSize:     144
    StructuredData:
      - UInt32: 1       # Version
      - UInt32: 0x5050  # CodeMap
      - UInt32: 3       # CodeMapCount
      - UInt32: 0x5068  # CodeRangesToEntryPoints
      - UInt32: 0x5080  # RedirectionMetadata
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0       # CodeRangesToEntryPointsCount
      - UInt32: 0       # RedirectionMetadataCount
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0x1001  # CodeMap[0]
      - UInt32: 0x30
      - UInt32: 0x2000  # CodeMap[1]
      - UInt32: 0x40
      - UInt32: 0x3002  # CodeMap[2]
      - UInt32: 0x50
  - Name:            .reloc
    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ, IMAGE_SCN_MEM_DISCARDABLE ]
    VirtualAddress:  0x7000
    VirtualSize:     328
    StructuredData:
      - UInt32: 0         # pad
      - UInt32: 1         # coff_dynamic_reloc_table.Version
      - UInt32: 22        # coff_dynamic_reloc_table.Size
      - UInt32: 6         # coff_dynamic_relocation64.Symbol(low) = IMAGE_DYNAMIC_RELOCATION_ARM64X
      - UInt32: 0         # coff_dynamic_relocation64.Symbol(high)
      - UInt32: 10        # coff_dynamic_relocation64.BaseRelocSize
      - UInt32: 0         # coff_base_reloc_block_header[0].PageRVA
      - UInt32: 10        # coff_base_reloc_block_header[0].BlockSize
      - Binary: 0000
symbols:         []
...

# RUN: yaml2obj %s --docnum=9 -o %t9.dll
# RUN: not llvm-readobj %t9.dll 2>&1 | FileCheck --check-prefix=ERR-BLOCK-SIZE3 %s
# ERR-BLOCK-SIZE3: ARM64X relocations block size (12) is too large

--- !COFF
OptionalHeader:
  ImageBase:       0x180000000
  SectionAlignment: 4096
  FileAlignment:   512
  DLLCharacteristics: [ ]
  LoadConfigTable:
    RelativeVirtualAddress: 0x4000
    Size:            320
header:
  Machine:         IMAGE_FILE_MACHINE_ARM64
  Characteristics: [ IMAGE_FILE_EXECUTABLE_IMAGE, IMAGE_FILE_LARGE_ADDRESS_AWARE, IMAGE_FILE_DLL ]
sections:
  - Name:            .text
    Characteristics: [ IMAGE_SCN_CNT_CODE, IMAGE_SCN_MEM_EXECUTE, IMAGE_SCN_MEM_READ ]
    VirtualAddress:  0x1000
    VirtualSize:     0x2050
  - Name:            .rdata
    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ ]
    VirtualAddress:  0x4000
    VirtualSize:     328
    StructuredData:
      - LoadConfig:
          CHPEMetadataPointer: 0x180005000
          DynamicValueRelocTableOffset: 4
          DynamicValueRelocTableSection: 4
  - Name:            .data
    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ, IMAGE_SCN_MEM_WRITE ]
    VirtualAddress:  0x5000
    VirtualSize:     144
    StructuredData:
      - UInt32: 1       # Version
      - UInt32: 0x5050  # CodeMap
      - UInt32: 3       # CodeMapCount
      - UInt32: 0x5068  # CodeRangesToEntryPoints
      - UInt32: 0x5080  # RedirectionMetadata
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0       # CodeRangesToEntryPointsCount
      - UInt32: 0       # RedirectionMetadataCount
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0x1001  # CodeMap[0]
      - UInt32: 0x30
      - UInt32: 0x2000  # CodeMap[1]
      - UInt32: 0x40
      - UInt32: 0x3002  # CodeMap[2]
      - UInt32: 0x50
  - Name:            .reloc
    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ, IMAGE_SCN_MEM_DISCARDABLE ]
    VirtualAddress:  0x7000
    VirtualSize:     328
    StructuredData:
      - UInt32: 0         # pad
      - UInt32: 1         # coff_dynamic_reloc_table.Version
      - UInt32: 23        # coff_dynamic_reloc_table.Size
      - UInt32: 6         # coff_dynamic_relocation64.Symbol(low) = IMAGE_DYNAMIC_RELOCATION_ARM64X
      - UInt32: 0         # coff_dynamic_relocation64.Symbol(high)
      - UInt32: 11        # coff_dynamic_relocation64.BaseRelocSize
      - UInt32: 0         # coff_base_reloc_block_header[0].PageRVA
      - UInt32: 12        # coff_base_reloc_block_header[0].BlockSize
      - Binary: 000000
symbols:         []
...

# RUN: yaml2obj %s --docnum=10 -o %t10.dll
# RUN: not llvm-readobj %t10.dll 2>&1 | FileCheck --check-prefix=ERR-TERMINATOR %s
# ERR-TERMINATOR: Unexpected ARM64X relocations terminator

--- !COFF
OptionalHeader:
  ImageBase:       0x180000000
  SectionAlignment: 4096
  FileAlignment:   512
  DLLCharacteristics: [ ]
  LoadConfigTable:
    RelativeVirtualAddress: 0x4000
    Size:            320
header:
  Machine:         IMAGE_FILE_MACHINE_ARM64
  Characteristics: [ IMAGE_FILE_EXECUTABLE_IMAGE, IMAGE_FILE_LARGE_ADDRESS_AWARE, IMAGE_FILE_DLL ]
sections:
  - Name:            .text
    Characteristics: [ IMAGE_SCN_CNT_CODE, IMAGE_SCN_MEM_EXECUTE, IMAGE_SCN_MEM_READ ]
    VirtualAddress:  0x1000
    VirtualSize:     0x2050
  - Name:            .rdata
    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ ]
    VirtualAddress:  0x4000
    VirtualSize:     328
    StructuredData:
      - LoadConfig:
          CHPEMetadataPointer: 0x180005000
          DynamicValueRelocTableOffset: 4
          DynamicValueRelocTableSection: 4
  - Name:            .data
    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ, IMAGE_SCN_MEM_WRITE ]
    VirtualAddress:  0x5000
    VirtualSize:     144
    StructuredData:
      - UInt32: 1       # Version
      - UInt32: 0x5050  # CodeMap
      - UInt32: 3       # CodeMapCount
      - UInt32: 0x5068  # CodeRangesToEntryPoints
      - UInt32: 0x5080  # RedirectionMetadata
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0       # CodeRangesToEntryPointsCount
      - UInt32: 0       # RedirectionMetadataCount
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0x1001  # CodeMap[0]
      - UInt32: 0x30
      - UInt32: 0x2000  # CodeMap[1]
      - UInt32: 0x40
      - UInt32: 0x3002  # CodeMap[2]
      - UInt32: 0x50
  - Name:            .reloc
    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ, IMAGE_SCN_MEM_DISCARDABLE ]
    VirtualAddress:  0x7000
    VirtualSize:     328
    StructuredData:
      - UInt32: 0         # pad
      - UInt32: 1         # coff_dynamic_reloc_table.Version
      - UInt32: 24        # coff_dynamic_reloc_table.Size
      - UInt32: 6         # coff_dynamic_relocation64.Symbol(low) = IMAGE_DYNAMIC_RELOCATION_ARM64X
      - UInt32: 0         # coff_dynamic_relocation64.Symbol(high)
      - UInt32: 12        # coff_dynamic_relocation64.BaseRelocSize
      - UInt32: 0         # coff_base_reloc_block_header[0].PageRVA
      - UInt32: 12        # coff_base_reloc_block_header[0].BlockSize
      - Binary: 00000000
symbols:         []
...

# RUN: yaml2obj %s --docnum=11 -o %t11.dll
# RUN: not llvm-readobj %t11.dll 2>&1 | FileCheck --check-prefix=ERR-RELOC-TYPE %s
# ERR-RELOC-TYPE: Invalid relocation type

--- !COFF
OptionalHeader:
  ImageBase:       0x180000000
  SectionAlignment: 4096
  FileAlignment:   512
  DLLCharacteristics: [ ]
  LoadConfigTable:
    RelativeVirtualAddress: 0x4000
    Size:            320
header:
  Machine:         IMAGE_FILE_MACHINE_ARM64
  Characteristics: [ IMAGE_FILE_EXECUTABLE_IMAGE, IMAGE_FILE_LARGE_ADDRESS_AWARE, IMAGE_FILE_DLL ]
sections:
  - Name:            .text
    Characteristics: [ IMAGE_SCN_CNT_CODE, IMAGE_SCN_MEM_EXECUTE, IMAGE_SCN_MEM_READ ]
    VirtualAddress:  0x1000
    VirtualSize:     0x2050
  - Name:            .rdata
    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ ]
    VirtualAddress:  0x4000
    VirtualSize:     328
    StructuredData:
      - LoadConfig:
          CHPEMetadataPointer: 0x180005000
          DynamicValueRelocTableOffset: 4
          DynamicValueRelocTableSection: 4
  - Name:            .data
    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ, IMAGE_SCN_MEM_WRITE ]
    VirtualAddress:  0x5000
    VirtualSize:     144
    StructuredData:
      - UInt32: 1       # Version
      - UInt32: 0x5050  # CodeMap
      - UInt32: 3       # CodeMapCount
      - UInt32: 0x5068  # CodeRangesToEntryPoints
      - UInt32: 0x5080  # RedirectionMetadata
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0       # CodeRangesToEntryPointsCount
      - UInt32: 0       # RedirectionMetadataCount
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0x1001  # CodeMap[0]
      - UInt32: 0x30
      - UInt32: 0x2000  # CodeMap[1]
      - UInt32: 0x40
      - UInt32: 0x3002  # CodeMap[2]
      - UInt32: 0x50
  - Name:            .reloc
    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ, IMAGE_SCN_MEM_DISCARDABLE ]
    VirtualAddress:  0x7000
    VirtualSize:     328
    StructuredData:
      - UInt32: 0         # pad
      - UInt32: 1         # coff_dynamic_reloc_table.Version
      - UInt32: 24        # coff_dynamic_reloc_table.Size
      - UInt32: 6         # coff_dynamic_relocation64.Symbol(low) = IMAGE_DYNAMIC_RELOCATION_ARM64X
      - UInt32: 0         # coff_dynamic_relocation64.Symbol(high)
      - UInt32: 12        # coff_dynamic_relocation64.BaseRelocSize
      - UInt32: 0         # coff_base_reloc_block_header[0].PageRVA
      - UInt32: 12        # coff_base_reloc_block_header[0].BlockSize
      - Binary: 00300000
symbols:         []
...

# RUN: yaml2obj %s --docnum=12 -o %t12.dll
# RUN: not llvm-readobj %t12.dll 2>&1 | FileCheck --check-prefix=ERR-RELOC-VALUE %s
# ERR-RELOC-VALUE: Invalid ARM64X relocation value size (0)

--- !COFF
OptionalHeader:
  ImageBase:       0x180000000
  SectionAlignment: 4096
  FileAlignment:   512
  DLLCharacteristics: [ ]
  LoadConfigTable:
    RelativeVirtualAddress: 0x4000
    Size:            320
header:
  Machine:         IMAGE_FILE_MACHINE_ARM64
  Characteristics: [ IMAGE_FILE_EXECUTABLE_IMAGE, IMAGE_FILE_LARGE_ADDRESS_AWARE, IMAGE_FILE_DLL ]
sections:
  - Name:            .text
    Characteristics: [ IMAGE_SCN_CNT_CODE, IMAGE_SCN_MEM_EXECUTE, IMAGE_SCN_MEM_READ ]
    VirtualAddress:  0x1000
    VirtualSize:     0x2050
  - Name:            .rdata
    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ ]
    VirtualAddress:  0x4000
    VirtualSize:     328
    StructuredData:
      - LoadConfig:
          CHPEMetadataPointer: 0x180005000
          DynamicValueRelocTableOffset: 4
          DynamicValueRelocTableSection: 4
  - Name:            .data
    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ, IMAGE_SCN_MEM_WRITE ]
    VirtualAddress:  0x5000
    VirtualSize:     144
    StructuredData:
      - UInt32: 1       # Version
      - UInt32: 0x5050  # CodeMap
      - UInt32: 3       # CodeMapCount
      - UInt32: 0x5068  # CodeRangesToEntryPoints
      - UInt32: 0x5080  # RedirectionMetadata
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0       # CodeRangesToEntryPointsCount
      - UInt32: 0       # RedirectionMetadataCount
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0x1001  # CodeMap[0]
      - UInt32: 0x30
      - UInt32: 0x2000  # CodeMap[1]
      - UInt32: 0x40
      - UInt32: 0x3002  # CodeMap[2]
      - UInt32: 0x50
  - Name:            .reloc
    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ, IMAGE_SCN_MEM_DISCARDABLE ]
    VirtualAddress:  0x7000
    VirtualSize:     328
    StructuredData:
      - UInt32: 0         # pad
      - UInt32: 1         # coff_dynamic_reloc_table.Version
      - UInt32: 24        # coff_dynamic_reloc_table.Size
      - UInt32: 6         # coff_dynamic_relocation64.Symbol(low) = IMAGE_DYNAMIC_RELOCATION_ARM64X
      - UInt32: 0         # coff_dynamic_relocation64.Symbol(high)
      - UInt32: 12        # coff_dynamic_relocation64.BaseRelocSize
      - UInt32: 0         # coff_base_reloc_block_header[0].PageRVA
      - UInt32: 12        # coff_base_reloc_block_header[0].BlockSize
      - Binary: 00100000
symbols:         []
...

# RUN: yaml2obj %s --docnum=13 -o %t13.dll
# RUN: not llvm-readobj %t13.dll 2>&1 | FileCheck --check-prefix=ERR-RELOC-RVA %s
# ERR-RELOC-RVA: RVA 0x6062 for ARM64X reloc not found

--- !COFF
OptionalHeader:
  ImageBase:       0x180000000
  SectionAlignment: 4096
  FileAlignment:   512
  DLLCharacteristics: [ ]
  LoadConfigTable:
    RelativeVirtualAddress: 0x4000
    Size:            320
header:
  Machine:         IMAGE_FILE_MACHINE_ARM64
  Characteristics: [ IMAGE_FILE_EXECUTABLE_IMAGE, IMAGE_FILE_LARGE_ADDRESS_AWARE, IMAGE_FILE_DLL ]
sections:
  - Name:            .text
    Characteristics: [ IMAGE_SCN_CNT_CODE, IMAGE_SCN_MEM_EXECUTE, IMAGE_SCN_MEM_READ ]
    VirtualAddress:  0x1000
    VirtualSize:     0x2050
  - Name:            .rdata
    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ ]
    VirtualAddress:  0x4000
    VirtualSize:     328
    StructuredData:
      - LoadConfig:
          CHPEMetadataPointer: 0x180005000
          DynamicValueRelocTableOffset: 4
          DynamicValueRelocTableSection: 4
  - Name:            .data
    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ, IMAGE_SCN_MEM_WRITE ]
    VirtualAddress:  0x5000
    VirtualSize:     144
    StructuredData:
      - UInt32: 1       # Version
      - UInt32: 0x5050  # CodeMap
      - UInt32: 3       # CodeMapCount
      - UInt32: 0x5068  # CodeRangesToEntryPoints
      - UInt32: 0x5080  # RedirectionMetadata
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0       # CodeRangesToEntryPointsCount
      - UInt32: 0       # RedirectionMetadataCount
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0x1001  # CodeMap[0]
      - UInt32: 0x30
      - UInt32: 0x2000  # CodeMap[1]
      - UInt32: 0x40
      - UInt32: 0x3002  # CodeMap[2]
      - UInt32: 0x50
  - Name:            .reloc
    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ, IMAGE_SCN_MEM_DISCARDABLE ]
    VirtualAddress:  0x7000
    VirtualSize:     328
    StructuredData:
      - UInt32: 0         # pad
      - UInt32: 1         # coff_dynamic_reloc_table.Version
      - UInt32: 24        # coff_dynamic_reloc_table.Size
      - UInt32: 6         # coff_dynamic_relocation64.Symbol(low) = IMAGE_DYNAMIC_RELOCATION_ARM64X
      - UInt32: 0         # coff_dynamic_relocation64.Symbol(high)
      - UInt32: 12        # coff_dynamic_relocation64.BaseRelocSize
      - UInt32: 0x6000    # coff_base_reloc_block_header[0].PageRVA
      - UInt32: 12        # coff_base_reloc_block_header[0].BlockSize
      - Binary: 6040      # ZERO offset 0x60, size 2
      - Binary: 0000      # terminator
symbols:         []
...

# RUN: yaml2obj %s --docnum=14 -o %t14.dll
# RUN: not llvm-readobj %t14.dll 2>&1 | FileCheck --check-prefix=ERR-RELOC-RVA-SIZE %s
# ERR-RELOC-RVA-SIZE: RVA 0x6062 for ARM64X reloc not found

--- !COFF
OptionalHeader:
  ImageBase:       0x180000000
  SectionAlignment: 4096
  FileAlignment:   512
  DLLCharacteristics: [ ]
  LoadConfigTable:
    RelativeVirtualAddress: 0x4000
    Size:            320
header:
  Machine:         IMAGE_FILE_MACHINE_ARM64
  Characteristics: [ IMAGE_FILE_EXECUTABLE_IMAGE, IMAGE_FILE_LARGE_ADDRESS_AWARE, IMAGE_FILE_DLL ]
sections:
  - Name:            .text
    Characteristics: [ IMAGE_SCN_CNT_CODE, IMAGE_SCN_MEM_EXECUTE, IMAGE_SCN_MEM_READ ]
    VirtualAddress:  0x1000
    VirtualSize:     0x2050
  - Name:            .rdata
    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ ]
    VirtualAddress:  0x4000
    VirtualSize:     328
    StructuredData:
      - LoadConfig:
          CHPEMetadataPointer: 0x180005000
          DynamicValueRelocTableOffset: 4
          DynamicValueRelocTableSection: 4
  - Name:            .data
    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ, IMAGE_SCN_MEM_WRITE ]
    VirtualAddress:  0x5000
    VirtualSize:     144
    StructuredData:
      - UInt32: 1       # Version
      - UInt32: 0x5050  # CodeMap
      - UInt32: 3       # CodeMapCount
      - UInt32: 0x5068  # CodeRangesToEntryPoints
      - UInt32: 0x5080  # RedirectionMetadata
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0       # CodeRangesToEntryPointsCount
      - UInt32: 0       # RedirectionMetadataCount
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0x1001  # CodeMap[0]
      - UInt32: 0x30
      - UInt32: 0x2000  # CodeMap[1]
      - UInt32: 0x40
      - UInt32: 0x3002  # CodeMap[2]
      - UInt32: 0x50
  - Name:            .reloc
    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ, IMAGE_SCN_MEM_DISCARDABLE ]
    VirtualAddress:  0x7000
    VirtualSize:     328
    StructuredData:
      - UInt32: 0         # pad
      - UInt32: 1         # coff_dynamic_reloc_table.Version
      - UInt32: 24        # coff_dynamic_reloc_table.Size
      - UInt32: 6         # coff_dynamic_relocation64.Symbol(low) = IMAGE_DYNAMIC_RELOCATION_ARM64X
      - UInt32: 0         # coff_dynamic_relocation64.Symbol(high)
      - UInt32: 12        # coff_dynamic_relocation64.BaseRelocSize
      - UInt32: 0x6000    # coff_base_reloc_block_header[0].PageRVA
      - UInt32: 12        # coff_base_reloc_block_header[0].BlockSize
      - Binary: 6040      # ZERO offset 0x60, size 2
      - Binary: 0000      # terminator
symbols:         []
...

# RUN: yaml2obj %s --docnum=15 -o %t15.dll
# RUN: not llvm-readobj %t15.dll 2>&1 | FileCheck --check-prefix=ERR-PAGE-RVA %s
# ERR-PAGE-RVA: Unaligned ARM64X relocations page RVA (24577)

--- !COFF
OptionalHeader:
  ImageBase:       0x180000000
  SectionAlignment: 4096
  FileAlignment:   512
  DLLCharacteristics: [ ]
  LoadConfigTable:
    RelativeVirtualAddress: 0x4000
    Size:            320
header:
  Machine:         IMAGE_FILE_MACHINE_ARM64
  Characteristics: [ IMAGE_FILE_EXECUTABLE_IMAGE, IMAGE_FILE_LARGE_ADDRESS_AWARE, IMAGE_FILE_DLL ]
sections:
  - Name:            .text
    Characteristics: [ IMAGE_SCN_CNT_CODE, IMAGE_SCN_MEM_EXECUTE, IMAGE_SCN_MEM_READ ]
    VirtualAddress:  0x1000
    VirtualSize:     0x2050
  - Name:            .rdata
    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ ]
    VirtualAddress:  0x4000
    VirtualSize:     328
    StructuredData:
      - LoadConfig:
          CHPEMetadataPointer: 0x180005000
          DynamicValueRelocTableOffset: 4
          DynamicValueRelocTableSection: 4
  - Name:            .data
    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ, IMAGE_SCN_MEM_WRITE ]
    VirtualAddress:  0x5000
    VirtualSize:     144
    StructuredData:
      - UInt32: 1       # Version
      - UInt32: 0x5050  # CodeMap
      - UInt32: 3       # CodeMapCount
      - UInt32: 0x5068  # CodeRangesToEntryPoints
      - UInt32: 0x5080  # RedirectionMetadata
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0       # CodeRangesToEntryPointsCount
      - UInt32: 0       # RedirectionMetadataCount
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0x1001  # CodeMap[0]
      - UInt32: 0x30
      - UInt32: 0x2000  # CodeMap[1]
      - UInt32: 0x40
      - UInt32: 0x3002  # CodeMap[2]
      - UInt32: 0x50
  - Name:            .reloc
    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ, IMAGE_SCN_MEM_DISCARDABLE ]
    VirtualAddress:  0x7000
    VirtualSize:     328
    StructuredData:
      - UInt32: 0         # pad
      - UInt32: 1         # coff_dynamic_reloc_table.Version
      - UInt32: 24        # coff_dynamic_reloc_table.Size
      - UInt32: 6         # coff_dynamic_relocation64.Symbol(low) = IMAGE_DYNAMIC_RELOCATION_ARM64X
      - UInt32: 0         # coff_dynamic_relocation64.Symbol(high)
      - UInt32: 12        # coff_dynamic_relocation64.BaseRelocSize
      - UInt32: 0x6001    # coff_base_reloc_block_header[0].PageRVA
      - UInt32: 12        # coff_base_reloc_block_header[0].BlockSize
      - Binary: 0040      # ZERO offset 0, size 2
      - Binary: 0000      # terminator
symbols:         []
...

# RUN: yaml2obj %s --docnum=16 -o %t16.dll
# RUN: not llvm-readobj %t16.dll 2>&1 | FileCheck --check-prefix=ERR-V2-HEADER-SIZE %s
# ERR-V2-HEADER-SIZE: Invalid dynamic relocation header size (23)

--- !COFF
OptionalHeader:
  ImageBase:       0x180000000
  SectionAlignment: 4096
  FileAlignment:   512
  DLLCharacteristics: [ ]
  LoadConfigTable:
    RelativeVirtualAddress: 0x4000
    Size:            320
header:
  Machine:         IMAGE_FILE_MACHINE_ARM64
  Characteristics: [ IMAGE_FILE_EXECUTABLE_IMAGE, IMAGE_FILE_LARGE_ADDRESS_AWARE, IMAGE_FILE_DLL ]
sections:
  - Name:            .text
    Characteristics: [ IMAGE_SCN_CNT_CODE, IMAGE_SCN_MEM_EXECUTE, IMAGE_SCN_MEM_READ ]
    VirtualAddress:  0x1000
    VirtualSize:     0x2050
  - Name:            .rdata
    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ ]
    VirtualAddress:  0x4000
    VirtualSize:     328
    StructuredData:
      - LoadConfig:
          CHPEMetadataPointer: 0x180005000
          DynamicValueRelocTableOffset: 4
          DynamicValueRelocTableSection: 4
  - Name:            .data
    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ, IMAGE_SCN_MEM_WRITE ]
    VirtualAddress:  0x5000
    VirtualSize:     144
    StructuredData:
      - UInt32: 1       # Version
      - UInt32: 0x5050  # CodeMap
      - UInt32: 3       # CodeMapCount
      - UInt32: 0x5068  # CodeRangesToEntryPoints
      - UInt32: 0x5080  # RedirectionMetadata
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0       # CodeRangesToEntryPointsCount
      - UInt32: 0       # RedirectionMetadataCount
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0x1001  # CodeMap[0]
      - UInt32: 0x30
      - UInt32: 0x2000  # CodeMap[1]
      - UInt32: 0x40
      - UInt32: 0x3002  # CodeMap[2]
      - UInt32: 0x50
  - Name:            .reloc
    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ, IMAGE_SCN_MEM_DISCARDABLE ]
    VirtualAddress:  0x7000
    VirtualSize:     328
    StructuredData:
      - UInt32: 0         # pad
      - UInt32: 2         # coff_dynamic_reloc_table.Version
      - UInt32: 36        # coff_dynamic_reloc_table.Size
      - UInt32: 23        # coff_dynamic_relocation64_v2.HeaderSize
      - UInt32: 12        # coff_dynamic_relocation64_v2.FixupInfoSize
      - UInt32: 6         # coff_dynamic_relocation64_v2.Symbol(low) = IMAGE_DYNAMIC_RELOCATION_ARM64X
      - UInt32: 0         # coff_dynamic_relocation64_v2.Symbol(high)
      - UInt32: 0         # coff_dynamic_relocation64_v2.SymbolGroup
      - UInt32: 0         # coff_dynamic_relocation64_v2.Flags
      - UInt32: 0x6000    # coff_base_reloc_block_header[0].PageRVA
      - UInt32: 12        # coff_base_reloc_block_header[0].BlockSize
      - Binary: 0040      # ZERO offset 0, size 2
      - Binary: 0000      # terminator
symbols:         []
...

# RUN: yaml2obj %s --docnum=17 -o %t17.dll
# RUN: not llvm-readobj %t17.dll 2>&1 | FileCheck --check-prefix=ERR-RELOC-SIZE %s

--- !COFF
OptionalHeader:
  ImageBase:       0x180000000
  SectionAlignment: 4096
  FileAlignment:   512
  DLLCharacteristics: [ ]
  LoadConfigTable:
    RelativeVirtualAddress: 0x4000
    Size:            320
header:
  Machine:         IMAGE_FILE_MACHINE_ARM64
  Characteristics: [ IMAGE_FILE_EXECUTABLE_IMAGE, IMAGE_FILE_LARGE_ADDRESS_AWARE, IMAGE_FILE_DLL ]
sections:
  - Name:            .text
    Characteristics: [ IMAGE_SCN_CNT_CODE, IMAGE_SCN_MEM_EXECUTE, IMAGE_SCN_MEM_READ ]
    VirtualAddress:  0x1000
    VirtualSize:     0x2050
  - Name:            .rdata
    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ ]
    VirtualAddress:  0x4000
    VirtualSize:     328
    StructuredData:
      - LoadConfig:
          CHPEMetadataPointer: 0x180005000
          DynamicValueRelocTableOffset: 4
          DynamicValueRelocTableSection: 4
  - Name:            .data
    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ, IMAGE_SCN_MEM_WRITE ]
    VirtualAddress:  0x5000
    VirtualSize:     144
    StructuredData:
      - UInt32: 1       # Version
      - UInt32: 0x5050  # CodeMap
      - UInt32: 3       # CodeMapCount
      - UInt32: 0x5068  # CodeRangesToEntryPoints
      - UInt32: 0x5080  # RedirectionMetadata
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0       # CodeRangesToEntryPointsCount
      - UInt32: 0       # RedirectionMetadataCount
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0x1001  # CodeMap[0]
      - UInt32: 0x30
      - UInt32: 0x2000  # CodeMap[1]
      - UInt32: 0x40
      - UInt32: 0x3002  # CodeMap[2]
      - UInt32: 0x50
  - Name:            .reloc
    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ, IMAGE_SCN_MEM_DISCARDABLE ]
    VirtualAddress:  0x7000
    VirtualSize:     328
    StructuredData:
      - UInt32: 0         # pad
      - UInt32: 2         # coff_dynamic_reloc_table.Version
      - UInt32: 20        # coff_dynamic_reloc_table.Size
      - UInt32: 24        # coff_dynamic_relocation64_v2.HeaderSize
      - UInt32: 12        # coff_dynamic_relocation64_v2.FixupInfoSize
      - UInt32: 6         # coff_dynamic_relocation64_v2.Symbol(low) = IMAGE_DYNAMIC_RELOCATION_ARM64X
      - UInt32: 0         # coff_dynamic_relocation64_v2.Symbol(high)
      - UInt32: 0         # coff_dynamic_relocation64_v2.SymbolGroup
symbols:         []
...

# RUN: yaml2obj %s --docnum=18 -o %t18.dll
# RUN: not llvm-readobj %t18.dll 2>&1 | FileCheck --check-prefix=ERR-RVA-ALIGN %s
# ERR-RVA-ALIGN: Unaligned ARM64X relocation RVA (24577)

--- !COFF
OptionalHeader:
  ImageBase:       0x180000000
  SectionAlignment: 4096
  FileAlignment:   512
  DLLCharacteristics: [ ]
  LoadConfigTable:
    RelativeVirtualAddress: 0x4000
    Size:            320
header:
  Machine:         IMAGE_FILE_MACHINE_ARM64
  Characteristics: [ IMAGE_FILE_EXECUTABLE_IMAGE, IMAGE_FILE_LARGE_ADDRESS_AWARE, IMAGE_FILE_DLL ]
sections:
  - Name:            .text
    Characteristics: [ IMAGE_SCN_CNT_CODE, IMAGE_SCN_MEM_EXECUTE, IMAGE_SCN_MEM_READ ]
    VirtualAddress:  0x1000
    VirtualSize:     0x2050
  - Name:            .rdata
    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ ]
    VirtualAddress:  0x4000
    VirtualSize:     328
    StructuredData:
      - LoadConfig:
          CHPEMetadataPointer: 0x180005000
          DynamicValueRelocTableOffset: 4
          DynamicValueRelocTableSection: 4
  - Name:            .data
    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ, IMAGE_SCN_MEM_WRITE ]
    VirtualAddress:  0x5000
    VirtualSize:     144
    StructuredData:
      - UInt32: 1       # Version
      - UInt32: 0x5050  # CodeMap
      - UInt32: 3       # CodeMapCount
      - UInt32: 0x5068  # CodeRangesToEntryPoints
      - UInt32: 0x5080  # RedirectionMetadata
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0       # CodeRangesToEntryPointsCount
      - UInt32: 0       # RedirectionMetadataCount
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0x1001  # CodeMap[0]
      - UInt32: 0x30
      - UInt32: 0x2000  # CodeMap[1]
      - UInt32: 0x40
      - UInt32: 0x3002  # CodeMap[2]
      - UInt32: 0x50
  - Name:            .reloc
    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ, IMAGE_SCN_MEM_DISCARDABLE ]
    VirtualAddress:  0x7000
    VirtualSize:     328
    StructuredData:
      - UInt32: 0         # pad
      - UInt32: 1         # coff_dynamic_reloc_table.Version
      - UInt32: 24        # coff_dynamic_reloc_table.Size
      - UInt32: 6         # coff_dynamic_relocation64.Symbol(low) = IMAGE_DYNAMIC_RELOCATION_ARM64X
      - UInt32: 0         # coff_dynamic_relocation64.Symbol(high)
      - UInt32: 12        # coff_dynamic_relocation64.BaseRelocSize
      - UInt32: 0x6000    # coff_base_reloc_block_header[0].PageRVA
      - UInt32: 12        # coff_base_reloc_block_header[0].BlockSize
      - Binary: 0140      # ZERO offset 0, size 2
      - Binary: 0000      # terminator
symbols:         []
...

# RUN: yaml2obj %s --docnum=19 -o %t19.dll
# RUN: not llvm-readobj %t19.dll 2>&1 | FileCheck --check-prefix=ERR-INVALID-VERSION %s
# ERR-INVALID-VERSION: Unsupported dynamic relocations table version (3)

--- !COFF
OptionalHeader:
  ImageBase:       0x180000000
  SectionAlignment: 4096
  FileAlignment:   512
  DLLCharacteristics: [ ]
  LoadConfigTable:
    RelativeVirtualAddress: 0x4000
    Size:            320
header:
  Machine:         IMAGE_FILE_MACHINE_ARM64
  Characteristics: [ IMAGE_FILE_EXECUTABLE_IMAGE, IMAGE_FILE_LARGE_ADDRESS_AWARE, IMAGE_FILE_DLL ]
sections:
  - Name:            .text
    Characteristics: [ IMAGE_SCN_CNT_CODE, IMAGE_SCN_MEM_EXECUTE, IMAGE_SCN_MEM_READ ]
    VirtualAddress:  0x1000
    VirtualSize:     0x2050
  - Name:            .rdata
    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ ]
    VirtualAddress:  0x4000
    VirtualSize:     328
    StructuredData:
      - LoadConfig:
          CHPEMetadataPointer: 0x180005000
          DynamicValueRelocTableOffset: 4
          DynamicValueRelocTableSection: 4
  - Name:            .data
    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ, IMAGE_SCN_MEM_WRITE ]
    VirtualAddress:  0x5000
    VirtualSize:     144
    StructuredData:
      - UInt32: 1       # Version
      - UInt32: 0x5050  # CodeMap
      - UInt32: 3       # CodeMapCount
      - UInt32: 0x5068  # CodeRangesToEntryPoints
      - UInt32: 0x5080  # RedirectionMetadata
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0       # CodeRangesToEntryPointsCount
      - UInt32: 0       # RedirectionMetadataCount
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0x1001  # CodeMap[0]
      - UInt32: 0x30
      - UInt32: 0x2000  # CodeMap[1]
      - UInt32: 0x40
      - UInt32: 0x3002  # CodeMap[2]
      - UInt32: 0x50
  - Name:            .reloc
    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ, IMAGE_SCN_MEM_DISCARDABLE ]
    VirtualAddress:  0x7000
    VirtualSize:     328
    StructuredData:
      - UInt32: 0         # pad
      - UInt32: 3         # coff_dynamic_reloc_table.Version
      - UInt32: 24        # coff_dynamic_reloc_table.Size
      - UInt32: 6         # coff_dynamic_relocation64.Symbol(low) = IMAGE_DYNAMIC_RELOCATION_ARM64X
      - UInt32: 0         # coff_dynamic_relocation64.Symbol(high)
      - UInt32: 12        # coff_dynamic_relocation64.BaseRelocSize
      - UInt32: 0x6000    # coff_base_reloc_block_header[0].PageRVA
      - UInt32: 12        # coff_base_reloc_block_header[0].BlockSize
      - Binary: 0140      # ZERO offset 0, size 2
      - Binary: 0000      # terminator
symbols:         []
...

# RUN: yaml2obj %s --docnum=20 -o %t20.dll
# RUN: not llvm-readobj %t20.dll 2>&1 | FileCheck --check-prefix=ERR-END %s
# ERR-END: Unexpected end of ARM64X relocations

--- !COFF
OptionalHeader:
  ImageBase:       0x180000000
  SectionAlignment: 4096
  FileAlignment:   512
  DLLCharacteristics: [ ]
  LoadConfigTable:
    RelativeVirtualAddress: 0x5000
    Size:            320
header:
  Machine:         IMAGE_FILE_MACHINE_ARM64
  Characteristics: [ IMAGE_FILE_EXECUTABLE_IMAGE, IMAGE_FILE_LARGE_ADDRESS_AWARE, IMAGE_FILE_DLL ]
sections:
  - Name:            .text
    Characteristics: [ IMAGE_SCN_CNT_CODE, IMAGE_SCN_MEM_EXECUTE, IMAGE_SCN_MEM_READ ]
    VirtualAddress:  0x2000
    VirtualSize:     0x2050
  - Name:            .rdata
    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ ]
    VirtualAddress:  0x5000
    VirtualSize:     328
    StructuredData:
      - LoadConfig:
          CHPEMetadataPointer: 0x180005000
          DynamicValueRelocTableOffset: 4
          DynamicValueRelocTableSection: 4
  - Name:            .data
    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ, IMAGE_SCN_MEM_WRITE ]
    VirtualAddress:  0x6000
    VirtualSize:     144
    StructuredData:
      - UInt32: 1       # Version
      - UInt32: 0x5050  # CodeMap
      - UInt32: 3       # CodeMapCount
      - UInt32: 0x5068  # CodeRangesToEntryPoints
      - UInt32: 0x5080  # RedirectionMetadata
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0       # CodeRangesToEntryPointsCount
      - UInt32: 0       # RedirectionMetadataCount
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0x1001  # CodeMap[0]
      - UInt32: 0x30
      - UInt32: 0x2000  # CodeMap[1]
      - UInt32: 0x40
      - UInt32: 0x3002  # CodeMap[2]
      - UInt32: 0x50
  - Name:            .reloc
    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ, IMAGE_SCN_MEM_DISCARDABLE ]
    VirtualAddress:  0x7000
    VirtualSize:     328
    StructuredData:
      - UInt32: 0         # pad
      - UInt32: 1         # coff_dynamic_reloc_table.Version
      - UInt32: 24        # coff_dynamic_reloc_table.Size
      - UInt32: 6         # coff_dynamic_relocation64.Symbol(low) = IMAGE_DYNAMIC_RELOCATION_ARM64X
      - UInt32: 0         # coff_dynamic_relocation64.Symbol(high)
      - UInt32: 12        # coff_dynamic_relocation64.BaseRelocSize
      - UInt32: 0         # coff_base_reloc_block_header[0].PageRVA
      - UInt32: 12        # coff_base_reloc_block_header[0].BlockSize
      - Binary: 2490      # VALUE offset 0x24, size 4
      - Binary: 0000      # terminator
symbols:         []
...

# RUN: yaml2obj %s --docnum=21 -o %t21.dll
# RUN: not llvm-readobj %t21.dll 2>&1 | FileCheck --check-prefix=ERR-TERMINATOR %s

--- !COFF
OptionalHeader:
  ImageBase:       0x180000000
  SectionAlignment: 4096
  FileAlignment:   512
  DLLCharacteristics: [ ]
  LoadConfigTable:
    RelativeVirtualAddress: 0x4000
    Size:            320
header:
  Machine:         IMAGE_FILE_MACHINE_ARM64
  Characteristics: [ IMAGE_FILE_EXECUTABLE_IMAGE, IMAGE_FILE_LARGE_ADDRESS_AWARE, IMAGE_FILE_DLL ]
sections:
  - Name:            .text
    Characteristics: [ IMAGE_SCN_CNT_CODE, IMAGE_SCN_MEM_EXECUTE, IMAGE_SCN_MEM_READ ]
    VirtualAddress:  0x1000
    VirtualSize:     0x2050
  - Name:            .rdata
    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ ]
    VirtualAddress:  0x4000
    VirtualSize:     328
    StructuredData:
      - LoadConfig:
          CHPEMetadataPointer: 0x180005000
          DynamicValueRelocTableOffset: 4
          DynamicValueRelocTableSection: 4
  - Name:            .data
    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ, IMAGE_SCN_MEM_WRITE ]
    VirtualAddress:  0x5000
    VirtualSize:     144
    StructuredData:
      - UInt32: 1       # Version
      - UInt32: 0x5050  # CodeMap
      - UInt32: 3       # CodeMapCount
      - UInt32: 0x5068  # CodeRangesToEntryPoints
      - UInt32: 0x5080  # RedirectionMetadata
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0       # CodeRangesToEntryPointsCount
      - UInt32: 0       # RedirectionMetadataCount
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0x1001  # CodeMap[0]
      - UInt32: 0x30
      - UInt32: 0x2000  # CodeMap[1]
      - UInt32: 0x40
      - UInt32: 0x3002  # CodeMap[2]
      - UInt32: 0x50
  - Name:            .reloc
    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ, IMAGE_SCN_MEM_DISCARDABLE ]
    VirtualAddress:  0x7000
    VirtualSize:     328
    StructuredData:
      - UInt32: 0         # pad
      - UInt32: 1         # coff_dynamic_reloc_table.Version
      - UInt32: 28        # coff_dynamic_reloc_table.Size
      - UInt32: 6         # coff_dynamic_relocation64.Symbol(low) = IMAGE_DYNAMIC_RELOCATION_ARM64X
      - UInt32: 0         # coff_dynamic_relocation64.Symbol(high)
      - UInt32: 16        # coff_dynamic_relocation64.BaseRelocSize
      - UInt32: 0         # coff_base_reloc_block_header[0].PageRVA
      - UInt32: 16        # coff_base_reloc_block_header[0].BlockSize
      - Binary: 0040      # ZERO offset 0, size 2
      - Binary: 00000000
symbols:         []
...