Re-commit r238838, r238844 with fix for host/target endian mismatch and windows buildbot.
authorDaniel Sanders <daniel.sanders@imgtec.com>
Wed, 3 Jun 2015 10:27:28 +0000 (10:27 +0000)
committerDaniel Sanders <daniel.sanders@imgtec.com>
Wed, 3 Jun 2015 10:27:28 +0000 (10:27 +0000)
commit8b2354de81ac72cfb97320c6cb6c42321421ff35
tree0b349d4a4d7b22f5e4b997d54f1da3156acf0d05
parentce815e4588fd02d5ba0d5ec0bf9ceeb2e616eb6e
Re-commit r238838, r238844 with fix for host/target endian mismatch and windows buildbot.

The windows buildbot originally failed because the check expressions are
evaluated as 64-bit values, even for 32-bit symbols. Fixed this by comparing
bottom 32-bits of the expressions.

The host/target endian mismatch issue is that it's invalid to read/write target
values using a host pointer without taking care of endian differences between
the target and host. Most (if not all) instances of
reinterpret_cast<uint32_t*>() in the RuntimeDyld are examples of this bug.
This has been fixed for Mips using the endian aware read/write functions.

The original commits were:
r238838:
[mips] Add RuntimeDyld tests for currently supported O32 relocations.

Reviewers: petarj, vkalintiris

Reviewed By: vkalintiris

Subscribers: vkalintiris, llvm-commits

Differential Revision: http://reviews.llvm.org/D10126

r238844:
[mips][mcjit] Add support for R_MIPS_PC32.

Summary:
This allows us to resolve relocations for DW_EH_PE_pcrel TType encodings
in the exception handling LSDA.

Also fixed a nearby typo.

Reviewers: petarj, vkalintiris

Reviewed By: vkalintiris

Subscribers: vkalintiris, llvm-commits

Differential Revision: http://reviews.llvm.org/D10127

llvm-svn: 238915
llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp
llvm/test/ExecutionEngine/RuntimeDyld/Mips/ELF_O32_PIC_relocations.s [new file with mode: 0644]