From: Simon Atanasyan Date: Sun, 25 May 2014 10:07:04 +0000 (+0000) Subject: [Mips] Reduce code duplication. Join relocation handling functions which X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=bacee46924cf72ea88065fb7264353b8c897b527;p=platform%2Fupstream%2Fllvm.git [Mips] Reduce code duplication. Join relocation handling functions which perform calculations for R_MIPS_GOT16 and R_MIPS_CALL16 relocations. llvm-svn: 209594 --- diff --git a/lld/lib/ReaderWriter/ELF/Mips/MipsRelocationHandler.cpp b/lld/lib/ReaderWriter/ELF/Mips/MipsRelocationHandler.cpp index a8a9abe..73d47c7 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());