brintos

brintos / llvm-project-archived public Read only

0
0
Text · 4.2 KiB · cd0a6f5 Raw
121 lines · plain
1# REQUIRES: x862 3# RUN: llvm-mc -triple=i686-windows-gnu %s -filetype=obj -o %t.obj4 5# RUN: lld-link -lldmingw -dll -out:%t.dll -entry:DllMainCRTStartup@12 %t.obj -implib:%t.lib6# RUN: llvm-readobj --coff-exports %t.dll | grep Name: | FileCheck %s7# RUN: llvm-readobj --coff-exports %t.dll | FileCheck %s --check-prefix=CHECK-RVA8# RUN: llvm-readobj %t.lib | FileCheck -check-prefix=IMPLIB %s9 10# CHECK:      Name:11# CHECK-SAME:       comdatFunc12# CHECK-NEXT: Name: dataSym13# CHECK-NEXT: Name: foobar14# CHECK-EMPTY:15 16# CHECK-RVA: Name: comdatFunc17# CHECK-RVA-NEXT: RVA: 0x100318# CHECK-RVA: Name: dataSym19# CHECK-RVA-NEXT: RVA: 0x300020# CHECK-RVA: Name: foobar21# CHECK-RVA-NEXT: RVA: 0x100122 23# IMPLIB: Symbol: __imp__comdatFunc24# IMPLIB: Symbol: _comdatFunc25# IMPLIB: Symbol: __imp__dataSym26# IMPLIB-NOT: Symbol: _dataSym27# IMPLIB: Symbol: __imp__foobar28# IMPLIB: Symbol: _foobar29 30.global _foobar31.global _DllMainCRTStartup@1232.global _dataSym33.global _unexported34.global __imp__unexported35.global .refptr._foobar36.global _comdatFunc37.text38_DllMainCRTStartup@12:39  ret40_foobar:41  ret42_unexported:43  ret44.section .text$_comdatFunc,"xr",one_only,_comdatFunc45_comdatFunc:46  ret47.data48_dataSym:49  .int 450__imp__unexported:51  .int _unexported52.refptr._foobar:53  .int _foobar54 55# Test specifying -export-all-symbols, on an object file that contains56# dllexport directive for some of the symbols.57 58# RUN: yaml2obj %p/Inputs/export.yaml -o %t.obj59#60# RUN: lld-link -safeseh:no -out:%t.dll -dll %t.obj -lldmingw -export-all-symbols -output-def:%t.def61# RUN: llvm-readobj --coff-exports %t.dll | FileCheck -check-prefix=CHECK2 %s62# RUN: cat %t.def | FileCheck -check-prefix=CHECK2-DEF %s63 64# RUN: lld-link -safeseh:no -out:%t.exe %t.obj -lldmingw -export-all-symbols -output-def:%t.def -entry:_DllMainCRTStartup65# RUN: llvm-readobj --coff-exports %t.exe | FileCheck -check-prefix=CHECK2 %s66# RUN: cat %t.def | FileCheck -check-prefix=CHECK2-DEF %s67 68# Note, this will actually export _DllMainCRTStartup as well, since69# it uses the standard spelling in this object file, not the MinGW one.70 71# CHECK2: Name: exportfn172# CHECK2: Name: exportfn273# CHECK2: Name: exportfn374 75# CHECK2-DEF: EXPORTS76# CHECK2-DEF: exportfn1 @377# CHECK2-DEF: exportfn2 @478# CHECK2-DEF: exportfn3 @579 80# Test ignoring certain object files and libs.81 82# RUN: echo -e ".global foobar\n.global DllMainCRTStartup\n.text\nDllMainCRTStartup:\nret\nfoobar:\ncall mingwfunc\ncall crtfunc\nret\n" > %t.main.s83# RUN: llvm-mc -triple=x86_64-windows-gnu %t.main.s -filetype=obj -o %t.main.obj84# RUN: mkdir -p %t.dir/libs85# RUN: echo -e ".global mingwfunc\n.text\nmingwfunc:\nret\n" > %t.dir/libs/mingwfunc.s86# RUN: llvm-mc -triple=x86_64-windows-gnu %t.dir/libs/mingwfunc.s -filetype=obj -o %t.dir/libs/mingwfunc.o87# RUN: rm -f %t.dir/libs/libmingwex.a88# RUN: llvm-ar rcs %t.dir/libs/libmingwex.a %t.dir/libs/mingwfunc.o89# RUN: echo -e ".global crtfunc\n.text\ncrtfunc:\nret\n" > %t.dir/libs/crtfunc.s90# RUN: llvm-mc -triple=x86_64-windows-gnu %t.dir/libs/crtfunc.s -filetype=obj -o %t.dir/libs/crt2.o91# RUN: lld-link -safeseh:no -out:%t.dll -dll -entry:DllMainCRTStartup %t.main.obj -lldmingw %t.dir/libs/crt2.o %t.dir/libs/libmingwex.a -output-def:%t.def92# RUN: echo "EOF" >> %t.def93# RUN: cat %t.def | FileCheck -check-prefix=CHECK-EXCLUDE %s94 95# CHECK-EXCLUDE: EXPORTS96# CHECK-EXCLUDE-NEXT: foobar @197# CHECK-EXCLUDE-NEXT: EOF98 99# Test that libraries included with -wholearchive: are autoexported, even if100# they are in a library that otherwise normally would be excluded.101 102# RUN: lld-link -safeseh:no -out:%t.dll -dll -entry:DllMainCRTStartup %t.main.obj -lldmingw %t.dir/libs/crt2.o -wholearchive:%t.dir/libs/libmingwex.a -output-def:%t.def103# RUN: echo "EOF" >> %t.def104# RUN: cat %t.def | FileCheck -check-prefix=CHECK-WHOLEARCHIVE %s105 106# CHECK-WHOLEARCHIVE: EXPORTS107# CHECK-WHOLEARCHIVE-NEXT: foobar @1108# CHECK-WHOLEARCHIVE-NEXT: mingwfunc @2109# CHECK-WHOLEARCHIVE-NEXT: EOF110 111# Test that we handle import libraries together with -opt:noref.112 113# RUN: yaml2obj %p/Inputs/hello32.yaml -o %t.obj114# RUN: lld-link -lldmingw -dll -out:%t.dll -entry:main@0 %t.obj -implib:%t.lib -opt:noref %p/Inputs/std32.lib -output-def:%t.def115# RUN: echo "EOF" >> %t.def116# RUN: cat %t.def | FileCheck -check-prefix=CHECK-IMPLIB %s117 118# CHECK-IMPLIB: EXPORTS119# CHECK-IMPLIB-NEXT: main@0 @1120# CHECK-IMPLIB-NEXT: EOF121