[Lldb-commits] [PATCH] D97644: Allow RegisterContext to track if behaves-like-frame-0, allow LanguageRuntime for above frame 0

Jason Molenda via Phabricator via lldb-commits lldb-commits at lists.llvm.org
Sun Feb 28 14:48:08 PST 2021


jasonmolenda created this revision.
jasonmolenda added a reviewer: clayborg.
jasonmolenda added a project: LLDB.
Herald added a subscriber: JDevlieghere.
jasonmolenda requested review of this revision.

This patch allows a RegisterContext to record if it behaves like a 0th frame -- where its pc value should not be decremented before symbolication.  It adds a call out to the LanguageRuntime to get a special UnwindPlan when unwinding from the 0th (first) frame, not just further unwinds up the stack.  The majority of the patch is the mechanical addition of the new ivar/method to expose this, and the LanguageRuntime hook in InitializeZerothFrame(). This is a follow-on patch to the previous https://reviews.llvm.org/D96839

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.

I have API tests when the Swift language runtime is present, but in generic lldb we don't have an environment quite like this.  In the followup patch to DWARFExpression::Evaluate I'll be able to test RegisterContext::BehavesLikeZerothFrame so there will be some test coverage then.

rdar://problem/70398009


Repository:
  rG LLVM Github Monorepo

https://reviews.llvm.org/D97644

Files:
  lldb/include/lldb/Target/LanguageRuntime.h
  lldb/include/lldb/Target/RegisterContext.h
  lldb/include/lldb/Target/RegisterContextUnwind.h
  lldb/source/Target/LanguageRuntime.cpp
  lldb/source/Target/RegisterContextUnwind.cpp
  lldb/source/Target/StackFrameList.cpp
  lldb/source/Target/UnwindLLDB.cpp

-------------- next part --------------
A non-text attachment was scrubbed...
Name: D97644.326999.patch
Type: text/x-patch
Size: 12934 bytes
Desc: not available
URL: <http://lists.llvm.org/pipermail/lldb-commits/attachments/20210228/d535aab0/attachment.bin>


More information about the lldb-commits mailing list