예제 #1
0
static Error dumpStructure(RawSession &RS) {
  PDBFile &File = RS.getPDBFile();
  std::unique_ptr<OutputStyle> O;
  if (opts::RawOutputStyle == opts::OutputStyleTy::LLVM)
    O = llvm::make_unique<LLVMOutputStyle>(File);
  else if (opts::RawOutputStyle == opts::OutputStyleTy::YAML)
    O = llvm::make_unique<YAMLOutputStyle>(File);
  else
    return make_error<RawError>(raw_error_code::feature_unsupported,
                                "Requested output style unsupported");

  if (auto EC = O->dumpFileHeaders())
    return EC;

  if (auto EC = O->dumpStreamSummary())
    return EC;

  if (auto EC = O->dumpStreamBlocks())
    return EC;

  if (auto EC = O->dumpStreamData())
    return EC;

  if (auto EC = O->dumpInfoStream())
    return EC;

  if (auto EC = O->dumpNamedStream())
    return EC;

  if (auto EC = O->dumpTpiStream(StreamTPI))
    return EC;

  if (auto EC = O->dumpTpiStream(StreamIPI))
    return EC;

  if (auto EC = O->dumpDbiStream())
    return EC;

  if (auto EC = O->dumpSectionContribs())
    return EC;

  if (auto EC = O->dumpSectionMap())
    return EC;

  if (auto EC = O->dumpPublicsStream())
    return EC;

  if (auto EC = O->dumpSectionHeaders())
    return EC;

  if (auto EC = O->dumpFpoStream())
    return EC;
  O->flush();
  return Error::success();
}
예제 #2
0
static void dumpStructure(RawSession &RS) {
  PDBFile &File = RS.getPDBFile();
  ScopedPrinter P(outs());

  dumpFileHeaders(P, File);

  dumpStreamSizes(P, File);

  dumpStreamBlocks(P, File);

  dumpStreamData(P, File);

  dumpInfoStream(P, File);

  dumpNamedStream(P, File, "/names");

  dumpDbiStream(P, File);

  dumpTpiStream(P, File);
}