xref: /llvm-project/llvm/test/tools/llvm-lib/exportas.test (revision 8f23464a5d957242c89ca6f33d4379c42519cd81)
1*8f23464aSJacek CabanTest EXPORTAS in importlibs.
2*8f23464aSJacek Caban
3*8f23464aSJacek CabanRUN: split-file %s %t.dir && cd %t.dir
4*8f23464aSJacek CabanRUN: llvm-lib -machine:amd64 -def:test.def -out:test.lib
5*8f23464aSJacek Caban
6*8f23464aSJacek CabanRUN: llvm-nm --print-armap test.lib | FileCheck --check-prefix=ARMAP %s
7*8f23464aSJacek Caban
8*8f23464aSJacek CabanARMAP:      Archive map
9*8f23464aSJacek CabanARMAP-NEXT: __IMPORT_DESCRIPTOR_test in test.dll
10*8f23464aSJacek CabanARMAP-NEXT: __NULL_IMPORT_DESCRIPTOR in test.dll
11*8f23464aSJacek CabanARMAP-NEXT: __imp_func in test.dll
12*8f23464aSJacek CabanARMAP-NEXT: __imp_func2 in test.dll
13*8f23464aSJacek CabanARMAP-NEXT: __imp_func3 in test.dll
14*8f23464aSJacek CabanARMAP-NEXT: __imp_mydata in test.dll
15*8f23464aSJacek CabanARMAP-NEXT: func in test.dll
16*8f23464aSJacek CabanARMAP-NEXT: func2 in test.dll
17*8f23464aSJacek CabanARMAP-NEXT: func3 in test.dll
18*8f23464aSJacek CabanARMAP-NEXT: test_NULL_THUNK_DATA in test.dll
19*8f23464aSJacek Caban
20*8f23464aSJacek CabanRUN: llvm-readobj test.lib | FileCheck --check-prefix=READOBJ %s
21*8f23464aSJacek Caban
22*8f23464aSJacek CabanREADOBJ:      File: test.lib(test.dll)
23*8f23464aSJacek CabanREADOBJ-NEXT: Format: COFF-x86-64
24*8f23464aSJacek CabanREADOBJ-NEXT: Arch: x86_64
25*8f23464aSJacek CabanREADOBJ-NEXT: AddressSize: 64bit
26*8f23464aSJacek CabanREADOBJ-EMPTY:
27*8f23464aSJacek CabanREADOBJ-NEXT: File: test.lib(test.dll)
28*8f23464aSJacek CabanREADOBJ-NEXT: Format: COFF-x86-64
29*8f23464aSJacek CabanREADOBJ-NEXT: Arch: x86_64
30*8f23464aSJacek CabanREADOBJ-NEXT: AddressSize: 64bit
31*8f23464aSJacek CabanREADOBJ-EMPTY:
32*8f23464aSJacek CabanREADOBJ-NEXT: File: test.lib(test.dll)
33*8f23464aSJacek CabanREADOBJ-NEXT: Format: COFF-x86-64
34*8f23464aSJacek CabanREADOBJ-NEXT: Arch: x86_64
35*8f23464aSJacek CabanREADOBJ-NEXT: AddressSize: 64bit
36*8f23464aSJacek CabanREADOBJ-EMPTY:
37*8f23464aSJacek CabanREADOBJ-NEXT: File: test.dll
38*8f23464aSJacek CabanREADOBJ-NEXT: Format: COFF-import-file-x86-64
39*8f23464aSJacek CabanREADOBJ-NEXT: Type: code
40*8f23464aSJacek CabanREADOBJ-NEXT: Name type: export as
41*8f23464aSJacek CabanREADOBJ-NEXT: Export name: expfunc
42*8f23464aSJacek CabanREADOBJ-NEXT: Symbol: __imp_func
43*8f23464aSJacek CabanREADOBJ-NEXT: Symbol: func
44*8f23464aSJacek CabanREADOBJ-EMPTY:
45*8f23464aSJacek CabanREADOBJ-NEXT: File: test.dll
46*8f23464aSJacek CabanREADOBJ-NEXT: Format: COFF-import-file-x86-64
47*8f23464aSJacek CabanREADOBJ-NEXT: Type: data
48*8f23464aSJacek CabanREADOBJ-NEXT: Name type: export as
49*8f23464aSJacek CabanREADOBJ-NEXT: Export name: expdata
50*8f23464aSJacek CabanREADOBJ-NEXT: Symbol: __imp_mydata
51*8f23464aSJacek CabanREADOBJ-EMPTY:
52*8f23464aSJacek CabanREADOBJ-NEXT: File: test.dll
53*8f23464aSJacek CabanREADOBJ-NEXT: Format: COFF-import-file-x86-64
54*8f23464aSJacek CabanREADOBJ-NEXT: Type: code
55*8f23464aSJacek CabanREADOBJ-NEXT: Name type: export as
56*8f23464aSJacek CabanREADOBJ-NEXT: Export name: expfunc2
57*8f23464aSJacek CabanREADOBJ-NEXT: Symbol: __imp_func2
58*8f23464aSJacek CabanREADOBJ-NEXT: Symbol: func2
59*8f23464aSJacek CabanREADOBJ-EMPTY:
60*8f23464aSJacek CabanREADOBJ-NEXT: File: test.dll
61*8f23464aSJacek CabanREADOBJ-NEXT: Format: COFF-import-file-x86-64
62*8f23464aSJacek CabanREADOBJ-NEXT: Type: code
63*8f23464aSJacek CabanREADOBJ-NEXT: Name type: export as
64*8f23464aSJacek CabanREADOBJ-NEXT: Export name: expfunc3
65*8f23464aSJacek CabanREADOBJ-NEXT: Symbol: __imp_func3
66*8f23464aSJacek CabanREADOBJ-NEXT: Symbol: func3
67*8f23464aSJacek Caban
68*8f23464aSJacek Caban
69*8f23464aSJacek CabanEXPORTAS must be at the end of entry declaration.
70*8f23464aSJacek CabanRUN: not llvm-lib -machine:amd64 -def:test2.def -out:test2.lib 2>&1 \
71*8f23464aSJacek CabanRUN:              | FileCheck --check-prefix=ERROR %s
72*8f23464aSJacek CabanRUN: not llvm-lib -machine:amd64 -def:test3.def -out:test3.lib 2>&1 \
73*8f23464aSJacek CabanRUN:              | FileCheck --check-prefix=ERROR %s
74*8f23464aSJacek CabanERROR: Invalid data was encountered while parsing the file
75*8f23464aSJacek Caban
76*8f23464aSJacek Caban
77*8f23464aSJacek Caban#--- test.def
78*8f23464aSJacek CabanLIBRARY test.dll
79*8f23464aSJacek CabanEXPORTS
80*8f23464aSJacek Caban        func EXPORTAS expfunc
81*8f23464aSJacek Caban        mydata DATA EXPORTAS expdata
82*8f23464aSJacek Caban        func2 = myfunc2 EXPORTAS expfunc2
83*8f23464aSJacek Caban        func3 = otherdll.otherfunc3 EXPORTAS expfunc3
84*8f23464aSJacek Caban
85*8f23464aSJacek Caban#--- test2.def
86*8f23464aSJacek CabanLIBRARY test.dll
87*8f23464aSJacek CabanEXPORTS
88*8f23464aSJacek Caban        func EXPORTAS expfunc
89*8f23464aSJacek Caban        mydata EXPORTAS expdata DATA
90*8f23464aSJacek Caban
91*8f23464aSJacek Caban#--- test3.def
92*8f23464aSJacek CabanLIBRARY test.dll
93*8f23464aSJacek CabanEXPORTS
94*8f23464aSJacek Caban        mydata EXPORTAS
95