Backport the compiler support patches from upstream u-boot to this older version to make it compile with GCC 7. This was found by build bot. Signed-off-by: Hauke Mehrtens <hauke@hauke-m.de>
		
			
				
	
	
		
			70 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
			
		
		
	
	
			70 lines
		
	
	
		
			2.4 KiB
		
	
	
	
		
			Diff
		
	
	
	
	
	
| From 0a5051ce6ebd5f6fad58fd50d6922493d8447f14 Mon Sep 17 00:00:00 2001
 | |
| From: Jeroen Hofstee <jeroen@myspectrum.nl>
 | |
| Date: Thu, 18 Sep 2014 20:10:27 +0200
 | |
| Subject: compiler_gcc: prevent redefining attributes
 | |
| 
 | |
| The libc headers on FreeBSD and likely related projects as well contain an
 | |
| header file, cdefs.h which provides similiar functionality as linux/compiler.h.
 | |
| It provides compiler independent defines like __weak __packed, to allow
 | |
| compiling with multiple compilers which might have a different syntax for such
 | |
| extension.
 | |
| 
 | |
| Since that header file is included in multiple standard headers, like stddef.h
 | |
| and stdarg.h, multiple definitions of those defines will be present if both are
 | |
| included. When compiling u-boot the compiler will warn about it hundreds of
 | |
| times since e.g. common.h will include both files indirectly.
 | |
| 
 | |
| commit 7ea50d52849fe8ffa5b5b74c979b60b1045d6fc9 "compiler_gcc: do not redefine
 | |
| __gnu_attributes" prevented such redefinitions, but this was undone by commit
 | |
| fb8ffd7cfc68b3dc44e182356a207d784cb30b34 "compiler*.h: sync
 | |
| include/linux/compiler*.h with Linux 3.16".
 | |
| 
 | |
| Add the checks back where necessary to prevent such warnings.
 | |
| 
 | |
| As the original patch this checkpatch warning is ignored:
 | |
| "WARNING: Adding new packed members is to be done with care"
 | |
| 
 | |
| Cc: Masahiro Yamada <yamada.m@jp.panasonic.com>
 | |
| Cc: Tom Rini <trini@ti.com>
 | |
| Signed-off-by: Jeroen Hofstee <jeroen@myspectrum.nl>
 | |
| Acked-by: Masahiro Yamada <yamada.m@jp.panasonic.com>
 | |
| ---
 | |
|  include/linux/compiler-gcc.h | 10 ++++++++++
 | |
|  1 file changed, 10 insertions(+)
 | |
| 
 | |
| --- a/include/linux/compiler-gcc.h
 | |
| +++ b/include/linux/compiler-gcc.h
 | |
| @@ -64,8 +64,12 @@
 | |
|  #endif
 | |
|  
 | |
|  #define __deprecated			__attribute__((deprecated))
 | |
| +#ifndef __packed
 | |
|  #define __packed			__attribute__((packed))
 | |
| +#endif
 | |
| +#ifndef __weak
 | |
|  #define __weak				__attribute__((weak))
 | |
| +#endif
 | |
|  
 | |
|  /*
 | |
|   * it doesn't make sense on ARM (currently the only user of __naked) to trace
 | |
| @@ -91,8 +95,12 @@
 | |
|   * would be.
 | |
|   * [...]
 | |
|   */
 | |
| +#ifndef __pure
 | |
|  #define __pure				__attribute__((pure))
 | |
| +#endif
 | |
| +#ifndef __aligned
 | |
|  #define __aligned(x)			__attribute__((aligned(x)))
 | |
| +#endif
 | |
|  #define __printf(a, b)			__attribute__((format(printf, a, b)))
 | |
|  #define __scanf(a, b)			__attribute__((format(scanf, a, b)))
 | |
|  #define  noinline			__attribute__((noinline))
 | |
| @@ -115,4 +123,6 @@
 | |
|   */
 | |
|  #define uninitialized_var(x) x = x
 | |
|  
 | |
| +#ifndef __always_inline
 | |
|  #define __always_inline		inline __attribute__((always_inline))
 | |
| +#endif
 |