[LLVMdev] amd64, FreeBSD and shared libraries

Coleman Kane cokane at cokane.org
Fri Feb 15 19:17:33 PST 2008


Hello,

I am trying to build llvm-gcc 4.2 w/ llvm 2.2 on FreeBSD/amd64 and have
found that it doesn't seem to want to build shared libraries. I've found
numerous notes that I should try --disable-shared, because the linker
ends up erroring out with a linker error when building libgcc_s.so.
Subsequently, the same error is produced when it attempts to build
libstdc++.so. If you do happen to build and install it, any attempt to
link a shared library results in this very same behavior. The
crtbeginS.o object seems to contain the offending relocation data which
ld doesn't like.

The following error is what I get:

/usr/home/cokane/src/llvm-gcc4.2-2.2.source/host-amd64-undermydesk-freebsd8/gcc/xgcc
-B/usr/home/cokane/src/llvm-gcc4.2-2.2.source/host-amd64-undermydesk-freebsd8/gcc/
-B/home/cokane/llvm-root/amd64-undermydesk-freebsd8/bin/
-B/home/cokane/llvm-root/amd64-undermydesk-freebsd8/lib/ -isystem
/home/cokane/llvm-root/amd64-undermydesk-freebsd8/include -isystem
/home/cokane/llvm-root/amd64-undermydesk-freebsd8/sys-include -O2  -O2
-fPIC  -DIN_GCC    -W -Wall -Wwrite-strings -Wstrict-prototypes
-Wmissing-prototypes -Wold-style-definition  -isystem ./include   -fPIC
-pthread -g -DHAVE_GTHR_DEFAULT -DIN_LIBGCC2 -D__GCC_FLOAT_NOT_NEEDED 
-shared -nodefaultlibs -Wl,--soname=libgcc_s.so.1
-Wl,--version-script=libgcc/./libgcc.map -o ./libgcc_s.so.1.tmp 
libgcc/./_muldi3_s.o libgcc/./_negdi2_s.o libgcc/./_lshrdi3_s.o
libgcc/./_ashldi3_s.o libgcc/./_ashrdi3_s.o libgcc/./_cmpdi2_s.o
libgcc/./_ucmpdi2_s.o libgcc/./_clear_cache_s.o
libgcc/./_enable_execute_stack_s.o libgcc/./_trampoline_s.o
libgcc/./__main_s.o libgcc/./_absvsi2_s.o libgcc/./_absvdi2_s.o
libgcc/./_addvsi3_s.o libgcc/./_addvdi3_s.o libgcc/./_subvsi3_s.o
libgcc/./_subvdi3_s.o libgcc/./_mulvsi3_s.o libgcc/./_mulvdi3_s.o
libgcc/./_negvsi2_s.o libgcc/./_negvdi2_s.o libgcc/./_ctors_s.o
libgcc/./_ffssi2_s.o libgcc/./_ffsdi2_s.o libgcc/./_clz_s.o
libgcc/./_clzsi2_s.o libgcc/./_clzdi2_s.o libgcc/./_ctzsi2_s.o
libgcc/./_ctzdi2_s.o libgcc/./_popcount_tab_s.o
libgcc/./_popcountsi2_s.o libgcc/./_popcountdi2_s.o
libgcc/./_paritysi2_s.o libgcc/./_paritydi2_s.o libgcc/./_powisf2_s.o
libgcc/./_powidf2_s.o libgcc/./_powixf2_s.o libgcc/./_powitf2_s.o
libgcc/./_mulsc3_s.o libgcc/./_muldc3_s.o libgcc/./_mulxc3_s.o
libgcc/./_multc3_s.o libgcc/./_divsc3_s.o libgcc/./_divdc3_s.o
libgcc/./_divxc3_s.o libgcc/./_divtc3_s.o libgcc/./_bswapsi2_s.o
libgcc/./_bswapdi2_s.o libgcc/./_fixunssfsi_s.o libgcc/./_fixunsdfsi_s.o
libgcc/./_fixunsxfsi_s.o libgcc/./_fixsfdi_s.o libgcc/./_fixunssfdi_s.o
libgcc/./_floatdisf_s.o libgcc/./_floatundisf_s.o libgcc/./_fixdfdi_s.o
libgcc/./_fixunsdfdi_s.o libgcc/./_floatdidf_s.o
libgcc/./_floatundidf_s.o libgcc/./_fixxfdi_s.o libgcc/./_fixunsxfdi_s.o
libgcc/./_floatdixf_s.o libgcc/./_floatundixf_s.o libgcc/./_fixtfdi_s.o
libgcc/./_fixunstfdi_s.o libgcc/./_floatditf_s.o
libgcc/./_floatunditf_s.o libgcc/./_divdi3_s.o libgcc/./_moddi3_s.o
libgcc/./_udivdi3_s.o libgcc/./_umoddi3_s.o libgcc/./_udiv_w_sdiv_s.o
libgcc/./_udivmoddi4_s.o libgcc/./unwind-dw2_s.o
libgcc/./unwind-dw2-fde_s.o libgcc/./unwind-sjlj_s.o
libgcc/./gthr-gnat_s.o libgcc/./unwind-c_s.o -lc && rm -f ./libgcc_s.so
&& if [ -f ./libgcc_s.so.1 ]; then mv -f ./libgcc_s.so.1
./libgcc_s.so.1.backup; else true; fi && mv ./libgcc_s.so.1.tmp
./libgcc_s.so.1 && ln -s libgcc_s.so.1 ./libgcc_s.so
/usr/bin/ld:
/usr/home/cokane/src/llvm-gcc4.2-2.2.source/host-amd64-undermydesk-freebsd8/gcc/crtbeginS.o:
relocation R_X86_64_32S can not be used when making a shared object;
recompile with -fPIC
/usr/home/cokane/src/llvm-gcc4.2-2.2.source/host-amd64-undermydesk-freebsd8/gcc/crtbeginS.o:
could not read symbols: Bad value
collect2: ld returned 1 exit status
gmake[3]: *** [libgcc_s.so] Error 1
gmake[3]: Leaving directory
`/usr/home/cokane/src/llvm-gcc4.2-2.2.source/host-amd64-undermydesk-freebsd8/gcc'
gmake[2]: *** [libgcc.a] Error 2
gmake[2]: Leaving directory
`/usr/home/cokane/src/llvm-gcc4.2-2.2.source/host-amd64-undermydesk-freebsd8/gcc'
gmake[1]: *** [all-gcc] Error 2
gmake[1]: Leaving directory `/usr/home/cokane/src/llvm-gcc4.2-2.2.source'
gmake: *** [all] Error 2

I am really eager to get this working on my system so that I can play
around. Any help would be appreciated.

--
Coleman Kane




More information about the llvm-dev mailing list