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