]> CyberLeo.Net >> Repos - FreeBSD/FreeBSD.git/blob - test/COFF/export32.test
Vendor import of lld trunk r290819:
[FreeBSD/FreeBSD.git] / test / COFF / export32.test
1 # RUN: yaml2obj < %s > %t.obj
2 #
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
5
6 # CHECK1:      Export Table:
7 # CHECK1:      DLL name: export32.test.tmp.dll
8 # CHECK1:      Ordinal      RVA  Name
9 # CHECK1-NEXT:       0        0
10 # CHECK1-NEXT:       1   0x1008  exportfn1
11 # CHECK1-NEXT:       2   0x1010  exportfn2
12
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
16
17 # CHECK2:      Export Table:
18 # CHECK2:      DLL name: export32.test.tmp.dll
19 # CHECK2:      Ordinal      RVA  Name
20 # CHECK2-NEXT:       0        0
21 # CHECK2-NEXT:       1        0
22 # CHECK2-NEXT:       2        0
23 # CHECK2-NEXT:       3        0
24 # CHECK2-NEXT:       4        0
25 # CHECK2-NEXT:       5   0x1008  exportfn1
26 # CHECK2-NEXT:       6   0x1010  exportfn2
27 # CHECK2-NEXT:       7   0x1010  exportfn3
28 # CHECK2-NEXT:       8   0x1010  mangled
29
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
32
33 # CHECK3:      Export Table:
34 # CHECK3:      DLL name: export32.test.tmp.dll
35 # CHECK3:      Ordinal      RVA  Name
36 # CHECK3-NEXT:       0        0
37 # CHECK3-NEXT:       1        0
38 # CHECK3-NEXT:       2        0
39 # CHECK3-NEXT:       3        0
40 # CHECK3-NEXT:       4        0
41 # CHECK3-NEXT:       5   0x1008
42 # CHECK3-NEXT:       6   0x1010  exportfn2
43
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
46
47 # CHECK4:      Export Table:
48 # CHECK4:      DLL name: export32.test.tmp.dll
49 # CHECK4:      Ordinal      RVA  Name
50 # CHECK4-NEXT:       0        0
51 # CHECK4-NEXT:       1   0x1010  exportfn3
52 # CHECK4-NEXT:       2   0x1008  f1
53 # CHECK4-NEXT:       3   0x1010  f2
54
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
59
60 # CHECK5:      Export Table:
61 # CHECK5:      DLL name: export32.test.tmp.dll
62 # CHECK5:      Ordinal      RVA  Name
63 # CHECK5-NEXT:       0        0
64 # CHECK5-NEXT:       1        0
65 # CHECK5-NEXT:       2   0x1010  fn2
66 # CHECK5-NEXT:       3   0x1008  exportfn1
67 # CHECK5-NEXT:       4   0x1010  exportfn3
68
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
72
73 # CHECK6:     duplicate /export option: _exportfn2
74 # CHECK6-NOT: duplicate /export option: _exportfn1
75
76 --- !COFF
77 header:
78   Machine:         IMAGE_FILE_MACHINE_I386
79   Characteristics: []
80 sections:
81   - Name:            .text
82     Characteristics: [ IMAGE_SCN_CNT_CODE, IMAGE_SCN_MEM_EXECUTE, IMAGE_SCN_MEM_READ ]
83     Alignment:       4
84     SectionData:     B800000000506800000000680000000050E80000000050E800000000
85   - Name:            .drectve
86     Characteristics: [ IMAGE_SCN_LNK_INFO, IMAGE_SCN_LNK_REMOVE ]
87     Alignment:       1
88     SectionData:     2f6578706f72743a5f6578706f7274666e3300  # /export:_exportfn3
89 symbols:
90   - Name:            .text
91     Value:           0
92     SectionNumber:   1
93     SimpleType:      IMAGE_SYM_TYPE_NULL
94     ComplexType:     IMAGE_SYM_DTYPE_NULL
95     StorageClass:    IMAGE_SYM_CLASS_STATIC
96     SectionDefinition:
97       Length:          28
98       NumberOfRelocations: 4
99       NumberOfLinenumbers: 0
100       CheckSum:        0
101       Number:          0
102   - Name:            __DllMainCRTStartup@12
103     Value:           0
104     SectionNumber:   1
105     SimpleType:      IMAGE_SYM_TYPE_NULL
106     ComplexType:     IMAGE_SYM_DTYPE_NULL
107     StorageClass:    IMAGE_SYM_CLASS_EXTERNAL
108   - Name:            _exportfn1
109     Value:           8
110     SectionNumber:   1
111     SimpleType:      IMAGE_SYM_TYPE_NULL
112     ComplexType:     IMAGE_SYM_DTYPE_NULL
113     StorageClass:    IMAGE_SYM_CLASS_EXTERNAL
114   - Name:            _exportfn2@4
115     Value:           16
116     SectionNumber:   1
117     SimpleType:      IMAGE_SYM_TYPE_NULL
118     ComplexType:     IMAGE_SYM_DTYPE_NULL
119     StorageClass:    IMAGE_SYM_CLASS_EXTERNAL
120   - Name:            _exportfn3
121     Value:           16
122     SectionNumber:   1
123     SimpleType:      IMAGE_SYM_TYPE_NULL
124     ComplexType:     IMAGE_SYM_DTYPE_NULL
125     StorageClass:    IMAGE_SYM_CLASS_EXTERNAL
126   - Name:            '?mangled@@YAHXZ'
127     Value:           16
128     SectionNumber:   1
129     SimpleType:      IMAGE_SYM_TYPE_NULL
130     ComplexType:     IMAGE_SYM_DTYPE_NULL
131     StorageClass:    IMAGE_SYM_CLASS_EXTERNAL
132 ...