#include "llvm/DebugInfo/Symbolize/MarkupFilter.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/ADT/StringExtras.h"
#include "llvm/ADT/StringSwitch.h"
#include "llvm/DebugInfo/DIContext.h"
#include "llvm/DebugInfo/Symbolize/Markup.h"
#include "llvm/DebugInfo/Symbolize/Symbolize.h"
#include "llvm/Debuginfod/Debuginfod.h"
#include "llvm/Demangle/Demangle.h"
#include "llvm/Object/ObjectFile.h"
#include "llvm/Support/Error.h"
#include "llvm/Support/Format.h"
#include "llvm/Support/FormatVariadic.h"
#include "llvm/Support/WithColor.h"
#include "llvm/Support/raw_ostream.h"
#include <optional>
usingnamespacellvm;
usingnamespacellvm::symbolize;
MarkupFilter::MarkupFilter(raw_ostream &OS, LLVMSymbolizer &Symbolizer,
std::optional<bool> ColorsEnabled)
: … { … }
void MarkupFilter::filter(std::string &&InputLine) { … }
void MarkupFilter::finish() { … }
bool MarkupFilter::tryContextualElement(
const MarkupNode &Node, const SmallVector<MarkupNode> &DeferredNodes) { … }
bool MarkupFilter::tryMMap(const MarkupNode &Node,
const SmallVector<MarkupNode> &DeferredNodes) { … }
bool MarkupFilter::tryReset(const MarkupNode &Node,
const SmallVector<MarkupNode> &DeferredNodes) { … }
bool MarkupFilter::tryModule(const MarkupNode &Node,
const SmallVector<MarkupNode> &DeferredNodes) { … }
void MarkupFilter::beginModuleInfoLine(const Module *M) { … }
void MarkupFilter::endAnyModuleInfoLine() { … }
void MarkupFilter::filterNode(const MarkupNode &Node) { … }
bool MarkupFilter::tryPresentation(const MarkupNode &Node) { … }
bool MarkupFilter::trySymbol(const MarkupNode &Node) { … }
bool MarkupFilter::tryPC(const MarkupNode &Node) { … }
bool MarkupFilter::tryBackTrace(const MarkupNode &Node) { … }
bool MarkupFilter::tryData(const MarkupNode &Node) { … }
bool MarkupFilter::trySGR(const MarkupNode &Node) { … }
void MarkupFilter::highlight() { … }
void MarkupFilter::highlightValue() { … }
void MarkupFilter::restoreColor() { … }
void MarkupFilter::resetColor() { … }
void MarkupFilter::printRawElement(const MarkupNode &Element) { … }
void MarkupFilter::printValue(Twine Value) { … }
#define ASSIGN_OR_RETURN_NONE(TYPE, NAME, EXPR) …
std::optional<MarkupFilter::Module>
MarkupFilter::parseModule(const MarkupNode &Element) const { … }
std::optional<MarkupFilter::MMap>
MarkupFilter::parseMMap(const MarkupNode &Element) const { … }
std::optional<uint64_t> MarkupFilter::parseAddr(StringRef Str) const { … }
std::optional<uint64_t> MarkupFilter::parseModuleID(StringRef Str) const { … }
std::optional<uint64_t> MarkupFilter::parseSize(StringRef Str) const { … }
std::optional<uint64_t> MarkupFilter::parseFrameNumber(StringRef Str) const { … }
object::BuildID MarkupFilter::parseBuildID(StringRef Str) const { … }
std::optional<std::string> MarkupFilter::parseMode(StringRef Str) const { … }
std::optional<MarkupFilter::PCType>
MarkupFilter::parsePCType(StringRef Str) const { … }
bool MarkupFilter::checkTag(const MarkupNode &Node) const { … }
bool MarkupFilter::checkNumFields(const MarkupNode &Element,
size_t Size) const { … }
bool MarkupFilter::checkNumFieldsAtLeast(const MarkupNode &Element,
size_t Size) const { … }
void MarkupFilter::warnNumFieldsAtMost(const MarkupNode &Element,
size_t Size) const { … }
void MarkupFilter::reportTypeError(StringRef Str, StringRef TypeName) const { … }
void MarkupFilter::reportLocation(StringRef::iterator Loc) const { … }
const MarkupFilter::MMap *
MarkupFilter::getOverlappingMMap(const MMap &Map) const { … }
const MarkupFilter::MMap *MarkupFilter::getContainingMMap(uint64_t Addr) const { … }
uint64_t MarkupFilter::adjustAddr(uint64_t Addr, PCType Type) const { … }
StringRef MarkupFilter::lineEnding() const { … }
bool MarkupFilter::MMap::contains(uint64_t Addr) const { … }
uint64_t MarkupFilter::MMap::getModuleRelativeAddr(uint64_t Addr) const { … }