467 lines · yaml
1# Test reading ARM64X dynamic relocations.2 3# RUN: yaml2obj %s -o %t.dll4# RUN: llvm-readobj --coff-load-config %t.dll | FileCheck --check-prefixes=CHECK,V1 %s5 6# CHECK: CHPEMetadataPointer: 0x1800050007# CHECK: CHPEMetadata [8# CHECK-NEXT: Version: 0x19# CHECK-NEXT: CodeMap [10# CHECK-NEXT: 0x1000 - 0x1030 ARM64EC11# CHECK-NEXT: 0x2000 - 0x2040 ARM6412# CHECK-NEXT: 0x3000 - 0x3050 X6413# CHECK-NEXT: ]14# CHECK-NEXT: CodeRangesToEntryPoints [15# CHECK-NEXT: 0x1000 - 0x1020 -> 0x100016# CHECK-NEXT: 0x1020 - 0x1040 -> 0x200017# CHECK-NEXT: ]18# CHECK-NEXT: RedirectionMetadata [19# CHECK-NEXT: 0x1000 -> 0x200020# CHECK-NEXT: 0x1020 -> 0x203021# CHECK-NEXT: ]22 23# CHECK: DynamicRelocations [24# V1: Version: 0x125# V2: Version: 0x226# CHECK: Arm64X [27# CHECK-NEXT: Entry [28# CHECK-NEXT: RVA: 0x8429# CHECK-NEXT: Type: VALUE30# CHECK-NEXT: Size: 0x231# CHECK-NEXT: Value: 0x866432# CHECK-NEXT: ]33# CHECK-NEXT: Entry [34# CHECK-NEXT: RVA: 0x602035# CHECK-NEXT: Type: VALUE36# CHECK-NEXT: Size: 0x237# CHECK-NEXT: Value: 0x341238# CHECK-NEXT: ]39# CHECK-NEXT: Entry [40# CHECK-NEXT: RVA: 0x602441# CHECK-NEXT: Type: VALUE42# CHECK-NEXT: Size: 0x443# CHECK-NEXT: Value: 0x8967452344# CHECK-NEXT: ]45# CHECK-NEXT: Entry [46# CHECK-NEXT: RVA: 0x602847# CHECK-NEXT: Type: VALUE48# CHECK-NEXT: Size: 0x849# CHECK-NEXT: Value: 0x887766554433221150# CHECK-NEXT: ]51# CHECK-NEXT: Entry [52# CHECK-NEXT: RVA: 0x600053# CHECK-NEXT: Type: ZERO54# CHECK-NEXT: Size: 0x255# CHECK-NEXT: ]56# CHECK-NEXT: Entry [57# CHECK-NEXT: RVA: 0x600458# CHECK-NEXT: Type: ZERO59# CHECK-NEXT: Size: 0x460# CHECK-NEXT: ]61# CHECK-NEXT: Entry [62# CHECK-NEXT: RVA: 0x601063# CHECK-NEXT: Type: ZERO64# CHECK-NEXT: Size: 0x865# CHECK-NEXT: ]66# CHECK-NEXT: Entry [67# CHECK-NEXT: RVA: 0x604068# CHECK-NEXT: Type: DELTA69# CHECK-NEXT: Value: 6874070# CHECK-NEXT: ]71# CHECK-NEXT: Entry [72# CHECK-NEXT: RVA: 0x604473# CHECK-NEXT: Type: DELTA74# CHECK-NEXT: Value: 13748075# CHECK-NEXT: ]76# CHECK-NEXT: Entry [77# CHECK-NEXT: RVA: 0x604878# CHECK-NEXT: Type: DELTA79# CHECK-NEXT: Value: -1680# CHECK-NEXT: ]81# CHECK-NEXT: Entry [82# CHECK-NEXT: RVA: 0x604C83# CHECK-NEXT: Type: DELTA84# CHECK-NEXT: Value: -3285# CHECK-NEXT: ]86# CHECK-NEXT: ]87# CHECK-NEXT: ]88 89# RUN: llvm-readobj --hex-dump=.test %t.dll | FileCheck --match-full-lines --strict-whitespace --check-prefix=HEX %s90# HEX:Format: COFF-ARM64X91# HEX-NEXT:Arch: aarch6492# HEX-NEXT:AddressSize: 64bit93# HEX-EMPTY:94# HEX-NEXT:Hex dump of section '.test':95# HEX-NEXT:0x180006000 11112222 33334444 55556666 77778888 ..""33DDUUffww..96# HEX-NEXT:0x180006010 9999aaaa bbbbcccc ddddeeee ffff0000 ................97# HEX-NEXT:0x180006020 00000000 00000000 00000000 00000000 ................98# HEX-NEXT:0x180006030 00000000 00000000 00000000 00000000 ................99# HEX-NEXT:0x180006040 10101010 20202020 30303030 40404040 .... 0000@@@@100# HEX-NEXT:0x180006050 50505050 60606060 70707070 80808080 PPPP````pppp....101# HEX-NEXT:HybridObject {102# HEX-NEXT: Format: COFF-ARM64EC103# HEX-NEXT: Arch: aarch64104# HEX-NEXT: AddressSize: 64bit105# HEX-EMPTY:106# HEX-NEXT: Hex dump of section '.test':107# HEX-NEXT: 0x180006000 00002222 00000000 55556666 77778888 ..""....UUffww..108# HEX-NEXT: 0x180006010 00000000 00000000 ddddeeee ffff0000 ................109# HEX-NEXT: 0x180006020 12340000 23456789 11223344 55667788 .4..#Eg.."3DUfw.110# HEX-NEXT: 0x180006030 00000000 00000000 00000000 00000000 ................111# HEX-NEXT: 0x180006040 941c1110 28392220 20303030 20404040 ....(9" 000 @@@112# HEX-NEXT: 0x180006050 50505050 60606060 70707070 80808080 PPPP````pppp....113# HEX-NEXT:}114 115 116--- !COFF117OptionalHeader:118 ImageBase: 0x180000000119 SectionAlignment: 4096120 FileAlignment: 512121 DLLCharacteristics: [ ]122 LoadConfigTable:123 RelativeVirtualAddress: 0x4000124 Size: 320125header:126 Machine: IMAGE_FILE_MACHINE_ARM64127 Characteristics: [ IMAGE_FILE_EXECUTABLE_IMAGE, IMAGE_FILE_LARGE_ADDRESS_AWARE, IMAGE_FILE_DLL ]128sections:129 - Name: .text130 Characteristics: [ IMAGE_SCN_CNT_CODE, IMAGE_SCN_MEM_EXECUTE, IMAGE_SCN_MEM_READ ]131 VirtualAddress: 0x1000132 VirtualSize: 0x2050133 - Name: .rdata134 Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ ]135 VirtualAddress: 0x4000136 VirtualSize: 328137 StructuredData:138 - LoadConfig:139 CHPEMetadataPointer: 0x180005000140 DynamicValueRelocTableOffset: 4141 DynamicValueRelocTableSection: 5142 - Name: .data143 Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ, IMAGE_SCN_MEM_WRITE ]144 VirtualAddress: 0x5000145 VirtualSize: 144146 StructuredData:147 - UInt32: 1 # Version148 - UInt32: 0x5050 # CodeMap149 - UInt32: 3 # CodeMapCount150 - UInt32: 0x5068 # CodeRangesToEntryPoints151 - UInt32: 0x5080 # RedirectionMetadata152 - UInt32: 0153 - UInt32: 0154 - UInt32: 0155 - UInt32: 0156 - UInt32: 0157 - UInt32: 0158 - UInt32: 0159 - UInt32: 2 # CodeRangesToEntryPointsCount160 - UInt32: 2 # RedirectionMetadataCount161 - UInt32: 0162 - UInt32: 0163 - UInt32: 0164 - UInt32: 0165 - UInt32: 0166 - UInt32: 0167 - UInt32: 0x1001 # CodeMap[0]168 - UInt32: 0x30169 - UInt32: 0x2000 # CodeMap[1]170 - UInt32: 0x40171 - UInt32: 0x3002 # CodeMap[2]172 - UInt32: 0x50173 - UInt32: 0x1000 # CodeRangesToEntryPoints[0]174 - UInt32: 0x1020175 - UInt32: 0x1000176 - UInt32: 0x1020 # CodeRangesToEntryPoints[1]177 - UInt32: 0x1040178 - UInt32: 0x2000179 - UInt32: 0x1000 # RedirectionMetadata[0]180 - UInt32: 0x2000181 - UInt32: 0x1020 # RedirectionMetadata[1]182 - UInt32: 0x2030183 - Name: .test184 Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ ]185 VirtualAddress: 0x6000186 VirtualSize: 0x60187 StructuredData:188 - Binary: 111122223333444455556666777788889999aaaabbbbccccddddeeeeffff0000189 - Binary: 0000000000000000000000000000000000000000000000000000000000000000190 - Binary: 1010101020202020303030304040404050505050606060607070707080808080191 - Name: .reloc192 Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ, IMAGE_SCN_MEM_DISCARDABLE ]193 VirtualAddress: 0x7000194 VirtualSize: 328195 StructuredData:196 - UInt32: 0 # pad197 - UInt32: 1 # coff_dynamic_reloc_table.Version198 - UInt32: 76 # coff_dynamic_reloc_table.Size199 - UInt32: 6 # coff_dynamic_relocation64.Symbol(low) = IMAGE_DYNAMIC_RELOCATION_ARM64X200 - UInt32: 0 # coff_dynamic_relocation64.Symbol(high)201 - UInt32: 64 # coff_dynamic_relocation64.BaseRelocSize202 - UInt32: 0 # coff_base_reloc_block_header[0].PageRVA203 - UInt32: 12 # coff_base_reloc_block_header[0].BlockSize204 - Binary: 8450 # VALUE offset 0x84 (PE header Machine), size 2205 - Binary: 6486 # IMAGE_FILE_MACHINE_AMD64206 - UInt32: 0x6000 # coff_base_reloc_block_header[1].PageRVA207 - UInt32: 52 # coff_base_reloc_block_header[1].BlockSize208 - Binary: 2050 # VALUE offset 0x20, size 2209 - Binary: 1234 # test value210 - Binary: 2490 # VALUE offset 0x24, size 4211 - Binary: 23456789 # test value212 - Binary: 28d0 # VALUE offset 0x28, size 4213 - Binary: 11223344 # test value214 - Binary: 55667788 # test value215 - Binary: 0040 # ZERO offset 0, size 2216 - Binary: 0480 # ZERO offset 4, size 4217 - Binary: 10c0 # ZERO offset 16, size 8218 - Binary: 4020 # DELTA offset 0x40, mul 4219 - Binary: 2143220 - Binary: 44a0 # DELTA offset 0x44, mul 8221 - Binary: 2143222 - Binary: 4860 # DELTA offset 0x48, mul 4223 - Binary: 0400224 - Binary: 4ce0 # DELTA offset 0x4c, mul 8225 - Binary: 0400226 - Binary: 0000 # terminator227symbols: []228...229 230# RUN: yaml2obj %s --docnum=2 -o %t2.dll231# RUN: llvm-readobj --coff-load-config %t2.dll | FileCheck --check-prefixes=CHECK,V2 %s232# RUN: llvm-readobj --hex-dump=.test %t2.dll | FileCheck --match-full-lines --strict-whitespace --check-prefix=HEX %s233 234--- !COFF235OptionalHeader:236 ImageBase: 0x180000000237 SectionAlignment: 4096238 FileAlignment: 512239 DLLCharacteristics: [ ]240 LoadConfigTable:241 RelativeVirtualAddress: 0x4000242 Size: 320243header:244 Machine: IMAGE_FILE_MACHINE_ARM64245 Characteristics: [ IMAGE_FILE_EXECUTABLE_IMAGE, IMAGE_FILE_LARGE_ADDRESS_AWARE, IMAGE_FILE_DLL ]246sections:247 - Name: .text248 Characteristics: [ IMAGE_SCN_CNT_CODE, IMAGE_SCN_MEM_EXECUTE, IMAGE_SCN_MEM_READ ]249 VirtualAddress: 0x1000250 VirtualSize: 0x2050251 - Name: .rdata252 Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ ]253 VirtualAddress: 0x4000254 VirtualSize: 328255 StructuredData:256 - LoadConfig:257 CHPEMetadataPointer: 0x180005000258 DynamicValueRelocTableOffset: 4259 DynamicValueRelocTableSection: 5260 - Name: .data261 Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ, IMAGE_SCN_MEM_WRITE ]262 VirtualAddress: 0x5000263 VirtualSize: 144264 StructuredData:265 - UInt32: 1 # Version266 - UInt32: 0x5050 # CodeMap267 - UInt32: 3 # CodeMapCount268 - UInt32: 0x5068 # CodeRangesToEntryPoints269 - UInt32: 0x5080 # RedirectionMetadata270 - UInt32: 0271 - UInt32: 0272 - UInt32: 0273 - UInt32: 0274 - UInt32: 0275 - UInt32: 0276 - UInt32: 0277 - UInt32: 2 # CodeRangesToEntryPointsCount278 - UInt32: 2 # RedirectionMetadataCount279 - UInt32: 0280 - UInt32: 0281 - UInt32: 0282 - UInt32: 0283 - UInt32: 0284 - UInt32: 0285 - UInt32: 0x1001 # CodeMap[0]286 - UInt32: 0x30287 - UInt32: 0x2000 # CodeMap[1]288 - UInt32: 0x40289 - UInt32: 0x3002 # CodeMap[2]290 - UInt32: 0x50291 - UInt32: 0x1000 # CodeRangesToEntryPoints[0]292 - UInt32: 0x1020293 - UInt32: 0x1000294 - UInt32: 0x1020 # CodeRangesToEntryPoints[1]295 - UInt32: 0x1040296 - UInt32: 0x2000297 - UInt32: 0x1000 # RedirectionMetadata[0]298 - UInt32: 0x2000299 - UInt32: 0x1020 # RedirectionMetadata[1]300 - UInt32: 0x2030301 - Name: .test302 Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ ]303 VirtualAddress: 0x6000304 VirtualSize: 0x60305 StructuredData:306 - Binary: 111122223333444455556666777788889999aaaabbbbccccddddeeeeffff0000307 - Binary: 0000000000000000000000000000000000000000000000000000000000000000308 - Binary: 1010101020202020303030304040404050505050606060607070707080808080309 - Name: .reloc310 Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ, IMAGE_SCN_MEM_DISCARDABLE ]311 VirtualAddress: 0x7000312 VirtualSize: 328313 StructuredData:314 - UInt32: 0 # pad315 - UInt32: 2 # coff_dynamic_reloc_table.Version316 - UInt32: 88 # coff_dynamic_reloc_table.Size317 - UInt32: 24 # coff_dynamic_relocation64_v2.HeaderSize318 - UInt32: 64 # coff_dynamic_relocation64_v2.FixupInfoSize319 - UInt32: 6 # coff_dynamic_relocation64_v2.Symbol(low) = IMAGE_DYNAMIC_RELOCATION_ARM64X320 - UInt32: 0 # coff_dynamic_relocation64_v2.Symbol(high)321 - UInt32: 0 # coff_dynamic_relocation64_v2.SymbolGroup322 - UInt32: 0 # coff_dynamic_relocation64_v2.Flags323 - UInt32: 0 # coff_base_reloc_block_header[0].PageRVA324 - UInt32: 12 # coff_base_reloc_block_header[0].BlockSize325 - Binary: 8450 # VALUE offset 0x84 (PE header Machine), size 2326 - Binary: 6486 # IMAGE_FILE_MACHINE_AMD64327 - UInt32: 0x6000 # coff_base_reloc_block_header[1].PageRVA328 - UInt32: 52 # coff_base_reloc_block_header[1].BlockSize329 - Binary: 2050 # VALUE offset 0x20, size 2330 - Binary: 1234 # test value331 - Binary: 2490 # VALUE offset 0x24, size 4332 - Binary: 23456789 # test value333 - Binary: 28d0 # VALUE offset 0x28, size 4334 - Binary: 11223344 # test value335 - Binary: 55667788 # test value336 - Binary: 0040 # ZERO offset 0, size 2337 - Binary: 0480 # ZERO offset 4, size 4338 - Binary: 10c0 # ZERO offset 16, size 8339 - Binary: 4020 # DELTA offset 0x40, mul 4340 - Binary: 2143341 - Binary: 44a0 # DELTA offset 0x44, mul 8342 - Binary: 2143343 - Binary: 4860 # DELTA offset 0x48, mul 4344 - Binary: 0400345 - Binary: 4ce0 # DELTA offset 0x4c, mul 8346 - Binary: 0400347 - Binary: 0000 # terminator348symbols: []349...350 351# RUN: yaml2obj %s --docnum=3 -o %t3.dll352# RUN: llvm-readobj --coff-exports %t3.dll | FileCheck --match-full-lines --strict-whitespace --check-prefix=EXP %s353 354# EXP:Format: COFF-ARM64X355# EXP-NEXT:Arch: aarch64356# EXP-NEXT:AddressSize: 64bit357# EXP-NEXT:Export {358# EXP-NEXT: Ordinal: 1359# EXP-NEXT: Name: test360# EXP-NEXT: RVA: 0x2000361# EXP-NEXT:}362# EXP-NEXT:HybridObject {363# EXP-NEXT: Format: COFF-ARM64EC364# EXP-NEXT: Arch: aarch64365# EXP-NEXT: AddressSize: 64bit366# EXP-NEXT: Export {367# EXP-NEXT: Ordinal: 1368# EXP-NEXT: Name: test369# EXP-NEXT: RVA: 0x2004370# EXP-NEXT: }371# EXP-NEXT:}372 373--- !COFF374OptionalHeader:375 ImageBase: 0x180000000376 SectionAlignment: 4096377 FileAlignment: 512378 DLLCharacteristics: [ ]379 AddressOfEntryPoint: 0380 ExportTable:381 RelativeVirtualAddress: 0x1000382 Size: 64383 LoadConfigTable:384 RelativeVirtualAddress: 0x3000385 Size: 320386header:387 Machine: IMAGE_FILE_MACHINE_ARM64388 Characteristics: [ IMAGE_FILE_EXECUTABLE_IMAGE, IMAGE_FILE_LARGE_ADDRESS_AWARE, IMAGE_FILE_DLL ]389sections:390 - Name: .rdata391 Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ ]392 VirtualAddress: 0x1000393 VirtualSize: 64394 StructuredData:395 - UInt32: 0 # ExportFlags396 - UInt32: 0 # TimeDateStamp397 - UInt32: 0 # Version398 - UInt32: 0x1028 # NameRVA399 - UInt32: 1 # OrdinalBase400 - UInt32: 1 # AddressTableEntries401 - UInt32: 1 # NumberOfNamePointers402 - UInt32: 0x1030 # ExportAddressTableRVA403 - UInt32: 0x1034 # NamePointerRVA404 - UInt32: 0x1038 # OrdinalTableRVA405 - Binary: 7473742E646C6C00 # "tst.dll"406 - UInt32: 0x2000 # export RVA407 - UInt32: 0x103A # name RVA408 - Binary: 0000 # ordinal409 - Binary: 7465737400 # "test"410 - Name: .data411 Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ, IMAGE_SCN_MEM_WRITE ]412 VirtualAddress: 0x2000413 VirtualSize: 80414 StructuredData:415 - UInt32: 1 # Version416 - UInt32: 0 # CodeMap417 - UInt32: 0 # CodeMapCount418 - UInt32: 0 # CodeRangesToEntryPoints419 - UInt32: 0 # RedirectionMetadata420 - UInt32: 0421 - UInt32: 0422 - UInt32: 0423 - UInt32: 0424 - UInt32: 0425 - UInt32: 0426 - UInt32: 0427 - UInt32: 0 # CodeRangesToEntryPointsCount428 - UInt32: 0 # RedirectionMetadataCount429 - UInt32: 0430 - UInt32: 0431 - UInt32: 0432 - UInt32: 0433 - UInt32: 0434 - UInt32: 0435 - Name: .cfg436 Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ ]437 VirtualAddress: 0x3000438 VirtualSize: 328439 StructuredData:440 - LoadConfig:441 CHPEMetadataPointer: 0x180002000442 DynamicValueRelocTableOffset: 0443 DynamicValueRelocTableSection: 4444 - Name: .arm64x445 Characteristics: [ IMAGE_SCN_CNT_INITIALIZED_DATA, IMAGE_SCN_MEM_READ, IMAGE_SCN_MEM_DISCARDABLE ]446 VirtualAddress: 0x4000447 VirtualSize: 56448 StructuredData:449 - UInt32: 2 # coff_dynamic_reloc_table.Version450 - UInt32: 48 # coff_dynamic_reloc_table.Size451 - UInt32: 24 # coff_dynamic_relocation64_v2.HeaderSize452 - UInt32: 24 # coff_dynamic_relocation64_v2.FixupInfoSize453 - UInt32: 6 # coff_dynamic_relocation64_v2.Symbol(low) = IMAGE_DYNAMIC_RELOCATION_ARM64X454 - UInt32: 0 # coff_dynamic_relocation64_v2.Symbol(high)455 - UInt32: 0 # coff_dynamic_relocation64_v2.SymbolGroup456 - UInt32: 0 # coff_dynamic_relocation64_v2.Flags457 - UInt32: 0 # coff_base_reloc_block_header[0].PageRVA458 - UInt32: 12 # coff_base_reloc_block_header[0].BlockSize459 - Binary: 8450 # VALUE offset 0x84 (PE header Machine), size 2460 - Binary: 6486 # IMAGE_FILE_MACHINE_AMD64461 - UInt32: 0x1000 # coff_base_reloc_block_header[1].PageRVA462 - UInt32: 12 # coff_base_reloc_block_header[1].BlockSize463 - Binary: 3020 # DELTA offset 0x30, mul 4464 - Binary: 0100465symbols: []466...467