blob: 1a2650d16ebc6cb5e564f59f0ec406009fce61df [file] [log] [blame]
Jyotsna Verma2efbe472013-04-03 17:17:48 +00001// REQUIRES: hexagon-registered-target
2
3// -----------------------------------------------------------------------------
4// Test standard include paths
5// -----------------------------------------------------------------------------
6
7// RUN: %clang -### -target hexagon-unknown-elf \
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: %clang -ccc-cxx -x c++ -### -target hexagon-unknown-elf \
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-elf \
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-elf \
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: %clang -ccc-cxx -x c++ -### -target hexagon-unknown-elf \
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: %clang -ccc-cxx -x c++ -### -target hexagon-unknown-elf \
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-elf \
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-elf \
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-elf \
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-elf \
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: %clang -march=hexagonv2 -target hexagon-unknown-elf \
112// RUN: %s 2>&1 | FileCheck -check-prefix=CHECK-UNKNOWN-V2 %s
113// RUN: %clang -mcpu=hexagonv2 -target hexagon-unknown-elf \
114// RUN: %s 2>&1 | FileCheck -check-prefix=CHECK-UNKNOWN-V2 %s
115// RUN: %clang -mv2 -target hexagon-unknown-elf \
116// RUN: %s 2>&1 | FileCheck -check-prefix=CHECK-UNKNOWN-V2 %s
117// CHECK-UNKNOWN-V2: error: unknown target CPU 'hexagonv2'
118
119// RUN: %clang -march=hexagonv3 -target hexagon-unknown-elf \
120// RUN: %s 2>&1 | FileCheck -check-prefix=CHECK-UNKNOWN-V3 %s
121// RUN: %clang -mcpu=hexagonv3 -target hexagon-unknown-elf \
122// RUN: %s 2>&1 | FileCheck -check-prefix=CHECK-UNKNOWN-V3 %s
123// RUN: %clang -mv3 -target hexagon-unknown-elf \
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-elf \
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: %clang -ccc-cxx -x c++ -### -target hexagon-unknown-elf \
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-elf \
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-elf \
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-elf \
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-elf \
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: %clang -ccc-cxx -x c++ -### -target hexagon-unknown-elf \
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: %clang -ccc-cxx -x c++ -### -target hexagon-unknown-elf \
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: %clang -ccc-cxx -x c++ -### -target hexagon-unknown-elf \
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-elf \
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-elf \
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: %clang -ccc-cxx -x c++ -### -target hexagon-unknown-elf \
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-elf \
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-elf \
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-elf \
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-elf \
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-elf \
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-elf \
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-elf \
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-elf \
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-elf \
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-elf \
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-elf \
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"
Jyotsna Verma29828082013-04-11 17:27:18 +0000563// CHECK029: "--noexecstack" "--trap" "--keep-locals"
Jyotsna Verma2efbe472013-04-03 17:17:48 +0000564// CHECK029-NEXT: "{{.*}}/bin/hexagon-ld"