The reason I was linking via llvm-ld is because I didn't know how to pass bitcode files to llvm-gcc. How can I do that? Anton Korobeynikov wrote:>> Is fPIC broken on x86_64 in LLVM 2.6? > No, it works w/o any problems > >> ------------------- >> > llvm-gcc -Iinclude -emit-llvm -fPIC -O3 -c -o file.opt.bc file.c >> > llvm-ld -native -Xlinker=-shared -Xlinker=-Wl,-soname,libtest.so -o >> file.so file.opt.bc >> ------------------- > PIC-ness is a backend option. So, passing -fPIC to llvm-gcc does not > make any sense, it is not saved into the bytecode. > Try passing -relocation-model=pic to llvm-ld, or just compile > everything via llvm-gcc which known how to pass necessary options to > backend :) >
You do it by using the -flto flag. But you will need a linker that's able to handle the bitcode files. The Apple linker can and so can the "gold" linker. -bw On Oct 3, 2010, at 7:47 PM, Ryan M. Lefever wrote:> The reason I was linking via llvm-ld is because I didn't know how to > pass bitcode files to llvm-gcc. How can I do that? > > Anton Korobeynikov wrote: >>> Is fPIC broken on x86_64 in LLVM 2.6? >> No, it works w/o any problems >> >>> ------------------- >>>> llvm-gcc -Iinclude -emit-llvm -fPIC -O3 -c -o file.opt.bc file.c >>>> llvm-ld -native -Xlinker=-shared -Xlinker=-Wl,-soname,libtest.so -o >>> file.so file.opt.bc >>> ------------------- >> PIC-ness is a backend option. So, passing -fPIC to llvm-gcc does not >> make any sense, it is not saved into the bytecode. >> Try passing -relocation-model=pic to llvm-ld, or just compile >> everything via llvm-gcc which known how to pass necessary options to >> backend :) >> > _______________________________________________ > LLVM Developers mailing list > LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu > http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev
It appears that llvm-ld can handle bitcode files but llvm-gcc complains that when I pass bitcode files to it. I assume that means that llvm-gcc does not use llvm-ld by default. Is there a way to force it to use llvm-ld? Bill Wendling wrote:> You do it by using the -flto flag. But you will need a linker that's able to handle the bitcode files. The Apple linker can and so can the "gold" linker. > > -bw > > On Oct 3, 2010, at 7:47 PM, Ryan M. Lefever wrote: > >> The reason I was linking via llvm-ld is because I didn't know how to >> pass bitcode files to llvm-gcc. How can I do that? >> >> Anton Korobeynikov wrote: >>>> Is fPIC broken on x86_64 in LLVM 2.6? >>> No, it works w/o any problems >>> >>>> ------------------- >>>>> llvm-gcc -Iinclude -emit-llvm -fPIC -O3 -c -o file.opt.bc file.c >>>>> llvm-ld -native -Xlinker=-shared -Xlinker=-Wl,-soname,libtest.so -o >>>> file.so file.opt.bc >>>> ------------------- >>> PIC-ness is a backend option. So, passing -fPIC to llvm-gcc does not >>> make any sense, it is not saved into the bytecode. >>> Try passing -relocation-model=pic to llvm-ld, or just compile >>> everything via llvm-gcc which known how to pass necessary options to >>> backend :) >>> >> _______________________________________________ >> LLVM Developers mailing list >> LLVMdev at cs.uiuc.edu http://llvm.cs.uiuc.edu >> http://lists.cs.uiuc.edu/mailman/listinfo/llvmdev >