Repository navigation
Delete linux-x86 code and infra - #137008
Conversation
|
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. |
|
Changes otherwise LGTM |
There was a problem hiding this comment.
🔵 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
|
@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. |
|
Tagging subscribers to this area: @dotnet/area-meta |
|
/ba-g filled #137083 on the unrelated test failure |
|
Thank you! Could you please also submit a PR to https://github.com/dotnet/dotnet-docker/ to stop building the Linux x86 docker images? |
|
Already did dotnet/dotnet-buildtools-prereqs-docker#1793 🙂 cc @akoeplinger |
|
Ah ok, I checked the wrong repo. |
Closes #7335
Closes #31180
Closes #83509
Closes #136997