[LLVMdev] clang 3.5 with "-flto" does not generate .bc files

John Criswell criswell at illinois.edu
Tue Jun 24 20:30:18 PDT 2014


On 6/24/14, 10:11 PM, Gaoyao Xiao wrote:
> Hello,
>
> I am trying to use clang to generate bitcode file. I read in 
> http://llvm.org/docs/GoldPlugin.html that clang with -flto option can 
> generate bitcode files. I have built LLVMgold.so and have gold with 
> plugin support. I tried "clang -c -flto toy.c -o toy.bc" and it does 
> produce bitcode. However, when I try it on lighttpd 1.4.35, then it 
> only produce the binary, but not produce bitcode of lighttpd. I also 
> tried it on apache2.0.56, and it create the errors like the following 
> when linking.

In the case of lighttpd, I suspect that the configure script is not 
picking up the -flto option.  Examine the output of the build (or look 
at the Makefiles) to see if it is indeed compiling with the -flto option 
as expected.  If not, you either need to play around with the configure 
script (e.g., set CC to "clang -flto") or modify the Makefiles.

>
> /usr/bin/ld.gold.real: error: strings/.libs/apr_cpystrn.o:1:3: invalid 
> character
> /usr/bin/ld.gold.real: error: strings/.libs/apr_cpystrn.o:1:3: syntax 
> error, unexpected $end
> /usr/bin/ld.gold.real: error: strings/.libs/apr_cpystrn.o: not an 
> object or archive

This error is most likely caused by a program that is expecting a 
regular object file but is reading a bitcode file instead.  You should 
determine what command the make program is running that is generating 
this error.  Once you know that, you can determine how to fix the error 
(by modifying the Makefiles or adjusting the variable you set before 
running configure).

Also be aware that ar, nm, etc. need to find the libLTO.so file in a 
particular place in order to read bitcode files.  Be sure that is 
installed properly.  The SAFECode libLTO directions may provide some 
illumination: http://sva.cs.illinois.edu/docs/Install.html#install.

The Apache build system in particular does some interesting things. 
You'll probably need to modify the build system to get it to work.

Regards,

John Criswell

>
> I am using ubuntu 12.04. I have the following questions:
> 1) for lighttpd, why is it able to build but not produce bitcode?
> 2) for apache, does the error means that gold plugin is not found by 
> clang and make it fail to link? I read "-use-gold-plugin" can solve 
> this problem on clang 3.0. But this option is not recognized by clang 
> 3.5. Will clang 3.0 solve this problem?
>
> Many thanks!
> Gaoyao
>
>
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20140624/91860e42/attachment.html>


More information about the llvm-dev mailing list