diff options
author | Simon Atanasyan <simon@atanasyan.com> | 2014-11-21 21:26:32 +0000 |
---|---|---|
committer | Simon Atanasyan <simon@atanasyan.com> | 2014-11-21 21:26:32 +0000 |
commit | cff9efb52fe5d848f03d0a44aaed24c07cacced7 (patch) | |
tree | b2d5cfa9ec23048ee45993798a13b0f05c4599a9 | |
parent | ea2cb6f6166b94ed1ed6cfc62159d982944078ee (diff) | |
download | bcm5719-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.h | 8 |
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: |