镜像站点 · 本页由第三方 GitHub 只读镜像提供,非 GitHub 官方站点,不接受任何登录或凭据输入。前往 github.com
Skip to content

Delete linux-x86 code and infra - #137008

Merged
jkotas merged 2 commits into
dotnet:mainfrom
am11:chore/delete-linux-x86
Nov 6, 2026
Merged

jkotas merged 2 commits into
dotnet:mainfrom
am11:chore/delete-linux-x86

Conversation

@am11

@am11 am11 commented Nov 5, 2026 •

Copy link
Copy Markdown
Member

Closes #7335
Closes #31180
Closes #83509
Closes #136997

@github-actions github-actions Bot added the area-PAL-coreclr only for closed issues label Nov 5, 2026
@azure-pipelines

Copy link
Copy Markdown
Azure Pipelines:
Successfully started running 8 pipeline(s).
7 pipeline(s) were filtered out due to trigger conditions.
There may be pipelines that require an authorized user to comment /azp run to run.

@dotnet-policy-service dotnet-policy-service Bot added the community-contribution Indicates that the PR has been added by a community member label Nov 5, 2026
Comment thread eng/common/cross/build-rootfs.sh Resolved
@tannergooding

Copy link
Copy Markdown
Member

Changes otherwise LGTM

Copilot AI 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.

🔵 Needs a closer look

The ABI and cross-build removals span multiple runtime subsystems, and preserving Windows x86 and cross-target diagnostics behavior requires native build and runtime validation not performed in this static review.

No open issues 🎉

What changed in this PR

This PR retires Linux x86 support for .NET 12, addressing #136997 and closing the related support-tracking issues. It removes Unix x86 implementations across CoreCLR, NativeAOT, and diagnostics while retaining Windows x86 paths.

Changes:

  • Removes Unix x86 assembly, calling-convention handling, stack alignment, unwinding, and diagnostic support.
  • Rejects non-Windows x86 CoreCLR targets and removes Linux x86 build, cross-compilation, and CI infrastructure.
  • Cleans up associated test conditions, runtime identifiers, documentation, and ignore rules.

Builds and tests were not run during this review.

File Description
src/​tests/​JIT/​HardwareIntrinsics/​HardwareIntrinsics_X86_ro.csproj Removes non-Windows x86 exclusion.
src/​tests/​JIT/​HardwareIntrinsics/​HardwareIntrinsics_X86_r.csproj Removes non-Windows x86 exclusion.
src/​tests/​JIT/​HardwareIntrinsics/​HardwareIntrinsics_X86_Avx512_ro.csproj Removes non-Windows x86 exclusion.
src/​tests/​JIT/​HardwareIntrinsics/​HardwareIntrinsics_X86_Avx512_r.csproj Removes non-Windows x86 exclusion.
src/​tests/​JIT/​HardwareIntrinsics/​HardwareIntrinsics_X86_Avx10v2_ro.csproj Removes non-Windows x86 exclusion.
src/​tests/​JIT/​HardwareIntrinsics/​HardwareIntrinsics_X86_Avx10v2_r.csproj Removes non-Windows x86 exclusion.
src/​tests/​JIT/​HardwareIntrinsics/​HardwareIntrinsics_X86_Avx10v1_ro.csproj Removes non-Windows x86 exclusion.
src/​tests/​JIT/​HardwareIntrinsics/​HardwareIntrinsics_X86_Avx10v1_r.csproj Removes non-Windows x86 exclusion.
src/​tests/​JIT/​HardwareIntrinsics/​HardwareIntrinsics_X86_Avx_ro.csproj Removes non-Windows x86 exclusion.
src/​tests/​JIT/​HardwareIntrinsics/​HardwareIntrinsics_X86_Avx_r.csproj Removes non-Windows x86 exclusion.
src/​tests/​JIT/​HardwareIntrinsics/​Directory.Build.targets Removes shared non-Windows x86 exclusion.
src/​tests/​baseservices/​exceptions/​inproccrashreport/​Shared/​CMakeLists.txt Removes x86 musl library dependency.
src/​native/​managed/​cdac/​Microsoft.Diagnostics.DataContractReader.Contracts/​Contracts/​StackWalk/​Context/​X86/​X86Unwinder.cs Removes Unix x86 funclet alignment handling.
src/​native/​corehost/​apphost/​static/​CMakeLists.txt Removes Unix x86 createdump exclusion.
src/​coreclr/​vm/​virtualcallstub.h Simplifies x86 resolve-stub declaration guard.
src/​coreclr/​vm/​virtualcallstub.cpp Simplifies x86 resolve-stub argument guards.
src/​coreclr/​vm/​threadsuspend.cpp Removes Unix exception-handling exclusion.
src/​coreclr/​vm/​threadstatics.cpp Removes Linux x86 optimization exclusion.
src/​coreclr/​vm/​stubmgr.h Simplifies tail-call stub manager guards.
src/​coreclr/​vm/​stubmgr.cpp Simplifies tail-call stub implementation guards.
src/​coreclr/​vm/​methodtablebuilder.cpp Removes Unix x86 field-alignment rules.
src/​coreclr/​vm/​jitinterface.h Simplifies x86 tail-call helper guard.
src/​coreclr/​vm/​i386/​virtualcallstubcpu.hpp Removes Unix alternatives from dispatch stubs.
src/​coreclr/​vm/​i386/​umthunkstub.S Deletes Unix unmanaged-entry prestub.
src/​coreclr/​vm/​i386/​thunktemplates.S Deletes Unix precode and counting templates.
src/​coreclr/​vm/​i386/​stublinkerx86.cpp Removes Unix ABI restrictions.
src/​coreclr/​vm/​i386/​pinvokestubs.S Deletes Unix P/Invoke assembly helpers.
src/​coreclr/​vm/​i386/​jithelp.S Deletes Unix JIT assembly helpers.
src/​coreclr/​vm/​i386/​excepx86.cpp Removes Unix stack-cleanup exclusion.
src/​coreclr/​vm/​i386/​ehhelpers.S Deletes Unix exception-handling assembly helpers.
src/​coreclr/​vm/​i386/​cgenx86.cpp Removes Unix frame and helper-emission paths.
src/​coreclr/​vm/​i386/​AsmMacros_Shared.h Deletes Unix assembly include wrapper.
src/​coreclr/​vm/​i386/​asmconstants.h Simplifies tail-call frame constant guards.
src/​coreclr/​vm/​i386/​AllocSlow.S Deletes Unix slow-allocation helpers.
src/​coreclr/​vm/​gdbjit.h Removes x86 ELF and register selection.
src/​coreclr/​vm/​gdbjit.cpp Removes x86 debug-frame and ELF setup.
src/​coreclr/​vm/​gc_unwind_x86.inl Removes Unix funclet alignment adjustments.
src/​coreclr/​vm/​FrameTypes.h Simplifies tail-call frame guard.
src/​coreclr/​vm/​frames.h Simplifies tail-call frame definition guards.
src/​coreclr/​vm/​fieldmarshaler.cpp Removes Unix x86 native-alignment rules.
src/​coreclr/​vm/​exceptionhandling.cpp Removes x86 Unix divide-error handling.
src/​coreclr/​vm/​datadescriptor/​datadescriptor.inc Simplifies tail-call frame descriptor guard.
src/​coreclr/​vm/​comutilnative.h Removes Unix x86 padding exception.
src/​coreclr/​vm/​comdelegate.cpp Removes Unix delegate stack-size special case.
src/​coreclr/​vm/​codeman.cpp Removes Unix x86 alternate-JIT selection.
src/​coreclr/​vm/​CMakeLists.txt Removes Unix x86 assembly build inputs.
src/​coreclr/​vm/​classlayoutinfo.cpp Removes Unix x86 primitive-alignment rules.
src/​coreclr/​vm/​callingconvention.h Removes Unix unmanaged return-buffer helper.
src/​coreclr/​tools/​Common/​CommandLineHelpers.cs Rejects non-Windows x86 target specifications.
src/​coreclr/​runtime/​i386/​WriteBarriers.S Deletes Unix write-barrier assembly.
src/​coreclr/​runtime/​i386/​MiscStubs.S Deletes Unix stack-probe and shift helpers.
src/​coreclr/​runtime/​i386/​AsmMacros_Unix.inc Deletes shared Unix x86 assembly macros.
src/​coreclr/​runtime/​i386/​AllocFast.S Deletes Unix fast-allocation assembly.
src/​coreclr/​pal/​src/​thread/​context.cpp Removes x86 context handling.
src/​coreclr/​pal/​src/​misc/​perfjitdump.cpp Removes x86 JIT-dump architecture selection.
src/​coreclr/​pal/​src/​include/​pal/​context.h Removes x86 register access definitions.
src/​coreclr/​pal/​src/​exception/​seh.cpp Removes x86 exception-helper calling convention.
src/​coreclr/​pal/​src/​exception/​seh-unwind.cpp Removes x86 unwind register mappings.
src/​coreclr/​pal/​src/​exception/​remote-unwind.cpp Removes x86 remote-unwind support.
src/​coreclr/​pal/​src/​exception/​machmessage.cpp Removes 32-bit x86 thread-state handling.
src/​coreclr/​pal/​src/​CMakeLists.txt Removes x86 PAL sources and musl dependency.
src/​coreclr/​pal/​src/​arch/​i386/​signalhandlerhelper.cpp Deletes x86 custom-stack signal handling.
src/​coreclr/​pal/​src/​arch/​i386/​exceptionhelper.S Deletes x86 exception-transfer assembly.
src/​coreclr/​pal/​src/​arch/​i386/​debugbreak.S Deletes x86 debug-break assembly.
src/​coreclr/​pal/​src/​arch/​i386/​context2.S Deletes x86 context capture and restoration.
src/​coreclr/​pal/​src/​arch/​i386/​callsignalhandlerwrapper.S Deletes x86 signal-handler wrappers.
src/​coreclr/​pal/​src/​arch/​i386/​asmconstants.h Deletes x86 PAL context offsets.
src/​coreclr/​pal/​inc/​unixasmmacrosx86.inc Deletes x86 PAL assembly macros.
src/​coreclr/​pal/​inc/​unixasmmacros.inc Removes x86 assembly macro selection.
src/​coreclr/​pal/​inc/​rt/​palrt.h Removes x86 dispatcher context definition.
src/​coreclr/​pal/​inc/​pal.h Removes x86 contexts and intrinsic special cases.
src/​coreclr/​pal/​inc/​pal_mstypes.h Removes Unix x86 calling-convention attributes.
src/​coreclr/​nativeaot/​Runtime/​unix/​UnwindHelpers.cpp Removes NativeAOT Unix x86 unwinding.
src/​coreclr/​nativeaot/​Runtime/​unix/​UnixNativeCodeManager.cpp Removes x86 outgoing-argument adjustment.
src/​coreclr/​nativeaot/​Runtime/​unix/​unixasmmacrosx86.inc Deletes x86 assembly include wrapper.
src/​coreclr/​nativeaot/​Runtime/​unix/​unixasmmacros.inc Removes x86 macro selection.
src/​coreclr/​nativeaot/​Runtime/​unix/​PalUnix.cpp Removes x86 pause-instruction branch.
src/​coreclr/​nativeaot/​Runtime/​unix/​PalInline.h Removes x86 processor-yield branch.
src/​coreclr/​nativeaot/​Runtime/​unix/​NativeContext.cpp Removes Unix x86 register mappings.
src/​coreclr/​nativeaot/​Runtime/​i386/​UniversalTransition.S Deletes Unix transition placeholder.
src/​coreclr/​nativeaot/​Runtime/​i386/​PInvoke.S Deletes Unix P/Invoke placeholder.
src/​coreclr/​nativeaot/​Runtime/​i386/​GcProbe.S Deletes Unix GC-probe placeholder.
src/​coreclr/​nativeaot/​Runtime/​i386/​ExceptionHandling.S Deletes Unix exception-handling placeholder.
src/​coreclr/​nativeaot/​Runtime/​i386/​DispatchResolve.S Deletes Unix dispatch placeholder.
src/​coreclr/​nativeaot/​Runtime/​i386/​AsmMacros_Shared.h Deletes shared assembly macro placeholder.
src/​coreclr/​nativeaot/​Runtime/​CMakeLists.txt Removes Unix x86 ABI definition.
src/​coreclr/​minipal/​Unix/​doublemapping.cpp Removes x86 template-mapping exclusion.
src/​coreclr/​jit/​targetx86.h Retains only Windows x86 stack alignment.
src/​coreclr/​jit/​target.h Removes Unix x86 ABI query.
src/​coreclr/​jit/​stacklevelsetter.cpp Removes Unix stack-alignment bookkeeping.
src/​coreclr/​jit/​morph.cpp Removes Unix helper-call convention handling.
src/​coreclr/​jit/​lower.cpp Simplifies x86 P/Invoke frame guard.
src/​coreclr/​jit/​lclvars.cpp Removes Unix frame-alignment adjustment.
src/​coreclr/​jit/​jit.h Removes Unix x86 ABI consistency check.
src/​coreclr/​jit/​importercalls.cpp Removes Unix caller-cleanup flag handling.
src/​coreclr/​jit/​importer.cpp Removes Unix x86 return-buffer ordering case.
src/​coreclr/​jit/​helperexpansion.cpp Removes Unix x86 TLS call adjustment.
src/​coreclr/​jit/​gentree.h Removes Unix stack-alignment state and accessors.
src/​coreclr/​jit/​gentree.cpp Removes Unix call-state initialization and flags.
src/​coreclr/​jit/​compiler.h Removes Unix SIMD-alignment exclusion.
src/​coreclr/​jit/​compiler.cpp Removes Unix x86 struct-return classification.
src/​coreclr/​jit/​codegenxarch.cpp Removes Unix alignment and calling-convention emission.
src/​coreclr/​jit/​codegencommon.cpp Removes Unix stack-alignment bookkeeping and recovery.
src/​coreclr/​jit/​codegen.h Removes nested-alignment state and helpers.
src/​coreclr/​jit/​CMakeLists.txt Removes Unix x86 standalone-JIT target.
src/​coreclr/​jit/​buildstring.cpp Removes Unix x86 build-string selection.
src/​coreclr/​inc/​vptr_list.h Simplifies tail-call stub registration guard.
src/​coreclr/​inc/​jithelpers.h Simplifies x86 tail-call helper registration.
src/​coreclr/​inc/​corinfo.h Removes Unix managed caller-pop convention.
src/​coreclr/​gcinfo/​CMakeLists.txt Removes Unix x86 GC-info library target.
src/​coreclr/​gc/​unix/​gcenv.unix.cpp Removes x86 cache-query exclusion.
src/​coreclr/​gc/​env/​gcenv.base.h Removes non-MSVC x86 pause branch.
src/​coreclr/​dlls/​mscordbi_universal/​SourceManifest.props Removes deleted assembly macro from manifest.
src/​coreclr/​debug/​ee/​i386/​dbghelpers.S Deletes Unix x86 debugger assembly helpers.
src/​coreclr/​debug/​ee/​controller.cpp Removes Unix x86 patch-protection path.
src/​coreclr/​debug/​di/​shimremotedatatarget.cpp Removes POSIX x86 platform reporting.
src/​coreclr/​debug/​daccess/​datatargetadapter.cpp Removes POSIX x86 target mapping.
src/​coreclr/​debug/​daccess/​daccess.cpp Removes POSIX x86 DAC initialization.
src/​coreclr/​debug/​createdump/​threadinfo.h Removes x86 extended-register accessor.
src/​coreclr/​debug/​createdump/​threadinfo.cpp Removes x86 frame-location extraction.
src/​coreclr/​debug/​createdump/​shared/​threadsnapshot.h Removes x86 extended-register storage.
src/​coreclr/​debug/​createdump/​shared/​threadsnapshot.cpp Removes x86 extended-register capture.
src/​coreclr/​debug/​createdump/​shared/​dumpwriterelf.h Removes x86 ELF selection and note sizing.
src/​coreclr/​debug/​createdump/​shared/​dumpwriterelf.cpp Removes x86 extended-register dump notes.
src/​coreclr/​debug/​createdump/​datatarget.cpp Removes x86 machine and pointer-size reporting.
src/​coreclr/​CMakeLists.txt Rejects non-Windows x86 and simplifies build conditions.
src/​coreclr/​clrdefinitions.cmake Removes Unix x86 definitions and feature exclusions.
eng/​targetingpacks.targets Removes linux-bionic-x86 pack identifiers.
eng/​Subsets.props Restricts CoreCLR x86 support to Windows.
eng/​pipelines/​runtime.yml Removes Linux x86 CoreCLR build job.
eng/​pipelines/​common/​templates/​pipeline-with-resources.yml Removes Linux x86 container resource.
eng/​pipelines/​common/​platform-matrix.yml Removes Linux x86 platform entry.
eng/​native/​tryrun.cmake Removes x86 Alpine rootfs detection.
eng/​common/​cross/​x86/​tizen/​tizen.patch Deletes x86 Tizen linker-script patch.
eng/​common/​cross/​toolchain.cmake Removes x86 cross-compilation configuration.
eng/​common/​cross/​tizen-build-rootfs.sh Removes x86 Tizen architecture mapping.
eng/​common/​cross/​build-rootfs.sh Removes x86 rootfs creation support.
docs/​workflow/​using-docker.md Removes Linux x86 cross-build image listing.
docs/​design/​coreclr/​botr/​clr-abi.md Removes Linux x86 ABI documentation.
.gitignore Removes cross/x86 ignore exception.
.dockerignore Removes cross/x86 Docker ignore exception.

Review effort: Balanced

@janvorli janvorli left a comment

Copy link
Copy Markdown
Member

Choose a reason for hiding this comment

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

LGTM, thank you!

@janvorli

janvorli commented Nov 6, 2026

Copy link
Copy Markdown
Member

@am11 src\mono\mono.proj:252–255  still contains support for Linux x86 cross-builds.  eng\Subsets.props  also still declares Mono supported—and now defaults Linux x86 to Mono.

@am11

am11 commented Nov 6, 2026

Copy link
Copy Markdown
Member Author

@janvorli, I noticed it but then mono is being removed in .NET 12 timeframe, #134397, so I skipped it.

@jkotas jkotas added area-Meta and removed area-PAL-coreclr only for closed issues labels Nov 6, 2026
@dotnet-policy-service

Copy link
Copy Markdown
Contributor

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

@jkotas

jkotas commented Nov 6, 2026

Copy link
Copy Markdown
Member

/ba-g filled #137083 on the unrelated test failure

@jkotas
jkotas merged commit ecfb721 into dotnet:main Nov 6, 2026
277 of 279 checks passed
@jkotas

jkotas commented Nov 6, 2026

Copy link
Copy Markdown
Member

Thank you!

Could you please also submit a PR to https://github.com/dotnet/dotnet-docker/ to stop building the Linux x86 docker images?

@am11
am11 deleted the chore/delete-linux-x86 branch November 6, 2026 15:14
@am11

am11 commented Nov 6, 2026

Copy link
Copy Markdown
Member Author

Already did dotnet/dotnet-buildtools-prereqs-docker#1793 🙂 cc @akoeplinger

@jkotas

jkotas commented Nov 6, 2026 •

Copy link
Copy Markdown
Member

Ah ok, I checked the wrong repo.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

arch-x86 area-Meta community-contribution Indicates that the PR has been added by a community member os-linux Linux OS (any supported distro)

Projects

None yet

5 participants