Skip to content

Commit 4e54af1

Browse files
hpoussinDanielCChen
authored andcommitted
[COFF] Add MIPS relocation types (llvm#107814)
Add the MIPS COFF relocation types. They will be needed to add support for MIPS Windows object file. This is an extract of PR llvm#107744.
1 parent 1040507 commit 4e54af1

File tree

2 files changed

+39
-0
lines changed

2 files changed

+39
-0
lines changed

llvm/include/llvm/BinaryFormat/COFF.h

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -417,6 +417,24 @@ enum RelocationTypesARM64 : unsigned {
417417
IMAGE_REL_ARM64_REL32 = 0x0011,
418418
};
419419

420+
enum RelocationTypesMips : unsigned {
421+
IMAGE_REL_MIPS_ABSOLUTE = 0x0000,
422+
IMAGE_REL_MIPS_REFHALF = 0x0001,
423+
IMAGE_REL_MIPS_REFWORD = 0x0002,
424+
IMAGE_REL_MIPS_JMPADDR = 0x0003,
425+
IMAGE_REL_MIPS_REFHI = 0x0004,
426+
IMAGE_REL_MIPS_REFLO = 0x0005,
427+
IMAGE_REL_MIPS_GPREL = 0x0006,
428+
IMAGE_REL_MIPS_LITERAL = 0x0007,
429+
IMAGE_REL_MIPS_SECTION = 0x000A,
430+
IMAGE_REL_MIPS_SECREL = 0x000B,
431+
IMAGE_REL_MIPS_SECRELLO = 0x000C,
432+
IMAGE_REL_MIPS_SECRELHI = 0x000D,
433+
IMAGE_REL_MIPS_JMPADDR16 = 0x0010,
434+
IMAGE_REL_MIPS_REFWORDNB = 0x0022,
435+
IMAGE_REL_MIPS_PAIR = 0x0025,
436+
};
437+
420438
enum DynamicRelocationType : unsigned {
421439
IMAGE_DYNAMIC_RELOCATION_GUARD_RF_PROLOGUE = 1,
422440
IMAGE_DYNAMIC_RELOCATION_GUARD_RF_EPILOGUE = 2,

llvm/lib/Object/COFFObjectFile.cpp

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1465,6 +1465,27 @@ StringRef COFFObjectFile::getRelocationTypeName(uint16_t Type) const {
14651465
return "Unknown";
14661466
}
14671467
break;
1468+
case Triple::mipsel:
1469+
switch (Type) {
1470+
LLVM_COFF_SWITCH_RELOC_TYPE_NAME(IMAGE_REL_MIPS_ABSOLUTE);
1471+
LLVM_COFF_SWITCH_RELOC_TYPE_NAME(IMAGE_REL_MIPS_REFHALF);
1472+
LLVM_COFF_SWITCH_RELOC_TYPE_NAME(IMAGE_REL_MIPS_REFWORD);
1473+
LLVM_COFF_SWITCH_RELOC_TYPE_NAME(IMAGE_REL_MIPS_JMPADDR);
1474+
LLVM_COFF_SWITCH_RELOC_TYPE_NAME(IMAGE_REL_MIPS_REFHI);
1475+
LLVM_COFF_SWITCH_RELOC_TYPE_NAME(IMAGE_REL_MIPS_REFLO);
1476+
LLVM_COFF_SWITCH_RELOC_TYPE_NAME(IMAGE_REL_MIPS_GPREL);
1477+
LLVM_COFF_SWITCH_RELOC_TYPE_NAME(IMAGE_REL_MIPS_LITERAL);
1478+
LLVM_COFF_SWITCH_RELOC_TYPE_NAME(IMAGE_REL_MIPS_SECTION);
1479+
LLVM_COFF_SWITCH_RELOC_TYPE_NAME(IMAGE_REL_MIPS_SECREL);
1480+
LLVM_COFF_SWITCH_RELOC_TYPE_NAME(IMAGE_REL_MIPS_SECRELLO);
1481+
LLVM_COFF_SWITCH_RELOC_TYPE_NAME(IMAGE_REL_MIPS_SECRELHI);
1482+
LLVM_COFF_SWITCH_RELOC_TYPE_NAME(IMAGE_REL_MIPS_JMPADDR16);
1483+
LLVM_COFF_SWITCH_RELOC_TYPE_NAME(IMAGE_REL_MIPS_REFWORDNB);
1484+
LLVM_COFF_SWITCH_RELOC_TYPE_NAME(IMAGE_REL_MIPS_PAIR);
1485+
default:
1486+
return "Unknown";
1487+
}
1488+
break;
14681489
default:
14691490
return "Unknown";
14701491
}

0 commit comments

Comments
 (0)