Revert "Guard unused llvm-libunwind symbols to avoid duplicates on Android"#128828
Revert "Guard unused llvm-libunwind symbols to avoid duplicates on Android"#128828MichalStrehovsky wants to merge 1 commit into
Conversation
|
Tagging subscribers to this area: @agocke, @dotnet/ilc-contrib |
|
/azp run runtime-nativeaot-outerloop |
|
Azure Pipelines successfully started running 1 pipeline(s). |
🤖 Copilot Code Review — PR #128828Holistic AssessmentMotivation: Justified. ARM32 crashes in libunwind code are traced to the commit range that includes #128667. Reverting the prime suspect is the correct first response to a runtime crash. Approach: This is a clean, mechanical revert of #128667. The approach is appropriate — revert to restore stability, then re-investigate the Android symbol conflict fix (#121172) with an approach that doesn't break ARM32. Summary: ✅ LGTM. This is a faithful revert of all 7 files changed in #128667. The diff is the exact inverse of the original PR. No new code, no partial reverts, no manual edits — just a clean undo. The labels (NO-MERGE, NO-REVIEW, draft) indicate the author is running outerloop CI to confirm this fixes the ARM32 crashes before merging. Detailed Findings✅ Revert Completeness — All changes from #128667 are fully revertedVerified that all 7 files modified in #128667 are reverted:
Additions (3) + deletions (26) match the inverse of #128667's additions (26) + deletions (3). ✅ No Collateral Changes — Revert is isolatedNo unrelated modifications, no style changes, no additional fixes bundled in. 💡 Follow-up: Android NDK r29 symbol conflict (#121172) will need a new fixThe original PR was fixing real symbol conflicts on Android NDK r29. After this revert lands, the issue will resurface. The next attempt should ensure ARM32 EHABI paths remain functional — the original approach of guarding out the C++ exception dispatch functions in
|
There was a problem hiding this comment.
Pull request overview
This PR reverts #128667, which had guarded out llvm-libunwind public symbols for NativeAOT via a _LIBUNWIND_NATIVEAOT define. The revert is motivated by ARM32 crashes observed in libunwind code, suspected to originate from the guarded build.
Changes:
- Removes
_LIBUNWIND_NATIVEAOTconditional guards fromlibunwind.cppandUnwind-EHABI.cpp, restoring the publicunw_*/_Unwind_*APIs and EHABI personality routines. - Restores the previous CMake definition
_LIBUNWIND_DISABLE_ZERO_COST_APIS=1in place of_LIBUNWIND_NATIVEAOT=1. - Removes the
UnwindHelpers::FindUnwindSectionswrapper and reverts the call site to useLocalAddressSpace::sThisAddressSpace.findUnwindSectionsdirectly; updatesllvm-libunwind-version.txt.
Reviewed changes
Copilot reviewed 7 out of 7 changed files in this pull request and generated no comments.
Show a summary per file
| File | Description |
|---|---|
src/native/external/llvm-libunwind/src/Unwind-EHABI.cpp |
Removes _LIBUNWIND_NATIVEAOT guard around EHABI personality and _Unwind_* APIs. |
src/native/external/llvm-libunwind/src/libunwind.cpp |
Removes _LIBUNWIND_NATIVEAOT guard around public unw_* API and LocalAddressSpace. |
src/native/external/llvm-libunwind-version.txt |
Drops the entry for the reverted local patch commit. |
src/coreclr/nativeaot/Runtime/unix/UnwindHelpers.h |
Removes FindUnwindSections declaration. |
src/coreclr/nativeaot/Runtime/unix/UnwindHelpers.cpp |
Removes FindUnwindSections implementation. |
src/coreclr/nativeaot/Runtime/unix/UnixNativeCodeManager.cpp |
Reverts to calling LocalAddressSpace::sThisAddressSpace.findUnwindSections directly. |
src/coreclr/nativeaot/Runtime/CMakeLists.txt |
Replaces _LIBUNWIND_NATIVEAOT=1 define with _LIBUNWIND_DISABLE_ZERO_COST_APIS=1. |
|
arm32 is green here, so this is confirmed. |
Reverts #128667
Seeing crashes on ARM32 in libunwind code, suspect range is d1b43a3...a73aedb so this is a prime suspect.