From f5a8d1f8b4b467748953721ed0187a31b6c1dd6e Mon Sep 17 00:00:00 2001 From: ashaurtaev Date: Fri, 31 Jul 2026 15:38:24 +0300 Subject: [PATCH] Add nativeaot armel --- eng/Subsets.props | 12 ++++++------ eng/targetingpacks.targets | 8 ++++---- .../Microsoft.NETCore.Native.Unix.targets | 3 +++ .../Common/src/Internal/Runtime/TransitionBlock.cs | 4 ++++ src/coreclr/nativeaot/Directory.Build.props | 7 ++++--- src/coreclr/nativeaot/Runtime/CMakeLists.txt | 3 +++ src/coreclr/nativeaot/Runtime/StackFrameIterator.cpp | 7 +++++++ src/coreclr/nativeaot/Runtime/arm/GcProbe.S | 8 ++++++++ .../nativeaot/Runtime/arm/InteropThunksHelpers.S | 4 ++++ .../nativeaot/Runtime/arm/UniversalTransition.S | 11 +++++++++++ .../src/System.Private.CoreLib.csproj | 2 +- .../Common/CallingConvention/TransitionBlock.cs | 6 +++++- .../ILCompiler.Diagnostics.csproj | 2 +- .../ILCompiler.ReadyToRun.csproj | 2 +- src/coreclr/tools/aot/crossgen2/crossgen2.props | 2 +- src/coreclr/tools/r2rdump/R2RDump.csproj | 2 +- .../Microsoft.DotNet.ILCompiler/ILCompilerRIDs.props | 1 + src/installer/pkg/projects/netcoreappRIDs.props | 3 +++ 18 files changed, 68 insertions(+), 19 deletions(-) diff --git a/eng/Subsets.props b/eng/Subsets.props index ce9081f87cdde0..83e8f3dc71b512 100644 --- a/eng/Subsets.props +++ b/eng/Subsets.props @@ -50,7 +50,7 @@ <_SdkToolsSupportedOS Condition="'$(TargetsMobile)' != 'true' and '$(TargetsLinuxBionic)' != 'true'">true - <_SdkToolsSupportedArch Condition="'$(TargetArchitecture)' != 'armel' and '$(TargetsWasm)' != 'true'">true + <_SdkToolsSupportedArch Condition="'$(TargetsWasm)' != 'true'">true true <_UseNativeAotForComponentsCrossOS Condition="'$(CrossBuild)' == 'true' and '$(_hostArchitecture)' == '$(_targetArchitecture)' and '$(_hostOS)' != 'windows'">true @@ -105,7 +105,7 @@ clr.native+clr.corelib+clr.tools+clr.nativecorelib+clr.packages+clr.nativeaotlibs+clr.crossarchtools+host.native - clr.native+clr.corelib+clr.tools+clr.nativecorelib+clr.packages+clr.nativeaotlibs+clr.crossarchtools + clr.native+clr.corelib+clr.tools+clr.nativecorelib+clr.packages+clr.nativeaotlibs+clr.crossarchtools+host.native clr.native+clr.corelib+clr.tools+clr.nativecorelib+clr.packages+clr.nativeaotlibs+clr.crossarchtools clr.native+clr.corelib+clr.tools+clr.nativecorelib+clr.packages+clr.nativeaotlibs+clr.crossarchtools provision.emsdk+clr.native+clr.corelib+clr.nativecorelib+clr.tools+clr.packages+clr.crossarchtools+libs.native+host.native @@ -372,7 +372,7 @@ <_BuildAnyCrossArch Condition="('$(CrossBuild)' == 'true' or '$(BuildArchitecture)' != '$(TargetArchitecture)' or '$(HostOS)' != '$(TargetOS)' or '$(EnableNativeSanitizers)' != '')">true <_BuildCrossComponents Condition="$(_subset.Contains('+clr.crossarchtools+'))">true <_BuildCrossComponents Condition="'$(ClrRuntimeBuildSubsets)' != '' and ('$(PrimaryRuntimeFlavor)' == 'CoreCLR' or '$(TargetsMobile)' == 'true')">true - <_CrossBitwidthBuild Condition="'$(BuildArchitecture)' == 'x64' and ('$(TargetArchitecture)' == 'x86' or '$(TargetArchitecture)' == 'arm')">true + <_CrossBitwidthBuild Condition="'$(BuildArchitecture)' == 'x64' and ('$(TargetArchitecture)' == 'x86' or '$(TargetArchitecture)' == 'arm' or '$(TargetArchitecture)' == 'armel')">true <_BuildCrossDebugComponents Condition="'$(_BuildCrossComponents)' == 'true' and '$(TargetsWindows)' == 'true' and '$(_CrossBitwidthBuild)' != 'true'">true @@ -429,7 +429,7 @@ x64 - x86 + x86 @@ -715,8 +715,8 @@ <_BuildNativeAOTRuntimePack Condition="'$(NativeAOTSupported)' == 'true'">true - <_BuildHostPack Condition="'$(TargetsMobile)' != 'true' and !('$(TargetsLinuxBionic)' == 'true' and '$(TargetArchitecture)' == 'arm')">true - <_BuildBundle Condition="'$(TargetsMobile)' != 'true' and !('$(TargetsLinuxBionic)' == 'true' and '$(TargetArchitecture)' == 'arm')">true + <_BuildHostPack Condition="'$(TargetsMobile)' != 'true' and !('$(TargetsLinuxBionic)' == 'true' and ('$(TargetArchitecture)' == 'arm' or '$(TargetArchitecture)' == 'armel'))">true + <_BuildBundle Condition="'$(TargetsMobile)' != 'true' and !('$(TargetsLinuxBionic)' == 'true' and ('$(TargetArchitecture)' == 'arm' or '$(TargetArchitecture)' == 'armel'))">true diff --git a/eng/targetingpacks.targets b/eng/targetingpacks.targets index aeca52efb4c054..c7382e646d3765 100644 --- a/eng/targetingpacks.targets +++ b/eng/targetingpacks.targets @@ -45,7 +45,7 @@ LatestRuntimeFrameworkVersion="$(ProductVersion)" RuntimeFrameworkName="$(LocalFrameworkOverrideName)" RuntimePackNamePatterns="$(LocalFrameworkOverrideName).Runtime.**RID**" - RuntimePackRuntimeIdentifiers="linux-arm;linux-arm64;linux-musl-arm64;linux-musl-x64;linux-x64;osx-x64;rhel.6-x64;tizen.4.0.0-armel;tizen.5.0.0-armel;win-arm64;win-x64;win-x86;linux-musl-arm;osx-arm64;maccatalyst-x64;maccatalyst-arm64;linux-s390x;linux-bionic-arm;linux-bionic-arm64;linux-bionic-x64;linux-bionic-x86;freebsd-x64;freebsd-arm64;openbsd-x64;openbsd-arm64;illumos-x64;solaris-x64;haiku-x64;linux-ppc64le;linux-riscv64;linux-musl-riscv64;linux-loongarch64;linux-musl-loongarch64" + RuntimePackRuntimeIdentifiers="linux-armel;linux-arm;linux-arm64;linux-musl-arm64;linux-musl-x64;linux-x64;osx-x64;rhel.6-x64;tizen.4.0.0-armel;tizen.5.0.0-armel;win-arm64;win-x64;win-x86;linux-musl-arm;osx-arm64;maccatalyst-x64;maccatalyst-arm64;linux-s390x;linux-bionic-arm;linux-bionic-arm64;linux-bionic-x64;linux-bionic-x86;freebsd-x64;freebsd-arm64;openbsd-x64;openbsd-arm64;illumos-x64;solaris-x64;haiku-x64;linux-ppc64le;linux-riscv64;linux-musl-riscv64;linux-loongarch64;linux-musl-loongarch64" TargetFramework="$(NetCoreAppCurrent)" TargetingPackName="$(LocalFrameworkOverrideName).Ref" TargetingPackVersion="$(ProductVersion)" @@ -74,19 +74,19 @@ ILCompilerPackNamePattern="runtime.**RID**.Microsoft.DotNet.ILCompiler" TargetFramework="$(NetCoreAppCurrent)" ILCompilerPackVersion="$(ProductVersion)" - ILCompilerRuntimeIdentifiers="linux-musl-x64;linux-x64;win-x64;linux-arm;linux-arm64;linux-musl-arm;linux-musl-arm64;osx-arm64;osx-x64;win-arm64;win-x86;linux-riscv64;linux-musl-riscv64;linux-loongarch64;linux-musl-loongarch64" + ILCompilerRuntimeIdentifiers="linux-armel;linux-musl-x64;linux-x64;win-x64;linux-arm;linux-arm64;linux-musl-arm;linux-musl-arm64;osx-arm64;osx-x64;win-arm64;win-x86;linux-riscv64;linux-musl-riscv64;linux-loongarch64;linux-musl-loongarch64" Condition="'$(UseLocalILCompilerPack)' == 'true' and '@(KnownILCompilerPack->AnyHaveMetadataValue('TargetFramework', '$(NetCoreAppCurrent)'))' != 'true'" /> diff --git a/src/coreclr/nativeaot/BuildIntegration/Microsoft.NETCore.Native.Unix.targets b/src/coreclr/nativeaot/BuildIntegration/Microsoft.NETCore.Native.Unix.targets index 842ced25c7daad..94cd522f700845 100644 --- a/src/coreclr/nativeaot/BuildIntegration/Microsoft.NETCore.Native.Unix.targets +++ b/src/coreclr/nativeaot/BuildIntegration/Microsoft.NETCore.Native.Unix.targets @@ -50,11 +50,13 @@ The .NET Foundation licenses this file to you under the MIT license. aarch64 arm64 armv7 + arm gnu android24 musl gnueabihf + gnueabi androideabi24 musleabihf @@ -313,6 +315,7 @@ The .NET Foundation licenses this file to you under the MIT license. + diff --git a/src/coreclr/nativeaot/Common/src/Internal/Runtime/TransitionBlock.cs b/src/coreclr/nativeaot/Common/src/Internal/Runtime/TransitionBlock.cs index a071f8f3af7711..471266318d33bc 100644 --- a/src/coreclr/nativeaot/Common/src/Internal/Runtime/TransitionBlock.cs +++ b/src/coreclr/nativeaot/Common/src/Internal/Runtime/TransitionBlock.cs @@ -9,7 +9,9 @@ // #if TARGET_ARM #define CALLDESCR_ARGREGS // CallDescrWorker has ArgumentRegister parameter +#if !ARM_SOFTFP #define CALLDESCR_FPARGREGS // CallDescrWorker has FloatArgumentRegisters parameter +#endif #define ENREGISTERED_RETURNTYPE_MAXSIZE #define ENREGISTERED_RETURNTYPE_INTEGER_MAXSIZE #define FEATURE_HFA @@ -250,6 +252,7 @@ internal struct ArgumentRegisters [StructLayout(LayoutKind.Sequential)] internal struct FloatArgumentRegisters { +#if !ARM_SOFTFP private double d0; private double d1; private double d2; @@ -258,6 +261,7 @@ internal struct FloatArgumentRegisters private double d5; private double d6; private double d7; +#endif } internal struct ArchitectureConstants diff --git a/src/coreclr/nativeaot/Directory.Build.props b/src/coreclr/nativeaot/Directory.Build.props index 6331a951300db8..92811ceadb1b02 100644 --- a/src/coreclr/nativeaot/Directory.Build.props +++ b/src/coreclr/nativeaot/Directory.Build.props @@ -16,10 +16,10 @@ $(RuntimeBinDir)/aotsdk/ Debug;Release;Checked - x64;x86;arm;arm64 + x64;x86;arm;arm64;armel $(TargetArchitecture) - arm + armel AnyCPU true @@ -83,8 +83,9 @@ TARGET_32BIT;TARGET_X86;$(DefineConstants) - + TARGET_32BIT;TARGET_ARM;$(DefineConstants) + ARM_SOFTFP;$(DefineConstants) TARGET_64BIT;TARGET_ARM64;$(DefineConstants) diff --git a/src/coreclr/nativeaot/Runtime/CMakeLists.txt b/src/coreclr/nativeaot/Runtime/CMakeLists.txt index b5c62ed52bb87c..1a34286b479302 100644 --- a/src/coreclr/nativeaot/Runtime/CMakeLists.txt +++ b/src/coreclr/nativeaot/Runtime/CMakeLists.txt @@ -339,6 +339,9 @@ if (CLR_CMAKE_TARGET_UNIX) add_definitions(-DUNIX_AMD64_ABI) elseif (CLR_CMAKE_TARGET_ARCH_ARM) add_definitions(-DUNIX_ARM_ABI) + if(ARM_SOFTFP) + add_definitions(-DARM_SOFTFP) + endif(ARM_SOFTFP) elseif (CLR_CMAKE_TARGET_ARCH_I386) add_definitions(-DUNIX_X86_ABI) endif() diff --git a/src/coreclr/nativeaot/Runtime/StackFrameIterator.cpp b/src/coreclr/nativeaot/Runtime/StackFrameIterator.cpp index d3b67edb83c65b..424be7c0290130 100644 --- a/src/coreclr/nativeaot/Runtime/StackFrameIterator.cpp +++ b/src/coreclr/nativeaot/Runtime/StackFrameIterator.cpp @@ -1426,10 +1426,17 @@ struct UniversalTransitionStackFrame private: uintptr_t m_pushedR11; // ChildSP+000 CallerSP-078 (0x4 bytes) (r11) uintptr_t m_pushedLR; // ChildSP+004 CallerSP-074 (0x4 bytes) (lr) +#ifdef ARM_SOFTFP + // ARM soft-float ABI: no VFP argument registers (d0-d7) on stack + uint64_t m_returnBlock[4]; // ChildSP+008 CallerSP-030 (0x20 bytes) + uintptr_t m_intArgRegs[4]; // ChildSP+028 CallerSP-010 (0x10 bytes) (r0-r3) + uintptr_t m_stackPassedArgs[1]; // ChildSP+038 CallerSP+000 (unknown size) +#else uint64_t m_fpArgRegs[8]; // ChildSP+008 CallerSP-070 (0x40 bytes) (d0-d7) uint64_t m_returnBlock[4]; // ChildSP+048 CallerSP-030 (0x20 bytes) uintptr_t m_intArgRegs[4]; // ChildSP+068 CallerSP-010 (0x10 bytes) (r0-r3) uintptr_t m_stackPassedArgs[1]; // ChildSP+078 CallerSP+000 (unknown size) +#endif public: PTR_uintptr_t get_CallerSP() { return GET_POINTER_TO_FIELD(m_stackPassedArgs[0]); } diff --git a/src/coreclr/nativeaot/Runtime/arm/GcProbe.S b/src/coreclr/nativeaot/Runtime/arm/GcProbe.S index f8057c299e8c20..e18e016290336b 100644 --- a/src/coreclr/nativeaot/Runtime/arm/GcProbe.S +++ b/src/coreclr/nativeaot/Runtime/arm/GcProbe.S @@ -20,8 +20,10 @@ .macro PUSH_PROBE_FRAME threadReg, trashReg, BITMASK // Define the method prolog, allocating enough stack space for the PInvokeTransitionFrame and saving // incoming register values into it. +#ifndef ARM_SOFTFP PROLOG_VPUSH "{d0-d3}" // Save d0-d3 which can have the floating point return value PROLOG_STACK_ALLOC 4 // Alignment +#endif PROLOG_PUSH "{r0-r2}" // Save return registers (r0-r2) PROLOG_STACK_ALLOC 4 // Space for caller's SP PROLOG_PUSH "{r4-r10}" // Save non-volatile registers @@ -33,7 +35,11 @@ str \trashReg, [sp, #OFFSETOF__PInvokeTransitionFrame__m_Flags] // Compute SP value at entry to this method and save it in slot of the frame. +#ifdef ARM_SOFTFP + add \trashReg, sp, #(15 * 4) +#else add \trashReg, sp, #(16 * 4 + 4 * 8) +#endif str \trashReg, [sp, #(11 * 4)] // Link the frame into the Thread @@ -51,8 +57,10 @@ EPILOG_POP "{r4-r10}" // Restore non-volatile registers EPILOG_STACK_FREE 4 // Discard caller's SP EPILOG_POP "{r0-r2}" // Restore return registers (r0-r2) +#ifndef ARM_SOFTFP EPILOG_STACK_FREE 4 // Discard alignment EPILOG_VPOP "{d0-d3}" // Restore d0-d3 which can have the floating point return value +#endif .endm // diff --git a/src/coreclr/nativeaot/Runtime/arm/InteropThunksHelpers.S b/src/coreclr/nativeaot/Runtime/arm/InteropThunksHelpers.S index 20c5c3a9914b21..b1f4e9f0599bb5 100644 --- a/src/coreclr/nativeaot/Runtime/arm/InteropThunksHelpers.S +++ b/src/coreclr/nativeaot/Runtime/arm/InteropThunksHelpers.S @@ -17,7 +17,9 @@ NESTED_ENTRY RhCommonStub, _TEXT, NoHandler // r12 already has the current thunk's data block pointer // (thunk branched here via ldr pc, preserving r12) PROLOG_PUSH "{r0-r4, lr}" +#ifndef ARM_SOFTFP PROLOG_VPUSH {d0-d7} // Capture the floating point argument registers +#endif mov r4, r12 @@ -35,7 +37,9 @@ NESTED_ENTRY RhCommonStub, _TEXT, NoHandler // Now load the target address and jump to it. ldr r12, [r4, #POINTER_SIZE] +#ifndef ARM_SOFTFP EPILOG_VPOP {d0-d7} +#endif EPILOG_POP "{r0-r4, lr}" bx r12 diff --git a/src/coreclr/nativeaot/Runtime/arm/UniversalTransition.S b/src/coreclr/nativeaot/Runtime/arm/UniversalTransition.S index 8d942868421597..db011a9a3b9240 100644 --- a/src/coreclr/nativeaot/Runtime/arm/UniversalTransition.S +++ b/src/coreclr/nativeaot/Runtime/arm/UniversalTransition.S @@ -18,9 +18,14 @@ // Largest return block is 4 doubles #define RETURN_BLOCK_SIZE (32) +#ifndef ARM_SOFTFP #define COUNT_FLOAT_ARG_REGISTERS (8) #define FLOAT_REGISTER_SIZE (8) #define FLOAT_ARG_REGISTERS_SIZE (COUNT_FLOAT_ARG_REGISTERS * FLOAT_REGISTER_SIZE) +#else +// ARM soft-float ABI: no floating point argument registers +#define FLOAT_ARG_REGISTERS_SIZE (0) +#endif #define PUSHED_LR_SIZE (4) #define PUSHED_R11_SIZE (4) @@ -89,7 +94,9 @@ NESTED_ENTRY Rhp\FunctionName, _TEXT, NoHandler str r3, [sp, #12] // Store remaining arg registers into the space used for the hidden args str r2, [sp, #8] PROLOG_STACK_ALLOC RETURN_BLOCK_SIZE // Save space a buffer to be used to hold return buffer data. +#ifndef ARM_SOFTFP PROLOG_VPUSH {d0-d7} // Capture the floating point argument registers +#endif PROLOG_PUSH "{r11,lr}" // Save caller's frame chain pointer and PC #ifdef TRASH_SAVED_ARGUMENT_REGISTERS @@ -99,6 +106,7 @@ NESTED_ENTRY Rhp\FunctionName, _TEXT, NoHandler // frame, and the code at the call target is required to use only the transition frame // copies when dispatching this call to the eventual callee. +#ifndef ARM_SOFTFP PREPARE_EXTERNAL_VAR RhpFpTrashValues, r3 vldr d0, [r3, #(0 * 8)] vldr d1, [r3, #(1 * 8)] @@ -108,6 +116,7 @@ NESTED_ENTRY Rhp\FunctionName, _TEXT, NoHandler vldr d5, [r3, #(5 * 8)] vldr d6, [r3, #(6 * 8)] vldr d7, [r3, #(7 * 8)] +#endif PREPARE_EXTERNAL_VAR RhpIntegerTrashValues, r3 ldr r2, [r3, #(2 * 4)] @@ -130,7 +139,9 @@ GLOBAL_LABEL ReturnFrom\FunctionName EPILOG_POP "{r11,lr}" // Restore the argument registers. +#ifndef ARM_SOFTFP EPILOG_VPOP {d0-d7} +#endif EPILOG_STACK_FREE RETURN_BLOCK_SIZE // pop return block conservatively reported area EPILOG_POP "{r0-r3}" diff --git a/src/coreclr/nativeaot/System.Private.CoreLib/src/System.Private.CoreLib.csproj b/src/coreclr/nativeaot/System.Private.CoreLib/src/System.Private.CoreLib.csproj index ad45e20eea9927..161fd0539d358f 100644 --- a/src/coreclr/nativeaot/System.Private.CoreLib/src/System.Private.CoreLib.csproj +++ b/src/coreclr/nativeaot/System.Private.CoreLib/src/System.Private.CoreLib.csproj @@ -498,7 +498,7 @@ INPLACE_RUNTIME;$(DefineConstants) FEATURE_64BIT_ALIGNMENT;$(DefineConstants) - FEATURE_64BIT_ALIGNMENT;$(DefineConstants) + FEATURE_64BIT_ALIGNMENT;ARM_SOFTFP;$(DefineConstants) FEATURE_64BIT_ALIGNMENT;$(DefineConstants) $(ArtifactsObjDir)\coreclr\$(TargetOS).$(TargetArchitecture).$(CoreCLRConfiguration) diff --git a/src/coreclr/tools/Common/CallingConvention/TransitionBlock.cs b/src/coreclr/tools/Common/CallingConvention/TransitionBlock.cs index bd2f6a39844017..325e5b0d471b59 100644 --- a/src/coreclr/tools/Common/CallingConvention/TransitionBlock.cs +++ b/src/coreclr/tools/Common/CallingConvention/TransitionBlock.cs @@ -537,7 +537,7 @@ private class Arm32TransitionBlock : TransitionBlock public sealed override int SizeOfTransitionBlock => SizeOfCalleeSavedRegisters + SizeOfArgumentRegisters; public sealed override int OffsetOfArgumentRegisters => SizeOfCalleeSavedRegisters; // D0..D7 - public sealed override int OffsetOfFloatArgumentRegisters => 8 * sizeof(double) + PointerSize; + public override int OffsetOfFloatArgumentRegisters => 8 * sizeof(double) + PointerSize; public sealed override int EnregisteredParamTypeMaxSize => 0; public sealed override int EnregisteredReturnTypeIntegerMaxSize => 4; @@ -560,6 +560,10 @@ private class Arm32ElTransitionBlock : Arm32TransitionBlock public override bool IsArmhfABI => false; public override bool IsArmelABI => true; + + // ARM soft-float ABI: no VFP/NEON registers are used for argument passing. + // Float arguments are passed via integer registers (r0-r3) and the stack. + public sealed override int OffsetOfFloatArgumentRegisters => 0; } private class Arm64TransitionBlock : TransitionBlock diff --git a/src/coreclr/tools/aot/ILCompiler.Diagnostics/ILCompiler.Diagnostics.csproj b/src/coreclr/tools/aot/ILCompiler.Diagnostics/ILCompiler.Diagnostics.csproj index 9856c38cf9810b..234a0adf15e59c 100644 --- a/src/coreclr/tools/aot/ILCompiler.Diagnostics/ILCompiler.Diagnostics.csproj +++ b/src/coreclr/tools/aot/ILCompiler.Diagnostics/ILCompiler.Diagnostics.csproj @@ -6,7 +6,7 @@ true $(NetCoreAppToolCurrent) READYTORUN;$(DefineConstants) - x64;x86;arm;arm64; + x64;x86;arm;arm64;armel; AnyCPU false diff --git a/src/coreclr/tools/aot/ILCompiler.ReadyToRun/ILCompiler.ReadyToRun.csproj b/src/coreclr/tools/aot/ILCompiler.ReadyToRun/ILCompiler.ReadyToRun.csproj index 3f0902fd44c84f..411f6b85b5f80a 100644 --- a/src/coreclr/tools/aot/ILCompiler.ReadyToRun/ILCompiler.ReadyToRun.csproj +++ b/src/coreclr/tools/aot/ILCompiler.ReadyToRun/ILCompiler.ReadyToRun.csproj @@ -7,7 +7,7 @@ READYTORUN;$(DefineConstants) $(DefineConstants);FEATURE_DYNAMIC_CODE_COMPILED false - x64;x86;arm;arm64 + x64;x86;arm;arm64;armel AnyCPU false diff --git a/src/coreclr/tools/aot/crossgen2/crossgen2.props b/src/coreclr/tools/aot/crossgen2/crossgen2.props index 5c912720c8c927..09a8f0a3e136e8 100644 --- a/src/coreclr/tools/aot/crossgen2/crossgen2.props +++ b/src/coreclr/tools/aot/crossgen2/crossgen2.props @@ -6,7 +6,7 @@ true Exe 8002,NU1701 - x64;x86;arm64;arm;loongarch64;riscv64 + x64;x86;arm64;arm;loongarch64;riscv64;armel AnyCPU false false diff --git a/src/coreclr/tools/r2rdump/R2RDump.csproj b/src/coreclr/tools/r2rdump/R2RDump.csproj index 225f74285cd5bd..38831ded5bff6d 100644 --- a/src/coreclr/tools/r2rdump/R2RDump.csproj +++ b/src/coreclr/tools/r2rdump/R2RDump.csproj @@ -4,7 +4,7 @@ 1.0.0.0 true Exe - x64;x86;arm64;arm;loongarch64;riscv64 + x64;x86;arm64;arm;loongarch64;riscv64;armel Open true $(NetCoreAppToolCurrent) diff --git a/src/installer/pkg/projects/Microsoft.DotNet.ILCompiler/ILCompilerRIDs.props b/src/installer/pkg/projects/Microsoft.DotNet.ILCompiler/ILCompilerRIDs.props index a72f150340020b..9e637a04e7f967 100644 --- a/src/installer/pkg/projects/Microsoft.DotNet.ILCompiler/ILCompilerRIDs.props +++ b/src/installer/pkg/projects/Microsoft.DotNet.ILCompiler/ILCompilerRIDs.props @@ -4,6 +4,7 @@ https://github.com/dotnet/sdk/blob/main/src/Installer/redist-installer/targets/GenerateBundledVersions.targets --> + diff --git a/src/installer/pkg/projects/netcoreappRIDs.props b/src/installer/pkg/projects/netcoreappRIDs.props index b1c09f223536c1..9b72edc2b22c12 100644 --- a/src/installer/pkg/projects/netcoreappRIDs.props +++ b/src/installer/pkg/projects/netcoreappRIDs.props @@ -19,6 +19,9 @@ arm + + armel + armv6