#####################################################################
efi_arch = {
- 'aarch64' : 'aa64',
- 'arm' : 'arm',
- 'riscv64' : 'riscv64',
- 'x86_64' : 'x64',
- 'x86' : 'ia32',
+ 'aarch64' : 'aa64',
+ 'arm' : 'arm',
+ 'loongarch32' : 'loongarch32',
+ 'loongarch64' : 'loongarch64',
+ 'riscv32' : 'riscv32',
+ 'riscv64' : 'riscv64',
+ 'x86_64' : 'x64',
+ 'x86' : 'ia32',
}.get(host_machine.cpu_family(), '')
if get_option('bootloader') != 'false' and efi_arch != ''
# define TARGET_MACHINE_TYPE 0xAA64U
#elif defined(__arm__)
# define TARGET_MACHINE_TYPE 0x01C2U
+#elif defined(__riscv) && __riscv_xlen == 32
+# define TARGET_MACHINE_TYPE 0x5032U
#elif defined(__riscv) && __riscv_xlen == 64
# define TARGET_MACHINE_TYPE 0x5064U
+#elif defined(__loongarch__) && __loongarch_grlen == 32
+# define TARGET_MACHINE_TYPE 0x6232U
+#elif defined(__loongarch__) && __loongarch_grlen == 64
+# define TARGET_MACHINE_TYPE 0x6264U
#else
# error Unknown EFI arch
#endif
"EM_386": ENUM_RELOC_TYPE_i386["R_386_NONE"],
"EM_AARCH64": ENUM_RELOC_TYPE_AARCH64["R_AARCH64_NONE"],
"EM_ARM": ENUM_RELOC_TYPE_ARM["R_ARM_NONE"],
+ "EM_LOONGARCH": 0,
"EM_RISCV": 0,
"EM_X86_64": ENUM_RELOC_TYPE_x64["R_X86_64_NONE"],
}[elf["e_machine"]]
"EM_386": ENUM_RELOC_TYPE_i386["R_386_RELATIVE"],
"EM_AARCH64": ENUM_RELOC_TYPE_AARCH64["R_AARCH64_RELATIVE"],
"EM_ARM": ENUM_RELOC_TYPE_ARM["R_ARM_RELATIVE"],
+ "EM_LOONGARCH": 3,
"EM_RISCV": 3,
"EM_X86_64": ENUM_RELOC_TYPE_x64["R_X86_64_RELATIVE"],
}[elf["e_machine"]]
"EM_386": 0x014C,
"EM_AARCH64": 0xAA64,
"EM_ARM": 0x01C2,
- "EM_RISCV": 0x5064,
+ "EM_LOONGARCH": 0x6232 if elf.elfclass == 32 else 0x6264,
+ "EM_RISCV": 0x5032 if elf.elfclass == 32 else 0x5064,
"EM_X86_64": 0x8664,
}.get(elf["e_machine"])
if pe_arch is None: