1 // REQUIRES: hexagon-registered-target
2 
3 // -----------------------------------------------------------------------------
4 // Test standard include paths
5 // -----------------------------------------------------------------------------
6 
7 // RUN: %clang -### -target hexagon-unknown-linux     \
8 // RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \
9 // RUN:   %s 2>&1 \
10 // RUN:   | FileCheck -check-prefix=CHECK001 %s
11 // CHECK001: "-cc1" {{.*}} "-internal-externc-isystem" "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/lib/gcc/hexagon/4.4.0/include"
12 // CHECK001:   "-internal-externc-isystem" "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/lib/gcc/hexagon/4.4.0/include-fixed"
13 // CHECK001:   "-internal-externc-isystem" "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/hexagon/include"
14 // CHECK001-NEXT: "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/bin{{/|\\}}hexagon-as"
15 
16 // RUN: %clangxx -### -target hexagon-unknown-linux     \
17 // RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \
18 // RUN:   %s 2>&1 \
19 // RUN:   | FileCheck -check-prefix=CHECK002 %s
20 // CHECK002: "-cc1" {{.*}} "-internal-isystem" "[[INSTALL_DIR:.*]]/Inputs/hexagon_tree/qc/bin/../../gnu{{/|\\\\}}hexagon/include/c++/4.4.0"
21 // CHECK002:   "-internal-externc-isystem" "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/lib/gcc/hexagon/4.4.0/include"
22 // CHECK002:   "-internal-externc-isystem" "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/lib/gcc/hexagon/4.4.0/include-fixed"
23 // CHECK002:   "-internal-externc-isystem" "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/hexagon/include"
24 // CHECK002-NEXT: "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/bin{{/|\\}}hexagon-as"
25 
26 // -----------------------------------------------------------------------------
27 // Test -nostdinc, -nostdlibinc, -nostdinc++
28 // -----------------------------------------------------------------------------
29 
30 // RUN: %clang -### -target hexagon-unknown-linux     \
31 // RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \
32 // RUN:   -nostdinc \
33 // RUN:   %s 2>&1 \
34 // RUN:   | FileCheck -check-prefix=CHECK003 %s
35 // CHECK003: "-cc1"
36 // CHECK003-NOT: "-internal-externc-isystem" "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/lib/gcc/hexagon/4.4.0/include"
37 // CHECK003-NOT: "-internal-externc-isystem" "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/lib/gcc/hexagon/4.4.0/include-fixed"
38 // CHECK003-NOT: "-internal-externc-isystem" "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/hexagon/include"
39 // CHECK003-NEXT: "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/bin{{/|\\}}hexagon-as"
40 
41 // RUN: %clang -### -target hexagon-unknown-linux     \
42 // RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \
43 // RUN:   -nostdlibinc \
44 // RUN:   %s 2>&1 \
45 // RUN:   | FileCheck -check-prefix=CHECK004 %s
46 // CHECK004: "-cc1"
47 // CHECK004-NOT: "-internal-externc-isystem" "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/lib/gcc/hexagon/4.4.0/include"
48 // CHECK004-NOT: "-internal-externc-isystem" "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/lib/gcc/hexagon/4.4.0/include-fixed"
49 // CHECK004-NOT: "-internal-externc-isystem" "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/hexagon/include"
50 // CHECK004-NEXT: "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/bin{{/|\\}}hexagon-as"
51 
52 // RUN: %clangxx -### -target hexagon-unknown-linux     \
53 // RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \
54 // RUN:   -nostdlibinc \
55 // RUN:   %s 2>&1 \
56 // RUN:   | FileCheck -check-prefix=CHECK005 %s
57 // CHECK005: "-cc1"
58 // CHECK005-NOT: "-internal-isystem" "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/hexagon/include/c++/4.4.0"
59 // CHECK005-NOT: "-internal-externc-isystem" "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/lib/gcc/hexagon/4.4.0/include"
60 // CHECK005-NOT: "-internal-externc-isystem" "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/lib/gcc/hexagon/4.4.0/include-fixed"
61 // CHECK005-NOT: "-internal-externc-isystem" "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/hexagon/include"
62 // CHECK005-NEXT: "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/bin{{/|\\}}hexagon-as"
63 
64 // RUN: %clangxx -### -target hexagon-unknown-linux     \
65 // RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \
66 // RUN:   -nostdinc++ \
67 // RUN:   %s 2>&1 \
68 // RUN:   | FileCheck -check-prefix=CHECK006 %s
69 // CHECK006: "-cc1"
70 // CHECK006-NOT: "-internal-isystem" "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/hexagon/include/c++/4.4.0"
71 // CHECK006-NEXT: "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/bin{{/|\\}}hexagon-as"
72 
73 // -----------------------------------------------------------------------------
74 // Test -march=<archname> -mcpu=<archname> -mv<number>
75 // -----------------------------------------------------------------------------
76 // RUN: %clang -### -target hexagon-unknown-linux     \
77 // RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \
78 // RUN:   -march=hexagonv3 \
79 // RUN:   %s 2>&1 \
80 // RUN:   | FileCheck -check-prefix=CHECK007 %s
81 // CHECK007: "-cc1" {{.*}} "-target-cpu" "hexagonv3"
82 // CHECK007-NEXT: "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/bin{{/|\\}}hexagon-as"{{.*}} "-march=v3"
83 // CHECK007-NEXT: "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/bin{{/|\\}}hexagon-ld"{{.*}} "-mv3"
84 
85 // RUN: %clang -### -target hexagon-unknown-linux     \
86 // RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \
87 // RUN:   -mcpu=hexagonv5 \
88 // RUN:   %s 2>&1 \
89 // RUN:   | FileCheck -check-prefix=CHECK008 %s
90 // CHECK008: "-cc1" {{.*}} "-target-cpu" "hexagonv5"
91 // CHECK008-NEXT: "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/bin{{/|\\}}hexagon-as"{{.*}} "-march=v5"
92 // CHECK008-NEXT: "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/bin{{/|\\}}hexagon-ld"{{.*}} "-mv5"
93 
94 // RUN: %clang -### -target hexagon-unknown-linux     \
95 // RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \
96 // RUN:   -mv2 \
97 // RUN:   %s 2>&1 \
98 // RUN:   | FileCheck -check-prefix=CHECK009 %s
99 // CHECK009: "-cc1" {{.*}} "-target-cpu" "hexagonv2"
100 // CHECK009-NEXT: "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/bin{{/|\\}}hexagon-as"{{.*}} "-march=v2"
101 // CHECK009-NEXT: "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/bin{{/|\\}}hexagon-ld"{{.*}} "-mv2"
102 
103 // RUN: %clang -### -target hexagon-unknown-linux     \
104 // RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \
105 // RUN:   %s 2>&1 \
106 // RUN:   | FileCheck -check-prefix=CHECK010 %s
107 // CHECK010: "-cc1" {{.*}} "-target-cpu" "hexagonv4"
108 // CHECK010-NEXT: "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/bin{{/|\\}}hexagon-as"{{.*}} "-march=v4"
109 // CHECK010-NEXT: "{{.*}}/Inputs/hexagon_tree/qc/bin/../../gnu/bin{{/|\\}}hexagon-ld"{{.*}} "-mv4"
110 
111 // RUN: not %clang -march=hexagonv2 -target hexagon-unknown-linux \
112 // RUN:   %s 2>&1 | FileCheck -check-prefix=CHECK-UNKNOWN-V2 %s
113 // RUN: not %clang -mcpu=hexagonv2  -target hexagon-unknown-linux \
114 // RUN:   %s 2>&1 | FileCheck -check-prefix=CHECK-UNKNOWN-V2 %s
115 // RUN: not %clang -mv2             -target hexagon-unknown-linux \
116 // RUN:   %s 2>&1 | FileCheck -check-prefix=CHECK-UNKNOWN-V2 %s
117 // CHECK-UNKNOWN-V2: error: unknown target CPU 'hexagonv2'
118 
119 // RUN: not %clang -march=hexagonv3 -target hexagon-unknown-linux \
120 // RUN:   %s 2>&1 | FileCheck -check-prefix=CHECK-UNKNOWN-V3 %s
121 // RUN: not %clang -mcpu=hexagonv3  -target hexagon-unknown-linux \
122 // RUN:   %s 2>&1 | FileCheck -check-prefix=CHECK-UNKNOWN-V3 %s
123 // RUN: not %clang -mv3             -target hexagon-unknown-linux \
124 // RUN:   %s 2>&1 | FileCheck -check-prefix=CHECK-UNKNOWN-V3 %s
125 // CHECK-UNKNOWN-V3: error: unknown target CPU 'hexagonv3'
126 
127 // -----------------------------------------------------------------------------
128 // Test Linker related args
129 // -----------------------------------------------------------------------------
130 
131 // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
132 // Defaults for C
133 // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
134 // RUN: %clang -### -target hexagon-unknown-linux     \
135 // RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \
136 // RUN:   %s 2>&1 \
137 // RUN:   | FileCheck -check-prefix=CHECK011 %s
138 // CHECK011: "{{.*}}clang{{.*}}" "-cc1"
139 // CHECK011-NEXT: "{{.*}}/bin{{/|\\}}hexagon-as"{{.*}}
140 // CHECK011-NEXT: "{{.*}}/bin{{/|\\}}hexagon-ld"
141 // CHECK011-NOT: "-static"
142 // CHECK011-NOT: "-shared"
143 // CHECK011: "{{.*}}/hexagon/lib/v4/crt0_standalone.o"
144 // CHECK011: "{{.*}}/hexagon/lib/v4/crt0.o"
145 // CHECK011: "{{.*}}/hexagon/lib/v4/init.o"
146 // CHECK011: "-L{{.*}}/lib/gcc/hexagon/4.4.0/v4"
147 // CHECK011: "-L{{.*}}/lib/gcc/hexagon/4.4.0"
148 // CHECK011: "-L{{.*}}/lib/gcc"
149 // CHECK011: "-L{{.*}}/hexagon/lib/v4"
150 // CHECK011: "-L{{.*}}/hexagon/lib"
151 // CHECK011: "{{[^"]+}}.o"
152 // CHECK011: "--start-group" "-lstandalone" "-lc" "-lgcc" "--end-group"
153 // CHECK011: "{{.*}}/hexagon/lib/v4/fini.o"
154 
155 // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
156 // Defaults for C++
157 // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
158 // RUN: %clangxx -### -target hexagon-unknown-linux     \
159 // RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \
160 // RUN:   %s 2>&1 \
161 // RUN:   | FileCheck -check-prefix=CHECK012 %s
162 // CHECK012: "{{.*}}clang{{.*}}" "-cc1"
163 // CHECK012-NEXT: "{{.*}}/bin{{/|\\}}hexagon-as"{{.*}}
164 // CHECK012-NEXT: "{{.*}}/bin{{/|\\}}hexagon-ld"
165 // CHECK012-NOT: "-static"
166 // CHECK012-NOT: "-shared"
167 // CHECK012: "{{.*}}/hexagon/lib/v4/crt0_standalone.o"
168 // CHECK012: "{{.*}}/hexagon/lib/v4/crt0.o"
169 // CHECK012: "{{.*}}/hexagon/lib/v4/init.o"
170 // CHECK012: "-L{{.*}}/lib/gcc/hexagon/4.4.0/v4"
171 // CHECK012: "-L{{.*}}/lib/gcc/hexagon/4.4.0"
172 // CHECK012: "-L{{.*}}/lib/gcc"
173 // CHECK012: "-L{{.*}}/hexagon/lib/v4"
174 // CHECK012: "-L{{.*}}/hexagon/lib"
175 // CHECK012: "{{[^"]+}}.o"
176 // CHECK012: "-lstdc++" "-lm"
177 // CHECK012: "--start-group" "-lstandalone" "-lc" "-lgcc" "--end-group"
178 // CHECK012: "{{.*}}/hexagon/lib/v4/fini.o"
179 
180 // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
181 // Additional Libraries (-L)
182 // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
183 // RUN: %clang -### -target hexagon-unknown-linux     \
184 // RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \
185 // RUN:   -Lone -L two -L three \
186 // RUN:   %s 2>&1 \
187 // RUN:   | FileCheck -check-prefix=CHECK013 %s
188 // CHECK013: "{{.*}}clang{{.*}}" "-cc1"
189 // CHECK013-NEXT: "{{.*}}/bin{{/|\\}}hexagon-as"{{.*}}
190 // CHECK013-NEXT: "{{.*}}/bin{{/|\\}}hexagon-ld"
191 // CHECK013: "{{.*}}/hexagon/lib/v4/crt0_standalone.o"
192 // CHECK013: "{{.*}}/hexagon/lib/v4/crt0.o"
193 // CHECK013: "{{.*}}/hexagon/lib/v4/init.o"
194 // CHECK013: "-Lone" "-Ltwo" "-Lthree"
195 // CHECK013: "-L{{.*}}/lib/gcc/hexagon/4.4.0/v4"
196 // CHECK013: "-L{{.*}}/lib/gcc/hexagon/4.4.0"
197 // CHECK013: "-L{{.*}}/lib/gcc"
198 // CHECK013: "-L{{.*}}/hexagon/lib/v4"
199 // CHECK013: "-L{{.*}}/hexagon/lib"
200 // CHECK013: "{{[^"]+}}.o"
201 // CHECK013: "--start-group" "-lstandalone" "-lc" "-lgcc" "--end-group"
202 // CHECK013: "{{.*}}/hexagon/lib/v4/fini.o"
203 
204 // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
205 // -static, -shared
206 // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
207 // RUN: %clang -### -target hexagon-unknown-linux     \
208 // RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \
209 // RUN:   -static \
210 // RUN:   %s 2>&1 \
211 // RUN:   | FileCheck -check-prefix=CHECK014 %s
212 // CHECK014: "{{.*}}clang{{.*}}" "-cc1"
213 // CHECK014-NEXT: "{{.*}}/bin{{/|\\}}hexagon-as"{{.*}}
214 // CHECK014-NEXT: "{{.*}}/bin{{/|\\}}hexagon-ld"
215 // CHECK014: "-static"
216 // CHECK014: "{{.*}}/hexagon/lib/v4/crt0_standalone.o"
217 // CHECK014: "{{.*}}/hexagon/lib/v4/crt0.o"
218 // CHECK014: "{{.*}}/hexagon/lib/v4/init.o"
219 // CHECK014: "-L{{.*}}/lib/gcc/hexagon/4.4.0/v4"
220 // CHECK014: "-L{{.*}}/lib/gcc/hexagon/4.4.0"
221 // CHECK014: "-L{{.*}}/lib/gcc"
222 // CHECK014: "-L{{.*}}/hexagon/lib/v4"
223 // CHECK014: "-L{{.*}}/hexagon/lib"
224 // CHECK014: "{{[^"]+}}.o"
225 // CHECK014: "--start-group" "-lstandalone" "-lc" "-lgcc" "--end-group"
226 // CHECK014: "{{.*}}/hexagon/lib/v4/fini.o"
227 
228 // RUN: %clang -### -target hexagon-unknown-linux     \
229 // RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \
230 // RUN:   -shared \
231 // RUN:   %s 2>&1 \
232 // RUN:   | FileCheck -check-prefix=CHECK015 %s
233 // CHECK015: "{{.*}}clang{{.*}}" "-cc1"
234 // CHECK015-NEXT: "{{.*}}/bin{{/|\\}}hexagon-as"{{.*}}
235 // CHECK015-NEXT: "{{.*}}/bin{{/|\\}}hexagon-ld"
236 // CHECK015: "-shared" "-call_shared"
237 // CHECK015-NOT: crt0_standalone.o
238 // CHECK015-NOT: crt0.o
239 // CHECK015: "{{.*}}/hexagon/lib/v4/G0/initS.o"
240 // CHECK015: "-L{{.*}}/lib/gcc/hexagon/4.4.0/v4/G0"
241 // CHECK015: "-L{{.*}}/lib/gcc/hexagon/4.4.0/G0"
242 // CHECK015: "-L{{.*}}/lib/gcc/hexagon/4.4.0/v4"
243 // CHECK015: "-L{{.*}}/lib/gcc/hexagon/4.4.0"
244 // CHECK015: "-L{{.*}}/lib/gcc"
245 // CHECK015: "-L{{.*}}/hexagon/lib/v4/G0"
246 // CHECK015: "-L{{.*}}/hexagon/lib/G0"
247 // CHECK015: "-L{{.*}}/hexagon/lib/v4"
248 // CHECK015: "-L{{.*}}/hexagon/lib"
249 // CHECK015: "{{[^"]+}}.o"
250 // CHECK015: "--start-group"
251 // CHECK015-NOT: "-lstandalone"
252 // CHECK015-NOT: "-lc"
253 // CHECK015: "-lgcc"
254 // CHECK015: "--end-group"
255 // CHECK015: "{{.*}}/hexagon/lib/v4/G0/finiS.o"
256 
257 // RUN: %clang -### -target hexagon-unknown-linux     \
258 // RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \
259 // RUN:   -shared \
260 // RUN:   -static \
261 // RUN:   %s 2>&1 \
262 // RUN:   | FileCheck -check-prefix=CHECK016 %s
263 // CHECK016: "{{.*}}clang{{.*}}" "-cc1"
264 // CHECK016-NEXT: "{{.*}}/bin{{/|\\}}hexagon-as"{{.*}}
265 // CHECK016-NEXT: "{{.*}}/bin{{/|\\}}hexagon-ld"
266 // CHECK016: "-shared" "-call_shared" "-static"
267 // CHECK016-NOT: crt0_standalone.o
268 // CHECK016-NOT: crt0.o
269 // CHECK016: "{{.*}}/hexagon/lib/v4/G0/init.o"
270 // CHECK016: "-L{{.*}}/lib/gcc/hexagon/4.4.0/v4/G0"
271 // CHECK016: "-L{{.*}}/lib/gcc/hexagon/4.4.0/G0"
272 // CHECK016: "-L{{.*}}/lib/gcc/hexagon/4.4.0/v4"
273 // CHECK016: "-L{{.*}}/lib/gcc/hexagon/4.4.0"
274 // CHECK016: "-L{{.*}}/lib/gcc"
275 // CHECK016: "-L{{.*}}/hexagon/lib/v4/G0"
276 // CHECK016: "-L{{.*}}/hexagon/lib/G0"
277 // CHECK016: "-L{{.*}}/hexagon/lib/v4"
278 // CHECK016: "-L{{.*}}/hexagon/lib"
279 // CHECK016: "{{[^"]+}}.o"
280 // CHECK016: "--start-group"
281 // CHECK016-NOT: "-lstandalone"
282 // CHECK016-NOT: "-lc"
283 // CHECK016: "-lgcc"
284 // CHECK016: "--end-group"
285 // CHECK016: "{{.*}}/hexagon/lib/v4/G0/fini.o"
286 
287 // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
288 // -nostdlib, -nostartfiles, -nodefaultlibs
289 // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
290 // RUN: %clangxx -### -target hexagon-unknown-linux     \
291 // RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \
292 // RUN:   -nostdlib \
293 // RUN:   %s 2>&1 \
294 // RUN:   | FileCheck -check-prefix=CHECK017 %s
295 // CHECK017: "{{.*}}clang{{.*}}" "-cc1"
296 // CHECK017-NEXT: "{{.*}}/bin{{/|\\}}hexagon-as"{{.*}}
297 // CHECK017-NEXT: "{{.*}}/bin{{/|\\}}hexagon-ld"
298 // CHECK017-NOT: crt0_standalone.o
299 // CHECK017-NOT: crt0.o
300 // CHECK017-NOT: init.o
301 // CHECK017: "-L{{.*}}/lib/gcc/hexagon/4.4.0/v4"
302 // CHECK017: "-L{{.*}}/lib/gcc/hexagon/4.4.0"
303 // CHECK017: "-L{{.*}}/lib/gcc"
304 // CHECK017: "-L{{.*}}/hexagon/lib/v4"
305 // CHECK017: "-L{{.*}}/hexagon/lib"
306 // CHECK017: "{{[^"]+}}.o"
307 // CHECK017-NOT: "-lstdc++"
308 // CHECK017-NOT: "-lm"
309 // CHECK017-NOT: "--start-group"
310 // CHECK017-NOT: "-lstandalone"
311 // CHECK017-NOT: "-lc"
312 // CHECK017-NOT: "-lgcc"
313 // CHECK017-NOT: "--end-group"
314 // CHECK017-NOT: fini.o
315 
316 // RUN: %clangxx -### -target hexagon-unknown-linux     \
317 // RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \
318 // RUN:   -nostartfiles \
319 // RUN:   %s 2>&1 \
320 // RUN:   | FileCheck -check-prefix=CHECK018 %s
321 // CHECK018: "{{.*}}clang{{.*}}" "-cc1"
322 // CHECK018-NEXT: "{{.*}}/bin{{/|\\}}hexagon-as"{{.*}}
323 // CHECK018-NEXT: "{{.*}}/bin{{/|\\}}hexagon-ld"
324 // CHECK018-NOT: crt0_standalone.o
325 // CHECK018-NOT: crt0.o
326 // CHECK018-NOT: init.o
327 // CHECK018: "-L{{.*}}/lib/gcc/hexagon/4.4.0/v4"
328 // CHECK018: "-L{{.*}}/lib/gcc/hexagon/4.4.0"
329 // CHECK018: "-L{{.*}}/lib/gcc"
330 // CHECK018: "-L{{.*}}/hexagon/lib/v4"
331 // CHECK018: "-L{{.*}}/hexagon/lib"
332 // CHECK018: "{{[^"]+}}.o"
333 // CHECK018: "-lstdc++"
334 // CHECK018: "-lm"
335 // CHECK018: "--start-group"
336 // CHECK018: "-lstandalone"
337 // CHECK018: "-lc"
338 // CHECK018: "-lgcc"
339 // CHECK018: "--end-group"
340 // CHECK018-NOT: fini.o
341 
342 // RUN: %clangxx -### -target hexagon-unknown-linux     \
343 // RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \
344 // RUN:   -nodefaultlibs \
345 // RUN:   %s 2>&1 \
346 // RUN:   | FileCheck -check-prefix=CHECK019 %s
347 // CHECK019: "{{.*}}clang{{.*}}" "-cc1"
348 // CHECK019-NEXT: "{{.*}}/bin{{/|\\}}hexagon-as"{{.*}}
349 // CHECK019-NEXT: "{{.*}}/bin{{/|\\}}hexagon-ld"
350 // CHECK019: "{{.*}}/hexagon/lib/v4/crt0_standalone.o"
351 // CHECK019: "{{.*}}/hexagon/lib/v4/crt0.o"
352 // CHECK019: "{{.*}}/hexagon/lib/v4/init.o"
353 // CHECK019: "-L{{.*}}/lib/gcc/hexagon/4.4.0/v4"
354 // CHECK019: "-L{{.*}}/lib/gcc/hexagon/4.4.0"
355 // CHECK019: "-L{{.*}}/lib/gcc"
356 // CHECK019: "-L{{.*}}/hexagon/lib/v4"
357 // CHECK019: "-L{{.*}}/hexagon/lib"
358 // CHECK019: "{{[^"]+}}.o"
359 // CHECK019-NOT: "-lstdc++"
360 // CHECK019-NOT: "-lm"
361 // CHECK019-NOT: "--start-group"
362 // CHECK019-NOT: "-lstandalone"
363 // CHECK019-NOT: "-lc"
364 // CHECK019-NOT: "-lgcc"
365 // CHECK019-NOT: "--end-group"
366 // CHECK019: "{{.*}}/hexagon/lib/v4/fini.o"
367 
368 // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
369 // -moslib
370 // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
371 // RUN: %clang -### -target hexagon-unknown-linux     \
372 // RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \
373 // RUN:   -moslib=first -moslib=second \
374 // RUN:   %s 2>&1 \
375 // RUN:   | FileCheck -check-prefix=CHECK020 %s
376 // CHECK020: "{{.*}}clang{{.*}}" "-cc1"
377 // CHECK020-NEXT: "{{.*}}/bin{{/|\\}}hexagon-as"{{.*}}
378 // CHECK020-NEXT: "{{.*}}/bin{{/|\\}}hexagon-ld"
379 // CHECK020-NOT: "-static"
380 // CHECK020-NOT: "-shared"
381 // CHECK020-NOT: crt0_standalone.o
382 // CHECK020: "{{.*}}/hexagon/lib/v4/crt0.o"
383 // CHECK020: "{{.*}}/hexagon/lib/v4/init.o"
384 // CHECK020: "-L{{.*}}/lib/gcc/hexagon/4.4.0/v4"
385 // CHECK020: "-L{{.*}}/lib/gcc/hexagon/4.4.0"
386 // CHECK020: "-L{{.*}}/lib/gcc"
387 // CHECK020: "-L{{.*}}/hexagon/lib/v4"
388 // CHECK020: "-L{{.*}}/hexagon/lib"
389 // CHECK020: "{{[^"]+}}.o"
390 // CHECK020: "--start-group"
391 // CHECK020: "-lfirst" "-lsecond"
392 // CHECK020-NOT: "-lstandalone"
393 // CHECK020: "-lc" "-lgcc" "--end-group"
394 // CHECK020: "{{.*}}/hexagon/lib/v4/fini.o"
395 
396 // RUN: %clang -### -target hexagon-unknown-linux     \
397 // RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \
398 // RUN:   -moslib=first -moslib=second -moslib=standalone\
399 // RUN:   %s 2>&1 \
400 // RUN:   | FileCheck -check-prefix=CHECK021 %s
401 // CHECK021: "{{.*}}clang{{.*}}" "-cc1"
402 // CHECK021-NEXT: "{{.*}}/bin{{/|\\}}hexagon-as"{{.*}}
403 // CHECK021-NEXT: "{{.*}}/bin{{/|\\}}hexagon-ld"
404 // CHECK021-NOT: "-static"
405 // CHECK021-NOT: "-shared"
406 // CHECK021: "{{.*}}/hexagon/lib/v4/crt0_standalone.o"
407 // CHECK021: "{{.*}}/hexagon/lib/v4/crt0.o"
408 // CHECK021: "{{.*}}/hexagon/lib/v4/init.o"
409 // CHECK021: "-L{{.*}}/lib/gcc/hexagon/4.4.0/v4"
410 // CHECK021: "-L{{.*}}/lib/gcc/hexagon/4.4.0"
411 // CHECK021: "-L{{.*}}/lib/gcc"
412 // CHECK021: "-L{{.*}}/hexagon/lib/v4"
413 // CHECK021: "-L{{.*}}/hexagon/lib"
414 // CHECK021: "{{[^"]+}}.o"
415 // CHECK021: "--start-group"
416 // CHECK021: "-lfirst" "-lsecond"
417 // CHECK021: "-lstandalone"
418 // CHECK021: "-lc" "-lgcc" "--end-group"
419 // CHECK021: "{{.*}}/hexagon/lib/v4/fini.o"
420 
421 // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
422 // Other args to pass to linker
423 // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
424 // RUN: %clangxx -### -target hexagon-unknown-linux     \
425 // RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \
426 // RUN:   -s \
427 // RUN:   -Tbss 0xdead -Tdata 0xbeef -Ttext 0xcafe \
428 // RUN:   -t \
429 // RUN:   -e start_here \
430 // RUN:   -uFoo -undefined Bar \
431 // RUN:   %s 2>&1 \
432 // RUN:   | FileCheck -check-prefix=CHECK022 %s
433 // CHECK022: "{{.*}}clang{{.*}}" "-cc1"
434 // CHECK022-NEXT: "{{.*}}/bin{{/|\\}}hexagon-as"{{.*}}
435 // CHECK022-NEXT: "{{.*}}/bin{{/|\\}}hexagon-ld"
436 // CHECK022: "{{.*}}/hexagon/lib/v4/crt0_standalone.o"
437 // CHECK022: "{{.*}}/hexagon/lib/v4/crt0.o"
438 // CHECK022: "{{.*}}/hexagon/lib/v4/init.o"
439 // CHECK022: "-L{{.*}}/lib/gcc/hexagon/4.4.0/v4"
440 // CHECK022: "-L{{.*}}/lib/gcc/hexagon/4.4.0"
441 // CHECK022: "-L{{.*}}/lib/gcc"
442 // CHECK022: "-L{{.*}}/hexagon/lib/v4"
443 // CHECK022: "-L{{.*}}/hexagon/lib"
444 // CHECK022: "-Tbss" "0xdead" "-Tdata" "0xbeef" "-Ttext" "0xcafe"
445 // CHECK022: "-s"
446 // CHECK022: "-t"
447 // CHECK022: "-u" "Foo" "-undefined" "Bar"
448 // CHECK022: "{{[^"]+}}.o"
449 // CHECK022: "-lstdc++" "-lm"
450 // CHECK022: "--start-group" "-lstandalone" "-lc" "-lgcc" "--end-group"
451 // CHECK022: "{{.*}}/hexagon/lib/v4/fini.o"
452 
453 // -----------------------------------------------------------------------------
454 // pic, small data threshold
455 // -----------------------------------------------------------------------------
456 // RUN: %clang -### -target hexagon-unknown-linux     \
457 // RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \
458 // RUN:   %s 2>&1 \
459 // RUN:   | FileCheck -check-prefix=CHECK023 %s
460 // CHECK023:      "{{.*}}clang{{.*}}" "-cc1"
461 // CHECK023:        "-mrelocation-model" "static"
462 // CHECK023-NEXT: "{{.*}}/bin{{/|\\}}hexagon-as"
463 // CHECK023-NOT:    "-G{{[0-9]+}}"
464 // CHECK023-NEXT: "{{.*}}/bin{{/|\\}}hexagon-ld"
465 // CHECK023-NOT:    "-G{{[0-9]+}}"
466 
467 // RUN: %clang -### -target hexagon-unknown-linux     \
468 // RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \
469 // RUN:   -fpic \
470 // RUN:   %s 2>&1 \
471 // RUN:   | FileCheck -check-prefix=CHECK024 %s
472 // RUN: %clang -### -target hexagon-unknown-linux     \
473 // RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \
474 // RUN:   -fPIC \
475 // RUN:   %s 2>&1 \
476 // RUN:   | FileCheck -check-prefix=CHECK024 %s
477 // RUN: %clang -### -target hexagon-unknown-linux     \
478 // RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \
479 // RUN:   -fPIC \
480 // RUN:   -msmall-data-threshold=8 \
481 // RUN:   %s 2>&1 \
482 // RUN:   | FileCheck -check-prefix=CHECK024 %s
483 // CHECK024:      "{{.*}}clang{{.*}}" "-cc1"
484 // CHECK024-NOT:    "-mrelocation-model" "static"
485 // CHECK024:        "-pic-level" "{{[12]}}"
486 // CHECK024:        "-mllvm" "-hexagon-small-data-threshold=0"
487 // CHECK024-NEXT: "{{.*}}/bin{{/|\\}}hexagon-as"
488 // CHECK024:        "-G0"
489 // CHECK024-NEXT: "{{.*}}/bin{{/|\\}}hexagon-ld"
490 // CHECK024:        "-G0"
491 
492 // RUN: %clang -### -target hexagon-unknown-linux     \
493 // RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \
494 // RUN:   -G=8 \
495 // RUN:   %s 2>&1 \
496 // RUN:   | FileCheck -check-prefix=CHECK025 %s
497 // RUN: %clang -### -target hexagon-unknown-linux     \
498 // RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \
499 // RUN:   -G 8 \
500 // RUN:   %s 2>&1 \
501 // RUN:   | FileCheck -check-prefix=CHECK025 %s
502 // RUN: %clang -### -target hexagon-unknown-linux     \
503 // RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \
504 // RUN:   -msmall-data-threshold=8 \
505 // RUN:   %s 2>&1 \
506 // RUN:   | FileCheck -check-prefix=CHECK025 %s
507 // CHECK025:      "{{.*}}clang{{.*}}" "-cc1"
508 // CHECK025:        "-mrelocation-model" "static"
509 // CHECK025:        "-mllvm" "-hexagon-small-data-threshold=8"
510 // CHECK025-NEXT: "{{.*}}/bin{{/|\\}}hexagon-as"
511 // CHECK025:        "-G8"
512 // CHECK025-NEXT: "{{.*}}/bin{{/|\\}}hexagon-ld"
513 // CHECK025:        "-G8"
514 
515 // -----------------------------------------------------------------------------
516 // pie
517 // -----------------------------------------------------------------------------
518 // RUN: %clang -### -target hexagon-unknown-linux     \
519 // RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \
520 // RUN:   -pie \
521 // RUN:   %s 2>&1 \
522 // RUN:   | FileCheck -check-prefix=CHECK026 %s
523 // CHECK026:      "{{.*}}clang{{.*}}" "-cc1"
524 // CHECK026-NEXT: "{{.*}}/bin{{/|\\}}hexagon-as"
525 // CHECK026-NEXT: "{{.*}}/bin{{/|\\}}hexagon-ld"
526 // CHECK026:        "-pie"
527 
528 // RUN: %clang -### -target hexagon-unknown-linux     \
529 // RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \
530 // RUN:   -pie -shared \
531 // RUN:   %s 2>&1 \
532 // RUN:   | FileCheck -check-prefix=CHECK027 %s
533 // CHECK027:      "{{.*}}clang{{.*}}" "-cc1"
534 // CHECK027-NEXT: "{{.*}}/bin{{/|\\}}hexagon-as"
535 // CHECK027-NEXT: "{{.*}}/bin{{/|\\}}hexagon-ld"
536 // CHECK027-NOT:    "-pie"
537 
538 // -----------------------------------------------------------------------------
539 // Misc Defaults
540 // -----------------------------------------------------------------------------
541 // RUN: %clang -### -target hexagon-unknown-linux     \
542 // RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \
543 // RUN:   %s 2>&1 \
544 // RUN:   | FileCheck -check-prefix=CHECK028 %s
545 // CHECK028:      "{{.*}}clang{{.*}}" "-cc1"
546 // CHECK028:        "-mqdsp6-compat"
547 // CHECK028:        "-Wreturn-type"
548 // CHECK028-NEXT: "{{.*}}/bin{{/|\\}}hexagon-as"
549 // CHECK028-NEXT: "{{.*}}/bin{{/|\\}}hexagon-ld"
550 
551 // -----------------------------------------------------------------------------
552 // Test Assembler related args
553 // -----------------------------------------------------------------------------
554 // RUN: %clang -### -target hexagon-unknown-linux     \
555 // RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \
556 // RUN:   -gdwarf-2 \
557 // RUN:   -Wa,--noexecstack,--trap \
558 // RUN:   -Xassembler --keep-locals \
559 // RUN:   %s 2>&1 \
560 // RUN:   | FileCheck -check-prefix=CHECK029 %s
561 // CHECK029:      "{{.*}}clang{{.*}}" "-cc1"
562 // CHECK029-NEXT: "{{.*}}/bin{{/|\\}}hexagon-as"
563 // CHECK029:      "--noexecstack" "--trap" "--keep-locals"
564 // CHECK029-NEXT: "{{.*}}/bin{{/|\\}}hexagon-ld"
565