<html>
  <head>
    <meta content="text/html; charset=ISO-8859-1"
      http-equiv="Content-Type">
  </head>
  <body bgcolor="#FFFFFF" text="#000000">
    <div class="moz-cite-prefix">On 3/12/13 7:16 PM, teja tamboli wrote:<br>
    </div>
    <blockquote
cite="mid:CABE5wVKfuiVDgxTdQcx4kycKjL1tEP6u6zWYf-OBiytNSPunKg@mail.gmail.com"
      type="cite">
      <meta http-equiv="Content-Type" content="text/html;
        charset=ISO-8859-1">
      Hi,
      <div><br>
      </div>
      <div>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 : </div>
      <div>
        <div><a moz-do-not-send="true"
href="http://stackoverflow.com/questions/13851661/compiling-apache-httpd-into-llvm-bytecode-using-clang">http://stackoverflow.com/questions/13851661/compiling-apache-httpd-into-llvm-bytecode-using-clang</a></div>
        <div><br>
        </div>
        <div>However after following all instructions when I compile
          httpd with following options I get directly executable files.</div>
        <div><br>
        </div>
        <div>CC="clang" CFLAGS="-emit-llvm" ./configure
          --prefix=/home/varun/work/httpd/build --with-included-apr</div>
        <div>
          <div>make</div>
        </div>
      </div>
    </blockquote>
    <br>
    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.<br>
    <br>
    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:<br>
    <br>
    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.<br>
    <br>
    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.<br>
    <br>
    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.<br>
    <br>
    <blockquote
cite="mid:CABE5wVKfuiVDgxTdQcx4kycKjL1tEP6u6zWYf-OBiytNSPunKg@mail.gmail.com"
      type="cite">
      <div>
        <div>
          <div><br>
          </div>
          <div>I want to generate intermediate byte code files. My aim
            is to run some optimizers on these bytecode files and then
            generate executables. <br>
          </div>
        </div>
      </div>
    </blockquote>
    <br>
    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.<br>
    <br>
    -- John T.<br>
    <br>
    <blockquote
cite="mid:CABE5wVKfuiVDgxTdQcx4kycKjL1tEP6u6zWYf-OBiytNSPunKg@mail.gmail.com"
      type="cite">
      <div>
        <div>
          <div>How should I change this command or what approach I
            should take to do this. </div>
          <div><br>
          </div>
          <div>Thanks in advance !</div>
          <div><br>
          </div>
        </div>
        <div>-- </div>
        Regards,<br>
        Teja
      </div>
      <br>
      <fieldset class="mimeAttachmentHeader"></fieldset>
      <br>
      <pre wrap="">_______________________________________________
LLVM Developers mailing list
<a class="moz-txt-link-abbreviated" href="mailto:LLVMdev@cs.uiuc.edu">LLVMdev@cs.uiuc.edu</a>         <a class="moz-txt-link-freetext" href="http://llvm.cs.uiuc.edu">http://llvm.cs.uiuc.edu</a>
<a class="moz-txt-link-freetext" href="http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev">http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev</a>
</pre>
    </blockquote>
    <br>
  </body>
</html>