diff options
Diffstat (limited to 'recipes-devtools/clang/clang/0025-llvm-Let-llvm-ar-name-contain-lib.patch')
-rw-r--r-- | recipes-devtools/clang/clang/0025-llvm-Let-llvm-ar-name-contain-lib.patch | 150 |
1 files changed, 0 insertions, 150 deletions
diff --git a/recipes-devtools/clang/clang/0025-llvm-Let-llvm-ar-name-contain-lib.patch b/recipes-devtools/clang/clang/0025-llvm-Let-llvm-ar-name-contain-lib.patch deleted file mode 100644 index 0d5baab..0000000 --- a/recipes-devtools/clang/clang/0025-llvm-Let-llvm-ar-name-contain-lib.patch +++ /dev/null | |||
@@ -1,150 +0,0 @@ | |||
1 | From e709fa8c221d21bce717b22fa4076c94d51f011e Mon Sep 17 00:00:00 2001 | ||
2 | From: Fangrui Song <maskray@google.com> | ||
3 | Date: Tue, 10 Dec 2019 15:56:05 -0800 | ||
4 | Subject: [PATCH] llvm: Let llvm-ar name contain 'lib' | ||
5 | |||
6 | In cross-compile cases canonical names are created using symlinks but | ||
7 | they fail to execute because the name confuses 'lib' instead of toolname | ||
8 | |||
9 | In multilib(lib32) case, the arm-pokymllib32-linux-gnueabi-llvm-ar (${TARGET_PREFIX}llvm-ar) gives: | ||
10 | qc: no such file or directory | ||
11 | |||
12 | Which is because when the llvm-ar symbol link's name contains "lib", it would be considered as llvm-lib: | ||
13 | |||
14 | Signed-off-by: Fangrui Song <maskray@google.com> | ||
15 | Signed-off-by: Khem Raj <raj.khem@gmail.com> | ||
16 | --- | ||
17 | llvm/test/tools/llvm-ar/tool-name.test | 15 ++++++++++++++ | ||
18 | llvm/test/tools/llvm-dlltool/tool-name.test | 13 ++++++++++++ | ||
19 | llvm/test/tools/llvm-lib/tool-name.test | 14 +++++++++++++ | ||
20 | llvm/test/tools/llvm-ranlib/tool-name.test | 13 ++++++++++++ | ||
21 | llvm/tools/llvm-ar/llvm-ar.cpp | 23 ++++++++++++++------- | ||
22 | 5 files changed, 71 insertions(+), 7 deletions(-) | ||
23 | create mode 100644 llvm/test/tools/llvm-ar/tool-name.test | ||
24 | create mode 100644 llvm/test/tools/llvm-dlltool/tool-name.test | ||
25 | create mode 100644 llvm/test/tools/llvm-lib/tool-name.test | ||
26 | create mode 100644 llvm/test/tools/llvm-ranlib/tool-name.test | ||
27 | |||
28 | diff --git a/llvm/test/tools/llvm-ar/tool-name.test b/llvm/test/tools/llvm-ar/tool-name.test | ||
29 | new file mode 100644 | ||
30 | index 00000000000..cb656d3b47f | ||
31 | --- /dev/null | ||
32 | +++ b/llvm/test/tools/llvm-ar/tool-name.test | ||
33 | @@ -0,0 +1,15 @@ | ||
34 | +## Don't make symlinks on Windows. | ||
35 | +# UNSUPPORTED: system-windows | ||
36 | + | ||
37 | +# RUN: rm -rf %t | ||
38 | +# RUN: mkdir %t | ||
39 | +# RUN: ln -s llvm-ar %t/llvm-ar-9 | ||
40 | +# RUN: ln -s llvm-ar %t/ar.exe | ||
41 | +# RUN: ln -s llvm-ar %t/arm-pokymllib32-linux-gnueabi-llvm-ar-9 | ||
42 | + | ||
43 | +# RUN: llvm-ar h | FileCheck %s | ||
44 | +# RUN: %t/llvm-ar-9 h | FileCheck %s | ||
45 | +# RUN: %t/ar.exe h | FileCheck %s | ||
46 | +# RUN: %t/arm-pokymllib32-linux-gnueabi-llvm-ar-9 h | FileCheck %s | ||
47 | + | ||
48 | +# CHECK: USAGE: llvm-ar | ||
49 | diff --git a/llvm/test/tools/llvm-dlltool/tool-name.test b/llvm/test/tools/llvm-dlltool/tool-name.test | ||
50 | new file mode 100644 | ||
51 | index 00000000000..e9d8680322d | ||
52 | --- /dev/null | ||
53 | +++ b/llvm/test/tools/llvm-dlltool/tool-name.test | ||
54 | @@ -0,0 +1,13 @@ | ||
55 | +## Don't make symlinks on Windows. | ||
56 | +# UNSUPPORTED: system-windows | ||
57 | + | ||
58 | +# RUN: rm -rf %t | ||
59 | +# RUN: mkdir %t | ||
60 | +# RUN: ln -s llvm-dlltool %t/dlltool.exe | ||
61 | +# RUN: ln -s llvm-dlltool %t/dlltool-10 | ||
62 | + | ||
63 | +# RUN: not llvm-dlltool 2>&1 | FileCheck %s | ||
64 | +# RUN: not %t/dlltool.exe 2>&1 | FileCheck %s | ||
65 | +# RUN: not %t/dlltool-10 2>&1 | FileCheck %s | ||
66 | + | ||
67 | +# CHECK: USAGE: llvm-dlltool | ||
68 | diff --git a/llvm/test/tools/llvm-lib/tool-name.test b/llvm/test/tools/llvm-lib/tool-name.test | ||
69 | new file mode 100644 | ||
70 | index 00000000000..9c0f7b5de73 | ||
71 | --- /dev/null | ||
72 | +++ b/llvm/test/tools/llvm-lib/tool-name.test | ||
73 | @@ -0,0 +1,14 @@ | ||
74 | +## Don't make symlinks on Windows. | ||
75 | +# UNSUPPORTED: system-windows | ||
76 | + | ||
77 | +# RUN: rm -rf %t | ||
78 | +# RUN: mkdir %t | ||
79 | +## See D44808, MSBuild runs Lib.exe | ||
80 | +# RUN: ln -s llvm-lib %t/Lib.exe | ||
81 | +# RUN: ln -s llvm-lib %t/llvm-lib-10 | ||
82 | + | ||
83 | +# RUN: llvm-lib '/?' | FileCheck %s | ||
84 | +# RUN: %t/Lib.exe '/?' | FileCheck %s | ||
85 | +# RUN: %t/llvm-lib-10 '/?' | FileCheck %s | ||
86 | + | ||
87 | +# CHECK: USAGE: llvm-lib | ||
88 | diff --git a/llvm/test/tools/llvm-ranlib/tool-name.test b/llvm/test/tools/llvm-ranlib/tool-name.test | ||
89 | new file mode 100644 | ||
90 | index 00000000000..bd2b4965331 | ||
91 | --- /dev/null | ||
92 | +++ b/llvm/test/tools/llvm-ranlib/tool-name.test | ||
93 | @@ -0,0 +1,13 @@ | ||
94 | +## Don't make symlinks on Windows. | ||
95 | +# UNSUPPORTED: system-windows | ||
96 | + | ||
97 | +# RUN: rm -rf %t | ||
98 | +# RUN: mkdir %t | ||
99 | +# RUN: ln -s llvm-ranlib %t/llvm-ranlib-9 | ||
100 | +# RUN: ln -s llvm-ranlib %t/ranlib.exe | ||
101 | + | ||
102 | +# RUN: llvm-ranlib -h | FileCheck %s | ||
103 | +# RUN: %t/llvm-ranlib-9 -h | FileCheck %s | ||
104 | +# RUN: %t/ranlib.exe -h | FileCheck %s | ||
105 | + | ||
106 | +# CHECK: USAGE: llvm-ranlib | ||
107 | diff --git a/llvm/tools/llvm-ar/llvm-ar.cpp b/llvm/tools/llvm-ar/llvm-ar.cpp | ||
108 | index 91746d0fab3..a7118371f1e 100644 | ||
109 | --- a/llvm/tools/llvm-ar/llvm-ar.cpp | ||
110 | +++ b/llvm/tools/llvm-ar/llvm-ar.cpp | ||
111 | @@ -11,6 +11,7 @@ | ||
112 | // | ||
113 | //===----------------------------------------------------------------------===// | ||
114 | |||
115 | +#include "llvm/ADT/StringExtras.h" | ||
116 | #include "llvm/ADT/StringSwitch.h" | ||
117 | #include "llvm/ADT/Triple.h" | ||
118 | #include "llvm/IR/LLVMContext.h" | ||
119 | @@ -1125,16 +1126,24 @@ int main(int argc, char **argv) { | ||
120 | llvm::InitializeAllAsmParsers(); | ||
121 | |||
122 | Stem = sys::path::stem(ToolName); | ||
123 | - if (Stem.contains_lower("dlltool")) | ||
124 | + auto Is = [](StringRef Tool) { | ||
125 | + // We need to recognize the following filenames. | ||
126 | + // | ||
127 | + // Lib.exe -> lib (see D44808, MSBuild runs Lib.exe) | ||
128 | + // dlltool.exe -> dlltool | ||
129 | + // arm-pokymllib32-linux-gnueabi-llvm-ar-10 -> ar | ||
130 | + auto I = Stem.rfind_lower(Tool); | ||
131 | + return I != StringRef::npos && | ||
132 | + (I + Tool.size() == Stem.size() || !isAlnum(Stem[I + Tool.size()])); | ||
133 | + }; | ||
134 | + | ||
135 | + if (Is("dlltool")) | ||
136 | return dlltoolDriverMain(makeArrayRef(argv, argc)); | ||
137 | - | ||
138 | - if (Stem.contains_lower("ranlib")) | ||
139 | + if (Is("ranlib")) | ||
140 | return ranlib_main(argc, argv); | ||
141 | - | ||
142 | - if (Stem.contains_lower("lib")) | ||
143 | + if (Is("lib")) | ||
144 | return libDriverMain(makeArrayRef(argv, argc)); | ||
145 | - | ||
146 | - if (Stem.contains_lower("ar")) | ||
147 | + if (Is("ar")) | ||
148 | return ar_main(argc, argv); | ||
149 | fail("Not ranlib, ar, lib or dlltool!"); | ||
150 | } | ||