#ifndef LLVM_TOOLS_LLVM_READOBJ_OBJDUMPER_H
#define LLVM_TOOLS_LLVM_READOBJ_OBJDUMPER_H
#include <functional>
#include <memory>
#include <system_error>
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/Object/ObjectFile.h"
#include "llvm/Support/CommandLine.h"
#include <unordered_set>
namespace llvm {
namespace object {
class Archive;
class COFFImportFile;
class ObjectFile;
class XCOFFObjectFile;
class ELFObjectFileBase;
}
namespace codeview {
class GlobalTypeTableBuilder;
class MergingTypeTableBuilder;
}
class ScopedPrinter;
class SymbolComparator { … };
class ObjDumper { … };
std::unique_ptr<ObjDumper> createCOFFDumper(const object::COFFObjectFile &Obj,
ScopedPrinter &Writer);
std::unique_ptr<ObjDumper> createELFDumper(const object::ELFObjectFileBase &Obj,
ScopedPrinter &Writer);
std::unique_ptr<ObjDumper> createMachODumper(const object::MachOObjectFile &Obj,
ScopedPrinter &Writer);
std::unique_ptr<ObjDumper> createWasmDumper(const object::WasmObjectFile &Obj,
ScopedPrinter &Writer);
std::unique_ptr<ObjDumper> createXCOFFDumper(const object::XCOFFObjectFile &Obj,
ScopedPrinter &Writer);
void dumpCOFFImportFile(const object::COFFImportFile *File,
ScopedPrinter &Writer);
void dumpCodeViewMergedTypes(ScopedPrinter &Writer,
ArrayRef<ArrayRef<uint8_t>> IpiRecords,
ArrayRef<ArrayRef<uint8_t>> TpiRecords);
}
#endif