149 lines · plain
1# RUN: yaml2obj %s -o %t.obj2#3# RUN: lld-link -safeseh:no /out:%t.dll /dll %t.obj /export:exportfn1 /export:exportfn24# RUN: llvm-objdump -p %t.dll | FileCheck --check-prefix=CHECK1 %s5#6# RUN: lld-link -safeseh:no /out:%t.dll /dll %t.obj /export:exportfn1 /export:exportfn2 /merge:.edata=.rdata7# RUN: llvm-objdump -p %t.dll | FileCheck --check-prefix=CHECK1 %s8# RUN: llvm-readobj --file-headers --sections %t.dll | FileCheck -check-prefix=HEADER-MERGE %s9 10# CHECK1: Export Table:11# CHECK1-NEXT: DLL name: export32.test.tmp.dll12# CHECK1-NEXT: Ordinal base: 113# CHECK1-NEXT: Ordinal RVA Name14# CHECK1-NEXT: 1 0x1008 exportfn115# CHECK1-NEXT: 2 0x1010 exportfn216 17# HEADER-MERGE: ExportTableRVA: 0x200018# HEADER-MERGE-NEXT: ExportTableSize: 0x7A19# HEADER-MERGE: Name: .rdata20# HEADER-MERGE-NEXT: VirtualSize: 0x7A21# HEADER-MERGE-NEXT: VirtualAddress: 0x200022 23# RUN: lld-link -safeseh:no /out:%t.dll /dll %t.obj /export:exportfn1,@5 \24# RUN: /export:exportfn2 /export:mangled25# RUN: llvm-objdump -p %t.dll | FileCheck --check-prefix=CHECK2 %s26 27# CHECK2: Export Table:28# CHECK2-NEXT: DLL name: export32.test.tmp.dll29# CHECK2-NEXT: Ordinal base: 530# CHECK2-NEXT: Ordinal RVA Name31# CHECK2-NEXT: 5 0x1008 exportfn132# CHECK2-NEXT: 6 0x1010 exportfn233# CHECK2-NEXT: 7 0x1010 exportfn334# CHECK2-NEXT: 8 0x1010 mangled35 36# RUN: lld-link -safeseh:no /out:%t.dll /dll %t.obj /export:exportfn1,@5,noname /export:exportfn237# RUN: llvm-objdump -p %t.dll | FileCheck --check-prefix=CHECK3 %s38 39# CHECK3: Export Table:40# CHECK3-NEXT: DLL name: export32.test.tmp.dll41# CHECK3-NEXT: Ordinal base: 542# CHECK3-NEXT: Ordinal RVA Name43# CHECK3-NEXT: 5 0x100844# CHECK3-NEXT: 6 0x1010 exportfn245 46# RUN: lld-link -safeseh:no /out:%t.dll /dll %t.obj /export:f1=exportfn1 /export:f2=exportfn247# RUN: llvm-objdump -p %t.dll | FileCheck --check-prefix=CHECK4 %s48 49# CHECK4: Export Table:50# CHECK4-NEXT: DLL name: export32.test.tmp.dll51# CHECK4-NEXT: Ordinal base: 152# CHECK4-NEXT: Ordinal RVA Name53# CHECK4-NEXT: 1 0x1010 exportfn354# CHECK4-NEXT: 2 0x1008 f155# CHECK4-NEXT: 3 0x1010 f256 57# RUN: echo "EXPORTS exportfn1 @3" > %t.def58# RUN: echo "fn2=exportfn2 @2" >> %t.def59# RUN: lld-link -safeseh:no /out:%t.dll /dll %t.obj /def:%t.def60# RUN: llvm-objdump -p %t.dll | FileCheck --check-prefix=CHECK5 %s61 62# RUN: echo "EXPORTS exportfn1 @ 3" > %t.def63# RUN: echo "fn2=exportfn2 @ 2" >> %t.def64# RUN: lld-link -safeseh:no /out:%t.dll /dll %t.obj /def:%t.def65# RUN: llvm-objdump -p %t.dll | FileCheck --check-prefix=CHECK5 %s66 67# CHECK5: Export Table:68# CHECK5-NEXT: DLL name: export32.test.tmp.dll69# CHECK5-NEXT: Ordinal base: 270# CHECK5-NEXT: Ordinal RVA Name71# CHECK5-NEXT: 2 0x1010 fn272# CHECK5-NEXT: 3 0x1008 exportfn173# CHECK5-NEXT: 4 0x1010 exportfn374 75# RUN: lld-link -safeseh:no /out:%t.dll /dll %t.obj /export:exportfn1 /export:exportfn2 \76# RUN: /export:exportfn1 /export:exportfn2,@5 >& %t.log77# RUN: FileCheck -check-prefix=CHECK6 %s < %t.log78 79# CHECK6: duplicate /export option: _exportfn280# CHECK6-NOT: duplicate /export option: _exportfn181 82# RUN: lld-link -safeseh:no /out:%t.dll /dll %t.obj /export:foo=mangled83# RUN: llvm-objdump -p %t.dll | FileCheck --check-prefix=CHECK7 %s84 85# CHECK7: Export Table:86# CHECK7-NEXT: DLL name: export32.test.tmp.dll87# CHECK7-NEXT: Ordinal base: 188# CHECK7-NEXT: Ordinal RVA Name89# CHECK7-NEXT: 1 0x1010 exportfn390# CHECK7-NEXT: 2 0x1010 foo91 92--- !COFF93header:94 Machine: IMAGE_FILE_MACHINE_I38695 Characteristics: []96sections:97 - Name: .text98 Characteristics: [ IMAGE_SCN_CNT_CODE, IMAGE_SCN_MEM_EXECUTE, IMAGE_SCN_MEM_READ ]99 Alignment: 4100 SectionData: B800000000506800000000680000000050E80000000050E800000000101 - Name: .drectve102 Characteristics: [ IMAGE_SCN_LNK_INFO, IMAGE_SCN_LNK_REMOVE ]103 Alignment: 1104 SectionData: 2f6578706f72743a5f6578706f7274666e3300 # /export:_exportfn3105symbols:106 - Name: .text107 Value: 0108 SectionNumber: 1109 SimpleType: IMAGE_SYM_TYPE_NULL110 ComplexType: IMAGE_SYM_DTYPE_NULL111 StorageClass: IMAGE_SYM_CLASS_STATIC112 SectionDefinition:113 Length: 28114 NumberOfRelocations: 4115 NumberOfLinenumbers: 0116 CheckSum: 0117 Number: 0118 - Name: __DllMainCRTStartup@12119 Value: 0120 SectionNumber: 1121 SimpleType: IMAGE_SYM_TYPE_NULL122 ComplexType: IMAGE_SYM_DTYPE_NULL123 StorageClass: IMAGE_SYM_CLASS_EXTERNAL124 - Name: _exportfn1125 Value: 8126 SectionNumber: 1127 SimpleType: IMAGE_SYM_TYPE_NULL128 ComplexType: IMAGE_SYM_DTYPE_NULL129 StorageClass: IMAGE_SYM_CLASS_EXTERNAL130 - Name: _exportfn2@4131 Value: 16132 SectionNumber: 1133 SimpleType: IMAGE_SYM_TYPE_NULL134 ComplexType: IMAGE_SYM_DTYPE_NULL135 StorageClass: IMAGE_SYM_CLASS_EXTERNAL136 - Name: _exportfn3137 Value: 16138 SectionNumber: 1139 SimpleType: IMAGE_SYM_TYPE_NULL140 ComplexType: IMAGE_SYM_DTYPE_NULL141 StorageClass: IMAGE_SYM_CLASS_EXTERNAL142 - Name: '?mangled@@YAHXZ'143 Value: 16144 SectionNumber: 1145 SimpleType: IMAGE_SYM_TYPE_NULL146 ComplexType: IMAGE_SYM_DTYPE_NULL147 StorageClass: IMAGE_SYM_CLASS_EXTERNAL148...149