[lld] a805339 - [ELF][AVR] Add explicit relocation types to getRelExpr
Fangrui Song via llvm-commits
llvm-commits at lists.llvm.org
Wed May 12 12:38:33 PDT 2021
Author: Fangrui Song
Date: 2021-05-12T12:38:27-07:00
New Revision: a8053399cde847dfce88d7d1fa2a2099f3a58c40
URL: https://github.com/llvm/llvm-project/commit/a8053399cde847dfce88d7d1fa2a2099f3a58c40
DIFF: https://github.com/llvm/llvm-project/commit/a8053399cde847dfce88d7d1fa2a2099f3a58c40.diff
LOG: [ELF][AVR] Add explicit relocation types to getRelExpr
Added:
Modified:
lld/ELF/Arch/AVR.cpp
Removed:
################################################################################
diff --git a/lld/ELF/Arch/AVR.cpp b/lld/ELF/Arch/AVR.cpp
index 010e5c93ab883..d0d247225708b 100644
--- a/lld/ELF/Arch/AVR.cpp
+++ b/lld/ELF/Arch/AVR.cpp
@@ -56,11 +56,38 @@ AVR::AVR() { noneRel = R_AVR_NONE; }
RelExpr AVR::getRelExpr(RelType type, const Symbol &s,
const uint8_t *loc) const {
switch (type) {
+ case R_AVR_6:
+ case R_AVR_6_ADIW:
+ case R_AVR_8:
+ case R_AVR_16:
+ case R_AVR_16_PM:
+ case R_AVR_32:
+ case R_AVR_LDI:
+ case R_AVR_LO8_LDI:
+ case R_AVR_LO8_LDI_NEG:
+ case R_AVR_HI8_LDI:
+ case R_AVR_HI8_LDI_NEG:
+ case R_AVR_HH8_LDI_NEG:
+ case R_AVR_HH8_LDI:
+ case R_AVR_MS8_LDI_NEG:
+ case R_AVR_MS8_LDI:
+ case R_AVR_LO8_LDI_PM:
+ case R_AVR_LO8_LDI_PM_NEG:
+ case R_AVR_HI8_LDI_PM:
+ case R_AVR_HI8_LDI_PM_NEG:
+ case R_AVR_HH8_LDI_PM:
+ case R_AVR_HH8_LDI_PM_NEG:
+ case R_AVR_PORT5:
+ case R_AVR_PORT6:
+ case R_AVR_CALL:
+ return R_ABS;
case R_AVR_7_PCREL:
case R_AVR_13_PCREL:
return R_PC;
default:
- return R_ABS;
+ error(getErrorLocation(loc) + "unknown relocation (" + Twine(type) +
+ ") against symbol " + toString(s));
+ return R_NONE;
}
}
@@ -188,8 +215,7 @@ void AVR::relocate(uint8_t *loc, const Relocation &rel, uint64_t val) const {
break;
}
default:
- error(getErrorLocation(loc) + "unrecognized relocation " +
- toString(rel.type));
+ llvm_unreachable("unknown relocation");
}
}
More information about the llvm-commits
mailing list