# RUN: yaml2obj %p/Inputs/delayimporttables-dll1.yaml -o %t1.obj # RUN: yaml2obj %p/Inputs/delayimporttables-dll2.yaml -o %t2.obj # RUN: yaml2obj %s -o %t.obj # RUN: lld-link /nodefaultlib /entry:DllMain /out:%T/delayimporttables-dll1.dll /dll /implib:%t-dll1.lib %t1.obj # RUN: lld-link /nodefaultlib /entry:DllMain /out:%T/delayimporttables-dll2.dll /dll /implib:%t-dll2.lib %t2.obj # RUN: lld-link /nodefaultlib /entry:main /out:%t.exe /delayload:delayimporttables-dll1.dll /delayload:delayimporttables-dll2.dll %t.obj %t-dll1.lib %t-dll2.lib # RUN: llvm-readobj --coff-imports %t.exe |FileCheck %s # CHECK: Format: COFF-x86-64 # CHECK-NEXT: Arch: x86_64 # CHECK-NEXT: AddressSize: 64bit # CHECK-NEXT: DelayImport { # CHECK-NEXT: Name: delayimporttables-dll1.dll # CHECK-NEXT: Attributes: 0x1 # CHECK-NEXT: ModuleHandle: 0x3000 # CHECK-NEXT: ImportAddressTable: 0x3010 # CHECK-NEXT: ImportNameTable: 0x2060 # CHECK-NEXT: BoundDelayImportTable: 0x0 # CHECK-NEXT: UnloadDelayImportTable: 0x0 # CHECK-NEXT: Import { # CHECK-NEXT: Symbol: one (0) # CHECK-NEXT: Address: 0x14000104D # CHECK-NEXT: } # CHECK-NEXT: Import { # CHECK-NEXT: Symbol: two (0) # CHECK-NEXT: Address: 0x140001059 # CHECK-NEXT: } # CHECK-NEXT: } # CHECK-NEXT: DelayImport { # CHECK-NEXT: Name: delayimporttables-dll2.dll # CHECK-NEXT: Attributes: 0x1 # CHECK-NEXT: ModuleHandle: 0x3008 # CHECK-NEXT: ImportAddressTable: 0x3028 # CHECK-NEXT: ImportNameTable: 0x2078 # CHECK-NEXT: BoundDelayImportTable: 0x0 # CHECK-NEXT: UnloadDelayImportTable: 0x0 # CHECK-NEXT: Import { # CHECK-NEXT: Symbol: left (0) # CHECK-NEXT: Address: 0x1400010B8 # CHECK-NEXT: } # CHECK-NEXT: Import { # CHECK-NEXT: Symbol: right (0) # CHECK-NEXT: Address: 0x1400010C4 # CHECK-NEXT: } # CHECK-NEXT: } --- !COFF header: Machine: IMAGE_FILE_MACHINE_AMD64 Characteristics: [ ] sections: - Name: .drectve Characteristics: [ IMAGE_SCN_LNK_INFO, IMAGE_SCN_LNK_REMOVE ] Alignment: 1 SectionData: 2020202F44454641554C544C49423A224C4942434D5422202F44454641554C544C49423A224F4C444E414D45532220 - Name: '.text$mn' Characteristics: [ IMAGE_SCN_CNT_CODE, IMAGE_SCN_MEM_EXECUTE, IMAGE_SCN_MEM_READ ] Alignment: 16 SectionData: 4889542410894C24084883EC28FF1500000000FF1500000000FF1500000000FF150000000033C04883C428C3CCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCCC488954241048894C240833C0C3 Relocations: - VirtualAddress: 15 SymbolName: __imp_one Type: IMAGE_REL_AMD64_REL32 - VirtualAddress: 21 SymbolName: __imp_two Type: IMAGE_REL_AMD64_REL32 - VirtualAddress: 27 SymbolName: __imp_left Type: IMAGE_REL_AMD64_REL32 - VirtualAddress: 33 SymbolName: __imp_right Type: IMAGE_REL_AMD64_REL32 symbols: - Name: .drectve Value: 0 SectionNumber: 1 SimpleType: IMAGE_SYM_TYPE_NULL ComplexType: IMAGE_SYM_DTYPE_NULL StorageClass: IMAGE_SYM_CLASS_STATIC SectionDefinition: Length: 47 NumberOfRelocations: 0 NumberOfLinenumbers: 0 CheckSum: 0 Number: 0 - Name: __imp_one Value: 0 SectionNumber: 0 SimpleType: IMAGE_SYM_TYPE_NULL ComplexType: IMAGE_SYM_DTYPE_NULL StorageClass: IMAGE_SYM_CLASS_EXTERNAL - Name: __imp_two Value: 0 SectionNumber: 0 SimpleType: IMAGE_SYM_TYPE_NULL ComplexType: IMAGE_SYM_DTYPE_NULL StorageClass: IMAGE_SYM_CLASS_EXTERNAL - Name: __imp_left Value: 0 SectionNumber: 0 SimpleType: IMAGE_SYM_TYPE_NULL ComplexType: IMAGE_SYM_DTYPE_NULL StorageClass: IMAGE_SYM_CLASS_EXTERNAL - Name: __imp_right Value: 0 SectionNumber: 0 SimpleType: IMAGE_SYM_TYPE_NULL ComplexType: IMAGE_SYM_DTYPE_NULL StorageClass: IMAGE_SYM_CLASS_EXTERNAL - Name: main Value: 0 SectionNumber: 2 SimpleType: IMAGE_SYM_TYPE_NULL ComplexType: IMAGE_SYM_DTYPE_FUNCTION StorageClass: IMAGE_SYM_CLASS_EXTERNAL - Name: __delayLoadHelper2 Value: 64 SectionNumber: 2 SimpleType: IMAGE_SYM_TYPE_NULL ComplexType: IMAGE_SYM_DTYPE_FUNCTION StorageClass: IMAGE_SYM_CLASS_EXTERNAL ...