[llvm-commits] CVS: llvm/tools/llvm-nm/llvm-nm.cpp

Brian Gaeke gaeke at cs.uiuc.edu
Sun Nov 16 17:35:01 PST 2003


Changes in directory llvm/tools/llvm-nm:

llvm-nm.cpp updated: 1.7 -> 1.8

---
Log message:

Include Support/FileUtilities.h.
Print module identifier in DumpSymbolNamesFromModule().
In DumpSymbolNamesFromFile(), check whether it is an archive or a bytecode
 file, and call the corresponding reader function (ParseBytecodeFile or
 ReadArchiveFile).
Unconditionally set MultipleFiles for archives.
Fixes PR117.


---
Diffs of the changes:  (+24 -13)

Index: llvm/tools/llvm-nm/llvm-nm.cpp
diff -u llvm/tools/llvm-nm/llvm-nm.cpp:1.7 llvm/tools/llvm-nm/llvm-nm.cpp:1.8
--- llvm/tools/llvm-nm/llvm-nm.cpp:1.7	Tue Nov 11 16:41:34 2003
+++ llvm/tools/llvm-nm/llvm-nm.cpp	Sun Nov 16 17:34:13 2003
@@ -19,6 +19,7 @@
 #include "llvm/Module.h"
 #include "llvm/Bytecode/Reader.h"
 #include "Support/CommandLine.h"
+#include "Support/FileUtilities.h"
 #include <cctype>
 
 using namespace llvm;
@@ -96,26 +97,36 @@
 }
 
 void DumpSymbolNamesFromModule (Module *M) {
+  const std::string &Filename = M->getModuleIdentifier ();
+  if (OutputFormat == posix && MultipleFiles) {
+    std::cout << Filename << ":\n";
+  } else if (OutputFormat == bsd && MultipleFiles) {
+    std::cout << "\n" << Filename << ":\n";
+  } else if (OutputFormat == sysv) {
+    std::cout << "\n\nSymbols from " << Filename << ":\n\n"
+              << "Name                  Value   Class        Type"
+              << "         Size   Line  Section\n";
+  }
   std::for_each (M->begin (), M->end (), DumpSymbolNameForGlobalValue);
   std::for_each (M->gbegin (), M->gend (), DumpSymbolNameForGlobalValue);
 }
 
 void DumpSymbolNamesFromFile (std::string &Filename) {
   std::string ErrorMessage;
-  Module *Result = ParseBytecodeFile(Filename, &ErrorMessage);
-  if (Result) {
-    if (OutputFormat == posix && MultipleFiles) {
-      std::cout << Filename << ":\n";
-    } else if (OutputFormat == bsd && MultipleFiles) {
-      std::cout << "\n" << Filename << ":\n";
-    } else if (OutputFormat == sysv) {
-      std::cout << "\n\nSymbols from " << Filename << ":\n\n"
-                << "Name                  Value   Class        Type"
-                << "         Size   Line  Section\n";
+  if (IsBytecode (Filename)) {
+    Module *Result = ParseBytecodeFile(Filename, &ErrorMessage);
+    if (Result) {
+      DumpSymbolNamesFromModule (Result);
+    } else {
+      std::cerr << ToolName << ": " << Filename << ": " << ErrorMessage << "\n";
     }
-    DumpSymbolNamesFromModule (Result);
-  } else {
-    std::cerr << ToolName << ": " << Filename << ": " << ErrorMessage << "\n";
+  } else if (IsArchive (Filename)) {
+    std::vector<Module *> Modules;
+    if (ReadArchiveFile (Filename, Modules, &ErrorMessage))
+      std::cerr << ToolName << ": " << Filename << ": "
+                << ErrorMessage << "\n";
+    MultipleFiles = true;
+    std::for_each (Modules.begin (), Modules.end (), DumpSymbolNamesFromModule);
   }
 }
 





More information about the llvm-commits mailing list