1 # RUN: yaml2obj < %s > %t.obj
3 # RUN: lld-link /out:%t.dll /dll %t.obj /export:exportfn1 /export:exportfn2
4 # RUN: llvm-objdump -p %t.dll | FileCheck -check-prefix=CHECK1 %s
6 # CHECK1: Export Table:
7 # CHECK1: DLL name: export32.test.tmp.dll
8 # CHECK1: Ordinal RVA Name
10 # CHECK1-NEXT: 1 0x1008 exportfn1
11 # CHECK1-NEXT: 2 0x1010 exportfn2
13 # RUN: lld-link /out:%t.dll /dll %t.obj /export:exportfn1,@5 \
14 # RUN: /export:exportfn2 /export:mangled
15 # RUN: llvm-objdump -p %t.dll | FileCheck -check-prefix=CHECK2 %s
17 # CHECK2: Export Table:
18 # CHECK2: DLL name: export32.test.tmp.dll
19 # CHECK2: Ordinal RVA Name
25 # CHECK2-NEXT: 5 0x1008 exportfn1
26 # CHECK2-NEXT: 6 0x1010 exportfn2
27 # CHECK2-NEXT: 7 0x1010 exportfn3
28 # CHECK2-NEXT: 8 0x1010 mangled
30 # RUN: lld-link /out:%t.dll /dll %t.obj /export:exportfn1,@5,noname /export:exportfn2
31 # RUN: llvm-objdump -p %t.dll | FileCheck -check-prefix=CHECK3 %s
33 # CHECK3: Export Table:
34 # CHECK3: DLL name: export32.test.tmp.dll
35 # CHECK3: Ordinal RVA Name
41 # CHECK3-NEXT: 5 0x1008
42 # CHECK3-NEXT: 6 0x1010 exportfn2
44 # RUN: lld-link /out:%t.dll /dll %t.obj /export:f1=exportfn1 /export:f2=exportfn2
45 # RUN: llvm-objdump -p %t.dll | FileCheck -check-prefix=CHECK4 %s
47 # CHECK4: Export Table:
48 # CHECK4: DLL name: export32.test.tmp.dll
49 # CHECK4: Ordinal RVA Name
51 # CHECK4-NEXT: 1 0x1010 exportfn3
52 # CHECK4-NEXT: 2 0x1008 f1
53 # CHECK4-NEXT: 3 0x1010 f2
55 # RUN: echo "EXPORTS exportfn1 @3" > %t.def
56 # RUN: echo "fn2=exportfn2 @2" >> %t.def
57 # RUN: lld-link /out:%t.dll /dll %t.obj /def:%t.def
58 # RUN: llvm-objdump -p %t.dll | FileCheck -check-prefix=CHECK5 %s
60 # CHECK5: Export Table:
61 # CHECK5: DLL name: export32.test.tmp.dll
62 # CHECK5: Ordinal RVA Name
65 # CHECK5-NEXT: 2 0x1010 fn2
66 # CHECK5-NEXT: 3 0x1008 exportfn1
67 # CHECK5-NEXT: 4 0x1010 exportfn3
69 # RUN: lld-link /out:%t.dll /dll %t.obj /export:exportfn1 /export:exportfn2 \
70 # RUN: /export:exportfn1 /export:exportfn2,@5 >& %t.log
71 # RUN: FileCheck -check-prefix=CHECK6 %s < %t.log
73 # CHECK6: duplicate /export option: _exportfn2
74 # CHECK6-NOT: duplicate /export option: _exportfn1
78 Machine: IMAGE_FILE_MACHINE_I386
82 Characteristics: [ IMAGE_SCN_CNT_CODE, IMAGE_SCN_MEM_EXECUTE, IMAGE_SCN_MEM_READ ]
84 SectionData: B800000000506800000000680000000050E80000000050E800000000
86 Characteristics: [ IMAGE_SCN_LNK_INFO, IMAGE_SCN_LNK_REMOVE ]
88 SectionData: 2f6578706f72743a5f6578706f7274666e3300 # /export:_exportfn3
93 SimpleType: IMAGE_SYM_TYPE_NULL
94 ComplexType: IMAGE_SYM_DTYPE_NULL
95 StorageClass: IMAGE_SYM_CLASS_STATIC
98 NumberOfRelocations: 4
99 NumberOfLinenumbers: 0
102 - Name: __DllMainCRTStartup@12
105 SimpleType: IMAGE_SYM_TYPE_NULL
106 ComplexType: IMAGE_SYM_DTYPE_NULL
107 StorageClass: IMAGE_SYM_CLASS_EXTERNAL
111 SimpleType: IMAGE_SYM_TYPE_NULL
112 ComplexType: IMAGE_SYM_DTYPE_NULL
113 StorageClass: IMAGE_SYM_CLASS_EXTERNAL
117 SimpleType: IMAGE_SYM_TYPE_NULL
118 ComplexType: IMAGE_SYM_DTYPE_NULL
119 StorageClass: IMAGE_SYM_CLASS_EXTERNAL
123 SimpleType: IMAGE_SYM_TYPE_NULL
124 ComplexType: IMAGE_SYM_DTYPE_NULL
125 StorageClass: IMAGE_SYM_CLASS_EXTERNAL
126 - Name: '?mangled@@YAHXZ'
129 SimpleType: IMAGE_SYM_TYPE_NULL
130 ComplexType: IMAGE_SYM_DTYPE_NULL
131 StorageClass: IMAGE_SYM_CLASS_EXTERNAL