in JetBrains.HabitatDetector/src/Impl/Linux/LinuxHelper.cs [88:112]
internal static JetArchitecture ConvertToArchitecture(ELFCLASS eiClass, ELFDATA eiData, EM eMachine)
{
if (eiClass == ELFCLASS.ELFCLASS32 && eiData == ELFDATA.ELFDATA2LSB)
switch (eMachine)
{
case EM.EM_ARM: return JetArchitecture.Arm;
case EM.EM_386: return JetArchitecture.X86;
}
else if (eiClass == ELFCLASS.ELFCLASS64 && eiData == ELFDATA.ELFDATA2LSB)
switch (eMachine)
{
case EM.EM_AARCH64: return JetArchitecture.Arm64;
case EM.EM_LOONGARCH: return JetArchitecture.LoongArch64;
case EM.EM_PPC64: return JetArchitecture.Ppc64le;
case EM.EM_RISCV: return JetArchitecture.RiscV64;
case EM.EM_X86_64: return JetArchitecture.X64;
}
else if (eiClass == ELFCLASS.ELFCLASS64 && eiData == ELFDATA.ELFDATA2MSB)
switch (eMachine)
{
case EM.EM_S390: return JetArchitecture.S390x;
}
throw new PlatformNotSupportedException($"Invalid ELF file class {eiClass}, endian {eiData} and architecture {eMachine}");
}