brintos

brintos / llvm-project-archived public Read only

0
0
Text · 16.9 KiB · 902a6b8 Raw
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