-
Notifications
You must be signed in to change notification settings - Fork 5.1k
[cDAC] Support x86 stackwalking #116072
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
max-charlamb
merged 61 commits into
dotnet:main
from
max-charlamb:cdac-funclets-x86-wip-2
Jun 17, 2025
Merged
[cDAC] Support x86 stackwalking #116072
Changes from all commits
Commits
Show all changes
61 commits
Select commit
Hold shift + click to select a range
b5140fe
Implement partial ExecutionManager GetFuncletStartAddress
89e9505
allow nativeAOT compilation on x86
02f14ef
implement GCInfo and RelativeAddress lookup
99a7f56
wip
6829dda
wip working PushedArgDepth
f71b823
finish the bones of x86 unwinder
3fe4a8a
continued testing and bug fixes
6b58012
fix issues with ICFs
fba0091
add docs for ExecutionManager changes
7f6b388
add doc for IsFunclet
2917ef9
fix some build issues
34a7169
move gcinfo decoding into folder
1b19fb2
move x86 context next to other contexts
3092546
add some doc comments
3b02419
remove debug print helpers
05e5909
use constant
5e813b6
add x86 stackwalk docs
1505bbb
lazily read ArgTable
e648dda
add datadescriptors for CalleeSavedRegisters on x86
2335f6d
remove unused GCInfo decoders
7f06960
fix stackwalk logic for x86
570659d
fix UnwindEspFrame
7e75287
R2R find GCInfo correctly
d7a99f0
Handle parsing ArgTab correctly when ArgTabOffset is not present
d6ecb88
loosen GetUsefulGlobals assertion
e1feb95
remove prints
aeb8dc4
refactor ReadyToRunJitManager to de-duplicate RuntimeFunction lookup …
61fbed5
comments/cleanup InfoHdr.cs
af6a9b1
add rts docs
82eb5aa
remove r2r GCDecoder change
ebf14c3
clean up GCInfo.cs
350b993
move x86 specific stackwalking helpers into namespace
233615e
import nit
dce3e02
fix
dff89fd
overriding increment/decrement is not required
2170a9f
fix some TODOs in the X86 Unwinder
9710bde
use xor for InfoHdr REV_PINVOKE_OFFSET
43eed4f
convert to use ClrDataAddress
7909b7d
add readytorunheader datadescriptors
408c566
clean up R2RJitManager
55e26f9
improve GCInfoVersion handling
max-charlamb 675673b
always check for JitHalt
max-charlamb 0bcaaf0
remove magic numbers in RTS contract
max-charlamb 26d4b7d
remove todos
max-charlamb 581ea4a
Merge remote-tracking branch 'origin/main' into cdac-funclets-x86-wip-2
max-charlamb 7e4d18f
remove unused datadescriptor
max-charlamb 905b3dc
fix managed tests
max-charlamb 116f178
Merge remote-tracking branch 'origin/main' into cdac-funclets-x86-wip-2
max-charlamb 38c5048
Merge branch 'cdac-funclets-x86-wip-2' of github.com:max-charlamb/run…
max-charlamb 4b2df0f
update to match #116388
max-charlamb c8bba50
clean up docs
max-charlamb 9160287
use span for const data
max-charlamb 0a5b3d5
fix unwinder issue
max-charlamb ef1281e
add check for GCInfo version
max-charlamb 423ff27
comments
max-charlamb fe4ead1
remove FeatureEHFunclets check in modified code
max-charlamb 4c96d48
add comment explaining loosened GetUsefulGlobals assertions
max-charlamb cf8dd64
word
max-charlamb 49d1631
Merge branch 'main' into cdac-funclets-x86-wip-2
max-charlamb 7b18c84
Merge branch 'main' into cdac-funclets-x86-wip-2
max-charlamb 8b7f03f
fix merge conflict
max-charlamb File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
12 changes: 12 additions & 0 deletions
12
...stics.DataContractReader.Abstractions/Contracts/Extensions/IExecutionManagerExtensions.cs
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,12 @@ | ||
// Licensed to the .NET Foundation under one or more agreements. | ||
// The .NET Foundation licenses this file to you under the MIT license. | ||
|
||
namespace Microsoft.Diagnostics.DataContractReader.Contracts.Extensions; | ||
|
||
public static class IExecutionManagerExtensions | ||
{ | ||
public static bool IsFunclet(this IExecutionManager eman, CodeBlockHandle codeBlockHandle) | ||
{ | ||
return eman.GetStartAddress(codeBlockHandle) != eman.GetFuncletStartAddress(codeBlockHandle); | ||
} | ||
} |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
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.
I think you can delete this constant too
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.
There are a couple other uses of the
FeatureEHFunclets
flag, I was going to open a different PR to totally remove the datadescriptor if that is okay.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.
Ok
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.
#116743 created, to avoid merge conflicts it will fail to build until this PR is merged