[cDAC] implement GetRuntimeNameByAddress - #127134

Merged
rcj1 merged 18 commits into
dotnet:mainfrom
rcj1:rawgetmethodname2
May 12, 2026
Merged

[cDAC] implement GetRuntimeNameByAddress#127134
rcj1 merged 18 commits into
dotnet:mainfrom
rcj1:rawgetmethodname2

Conversation

@rcj1

@rcj1rcj1 commented Apr 20, 2026

Copy link
Copy Markdown
Contributor

This method will annotate stubs with the stub type name: for example "CallCountingStub" "VSD_DispatchStub", as well as providing auxiliary symbol names. It will also attempt to resolve Precode stubs.

CopilotAI review requested due to automatic review settings April 20, 2026 05:49
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

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

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

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 cDAC support needed to implement IXCLRDataProcess::GetRuntimeNameByAddress by enabling stub-kind classification in the ExecutionManager contract, exposing additional RangeSection/range-list metadata, and wiring up the corresponding test and native data-descriptor updates.

Changes:

  • Implement GetRuntimeNameByAddress in the managed legacy SOS DAC implementation using cDAC contracts (ExecutionManager, PrecodeStubs, AuxiliarySymbols).
  • Add stub classification (StubKind, GetStubKind) and the data plumbing needed for stub range lists (RangeSection.RangeList, CodeRangeMapRangeList).
  • Extend tests/mocks and native CDAC descriptors/globals to support the new data contract fields and globals.

Reviewed changes

Copilot reviewed 22 out of 22 changed files in this pull request and generated 10 comments.

Show a summary per file
FileDescription
src/native/managed/cdac/tests/MockDescriptors/MockDescriptors.ExecutionManager.csExtends mock RangeSection with RangeList and adds mock CodeRangeMapRangeList layout + builder helpers.
src/native/managed/cdac/tests/ExecutionManager/ExecutionManagerTests.csAdds tests for stub-kind classification and registers the new mock datatype.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Legacy/SOSDacImpl.IXCLRDataProcess.csImplements GetRuntimeNameByAddress using cDAC contracts and formats CLRStub names.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Data/RangeSection.csAdds RangeList pointer field to the managed RangeSection data model.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Data/CodeRangeMapRangeList.csIntroduces managed data model for CodeRangeMapRangeList.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/PrecodeStubs_Common.csAdds GetCandidateEntryPoints enumeration support for precode name resolution.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/ExecutionManager/ExecutionManager_1.csExposes GetStubKind in v1 contract wrapper.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/ExecutionManager/ExecutionManager_2.csExposes GetStubKind in v2 contract wrapper.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/ExecutionManager/ExecutionManagerCore.csImplements GetStubKind logic (globals + range-section lookup) and reads new optional globals.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/ExecutionManager/ExecutionManagerCore.ReadyToRunJitManager.csAdds stub-kind classification for R2R thunk regions.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/ExecutionManager/ExecutionManagerCore.EEJitManager.csAdds stub-kind classification for range-list stubs and code-header stub code blocks.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Constants.csAdds new global names for well-known stubs/helpers.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Abstractions/DataType.csAdds CodeRangeMapRangeList to the DataType enum.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Abstractions/Contracts/IPrecodeStubs.csAdds GetCandidateEntryPoints API to support precode resolution.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Abstractions/Contracts/IExecutionManager.csAdds StubKind enum and GetStubKind API.
src/coreclr/vm/loaderallocator.hppExposes CodeRangeMapRangeList::_rangeListType via cdac_data<>.
src/coreclr/vm/datadescriptor/datadescriptor.incAdds RangeSection.RangeList, introduces CodeRangeMapRangeList type descriptor, and exports new stub globals.
src/coreclr/vm/codeman.hAdds cdac_data<RangeSection>::RangeList offset.
src/coreclr/inc/gfunc_list.hAdds DACGFN entries for new helper globals (platform-conditional).
src/coreclr/debug/daccess/daccess.cppAdjusts CLRStub address formatting to fixed-width hex.
docs/design/datacontracts/PrecodeStubs.mdDocuments new GetCandidateEntryPoints API and its intended behavior.
docs/design/datacontracts/ExecutionManager.mdDocuments GetStubKind, new RangeList/CodeRangeMapRangeList descriptors, and new globals.

Comment threadsrc/native/managed/cdac/tests/ExecutionManager/ExecutionManagerTests.cs Outdated
Comment threadsrc/native/managed/cdac/tests/ExecutionManager/ExecutionManagerTests.cs Outdated
Comment threadsrc/native/managed/cdac/tests/ExecutionManager/ExecutionManagerTests.cs Outdated
Comment threadsrc/native/managed/cdac/tests/ExecutionManager/ExecutionManagerTests.cs Outdated
…rTests.cs
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings April 20, 2026 06:12

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 22 out of 22 changed files in this pull request and generated 1 comment.

Comment threaddocs/design/datacontracts/ExecutionManager.md Outdated

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 26 out of 26 changed files in this pull request and generated 1 comment.

Comment threadsrc/coreclr/debug/daccess/daccess.cpp Outdated
Comment threaddocs/design/datacontracts/PrecodeStubs.md Outdated
Comment threaddocs/design/datacontracts/ExecutionManager.md Outdated
CopilotAI review requested due to automatic review settings April 22, 2026 23:21
CopilotAI review requested due to automatic review settings May 5, 2026 21:33

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 26 out of 26 changed files in this pull request and generated 5 comments.

Comment threadsrc/coreclr/debug/daccess/daccess.cpp
Comment threaddocs/design/datacontracts/ExecutionManager.md
Comment threaddocs/design/datacontracts/PrecodeStubs.md
Comment threadsrc/coreclr/debug/daccess/daccess.cpp
Comment threaddocs/design/datacontracts/ExecutionManager.md Outdated
Co-authored-by: Jan Kotas <jkotas@microsoft.com>
CopilotAI review requested due to automatic review settings May 7, 2026 03:12

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot's findings

  • Files reviewed: 26/26 changed files
  • Comments generated: 7

Comment threadsrc/coreclr/debug/daccess/daccess.cpp
Comment threaddocs/design/datacontracts/ExecutionManager.md
CopilotAI review requested due to automatic review settings May 11, 2026 15:55

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot's findings

Comments suppressed due to low confidence (1)

src/coreclr/vm/codeman.h:136

  • GetStubCodeBlockKindString currently returns "MethodCallThunk" for STUB_CODE_BLOCK_DYNAMICHELPER and STUB_CODE_BLOCK_FIXUPPRECODE, and it doesn't handle STUB_CODE_BLOCK_STUBPRECODE at all (falls back to "Unknown"). Since ReportStubBlock/perfmap uses this string, this will mislabel these stub kinds. Please add explicit cases for DynamicHelper/StubPrecode/FixupPrecode with appropriate names (consistent with other stub kind names like "JumpStub", "CallCountingStub", etc.).
inline const char *GetStubCodeBlockKindString(StubCodeBlockKind kind)
{
switch (kind)
{
case STUB_CODE_BLOCK_JUMPSTUB:
return "JumpStub";
case STUB_CODE_BLOCK_METHOD_CALL_THUNK:
return "MethodCallThunk";
#ifdef FEATURE_TIERED_COMPILATION
case STUB_CODE_BLOCK_CALLCOUNTING:
return "CallCountingStub";
#endif
case STUB_CODE_BLOCK_DYNAMICHELPER:
return "MethodCallThunk";
case STUB_CODE_BLOCK_FIXUPPRECODE:
return "MethodCallThunk";
#ifdef FEATURE_VIRTUAL_STUB_DISPATCH
  • Files reviewed: 26/26 changed files
  • Comments generated: 4

Comment threaddocs/design/datacontracts/ExecutionManager.md
@rcj1

rcj1 commented May 12, 2026

Copy link
Copy Markdown
ContributorAuthor

/ba-g timeouts :(

@rcj1
rcj1 merged commit 685f594 into dotnet:mainMay 12, 2026
111 of 122 checks passed
@rcj1
rcj1 deleted the rawgetmethodname2 branch May 12, 2026 17:35
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Jun 12, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@rcj1@noahfalk@jkotas
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

[cDAC] implement GetRuntimeNameByAddress - #127134

Merged
rcj1 merged 18 commits into
dotnet:mainfrom
rcj1:rawgetmethodname2
May 12, 2026
Merged

[cDAC] implement GetRuntimeNameByAddress#127134
rcj1 merged 18 commits into
dotnet:mainfrom
rcj1:rawgetmethodname2

Conversation

@rcj1

@rcj1rcj1 commented Apr 20, 2026

Copy link
Copy Markdown
Contributor

This method will annotate stubs with the stub type name: for example "CallCountingStub" "VSD_DispatchStub", as well as providing auxiliary symbol names. It will also attempt to resolve Precode stubs.

CopilotAI review requested due to automatic review settings April 20, 2026 05:49
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

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

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

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 cDAC support needed to implement IXCLRDataProcess::GetRuntimeNameByAddress by enabling stub-kind classification in the ExecutionManager contract, exposing additional RangeSection/range-list metadata, and wiring up the corresponding test and native data-descriptor updates.

Changes:

  • Implement GetRuntimeNameByAddress in the managed legacy SOS DAC implementation using cDAC contracts (ExecutionManager, PrecodeStubs, AuxiliarySymbols).
  • Add stub classification (StubKind, GetStubKind) and the data plumbing needed for stub range lists (RangeSection.RangeList, CodeRangeMapRangeList).
  • Extend tests/mocks and native CDAC descriptors/globals to support the new data contract fields and globals.

Reviewed changes

Copilot reviewed 22 out of 22 changed files in this pull request and generated 10 comments.

Show a summary per file
FileDescription
src/native/managed/cdac/tests/MockDescriptors/MockDescriptors.ExecutionManager.csExtends mock RangeSection with RangeList and adds mock CodeRangeMapRangeList layout + builder helpers.
src/native/managed/cdac/tests/ExecutionManager/ExecutionManagerTests.csAdds tests for stub-kind classification and registers the new mock datatype.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Legacy/SOSDacImpl.IXCLRDataProcess.csImplements GetRuntimeNameByAddress using cDAC contracts and formats CLRStub names.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Data/RangeSection.csAdds RangeList pointer field to the managed RangeSection data model.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Data/CodeRangeMapRangeList.csIntroduces managed data model for CodeRangeMapRangeList.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/PrecodeStubs_Common.csAdds GetCandidateEntryPoints enumeration support for precode name resolution.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/ExecutionManager/ExecutionManager_1.csExposes GetStubKind in v1 contract wrapper.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/ExecutionManager/ExecutionManager_2.csExposes GetStubKind in v2 contract wrapper.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/ExecutionManager/ExecutionManagerCore.csImplements GetStubKind logic (globals + range-section lookup) and reads new optional globals.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/ExecutionManager/ExecutionManagerCore.ReadyToRunJitManager.csAdds stub-kind classification for R2R thunk regions.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/ExecutionManager/ExecutionManagerCore.EEJitManager.csAdds stub-kind classification for range-list stubs and code-header stub code blocks.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Constants.csAdds new global names for well-known stubs/helpers.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Abstractions/DataType.csAdds CodeRangeMapRangeList to the DataType enum.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Abstractions/Contracts/IPrecodeStubs.csAdds GetCandidateEntryPoints API to support precode resolution.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Abstractions/Contracts/IExecutionManager.csAdds StubKind enum and GetStubKind API.
src/coreclr/vm/loaderallocator.hppExposes CodeRangeMapRangeList::_rangeListType via cdac_data<>.
src/coreclr/vm/datadescriptor/datadescriptor.incAdds RangeSection.RangeList, introduces CodeRangeMapRangeList type descriptor, and exports new stub globals.
src/coreclr/vm/codeman.hAdds cdac_data<RangeSection>::RangeList offset.
src/coreclr/inc/gfunc_list.hAdds DACGFN entries for new helper globals (platform-conditional).
src/coreclr/debug/daccess/daccess.cppAdjusts CLRStub address formatting to fixed-width hex.
docs/design/datacontracts/PrecodeStubs.mdDocuments new GetCandidateEntryPoints API and its intended behavior.
docs/design/datacontracts/ExecutionManager.mdDocuments GetStubKind, new RangeList/CodeRangeMapRangeList descriptors, and new globals.

Comment threadsrc/native/managed/cdac/tests/ExecutionManager/ExecutionManagerTests.cs Outdated
Comment threadsrc/native/managed/cdac/tests/ExecutionManager/ExecutionManagerTests.cs Outdated
Comment threadsrc/native/managed/cdac/tests/ExecutionManager/ExecutionManagerTests.cs Outdated
Comment threadsrc/native/managed/cdac/tests/ExecutionManager/ExecutionManagerTests.cs Outdated
…rTests.cs
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings April 20, 2026 06:12

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 22 out of 22 changed files in this pull request and generated 1 comment.

Comment threaddocs/design/datacontracts/ExecutionManager.md Outdated

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 26 out of 26 changed files in this pull request and generated 1 comment.

Comment threadsrc/coreclr/debug/daccess/daccess.cpp Outdated
Comment threaddocs/design/datacontracts/PrecodeStubs.md Outdated
Comment threaddocs/design/datacontracts/ExecutionManager.md Outdated
CopilotAI review requested due to automatic review settings April 22, 2026 23:21
CopilotAI review requested due to automatic review settings May 5, 2026 21:33

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 26 out of 26 changed files in this pull request and generated 5 comments.

Comment threadsrc/coreclr/debug/daccess/daccess.cpp
Comment threaddocs/design/datacontracts/ExecutionManager.md
Comment threaddocs/design/datacontracts/PrecodeStubs.md
Comment threadsrc/coreclr/debug/daccess/daccess.cpp
Comment threaddocs/design/datacontracts/ExecutionManager.md Outdated
Co-authored-by: Jan Kotas <jkotas@microsoft.com>
CopilotAI review requested due to automatic review settings May 7, 2026 03:12

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot's findings

  • Files reviewed: 26/26 changed files
  • Comments generated: 7

Comment threadsrc/coreclr/debug/daccess/daccess.cpp
Comment threaddocs/design/datacontracts/ExecutionManager.md
CopilotAI review requested due to automatic review settings May 11, 2026 15:55

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot's findings

Comments suppressed due to low confidence (1)

src/coreclr/vm/codeman.h:136

  • GetStubCodeBlockKindString currently returns "MethodCallThunk" for STUB_CODE_BLOCK_DYNAMICHELPER and STUB_CODE_BLOCK_FIXUPPRECODE, and it doesn't handle STUB_CODE_BLOCK_STUBPRECODE at all (falls back to "Unknown"). Since ReportStubBlock/perfmap uses this string, this will mislabel these stub kinds. Please add explicit cases for DynamicHelper/StubPrecode/FixupPrecode with appropriate names (consistent with other stub kind names like "JumpStub", "CallCountingStub", etc.).
inline const char *GetStubCodeBlockKindString(StubCodeBlockKind kind)
{
switch (kind)
{
case STUB_CODE_BLOCK_JUMPSTUB:
return "JumpStub";
case STUB_CODE_BLOCK_METHOD_CALL_THUNK:
return "MethodCallThunk";
#ifdef FEATURE_TIERED_COMPILATION
case STUB_CODE_BLOCK_CALLCOUNTING:
return "CallCountingStub";
#endif
case STUB_CODE_BLOCK_DYNAMICHELPER:
return "MethodCallThunk";
case STUB_CODE_BLOCK_FIXUPPRECODE:
return "MethodCallThunk";
#ifdef FEATURE_VIRTUAL_STUB_DISPATCH
  • Files reviewed: 26/26 changed files
  • Comments generated: 4

Comment threaddocs/design/datacontracts/ExecutionManager.md
@rcj1

rcj1 commented May 12, 2026

Copy link
Copy Markdown
ContributorAuthor

/ba-g timeouts :(

@rcj1
rcj1 merged commit 685f594 into dotnet:mainMay 12, 2026
111 of 122 checks passed
@rcj1
rcj1 deleted the rawgetmethodname2 branch May 12, 2026 17:35
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Jun 12, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@rcj1@noahfalk@jkotas
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

[cDAC] implement GetRuntimeNameByAddress - #127134

Merged
rcj1 merged 18 commits into
dotnet:mainfrom
rcj1:rawgetmethodname2
May 12, 2026
Merged

[cDAC] implement GetRuntimeNameByAddress#127134
rcj1 merged 18 commits into
dotnet:mainfrom
rcj1:rawgetmethodname2

Conversation

@rcj1

@rcj1rcj1 commented Apr 20, 2026

Copy link
Copy Markdown
Contributor

This method will annotate stubs with the stub type name: for example "CallCountingStub" "VSD_DispatchStub", as well as providing auxiliary symbol names. It will also attempt to resolve Precode stubs.

CopilotAI review requested due to automatic review settings April 20, 2026 05:49
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

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

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

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 cDAC support needed to implement IXCLRDataProcess::GetRuntimeNameByAddress by enabling stub-kind classification in the ExecutionManager contract, exposing additional RangeSection/range-list metadata, and wiring up the corresponding test and native data-descriptor updates.

Changes:

  • Implement GetRuntimeNameByAddress in the managed legacy SOS DAC implementation using cDAC contracts (ExecutionManager, PrecodeStubs, AuxiliarySymbols).
  • Add stub classification (StubKind, GetStubKind) and the data plumbing needed for stub range lists (RangeSection.RangeList, CodeRangeMapRangeList).
  • Extend tests/mocks and native CDAC descriptors/globals to support the new data contract fields and globals.

Reviewed changes

Copilot reviewed 22 out of 22 changed files in this pull request and generated 10 comments.

Show a summary per file
FileDescription
src/native/managed/cdac/tests/MockDescriptors/MockDescriptors.ExecutionManager.csExtends mock RangeSection with RangeList and adds mock CodeRangeMapRangeList layout + builder helpers.
src/native/managed/cdac/tests/ExecutionManager/ExecutionManagerTests.csAdds tests for stub-kind classification and registers the new mock datatype.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Legacy/SOSDacImpl.IXCLRDataProcess.csImplements GetRuntimeNameByAddress using cDAC contracts and formats CLRStub names.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Data/RangeSection.csAdds RangeList pointer field to the managed RangeSection data model.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Data/CodeRangeMapRangeList.csIntroduces managed data model for CodeRangeMapRangeList.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/PrecodeStubs_Common.csAdds GetCandidateEntryPoints enumeration support for precode name resolution.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/ExecutionManager/ExecutionManager_1.csExposes GetStubKind in v1 contract wrapper.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/ExecutionManager/ExecutionManager_2.csExposes GetStubKind in v2 contract wrapper.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/ExecutionManager/ExecutionManagerCore.csImplements GetStubKind logic (globals + range-section lookup) and reads new optional globals.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/ExecutionManager/ExecutionManagerCore.ReadyToRunJitManager.csAdds stub-kind classification for R2R thunk regions.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/ExecutionManager/ExecutionManagerCore.EEJitManager.csAdds stub-kind classification for range-list stubs and code-header stub code blocks.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Constants.csAdds new global names for well-known stubs/helpers.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Abstractions/DataType.csAdds CodeRangeMapRangeList to the DataType enum.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Abstractions/Contracts/IPrecodeStubs.csAdds GetCandidateEntryPoints API to support precode resolution.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Abstractions/Contracts/IExecutionManager.csAdds StubKind enum and GetStubKind API.
src/coreclr/vm/loaderallocator.hppExposes CodeRangeMapRangeList::_rangeListType via cdac_data<>.
src/coreclr/vm/datadescriptor/datadescriptor.incAdds RangeSection.RangeList, introduces CodeRangeMapRangeList type descriptor, and exports new stub globals.
src/coreclr/vm/codeman.hAdds cdac_data<RangeSection>::RangeList offset.
src/coreclr/inc/gfunc_list.hAdds DACGFN entries for new helper globals (platform-conditional).
src/coreclr/debug/daccess/daccess.cppAdjusts CLRStub address formatting to fixed-width hex.
docs/design/datacontracts/PrecodeStubs.mdDocuments new GetCandidateEntryPoints API and its intended behavior.
docs/design/datacontracts/ExecutionManager.mdDocuments GetStubKind, new RangeList/CodeRangeMapRangeList descriptors, and new globals.

Comment threadsrc/native/managed/cdac/tests/ExecutionManager/ExecutionManagerTests.cs Outdated
Comment threadsrc/native/managed/cdac/tests/ExecutionManager/ExecutionManagerTests.cs Outdated
Comment threadsrc/native/managed/cdac/tests/ExecutionManager/ExecutionManagerTests.cs Outdated
Comment threadsrc/native/managed/cdac/tests/ExecutionManager/ExecutionManagerTests.cs Outdated
…rTests.cs
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings April 20, 2026 06:12

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 22 out of 22 changed files in this pull request and generated 1 comment.

Comment threaddocs/design/datacontracts/ExecutionManager.md Outdated

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 26 out of 26 changed files in this pull request and generated 1 comment.

Comment threadsrc/coreclr/debug/daccess/daccess.cpp Outdated
Comment threaddocs/design/datacontracts/PrecodeStubs.md Outdated
Comment threaddocs/design/datacontracts/ExecutionManager.md Outdated
CopilotAI review requested due to automatic review settings April 22, 2026 23:21
CopilotAI review requested due to automatic review settings May 5, 2026 21:33

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 26 out of 26 changed files in this pull request and generated 5 comments.

Comment threadsrc/coreclr/debug/daccess/daccess.cpp
Comment threaddocs/design/datacontracts/ExecutionManager.md
Comment threaddocs/design/datacontracts/PrecodeStubs.md
Comment threadsrc/coreclr/debug/daccess/daccess.cpp
Comment threaddocs/design/datacontracts/ExecutionManager.md Outdated
Co-authored-by: Jan Kotas <jkotas@microsoft.com>
CopilotAI review requested due to automatic review settings May 7, 2026 03:12

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot's findings

  • Files reviewed: 26/26 changed files
  • Comments generated: 7

Comment threadsrc/coreclr/debug/daccess/daccess.cpp
Comment threaddocs/design/datacontracts/ExecutionManager.md
CopilotAI review requested due to automatic review settings May 11, 2026 15:55

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot's findings

Comments suppressed due to low confidence (1)

src/coreclr/vm/codeman.h:136

  • GetStubCodeBlockKindString currently returns "MethodCallThunk" for STUB_CODE_BLOCK_DYNAMICHELPER and STUB_CODE_BLOCK_FIXUPPRECODE, and it doesn't handle STUB_CODE_BLOCK_STUBPRECODE at all (falls back to "Unknown"). Since ReportStubBlock/perfmap uses this string, this will mislabel these stub kinds. Please add explicit cases for DynamicHelper/StubPrecode/FixupPrecode with appropriate names (consistent with other stub kind names like "JumpStub", "CallCountingStub", etc.).
inline const char *GetStubCodeBlockKindString(StubCodeBlockKind kind)
{
switch (kind)
{
case STUB_CODE_BLOCK_JUMPSTUB:
return "JumpStub";
case STUB_CODE_BLOCK_METHOD_CALL_THUNK:
return "MethodCallThunk";
#ifdef FEATURE_TIERED_COMPILATION
case STUB_CODE_BLOCK_CALLCOUNTING:
return "CallCountingStub";
#endif
case STUB_CODE_BLOCK_DYNAMICHELPER:
return "MethodCallThunk";
case STUB_CODE_BLOCK_FIXUPPRECODE:
return "MethodCallThunk";
#ifdef FEATURE_VIRTUAL_STUB_DISPATCH
  • Files reviewed: 26/26 changed files
  • Comments generated: 4

Comment threaddocs/design/datacontracts/ExecutionManager.md
@rcj1

rcj1 commented May 12, 2026

Copy link
Copy Markdown
ContributorAuthor

/ba-g timeouts :(

@rcj1
rcj1 merged commit 685f594 into dotnet:mainMay 12, 2026
111 of 122 checks passed
@rcj1
rcj1 deleted the rawgetmethodname2 branch May 12, 2026 17:35
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Jun 12, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@rcj1@noahfalk@jkotas
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

[cDAC] implement GetRuntimeNameByAddress - #127134

Merged
rcj1 merged 18 commits into
dotnet:mainfrom
rcj1:rawgetmethodname2
May 12, 2026
Merged

[cDAC] implement GetRuntimeNameByAddress#127134
rcj1 merged 18 commits into
dotnet:mainfrom
rcj1:rawgetmethodname2

Conversation

@rcj1

@rcj1rcj1 commented Apr 20, 2026

Copy link
Copy Markdown
Contributor

This method will annotate stubs with the stub type name: for example "CallCountingStub" "VSD_DispatchStub", as well as providing auxiliary symbol names. It will also attempt to resolve Precode stubs.

CopilotAI review requested due to automatic review settings April 20, 2026 05:49
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

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

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

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 cDAC support needed to implement IXCLRDataProcess::GetRuntimeNameByAddress by enabling stub-kind classification in the ExecutionManager contract, exposing additional RangeSection/range-list metadata, and wiring up the corresponding test and native data-descriptor updates.

Changes:

  • Implement GetRuntimeNameByAddress in the managed legacy SOS DAC implementation using cDAC contracts (ExecutionManager, PrecodeStubs, AuxiliarySymbols).
  • Add stub classification (StubKind, GetStubKind) and the data plumbing needed for stub range lists (RangeSection.RangeList, CodeRangeMapRangeList).
  • Extend tests/mocks and native CDAC descriptors/globals to support the new data contract fields and globals.

Reviewed changes

Copilot reviewed 22 out of 22 changed files in this pull request and generated 10 comments.

Show a summary per file
FileDescription
src/native/managed/cdac/tests/MockDescriptors/MockDescriptors.ExecutionManager.csExtends mock RangeSection with RangeList and adds mock CodeRangeMapRangeList layout + builder helpers.
src/native/managed/cdac/tests/ExecutionManager/ExecutionManagerTests.csAdds tests for stub-kind classification and registers the new mock datatype.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Legacy/SOSDacImpl.IXCLRDataProcess.csImplements GetRuntimeNameByAddress using cDAC contracts and formats CLRStub names.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Data/RangeSection.csAdds RangeList pointer field to the managed RangeSection data model.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Data/CodeRangeMapRangeList.csIntroduces managed data model for CodeRangeMapRangeList.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/PrecodeStubs_Common.csAdds GetCandidateEntryPoints enumeration support for precode name resolution.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/ExecutionManager/ExecutionManager_1.csExposes GetStubKind in v1 contract wrapper.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/ExecutionManager/ExecutionManager_2.csExposes GetStubKind in v2 contract wrapper.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/ExecutionManager/ExecutionManagerCore.csImplements GetStubKind logic (globals + range-section lookup) and reads new optional globals.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/ExecutionManager/ExecutionManagerCore.ReadyToRunJitManager.csAdds stub-kind classification for R2R thunk regions.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/ExecutionManager/ExecutionManagerCore.EEJitManager.csAdds stub-kind classification for range-list stubs and code-header stub code blocks.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Constants.csAdds new global names for well-known stubs/helpers.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Abstractions/DataType.csAdds CodeRangeMapRangeList to the DataType enum.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Abstractions/Contracts/IPrecodeStubs.csAdds GetCandidateEntryPoints API to support precode resolution.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Abstractions/Contracts/IExecutionManager.csAdds StubKind enum and GetStubKind API.
src/coreclr/vm/loaderallocator.hppExposes CodeRangeMapRangeList::_rangeListType via cdac_data<>.
src/coreclr/vm/datadescriptor/datadescriptor.incAdds RangeSection.RangeList, introduces CodeRangeMapRangeList type descriptor, and exports new stub globals.
src/coreclr/vm/codeman.hAdds cdac_data<RangeSection>::RangeList offset.
src/coreclr/inc/gfunc_list.hAdds DACGFN entries for new helper globals (platform-conditional).
src/coreclr/debug/daccess/daccess.cppAdjusts CLRStub address formatting to fixed-width hex.
docs/design/datacontracts/PrecodeStubs.mdDocuments new GetCandidateEntryPoints API and its intended behavior.
docs/design/datacontracts/ExecutionManager.mdDocuments GetStubKind, new RangeList/CodeRangeMapRangeList descriptors, and new globals.

Comment threadsrc/native/managed/cdac/tests/ExecutionManager/ExecutionManagerTests.cs Outdated
Comment threadsrc/native/managed/cdac/tests/ExecutionManager/ExecutionManagerTests.cs Outdated
Comment threadsrc/native/managed/cdac/tests/ExecutionManager/ExecutionManagerTests.cs Outdated
Comment threadsrc/native/managed/cdac/tests/ExecutionManager/ExecutionManagerTests.cs Outdated
…rTests.cs
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings April 20, 2026 06:12

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 22 out of 22 changed files in this pull request and generated 1 comment.

Comment threaddocs/design/datacontracts/ExecutionManager.md Outdated

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 26 out of 26 changed files in this pull request and generated 1 comment.

Comment threadsrc/coreclr/debug/daccess/daccess.cpp Outdated
Comment threaddocs/design/datacontracts/PrecodeStubs.md Outdated
Comment threaddocs/design/datacontracts/ExecutionManager.md Outdated
CopilotAI review requested due to automatic review settings April 22, 2026 23:21
CopilotAI review requested due to automatic review settings May 5, 2026 21:33

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 26 out of 26 changed files in this pull request and generated 5 comments.

Comment threadsrc/coreclr/debug/daccess/daccess.cpp
Comment threaddocs/design/datacontracts/ExecutionManager.md
Comment threaddocs/design/datacontracts/PrecodeStubs.md
Comment threadsrc/coreclr/debug/daccess/daccess.cpp
Comment threaddocs/design/datacontracts/ExecutionManager.md Outdated
Co-authored-by: Jan Kotas <jkotas@microsoft.com>
CopilotAI review requested due to automatic review settings May 7, 2026 03:12

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot's findings

  • Files reviewed: 26/26 changed files
  • Comments generated: 7

Comment threadsrc/coreclr/debug/daccess/daccess.cpp
Comment threaddocs/design/datacontracts/ExecutionManager.md
CopilotAI review requested due to automatic review settings May 11, 2026 15:55

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot's findings

Comments suppressed due to low confidence (1)

src/coreclr/vm/codeman.h:136

  • GetStubCodeBlockKindString currently returns "MethodCallThunk" for STUB_CODE_BLOCK_DYNAMICHELPER and STUB_CODE_BLOCK_FIXUPPRECODE, and it doesn't handle STUB_CODE_BLOCK_STUBPRECODE at all (falls back to "Unknown"). Since ReportStubBlock/perfmap uses this string, this will mislabel these stub kinds. Please add explicit cases for DynamicHelper/StubPrecode/FixupPrecode with appropriate names (consistent with other stub kind names like "JumpStub", "CallCountingStub", etc.).
inline const char *GetStubCodeBlockKindString(StubCodeBlockKind kind)
{
switch (kind)
{
case STUB_CODE_BLOCK_JUMPSTUB:
return "JumpStub";
case STUB_CODE_BLOCK_METHOD_CALL_THUNK:
return "MethodCallThunk";
#ifdef FEATURE_TIERED_COMPILATION
case STUB_CODE_BLOCK_CALLCOUNTING:
return "CallCountingStub";
#endif
case STUB_CODE_BLOCK_DYNAMICHELPER:
return "MethodCallThunk";
case STUB_CODE_BLOCK_FIXUPPRECODE:
return "MethodCallThunk";
#ifdef FEATURE_VIRTUAL_STUB_DISPATCH
  • Files reviewed: 26/26 changed files
  • Comments generated: 4

Comment threaddocs/design/datacontracts/ExecutionManager.md
@rcj1

rcj1 commented May 12, 2026

Copy link
Copy Markdown
ContributorAuthor

/ba-g timeouts :(

@rcj1
rcj1 merged commit 685f594 into dotnet:mainMay 12, 2026
111 of 122 checks passed
@rcj1
rcj1 deleted the rawgetmethodname2 branch May 12, 2026 17:35
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Jun 12, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@rcj1@noahfalk@jkotas
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

[cDAC] implement GetRuntimeNameByAddress - #127134

Merged
rcj1 merged 18 commits into
dotnet:mainfrom
rcj1:rawgetmethodname2
May 12, 2026
Merged

[cDAC] implement GetRuntimeNameByAddress#127134
rcj1 merged 18 commits into
dotnet:mainfrom
rcj1:rawgetmethodname2

Conversation

@rcj1

@rcj1rcj1 commented Apr 20, 2026

Copy link
Copy Markdown
Contributor

This method will annotate stubs with the stub type name: for example "CallCountingStub" "VSD_DispatchStub", as well as providing auxiliary symbol names. It will also attempt to resolve Precode stubs.

CopilotAI review requested due to automatic review settings April 20, 2026 05:49
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

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

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

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 cDAC support needed to implement IXCLRDataProcess::GetRuntimeNameByAddress by enabling stub-kind classification in the ExecutionManager contract, exposing additional RangeSection/range-list metadata, and wiring up the corresponding test and native data-descriptor updates.

Changes:

  • Implement GetRuntimeNameByAddress in the managed legacy SOS DAC implementation using cDAC contracts (ExecutionManager, PrecodeStubs, AuxiliarySymbols).
  • Add stub classification (StubKind, GetStubKind) and the data plumbing needed for stub range lists (RangeSection.RangeList, CodeRangeMapRangeList).
  • Extend tests/mocks and native CDAC descriptors/globals to support the new data contract fields and globals.

Reviewed changes

Copilot reviewed 22 out of 22 changed files in this pull request and generated 10 comments.

Show a summary per file
FileDescription
src/native/managed/cdac/tests/MockDescriptors/MockDescriptors.ExecutionManager.csExtends mock RangeSection with RangeList and adds mock CodeRangeMapRangeList layout + builder helpers.
src/native/managed/cdac/tests/ExecutionManager/ExecutionManagerTests.csAdds tests for stub-kind classification and registers the new mock datatype.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Legacy/SOSDacImpl.IXCLRDataProcess.csImplements GetRuntimeNameByAddress using cDAC contracts and formats CLRStub names.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Data/RangeSection.csAdds RangeList pointer field to the managed RangeSection data model.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Data/CodeRangeMapRangeList.csIntroduces managed data model for CodeRangeMapRangeList.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/PrecodeStubs_Common.csAdds GetCandidateEntryPoints enumeration support for precode name resolution.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/ExecutionManager/ExecutionManager_1.csExposes GetStubKind in v1 contract wrapper.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/ExecutionManager/ExecutionManager_2.csExposes GetStubKind in v2 contract wrapper.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/ExecutionManager/ExecutionManagerCore.csImplements GetStubKind logic (globals + range-section lookup) and reads new optional globals.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/ExecutionManager/ExecutionManagerCore.ReadyToRunJitManager.csAdds stub-kind classification for R2R thunk regions.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/ExecutionManager/ExecutionManagerCore.EEJitManager.csAdds stub-kind classification for range-list stubs and code-header stub code blocks.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Constants.csAdds new global names for well-known stubs/helpers.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Abstractions/DataType.csAdds CodeRangeMapRangeList to the DataType enum.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Abstractions/Contracts/IPrecodeStubs.csAdds GetCandidateEntryPoints API to support precode resolution.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Abstractions/Contracts/IExecutionManager.csAdds StubKind enum and GetStubKind API.
src/coreclr/vm/loaderallocator.hppExposes CodeRangeMapRangeList::_rangeListType via cdac_data<>.
src/coreclr/vm/datadescriptor/datadescriptor.incAdds RangeSection.RangeList, introduces CodeRangeMapRangeList type descriptor, and exports new stub globals.
src/coreclr/vm/codeman.hAdds cdac_data<RangeSection>::RangeList offset.
src/coreclr/inc/gfunc_list.hAdds DACGFN entries for new helper globals (platform-conditional).
src/coreclr/debug/daccess/daccess.cppAdjusts CLRStub address formatting to fixed-width hex.
docs/design/datacontracts/PrecodeStubs.mdDocuments new GetCandidateEntryPoints API and its intended behavior.
docs/design/datacontracts/ExecutionManager.mdDocuments GetStubKind, new RangeList/CodeRangeMapRangeList descriptors, and new globals.

Comment threadsrc/native/managed/cdac/tests/ExecutionManager/ExecutionManagerTests.cs Outdated
Comment threadsrc/native/managed/cdac/tests/ExecutionManager/ExecutionManagerTests.cs Outdated
Comment threadsrc/native/managed/cdac/tests/ExecutionManager/ExecutionManagerTests.cs Outdated
Comment threadsrc/native/managed/cdac/tests/ExecutionManager/ExecutionManagerTests.cs Outdated
…rTests.cs
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings April 20, 2026 06:12

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 22 out of 22 changed files in this pull request and generated 1 comment.

Comment threaddocs/design/datacontracts/ExecutionManager.md Outdated

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 26 out of 26 changed files in this pull request and generated 1 comment.

Comment threadsrc/coreclr/debug/daccess/daccess.cpp Outdated
Comment threaddocs/design/datacontracts/PrecodeStubs.md Outdated
Comment threaddocs/design/datacontracts/ExecutionManager.md Outdated
CopilotAI review requested due to automatic review settings April 22, 2026 23:21
CopilotAI review requested due to automatic review settings May 5, 2026 21:33

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 26 out of 26 changed files in this pull request and generated 5 comments.

Comment threadsrc/coreclr/debug/daccess/daccess.cpp
Comment threaddocs/design/datacontracts/ExecutionManager.md
Comment threaddocs/design/datacontracts/PrecodeStubs.md
Comment threadsrc/coreclr/debug/daccess/daccess.cpp
Comment threaddocs/design/datacontracts/ExecutionManager.md Outdated
Co-authored-by: Jan Kotas <jkotas@microsoft.com>
CopilotAI review requested due to automatic review settings May 7, 2026 03:12

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot's findings

  • Files reviewed: 26/26 changed files
  • Comments generated: 7

Comment threadsrc/coreclr/debug/daccess/daccess.cpp
Comment threaddocs/design/datacontracts/ExecutionManager.md
CopilotAI review requested due to automatic review settings May 11, 2026 15:55

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot's findings

Comments suppressed due to low confidence (1)

src/coreclr/vm/codeman.h:136

  • GetStubCodeBlockKindString currently returns "MethodCallThunk" for STUB_CODE_BLOCK_DYNAMICHELPER and STUB_CODE_BLOCK_FIXUPPRECODE, and it doesn't handle STUB_CODE_BLOCK_STUBPRECODE at all (falls back to "Unknown"). Since ReportStubBlock/perfmap uses this string, this will mislabel these stub kinds. Please add explicit cases for DynamicHelper/StubPrecode/FixupPrecode with appropriate names (consistent with other stub kind names like "JumpStub", "CallCountingStub", etc.).
inline const char *GetStubCodeBlockKindString(StubCodeBlockKind kind)
{
switch (kind)
{
case STUB_CODE_BLOCK_JUMPSTUB:
return "JumpStub";
case STUB_CODE_BLOCK_METHOD_CALL_THUNK:
return "MethodCallThunk";
#ifdef FEATURE_TIERED_COMPILATION
case STUB_CODE_BLOCK_CALLCOUNTING:
return "CallCountingStub";
#endif
case STUB_CODE_BLOCK_DYNAMICHELPER:
return "MethodCallThunk";
case STUB_CODE_BLOCK_FIXUPPRECODE:
return "MethodCallThunk";
#ifdef FEATURE_VIRTUAL_STUB_DISPATCH
  • Files reviewed: 26/26 changed files
  • Comments generated: 4

Comment threaddocs/design/datacontracts/ExecutionManager.md
@rcj1

rcj1 commented May 12, 2026

Copy link
Copy Markdown
ContributorAuthor

/ba-g timeouts :(

@rcj1
rcj1 merged commit 685f594 into dotnet:mainMay 12, 2026
111 of 122 checks passed
@rcj1
rcj1 deleted the rawgetmethodname2 branch May 12, 2026 17:35
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Jun 12, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@rcj1@noahfalk@jkotas
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

[cDAC] implement GetRuntimeNameByAddress - #127134

Merged
rcj1 merged 18 commits into
dotnet:mainfrom
rcj1:rawgetmethodname2
May 12, 2026
Merged

[cDAC] implement GetRuntimeNameByAddress#127134
rcj1 merged 18 commits into
dotnet:mainfrom
rcj1:rawgetmethodname2

Conversation

@rcj1

@rcj1rcj1 commented Apr 20, 2026

Copy link
Copy Markdown
Contributor

This method will annotate stubs with the stub type name: for example "CallCountingStub" "VSD_DispatchStub", as well as providing auxiliary symbol names. It will also attempt to resolve Precode stubs.

CopilotAI review requested due to automatic review settings April 20, 2026 05:49
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

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

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

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 cDAC support needed to implement IXCLRDataProcess::GetRuntimeNameByAddress by enabling stub-kind classification in the ExecutionManager contract, exposing additional RangeSection/range-list metadata, and wiring up the corresponding test and native data-descriptor updates.

Changes:

  • Implement GetRuntimeNameByAddress in the managed legacy SOS DAC implementation using cDAC contracts (ExecutionManager, PrecodeStubs, AuxiliarySymbols).
  • Add stub classification (StubKind, GetStubKind) and the data plumbing needed for stub range lists (RangeSection.RangeList, CodeRangeMapRangeList).
  • Extend tests/mocks and native CDAC descriptors/globals to support the new data contract fields and globals.

Reviewed changes

Copilot reviewed 22 out of 22 changed files in this pull request and generated 10 comments.

Show a summary per file
FileDescription
src/native/managed/cdac/tests/MockDescriptors/MockDescriptors.ExecutionManager.csExtends mock RangeSection with RangeList and adds mock CodeRangeMapRangeList layout + builder helpers.
src/native/managed/cdac/tests/ExecutionManager/ExecutionManagerTests.csAdds tests for stub-kind classification and registers the new mock datatype.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Legacy/SOSDacImpl.IXCLRDataProcess.csImplements GetRuntimeNameByAddress using cDAC contracts and formats CLRStub names.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Data/RangeSection.csAdds RangeList pointer field to the managed RangeSection data model.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Data/CodeRangeMapRangeList.csIntroduces managed data model for CodeRangeMapRangeList.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/PrecodeStubs_Common.csAdds GetCandidateEntryPoints enumeration support for precode name resolution.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/ExecutionManager/ExecutionManager_1.csExposes GetStubKind in v1 contract wrapper.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/ExecutionManager/ExecutionManager_2.csExposes GetStubKind in v2 contract wrapper.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/ExecutionManager/ExecutionManagerCore.csImplements GetStubKind logic (globals + range-section lookup) and reads new optional globals.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/ExecutionManager/ExecutionManagerCore.ReadyToRunJitManager.csAdds stub-kind classification for R2R thunk regions.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/ExecutionManager/ExecutionManagerCore.EEJitManager.csAdds stub-kind classification for range-list stubs and code-header stub code blocks.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Constants.csAdds new global names for well-known stubs/helpers.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Abstractions/DataType.csAdds CodeRangeMapRangeList to the DataType enum.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Abstractions/Contracts/IPrecodeStubs.csAdds GetCandidateEntryPoints API to support precode resolution.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Abstractions/Contracts/IExecutionManager.csAdds StubKind enum and GetStubKind API.
src/coreclr/vm/loaderallocator.hppExposes CodeRangeMapRangeList::_rangeListType via cdac_data<>.
src/coreclr/vm/datadescriptor/datadescriptor.incAdds RangeSection.RangeList, introduces CodeRangeMapRangeList type descriptor, and exports new stub globals.
src/coreclr/vm/codeman.hAdds cdac_data<RangeSection>::RangeList offset.
src/coreclr/inc/gfunc_list.hAdds DACGFN entries for new helper globals (platform-conditional).
src/coreclr/debug/daccess/daccess.cppAdjusts CLRStub address formatting to fixed-width hex.
docs/design/datacontracts/PrecodeStubs.mdDocuments new GetCandidateEntryPoints API and its intended behavior.
docs/design/datacontracts/ExecutionManager.mdDocuments GetStubKind, new RangeList/CodeRangeMapRangeList descriptors, and new globals.

Comment threadsrc/native/managed/cdac/tests/ExecutionManager/ExecutionManagerTests.cs Outdated
Comment threadsrc/native/managed/cdac/tests/ExecutionManager/ExecutionManagerTests.cs Outdated
Comment threadsrc/native/managed/cdac/tests/ExecutionManager/ExecutionManagerTests.cs Outdated
Comment threadsrc/native/managed/cdac/tests/ExecutionManager/ExecutionManagerTests.cs Outdated
…rTests.cs
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings April 20, 2026 06:12

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 22 out of 22 changed files in this pull request and generated 1 comment.

Comment threaddocs/design/datacontracts/ExecutionManager.md Outdated

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 26 out of 26 changed files in this pull request and generated 1 comment.

Comment threadsrc/coreclr/debug/daccess/daccess.cpp Outdated
Comment threaddocs/design/datacontracts/PrecodeStubs.md Outdated
Comment threaddocs/design/datacontracts/ExecutionManager.md Outdated
CopilotAI review requested due to automatic review settings April 22, 2026 23:21
CopilotAI review requested due to automatic review settings May 5, 2026 21:33

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 26 out of 26 changed files in this pull request and generated 5 comments.

Comment threadsrc/coreclr/debug/daccess/daccess.cpp
Comment threaddocs/design/datacontracts/ExecutionManager.md
Comment threaddocs/design/datacontracts/PrecodeStubs.md
Comment threadsrc/coreclr/debug/daccess/daccess.cpp
Comment threaddocs/design/datacontracts/ExecutionManager.md Outdated
Co-authored-by: Jan Kotas <jkotas@microsoft.com>
CopilotAI review requested due to automatic review settings May 7, 2026 03:12

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot's findings

  • Files reviewed: 26/26 changed files
  • Comments generated: 7

Comment threadsrc/coreclr/debug/daccess/daccess.cpp
Comment threaddocs/design/datacontracts/ExecutionManager.md
CopilotAI review requested due to automatic review settings May 11, 2026 15:55

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot's findings

Comments suppressed due to low confidence (1)

src/coreclr/vm/codeman.h:136

  • GetStubCodeBlockKindString currently returns "MethodCallThunk" for STUB_CODE_BLOCK_DYNAMICHELPER and STUB_CODE_BLOCK_FIXUPPRECODE, and it doesn't handle STUB_CODE_BLOCK_STUBPRECODE at all (falls back to "Unknown"). Since ReportStubBlock/perfmap uses this string, this will mislabel these stub kinds. Please add explicit cases for DynamicHelper/StubPrecode/FixupPrecode with appropriate names (consistent with other stub kind names like "JumpStub", "CallCountingStub", etc.).
inline const char *GetStubCodeBlockKindString(StubCodeBlockKind kind)
{
switch (kind)
{
case STUB_CODE_BLOCK_JUMPSTUB:
return "JumpStub";
case STUB_CODE_BLOCK_METHOD_CALL_THUNK:
return "MethodCallThunk";
#ifdef FEATURE_TIERED_COMPILATION
case STUB_CODE_BLOCK_CALLCOUNTING:
return "CallCountingStub";
#endif
case STUB_CODE_BLOCK_DYNAMICHELPER:
return "MethodCallThunk";
case STUB_CODE_BLOCK_FIXUPPRECODE:
return "MethodCallThunk";
#ifdef FEATURE_VIRTUAL_STUB_DISPATCH
  • Files reviewed: 26/26 changed files
  • Comments generated: 4

Comment threaddocs/design/datacontracts/ExecutionManager.md
@rcj1

rcj1 commented May 12, 2026

Copy link
Copy Markdown
ContributorAuthor

/ba-g timeouts :(

@rcj1
rcj1 merged commit 685f594 into dotnet:mainMay 12, 2026
111 of 122 checks passed
@rcj1
rcj1 deleted the rawgetmethodname2 branch May 12, 2026 17:35
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Jun 12, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@rcj1@noahfalk@jkotas
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

[cDAC] implement GetRuntimeNameByAddress - #127134

Merged
rcj1 merged 18 commits into
dotnet:mainfrom
rcj1:rawgetmethodname2
May 12, 2026
Merged

[cDAC] implement GetRuntimeNameByAddress#127134
rcj1 merged 18 commits into
dotnet:mainfrom
rcj1:rawgetmethodname2

Conversation

@rcj1

@rcj1rcj1 commented Apr 20, 2026

Copy link
Copy Markdown
Contributor

This method will annotate stubs with the stub type name: for example "CallCountingStub" "VSD_DispatchStub", as well as providing auxiliary symbol names. It will also attempt to resolve Precode stubs.

CopilotAI review requested due to automatic review settings April 20, 2026 05:49
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

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

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

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 cDAC support needed to implement IXCLRDataProcess::GetRuntimeNameByAddress by enabling stub-kind classification in the ExecutionManager contract, exposing additional RangeSection/range-list metadata, and wiring up the corresponding test and native data-descriptor updates.

Changes:

  • Implement GetRuntimeNameByAddress in the managed legacy SOS DAC implementation using cDAC contracts (ExecutionManager, PrecodeStubs, AuxiliarySymbols).
  • Add stub classification (StubKind, GetStubKind) and the data plumbing needed for stub range lists (RangeSection.RangeList, CodeRangeMapRangeList).
  • Extend tests/mocks and native CDAC descriptors/globals to support the new data contract fields and globals.

Reviewed changes

Copilot reviewed 22 out of 22 changed files in this pull request and generated 10 comments.

Show a summary per file
FileDescription
src/native/managed/cdac/tests/MockDescriptors/MockDescriptors.ExecutionManager.csExtends mock RangeSection with RangeList and adds mock CodeRangeMapRangeList layout + builder helpers.
src/native/managed/cdac/tests/ExecutionManager/ExecutionManagerTests.csAdds tests for stub-kind classification and registers the new mock datatype.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Legacy/SOSDacImpl.IXCLRDataProcess.csImplements GetRuntimeNameByAddress using cDAC contracts and formats CLRStub names.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Data/RangeSection.csAdds RangeList pointer field to the managed RangeSection data model.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Data/CodeRangeMapRangeList.csIntroduces managed data model for CodeRangeMapRangeList.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/PrecodeStubs_Common.csAdds GetCandidateEntryPoints enumeration support for precode name resolution.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/ExecutionManager/ExecutionManager_1.csExposes GetStubKind in v1 contract wrapper.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/ExecutionManager/ExecutionManager_2.csExposes GetStubKind in v2 contract wrapper.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/ExecutionManager/ExecutionManagerCore.csImplements GetStubKind logic (globals + range-section lookup) and reads new optional globals.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/ExecutionManager/ExecutionManagerCore.ReadyToRunJitManager.csAdds stub-kind classification for R2R thunk regions.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/ExecutionManager/ExecutionManagerCore.EEJitManager.csAdds stub-kind classification for range-list stubs and code-header stub code blocks.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Constants.csAdds new global names for well-known stubs/helpers.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Abstractions/DataType.csAdds CodeRangeMapRangeList to the DataType enum.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Abstractions/Contracts/IPrecodeStubs.csAdds GetCandidateEntryPoints API to support precode resolution.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Abstractions/Contracts/IExecutionManager.csAdds StubKind enum and GetStubKind API.
src/coreclr/vm/loaderallocator.hppExposes CodeRangeMapRangeList::_rangeListType via cdac_data<>.
src/coreclr/vm/datadescriptor/datadescriptor.incAdds RangeSection.RangeList, introduces CodeRangeMapRangeList type descriptor, and exports new stub globals.
src/coreclr/vm/codeman.hAdds cdac_data<RangeSection>::RangeList offset.
src/coreclr/inc/gfunc_list.hAdds DACGFN entries for new helper globals (platform-conditional).
src/coreclr/debug/daccess/daccess.cppAdjusts CLRStub address formatting to fixed-width hex.
docs/design/datacontracts/PrecodeStubs.mdDocuments new GetCandidateEntryPoints API and its intended behavior.
docs/design/datacontracts/ExecutionManager.mdDocuments GetStubKind, new RangeList/CodeRangeMapRangeList descriptors, and new globals.

Comment threadsrc/native/managed/cdac/tests/ExecutionManager/ExecutionManagerTests.cs Outdated
Comment threadsrc/native/managed/cdac/tests/ExecutionManager/ExecutionManagerTests.cs Outdated
Comment threadsrc/native/managed/cdac/tests/ExecutionManager/ExecutionManagerTests.cs Outdated
Comment threadsrc/native/managed/cdac/tests/ExecutionManager/ExecutionManagerTests.cs Outdated
…rTests.cs
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings April 20, 2026 06:12

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 22 out of 22 changed files in this pull request and generated 1 comment.

Comment threaddocs/design/datacontracts/ExecutionManager.md Outdated

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 26 out of 26 changed files in this pull request and generated 1 comment.

Comment threadsrc/coreclr/debug/daccess/daccess.cpp Outdated
Comment threaddocs/design/datacontracts/PrecodeStubs.md Outdated
Comment threaddocs/design/datacontracts/ExecutionManager.md Outdated
CopilotAI review requested due to automatic review settings April 22, 2026 23:21
CopilotAI review requested due to automatic review settings May 5, 2026 21:33

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 26 out of 26 changed files in this pull request and generated 5 comments.

Comment threadsrc/coreclr/debug/daccess/daccess.cpp
Comment threaddocs/design/datacontracts/ExecutionManager.md
Comment threaddocs/design/datacontracts/PrecodeStubs.md
Comment threadsrc/coreclr/debug/daccess/daccess.cpp
Comment threaddocs/design/datacontracts/ExecutionManager.md Outdated
Co-authored-by: Jan Kotas <jkotas@microsoft.com>
CopilotAI review requested due to automatic review settings May 7, 2026 03:12

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot's findings

  • Files reviewed: 26/26 changed files
  • Comments generated: 7

Comment threadsrc/coreclr/debug/daccess/daccess.cpp
Comment threaddocs/design/datacontracts/ExecutionManager.md
CopilotAI review requested due to automatic review settings May 11, 2026 15:55

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot's findings

Comments suppressed due to low confidence (1)

src/coreclr/vm/codeman.h:136

  • GetStubCodeBlockKindString currently returns "MethodCallThunk" for STUB_CODE_BLOCK_DYNAMICHELPER and STUB_CODE_BLOCK_FIXUPPRECODE, and it doesn't handle STUB_CODE_BLOCK_STUBPRECODE at all (falls back to "Unknown"). Since ReportStubBlock/perfmap uses this string, this will mislabel these stub kinds. Please add explicit cases for DynamicHelper/StubPrecode/FixupPrecode with appropriate names (consistent with other stub kind names like "JumpStub", "CallCountingStub", etc.).
inline const char *GetStubCodeBlockKindString(StubCodeBlockKind kind)
{
switch (kind)
{
case STUB_CODE_BLOCK_JUMPSTUB:
return "JumpStub";
case STUB_CODE_BLOCK_METHOD_CALL_THUNK:
return "MethodCallThunk";
#ifdef FEATURE_TIERED_COMPILATION
case STUB_CODE_BLOCK_CALLCOUNTING:
return "CallCountingStub";
#endif
case STUB_CODE_BLOCK_DYNAMICHELPER:
return "MethodCallThunk";
case STUB_CODE_BLOCK_FIXUPPRECODE:
return "MethodCallThunk";
#ifdef FEATURE_VIRTUAL_STUB_DISPATCH
  • Files reviewed: 26/26 changed files
  • Comments generated: 4

Comment threaddocs/design/datacontracts/ExecutionManager.md
@rcj1

rcj1 commented May 12, 2026

Copy link
Copy Markdown
ContributorAuthor

/ba-g timeouts :(

@rcj1
rcj1 merged commit 685f594 into dotnet:mainMay 12, 2026
111 of 122 checks passed
@rcj1
rcj1 deleted the rawgetmethodname2 branch May 12, 2026 17:35
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Jun 12, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@rcj1@noahfalk@jkotas
, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

[cDAC] implement GetRuntimeNameByAddress - #127134

Merged
rcj1 merged 18 commits into
dotnet:mainfrom
rcj1:rawgetmethodname2
May 12, 2026
Merged

[cDAC] implement GetRuntimeNameByAddress#127134
rcj1 merged 18 commits into
dotnet:mainfrom
rcj1:rawgetmethodname2

Conversation

@rcj1

@rcj1rcj1 commented Apr 20, 2026

Copy link
Copy Markdown
Contributor

This method will annotate stubs with the stub type name: for example "CallCountingStub" "VSD_DispatchStub", as well as providing auxiliary symbol names. It will also attempt to resolve Precode stubs.

CopilotAI review requested due to automatic review settings April 20, 2026 05:49
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

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

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

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 cDAC support needed to implement IXCLRDataProcess::GetRuntimeNameByAddress by enabling stub-kind classification in the ExecutionManager contract, exposing additional RangeSection/range-list metadata, and wiring up the corresponding test and native data-descriptor updates.

Changes:

  • Implement GetRuntimeNameByAddress in the managed legacy SOS DAC implementation using cDAC contracts (ExecutionManager, PrecodeStubs, AuxiliarySymbols).
  • Add stub classification (StubKind, GetStubKind) and the data plumbing needed for stub range lists (RangeSection.RangeList, CodeRangeMapRangeList).
  • Extend tests/mocks and native CDAC descriptors/globals to support the new data contract fields and globals.

Reviewed changes

Copilot reviewed 22 out of 22 changed files in this pull request and generated 10 comments.

Show a summary per file
FileDescription
src/native/managed/cdac/tests/MockDescriptors/MockDescriptors.ExecutionManager.csExtends mock RangeSection with RangeList and adds mock CodeRangeMapRangeList layout + builder helpers.
src/native/managed/cdac/tests/ExecutionManager/ExecutionManagerTests.csAdds tests for stub-kind classification and registers the new mock datatype.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Legacy/SOSDacImpl.IXCLRDataProcess.csImplements GetRuntimeNameByAddress using cDAC contracts and formats CLRStub names.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Data/RangeSection.csAdds RangeList pointer field to the managed RangeSection data model.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Data/CodeRangeMapRangeList.csIntroduces managed data model for CodeRangeMapRangeList.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/PrecodeStubs_Common.csAdds GetCandidateEntryPoints enumeration support for precode name resolution.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/ExecutionManager/ExecutionManager_1.csExposes GetStubKind in v1 contract wrapper.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/ExecutionManager/ExecutionManager_2.csExposes GetStubKind in v2 contract wrapper.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/ExecutionManager/ExecutionManagerCore.csImplements GetStubKind logic (globals + range-section lookup) and reads new optional globals.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/ExecutionManager/ExecutionManagerCore.ReadyToRunJitManager.csAdds stub-kind classification for R2R thunk regions.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Contracts/ExecutionManager/ExecutionManagerCore.EEJitManager.csAdds stub-kind classification for range-list stubs and code-header stub code blocks.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Contracts/Constants.csAdds new global names for well-known stubs/helpers.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Abstractions/DataType.csAdds CodeRangeMapRangeList to the DataType enum.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Abstractions/Contracts/IPrecodeStubs.csAdds GetCandidateEntryPoints API to support precode resolution.
src/native/managed/cdac/Microsoft.Diagnostics.DataContractReader.Abstractions/Contracts/IExecutionManager.csAdds StubKind enum and GetStubKind API.
src/coreclr/vm/loaderallocator.hppExposes CodeRangeMapRangeList::_rangeListType via cdac_data<>.
src/coreclr/vm/datadescriptor/datadescriptor.incAdds RangeSection.RangeList, introduces CodeRangeMapRangeList type descriptor, and exports new stub globals.
src/coreclr/vm/codeman.hAdds cdac_data<RangeSection>::RangeList offset.
src/coreclr/inc/gfunc_list.hAdds DACGFN entries for new helper globals (platform-conditional).
src/coreclr/debug/daccess/daccess.cppAdjusts CLRStub address formatting to fixed-width hex.
docs/design/datacontracts/PrecodeStubs.mdDocuments new GetCandidateEntryPoints API and its intended behavior.
docs/design/datacontracts/ExecutionManager.mdDocuments GetStubKind, new RangeList/CodeRangeMapRangeList descriptors, and new globals.

Comment threadsrc/native/managed/cdac/tests/ExecutionManager/ExecutionManagerTests.cs Outdated
Comment threadsrc/native/managed/cdac/tests/ExecutionManager/ExecutionManagerTests.cs Outdated
Comment threadsrc/native/managed/cdac/tests/ExecutionManager/ExecutionManagerTests.cs Outdated
Comment threadsrc/native/managed/cdac/tests/ExecutionManager/ExecutionManagerTests.cs Outdated
…rTests.cs
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
CopilotAI review requested due to automatic review settings April 20, 2026 06:12

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 22 out of 22 changed files in this pull request and generated 1 comment.

Comment threaddocs/design/datacontracts/ExecutionManager.md Outdated

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 26 out of 26 changed files in this pull request and generated 1 comment.

Comment threadsrc/coreclr/debug/daccess/daccess.cpp Outdated
Comment threaddocs/design/datacontracts/PrecodeStubs.md Outdated
Comment threaddocs/design/datacontracts/ExecutionManager.md Outdated
CopilotAI review requested due to automatic review settings April 22, 2026 23:21
CopilotAI review requested due to automatic review settings May 5, 2026 21:33

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Copilot reviewed 26 out of 26 changed files in this pull request and generated 5 comments.

Comment threadsrc/coreclr/debug/daccess/daccess.cpp
Comment threaddocs/design/datacontracts/ExecutionManager.md
Comment threaddocs/design/datacontracts/PrecodeStubs.md
Comment threadsrc/coreclr/debug/daccess/daccess.cpp
Comment threaddocs/design/datacontracts/ExecutionManager.md Outdated
Co-authored-by: Jan Kotas <jkotas@microsoft.com>
CopilotAI review requested due to automatic review settings May 7, 2026 03:12

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot's findings

  • Files reviewed: 26/26 changed files
  • Comments generated: 7

Comment threadsrc/coreclr/debug/daccess/daccess.cpp
Comment threaddocs/design/datacontracts/ExecutionManager.md
CopilotAI review requested due to automatic review settings May 11, 2026 15:55

CopilotAI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Copilot's findings

Comments suppressed due to low confidence (1)

src/coreclr/vm/codeman.h:136

  • GetStubCodeBlockKindString currently returns "MethodCallThunk" for STUB_CODE_BLOCK_DYNAMICHELPER and STUB_CODE_BLOCK_FIXUPPRECODE, and it doesn't handle STUB_CODE_BLOCK_STUBPRECODE at all (falls back to "Unknown"). Since ReportStubBlock/perfmap uses this string, this will mislabel these stub kinds. Please add explicit cases for DynamicHelper/StubPrecode/FixupPrecode with appropriate names (consistent with other stub kind names like "JumpStub", "CallCountingStub", etc.).
inline const char *GetStubCodeBlockKindString(StubCodeBlockKind kind)
{
switch (kind)
{
case STUB_CODE_BLOCK_JUMPSTUB:
return "JumpStub";
case STUB_CODE_BLOCK_METHOD_CALL_THUNK:
return "MethodCallThunk";
#ifdef FEATURE_TIERED_COMPILATION
case STUB_CODE_BLOCK_CALLCOUNTING:
return "CallCountingStub";
#endif
case STUB_CODE_BLOCK_DYNAMICHELPER:
return "MethodCallThunk";
case STUB_CODE_BLOCK_FIXUPPRECODE:
return "MethodCallThunk";
#ifdef FEATURE_VIRTUAL_STUB_DISPATCH
  • Files reviewed: 26/26 changed files
  • Comments generated: 4

Comment threaddocs/design/datacontracts/ExecutionManager.md
@rcj1

rcj1 commented May 12, 2026

Copy link
Copy Markdown
ContributorAuthor

/ba-g timeouts :(

@rcj1
rcj1 merged commit 685f594 into dotnet:mainMay 12, 2026
111 of 122 checks passed
@rcj1
rcj1 deleted the rawgetmethodname2 branch May 12, 2026 17:35
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Jun 12, 2026
Sign up for freeto subscribe to this conversation on GitHub. Already have an account? Sign in.

Projects

None yet

Development

Successfully merging this pull request may close these issues.

4 participants

@rcj1@noahfalk@jkotas