projects
/
oota-llvm.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
For llvm-objdump, hook up existing options to work when using -macho (the Mach-O...
[oota-llvm.git]
/
tools
/
llvm-objdump
/
llvm-objdump.cpp
diff --git
a/tools/llvm-objdump/llvm-objdump.cpp
b/tools/llvm-objdump/llvm-objdump.cpp
index 8903bff8f97fdb00da154724d8bfb9059e144730..76c8af420568a976d940fd14291365766a1d4324 100644
(file)
--- a/
tools/llvm-objdump/llvm-objdump.cpp
+++ b/
tools/llvm-objdump/llvm-objdump.cpp
@@
-44,7
+44,6
@@
#include "llvm/Support/Host.h"
#include "llvm/Support/ManagedStatic.h"
#include "llvm/Support/MemoryBuffer.h"
#include "llvm/Support/Host.h"
#include "llvm/Support/ManagedStatic.h"
#include "llvm/Support/MemoryBuffer.h"
-#include "llvm/Support/MemoryObject.h"
#include "llvm/Support/PrettyStackTrace.h"
#include "llvm/Support/Signals.h"
#include "llvm/Support/SourceMgr.h"
#include "llvm/Support/PrettyStackTrace.h"
#include "llvm/Support/Signals.h"
#include "llvm/Support/SourceMgr.h"
@@
-62,36
+61,36
@@
using namespace object;
static cl::list<std::string>
InputFilenames(cl::Positional, cl::desc("<input object files>"),cl::ZeroOrMore);
static cl::list<std::string>
InputFilenames(cl::Positional, cl::desc("<input object files>"),cl::ZeroOrMore);
-
static
cl::opt<bool>
-Disassemble("disassemble",
+cl::opt<bool>
+
llvm::
Disassemble("disassemble",
cl::desc("Display assembler mnemonics for the machine instructions"));
static cl::alias
Disassembled("d", cl::desc("Alias for --disassemble"),
cl::aliasopt(Disassemble));
cl::desc("Display assembler mnemonics for the machine instructions"));
static cl::alias
Disassembled("d", cl::desc("Alias for --disassemble"),
cl::aliasopt(Disassemble));
-
static
cl::opt<bool>
-Relocations("r", cl::desc("Display the relocation entries in the file"));
+cl::opt<bool>
+
llvm::
Relocations("r", cl::desc("Display the relocation entries in the file"));
-
static
cl::opt<bool>
-SectionContents("s", cl::desc("Display the content of each section"));
+cl::opt<bool>
+
llvm::
SectionContents("s", cl::desc("Display the content of each section"));
-
static
cl::opt<bool>
-SymbolTable("t", cl::desc("Display the symbol table"));
+cl::opt<bool>
+
llvm::
SymbolTable("t", cl::desc("Display the symbol table"));
-
static
cl::opt<bool>
-ExportsTrie("exports-trie", cl::desc("Display mach-o exported symbols"));
+cl::opt<bool>
+
llvm::
ExportsTrie("exports-trie", cl::desc("Display mach-o exported symbols"));
-
static
cl::opt<bool>
-Rebase("rebase", cl::desc("Display mach-o rebasing info"));
+cl::opt<bool>
+
llvm::
Rebase("rebase", cl::desc("Display mach-o rebasing info"));
-
static
cl::opt<bool>
-Bind("bind", cl::desc("Display mach-o binding info"));
+cl::opt<bool>
+
llvm::
Bind("bind", cl::desc("Display mach-o binding info"));
-
static
cl::opt<bool>
-LazyBind("lazy-bind", cl::desc("Display mach-o lazy binding info"));
+cl::opt<bool>
+
llvm::
LazyBind("lazy-bind", cl::desc("Display mach-o lazy binding info"));
-
static
cl::opt<bool>
-WeakBind("weak-bind", cl::desc("Display mach-o weak binding info"));
+cl::opt<bool>
+
llvm::
WeakBind("weak-bind", cl::desc("Display mach-o weak binding info"));
static cl::opt<bool>
MachOOpt("macho", cl::desc("Use MachO specific object file parser"));
static cl::opt<bool>
MachOOpt("macho", cl::desc("Use MachO specific object file parser"));
@@
-109,12
+108,12
@@
llvm::MCPU("mcpu",
cl::init(""));
cl::opt<std::string>
cl::init(""));
cl::opt<std::string>
-llvm::ArchName("arch", cl::desc("Target arch to disassemble for, "
+llvm::ArchName("arch
-name
", cl::desc("Target arch to disassemble for, "
"see -version for available targets"));
"see -version for available targets"));
-
static
cl::opt<bool>
-
SectionHeaders("section-headers", cl::desc("Display summaries of the headers
"
-
"
for each section."));
+cl::opt<bool>
+
llvm::SectionHeaders("section-headers", cl::desc("Display summaries of the
"
+
"headers
for each section."));
static cl::alias
SectionHeadersShort("headers", cl::desc("Alias for --section-headers"),
cl::aliasopt(SectionHeaders));
static cl::alias
SectionHeadersShort("headers", cl::desc("Alias for --section-headers"),
cl::aliasopt(SectionHeaders));
@@
-133,22
+132,23
@@
llvm::NoShowRawInsn("no-show-raw-insn", cl::desc("When disassembling "
"instructions, do not print "
"the instruction bytes."));
"instructions, do not print "
"the instruction bytes."));
-
static
cl::opt<bool>
-UnwindInfo("unwind-info", cl::desc("Display unwind information"));
+cl::opt<bool>
+
llvm::
UnwindInfo("unwind-info", cl::desc("Display unwind information"));
static cl::alias
UnwindInfoShort("u", cl::desc("Alias for --unwind-info"),
cl::aliasopt(UnwindInfo));
static cl::alias
UnwindInfoShort("u", cl::desc("Alias for --unwind-info"),
cl::aliasopt(UnwindInfo));
-
static
cl::opt<bool>
-PrivateHeaders("private-headers",
- cl::desc("Display format specific file headers"));
+cl::opt<bool>
+
llvm::
PrivateHeaders("private-headers",
+
cl::desc("Display format specific file headers"));
static cl::alias
PrivateHeadersShort("p", cl::desc("Alias for --private-headers"),
cl::aliasopt(PrivateHeaders));
static StringRef ToolName;
static cl::alias
PrivateHeadersShort("p", cl::desc("Alias for --private-headers"),
cl::aliasopt(PrivateHeaders));
static StringRef ToolName;
+static int ReturnValue = EXIT_SUCCESS;
bool llvm::error(std::error_code EC) {
if (!EC)
bool llvm::error(std::error_code EC) {
if (!EC)
@@
-156,6
+156,7
@@
bool llvm::error(std::error_code EC) {
outs() << ToolName << ": error reading file: " << EC.message() << ".\n";
outs().flush();
outs() << ToolName << ": error reading file: " << EC.message() << ".\n";
outs().flush();
+ ReturnValue = EXIT_FAILURE;
return true;
}
return true;
}
@@
-452,7
+453,7
@@
static void DisassembleObject(const ObjectFile *Obj, bool InlineRelocs) {
}
}
}
}
-
static void
PrintRelocations(const ObjectFile *Obj) {
+
void llvm::
PrintRelocations(const ObjectFile *Obj) {
StringRef Fmt = Obj->getBytesInAddress() > 4 ? "%016" PRIx64 :
"%08" PRIx64;
// Regular objdump doesn't print relocations in non-relocatable object
StringRef Fmt = Obj->getBytesInAddress() > 4 ? "%016" PRIx64 :
"%08" PRIx64;
// Regular objdump doesn't print relocations in non-relocatable object
@@
-489,7
+490,7
@@
static void PrintRelocations(const ObjectFile *Obj) {
}
}
}
}
-
static void
PrintSectionHeaders(const ObjectFile *Obj) {
+
void llvm::
PrintSectionHeaders(const ObjectFile *Obj) {
outs() << "Sections:\n"
"Idx Name Size Address Type\n";
unsigned i = 0;
outs() << "Sections:\n"
"Idx Name Size Address Type\n";
unsigned i = 0;
@@
-510,7
+511,7
@@
static void PrintSectionHeaders(const ObjectFile *Obj) {
}
}
}
}
-
static void
PrintSectionContents(const ObjectFile *Obj) {
+
void llvm::
PrintSectionContents(const ObjectFile *Obj) {
std::error_code EC;
for (const SectionRef &Section : Obj->sections()) {
StringRef Name;
std::error_code EC;
for (const SectionRef &Section : Obj->sections()) {
StringRef Name;
@@
-613,7
+614,7
@@
static void PrintCOFFSymbolTable(const COFFObjectFile *coff) {
}
}
}
}
-
static void
PrintSymbolTable(const ObjectFile *o) {
+
void llvm::
PrintSymbolTable(const ObjectFile *o) {
outs() << "SYMBOL TABLE:\n";
if (const COFFObjectFile *coff = dyn_cast<const COFFObjectFile>(o)) {
outs() << "SYMBOL TABLE:\n";
if (const COFFObjectFile *coff = dyn_cast<const COFFObjectFile>(o)) {
@@
-707,7
+708,7
@@
static void PrintUnwindInfo(const ObjectFile *o) {
}
}
}
}
-
static void
printExportsTrie(const ObjectFile *o) {
+
void llvm::
printExportsTrie(const ObjectFile *o) {
outs() << "Exports trie:\n";
if (const MachOObjectFile *MachO = dyn_cast<MachOObjectFile>(o))
printMachOExportsTrie(MachO);
outs() << "Exports trie:\n";
if (const MachOObjectFile *MachO = dyn_cast<MachOObjectFile>(o))
printMachOExportsTrie(MachO);
@@
-718,7
+719,7
@@
static void printExportsTrie(const ObjectFile *o) {
}
}
}
}
-
static void
printRebaseTable(const ObjectFile *o) {
+
void llvm::
printRebaseTable(const ObjectFile *o) {
outs() << "Rebase table:\n";
if (const MachOObjectFile *MachO = dyn_cast<MachOObjectFile>(o))
printMachORebaseTable(MachO);
outs() << "Rebase table:\n";
if (const MachOObjectFile *MachO = dyn_cast<MachOObjectFile>(o))
printMachORebaseTable(MachO);
@@
-729,7
+730,7
@@
static void printRebaseTable(const ObjectFile *o) {
}
}
}
}
-
static void
printBindTable(const ObjectFile *o) {
+
void llvm::
printBindTable(const ObjectFile *o) {
outs() << "Bind table:\n";
if (const MachOObjectFile *MachO = dyn_cast<MachOObjectFile>(o))
printMachOBindTable(MachO);
outs() << "Bind table:\n";
if (const MachOObjectFile *MachO = dyn_cast<MachOObjectFile>(o))
printMachOBindTable(MachO);
@@
-740,7
+741,7
@@
static void printBindTable(const ObjectFile *o) {
}
}
}
}
-
static void
printLazyBindTable(const ObjectFile *o) {
+
void llvm::
printLazyBindTable(const ObjectFile *o) {
outs() << "Lazy bind table:\n";
if (const MachOObjectFile *MachO = dyn_cast<MachOObjectFile>(o))
printMachOLazyBindTable(MachO);
outs() << "Lazy bind table:\n";
if (const MachOObjectFile *MachO = dyn_cast<MachOObjectFile>(o))
printMachOLazyBindTable(MachO);
@@
-751,7
+752,7
@@
static void printLazyBindTable(const ObjectFile *o) {
}
}
}
}
-
static void
printWeakBindTable(const ObjectFile *o) {
+
void llvm::
printWeakBindTable(const ObjectFile *o) {
outs() << "Weak bind table:\n";
if (const MachOObjectFile *MachO = dyn_cast<MachOObjectFile>(o))
printMachOWeakBindTable(MachO);
outs() << "Weak bind table:\n";
if (const MachOObjectFile *MachO = dyn_cast<MachOObjectFile>(o))
printMachOWeakBindTable(MachO);
@@
-831,8
+832,11
@@
static void DumpInput(StringRef file) {
return;
}
return;
}
- if (MachOOpt && Disassemble) {
- DisassembleInputMachO(file);
+ // If we are using the Mach-O specific object file parser, then let it parse
+ // the file and process the command line options. So the -arch flags can
+ // be used to select specific slices, etc.
+ if (MachOOpt) {
+ ParseInputMachO(file);
return;
}
return;
}
@@
-887,7
+891,9
@@
int main(int argc, char **argv) {
&& !Rebase
&& !Bind
&& !LazyBind
&& !Rebase
&& !Bind
&& !LazyBind
- && !WeakBind) {
+ && !WeakBind
+ && !(UniversalHeaders && MachOOpt)
+ && !(ArchiveHeaders && MachOOpt)) {
cl::PrintHelpMessage();
return 2;
}
cl::PrintHelpMessage();
return 2;
}
@@
-895,5
+901,5
@@
int main(int argc, char **argv) {
std::for_each(InputFilenames.begin(), InputFilenames.end(),
DumpInput);
std::for_each(InputFilenames.begin(), InputFilenames.end(),
DumpInput);
- return
0
;
+ return
ReturnValue
;
}
}