diff options
-rw-r--r-- | tools/lto/lto.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/tools/lto/lto.cpp b/tools/lto/lto.cpp index df9634e5a2..e49364e632 100644 --- a/tools/lto/lto.cpp +++ b/tools/lto/lto.cpp @@ -147,6 +147,7 @@ LinkTimeOptimizer::readLLVMObjectFile(const std::string &InputFilename, LLVMSymbol *newSymbol = new LLVMSymbol(lt, v, v->getName(), mangler.getValueName(v)); symbols[newSymbol->getMangledName()] = newSymbol; + allSymbols[newSymbol->getMangledName()] = newSymbol; for (unsigned count = 0, total = v->getNumOperands(); count != total; ++count) @@ -291,8 +292,9 @@ LinkTimeOptimizer::optimizeModules(const std::string &OutputFilename, // seen by linker. for (unsigned i = 0, e = exportList.size(); i != e; ++i) { const char *name = exportList[i]; - if (strlen(name) > 2 && name[0] == '_') - exportList[i] = &name[1]; + NameToSymbolMap::iterator itr = allSymbols.find(name); + if (itr != allSymbols.end()) + exportList[i] = allSymbols[name]->getName(); } sys::Path tmpAsmFilePath("/tmp/"); |