-
Notifications
You must be signed in to change notification settings - Fork 5k
[cDAC] ARM Stackwalking #116645
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
[cDAC] ARM Stackwalking #116645
Conversation
Tagging subscribers to this area: @steveisok, @dotnet/dotnet-diag |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Pull Request Overview
This PR adds ARM stackwalking support by introducing an ARM-specific unwinder, context, and frame handler along with associated type descriptor and documentation updates. The key changes include:
- Implementation of ARMUnwinder, ARMContext, and ARMFrameHandler to support ARM stackwalking.
- Updates to the InlinedCallFrame to include the new SPAfterProlog field for ARM.
- Adjustments to data descriptors and documentation to accommodate ARM32 specifics.
Reviewed Changes
Copilot reviewed 9 out of 10 changed files in this pull request and generated 1 comment.
Show a summary per file
File | Description |
---|---|
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Data/Frames/InlinedCallFrame.cs | Adds SPAfterProlog field initialization for ARM. |
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/StackWalk/FrameHandling/FrameIterator.cs | Introduces ARM frame handling by mapping ARMContext to ARMFrameHandler. |
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/StackWalk/FrameHandling/ARMFrameHandler.cs | Implements ARM specific handling for inlined call frames and faulting exception frames. |
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/StackWalk/Context/ARMContext.cs | Provides a full ARM-specific context struct implementation. |
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/StackWalk/Context/ARM/LookupValues.cs | Introduces lookup tables using modern collection initialization syntax. |
src/coreclr/debug/runtimeinfo/datadescriptor.h | Adds ARM-specific type definitions for the DAC. |
docs/design/datacontracts/StackWalk.md | Updates documentation to describe the new SPAfterProlog field for ARM. |
.../cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/StackWalk/Context/M128.cs
Outdated
Show resolved
Hide resolved
…er.Contracts/Contracts/StackWalk/Context/M128.cs Co-authored-by: Copilot <[email protected]>
Changes
IStackWalk
ARMUnwinder
ARMFrameHandler
SPAfterProlog
General ARM32 conversion fixes
Changes done in separate PR: #116720
DAC GetThreadData properly convertsfirstNestedException
to aCLRDATA_ADDRESS
CodePointerUtils.CodePointerFromAddress
properly handlesTargetCodePointer.Null
case. Previously it would append the thumb bit causing logic checks to fail.