aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'lib/portage/dep/soname/multilib_category.py')
-rw-r--r--lib/portage/dep/soname/multilib_category.py41
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