diff options
author | florian <florian@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2012-11-12 12:49:47 +0000 |
---|---|---|
committer | florian <florian@3c298f89-4303-0410-b956-a3cf2f4a3e73> | 2012-11-12 12:49:47 +0000 |
commit | edf444b66564970809b66e52b1c0be2b48ed10c2 (patch) | |
tree | 827eab8d13e738f5cf7fab2a28d305e4f687cced | |
parent | d5f52f466ee5b18a569603b6b6f1e01974e8346f (diff) |
[kernel] 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>
git-svn-id: svn://svn.openwrt.org/openwrt/trunk@34170 3c298f89-4303-0410-b956-a3cf2f4a3e73
-rw-r--r-- | target/linux/ar7/patches-3.6/100-decompressor_memcpy_fix.patch | 12 | ||||
-rw-r--r-- | target/linux/generic/patches-3.6/062-mips_decompressor_build_fix.patch | 71 |
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 56c8b3160..000000000 --- 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 000000000..082171845 --- /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 + |