Skip to content

[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

Merged
merged 23 commits into from
Jun 25, 2025
Merged

[cDAC] ARM Stackwalking #116645

merged 23 commits into from
Jun 25, 2025

Conversation

max-charlamb
Copy link
Contributor

@max-charlamb max-charlamb commented Jun 13, 2025

Changes

IStackWalk

General ARM32 conversion fixes

Changes done in separate PR: #116720

  • DAC GetThreadData properly converts firstNestedException to a CLRDATA_ADDRESS
  • CodePointerUtils.CodePointerFromAddress properly handles TargetCodePointer.Null case. Previously it would append the thumb bit causing logic checks to fail.

Copy link
Contributor

Tagging subscribers to this area: @steveisok, @dotnet/dotnet-diag
See info in area-owners.md if you want to be subscribed.

@max-charlamb max-charlamb marked this pull request as ready for review June 19, 2025 19:19
Copy link
Contributor

@Copilot Copilot AI left a 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.

@max-charlamb max-charlamb requested a review from mangod9 June 19, 2025 19:19
…er.Contracts/Contracts/StackWalk/Context/M128.cs

Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
@max-charlamb max-charlamb mentioned this pull request Jun 25, 2025
24 tasks
@max-charlamb max-charlamb merged commit 385083c into dotnet:main Jun 25, 2025
93 of 95 checks passed
@max-charlamb max-charlamb deleted the cdac-arm32-2 branch June 25, 2025 16:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants