[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