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]

Require GCC 4.6 or later to build glibc


As discussed in the thread starting at
<https://sourceware.org/ml/libc-alpha/2014-10/msg00792.html>, and
continuing into November, this patch increases the minimum GCC version
for building glibc to 4.6 (there seemed to be no clear consensus for
4.7).  In particular, this allows us to use #pragma GCC diagnostic for
fine-grained warning control with -Werror (subject to establishing a
suitable policy for that use).  The documentation has a statement, as
requested, about the most recent GCC version tested for building
glibc, and I've updated <https://sourceware.org/glibc/wiki/Release> to
refer to updating that statement.  A NEWS entry is added for this
change, although previous such changes didn't get them.

Some __GNUC_PREREQ conditionals are cleaned up (including some that
could actually have been cleaned up earlier, referring to 4.4); there
do remain various much older GCC / GCC version conditionals, not in
installed headers or files shared with gnulib, that could be removed.
(There are a few other conditionals that could be removed by requiring
4.7.)  I didn't try to identify configure tests that are obsolete
based on this GCC version requirement (although there are probably
some that have been obsolete for a long time).

Tested for x86_64 (testsuite, and that stripped installed shared
libraries are unchanged by this patch).

2014-11-13  Joseph Myers  <joseph@codesourcery.com>

	* configure.ac (libc_cv_compiler_ok): Require GCC 4.6 or later.
	* configure: Regenerated.
	* manual/install.texi (Tools for Compilation): Document a
	requirement of GCC 4.6 or later and that GCC 4.9 is the newest
	compiler verified to work.
	* INSTALL: Regenerated.
	* sysdeps/arm/sysdep.h [PROF && __GNUC_PREREQ(4,4)] (CALL_MCOUNT):
	Make definition conditional only on [PROF].
	[PROF && !__GNUC_PREREQ(4,4)] (CALL_MCOUNT): Remove conditional
	definition.
	[__GNUC_PREREQ(4,4)] (mcount): Make definition unconditional.
	[!__GNUC_PREREQ(4,4)] (mcount): Remove conditional definition.
	* sysdeps/x86_64/fpu/dla.h [__FMA4__ && __GNUC_PREREQ (4, 6)]
	(DLA_FMS): Make definition conditional only on [__FMA4__].
	[__FMA4__ && !__GNUC_PREREQ (4, 6)] (DLA_FMS): Remove conditional
	definition.

diff --git a/INSTALL b/INSTALL
index 3130c2a..a60925c 100644
--- a/INSTALL
+++ b/INSTALL
@@ -329,10 +329,10 @@ build the GNU C Library:
      recommend GNU `make' version 3.79.  All earlier versions have
      severe bugs or lack features.
 
-   * GCC 4.4 or newer, GCC 4.6 recommended
+   * GCC 4.6 or newer
 
-     GCC 4.4 or higher is required; as of this writing, GCC 4.6 is the
-     compiler we advise to use to build the GNU C Library.
+     GCC 4.6 or higher is required; as of release time, GCC 4.9 is the
+     newest compiler verified to work to build the GNU C Library.
 
      You can use whatever compiler you like to compile programs that use
      the GNU C Library.
diff --git a/NEWS b/NEWS
index c582c8e..867d659 100644
--- a/NEWS
+++ b/NEWS
@@ -14,6 +14,10 @@ Version 2.21
   17555, 17570, 17571, 17572, 17573, 17574, 17582, 17583, 17584, 17585,
   17589, 17594.
 
+* The minimum GCC version that can be used to build this version of the GNU
+  C Library is GCC 4.6.  Older GCC versions, and non-GNU compilers, can
+  still be used to compile programs using the GNU C Library.
+
 * New locales: tu_IN, bh_IN.
 
 Version 2.20
diff --git a/configure b/configure
index 3c161be..0cb54ec 100755
--- a/configure
+++ b/configure
@@ -4929,7 +4929,7 @@ int
 main ()
 {
 
-#if !defined __GNUC__ || __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 4)
+#if !defined __GNUC__ || __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 6)
 #error insufficient compiler
 #endif
   ;
diff --git a/configure.ac b/configure.ac
index a982407..b2c4b1f 100644
--- a/configure.ac
+++ b/configure.ac
@@ -934,7 +934,7 @@ AC_CHECK_PROG_VER(AWK, gawk, --version,
 
 AC_CACHE_CHECK([if $CC is sufficient to build libc], libc_cv_compiler_ok, [
 AC_TRY_COMPILE([], [
-#if !defined __GNUC__ || __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 4)
+#if !defined __GNUC__ || __GNUC__ < 4 || (__GNUC__ == 4 && __GNUC_MINOR__ < 6)
 #error insufficient compiler
 #endif],
 	       [libc_cv_compiler_ok=yes],
diff --git a/manual/install.texi b/manual/install.texi
index e1c2b9a..d4d1b8e 100644
--- a/manual/install.texi
+++ b/manual/install.texi
@@ -372,10 +372,10 @@ recommend GNU @code{make} version 3.79.  All earlier versions have severe
 bugs or lack features.
 
 @item
-GCC 4.4 or newer, GCC 4.6 recommended
+GCC 4.6 or newer
 
-GCC 4.4 or higher is required; as of this writing, GCC 4.6 is the
-compiler we advise to use to build @theglibc{}.
+GCC 4.6 or higher is required; as of release time, GCC 4.9 is the
+newest compiler verified to work to build @theglibc{}.
 
 You can use whatever compiler you like to compile programs that use
 @theglibc{}.
diff --git a/sysdeps/arm/sysdep.h b/sysdeps/arm/sysdep.h
index 8614b4a..9225293 100644
--- a/sysdeps/arm/sysdep.h
+++ b/sysdeps/arm/sysdep.h
@@ -109,8 +109,7 @@
 
 /* If compiled for profiling, call `mcount' at the start of each function.  */
 #ifdef	PROF
-/* Call __gnu_mcount_nc if GCC >= 4.4.  */
-#if __GNUC_PREREQ(4,4)
+/* Call __gnu_mcount_nc (GCC >= 4.4).  */
 #define CALL_MCOUNT					\
 	push	{lr};					\
 	cfi_adjust_cfa_offset (4);			\
@@ -118,16 +117,6 @@
 	bl	PLTJMP(mcount);				\
 	cfi_adjust_cfa_offset (-4);			\
 	cfi_restore (lr)
-#else /* else call _mcount */
-#define CALL_MCOUNT					\
-	push	{lr};					\
-	cfi_adjust_cfa_offset (4);			\
-	cfi_rel_offset (lr, 0);				\
-	bl	PLTJMP(mcount);				\
-	pops	{lr};					\
-	cfi_adjust_cfa_offset (-4);			\
-	cfi_restore (lr)
-#endif
 #else
 #define CALL_MCOUNT		/* Do nothing.  */
 #endif
@@ -136,11 +125,7 @@
    on this system, the asm identifier `syscall_error' intrudes on the
    C name space.  Make sure we use an innocuous name.  */
 #define	syscall_error	__syscall_error
-#if __GNUC_PREREQ(4,4)
 #define mcount		__gnu_mcount_nc
-#else
-#define mcount		_mcount
-#endif
 
 /* Tag_ABI_align8_preserved: This code preserves 8-byte
    alignment in any callee.  */
diff --git a/sysdeps/x86_64/fpu/dla.h b/sysdeps/x86_64/fpu/dla.h
index fa2d52b..688efa0 100644
--- a/sysdeps/x86_64/fpu/dla.h
+++ b/sysdeps/x86_64/fpu/dla.h
@@ -1,17 +1,8 @@
 #include <features.h>
 
 #ifdef __FMA4__
-# if __GNUC_PREREQ (4, 6)
-#  define DLA_FMS(x,y,z) \
+# define DLA_FMS(x,y,z) \
   __builtin_fma (x, y, -(z))
-# else
-#  define DLA_FMS(x,y,z) \
-  ({ double __z;							      \
-     asm ("vfmsubsd %3, %2, %1, %0"					      \
-	  : "=x" (__z)							      \
-	  : "x" ((double) (x)), "xm" ((double) (y)) , "x" ((double) (z)));    \
-    __z; })
-# endif
 #endif
 
 #include "sysdeps/ieee754/dbl-64/dla.h"

-- 
Joseph S. Myers
joseph@codesourcery.com


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