From: Daniel Dunbar Date: Sat, 27 Nov 2010 06:19:17 +0000 (+0000) Subject: macho-dump: More sketching. X-Git-Tag: android-x86-6.0-r1~1002^2~2957 X-Git-Url: http://git.osdn.net/view?a=commitdiff_plain;h=ad1252498d37fdf32c92569fe35bf09bb6e78caa;p=android-x86%2Fexternal-llvm.git macho-dump: More sketching. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@120192 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/tools/macho-dump/macho-dump.cpp b/tools/macho-dump/macho-dump.cpp index 7825b112438..945406a5019 100644 --- a/tools/macho-dump/macho-dump.cpp +++ b/tools/macho-dump/macho-dump.cpp @@ -11,20 +11,46 @@ // //===----------------------------------------------------------------------===// +#include "llvm/Object/MachOObject.h" #include "llvm/Support/CommandLine.h" #include "llvm/Support/ManagedStatic.h" +#include "llvm/Support/MemoryBuffer.h" #include "llvm/Support/raw_ostream.h" using namespace llvm; +using namespace llvm::object; static cl::opt InputFile(cl::Positional, cl::desc(""), cl::init("-")); +static cl::opt +DumpSectionData("dump-section-data", cl::desc("Dump the contents of sections"), + cl::init(false)); + int main(int argc, char **argv) { const char *ProgramName = argv[0]; llvm_shutdown_obj Y; // Call llvm_shutdown() on exit. cl::ParseCommandLineOptions(argc, argv, "llvm Mach-O dumping tool\n"); - errs() << ProgramName << ": " << "not yet implemented!" << "\n"; - return 1; + // Load the input file. + std::string ErrorStr; + OwningPtr InputBuffer( + MemoryBuffer::getFileOrSTDIN(InputFile, &ErrorStr)); + if (!InputBuffer) { + errs() << ProgramName << ": " << "unable to read input: '" + << ErrorStr << "'\n"; + return 1; + } + + // Construct the Mach-O wrapper object. + OwningPtr InputObject( + MachOObject::LoadFromBuffer(InputBuffer.take(), &ErrorStr)); + if (!InputObject) { + errs() << ProgramName << ": " << "unable to load object: '" + << ErrorStr << "'\n"; + return 1; + } + + errs() << "ok\n"; + return 0; }