llvm-objdump.h revision adef06a71458ded0716935a61b3d43d164d4df12
10b8b771e9f2f251460a6f200c45efe9d55640d60Benjamin Kramer//===-- llvm-objdump.h ----------------------------------------------------===// 20b8b771e9f2f251460a6f200c45efe9d55640d60Benjamin Kramer// 30b8b771e9f2f251460a6f200c45efe9d55640d60Benjamin Kramer// The LLVM Compiler Infrastructure 40b8b771e9f2f251460a6f200c45efe9d55640d60Benjamin Kramer// 50b8b771e9f2f251460a6f200c45efe9d55640d60Benjamin Kramer// This file is distributed under the University of Illinois Open Source 60b8b771e9f2f251460a6f200c45efe9d55640d60Benjamin Kramer// License. See LICENSE.TXT for details. 70b8b771e9f2f251460a6f200c45efe9d55640d60Benjamin Kramer// 80b8b771e9f2f251460a6f200c45efe9d55640d60Benjamin Kramer//===----------------------------------------------------------------------===// 90b8b771e9f2f251460a6f200c45efe9d55640d60Benjamin Kramer 100b8b771e9f2f251460a6f200c45efe9d55640d60Benjamin Kramer#ifndef LLVM_OBJDUMP_H 110b8b771e9f2f251460a6f200c45efe9d55640d60Benjamin Kramer#define LLVM_OBJDUMP_H 120b8b771e9f2f251460a6f200c45efe9d55640d60Benjamin Kramer 130b8b771e9f2f251460a6f200c45efe9d55640d60Benjamin Kramer#include "llvm/ADT/StringRef.h" 140b8b771e9f2f251460a6f200c45efe9d55640d60Benjamin Kramer#include "llvm/Support/CommandLine.h" 150b8b771e9f2f251460a6f200c45efe9d55640d60Benjamin Kramer#include "llvm/Support/DataTypes.h" 160b8b771e9f2f251460a6f200c45efe9d55640d60Benjamin Kramer#include "llvm/Support/MemoryObject.h" 170b8b771e9f2f251460a6f200c45efe9d55640d60Benjamin Kramer 180b8b771e9f2f251460a6f200c45efe9d55640d60Benjamin Kramernamespace llvm { 190b8b771e9f2f251460a6f200c45efe9d55640d60Benjamin Kramer 200b8b771e9f2f251460a6f200c45efe9d55640d60Benjamin Kramerextern cl::opt<std::string> TripleName; 210b8b771e9f2f251460a6f200c45efe9d55640d60Benjamin Kramerextern cl::opt<std::string> ArchName; 220b8b771e9f2f251460a6f200c45efe9d55640d60Benjamin Kramer 230b8b771e9f2f251460a6f200c45efe9d55640d60Benjamin Kramer// Various helper functions. 240b8b771e9f2f251460a6f200c45efe9d55640d60Benjamin Kramervoid DumpBytes(StringRef bytes); 250b8b771e9f2f251460a6f200c45efe9d55640d60Benjamin Kramervoid DisassembleInputMachO(StringRef Filename); 260b8b771e9f2f251460a6f200c45efe9d55640d60Benjamin Kramer 270b8b771e9f2f251460a6f200c45efe9d55640d60Benjamin Kramerclass StringRefMemoryObject : public MemoryObject { 282d24e2a396a1d211baaeedf32148a3b657240170David Blaikie virtual void anchor(); 290b8b771e9f2f251460a6f200c45efe9d55640d60Benjamin Kramer StringRef Bytes; 300b8b771e9f2f251460a6f200c45efe9d55640d60Benjamin Kramerpublic: 310b8b771e9f2f251460a6f200c45efe9d55640d60Benjamin Kramer StringRefMemoryObject(StringRef bytes) : Bytes(bytes) {} 320b8b771e9f2f251460a6f200c45efe9d55640d60Benjamin Kramer 330b8b771e9f2f251460a6f200c45efe9d55640d60Benjamin Kramer uint64_t getBase() const { return 0; } 34adef06a71458ded0716935a61b3d43d164d4df12Derek Schuff uint64_t getExtent() const { return Bytes.size(); } 350b8b771e9f2f251460a6f200c45efe9d55640d60Benjamin Kramer 36adef06a71458ded0716935a61b3d43d164d4df12Derek Schuff int readByte(uint64_t Addr, uint8_t *Byte) const { 370b8b771e9f2f251460a6f200c45efe9d55640d60Benjamin Kramer if (Addr >= getExtent()) 380b8b771e9f2f251460a6f200c45efe9d55640d60Benjamin Kramer return -1; 390b8b771e9f2f251460a6f200c45efe9d55640d60Benjamin Kramer *Byte = Bytes[Addr]; 400b8b771e9f2f251460a6f200c45efe9d55640d60Benjamin Kramer return 0; 410b8b771e9f2f251460a6f200c45efe9d55640d60Benjamin Kramer } 420b8b771e9f2f251460a6f200c45efe9d55640d60Benjamin Kramer}; 430b8b771e9f2f251460a6f200c45efe9d55640d60Benjamin Kramer 440b8b771e9f2f251460a6f200c45efe9d55640d60Benjamin Kramer} 450b8b771e9f2f251460a6f200c45efe9d55640d60Benjamin Kramer 460b8b771e9f2f251460a6f200c45efe9d55640d60Benjamin Kramer#endif 47