Instead of demangling symbol name by hand, use original name, which was
authorDevang Patel <dpatel@apple.com>
Wed, 6 Sep 2006 00:45:52 +0000 (00:45 +0000)
committerDevang Patel <dpatel@apple.com>
Wed, 6 Sep 2006 00:45:52 +0000 (00:45 +0000)
used to mangle symbol name, directly.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@30124 91177308-0d34-0410-b5e6-96231b3b80d8

tools/lto/lto.cpp

index df9634e5a2a444eb3938391f5e346ffa213000b3..e49364e6320f82d767d281d4c682c62806cb858a 100644 (file)
@@ -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/");