summaryrefslogtreecommitdiffstats
path: root/lld/COFF/Chunks.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'lld/COFF/Chunks.cpp')
-rw-r--r--lld/COFF/Chunks.cpp28
1 files changed, 12 insertions, 16 deletions
diff --git a/lld/COFF/Chunks.cpp b/lld/COFF/Chunks.cpp
index 39f4575031be..004d71097387 100644
--- a/lld/COFF/Chunks.cpp
+++ b/lld/COFF/Chunks.cpp
@@ -437,19 +437,17 @@ void SectionChunk::applyRelocation(uint8_t *off,
// Compute the RVA of the relocation for relative relocations.
uint64_t p = rva + rel.VirtualAddress;
uint64_t imageBase = file->ctx.config.imageBase;
- switch (getMachine()) {
- case AMD64:
+ switch (getArch()) {
+ case Triple::x86_64:
applyRelX64(off, rel.Type, os, s, p, imageBase);
break;
- case I386:
+ case Triple::x86:
applyRelX86(off, rel.Type, os, s, p, imageBase);
break;
- case ARMNT:
+ case Triple::thumb:
applyRelARM(off, rel.Type, os, s, p, imageBase);
break;
- case ARM64:
- case ARM64EC:
- case ARM64X:
+ case Triple::aarch64:
applyRelARM64(off, rel.Type, os, s, p, imageBase);
break;
default:
@@ -516,27 +514,25 @@ void SectionChunk::addAssociative(SectionChunk *child) {
}
static uint8_t getBaserelType(const coff_relocation &rel,
- llvm::COFF::MachineTypes machine) {
- switch (machine) {
- case AMD64:
+ Triple::ArchType arch) {
+ switch (arch) {
+ case Triple::x86_64:
if (rel.Type == IMAGE_REL_AMD64_ADDR64)
return IMAGE_REL_BASED_DIR64;
if (rel.Type == IMAGE_REL_AMD64_ADDR32)
return IMAGE_REL_BASED_HIGHLOW;
return IMAGE_REL_BASED_ABSOLUTE;
- case I386:
+ case Triple::x86:
if (rel.Type == IMAGE_REL_I386_DIR32)
return IMAGE_REL_BASED_HIGHLOW;
return IMAGE_REL_BASED_ABSOLUTE;
- case ARMNT:
+ case Triple::thumb:
if (rel.Type == IMAGE_REL_ARM_ADDR32)
return IMAGE_REL_BASED_HIGHLOW;
if (rel.Type == IMAGE_REL_ARM_MOV32T)
return IMAGE_REL_BASED_ARM_MOV32T;
return IMAGE_REL_BASED_ABSOLUTE;
- case ARM64:
- case ARM64EC:
- case ARM64X:
+ case Triple::aarch64:
if (rel.Type == IMAGE_REL_ARM64_ADDR64)
return IMAGE_REL_BASED_DIR64;
return IMAGE_REL_BASED_ABSOLUTE;
@@ -551,7 +547,7 @@ static uint8_t getBaserelType(const coff_relocation &rel,
// Only called when base relocation is enabled.
void SectionChunk::getBaserels(std::vector<Baserel> *res) {
for (const coff_relocation &rel : getRelocs()) {
- uint8_t ty = getBaserelType(rel, getMachine());
+ uint8_t ty = getBaserelType(rel, getArch());
if (ty == IMAGE_REL_BASED_ABSOLUTE)
continue;
Symbol *target = file->getSymbol(rel.SymbolTableIndex);