From: Keno Fischer Date: Thu, 16 Apr 2015 02:00:38 +0000 (+0000) Subject: [RuntimeDyldELF] Fix missing cases in Placeholder processing X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=ec0a34f850eca0d97e0592236e0ac14083aa1c3d;p=oota-llvm.git [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. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@235070 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp b/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp index d380cb4e18b..52db2c0f62a 100644 --- a/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp +++ b/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) {