about summary refs log tree commit diff
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2010-04-04 01:02:09 -0700
committerPetr Baudis <pasky@ucw.cz>2010-05-12 03:21:09 +0200
commit16c1804e696304140e54108ddd2889cf7b54b768 (patch)
tree624122a5ad9c1165237381b60ce1ce5dff02efac
parent159aeed982dc4c36de78027d262be8370e2f35a0 (diff)
downloadglibc-16c1804e696304140e54108ddd2889cf7b54b768.tar.gz
glibc-16c1804e696304140e54108ddd2889cf7b54b768.tar.xz
glibc-16c1804e696304140e54108ddd2889cf7b54b768.zip
Fix retrieving of kernel header version.
(cherry picked from commit 9e37946dba22b53c5108eef777e867f93c894502)
-rw-r--r--ChangeLog6
-rw-r--r--csu/Makefile15
2 files changed, 19 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 75bd6b87b7..4ccc115930 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2010-04-04  Ulrich Drepper  <drepper@redhat.com>
+
+	[BZ #11287]
+	* csu/Makefile ($(objpfx)version-info.h): Handle newer kernel headers
+	which don't define UTS_RELEASE.
+
 2010-04-04  H.J. Lu  <hongjiu.lu@intel.com>
 	    Ulrich Drepper  <drepper@redhat.com>
 
diff --git a/csu/Makefile b/csu/Makefile
index 0e2ae07cf7..69e07c71cf 100644
--- a/csu/Makefile
+++ b/csu/Makefile
@@ -1,5 +1,5 @@
 # Makefile for csu code for GNU C library.
-# Copyright (C) 1995-2004, 2005, 2006 Free Software Foundation, Inc.
+# Copyright (C) 1995-2004, 2005, 2006, 2010 Free Software Foundation, Inc.
 # This file is part of the GNU C Library.
 
 # The GNU C Library is free software; you can redistribute it and/or
@@ -209,9 +209,20 @@ $(objpfx)version-info.h: $(common-objpfx)config.make $(all-Banner-files)
 	   linux*) version=`(printf '%s\n%s\n' \
 				    '#include <linux/version.h>' \
 				    UTS_RELEASE \
-			     | $(CC) $(CPPFLAGS) -E -P - -DNOT_IN_libc=1 | \
+			     | $(CC) $(CPPFLAGS) -O -E -P - -DNOT_IN_libc=1 | \
 			     sed -e 's/"\([^"]*\)".*/\1/p' -e d) 2>/dev/null`;\
 		   if [ -z "$$version" ]; then \
+		     version=`(printf '%s\n%s\n' \
+				      '#include <linux/version.h>' \
+				       LINUX_VERSION_CODE \
+			       | $(CC) $(CPPFLAGS) -O -E -P - -DNOT_IN_libc=1 \
+			       | sed -n -e '/^[123456789].*/p' \
+			       | awk '{v=$$1; \
+				       printf("%d.%d.%d\n", \
+					      v/65535, v/256%256, v%256)}') \
+				2>/dev/null`; \
+		   fi; \
+		   if [ -z "$$version" ]; then \
 		     if [ -r /proc/version ]; then \
 		       version=`sed 's/.*Linux version \([^ ]*\) .*/>>\1<</' \
 				< /proc/version`; \