Skip to content

Commit 22527b5

Browse files
committed
RFC: Drop MSVC AARCH64 Support
This commit adds the aforementioned RFC. Signed-off-by: Oliver Smith-Denny <osde@microsoft.com>
1 parent 6585012 commit 22527b5

1 file changed

Lines changed: 121 additions & 0 deletions

File tree

Lines changed: 121 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,121 @@
1+
# RFC: Drop MSVC AARCH64 Support
2+
3+
## Metadata
4+
5+
- **RFC Number**: TBD
6+
- **Title**: Drop MSVC AARCH64 Support
7+
- **Status**: Draft
8+
9+
## Change Log
10+
11+
- 2026-07-13: Initial RFC created
12+
13+
## Motivation
14+
15+
edk2 has build bindings for MSVC AARCH64 but lacks support for this toolchain in most
16+
of the repository. The toolchain is not exercised in CI and a full platform cannot be built with
17+
it without significant downstream overrides. One large blocker is that GAS assembly is not supported
18+
by the toolchain, but the majority of the AARCH64 assembly code in edk2 is GAS only.
19+
20+
The benefit of MSVC AARCH64 is that it natively produces PE/COFF binaries (and so thereby allowing
21+
different file and section alignment, PDB debugging, and less processing). However, the newly added
22+
CLANGPDB AARCH64 also natively produces PE/COFF binaries, is supported on Linux and Windows, uses
23+
GAS assembly, and is run in CI today.
24+
25+
Pseudo supporting additional toolchains carries maintenance burden and risk, especially as this
26+
toolchain will never be tested. Consumers should move to CLANGPDB AARCH64 instead and MSVC
27+
AARCH64 should be removed.
28+
29+
## Technology Background
30+
31+
CLANGPDB AARCH64 support was added to edk2 in https://github.com/tianocore/edk2/pull/11902 in
32+
early 2026. Prior to this, MSVC AARCH64 was the only toolchain with edk2 bindings for AARCH64 that
33+
supported PE/COFF binary generation natively. However, all of the build support was primarily
34+
downstream and toolchain adoption never really grew, with GCC AARCH64 being the primary AARCH64
35+
toolchain in edk2.
36+
37+
## Goals
38+
39+
1. Reduce toolchain maintenance
40+
2. Remove dead/almost dead/forever untested code
41+
42+
## Requirements
43+
44+
1. Have a better alternative for consumers to migrate to
45+
46+
## UEFI/PI Specification Impact
47+
48+
This does not have specification impact.
49+
50+
## Backward Compatibility
51+
52+
This is a breaking change. edk2 will not support building with MSVC AARCH64 any longer. However,
53+
as noted, a full platform cannot be built with MSVC AARCH64 with edk2 anyway. Small usecases, such
54+
as an EFI_APPLICATION may be able to build.
55+
56+
Consumers are expected to move to CLANGPDB AARCH64, which is a better alternative for the reasons
57+
listed above. GCC AARCH64 also exists as a possibility, but does not run on Windows, where MSVC
58+
AARCH64 developers would be.
59+
60+
## Platform/Package Impact
61+
62+
All.
63+
64+
## Unresolved Questions
65+
66+
N/A.
67+
68+
## Prior Art/Related Work
69+
70+
Toolchains have been deprecated in edk2 before, but primarily older versions rather than
71+
an entire toolchain.
72+
73+
## Alternatives
74+
75+
### Alternative 1: Do Nothing
76+
77+
- **Pros**: No breaking change.
78+
- **Cons**: Unused code is kept in the tree, there is the appearance of support for what will likely
79+
be a painful experience for consumers.
80+
- **Why not chosen**: Consumers will be better served by moving to the actually supported CLANGPDB AARCH64.
81+
edk2 maintenance will be improved by removing unused code.
82+
83+
## Implementation Design
84+
85+
The toolchain and supporting arm64asm files will be removed.
86+
87+
### Architecture Overview
88+
89+
N/A.
90+
91+
### Detailed Design
92+
93+
N/A.
94+
95+
### Code Examples
96+
97+
N/A.
98+
99+
## Testing Strategy
100+
101+
N/A.
102+
103+
## Migration/Adoption Plan
104+
105+
1. **Phase 1**: Announce deprecation of the toolchain
106+
2. **Phase 2**: Remove the toolchain
107+
108+
## Guide-Level Explanation
109+
110+
### For Package Developers
111+
112+
MSVC AARCH64 is no longer supported. Migrate to CLANGPDB AARCH64 instead.
113+
114+
### For Platform Developers
115+
116+
MSVC AARCH64 is already unsupported for platform developers, but the
117+
same guidance applies.
118+
119+
### For End Users (if applicable)
120+
121+
N/A.

0 commit comments

Comments
 (0)