Add NativeAOT support for armel - #132007
Conversation
|
Azure Pipelines: Successfully started running 4 pipeline(s). 12 pipeline(s) were filtered out due to trigger conditions. There may be pipelines that require an authorized user to comment /azp run to run. |
|
Tagging subscribers to this area: @agocke, @dotnet/ilc-contrib |
| <RuntimeFlavor Condition="'$(RuntimeFlavor)' == '' and '$(TargetsMobile)' == 'true'">Mono</RuntimeFlavor> | ||
| <RuntimeFlavor Condition="'$(RuntimeFlavor)' == '' and ($(_subset.Contains('+mono+')) or $(_subset.Contains('+mono.runtime+'))) and (!$(_subset.Contains('+clr+')) and !$(_subset.Contains('+clr.runtime+')) and !$(_subset.Contains('+clr.corelib+')))">Mono</RuntimeFlavor> | ||
| <RuntimeFlavor Condition="'$(RuntimeFlavor)' == ''">$(PrimaryRuntimeFlavor)</RuntimeFlavor> | ||
| </PropertyGroup> | ||
|
|
||
| <PropertyGroup> | ||
| <DefaultCoreClrSubsets>clr.native+clr.corelib+clr.tools+clr.nativecorelib+clr.packages+clr.nativeaotlibs+clr.crossarchtools+host.native</DefaultCoreClrSubsets> | ||
| <DefaultCoreClrSubsets Condition="'$(TargetRid)' == 'linux-armel'">clr.native+clr.corelib+clr.tools+clr.nativecorelib+clr.packages+clr.nativeaotlibs+clr.crossarchtools</DefaultCoreClrSubsets> | ||
| <DefaultCoreClrSubsets Condition="'$(TargetRid)' == 'linux-armel'">clr.native+clr.corelib+clr.tools+clr.nativecorelib+clr.packages+clr.nativeaotlibs+clr.crossarchtools+host.native</DefaultCoreClrSubsets> |
There was a problem hiding this comment.
| <DefaultCoreClrSubsets Condition="'$(TargetRid)' == 'linux-armel'">clr.native+clr.corelib+clr.tools+clr.nativecorelib+clr.packages+clr.nativeaotlibs+clr.crossarchtools+host.native</DefaultCoreClrSubsets> |
Unnecessary - same as the default on previous line
|
Is the thing you want to enable really |
|
Build breaks in Tizen CI leg |
Android/bionic do not support armel.
Since linux-armel isn't officially supported, it could be added to bootstrap community platform next to: runtime/eng/pipelines/runtime.yml Line 695 in 605d2f4 |
Android/bionic use armel ABI on arm by default. This detail is not visible in the RID - the RIDs are still linux-bionic-arm and android-arm. Armel ABI is enabled automatically when targeting Android/bionic arm. |
I assume that @ashaurtaev is actually interested in targeting Tizen that we have a CI leg for already. |
|
From https://developer.android.com/ndk/guides/abis.html?utm_source=chatgpt.com
|
PR is enabling host subset, that's the one which causes issues when official nuget isn't present. Previously it was getting linux-arm LKG packages. |
| @@ -250,6 +252,7 @@ internal struct ArgumentRegisters | |||
| [StructLayout(LayoutKind.Sequential)] | |||
| internal struct FloatArgumentRegisters | |||
There was a problem hiding this comment.
These structures have to be in sync with CoreCLR w/ JIT. We do not have these fine-grained ifdefs in CoreCLR. https://github.com/dotnet/runtime/blob/main/src/coreclr/vm/arm/cgencpu.h
These are all slow paths. It is very minor inefficiency to save the extra floating-point registers with armel even though it is not strictly necessary. I think it would be simpler to avoid these ifdefs and accept this minor inefficiency. (Otherwise, you need a bunch more places that need these ifdefs to ensure everything is in sync.)
This PR adds NativeAOT support for
linux-armel(ARM soft-float)Previously crossgen2 and ILCompiler were not built for armel and the NativeAOT runtime pack was missing for this architecture.
Changes:
arm) withARM_SOFTFPfor soft-float ABIlinux-armelin RID lists for runtime packs, ILCompiler, crossgen2, and apphosthost.nativefor armel in default CoreCLR subsetscc @dotnet/samsung