llvm-objdump.h revision eef7b6219ebe5d0ded0be4adb3003055fa8a63c4
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 20eef7b6219ebe5d0ded0be4adb3003055fa8a63c4Michael J. Spencernamespace object { 21eef7b6219ebe5d0ded0be4adb3003055fa8a63c4Michael J. Spencer class COFFObjectFile; 22eef7b6219ebe5d0ded0be4adb3003055fa8a63c4Michael J. Spencer class RelocationRef; 23eef7b6219ebe5d0ded0be4adb3003055fa8a63c4Michael J. Spencer} 24eef7b6219ebe5d0ded0be4adb3003055fa8a63c4Michael J. Spencerclass error_code; 25eef7b6219ebe5d0ded0be4adb3003055fa8a63c4Michael J. Spencer 260b8b771e9f2f251460a6f200c45efe9d55640d60Benjamin Kramerextern cl::opt<std::string> TripleName; 270b8b771e9f2f251460a6f200c45efe9d55640d60Benjamin Kramerextern cl::opt<std::string> ArchName; 280b8b771e9f2f251460a6f200c45efe9d55640d60Benjamin Kramer 290b8b771e9f2f251460a6f200c45efe9d55640d60Benjamin Kramer// Various helper functions. 30eef7b6219ebe5d0ded0be4adb3003055fa8a63c4Michael J. Spencerbool error(error_code ec); 31eef7b6219ebe5d0ded0be4adb3003055fa8a63c4Michael J. Spencerbool RelocAddressLess(object::RelocationRef a, object::RelocationRef b); 320b8b771e9f2f251460a6f200c45efe9d55640d60Benjamin Kramervoid DumpBytes(StringRef bytes); 330b8b771e9f2f251460a6f200c45efe9d55640d60Benjamin Kramervoid DisassembleInputMachO(StringRef Filename); 34eef7b6219ebe5d0ded0be4adb3003055fa8a63c4Michael J. Spencervoid printCOFFUnwindInfo(const object::COFFObjectFile* o); 350b8b771e9f2f251460a6f200c45efe9d55640d60Benjamin Kramer 360b8b771e9f2f251460a6f200c45efe9d55640d60Benjamin Kramerclass StringRefMemoryObject : public MemoryObject { 372d24e2a396a1d211baaeedf32148a3b657240170David Blaikie virtual void anchor(); 380b8b771e9f2f251460a6f200c45efe9d55640d60Benjamin Kramer StringRef Bytes; 390b8b771e9f2f251460a6f200c45efe9d55640d60Benjamin Kramerpublic: 400b8b771e9f2f251460a6f200c45efe9d55640d60Benjamin Kramer StringRefMemoryObject(StringRef bytes) : Bytes(bytes) {} 410b8b771e9f2f251460a6f200c45efe9d55640d60Benjamin Kramer 420b8b771e9f2f251460a6f200c45efe9d55640d60Benjamin Kramer uint64_t getBase() const { return 0; } 43adef06a71458ded0716935a61b3d43d164d4df12Derek Schuff uint64_t getExtent() const { return Bytes.size(); } 440b8b771e9f2f251460a6f200c45efe9d55640d60Benjamin Kramer 45adef06a71458ded0716935a61b3d43d164d4df12Derek Schuff int readByte(uint64_t Addr, uint8_t *Byte) const { 460b8b771e9f2f251460a6f200c45efe9d55640d60Benjamin Kramer if (Addr >= getExtent()) 470b8b771e9f2f251460a6f200c45efe9d55640d60Benjamin Kramer return -1; 480b8b771e9f2f251460a6f200c45efe9d55640d60Benjamin Kramer *Byte = Bytes[Addr]; 490b8b771e9f2f251460a6f200c45efe9d55640d60Benjamin Kramer return 0; 500b8b771e9f2f251460a6f200c45efe9d55640d60Benjamin Kramer } 510b8b771e9f2f251460a6f200c45efe9d55640d60Benjamin Kramer}; 520b8b771e9f2f251460a6f200c45efe9d55640d60Benjamin Kramer 530b8b771e9f2f251460a6f200c45efe9d55640d60Benjamin Kramer} 540b8b771e9f2f251460a6f200c45efe9d55640d60Benjamin Kramer 550b8b771e9f2f251460a6f200c45efe9d55640d60Benjamin Kramer#endif 56