summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--recipes-kernel/linux/linux-xilinx/kbuild-Fix-passing-Wno-options-to-gcc-4.4.patch94
-rw-r--r--recipes-kernel/linux/linux-xilinx_git.bb3
2 files changed, 96 insertions, 1 deletions
diff --git a/recipes-kernel/linux/linux-xilinx/kbuild-Fix-passing-Wno-options-to-gcc-4.4.patch b/recipes-kernel/linux/linux-xilinx/kbuild-Fix-passing-Wno-options-to-gcc-4.4.patch
new file mode 100644
index 0000000..980d431
--- /dev/null
+++ b/recipes-kernel/linux/linux-xilinx/kbuild-Fix-passing-Wno-options-to-gcc-4.4.patch
@@ -0,0 +1,94 @@
+From 996ad5340f8c33dd4cb01d30c251e82664457b9d Mon Sep 17 00:00:00 2001
+From: Adrian Alonso <aalonso@secretlab.ca>
+Date: Fri, 27 May 2011 10:19:06 -0500
+Subject: [PATCH] kbuild: Fix passing Wno options to gcc 4.4+
+MIME-Version: 1.0
+Content-Type: text/plain; charset=UTF-8
+Content-Transfer-Encoding: 8bit
+
+* From kernel mailing list
+ http://permalink.gmane.org/gmane.linux.kernel.next/16754
+ Starting with 4.4, gcc will happily accept -Wno-≤anything> in the
+ cc-option test and complain later when compiling a file that has some
+ other warning. This rather unexpected behavior is intentional as per
+ http://gcc.gnu.org/PR28322, so work around it by testing for support of
+ the opposite option (without the no-). Introduce a new Makefile function
+ cc-disable-warning that does this and update two uses of cc-option in
+ the toplevel Makefile.
+* Add Makefile option to disable warnings from unused-but-set-variable
+
+ Reported-by: Stephen Rothwell <sfr <at> canb.auug.org.au>
+ Signed-off-by: Michal Marek <mmarek <at> suse.cz>
+ Signed-off-by: Adrian Alonso <aalonso@secretlab.ca>
+---
+ Documentation/kbuild/makefiles.txt | 12 ++++++++++++
+ Makefile | 6 +++++-
+ scripts/Kbuild.include | 5 +++++
+ 3 files changed, 22 insertions(+), 1 deletions(-)
+
+diff --git a/Documentation/kbuild/makefiles.txt b/Documentation/kbuild/makefiles.txt
+index 0ef00bd..e07decf 100644
+--- a/Documentation/kbuild/makefiles.txt
++++ b/Documentation/kbuild/makefiles.txt
+@@ -499,6 +499,18 @@ more details, with real examples.
+ gcc >= 3.00. For gcc < 3.00, -malign-functions=4 is used.
+ Note: cc-option-align uses KBUILD_CFLAGS for $(CC) options
+
++ cc-disable-warning
++ cc-disable-warning checks if gcc supports a given warning and returns
++ the commandline switch to disable it. This special function is needed,
++ because gcc 4.4 and later accept any unknown -Wno-* option and only
++ warn about it if there is another warning in the source file.
++
++ Example:
++ KBUILD_CFLAGS += $(call cc-disable-warning, unused-but-set-variable)
++
++ In the above example, -Wno-unused-but-set-variable will be added to
++ KBUILD_CFLAGS only if gcc really accepts it.
++
+ cc-version
+ cc-version returns a numerical version of the $(CC) compiler version.
+ The format is <major><minor> where both are two digits. So for example
+diff --git a/Makefile b/Makefile
+index 74b2555..e2133ed 100644
+--- a/Makefile
++++ b/Makefile
+@@ -554,6 +554,10 @@ ifndef CONFIG_CC_STACKPROTECTOR
+ KBUILD_CFLAGS += $(call cc-option, -fno-stack-protector)
+ endif
+
++# This warning generated too much noise in a regular build.
++# Use make W=1 to enable this warning (see scripts/Makefile.build)
++KBUILD_CFLAGS += $(call cc-disable-warning, unused-but-set-variable)
++
+ ifdef CONFIG_FRAME_POINTER
+ KBUILD_CFLAGS += -fno-omit-frame-pointer -fno-optimize-sibling-calls
+ else
+@@ -599,7 +603,7 @@ CHECKFLAGS += $(NOSTDINC_FLAGS)
+ KBUILD_CFLAGS += $(call cc-option,-Wdeclaration-after-statement,)
+
+ # disable pointer signed / unsigned warnings in gcc 4.0
+-KBUILD_CFLAGS += $(call cc-option,-Wno-pointer-sign,)
++KBUILD_CFLAGS += $(call cc-disable-warning, pointer-sign)
+
+ # disable invalid "can't wrap" optimizations for signed / pointers
+ KBUILD_CFLAGS += $(call cc-option,-fno-strict-overflow)
+diff --git a/scripts/Kbuild.include b/scripts/Kbuild.include
+index ed2773e..a302a6c 100644
+--- a/scripts/Kbuild.include
++++ b/scripts/Kbuild.include
+@@ -118,6 +118,11 @@ cc-option-yn = $(call try-run,\
+ cc-option-align = $(subst -functions=0,,\
+ $(call cc-option,-falign-functions=0,-malign-functions=0))
+
++# cc-disable-warning
++# Usage: cflags-y += $(call cc-disable-warning,unused-but-set-variable)
++cc-disable-warning = $(call try-run,\
++ $(CC) $(KBUILD_CPPFLAGS) $(KBUILD_CFLAGS) -W$(strip $(1)) -c -xc /dev/null -o "$$TMP",-Wno-$(strip $(1)))
++
+ # cc-version
+ # Usage gcc-ver := $(call cc-version)
+ cc-version = $(shell $(CONFIG_SHELL) $(srctree)/scripts/gcc-version.sh $(CC))
+--
+1.7.5.2
+
diff --git a/recipes-kernel/linux/linux-xilinx_git.bb b/recipes-kernel/linux/linux-xilinx_git.bb
index 6c315d9..f978b61 100644
--- a/recipes-kernel/linux/linux-xilinx_git.bb
+++ b/recipes-kernel/linux/linux-xilinx_git.bb
@@ -7,10 +7,11 @@ LICENSE = "GPL"
LIC_FILES_CHKSUM = "file://COPYING;md5=d7810fab7487fb0aad327b76f1be7cd7"
PV = "2.6.37"
-PR = "r9"
+PR = "r10"
SRC_URI = "git://git.xilinx.com/linux-2.6-xlnx.git;protocol=git \
file://linux-xilinx-do-not-use-OS-option.patch \
+ file://kbuild-Fix-passing-Wno-options-to-gcc-4.4.patch \
file://defconfig"
inherit kernel xilinx-kernel xilinx-utils