llvm-nm must print the alias symbols.
authorLauro Ramos Venancio <lauro.venancio@gmail.com>
Wed, 27 Jun 2007 22:08:09 +0000 (22:08 +0000)
committerLauro Ramos Venancio <lauro.venancio@gmail.com>
Wed, 27 Jun 2007 22:08:09 +0000 (22:08 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@37766 91177308-0d34-0410-b5e6-96231b3b80d8

tools/llvm-nm/llvm-nm.cpp

index e0013999e6eed041fba0b73e2f7b10233616f182..a1890a9d265d3da9eaa7c728103f19b26370bc6e 100644 (file)
@@ -68,14 +68,19 @@ namespace {
 }
 
 static char TypeCharForSymbol(GlobalValue &GV) {
-  if (GV.isDeclaration())                                     return 'U';
+  if (GV.isDeclaration())                                  return 'U';
   if (GV.hasLinkOnceLinkage())                             return 'C';
   if (GV.hasWeakLinkage())                                 return 'W';
-  if (isa<Function>(GV) && GV.hasInternalLinkage())       return 't';
+  if (isa<Function>(GV) && GV.hasInternalLinkage())        return 't';
   if (isa<Function>(GV))                                   return 'T';
-  if (isa<GlobalVariable>(GV) && GV.hasInternalLinkage()) return 'd';
+  if (isa<GlobalVariable>(GV) && GV.hasInternalLinkage())  return 'd';
   if (isa<GlobalVariable>(GV))                             return 'D';
-                                                            return '?';
+  if (const GlobalAlias *GA = dyn_cast<GlobalAlias>(&GV)) {
+    const GlobalValue *AliasedGV = GA->getAliasedGlobal();
+    if (isa<Function>(AliasedGV))                          return 'T';
+    if (isa<GlobalVariable>(AliasedGV))                    return 'D';
+  }
+                                                           return '?';
 }
 
 static void DumpSymbolNameForGlobalValue(GlobalValue &GV) {
@@ -115,7 +120,10 @@ static void DumpSymbolNamesFromModule(Module *M) {
               << "         Size   Line  Section\n";
   }
   std::for_each (M->begin (), M->end (), DumpSymbolNameForGlobalValue);
-  std::for_each (M->global_begin (), M->global_end (), DumpSymbolNameForGlobalValue);
+  std::for_each (M->global_begin (), M->global_end (),
+                 DumpSymbolNameForGlobalValue);
+  std::for_each (M->alias_begin (), M->alias_end (),
+                 DumpSymbolNameForGlobalValue);
 }
 
 static void DumpSymbolNamesFromFile(std::string &Filename) {