#include <cctype>
#include <cerrno>
#include <cstring>
-#include <iostream>
using namespace llvm;
namespace {
static void DumpSymbolNameForGlobalValue(GlobalValue &GV) {
// Private linkage and available_externally linkage don't exist in symtab.
- if (GV.hasPrivateLinkage() || GV.hasAvailableExternallyLinkage()) return;
+ if (GV.hasPrivateLinkage() || GV.hasLinkerPrivateLinkage() ||
+ GV.hasAvailableExternallyLinkage()) return;
const std::string SymbolAddrStr = " "; // Not used yet...
char TypeChar = TypeCharForSymbol(GV);
if (GV.hasLocalLinkage () && ExternalOnly)
return;
if (OutputFormat == posix) {
- std::cout << GV.getName () << " " << TypeCharForSymbol(GV) << " "
- << SymbolAddrStr << "\n";
+ outs() << GV.getName () << " " << TypeCharForSymbol(GV) << " "
+ << SymbolAddrStr << "\n";
} else if (OutputFormat == bsd) {
- std::cout << SymbolAddrStr << " " << TypeCharForSymbol(GV) << " "
- << GV.getName () << "\n";
+ outs() << SymbolAddrStr << " " << TypeCharForSymbol(GV) << " "
+ << GV.getName () << "\n";
} else if (OutputFormat == sysv) {
std::string PaddedName (GV.getName ());
while (PaddedName.length () < 20)
PaddedName += " ";
- std::cout << PaddedName << "|" << SymbolAddrStr << "| "
- << TypeCharForSymbol(GV)
- << " | | | |\n";
+ outs() << PaddedName << "|" << SymbolAddrStr << "| "
+ << TypeCharForSymbol(GV)
+ << " | | | |\n";
}
}
static void DumpSymbolNamesFromModule(Module *M) {
const std::string &Filename = M->getModuleIdentifier ();
if (OutputFormat == posix && MultipleFiles) {
- std::cout << Filename << ":\n";
+ outs() << Filename << ":\n";
} else if (OutputFormat == bsd && MultipleFiles) {
- std::cout << "\n" << Filename << ":\n";
+ outs() << "\n" << Filename << ":\n";
} else if (OutputFormat == sysv) {
- std::cout << "\n\nSymbols from " << Filename << ":\n\n"
- << "Name Value Class Type"
- << " Size Line Section\n";
+ outs() << "\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->global_begin(), M->global_end(),
if (Buffer.get())
Result = ParseBitcodeFile(Buffer.get(), Context, &ErrorMessage);
- if (Result)
+ if (Result) {
DumpSymbolNamesFromModule(Result);
- else {
+ delete Result;
+ } else
errs() << ToolName << ": " << Filename << ": " << ErrorMessage << "\n";
- return;
- }
} else if (aPath.isArchive()) {
std::string ErrMsg;