llvm: add llvm-dlltool support to the archiver

A PE COFF spec compliant import library generator.
Intended to be used with mingw-w64.

Supports:
PE COFF spec (section 8, Import Library Format)
PE COFF spec (Aux Format 3: Weak Externals)

Reviewed By: ruiu

Differential Revision: https://reviews.llvm.org/D29892

llvm-svn: 308329
This commit is contained in:
Martell Malone
2017-07-18 17:39:11 +00:00
parent aa61922157
commit afe8549269
17 changed files with 413 additions and 26 deletions

View File

@@ -227,8 +227,11 @@ uint32_t COFFObjectFile::getSymbolFlags(DataRefImpl Ref) const {
if (Symb.isExternal() || Symb.isWeakExternal())
Result |= SymbolRef::SF_Global;
if (Symb.isWeakExternal())
if (Symb.isWeakExternal()) {
Result |= SymbolRef::SF_Weak;
// We use indirect to allow the archiver to write weak externs
Result |= SymbolRef::SF_Indirect;
}
if (Symb.getSectionNumber() == COFF::IMAGE_SYM_ABSOLUTE)
Result |= SymbolRef::SF_Absolute;