diff options
author | Keno Fischer <kfischer@college.harvard.edu> | 2015-04-16 02:00:38 +0000 |
---|---|---|
committer | Keno Fischer <kfischer@college.harvard.edu> | 2015-04-16 02:00:38 +0000 |
commit | 8ef1bd24377e2c8ca059bb6439a06131f854747d (patch) | |
tree | d6f2cf41e33255e6bb2a811e3130edaaa1e7d845 /llvm/lib/ExecutionEngine | |
parent | f15c6f803268e880d3673e8b1a6dfee87982454e (diff) | |
download | bcm5719-llvm-8ef1bd24377e2c8ca059bb6439a06131f854747d.tar.gz bcm5719-llvm-8ef1bd24377e2c8ca059bb6439a06131f854747d.zip |
[RuntimeDyldELF] Fix missing cases in Placeholder processing
Try to appease the build bots. We should write rtdyld test cases for these
to make them testible on other platforms.
llvm-svn: 235070
Diffstat (limited to 'llvm/lib/ExecutionEngine')
-rw-r--r-- | llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp | 4 |
1 files changed, 3 insertions, 1 deletions
diff --git a/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp b/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp index d380cb4e18b..52db2c0f62a 100644 --- a/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp +++ b/llvm/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp @@ -460,7 +460,7 @@ void RuntimeDyldELF::resolveARMRelocation(const SectionEntry &Section, else if (Type == ELF::R_ARM_MOVT_ABS) Value = (Value >> 16) & 0xFFFF; *TargetPtr &= ~0x000F0FFF; - *TargetPtr = Value & 0xFFF; + *TargetPtr |= Value & 0xFFF; *TargetPtr |= ((Value >> 12) & 0xF) << 16; break; // Write 24 bit relative value to the branch instruction. @@ -1052,6 +1052,8 @@ relocation_iterator RuntimeDyldELF::processRelocationRef( Value.Addend += ((*Placeholder) & 0x0000ffff) << 16; else if (RelType == ELF::R_MIPS_LO16) Value.Addend += ((*Placeholder) & 0x0000ffff); + else if (RelType == ELF::R_MIPS_32) + Value.Addend += *Placeholder; processSimpleRelocation(SectionID, Offset, RelType, Value); } } else if (Arch == Triple::ppc64 || Arch == Triple::ppc64le) { |