This is the mail archive of the libc-ports@sources.redhat.com mailing list for the libc-ports 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]

Remove pre-2.6.0 Linux kernel support


This patch increases the minimum Linux kernel version from 2.4.21 to
2.6.0 (generally meaning 2.6.0-test1 - the existing
--enable-kernel=2.6.0 meaning).

Because there are quite a lot of __ASSUME_* macros this affects, some
of which are used in a lot of places, it seemed best to keep the patch
size down by separating the increase of minimum kernel version from
the cleanups to remove tests of __ASSUME_* macros, leaving the removal
of compatibility code to a separate patch for each macro or group of
related macros.  Thus this patch does not remove any compatibility
code, though it does remove two __ASSUME_* macros that are not used
anywhere, __ASSUME_SET_THREAD_AREA_SYSCALL and __ASSUME_FUTEX_REQUEUE.
(nptl/sysdeps/i386/tls.h tests a differently spelt macro,
__ASSUME_SET_THREAD_AREA, that is nowhere defined, but the test is
inside #if 0 and only affects a #error directive.)  The patch does
update README and NEWS for the new version requirement (future
patches, moving the requirement to 2.6.16 as previously discussed,
will of course update the version numbers there again).

Tested x86_64.

2012-08-02  Joseph Myers  <joseph@codesourcery.com>

	[BZ #13717]
	* sysdeps/unix/sysv/linux/configure.in (arch_minimum_kernel):
	Change to 2.6.0 everywhere.
	* sysdeps/unix/sysv/linux/configure: Regenerated.
	* sysdeps/unix/sysv/linux/kernel-features.h
	(__ASSUME_SET_THREAD_AREA_SYSCALL): Remove.
	(__ASSUME_CLONE_THREAD_FLAGS): Condition on architectures, not
	kernel versions.
	(__ASSUME_POSIX_TIMERS): Define unconditionally.
	(__ASSUME_FUTEX_REQUEUE): Remove.
	(__ASSUME_STATFS64): Define unconditionally.
	(__ASSUME_AT_SECURE): Likewise.
	(__ASSUME_CORRECT_SI_PID): Likewise.
	(__ASSUME_TGKILL): Define without depending on kernel version for
	i386.
	(__ASSUME_UTIMES): Likewise.
	(__ASSUME_SWAPCONTEXT_SYSCALL): Condition on architecture, not
	kernel version.
	(__ASSUME_BRK_PAGE_ROUNDED): Define unconditionally.
	(__ASSUME_TMPFS_NAME): Likewise.
	* README: Update reference to Linux kernel versions.

ports/ChangeLog.alpha
2012-08-02  Joseph Myers  <joseph@codesourcery.com>

	* sysdeps/unix/sysv/linux/alpha/configure.in
	(arch_minimum_kernel): Remove.
	* sysdeps/unix/sysv/linux/alpha/configure: Regenerated.

ports/ChangeLog.ia64
2012-08-02  Joseph Myers  <joseph@codesourcery.com>

	* sysdeps/unix/sysv/linux/ia64/configure.in (arch_minimum_kernel):
	Remove.
	* sysdeps/unix/sysv/linux/ia64/configure: Regenerated.

diff --git a/NEWS b/NEWS
index 5759edd..8c961e1 100644
--- a/NEWS
+++ b/NEWS
@@ -24,6 +24,9 @@ Version 2.17
 * SystemTap static probes have been added into the dynamic linker.
   Implemented by Gary Benson.
 
+* The minimum Linux kernel version that this version of the GNU C Library
+  can be used with is 2.6.0.
+
 
 Version 2.16
 
diff --git a/README b/README
index 1e2e3ba..ee43670 100644
--- a/README
+++ b/README
@@ -16,14 +16,8 @@ GNU/Hurd system, using configurations i[34567]86-*-gnu.  The current
 GNU/Hurd support requires out-of-tree patches that will eventually be
 incorporated into an official GNU C Library release.
 
-When working with Linux kernels, the GNU C Library version from
-version 2.4 on is intended primarily for use with Linux kernel version
-2.6.0 and later.  We only support using the NPTL implementation of
-pthreads, which is now the default configuration.  The library is
-unlikely to build without NPTL, or to work on Linux kernels prior to
-2.6.  The old LinuxThreads add-on implementation of pthreads for older
-Linux kernels is no longer supported, and we are not distributing it
-with this release.
+When working with Linux kernels, this version of the GNU C Library
+requires Linux kernel version 2.6.0 or later.
 
 All Linux kernel versions prior to 2.6.16 are known to have some bugs that
 may cause some of the tests related to pthreads in "make check" to fail.
diff --git a/ports/sysdeps/unix/sysv/linux/alpha/configure b/ports/sysdeps/unix/sysv/linux/alpha/configure
index c7c4fee..b5df524 100644
--- a/ports/sysdeps/unix/sysv/linux/alpha/configure
+++ b/ports/sysdeps/unix/sysv/linux/alpha/configure
@@ -1,11 +1,5 @@
 # This file is generated from configure.in by Autoconf.  DO NOT EDIT!
  # Local configure fragment for sysdeps/unix/sysv/linux/alpha
 
-# There are several bits that no longer compile cleanly without
-# realtime signal support (ver 2.2.0).  Given that we also now
-# require TLS (ver 2.6.0), it seems pointless to fix them.
-# ??? Surely this should now be the generic default.
-arch_minimum_kernel=2.6.0
-
 # We did historically export the unwinder from glibc.
 libc_cv_gcc_unwind_find_fde=yes
diff --git a/ports/sysdeps/unix/sysv/linux/alpha/configure.in b/ports/sysdeps/unix/sysv/linux/alpha/configure.in
index 5a1af62..a8b6996 100644
--- a/ports/sysdeps/unix/sysv/linux/alpha/configure.in
+++ b/ports/sysdeps/unix/sysv/linux/alpha/configure.in
@@ -1,11 +1,5 @@
 GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
 # Local configure fragment for sysdeps/unix/sysv/linux/alpha
 
-# There are several bits that no longer compile cleanly without
-# realtime signal support (ver 2.2.0).  Given that we also now
-# require TLS (ver 2.6.0), it seems pointless to fix them.
-# ??? Surely this should now be the generic default.
-arch_minimum_kernel=2.6.0
-
 # We did historically export the unwinder from glibc.
 libc_cv_gcc_unwind_find_fde=yes
diff --git a/ports/sysdeps/unix/sysv/linux/ia64/configure b/ports/sysdeps/unix/sysv/linux/ia64/configure
index 3d025f9..7132371 100644
--- a/ports/sysdeps/unix/sysv/linux/ia64/configure
+++ b/ports/sysdeps/unix/sysv/linux/ia64/configure
@@ -1,10 +1,4 @@
 # This file is generated from configure.in by Autoconf.  DO NOT EDIT!
  # Local configure fragment for sysdeps/unix/sysv/linux/ia64
 
-# There are several bits that no longer compile cleanly without
-# realtime signal support (ver 2.2.0).  Given that we also now
-# require TLS (ver 2.6.0), it seems pointless to fix them.
-# ??? Surely this should now be the generic default.
-arch_minimum_kernel=2.6.0
-
 ldd_rewrite_script=$dir/ldd-rewrite.sed
diff --git a/ports/sysdeps/unix/sysv/linux/ia64/configure.in b/ports/sysdeps/unix/sysv/linux/ia64/configure.in
index 99057b8..4fb5647 100644
--- a/ports/sysdeps/unix/sysv/linux/ia64/configure.in
+++ b/ports/sysdeps/unix/sysv/linux/ia64/configure.in
@@ -1,10 +1,4 @@
 GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
 # Local configure fragment for sysdeps/unix/sysv/linux/ia64
 
-# There are several bits that no longer compile cleanly without
-# realtime signal support (ver 2.2.0).  Given that we also now
-# require TLS (ver 2.6.0), it seems pointless to fix them.
-# ??? Surely this should now be the generic default.
-arch_minimum_kernel=2.6.0
-
 ldd_rewrite_script=$dir/ldd-rewrite.sed
diff --git a/ports/sysdeps/unix/sysv/linux/ia64/kernel-features.h b/ports/sysdeps/unix/sysv/linux/ia64/kernel-features.h
index f8dc481..061a86d 100644
--- a/ports/sysdeps/unix/sysv/linux/ia64/kernel-features.h
+++ b/ports/sysdeps/unix/sysv/linux/ia64/kernel-features.h
@@ -22,9 +22,7 @@
 
 /* The late 2.5 kernels saw a lot of new CLONE_* flags.  Summarize
    their availability with one define.  */
-#if __LINUX_KERNEL_VERSION >= 132416
-# define __ASSUME_CLONE_THREAD_FLAGS   1
-#endif
+#define __ASSUME_CLONE_THREAD_FLAGS   1
 
 /* The utimes syscall has been available for some architectures
    forever.  */
diff --git a/sysdeps/unix/sysv/linux/configure b/sysdeps/unix/sysv/linux/configure
index 0650067..ccc4c67 100644
--- a/sysdeps/unix/sysv/linux/configure
+++ b/sysdeps/unix/sysv/linux/configure
@@ -284,34 +284,34 @@ test -n "$arch_minimum_kernel" ||
 case "$machine" in
   i386*)
     libc_cv_gcc_unwind_find_fde=yes
-    arch_minimum_kernel=2.4.21
+    arch_minimum_kernel=2.6.0
     ;;
   powerpc/powerpc32)
     libc_cv_gcc_unwind_find_fde=yes
-    arch_minimum_kernel=2.4.21
+    arch_minimum_kernel=2.6.0
     ;;
   s390/s390-32)
     libc_cv_gcc_unwind_find_fde=yes
-    arch_minimum_kernel=2.4.21
+    arch_minimum_kernel=2.6.0
     ;;
   s390/s390-64)
     libc_cv_gcc_unwind_find_fde=yes
-    arch_minimum_kernel=2.4.21
+    arch_minimum_kernel=2.6.0
     ;;
   sh*)
-    arch_minimum_kernel=2.4.21
+    arch_minimum_kernel=2.6.0
     libc_cv_gcc_unwind_find_fde=yes
     ;;
   sparc/sparc64*)
     libc_cv_gcc_unwind_find_fde=yes
-    arch_minimum_kernel=2.4.21
+    arch_minimum_kernel=2.6.0
     ;;
   sparc*)
     libc_cv_gcc_unwind_find_fde=yes
-    arch_minimum_kernel=2.4.21
+    arch_minimum_kernel=2.6.0
     ;;
   *)
-    arch_minimum_kernel=2.4.21
+    arch_minimum_kernel=2.6.0
     ;;
 esac
 if test -n "$minimum_kernel"; then
diff --git a/sysdeps/unix/sysv/linux/configure.in b/sysdeps/unix/sysv/linux/configure.in
index fc514fb..1a00329 100644
--- a/sysdeps/unix/sysv/linux/configure.in
+++ b/sysdeps/unix/sysv/linux/configure.in
@@ -41,34 +41,34 @@ test -n "$arch_minimum_kernel" ||
 case "$machine" in
   i386*)
     libc_cv_gcc_unwind_find_fde=yes
-    arch_minimum_kernel=2.4.21
+    arch_minimum_kernel=2.6.0
     ;;
   powerpc/powerpc32)
     libc_cv_gcc_unwind_find_fde=yes
-    arch_minimum_kernel=2.4.21
+    arch_minimum_kernel=2.6.0
     ;;
   s390/s390-32)
     libc_cv_gcc_unwind_find_fde=yes
-    arch_minimum_kernel=2.4.21
+    arch_minimum_kernel=2.6.0
     ;;
   s390/s390-64)
     libc_cv_gcc_unwind_find_fde=yes
-    arch_minimum_kernel=2.4.21
+    arch_minimum_kernel=2.6.0
     ;;
   sh*)
-    arch_minimum_kernel=2.4.21
+    arch_minimum_kernel=2.6.0
     libc_cv_gcc_unwind_find_fde=yes
     ;;
   sparc/sparc64*)
     libc_cv_gcc_unwind_find_fde=yes
-    arch_minimum_kernel=2.4.21
+    arch_minimum_kernel=2.6.0
     ;;
   sparc*)
     libc_cv_gcc_unwind_find_fde=yes
-    arch_minimum_kernel=2.4.21
+    arch_minimum_kernel=2.6.0
     ;;
   *)
-    arch_minimum_kernel=2.4.21
+    arch_minimum_kernel=2.6.0
     ;;
 esac
 if test -n "$minimum_kernel"; then
diff --git a/sysdeps/unix/sysv/linux/kernel-features.h b/sysdeps/unix/sysv/linux/kernel-features.h
index e97539b..b949f16 100644
--- a/sysdeps/unix/sysv/linux/kernel-features.h
+++ b/sysdeps/unix/sysv/linux/kernel-features.h
@@ -92,62 +92,41 @@
 # define __ASSUME_MMAP2_SYSCALL		1
 #endif
 
-/* On x86, the set_thread_area syscall was introduced in 2.5.29, but its
-   semantics was changed in 2.5.30, and again after 2.5.31.  */
-#if __LINUX_KERNEL_VERSION >= 132384 && defined __i386__
-# define __ASSUME_SET_THREAD_AREA_SYSCALL	1
-#endif
-
 /* The late 2.5 kernels saw a lot of new CLONE_* flags.  Summarize
    their availability with one define.  The changes were made first
    for i386 and the have to be done separately for the other archs.
    For i386 we pick 2.5.50 as the first version with support.
    For s390*, SPARC, PPC, x86-64, and SH we pick 2.5.64 as the first
    version with support.  */
-#if ((__LINUX_KERNEL_VERSION >= 132402 && defined __i386__)		\
-     || (__LINUX_KERNEL_VERSION >= 132416				\
-	 && (defined __s390__ || defined __sparc__			\
-	     || defined __powerpc__ || defined __x86_64__ || defined __sh__)))
+#if (defined __i386__ || defined __s390__ || defined __sparc__		\
+     || defined __powerpc__ || defined __x86_64__ || defined __sh__)
 # define __ASSUME_CLONE_THREAD_FLAGS	1
 #endif
 
 /* Beginning with 2.5.63 support for realtime and monotonic clocks and
    timers based on them is available.  */
-#if __LINUX_KERNEL_VERSION >= 132415
-# define __ASSUME_POSIX_TIMERS		1
-#endif
+#define __ASSUME_POSIX_TIMERS		1
 
 /* Beginning with 2.6.12 the clock and timer supports CPU clocks.  */
 #if __LINUX_KERNEL_VERSION >= 0x2060c
 # define __ASSUME_POSIX_CPU_TIMERS	1
 #endif
 
-/* The requeue futex functionality was introduced in 2.5.70.  */
-#if __LINUX_KERNEL_VERSION >= 132422
-# define __ASSUME_FUTEX_REQUEUE	1
-#endif
-
-/* The statfs64 syscalls are available in 2.5.74.  */
-#if __LINUX_KERNEL_VERSION >= 132426
-# define __ASSUME_STATFS64	1
-#endif
+/* The statfs64 syscalls are available in 2.5.74 (but not for alpha).  */
+#define __ASSUME_STATFS64	1
 
 /* Starting with at least 2.5.74 the kernel passes the setuid-like exec
    flag unconditionally up to the child.  */
-#if __LINUX_KERNEL_VERSION >= 132426
-# define __ASSUME_AT_SECURE	1
-#endif
+#define __ASSUME_AT_SECURE	1
 
 /* Starting with the 2.5.75 kernel the kernel fills in the correct value
    in the si_pid field passed as part of the siginfo_t struct to signal
    handlers.  */
-#if __LINUX_KERNEL_VERSION >= 132427
-# define __ASSUME_CORRECT_SI_PID	1
-#endif
+#define __ASSUME_CORRECT_SI_PID	1
 
 /* The tgkill syscall was instroduced for i386 in 2.5.75.  On x86-64,
    sparc, SH, ppc, and ppc64 it was introduced in 2.6.0-test3. */
-#if (__LINUX_KERNEL_VERSION >= 132427 && defined __i386__) \
+#if defined __i386__ \
     || (__LINUX_KERNEL_VERSION >= 132609 \
         && (defined __x86_64__ || defined __powerpc__ \
             || defined __sh__ || defined __sparc__))
@@ -158,7 +137,7 @@
    forever.  For x86 it was introduced after 2.5.75, for x86-64,
    ppc, and ppc64 it was introduced in 2.6.0-test3.  */
 #if defined __sparc__ \
-    || (__LINUX_KERNEL_VERSION > 132427 && defined __i386__) \
+    || defined __i386__ \
     || (__LINUX_KERNEL_VERSION > 132609 && defined __x86_64__) \
     || (__LINUX_KERNEL_VERSION >= 132609 && defined __powerpc__) \
     || (__LINUX_KERNEL_VERSION >= 132609 && defined __sh__)
@@ -192,7 +171,7 @@
 /* Starting with 2.6.0 PowerPC adds signal/swapcontext support for Vector
    SIMD (AKA Altivec, VMX) instructions and register state.  This changes
    the overall size of the sigcontext and adds the swapcontext syscall.  */
-#if __LINUX_KERNEL_VERSION >= 132608 && defined __powerpc__
+#ifdef __powerpc__
 # define __ASSUME_SWAPCONTEXT_SYSCALL	1
 #endif
 
@@ -212,9 +191,7 @@
 
 /* Starting with version 2.5.3, the initial location returned by `brk'
    after exec is always rounded up to the next page.  */
-#if __LINUX_KERNEL_VERSION >= 132355
-# define __ASSUME_BRK_PAGE_ROUNDED	1
-#endif
+#define __ASSUME_BRK_PAGE_ROUNDED	1
 
 /* Starting with version 2.6.9, the waitid system call is available.
    Except for powerpc{,64} and s390{,x}, where it is available in 2.6.12.  */
@@ -234,9 +211,7 @@
 /* Early kernel used "shm" as the filesystem name for the filesystem used
    for shm_open etc.  Later it is "tmpfs".  2.4.20 is a safe bet for the
    cutover.  */
-#if __LINUX_KERNEL_VERSION >= 0x02041a
-# define __ASSUME_TMPFS_NAME	1
-#endif
+#define __ASSUME_TMPFS_NAME	1
 
 /* pselect/ppoll were introduced just after 2.6.16-rc1.  Due to the way
    the kernel versions are advertised we can only rely on 2.6.17 to have

-- 
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]