diff options
Diffstat (limited to 'contrib/llvm/tools/llvm-readobj/ObjDumper.h')
-rw-r--r-- | contrib/llvm/tools/llvm-readobj/ObjDumper.h | 75 |
1 files changed, 75 insertions, 0 deletions
diff --git a/contrib/llvm/tools/llvm-readobj/ObjDumper.h b/contrib/llvm/tools/llvm-readobj/ObjDumper.h new file mode 100644 index 0000000..27e15b2 --- /dev/null +++ b/contrib/llvm/tools/llvm-readobj/ObjDumper.h @@ -0,0 +1,75 @@ +//===-- ObjDumper.h -------------------------------------------------------===// +// +// The LLVM Compiler Infrastructure +// +// This file is distributed under the University of Illinois Open Source +// License. See LICENSE.TXT for details. +// +//===----------------------------------------------------------------------===// + +#ifndef LLVM_TOOLS_LLVM_READOBJ_OBJDUMPER_H +#define LLVM_TOOLS_LLVM_READOBJ_OBJDUMPER_H + +#include <memory> +#include <system_error> + +namespace llvm { +namespace object { + class ObjectFile; +} + +class StreamWriter; + +class ObjDumper { +public: + ObjDumper(StreamWriter& Writer); + virtual ~ObjDumper(); + + virtual void printFileHeaders() = 0; + virtual void printSections() = 0; + virtual void printRelocations() = 0; + virtual void printSymbols() = 0; + virtual void printDynamicSymbols() = 0; + virtual void printUnwindInfo() = 0; + + // Only implemented for ELF at this time. + virtual void printDynamicRelocations() { } + virtual void printDynamicTable() { } + virtual void printNeededLibraries() { } + virtual void printProgramHeaders() { } + + // Only implemented for ARM ELF at this time. + virtual void printAttributes() { } + + // Only implemented for MIPS ELF at this time. + virtual void printMipsPLTGOT() { } + virtual void printMipsABIFlags() { } + virtual void printMipsReginfo() { } + + // Only implemented for PE/COFF. + virtual void printCOFFImports() { } + virtual void printCOFFExports() { } + virtual void printCOFFDirectives() { } + virtual void printCOFFBaseReloc() { } + + virtual void printStackMap() const = 0; + +protected: + StreamWriter& W; +}; + +std::error_code createCOFFDumper(const object::ObjectFile *Obj, + StreamWriter &Writer, + std::unique_ptr<ObjDumper> &Result); + +std::error_code createELFDumper(const object::ObjectFile *Obj, + StreamWriter &Writer, + std::unique_ptr<ObjDumper> &Result); + +std::error_code createMachODumper(const object::ObjectFile *Obj, + StreamWriter &Writer, + std::unique_ptr<ObjDumper> &Result); + +} // namespace llvm + +#endif |