summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorSimon Atanasyan <simon@atanasyan.com>2014-11-21 21:26:32 +0000
committerSimon Atanasyan <simon@atanasyan.com>2014-11-21 21:26:32 +0000
commitcff9efb52fe5d848f03d0a44aaed24c07cacced7 (patch)
treeb2d5cfa9ec23048ee45993798a13b0f05c4599a9
parentea2cb6f6166b94ed1ed6cfc62159d982944078ee (diff)
downloadbcm5719-llvm-cff9efb52fe5d848f03d0a44aaed24c07cacced7.tar.gz
bcm5719-llvm-cff9efb52fe5d848f03d0a44aaed24c07cacced7.zip
[Mips] Use endian::read() for relocation addendum reading
llvm-svn: 222574
-rw-r--r--lld/lib/ReaderWriter/ELF/Mips/MipsELFFile.h8
1 files changed, 5 insertions, 3 deletions
diff --git a/lld/lib/ReaderWriter/ELF/Mips/MipsELFFile.h b/lld/lib/ReaderWriter/ELF/Mips/MipsELFFile.h
index 723e4f65f1e..dfd8501e183 100644
--- a/lld/lib/ReaderWriter/ELF/Mips/MipsELFFile.h
+++ b/lld/lib/ReaderWriter/ELF/Mips/MipsELFFile.h
@@ -11,6 +11,7 @@
#include "ELFReader.h"
#include "MipsLinkingContext.h"
+#include "llvm/Support/Endian.h"
namespace llvm {
namespace object {
@@ -211,14 +212,15 @@ private:
Reference::Addend readAddend(const Elf_Rel &ri,
const ArrayRef<uint8_t> content) const {
+ using namespace llvm::support;
const uint8_t *ap = content.data() + ri.r_offset;
switch (ri.getType(isMips64EL())) {
case llvm::ELF::R_MIPS_32:
case llvm::ELF::R_MIPS_GPREL32:
case llvm::ELF::R_MIPS_PC32:
- return *(const int32_t *)ap;
+ return endian::read<int32_t, ELFT::TargetEndianness, 2>(ap);
case llvm::ELF::R_MIPS_26:
- return *(const int32_t *)ap & 0x3ffffff;
+ return endian::read<int32_t, ELFT::TargetEndianness, 2>(ap) & 0x3ffffff;
case llvm::ELF::R_MIPS_HI16:
case llvm::ELF::R_MIPS_LO16:
case llvm::ELF::R_MIPS_GOT16:
@@ -226,7 +228,7 @@ private:
case llvm::ELF::R_MIPS_TLS_DTPREL_LO16:
case llvm::ELF::R_MIPS_TLS_TPREL_HI16:
case llvm::ELF::R_MIPS_TLS_TPREL_LO16:
- return *(const int16_t *)ap;
+ return endian::read<int16_t, ELFT::TargetEndianness, 2>(ap);
case llvm::ELF::R_MIPS_CALL16:
case llvm::ELF::R_MIPS_TLS_GD:
case llvm::ELF::R_MIPS_TLS_LDM:
OpenPOWER on IntegriCloud