Revert "Guard unused llvm-libunwind symbols to avoid duplicates on Android" - #128883

Merged
MichalStrehovsky merged 1 commit into
mainfrom
revert-128667-libunwind-ifdef
Jun 2, 2026
Merged

Revert "Guard unused llvm-libunwind symbols to avoid duplicates on Android"#128883
MichalStrehovsky merged 1 commit into
mainfrom
revert-128667-libunwind-ifdef

Conversation

@MichalStrehovsky

@MichalStrehovskyMichalStrehovsky commented Jun 2, 2026

Copy link
Copy Markdown
Member

Resolves#128866.

Reverts #128667

@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to this area: @agocke, @dotnet/ilc-contrib
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 reverts #128667, which had guarded unused llvm-libunwind symbols with a new _LIBUNWIND_NATIVEAOT define to avoid duplicate symbol conflicts on Android (NDK r29). The revert restores the prior approach of using _LIBUNWIND_DISABLE_ZERO_COST_APIS=1 to disable the _Unwind_XXX style APIs.

Changes:

  • Revert the _LIBUNWIND_NATIVEAOT guards in the vendored llvm-libunwind sources (libunwind.cpp, Unwind-EHABI.cpp) and drop the corresponding patch entry from llvm-libunwind-version.txt.
  • Restore -D_LIBUNWIND_DISABLE_ZERO_COST_APIS=1 (in place of -D_LIBUNWIND_NATIVEAOT=1) in src/coreclr/nativeaot/Runtime/CMakeLists.txt.
  • Remove the UnwindHelpers::FindUnwindSections wrapper and call libunwind::LocalAddressSpace::sThisAddressSpace.findUnwindSections directly from UnixNativeCodeManager.

Reviewed changes

Copilot reviewed 7 out of 7 changed files in this pull request and generated no comments.

Show a summary per file
FileDescription
src/native/external/llvm-libunwind/src/Unwind-EHABI.cppRemove _LIBUNWIND_NATIVEAOT guard around EHABI C++ exception dispatch functions.
src/native/external/llvm-libunwind/src/libunwind.cppRemove _LIBUNWIND_NATIVEAOT guard around the public unw_* API block.
src/native/external/llvm-libunwind-version.txtDrop the reverted commit reference from the applied-patches list.
src/coreclr/nativeaot/Runtime/unix/UnwindHelpers.hRemove now-unused FindUnwindSections declaration.
src/coreclr/nativeaot/Runtime/unix/UnwindHelpers.cppRemove FindUnwindSections wrapper implementation.
src/coreclr/nativeaot/Runtime/unix/UnixNativeCodeManager.cppRestore direct call into LocalAddressSpace::sThisAddressSpace.findUnwindSections.
src/coreclr/nativeaot/Runtime/CMakeLists.txtReplace _LIBUNWIND_NATIVEAOT define with _LIBUNWIND_DISABLE_ZERO_COST_APIS.

@github-actions

Copy link
Copy Markdown
Contributor

Note

This review was generated by Copilot.

🤖 Copilot Code Review — PR #128883

Holistic Assessment

Motivation: Justified. PR #128667 introduced _LIBUNWIND_NATIVEAOT guards that broke HardwareIntrinsics_General tests on Linux ARM NativeAOT (#128866). A revert is the correct response to a regression in outerloop CI.

Approach: Clean revert restoring the previous _LIBUNWIND_DISABLE_ZERO_COST_APIS approach. The change also correctly reverts the UnwindHelpers::FindUnwindSections wrapper back to direct LocalAddressSpace::sThisAddressSpace.findUnwindSections() usage, and removes the patch reference from llvm-libunwind-version.txt.

Summary: ✅ LGTM. This is a straightforward, complete revert of a commit that caused a regression. All 7 changed files correspond exactly to the inverse of PR #128667. The original Android NDK r29 symbol conflict issue will need to be re-addressed in a follow-up with a different approach that doesn't break ARM unwinding.


Detailed Findings

✅ Correctness — Revert is complete and accurate

All changes in PR #128667 are fully reverted:

  • CMakeLists.txt: _LIBUNWIND_NATIVEAOT_LIBUNWIND_DISABLE_ZERO_COST_APIS (the original define)
  • UnixNativeCodeManager.cpp: Restores direct LocalAddressSpace::sThisAddressSpace.findUnwindSections() call
  • UnwindHelpers.cpp/h: Removes the FindUnwindSections wrapper added in Guard unused llvm-libunwind symbols to avoid duplicates on Android #128667
  • libunwind.cpp and Unwind-EHABI.cpp: Removes _LIBUNWIND_NATIVEAOT guards
  • llvm-libunwind-version.txt: Removes the patch reference

No partial revert or leftover artifacts detected.

✅ Risk Assessment — Low risk

Reverting to a known-good state that was stable before #128667. The only risk is re-exposing the Android NDK r29 symbol conflict, which is a pre-existing issue that needs a different fix approach.

Generated by Code Review for issue #128883 · ● 1.6M ·

@MichalStrehovsky
MichalStrehovsky enabled auto-merge (squash) June 2, 2026 09:10
@MichalStrehovsky
MichalStrehovsky merged commit c7d8935 into mainJun 2, 2026
176 checks passed
@MichalStrehovsky
MichalStrehovsky deleted the revert-128667-libunwind-ifdef branch June 2, 2026 09:47
@dotnet-milestone-botdotnet-milestone-botBot added this to the 11.0-preview6 milestone Jun 3, 2026
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Jul 3, 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.

HardwareIntrinsics_General tests failing on Linux arm NAOT

3 participants

@MichalStrehovsky@jkotas
, 'i'); if (__m === '*' || __re.test(location.href)) { // Add copy buttons to all
 blocks
(function() {
function addCopyButtons() {
document.querySelectorAll('pre code').forEach(function(codeBlock) {
if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;
codeBlock.parentElement.setAttribute('data-copy-added', 'true');
var btn = document.createElement('button');
btn.textContent = 'Copy';
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;';
btn.onmouseover = function() { this.style.opacity = '1'; };
btn.onmouseout = function() { this.style.opacity = '0.7'; };
btn.onclick = function() {
navigator.clipboard.writeText(codeBlock.textContent).then(function() {
btn.textContent = 'Copied!';
setTimeout(function() { btn.textContent = 'Copy'; }, 1500);
});
};
codeBlock.parentElement.style.position = 'relative';
codeBlock.parentElement.appendChild(btn);
});
}
addCopyButtons();
// Re-run on dynamic content
var observer = new MutationObserver(addCopyButtons);
observer.observe(document.body, { childList: true, subtree: true });
})();
}
} 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

Revert "Guard unused llvm-libunwind symbols to avoid duplicates on Android" - #128883

Merged
MichalStrehovsky merged 1 commit into
mainfrom
revert-128667-libunwind-ifdef
Jun 2, 2026
Merged

Revert "Guard unused llvm-libunwind symbols to avoid duplicates on Android"#128883
MichalStrehovsky merged 1 commit into
mainfrom
revert-128667-libunwind-ifdef

Conversation

@MichalStrehovsky

@MichalStrehovskyMichalStrehovsky commented Jun 2, 2026

Copy link
Copy Markdown
Member

Resolves#128866.

Reverts #128667

@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to this area: @agocke, @dotnet/ilc-contrib
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 reverts #128667, which had guarded unused llvm-libunwind symbols with a new _LIBUNWIND_NATIVEAOT define to avoid duplicate symbol conflicts on Android (NDK r29). The revert restores the prior approach of using _LIBUNWIND_DISABLE_ZERO_COST_APIS=1 to disable the _Unwind_XXX style APIs.

Changes:

  • Revert the _LIBUNWIND_NATIVEAOT guards in the vendored llvm-libunwind sources (libunwind.cpp, Unwind-EHABI.cpp) and drop the corresponding patch entry from llvm-libunwind-version.txt.
  • Restore -D_LIBUNWIND_DISABLE_ZERO_COST_APIS=1 (in place of -D_LIBUNWIND_NATIVEAOT=1) in src/coreclr/nativeaot/Runtime/CMakeLists.txt.
  • Remove the UnwindHelpers::FindUnwindSections wrapper and call libunwind::LocalAddressSpace::sThisAddressSpace.findUnwindSections directly from UnixNativeCodeManager.

Reviewed changes

Copilot reviewed 7 out of 7 changed files in this pull request and generated no comments.

Show a summary per file
FileDescription
src/native/external/llvm-libunwind/src/Unwind-EHABI.cppRemove _LIBUNWIND_NATIVEAOT guard around EHABI C++ exception dispatch functions.
src/native/external/llvm-libunwind/src/libunwind.cppRemove _LIBUNWIND_NATIVEAOT guard around the public unw_* API block.
src/native/external/llvm-libunwind-version.txtDrop the reverted commit reference from the applied-patches list.
src/coreclr/nativeaot/Runtime/unix/UnwindHelpers.hRemove now-unused FindUnwindSections declaration.
src/coreclr/nativeaot/Runtime/unix/UnwindHelpers.cppRemove FindUnwindSections wrapper implementation.
src/coreclr/nativeaot/Runtime/unix/UnixNativeCodeManager.cppRestore direct call into LocalAddressSpace::sThisAddressSpace.findUnwindSections.
src/coreclr/nativeaot/Runtime/CMakeLists.txtReplace _LIBUNWIND_NATIVEAOT define with _LIBUNWIND_DISABLE_ZERO_COST_APIS.

@github-actions

Copy link
Copy Markdown
Contributor

Note

This review was generated by Copilot.

🤖 Copilot Code Review — PR #128883

Holistic Assessment

Motivation: Justified. PR #128667 introduced _LIBUNWIND_NATIVEAOT guards that broke HardwareIntrinsics_General tests on Linux ARM NativeAOT (#128866). A revert is the correct response to a regression in outerloop CI.

Approach: Clean revert restoring the previous _LIBUNWIND_DISABLE_ZERO_COST_APIS approach. The change also correctly reverts the UnwindHelpers::FindUnwindSections wrapper back to direct LocalAddressSpace::sThisAddressSpace.findUnwindSections() usage, and removes the patch reference from llvm-libunwind-version.txt.

Summary: ✅ LGTM. This is a straightforward, complete revert of a commit that caused a regression. All 7 changed files correspond exactly to the inverse of PR #128667. The original Android NDK r29 symbol conflict issue will need to be re-addressed in a follow-up with a different approach that doesn't break ARM unwinding.


Detailed Findings

✅ Correctness — Revert is complete and accurate

All changes in PR #128667 are fully reverted:

  • CMakeLists.txt: _LIBUNWIND_NATIVEAOT_LIBUNWIND_DISABLE_ZERO_COST_APIS (the original define)
  • UnixNativeCodeManager.cpp: Restores direct LocalAddressSpace::sThisAddressSpace.findUnwindSections() call
  • UnwindHelpers.cpp/h: Removes the FindUnwindSections wrapper added in Guard unused llvm-libunwind symbols to avoid duplicates on Android #128667
  • libunwind.cpp and Unwind-EHABI.cpp: Removes _LIBUNWIND_NATIVEAOT guards
  • llvm-libunwind-version.txt: Removes the patch reference

No partial revert or leftover artifacts detected.

✅ Risk Assessment — Low risk

Reverting to a known-good state that was stable before #128667. The only risk is re-exposing the Android NDK r29 symbol conflict, which is a pre-existing issue that needs a different fix approach.

Generated by Code Review for issue #128883 · ● 1.6M ·

@MichalStrehovsky
MichalStrehovsky enabled auto-merge (squash) June 2, 2026 09:10
@MichalStrehovsky
MichalStrehovsky merged commit c7d8935 into mainJun 2, 2026
176 checks passed
@MichalStrehovsky
MichalStrehovsky deleted the revert-128667-libunwind-ifdef branch June 2, 2026 09:47
@dotnet-milestone-botdotnet-milestone-botBot added this to the 11.0-preview6 milestone Jun 3, 2026
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Jul 3, 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.

HardwareIntrinsics_General tests failing on Linux arm NAOT

3 participants

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

Revert "Guard unused llvm-libunwind symbols to avoid duplicates on Android" - #128883

Merged
MichalStrehovsky merged 1 commit into
mainfrom
revert-128667-libunwind-ifdef
Jun 2, 2026
Merged

Revert "Guard unused llvm-libunwind symbols to avoid duplicates on Android"#128883
MichalStrehovsky merged 1 commit into
mainfrom
revert-128667-libunwind-ifdef

Conversation

@MichalStrehovsky

@MichalStrehovskyMichalStrehovsky commented Jun 2, 2026

Copy link
Copy Markdown
Member

Resolves#128866.

Reverts #128667

@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to this area: @agocke, @dotnet/ilc-contrib
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 reverts #128667, which had guarded unused llvm-libunwind symbols with a new _LIBUNWIND_NATIVEAOT define to avoid duplicate symbol conflicts on Android (NDK r29). The revert restores the prior approach of using _LIBUNWIND_DISABLE_ZERO_COST_APIS=1 to disable the _Unwind_XXX style APIs.

Changes:

  • Revert the _LIBUNWIND_NATIVEAOT guards in the vendored llvm-libunwind sources (libunwind.cpp, Unwind-EHABI.cpp) and drop the corresponding patch entry from llvm-libunwind-version.txt.
  • Restore -D_LIBUNWIND_DISABLE_ZERO_COST_APIS=1 (in place of -D_LIBUNWIND_NATIVEAOT=1) in src/coreclr/nativeaot/Runtime/CMakeLists.txt.
  • Remove the UnwindHelpers::FindUnwindSections wrapper and call libunwind::LocalAddressSpace::sThisAddressSpace.findUnwindSections directly from UnixNativeCodeManager.

Reviewed changes

Copilot reviewed 7 out of 7 changed files in this pull request and generated no comments.

Show a summary per file
FileDescription
src/native/external/llvm-libunwind/src/Unwind-EHABI.cppRemove _LIBUNWIND_NATIVEAOT guard around EHABI C++ exception dispatch functions.
src/native/external/llvm-libunwind/src/libunwind.cppRemove _LIBUNWIND_NATIVEAOT guard around the public unw_* API block.
src/native/external/llvm-libunwind-version.txtDrop the reverted commit reference from the applied-patches list.
src/coreclr/nativeaot/Runtime/unix/UnwindHelpers.hRemove now-unused FindUnwindSections declaration.
src/coreclr/nativeaot/Runtime/unix/UnwindHelpers.cppRemove FindUnwindSections wrapper implementation.
src/coreclr/nativeaot/Runtime/unix/UnixNativeCodeManager.cppRestore direct call into LocalAddressSpace::sThisAddressSpace.findUnwindSections.
src/coreclr/nativeaot/Runtime/CMakeLists.txtReplace _LIBUNWIND_NATIVEAOT define with _LIBUNWIND_DISABLE_ZERO_COST_APIS.

@github-actions

Copy link
Copy Markdown
Contributor

Note

This review was generated by Copilot.

🤖 Copilot Code Review — PR #128883

Holistic Assessment

Motivation: Justified. PR #128667 introduced _LIBUNWIND_NATIVEAOT guards that broke HardwareIntrinsics_General tests on Linux ARM NativeAOT (#128866). A revert is the correct response to a regression in outerloop CI.

Approach: Clean revert restoring the previous _LIBUNWIND_DISABLE_ZERO_COST_APIS approach. The change also correctly reverts the UnwindHelpers::FindUnwindSections wrapper back to direct LocalAddressSpace::sThisAddressSpace.findUnwindSections() usage, and removes the patch reference from llvm-libunwind-version.txt.

Summary: ✅ LGTM. This is a straightforward, complete revert of a commit that caused a regression. All 7 changed files correspond exactly to the inverse of PR #128667. The original Android NDK r29 symbol conflict issue will need to be re-addressed in a follow-up with a different approach that doesn't break ARM unwinding.


Detailed Findings

✅ Correctness — Revert is complete and accurate

All changes in PR #128667 are fully reverted:

  • CMakeLists.txt: _LIBUNWIND_NATIVEAOT_LIBUNWIND_DISABLE_ZERO_COST_APIS (the original define)
  • UnixNativeCodeManager.cpp: Restores direct LocalAddressSpace::sThisAddressSpace.findUnwindSections() call
  • UnwindHelpers.cpp/h: Removes the FindUnwindSections wrapper added in Guard unused llvm-libunwind symbols to avoid duplicates on Android #128667
  • libunwind.cpp and Unwind-EHABI.cpp: Removes _LIBUNWIND_NATIVEAOT guards
  • llvm-libunwind-version.txt: Removes the patch reference

No partial revert or leftover artifacts detected.

✅ Risk Assessment — Low risk

Reverting to a known-good state that was stable before #128667. The only risk is re-exposing the Android NDK r29 symbol conflict, which is a pre-existing issue that needs a different fix approach.

Generated by Code Review for issue #128883 · ● 1.6M ·

@MichalStrehovsky
MichalStrehovsky enabled auto-merge (squash) June 2, 2026 09:10
@MichalStrehovsky
MichalStrehovsky merged commit c7d8935 into mainJun 2, 2026
176 checks passed
@MichalStrehovsky
MichalStrehovsky deleted the revert-128667-libunwind-ifdef branch June 2, 2026 09:47
@dotnet-milestone-botdotnet-milestone-botBot added this to the 11.0-preview6 milestone Jun 3, 2026
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Jul 3, 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.

HardwareIntrinsics_General tests failing on Linux arm NAOT

3 participants

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

Revert "Guard unused llvm-libunwind symbols to avoid duplicates on Android" - #128883

Merged
MichalStrehovsky merged 1 commit into
mainfrom
revert-128667-libunwind-ifdef
Jun 2, 2026
Merged

Revert "Guard unused llvm-libunwind symbols to avoid duplicates on Android"#128883
MichalStrehovsky merged 1 commit into
mainfrom
revert-128667-libunwind-ifdef

Conversation

@MichalStrehovsky

@MichalStrehovskyMichalStrehovsky commented Jun 2, 2026

Copy link
Copy Markdown
Member

Resolves#128866.

Reverts #128667

@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to this area: @agocke, @dotnet/ilc-contrib
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 reverts #128667, which had guarded unused llvm-libunwind symbols with a new _LIBUNWIND_NATIVEAOT define to avoid duplicate symbol conflicts on Android (NDK r29). The revert restores the prior approach of using _LIBUNWIND_DISABLE_ZERO_COST_APIS=1 to disable the _Unwind_XXX style APIs.

Changes:

  • Revert the _LIBUNWIND_NATIVEAOT guards in the vendored llvm-libunwind sources (libunwind.cpp, Unwind-EHABI.cpp) and drop the corresponding patch entry from llvm-libunwind-version.txt.
  • Restore -D_LIBUNWIND_DISABLE_ZERO_COST_APIS=1 (in place of -D_LIBUNWIND_NATIVEAOT=1) in src/coreclr/nativeaot/Runtime/CMakeLists.txt.
  • Remove the UnwindHelpers::FindUnwindSections wrapper and call libunwind::LocalAddressSpace::sThisAddressSpace.findUnwindSections directly from UnixNativeCodeManager.

Reviewed changes

Copilot reviewed 7 out of 7 changed files in this pull request and generated no comments.

Show a summary per file
FileDescription
src/native/external/llvm-libunwind/src/Unwind-EHABI.cppRemove _LIBUNWIND_NATIVEAOT guard around EHABI C++ exception dispatch functions.
src/native/external/llvm-libunwind/src/libunwind.cppRemove _LIBUNWIND_NATIVEAOT guard around the public unw_* API block.
src/native/external/llvm-libunwind-version.txtDrop the reverted commit reference from the applied-patches list.
src/coreclr/nativeaot/Runtime/unix/UnwindHelpers.hRemove now-unused FindUnwindSections declaration.
src/coreclr/nativeaot/Runtime/unix/UnwindHelpers.cppRemove FindUnwindSections wrapper implementation.
src/coreclr/nativeaot/Runtime/unix/UnixNativeCodeManager.cppRestore direct call into LocalAddressSpace::sThisAddressSpace.findUnwindSections.
src/coreclr/nativeaot/Runtime/CMakeLists.txtReplace _LIBUNWIND_NATIVEAOT define with _LIBUNWIND_DISABLE_ZERO_COST_APIS.

@github-actions

Copy link
Copy Markdown
Contributor

Note

This review was generated by Copilot.

🤖 Copilot Code Review — PR #128883

Holistic Assessment

Motivation: Justified. PR #128667 introduced _LIBUNWIND_NATIVEAOT guards that broke HardwareIntrinsics_General tests on Linux ARM NativeAOT (#128866). A revert is the correct response to a regression in outerloop CI.

Approach: Clean revert restoring the previous _LIBUNWIND_DISABLE_ZERO_COST_APIS approach. The change also correctly reverts the UnwindHelpers::FindUnwindSections wrapper back to direct LocalAddressSpace::sThisAddressSpace.findUnwindSections() usage, and removes the patch reference from llvm-libunwind-version.txt.

Summary: ✅ LGTM. This is a straightforward, complete revert of a commit that caused a regression. All 7 changed files correspond exactly to the inverse of PR #128667. The original Android NDK r29 symbol conflict issue will need to be re-addressed in a follow-up with a different approach that doesn't break ARM unwinding.


Detailed Findings

✅ Correctness — Revert is complete and accurate

All changes in PR #128667 are fully reverted:

  • CMakeLists.txt: _LIBUNWIND_NATIVEAOT_LIBUNWIND_DISABLE_ZERO_COST_APIS (the original define)
  • UnixNativeCodeManager.cpp: Restores direct LocalAddressSpace::sThisAddressSpace.findUnwindSections() call
  • UnwindHelpers.cpp/h: Removes the FindUnwindSections wrapper added in Guard unused llvm-libunwind symbols to avoid duplicates on Android #128667
  • libunwind.cpp and Unwind-EHABI.cpp: Removes _LIBUNWIND_NATIVEAOT guards
  • llvm-libunwind-version.txt: Removes the patch reference

No partial revert or leftover artifacts detected.

✅ Risk Assessment — Low risk

Reverting to a known-good state that was stable before #128667. The only risk is re-exposing the Android NDK r29 symbol conflict, which is a pre-existing issue that needs a different fix approach.

Generated by Code Review for issue #128883 · ● 1.6M ·

@MichalStrehovsky
MichalStrehovsky enabled auto-merge (squash) June 2, 2026 09:10
@MichalStrehovsky
MichalStrehovsky merged commit c7d8935 into mainJun 2, 2026
176 checks passed
@MichalStrehovsky
MichalStrehovsky deleted the revert-128667-libunwind-ifdef branch June 2, 2026 09:47
@dotnet-milestone-botdotnet-milestone-botBot added this to the 11.0-preview6 milestone Jun 3, 2026
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Jul 3, 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.

HardwareIntrinsics_General tests failing on Linux arm NAOT

3 participants

@MichalStrehovsky@jkotas
, 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } 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

Revert "Guard unused llvm-libunwind symbols to avoid duplicates on Android" - #128883

Merged
MichalStrehovsky merged 1 commit into
mainfrom
revert-128667-libunwind-ifdef
Jun 2, 2026
Merged

Revert "Guard unused llvm-libunwind symbols to avoid duplicates on Android"#128883
MichalStrehovsky merged 1 commit into
mainfrom
revert-128667-libunwind-ifdef

Conversation

@MichalStrehovsky

@MichalStrehovskyMichalStrehovsky commented Jun 2, 2026

Copy link
Copy Markdown
Member

Resolves#128866.

Reverts #128667

@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to this area: @agocke, @dotnet/ilc-contrib
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 reverts #128667, which had guarded unused llvm-libunwind symbols with a new _LIBUNWIND_NATIVEAOT define to avoid duplicate symbol conflicts on Android (NDK r29). The revert restores the prior approach of using _LIBUNWIND_DISABLE_ZERO_COST_APIS=1 to disable the _Unwind_XXX style APIs.

Changes:

  • Revert the _LIBUNWIND_NATIVEAOT guards in the vendored llvm-libunwind sources (libunwind.cpp, Unwind-EHABI.cpp) and drop the corresponding patch entry from llvm-libunwind-version.txt.
  • Restore -D_LIBUNWIND_DISABLE_ZERO_COST_APIS=1 (in place of -D_LIBUNWIND_NATIVEAOT=1) in src/coreclr/nativeaot/Runtime/CMakeLists.txt.
  • Remove the UnwindHelpers::FindUnwindSections wrapper and call libunwind::LocalAddressSpace::sThisAddressSpace.findUnwindSections directly from UnixNativeCodeManager.

Reviewed changes

Copilot reviewed 7 out of 7 changed files in this pull request and generated no comments.

Show a summary per file
FileDescription
src/native/external/llvm-libunwind/src/Unwind-EHABI.cppRemove _LIBUNWIND_NATIVEAOT guard around EHABI C++ exception dispatch functions.
src/native/external/llvm-libunwind/src/libunwind.cppRemove _LIBUNWIND_NATIVEAOT guard around the public unw_* API block.
src/native/external/llvm-libunwind-version.txtDrop the reverted commit reference from the applied-patches list.
src/coreclr/nativeaot/Runtime/unix/UnwindHelpers.hRemove now-unused FindUnwindSections declaration.
src/coreclr/nativeaot/Runtime/unix/UnwindHelpers.cppRemove FindUnwindSections wrapper implementation.
src/coreclr/nativeaot/Runtime/unix/UnixNativeCodeManager.cppRestore direct call into LocalAddressSpace::sThisAddressSpace.findUnwindSections.
src/coreclr/nativeaot/Runtime/CMakeLists.txtReplace _LIBUNWIND_NATIVEAOT define with _LIBUNWIND_DISABLE_ZERO_COST_APIS.

@github-actions

Copy link
Copy Markdown
Contributor

Note

This review was generated by Copilot.

🤖 Copilot Code Review — PR #128883

Holistic Assessment

Motivation: Justified. PR #128667 introduced _LIBUNWIND_NATIVEAOT guards that broke HardwareIntrinsics_General tests on Linux ARM NativeAOT (#128866). A revert is the correct response to a regression in outerloop CI.

Approach: Clean revert restoring the previous _LIBUNWIND_DISABLE_ZERO_COST_APIS approach. The change also correctly reverts the UnwindHelpers::FindUnwindSections wrapper back to direct LocalAddressSpace::sThisAddressSpace.findUnwindSections() usage, and removes the patch reference from llvm-libunwind-version.txt.

Summary: ✅ LGTM. This is a straightforward, complete revert of a commit that caused a regression. All 7 changed files correspond exactly to the inverse of PR #128667. The original Android NDK r29 symbol conflict issue will need to be re-addressed in a follow-up with a different approach that doesn't break ARM unwinding.


Detailed Findings

✅ Correctness — Revert is complete and accurate

All changes in PR #128667 are fully reverted:

  • CMakeLists.txt: _LIBUNWIND_NATIVEAOT_LIBUNWIND_DISABLE_ZERO_COST_APIS (the original define)
  • UnixNativeCodeManager.cpp: Restores direct LocalAddressSpace::sThisAddressSpace.findUnwindSections() call
  • UnwindHelpers.cpp/h: Removes the FindUnwindSections wrapper added in Guard unused llvm-libunwind symbols to avoid duplicates on Android #128667
  • libunwind.cpp and Unwind-EHABI.cpp: Removes _LIBUNWIND_NATIVEAOT guards
  • llvm-libunwind-version.txt: Removes the patch reference

No partial revert or leftover artifacts detected.

✅ Risk Assessment — Low risk

Reverting to a known-good state that was stable before #128667. The only risk is re-exposing the Android NDK r29 symbol conflict, which is a pre-existing issue that needs a different fix approach.

Generated by Code Review for issue #128883 · ● 1.6M ·

@MichalStrehovsky
MichalStrehovsky enabled auto-merge (squash) June 2, 2026 09:10
@MichalStrehovsky
MichalStrehovsky merged commit c7d8935 into mainJun 2, 2026
176 checks passed
@MichalStrehovsky
MichalStrehovsky deleted the revert-128667-libunwind-ifdef branch June 2, 2026 09:47
@dotnet-milestone-botdotnet-milestone-botBot added this to the 11.0-preview6 milestone Jun 3, 2026
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Jul 3, 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.

HardwareIntrinsics_General tests failing on Linux arm NAOT

3 participants

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

Revert "Guard unused llvm-libunwind symbols to avoid duplicates on Android" - #128883

Merged
MichalStrehovsky merged 1 commit into
mainfrom
revert-128667-libunwind-ifdef
Jun 2, 2026
Merged

Revert "Guard unused llvm-libunwind symbols to avoid duplicates on Android"#128883
MichalStrehovsky merged 1 commit into
mainfrom
revert-128667-libunwind-ifdef

Conversation

@MichalStrehovsky

@MichalStrehovskyMichalStrehovsky commented Jun 2, 2026

Copy link
Copy Markdown
Member

Resolves#128866.

Reverts #128667

@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to this area: @agocke, @dotnet/ilc-contrib
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 reverts #128667, which had guarded unused llvm-libunwind symbols with a new _LIBUNWIND_NATIVEAOT define to avoid duplicate symbol conflicts on Android (NDK r29). The revert restores the prior approach of using _LIBUNWIND_DISABLE_ZERO_COST_APIS=1 to disable the _Unwind_XXX style APIs.

Changes:

  • Revert the _LIBUNWIND_NATIVEAOT guards in the vendored llvm-libunwind sources (libunwind.cpp, Unwind-EHABI.cpp) and drop the corresponding patch entry from llvm-libunwind-version.txt.
  • Restore -D_LIBUNWIND_DISABLE_ZERO_COST_APIS=1 (in place of -D_LIBUNWIND_NATIVEAOT=1) in src/coreclr/nativeaot/Runtime/CMakeLists.txt.
  • Remove the UnwindHelpers::FindUnwindSections wrapper and call libunwind::LocalAddressSpace::sThisAddressSpace.findUnwindSections directly from UnixNativeCodeManager.

Reviewed changes

Copilot reviewed 7 out of 7 changed files in this pull request and generated no comments.

Show a summary per file
FileDescription
src/native/external/llvm-libunwind/src/Unwind-EHABI.cppRemove _LIBUNWIND_NATIVEAOT guard around EHABI C++ exception dispatch functions.
src/native/external/llvm-libunwind/src/libunwind.cppRemove _LIBUNWIND_NATIVEAOT guard around the public unw_* API block.
src/native/external/llvm-libunwind-version.txtDrop the reverted commit reference from the applied-patches list.
src/coreclr/nativeaot/Runtime/unix/UnwindHelpers.hRemove now-unused FindUnwindSections declaration.
src/coreclr/nativeaot/Runtime/unix/UnwindHelpers.cppRemove FindUnwindSections wrapper implementation.
src/coreclr/nativeaot/Runtime/unix/UnixNativeCodeManager.cppRestore direct call into LocalAddressSpace::sThisAddressSpace.findUnwindSections.
src/coreclr/nativeaot/Runtime/CMakeLists.txtReplace _LIBUNWIND_NATIVEAOT define with _LIBUNWIND_DISABLE_ZERO_COST_APIS.

@github-actions

Copy link
Copy Markdown
Contributor

Note

This review was generated by Copilot.

🤖 Copilot Code Review — PR #128883

Holistic Assessment

Motivation: Justified. PR #128667 introduced _LIBUNWIND_NATIVEAOT guards that broke HardwareIntrinsics_General tests on Linux ARM NativeAOT (#128866). A revert is the correct response to a regression in outerloop CI.

Approach: Clean revert restoring the previous _LIBUNWIND_DISABLE_ZERO_COST_APIS approach. The change also correctly reverts the UnwindHelpers::FindUnwindSections wrapper back to direct LocalAddressSpace::sThisAddressSpace.findUnwindSections() usage, and removes the patch reference from llvm-libunwind-version.txt.

Summary: ✅ LGTM. This is a straightforward, complete revert of a commit that caused a regression. All 7 changed files correspond exactly to the inverse of PR #128667. The original Android NDK r29 symbol conflict issue will need to be re-addressed in a follow-up with a different approach that doesn't break ARM unwinding.


Detailed Findings

✅ Correctness — Revert is complete and accurate

All changes in PR #128667 are fully reverted:

  • CMakeLists.txt: _LIBUNWIND_NATIVEAOT_LIBUNWIND_DISABLE_ZERO_COST_APIS (the original define)
  • UnixNativeCodeManager.cpp: Restores direct LocalAddressSpace::sThisAddressSpace.findUnwindSections() call
  • UnwindHelpers.cpp/h: Removes the FindUnwindSections wrapper added in Guard unused llvm-libunwind symbols to avoid duplicates on Android #128667
  • libunwind.cpp and Unwind-EHABI.cpp: Removes _LIBUNWIND_NATIVEAOT guards
  • llvm-libunwind-version.txt: Removes the patch reference

No partial revert or leftover artifacts detected.

✅ Risk Assessment — Low risk

Reverting to a known-good state that was stable before #128667. The only risk is re-exposing the Android NDK r29 symbol conflict, which is a pre-existing issue that needs a different fix approach.

Generated by Code Review for issue #128883 · ● 1.6M ·

@MichalStrehovsky
MichalStrehovsky enabled auto-merge (squash) June 2, 2026 09:10
@MichalStrehovsky
MichalStrehovsky merged commit c7d8935 into mainJun 2, 2026
176 checks passed
@MichalStrehovsky
MichalStrehovsky deleted the revert-128667-libunwind-ifdef branch June 2, 2026 09:47
@dotnet-milestone-botdotnet-milestone-botBot added this to the 11.0-preview6 milestone Jun 3, 2026
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Jul 3, 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.

HardwareIntrinsics_General tests failing on Linux arm NAOT

3 participants

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

Revert "Guard unused llvm-libunwind symbols to avoid duplicates on Android" - #128883

Merged
MichalStrehovsky merged 1 commit into
mainfrom
revert-128667-libunwind-ifdef
Jun 2, 2026
Merged

Revert "Guard unused llvm-libunwind symbols to avoid duplicates on Android"#128883
MichalStrehovsky merged 1 commit into
mainfrom
revert-128667-libunwind-ifdef

Conversation

@MichalStrehovsky

@MichalStrehovskyMichalStrehovsky commented Jun 2, 2026

Copy link
Copy Markdown
Member

Resolves#128866.

Reverts #128667

@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to this area: @agocke, @dotnet/ilc-contrib
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 reverts #128667, which had guarded unused llvm-libunwind symbols with a new _LIBUNWIND_NATIVEAOT define to avoid duplicate symbol conflicts on Android (NDK r29). The revert restores the prior approach of using _LIBUNWIND_DISABLE_ZERO_COST_APIS=1 to disable the _Unwind_XXX style APIs.

Changes:

  • Revert the _LIBUNWIND_NATIVEAOT guards in the vendored llvm-libunwind sources (libunwind.cpp, Unwind-EHABI.cpp) and drop the corresponding patch entry from llvm-libunwind-version.txt.
  • Restore -D_LIBUNWIND_DISABLE_ZERO_COST_APIS=1 (in place of -D_LIBUNWIND_NATIVEAOT=1) in src/coreclr/nativeaot/Runtime/CMakeLists.txt.
  • Remove the UnwindHelpers::FindUnwindSections wrapper and call libunwind::LocalAddressSpace::sThisAddressSpace.findUnwindSections directly from UnixNativeCodeManager.

Reviewed changes

Copilot reviewed 7 out of 7 changed files in this pull request and generated no comments.

Show a summary per file
FileDescription
src/native/external/llvm-libunwind/src/Unwind-EHABI.cppRemove _LIBUNWIND_NATIVEAOT guard around EHABI C++ exception dispatch functions.
src/native/external/llvm-libunwind/src/libunwind.cppRemove _LIBUNWIND_NATIVEAOT guard around the public unw_* API block.
src/native/external/llvm-libunwind-version.txtDrop the reverted commit reference from the applied-patches list.
src/coreclr/nativeaot/Runtime/unix/UnwindHelpers.hRemove now-unused FindUnwindSections declaration.
src/coreclr/nativeaot/Runtime/unix/UnwindHelpers.cppRemove FindUnwindSections wrapper implementation.
src/coreclr/nativeaot/Runtime/unix/UnixNativeCodeManager.cppRestore direct call into LocalAddressSpace::sThisAddressSpace.findUnwindSections.
src/coreclr/nativeaot/Runtime/CMakeLists.txtReplace _LIBUNWIND_NATIVEAOT define with _LIBUNWIND_DISABLE_ZERO_COST_APIS.

@github-actions

Copy link
Copy Markdown
Contributor

Note

This review was generated by Copilot.

🤖 Copilot Code Review — PR #128883

Holistic Assessment

Motivation: Justified. PR #128667 introduced _LIBUNWIND_NATIVEAOT guards that broke HardwareIntrinsics_General tests on Linux ARM NativeAOT (#128866). A revert is the correct response to a regression in outerloop CI.

Approach: Clean revert restoring the previous _LIBUNWIND_DISABLE_ZERO_COST_APIS approach. The change also correctly reverts the UnwindHelpers::FindUnwindSections wrapper back to direct LocalAddressSpace::sThisAddressSpace.findUnwindSections() usage, and removes the patch reference from llvm-libunwind-version.txt.

Summary: ✅ LGTM. This is a straightforward, complete revert of a commit that caused a regression. All 7 changed files correspond exactly to the inverse of PR #128667. The original Android NDK r29 symbol conflict issue will need to be re-addressed in a follow-up with a different approach that doesn't break ARM unwinding.


Detailed Findings

✅ Correctness — Revert is complete and accurate

All changes in PR #128667 are fully reverted:

  • CMakeLists.txt: _LIBUNWIND_NATIVEAOT_LIBUNWIND_DISABLE_ZERO_COST_APIS (the original define)
  • UnixNativeCodeManager.cpp: Restores direct LocalAddressSpace::sThisAddressSpace.findUnwindSections() call
  • UnwindHelpers.cpp/h: Removes the FindUnwindSections wrapper added in Guard unused llvm-libunwind symbols to avoid duplicates on Android #128667
  • libunwind.cpp and Unwind-EHABI.cpp: Removes _LIBUNWIND_NATIVEAOT guards
  • llvm-libunwind-version.txt: Removes the patch reference

No partial revert or leftover artifacts detected.

✅ Risk Assessment — Low risk

Reverting to a known-good state that was stable before #128667. The only risk is re-exposing the Android NDK r29 symbol conflict, which is a pre-existing issue that needs a different fix approach.

Generated by Code Review for issue #128883 · ● 1.6M ·

@MichalStrehovsky
MichalStrehovsky enabled auto-merge (squash) June 2, 2026 09:10
@MichalStrehovsky
MichalStrehovsky merged commit c7d8935 into mainJun 2, 2026
176 checks passed
@MichalStrehovsky
MichalStrehovsky deleted the revert-128667-libunwind-ifdef branch June 2, 2026 09:47
@dotnet-milestone-botdotnet-milestone-botBot added this to the 11.0-preview6 milestone Jun 3, 2026
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Jul 3, 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.

HardwareIntrinsics_General tests failing on Linux arm NAOT

3 participants

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

Revert "Guard unused llvm-libunwind symbols to avoid duplicates on Android" - #128883

Merged
MichalStrehovsky merged 1 commit into
mainfrom
revert-128667-libunwind-ifdef
Jun 2, 2026
Merged

Revert "Guard unused llvm-libunwind symbols to avoid duplicates on Android"#128883
MichalStrehovsky merged 1 commit into
mainfrom
revert-128667-libunwind-ifdef

Conversation

@MichalStrehovsky

@MichalStrehovskyMichalStrehovsky commented Jun 2, 2026

Copy link
Copy Markdown
Member

Resolves#128866.

Reverts #128667

@dotnet-policy-service

Copy link
Copy Markdown
Contributor

Tagging subscribers to this area: @agocke, @dotnet/ilc-contrib
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 reverts #128667, which had guarded unused llvm-libunwind symbols with a new _LIBUNWIND_NATIVEAOT define to avoid duplicate symbol conflicts on Android (NDK r29). The revert restores the prior approach of using _LIBUNWIND_DISABLE_ZERO_COST_APIS=1 to disable the _Unwind_XXX style APIs.

Changes:

  • Revert the _LIBUNWIND_NATIVEAOT guards in the vendored llvm-libunwind sources (libunwind.cpp, Unwind-EHABI.cpp) and drop the corresponding patch entry from llvm-libunwind-version.txt.
  • Restore -D_LIBUNWIND_DISABLE_ZERO_COST_APIS=1 (in place of -D_LIBUNWIND_NATIVEAOT=1) in src/coreclr/nativeaot/Runtime/CMakeLists.txt.
  • Remove the UnwindHelpers::FindUnwindSections wrapper and call libunwind::LocalAddressSpace::sThisAddressSpace.findUnwindSections directly from UnixNativeCodeManager.

Reviewed changes

Copilot reviewed 7 out of 7 changed files in this pull request and generated no comments.

Show a summary per file
FileDescription
src/native/external/llvm-libunwind/src/Unwind-EHABI.cppRemove _LIBUNWIND_NATIVEAOT guard around EHABI C++ exception dispatch functions.
src/native/external/llvm-libunwind/src/libunwind.cppRemove _LIBUNWIND_NATIVEAOT guard around the public unw_* API block.
src/native/external/llvm-libunwind-version.txtDrop the reverted commit reference from the applied-patches list.
src/coreclr/nativeaot/Runtime/unix/UnwindHelpers.hRemove now-unused FindUnwindSections declaration.
src/coreclr/nativeaot/Runtime/unix/UnwindHelpers.cppRemove FindUnwindSections wrapper implementation.
src/coreclr/nativeaot/Runtime/unix/UnixNativeCodeManager.cppRestore direct call into LocalAddressSpace::sThisAddressSpace.findUnwindSections.
src/coreclr/nativeaot/Runtime/CMakeLists.txtReplace _LIBUNWIND_NATIVEAOT define with _LIBUNWIND_DISABLE_ZERO_COST_APIS.

@github-actions

Copy link
Copy Markdown
Contributor

Note

This review was generated by Copilot.

🤖 Copilot Code Review — PR #128883

Holistic Assessment

Motivation: Justified. PR #128667 introduced _LIBUNWIND_NATIVEAOT guards that broke HardwareIntrinsics_General tests on Linux ARM NativeAOT (#128866). A revert is the correct response to a regression in outerloop CI.

Approach: Clean revert restoring the previous _LIBUNWIND_DISABLE_ZERO_COST_APIS approach. The change also correctly reverts the UnwindHelpers::FindUnwindSections wrapper back to direct LocalAddressSpace::sThisAddressSpace.findUnwindSections() usage, and removes the patch reference from llvm-libunwind-version.txt.

Summary: ✅ LGTM. This is a straightforward, complete revert of a commit that caused a regression. All 7 changed files correspond exactly to the inverse of PR #128667. The original Android NDK r29 symbol conflict issue will need to be re-addressed in a follow-up with a different approach that doesn't break ARM unwinding.


Detailed Findings

✅ Correctness — Revert is complete and accurate

All changes in PR #128667 are fully reverted:

  • CMakeLists.txt: _LIBUNWIND_NATIVEAOT_LIBUNWIND_DISABLE_ZERO_COST_APIS (the original define)
  • UnixNativeCodeManager.cpp: Restores direct LocalAddressSpace::sThisAddressSpace.findUnwindSections() call
  • UnwindHelpers.cpp/h: Removes the FindUnwindSections wrapper added in Guard unused llvm-libunwind symbols to avoid duplicates on Android #128667
  • libunwind.cpp and Unwind-EHABI.cpp: Removes _LIBUNWIND_NATIVEAOT guards
  • llvm-libunwind-version.txt: Removes the patch reference

No partial revert or leftover artifacts detected.

✅ Risk Assessment — Low risk

Reverting to a known-good state that was stable before #128667. The only risk is re-exposing the Android NDK r29 symbol conflict, which is a pre-existing issue that needs a different fix approach.

Generated by Code Review for issue #128883 · ● 1.6M ·

@MichalStrehovsky
MichalStrehovsky enabled auto-merge (squash) June 2, 2026 09:10
@MichalStrehovsky
MichalStrehovsky merged commit c7d8935 into mainJun 2, 2026
176 checks passed
@MichalStrehovsky
MichalStrehovsky deleted the revert-128667-libunwind-ifdef branch June 2, 2026 09:47
@dotnet-milestone-botdotnet-milestone-botBot added this to the 11.0-preview6 milestone Jun 3, 2026
@github-actionsgithub-actionsBot locked and limited conversation to collaborators Jul 3, 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.

HardwareIntrinsics_General tests failing on Linux arm NAOT

3 participants

@MichalStrehovsky@jkotas