ObjDumper.h revision 251662
1249259Sdim//===-- ObjDumper.h -------------------------------------------------------===// 2249259Sdim// 3249259Sdim// The LLVM Compiler Infrastructure 4249259Sdim// 5249259Sdim// This file is distributed under the University of Illinois Open Source 6249259Sdim// License. See LICENSE.TXT for details. 7249259Sdim// 8249259Sdim//===----------------------------------------------------------------------===// 9249259Sdim 10249259Sdim#ifndef LLVM_READOBJ_OBJDUMPER_H 11249259Sdim#define LLVM_READOBJ_OBJDUMPER_H 12249259Sdim 13249259Sdimnamespace llvm { 14249259Sdim 15249259Sdimnamespace object { 16249259Sdim class ObjectFile; 17249259Sdim} 18249259Sdim 19249259Sdimclass error_code; 20249259Sdim 21249259Sdimtemplate<typename T> 22249259Sdimclass OwningPtr; 23249259Sdim 24249259Sdimclass StreamWriter; 25249259Sdim 26249259Sdimclass ObjDumper { 27249259Sdimpublic: 28249259Sdim ObjDumper(StreamWriter& Writer); 29249259Sdim virtual ~ObjDumper(); 30249259Sdim 31249259Sdim virtual void printFileHeaders() = 0; 32249259Sdim virtual void printSections() = 0; 33249259Sdim virtual void printRelocations() = 0; 34249259Sdim virtual void printSymbols() = 0; 35249259Sdim virtual void printDynamicSymbols() = 0; 36249259Sdim virtual void printUnwindInfo() = 0; 37249259Sdim 38249259Sdim // Only implemented for ELF at this time. 39249259Sdim virtual void printDynamicTable() { } 40249259Sdim virtual void printNeededLibraries() { } 41251662Sdim virtual void printProgramHeaders() { } 42249259Sdim 43249259Sdimprotected: 44249259Sdim StreamWriter& W; 45249259Sdim}; 46249259Sdim 47249259Sdimerror_code createCOFFDumper(const object::ObjectFile *Obj, 48249259Sdim StreamWriter& Writer, 49249259Sdim OwningPtr<ObjDumper> &Result); 50249259Sdim 51249259Sdimerror_code createELFDumper(const object::ObjectFile *Obj, 52249259Sdim StreamWriter& Writer, 53249259Sdim OwningPtr<ObjDumper> &Result); 54249259Sdim 55249259Sdimerror_code createMachODumper(const object::ObjectFile *Obj, 56249259Sdim StreamWriter& Writer, 57249259Sdim OwningPtr<ObjDumper> &Result); 58249259Sdim 59249259Sdim} // namespace llvm 60249259Sdim 61249259Sdim#endif 62