1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
|
//===-----------------------------------------------------------*- C++ -*--===//
//
// Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
// See https://llvm.org/LICENSE.txt for license information.
// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
//
//===----------------------------------------------------------------------===//
#ifndef LLVM_TOOLS_LLVM_CAS_DUMP_MCCASPRINTER_H
#define LLVM_TOOLS_LLVM_CAS_DUMP_MCCASPRINTER_H
#include "CASDWARFObject.h"
#include "llvm/MCCAS/MCCASDebugV1.h"
#include "llvm/MCCAS/MCCASObjectV1.h"
#include "llvm/Support/Error.h"
namespace llvm {
class raw_ostream;
class DWARFContext;
namespace mccasformats {
namespace v1 {
struct PrinterOptions {
bool DwarfSectionsOnly = false;
bool DwarfDump = false;
bool HexDump = false;
bool HexDumpOneLine = false;
bool Verbose = false;
bool DIERefs = false;
};
struct MCCASPrinter {
/// Creates a printer object capable of printing MCCAS objects inside `CAS`.
/// Output is sent to `OS`.
MCCASPrinter(PrinterOptions Options, cas::ObjectStore &CAS, raw_ostream &OS);
~MCCASPrinter();
/// If `CASObj` is an MCObject, prints its contents and all nodes referenced
/// by it recursively. If CASObj or any of its children are not MCObjects, an
/// error is returned.
Error printMCObject(cas::ObjectRef CASObj, CASDWARFObject &Obj,
DWARFContext *DWARFCtx = nullptr);
/// Prints the contents of `MCObject` and all nodes referenced by it
/// recursively. If any of its children are not MCObjects, an error is
/// returned.
Error printMCObject(MCObjectProxy MCObj, CASDWARFObject &Obj,
DWARFContext *DWARFCtx);
Expected<CASDWARFObject> discoverDwarfSections(cas::ObjectRef CASObj);
private:
PrinterOptions Options;
llvm::mccasformats::v1::MCSchema MCSchema;
int Indent;
raw_ostream &OS;
Error printSimpleNested(MCObjectProxy AssemblerRef, CASDWARFObject &Obj,
DWARFContext *DWARFCtx);
};
} // namespace v1
} // namespace mccasformats
} // namespace llvm
#endif
|