LLVM 18.0.0git
|
#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 <optional>
Go to the source code of this file.
Classes | |
struct | llvm::gsym::CUInfo |
Functions | |
static DWARFDie | GetParentDeclContextDIE (DWARFDie &Die) |
static std::optional< uint32_t > | getQualifiedNameIndex (DWARFDie &Die, uint64_t Language, GsymCreator &Gsym) |
Get the GsymCreator string table offset for the qualified name for the DIE passed in. | |
static bool | hasInlineInfo (DWARFDie Die, uint32_t Depth) |
static AddressRanges | ConvertDWARFRanges (const DWARFAddressRangesVector &DwarfRanges) |
static void | parseInlineInfo (GsymCreator &Gsym, raw_ostream *Log, CUInfo &CUI, DWARFDie Die, uint32_t Depth, FunctionInfo &FI, InlineInfo &Parent, const AddressRanges &AllParentRanges, bool &WarnIfEmpty) |
static void | convertFunctionLineTable (raw_ostream *Log, CUInfo &CUI, DWARFDie Die, GsymCreator &Gsym, FunctionInfo &FI) |
|
static |
Definition at line 209 of file DwarfTransformer.cpp.
Referenced by parseInlineInfo().
|
static |
Definition at line 303 of file DwarfTransformer.cpp.
References llvm::DWARFDebugLine::Row::Address, llvm::AddressRange::contains(), llvm::DWARFDie::dump(), llvm::gsym::CUInfo::DWARFToGSYMFileIndex(), llvm::gsym::FunctionInfo::endAddress(), llvm::DWARFDie::findRecursively(), llvm::DWARFDie::getDeclFile(), llvm::DIDumpOptions::getForSingleDIE(), llvm::DWARFDie::getOffset(), HEX32, HEX64, llvm::gsym::GsymCreator::insertFile(), llvm::gsym::GsymCreator::isQuiet(), llvm::gsym::CUInfo::LineTable, llvm::DWARFDebugLine::LineTable::lookupAddressRange(), llvm::gsym::FunctionInfo::OptLineTable, llvm::gsym::FunctionInfo::Range, llvm::DWARFDebugLine::LineTable::Rows, llvm::AddressRange::start(), llvm::gsym::FunctionInfo::startAddress(), llvm::dwarf::toUnsigned(), and llvm::object::SectionedAddress::UndefSection.
Definition at line 87 of file DwarfTransformer.cpp.
References llvm::DWARFDie::getAttributeValueAsReferencedDie(), llvm::DWARFDie::getParent(), GetParentDeclContextDIE(), and llvm::DWARFDie::getTag().
Referenced by GetParentDeclContextDIE(), and getQualifiedNameIndex().
|
static |
Get the GsymCreator string table offset for the qualified name for the DIE passed in.
This function will avoid making copies of any strings in the GsymCreator when possible. We don't need to copy a string when the string comes from our .debug_str section or is an inlined string in the .debug_info. If we create a qualified name string in this function by combining multiple strings in the DWARF string table or info, we will make a copy of the string when we add it to the string table.
Definition at line 133 of file DwarfTransformer.cpp.
References llvm::StringRef::back(), llvm::StringRef::empty(), llvm::StringRef::front(), llvm::DWARFDie::getLinkageName(), llvm::DWARFDie::getName(), GetParentDeclContextDIE(), llvm::gsym::GsymCreator::insertString(), llvm::LinkageName, Name, llvm::ShortName, llvm::StringRef::size(), llvm::StringRef::str(), and llvm::StringRef::substr().
Referenced by parseInlineInfo().
Definition at line 187 of file DwarfTransformer.cpp.
References llvm::DWARFDie::children(), llvm::Depth, llvm::DWARFDie::getTag(), and hasInlineInfo().
Referenced by hasInlineInfo(), and parseInlineInfo().
|
static |
Definition at line 218 of file DwarfTransformer.cpp.
References llvm::gsym::InlineInfo::CallFile, llvm::gsym::InlineInfo::CallLine, llvm::DWARFDie::children(), llvm::gsym::InlineInfo::Children, llvm::AddressRangesBase< T >::contains(), ConvertDWARFRanges(), llvm::Depth, llvm::gsym::CUInfo::DWARFToGSYMFileIndex(), llvm::AddressRangesBase< T >::empty(), llvm::DWARFDie::find(), llvm::DWARFDie::findRecursively(), llvm::Expected< T >::get(), llvm::DWARFDie::getAddressRanges(), llvm::DWARFDie::getOffset(), getQualifiedNameIndex(), llvm::DWARFDie::getTag(), hasInlineInfo(), HEX32, HEX64, llvm::AddressRanges::insert(), llvm::gsym::CUInfo::Language, llvm::gsym::InlineInfo::Name, parseInlineInfo(), llvm::gsym::InlineInfo::Ranges, and llvm::dwarf::toUnsigned().
Referenced by parseInlineInfo().