diff options
Diffstat (limited to 'llvm/lib/DebugInfo/GSYM/InlineInfo.cpp')
-rw-r--r-- | llvm/lib/DebugInfo/GSYM/InlineInfo.cpp | 18 |
1 files changed, 11 insertions, 7 deletions
diff --git a/llvm/lib/DebugInfo/GSYM/InlineInfo.cpp b/llvm/lib/DebugInfo/GSYM/InlineInfo.cpp index 1b8c974fdcd20..21679b1b78aa3 100644 --- a/llvm/lib/DebugInfo/GSYM/InlineInfo.cpp +++ b/llvm/lib/DebugInfo/GSYM/InlineInfo.cpp @@ -142,13 +142,17 @@ static bool lookup(const GsymReader &GR, DataExtractor &Data, uint64_t &Offset, return false; } - SourceLocation SrcLoc; - SrcLoc.Name = SrcLocs.back().Name; - SrcLoc.Dir = GR.getString(CallFile->Dir); - SrcLoc.Base = GR.getString(CallFile->Base); - SrcLoc.Line = Inline.CallLine; - SrcLocs.back().Name = GR.getString(Inline.Name); - SrcLocs.push_back(SrcLoc); + if (CallFile->Dir || CallFile->Base) { + SourceLocation SrcLoc; + SrcLoc.Name = SrcLocs.back().Name; + SrcLoc.Offset = SrcLocs.back().Offset; + SrcLoc.Dir = GR.getString(CallFile->Dir); + SrcLoc.Base = GR.getString(CallFile->Base); + SrcLoc.Line = Inline.CallLine; + SrcLocs.back().Name = GR.getString(Inline.Name); + SrcLocs.back().Offset = Addr - Inline.Ranges[0].Start; + SrcLocs.push_back(SrcLoc); + } return true; } |