Hi,

I am working through CLFS, although I have not gotten very far.  I have
gotten stuck just building the cross compiler (the second build after
cross-compiling eglibc).

I am cross-compiling from an x86 host running Etch (Debian 4.0) to a
MIPS-64 target.  I'm following the SVN-20090814 book, with no deviations
intended.  I'm stuck on Section 5.15, Cross GCC-4.4.1 - Final.  I first
had this problem, then refreshed my book version and restarted, but hit
the same problem again.

It seems a final link step is failing.  A big long link command passing
all the .o, followed by errors messages for all the .o that they are
incompatible API.  I checked a few and file tells me they are 64-bit
MSB, MIPS-III ELF files, which is what I expect.

I note in the link command is flag "-mabi=32" which doesn't seem right.
   Maybe the final build is misconfigured for 32 so it can't work with
the 64 libs created in previous step?  There are references to
directories named 32 also which further suggests same.  But I don't know
how to track down the error.  The configure step in the book clearly
says "--with-abi=64"

Some environment vars:

$ echo $CLFS
/mnt/hda4/clfs
$ echo $CLFS_HOST
i486-cross-linux-gnu
$ echo $CLFS_TARGET
mips64-unknown-linux-gnu
$ echo $BUILD32

$ echo $BUILD64
-mabi=64

Attached the build output with some stuff removed. This is not from clean, so it gets very quickly to the link step where it fails every time.

Comments or suggestions?  Questions for me to followup?
Any help will be greatly appreciated!

Thanks,
Mike



c...@it-server:/mnt/hda4/clfs/sources/gcc-build$ make AS_FOR_TARGET="${C 
LFS_TARGET}-as" \
>     LD_FOR_TARGET="${CLFS_TARGET}-ld"
make[1]: Entering directory `/mnt/hda4/clfs/sources/gcc-build'
make[2]: Entering directory `/mnt/hda4/clfs/sources/gcc-build/libiberty'
make[3]: Entering directory 
`/mnt/hda4/clfs/sources/gcc-build/libiberty/testsuite'
make[3]: Nothing to be done for `all'.
make[3]: Leaving directory 
`/mnt/hda4/clfs/sources/gcc-build/libiberty/testsuite'
make[2]: Leaving directory `/mnt/hda4/clfs/sources/gcc-build/libiberty'
make[2]: Entering directory `/mnt/hda4/clfs/sources/gcc-build/fixincludes'
make[2]: Nothing to be done for `all'.
make[2]: Leaving directory `/mnt/hda4/clfs/sources/gcc-build/fixincludes'
make[2]: Entering directory `/mnt/hda4/clfs/sources/gcc-build/intl'
make[2]: Nothing to be done for `all'.
make[2]: Leaving directory `/mnt/hda4/clfs/sources/gcc-build/intl'
make[2]: Entering directory 
`/mnt/hda4/clfs/sources/gcc-build/build-i486-cross-linux-gnu/libiberty'
make[3]: Entering directory 
`/mnt/hda4/clfs/sources/gcc-build/build-i486-cross-linux-gnu/libiberty/testsuite'
make[3]: Nothing to be done for `all'.
make[3]: Leaving directory 
`/mnt/hda4/clfs/sources/gcc-build/build-i486-cross-linux-gnu/libiberty/testsuite'
make[2]: Leaving directory 
`/mnt/hda4/clfs/sources/gcc-build/build-i486-cross-linux-gnu/libiberty'
make[2]: Entering directory 
`/mnt/hda4/clfs/sources/gcc-build/build-i486-cross-linux-gnu/fixincludes'
make[2]: Nothing to be done for `all'.
make[2]: Leaving directory 
`/mnt/hda4/clfs/sources/gcc-build/build-i486-cross-linux-gnu/fixincludes'
make[2]: Entering directory `/mnt/hda4/clfs/sources/gcc-build/libcpp'
make[2]: Nothing to be done for `all'.
make[2]: Leaving directory `/mnt/hda4/clfs/sources/gcc-build/libcpp'
make[2]: Entering directory `/mnt/hda4/clfs/sources/gcc-build/libdecnumber'
make[2]: Nothing to be done for `all'.
make[2]: Leaving directory `/mnt/hda4/clfs/sources/gcc-build/libdecnumber'
make[2]: Entering directory `/mnt/hda4/clfs/sources/gcc-build/gcc'
make[2]: Leaving directory `/mnt/hda4/clfs/sources/gcc-build/gcc'
Checking multilib configuration for libgcc...
make[2]: Entering directory 
`/mnt/hda4/clfs/sources/gcc-build/mips64-unknown-linux-gnu/libgcc'
# If this is the top-level multilib, build all the other
# multilibs.
make[3]: Entering directory 
`/mnt/hda4/clfs/sources/gcc-build/mips64-unknown-linux-gnu/libgcc'
if [ -z "32 64" ]; then \
          true; \
        else \
          rootpre=`${PWDCMD-pwd}`/; export rootpre; \
          srcrootpre=`cd ../../../gcc-4.4.1/libgcc; ${PWDCMD-pwd}`/; export 
srcrootpre; \
          lib=`echo "${rootpre}" | sed -e 's,^.*/\([^/][^/]*\)/$,\1,'`; \
          compiler="/mnt/hda4/clfs/sources/gcc-build/./gcc/xgcc 
-B/mnt/hda4/clfs/sources/gcc-build/./gcc/ 
-B/cross-tools/mips64-unknown-linux-gnu/bin/ 
-B/cross-tools/mips64-unknown-linux-gnu/lib/ -isystem 
/cross-tools/mips64-unknown-linux-gnu/include -isystem 
/cross-tools/mips64-unknown-linux-gnu/sys-include"; \
          for i in `${compiler} --print-multi-lib 2>/dev/null`; do \
            dir=`echo $i | sed -e 's/;.*$//'`; \
            if [ "${dir}" = "." ]; then \
              true; \
            else \
              if [ -d ../${dir}/${lib} ]; then \
                flags=`echo $i | sed -e 's/^[^;]*;//' -e 's/@/ -/g'`; \
                if (cd ../${dir}/${lib}; make 
"AR=/cross-tools/mips64-unknown-linux-gnu/bin/ar" "AR_FLAGS=rc" 
"CC=/mnt/hda4/clfs/sources/gcc-build/./gcc/xgcc 
-B/mnt/hda4/clfs/sources/gcc-build/./gcc/ 
-B/cross-tools/mips64-unknown-linux-gnu/bin/ 
-B/cross-tools/mips64-unknown-linux-gnu/lib/ -isystem 
/cross-tools/mips64-unknown-linux-gnu/include -isystem 
/cross-tools/mips64-unknown-linux-gnu/sys-include" "CFLAGS=-g -O2 
-minterlink-mips16" "DESTDIR=" "EXTRA_OFILES=" "HDEFINES=" 
"INSTALL=/usr/bin/install -c" "INSTALL_DATA=/usr/bin/install -c -m 644" 
"INSTALL_PROGRAM=/usr/bin/install -c" "LDFLAGS=" "LOADLIBES=" 
"RANLIB=/cross-tools/mips64-unknown-linux-gnu/bin/ranlib" "SHELL=/bin/sh" 
"prefix=/cross-tools" "exec_prefix=/cross-tools" "libdir=/cross-tools/lib" 
"libsubdir=/cross-tools/lib/gcc/mips64-unknown-linux-gnu/4.4.1" 
"tooldir=/cross-tools/mips64-unknown-linux-gnu" \
                                CFLAGS="-g -O2 -minterlink-mips16 ${flags}" \
                                CCASFLAGS=" ${flags}" \
                                FCFLAGS=" ${flags}" \
                                FFLAGS=" ${flags}" \
                                ADAFLAGS=" ${flags}" \
                                prefix="/cross-tools" \
                                exec_prefix="/cross-tools" \
                                GCJFLAGS=" ${flags}" \
                                CXXFLAGS="-g -O2   -D_GNU_SOURCE 
-minterlink-mips16   ${flags}" \
                                LIBCFLAGS="-g -O2 -minterlink-mips16   
${flags}" \
                                LIBCXXFLAGS="-g -O2   -D_GNU_SOURCE 
-minterlink-mips16 -fno-implicit-templates   ${flags}" \
                                LDFLAGS=" ${flags}" \
                                MULTIFLAGS="${flags}" \
                                DESTDIR="" \
                                INSTALL="/usr/bin/install -c" \
                                INSTALL_DATA="/usr/bin/install -c -m 644" \
                                INSTALL_PROGRAM="/usr/bin/install -c" \
                                INSTALL_SCRIPT="/usr/bin/install -c" \
                                all); then \
                  true; \
                else \
                  exit 1; \
                fi; \
              else true; \
              fi; \
            fi; \
          done; \
        fi
make[4]: Entering directory 
`/mnt/hda4/clfs/sources/gcc-build/mips64-unknown-linux-gnu/32/libgcc'
# If this is the top-level multilib, build all the other
# multilibs.
# Early copyback; see "all" above for the rationale.  The
# early copy is necessary so that the gcc -B options find
# the right startup files when linking shared libgcc.
/bin/sh ../../../../gcc-4.4.1/libgcc/../mkinstalldirs ../../.././gcc/32
parts="crtbegin.o crtbeginS.o crtbeginT.o crtend.o crtendS.o";                  
                \
        for file in $parts; do                                  \
          rm -f ../../.././gcc/32/$file;                \
          /usr/bin/install -c -m 644 $file ../../.././gcc/32/;  \
        done
# @multilib_flags@ is still needed because this may use
# /mnt/hda4/clfs/sources/gcc-build/./gcc/xgcc 
-B/mnt/hda4/clfs/sources/gcc-build/./gcc/ 
-B/cross-tools/mips64-unknown-linux-gnu/bin/ 
-B/cross-tools/mips64-unknown-linux-gnu/lib/ -isystem 
/cross-tools/mips64-unknown-linux-gnu/include -isystem 
/cross-tools/mips64-unknown-linux-gnu/sys-include and -O2  -g -O2 
-minterlink-mips16 -DIN_GCC -DCROSS_DIRECTORY_STRUCTURE  -W -Wall 
-Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wcast-qual 
-Wold-style-definition  -isystem ./include  -fPIC -g -DHAVE_GTHR_DEFAULT 
-DIN_LIBGCC2 -D__GCC_FLOAT_NOT_NEEDED  directly.
# @multilib_dir@ is not really necessary, but sometimes it has
# more uses than just a directory name.
/bin/sh ../../../../gcc-4.4.1/libgcc/../mkinstalldirs 32
/mnt/hda4/clfs/sources/gcc-build/./gcc/xgcc 
-B/mnt/hda4/clfs/sources/gcc-build/./gcc/ 
-B/cross-tools/mips64-unknown-linux-gnu/bin/ 
-B/cross-tools/mips64-unknown-linux-gnu/lib/ -isystem 
/cross-tools/mips64-unknown-linux-gnu/include -isystem 
/cross-tools/mips64-unknown-linux-gnu/sys-include -O2  -g -O2 
-minterlink-mips16 -DIN_GCC -DCROSS_DIRECTORY_STRUCTURE  -W -Wall 
-Wwrite-strings -Wstrict-prototypes -Wmissing-prototypes -Wcast-qual 
-Wold-style-definition  -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.map -o 
32/libgcc_s.so.1.tmp -g -O2 -minterlink-mips16 -mabi=32 -B./ _m16addsf3_s.o 
_m16subsf3_s.o _m16mulsf3_s.o _m16divsf3_s.o _m16eqsf2_s.o _m16nesf2_s.o 
_m16gtsf2_s.o _m16gesf2_s.o _m16lesf2_s.o _m16ltsf2_s.o _m16unordsf2_s.o 
_m16fltsisf_s.o _m16fix_truncsfsi_s.o _m16fltunsisf_s.o _m16adddf3_s.o 
_m16subdf3_s.o _m16muldf3_s.o _m16divdf3_s.o _m16extsfdf2_s.o _m16trdfsf2_s.o 
_m16eqdf2_s.o _m16nedf2_s.o _m16gtdf2_s.o _m16gedf2_s.o 
... and alot more .os deleted...
unwind-sjlj_s.o gthr-gnat_s.o unwind-c_s.o emutls_s.o -lc && rm -f 
32/libgcc_s.so && if [ -f 32/libgcc_s.so.1 ]; then mv -f 32/libgcc_s.so.1 
32/libgcc_s.so.1.backup; else true; fi && mv 32/libgcc_s.so.1.tmp 
32/libgcc_s.so.1 && ln -s libgcc_s.so.1 32/libgcc_s.so
/cross-tools/bin/mips64-unknown-linux-gnu-ld: skipping incompatible 
/mnt/hda4/clfs/tools/lib/libc.so when searching for -lc
/cross-tools/bin/mips64-unknown-linux-gnu-ld: /mnt/hda4/clfs/tools/lib/crti.o: 
ABI is incompatible with that of the selected emulation
/cross-tools/bin/mips64-unknown-linux-gnu-ld: failed to merge target specific 
data of file /mnt/hda4/clfs/tools/lib/crti.o
/cross-tools/bin/mips64-unknown-linux-gnu-ld: 
/mnt/hda4/clfs/tools/lib/libc.a(abort.o): ABI is incompatible with that of the 
selected emulation
/cross-tools/bin/mips64-unknown-linux-gnu-ld: failed to merge target specific 
data of file /mnt/hda4/clfs/tools/lib/libc.a(abort.o)

... alot of error messages deleted ...

/cross-tools/bin/mips64-unknown-linux-gnu-ld: 
/mnt/hda4/clfs/tools/lib/libc.a(mpn2ldbl.o): ABI is incompatible with that of 
the selected emulation
/cross-tools/bin/mips64-unknown-linux-gnu-ld: failed to merge target specific 
data of file /mnt/hda4/clfs/tools/lib/libc.a(mpn2ldbl.o)
/cross-tools/bin/mips64-unknown-linux-gnu-ld: /mnt/hda4/clfs/tools/lib/crtn.o: 
ABI is incompatible with that of the selected emulation
/cross-tools/bin/mips64-unknown-linux-gnu-ld: failed to merge target specific 
data of file /mnt/hda4/clfs/tools/lib/crtn.o
/mnt/hda4/clfs/tools/lib/libc.a(abort.o): In function `abort':
/mnt/hda4/clfs/sources/eglibc-2.10.1/stdlib/abort.c:55: relocation truncated to 
fit: R_MIPS_GOT_PAGE against `.bss'+8
/mnt/hda4/clfs/sources/eglibc-2.10.1/stdlib/abort.c:55: relocation truncated to 
fit: R_MIPS_GOT_OFST against `.bss'+8
/mnt/hda4/clfs/sources/eglibc-2.10.1/stdlib/abort.c:55: relocation truncated to 
fit: R_MIPS_GOT_OFST against `.bss'+8
/mnt/hda4/clfs/sources/eglibc-2.10.1/stdlib/abort.c:55: relocation truncated to 
fit: R_MIPS_GOT_OFST against `.bss'+8
/mnt/hda4/clfs/sources/eglibc-2.10.1/stdlib/abort.c:55: relocation truncated to 
fit: R_MIPS_CALL16 against `__lll_lock_wait_private'
/mnt/hda4/clfs/sources/eglibc-2.10.1/stdlib/abort.c:60: relocation truncated to 
fit: R_MIPS_GOT_PAGE against `.bss'
/mnt/hda4/clfs/sources/eglibc-2.10.1/stdlib/abort.c:60: relocation truncated to 
fit: R_MIPS_GOT_OFST against `.bss'
/mnt/hda4/clfs/sources/eglibc-2.10.1/stdlib/abort.c:70: relocation truncated to 
fit: R_MIPS_CALL16 against `_IO_flush_all_lockp'
/mnt/hda4/clfs/sources/eglibc-2.10.1/stdlib/abort.c:95: relocation truncated to 
fit: R_MIPS_CALL16 against `memset'
/mnt/hda4/clfs/sources/eglibc-2.10.1/stdlib/abort.c:107: relocation truncated 
to fit: R_MIPS_CALL16 against `__fcloseall'
/mnt/hda4/clfs/sources/eglibc-2.10.1/stdlib/abort.c:114: additional relocation 
overflows omitted from the output
collect2: ld returned 1 exit status
make[4]: *** [libgcc_s.so] Error 1
make[4]: Leaving directory 
`/mnt/hda4/clfs/sources/gcc-build/mips64-unknown-linux-gnu/32/libgcc'
make[3]: *** [multi-do] Error 1
make[3]: Leaving directory 
`/mnt/hda4/clfs/sources/gcc-build/mips64-unknown-linux-gnu/libgcc'
make[2]: *** [all-multi] Error 2
make[2]: Leaving directory 
`/mnt/hda4/clfs/sources/gcc-build/mips64-unknown-linux-gnu/libgcc'
make[1]: *** [all-target-libgcc] Error 2
make[1]: Leaving directory `/mnt/hda4/clfs/sources/gcc-build'
make: *** [all] Error 2
c...@it-server:/mnt/hda4/clfs/sources/gcc-build$ 

_______________________________________________
Clfs-support mailing list
[email protected]
http://lists.cross-lfs.org/listinfo.cgi/clfs-support-cross-lfs.org

Reply via email to