28 LineInfo.FunctionName = Location.Name.str();
31 switch (Specifier.FLIKind) {
37 if (Location.Dir.empty()) {
38 if (Location.Base.empty())
41 LineInfo.FileName = Location.Base.str();
45 LineInfo.FileName =
static_cast<std::string
>(Path);
50 LineInfo.FileName = Location.Base.str();
56 LineInfo.Line = Location.Line;
64std::optional<DILineInfo>
70 auto ResultOrErr = Reader->lookup(
Address.Address);
77 const auto &Result = *ResultOrErr;
81 if (Result.Locations.empty()) {
86 LineInfo.FunctionName = Result.FuncName.str();
96std::optional<DILineInfo>
113 if (
auto FuncInfoOrErr = Reader->getFunctionInfo(
Address.Address)) {
115 if (FuncInfoOrErr->OptLineTable) {
137 auto ResultOrErr = Reader->lookup(
Address.Address);
142 const auto &Result = *ResultOrErr;
146 for (
const auto &Location : Result.Locations) {
static bool fillLineInfoFromLocation(const SourceLocation &Location, DILineInfoSpecifier Specifier, DILineInfo &LineInfo)
DIContext(DIContextKind K)
A format-neutral container for inlined code description.
SmallString - A SmallString is just a SmallVector with methods and accessors that make it work better...
DILineInfoTable getLineInfoForAddressRange(object::SectionedAddress Address, uint64_t Size, DILineInfoSpecifier Specifier=DILineInfoSpecifier()) override
DIInliningInfo getInliningInfoForAddress(object::SectionedAddress Address, DILineInfoSpecifier Specifier=DILineInfoSpecifier()) override
std::optional< DILineInfo > getLineInfoForAddress(object::SectionedAddress Address, DILineInfoSpecifier Specifier=DILineInfoSpecifier()) override
void dump(raw_ostream &OS, DIDumpOptions DIDumpOpts) override
std::vector< DILocal > getLocalsForAddress(object::SectionedAddress Address) override
std::optional< DILineInfo > getLineInfoForDataAddress(object::SectionedAddress Address) override
GsymContext(std::unique_ptr< GsymReader > Reader)
LineTable class contains deserialized versions of line tables for each function's address ranges.
This class implements an extremely fast bulk output stream that can only output to a stream.
LLVM_ABI void append(SmallVectorImpl< char > &path, const Twine &a, const Twine &b="", const Twine &c="", const Twine &d="")
Append to path.
This is an optimization pass for GlobalISel generic memory operations.
SmallVector< std::pair< uint64_t, DILineInfo >, 16 > DILineInfoTable
OutputIt move(R &&Range, OutputIt Out)
Provide wrappers to std::move which take ranges instead of having to pass begin/end explicitly.
void consumeError(Error Err)
Consume a Error without doing anything.
Implement std::hash so that hash_code can be used in STL containers.
Container for dump options that control which debug information will be dumped.
Controls which fields of DILineInfo container should be filled with data.
A format-neutral container for source line information.
static constexpr const char *const BadString
std::optional< uint64_t > StartAddress
Inline information stores the name of the inline function along with an array of address ranges.
Line entries are used to encode the line tables in FunctionInfo objects.
uint64_t Addr
Start address of this line entry.
static const uint64_t UndefSection