summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lld/test/COFF/dllexport.s60
1 files changed, 60 insertions, 0 deletions
diff --git a/lld/test/COFF/dllexport.s b/lld/test/COFF/dllexport.s
new file mode 100644
index 00000000000..27cbd235a53
--- /dev/null
+++ b/lld/test/COFF/dllexport.s
@@ -0,0 +1,60 @@
+# REQUIRES: x86
+# RUN: llvm-mc -filetype=obj -triple=i686-windows-msvc %s -o %t.obj
+
+# RUN: lld-link -entry:dllmain -dll %t.obj -out:%t.dll -implib:%t.lib
+# RUN: llvm-readobj %t.lib | FileCheck -check-prefix DECORATED-IMPLIB %s
+# RUN: llvm-readobj -coff-exports %t.dll | FileCheck -check-prefix DECORATED-EXPORTS %s
+
+# DECORATED-IMPLIB: Name type: name
+# DECORATED-IMPLIB-NEXT: __imp_@fastcall@8
+# DECORATED-IMPLIB-NEXT: @fastcall@8
+# DECORATED-IMPLIB: Name type: noprefix
+# DECORATED-IMPLIB-NEXT: __imp___underscored
+# DECORATED-IMPLIB-NEXT: __underscored
+# TODO: To match link.exe, this one should also be Name type: name.
+# DECORATED-IMPLIB: Name type: noprefix
+# DECORATED-IMPLIB-NEXT: __imp__stdcall@8
+# DECORATED-IMPLIB-NEXT: _stdcall@8
+# DECORATED-IMPLIB: Name type: name
+# DECORATED-IMPLIB-NEXT: __imp_vectorcall@@8
+# DECORATED-IMPLIB-NEXT: vectorcall@@8
+
+# DECORATED-EXPORTS: Name: @fastcall@8
+# DECORATED-EXPORTS: Name: _underscored
+# TODO: To match link.exe, this one should actually be _stdcall@8
+# DECORATED-EXPORTS: Name: stdcall@8
+# DECORATED-EXPORTS: Name: vectorcall@@8
+
+ .def _stdcall@8;
+ .scl 2;
+ .type 32;
+ .endef
+ .globl _stdcall@8
+ .globl @fastcall@8
+ .globl vectorcall@@8
+ .globl __underscored
+_stdcall@8:
+ movl 8(%esp), %eax
+ addl 4(%esp), %eax
+ retl $8
+@fastcall@8:
+ movl 8(%esp), %eax
+ addl 4(%esp), %eax
+ retl $8
+vectorcall@@8:
+ movl 8(%esp), %eax
+ addl 4(%esp), %eax
+ retl $8
+__underscored:
+ ret
+
+ .def _dllmain;
+ .scl 2;
+ .type 32;
+ .endef
+ .globl _dllmain
+_dllmain:
+ retl
+
+.section .drectve
+.ascii "-export:__underscored -export:_stdcall@8 -export:@fastcall@8 -export:vectorcall@@8"
OpenPOWER on IntegriCloud