Skip to content

Commit b9e3820

Browse files
authored
Update the ARM-software#597 workaround patch to also fix tests (ARM-software#610)
1 parent 8c1eb6c commit b9e3820

File tree

1 file changed

+220
-5
lines changed

1 file changed

+220
-5
lines changed

patches/llvm-project/0008-library-order-workaround-for-597.patch

Lines changed: 220 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -1,11 +1,14 @@
1-
From f037d9740bf53cf43142595330355a3b61304dd7 Mon Sep 17 00:00:00 2001
1+
From 3c25466248617c03c4db62504b226f82b568be5e Mon Sep 17 00:00:00 2001
22
From: Volodymyr Turanskyy <[email protected]>
3-
Date: Wed, 18 Dec 2024 16:29:25 +0000
4-
Subject: [PATCH] Revert order of libraries on the command line
3+
Date: Thu, 19 Dec 2024 12:01:58 +0000
4+
Subject: [PATCH] Revert order of libraries and update tests
55

66
---
7-
clang/lib/Driver/ToolChains/BareMetal.cpp | 3 +--
8-
1 file changed, 1 insertion(+), 2 deletions(-)
7+
clang/lib/Driver/ToolChains/BareMetal.cpp | 3 +-
8+
clang/test/Driver/baremetal-multilib.yaml | 2 +-
9+
clang/test/Driver/baremetal-sysroot.cpp | 2 +-
10+
clang/test/Driver/baremetal.cpp | 38 +++++++++++------------
11+
4 files changed, 22 insertions(+), 23 deletions(-)
912

1013
diff --git a/clang/lib/Driver/ToolChains/BareMetal.cpp b/clang/lib/Driver/ToolChains/BareMetal.cpp
1114
index eecaaa9a4293..7d07079b5dd4 100644
@@ -22,6 +25,218 @@ index eecaaa9a4293..7d07079b5dd4 100644
2225
}
2326

2427
if (D.isUsingLTO()) {
28+
diff --git a/clang/test/Driver/baremetal-multilib.yaml b/clang/test/Driver/baremetal-multilib.yaml
29+
index 853a4e9e36e4..847b1d6b3377 100644
30+
--- a/clang/test/Driver/baremetal-multilib.yaml
31+
+++ b/clang/test/Driver/baremetal-multilib.yaml
32+
@@ -10,8 +10,8 @@
33+
# CHECK-SAME: "-x" "c++" "{{.*}}baremetal-multilib.yaml"
34+
# CHECK-NEXT: ld{{(.exe)?}}" "{{.*}}.o" "-Bstatic"
35+
# CHECK-SAME: "-L[[SYSROOT]]/bin/../lib/clang-runtimes/arm-none-eabi/thumb/v8-m.main/fp/lib"
36+
-# CHECK-SAME: "{{[^"]*}}libclang_rt.builtins.a"
37+
# CHECK-SAME: "-lc"
38+
+# CHECK-SAME: "{{[^"]*}}libclang_rt.builtins.a"
39+
# CHECK-SAME: "-o" "{{.*}}.tmp.out"
40+
41+
# RUN: %clang --multi-lib-config=%s -no-canonical-prefixes -x c++ %s -### -o %t.out 2>&1 \
42+
diff --git a/clang/test/Driver/baremetal-sysroot.cpp b/clang/test/Driver/baremetal-sysroot.cpp
43+
index 5cbb7ac69a7a..2b836e65016b 100644
44+
--- a/clang/test/Driver/baremetal-sysroot.cpp
45+
+++ b/clang/test/Driver/baremetal-sysroot.cpp
46+
@@ -18,6 +18,6 @@
47+
// CHECK-V6M-C-SAME: "-x" "c++" "{{.*}}baremetal-sysroot.cpp"
48+
// CHECK-V6M-C-NEXT: "{{[^"]*}}ld{{(\.(lld|bfd|gold))?}}{{(\.exe)?}}" "{{.*}}.o" "-Bstatic"
49+
// CHECK-V6M-C-SAME: "-L{{.*}}/baremetal_default_sysroot{{[/\\]+}}bin{{[/\\]+}}..{{[/\\]+}}lib{{[/\\]+}}clang-runtimes{{[/\\]+}}armv6m-none-eabi{{[/\\]+}}lib"
50+
-// CHECK-V6M-C-SAME: "{{[^"]*}}libclang_rt.builtins.a"
51+
// CHECK-V6M-C-SAME: "-lc"
52+
+// CHECK-V6M-C-SAME: "{{[^"]*}}libclang_rt.builtins.a"
53+
// CHECK-V6M-C-SAME: "-o" "{{.*}}.o"
54+
diff --git a/clang/test/Driver/baremetal.cpp b/clang/test/Driver/baremetal.cpp
55+
index 6d6255ef5970..08c49a1beec0 100644
56+
--- a/clang/test/Driver/baremetal.cpp
57+
+++ b/clang/test/Driver/baremetal.cpp
58+
@@ -19,8 +19,8 @@
59+
// CHECK-V6M-C-SAME: "[[SYSROOT:[^"]+]]{{[/\\]+}}lib{{[/\\]+}}crt0.o"
60+
// CHECK-V6M-C-SAME: "-T" "semihosted.lds" "-Lsome{{[/\\]+}}directory{{[/\\]+}}user{{[/\\]+}}asked{{[/\\]+}}for"
61+
// CHECK-V6M-C-SAME: "-L[[SYSROOT:[^"]+]]{{[/\\]+}}lib"
62+
-// CHECK-V6M-C-SAME: "{{[^"]*}}libclang_rt.builtins.a"
63+
// CHECK-V6M-C-SAME: "-lc"
64+
+// CHECK-V6M-C-SAME: "{{[^"]*}}libclang_rt.builtins.a"
65+
// CHECK-V6M-C-SAME: "--target2=rel" "-o" "{{.*}}.tmp.out"
66+
67+
// RUN: %clang %s -### --target=armv6m-none-eabi -nostdlibinc -nobuiltininc 2>&1 \
68+
@@ -42,8 +42,8 @@
69+
// CHECK-V6M-TREE-NEXT: ld{{(.exe)?}}" "{{.*}}.o" "-Bstatic" "-EL"
70+
// CHECK-V6M-TREE-SAME: "[[INSTALLED_DIR]]{{[/\\]+}}..{{[/\\]+}}lib{{[/\\]+}}armv6m-unknown-none-eabi{{[/\\]+}}crt0.o"
71+
// CHECK-V6M-TREE-SAME: "-L[[INSTALLED_DIR]]{{[/\\]+}}..{{[/\\]+}}lib{{[/\\]+}}armv6m-unknown-none-eabi"
72+
-// CHECK-V6M-TREE-SAME: "{{[^"]*}}libclang_rt.builtins.a"
73+
// CHECK-V6M-TREE-SAME: "-lc"
74+
+// CHECK-V6M-TREE-SAME: "{{[^"]*}}libclang_rt.builtins.a"
75+
// CHECK-V6M-TREE-SAME: "--target2=rel" "-o" "{{.*}}.tmp.out"
76+
77+
// RUN: %clang %s -### --target=armv7m-vendor-none-eabi -rtlib=compiler-rt 2>&1 \
78+
@@ -57,8 +57,8 @@
79+
// CHECK-ARMV7M-PER_TARGET: "[[SYSROOT:[^"]+]]{{[/\\]+}}lib{{[/\\]+}}crt0.o"
80+
// CHECK-ARMV7M-PER-TARGET: "-L[[SYSROOT:[^"]+]]{{[/\\]+}}lib"
81+
// CHECK-ARMV7M-PER-TARGET: "-L[[RESOURCE_DIR:[^"]+]]{{[/\\]+}}lib{{[/\\]+}}armv7m-vendor-none-eabi
82+
-// CHECK-ARMV7M-PER-TARGET: "{{[^"]*}}libclang_rt.builtins.a"
83+
// CHECK-ARMV7M-PER-TARGET: "-lc"
84+
+// CHECK-ARMV7M-PER-TARGET: "{{[^"]*}}libclang_rt.builtins.a"
85+
86+
// RUN: %clangxx %s -### --target=armv6m-none-eabi 2>&1 \
87+
// RUN: --sysroot=%S/Inputs/baremetal_arm | FileCheck --check-prefix=CHECK-V6M-DEFAULTCXX %s
88+
@@ -68,8 +68,8 @@
89+
// CHECK-V6M-DEFAULTCXX-SAME: "-L{{[^"]*}}{{[/\\]+}}Inputs{{[/\\]+}}baremetal_arm{{[/\\]+}}lib"
90+
// CHECK-V6M-DEFAULTCXX-SAME: "-lc++"
91+
// CHECK-V6M-DEFAULTCXX-SAME: "-lm"
92+
-// CHECK-V6M-DEFAULTCXX-SAME: "{{[^"]*}}libclang_rt.builtins.a"
93+
// CHECK-V6M-DEFAULTCXX-SAME: "-lc"
94+
+// CHECK-V6M-DEFAULTCXX-SAME: "{{[^"]*}}libclang_rt.builtins.a"
95+
// CHECK-V6M-DEFAULTCXX-SAME: "--target2=rel" "-o" "a.out"
96+
97+
// RUN: %clangxx %s -### --target=armv6m-none-eabi -stdlib=libc++ 2>&1 \
98+
@@ -81,8 +81,8 @@
99+
// CHECK-V6M-LIBCXX-SAME: "-L{{[^"]*}}{{[/\\]+}}Inputs{{[/\\]+}}baremetal_arm{{[/\\]+}}lib"
100+
// CHECK-V6M-LIBCXX-SAME: "-lc++"
101+
// CHECK-V6M-LIBCXX-SAME: "-lm"
102+
-// CHECK-V6M-LIBCXX-SAME: "{{[^"]*}}libclang_rt.builtins.a"
103+
// CHECK-V6M-LIBCXX-SAME: "-lc"
104+
+// CHECK-V6M-LIBCXX-SAME: "{{[^"]*}}libclang_rt.builtins.a"
105+
// CHECK-V6M-LIBCXX-SAME: "--target2=rel" "-o" "a.out"
106+
107+
// RUN: %clangxx %s -### --target=armv6m-none-eabi 2>&1 \
108+
@@ -95,8 +95,8 @@
109+
// CHECK-V6M-LIBSTDCXX: ld{{(.exe)?}}" "{{.*}}.o" "-Bstatic" "-EL"
110+
// CHECK-V6M-LIBSTDCXX-SAME: "-L{{[^"]*}}{{[/\\]+}}Inputs{{[/\\]+}}baremetal_arm{{[/\\]+}}lib"
111+
// CHECK-V6M-LIBSTDCXX-SAME: "-lstdc++" "-lm"
112+
-// CHECK-V6M-LIBSTDCXX-SAME: "{{[^"]*}}libclang_rt.builtins.a"
113+
// CHECK-V6M-LIBSTDCXX-SAME: "-lc"
114+
+// CHECK-V6M-LIBSTDCXX-SAME: "{{[^"]*}}libclang_rt.builtins.a"
115+
// CHECK-V6M-LIBSTDCXX-SAME: "--target2=rel" "-o" "a.out"
116+
117+
// RUN: %clangxx %s -### --target=armv6m-none-eabi 2>&1 \
118+
@@ -120,8 +120,8 @@
119+
// CHECK-V6M-LIBCXX-USR: "{{[^"]*}}-Bstatic"
120+
// CHECK-V6M-LIBCXX-USR-SAME: "-L{{[^"]*}}{{[/\\]+}}baremetal_cxx_sysroot{{[/\\]+}}lib"
121+
// CHECK-V6M-LIBCXX-USR-SAME: "-lc++" "-lm"
122+
-// CHECK-V6M-LIBCXX-USR-SAME: "{{[^"]*}}libclang_rt.builtins.a"
123+
// CHECK-V6M-LIBCXX-USR-SAME: "-lc"
124+
+// CHECK-V6M-LIBCXX-USR-SAME: "{{[^"]*}}libclang_rt.builtins.a"
125+
126+
// RUN: %clangxx --target=arm-none-eabi -v 2>&1 \
127+
// RUN: | FileCheck %s --check-prefix=CHECK-THREAD-MODEL
128+
@@ -208,8 +208,8 @@
129+
// CHECK-RV64-NEXT: ld{{(.exe)?}}" "{{.*}}.o" "-Bstatic"
130+
// CHECK-RV64-SAME: "-Lsome{{[/\\]+}}directory{{[/\\]+}}user{{[/\\]+}}asked{{[/\\]+}}for"
131+
// CHECK-RV64-SAME: "-L[[SYSROOT:[^"]+]]{{[/\\]+}}lib"
132+
-// CHECK-RV64-SAME: "{{[^"]*}}libclang_rt.builtins.a"
133+
// CHECK-RV64-SAME: "-lc"
134+
+// CHECK-RV64-SAME: "{{[^"]*}}libclang_rt.builtins.a"
135+
// CHECK-RV64-SAME: "-X" "-o" "{{.*}}.tmp.out"
136+
137+
// RUN: %clangxx %s -### --target=riscv64-unknown-elf 2>&1 \
138+
@@ -219,8 +219,8 @@
139+
// CHECK-RV64-DEFAULTCXX: ld{{(.exe)?}}" "{{.*}}.o" "-Bstatic"
140+
// CHECK-RV64-DEFAULTCXX-SAME: "-L{{[^"]*}}{{[/\\]+}}Inputs{{[/\\]+}}basic_riscv64_tree{{[/\\]+}}riscv64-unknown-elf{{[/\\]+}}lib"
141+
// CHECK-RV64-DEFAULTCXX-SAME: "-lc++" "-lm"
142+
-// CHECK-RV64-DEFAULTCXX-SAME: "{{[^"]*}}libclang_rt.builtins.a"
143+
// CHECK-RV64-DEFAULTCXX-SAME: "-lc"
144+
+// CHECK-RV64-DEFAULTCXX-SAME: "{{[^"]*}}libclang_rt.builtins.a"
145+
// CHECK-RV64-DEFAULTCXX-SAME: "-X" "-o" "a.out"
146+
147+
// RUN: %clangxx %s -### --target=riscv64-unknown-elf 2>&1 \
148+
@@ -233,8 +233,8 @@
149+
// CHECK-RV64-LIBCXX: ld{{(.exe)?}}" "{{.*}}.o" "-Bstatic"
150+
// CHECK-RV64-LIBCXX-SAME: "-L{{[^"]*}}{{[/\\]+}}Inputs{{[/\\]+}}basic_riscv64_tree{{[/\\]+}}riscv64-unknown-elf{{[/\\]+}}lib"
151+
// CHECK-RV64-LIBCXX-SAME: "-lc++" "-lm"
152+
-// CHECK-RV64-LIBCXX-SAME: "{{[^"]*}}libclang_rt.builtins.a"
153+
// CHECK-RV64-LIBCXX-SAME: "-lc"
154+
+// CHECK-RV64-LIBCXX-SAME: "{{[^"]*}}libclang_rt.builtins.a"
155+
// CHECK-RV64-LIBCXX-SAME: "-X" "-o" "a.out"
156+
157+
// RUN: %clangxx %s -### 2>&1 --target=riscv64-unknown-elf \
158+
@@ -247,8 +247,8 @@
159+
// CHECK-RV64-LIBSTDCXX: ld{{(.exe)?}}" "{{.*}}.o" "-Bstatic"
160+
// CHECK-RV64-LIBSTDCXX-SAME: "-L{{[^"]*}}{{[/\\]+}}Inputs{{[/\\]+}}basic_riscv64_tree{{[/\\]+}}riscv64-unknown-elf{{[/\\]+}}lib"
161+
// CHECK-RV64-LIBSTDCXX-SAME: "-lstdc++" "-lm"
162+
-// CHECK-RV64-LIBSTDCXX-SAME: "{{[^"]*}}libclang_rt.builtins.a"
163+
// CHECK-RV64-LIBSTDCXX-SAME: "-lc"
164+
+// CHECK-RV64-LIBSTDCXX-SAME: "{{[^"]*}}libclang_rt.builtins.a"
165+
// CHECK-RV64-LIBSTDCXX-SAME: "-X" "-o" "a.out"
166+
167+
// RUN: %clang %s -### 2>&1 --target=riscv32-unknown-elf \
168+
@@ -264,8 +264,8 @@
169+
// CHECK-RV32-NEXT: ld{{(.exe)?}}" "{{.*}}.o" "-Bstatic"
170+
// CHECK-RV32-SAME: "-Lsome{{[/\\]+}}directory{{[/\\]+}}user{{[/\\]+}}asked{{[/\\]+}}for"
171+
// CHECK-RV32-SAME: "-L[[SYSROOT:[^"]+]]{{[/\\]+}}lib"
172+
-// CHECK-RV32-SAME: "{{[^"]*}}libclang_rt.builtins.a"
173+
// CHECK-RV32-SAME: "-lc"
174+
+// CHECK-RV32-SAME: "{{[^"]*}}libclang_rt.builtins.a"
175+
// CHECK-RV32-SAME: "-X" "-o" "a.out"
176+
177+
// RUN: %clangxx %s -### 2>&1 --target=riscv32-unknown-elf \
178+
@@ -275,8 +275,8 @@
179+
// CHECK-RV32-DEFAULTCXX: ld{{(.exe)?}}" "{{.*}}.o" "-Bstatic"
180+
// CHECK-RV32-DEFAULTCXX-SAME: "-L{{[^"]*}}{{[/\\]+}}Inputs{{[/\\]+}}basic_riscv32_tree{{[/\\]+}}riscv32-unknown-elf{{[/\\]+}}lib"
181+
// CHECK-RV32-DEFAULTCXX-SAME: "-lc++" "-lm"
182+
-// CHECK-RV32-DEFAULTCXX-SAME: "{{[^"]*}}libclang_rt.builtins.a"
183+
// CHECK-RV32-DEFAULTCXX-SAME: "-lc"
184+
+// CHECK-RV32-DEFAULTCXX-SAME: "{{[^"]*}}libclang_rt.builtins.a"
185+
// CHECK-RV32-DEFAULTCXX-SAME: "-X" "-o" "a.out"
186+
187+
// RUN: %clangxx %s -### 2>&1 --target=riscv32-unknown-elf \
188+
@@ -301,9 +301,9 @@
189+
// CHECK-RV32-LIBSTDCXX-SAME: "-internal-isystem" "{{[^"]+}}{{[/\\]+}}include{{[/\\]+}}c++{{[/\\]+}}8.0.1"
190+
// CHECK-RV32-LIBSTDCXX: ld{{(.exe)?}}" "{{.*}}.o" "-Bstatic"
191+
// CHECK-RV32-LIBSTDCXX-SAME: "-L{{[^"]*}}{{[/\\]+}}Inputs{{[/\\]+}}basic_riscv32_tree{{[/\\]+}}riscv32-unknown-elf{{[/\\]+}}lib"
192+
-// CHECK-RV32-LIBSTDCXX-SAME: "-lstdc++" "-lm"
193+
+// CHECK-RV32-LIBSTDCXX-SAME: "-lstdc++" "-lm" "-lc"
194+
// CHECK-RV32-LIBSTDCXX-SAME: "{{[^"]*}}libclang_rt.builtins.a"
195+
-// CHECK-RV32-LIBSTDCXX-SAME: "-lc" "-X" "-o" "a.out"
196+
+// CHECK-RV32-LIBSTDCXX-SAME: "-X" "-o" "a.out"
197+
198+
// RUN: %clang %s -### 2>&1 --target=riscv64-unknown-elf \
199+
// RUN: -nostdlibinc -nobuiltininc \
200+
@@ -425,8 +425,8 @@
201+
// CHECK-PPCEABI-SAME: "-internal-isystem" "[[INSTALLEDDIR]]{{[/\\]+}}..{{[/\\]+}}lib{{[/\\]+}}clang-runtimes{{[/\\]+[^"]*}}include"
202+
// CHECK-PPCEABI-NEXT: ld{{(.exe)?}}" "{{.*}}.o" "-Bstatic"
203+
// CHECK-PPCEABI-SAME: "-L[[INSTALLEDDIR]]{{[/\\]+}}..{{[/\\]+}}lib{{[/\\]+}}clang-runtimes{{[/\\]+[^"]*}}lib"
204+
-// CHECK-PPCEABI-SAME: "{{[^"]*}}libclang_rt.builtins.a"
205+
// CHECK-PPCEABI-SAME: "-lc"
206+
+// CHECK-PPCEABI-SAME: "{{[^"]*}}libclang_rt.builtins.a"
207+
// CHECK-PPCEABI-SAME: "-o" "a.out"
208+
209+
// RUN: %clang -no-canonical-prefixes %s -### --target=powerpc64-unknown-eabi 2>&1 \
210+
@@ -439,8 +439,8 @@
211+
// CHECK-PPC64EABI-SAME: "-internal-isystem" "[[INSTALLEDDIR]]{{[/\\]+}}..{{[/\\]+}}lib{{[/\\]+}}clang-runtimes{{[/\\]+[^"]*}}include"
212+
// CHECK-PPC64EABI-NEXT: ld{{(.exe)?}}" "{{.*}}.o" "-Bstatic"
213+
// CHECK-PPC64EABI-SAME: "-L[[INSTALLEDDIR]]{{[/\\]+}}..{{[/\\]+}}lib{{[/\\]+}}clang-runtimes{{[/\\]+[^"]*}}lib"
214+
-// CHECK-PPC64EABI-SAME: "{{[^"]*}}libclang_rt.builtins.a"
215+
// CHECK-PPC64EABI-SAME: "-lc"
216+
+// CHECK-PPC64EABI-SAME: "{{[^"]*}}libclang_rt.builtins.a"
217+
// CHECK-PPC64EABI-SAME: "-o" "a.out"
218+
219+
// RUN: %clang -no-canonical-prefixes %s -### --target=powerpcle-unknown-eabi 2>&1 \
220+
@@ -453,8 +453,8 @@
221+
// CHECK-PPCLEEABI-SAME: "-internal-isystem" "[[INSTALLEDDIR]]{{[/\\]+}}..{{[/\\]+}}lib{{[/\\]+}}clang-runtimes{{[/\\]+[^"]*}}include"
222+
// CHECK-PPCLEEABI-NEXT: ld{{(.exe)?}}" "{{.*}}.o" "-Bstatic"
223+
// CHECK-PPCLEEABI-SAME: "-L[[INSTALLEDDIR]]{{[/\\]+}}..{{[/\\]+}}lib{{[/\\]+}}clang-runtimes{{[/\\]+[^"]*}}lib"
224+
-// CHECK-PPCLEEABI-SAME: "{{[^"]*}}libclang_rt.builtins.a"
225+
// CHECK-PPCLEEABI-SAME: "-lc"
226+
+// CHECK-PPCLEEABI-SAME: "{{[^"]*}}libclang_rt.builtins.a"
227+
// CHECK-PPCLEEABI-SAME: "-o" "a.out"
228+
229+
// RUN: %clang -no-canonical-prefixes %s -### --target=powerpc64le-unknown-eabi 2>&1 \
230+
@@ -467,8 +467,8 @@
231+
// CHECK-PPC64LEEABI-SAME: "-internal-isystem" "[[INSTALLEDDIR]]{{[/\\]+}}..{{[/\\]+}}lib{{[/\\]+}}clang-runtimes{{[/\\]+[^"]*}}include"
232+
// CHECK-PPC64LEEABI-NEXT: ld{{(.exe)?}}" "{{.*}}.o" "-Bstatic"
233+
// CHECK-PPC64LEEABI-SAME: "-L[[INSTALLEDDIR]]{{[/\\]+}}..{{[/\\]+}}lib{{[/\\]+}}clang-runtimes{{[/\\]+[^"]*}}lib"
234+
-// CHECK-PPC64LEEABI-SAME: "{{[^"]*}}libclang_rt.builtins.a"
235+
// CHECK-PPC64LEEABI-SAME: "-lc"
236+
+// CHECK-PPC64LEEABI-SAME: "{{[^"]*}}libclang_rt.builtins.a"
237+
// CHECK-PPC64LEEABI-SAME: "-o" "a.out"
238+
239+
// Check that compiler-rt library without the arch filename suffix will
25240
--
26241
2.47.0
27242

0 commit comments

Comments
 (0)