summaryrefslogtreecommitdiffstats
path: root/recipes-core
diff options
context:
space:
mode:
Diffstat (limited to 'recipes-core')
-rw-r--r--recipes-core/busybox/busybox/0001-Turn-ptr_to_globals-and-bb_errno-to-be-non-const-1.31.1.patch177
-rw-r--r--recipes-core/busybox/busybox/0001-Turn-ptr_to_globals-and-bb_errno-to-be-non-const.patch35
-rw-r--r--recipes-core/busybox/busybox_1.31.1%.bbappend (renamed from recipes-core/busybox/busybox_1.31.%.bbappend)2
-rw-r--r--recipes-core/meta/clang-environment.inc19
-rw-r--r--recipes-core/meta/meta-environment-extsdk.bbappend3
-rw-r--r--recipes-core/meta/meta-environment.bbappend20
-rw-r--r--recipes-core/musl/musl_%.bbappend10
-rw-r--r--recipes-core/packagegroups/packagegroup-core-buildessential.bbappend3
-rw-r--r--recipes-core/packagegroups/packagegroup-cross-canadian.bbappend5
9 files changed, 221 insertions, 53 deletions
diff --git a/recipes-core/busybox/busybox/0001-Turn-ptr_to_globals-and-bb_errno-to-be-non-const-1.31.1.patch b/recipes-core/busybox/busybox/0001-Turn-ptr_to_globals-and-bb_errno-to-be-non-const-1.31.1.patch
new file mode 100644
index 0000000..35a419b
--- /dev/null
+++ b/recipes-core/busybox/busybox/0001-Turn-ptr_to_globals-and-bb_errno-to-be-non-const-1.31.1.patch
@@ -0,0 +1,177 @@
1From d941b59087d34cb93053b638c066bf080122e7bb Mon Sep 17 00:00:00 2001
2From: Khem Raj <raj.khem@gmail.com>
3Date: Wed, 16 Jan 2019 22:39:24 -0800
4Subject: [PATCH] Turn ptr_to_globals and bb_errno to be non const
5
6writing to a const variable is undefined behavior
7
8This is undefined as per (C99 6.7.3 paragraph 5) see [1]
9
10errno and ptr_to_globals is written to in code, this fails with
11segfaults when compiled with clang
12
13unsigned FAST_FUNC bb_strtou(const char *arg, char **endp, int base)
14{
15 unsigned long v;
16 char *endptr;
17
18 if (!endp) endp = &endptr;
19 *endp = (char*) arg;
20
21 if (!isalnum(arg[0])) return ret_ERANGE();
22 errno = 0;
23 v = strtoul(arg, endp, base);
24 if (v > UINT_MAX) return ret_ERANGE();
25 return handle_errors(v, endp);
26 }
27
28without 'const' ( working code )
29
30Dump of assembler code for function bb_strtou:
31 0x0000555555568298 <+0>: push %rbx
32 0x0000555555568299 <+1>: sub $0x10,%rsp
33 0x000055555556829d <+5>: test %rsi,%rsi
34 0x00005555555682a0 <+8>: lea 0x8(%rsp),%rbx
35 0x00005555555682a5 <+13>: cmovne %rsi,%rbx
36 0x00005555555682a9 <+17>: mov %rdi,(%rbx)
37 0x00005555555682ac <+20>: mov (%rdi),%al
38 0x00005555555682ae <+22>: lea -0x30(%rax),%ecx
39 0x00005555555682b1 <+25>: cmp $0xa,%cl
40 0x00005555555682b4 <+28>: jb 0x5555555682be <bb_strtou+38>
41 0x00005555555682b6 <+30>: or $0x20,%al
42 0x00005555555682b8 <+32>: add $0x9f,%al
43 0x00005555555682ba <+34>: cmp $0x1a,%al
44 0x00005555555682bc <+36>: jae 0x5555555682dc <bb_strtou+68>
45 0x00005555555682be <+38>: mov 0x107da3(%rip),%rax # 0x555555670068 <bb_errno>
46=> 0x00005555555682c5 <+45>: movl $0x0,(%rax)
47 0x00005555555682cb <+51>: mov %rbx,%rsi
48 0x00005555555682ce <+54>: callq 0x555555564310 <strtoul@plt>
49 0x00005555555682d3 <+59>: mov %rax,%rcx
50 0x00005555555682d6 <+62>: shr $0x20,%rcx
51 0x00005555555682da <+66>: je 0x5555555682f0 <bb_strtou+88>
52 0x00005555555682dc <+68>: mov 0x107d85(%rip),%rax # 0x555555670068 <bb_errno>
53 0x00005555555682e3 <+75>: movl $0x22,(%rax)
54 0x00005555555682e9 <+81>: mov $0xffffffff,%eax
55 0x00005555555682ee <+86>: jmp 0x5555555682fb <bb_strtou+99>
56 0x00005555555682f0 <+88>: mov %rax,%rdi
57 0x00005555555682f3 <+91>: mov %rbx,%rsi
58 0x00005555555682f6 <+94>: callq 0x5555555681e8 <handle_errors>
59 0x00005555555682fb <+99>: add $0x10,%rsp
60 0x00005555555682ff <+103>: pop %rbx
61 0x0000555555568300 <+104>: retq
62
63here address of bb_errno is valid rax = 0x7ffff7cac6c0
64
65with 'const' ( non-working code )
66
67Dump of assembler code for function bb_strtou:
68 0x00005555555682a4 <+0>: push %r14
69 0x00005555555682a6 <+2>: push %rbx
70 0x00005555555682a7 <+3>: push %rax
71 0x00005555555682a8 <+4>: test %rsi,%rsi
72 0x00005555555682ab <+7>: mov %rsp,%rbx
73 0x00005555555682ae <+10>: cmovne %rsi,%rbx
74 0x00005555555682b2 <+14>: mov %rdi,(%rbx)
75 0x00005555555682b5 <+17>: mov (%rdi),%al
76 0x00005555555682b7 <+19>: lea -0x30(%rax),%ecx
77 0x00005555555682ba <+22>: cmp $0xa,%cl
78 0x00005555555682bd <+25>: jb 0x5555555682d6 <bb_strtou+50>
79 0x00005555555682bf <+27>: or $0x20,%al
80 0x00005555555682c1 <+29>: add $0x9f,%al
81 0x00005555555682c3 <+31>: cmp $0x1a,%al
82 0x00005555555682c5 <+33>: jb 0x5555555682d6 <bb_strtou+50>
83 0x00005555555682c7 <+35>: mov 0x107d9a(%rip),%rax # 0x555555670068 <bb_errno>
84 0x00005555555682ce <+42>: movl $0x22,(%rax)
85 0x00005555555682d4 <+48>: jmp 0x5555555682fc <bb_strtou+88>
86 0x00005555555682d6 <+50>: mov 0x107d8b(%rip),%r14 # 0x555555670068 <bb_errno>
87=> 0x00005555555682dd <+57>: movl $0x0,(%r14)
88 0x00005555555682e4 <+64>: mov %rbx,%rsi
89 0x00005555555682e7 <+67>: callq 0x555555564300 <strtoul@plt>
90 0x00005555555682ec <+72>: mov %rax,%rcx
91 0x00005555555682ef <+75>: shr $0x20,%rcx
92 0x00005555555682f3 <+79>: je 0x555555568303 <bb_strtou+95>
93 0x00005555555682f5 <+81>: movl $0x22,(%r14)
94 0x00005555555682fc <+88>: mov $0xffffffff,%eax
95 0x0000555555568301 <+93>: jmp 0x55555556830e <bb_strtou+106>
96 0x0000555555568303 <+95>: mov %rax,%rdi
97 0x0000555555568306 <+98>: mov %rbx,%rsi
98 0x0000555555568309 <+101>: callq 0x5555555681f4 <handle_errors>
99 0x000055555556830e <+106>: add $0x8,%rsp
100 0x0000555555568312 <+110>: pop %rbx
101 0x0000555555568313 <+111>: pop %r14
102 0x0000555555568315 <+113>: retq
103
104r14 is 0x0 and writing to this ofcourse ends up in segfault
105
106[1] https://bugs.llvm.org/show_bug.cgi?id=39919
107
108Signed-off-by: Khem Raj <raj.khem@gmail.com>
109[bero@lindev.ch: rebased to dunfell busybox]
110---
111 coreutils/test.c | 2 +-
112 include/libbb.h | 4 ++--
113 libbb/lineedit.c | 2 +-
114 shell/ash.c | 5 ++---
115 4 files changed, 6 insertions(+), 7 deletions(-)
116
117diff -up busybox-1.31.1/coreutils/test.c.omv~ busybox-1.31.1/coreutils/test.c
118--- busybox-1.31.1/coreutils/test.c.omv~ 2021-03-10 21:10:53.399954723 +0100
119+++ busybox-1.31.1/coreutils/test.c 2021-03-10 21:11:41.670409905 +0100
120@@ -401,7 +401,7 @@ struct test_statics {
121 };
122
123 /* See test_ptr_hack.c */
124-extern struct test_statics *const test_ptr_to_statics;
125+extern struct test_statics *test_ptr_to_statics;
126
127 #define S (*test_ptr_to_statics)
128 #define args (S.args )
129diff -up busybox-1.31.1/include/libbb.h.omv~ busybox-1.31.1/include/libbb.h
130--- busybox-1.31.1/include/libbb.h.omv~ 2021-03-10 21:11:09.916777141 +0100
131+++ busybox-1.31.1/include/libbb.h 2021-03-10 21:11:54.123860671 +0100
132@@ -341,7 +341,7 @@ struct BUG_off_t_size_is_misdetected {
133 #if defined(__GLIBC__)
134 /* glibc uses __errno_location() to get a ptr to errno */
135 /* We can just memorize it once - no multithreading in busybox :) */
136-extern int *const bb_errno;
137+extern int *bb_errno;
138 #undef errno
139 #define errno (*bb_errno)
140 #endif
141@@ -2109,7 +2109,7 @@ struct globals;
142 /* '*const' ptr makes gcc optimize code much better.
143 * Magic prevents ptr_to_globals from going into rodata.
144 * If you want to assign a value, use SET_PTR_TO_GLOBALS(x) */
145-extern struct globals *const ptr_to_globals;
146+extern struct globals *ptr_to_globals;
147 /* At least gcc 3.4.6 on mipsel system needs optimization barrier */
148 #define barrier() __asm__ __volatile__("":::"memory")
149 #define SET_PTR_TO_GLOBALS(x) do { \
150diff -up busybox-1.31.1/libbb/lineedit.c.omv~ busybox-1.31.1/libbb/lineedit.c
151--- busybox-1.31.1/libbb/lineedit.c.omv~ 2021-03-10 21:12:14.437385555 +0100
152+++ busybox-1.31.1/libbb/lineedit.c 2021-03-10 21:12:21.160782289 +0100
153@@ -181,7 +181,7 @@ struct lineedit_statics {
154 };
155
156 /* See lineedit_ptr_hack.c */
157-extern struct lineedit_statics *const lineedit_ptr_to_statics;
158+extern struct lineedit_statics *lineedit_ptr_to_statics;
159
160 #define S (*lineedit_ptr_to_statics)
161 #define state (S.state )
162diff -up busybox-1.31.1/shell/ash.c.omv~ busybox-1.31.1/shell/ash.c
163--- busybox-1.31.1/shell/ash.c.omv~ 2021-03-10 21:12:31.460879379 +0100
164+++ busybox-1.31.1/shell/ash.c 2021-03-10 21:13:24.368044942 +0100
165@@ -297,10 +297,8 @@ typedef long arith_t;
166 * set "-DBB_GLOBAL_CONST=''" in CONFIG_EXTRA_CFLAGS to disable
167 * this optimization.
168 */
169-#ifndef BB_GLOBAL_CONST
170-# define BB_GLOBAL_CONST const
171-#endif
172-
173+#undef BB_GLOBAL_CONST
174+#define BB_GLOBAL_CONST
175
176 /* ============ Hash table sizes. Configurable. */
177
diff --git a/recipes-core/busybox/busybox/0001-Turn-ptr_to_globals-and-bb_errno-to-be-non-const.patch b/recipes-core/busybox/busybox/0001-Turn-ptr_to_globals-and-bb_errno-to-be-non-const.patch
index c14950a..468a32d 100644
--- a/recipes-core/busybox/busybox/0001-Turn-ptr_to_globals-and-bb_errno-to-be-non-const.patch
+++ b/recipes-core/busybox/busybox/0001-Turn-ptr_to_globals-and-bb_errno-to-be-non-const.patch
@@ -113,11 +113,9 @@ Signed-off-by: Khem Raj <raj.khem@gmail.com>
113 shell/ash.c | 5 ++--- 113 shell/ash.c | 5 ++---
114 4 files changed, 6 insertions(+), 7 deletions(-) 114 4 files changed, 6 insertions(+), 7 deletions(-)
115 115
116diff --git a/coreutils/test.c b/coreutils/test.c
117index 868ffbecb..d11fccf5b 100644
118--- a/coreutils/test.c 116--- a/coreutils/test.c
119+++ b/coreutils/test.c 117+++ b/coreutils/test.c
120@@ -401,7 +401,7 @@ struct test_statics { 118@@ -435,7 +435,7 @@ struct test_statics {
121 }; 119 };
122 120
123 /* See test_ptr_hack.c */ 121 /* See test_ptr_hack.c */
@@ -126,33 +124,29 @@ index 868ffbecb..d11fccf5b 100644
126 124
127 #define S (*test_ptr_to_statics) 125 #define S (*test_ptr_to_statics)
128 #define args (S.args ) 126 #define args (S.args )
129diff --git a/include/libbb.h b/include/libbb.h
130index 111d1b790..a52265e77 100644
131--- a/include/libbb.h 127--- a/include/libbb.h
132+++ b/include/libbb.h 128+++ b/include/libbb.h
133@@ -341,7 +341,7 @@ struct BUG_off_t_size_is_misdetected { 129@@ -342,7 +342,7 @@ struct BUG_off_t_size_is_misdetected {
134 #if defined(__GLIBC__) 130 #if defined(errno)
135 /* glibc uses __errno_location() to get a ptr to errno */ 131 /* If errno is a define, assume it's "define errno (*__errno_location())"
136 /* We can just memorize it once - no multithreading in busybox :) */ 132 * and we will cache it's result in this variable */
137-extern int *const bb_errno; 133-extern int *const bb_errno;
138+extern int *bb_errno; 134+extern int *bb_errno;
139 #undef errno 135 #undef errno
140 #define errno (*bb_errno) 136 #define errno (*bb_errno)
141 #endif 137 #define bb_cached_errno_ptr 1
142@@ -2152,7 +2152,7 @@ struct globals; 138@@ -2228,7 +2228,7 @@ struct globals;
143 /* '*const' ptr makes gcc optimize code much better. 139 /* '*const' ptr makes gcc optimize code much better.
144 * Magic prevents ptr_to_globals from going into rodata. 140 * Magic prevents ptr_to_globals from going into rodata.
145 * If you want to assign a value, use SET_PTR_TO_GLOBALS(x) */ 141 * If you want to assign a value, use SET_PTR_TO_GLOBALS(x) */
146-extern struct globals *const ptr_to_globals; 142-extern struct globals *const ptr_to_globals;
147+extern struct globals *ptr_to_globals; 143+extern struct globals *ptr_to_globals;
148 /* At least gcc 3.4.6 on mipsel system needs optimization barrier */ 144
149 #define barrier() __asm__ __volatile__("":::"memory") 145 #if defined(__clang_major__) && __clang_major__ >= 9
150 #define SET_PTR_TO_GLOBALS(x) do { \ 146 /* Clang/llvm drops assignment to "constant" storage. Silently.
151diff --git a/libbb/lineedit.c b/libbb/lineedit.c
152index fbabc6c12..026c42c4c 100644
153--- a/libbb/lineedit.c 147--- a/libbb/lineedit.c
154+++ b/libbb/lineedit.c 148+++ b/libbb/lineedit.c
155@@ -181,7 +181,7 @@ struct lineedit_statics { 149@@ -192,7 +192,7 @@ struct lineedit_statics {
156 }; 150 };
157 151
158 /* See lineedit_ptr_hack.c */ 152 /* See lineedit_ptr_hack.c */
@@ -161,11 +155,9 @@ index fbabc6c12..026c42c4c 100644
161 155
162 #define S (*lineedit_ptr_to_statics) 156 #define S (*lineedit_ptr_to_statics)
163 #define state (S.state ) 157 #define state (S.state )
164diff --git a/shell/ash.c b/shell/ash.c
165index c5588ea66..6f07f7d6d 100644
166--- a/shell/ash.c 158--- a/shell/ash.c
167+++ b/shell/ash.c 159+++ b/shell/ash.c
168@@ -297,10 +297,9 @@ typedef long arith_t; 160@@ -300,10 +300,9 @@ typedef long arith_t;
169 * set "-DBB_GLOBAL_CONST=''" in CONFIG_EXTRA_CFLAGS to disable 161 * set "-DBB_GLOBAL_CONST=''" in CONFIG_EXTRA_CFLAGS to disable
170 * this optimization. 162 * this optimization.
171 */ 163 */
@@ -178,6 +170,3 @@ index c5588ea66..6f07f7d6d 100644
178 170
179 /* ============ Hash table sizes. Configurable. */ 171 /* ============ Hash table sizes. Configurable. */
180 172
181--
1822.23.0
183
diff --git a/recipes-core/busybox/busybox_1.31.%.bbappend b/recipes-core/busybox/busybox_1.31.1%.bbappend
index f26df7e..726ee76 100644
--- a/recipes-core/busybox/busybox_1.31.%.bbappend
+++ b/recipes-core/busybox/busybox_1.31.1%.bbappend
@@ -1,6 +1,6 @@
1FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" 1FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
2SRC_URI_append_toolchain-clang = "\ 2SRC_URI_append_toolchain-clang = "\
3 file://0001-Turn-ptr_to_globals-and-bb_errno-to-be-non-const.patch \ 3 file://0001-Turn-ptr_to_globals-and-bb_errno-to-be-non-const-1.31.1.patch \
4" 4"
5 5
6# networking/tls_pstm_sqr_comba.c:514:4: error: inline assembly requires more registers than available 6# networking/tls_pstm_sqr_comba.c:514:4: error: inline assembly requires more registers than available
diff --git a/recipes-core/meta/clang-environment.inc b/recipes-core/meta/clang-environment.inc
new file mode 100644
index 0000000..a238e49
--- /dev/null
+++ b/recipes-core/meta/clang-environment.inc
@@ -0,0 +1,19 @@
1export TARGET_CLANGCC_ARCH = "${TARGET_CC_ARCH}"
2TARGET_CLANGCC_ARCH_remove = "-mthumb-interwork"
3TARGET_CLANGCC_ARCH_remove = "-mmusl"
4TARGET_CLANGCC_ARCH_remove = "-muclibc"
5TARGET_CLANGCC_ARCH_remove = "-meb"
6TARGET_CLANGCC_ARCH_remove = "-mel"
7TARGET_CLANGCC_ARCH_append = "${@bb.utils.contains("TUNE_FEATURES", "bigendian", " -mbig-endian", " -mlittle-endian", d)}"
8TARGET_CLANGCC_ARCH_remove_powerpc = "-mhard-float"
9TARGET_CLANGCC_ARCH_remove_powerpc = "-mno-spe"
10
11create_sdk_files_append() {
12 script=${SDK_OUTPUT}/${SDKPATH}/environment-setup-${REAL_MULTIMACH_TARGET_SYS}
13 if ${@bb.utils.contains('CLANGSDK', '1', 'true', 'false', d)}; then
14 echo 'export CLANGCC="${TARGET_PREFIX}clang --target=${TARGET_SYS} ${TARGET_CLANGCC_ARCH} --sysroot=$SDKTARGETSYSROOT"' >> $script
15 echo 'export CLANGCXX="${TARGET_PREFIX}clang++ --target=${TARGET_SYS} ${TARGET_CLANGCC_ARCH} --sysroot=$SDKTARGETSYSROOT"' >> $script
16 echo 'export CLANGCPP="${TARGET_PREFIX}clang -E --target=${TARGET_SYS} ${TARGET_CLANGCC_ARCH} --sysroot=$SDKTARGETSYSROOT"' >> $script
17 echo 'export CLANG_TIDY_EXE="${TARGET_PREFIX}clang-tidy"' >> $script
18 fi
19}
diff --git a/recipes-core/meta/meta-environment-extsdk.bbappend b/recipes-core/meta/meta-environment-extsdk.bbappend
new file mode 100644
index 0000000..e867074
--- /dev/null
+++ b/recipes-core/meta/meta-environment-extsdk.bbappend
@@ -0,0 +1,3 @@
1FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
2
3require clang-environment.inc
diff --git a/recipes-core/meta/meta-environment.bbappend b/recipes-core/meta/meta-environment.bbappend
index d59bfd6..e867074 100644
--- a/recipes-core/meta/meta-environment.bbappend
+++ b/recipes-core/meta/meta-environment.bbappend
@@ -1,19 +1,3 @@
1export TARGET_CLANGCC_ARCH = "${TARGET_CC_ARCH}" 1FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
2TARGET_CLANGCC_ARCH_remove = "-mthumb-interwork"
3TARGET_CLANGCC_ARCH_remove = "-mmusl"
4TARGET_CLANGCC_ARCH_remove = "-muclibc"
5TARGET_CLANGCC_ARCH_remove = "-meb"
6TARGET_CLANGCC_ARCH_remove = "-mel"
7TARGET_CLANGCC_ARCH_append = "${@bb.utils.contains("TUNE_FEATURES", "bigendian", " -mbig-endian", " -mlittle-endian", d)}"
8TARGET_CLANGCC_ARCH_remove_powerpc = "-mhard-float"
9TARGET_CLANGCC_ARCH_remove_powerpc = "-mno-spe"
10 2
11create_sdk_files_append() { 3require clang-environment.inc
12 script=${SDK_OUTPUT}/${SDKPATH}/environment-setup-${REAL_MULTIMACH_TARGET_SYS}
13 if ${@bb.utils.contains('CLANGSDK', '1', 'true', 'false', d)}; then
14 echo 'export CLANGCC="${TARGET_PREFIX}clang ${TARGET_CLANGCC_ARCH} --sysroot=$SDKTARGETSYSROOT"' >> $script
15 echo 'export CLANGCXX="${TARGET_PREFIX}clang++ ${TARGET_CLANGCC_ARCH} --sysroot=$SDKTARGETSYSROOT"' >> $script
16 echo 'export CLANGCPP="${TARGET_PREFIX}clang -E ${TARGET_CLANGCC_ARCH} --sysroot=$SDKTARGETSYSROOT"' >> $script
17 echo 'export CLANG_TIDY_EXE="${TARGET_PREFIX}clang-tidy"' >> $script
18 fi
19}
diff --git a/recipes-core/musl/musl_%.bbappend b/recipes-core/musl/musl_%.bbappend
index a6a1bf5..70fe10c 100644
--- a/recipes-core/musl/musl_%.bbappend
+++ b/recipes-core/musl/musl_%.bbappend
@@ -1,12 +1,4 @@
1DEPENDS_append_toolchain-clang = " clang-cross-${TARGET_ARCH}" 1DEPENDS_append_toolchain-clang = " clang-cross-${TARGET_ARCH}"
2DEPENDS_remove_toolchain-clang = "virtual/${TARGET_PREFIX}gcc"
2TOOLCHAIN_x86-x32 = "gcc" 3TOOLCHAIN_x86-x32 = "gcc"
3TOOLCHAIN_riscv64 = "gcc"
4TOOLCHAIN_powerpc64 = "gcc" 4TOOLCHAIN_powerpc64 = "gcc"
5
6inherit lto
7
8# workaround until https://bugs.llvm.org/show_bug.cgi?id=44384
9# is fixed
10do_configure_prepend_toolchain-clang () {
11 sed -i -e '/frounding-math/d' ${S}/configure
12}
diff --git a/recipes-core/packagegroups/packagegroup-core-buildessential.bbappend b/recipes-core/packagegroups/packagegroup-core-buildessential.bbappend
new file mode 100644
index 0000000..403af1a
--- /dev/null
+++ b/recipes-core/packagegroups/packagegroup-core-buildessential.bbappend
@@ -0,0 +1,3 @@
1FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:"
2
3RDEPENDS_packagegroup-core-buildessential_append_toolchain-clang = " clang "
diff --git a/recipes-core/packagegroups/packagegroup-cross-canadian.bbappend b/recipes-core/packagegroups/packagegroup-cross-canadian.bbappend
index 4bbd4ab..5b397b5 100644
--- a/recipes-core/packagegroups/packagegroup-cross-canadian.bbappend
+++ b/recipes-core/packagegroups/packagegroup-cross-canadian.bbappend
@@ -1,2 +1,3 @@
1CLANGCROSSCANADIAN = "${@bb.utils.contains('CLANGSDK', '1', 'clang-cross-canadian-${TRANSLATED_TARGET_ARCH}', '', d)}" 1CLANGCROSSCANADIAN = "clang-cross-canadian-${TRANSLATED_TARGET_ARCH}"
2RDEPENDS_${PN} += "${@all_multilib_tune_values(d, 'CLANGCROSSCANADIAN')}" 2CLANGCROSSCANADIANDEPS += "${@all_multilib_tune_values(d, 'CLANGCROSSCANADIAN')}"
3RDEPENDS_${PN} += "${@bb.utils.contains('CLANGSDK', '1', '${CLANGCROSSCANADIANDEPS}', '', d)}"