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] Disable building with i386-*, -march=i386 or -mcpu=i386.


On 04/17/2013 10:51 AM, Carlos O'Donell wrote:
> On 04/16/2013 01:47 PM, Roland McGrath wrote:
>>> 	* sysdeps/i386/preconfigure.in: New file.
>>> 	* sysdeps/i386/preconfigure: Regenerate.
>>
>> "New generated file."  (You can't regenerate what's never been generated.)
> 
> Fixed.
>  
>> But you don't need a preconfigure if it's just going to be an error.  The
>> only time you need a preconfigure is when it's going to do something that
>> actually influences sysdeps selection.
> 
> My reason was to error out as early as possible. Is that not a good reason?
> 
>>> diff --git a/sysdeps/i386/configure.in b/sysdeps/i386/configure.in
>>> index 56a7c1f..ee55efd 100644
>>> --- a/sysdeps/i386/configure.in
>>> +++ b/sysdeps/i386/configure.in
>>> @@ -18,7 +18,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: export CFLAGS="-O2 -march=i386"])])
>>
>> Never suggest setting variables in the environment!
>> (Also, you're suggesting exactly what's prohibited.)
>> Better would be:
> 
> Why?
> 
> I see nothing in our FAQ about this.
> 
> After you explain my folly I'll update the FAQ.
> 
>> *** For example, pass CFLAGS='-O2 -march=i686' to configure.
> 
> Not specific enough.
> 
> What do you prefer?
> 
> CFLAGS='-O2 -march=i686' ./configure ...
> 
> or
> 
> ./configure ... CFLAGS='-O2 -march=i686'
> 
>>> +# 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.
>>
>> The comment no longer matches the code.
> 
> Fixed.

Checked in this version.

v3
- Move preconfigure fragment to sysdep/i386/configure
- Fixed ChangeLog
- Add examples to all the errors.
- Removed i386 from configure case.

2013-04-17  Carlos O'Donell  <carlos@redhat.com>

	* 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.

diff --git a/configure b/configure
index 0b50df9..8c538f5 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 d93ca5c..bd90bac 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 a1a0fe7..53b6a61 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 56a7c1f..96ab7b0 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 <cpuid.h> header])],
---

Cheers,
Carlos.


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