xref: /aosp_15_r20/external/clang/test/Driver/hexagon-toolchain-elf.c (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li // -----------------------------------------------------------------------------
2*67e74705SXin Li // Test standard include paths
3*67e74705SXin Li // -----------------------------------------------------------------------------
4*67e74705SXin Li 
5*67e74705SXin Li // RUN: %clang -### -target hexagon-unknown-elf \
6*67e74705SXin Li // RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \
7*67e74705SXin Li // RUN:   %s 2>&1 \
8*67e74705SXin Li // RUN:   | FileCheck -check-prefix=CHECK000 %s
9*67e74705SXin Li // CHECK000: "-cc1" {{.*}} "-internal-externc-isystem" "{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/include"
10*67e74705SXin Li 
11*67e74705SXin Li // RUN: %clangxx -### -target hexagon-unknown-elf \
12*67e74705SXin Li // RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \
13*67e74705SXin Li // RUN:   %s 2>&1 \
14*67e74705SXin Li // RUN:   | FileCheck -check-prefix=CHECK001 %s
15*67e74705SXin Li // CHECK001: "-cc1" {{.*}} "-internal-isystem" "{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/include/c++"
16*67e74705SXin Li // CHECK001:   "-internal-externc-isystem" "{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/include"
17*67e74705SXin Li 
18*67e74705SXin Li // -----------------------------------------------------------------------------
19*67e74705SXin Li // Test -nostdinc, -nostdlibinc, -nostdinc++
20*67e74705SXin Li // -----------------------------------------------------------------------------
21*67e74705SXin Li 
22*67e74705SXin Li // RUN: %clang -### -target hexagon-unknown-elf \
23*67e74705SXin Li // RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \
24*67e74705SXin Li // RUN:   -nostdinc \
25*67e74705SXin Li // RUN:   %s 2>&1 \
26*67e74705SXin Li // RUN:   | FileCheck -check-prefix=CHECK010 %s
27*67e74705SXin Li // CHECK010: "-cc1"
28*67e74705SXin Li // CHECK010-NOT: "-internal-externc-isystem"
29*67e74705SXin Li 
30*67e74705SXin Li // RUN: %clang -### -target hexagon-unknown-elf \
31*67e74705SXin Li // RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \
32*67e74705SXin Li // RUN:   -nostdlibinc \
33*67e74705SXin Li // RUN:   %s 2>&1 \
34*67e74705SXin Li // RUN:   | FileCheck -check-prefix=CHECK011 %s
35*67e74705SXin Li // CHECK011: "-cc1"
36*67e74705SXin Li // CHECK011-NOT: "-internal-externc-isystem"
37*67e74705SXin Li 
38*67e74705SXin Li // RUN: %clangxx -### -target hexagon-unknown-elf \
39*67e74705SXin Li // RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \
40*67e74705SXin Li // RUN:   -nostdinc++ \
41*67e74705SXin Li // RUN:   %s 2>&1 \
42*67e74705SXin Li // RUN:   | FileCheck -check-prefix=CHECK012 %s
43*67e74705SXin Li // CHECK012: "-cc1"
44*67e74705SXin Li // CHECK012-NOT: "-internal-isystem"
45*67e74705SXin Li // CHECK012-DAG: "-internal-externc-isystem" "{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/include"
46*67e74705SXin Li 
47*67e74705SXin Li // RUN: %clangxx -### -target hexagon-unknown-elf -fno-integrated-as    \
48*67e74705SXin Li // RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/qc/bin \
49*67e74705SXin Li // RUN:   --gcc-toolchain="" \
50*67e74705SXin Li // RUN:   -nostdlibinc \
51*67e74705SXin Li // RUN:   %s 2>&1 \
52*67e74705SXin Li // RUN:   | FileCheck -check-prefix=CHECK013 %s
53*67e74705SXin Li // CHECK013: "-cc1"
54*67e74705SXin Li // CHECK013-NOT: "-internal-isystem"
55*67e74705SXin Li // CHECK013-NOT: "-internal-externc-isystem"
56*67e74705SXin Li 
57*67e74705SXin Li // -----------------------------------------------------------------------------
58*67e74705SXin Li // Test -mcpu=<cpuname> -mv<number>
59*67e74705SXin Li // -----------------------------------------------------------------------------
60*67e74705SXin Li // RUN: %clang -### -target hexagon-unknown-elf \
61*67e74705SXin Li // RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \
62*67e74705SXin Li // RUN:   -mcpu=hexagonv4 \
63*67e74705SXin Li // RUN:   %s 2>&1 \
64*67e74705SXin Li // RUN:   | FileCheck -check-prefix=CHECK020 %s
65*67e74705SXin Li // CHECK020: "-cc1" {{.*}} "-target-cpu" "hexagonv4"
66*67e74705SXin Li // CHECK020: hexagon-link{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v4/crt0
67*67e74705SXin Li 
68*67e74705SXin Li // RUN: %clang -### -target hexagon-unknown-elf \
69*67e74705SXin Li // RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \
70*67e74705SXin Li // RUN:   -mcpu=hexagonv5 \
71*67e74705SXin Li // RUN:   %s 2>&1 \
72*67e74705SXin Li // RUN:   | FileCheck -check-prefix=CHECK021 %s
73*67e74705SXin Li // CHECK021: "-cc1" {{.*}} "-target-cpu" "hexagonv5"
74*67e74705SXin Li // CHECK021: hexagon-link{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v5/crt0
75*67e74705SXin Li 
76*67e74705SXin Li // RUN: %clang -### -target hexagon-unknown-elf \
77*67e74705SXin Li // RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \
78*67e74705SXin Li // RUN:   -mcpu=hexagonv55 \
79*67e74705SXin Li // RUN:   %s 2>&1 \
80*67e74705SXin Li // RUN:   | FileCheck -check-prefix=CHECK022 %s
81*67e74705SXin Li // CHECK022: "-cc1" {{.*}} "-target-cpu" "hexagonv55"
82*67e74705SXin Li // CHECK022: hexagon-link{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v55/crt0
83*67e74705SXin Li 
84*67e74705SXin Li // RUN: %clang -### -target hexagon-unknown-elf \
85*67e74705SXin Li // RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \
86*67e74705SXin Li // RUN:   -mcpu=hexagonv60 \
87*67e74705SXin Li // RUN:   %s 2>&1 \
88*67e74705SXin Li // RUN:   | FileCheck -check-prefix=CHECK023 %s
89*67e74705SXin Li // CHECK023: "-cc1" {{.*}} "-target-cpu" "hexagonv60"
90*67e74705SXin Li // CHECK023: hexagon-link{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/crt0
91*67e74705SXin Li 
92*67e74705SXin Li // -----------------------------------------------------------------------------
93*67e74705SXin Li // Test Linker related args
94*67e74705SXin Li // -----------------------------------------------------------------------------
95*67e74705SXin Li 
96*67e74705SXin Li // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
97*67e74705SXin Li // Defaults for C
98*67e74705SXin Li // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
99*67e74705SXin Li // RUN: %clang -### -target hexagon-unknown-elf \
100*67e74705SXin Li // RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \
101*67e74705SXin Li // RUN:   -mcpu=hexagonv60 \
102*67e74705SXin Li // RUN:   %s 2>&1 \
103*67e74705SXin Li // RUN:   | FileCheck -check-prefix=CHECK030 %s
104*67e74705SXin Li // CHECK030: "-cc1"
105*67e74705SXin Li // CHECK030-NEXT: hexagon-link
106*67e74705SXin Li // CHECK030-NOT: "-static"
107*67e74705SXin Li // CHECK030-NOT: "-shared"
108*67e74705SXin Li // CHECK030: "{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/crt0_standalone.o"
109*67e74705SXin Li // CHECK030: "{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/crt0.o"
110*67e74705SXin Li // CHECK030: "{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/init.o"
111*67e74705SXin Li // CHECK030: "-L{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60"
112*67e74705SXin Li // CHECK030: "-L{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib"
113*67e74705SXin Li // CHECK030: "{{[^"]+}}.o"
114*67e74705SXin Li // CHECK030: "--start-group" "-lstandalone" "-lc" "-lgcc" "--end-group"
115*67e74705SXin Li // CHECK030: "{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/fini.o"
116*67e74705SXin Li 
117*67e74705SXin Li // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
118*67e74705SXin Li // Defaults for C++
119*67e74705SXin Li // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
120*67e74705SXin Li // RUN: %clangxx -### -target hexagon-unknown-elf \
121*67e74705SXin Li // RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \
122*67e74705SXin Li // RUN:   -mcpu=hexagonv60 \
123*67e74705SXin Li // RUN:   %s 2>&1 \
124*67e74705SXin Li // RUN:   | FileCheck -check-prefix=CHECK031 %s
125*67e74705SXin Li // CHECK031: "-cc1"
126*67e74705SXin Li // CHECK031-NEXT: hexagon-link
127*67e74705SXin Li // CHECK031-NOT: "-static"
128*67e74705SXin Li // CHECK031-NOT: "-shared"
129*67e74705SXin Li // CHECK031: "{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/crt0_standalone.o"
130*67e74705SXin Li // CHECK031: "{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/crt0.o"
131*67e74705SXin Li // CHECK031: "{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/init.o"
132*67e74705SXin Li // CHECK031: "-L{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60"
133*67e74705SXin Li // CHECK031: "-L{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib"
134*67e74705SXin Li // CHECK031: "{{[^"]+}}.o"
135*67e74705SXin Li // CHECK031: "-lstdc++" "-lm"
136*67e74705SXin Li // CHECK031: "--start-group" "-lstandalone" "-lc" "-lgcc" "--end-group"
137*67e74705SXin Li // CHECK031: "{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/fini.o"
138*67e74705SXin Li 
139*67e74705SXin Li // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
140*67e74705SXin Li // Additional Libraries (-L)
141*67e74705SXin Li // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
142*67e74705SXin Li // RUN: %clang -### -target hexagon-unknown-elf \
143*67e74705SXin Li // RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \
144*67e74705SXin Li // RUN:   -mcpu=hexagonv60 \
145*67e74705SXin Li // RUN:   -Lone -L two -L three \
146*67e74705SXin Li // RUN:   %s 2>&1 \
147*67e74705SXin Li // RUN:   | FileCheck -check-prefix=CHECK032 %s
148*67e74705SXin Li // CHECK032: "-cc1"
149*67e74705SXin Li // CHECK032-NEXT: hexagon-link
150*67e74705SXin Li // CHECK032-NOT: "-static"
151*67e74705SXin Li // CHECK032-NOT: "-shared"
152*67e74705SXin Li // CHECK032: "{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/crt0_standalone.o"
153*67e74705SXin Li // CHECK032: "{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/crt0.o"
154*67e74705SXin Li // CHECK032: "{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/init.o"
155*67e74705SXin Li // CHECK032: "-Lone" "-Ltwo" "-Lthree"
156*67e74705SXin Li // CHECK032: "-L{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60"
157*67e74705SXin Li // CHECK032: "-L{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib"
158*67e74705SXin Li // CHECK032: "{{[^"]+}}.o"
159*67e74705SXin Li // CHECK032: "--start-group" "-lstandalone" "-lc" "-lgcc" "--end-group"
160*67e74705SXin Li // CHECK032: "{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/fini.o"
161*67e74705SXin Li 
162*67e74705SXin Li // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
163*67e74705SXin Li // -static, -shared
164*67e74705SXin Li // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
165*67e74705SXin Li // RUN: %clang -### -target hexagon-unknown-elf \
166*67e74705SXin Li // RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \
167*67e74705SXin Li // RUN:   -mcpu=hexagonv60 \
168*67e74705SXin Li // RUN:   -static \
169*67e74705SXin Li // RUN:   %s 2>&1 \
170*67e74705SXin Li // RUN:   | FileCheck -check-prefix=CHECK033 %s
171*67e74705SXin Li // CHECK033: "-cc1"
172*67e74705SXin Li // CHECK033-NEXT: hexagon-link
173*67e74705SXin Li // CHECK033: "-static"
174*67e74705SXin Li // CHECK033: "{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/crt0_standalone.o"
175*67e74705SXin Li // CHECK033: "{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/crt0.o"
176*67e74705SXin Li // CHECK033: "{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/init.o"
177*67e74705SXin Li // CHECK033: "-L{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60"
178*67e74705SXin Li // CHECK033: "-L{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib"
179*67e74705SXin Li // CHECK033: "{{[^"]+}}.o"
180*67e74705SXin Li // CHECK033: "--start-group" "-lstandalone" "-lc" "-lgcc" "--end-group"
181*67e74705SXin Li // CHECK033: "{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/fini.o"
182*67e74705SXin Li 
183*67e74705SXin Li // RUN: %clang -### -target hexagon-unknown-elf \
184*67e74705SXin Li // RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \
185*67e74705SXin Li // RUN:   -mcpu=hexagonv60 \
186*67e74705SXin Li // RUN:   -shared \
187*67e74705SXin Li // RUN:   %s 2>&1 \
188*67e74705SXin Li // RUN:   | FileCheck -check-prefix=CHECK034 %s
189*67e74705SXin Li // CHECK034: "-cc1"
190*67e74705SXin Li // CHECK034-NEXT: hexagon-link
191*67e74705SXin Li // CHECK034: "-shared" "-call_shared"
192*67e74705SXin Li // CHECK034-NOT: crt0_standalone.o
193*67e74705SXin Li // CHECK034-NOT: crt0.o
194*67e74705SXin Li // CHECK034: "{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/G0/pic/initS.o"
195*67e74705SXin Li // CHECK034: "-L{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/G0"
196*67e74705SXin Li // CHECK034: "-L{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60"
197*67e74705SXin Li // CHECK034: "-L{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib"
198*67e74705SXin Li // CHECK034: "{{[^"]+}}.o"
199*67e74705SXin Li // CHECK034: "--start-group"
200*67e74705SXin Li // CHECK034-NOT: "-lstandalone"
201*67e74705SXin Li // CHECK034-NOT: "-lc"
202*67e74705SXin Li // CHECK034: "-lgcc"
203*67e74705SXin Li // CHECK034: "--end-group"
204*67e74705SXin Li // CHECK034: "{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/G0/pic/finiS.o"
205*67e74705SXin Li 
206*67e74705SXin Li // RUN: %clang -### -target hexagon-unknown-elf \
207*67e74705SXin Li // RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \
208*67e74705SXin Li // RUN:   -mcpu=hexagonv60 \
209*67e74705SXin Li // RUN:   -shared \
210*67e74705SXin Li // RUN:   -static \
211*67e74705SXin Li // RUN:   %s 2>&1 \
212*67e74705SXin Li // RUN:   | FileCheck -check-prefix=CHECK035 %s
213*67e74705SXin Li // CHECK035: "-cc1"
214*67e74705SXin Li // CHECK035-NEXT: hexagon-link
215*67e74705SXin Li // CHECK035: "-shared" "-call_shared" "-static"
216*67e74705SXin Li // CHECK035-NOT: crt0_standalone.o
217*67e74705SXin Li // CHECK035-NOT: crt0.o
218*67e74705SXin Li // CHECK035: "{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/G0/init.o"
219*67e74705SXin Li // CHECK035: "-L{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/G0"
220*67e74705SXin Li // CHECK035: "-L{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60"
221*67e74705SXin Li // CHECK035: "-L{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib"
222*67e74705SXin Li // CHECK035: "{{[^"]+}}.o"
223*67e74705SXin Li // CHECK035: "--start-group"
224*67e74705SXin Li // CHECK035-NOT: "-lstandalone"
225*67e74705SXin Li // CHECK035-NOT: "-lc"
226*67e74705SXin Li // CHECK035: "-lgcc"
227*67e74705SXin Li // CHECK035: "--end-group"
228*67e74705SXin Li // CHECK035: "{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/G0/fini.o"
229*67e74705SXin Li 
230*67e74705SXin Li // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
231*67e74705SXin Li // -nostdlib, -nostartfiles, -nodefaultlibs
232*67e74705SXin Li // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
233*67e74705SXin Li // RUN: %clangxx -### -target hexagon-unknown-elf \
234*67e74705SXin Li // RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \
235*67e74705SXin Li // RUN:   -mcpu=hexagonv60 \
236*67e74705SXin Li // RUN:   -nostdlib \
237*67e74705SXin Li // RUN:   %s 2>&1 \
238*67e74705SXin Li // RUN:   | FileCheck -check-prefix=CHECK036 %s
239*67e74705SXin Li // CHECK036: "-cc1"
240*67e74705SXin Li // CHECK036-NEXT: hexagon-link
241*67e74705SXin Li // CHECK036-NOT: crt0_standalone.o
242*67e74705SXin Li // CHECK036-NOT: crt0.o
243*67e74705SXin Li // CHECK036-NOT: init.o
244*67e74705SXin Li // CHECK036: "-L{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60"
245*67e74705SXin Li // CHECK036: "-L{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib"
246*67e74705SXin Li // CHECK036: "{{[^"]+}}.o"
247*67e74705SXin Li // CHECK036-NOT: "-lstdc++"
248*67e74705SXin Li // CHECK036-NOT: "-lm"
249*67e74705SXin Li // CHECK036-NOT: "--start-group"
250*67e74705SXin Li // CHECK036-NOT: "-lstandalone"
251*67e74705SXin Li // CHECK036-NOT: "-lc"
252*67e74705SXin Li // CHECK036-NOT: "-lgcc"
253*67e74705SXin Li // CHECK036-NOT: "--end-group"
254*67e74705SXin Li // CHECK036-NOT: fini.o
255*67e74705SXin Li 
256*67e74705SXin Li // RUN: %clangxx -### -target hexagon-unknown-elf \
257*67e74705SXin Li // RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \
258*67e74705SXin Li // RUN:   -mcpu=hexagonv60 \
259*67e74705SXin Li // RUN:   -nostartfiles \
260*67e74705SXin Li // RUN:   %s 2>&1 \
261*67e74705SXin Li // RUN:   | FileCheck -check-prefix=CHECK037 %s
262*67e74705SXin Li // CHECK037: "-cc1"
263*67e74705SXin Li // CHECK037-NEXT: hexagon-link
264*67e74705SXin Li // CHECK037-NOT: crt0_standalone.o
265*67e74705SXin Li // CHECK037-NOT: crt0.o
266*67e74705SXin Li // CHECK037-NOT: init.o
267*67e74705SXin Li // CHECK037: "-L{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60"
268*67e74705SXin Li // CHECK037: "-L{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib"
269*67e74705SXin Li // CHECK037: "{{[^"]+}}.o"
270*67e74705SXin Li // CHECK037: "-lstdc++"
271*67e74705SXin Li // CHECK037: "-lm"
272*67e74705SXin Li // CHECK037: "--start-group"
273*67e74705SXin Li // CHECK037: "-lstandalone"
274*67e74705SXin Li // CHECK037: "-lc"
275*67e74705SXin Li // CHECK037: "-lgcc"
276*67e74705SXin Li // CHECK037: "--end-group"
277*67e74705SXin Li // CHECK037-NOT: fini.o
278*67e74705SXin Li 
279*67e74705SXin Li // RUN: %clangxx -### -target hexagon-unknown-elf \
280*67e74705SXin Li // RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \
281*67e74705SXin Li // RUN:   -mcpu=hexagonv60 \
282*67e74705SXin Li // RUN:   -nodefaultlibs \
283*67e74705SXin Li // RUN:   %s 2>&1 \
284*67e74705SXin Li // RUN:   | FileCheck -check-prefix=CHECK038 %s
285*67e74705SXin Li // CHECK038: "-cc1"
286*67e74705SXin Li // CHECK038-NEXT: hexagon-link
287*67e74705SXin Li // CHECK038: "{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/crt0_standalone.o"
288*67e74705SXin Li // CHECK038: "{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/crt0.o"
289*67e74705SXin Li // CHECK038: "{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/init.o"
290*67e74705SXin Li // CHECK038: "-L{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60"
291*67e74705SXin Li // CHECK038: "-L{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib"
292*67e74705SXin Li // CHECK038: "{{[^"]+}}.o"
293*67e74705SXin Li // CHECK038-NOT: "-lstdc++"
294*67e74705SXin Li // CHECK038-NOT: "-lm"
295*67e74705SXin Li // CHECK038-NOT: "--start-group"
296*67e74705SXin Li // CHECK038-NOT: "-lstandalone"
297*67e74705SXin Li // CHECK038-NOT: "-lc"
298*67e74705SXin Li // CHECK038-NOT: "-lgcc"
299*67e74705SXin Li // CHECK038-NOT: "--end-group"
300*67e74705SXin Li // CHECK038: "{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/fini.o"
301*67e74705SXin Li 
302*67e74705SXin Li // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
303*67e74705SXin Li // -moslib
304*67e74705SXin Li // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
305*67e74705SXin Li // RUN: %clang -### -target hexagon-unknown-elf \
306*67e74705SXin Li // RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \
307*67e74705SXin Li // RUN:   -mcpu=hexagonv60 \
308*67e74705SXin Li // RUN:   -moslib=first -moslib=second \
309*67e74705SXin Li // RUN:   %s 2>&1 \
310*67e74705SXin Li // RUN:   | FileCheck -check-prefix=CHECK039 %s
311*67e74705SXin Li // CHECK039: "-cc1"
312*67e74705SXin Li // CHECK039-NEXT: hexagon-link
313*67e74705SXin Li // CHECK039-NOT: "-static"
314*67e74705SXin Li // CHECK039-NOT: "-shared"
315*67e74705SXin Li // CHECK039-NOT: crt0_standalone.o
316*67e74705SXin Li // CHECK039: "{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/crt0.o"
317*67e74705SXin Li // CHECK039: "{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/init.o"
318*67e74705SXin Li // CHECK039: "-L{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60"
319*67e74705SXin Li // CHECK039: "-L{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib"
320*67e74705SXin Li // CHECK039: "{{[^"]+}}.o"
321*67e74705SXin Li // CHECK039: "--start-group"
322*67e74705SXin Li // CHECK039: "-lfirst" "-lsecond"
323*67e74705SXin Li // CHECK039-NOT: "-lstandalone"
324*67e74705SXin Li // CHECK039: "-lc" "-lgcc" "--end-group"
325*67e74705SXin Li // CHECK039: "{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/fini.o"
326*67e74705SXin Li 
327*67e74705SXin Li // RUN: %clang -### -target hexagon-unknown-elf \
328*67e74705SXin Li // RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \
329*67e74705SXin Li // RUN:   -mcpu=hexagonv60 \
330*67e74705SXin Li // RUN:   -moslib=first -moslib=second -moslib=standalone \
331*67e74705SXin Li // RUN:   %s 2>&1 \
332*67e74705SXin Li // RUN:   | FileCheck -check-prefix=CHECK03A %s
333*67e74705SXin Li // CHECK03A: "-cc1"
334*67e74705SXin Li // CHECK03A-NEXT: hexagon-link
335*67e74705SXin Li // CHECK03A-NOT: "-static"
336*67e74705SXin Li // CHECK03A-NOT: "-shared"
337*67e74705SXin Li // CHECK03A: "{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/crt0_standalone.o"
338*67e74705SXin Li // CHECK03A: "{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/crt0.o"
339*67e74705SXin Li // CHECK03A: "{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/init.o"
340*67e74705SXin Li // CHECK03A: "-L{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60"
341*67e74705SXin Li // CHECK03A: "-L{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib"
342*67e74705SXin Li // CHECK03A: "{{[^"]+}}.o"
343*67e74705SXin Li // CHECK03A: "--start-group"
344*67e74705SXin Li // CHECK03A: "-lfirst" "-lsecond"
345*67e74705SXin Li // CHECK03A: "-lstandalone"
346*67e74705SXin Li // CHECK03A: "-lc" "-lgcc" "--end-group"
347*67e74705SXin Li // CHECK03A: "{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/fini.o"
348*67e74705SXin Li 
349*67e74705SXin Li // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
350*67e74705SXin Li // Other args to pass to linker
351*67e74705SXin Li // - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
352*67e74705SXin Li // RUN: %clangxx -### -target hexagon-unknown-elf \
353*67e74705SXin Li // RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \
354*67e74705SXin Li // RUN:   -mcpu=hexagonv60 \
355*67e74705SXin Li // RUN:   -s \
356*67e74705SXin Li // RUN:   -Tbss 0xdead -Tdata 0xbeef -Ttext 0xcafe \
357*67e74705SXin Li // RUN:   -t \
358*67e74705SXin Li // RUN:   -e start_here \
359*67e74705SXin Li // RUN:   -uFoo -undefined Bar \
360*67e74705SXin Li // RUN:   %s 2>&1 \
361*67e74705SXin Li // RUN:   | FileCheck -check-prefix=CHECK03B %s
362*67e74705SXin Li // CHECK03B: "-cc1"
363*67e74705SXin Li // CHECK03B-NEXT: hexagon-link
364*67e74705SXin Li // CHECK03B: "{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/crt0_standalone.o"
365*67e74705SXin Li // CHECK03B: "{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/crt0.o"
366*67e74705SXin Li // CHECK03B: "{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/init.o"
367*67e74705SXin Li // CHECK03B: "-L{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60"
368*67e74705SXin Li // CHECK03B: "-L{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib"
369*67e74705SXin Li // CHECK03B: "-s"
370*67e74705SXin Li // CHECK03B: "-Tbss" "0xdead" "-Tdata" "0xbeef" "-Ttext" "0xcafe"
371*67e74705SXin Li // CHECK03B: "-t"
372*67e74705SXin Li // CHECK03B: "-u" "Foo" "-undefined" "Bar"
373*67e74705SXin Li // CHECK03B: "{{[^"]+}}.o"
374*67e74705SXin Li // CHECK03B: "-lstdc++" "-lm"
375*67e74705SXin Li // CHECK03B: "--start-group" "-lstandalone" "-lc" "-lgcc" "--end-group"
376*67e74705SXin Li // CHECK03B: "{{.*}}/Inputs/hexagon_tree/Tools/bin/../target/hexagon/lib/v60/fini.o"
377*67e74705SXin Li 
378*67e74705SXin Li // -----------------------------------------------------------------------------
379*67e74705SXin Li // pic, small data threshold
380*67e74705SXin Li // -----------------------------------------------------------------------------
381*67e74705SXin Li // RUN: %clang -### -target hexagon-unknown-elf \
382*67e74705SXin Li // RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \
383*67e74705SXin Li // RUN:   -mcpu=hexagonv60 \
384*67e74705SXin Li // RUN:   %s 2>&1 \
385*67e74705SXin Li // RUN:   | FileCheck -check-prefix=CHECK040 %s
386*67e74705SXin Li // CHECK040:      "-cc1"
387*67e74705SXin Li // CHECK040-NEXT: hexagon-link
388*67e74705SXin Li // CHECK040-NOT:  "-G{{[0-9]+}}"
389*67e74705SXin Li 
390*67e74705SXin Li // RUN: %clang -### -target hexagon-unknown-elf \
391*67e74705SXin Li // RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \
392*67e74705SXin Li // RUN:   -mcpu=hexagonv60 \
393*67e74705SXin Li // RUN:   -fpic \
394*67e74705SXin Li // RUN:   %s 2>&1 \
395*67e74705SXin Li // RUN:   | FileCheck -check-prefix=CHECK041 %s
396*67e74705SXin Li // RUN: %clang -### -target hexagon-unknown-elf \
397*67e74705SXin Li // RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \
398*67e74705SXin Li // RUN:   -mcpu=hexagonv60 \
399*67e74705SXin Li // RUN:   -fPIC \
400*67e74705SXin Li // RUN:   %s 2>&1 \
401*67e74705SXin Li // RUN:   | FileCheck -check-prefix=CHECK041 %s
402*67e74705SXin Li // CHECK041:      "-cc1"
403*67e74705SXin Li // CHECK041-NOT:  "-mrelocation-model" "static"
404*67e74705SXin Li // CHECK041:      "-pic-level" "{{[12]}}"
405*67e74705SXin Li // CHECK041:      "-mllvm" "-hexagon-small-data-threshold=0"
406*67e74705SXin Li // CHECK041-NEXT: hexagon-link
407*67e74705SXin Li // CHECK041:      "-G0"
408*67e74705SXin Li 
409*67e74705SXin Li // RUN: %clang -### -target hexagon-unknown-elf -fno-integrated-as \
410*67e74705SXin Li // RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \
411*67e74705SXin Li // RUN:   -mcpu=hexagonv60 \
412*67e74705SXin Li // RUN:   -G=8 \
413*67e74705SXin Li // RUN:   %s 2>&1 \
414*67e74705SXin Li // RUN:   | FileCheck -check-prefix=CHECK042 %s
415*67e74705SXin Li // RUN: %clang -### -target hexagon-unknown-elf -fno-integrated-as \
416*67e74705SXin Li // RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \
417*67e74705SXin Li // RUN:   -mcpu=hexagonv60 \
418*67e74705SXin Li // RUN:   -G 8 \
419*67e74705SXin Li // RUN:   %s 2>&1 \
420*67e74705SXin Li // RUN:   | FileCheck -check-prefix=CHECK042 %s
421*67e74705SXin Li // RUN: %clang -### -target hexagon-unknown-elf -fno-integrated-as \
422*67e74705SXin Li // RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \
423*67e74705SXin Li // RUN:   -mcpu=hexagonv60 \
424*67e74705SXin Li // RUN:   -msmall-data-threshold=8 \
425*67e74705SXin Li // RUN:   %s 2>&1 \
426*67e74705SXin Li // RUN:   | FileCheck -check-prefix=CHECK042 %s
427*67e74705SXin Li // CHECK042:      "-cc1"
428*67e74705SXin Li // CHECK042:      "-mrelocation-model" "static"
429*67e74705SXin Li // CHECK042:      "-mllvm" "-hexagon-small-data-threshold=8"
430*67e74705SXin Li // CHECK042-NEXT: llvm-mc
431*67e74705SXin Li // CHECK042:      "-gpsize=8"
432*67e74705SXin Li // CHECK042-NEXT: hexagon-link
433*67e74705SXin Li // CHECK042:      "-G8"
434*67e74705SXin Li 
435*67e74705SXin Li // -----------------------------------------------------------------------------
436*67e74705SXin Li // pie
437*67e74705SXin Li // -----------------------------------------------------------------------------
438*67e74705SXin Li // RUN: %clang -### -target hexagon-unknown-elf \
439*67e74705SXin Li // RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \
440*67e74705SXin Li // RUN:   -mcpu=hexagonv60 \
441*67e74705SXin Li // RUN:   -pie \
442*67e74705SXin Li // RUN:   %s 2>&1 \
443*67e74705SXin Li // RUN:   | FileCheck -check-prefix=CHECK050 %s
444*67e74705SXin Li // CHECK050:      "-cc1"
445*67e74705SXin Li // CHECK050-NEXT: hexagon-link
446*67e74705SXin Li // CHECK050:      "-pie"
447*67e74705SXin Li 
448*67e74705SXin Li // RUN: %clang -### -target hexagon-unknown-elf \
449*67e74705SXin Li // RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \
450*67e74705SXin Li // RUN:   -mcpu=hexagonv60 \
451*67e74705SXin Li // RUN:   -pie -shared \
452*67e74705SXin Li // RUN:   %s 2>&1 \
453*67e74705SXin Li // RUN:   | FileCheck -check-prefix=CHECK051 %s
454*67e74705SXin Li // CHECK051:      "-cc1"
455*67e74705SXin Li // CHECK051-NEXT: hexagon-link
456*67e74705SXin Li // CHECK051-NOT:  "-pie"
457*67e74705SXin Li 
458*67e74705SXin Li // -----------------------------------------------------------------------------
459*67e74705SXin Li // Test Assembler related args
460*67e74705SXin Li // -----------------------------------------------------------------------------
461*67e74705SXin Li // RUN: %clang -### -target hexagon-unknown-elf -fno-integrated-as    \
462*67e74705SXin Li // RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \
463*67e74705SXin Li // RUN:   -mcpu=hexagonv60 \
464*67e74705SXin Li // RUN:   -gdwarf-2 \
465*67e74705SXin Li // RUN:   -Wa,--noexecstack,--trap \
466*67e74705SXin Li // RUN:   -Xassembler --keep-locals \
467*67e74705SXin Li // RUN:   %s 2>&1 \
468*67e74705SXin Li // RUN:   | FileCheck -check-prefix=CHECK060 %s
469*67e74705SXin Li // CHECK060:      "-cc1"
470*67e74705SXin Li // CHECK060-NEXT: llvm-mc
471*67e74705SXin Li // CHECK060:      "--noexecstack" "--trap" "--keep-locals"
472*67e74705SXin Li // CHECK060-NEXT: hexagon-link
473*67e74705SXin Li 
474*67e74705SXin Li // -----------------------------------------------------------------------------
475*67e74705SXin Li // Misc Defaults
476*67e74705SXin Li // -----------------------------------------------------------------------------
477*67e74705SXin Li // RUN: %clang -### -target hexagon-unknown-elf \
478*67e74705SXin Li // RUN:   -ccc-install-dir %S/Inputs/hexagon_tree/Tools/bin \
479*67e74705SXin Li // RUN:   -mcpu=hexagonv60 \
480*67e74705SXin Li // RUN:   %s 2>&1 \
481*67e74705SXin Li // RUN:   | FileCheck -check-prefix=CHECK070 %s
482*67e74705SXin Li // CHECK070:      "-cc1"
483*67e74705SXin Li // CHECK070:      "-Wreturn-type"
484