[LLVMdev] Output to a DLL

Nicolas Capens nicolas at capens.net
Thu Jun 11 14:03:40 PDT 2009

Hi Óscar,

For me writing a DLL would have two purposes: one is to reduce compilation
time (i.e. make it work like a cache), but a second very important goal is
to be able to profile code at the assembly level (using AMD's CodeAnalyst
for example).

Fortunately, the code I'm generating consists of only pure functions. So
there's no need for linking symbols.

Anyway, thanks for the ideas. I'll definitely investigate generating
assembly output and using an external compiler and linker for it.



-----Original Message-----
From: llvmdev-bounces at cs.uiuc.edu [mailto:llvmdev-bounces at cs.uiuc.edu] On
Behalf Of Óscar Fuentes
Sent: donderdag 11 juni 2009 17:39
To: llvmdev at cs.uiuc.edu
Subject: Re: [LLVMdev] Output to a DLL

"Nicolas Capens" <nicolas at capens.net> writes:

Hello Nicolas.

> I'd like to be able to write JIT-compiled code to a Windows DLL. I have no
> idea where to start though. Does LLVM already offer some support for
> this?

Nope. Don't hold your breadth waiting for it. It is far from trivial to

I don't know your requirements, but mine is to avoid compilation every
time the hosting application starts.

I was thinking on:

 1. Compile and spit bitecode from the JIT the first time, load it on
 subsequent sessions. Seems doable. Doesn't work if your goal is
 using code on non-LLVM-aware applications, but if you want to do this
 the JIT is of no use anyways.

 2. Act as a traditional compiler and generate a shared library via
 llvmc + assembler + linker. Tricky, even more so on Windows. Resolving
 symbols is not as easy as is on case 1.

> Or would it be straightforward to write my own DLL writer (no advanced
> features needed)? Or maybe I could use an external linker? All help highly
> appreciated!

If you end hacking a DLL writer, please contribute it to LLVM :-)


LLVM Developers mailing list
LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu

More information about the llvm-dev mailing list