#include <thread>
#include <unordered_set>
#include "llvm/DebugInfo/DIContext.h"
#include "llvm/DebugInfo/DWARF/DWARFCompileUnit.h"
#include "llvm/DebugInfo/DWARF/DWARFContext.h"
#include "llvm/Support/Error.h"
#include "llvm/Support/ThreadPool.h"
#include "llvm/Support/raw_ostream.h"
#include "llvm/DebugInfo/GSYM/DwarfTransformer.h"
#include "llvm/DebugInfo/GSYM/FunctionInfo.h"
#include "llvm/DebugInfo/GSYM/GsymCreator.h"
#include "llvm/DebugInfo/GSYM/GsymReader.h"
#include "llvm/DebugInfo/GSYM/InlineInfo.h"
#include "llvm/DebugInfo/GSYM/OutputAggregator.h"
#include <optional>
usingnamespacellvm;
usingnamespacegsym;
struct llvm::gsym::CUInfo { … };
static DWARFDie GetParentDeclContextDIE(DWARFDie &Die) { … }
static std::optional<uint32_t>
getQualifiedNameIndex(DWARFDie &Die, uint64_t Language, GsymCreator &Gsym) { … }
static bool hasInlineInfo(DWARFDie Die, uint32_t Depth) { … }
static AddressRanges
ConvertDWARFRanges(const DWARFAddressRangesVector &DwarfRanges) { … }
static void parseInlineInfo(GsymCreator &Gsym, OutputAggregator &Out,
CUInfo &CUI, DWARFDie Die, uint32_t Depth,
FunctionInfo &FI, InlineInfo &Parent,
const AddressRanges &AllParentRanges,
bool &WarnIfEmpty) { … }
static void convertFunctionLineTable(OutputAggregator &Out, CUInfo &CUI,
DWARFDie Die, GsymCreator &Gsym,
FunctionInfo &FI) { … }
void DwarfTransformer::handleDie(OutputAggregator &Out, CUInfo &CUI,
DWARFDie Die) { … }
Error DwarfTransformer::convert(uint32_t NumThreads, OutputAggregator &Out) { … }
llvm::Error DwarfTransformer::verify(StringRef GsymPath,
OutputAggregator &Out) { … }