diff options
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.patch | 177 | ||||
-rw-r--r-- | recipes-core/busybox/busybox/0001-Turn-ptr_to_globals-and-bb_errno-to-be-non-const.patch | 35 | ||||
-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.inc | 19 | ||||
-rw-r--r-- | recipes-core/meta/meta-environment-extsdk.bbappend | 3 | ||||
-rw-r--r-- | recipes-core/meta/meta-environment.bbappend | 20 | ||||
-rw-r--r-- | recipes-core/musl/musl_%.bbappend | 10 | ||||
-rw-r--r-- | recipes-core/packagegroups/packagegroup-core-buildessential.bbappend | 3 | ||||
-rw-r--r-- | recipes-core/packagegroups/packagegroup-cross-canadian.bbappend | 5 |
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 @@ | |||
1 | From d941b59087d34cb93053b638c066bf080122e7bb Mon Sep 17 00:00:00 2001 | ||
2 | From: Khem Raj <raj.khem@gmail.com> | ||
3 | Date: Wed, 16 Jan 2019 22:39:24 -0800 | ||
4 | Subject: [PATCH] Turn ptr_to_globals and bb_errno to be non const | ||
5 | |||
6 | writing to a const variable is undefined behavior | ||
7 | |||
8 | This is undefined as per (C99 6.7.3 paragraph 5) see [1] | ||
9 | |||
10 | errno and ptr_to_globals is written to in code, this fails with | ||
11 | segfaults when compiled with clang | ||
12 | |||
13 | unsigned 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 | |||
28 | without 'const' ( working code ) | ||
29 | |||
30 | Dump 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 | |||
63 | here address of bb_errno is valid rax = 0x7ffff7cac6c0 | ||
64 | |||
65 | with 'const' ( non-working code ) | ||
66 | |||
67 | Dump 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 | |||
104 | r14 is 0x0 and writing to this ofcourse ends up in segfault | ||
105 | |||
106 | [1] https://bugs.llvm.org/show_bug.cgi?id=39919 | ||
107 | |||
108 | Signed-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 | |||
117 | diff -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 ) | ||
129 | diff -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 { \ | ||
150 | diff -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 ) | ||
162 | diff -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 | ||
116 | diff --git a/coreutils/test.c b/coreutils/test.c | ||
117 | index 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 ) |
129 | diff --git a/include/libbb.h b/include/libbb.h | ||
130 | index 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. |
151 | diff --git a/libbb/lineedit.c b/libbb/lineedit.c | ||
152 | index 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 ) |
164 | diff --git a/shell/ash.c b/shell/ash.c | ||
165 | index 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 | -- | ||
182 | 2.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 @@ | |||
1 | FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" | 1 | FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" |
2 | SRC_URI_append_toolchain-clang = "\ | 2 | SRC_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 @@ | |||
1 | export TARGET_CLANGCC_ARCH = "${TARGET_CC_ARCH}" | ||
2 | TARGET_CLANGCC_ARCH_remove = "-mthumb-interwork" | ||
3 | TARGET_CLANGCC_ARCH_remove = "-mmusl" | ||
4 | TARGET_CLANGCC_ARCH_remove = "-muclibc" | ||
5 | TARGET_CLANGCC_ARCH_remove = "-meb" | ||
6 | TARGET_CLANGCC_ARCH_remove = "-mel" | ||
7 | TARGET_CLANGCC_ARCH_append = "${@bb.utils.contains("TUNE_FEATURES", "bigendian", " -mbig-endian", " -mlittle-endian", d)}" | ||
8 | TARGET_CLANGCC_ARCH_remove_powerpc = "-mhard-float" | ||
9 | TARGET_CLANGCC_ARCH_remove_powerpc = "-mno-spe" | ||
10 | |||
11 | create_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 @@ | |||
1 | FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" | ||
2 | |||
3 | require 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 @@ | |||
1 | export TARGET_CLANGCC_ARCH = "${TARGET_CC_ARCH}" | 1 | FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" |
2 | TARGET_CLANGCC_ARCH_remove = "-mthumb-interwork" | ||
3 | TARGET_CLANGCC_ARCH_remove = "-mmusl" | ||
4 | TARGET_CLANGCC_ARCH_remove = "-muclibc" | ||
5 | TARGET_CLANGCC_ARCH_remove = "-meb" | ||
6 | TARGET_CLANGCC_ARCH_remove = "-mel" | ||
7 | TARGET_CLANGCC_ARCH_append = "${@bb.utils.contains("TUNE_FEATURES", "bigendian", " -mbig-endian", " -mlittle-endian", d)}" | ||
8 | TARGET_CLANGCC_ARCH_remove_powerpc = "-mhard-float" | ||
9 | TARGET_CLANGCC_ARCH_remove_powerpc = "-mno-spe" | ||
10 | 2 | ||
11 | create_sdk_files_append() { | 3 | require 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 @@ | |||
1 | DEPENDS_append_toolchain-clang = " clang-cross-${TARGET_ARCH}" | 1 | DEPENDS_append_toolchain-clang = " clang-cross-${TARGET_ARCH}" |
2 | DEPENDS_remove_toolchain-clang = "virtual/${TARGET_PREFIX}gcc" | ||
2 | TOOLCHAIN_x86-x32 = "gcc" | 3 | TOOLCHAIN_x86-x32 = "gcc" |
3 | TOOLCHAIN_riscv64 = "gcc" | ||
4 | TOOLCHAIN_powerpc64 = "gcc" | 4 | TOOLCHAIN_powerpc64 = "gcc" |
5 | |||
6 | inherit lto | ||
7 | |||
8 | # workaround until https://bugs.llvm.org/show_bug.cgi?id=44384 | ||
9 | # is fixed | ||
10 | do_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 @@ | |||
1 | FILESEXTRAPATHS_prepend := "${THISDIR}/${PN}:" | ||
2 | |||
3 | RDEPENDS_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 @@ | |||
1 | CLANGCROSSCANADIAN = "${@bb.utils.contains('CLANGSDK', '1', 'clang-cross-canadian-${TRANSLATED_TARGET_ARCH}', '', d)}" | 1 | CLANGCROSSCANADIAN = "clang-cross-canadian-${TRANSLATED_TARGET_ARCH}" |
2 | RDEPENDS_${PN} += "${@all_multilib_tune_values(d, 'CLANGCROSSCANADIAN')}" | 2 | CLANGCROSSCANADIANDEPS += "${@all_multilib_tune_values(d, 'CLANGCROSSCANADIAN')}" |
3 | RDEPENDS_${PN} += "${@bb.utils.contains('CLANGSDK', '1', '${CLANGCROSSCANADIANDEPS}', '', d)}" | ||