internal static JetArchitecture ConvertToArchitecture()

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}");
    }