[LLVMdev] Help with PPC64 JIT

Kaylor, Andrew andrew.kaylor at intel.com
Tue Jul 31 14:23:41 PDT 2012


Hi Adhemerval,

It looks like the default relocation model for PowerPC is "DynamicNoPIC" for the Darwin OS and "Static" elsewhere.  There is a command line option ("relocation-model") to override this default in both lli and llc.  However, I'm not sure using this will reduce your troubles.  You may end up going down code paths that have not been sufficiently exercised in the past.

I don't really know anything specifically about PowerPC, but I think that you may be able to glean some guidance from a patch which Petar Jovanovic recently submitted to add MCJIT support for MIPS.  The patch (which hasn't yet been committed) is here:

http://lists.cs.uiuc.edu/pipermail/llvm-commits/Week-of-Mon-20120723/146977.html

The big difference I see between Petar's patch and yours is that Petar added explicit ELFWriterInfo support for his platform.  This is outside the area of the code that I know well, but it looks like that might be the right direction for you to investigate to fix your relocation difficulties.

-Andy

-----Original Message-----
From: llvmdev-bounces at cs.uiuc.edu [mailto:llvmdev-bounces at cs.uiuc.edu] On Behalf Of Adhemerval Zanella
Sent: Tuesday, July 31, 2012 7:26 AM
To: will_schmidt at vnet.ibm.com
Cc: llvmdev at cs.uiuc.edu
Subject: Re: [LLVMdev] Help with PPC64 JIT

On 07/20/2012 10:35 AM, Will Schmidt wrote:
> On Fri, 2012-07-20 at 08:36 +0200, Duncan Sands wrote:
>> Hi Adhemerval Zanella, the old JIT infrastructure is going away, to 
>> be replaced by "MC-JIT" (try passing -use-mcjit to lli).  It sounds 
>> like you are working on the old JIT, so I suggest you work instead on getting MC-JIT working on powerpc.
> Hi Duncan, 
>    Thanks for the pointers.  We hadn't stumbled across the MC-JIT refs 
> in our digging so far.  (LLVM GettingStarted.html doesn't mention it, 
> and (FIXME: T.B.D.) under llvm/lib/mc, so I suppose the MC jit is 
> fairly
> recent?)
> Are we safe to assume the old JIT infrastructure will be completely 
> replaced, or are there likely to be 'users' that may still need 
> functionality?
> I imagine since the old jit is where Adhemerval was focused, the 
> build/test steps must still be referencing it.
>
> Thanks,
> -Will

Thanks for the reply Duncan, I shifted my focus fo MCJIT. So far I could check there are basically two issues with MCJIT relating to PPC64 support:

1. Looks like LLVM does not generate PPC64 PIC code with TOC references. Using the testcase '2003-01-04-ArgumentBug.ll' I tried to invoke the llc with '-march=ppc64 -mcpu=ppc64 -mattr=64bit'
and still uses the 32-bits relocations (@ha/@l(3)) where TOC would be expected (@toc). I did some adjustments to JIT code and function calling is correct (the function ODP is created and called), but BSS access is still not right since the 64-bits relocations are not done correctly.
Could someone point where should I focus my efforts to add TOC support on PowerPC backend?

2. Relocations: I could add some support for PPC32 relocations by implementing some functions at 'RuntimeDyldELF.cpp', but then I fall back again in 1. (the PPC64 support is incomplete). 

Is my analysis correct or I am issuing llc/lli wrongly and not activating the PPC64 PIC support?
Anyone to advice me on this one? Any help would be appreciated.

--
Adhemerval Zanella Netto
  Software Engineer
  Linux Technology Center Brazil
  Toolchain / GLIBC on Power Architecture
  azanella at linux.vnet.ibm.com / azanella at br.ibm.com
  +55 61 8642-9890

_______________________________________________
LLVM Developers mailing list
LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev




More information about the llvm-dev mailing list