@@ -11,9 +11,23 @@ ARMAP-NEXT: __NULL_IMPORT_DESCRIPTOR in test.dll
1111ARMAP-NEXT: test_NULL_THUNK_DATA in test.dll
1212ARMAP-EMPTY:
1313ARMAP-NEXT: Archive EC map
14+ ARMAP-NEXT: #expname in test.dll
15+ ARMAP-NEXT: #funcexp in test.dll
16+ ARMAP-NEXT: #mangledfunc in test.dll
17+ ARMAP-NEXT: ?test_cpp_func@@$$hYAHPEAX@Z in test.dll
18+ ARMAP-NEXT: ?test_cpp_func@@YAHPEAX@Z in test.dll
19+ ARMAP-NEXT: __imp_?test_cpp_func@@YAHPEAX@Z in test.dll
20+ ARMAP-NEXT: __imp_aux_?test_cpp_func@@YAHPEAX@Z in test.dll
21+ ARMAP-NEXT: __imp_aux_expname in test.dll
22+ ARMAP-NEXT: __imp_aux_funcexp in test.dll
23+ ARMAP-NEXT: __imp_aux_mangledfunc in test.dll
1424ARMAP-NEXT: __imp_dataexp in test.dll
25+ ARMAP-NEXT: __imp_expname in test.dll
1526ARMAP-NEXT: __imp_funcexp in test.dll
27+ ARMAP-NEXT: __imp_mangledfunc in test.dll
28+ ARMAP-NEXT: expname in test.dll
1629ARMAP-NEXT: funcexp in test.dll
30+ ARMAP-NEXT: mangledfunc in test.dll
1731
1832RUN: llvm-readobj test.lib | FileCheck -check-prefix=READOBJ %s
1933
@@ -35,10 +49,42 @@ READOBJ-EMPTY:
3549READOBJ-NEXT: File: test.dll
3650READOBJ-NEXT: Format: COFF-import-file-ARM64EC
3751READOBJ-NEXT: Type: code
38- READOBJ-NEXT: Name type: name
52+ READOBJ-NEXT: Name type: export as
3953READOBJ-NEXT: Export name: funcexp
4054READOBJ-NEXT: Symbol: __imp_funcexp
4155READOBJ-NEXT: Symbol: funcexp
56+ READOBJ-NEXT: Symbol: __imp_aux_funcexp
57+ READOBJ-NEXT: Symbol: #funcexp
58+ READOBJ-EMPTY:
59+ READOBJ-NEXT: File: test.dll
60+ READOBJ-NEXT: Format: COFF-import-file-ARM64EC
61+ READOBJ-NEXT: Type: code
62+ READOBJ-NEXT: Name type: export as
63+ READOBJ-NEXT: Export name: mangledfunc
64+ READOBJ-NEXT: Symbol: __imp_mangledfunc
65+ READOBJ-NEXT: Symbol: mangledfunc
66+ READOBJ-NEXT: Symbol: __imp_aux_mangledfunc
67+ READOBJ-NEXT: Symbol: #mangledfunc
68+ READOBJ-EMPTY:
69+ READOBJ-NEXT: File: test.dll
70+ READOBJ-NEXT: Format: COFF-import-file-ARM64EC
71+ READOBJ-NEXT: Type: code
72+ READOBJ-NEXT: Name type: export as
73+ READOBJ-NEXT: Export name: ?test_cpp_func@@YAHPEAX@Z
74+ READOBJ-NEXT: Symbol: __imp_?test_cpp_func@@YAHPEAX@Z
75+ READOBJ-NEXT: Symbol: ?test_cpp_func@@YAHPEAX@Z
76+ READOBJ-NEXT: Symbol: __imp_aux_?test_cpp_func@@YAHPEAX@Z
77+ READOBJ-NEXT: Symbol: ?test_cpp_func@@$$hYAHPEAX@Z
78+ READOBJ-EMPTY:
79+ READOBJ-NEXT: File: test.dll
80+ READOBJ-NEXT: Format: COFF-import-file-ARM64EC
81+ READOBJ-NEXT: Type: code
82+ READOBJ-NEXT: Name type: export as
83+ READOBJ-NEXT: Export name: expname
84+ READOBJ-NEXT: Symbol: __imp_expname
85+ READOBJ-NEXT: Symbol: expname
86+ READOBJ-NEXT: Symbol: __imp_aux_expname
87+ READOBJ-NEXT: Symbol: #expname
4288READOBJ-EMPTY:
4389READOBJ-NEXT: File: test.dll
4490READOBJ-NEXT: Format: COFF-import-file-ARM64EC
@@ -51,8 +97,101 @@ Creating a new lib containing the existing lib:
5197RUN: llvm-lib -machine:arm64ec test.lib -out:test2.lib
5298RUN: llvm-nm --print-armap test2.lib | FileCheck -check-prefix=ARMAP %s
5399
100+
101+ RUN: llvm-lib -machine:arm64ec -def:exportas.def -out:exportas.lib
102+ RUN: llvm-nm --print-armap exportas.lib | FileCheck -check-prefix=EXPAS-ARMAP %s
103+ RUN: llvm-readobj exportas.lib | FileCheck -check-prefix=EXPAS-READOBJ %s
104+
105+ EXPAS-ARMAP: Archive EC map
106+ EXPAS-ARMAP-NEXT: #func1 in test.dll
107+ EXPAS-ARMAP-NEXT: #func2 in test.dll
108+ EXPAS-ARMAP-NEXT: #func3 in test.dll
109+ EXPAS-ARMAP-NEXT: #func4 in test.dll
110+ EXPAS-ARMAP-NEXT: __imp_aux_func1 in test.dll
111+ EXPAS-ARMAP-NEXT: __imp_aux_func2 in test.dll
112+ EXPAS-ARMAP-NEXT: __imp_aux_func3 in test.dll
113+ EXPAS-ARMAP-NEXT: __imp_aux_func4 in test.dll
114+ EXPAS-ARMAP-NEXT: __imp_data1 in test.dll
115+ EXPAS-ARMAP-NEXT: __imp_data2 in test.dll
116+ EXPAS-ARMAP-NEXT: __imp_func1 in test.dll
117+ EXPAS-ARMAP-NEXT: __imp_func2 in test.dll
118+ EXPAS-ARMAP-NEXT: __imp_func3 in test.dll
119+ EXPAS-ARMAP-NEXT: __imp_func4 in test.dll
120+ EXPAS-ARMAP-NEXT: func1 in test.dll
121+ EXPAS-ARMAP-NEXT: func2 in test.dll
122+ EXPAS-ARMAP-NEXT: func3 in test.dll
123+ EXPAS-ARMAP-NEXT: func4 in test.dll
124+
125+ EXPAS-READOBJ: File: test.dll
126+ EXPAS-READOBJ-NEXT: Format: COFF-import-file-ARM64EC
127+ EXPAS-READOBJ-NEXT: Type: code
128+ EXPAS-READOBJ-NEXT: Name type: export as
129+ EXPAS-READOBJ-NEXT: Export name: func1
130+ EXPAS-READOBJ-NEXT: Symbol: __imp_func1
131+ EXPAS-READOBJ-NEXT: Symbol: func1
132+ EXPAS-READOBJ-NEXT: Symbol: __imp_aux_func1
133+ EXPAS-READOBJ-NEXT: Symbol: #func1
134+ EXPAS-READOBJ-EMPTY:
135+ EXPAS-READOBJ-NEXT: File: test.dll
136+ EXPAS-READOBJ-NEXT: Format: COFF-import-file-ARM64EC
137+ EXPAS-READOBJ-NEXT: Type: code
138+ EXPAS-READOBJ-NEXT: Name type: export as
139+ EXPAS-READOBJ-NEXT: Export name: func2
140+ EXPAS-READOBJ-NEXT: Symbol: __imp_func2
141+ EXPAS-READOBJ-NEXT: Symbol: func2
142+ EXPAS-READOBJ-NEXT: Symbol: __imp_aux_func2
143+ EXPAS-READOBJ-NEXT: Symbol: #func2
144+ EXPAS-READOBJ-EMPTY:
145+ EXPAS-READOBJ-NEXT: File: test.dll
146+ EXPAS-READOBJ-NEXT: Format: COFF-import-file-ARM64EC
147+ EXPAS-READOBJ-NEXT: Type: code
148+ EXPAS-READOBJ-NEXT: Name type: export as
149+ EXPAS-READOBJ-NEXT: Export name: #func3
150+ EXPAS-READOBJ-NEXT: Symbol: __imp_func3
151+ EXPAS-READOBJ-NEXT: Symbol: func3
152+ EXPAS-READOBJ-NEXT: Symbol: __imp_aux_func3
153+ EXPAS-READOBJ-NEXT: Symbol: #func3
154+ EXPAS-READOBJ-EMPTY:
155+ EXPAS-READOBJ-NEXT: File: test.dll
156+ EXPAS-READOBJ-NEXT: Format: COFF-import-file-ARM64EC
157+ EXPAS-READOBJ-NEXT: Type: code
158+ EXPAS-READOBJ-NEXT: Name type: export as
159+ EXPAS-READOBJ-NEXT: Export name: #func4
160+ EXPAS-READOBJ-NEXT: Symbol: __imp_func4
161+ EXPAS-READOBJ-NEXT: Symbol: func4
162+ EXPAS-READOBJ-NEXT: Symbol: __imp_aux_func4
163+ EXPAS-READOBJ-NEXT: Symbol: #func4
164+ EXPAS-READOBJ-EMPTY:
165+ EXPAS-READOBJ-NEXT: File: test.dll
166+ EXPAS-READOBJ-NEXT: Format: COFF-import-file-ARM64EC
167+ EXPAS-READOBJ-NEXT: Type: data
168+ EXPAS-READOBJ-NEXT: Name type: export as
169+ EXPAS-READOBJ-NEXT: Export name: #data1
170+ EXPAS-READOBJ-NEXT: Symbol: __imp_data1
171+ EXPAS-READOBJ-EMPTY:
172+ EXPAS-READOBJ-NEXT: File: test.dll
173+ EXPAS-READOBJ-NEXT: Format: COFF-import-file-ARM64EC
174+ EXPAS-READOBJ-NEXT: Type: data
175+ EXPAS-READOBJ-NEXT: Name type: export as
176+ EXPAS-READOBJ-NEXT: Export name: data2
177+ EXPAS-READOBJ-NEXT: Symbol: __imp_data2
178+
179+
54180#--- test.def
55181LIBRARY test.dll
56182EXPORTS
57183 funcexp
184+ #mangledfunc
185+ ?test_cpp_func@@YAHPEAX@Z
186+ expname=impname
58187 dataexp DATA
188+
189+ #--- exportas.def
190+ LIBRARY test.dll
191+ EXPORTS
192+ #func1 EXPORTAS func1
193+ func2 EXPORTAS func2
194+ func3 EXPORTAS #func3
195+ #func4 EXPORTAS #func4
196+ data1 DATA EXPORTAS #data1
197+ #data2 DATA EXPORTAS data2
0 commit comments