summaryrefslogtreecommitdiffstats
path: root/contrib/llvm/tools/llvm-readobj/ObjDumper.h
diff options
context:
space:
mode:
Diffstat (limited to 'contrib/llvm/tools/llvm-readobj/ObjDumper.h')
-rw-r--r--contrib/llvm/tools/llvm-readobj/ObjDumper.h75
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
OpenPOWER on IntegriCloud