llvm/llvm/test/tools/llvm-readobj/COFF/arm64ec-chpe.yaml

# RUN: yaml2obj --docnum=1 %s -o %t1
# RUN: llvm-readobj --coff-load-config %t1 | FileCheck %s

# CHECK: CHPEMetadataPointer: 0x180005000
# CHECK:      CHPEMetadata [
# CHECK-NEXT:   Version: 0x1
# CHECK-NEXT:   CodeMap [
# CHECK-NEXT:     0x1000 - 0x1030  ARM64EC
# CHECK-NEXT:     0x2000 - 0x2040  ARM64
# CHECK-NEXT:     0x3000 - 0x3050  X64
# CHECK-NEXT:   ]
# CHECK-NEXT:   CodeRangesToEntryPoints [
# CHECK-NEXT:     0x1000 - 0x1020 -> 0x1000
# CHECK-NEXT:     0x1020 - 0x1040 -> 0x2000
# CHECK-NEXT:   ]
# CHECK-NEXT:   RedirectionMetadata [
# CHECK-NEXT:     0x1000 -> 0x2000
# CHECK-NEXT:     0x1020 -> 0x2030
# CHECK-NEXT:   ]
# CHECK-NOT:    AuxiliaryDelayloadIAT:

--- !COFF
OptionalHeader:
  ImageBase:       0x180000000
  SectionAlignment: 4096
  FileAlignment:   512
  DLLCharacteristics: [ ]
  LoadConfigTable:
    RelativeVirtualAddress: 0x4000
    Size:            320
header:
  Machine:         IMAGE_FILE_MACHINE_AMD64
  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
  - 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: 2       # CodeRangesToEntryPointsCount
      - UInt32: 2       # 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
      - UInt32: 0x1000  # CodeRangesToEntryPoints[0]
      - UInt32: 0x1020
      - UInt32: 0x1000
      - UInt32: 0x1020  # CodeRangesToEntryPoints[1]
      - UInt32: 0x1040
      - UInt32: 0x2000
      - UInt32: 0x1000  # RedirectionMetadata[0]
      - UInt32: 0x2000
      - UInt32: 0x1020  # RedirectionMetadata[1]
      - UInt32: 0x2030
symbols:         []
...

# RUN: yaml2obj --docnum=2 %s -o %t2
# RUN: llvm-readobj --coff-load-config %t2 | FileCheck --check-prefix=CHPE2 %s

# CHPE2:      CHPEMetadata [
# CHPE2-NEXT:   Version: 0x2
# CHPE2:        AuxiliaryDelayloadIAT: 0x1
# CHPE2-NEXT:   AuxiliaryDelayloadIATCopy: 0x2
# CHPE2-NEXT:   HybridImageInfoBitfield: 0x4

--- !COFF
OptionalHeader:
  ImageBase:       0x180000000
  SectionAlignment: 4096
  FileAlignment:   512
  DLLCharacteristics: [ ]
  LoadConfigTable:
    RelativeVirtualAddress: 0x4000
    Size:            320
header:
  Machine:         IMAGE_FILE_MACHINE_AMD64
  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
  - Name:            .data
    Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ, IMAGE_SCN_MEM_WRITE ]
    VirtualAddress:  0x5000
    VirtualSize:     144
    StructuredData:
      - UInt32: 2       # Version
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 0
      - UInt32: 1       # AuxiliaryDelayloadIAT
      - UInt32: 2       # AuxiliaryDelayloadIATCopy
      - UInt32: 4       # HybridImageInfoBitfield
symbols:         []
...

# RUN: yaml2obj --docnum=3 %s -o %t3
# RUN: not llvm-readobj --coff-load-config %t3 2>&1 | FileCheck --check-prefix=ERR-EOF %s
# ERR-EOF: The end of the file was unexpectedly encountered

--- !COFF
OptionalHeader:
  ImageBase:       0x180000000
  SectionAlignment: 4096
  FileAlignment:   512
  DLLCharacteristics: [ ]
  LoadConfigTable:
    RelativeVirtualAddress: 0x4000
    Size:            320
header:
  Machine:         IMAGE_FILE_MACHINE_AMD64
  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:     512
    StructuredData:
      - LoadConfig:
          CHPEMetadataPointer: 0x1800041AC
symbols:         []
...