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