10b8b771e9f2f251460a6f200c45efe9d55640d60Benjamin Kramer// 20b8b771e9f2f251460a6f200c45efe9d55640d60Benjamin Kramer// The LLVM Compiler Infrastructure 30b8b771e9f2f251460a6f200c45efe9d55640d60Benjamin Kramer// 40b8b771e9f2f251460a6f200c45efe9d55640d60Benjamin Kramer// This file is distributed under the University of Illinois Open Source 50b8b771e9f2f251460a6f200c45efe9d55640d60Benjamin Kramer// License. See LICENSE.TXT for details. 60b8b771e9f2f251460a6f200c45efe9d55640d60Benjamin Kramer// 70b8b771e9f2f251460a6f200c45efe9d55640d60Benjamin Kramer//===----------------------------------------------------------------------===// 80b8b771e9f2f251460a6f200c45efe9d55640d60Benjamin Kramer 937ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines#ifndef LLVM_TOOLS_LLVM_OBJDUMP_LLVM_OBJDUMP_H 1037ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines#define LLVM_TOOLS_LLVM_OBJDUMP_LLVM_OBJDUMP_H 110b8b771e9f2f251460a6f200c45efe9d55640d60Benjamin Kramer 120b8b771e9f2f251460a6f200c45efe9d55640d60Benjamin Kramer#include "llvm/ADT/StringRef.h" 130b8b771e9f2f251460a6f200c45efe9d55640d60Benjamin Kramer#include "llvm/Support/CommandLine.h" 140b8b771e9f2f251460a6f200c45efe9d55640d60Benjamin Kramer#include "llvm/Support/DataTypes.h" 150b8b771e9f2f251460a6f200c45efe9d55640d60Benjamin Kramer 160b8b771e9f2f251460a6f200c45efe9d55640d60Benjamin Kramernamespace llvm { 17eef7b6219ebe5d0ded0be4adb3003055fa8a63c4Michael J. Spencernamespace object { 18eef7b6219ebe5d0ded0be4adb3003055fa8a63c4Michael J. Spencer class COFFObjectFile; 1937ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hines class MachOObjectFile; 20b2c064c6954c9bfa49b7a7e3223df5e7849464c0Michael J. Spencer class ObjectFile; 21eef7b6219ebe5d0ded0be4adb3003055fa8a63c4Michael J. Spencer class RelocationRef; 22eef7b6219ebe5d0ded0be4adb3003055fa8a63c4Michael J. Spencer} 23eef7b6219ebe5d0ded0be4adb3003055fa8a63c4Michael J. Spencer 240b8b771e9f2f251460a6f200c45efe9d55640d60Benjamin Kramerextern cl::opt<std::string> TripleName; 250b8b771e9f2f251460a6f200c45efe9d55640d60Benjamin Kramerextern cl::opt<std::string> ArchName; 2637ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hinesextern cl::opt<std::string> MCPU; 2737ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hinesextern cl::list<std::string> MAttrs; 28ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesextern cl::list<std::string> DumpSections; 292c3e0051c31c3f5b2328b447eadf1cf9c4427442Pirama Arumuga Nainarextern cl::opt<bool> Raw; 30ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesextern cl::opt<bool> Disassemble; 3137ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hinesextern cl::opt<bool> NoShowRawInsn; 32ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesextern cl::opt<bool> PrivateHeaders; 33ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesextern cl::opt<bool> ExportsTrie; 34ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesextern cl::opt<bool> Rebase; 35ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesextern cl::opt<bool> Bind; 36ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesextern cl::opt<bool> LazyBind; 37ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesextern cl::opt<bool> WeakBind; 38ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesextern cl::opt<bool> UniversalHeaders; 39ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesextern cl::opt<bool> ArchiveHeaders; 40ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesextern cl::opt<bool> IndirectSymbols; 41ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesextern cl::opt<bool> DataInCode; 42ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesextern cl::opt<bool> LinkOptHints; 434c5e43da7792f75567b693105cc53e3f1992ad98Pirama Arumuga Nainarextern cl::opt<bool> InfoPlist; 444c5e43da7792f75567b693105cc53e3f1992ad98Pirama Arumuga Nainarextern cl::opt<bool> DylibsUsed; 454c5e43da7792f75567b693105cc53e3f1992ad98Pirama Arumuga Nainarextern cl::opt<bool> DylibId; 462c3e0051c31c3f5b2328b447eadf1cf9c4427442Pirama Arumuga Nainarextern cl::opt<bool> ObjcMetaData; 474c5e43da7792f75567b693105cc53e3f1992ad98Pirama Arumuga Nainarextern cl::opt<std::string> DisSymName; 484c5e43da7792f75567b693105cc53e3f1992ad98Pirama Arumuga Nainarextern cl::opt<bool> NonVerbose; 49ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesextern cl::opt<bool> Relocations; 50ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesextern cl::opt<bool> SectionHeaders; 51ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesextern cl::opt<bool> SectionContents; 52ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesextern cl::opt<bool> SymbolTable; 53ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesextern cl::opt<bool> UnwindInfo; 540b8b771e9f2f251460a6f200c45efe9d55640d60Benjamin Kramer 550b8b771e9f2f251460a6f200c45efe9d55640d60Benjamin Kramer// Various helper functions. 56c6a4f5e819217e1e12c458aed8e7b122e23a3a58Stephen Hinesbool error(std::error_code ec); 57eef7b6219ebe5d0ded0be4adb3003055fa8a63c4Michael J. Spencerbool RelocAddressLess(object::RelocationRef a, object::RelocationRef b); 584c5e43da7792f75567b693105cc53e3f1992ad98Pirama Arumuga Nainarvoid DumpBytes(ArrayRef<uint8_t> bytes); 59ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesvoid ParseInputMachO(StringRef Filename); 60eef7b6219ebe5d0ded0be4adb3003055fa8a63c4Michael J. Spencervoid printCOFFUnwindInfo(const object::COFFObjectFile* o); 6137ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hinesvoid printMachOUnwindInfo(const object::MachOObjectFile* o); 6237ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hinesvoid printMachOExportsTrie(const object::MachOObjectFile* o); 6337ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hinesvoid printMachORebaseTable(const object::MachOObjectFile* o); 6437ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hinesvoid printMachOBindTable(const object::MachOObjectFile* o); 6537ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hinesvoid printMachOLazyBindTable(const object::MachOObjectFile* o); 6637ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hinesvoid printMachOWeakBindTable(const object::MachOObjectFile* o); 67b2c064c6954c9bfa49b7a7e3223df5e7849464c0Michael J. Spencervoid printELFFileHeader(const object::ObjectFile *o); 68a6610ee882fcb8bcad60d53fc52b80f00a3fddaeRui Ueyamavoid printCOFFFileHeader(const object::ObjectFile *o); 6937ed9c199ca639565f6ce88105f9e39e898d82d0Stephen Hinesvoid printMachOFileHeader(const object::ObjectFile *o); 70ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesvoid printExportsTrie(const object::ObjectFile *o); 71ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesvoid printRebaseTable(const object::ObjectFile *o); 72ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesvoid printBindTable(const object::ObjectFile *o); 73ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesvoid printLazyBindTable(const object::ObjectFile *o); 74ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesvoid printWeakBindTable(const object::ObjectFile *o); 75ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesvoid PrintRelocations(const object::ObjectFile *o); 76ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesvoid PrintSectionHeaders(const object::ObjectFile *o); 77ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesvoid PrintSectionContents(const object::ObjectFile *o); 78ebe69fe11e48d322045d5949c83283927a0d790bStephen Hinesvoid PrintSymbolTable(const object::ObjectFile *o); 790b8b771e9f2f251460a6f200c45efe9d55640d60Benjamin Kramer 80a6610ee882fcb8bcad60d53fc52b80f00a3fddaeRui Ueyama} // end namespace llvm 810b8b771e9f2f251460a6f200c45efe9d55640d60Benjamin Kramer 820b8b771e9f2f251460a6f200c45efe9d55640d60Benjamin Kramer#endif 83