[LLVMdev] Generating IR bytecode files of httpd source code

teja tamboli tamboli.teja at gmail.com
Tue Mar 12 19:21:42 PDT 2013


Thanks John for quick reply. I used -O4 instead of "-emit-llvm" in CFLAGS
option. I was just trying different options in CFLAGS to get IR byte code
and pasted here with that option. Sorry !

I will look at this libLTO and will let you know.

Thanks,
Teja

On Tue, Mar 12, 2013 at 5:31 PM, John Criswell <criswell at illinois.edu>wrote:

>  On 3/12/13 7:16 PM, teja tamboli wrote:
>
> Hi,
>
>  I want to compile apache httpd using LLVM compiler. However, I am
> interested in generating llvm bytecode files  [.s or .ll] files along with
> its executables. I followed steps mentioned in link :
>
> http://stackoverflow.com/questions/13851661/compiling-apache-httpd-into-llvm-bytecode-using-clang
>
>  However after following all instructions when I compile httpd with
> following options I get directly executable files.
>
>  CC="clang" CFLAGS="-emit-llvm" ./configure
> --prefix=/home/varun/work/httpd/build --with-included-apr
>  make
>
>
> The first problem may be that the -emit-llvm option may not be used to
> compile the code.  Double-check your logs of the builds to make sure that
> it is.  If it is not, then you may need to modify the build Makefiles in
> the build directory to get it to do this.
>
> The second problem is that while your object files will be LLVM bitcode,
> your final executable will still be native code because that is what libLTO
> does when it is told to generate a final executable.  There are two ways to
> handle this:
>
> 1) Modify libLTO to run your LLVM passes for you.  In many cases, this is
> the best way to do things, and it's how we do whole-program analysis in
> SAFECode.
>
> 2) Modify libLTO to dump the bitcode file it generates to a separate file
> just before it does code generation.  I think the SAFECode libLTO code does
> this if the HAVE_POOLALLOC symbol is defined, so you can use it as a guide.
>
> 3) Modify the Apache build system to link all the files together into a
> single .o file instead of trying to create a final executable.  With
> -emit-llvm, that file .o files will be an LLVM bitcode file.
>
>
>
>  I want to generate intermediate byte code files. My aim is to run some
> optimizers on these bytecode files and then generate executables.
>
>
> If you're doing optimizations, then option 1 is by far your best bet,
> IMHO.  You can look at SAFECode's libLTO for an example.
>
> -- John T.
>
>   How should I change this command or what approach I should take to do
> this.
>
>  Thanks in advance !
>
>  --
> Regards,
> Teja
>
>
> _______________________________________________
> LLVM Developers mailing listLLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.eduhttp://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>
>
>


-- 
Regards,
Teja
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20130312/3db064f1/attachment.html>


More information about the llvm-dev mailing list