about summary refs log tree commit diff
diff options
context:
space:
mode:
authorJoseph Myers <joseph@codesourcery.com>2012-02-27 20:52:30 +0000
committerJoseph Myers <joseph@codesourcery.com>2012-02-27 20:52:30 +0000
commitabd923dbf2d828612e00a07d47365040b5218d33 (patch)
treeda06392c974fa456f161e66baebe3ace599e82b6
parent6664049b71f562ffbf77f96cf6a7521aa6135ed2 (diff)
downloadglibc-abd923dbf2d828612e00a07d47365040b5218d33.tar.gz
glibc-abd923dbf2d828612e00a07d47365040b5218d33.tar.xz
glibc-abd923dbf2d828612e00a07d47365040b5218d33.zip
Require Linux kernel headers from "make headers_install", >= 2.6.19.1.
-rw-r--r--ChangeLog12
-rw-r--r--INSTALL62
-rw-r--r--manual/install.texi65
-rw-r--r--sysdeps/unix/sysv/linux/configure18
-rw-r--r--sysdeps/unix/sysv/linux/configure.in2
5 files changed, 84 insertions, 75 deletions
diff --git a/ChangeLog b/ChangeLog
index 5e785da60f..3f64fd8262 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,17 @@
 2012-02-27  Joseph Myers  <joseph@codesourcery.com>
 
+	* manual/install.texi (--with-headers): Describe headers as
+	interface headers, not private headers.
+	(Specific advice for GNU/Linux systems): Describe use of headers
+	from "make headers_install", not private headers from older
+	kernels.
+	* INSTALL: Regenerated.
+	* sysdeps/unix/sysv/linux/configure.in (LIBC_LINUX_VERSION):
+	Change to 2.6.19.
+	* sysdeps/unix/sysv/linux/configure: Regenerated.
+
+2012-02-27  Joseph Myers  <joseph@codesourcery.com>
+
 	* manual/llio.texi (fclean): Remove documentation.
 
 2012-02-27  Joseph Myers  <joseph@codesourcery.com>
diff --git a/INSTALL b/INSTALL
index 0b86eea709..ba75a5bd3a 100644
--- a/INSTALL
+++ b/INSTALL
@@ -59,9 +59,10 @@ will be used, and CFLAGS sets optimization options for the compiler.
 
 `--with-headers=DIRECTORY'
      Look for kernel header files in DIRECTORY, not `/usr/include'.
-     Glibc needs information from the kernel's private header files.
-     Glibc will normally look in `/usr/include' for them, but if you
-     specify this option, it will look in DIRECTORY instead.
+     Glibc needs information from the kernel's header files describing
+     the interface to the kernel.  Glibc will normally look in
+     `/usr/include' for them, but if you specify this option, it will
+     look in DIRECTORY instead.
 
      This option is primarily of use on a system where the headers in
      `/usr/include' come from an older version of glibc.  Conflicts can
@@ -347,37 +348,34 @@ Specific advice for GNU/Linux systems
 =====================================
 
 If you are installing GNU libc on a GNU/Linux system, you need to have
-the header files from a 2.2 or newer kernel around for reference.  For
-some architectures, like ia64, sh and hppa, you need at least headers
-from kernel 2.3.99 (sh and hppa) or 2.4.0 (ia64).  You do not need to
-use that kernel, just have its headers where glibc can access at them.
-The easiest way to do this is to unpack it in a directory such as
-`/usr/src/linux-2.2.1'.  In that directory, run `make config' and
-accept all the defaults.  Then run `make include/linux/version.h'.
-Finally, configure glibc with the option
-`--with-headers=/usr/src/linux-2.2.1/include'.  Use the most recent
-kernel you can get your hands on.
-
-   An alternate tactic is to unpack the 2.2 kernel and run `make
-config' as above; then, rename or delete `/usr/include', create a new
-`/usr/include', and make symbolic links of `/usr/include/linux' and
-`/usr/include/asm' into the kernel sources.  You can then configure
-glibc with no special options.
+the header files from a 2.6.19.1 or newer kernel around for reference.
+These headers must be installed using `make headers_install'; the
+headers present in the kernel source directory are not suitable for
+direct use by GNU libc.  You do not need to use that kernel, just have
+its headers installed where glibc can access them, referred to here as
+INSTALL-DIRECTORY.  The easiest way to do this is to unpack it in a
+directory such as `/usr/src/linux-VERSION'.  In that directory, run
+`make headers_install INSTALL_HDR_PATH=INSTALL-DIRECTORY'.  Finally,
+configure glibc with the option
+`--with-headers=INSTALL-DIRECTORY/include'.  Use the most recent kernel
+you can get your hands on.  (If you are cross-compiling GNU libc, you
+need to specify `ARCH=ARCHITECTURE' in the `make headers_install'
+command, where ARCHITECTURE is the architecture name used by the Linux
+kernel, such as `x86' or `powerpc'.)
 
    After installing GNU libc, you may need to remove or rename
-`/usr/include/linux' and `/usr/include/asm', and replace them with
-copies of `include/linux' and `include/asm-$ARCHITECTURE' taken from
-the Linux source package which supplied kernel headers for building the
-library.  ARCHITECTURE will be the machine architecture for which the
-library was built, such as `i386' or `alpha'.  You do not need to do
-this if you did not specify an alternate kernel header source using
-`--with-headers'.  The intent here is that these directories should be
-copies of, *not* symlinks to, the kernel headers used to build the
-library.
-
-   Note that `/usr/include/net' and `/usr/include/scsi' should *not* be
-symlinks into the kernel sources.  GNU libc provides its own versions
-of these files.
+directories such as `/usr/include/linux' and `/usr/include/asm', and
+replace them with copies of directories such as `linux' and `asm' from
+`INSTALL-DIRECTORY/include'.  All directories present in
+`INSTALL-DIRECTORY/include' should be copied, except that GNU libc
+provides its own version of `/usr/include/scsi'; the files provided by
+the kernel should be copied without replacing those provided by GNU
+libc.  The `linux', `asm' and `asm-generic' directories are required to
+compile programs using GNU libc; the other directories describe
+interfaces to the kernel but are not required if not compiling programs
+using those interfaces.  You do not need to copy kernel headers if you
+did not specify an alternate kernel header source using
+`--with-headers'.
 
    GNU/Linux expects some components of the libc installation to be in
 `/lib' and some in `/usr/lib'.  This is handled automatically if you
diff --git a/manual/install.texi b/manual/install.texi
index 1656c5e052..793cc8dc12 100644
--- a/manual/install.texi
+++ b/manual/install.texi
@@ -79,8 +79,9 @@ directory if that option is specified, or @file{/usr/local} otherwise.
 
 @item --with-headers=@var{directory}
 Look for kernel header files in @var{directory}, not
-@file{/usr/include}.  Glibc needs information from the kernel's private
-header files.  Glibc will normally look in @file{/usr/include} for them,
+@file{/usr/include}.  Glibc needs information from the kernel's header
+files describing the interface to the kernel.  Glibc will normally
+look in @file{/usr/include} for them,
 but if you specify this option, it will look in @var{DIRECTORY} instead.
 
 This option is primarily of use on a system where the headers in
@@ -393,39 +394,37 @@ patches, although we try to avoid this.
 @appendixsec Specific advice for GNU/Linux systems
 @cindex kernel header files
 
-If you are installing GNU libc on a GNU/Linux system, you need to have the
-header files from a 2.2 or newer kernel around for reference.  For some
-architectures, like ia64, sh and hppa, you need at least headers from
-kernel 2.3.99 (sh and hppa) or 2.4.0 (ia64).  You do not need to use
-that kernel, just have its headers where glibc can access at them.  The
-easiest way to do this is to unpack it in a directory such as
-@file{/usr/src/linux-2.2.1}.  In that directory, run @samp{make config}
-and accept all the defaults.  Then run @samp{make
-include/linux/version.h}.  Finally, configure glibc with the option
-@samp{--with-headers=/usr/src/linux-2.2.1/include}.  Use the most recent
-kernel you can get your hands on.
-
-An alternate tactic is to unpack the 2.2 kernel and run @samp{make
-config} as above; then, rename or delete @file{/usr/include}, create a
-new @file{/usr/include}, and make symbolic links of
-@file{/usr/include/linux} and @file{/usr/include/asm} into the kernel
-sources.  You can then configure glibc with no special options.
+If you are installing GNU libc on a GNU/Linux system, you need to have
+the header files from a 2.6.19.1 or newer kernel around for reference.
+These headers must be installed using @samp{make headers_install}; the
+headers present in the kernel source directory are not suitable for
+direct use by GNU libc.  You do not need to use that kernel, just have
+its headers installed where glibc can access them, referred to here as
+@var{install-directory}.  The easiest way to do this is to unpack it
+in a directory such as @file{/usr/src/linux-@var{version}}.  In that
+directory, run @samp{make headers_install
+INSTALL_HDR_PATH=@var{install-directory}}.  Finally, configure glibc
+with the option @samp{--with-headers=@var{install-directory}/include}.
+Use the most recent kernel you can get your hands on.  (If you are
+cross-compiling GNU libc, you need to specify
+@samp{ARCH=@var{architecture}} in the @samp{make headers_install}
+command, where @var{architecture} is the architecture name used by the
+Linux kernel, such as @samp{x86} or @samp{powerpc}.)
 
 After installing GNU libc, you may need to remove or rename
-@file{/usr/include/linux} and @file{/usr/include/asm}, and replace them
-with copies of @file{include/linux} and
-@file{include/asm-$@var{ARCHITECTURE}} taken from the Linux source
-package which supplied kernel headers for building the library.
-@var{ARCHITECTURE} will be the machine architecture for which the
-library was built, such as @samp{i386} or @samp{alpha}.  You do not need
-to do this if you did not specify an alternate kernel header source
-using @samp{--with-headers}.  The intent here is that these directories
-should be copies of, @strong{not} symlinks to, the kernel headers used to
-build the library.
-
-Note that @file{/usr/include/net} and @file{/usr/include/scsi} should
-@strong{not} be symlinks into the kernel sources.  GNU libc provides its
-own versions of these files.
+directories such as @file{/usr/include/linux} and
+@file{/usr/include/asm}, and replace them with copies of directories
+such as @file{linux} and @file{asm} from
+@file{@var{install-directory}/include}.  All directories present in
+@file{@var{install-directory}/include} should be copied, except that
+GNU libc provides its own version of @file{/usr/include/scsi}; the
+files provided by the kernel should be copied without replacing those
+provided by GNU libc.  The @file{linux}, @file{asm} and
+@file{asm-generic} directories are required to compile programs using
+GNU libc; the other directories describe interfaces to the kernel but
+are not required if not compiling programs using those interfaces.
+You do not need to copy kernel headers if you did not specify an
+alternate kernel header source using @samp{--with-headers}.
 
 GNU/Linux expects some components of the libc installation to be in
 @file{/lib} and some in @file{/usr/lib}.  This is handled automatically
diff --git a/sysdeps/unix/sysv/linux/configure b/sysdeps/unix/sysv/linux/configure
index c5fd66b778..33821c0bb6 100644
--- a/sysdeps/unix/sysv/linux/configure
+++ b/sysdeps/unix/sysv/linux/configure
@@ -242,33 +242,33 @@ $as_echo "$ac_cv_path_EGREP" >&6; }
 
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking installed Linux kernel header files" >&5
 $as_echo_n "checking installed Linux kernel header files... " >&6; }
-if ${libc_cv_linux2010+:} false; then :
+if ${libc_cv_linux2619+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <linux/version.h>
-#if !defined LINUX_VERSION_CODE || LINUX_VERSION_CODE <  (2 *65536+ 0 *256+ 10) /* 2.0.10 */
+#if !defined LINUX_VERSION_CODE || LINUX_VERSION_CODE <  (2 *65536+ 6 *256+ 19) /* 2.6.19 */
 eat flaming death
 #endif
 _ACEOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
   $EGREP "eat flaming death" >/dev/null 2>&1; then :
-  libc_cv_linux2010='TOO OLD!'
+  libc_cv_linux2619='TOO OLD!'
 else
-  libc_cv_linux2010='2.0.10 or later'
+  libc_cv_linux2619='2.6.19 or later'
 fi
 rm -f conftest*
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_linux2010" >&5
-$as_echo "$libc_cv_linux2010" >&6; }
-if test "$libc_cv_linux2010" != '2.0.10 or later'; then
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_linux2619" >&5
+$as_echo "$libc_cv_linux2619" >&6; }
+if test "$libc_cv_linux2619" != '2.6.19 or later'; then
   as_fn_error $? "GNU libc requires kernel header files from
-Linux 2.0.10 or later to be installed before configuring.
+Linux 2.6.19 or later to be installed before configuring.
 The kernel header files are found usually in /usr/include/asm and
 /usr/include/linux; make sure these directories use files from
-Linux 2.0.10 or later.  This check uses <linux/version.h>, so
+Linux 2.6.19 or later.  This check uses <linux/version.h>, so
 make sure that file was built correctly when installing the kernel header
 files.  To use kernel headers not from /usr/include/linux, use the
 configure option --with-headers." "$LINENO" 5
diff --git a/sysdeps/unix/sysv/linux/configure.in b/sysdeps/unix/sysv/linux/configure.in
index a73c3e51e1..59a13112b2 100644
--- a/sysdeps/unix/sysv/linux/configure.in
+++ b/sysdeps/unix/sysv/linux/configure.in
@@ -5,7 +5,7 @@ GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory.
 # existing system library, because we are the only system library.
 inhibit_glue=yes
 
-define([LIBC_LINUX_VERSION],[2.0.10])dnl
+define([LIBC_LINUX_VERSION],[2.6.19])dnl
 if test -n "$sysheaders"; then
   OLD_CPPFLAGS=$CPPFLAGS
   CPPFLAGS="$CPPFLAGS $SYSINCLUDES"