#include "obj2yaml.h"
#include "llvm/ADT/StringMap.h"
#include "llvm/DebugInfo/CodeView/DebugChecksumsSubsection.h"
#include "llvm/DebugInfo/CodeView/DebugStringTableSubsection.h"
#include "llvm/DebugInfo/CodeView/StringsAndChecksums.h"
#include "llvm/Object/COFF.h"
#include "llvm/ObjectYAML/COFFYAML.h"
#include "llvm/ObjectYAML/CodeViewYAMLTypes.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/YAMLTraits.h"
usingnamespacellvm;
namespace {
class COFFDumper { … };
}
COFFDumper::COFFDumper(const object::COFFObjectFile &Obj) : … { … }
template <typename T> void COFFDumper::dumpOptionalHeader(T OptionalHeader) { … }
void COFFDumper::dumpHeader() { … }
static void
initializeFileAndStringTable(const llvm::object::COFFObjectFile &Obj,
codeview::StringsAndChecksumsRef &SC) { … }
void COFFDumper::dumpSections(unsigned NumSections) { … }
static void
dumpFunctionDefinition(COFFYAML::Symbol *Sym,
const object::coff_aux_function_definition *ObjFD) { … }
static void
dumpbfAndEfLineInfo(COFFYAML::Symbol *Sym,
const object::coff_aux_bf_and_ef_symbol *ObjBES) { … }
static void dumpWeakExternal(COFFYAML::Symbol *Sym,
const object::coff_aux_weak_external *ObjWE) { … }
static void
dumpSectionDefinition(COFFYAML::Symbol *Sym,
const object::coff_aux_section_definition *ObjSD,
bool IsBigObj) { … }
static void
dumpCLRTokenDefinition(COFFYAML::Symbol *Sym,
const object::coff_aux_clr_token *ObjCLRToken) { … }
void COFFDumper::dumpSymbols(unsigned NumSymbols) { … }
COFFYAML::Object &COFFDumper::getYAMLObj() { … }
std::error_code coff2yaml(raw_ostream &Out, const object::COFFObjectFile &Obj) { … }