This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

x86-64 multilib problem


I have a problem in mainline that I really don't understand. When I
configure the mainline to be a multilib compiler, I get this when
linking libgcc in 32 bit mode:

./xgcc -B./ -B/usr/local/x86_64-unknown-linux-gnu/bin/ -isystem /usr/local/x86_64-unknown-linux-gnu/include -isystem /usr/local/x86_64-unknown-linux-gnu/sys-include -O2  -DIN_GCC    -W -Wall -Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -isystem ./include  -fPIC -g -DHAVE_GTHR_DEFAULT -DIN_LIBGCC2 -D__GCC_FLOAT_NOT_NEEDED  -shared -nodefaultlibs -Wl,--soname=libgcc_s.so.1 -Wl,--version-script=libgcc/32/libgcc.map -o 32/libgcc_s.so.1  -m32  libgcc/32/_muldi3.o libgcc/32/_negdi2.o libgcc/32/_lshrdi3.o libgcc/32/_ashldi3.o libgcc/32/_ashrdi3.o libgcc/32/_ffsdi2.o libgcc/32/_clz.o libgcc/32/_cmpdi2.o libgcc/32/_ucmpdi2.o libgcc/32/_floatdidf.o libgcc/32/_floatdisf.o libgcc/32/_fixunsdfsi.o libgcc/32/_fixunssfsi.o libgcc/32/_fixunsdfdi.o libgcc/32/_fixdfdi.o libgcc/32/_fixunssfdi.o libgcc/32/_fixsfdi.o libgcc/32/_fixxfdi.o libgcc/32/_fixunsxfdi.o libgcc/32/_floatdixf.o libgcc/32/_fixunsxfsi.o libgcc/32/_fixtfdi.o libgcc/32/_fixunstfdi.o libgcc/32/_floatditf.o libgcc/32/_clear_cache.o libgcc/32/_trampoline.o libgcc/32/__main.o libgcc/32/_exit.o libgcc/32/_absvsi2.o libgcc/32/_absvdi2.o libgcc/32/_addvsi3.o libgcc/32/_addvdi3.o libgcc/32/_subvsi3.o libgcc/32/_subvdi3.o libgcc/32/_mulvsi3.o libgcc/32/_mulvdi3.o libgcc/32/_negvsi2.o libgcc/32/_negvdi2.o libgcc/32/_ctors.o libgcc/32/_divdi3.o libgcc/32/_moddi3.o libgcc/32/_udivdi3.o libgcc/32/_umoddi3.o libgcc/32/_udiv_w_sdiv.o libgcc/32/_udivmoddi4.o  libgcc/32/unwind-dw2.o libgcc/32/unwind-dw2-fde-glibc.o libgcc/32/unwind-sjlj.o -lc && rm -f libgcc_s_32.so && ln -s 32/libgcc_s.so.1 libgcc_s_32.so
/usr/bin/ld: skipping incompatible /lib64/libc.so.6 when searching for /lib64/libc.so.6
/usr/bin/ld: skipping incompatible /lib64/libc.so.6 when searching for /lib64/libc.so.6
/usr/bin/ld: skipping incompatible /lib64/libc.so.6 when searching for /lib64/libc.so.6
/usr/bin/ld: skipping incompatible /lib64/libc.so.6 when searching for /lib64/libc.so.6
/usr/bin/ld: skipping incompatible /lib64/libc.so.6 when searching for /lib64/libc.so.6
/usr/bin/ld: skipping incompatible /lib64/libc.so.6 when searching for /lib64/libc.so.6
/usr/bin/ld: skipping incompatible /lib64/libc.so.6 when searching for /lib64/libc.so.6
/usr/bin/ld: skipping incompatible /lib64/libc.so.6 when searching for /lib64/libc.so.6
/usr/bin/ld: skipping incompatible /lib64/libc.so.6 when searching for /lib64/libc.so.6
/usr/bin/ld: cannot find /lib64/libc.so.6
collect2: ld returned 1 exit status
make[3]: *** [32/libgcc_s_32.so] Error 1
make[3]: Leaving directory `/suse/bo/Work/gcc/build2/gcc'
make[2]: *** [stmp-multilib] Error 2
make[2]: Leaving directory `/suse/bo/Work/gcc/build2/gcc'
make[1]: *** [stage1_build] Error 2
make[1]: Leaving directory `/suse/bo/Work/gcc/build2/gcc'
make: *** [bootstrap] Error 2

gcc was built with "../gcc/configure --enable-languages=c && make bootstrap"

The problem is that it's looking in the wrong place for libc. It should find
libc.so.6 in /lib/, but only tries the 64 bit one in /lib64.

This is the search path:

bo@berlioz ~/Work/gcc/build2> gcc/xgcc -print-search-dirs -m32
install: /usr/local/lib/gcc-lib/x86_64-unknown-linux-gnu/3.3/
programs: =gcc/../lib/gcc-lib/x86_64-unknown-linux-gnu/3.3/:gcc/../lib/gcc-lib/:/usr/local/lib/gcc-lib/x86_64-unknown-linux-gnu/3.3/:/usr/local/lib/gcc-lib/x86_64-unknown-linux-gnu/3.3/:/usr/local/lib/gcc-lib/x86_64-unknown-linux-gnu/:/usr/lib/gcc/x86_64-unknown-linux-gnu/3.3/:/usr/lib/gcc/x86_64-unknown-linux-gnu/:gcc/../lib/gcc-lib/x86_64-unknown-linux-gnu/3.3/../../../../x86_64-unknown-linux-gnu/bin/x86_64-unknown-linux-gnu/3.3/:gcc/../lib/gcc-lib/x86_64-unknown-linux-gnu/3.3/../../../../x86_64-unknown-linux-gnu/bin/:/usr/local/lib/../x86_64-unknown-linux-gnu/bin/x86_64-unknown-linux-gnu/3.3/:/usr/local/lib/../x86_64-unknown-linux-gnu/bin/
libraries: =gcc/../lib/gcc-lib/x86_64-unknown-linux-gnu/3.3/:gcc/../lib/gcc-lib/:/usr/local/lib/gcc-lib/x86_64-unknown-linux-gnu/3.3/:/usr/lib/gcc/x86_64-unknown-linux-gnu/3.3/:gcc/../lib/gcc-lib/x86_64-unknown-linux-gnu/3.3/../../../../x86_64-unknown-linux-gnu/lib/x86_64-unknown-linux-gnu/3.3/:gcc/../lib/gcc-lib/x86_64-unknown-linux-gnu/3.3/../../../../x86_64-unknown-linux-gnu/lib/:/usr/local/lib/../x86_64-unknown-linux-gnu/lib/x86_64-unknown-linux-gnu/3.3/:/usr/local/lib/../x86_64-unknown-linux-gnu/lib/:gcc/../lib/gcc-lib/x86_64-unknown-linux-gnu/3.3/../../../x86_64-unknown-linux-gnu/3.3/:gcc/../lib/gcc-lib/x86_64-unknown-linux-gnu/3.3/../../../:/usr/libx86_64-unknown-linux-gnu/3.3/:/usr/lib:/usr/local/lib/x86_64-unknown-linux-gnu/3.3/:/usr/local/lib/:/lib/x86_64-unknown-linux-gnu/3.3/:/lib/:/usr/lib/x86_64-unknown-linux-gnu/3.3/:/usr/lib/

This is the part of -dumpspecs that could be interesting:

*link_gcc_c_sequence:
%G %L %G

*endfile:
%{!shared:crtend.o%s} %{shared:crtendS.o%s} crtn.o%s

*link:
%{!static:--eh-frame-hdr} %{!m32:-m elf_x86_64} %{m32:-m elf_i386}   %{shared:-shared}   %{!shared:     %{!static:       %{rdynamic:-export-dynamic}       %{m32:%{!dynamic-linker:-dynamic-linker /lib/ld-linux.so.2}}       %{!m32:%{!dynamic-linker:-dynamic-linker /lib64/ld-linux-x86-64.so.2}}}     %{static:-static}}

*lib:
%{shared: -lc}    %{!shared: %{mieee-fp:-lieee} %{pthread:-lpthread}    %{profile:-lc_p} %{!profile: -lc}}

*libgcc:
%{static|static-libgcc:-lgcc -lgcc_eh}%{!static:%{!static-libgcc:%{!shared:%{!shared-libgcc:-lgcc -lgcc_eh}%{shared-libgcc:-lgcc_s%M -lgcc}}%{shared:%{shared-libgcc:-lgcc_s%M}%{!shared-libgcc:-lgcc}}}}

*startfile:
%{!shared:      %{pg:gcrt1.o%s} %{!pg:%{p:gcrt1.o%s}      %{!p:%{profile:gcrt1.o%s} %{!profile:crt1.o%s}}}}    crti.o%s %{static:crtbeginT.o%s}    %{!static:%{!shared:crtbegin.o%s} %{shared:crtbeginS.o%s}}


*startfile_prefix_spec:
  %{m32: /usr/lib /usr/local/lib/ /lib/ /usr/lib/}   %{!m32: /usr/local/lib64/ /lib64/ /usr/lib64/}

*link_command:
%{!fsyntax-only:%{!c:%{!M:%{!MM:%{!E:%{!S:    %(linker) %l %X %{o*} %{A} %{d} %{e*} %{m} %{N} %{n} %{r} %{s} %{t}    %{u*} %{x} %{z} %{Z} %{!A:%{!nostdlib:%{!nostartfiles:%S}}}    %{static:} %{L*} %(link_libgcc) %o %{!nostdlib:%{!nodefaultlibs:%(link_gcc_c_sequence)}}    %{!A:%{!nostdlib:%{!nostartfiles:%E}}} %{T*} }}}}}}

I can't see what the problem is here. Any ideas?

Bo.

-- 

     Bo Thorsen                 |   Praestevejen 4
     Free software developer    |   5290 Marslev
     SuSE Labs                  |   Denmark


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]