aboutsummaryrefslogtreecommitdiffstats
path: root/package/boot/uboot-imx6/patches/102-compiler_gcc-prevent-redefining-attributes.patch
diff options
context:
space:
mode:
authorHauke Mehrtens <hauke@hauke-m.de>2018-03-13 22:28:59 +0100
committerHauke Mehrtens <hauke@hauke-m.de>2018-03-13 22:28:59 +0100
commit43f35ce971bbd38c51d9c4f760c804769c2f2b8f (patch)
tree2257e71db3614b24cbf55a465d6f7fa7cee33aac /package/boot/uboot-imx6/patches/102-compiler_gcc-prevent-redefining-attributes.patch
parentd482356322c9910541a3118d049718b384a252bd (diff)
downloadupstream-43f35ce971bbd38c51d9c4f760c804769c2f2b8f.tar.gz
upstream-43f35ce971bbd38c51d9c4f760c804769c2f2b8f.tar.bz2
upstream-43f35ce971bbd38c51d9c4f760c804769c2f2b8f.zip
uboot-imx6: fix build with GCC 7
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>
Diffstat (limited to 'package/boot/uboot-imx6/patches/102-compiler_gcc-prevent-redefining-attributes.patch')
-rw-r--r--package/boot/uboot-imx6/patches/102-compiler_gcc-prevent-redefining-attributes.patch69
1 files changed, 69 insertions, 0 deletions
diff --git a/package/boot/uboot-imx6/patches/102-compiler_gcc-prevent-redefining-attributes.patch b/package/boot/uboot-imx6/patches/102-compiler_gcc-prevent-redefining-attributes.patch
new file mode 100644
index 0000000000..0a6219c2b4
--- /dev/null
+++ b/package/boot/uboot-imx6/patches/102-compiler_gcc-prevent-redefining-attributes.patch
@@ -0,0 +1,69 @@
+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