LLVM 18.0.0git
|
#include "llvm/DebugInfo/DWARF/DWARFContext.h"
#include "llvm/ADT/MapVector.h"
#include "llvm/ADT/STLExtras.h"
#include "llvm/ADT/SmallString.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/StringRef.h"
#include "llvm/ADT/StringSwitch.h"
#include "llvm/BinaryFormat/Dwarf.h"
#include "llvm/DebugInfo/DWARF/DWARFAcceleratorTable.h"
#include "llvm/DebugInfo/DWARF/DWARFCompileUnit.h"
#include "llvm/DebugInfo/DWARF/DWARFDataExtractor.h"
#include "llvm/DebugInfo/DWARF/DWARFDebugAbbrev.h"
#include "llvm/DebugInfo/DWARF/DWARFDebugAddr.h"
#include "llvm/DebugInfo/DWARF/DWARFDebugArangeSet.h"
#include "llvm/DebugInfo/DWARF/DWARFDebugAranges.h"
#include "llvm/DebugInfo/DWARF/DWARFDebugFrame.h"
#include "llvm/DebugInfo/DWARF/DWARFDebugLine.h"
#include "llvm/DebugInfo/DWARF/DWARFDebugLoc.h"
#include "llvm/DebugInfo/DWARF/DWARFDebugMacro.h"
#include "llvm/DebugInfo/DWARF/DWARFDebugPubTable.h"
#include "llvm/DebugInfo/DWARF/DWARFDebugRangeList.h"
#include "llvm/DebugInfo/DWARF/DWARFDebugRnglists.h"
#include "llvm/DebugInfo/DWARF/DWARFDie.h"
#include "llvm/DebugInfo/DWARF/DWARFFormValue.h"
#include "llvm/DebugInfo/DWARF/DWARFGdbIndex.h"
#include "llvm/DebugInfo/DWARF/DWARFListTable.h"
#include "llvm/DebugInfo/DWARF/DWARFLocationExpression.h"
#include "llvm/DebugInfo/DWARF/DWARFRelocMap.h"
#include "llvm/DebugInfo/DWARF/DWARFSection.h"
#include "llvm/DebugInfo/DWARF/DWARFTypeUnit.h"
#include "llvm/DebugInfo/DWARF/DWARFUnitIndex.h"
#include "llvm/DebugInfo/DWARF/DWARFVerifier.h"
#include "llvm/MC/TargetRegistry.h"
#include "llvm/Object/Decompressor.h"
#include "llvm/Object/MachO.h"
#include "llvm/Object/ObjectFile.h"
#include "llvm/Object/RelocationResolver.h"
#include "llvm/Support/Casting.h"
#include "llvm/Support/DataExtractor.h"
#include "llvm/Support/Error.h"
#include "llvm/Support/Format.h"
#include "llvm/Support/LEB128.h"
#include "llvm/Support/FormatVariadic.h"
#include "llvm/Support/MemoryBuffer.h"
#include "llvm/Support/Path.h"
#include "llvm/Support/raw_ostream.h"
#include <algorithm>
#include <cstdint>
#include <deque>
#include <map>
#include <string>
#include <utility>
#include <vector>
Go to the source code of this file.
Classes | |
class | ThreadUnsafeDWARFContextState |
class | ThreadSafeState |
struct | SymInfo |
SymInfo contains information about symbol: it's address and section index which is -1LL for absolute symbols. More... | |
Macros | |
#define | DEBUG_TYPE "dwarf" |
Typedefs | |
using | DWARFLineTable = DWARFDebugLine::LineTable |
using | FileLineInfoKind = DILineInfoSpecifier::FileLineInfoKind |
using | FunctionNameKind = DILineInfoSpecifier::FunctionNameKind |
using | ContributionCollection = std::vector< std::optional< StrOffsetsContributionDescriptor > > |
#define DEBUG_TYPE "dwarf" |
Definition at line 67 of file DWARFContext.cpp.
using ContributionCollection = std::vector<std::optional<StrOffsetsContributionDescriptor> > |
Definition at line 784 of file DWARFContext.cpp.
Definition at line 69 of file DWARFContext.cpp.
Definition at line 70 of file DWARFContext.cpp.
Definition at line 71 of file DWARFContext.cpp.
|
static |
Definition at line 790 of file DWARFContext.cpp.
References llvm::CallingConv::C, and llvm::sort().
Referenced by dumpStringOffsetsSection().
|
static |
Definition at line 1868 of file DWARFContext.cpp.
References E, llvm::inconvertibleErrorCode(), and llvm::dwarf::toString().
|
static |
Definition at line 902 of file DWARFContext.cpp.
References llvm::DWARFDebugAddrTable::dump(), llvm::DWARFDebugAddrTable::extract(), llvm::DWARFDebugAddrTable::getFullLength(), llvm::DataExtractor::isValidOffset(), llvm::Offset, OS, llvm::DIDumpOptions::RecoverableErrorHandler, and llvm::DIDumpOptions::WarningHandler.
Referenced by llvm::DWARFContext::dump().
|
static |
Definition at line 949 of file DWARFContext.cpp.
References llvm::Data, llvm::DWARFLocationTable::dumpLocationList(), llvm::DWARFDebugLoclists::dumpRange(), E, llvm::Offset, OS, and llvm::DIDumpOptions::RecoverableErrorHandler.
Referenced by llvm::DWARFContext::dump().
|
static |
Definition at line 981 of file DWARFContext.cpp.
References llvm::Data, llvm::DWARFDebugPubTable::dump(), llvm::DWARFDebugPubTable::extract(), OS, and llvm::DIDumpOptions::RecoverableErrorHandler.
Referenced by llvm::DWARFContext::dump().
|
static |
Definition at line 925 of file DWARFContext.cpp.
References llvm::DWARFListTableBase< DWARFListType >::dump(), llvm::DWARFListTableBase< DWARFListType >::extract(), llvm::DataExtractor::isValidOffset(), llvm::DWARFListTableBase< DWARFListType >::length(), llvm::Length, llvm::Offset, OS, and llvm::DIDumpOptions::RecoverableErrorHandler.
Referenced by llvm::DWARFContext::dump().
|
static |
Definition at line 829 of file DWARFContext.cpp.
References collectContributionData(), llvm::createStringError(), llvm::DWARFSection::Data, llvm::dwarf::DWARF32, llvm::format(), llvm::Format, llvm::dwarf::FormatString(), llvm::DataExtractor::getCStr(), llvm::dwarf::getDwarfOffsetByteSize(), llvm::DWARFDataExtractor::getRelocatedValue(), llvm::invalid_argument, llvm::Offset, OS, llvm::DIDumpOptions::RecoverableErrorHandler, and llvm::StringRef::size().
Referenced by llvm::DWARFContext::dump().
|
static |
Dump the UUID load command.
Definition at line 763 of file DWARFContext.cpp.
References OS, and llvm::raw_ostream::write_uuid().
Referenced by llvm::DWARFContext::dump().
void fixupIndex | ( | DWARFContext & | C, |
DWARFUnitIndex & | Index | ||
) |
Definition at line 185 of file DWARFContext.cpp.
References llvm::CallingConv::C, fixupIndexV4(), and fixupIndexV5().
Referenced by ThreadUnsafeDWARFContextState::getCUIndex(), and ThreadUnsafeDWARFContextState::getTUIndex().
void fixupIndexV4 | ( | DWARFContext & | C, |
DWARFUnitIndex & | Index | ||
) |
Definition at line 74 of file DWARFContext.cpp.
References llvm::CallingConv::C, llvm::DWARFSection::Data, llvm::Offset, and llvm::StringRef::size().
Referenced by fixupIndex().
void fixupIndexV5 | ( | DWARFContext & | C, |
DWARFUnitIndex & | Index | ||
) |
Definition at line 142 of file DWARFContext.cpp.
References llvm::CallingConv::C, llvm::DWARFSection::Data, llvm::Offset, and llvm::StringRef::size().
Referenced by fixupIndex().
|
static |
Definition at line 193 of file DWARFContext.cpp.
References llvm::consumeError(), and E.
Referenced by ThreadUnsafeDWARFContextState::getAppleNames(), ThreadUnsafeDWARFContextState::getAppleNamespaces(), ThreadUnsafeDWARFContextState::getAppleObjC(), ThreadUnsafeDWARFContextState::getAppleTypes(), and ThreadUnsafeDWARFContextState::getDebugNames().
|
static |
Definition at line 1608 of file DWARFContext.cpp.
References llvm::ArrayRef< T >::data(), llvm::decodeSLEB128(), llvm::ArrayRef< T >::empty(), llvm::ArrayRef< T >::end(), llvm::Offset, and llvm::ArrayRef< T >::size().
|
static |
TODO: change input parameter from "uint64_t Address" into "SectionedAddress Address".
Definition at line 1573 of file DWARFContext.cpp.
References llvm::Address, llvm::SmallVectorBase< Size_T >::empty(), Name, and llvm::dwarf::toSectionedAddress().
Referenced by llvm::DWARFContext::getLineInfoForAddress(), and llvm::DWARFContext::getLineInfoForAddressRange().
|
static |
Returns the address of symbol relocation used against and a section index.
Used for futher relocations computation. Symbol's section load address is
Definition at line 1882 of file DWARFContext.cpp.
References llvm::createError(), llvm::object::SectionRef::getAddress(), llvm::object::SectionRef::getIndex(), llvm::object::RelocationRef::getRawDataRefImpl(), llvm::object::RelocationRef::getSymbol(), llvm::object::ObjectFile::section_end(), Sym, llvm::object::SymbolicFile::symbol_end(), and llvm::Expected< T >::takeError().
|
static |
Definition at line 1937 of file DWARFContext.cpp.
References llvm::object::RelocationRef::getRawDataRefImpl(), llvm::object::MachOObjectFile::getRelocation(), and llvm::object::MachOObjectFile::isRelocationScattered().