[llvm-commits] [llvm] r169178 - in /llvm/trunk/lib/ExecutionEngine/RuntimeDyld: RuntimeDyld.cpp RuntimeDyldELF.cpp RuntimeDyldImpl.h
NAKAMURA Takumi
geek4civic at gmail.com
Mon Dec 3 16:13:27 PST 2012
2012/12/4 Akira Hatanaka <ahatanaka at mips.com>:
> Author: ahatanak
> Date: Mon Dec 3 17:12:19 2012
> New Revision: 169178
>
> URL: http://llvm.org/viewvc/llvm-project?rev=169178&view=rev
> Log:
> Runtime dynamic linker for MCJIT should support MIPS BigEndian architecture.
> This small change adds support for that. It will make all MCJIT tests pass
> in make-check on BigEndian platforms.
>
> Patch by Petar Jovanovic.
>
> Modified:
> llvm/trunk/lib/ExecutionEngine/RuntimeDyld/RuntimeDyld.cpp
> llvm/trunk/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp
> llvm/trunk/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldImpl.h
>
> Modified: llvm/trunk/lib/ExecutionEngine/RuntimeDyld/RuntimeDyld.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/ExecutionEngine/RuntimeDyld/RuntimeDyld.cpp?rev=169178&r1=169177&r2=169178&view=diff
> ==============================================================================
> --- llvm/trunk/lib/ExecutionEngine/RuntimeDyld/RuntimeDyld.cpp (original)
> +++ llvm/trunk/lib/ExecutionEngine/RuntimeDyld/RuntimeDyld.cpp Mon Dec 3 17:12:19 2012
> @@ -347,7 +347,7 @@
> uint32_t *StubAddr = (uint32_t*)Addr;
> *StubAddr = 0xe51ff004; // ldr pc,<label>
> return (uint8_t*)++StubAddr;
> - } else if (Arch == Triple::mipsel) {
> + } else if (Arch == Triple::mipsel or Arch == Triple::mips) {
MSVC doesn't accept "or" (by default). Fixed in r169183.
> uint32_t *StubAddr = (uint32_t*)Addr;
> // 0: 3c190000 lui t9,%hi(addr).
> // 4: 27390000 addiu t9,t9,%lo(addr).
>
> Modified: llvm/trunk/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp?rev=169178&r1=169177&r2=169178&view=diff
> ==============================================================================
> --- llvm/trunk/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp (original)
> +++ llvm/trunk/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldELF.cpp Mon Dec 3 17:12:19 2012
> @@ -677,7 +677,8 @@
> RelType, 0);
> Section.StubOffset += getMaxStubSize();
> }
> - } else if (Arch == Triple::mipsel && RelType == ELF::R_MIPS_26) {
> + } else if ((Arch == Triple::mipsel || Arch == Triple::mips) &&
> + RelType == ELF::R_MIPS_26) {
> // This is an Mips branch relocation, need to use a stub function.
> DEBUG(dbgs() << "\t\tThis is a Mips branch relocation.");
> SectionEntry &Section = Sections[Rel.SectionID];
>
> Modified: llvm/trunk/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldImpl.h
> URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldImpl.h?rev=169178&r1=169177&r2=169178&view=diff
> ==============================================================================
> --- llvm/trunk/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldImpl.h (original)
> +++ llvm/trunk/lib/ExecutionEngine/RuntimeDyld/RuntimeDyldImpl.h Mon Dec 3 17:12:19 2012
> @@ -168,7 +168,7 @@
> inline unsigned getMaxStubSize() {
> if (Arch == Triple::arm || Arch == Triple::thumb)
> return 8; // 32-bit instruction and 32-bit address
> - else if (Arch == Triple::mipsel)
> + else if (Arch == Triple::mipsel or Arch == Triple::mips)
Ditto.
> return 16;
> else if (Arch == Triple::ppc64)
> return 44;
More information about the llvm-commits
mailing list