public inbox for crossgcc@sourceware.org
 help / color / mirror / Atom feed
From: Joachim Nilsson <jocke@vmlinux.org>
To: AdelMamin <tadam@pisem.net>
Cc: crossgcc@sourceware.org
Subject: Re: glibc for ARM with VFP hard float
Date: Thu, 07 Jan 2010 17:44:00 -0000	[thread overview]
Message-ID: <4B461D62.9020801@vmlinux.org> (raw)
In-Reply-To: <27060248.post@talk.nabble.com>

Hi Adel!

On the same helpful note, there is also some interesting discussion on 
this topic in the following GCC PR:

     http://gcc.gnu.org/bugzilla/show_bug.cgi?id=41443

Regards
  /Joachim

On 01/07/2010 02:53 PM, AdelMamin wrote:
> It looks like I can answer the question myself. Maybe that will be helpful
> for someone.
> The following is valid at least for crosstool-NG v.1.5.2:
> To make glibc using native floating point instructions one needs to add one
> extra flag to the configuration:
> C-library ->  extra target CFLAGS
>
> -mfloat-abi=softfp
>
> That is it.
>
> Adel
>
>
> AdelMamin wrote:
>    
>> Hi All,
>>
>> First I would like to say big thanks to Yann for the great tool he made!
>> It really saves a lot of time!
>>
>> Now my questions:
>> I managed to create a toolchain for ARM with hard floating point support.
>> But when I disassembled the libm.so.6 I saw that it uses<__aeabi_ddiv>
>> <__aeabi_dmul>  etc calls instead of native floating point instructions.
>> The code for these<__aeabi_...>  is in libc.so.6 and it does not use hard
>> floating point instructions, but it rather looks like a software
>> emulation.
>>
>> Am I missing something from the configuration, which is listed below?
>>
>> Isn't CT_ARCH_FLOAT_HW=y and CT_ARCH_FPU="vfp" enough to create libm.so
>> and libc.so, which would use native floating point insructions?
>>
>> Thanks in advance.
>>
>> Adel
>>
>> My .config is as follows:
>>
>> #
>> # Automatically generated make config: don't edit
>> # crosstool-NG version: 1.5.2
>> # Tue Jan  5 15:31:46 2010
>> #
>>
>> #
>> # 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}/src"
>> 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=100
>> # 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 is not set
>> # CT_LOG_EXTRA is not set
>> # CT_LOG_DEBUG is not set
>> CT_LOG_ALL=y
>> CT_LOG_LEVEL_MAX="ALL"
>> # CT_LOG_SEE_TOOLS_WARN is not set
>> 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=""
>> CT_ARCH_CPU="arm1176jzf-s"
>> CT_ARCH_TUNE=""
>> CT_ARCH_FPU="vfp"
>> # CT_ARCH_BE is not set
>> CT_ARCH_LE=y
>> CT_ARCH_FLOAT_HW=y
>> # CT_ARCH_FLOAT_SW is not set
>> 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.28.10"
>> # 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_31_1 is not set
>> # CT_KERNEL_V_2_6_31 is not set
>> # CT_KERNEL_V_3_6_30_8 is not set
>> # CT_KERNEL_V_3_6_30_7 is not set
>> # CT_KERNEL_V_2_6_30_6 is not set
>> # CT_KERNEL_V_2_6_30_5 is not set
>> # CT_KERNEL_V_2_6_30_4 is not set
>> # CT_KERNEL_V_2_6_30_3 is not set
>> # CT_KERNEL_V_2_6_30_2 is not set
>> # CT_KERNEL_V_2_6_30_1 is not set
>> # CT_KERNEL_V_2_6_30 is not set
>> # CT_KERNEL_V_2_6_29_6 is not set
>> CT_KERNEL_V_2_6_28_10=y
>> # CT_KERNEL_V_2_6_27_35 is not set
>> # CT_KERNEL_V_2_6_26_8 is not set
>> # CT_KERNEL_V_2_6_25_20 is not set
>> # CT_KERNEL_V_2_6_24_7 is not set
>> # CT_KERNEL_V_2_6_23_17 is not set
>> # CT_KERNEL_V_2_6_22_19 is not set
>> # CT_KERNEL_V_2_6_21_7 is not set
>> # CT_KERNEL_V_2_6_20_21 is not set
>> # CT_KERNEL_V_2_6_19_7 is not set
>> # CT_KERNEL_V_2_6_18_8 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_19_51_0_2 is not set
>> # CT_BINUTILS_V_2_19_51_0_1 is not set
>> # CT_BINUTILS_V_2_19_50_0_1 is not set
>> CT_BINUTILS_V_2_19_1=y
>> # CT_BINUTILS_V_2_19 is not set
>> # CT_BINUTILS_V_2_18_93 is not set
>> # CT_BINUTILS_V_2_18_92 is not set
>> # CT_BINUTILS_V_2_18_91 is not set
>> # CT_BINUTILS_V_2_18_90 is not set
>> # CT_BINUTILS_V_2_18_50_0_9 is not set
>> # CT_BINUTILS_V_2_18_50_0_8 is not set
>> # CT_BINUTILS_V_2_18_50_0_7 is not set
>> # CT_BINUTILS_V_2_18_50_0_6 is not set
>> # CT_BINUTILS_V_2_18_50_0_4 is not set
>> # CT_BINUTILS_V_2_18 is not set
>> # CT_BINUTILS_V_2_17 is not set
>> # CT_BINUTILS_V_2_16_1 is not set
>> # CT_BINUTILS_V_2_15 is not set
>> # CT_BINUTILS_V_2_14 is not set
>> CT_BINUTILS_EXTRA_CONFIG=""
>> CT_BINUTILS_FOR_TARGET=y
>> CT_BINUTILS_FOR_TARGET_IBERTY=y
>> CT_BINUTILS_FOR_TARGET_BFD=y
>>
>> #
>> # C compiler
>> #
>> CT_CC="gcc"
>> CT_CC_VERSION="4.3.2"
>> CT_CC_gcc=y
>> # CT_CC_V_4_4_1 is not set
>> # CT_CC_V_4_4_0 is not set
>> # CT_CC_V_4_3_4 is not set
>> # CT_CC_V_4_3_3 is not set
>> CT_CC_V_4_3_2=y
>> # CT_CC_V_4_3_1 is not set
>> # CT_CC_V_4_3_0 is not set
>> # CT_CC_V_4_2_4 is not set
>> # CT_CC_V_4_2_3 is not set
>> # CT_CC_V_4_2_2 is not set
>> # CT_CC_V_4_2_1 is not set
>> # CT_CC_V_4_2_0 is not set
>> # CT_CC_V_4_1_2 is not set
>> # CT_CC_V_4_1_1 is not set
>> # CT_CC_V_4_1_0 is not set
>> # CT_CC_V_4_0_4 is not set
>> # CT_CC_V_4_0_3 is not set
>> # CT_CC_V_4_0_2 is not set
>> # CT_CC_V_4_0_1 is not set
>> # CT_CC_V_4_0_0 is not set
>> # CT_CC_V_3_4_6 is not set
>> # CT_CC_V_3_3_6 is not set
>> # CT_CC_V_3_2_3 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.6.1"
>> # 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_9 is not set
>> # CT_LIBC_V_2_8 is not set
>> # CT_LIBC_V_2_7 is not set
>> CT_LIBC_V_2_6_1=y
>> # CT_LIBC_V_2_6 is not set
>> # CT_LIBC_V_2_5_1 is not set
>> # CT_LIBC_V_2_5 is not set
>> # CT_LIBC_V_2_3_6 is not set
>> # CT_LIBC_GLIBC_2_8_or_later is not set
>> CT_LIBC_GLIBC_TARBALL=y
>> # CT_LIBC_GLIBC_CVS is not set
>>
>> #
>> # 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.28.10"
>>
>> #
>> # Common C library options
>> #
>> CT_LIBC_SUPPORT_NPTL=y
>> CT_LIBC_SUPPORT_LINUXTHREADS=y
>> CT_THREADS="nptl"
>> CT_THREADS_NPTL=y
>> # CT_THREADS_LINUXTHREADS is not set
>> # CT_THREADS_NONE is not set
>>
>> #
>> # Debug facilities
>> #
>> # CT_DEBUG_dmalloc is not set
>> # CT_DEBUG_duma is not set
>> CT_DEBUG_gdb=y
>> CT_GDB_CROSS=y
>> # CT_GDB_CROSS_STATIC is not set
>> # CT_GDB_NATIVE is not set
>> CT_GDB_GDBSERVER=y
>> CT_GDB_GDBSERVER_STATIC=y
>> CT_GDB_V_6_8=y
>> # CT_GDB_V_6_7_1 is not set
>> # CT_GDB_V_6_7 is not set
>> # CT_GDB_V_6_6 is not set
>> # CT_GDB_V_6_5 is not set
>> # CT_GDB_V_6_4 is not set
>> # CT_GDB_V_snapshot is not set
>> CT_GDB_VERSION="6.8"
>> # 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_3_1=y
>> # CT_GMP_V_4_3_0 is not set
>> # CT_GMP_V_4_2_4 is not set
>> # CT_GMP_V_4_2_2 is not set
>> CT_GMP_VERSION="4.3.1"
>> CT_MPFR_V_2_4_1=y
>> # CT_MPFR_V_2_4_0 is not set
>> # CT_MPFR_V_2_3_2 is not set
>> # CT_MPFR_V_2_3_1 is not set
>> CT_MPFR_VERSION="2.4.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

      reply	other threads:[~2010-01-07 17:44 UTC|newest]

Thread overview: 3+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2010-01-07  8:34 AdelMamin
2010-01-07 13:53 ` AdelMamin
2010-01-07 17:44   ` Joachim Nilsson [this message]

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=4B461D62.9020801@vmlinux.org \
    --to=jocke@vmlinux.org \
    --cc=crossgcc@sourceware.org \
    --cc=tadam@pisem.net \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).