@@ -103,6 +103,7 @@ enum MachineTypes : unsigned {
103103 IMAGE_FILE_MACHINE_EBC = 0xEBC ,
104104 IMAGE_FILE_MACHINE_I386 = 0x14C ,
105105 IMAGE_FILE_MACHINE_IA64 = 0x200 ,
106+ IMAGE_FILE_MACHINE_LOONGARCH64 = 0x6264 ,
106107 IMAGE_FILE_MACHINE_M32R = 0x9041 ,
107108 IMAGE_FILE_MACHINE_MIPS16 = 0x266 ,
108109 IMAGE_FILE_MACHINE_MIPSFPU = 0x366 ,
@@ -131,7 +132,8 @@ template <typename T> bool isAnyArm64(T Machine) {
131132}
132133
133134template <typename T> bool is64Bit (T Machine) {
134- return Machine == IMAGE_FILE_MACHINE_AMD64 || isAnyArm64 (Machine);
135+ return Machine == IMAGE_FILE_MACHINE_AMD64 || isAnyArm64 (Machine) ||
136+ Machine == IMAGE_FILE_MACHINE_LOONGARCH64;
135137}
136138
137139enum Characteristics : unsigned {
@@ -435,6 +437,23 @@ enum RelocationTypesMips : unsigned {
435437 IMAGE_REL_MIPS_PAIR = 0x0025 ,
436438};
437439
440+ enum RelocationTypesLoongArch : unsigned {
441+ IMAGE_REL_LARCH_ABSOLUTE = 0x0000 ,
442+ IMAGE_REL_LARCH_ADDR32 = 0x0001 ,
443+ IMAGE_REL_LARCH_ADDR32NB = 0x0002 ,
444+ IMAGE_REL_LARCH_BRANCH26 = 0x0003 ,
445+ IMAGE_REL_LARCH_SECREL = 0x0004 ,
446+ IMAGE_REL_LARCH_SECTION = 0x0005 ,
447+ IMAGE_REL_LARCH_ADDR64 = 0x0006 ,
448+ IMAGE_REL_LARCH_ADDR_HI20 = 0x0007 ,
449+ IMAGE_REL_LARCH_ADDR_LO12 = 0x008 ,
450+ IMAGE_REL_LARCH_ADDR64_LO20 = 0x0009 ,
451+ IMAGE_REL_LARCH_ADDR64_HI12 = 0x000A ,
452+ IMAGE_REL_LARCH_BRANCH21 = 0x000B ,
453+ IMAGE_REL_LARCH_BRANCH16 = 0x000C ,
454+ IMAGE_REL_LARCH_REL32 = 0x000D ,
455+ };
456+
438457enum DynamicRelocationType : unsigned {
439458 IMAGE_DYNAMIC_RELOCATION_GUARD_RF_PROLOGUE = 1 ,
440459 IMAGE_DYNAMIC_RELOCATION_GUARD_RF_EPILOGUE = 2 ,
@@ -726,6 +745,7 @@ enum BaseRelocationType : unsigned {
726745 IMAGE_REL_BASED_MIPS_JMPADDR = 5 ,
727746 IMAGE_REL_BASED_ARM_MOV32A = 5 ,
728747 IMAGE_REL_BASED_ARM_MOV32T = 7 ,
748+ IMAGE_REL_BASED_LOONGARCH64_MARK_LA = 8 ,
729749 IMAGE_REL_BASED_MIPS_JMPADDR16 = 9 ,
730750 IMAGE_REL_BASED_DIR64 = 10
731751};
0 commit comments