Message ID | 1467131978-669-11-git-send-email-ynorov@caviumnetworks.com |
---|---|
State | New |
Headers | show |
<https://sourceware.org/ml/libc-alpha/2016-06/msg00785.html> and <https://sourceware.org/ml/libc-alpha/2014-10/msg00639.html> still apply. Please make the changes requested there before any reposting of the patch series.
On Tue, Jun 28, 2016 at 05:07:49PM +0000, Joseph Myers wrote: > <https://sourceware.org/ml/libc-alpha/2016-06/msg00785.html> and > <https://sourceware.org/ml/libc-alpha/2014-10/msg00639.html> still apply. > Please make the changes requested there before any reposting of the patch > series. Yes, I forgot about glibc version. I don't want to add changelogs because I think patches order should/may be changed, and as all that changelogs touch single file, there will be nightmare to rebase series. >> diff --git a/sysdeps/aarch64/preconfigure >> b/sysdeps/aarch64/preconfigure >> index d9bd1f8..4bcd8e3 100644 >> --- a/sysdeps/aarch64/preconfigure >> +++ b/sysdeps/aarch64/preconfigure >> @@ -1,6 +1,15 @@ >> case "$machine" in >> aarch64*) >> base_machine=aarch64 >> - machine=aarch64 >> + case "$CC $CFLAGS $CPPFLAGS " in >> + *" -mabi=ilp32 "*) aarch64_config_abi=ilp32 ;; >> + *" -mabi=lp64 "*) aarch64_config_abi=lp64 ;; >> + *) aarch64_config_abi=default ;; >> + esac >> + case $aarch64_config_abi in >> + default) machine=aarch64/lp64 aarch64_config_abi=lp64 >> ;; > > It would seem better to test how the compiler behaves (what it > predefines), as now done for MIPS, so that this works with a compiler > configured --with-abi=ilp32 without needing to add an explicit ABI > option > to CC or CFLAGS. I didn't understand what you mean here and forgot to ask. I didn't work much on glibc, and not familiar to it's build system. Could you explain it little more detailed please?
On Tue, 28 Jun 2016, Yury Norov wrote: > On Tue, Jun 28, 2016 at 05:07:49PM +0000, Joseph Myers wrote: > > <https://sourceware.org/ml/libc-alpha/2016-06/msg00785.html> and > > <https://sourceware.org/ml/libc-alpha/2014-10/msg00639.html> still apply. > > Please make the changes requested there before any reposting of the patch > > series. > > Yes, I forgot about glibc version. I don't want to add changelogs > because I think patches order should/may be changed, and as all that > changelogs touch single file, there will be nightmare to rebase > series. The convention is that you include the ChangeLog entry as part of the patch description, rather than changing the ChangeLog file, to avoid this issue. But with the formatting exactly matching what would go in the ChangeLog file, so that for the final commit you just need to update the date in it and then prepend to the ChangeLog file. > >> diff --git a/sysdeps/aarch64/preconfigure > >> b/sysdeps/aarch64/preconfigure > >> index d9bd1f8..4bcd8e3 100644 > >> --- a/sysdeps/aarch64/preconfigure > >> +++ b/sysdeps/aarch64/preconfigure > >> @@ -1,6 +1,15 @@ > >> case "$machine" in > >> aarch64*) > >> base_machine=aarch64 > >> - machine=aarch64 > >> + case "$CC $CFLAGS $CPPFLAGS " in > >> + *" -mabi=ilp32 "*) aarch64_config_abi=ilp32 ;; > >> + *" -mabi=lp64 "*) aarch64_config_abi=lp64 ;; > >> + *) aarch64_config_abi=default ;; > >> + esac > >> + case $aarch64_config_abi in > >> + default) machine=aarch64/lp64 aarch64_config_abi=lp64 > >> ;; > > > > It would seem better to test how the compiler behaves (what it > > predefines), as now done for MIPS, so that this works with a compiler > > configured --with-abi=ilp32 without needing to add an explicit ABI > > option > > to CC or CFLAGS. > > I didn't understand what you mean here and forgot to ask. > I didn't work much on glibc, and not familiar to it's build > system. Could you explain it little more detailed please? See sysdeps/mips/preconfigure. It runs $CC $CFLAGS $CPPFLAGS -E -dM -xc /dev/null and extracts predefined macros that relate to the ABI from the output. This avoids needing to hardcode anything about what the default ABI might be for a compiler if neither -mabi= option is passed.
diff --git a/sysdeps/aarch64/configure b/sysdeps/aarch64/configure old mode 100644 new mode 100755 index 5bd355a..7dd56e8 --- a/sysdeps/aarch64/configure +++ b/sysdeps/aarch64/configure @@ -163,12 +163,19 @@ rm -f conftest* fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_aarch64_be" >&5 $as_echo "$libc_cv_aarch64_be" >&6; } + +if test $aarch64_config_abi = ilp32; then + $as_echo "#define HAVE_AARCH64_ILP32 1" >>confdefs.h + +fi + if test $libc_cv_aarch64_be = yes; then $as_echo "#define HAVE_AARCH64_BE 1" >>confdefs.h - config_vars="$config_vars -default-abi = lp64_be" + libc_aarch64_be=_be else - config_vars="$config_vars -default-abi = lp64" + libc_aarch64_be= fi + +config_vars="$config_vars +default-abi = ${aarch64_config_abi}${libc_aarch64_be}" diff --git a/sysdeps/aarch64/configure.ac b/sysdeps/aarch64/configure.ac index 7851dd4..9069325 100644 --- a/sysdeps/aarch64/configure.ac +++ b/sysdeps/aarch64/configure.ac @@ -14,9 +14,16 @@ AC_CACHE_CHECK([for big endian], yes #endif ], libc_cv_aarch64_be=yes, libc_cv_aarch64_be=no)]) + +if test $aarch64_config_abi = ilp32; then + AC_DEFINE(HAVE_AARCH64_ILP32) +fi + if test $libc_cv_aarch64_be = yes; then AC_DEFINE(HAVE_AARCH64_BE) - LIBC_CONFIG_VAR([default-abi], [lp64_be]) + libc_aarch64_be=_be else - LIBC_CONFIG_VAR([default-abi], [lp64]) + libc_aarch64_be= fi + +LIBC_CONFIG_VAR([default-abi], [${aarch64_config_abi}${libc_aarch64_be}]) diff --git a/sysdeps/aarch64/preconfigure b/sysdeps/aarch64/preconfigure index d9bd1f8..4bcd8e3 100644 --- a/sysdeps/aarch64/preconfigure +++ b/sysdeps/aarch64/preconfigure @@ -1,6 +1,15 @@ case "$machine" in aarch64*) base_machine=aarch64 - machine=aarch64 + case "$CC $CFLAGS $CPPFLAGS " in + *" -mabi=ilp32 "*) aarch64_config_abi=ilp32 ;; + *" -mabi=lp64 "*) aarch64_config_abi=lp64 ;; + *) aarch64_config_abi=default ;; + esac + case $aarch64_config_abi in + default) machine=aarch64/lp64 aarch64_config_abi=lp64 ;; + ilp32) machine=aarch64/ilp32 ;; + lp64) machine=aarch64/lp64 ;; + esac ;; esac diff --git a/sysdeps/unix/sysv/linux/aarch64/configure b/sysdeps/unix/sysv/linux/aarch64/configure old mode 100644 new mode 100755 index f48472c..c6fca86 --- a/sysdeps/unix/sysv/linux/aarch64/configure +++ b/sysdeps/unix/sysv/linux/aarch64/configure @@ -1,9 +1,23 @@ # This file is generated from configure.ac by Autoconf. DO NOT EDIT! # Local configure fragment for sysdeps/unix/sysv/linux/aarch64. -arch_minimum_kernel=3.7.0 - -test -n "$libc_cv_slibdir" || +if test $aarch64_config_abi = ilp32; then + arch_minimum_kernel=3.19.0 + test -n "$libc_cv_slibdir" || +case "$prefix" in +/usr | /usr/) + libc_cv_slibdir=/libilp32 + libc_cv_rtlddir=/lib + if test "$libdir" = '${exec_prefix}/lib'; then + libdir='${exec_prefix}/libilp32'; + # Locale data can be shared between 32-bit and 64-bit libraries. + libc_cv_complocaledir='${exec_prefix}/lib/locale' + fi + ;; +esac +else + arch_minimum_kernel=3.7.0 + test -n "$libc_cv_slibdir" || case "$prefix" in /usr | /usr/) libc_cv_slibdir=/lib64 @@ -15,3 +29,5 @@ case "$prefix" in fi ;; esac +fi + diff --git a/sysdeps/unix/sysv/linux/aarch64/configure.ac b/sysdeps/unix/sysv/linux/aarch64/configure.ac index 211fa9c..b37a7eb 100644 --- a/sysdeps/unix/sysv/linux/aarch64/configure.ac +++ b/sysdeps/unix/sysv/linux/aarch64/configure.ac @@ -1,6 +1,11 @@ GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory. # Local configure fragment for sysdeps/unix/sysv/linux/aarch64. -arch_minimum_kernel=3.7.0 +if test $aarch64_config_abi = ilp32; then + arch_minimum_kernel=10.0.0 + LIBC_SLIBDIR_RTLDDIR([libilp32], [lib]) +else + arch_minimum_kernel=3.7.0 + LIBC_SLIBDIR_RTLDDIR([lib64], [lib]) +fi -LIBC_SLIBDIR_RTLDDIR([lib64], [lib])