linux: fix mips boot decompressor build
Replace the now defunct 062-mips_decompressor_build_fix.patch with another patch that simply undefines the arch memset and memcpy defines to avoid syntax errors in the redeclaration. Signed-off-by: Jo-Philipp Wich <jow@openwrt.org> SVN-Revision: 44223
This commit is contained in:
		| @@ -1,64 +0,0 @@ | |||||||
| 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(-) |  | ||||||
|  |  | ||||||
| --- a/arch/mips/boot/compressed/decompress.c |  | ||||||
| +++ b/arch/mips/boot/compressed/decompress.c |  | ||||||
| @@ -12,7 +12,6 @@ |  | ||||||
|   */ |  | ||||||
|   |  | ||||||
|  #include <linux/types.h> |  | ||||||
| -#include <linux/kernel.h> |  | ||||||
|  #include <linux/string.h> |  | ||||||
|   |  | ||||||
|  #include <asm/addrspace.h> |  | ||||||
| @@ -0,0 +1,18 @@ | |||||||
|  | --- a/arch/mips/boot/compressed/decompress.c | ||||||
|  | +++ b/arch/mips/boot/compressed/decompress.c | ||||||
|  | @@ -45,6 +45,7 @@ void error(char *x) | ||||||
|  |  #define STATIC static | ||||||
|  |   | ||||||
|  |  #ifdef CONFIG_KERNEL_GZIP | ||||||
|  | +#undef memcpy | ||||||
|  |  void *memcpy(void *dest, const void *src, size_t n) | ||||||
|  |  { | ||||||
|  |  	int i; | ||||||
|  | @@ -59,6 +60,7 @@ void *memcpy(void *dest, const void *src | ||||||
|  |  #endif | ||||||
|  |   | ||||||
|  |  #ifdef CONFIG_KERNEL_BZIP2 | ||||||
|  | +#undef memset | ||||||
|  |  void *memset(void *s, int c, size_t n) | ||||||
|  |  { | ||||||
|  |  	int i; | ||||||
		Reference in New Issue
	
	Block a user
	 Jo-Philipp Wich
					Jo-Philipp Wich