Cygwin: enable initial AArch64 config and register context - #359
Closed
crutkas wants to merge 6 commits into
Closed
Conversation
Allow the accepted aarch64 target through winsup configury and define its Automake conditional. Add configure-only CI coverage for both the existing x86_64 target and AArch64.\n\nThe winsup change backports cygwin/cygwin@2138e80.\n\nCo-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Backport accepted Cygwin commit aeea9ae for AArch64 CONTEXT and mcontext register mappings. Resolve the later pthread cancellation stack-alignment change to match current upstream: preserve the x86_64 path and align AArch64 SP to 16 bytes. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Compile the Cygwin mcontext layout and portable register aliases with the published aarch64-pc-cygwin toolchain. Temporarily probe the subsequent full-build failure so the next blocker can be identified precisely. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Collaborator
|
@crutkas how much coordination exists between your effort and @aswin-mcw's in #356? I don't want friction of two independent efforts trying to achieve the same goal. I want synergy. |
The published aarch64-pc-cygwin toolchain contains ARM64-hosted binaries, so execute the register-context check on GitHub's ARM64 Ubuntu runner. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Compile the internal cygwin/signal.h with the same foundational types supplied by the public signal header. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Remove the one-time full-build probe now that it identified the next blocker. Keep the digest-pinned AArch64 compile check as the permanent regression test. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Author
|
I'm actively working on a prototype, this was supposed to be self contained under my own fork. Thanks for making me aware of that effort. My goal is not to cause friction at all |
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Backport the first two accepted Cygwin AArch64 prerequisites to the
msys2-3.6.10line:aarch64through thewinsuptarget-processor gate and defineTARGET_AARCH64CONTEXT/__mcontextlayout and portable register aliases used by exceptions, profiling, and pthread cancellationaarch64-pc-cygwinand a digest-pinned AArch64 compile check for the register layout/aliasesThis intentionally uses
aarch64-pc-cygwin, notaarch64-pc-msys: since #303, MSYS2 builds the runtime with the Cygwin triplet and applies MSYS behavior in runtime sources. It does not reintroduce the stale*-*-msysconfigury from #356.Upstream provenance
No parent commit of
aeea9aewas required; its parent is unrelated malloc-wrapper work. The only cherry-pick conflict was with the newer pthread stack-alignment fix already on this branch. It is resolved to current upstream behavior: x86_64 retainsSP % 16 == 8, while AArch64 aligns SP to 16 bytes before redirecting the instruction pointer.Validation
aarch64-pc-cygwin-g++compile of every AArch64CONTEXT/__mcontextoffset and_CX_*/_MC_*alias passed on an ARM64 Ubuntu runner: https://github.com/msys2/msys2-runtime/actions/runs/31727267518/job/94538649809aarch64-pc-cygwinwinsup configure passed: https://github.com/msys2/msys2-runtime/actions/runs/31727267518/job/94538649903x86_64-pc-cygwinwinsup configure passed: https://github.com/msys2/msys2-runtime/actions/runs/31727267518/job/94538649936The seven downstream
msys2-testsmatrix jobs reached their shared keyring test and then failed for the same external trust error:Key 87771331B3F1FF5263856A6D974C8BE49078F532 does not have full trust. This is unrelated to the runtime diff; preceding tests completed normally.Next blocker
A one-time full AArch64 build probe advanced past this patch and stopped while compiling
newlib/libm/math/k_standard.c:That is the x86_64-only inline
__getreent()stack-base lookup. Its accepted upstream fix is cygwin/cygwin@e97c157.The later signal/SEH implementation is deliberately not folded into this PR. It is a larger, non-contiguous accepted series beginning with the gendef stubs (
f38c75a), incorporating the AArch64 gendef/sigdelayed work and the VEH fix (b0a9b62), then converging through0cde89e→5f5462d→2a953c1→4054e78→bc99666. That series should be reviewed separately with its intervening ABI/newlib prerequisites.