From a01f19c8fb12eef419d4112879bc715e2ab6f6d7 Mon Sep 17 00:00:00 2001 From: Carlos O'Donell Date: Sat, 6 Apr 2013 12:00:35 -0400 Subject: i386: Fail at configure time for i386 builds. This change does two things: * Treats a target i386-* as if it were i686. * Fails configure if the user is generating code for i386. We no longer support i386 code-generation because the i386 lacks the atomic operations we need in glibc. You can still configure for i386-*, but you get i686 code. You can't build with --march=i386, --mtune=i386 or a compiler that defaults to i386 code-generation. I've added two i386 entries in the master todo list to discuss merging and renaming: http://sourceware.org/glibc/wiki/Development_Todo/Master#i386 The failure modes are fail-safe here. You compile for i386, get i686, and try to run on i386 and it fails. The configure log has a warning saying we elided to i686. There is no situation that I can see where we run into any serious problems. The patch makes the current state better in that we get less confused users and we build successfully in more default configurations. The next enhancement would be to add --march=i?86 as suggested in #c20 of BZ#10062 for any i?86-* builds, which would solve the problem of a 32-bit compiler that defaults to i386 code-gen and glibc configured for i686-* target. Which previously failed at build time, and now will fail at configure time (requires adding --march=i686). Updated NEWS with BZ #10060 and #10062. No regressions. --- 2013-04-06 Carlos O'Donell [BZ #10060, #10062] * aclocal.m4 (LIBC_COMPILER_BUILTIN_INLINED): New macro. * sysdeps/i386/configure.in: Use LIBC_COMPILER_BUILTIN_INLINED and fail configure if __sync_val_compare_and_swap is not inlined. * sysdeps/i386/configure: Regenerate. * configure.in: Build for i686 when configured for i386. * configure: Regenerate. * README: Remove i386 reference. --- configure | 9 +++++++++ 1 file changed, 9 insertions(+) (limited to 'configure') diff --git a/configure b/configure index 088bef0515..0b50df94f5 100755 --- a/configure +++ b/configure @@ -3741,6 +3741,15 @@ case "$machine-$host_os" in ;; esac +# Configure for i686 if the user asks for i386. We don't support +# i386 any more but it continues to be common for users to configure +# 32-bit x86 as i386. We build for i686 instead. +if test "$machine" = i386; then + machine="i686" + echo "\ +*** WARNING: Support for i386 is deprecated. Building for i686 instead." +fi + submachine= # Check whether --with-cpu was given. -- cgit v1.2.3 From 0f122b8d12875181a4fba3449e3549d34d3dc398 Mon Sep 17 00:00:00 2001 From: Carlos O'Donell Date: Wed, 17 Apr 2013 17:13:20 -0700 Subject: Configuring for i386 is no longer supported. We no longer support configuring for i386, nor do we elide such a configuration to i686. Configuring with i386-* is a failure, and we provide an example of how to fix that. --- 2013-04-17 Carlos O'Donell * configure.in: Remove i386 configure warning. Remove i386 case. * configure: Regenerate. * sysdeps/i386/configure.in: Raise error if config_machine is i386. Add example to error message. * sysdeps/i386/configure: Regenerate. --- ChangeLog | 8 ++++++++ configure | 11 +---------- configure.in | 11 +---------- sysdeps/i386/configure | 12 +++++++++++- sysdeps/i386/configure.in | 12 +++++++++++- 5 files changed, 32 insertions(+), 22 deletions(-) (limited to 'configure') diff --git a/ChangeLog b/ChangeLog index 23e7296c34..5b03b63140 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,11 @@ +2013-04-17 Carlos O'Donell + + * configure.in: Remove i386 configure warning. + * configure: Regenerate. + * sysdeps/i386/configure.in: Raise error if machine is i386. + Add example to error message. + * sysdeps/i386/configure: Regenerate. + 2013-04-17 Siddhesh Poyarekar * benchtests/Makefile (bench): Add cos, tan, slowcos and diff --git a/configure b/configure index 0b50df94f5..8c538f5094 100755 --- a/configure +++ b/configure @@ -3741,15 +3741,6 @@ case "$machine-$host_os" in ;; esac -# Configure for i686 if the user asks for i386. We don't support -# i386 any more but it continues to be common for users to configure -# 32-bit x86 as i386. We build for i686 instead. -if test "$machine" = i386; then - machine="i686" - echo "\ -*** WARNING: Support for i386 is deprecated. Building for i686 instead." -fi - submachine= # Check whether --with-cpu was given. @@ -3945,7 +3936,7 @@ fi # type and particular chip. If an add-on configure fragment already set # base_machine, we don't change it. test -n "$base_machine" || case "$machine" in -i[34567]86) base_machine=i386 machine=i386/$machine ;; +i[4567]86) base_machine=i386 machine=i386/$machine ;; powerpc) base_machine=powerpc machine=powerpc/powerpc32 ;; powerpc64) base_machine=powerpc machine=powerpc/powerpc64 ;; s390) base_machine=s390 machine=s390/s390-32 ;; diff --git a/configure.in b/configure.in index d93ca5ca98..bd90bac91e 100644 --- a/configure.in +++ b/configure.in @@ -390,15 +390,6 @@ case "$machine-$host_os" in ;; esac -# Configure for i686 if the user asks for i386. We don't support -# i386 any more but it continues to be common for users to configure -# 32-bit x86 as i386. We build for i686 instead. -if test "$machine" = i386; then - machine="i686" - echo "\ -*** WARNING: Support for i386 is deprecated. Building for i686 instead." -fi - submachine= AC_ARG_WITH([cpu], AS_HELP_STRING([--with-cpu=CPU], [select code for CPU variant]), @@ -576,7 +567,7 @@ changequote(,)dnl # type and particular chip. If an add-on configure fragment already set # base_machine, we don't change it. test -n "$base_machine" || case "$machine" in -i[34567]86) base_machine=i386 machine=i386/$machine ;; +i[4567]86) base_machine=i386 machine=i386/$machine ;; powerpc) base_machine=powerpc machine=powerpc/powerpc32 ;; powerpc64) base_machine=powerpc machine=powerpc/powerpc64 ;; s390) base_machine=s390 machine=s390/s390-32 ;; diff --git a/sysdeps/i386/configure b/sysdeps/i386/configure index a1a0fe7bad..53b6a619d3 100644 --- a/sysdeps/i386/configure +++ b/sysdeps/i386/configure @@ -32,6 +32,15 @@ $as_echo "$ac_res" >&6; } # This file is generated from configure.in by Autoconf. DO NOT EDIT! # Local configure fragment for sysdeps/i386. +# We no longer support i386 since it lacks the atomic instructions +# required to implement NPTL threading. +if test "$config_machine" = i386; then + as_fn_error $? " +*** ERROR: Support for i386 is deprecated. +*** Please use host i786, i686, i585 or i486. +*** For example: /src/glibc/configure --host=i686-pc-linux-gnu ...\"" "$LINENO" 5 +fi + # The GNU C Library can't be built for i386. There are several reasons for # this restriction. The primary reason is that i386 lacks the atomic # operations required to support the current NPTL implementation. While it is @@ -66,7 +75,8 @@ if test $libc_compiler_builtin_inlined = yes; then else as_fn_error $? " *** Building with -march=i386/-mcpu=i386 is not supported. -*** Please use host i786, i686, i586, or i486." "$LINENO" 5 +*** Please use host i786, i686, i586, or i486. +*** For example: /source/glibc/configure CFLAGS='-O2 -march=i686' ..." "$LINENO" 5 fi { $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_compiler_builtin_inlined" >&5 $as_echo "$libc_compiler_builtin_inlined" >&6; } diff --git a/sysdeps/i386/configure.in b/sysdeps/i386/configure.in index 56a7c1fbcc..96ab7b0f5a 100644 --- a/sysdeps/i386/configure.in +++ b/sysdeps/i386/configure.in @@ -1,6 +1,15 @@ GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory. # Local configure fragment for sysdeps/i386. +# We no longer support i386 since it lacks the atomic instructions +# required to implement NPTL threading. +if test "$config_machine" = i386; then + AC_MSG_ERROR([ +*** ERROR: Support for i386 is deprecated. +*** Please use host i786, i686, i585 or i486. +*** For example: /src/glibc/configure --host=i686-pc-linux-gnu ..."]) +fi + # The GNU C Library can't be built for i386. There are several reasons for # this restriction. The primary reason is that i386 lacks the atomic # operations required to support the current NPTL implementation. While it is @@ -18,7 +27,8 @@ LIBC_COMPILER_BUILTIN_INLINED( [libc_cv_unsupported_i386=no], [AC_MSG_ERROR([ *** Building with -march=i386/-mcpu=i386 is not supported. -*** Please use host i786, i686, i586, or i486.])]) +*** Please use host i786, i686, i586, or i486. +*** For example: /source/glibc/configure CFLAGS='-O2 -march=i686' ...])]) AC_CHECK_HEADER([cpuid.h], , [AC_MSG_ERROR([gcc must provide the header])], -- cgit v1.2.3