diff options
author | Rui Ueyama <ruiu@google.com> | 2015-06-29 17:27:10 +0300 |
---|---|---|
committer | Rui Ueyama <ruiu@google.com> | 2015-06-29 17:27:10 +0300 |
commit | 6b79ed128ad37b807bfab76714bb93c4f876fff4 (patch) | |
tree | 17ffdf88482b2f149cde2c216654369a5e566686 /lld/COFF | |
parent | fad30cf194cd642b3561c31c9160aa25d25a096d (diff) |
COFF: Fix /export.
Mangled dllexported symbols may be defined in a library.
If that's the case, we have to read a member file from the library.
llvm-svn: 240947
Diffstat (limited to 'lld/COFF')
-rw-r--r-- | lld/COFF/SymbolTable.cpp | 4 |
1 files changed, 4 insertions, 0 deletions
diff --git a/lld/COFF/SymbolTable.cpp b/lld/COFF/SymbolTable.cpp index 4b6555210d1a..82bd17a068a4 100644 --- a/lld/COFF/SymbolTable.cpp +++ b/lld/COFF/SymbolTable.cpp @@ -209,6 +209,10 @@ std::pair<StringRef, Symbol *> SymbolTable::findMangled(StringRef S) { Symbol *Sym = I.second; if (!Name.startswith(Prefix)) continue; + if (auto *B = dyn_cast<Lazy>(Sym->Body)) { + addMemberFile(B); + run(); + } if (isa<Defined>(Sym->Body)) return std::make_pair(Name, Sym); } |