@@ -80,6 +80,7 @@ void ScalarEnumerationTraits<COFF::MachineTypes>::enumeration(
8080 ECase (IMAGE_FILE_MACHINE_RISCV32);
8181 ECase (IMAGE_FILE_MACHINE_RISCV64);
8282 ECase (IMAGE_FILE_MACHINE_RISCV128);
83+ ECase (IMAGE_FILE_MACHINE_LOONGARCH64);
8384 ECase (IMAGE_FILE_MACHINE_SH3);
8485 ECase (IMAGE_FILE_MACHINE_SH3DSP);
8586 ECase (IMAGE_FILE_MACHINE_SH4);
@@ -183,6 +184,24 @@ void ScalarEnumerationTraits<COFF::RelocationTypeAMD64>::enumeration(
183184 ECase (IMAGE_REL_AMD64_SSPAN32);
184185}
185186
187+ void ScalarEnumerationTraits<COFF::RelocationTypesLoongArch>::enumeration(
188+ IO &IO, COFF::RelocationTypesLoongArch &Value) {
189+ ECase (IMAGE_REL_LARCH_ABSOLUTE);
190+ ECase (IMAGE_REL_LARCH_ADDR32);
191+ ECase (IMAGE_REL_LARCH_ADDR32NB);
192+ ECase (IMAGE_REL_LARCH_BRANCH26);
193+ ECase (IMAGE_REL_LARCH_SECREL);
194+ ECase (IMAGE_REL_LARCH_SECTION);
195+ ECase (IMAGE_REL_LARCH_ADDR64);
196+ ECase (IMAGE_REL_LARCH_ADDR_HI20);
197+ ECase (IMAGE_REL_LARCH_ADDR_LO12);
198+ ECase (IMAGE_REL_LARCH_ADDR64_LO20);
199+ ECase (IMAGE_REL_LARCH_ADDR64_HI12);
200+ ECase (IMAGE_REL_LARCH_BRANCH21);
201+ ECase (IMAGE_REL_LARCH_BRANCH16);
202+ ECase (IMAGE_REL_LARCH_REL32);
203+ }
204+
186205void ScalarEnumerationTraits<COFF::RelocationTypesMips>::enumeration(
187206 IO &IO, COFF::RelocationTypesMips &Value) {
188207 ECase (IMAGE_REL_MIPS_ABSOLUTE);
@@ -446,6 +465,10 @@ void MappingTraits<COFFYAML::Relocation>::mapping(IO &IO,
446465 MappingNormalization<NType<COFF::RelocationTypeAMD64>, uint16_t > NT (
447466 IO, Rel.Type );
448467 IO.mapRequired (" Type" , NT->Type );
468+ } else if (H.Machine == COFF::IMAGE_FILE_MACHINE_LOONGARCH64) {
469+ MappingNormalization<NType<COFF::RelocationTypesLoongArch>, uint16_t > NT (
470+ IO, Rel.Type );
471+ IO.mapRequired (" Type" , NT->Type );
449472 } else if (H.Machine == COFF::IMAGE_FILE_MACHINE_R4000) {
450473 MappingNormalization<NType<COFF::RelocationTypesMips>, uint16_t > NT (
451474 IO, Rel.Type );
0 commit comments