123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- From 0a5051ce6ebd5f6fad58fd50d6922493d8447f14 Mon Sep 17 00:00:00 2001
- From: Jeroen Hofstee <[email protected]>
- 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 <[email protected]>
- Cc: Tom Rini <[email protected]>
- Signed-off-by: Jeroen Hofstee <[email protected]>
- Acked-by: Masahiro Yamada <[email protected]>
- ---
- 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
|