[lld] r234154 - [Mips] Replace MipsRelocationHandler::readAddend() by a regular function
Simon Atanasyan
simon at atanasyan.com
Mon Apr 6 06:25:58 PDT 2015
Author: atanasyan
Date: Mon Apr 6 08:25:58 2015
New Revision: 234154
URL: http://llvm.org/viewvc/llvm-project?rev=234154&view=rev
Log:
[Mips] Replace MipsRelocationHandler::readAddend() by a regular function
The readAddend() does not depend on MipsRelocationHandler and should not
be its member function.
Modified:
lld/trunk/lib/ReaderWriter/ELF/Mips/MipsELFFile.h
lld/trunk/lib/ReaderWriter/ELF/Mips/MipsRelocationHandler.cpp
lld/trunk/lib/ReaderWriter/ELF/Mips/MipsRelocationHandler.h
Modified: lld/trunk/lib/ReaderWriter/ELF/Mips/MipsELFFile.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Mips/MipsELFFile.h?rev=234154&r1=234153&r2=234154&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/ELF/Mips/MipsELFFile.h (original)
+++ lld/trunk/lib/ReaderWriter/ELF/Mips/MipsELFFile.h Mon Apr 6 08:25:58 2015
@@ -244,9 +244,8 @@ private:
Reference::Addend readAddend(const Elf_Rel &ri,
const ArrayRef<uint8_t> content) const {
- const auto &rh = this->_ctx.getTargetHandler().getRelocationHandler();
- return static_cast<const MipsRelocationHandler &>(rh)
- .readAddend(getPrimaryType(ri), content.data() + ri.r_offset);
+ return readMipsRelocAddend(getPrimaryType(ri),
+ content.data() + ri.r_offset);
}
uint32_t getPairRelocation(const Elf_Rel &rel) const {
Modified: lld/trunk/lib/ReaderWriter/ELF/Mips/MipsRelocationHandler.cpp
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Mips/MipsRelocationHandler.cpp?rev=234154&r1=234153&r2=234154&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/ELF/Mips/MipsRelocationHandler.cpp (original)
+++ lld/trunk/lib/ReaderWriter/ELF/Mips/MipsRelocationHandler.cpp Mon Apr 6 08:25:58 2015
@@ -40,9 +40,6 @@ public:
const lld::AtomLayout &atom,
const Reference &ref) const override;
- Reference::Addend readAddend(Reference::KindValue kind,
- const uint8_t *content) const override;
-
private:
MipsLinkingContext &_ctx;
MipsTargetLayout<ELFT> &_targetLayout;
@@ -488,16 +485,15 @@ static ErrorOr<uint64_t> calculateReloca
}
}
-template <class ELFT>
static uint64_t relocRead(const MipsRelocationParams ¶ms,
const uint8_t *loc) {
uint64_t data;
switch (params._size) {
case 4:
- data = endian::read<uint32_t, ELFT::TargetEndianness, unaligned>(loc);
+ data = endian::read32le(loc);
break;
case 8:
- data = endian::read<uint64_t, ELFT::TargetEndianness, unaligned>(loc);
+ data = endian::read64le(loc);
break;
default:
llvm_unreachable("Unexpected size");
@@ -572,7 +568,7 @@ std::error_code RelocationHandler<ELFT>:
}
auto params = getRelocationParams(op);
- uint64_t ins = relocRead<ELFT>(params, location);
+ uint64_t ins = relocRead(params, location);
if (auto ec = adjustJumpOpCode(ins, tgtAddr, jumpMode))
return ec;
@@ -583,15 +579,6 @@ std::error_code RelocationHandler<ELFT>:
return std::error_code();
}
-template <class ELFT>
-Reference::Addend
-RelocationHandler<ELFT>::readAddend(Reference::KindValue kind,
- const uint8_t *content) const {
- auto params = getRelocationParams(kind);
- uint64_t ins = relocRead<ELFT>(params, content);
- return (ins & params._mask) << params._shift;
-}
-
namespace lld {
namespace elf {
@@ -609,5 +596,12 @@ createMipsRelocationHandler<Mips64ELType
return llvm::make_unique<RelocationHandler<Mips64ELType>>(ctx, layout);
}
+Reference::Addend readMipsRelocAddend(Reference::KindValue kind,
+ const uint8_t *content) {
+ auto params = getRelocationParams(kind);
+ uint64_t ins = relocRead(params, content);
+ return (ins & params._mask) << params._shift;
+}
+
} // elf
} // lld
Modified: lld/trunk/lib/ReaderWriter/ELF/Mips/MipsRelocationHandler.h
URL: http://llvm.org/viewvc/llvm-project/lld/trunk/lib/ReaderWriter/ELF/Mips/MipsRelocationHandler.h?rev=234154&r1=234153&r2=234154&view=diff
==============================================================================
--- lld/trunk/lib/ReaderWriter/ELF/Mips/MipsRelocationHandler.h (original)
+++ lld/trunk/lib/ReaderWriter/ELF/Mips/MipsRelocationHandler.h Mon Apr 6 08:25:58 2015
@@ -19,8 +19,6 @@ template<typename ELFT> class MipsTarget
class MipsRelocationHandler : public TargetRelocationHandler {
public:
- virtual Reference::Addend readAddend(Reference::KindValue kind,
- const uint8_t *content) const = 0;
};
template <class ELFT>
@@ -28,6 +26,8 @@ std::unique_ptr<TargetRelocationHandler>
createMipsRelocationHandler(MipsLinkingContext &ctx,
MipsTargetLayout<ELFT> &layout);
+Reference::Addend readMipsRelocAddend(Reference::KindValue kind,
+ const uint8_t *content);
} // elf
} // lld
More information about the llvm-commits
mailing list