aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorFlorian Fainelli <florian@openwrt.org>2012-11-12 12:49:47 +0000
committerFlorian Fainelli <florian@openwrt.org>2012-11-12 12:49:47 +0000
commita8c492dbb37a4f5213e428e011913e584dcb0bf7 (patch)
tree3ba1badc50936096304c188c644faca3cfd3e7e5
parent5cddb170cdbe2ab2cdfd3e24cd025b387baa5438 (diff)
downloadupstream-a8c492dbb37a4f5213e428e011913e584dcb0bf7.tar.gz
upstream-a8c492dbb37a4f5213e428e011913e584dcb0bf7.tar.bz2
upstream-a8c492dbb37a4f5213e428e011913e584dcb0bf7.zip
MIPS: add a build fix for arch/mips/boot/compressed/decompress.c
And get rid of the AR7 patch because at least the Alchemy SoC also needs it Signed-off-by: Florian Fainelli <florian@openwrt.org> SVN-Revision: 34170
-rw-r--r--target/linux/ar7/patches-3.6/100-decompressor_memcpy_fix.patch12
-rw-r--r--target/linux/generic/patches-3.6/062-mips_decompressor_build_fix.patch71
2 files changed, 71 insertions, 12 deletions
diff --git a/target/linux/ar7/patches-3.6/100-decompressor_memcpy_fix.patch b/target/linux/ar7/patches-3.6/100-decompressor_memcpy_fix.patch
deleted file mode 100644
index 56c8b31603..0000000000
--- a/target/linux/ar7/patches-3.6/100-decompressor_memcpy_fix.patch
+++ /dev/null
@@ -1,12 +0,0 @@
---- a/arch/mips/boot/compressed/decompress.c
-+++ b/arch/mips/boot/compressed/decompress.c
-@@ -44,6 +44,9 @@ void error(char *x)
- #define STATIC static
-
- #ifdef CONFIG_KERNEL_GZIP
-+#ifdef memcpy
-+#undef memcpy
-+#endif
- void *memcpy(void *dest, const void *src, size_t n)
- {
- int i;
diff --git a/target/linux/generic/patches-3.6/062-mips_decompressor_build_fix.patch b/target/linux/generic/patches-3.6/062-mips_decompressor_build_fix.patch
new file mode 100644
index 0000000000..0821718454
--- /dev/null
+++ b/target/linux/generic/patches-3.6/062-mips_decompressor_build_fix.patch
@@ -0,0 +1,71 @@
+From 0db3db45f5bd6df4bdc03bbd5dec672e16164c4e Mon Sep 17 00:00:00 2001
+From: Florian Fainelli <florian@openwrt.org>
+Date: Mon, 12 Nov 2012 12:31:55 +0100
+Subject: [PATCH] MIPS: decompressor: fix build failure on memcpy() in
+ decompress.c
+
+The decompress.c file includes linux/kernel.h which causes the following
+inclusion chain to be pulled:
+linux/kernel.h ->
+ linux/dynamic_debug.h ->
+ linux/string.h ->
+ asm/string.h
+
+We end up having a the GCC builtin + architecture specific memcpy() expanding
+into this:
+
+void *({ size_t __len = (size_t n); void *__ret; if
+(__builtin_constant_p(size_t n) && __len >= 64) __ret = memcpy((void *dest),
+(const void *src), __len); else __ret = __builtin_memcpy((void *dest), (const
+void *src), __len); __ret; })
+{
+ [memcpy implementation in decompress.c starts here]
+ int i;
+ const char *s = src;
+ char *d = dest;
+
+ for (i = 0; i < n; i++)
+ d[i] = s[i];
+ return dest;
+}
+
+raising the following compilation error:
+arch/mips/boot/compressed/decompress.c:46:8: error: expected identifier or '('
+before '{' token
+
+There are at least three possibilities to fix this issue:
+
+1) define _LINUX_STRING_H_ at the beginning of decompress.c to prevent
+ further linux/string.h definitions and declarations from being used, and add
+ an explicit strstr() declaration for linux/dynamic_debug.h
+
+2) remove the inclusion of linux/kernel.h because we actually use no definition
+ or declaration from this header file
+
+3) undefine memcpy or re-define memcpy to memcpy thus resulting in picking up
+ the local memcpy() implementation to this compilation unit
+
+This patch uses the second option which is the less intrusive one.
+
+Signed-off-by: Florian Fainelli <florian@openwrt.org>
+---
+ arch/mips/boot/compressed/decompress.c | 2 --
+ 1 file changed, 2 deletions(-)
+
+diff --git a/arch/mips/boot/compressed/decompress.c b/arch/mips/boot/compressed/decompress.c
+index 5cad0fa..d6c5586 100644
+--- a/arch/mips/boot/compressed/decompress.c
++++ b/arch/mips/boot/compressed/decompress.c
+@@ -10,9 +10,7 @@
+ * Free Software Foundation; either version 2 of the License, or (at your
+ * option) any later version.
+ */
+-
+ #include <linux/types.h>
+-#include <linux/kernel.h>
+
+ #include <asm/addrspace.h>
+
+--
+1.7.10.4
+