clayborg added a comment.

In D97644#2593228 <https://reviews.llvm.org/D97644#2593228>, @jasonmolenda 
wrote:

> Another alternative to RegisterContext::BehavesLikeZerothFrame that I've 
> thought of is RegisterContext::GetPCForSymbolication, similar to GetPC() 
> today.  I think everyone who is decrementing $pc is doing it for 
> symbolication, so having this hint and then leaving it to everyone to 
> decrement-or-not may not be a great choice.  It may be easier for 
> higher-levels if RegisterContext can provide an Address suitable for 
> symbolication directly.

If "behaves_like_zeroth_frame" is in the register context for the purpose of 
backing up the address, then I vote for 
RegisterContext::GetPCForSymbolication(). We can actually backup the PC by the 
min instruction size if we really want to get fancy. It would be really nice to 
have this centralized in one location so we don't have a bunch of code 
locations backing up the PC.

> For the Swift async unwinds, the saved pc values we have are not normal ABI 
> style calls, and backing up the resume pc results in bad symbolication. I've 
> been meaning to add a capability like this to RegisterContext for a while for 
> DWARFExpression::Evaluate where we get a frame's pc value to look up a 
> location list entry too (and do not decr the pc resulting in bogus values 
> being displayed for noreturn calls) - I'll fix that in a separate patch.

What does this mean for ReportCrash and other tools that like to just walk the 
frame pointer chain? Does that still produce valid stack trace, just with some 
Swift async frames missing?


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D97644/new/

https://reviews.llvm.org/D97644

_______________________________________________
lldb-commits mailing list
[email protected]
https://lists.llvm.org/cgi-bin/mailman/listinfo/lldb-commits

Reply via email to