diff options
Diffstat (limited to 'test/COFF/export.test')
| -rw-r--r-- | test/COFF/export.test | 82 |
1 files changed, 82 insertions, 0 deletions
diff --git a/test/COFF/export.test b/test/COFF/export.test new file mode 100644 index 000000000000..a3ea0ab9bca2 --- /dev/null +++ b/test/COFF/export.test @@ -0,0 +1,82 @@ +# RUN: yaml2obj < %p/Inputs/export.yaml > %t.obj +# +# RUN: lld-link /out:%t.dll /dll %t.obj /export:exportfn1 /export:exportfn2 +# RUN: llvm-objdump -p %t.dll | FileCheck -check-prefix=CHECK1 %s +# REQUIRES: winlib + +CHECK1: Export Table: +CHECK1: DLL name: export.test.tmp.dll +CHECK1: Ordinal RVA Name +CHECK1-NEXT: 0 0 +CHECK1-NEXT: 1 0x1008 exportfn1 +CHECK1-NEXT: 2 0x1010 exportfn2 + +# RUN: lld-link /out:%t.dll /dll %t.obj /export:exportfn1,@5 /export:exportfn2 +# RUN: llvm-objdump -p %t.dll | FileCheck -check-prefix=CHECK2 %s + +CHECK2: Export Table: +CHECK2: DLL name: export.test.tmp.dll +CHECK2: Ordinal RVA Name +CHECK2-NEXT: 0 0 +CHECK2-NEXT: 1 0 +CHECK2-NEXT: 2 0 +CHECK2-NEXT: 3 0 +CHECK2-NEXT: 4 0 +CHECK2-NEXT: 5 0x1008 exportfn1 +CHECK2-NEXT: 6 0x1010 exportfn2 +CHECK2-NEXT: 7 0x1010 exportfn3 + +# RUN: lld-link /out:%t.dll /dll %t.obj /export:exportfn1,@5,noname /export:exportfn2 +# RUN: llvm-objdump -p %t.dll | FileCheck -check-prefix=CHECK3 %s + +CHECK3: Export Table: +CHECK3: DLL name: export.test.tmp.dll +CHECK3: Ordinal RVA Name +CHECK3-NEXT: 0 0 +CHECK3-NEXT: 1 0 +CHECK3-NEXT: 2 0 +CHECK3-NEXT: 3 0 +CHECK3-NEXT: 4 0 +CHECK3-NEXT: 5 0x1008 +CHECK3-NEXT: 6 0x1010 exportfn2 + +# RUN: lld-link /out:%t.dll /dll %t.obj /export:f1=exportfn1 /export:f2=exportfn2 +# RUN: llvm-objdump -p %t.dll | FileCheck -check-prefix=CHECK4 %s + +CHECK4: Export Table: +CHECK4: DLL name: export.test.tmp.dll +CHECK4: Ordinal RVA Name +CHECK4-NEXT: 0 0 +CHECK4-NEXT: 1 0x1010 exportfn3 +CHECK4-NEXT: 2 0x1008 f1 +CHECK4-NEXT: 3 0x1010 f2 + +# RUN: echo "EXPORTS exportfn1 @3" > %t.def +# RUN: echo "fn2=exportfn2 @2" >> %t.def +# RUN: lld-link /out:%t.dll /dll %t.obj /def:%t.def +# RUN: llvm-objdump -p %t.dll | FileCheck -check-prefix=CHECK5 %s + +CHECK5: Export Table: +CHECK5: DLL name: export.test.tmp.dll +CHECK5: Ordinal RVA Name +CHECK5-NEXT: 0 0 +CHECK5-NEXT: 1 0 +CHECK5-NEXT: 2 0x1010 fn2 +CHECK5-NEXT: 3 0x1008 exportfn1 +CHECK5-NEXT: 4 0x1010 exportfn3 + +# RUN: lld-link /out:%t.DLL /dll %t.obj /export:exportfn1 /export:exportfn2 \ +# RUN: /export:exportfn1 /export:exportfn2,@5 >& %t.log +# RUN: FileCheck -check-prefix=CHECK6 %s < %t.log + +CHECK6: duplicate /export option: exportfn2 +CHECK6-NOT: duplicate /export option: exportfn1 + +# RUN: llvm-nm -M %t.lib | FileCheck --check-prefix=SYMTAB %s + +SYMTAB: __imp_exportfn1 in export.test.tmp.DLL +SYMTAB: exportfn1 in export.test.tmp.DLL +SYMTAB: __imp_exportfn2 in export.test.tmp.DLL +SYMTAB: exportfn2 in export.test.tmp.DLL +SYMTAB: __imp_exportfn3 in export.test.tmp.DLL +SYMTAB: exportfn3 in export.test.tmp.DLL |
