mirror of
https://github.com/capstone-engine/llvm-capstone.git
synced 2025-03-03 08:02:41 +00:00
[COFF] Require an explicit -implib option for creating implibs in mingw mode
GNU ld doesn't produce implibs unless explicitly requested. Differential Revision: https://reviews.llvm.org/D66367 llvm-svn: 369363
This commit is contained in:
parent
b8dcc19389
commit
6540e55067
@ -1841,10 +1841,12 @@ void LinkerDriver::link(ArrayRef<const char *> argsArr) {
|
||||
}
|
||||
|
||||
// Windows specific -- when we are creating a .dll file, we also
|
||||
// need to create a .lib file.
|
||||
// need to create a .lib file. In MinGW mode, we only do that when the
|
||||
// -implib option is given explicitly, for compatibility with GNU ld.
|
||||
if (!config->exports.empty() || config->dll) {
|
||||
fixupExports();
|
||||
createImportLibrary(/*asLib=*/false);
|
||||
if (!config->mingw || !config->implib.empty())
|
||||
createImportLibrary(/*asLib=*/false);
|
||||
assignExportOrdinals();
|
||||
}
|
||||
|
||||
|
20
lld/test/COFF/implib-name-mingw.test
Normal file
20
lld/test/COFF/implib-name-mingw.test
Normal file
@ -0,0 +1,20 @@
|
||||
REQUIRES: x86
|
||||
RUN: mkdir -p %t-out
|
||||
RUN: llvm-mc -triple x86_64-windows-gnu -filetype obj -o %t-out/object.obj %S/Inputs/object.s
|
||||
|
||||
Check that linking without an explicit -implib doesn't produce any implib.
|
||||
|
||||
First test that linking without -lldmingw does produce an implib, but when
|
||||
adding -lldmingw, it no longer is produced. And when it is explicitly named,
|
||||
it is created.
|
||||
|
||||
RUN: rm -f %t-out/library.lib
|
||||
RUN: lld-link -dll -machine:x64 -def:%S/Inputs/named.def -out:%t-out/library.dll %t-out/object.obj -entry:f -subsystem:console
|
||||
RUN: test -f %t-out/library.lib
|
||||
|
||||
RUN: rm -f %t-out/library.lib
|
||||
RUN: lld-link -lldmingw -dll -machine:x64 -def:%S/Inputs/named.def -out:%t-out/library.dll %t-out/object.obj -entry:f -subsystem:console
|
||||
RUN: not test -f %t-out/library.lib
|
||||
|
||||
RUN: lld-link -lldmingw -dll -machine:x64 -def:%S/Inputs/named.def -out:%t-out/library.dll %t-out/object.obj -entry:f -subsystem:console -implib:%t-out/library.lib
|
||||
RUN: test -f %t-out/library.lib
|
Loading…
x
Reference in New Issue
Block a user