crosstool-ng: cross compiler for -mach=arm4vt (Cirrus Logic EP93xx target)

H Hartley Sweeten hartleys@visionengravers.com
Tue Sep 8 22:48:00 GMT 2009


Hello Yann,

I did not get a CC on your reply but saw it in the mail archive.  Hopefully
this gets threaded correctly...

> On Tuesday 08 September 2009 22:42:24 H Hartley Sweeten wrote:
>> I have been trying to get CodeSourcery's arm-none-linux-gnueabi (Sourcery
>> G++ Lite 2009q1-203) 4.3.3 toolchain to work with Buildroot and an EP93xx
>> based target. ÂUnfortunately Buildroot is not setup to handle the multilib
>> feature of that toolchain (default libraries are for ARMv5T). ÂI have
>> tried a number of ways in Buildroot to get that that toolchain to work but
>> my resulting filesystem always dies due to an unrecognized instruction.
>
> If we can trust the Linux kernel, then the EP93xx is an arm920t, which
> is an armv4, not an armv5t. Which can explain why you have an illegal
> instruction...

The Linux kernel was getting compiled correctly with the CodeSourcery
toolchain so we can probably trust it.  I have been using that toolchain
for a number of months to build my kernel.  I only ran into a problem with
Buildroot when I tried rebuilding my filesystem a couple of weeks ago.

I have manually compiled a static test "init" program for my filesystem and
it ran without issues.  I think the only problem with the CodeSourcery
toolchain is that Buildroot does not understand how to handle the multilib
aspect of it.

I'm hoping that a sysroot toolchain that only supports "my" architecture
will work better with Buildroot.

>> I followed the Download and usage instructions on the website:
> [--SNIP install steps--]
>
> Correct. :-)

Well at least I did that right. ;-)

>> I think I have everything setup and configured correctly but I can't figure
>> out why the build is failing.  From the build.log it appears that linuxthreads
>> is getting checked out but when the build tries to mv it the files do not exist:
>> [ALL  ]    cvs checkout: Updating linuxthreads/linuxthreads_db
>> [DEBUG]    ==> Executing: 'mv linuxthreads glibc-linuxthreads-cvs-2.7'
>> [ALL  ]    mv: cannot stat `linuxthreads': No such file or directory
>> [ERROR]    Build failed in step 'Retrieving needed toolchain components' tarballs'
>
> I don't download everything every time, so it may well be that something
> broke at some point. Care to send your .config, so I can try to reproduce?

I tried executing the command line that fails from the build.log directly.

bigguiness@etch:~/src/tmp$ cvs -z 9 -d :pserver:anoncvs@sources.redhat.com:/cvs/glibc co -P -r glibc-2_6-branch linuxthreads
cvs checkout: CVS password file /home/bigguiness/.cvspass does not exist - creating a new file
cvs checkout: Updating linuxthreads
[--SNIP more cvs checkout lines--]
cvs checkout: Updating linuxthreads/linuxthreads_db
bigguiness@etch:~/src/tmp$ ls
bigguiness@etch:~/src/tmp$

It appears that the checkout is not working correctly.

My .config follows at the end of this message.

>> Do I have something configured incorrectly or am I doing something wrong?
>> Is there a "magic" combination of the Binutils/C compiler/C-library version
>> that must be used?
>
> There's no armv4t sample in crosstool-NG.
> But you could base your configuration on the arm-unknown-linux-uclibc
> sample, and update the configuration to something like:
>   Target options -->
>     (armv4t) Architecture level
>     ()  Generate code for the specific ABI
>     (ep9312) Emit assembly for CPU
>     (ep9312) Tune for CPU
>     (maverick) Use specific FPU
>     Floating point: ---> hardware (FPU)
> 
> NB: do not enable EABI, I think it requires at least armv5t, but I'm
>     not sure. So stay on the safe side, and stick with OABI.

I set those options.  I used arm920t instead of ep9312 but I believe
ep9312 is just an alias.

BTW, EABI does work on the armv4t.  My kernel is compiled with it and
works with no problems.

> I give no guarantee, as I don't have the HW, but you should give it a
> try. Also, java is currently broken, so you should disable it in the
> "C compiler" sub-menu...

I don't need java so that's not a problem.  I already have it disabled in
The options.

Thanks,
Hartley

---

#
# Automatically generated make config: don't edit
# crosstool-NG version: hg_default@1523_6c2a6c04187e
# Tue Sep  8 13:11:53 2009
#

#
# Paths and misc options
#

#
# crosstool-NG behavior
#
# CT_OBSOLETE is not set
# CT_EXPERIMENTAL is not set
# CT_DEBUG_CT is not set

#
# Paths
#
CT_LOCAL_TARBALLS_DIR="/home/bigguiness/dl"
CT_SAVE_TARBALLS=y
CT_WORK_DIR="${CT_TOP_DIR}/targets"
CT_PREFIX_DIR="${HOME}/x-tools/${CT_TARGET}"
CT_INSTALL_DIR="${CT_PREFIX_DIR}"
CT_REMOVE_DOCS=y
CT_INSTALL_DIR_RO=y

#
# Downloading
#
# CT_FORBID_DOWNLOAD is not set
# CT_FORCE_DOWNLOAD is not set
# CT_USE_MIRROR is not set
CT_CONNECT_TIMEOUT=10
# CT_ONLY_DOWNLOAD is not set

#
# Extracting
#
# CT_FORCE_EXTRACT is not set
CT_OVERIDE_CONFIG_GUESS_SUB=y
# CT_ONLY_EXTRACT is not set
CT_PATCH_BUNDLED=y
# CT_PATCH_LOCAL is not set
# CT_PATCH_BUNDLED_LOCAL is not set
# CT_PATCH_LOCAL_BUNDLED is not set
# CT_PATCH_BUNDLED_FALLBACK_LOCAL is not set
# CT_PATCH_LOCAL_FALLBACK_BUNDLED is not set
CT_PATCH_ORDER="bundled"
# CT_PATCH_SINGLE is not set
# CT_PATCH_USE_LOCAL is not set

#
# Build behavior
#
CT_PARALLEL_JOBS=1
CT_LOAD=0
CT_NICE=0
CT_USE_PIPES=y
# CT_CONFIG_SHELL_SH is not set
# CT_CONFIG_SHELL_ASH is not set
CT_CONFIG_SHELL_BASH=y
# CT_CONFIG_SHELL_CUSTOM is not set
CT_CONFIG_SHELL="bash"

#
# Logging
#
# CT_LOG_ERROR is not set
# CT_LOG_WARN is not set
CT_LOG_INFO=y
# CT_LOG_EXTRA is not set
# CT_LOG_DEBUG is not set
# CT_LOG_ALL is not set
CT_LOG_LEVEL_MAX="INFO"
# CT_LOG_SEE_TOOLS_WARN is not set
CT_LOG_PROGRESS_BAR=y
CT_LOG_TO_FILE=y
CT_LOG_FILE_COMPRESS=y

#
# Target options
#
CT_ARCH="arm"
# CT_ARCH_64 is not set
# CT_ARCH_SUPPORTS_BOTH_MMU is not set
CT_ARCH_SUPPORTS_BOTH_ENDIAN=y
CT_ARCH_SUPPORT_ARCH=y
# CT_ARCH_SUPPORT_ABI is not set
CT_ARCH_SUPPORT_CPU=y
CT_ARCH_SUPPORT_TUNE=y
CT_ARCH_SUPPORT_FPU=y
# CT_ARCH_DEFAULT_HAS_MMU is not set
# CT_ARCH_DEFAULT_BE is not set
CT_ARCH_DEFAULT_LE=y
CT_ARCH_ARCH="armv4t"
CT_ARCH_CPU="arm920t"
CT_ARCH_TUNE="arm920t"
CT_ARCH_FPU="maverick"
# CT_ARCH_BE is not set
CT_ARCH_LE=y
# CT_ARCH_FLOAT_HW is not set
CT_ARCH_FLOAT_SW=y
CT_TARGET_CFLAGS=""
CT_TARGET_LDFLAGS=""

#
# General target options
#
# CT_ARCH_alpha is not set
CT_ARCH_arm=y
# CT_ARCH_avr32 is not set
# CT_ARCH_ia64 is not set
# CT_ARCH_mips is not set
# CT_ARCH_powerpc64 is not set
# CT_ARCH_powerpc is not set
# CT_ARCH_sh is not set
# CT_ARCH_x86_64 is not set
# CT_ARCH_x86 is not set
CT_ARCH_ARM_EABI=y
CT_ARCH_USE_MMU=y

#
# Target optimisations
#

#
# Toolchain options
#

#
# General toolchain options
#
CT_USE_SYSROOT=y
CT_SYSROOT_DIR_PREFIX=""

#
# Tuple completion and aliasing
#
CT_TARGET_VENDOR="unknown"
CT_TARGET_ALIAS_SED_EXPR=""
CT_TARGET_ALIAS=""

#
# Toolchain type
#
# CT_NATIVE is not set
CT_CROSS=y
# CT_CROSS_NATIVE is not set
# CT_CANADIAN is not set
CT_TOOLCHAIN_TYPE="cross"

#
# Build system
#
CT_BUILD=""
CT_BUILD_PREFIX=""
CT_BUILD_SUFFIX=""

#
# Operating System
#
# CT_BARE_METAL is not set
CT_KERNEL_SUPPORTS_SHARED_LIBS=y
CT_KERNEL="linux"
CT_KERNEL_VERSION="2.6.27.31"
# CT_KERNEL_bare_metal is not set
CT_KERNEL_linux=y
CT_KERNEL_LINUX_INSTALL=y
CT_KERNEL_LINUX_INSTALL_CHECK=y
# CT_KERNEL_V_2_6_18_8 is not set
# CT_KERNEL_V_2_6_19_7 is not set
# CT_KERNEL_V_2_6_20_21 is not set
# CT_KERNEL_V_2_6_21_7 is not set
# CT_KERNEL_V_2_6_22_19 is not set
# CT_KERNEL_V_2_6_23_17 is not set
# CT_KERNEL_V_2_6_24_7 is not set
# CT_KERNEL_V_2_6_25_20 is not set
# CT_KERNEL_V_2_6_26_8 is not set
CT_KERNEL_V_2_6_27_31=y
# CT_KERNEL_V_2_6_28_10 is not set
# CT_KERNEL_V_2_6_29 is not set
# CT_KERNEL_V_2_6_29_1 is not set
# CT_KERNEL_V_2_6_29_2 is not set
# CT_KERNEL_V_2_6_29_3 is not set
# CT_KERNEL_V_2_6_29_4 is not set
# CT_KERNEL_V_2_6_29_5 is not set
# CT_KERNEL_V_2_6_29_6 is not set
# CT_KERNEL_V_2_6_30 is not set
# CT_KERNEL_V_2_6_30_1 is not set
# CT_KERNEL_V_2_6_30_2 is not set
# CT_KERNEL_V_2_6_30_3 is not set
# CT_KERNEL_V_2_6_30_4 is not set
# CT_KERNEL_V_2_6_30_5 is not set
# CT_KERNEL_V_select is not set
CT_KERNEL_LINUX_VERBOSITY_0=y
# CT_KERNEL_LINUX_VERBOSITY_1 is not set
# CT_KERNEL_LINUX_VERBOSITY_2 is not set
CT_KERNEL_LINUX_VERBOSE_LEVEL=0
# CT_KERNEL_LINUX_USE_CUSTOM_HEADERS is not set

#
# Common kernel options
#
CT_SHARED_LIBS=y

#
# Binary utilities
#
CT_ARCH_BINFMT_ELF=y
# CT_ARCH_BINFMT_FLAT is not set

#
# GNU binutils
#
CT_BINUTILS_VERSION="2.19.1"
# CT_BINUTILS_V_2_14 is not set
# CT_BINUTILS_V_2_15 is not set
# CT_BINUTILS_V_2_16_1 is not set
# CT_BINUTILS_V_2_17 is not set
# CT_BINUTILS_V_2_18 is not set
# CT_BINUTILS_V_2_18_50_0_4 is not set
# CT_BINUTILS_V_2_18_50_0_6 is not set
# CT_BINUTILS_V_2_18_50_0_7 is not set
# CT_BINUTILS_V_2_18_50_0_8 is not set
# CT_BINUTILS_V_2_18_50_0_9 is not set
# CT_BINUTILS_V_2_18_90 is not set
# CT_BINUTILS_V_2_18_91 is not set
# CT_BINUTILS_V_2_18_92 is not set
# CT_BINUTILS_V_2_18_93 is not set
# CT_BINUTILS_V_2_19 is not set
CT_BINUTILS_V_2_19_1=y
# CT_BINUTILS_V_2_19_50_0_1 is not set
# CT_BINUTILS_V_2_19_51_0_1 is not set
# CT_BINUTILS_V_2_19_51_0_2 is not set
CT_BINUTILS_EXTRA_CONFIG=""
# CT_BINUTILS_FOR_TARGET is not set

#
# C compiler
#
CT_CC="gcc"
CT_CC_VERSION="4.3.4"
CT_CC_gcc=y
# CT_CC_V_3_2_3 is not set
# CT_CC_V_3_3_6 is not set
# CT_CC_V_3_4_6 is not set
# CT_CC_V_4_0_0 is not set
# CT_CC_V_4_0_1 is not set
# CT_CC_V_4_0_2 is not set
# CT_CC_V_4_0_3 is not set
# CT_CC_V_4_0_4 is not set
# CT_CC_V_4_1_0 is not set
# CT_CC_V_4_1_1 is not set
# CT_CC_V_4_1_2 is not set
# CT_CC_V_4_2_0 is not set
# CT_CC_V_4_2_1 is not set
# CT_CC_V_4_2_2 is not set
# CT_CC_V_4_2_3 is not set
# CT_CC_V_4_2_4 is not set
# CT_CC_V_4_3_0 is not set
# CT_CC_V_4_3_1 is not set
# CT_CC_V_4_3_2 is not set
# CT_CC_V_4_3_3 is not set
CT_CC_V_4_3_4=y
# CT_CC_V_4_4_0 is not set
# CT_CC_V_4_4_1 is not set
CT_CC_GCC_4_3_or_later=y
# CT_CC_GCC_4_4_or_later is not set
CT_CC_CXA_ATEXIT=y
CT_CC_SJLJ_EXCEPTIONS_CONFIGURE=y
# CT_CC_SJLJ_EXCEPTIONS_USE is not set
# CT_CC_SJLJ_EXCEPTIONS_DONT_USE is not set
CT_CC_ENABLE_CXX_FLAGS=""
CT_CC_CORE_EXTRA_CONFIG=""
CT_CC_EXTRA_CONFIG=""
CT_CC_PKGVERSION="crosstool-NG-${CT_VERSION}"
CT_CC_BUGURL=""
CT_CC_SUPPORT_CXX=y
CT_CC_SUPPORT_FORTRAN=y
CT_CC_SUPPORT_JAVA=y
CT_CC_SUPPORT_ADA=y
CT_CC_SUPPORT_OBJC=y
CT_CC_SUPPORT_OBJCXX=y

#
# Additional supported languages:
#
CT_CC_LANG_CXX=y
# CT_CC_LANG_FORTRAN is not set
# CT_CC_LANG_JAVA is not set
CT_LIBC="glibc"

#
# C-library
#
CT_LIBC_VERSION="2.7"
# CT_LIBC_eglibc is not set
CT_LIBC_glibc=y
# CT_LIBC_newlib is not set
# CT_LIBC_uClibc is not set
# CT_LIBC_V_2_3_6 is not set
# CT_LIBC_V_2_5 is not set
# CT_LIBC_V_2_5_1 is not set
# CT_LIBC_V_2_6 is not set
# CT_LIBC_V_2_6_1 is not set
CT_LIBC_V_2_7=y
# CT_LIBC_V_2_8 is not set
# CT_LIBC_V_2_9 is not set
# CT_LIBC_V_LATEST is not set
# CT_LIBC_V_date is not set
# CT_LIBC_GLIBC_2_8_or_later is not set
# CT_LIBC_GLIBC_TARBALL is not set
CT_LIBC_GLIBC_CVS=y
CT_LIBC_GLIBC_CVS_date=""

#
# glibc/eglibc common options
#
CT_LIBC_GLIBC_EXTRA_CONFIG=""
CT_LIBC_GLIBC_CONFIGPARMS=""
CT_LIBC_GLIBC_EXTRA_CFLAGS=""
CT_LIBC_EXTRA_CC_ARGS=""
CT_LIBC_GLIBC_USE_PORTS=y
CT_LIBC_ADDONS_LIST=""
# CT_LIBC_GLIBC_KERNEL_VERSION_NONE is not set
CT_LIBC_GLIBC_KERNEL_VERSION_AS_HEADERS=y
# CT_LIBC_GLIBC_KERNEL_VERSION_CHOSEN is not set
CT_LIBC_GLIBC_MIN_KERNEL="2.6.27.31"

#
# Common C library options
#
CT_LIBC_SUPPORT_NPTL=y
CT_LIBC_SUPPORT_LINUXTHREADS=y
CT_THREADS="linuxthreads"
# CT_THREADS_NPTL is not set
CT_THREADS_LINUXTHREADS=y
# CT_THREADS_NONE is not set

#
# Debug facilities
#
# CT_DEBUG_dmalloc is not set
# CT_DEBUG_duma is not set
# CT_DEBUG_gdb is not set
# CT_DEBUG_ltrace is not set
# CT_DEBUG_strace is not set

#
# Tools facilities
#
# CT_TOOL_libelf is not set
# CT_TOOL_sstrip is not set

#
# Companion libraries
#
CT_WRAPPER_NEEDED=y
CT_GMP_MPFR=y
CT_GMP_V_4_2_2=y
# CT_GMP_V_4_2_4 is not set
# CT_GMP_V_4_3_0 is not set
# CT_GMP_V_4_3_1 is not set
CT_GMP_VERSION="4.2.2"
CT_MPFR_V_2_3_1=y
# CT_MPFR_V_2_3_2 is not set
# CT_MPFR_V_2_4_0 is not set
# CT_MPFR_V_2_4_1 is not set
CT_MPFR_VERSION="2.3.1"
# CT_PPL_CLOOG_MPC is not set

#
# Companion libraries common options
#
# CT_COMP_LIBS_CHECK is not set
# CT_COMP_LIBS_TARGET is not set
CT_TOOLS_WRAPPER_SCRIPT=y
# CT_TOOLS_WRAPPER_EXEC is not set
CT_TOOLS_WRAPPER="script"

--
For unsubscribe information see http://sourceware.org/lists.html#faq



More information about the crossgcc mailing list