|  | //===-- llvm-objdump.h ----------------------------------------------------===// | 
|  | // | 
|  | //                     The LLVM Compiler Infrastructure | 
|  | // | 
|  | // This file is distributed under the University of Illinois Open Source | 
|  | // License. See LICENSE.TXT for details. | 
|  | // | 
|  | //===----------------------------------------------------------------------===// | 
|  |  | 
|  | #ifndef LLVM_OBJDUMP_H | 
|  | #define LLVM_OBJDUMP_H | 
|  |  | 
|  | #include "llvm/ADT/StringRef.h" | 
|  | #include "llvm/Support/CommandLine.h" | 
|  | #include "llvm/Support/DataTypes.h" | 
|  | #include "llvm/Support/MemoryObject.h" | 
|  |  | 
|  | namespace llvm { | 
|  |  | 
|  | extern cl::opt<std::string> TripleName; | 
|  | extern cl::opt<std::string> ArchName; | 
|  |  | 
|  | // Various helper functions. | 
|  | void DumpBytes(StringRef bytes); | 
|  | void DisassembleInputMachO(StringRef Filename); | 
|  |  | 
|  | class StringRefMemoryObject : public MemoryObject { | 
|  | private: | 
|  | StringRef Bytes; | 
|  | public: | 
|  | StringRefMemoryObject(StringRef bytes) : Bytes(bytes) {} | 
|  |  | 
|  | uint64_t getBase() const { return 0; } | 
|  | uint64_t getExtent() const { return Bytes.size(); } | 
|  |  | 
|  | int readByte(uint64_t Addr, uint8_t *Byte) const { | 
|  | if (Addr >= getExtent()) | 
|  | return -1; | 
|  | *Byte = Bytes[Addr]; | 
|  | return 0; | 
|  | } | 
|  | }; | 
|  |  | 
|  | } | 
|  |  | 
|  | #endif |