Using LLVM to cross-compile ADA programs

Dear all,

I'm trying to use LLVM 2.7 (running on a x86-32 platform) as cross compiler to build ADA programs that will run on a different target platform (PowerPc).

The LLVM documentation states that: "The only platform for which the Ada front-end is known to build is 32 bit intel x86 running linux. It is unlikely to build for other systems without some work."

and also:

"The Ada front-end currently only builds on X86-32. This is mainly due to lack of trampoline support (pointers to nested functions) on other platforms. However, it also fails to build on X86-64 which does support trampolines."

So my question is: do these problems prevent us from using LLVM as cross-compiler for ADA programs? I suppose they don't, as they concern the "host" platform only, not the "target" platform. Is it correct?

Thank you in advance for your support.

Regards,
Elisa

Hi Elisa,

I'm trying to use LLVM 2.7 (running on a x86-32 platform) as cross compiler to build ADA programs that will run on a different target platform (PowerPc).

as far as I know no-one ever tried it. You are in uncharted territory.

So my question is: do these problems prevent us from using LLVM as cross-compiler for ADA programs? I suppose they don't, as they concern the "host" platform only, not the "target" platform. Is it correct?

The Ada front-end comes with a substantial run-time library, which needs to be
compiled for the target. Compiling it is a good stress test for the compiler,
so it might fail by crashing the compiler even though a priori I don't see any
reason it shouldn't work. For example, the run-time library makes use of
trampolines, which will need to be compiled correctly for the target machine,
but since LLVM now apparently supports trampolines on ppc (I think this was in
2.7 already), hopefully it will work. I suggest you try, and report any
problems you come across. I think it would be a good idea to first build a
C cross-compiler, to shake out any problems that are not Ada specific, before
trying to build an Ada cross-compiler.

Ciao,

Duncan.

PS: It's Ada not ADA - it's someone's name, not an acronym.
PPS: I'm not working on the llvm-gcc Ada front-end any more - Ada support has
moved to the dragonegg plugin (http://dragonegg.llvm.org). Dragonegg does not
yet support ppc, though I plan this in the future. Once it does, it should be
perfectly possible to cross-compile to ppc.