forked from OSchip/llvm-project
COFF: Make import libraries compatible with MSVC link.
I have totally no idea why, but MSVC linker is sensitive about file names of archive members. If we do not make import library file names to the same as the DLL name, MSVC link *crashes* when it is processing the library file. This patch is to set the same name. llvm-svn: 246535
This commit is contained in:
parent
6307849666
commit
dfff2542b8
|
@ -572,16 +572,10 @@ public:
|
||||||
memcpy(P, DLLName.data(), DLLName.size());
|
memcpy(P, DLLName.data(), DLLName.size());
|
||||||
|
|
||||||
object::Archive::Child C(Parent, Buf);
|
object::Archive::Child C(Parent, Buf);
|
||||||
return NewArchiveIterator(C, nextFilename());
|
return NewArchiveIterator(C, DLLName);
|
||||||
}
|
}
|
||||||
|
|
||||||
private:
|
private:
|
||||||
char *nextFilename() {
|
|
||||||
char *P = Alloc.Allocate<char>(16);
|
|
||||||
sprintf(P, "%d.obj", Idx++);
|
|
||||||
return P;
|
|
||||||
}
|
|
||||||
|
|
||||||
BumpPtrAllocator Alloc;
|
BumpPtrAllocator Alloc;
|
||||||
object::Archive *Parent;
|
object::Archive *Parent;
|
||||||
StringRef DLLName;
|
StringRef DLLName;
|
||||||
|
|
|
@ -74,9 +74,9 @@ CHECK6-NOT: duplicate /export option: exportfn1
|
||||||
|
|
||||||
# RUN: llvm-nm -M %t.lib | FileCheck --check-prefix=SYMTAB %s
|
# RUN: llvm-nm -M %t.lib | FileCheck --check-prefix=SYMTAB %s
|
||||||
|
|
||||||
SYMTAB: __imp_exportfn1 in 1.obj
|
SYMTAB: __imp_exportfn1 in export.test.tmp.dll
|
||||||
SYMTAB: exportfn1 in 1.obj
|
SYMTAB: exportfn1 in export.test.tmp.dll
|
||||||
SYMTAB: __imp_exportfn2 in 2.obj
|
SYMTAB: __imp_exportfn2 in export.test.tmp.dll
|
||||||
SYMTAB: exportfn2 in 2.obj
|
SYMTAB: exportfn2 in export.test.tmp.dll
|
||||||
SYMTAB: __imp_exportfn3 in 3.obj
|
SYMTAB: __imp_exportfn3 in export.test.tmp.dll
|
||||||
SYMTAB: exportfn3 in 3.obj
|
SYMTAB: exportfn3 in export.test.tmp.dll
|
||||||
|
|
Loading…
Reference in New Issue