LLVM  13.0.0git
Classes | Namespaces | Enumerations | Functions
DWARFLinker.cpp File Reference
#include "llvm/DWARFLinker/DWARFLinker.h"
#include "llvm/ADT/ArrayRef.h"
#include "llvm/ADT/BitVector.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/ADT/Triple.h"
#include "llvm/CodeGen/NonRelocatableStringpool.h"
#include "llvm/DWARFLinker/DWARFLinkerDeclContext.h"
#include "llvm/DebugInfo/DWARF/DWARFAbbreviationDeclaration.h"
#include "llvm/DebugInfo/DWARF/DWARFContext.h"
#include "llvm/DebugInfo/DWARF/DWARFDataExtractor.h"
#include "llvm/DebugInfo/DWARF/DWARFDebugLine.h"
#include "llvm/DebugInfo/DWARF/DWARFDebugRangeList.h"
#include "llvm/DebugInfo/DWARF/DWARFDie.h"
#include "llvm/DebugInfo/DWARF/DWARFFormValue.h"
#include "llvm/DebugInfo/DWARF/DWARFSection.h"
#include "llvm/DebugInfo/DWARF/DWARFUnit.h"
#include "llvm/Support/DataExtractor.h"
#include "llvm/Support/Error.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/Support/ErrorOr.h"
#include "llvm/Support/FormatVariadic.h"
#include "llvm/Support/LEB128.h"
#include "llvm/Support/Path.h"
#include "llvm/Support/ThreadPool.h"
#include <vector>
Include dependency graph for DWARFLinker.cpp:

Go to the source code of this file.


struct  llvm::DebugInfoSize
 Hold the input and output of the debug info size in bytes. More...
struct  llvm::ContextWorklistItem
 This class represents an item in the work list. More...




enum  llvm::ContextWorklistItemType : uint8_t { llvm::ContextWorklistItemType::AnalyzeContextInfo, llvm::ContextWorklistItemType::UpdateChildPruning, llvm::ContextWorklistItemType::UpdatePruning }
 The distinct types of work performed by the work loop in analyzeContextInfo. More...


static uint64_t llvm::getDebugInfoSize (DWARFContext &Dwarf)
 Compute the total size of the debug info. More...
static CompileUnit * llvm::getUnitForOffset (const UnitListTy &Units, uint64_t Offset)
 Similar to DWARFUnitSection::getUnitForOffset(), but returning our CompileUnit object instead. More...
static bool llvm::isODRAttribute (uint16_t Attr)
static bool llvm::isTypeTag (uint16_t Tag)
static Optional< StringRef > llvm::StripTemplateParameters (StringRef Name)
static void llvm::resolveRelativeObjectPath (SmallVectorImpl< char > &Buf, DWARFDie CU)
 Resolve the relative path to a build artifact referenced by DWARF by applying DW_AT_comp_dir. More...
static void llvm::analyzeImportedModule (const DWARFDie &DIE, CompileUnit &CU, swiftInterfacesMap *ParseableSwiftInterfaces, std::function< void(const Twine &, const DWARFDie &)> ReportWarning)
 Collect references to parseable Swift interfaces in imported DW_TAG_module blocks. More...
static bool llvm::updatePruning (const DWARFDie &Die, CompileUnit &CU, uint64_t ModulesEndOffset)
static void llvm::updateChildPruning (const DWARFDie &Die, CompileUnit &CU, CompileUnit::DIEInfo &ChildInfo)
static bool llvm::analyzeContextInfo (const DWARFDie &DIE, unsigned ParentIdx, CompileUnit &CU, DeclContext *CurrentDeclContext, DeclContextTree &Contexts, uint64_t ModulesEndOffset, swiftInterfacesMap *ParseableSwiftInterfaces, std::function< void(const Twine &, const DWARFDie &)> ReportWarning, bool InImportedModule=false)
 Recursive helper to build the global DeclContext information and gather the child->parent relationships in the original compile unit. More...
static bool llvm::dieNeedsChildrenToBeMeaningful (uint32_t Tag)
static void llvm::updateChildIncompleteness (const DWARFDie &Die, CompileUnit &CU, CompileUnit::DIEInfo &ChildInfo)
 Helper that updates the completeness of the current DIE based on the completeness of one of its children. More...
static void llvm::updateRefIncompleteness (const DWARFDie &Die, CompileUnit &CU, CompileUnit::DIEInfo &RefInfo)
 Helper that updates the completeness of the current DIE based on the completeness of the DIEs it references. More...
static bool llvm::isObjCSelector (StringRef Name)
static bool llvm::shouldSkipAttribute (DWARFAbbreviationDeclaration::AttributeSpec AttrSpec, uint16_t Tag, bool InDebugMap, bool SkipPC, bool InFunctionScope)
static void llvm::insertLineSequence (std::vector< DWARFDebugLine::Row > &Seq, std::vector< DWARFDebugLine::Row > &Rows)
 Insert the new line info sequence Seq into the current set of already linked line info Rows. More...
static void llvm::patchStmtList (DIE &Die, DIEInteger Offset)
static uint64_t llvm::getDwoId (const DWARFDie &CUDie, const DWARFUnit &Unit)
static std::string llvm::remapPath (StringRef Path, const objectPrefixMap &ObjectPrefixMap)