diff options
Diffstat (limited to 'lib/portage/dep/soname/multilib_category.py')
-rw-r--r-- | lib/portage/dep/soname/multilib_category.py | 41 |
1 files changed, 38 insertions, 3 deletions
diff --git a/lib/portage/dep/soname/multilib_category.py b/lib/portage/dep/soname/multilib_category.py index ab855d339..baca439fd 100644 --- a/lib/portage/dep/soname/multilib_category.py +++ b/lib/portage/dep/soname/multilib_category.py @@ -11,6 +11,7 @@ # arm_{32,64} # hppa_{32,64} # ia_{32,64} +# loong_{ilp32s,ilp32f,ilp32d,lp64s,lp64f,lp64d} # m68k_{32,64} # mips_{eabi32,eabi64,n32,n64,o32,o64} # ppc_{32,64} @@ -37,15 +38,29 @@ from portage.util.elf.constants import ( EF_MIPS_ABI2, EF_RISCV_FLOAT_ABI_DOUBLE, EF_RISCV_RVC, + EF_LOONGARCH_ABI_LP64_SOFT_FLOAT, + EF_LOONGARCH_ABI_LP64_SINGLE_FLOAT, + EF_LOONGARCH_ABI_LP64_DOUBLE_FLOAT, + EF_LOONGARCH_ABI_ILP32_SOFT_FLOAT, + EF_LOONGARCH_ABI_ILP32_SINGLE_FLOAT, + EF_LOONGARCH_ABI_ILP32_DOUBLE_FLOAT, + EF_LOONGARCH_ABI_MASK, ELFCLASS32, ELFCLASS64, EM_386, EM_68K, EM_AARCH64, EM_ALPHA, + EM_AMDGPU, + EM_ARC, + EM_ARC_COMPACT, + EM_ARC_COMPACT2, + EM_ARC_COMPACT3, + EM_ARC_COMPACT3_64, EM_ARM, EM_ALTERA_NIOS2, EM_IA_64, + EM_LOONGARCH, EM_MIPS, EM_PARISC, EM_PPC, @@ -68,9 +83,16 @@ _machine_prefix_map = { EM_68K: "m68k", EM_AARCH64: "arm", EM_ALPHA: "alpha", + EM_AMDGPU: "amdgpu", EM_ALTERA_NIOS2: "nios2", + EM_ARC: "arc", + EM_ARC_COMPACT: "arc", + EM_ARC_COMPACT2: "arc", + EM_ARC_COMPACT3: "arc", + EM_ARC_COMPACT3_64: "arc", EM_ARM: "arm", EM_IA_64: "ia64", + EM_LOONGARCH: "loong", EM_MIPS: "mips", EM_PARISC: "hppa", EM_PPC: "ppc", @@ -84,6 +106,15 @@ _machine_prefix_map = { EM_X86_64: "x86", } +_loong_abi_map = { + EF_LOONGARCH_ABI_LP64_SOFT_FLOAT: "lp64s", + EF_LOONGARCH_ABI_LP64_SINGLE_FLOAT: "lp64f", + EF_LOONGARCH_ABI_LP64_DOUBLE_FLOAT: "lp64d", + EF_LOONGARCH_ABI_ILP32_SOFT_FLOAT: "ilp32s", + EF_LOONGARCH_ABI_ILP32_SINGLE_FLOAT: "ilp32f", + EF_LOONGARCH_ABI_ILP32_DOUBLE_FLOAT: "ilp32d", +} + _mips_abi_map = { E_MIPS_ABI_EABI32: "eabi32", E_MIPS_ABI_EABI64: "eabi64", @@ -92,8 +123,12 @@ _mips_abi_map = { } -def _compute_suffix_mips(elf_header): +def _compute_suffix_loong(elf_header): + loong_abi = elf_header.e_flags & EF_LOONGARCH_ABI_MASK + return _loong_abi_map.get(loong_abi) + +def _compute_suffix_mips(elf_header): name = None mips_abi = elf_header.e_flags & EF_MIPS_ABI @@ -136,6 +171,7 @@ def _compute_suffix_riscv(elf_header): _specialized_funcs = { + "loong": _compute_suffix_loong, "mips": _compute_suffix_mips, "riscv": _compute_suffix_riscv, } @@ -153,7 +189,6 @@ def compute_multilib_category(elf_header): """ category = None if elf_header.e_machine is not None: - prefix = _machine_prefix_map.get(elf_header.e_machine) specialized_func = _specialized_funcs.get(prefix) suffix = None @@ -171,6 +206,6 @@ def compute_multilib_category(elf_header): if prefix is None or suffix is None: category = None else: - category = "%s_%s" % (prefix, suffix) + category = f"{prefix}_{suffix}" return category |