mirror of
https://github.com/RPCS3/llvm.git
synced 2025-01-19 08:24:12 +00:00
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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@10044 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
2c61d7b240
commit
1c0b6982d2
@ -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 DumpSymbolNameForGlobalValue (GlobalValue &GV) {
|
||||
}
|
||||
|
||||
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);
|
||||
}
|
||||
}
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user