# Test reading ARM64X dynamic relocations. # RUN: yaml2obj %s -o %t.dll # RUN: llvm-readobj --coff-load-config %t.dll | FileCheck --check-prefixes=CHECK,V1 %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: DynamicRelocations [ # V1: Version: 0x1 # V2: Version: 0x2 # CHECK: Arm64X [ # CHECK-NEXT: Entry [ # CHECK-NEXT: RVA: 0x84 # CHECK-NEXT: Type: VALUE # CHECK-NEXT: Size: 0x2 # CHECK-NEXT: Value: 0x8664 # CHECK-NEXT: ] # CHECK-NEXT: Entry [ # CHECK-NEXT: RVA: 0x6020 # CHECK-NEXT: Type: VALUE # CHECK-NEXT: Size: 0x2 # CHECK-NEXT: Value: 0x3412 # CHECK-NEXT: ] # CHECK-NEXT: Entry [ # CHECK-NEXT: RVA: 0x6024 # CHECK-NEXT: Type: VALUE # CHECK-NEXT: Size: 0x4 # CHECK-NEXT: Value: 0x89674523 # CHECK-NEXT: ] # CHECK-NEXT: Entry [ # CHECK-NEXT: RVA: 0x6028 # CHECK-NEXT: Type: VALUE # CHECK-NEXT: Size: 0x8 # CHECK-NEXT: Value: 0x8877665544332211 # CHECK-NEXT: ] # CHECK-NEXT: Entry [ # CHECK-NEXT: RVA: 0x6000 # CHECK-NEXT: Type: ZERO # CHECK-NEXT: Size: 0x2 # CHECK-NEXT: ] # CHECK-NEXT: Entry [ # CHECK-NEXT: RVA: 0x6004 # CHECK-NEXT: Type: ZERO # CHECK-NEXT: Size: 0x4 # CHECK-NEXT: ] # CHECK-NEXT: Entry [ # CHECK-NEXT: RVA: 0x6010 # CHECK-NEXT: Type: ZERO # CHECK-NEXT: Size: 0x8 # CHECK-NEXT: ] # CHECK-NEXT: Entry [ # CHECK-NEXT: RVA: 0x6040 # CHECK-NEXT: Type: DELTA # CHECK-NEXT: Value: 68740 # CHECK-NEXT: ] # CHECK-NEXT: Entry [ # CHECK-NEXT: RVA: 0x6044 # CHECK-NEXT: Type: DELTA # CHECK-NEXT: Value: 137480 # CHECK-NEXT: ] # CHECK-NEXT: Entry [ # CHECK-NEXT: RVA: 0x6048 # CHECK-NEXT: Type: DELTA # CHECK-NEXT: Value: -16 # CHECK-NEXT: ] # CHECK-NEXT: Entry [ # CHECK-NEXT: RVA: 0x604C # CHECK-NEXT: Type: DELTA # CHECK-NEXT: Value: -32 # CHECK-NEXT: ] # CHECK-NEXT: ] # CHECK-NEXT: ] # RUN: llvm-readobj --hex-dump=.test %t.dll | FileCheck --match-full-lines --strict-whitespace --check-prefix=HEX %s # HEX:Format: COFF-ARM64X # HEX-NEXT:Arch: aarch64 # HEX-NEXT:AddressSize: 64bit # HEX-EMPTY: # HEX-NEXT:Hex dump of section '.test': # HEX-NEXT:0x180006000 11112222 33334444 55556666 77778888 ..""33DDUUffww.. # HEX-NEXT:0x180006010 9999aaaa bbbbcccc ddddeeee ffff0000 ................ # HEX-NEXT:0x180006020 00000000 00000000 00000000 00000000 ................ # HEX-NEXT:0x180006030 00000000 00000000 00000000 00000000 ................ # HEX-NEXT:0x180006040 10101010 20202020 30303030 40404040 .... 0000@@@@ # HEX-NEXT:0x180006050 50505050 60606060 70707070 80808080 PPPP````pppp.... # HEX-NEXT:HybridObject { # HEX-NEXT: Format: COFF-ARM64EC # HEX-NEXT: Arch: aarch64 # HEX-NEXT: AddressSize: 64bit # HEX-EMPTY: # HEX-NEXT: Hex dump of section '.test': # HEX-NEXT: 0x180006000 00002222 00000000 55556666 77778888 ..""....UUffww.. # HEX-NEXT: 0x180006010 00000000 00000000 ddddeeee ffff0000 ................ # HEX-NEXT: 0x180006020 12340000 23456789 11223344 55667788 .4..#Eg.."3DUfw. # HEX-NEXT: 0x180006030 00000000 00000000 00000000 00000000 ................ # HEX-NEXT: 0x180006040 941c1110 28392220 20303030 20404040 ....(9" 000 @@@ # HEX-NEXT: 0x180006050 50505050 60606060 70707070 80808080 PPPP````pppp.... # HEX-NEXT:} --- !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: 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 - Name: .test Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ ] VirtualAddress: 0x6000 VirtualSize: 0x60 StructuredData: - Binary: 111122223333444455556666777788889999aaaabbbbccccddddeeeeffff0000 - Binary: 0000000000000000000000000000000000000000000000000000000000000000 - Binary: 1010101020202020303030304040404050505050606060607070707080808080 - 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: 76 # coff_dynamic_reloc_table.Size - UInt32: 6 # coff_dynamic_relocation64.Symbol(low) = IMAGE_DYNAMIC_RELOCATION_ARM64X - UInt32: 0 # coff_dynamic_relocation64.Symbol(high) - UInt32: 64 # coff_dynamic_relocation64.BaseRelocSize - UInt32: 0 # coff_base_reloc_block_header[0].PageRVA - UInt32: 12 # coff_base_reloc_block_header[0].BlockSize - Binary: 8450 # VALUE offset 0x84 (PE header Machine), size 2 - Binary: 6486 # IMAGE_FILE_MACHINE_AMD64 - UInt32: 0x6000 # coff_base_reloc_block_header[1].PageRVA - UInt32: 52 # coff_base_reloc_block_header[1].BlockSize - Binary: 2050 # VALUE offset 0x20, size 2 - Binary: 1234 # test value - Binary: 2490 # VALUE offset 0x24, size 4 - Binary: 23456789 # test value - Binary: 28d0 # VALUE offset 0x28, size 4 - Binary: 11223344 # test value - Binary: 55667788 # test value - Binary: 0040 # ZERO offset 0, size 2 - Binary: 0480 # ZERO offset 4, size 4 - Binary: 10c0 # ZERO offset 16, size 8 - Binary: 4020 # DELTA offset 0x40, mul 4 - Binary: 2143 - Binary: 44a0 # DELTA offset 0x44, mul 8 - Binary: 2143 - Binary: 4860 # DELTA offset 0x48, mul 4 - Binary: 0400 - Binary: 4ce0 # DELTA offset 0x4c, mul 8 - Binary: 0400 - Binary: 0000 # terminator symbols: [] ... # RUN: yaml2obj %s --docnum=2 -o %t2.dll # RUN: llvm-readobj --coff-load-config %t2.dll | FileCheck --check-prefixes=CHECK,V2 %s # RUN: llvm-readobj --hex-dump=.test %t2.dll | FileCheck --match-full-lines --strict-whitespace --check-prefix=HEX %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: 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: 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 - Name: .test Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ ] VirtualAddress: 0x6000 VirtualSize: 0x60 StructuredData: - Binary: 111122223333444455556666777788889999aaaabbbbccccddddeeeeffff0000 - Binary: 0000000000000000000000000000000000000000000000000000000000000000 - Binary: 1010101020202020303030304040404050505050606060607070707080808080 - 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: 88 # coff_dynamic_reloc_table.Size - UInt32: 24 # coff_dynamic_relocation64_v2.HeaderSize - UInt32: 64 # 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: 0 # coff_base_reloc_block_header[0].PageRVA - UInt32: 12 # coff_base_reloc_block_header[0].BlockSize - Binary: 8450 # VALUE offset 0x84 (PE header Machine), size 2 - Binary: 6486 # IMAGE_FILE_MACHINE_AMD64 - UInt32: 0x6000 # coff_base_reloc_block_header[1].PageRVA - UInt32: 52 # coff_base_reloc_block_header[1].BlockSize - Binary: 2050 # VALUE offset 0x20, size 2 - Binary: 1234 # test value - Binary: 2490 # VALUE offset 0x24, size 4 - Binary: 23456789 # test value - Binary: 28d0 # VALUE offset 0x28, size 4 - Binary: 11223344 # test value - Binary: 55667788 # test value - Binary: 0040 # ZERO offset 0, size 2 - Binary: 0480 # ZERO offset 4, size 4 - Binary: 10c0 # ZERO offset 16, size 8 - Binary: 4020 # DELTA offset 0x40, mul 4 - Binary: 2143 - Binary: 44a0 # DELTA offset 0x44, mul 8 - Binary: 2143 - Binary: 4860 # DELTA offset 0x48, mul 4 - Binary: 0400 - Binary: 4ce0 # DELTA offset 0x4c, mul 8 - Binary: 0400 - Binary: 0000 # terminator symbols: [] ... # RUN: yaml2obj %s --docnum=3 -o %t3.dll # RUN: llvm-readobj --coff-exports %t3.dll | FileCheck --match-full-lines --strict-whitespace --check-prefix=EXP %s # EXP:Format: COFF-ARM64X # EXP-NEXT:Arch: aarch64 # EXP-NEXT:AddressSize: 64bit # EXP-NEXT:Export { # EXP-NEXT: Ordinal: 1 # EXP-NEXT: Name: test # EXP-NEXT: RVA: 0x2000 # EXP-NEXT:} # EXP-NEXT:HybridObject { # EXP-NEXT: Format: COFF-ARM64EC # EXP-NEXT: Arch: aarch64 # EXP-NEXT: AddressSize: 64bit # EXP-NEXT: Export { # EXP-NEXT: Ordinal: 1 # EXP-NEXT: Name: test # EXP-NEXT: RVA: 0x2004 # EXP-NEXT: } # EXP-NEXT:} --- !COFF OptionalHeader: ImageBase: 0x180000000 SectionAlignment: 4096 FileAlignment: 512 DLLCharacteristics: [ ] AddressOfEntryPoint: 0 ExportTable: RelativeVirtualAddress: 0x1000 Size: 64 LoadConfigTable: RelativeVirtualAddress: 0x3000 Size: 320 header: Machine: IMAGE_FILE_MACHINE_ARM64 Characteristics: [ IMAGE_FILE_EXECUTABLE_IMAGE, IMAGE_FILE_LARGE_ADDRESS_AWARE, IMAGE_FILE_DLL ] sections: - Name: .rdata Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ ] VirtualAddress: 0x1000 VirtualSize: 64 StructuredData: - UInt32: 0 # ExportFlags - UInt32: 0 # TimeDateStamp - UInt32: 0 # Version - UInt32: 0x1028 # NameRVA - UInt32: 1 # OrdinalBase - UInt32: 1 # AddressTableEntries - UInt32: 1 # NumberOfNamePointers - UInt32: 0x1030 # ExportAddressTableRVA - UInt32: 0x1034 # NamePointerRVA - UInt32: 0x1038 # OrdinalTableRVA - Binary: 7473742E646C6C00 # "tst.dll" - UInt32: 0x2000 # export RVA - UInt32: 0x103A # name RVA - Binary: 0000 # ordinal - Binary: 7465737400 # "test" - Name: .data Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ, IMAGE_SCN_MEM_WRITE ] VirtualAddress: 0x2000 VirtualSize: 80 StructuredData: - UInt32: 1 # Version - UInt32: 0 # CodeMap - UInt32: 0 # CodeMapCount - UInt32: 0 # CodeRangesToEntryPoints - UInt32: 0 # 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 - Name: .cfg Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ ] VirtualAddress: 0x3000 VirtualSize: 328 StructuredData: - LoadConfig: CHPEMetadataPointer: 0x180002000 DynamicValueRelocTableOffset: 0 DynamicValueRelocTableSection: 4 - Name: .arm64x Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ, IMAGE_SCN_MEM_DISCARDABLE ] VirtualAddress: 0x4000 VirtualSize: 56 StructuredData: - UInt32: 2 # coff_dynamic_reloc_table.Version - UInt32: 48 # coff_dynamic_reloc_table.Size - UInt32: 24 # coff_dynamic_relocation64_v2.HeaderSize - UInt32: 24 # 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: 0 # coff_base_reloc_block_header[0].PageRVA - UInt32: 12 # coff_base_reloc_block_header[0].BlockSize - Binary: 8450 # VALUE offset 0x84 (PE header Machine), size 2 - Binary: 6486 # IMAGE_FILE_MACHINE_AMD64 - UInt32: 0x1000 # coff_base_reloc_block_header[1].PageRVA - UInt32: 12 # coff_base_reloc_block_header[1].BlockSize - Binary: 3020 # DELTA offset 0x30, mul 4 - Binary: 0100 symbols: [] ...