diff options
Diffstat (limited to 'llvm/lib/DebugInfo/GSYM/FunctionInfo.cpp')
-rw-r--r-- | llvm/lib/DebugInfo/GSYM/FunctionInfo.cpp | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/llvm/lib/DebugInfo/GSYM/FunctionInfo.cpp b/llvm/lib/DebugInfo/GSYM/FunctionInfo.cpp index 6731a8b27443d..cef1b9498c5c8 100644 --- a/llvm/lib/DebugInfo/GSYM/FunctionInfo.cpp +++ b/llvm/lib/DebugInfo/GSYM/FunctionInfo.cpp @@ -25,8 +25,11 @@ enum InfoType : uint32_t { }; raw_ostream &llvm::gsym::operator<<(raw_ostream &OS, const FunctionInfo &FI) { - OS << '[' << HEX64(FI.Range.Start) << '-' << HEX64(FI.Range.End) << "): " - << "Name=" << HEX32(FI.Name) << '\n' << FI.OptLineTable << FI.Inline; + OS << FI.Range << ": " << "Name=" << HEX32(FI.Name) << '\n'; + if (FI.OptLineTable) + OS << FI.OptLineTable << '\n'; + if (FI.Inline) + OS << FI.Inline << '\n'; return OS; } @@ -167,7 +170,7 @@ llvm::Expected<LookupResult> FunctionInfo::lookup(DataExtractor &Data, // This function will be called with the result of a binary search of the // address table, we must still make sure the address does not fall into a // gap between functions are after the last function. - if (Addr >= LR.FuncRange.End) + if (LR.FuncRange.size() > 0 && !LR.FuncRange.contains(Addr)) return createStringError(std::errc::io_error, "address 0x%" PRIx64 " is not in GSYM", Addr); @@ -220,6 +223,7 @@ llvm::Expected<LookupResult> FunctionInfo::lookup(DataExtractor &Data, // location as best we can and return. SourceLocation SrcLoc; SrcLoc.Name = LR.FuncName; + SrcLoc.Offset = Addr - FuncAddr; LR.Locations.push_back(SrcLoc); return LR; } @@ -232,6 +236,7 @@ llvm::Expected<LookupResult> FunctionInfo::lookup(DataExtractor &Data, SourceLocation SrcLoc; SrcLoc.Name = LR.FuncName; + SrcLoc.Offset = Addr - FuncAddr; SrcLoc.Dir = GR.getString(LineEntryFile->Dir); SrcLoc.Base = GR.getString(LineEntryFile->Base); SrcLoc.Line = LineEntry->Line; |