summaryrefslogtreecommitdiffstats
path: root/recipes-kernel
diff options
context:
space:
mode:
Diffstat (limited to 'recipes-kernel')
-rw-r--r--recipes-kernel/linux/linux-imx-4.19.35/0001-Compiler-Attributes-add-support-for-__copy-gcc-9.patch98
-rw-r--r--recipes-kernel/linux/linux-imx-4.19.35/0002-include-linux-module.h-copy-__init-__exit-attrs-to-i.patch83
-rw-r--r--recipes-kernel/linux/linux-imx-4.19.35/imx/defconfig (renamed from recipes-kernel/linux/linux-imx-4.19.35/imx/imx_v7_defconfig)0
-rw-r--r--recipes-kernel/linux/linux-imx_4.19.35.bb24
4 files changed, 188 insertions, 17 deletions
diff --git a/recipes-kernel/linux/linux-imx-4.19.35/0001-Compiler-Attributes-add-support-for-__copy-gcc-9.patch b/recipes-kernel/linux/linux-imx-4.19.35/0001-Compiler-Attributes-add-support-for-__copy-gcc-9.patch
new file mode 100644
index 00000000..d69ede46
--- /dev/null
+++ b/recipes-kernel/linux/linux-imx-4.19.35/0001-Compiler-Attributes-add-support-for-__copy-gcc-9.patch
@@ -0,0 +1,98 @@
1From 2a0f719db71c69f5a04fcfc164f12f58f3ee7703 Mon Sep 17 00:00:00 2001
2From: Miguel Ojeda <miguel.ojeda.sandonis@gmail.com>
3Date: Fri, 8 Feb 2019 23:51:05 +0100
4Subject: [PATCH] Compiler Attributes: add support for __copy (gcc >= 9)
5MIME-Version: 1.0
6Content-Type: text/plain; charset=UTF-8
7Content-Transfer-Encoding: 8bit
8
9commit c0d9782f5b6d7157635ae2fd782a4b27d55a6013 upstream.
10
11From the GCC manual:
12
13 copy
14 copy(function)
15
16 The copy attribute applies the set of attributes with which function
17 has been declared to the declaration of the function to which
18 the attribute is applied. The attribute is designed for libraries
19 that define aliases or function resolvers that are expected
20 to specify the same set of attributes as their targets. The copy
21 attribute can be used with functions, variables, or types. However,
22 the kind of symbol to which the attribute is applied (either
23 function or variable) must match the kind of symbol to which
24 the argument refers. The copy attribute copies only syntactic and
25 semantic attributes but not attributes that affect a symbol’s
26 linkage or visibility such as alias, visibility, or weak.
27 The deprecated attribute is also not copied.
28
29 https://gcc.gnu.org/onlinedocs/gcc/Common-Function-Attributes.html
30
31The upcoming GCC 9 release extends the -Wmissing-attributes warnings
32(enabled by -Wall) to C and aliases: it warns when particular function
33attributes are missing in the aliases but not in their target, e.g.:
34
35 void __cold f(void) {}
36 void __alias("f") g(void);
37
38diagnoses:
39
40 warning: 'g' specifies less restrictive attribute than
41 its target 'f': 'cold' [-Wmissing-attributes]
42
43Using __copy(f) we can copy the __cold attribute from f to g:
44
45 void __cold f(void) {}
46 void __copy(f) __alias("f") g(void);
47
48This attribute is most useful to deal with situations where an alias
49is declared but we don't know the exact attributes the target has.
50
51For instance, in the kernel, the widely used module_init/exit macros
52define the init/cleanup_module aliases, but those cannot be marked
53always as __init/__exit since some modules do not have their
54functions marked as such.
55
56Suggested-by: Martin Sebor <msebor@gcc.gnu.org>
57Reviewed-by: Nick Desaulniers <ndesaulniers@google.com>
58Signed-off-by: Miguel Ojeda <miguel.ojeda.sandonis@gmail.com>
59Signed-off-by: Stefan Agner <stefan@agner.ch>
60Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
61---
62 include/linux/compiler-gcc.h | 4 ++++
63 include/linux/compiler_types.h | 4 ++++
64 2 files changed, 8 insertions(+)
65
66diff --git a/include/linux/compiler-gcc.h b/include/linux/compiler-gcc.h
67index a8ff0ca..3ebee1c 100644
68--- a/include/linux/compiler-gcc.h
69+++ b/include/linux/compiler-gcc.h
70@@ -201,6 +201,10 @@
71 #define COMPILER_HAS_GENERIC_BUILTIN_OVERFLOW 1
72 #endif
73
74+#if GCC_VERSION >= 90100
75+#define __copy(symbol) __attribute__((__copy__(symbol)))
76+#endif
77+
78 #if !defined(__noclone)
79 #define __noclone /* not needed */
80 #endif
81diff --git a/include/linux/compiler_types.h b/include/linux/compiler_types.h
82index c2ded31..2b8ed70 100644
83--- a/include/linux/compiler_types.h
84+++ b/include/linux/compiler_types.h
85@@ -180,6 +180,10 @@ struct ftrace_likely_data {
86 #define __diag_GCC(version, severity, string)
87 #endif
88
89+#ifndef __copy
90+# define __copy(symbol)
91+#endif
92+
93 #define __diag_push() __diag(push)
94 #define __diag_pop() __diag(pop)
95
96--
972.7.4
98
diff --git a/recipes-kernel/linux/linux-imx-4.19.35/0002-include-linux-module.h-copy-__init-__exit-attrs-to-i.patch b/recipes-kernel/linux/linux-imx-4.19.35/0002-include-linux-module.h-copy-__init-__exit-attrs-to-i.patch
new file mode 100644
index 00000000..78619a5e
--- /dev/null
+++ b/recipes-kernel/linux/linux-imx-4.19.35/0002-include-linux-module.h-copy-__init-__exit-attrs-to-i.patch
@@ -0,0 +1,83 @@
1From 9468870f7cbdb4d7ca828d02d4ff507c01fe591d Mon Sep 17 00:00:00 2001
2From: Miguel Ojeda <miguel.ojeda.sandonis@gmail.com>
3Date: Sat, 19 Jan 2019 20:59:34 +0100
4Subject: [PATCH] include/linux/module.h: copy __init/__exit attrs to
5 init/cleanup_module
6
7commit a6e60d84989fa0e91db7f236eda40453b0e44afa upstream.
8
9The upcoming GCC 9 release extends the -Wmissing-attributes warnings
10(enabled by -Wall) to C and aliases: it warns when particular function
11attributes are missing in the aliases but not in their target.
12
13In particular, it triggers for all the init/cleanup_module
14aliases in the kernel (defined by the module_init/exit macros),
15ending up being very noisy.
16
17These aliases point to the __init/__exit functions of a module,
18which are defined as __cold (among other attributes). However,
19the aliases themselves do not have the __cold attribute.
20
21Since the compiler behaves differently when compiling a __cold
22function as well as when compiling paths leading to calls
23to __cold functions, the warning is trying to point out
24the possibly-forgotten attribute in the alias.
25
26In order to keep the warning enabled, we decided to silence
27this case. Ideally, we would mark the aliases directly
28as __init/__exit. However, there are currently around 132 modules
29in the kernel which are missing __init/__exit in their init/cleanup
30functions (either because they are missing, or for other reasons,
31e.g. the functions being called from somewhere else); and
32a section mismatch is a hard error.
33
34A conservative alternative was to mark the aliases as __cold only.
35However, since we would like to eventually enforce __init/__exit
36to be always marked, we chose to use the new __copy function
37attribute (introduced by GCC 9 as well to deal with this).
38With it, we copy the attributes used by the target functions
39into the aliases. This way, functions that were not marked
40as __init/__exit won't have their aliases marked either,
41and therefore there won't be a section mismatch.
42
43Note that the warning would go away marking either the extern
44declaration, the definition, or both. However, we only mark
45the definition of the alias, since we do not want callers
46(which only see the declaration) to be compiled as if the function
47was __cold (and therefore the paths leading to those calls
48would be assumed to be unlikely).
49
50Link: https://lore.kernel.org/lkml/20190123173707.GA16603@gmail.com/
51Link: https://lore.kernel.org/lkml/20190206175627.GA20399@gmail.com/
52Suggested-by: Martin Sebor <msebor@gcc.gnu.org>
53Acked-by: Jessica Yu <jeyu@kernel.org>
54Signed-off-by: Miguel Ojeda <miguel.ojeda.sandonis@gmail.com>
55Signed-off-by: Stefan Agner <stefan@agner.ch>
56Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
57---
58 include/linux/module.h | 4 ++--
59 1 file changed, 2 insertions(+), 2 deletions(-)
60
61diff --git a/include/linux/module.h b/include/linux/module.h
62index c710446..9915397 100644
63--- a/include/linux/module.h
64+++ b/include/linux/module.h
65@@ -130,13 +130,13 @@ extern void cleanup_module(void);
66 #define module_init(initfn) \
67 static inline initcall_t __maybe_unused __inittest(void) \
68 { return initfn; } \
69- int init_module(void) __attribute__((alias(#initfn)));
70+ int init_module(void) __copy(initfn) __attribute__((alias(#initfn)));
71
72 /* This is only required if you want to be unloadable. */
73 #define module_exit(exitfn) \
74 static inline exitcall_t __maybe_unused __exittest(void) \
75 { return exitfn; } \
76- void cleanup_module(void) __attribute__((alias(#exitfn)));
77+ void cleanup_module(void) __copy(exitfn) __attribute__((alias(#exitfn)));
78
79 #endif
80
81--
822.7.4
83
diff --git a/recipes-kernel/linux/linux-imx-4.19.35/imx/imx_v7_defconfig b/recipes-kernel/linux/linux-imx-4.19.35/imx/defconfig
index 3d6d67ed..3d6d67ed 100644
--- a/recipes-kernel/linux/linux-imx-4.19.35/imx/imx_v7_defconfig
+++ b/recipes-kernel/linux/linux-imx-4.19.35/imx/defconfig
diff --git a/recipes-kernel/linux/linux-imx_4.19.35.bb b/recipes-kernel/linux/linux-imx_4.19.35.bb
index 138c1178..dd69aba5 100644
--- a/recipes-kernel/linux/linux-imx_4.19.35.bb
+++ b/recipes-kernel/linux/linux-imx_4.19.35.bb
@@ -1,5 +1,6 @@
1# Copyright (C) 2013-2016 Freescale Semiconductor 1# Copyright 2013-2016 (C) Freescale Semiconductor
2# Copyright 2017-2018 NXP 2# Copyright 2017-2019 (C) NXP
3# Copyright 2018 (C) O.S. Systems Software LTDA.
3# Released under the MIT license (see COPYING.MIT for the terms) 4# Released under the MIT license (see COPYING.MIT for the terms)
4 5
5SUMMARY = "Linux Kernel provided and supported by NXP" 6SUMMARY = "Linux Kernel provided and supported by NXP"
@@ -10,27 +11,16 @@ require recipes-kernel/linux/linux-imx.inc
10 11
11LICENSE = "GPLv2" 12LICENSE = "GPLv2"
12LIC_FILES_CHKSUM = "file://COPYING;md5=bbea815ee2795b2f4230826c0c6b8814" 13LIC_FILES_CHKSUM = "file://COPYING;md5=bbea815ee2795b2f4230826c0c6b8814"
14
13DEPENDS += "lzop-native bc-native" 15DEPENDS += "lzop-native bc-native"
14 16
15SRCBRANCH = "imx_4.19.35_1.1.0" 17SRCBRANCH = "imx_4.19.35_1.1.0"
16LOCALVERSION = "-1.1.0" 18LOCALVERSION = "-1.1.0"
17KERNEL_SRC ?= "git://source.codeaurora.org/external/imx/linux-imx.git;protocol=https"
18SRC_URI = "${KERNEL_SRC};branch=${SRCBRANCH}"
19SRCREV = "0f9917c56d5995e1dc3bde5658e2d7bc865464de" 19SRCREV = "0f9917c56d5995e1dc3bde5658e2d7bc865464de"
20 20SRC_URI += "file://0001-Compiler-Attributes-add-support-for-__copy-gcc-9.patch \
21S = "${WORKDIR}/git" 21 file://0002-include-linux-module.h-copy-__init-__exit-attrs-to-i.patch \
22 "
22 23
23DEFAULT_PREFERENCE = "1" 24DEFAULT_PREFERENCE = "1"
24 25
25DEFCONFIG = "defconfig"
26DEFCONFIG_mx6 = "imx_v7_defconfig"
27DEFCONFIG_mx7 = "imx_v7_defconfig"
28
29do_preconfigure_prepend() {
30 # meta-freescale/classes/fsl-kernel-localversion.bbclass requires
31 # defconfig in ${WORKDIR}
32 install -d ${B}
33 cp ${S}/arch/${ARCH}/configs/${DEFCONFIG} ${WORKDIR}/defconfig
34}
35
36COMPATIBLE_MACHINE = "(mx6|mx7|mx8)" 26COMPATIBLE_MACHINE = "(mx6|mx7|mx8)"