[LLVMdev] clang -emit-llvm uses system ld

Gregory Malecha gmalecha at eecs.harvard.edu
Thu Jun 30 15:41:00 PDT 2011


Hi Duncan,

On Wed, Jun 29, 2011 at 11:32 PM, Duncan Sands <baldrick at free.fr> wrote:

> Hi Gregory,
>
> > I've tried the LTO options with dragonegg, but I haven't had any luck
> getting it
> > to work,
>
> details?
>
I think this is a misunderstanding on my part about what the dragonegg
plugin is supposed to do. I am looking for something that will essentially
be a replacement for gcc except that it generates llvm bitcode instead of
normal object files. If I run something like:

gcc-4.5 -fplugin=/homes/malecha/tmp/libc-scratch/dragonegg/dragonegg.so a.c
-c -o a.o -flto
/tmp/ccRKW0GD.s: Assembler messages:
/tmp/ccRKW0GD.s:1: Error: junk at end of line, first unrecognized character
is `.'
/tmp/ccRKW0GD.s:2: Error: no such instruction: `target
triple="x86_64--linux-gnu"'
/tmp/ccRKW0GD.s:4: Error: no such instruction: `module asm
"\09.ident\09\22GCC: (GNU) 4.5.2 LLVM: 133848\22"'
...

I assume because my system assembler doesn't understand llvm bitcode. So I
ended up wrapping it up in a script that calls gcc with -emit-llvm -S and
then runs llvm-as on the resulting llvm assembly code. I think that I just
need to manually (i.e. with a script) expand the gcc calls to incorporate
the llvm toolchain.


> Ciao, Duncan.
>
>  I'm not sure if it is related to my installation of gold or my gcc
> > configuration.
> >
> > I'm really interested in getting the resulting program as bitcode though.
> Will
> > LTO do that for me? What I'm trying to do is build a bitcode version of
> libc
> > that I can combine with a program and analyze/optimize the resulting
> program.
> >
> >
> >
> > 2011/6/28 Rafael Ávila de Espíndola <rafael.espindola at gmail.com
> > <mailto:rafael.espindola at gmail.com>>
> >
> >     On 11-06-28 10:45 PM, Gregory Malecha wrote:
> >      > Hello,
> >      >
> >      > I've been trying to build some normal linux applications with
> clang and I
> >     keep running into a snag in configure scripts. Perhaps these scripts
> are not
> >     written very well, but the current clang behavior seems strange. When
> I run
> >     clang with the -emit-llvm option, it still uses /usr/bin/ld as the
> linker
> >     which fails to compile llvm bitcode on linux (though it works on
> mac).
> >     Here's a simple example:
> >      >
> >      > $ cat > test.c
> >      > int main(void) { return 0; }
> >      > $ clang -emit-llvm test.c
> >      > /tmp/cc-pDfs56.o: file not recognized: File format not recognized
> >      > clang: error: linker command failed with exit code 1 (use -v to
> see
> >     invocation)
> >      > $ clang -emit-llvm test.c -c
> >      > $
> >      >
> >      > It seems to me that clang should call llvm-ld when it generates
> llvm code
> >     and ld otherwise, but maybe there's something that I have configured
> >     incorrectly. What is the appropriate way to address this?
> >
> >     llvm-ld is not a full replacement for a system ld. If you want to do
> LTO
> >     (which is why I assume you
> >     are using -emit-llvm), you should use a linker that support it. Gold
> support
> >     plugins and can
> >     use the LLVM one. Recently gnu ld implemented the same interface, but
> I
> >     haven't tested it.
> >
> >     http://llvm.org/docs/GoldPlugin.html
> >
> >      > Thanks.
> >
> >     Cheers,
> >     Rafael
> >     _______________________________________________
> >     LLVM Developers mailing list
> >     LLVMdev at cs.uiuc.edu <mailto:LLVMdev at cs.uiuc.edu>
> http://llvm.cs.uiuc.edu
> >     http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
> >
> >
> >
> >
> > --
> > gregory malecha
> >
> >
> >
> > _______________________________________________
> > LLVM Developers mailing list
> > LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>
> _______________________________________________
> LLVM Developers mailing list
> LLVMdev at cs.uiuc.edu         http://llvm.cs.uiuc.edu
> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
>



-- 
gregory malecha
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-dev/attachments/20110630/d3ac2a78/attachment.html>


More information about the llvm-dev mailing list