summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--lld/lib/ReaderWriter/ELF/Mips/MipsRelocationHandler.cpp21
1 files changed, 6 insertions, 15 deletions
diff --git a/lld/lib/ReaderWriter/ELF/Mips/MipsRelocationHandler.cpp b/lld/lib/ReaderWriter/ELF/Mips/MipsRelocationHandler.cpp
index a8a9abe1ff8..73d47c7c9dd 100644
--- a/lld/lib/ReaderWriter/ELF/Mips/MipsRelocationHandler.cpp
+++ b/lld/lib/ReaderWriter/ELF/Mips/MipsRelocationHandler.cpp
@@ -84,19 +84,10 @@ static void relocLo16(uint8_t *location, uint64_t P, uint64_t S, int64_t AHL,
applyReloc(location, result, 0xffff);
}
-/// \brief R_MIPS_GOT16
-/// local/external: rel16 G (verify)
-static void relocGOT16(uint8_t *location, uint64_t P, uint64_t S, int64_t AHL,
- uint64_t GP) {
- // FIXME (simon): for local sym put high 16 bit of AHL to the GOT
- int32_t G = (int32_t)(S - GP);
- applyReloc(location, G, 0xffff);
-}
-
-/// \brief R_MIPS_CALL16
-/// external: rel16 G (verify)
-static void relocCall16(uint8_t *location, uint64_t P, uint64_t S, int64_t A,
- uint64_t GP) {
+/// \brief R_MIPS_GOT16, R_MIPS_CALL16
+/// rel16 G (verify)
+static void relocGOT(uint8_t *location, uint64_t P, uint64_t S, int64_t A,
+ uint64_t GP) {
int32_t G = (int32_t)(S - GP);
applyReloc(location, G, 0xffff);
}
@@ -161,10 +152,10 @@ error_code MipsTargetRelocationHandler::applyRelocation(
ref.target() == gpAtom->_atom);
break;
case R_MIPS_GOT16:
- relocGOT16(location, relocVAddress, targetVAddress, ref.addend(), gpAddr);
+ relocGOT(location, relocVAddress, targetVAddress, ref.addend(), gpAddr);
break;
case R_MIPS_CALL16:
- relocCall16(location, relocVAddress, targetVAddress, ref.addend(), gpAddr);
+ relocGOT(location, relocVAddress, targetVAddress, ref.addend(), gpAddr);
break;
case R_MIPS_TLS_TPREL_HI16:
relocGeneralHi16(location, targetVAddress, ref.addend());
OpenPOWER on IntegriCloud