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