mirror of
https://github.com/openwrt/openwrt.git
synced 2024-12-27 01:11:14 +00:00
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
|