This is the mail archive of the crossgcc@sourceware.org mailing list for the crossgcc project.
See the CrossGCC FAQ for lots more information.
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |
Other format: | [Raw text] |
As requested in the crosstool howto, I'm posting my experience of using crosstool for an unsupported CPU type. I've managed to get the current (0.43) crosstool to compile a powerPC 8540 (e500) target toolchain using Glibc 2.3.6 and GCC 4.1.1. To do this I used this patch: Index: powerpc-8540-gcc-4.1.1-glibc-2.3.6.dat =================================================================== --- powerpc-8540-gcc-4.1.1-glibc-2.3.6.dat +++ powerpc-8540-gcc-4.1.1-glibc-2.3.6.dat @@ -0,0 +1,9 @@ +TARGET=powerpc-8540-linux-gnu +TARGET_CFLAGS="-O -mcpu=8540" +GCC_EXTRA_CONFIG="--with-cpu=8540 --with-float=soft --enable-cxx-flags=-mcpu=8540 --enable-cxx-flags=-msoft-float --disable-multilib" +GLIBC_EXTRA_CONFIG="$GLIBC_EXTRA_CONFIG --without-fp" +BINUTILS_DIR=binutils-2.16.1 +GCC_DIR=gcc-4.1.1 +GLIBC_DIR=glibc-2.3.6 +LINUX_SANITIZED_HEADER_DIR=linux-libc-headers-2.6.12.0 +GLIBCTHREADS_FILENAME=glibc-linuxthreads-2.3.6 Index: patches/glibc-2.3.6/glibc-2.3.6-allow-gcc-4.1-powerpc32-initfini.s.patch =================================================================== --- patches/glibc-2.3.6/glibc-2.3.6-allow-gcc-4.1-powerpc32-initfini.s.patch +++ patches/glibc-2.3.6/glibc-2.3.6-allow-gcc-4.1-powerpc32-initfini.s.patch @@ -0,0 +1,28 @@ +fixes + +{BUILD_DIR}/build-glibc/csu/crtn.o: In function "dummy": +{BUILD_DIR}/build-glibc/csu/crtn.S:14: multiple definition of "dummy" +{BUILD_DIR}/build-glibc/csu/crti.o:{BUILD_DIR}/build-glibc/csu/crti.S:33: first defined here +{BUILD_DIR}/build-glibc/csu/crtn.o: In function "_init": +{BUILD_DIR}/build-glibc/csu/crtn.S:30: multiple definition of "_init" +{BUILD_DIR}/build-glibc/csu/crti.o:{BUILD_DIR}/build-glibc/csu/crti.S:65: first defined here +{BUILD_DIR}/build-glibc/csu/crtn.o: In function "_fini": +{BUILD_DIR}/build-glibc/csu/crtn.S:25: multiple definition of "_fini" +{BUILD_DIR}/build-glibc/csu/crti.o:{BUILD_DIR}/build-glibc/csu/crti.S:38: first defined here +{BUILD_DIR}/build-glibc/csu/crti.o: In function "_fini": +{BUILD_DIR}/build-glibc/csu/crti.S:(.init+0x20): undefined reference to "i_am_not_a_leaf" +{BUILD_DIR}/build-glibc/csu/crtn.o: In function "_fini": +{BUILD_DIR}/build-glibc/csu/crtn.S:(.init+0x40): undefined reference to "i_am_not_a_leaf" +{BUILD_DIR}/build-glibc/csu/crtn.S:(.init+0x44): undefined reference to "i_am_not_a_leaf" + +--- glibc-2.3.6/sysdeps/powerpc/powerpc32/Makefile.org 2006-08-21 19:03:01.000000000 -0700 ++++ glibc-2.3.6/sysdeps/powerpc/powerpc32/Makefile 2006-08-21 19:03:19.000000000 -0700 +@@ -21,7 +21,7 @@ + ifneq ($(elf),no) + # The initfini generation code doesn't work in the presence of -fPIC, so + # we use -fpic instead which is much better. +-CFLAGS-initfini.s = -g0 -fpic -O1 ++CFLAGS-initfini.s = -g0 -fpic -O1 $(fno-unit-at-a-time) + + # There is no benefit to using sdata for these objects, and the user + # of the library should be able to control what goes into sdata. Index: patches/glibc-linuxthreads-2.3.6/glibc-2.3.6-allow-gcc-4.1-powerpc32-initfini.s.patch =================================================================== --- patches/glibc-linuxthreads-2.3.6/glibc-2.3.6-allow-gcc-4.1-powerpc32-initfini.s.patch +++ patches/glibc-linuxthreads-2.3.6/glibc-2.3.6-allow-gcc-4.1-powerpc32-initfini.s.patch @@ -0,0 +1,28 @@ +fixes + +{BUILD_DIR}/build-glibc/linuxthreads/crtn.o: In function "dummy": +{BUILD_DIR}/build-glibc/linuxthreads/crtn.S:14: multiple definition of "dummy" +{BUILD_DIR}/build-glibc/linuxthreads/crti.o:{BUILD_DIR}/build-glibc/linuxthreads/crti.S:33: first defined here +{BUILD_DIR}/build-glibc/linuxthreads/crtn.o: In function "_fini": +{BUILD_DIR}/build-glibc/linuxthreads/crtn.S:30: multiple definition of "_fini" +{BUILD_DIR}/build-glibc/linuxthreads/crti.o:{BUILD_DIR}/build-glibc/linuxthreads/crti.S:65: first defined here +{BUILD_DIR}/build-glibc/linuxthreads/crtn.o: In function "_init": +{BUILD_DIR}/build-glibc/linuxthreads/crtn.S:23: multiple definition of "_init" +{BUILD_DIR}/build-glibc/linuxthreads/crti.o:{BUILD_DIR}/build-glibc/linuxthreads/crti.S:37: first defined here +{BUILD_DIR}/build-glibc/linuxthreads/crti.o: In function "_fini": +{BUILD_DIR}/build-glibc/linuxthreads/crti.S:(.text+0x70): undefined reference to "i_am_not_a_leaf" +{BUILD_DIR}/build-glibc/linuxthreads/crtn.o: In function "_fini": +{BUILD_DIR}/build-glibc/linuxthreads/crtn.S:(.text+0x38): undefined reference to "i_am_not_a_leaf" +collect2: ld returned 1 exit status + +--- glibc-2.3.6/linuxthreads/sysdeps/powerpc/Makefile.org 2003-02-17 20:33:17.000000000 +0000 ++++ glibc-2.3.6/linuxthreads/sysdeps/powerpc/Makefile 2007-04-04 16:26:01.969067632 +0100 +@@ -1,6 +1,6 @@ + ifeq ($(subdir):$(elf),linuxthreads:yes) + # See CFLAGS-initfini.s above; this is the same code. +-CFLAGS-pt-initfini.s = -g0 -fpic -O1 ++CFLAGS-pt-initfini.s = -g0 -fpic -O1 $(fno-unit-at-a-time) + endif + ifeq ($(subdir),csu) + gen-as-const-headers += tcb-offsets.sym + I didn't set GCC_CORE_DIR so that it uses gcc 4.1.1 as the core/bootstrap gcc rather than 3.3.6. This was because the 3.3.6 configuration is broken for the 8540 as follows: Unknown cpu used with --with-cpu=8540 Configure in {BUILD_DIR}/build-gcc-core/gcc failed, exiting. Although 3.3.6 appears to have support for the 8540, it seems that it's not possible to configure for it! I couldn't work out why it was necessary to use 3.3.6 as the core gcc (gcc-4.1.1-glibc-2.3.6.dat), but 4.1.1 seemed to do the trick so far... Maybe it would be better to fix 3.3.6 config for the 8540 and use that as the core gcc, rather than use 4.1.1? I've used the toolchain to build a linux kernel (2.6.18) and busybox for an MPC8560ADS target, where I've also been able to run most of the crosstest regression tests, although with plenty of hassle from the root-jail! glibctest.sh required some serious hacking to get it to run, and I relented and ran the gcc tests as plain root on the target. I couldn't get the libstdc++ test to work at all. Otherwise here's my (snipped) results: =================================================================== powerpc-8540-linux-gnu-gcc-4.1.1-glibc-2.3.6.gcc.sum =================================================================== LAST_UPDATED: Obtained from SVN: tags/gcc_4_1_1_release revision 114100 Target is powerpc-8540-linux-gnu Host is i686-host_pc-linux-gnu === gcc tests === Running target powerpc-8540-linux-gnu FAIL: gcc.dg/20020103-1.c scan-assembler-not LC[0-9] FAIL: gcc.dg/cleanup-10.c execution test FAIL: gcc.dg/cleanup-11.c execution test FAIL: gcc.dg/cleanup-5.c execution test FAIL: gcc.dg/cleanup-8.c execution test FAIL: gcc.dg/cleanup-9.c execution test FAIL: gcc.dg/tree-ssa/stdarg-2.c scan-tree-dump f3: va_list escapes 0, needs to save 0 GPR units and [1-9][0-9]* FPR units FAIL: gcc.dg/tree-ssa/stdarg-2.c scan-tree-dump f12: va_list escapes 0, needs to save 0 GPR units and [1-9][0-9]* FPR units FAIL: gcc.dg/tree-ssa/stdarg-2.c scan-tree-dump f13: va_list escapes 0, needs to save 0 GPR units and [1-9][0-9]* FPR units FAIL: gcc.dg/tree-ssa/stdarg-2.c scan-tree-dump f14: va_list escapes 0, needs to save [148] GPR units and [1-9][0-9]* FPR units FAIL: gcc.dg/tree-ssa/stdarg-2.c scan-tree-dump f15: va_list escapes 0, needs to save [148] GPR units and [1-9][0-9]* FPR units FAIL: gcc.dg/tree-ssa/stdarg-4.c scan-tree-dump f2: va_list escapes 0, needs to save 0 GPR units and all FPR units FAIL: gcc.dg/tree-ssa/stdarg-4.c scan-tree-dump f4: va_list escapes 0, needs to save 0 GPR units and [1-9][0-9]* FPR units FAIL: gcc.target/powerpc/20040622-1.c (test for excess errors) FAIL: gcc.target/powerpc/980827-1.c (test for excess errors) WARNING: gcc.target/powerpc/980827-1.c compilation failed to produce executable FAIL: gcc.target/powerpc/compress-float-ppc-pic.c scan-assembler lfs FAIL: gcc.target/powerpc/compress-float-ppc.c scan-assembler lfs FAIL: gcc.target/powerpc/ppc-ldstruct.c (test for excess errors) FAIL: gcc.target/powerpc/pr18096-1.c stack frame too large (test for warnings, line 11) FAIL: gcc.target/powerpc/pr18096-1.c (test for excess errors) FAIL: gcc.target/powerpc/pr25960.c (test for excess errors) WARNING: gcc.target/powerpc/pr25960.c compilation failed to produce executable === gcc Summary === # of expected passes 40013 # of unexpected failures 21 # of expected failures 99 # of untested testcases 28 # of unsupported tests 343 /home/adennis/projects/tppc_linux/tppc/crosstool-0.43/build/powerpc-8540-linux-gnu/gcc-4.1.1-glibc-2.3.6/build-gcc/gcc/xgcc version 4.1.1 Host is i686-host_pc-linux-gnu === libstdc++ tests === Running target powerpc-8540-linux-gnu === libstdc++ Summary === Host is i686-host_pc-linux-gnu === g++ tests === Running target powerpc-8540-linux-gnu XPASS: g++.dg/tree-ssa/pr14814.C scan-tree-dump-times &this 0 FAIL: g++.old-deja/g++.other/comdat5.C (test for excess errors) === g++ Summary === # of expected passes 12118 # of unexpected failures 1 # of unexpected successes 1 # of expected failures 66 # of unsupported tests 117 /home/adennis/projects/tppc_linux/tppc/crosstool-0.43/build/powerpc-8540-linux-gnu/gcc-4.1.1-glibc-2.3.6/build-gcc/gcc/testsuite/g++/../../g++ version 4.1.1 Host is i686-host_pc-linux-gnu === libstdc++ tests === Running target powerpc-8540-linux-gnu === libstdc++ Summary === Host is powerpc-8540-linux-gnu === libstdc++ tests === Running target powerpc-8540-linux-gnu ERROR: tcl error sourcing /home/adennis/projects/tppc_linux/tppc/crosstool-0.43/build/powerpc-8540-linux-gnu/gcc-4.1.1-glibc-2.3.6/gcc-4.1.1/libstdc++-v3/testsuite/libstdc++-abi/abi.exp. ERROR: could not compile testsuite_character.cc ERROR: tcl error sourcing /home/adennis/projects/tppc_linux/tppc/crosstool-0.43/build/powerpc-8540-linux-gnu/gcc-4.1.1-glibc-2.3.6/gcc-4.1.1/libstdc++-v3/testsuite/libstdc++-dg/normal.exp. ERROR: could not compile testsuite_character.cc === libstdc++ Summary === Compiler version: 4.1.1 Platform: powerpc-8540-linux-gnu configure flags: --target=powerpc-8540-linux-gnu --host=i686-host_pc-linux-gnu --prefix=/home/adennis/projects/tppc_linux/tools --with-cpu=8540 --with-float=soft --enable-cxx-flags=-mcpu=8540 --enable-cxx-flags=-msoft-float --disable-multilib --with-headers=/home/adennis/projects/tppc_linux/tools/powerpc-8540-linux-gnu/include --with-local-prefix=/home/adennis/projects/tppc_linux/tools/powerpc-8540-linux-gnu --disable-nls --enable-threads=posix --enable-symvers=gnu --enable-__cxa_atexit --enable-shared --enable-c99 --enable-long-long --enable-languages=c,c++ =================================================================== powerpc-8540-linux-gnu-gcc-4.1.1-glibc-2.3.6.binutils.sum =================================================================== [---------------------------- binutils/binutils.sum ---------------------------] Test Run By adennis on Tue May 1 14:41:02 2007 Target is powerpc-8540-linux-gnu Host is i686-host_pc-linux-gnu === binutils tests === Schedule of variations: powerpc-8540-linux-gnu Running target powerpc-8540-linux-gnu <...snip...> === binutils Summary === # of expected passes 33 [---------------------------- gas/testsuite/gas.sum ---------------------------] Test Run By adennis on Tue May 1 14:41:10 2007 Target is powerpc-8540-linux-gnu Host is i686-host_pc-linux-gnu === gas tests === Schedule of variations: powerpc-8540-linux-gnu Running target powerpc-8540-linux-gnu <...snip...> === gas Summary === # of expected passes 77 ../as-new 2.16.1 [---------------------------- ld/ld.sum ---------------------------] Test Run By adennis on Tue May 1 14:41:13 2007 Target is powerpc-8540-linux-gnu Host is i686-host_pc-linux-gnu === ld tests === Schedule of variations: powerpc-8540-linux-gnu Running target powerpc-8540-linux-gnu <...snip...> Running /home/adennis/projects/tppc_linux/tppc/crosstool-0.43/build/powerpc-8540-linux-gnu/gcc-4.1.1-glibc-2.3.6/binutils-2.16.1/ld/testsuite/ld-elf/elf.exp ... FAIL: ld-elf/group1 PASS: ld-elf/merge PASS: ld-elf/merge2 PASS: ld-elf/warn1 <...snip...> Running /home/adennis/projects/tppc_linux/tppc/crosstool-0.43/build/powerpc-8540-linux-gnu/gcc-4.1.1-glibc-2.3.6/binutils-2.16.1/ld/testsuite/ld-powerpc/powerpc.exp ... PASS: Reloc section order PASS: APUinfo section processing PASS: TLS32 static exec PASS: TLS32 helper shared library FAIL: TLS32 dynamic exec FAIL: TLS32 shared <...snip...> Running /home/adennis/projects/tppc_linux/tppc/crosstool-0.43/build/powerpc-8540-linux-gnu/gcc-4.1.1-glibc-2.3.6/binutils-2.16.1/ld/testsuite/ld-scripts/provide.exp ... PASS: ld-scripts/provide-1 PASS: ld-scripts/provide-2 XFAIL: ld-scripts/provide-3 <...snip...> Running /home/adennis/projects/tppc_linux/tppc/crosstool-0.43/build/powerpc-8540-linux-gnu/gcc-4.1.1-glibc-2.3.6/binutils-2.16.1/ld/testsuite/ld-selective/selective.exp ... PASS: selective1 PASS: selective2 PASS: selective3 XFAIL: selective4 XFAIL: selective5 XFAIL: selective6 <...snip...> === ld Summary === # of expected passes 88 # of unexpected failures 3 # of expected failures 4 /home/adennis/projects/tppc_linux/tppc/crosstool-0.43/build/powerpc-8540-linux-gnu/gcc-4.1.1-glibc-2.3.6/build-binutils/ld/ld-new 2.16.1 =================================================================== glibc test =================================================================== <...only failures were...> cat /home/root-jail/build-glibc/stdio-common/tst-fseek.out 343: st_ctime not updated 348: st_mtime not updated 439: SEEK_END works 471: SEEK_END works cat /home/root-jail/build-glibc/io/test-utime.out modtime 1177948667 <262631 >262633 =================================================================== I might need to have a look at some of those gcc failures... Any comments? Cheers, Alan Dennis NOTICE & DISCLAIMER This email including attachments (this "Document") is confidential and may contain legally privileged information. If you have received this Document in error please notify the sender immediately and delete this Document from your system without using, copying, disclosing or disseminating it or placing any reliance upon its contents. We cannot accept liability for any breaches of confidence arising through use of this Document. The information contained in this Document is provided solely for information purposes on an "as is" basis without warranty of any kind, either express or implied, including without limitation any implied warranty of satisfactory or merchantable quality, fitness for a particular purpose or freedom from error or infringement. The user relies on the information contained herein, and its accuracy or otherwise, entirely at their own risk. Any opinions expressed in this Document are those of the author and do not necessarily reflect the opinions of Telsis. We will not accept responsibility for any commitments made by our employees outside the scope of our business. -- For unsubscribe information see http://sourceware.org/lists.html#faq
Index Nav: | [Date Index] [Subject Index] [Author Index] [Thread Index] | |
---|---|---|
Message Nav: | [Date Prev] [Date Next] | [Thread Prev] [Thread Next] |