diff options
Diffstat (limited to 'lld/COFF')
-rw-r--r-- | lld/COFF/Driver.cpp | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/lld/COFF/Driver.cpp b/lld/COFF/Driver.cpp index bde1a6c56001..b07cb995249c 100644 --- a/lld/COFF/Driver.cpp +++ b/lld/COFF/Driver.cpp @@ -580,6 +580,16 @@ bool LinkerDriver::link(llvm::ArrayRef<const char *> ArgsArr) { break; } + // Windows specific -- if entry point is not found, + // search for its mangled names. + if (!Config->EntryName.empty() && !Symtab.find(Config->EntryName)) { + StringRef Name; + Symbol *Sym; + std::tie(Name, Sym) = Symtab.findMangled(Config->EntryName); + if (Sym) + Symtab.rename(Config->EntryName, Name); + } + // Windows specific -- resolve dllexported symbols. for (Export &E : Config->Exports) { StringRef Name; |