LLVM 20.0.0git
Classes | Namespaces | Enumerations | Functions
DWARFLinker.cpp File Reference
#include "llvm/DWARFLinker/Classic/DWARFLinker.h"
#include "llvm/ADT/ArrayRef.h"
#include "llvm/ADT/BitVector.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/ADT/StringExtras.h"
#include "llvm/CodeGen/NonRelocatableStringpool.h"
#include "llvm/DWARFLinker/Classic/DWARFLinkerDeclContext.h"
#include "llvm/DWARFLinker/Classic/DWARFStreamer.h"
#include "llvm/DWARFLinker/Utils.h"
#include "llvm/DebugInfo/DWARF/DWARFAbbreviationDeclaration.h"
#include "llvm/DebugInfo/DWARF/DWARFAcceleratorTable.h"
#include "llvm/DebugInfo/DWARF/DWARFContext.h"
#include "llvm/DebugInfo/DWARF/DWARFDataExtractor.h"
#include "llvm/DebugInfo/DWARF/DWARFDebugLine.h"
#include "llvm/DebugInfo/DWARF/DWARFDebugMacro.h"
#include "llvm/DebugInfo/DWARF/DWARFDebugRangeList.h"
#include "llvm/DebugInfo/DWARF/DWARFDie.h"
#include "llvm/DebugInfo/DWARF/DWARFExpression.h"
#include "llvm/DebugInfo/DWARF/DWARFFormValue.h"
#include "llvm/DebugInfo/DWARF/DWARFSection.h"
#include "llvm/DebugInfo/DWARF/DWARFUnit.h"
#include "llvm/MC/MCDwarf.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>

Go to the source code of this file.

Classes

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...
 
struct  llvm::BrokenLink
 A broken link in the keep chain. More...
 
struct  llvm::AttributeLinkedOffsetFixup
 

Namespaces

namespace  llvm
 This is an optimization pass for GlobalISel generic memory operations.
 

Enumerations

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

Functions

static uint64_t llvm::getDebugInfoSize (DWARFContext &Dwarf)
 Compute the total size of the debug info.
 
static CompileUnit * llvm::getUnitForOffset (const UnitListTy &Units, uint64_t Offset)
 Similar to DWARFUnitSection::getUnitForOffset(), but returning our CompileUnit object instead.
 
static bool llvm::isODRAttribute (uint16_t Attr)
 
static bool llvm::isTypeTag (uint16_t Tag)
 
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.
 
static void llvm::analyzeImportedModule (const DWARFDie &DIE, CompileUnit &CU, DWARFLinkerBase::SwiftInterfacesMapTy *ParseableSwiftInterfaces, std::function< void(const Twine &, const DWARFDie &)> ReportWarning)
 Collect references to parseable Swift interfaces in imported DW_TAG_module blocks.
 
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 void llvm::analyzeContextInfo (const DWARFDie &DIE, unsigned ParentIdx, CompileUnit &CU, DeclContext *CurrentDeclContext, DeclContextTree &Contexts, uint64_t ModulesEndOffset, DWARFLinkerBase::SwiftInterfacesMapTy *ParseableSwiftInterfaces, std::function< void(const Twine &, const DWARFDie &)> ReportWarning)
 Recursive helper to build the global DeclContext information and gather the child->parent relationships in the original compile unit.
 
static bool llvm::dieNeedsChildrenToBeMeaningful (uint32_t Tag)
 
static bool llvm::isTlsAddressCode (uint8_t DW_OP_Code)
 
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.
 
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.
 
static bool llvm::isODRCanonicalCandidate (const DWARFDie &Die, CompileUnit &CU)
 
static void llvm::verifyKeepChain (CompileUnit &CU)
 Verify the keep chain by looking for DIEs that are kept but who's parent isn't.
 
static bool llvm::shouldSkipAttribute (bool Update, DWARFAbbreviationDeclaration::AttributeSpec AttrSpec, bool SkipPC)
 
static void llvm::patchAddrBase (DIE &Die, DIEInteger Offset)
 
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.
 
static void llvm::patchStmtList (DIE &Die, DIEInteger Offset)
 
static uint64_t llvm::getDwoId (const DWARFDie &CUDie)
 
static std::string llvm::remapPath (StringRef Path, const DWARFLinkerBase::ObjectPrefixMapTy &ObjectPrefixMap)
 
static std::string llvm::getPCMFile (const DWARFDie &CUDie, const DWARFLinkerBase::ObjectPrefixMapTy *ObjectPrefixMap)