This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc 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]

Re: [PATCH roland/arm] ARM: Clean up EABI-related configury


On Fri, Jul 4, 2014 at 1:45 PM, Richard Earnshaw <rearnsha@arm.com> wrote:
> On 04/07/14 02:49, Roland McGrath wrote:
>> Now that pre-EABI is no longer supported, new toolchains are starting to be
>> built using tuples arm-linux* rather than arm-linux*eabi*.  e.g. Fedora's
>> cross tools use arm-linux-gnu.
>>
>> Also, there was a lopsided situation where sysdeps/arm/ already assume EABI
>> stuff but configure was doing some of the EABI-related magic only for Linux
>> configurations.  Now sysdeps/arm/{pre,}configure require, check for, and
>> cater to, EABI support universally for any ARM configuration.
>>
>> This makes a cross-build on Fedora for --host=arm-linux-gnu succeed where
>> before it did not.
>>
>
> I'm not necessarily objecting, but this seems quite an aggressive
> schedule.  GCC-4.8 was the first compiler not to support the old ABI,
> and GCC-4.7.4 was released only a few weeks ago; that did support the
> old ABI.
>

I can see this causing confusion when people just want to go back in
time and build toolchains based off older compiler versions. Very few
people are going to remember the cross product of supported versions
of components that go into the toolchain. The problem also is in bug
records as some folks say specifically arm-none-linux-gnueabi(hf) in
the GCC bug data base and there are historical arm-none-linux-gnu bugs
that will never be fixed. I think we should close them out in a
co-ordinated way as well as WONTFIX across the various bug databases.
More fun admin work.

It looks to me like a regressive move unless I'm missing something here.

regards
Ramana

> R.
>
>> OK?
>>
>>
>> Thanks,
>> Roland
>>
>>
>> 2014-07-03  Roland McGrath  <roland@hack.frob.com>
>>
>>       * sysdeps/arm/preconfigure.ac: Apply EABI sanity check to arm*, not
>>       just Linux configurations.  Test empirically that the compiler sets
>>       __ARM_EABI__, rather than using the tuple to decide.
>>       * sysdeps/unix/sysv/linux/arm/configure: File removed.
>>       * sysdeps/unix/sysv/linux/arm/configure.ac: File removed,
>>       contents appended ...
>>       * sysdeps/arm/configure.ac: ... here.
>>       * sysdeps/arm/configure: Regenerated.
>>
>> --- a/sysdeps/arm/configure
>> +++ b/sysdeps/arm/configure
>> @@ -210,3 +210,11 @@ else
>>    config_vars="$config_vars
>>  have-arm-tls-desc = no"
>>  fi
>> +
>> +libc_cv_gcc_unwind_find_fde=no
>> +
>> +# Remove -fno-unwind-tables that was added in sysdeps/arm/preconfigure.ac.
>> +CFLAGS=${CFLAGS% -fno-unwind-tables}
>> +
>> +libc_cv_gcc_exceptions=yes
>> +exceptions=-fexceptions
>> --- a/sysdeps/arm/configure.ac
>> +++ b/sysdeps/arm/configure.ac
>> @@ -39,3 +39,14 @@ if test $libc_cv_arm_tls_desc = yes; then
>>  else
>>    LIBC_CONFIG_VAR([have-arm-tls-desc], [no])
>>  fi
>> +
>> +libc_cv_gcc_unwind_find_fde=no
>> +
>> +# Remove -fno-unwind-tables that was added in sysdeps/arm/preconfigure.ac.
>> +CFLAGS=${CFLAGS% -fno-unwind-tables}
>> +
>> +dnl The normal configure check for gcc -fexecptions fails because it can't
>> +dnl find __aeabi_unwind_cpp_pr0.  Work around this here; our GCC definitely
>> +dnl has -fexceptions.
>> +libc_cv_gcc_exceptions=yes
>> +exceptions=-fexceptions
>> --- a/sysdeps/arm/preconfigure
>> +++ b/sysdeps/arm/preconfigure
>> @@ -3,22 +3,36 @@
>>
>>  case "$machine" in
>>  arm*)
>> -  case $config_os in
>> -  linux-gnueabi*)
>> -    # If the compiler enables unwind tables by default, this causes
>> -    # problems with undefined symbols in -nostdlib link tests.  To
>> -    # avoid this, add -fno-unwind-tables here and remove it in
>> -    # sysdeps/unix/sysv/linux/arm/configure.ac after those tests have
>> -    # been run.
>> -    if test "${CFLAGS+set}" != "set"; then
>> -      CFLAGS="-g -O2"
>> -    fi
>> -    CFLAGS="$CFLAGS -fno-unwind-tables"
>> -    ;;
>> -  linux*)
>> -    as_fn_error $? "Old ABI no longer supported" "$LINENO" 5
>> -    ;;
>> -  esac
>> +
>> +cat confdefs.h - <<_ACEOF >conftest.$ac_ext
>> +/* end confdefs.h.  */
>> +
>> +#if !__ARM_EABI__
>> +#error
>> +#endif
>> +int
>> +main ()
>> +{
>> +
>> +  ;
>> +  return 0;
>> +}
>> +_ACEOF
>> +if ac_fn_c_try_compile "$LINENO"; then :
>> +
>> +else
>> +  as_fn_error $? "Old ABI no longer supported" "$LINENO" 5
>> +fi
>> +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
>> +
>> +  # If the compiler enables unwind tables by default, this causes
>> +  # problems with undefined symbols in -nostdlib link tests.  To
>> +  # avoid this, add -fno-unwind-tables here and remove it in
>> +  # sysdeps/arm/configure.ac after those tests have been run.
>> +  if test "${CFLAGS+set}" != "set"; then
>> +    CFLAGS="-g -O2"
>> +  fi
>> +  CFLAGS="$CFLAGS -fno-unwind-tables"
>>
>>    base_machine=arm
>>    # Lets ask the compiler which ARM family we've got
>> --- a/sysdeps/arm/preconfigure.ac
>> +++ b/sysdeps/arm/preconfigure.ac
>> @@ -3,22 +3,19 @@ GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
>>
>>  case "$machine" in
>>  arm*)
>> -  case $config_os in
>> -  linux-gnueabi*)
>> -    # If the compiler enables unwind tables by default, this causes
>> -    # problems with undefined symbols in -nostdlib link tests.  To
>> -    # avoid this, add -fno-unwind-tables here and remove it in
>> -    # sysdeps/unix/sysv/linux/arm/configure.ac after those tests have
>> -    # been run.
>> -    if test "${CFLAGS+set}" != "set"; then
>> -      CFLAGS="-g -O2"
>> -    fi
>> -    CFLAGS="$CFLAGS -fno-unwind-tables"
>> -    ;;
>> -  linux*)
>> -    AC_MSG_ERROR([Old ABI no longer supported])
>> -    ;;
>> -  esac
>> +  AC_TRY_COMPILE([
>> +#if !__ARM_EABI__
>> +#error
>> +#endif], [], [], [AC_MSG_ERROR([Old ABI no longer supported])])
>> +
>> +  # If the compiler enables unwind tables by default, this causes
>> +  # problems with undefined symbols in -nostdlib link tests.  To
>> +  # avoid this, add -fno-unwind-tables here and remove it in
>> +  # sysdeps/arm/configure.ac after those tests have been run.
>> +  if test "${CFLAGS+set}" != "set"; then
>> +    CFLAGS="-g -O2"
>> +  fi
>> +  CFLAGS="$CFLAGS -fno-unwind-tables"
>>
>>    base_machine=arm
>>    # Lets ask the compiler which ARM family we've got
>> --- a/sysdeps/microblaze/nptl/tls.h
>> +++ b/sysdeps/microblaze/nptl/tls.h
>> @@ -99,7 +99,7 @@ static inline void *__microblaze_get_thread_area (void)
>>  /* Code to initially initialize the thread pointer.
>>     r21 is reserved for thread pointer.  */
>>  # define TLS_INIT_TP(tcbp) \
>> -  ({ __asm __volatile ("or r21,r0,%0" : : "r" ((void *)tcbp)); 0; })
>> +  ({ __asm __volatile ("or r21,r0,%0" : : "r" ((void *)tcbp)); NULL; })
>>
>>  # define TLS_DEFINE_INIT_TP(tp, pd) void *tp = (pd) + 1
>>
>> --- a/sysdeps/unix/sysv/linux/arm/configure
>> +++ /dev/null
>> @@ -1,9 +0,0 @@
>> -# This file is generated from configure.ac by Autoconf.  DO NOT EDIT!
>> - # Local configure fragment for sysdeps/unix/sysv/linux/arm.
>> -
>> -libc_cv_gcc_unwind_find_fde=no
>> -# Remove -fno-unwind-tables that was added in sysdeps/arm/preconfigure.ac.
>> -CFLAGS=${CFLAGS% -fno-unwind-tables}
>> -
>> -libc_cv_gcc_exceptions=yes
>> -exceptions=-fexceptions
>> --- a/sysdeps/unix/sysv/linux/arm/configure.ac
>> +++ /dev/null
>> @@ -1,12 +0,0 @@
>> -GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
>> -# Local configure fragment for sysdeps/unix/sysv/linux/arm.
>> -
>> -libc_cv_gcc_unwind_find_fde=no
>> -# Remove -fno-unwind-tables that was added in sysdeps/arm/preconfigure.ac.
>> -CFLAGS=${CFLAGS% -fno-unwind-tables}
>> -
>> -dnl The normal configure check for gcc -fexecptions fails because it can't
>> -dnl find __aeabi_unwind_cpp_pr0.  Work around this here; our GCC definitely
>> -dnl has -fexceptions.
>> -libc_cv_gcc_exceptions=yes
>> -exceptions=-fexceptions
>>
>
>


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