xref: /aosp_15_r20/external/clang/test/Driver/linux-ld.c (revision 67e74705e28f6214e480b399dd47ea732279e315)
1*67e74705SXin Li // General tests that ld invocations on Linux targets sane. Note that we use
2*67e74705SXin Li // sysroot to make these tests independent of the host system.
3*67e74705SXin Li //
4*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
5*67e74705SXin Li // RUN:     --target=i386-unknown-linux \
6*67e74705SXin Li // RUN:     --gcc-toolchain="" \
7*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
8*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-LD-32 %s
9*67e74705SXin Li // CHECK-LD-32-NOT: warning:
10*67e74705SXin Li // CHECK-LD-32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
11*67e74705SXin Li // CHECK-LD-32: "{{.*}}/usr/lib/gcc/i386-unknown-linux/4.6.0{{/|\\\\}}crtbegin.o"
12*67e74705SXin Li // CHECK-LD-32: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0"
13*67e74705SXin Li // CHECK-LD-32: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0/../../../../i386-unknown-linux/lib"
14*67e74705SXin Li // CHECK-LD-32: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0/../../.."
15*67e74705SXin Li // CHECK-LD-32: "-L[[SYSROOT]]/lib"
16*67e74705SXin Li // CHECK-LD-32: "-L[[SYSROOT]]/usr/lib"
17*67e74705SXin Li //
18*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
19*67e74705SXin Li // RUN:     --target=x86_64-unknown-linux \
20*67e74705SXin Li // RUN:     --gcc-toolchain="" \
21*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
22*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-LD-64 %s
23*67e74705SXin Li // CHECK-LD-64-NOT: warning:
24*67e74705SXin Li // CHECK-LD-64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
25*67e74705SXin Li // CHECK-LD-64: "--eh-frame-hdr"
26*67e74705SXin Li // CHECK-LD-64: "-m" "elf_x86_64"
27*67e74705SXin Li // CHECK-LD-64: "-dynamic-linker"
28*67e74705SXin Li // CHECK-LD-64: "{{.*}}/usr/lib/gcc/x86_64-unknown-linux/4.6.0{{/|\\\\}}crtbegin.o"
29*67e74705SXin Li // CHECK-LD-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0"
30*67e74705SXin Li // CHECK-LD-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib"
31*67e74705SXin Li // CHECK-LD-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../.."
32*67e74705SXin Li // CHECK-LD-64: "-L[[SYSROOT]]/lib"
33*67e74705SXin Li // CHECK-LD-64: "-L[[SYSROOT]]/usr/lib"
34*67e74705SXin Li // CHECK-LD-64: "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed"
35*67e74705SXin Li // CHECK-LD-64: "-lc"
36*67e74705SXin Li // CHECK-LD-64: "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed"
37*67e74705SXin Li //
38*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
39*67e74705SXin Li // RUN:     --target=x86_64-unknown-linux-gnux32 \
40*67e74705SXin Li // RUN:     --gcc-toolchain="" \
41*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
42*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-LD-X32 %s
43*67e74705SXin Li // CHECK-LD-X32-NOT: warning:
44*67e74705SXin Li // CHECK-LD-X32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
45*67e74705SXin Li // CHECK-LD-X32: "--eh-frame-hdr"
46*67e74705SXin Li // CHECK-LD-X32: "-m" "elf32_x86_64"
47*67e74705SXin Li // CHECK-LD-X32: "-dynamic-linker"
48*67e74705SXin Li // CHECK-LD-X32: "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed"
49*67e74705SXin Li // CHECK-LD-X32: "-lc"
50*67e74705SXin Li // CHECK-LD-X32: "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed"
51*67e74705SXin Li //
52*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
53*67e74705SXin Li // RUN:     --target=x86_64-unknown-linux \
54*67e74705SXin Li // RUN:     --gcc-toolchain="" \
55*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
56*67e74705SXin Li // RUN:     --rtlib=compiler-rt \
57*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-LD-RT %s
58*67e74705SXin Li // CHECK-LD-RT-NOT: warning:
59*67e74705SXin Li // CHECK-LD-RT: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
60*67e74705SXin Li // CHECK-LD-RT: "--eh-frame-hdr"
61*67e74705SXin Li // CHECK-LD-RT: "-m" "elf_x86_64"
62*67e74705SXin Li // CHECK-LD-RT: "-dynamic-linker"
63*67e74705SXin Li // CHECK-LD-RT: "{{.*}}/usr/lib/gcc/x86_64-unknown-linux/4.6.0{{/|\\\\}}crtbegin.o"
64*67e74705SXin Li // CHECK-LD-RT: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0"
65*67e74705SXin Li // CHECK-LD-RT: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib"
66*67e74705SXin Li // CHECK-LD-RT: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../.."
67*67e74705SXin Li // CHECK-LD-RT: "-L[[SYSROOT]]/lib"
68*67e74705SXin Li // CHECK-LD-RT: "-L[[SYSROOT]]/usr/lib"
69*67e74705SXin Li // CHECK-LD-RT: libclang_rt.builtins-x86_64.a"
70*67e74705SXin Li // CHECK-LD-RT: "-lc"
71*67e74705SXin Li // CHECK-LD-RT: libclang_rt.builtins-x86_64.a"
72*67e74705SXin Li //
73*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
74*67e74705SXin Li // RUN:     --target=arm-linux-androideabi \
75*67e74705SXin Li // RUN:     --gcc-toolchain="" \
76*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
77*67e74705SXin Li // RUN:     --rtlib=compiler-rt \
78*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-LD-RT-ANDROID %s
79*67e74705SXin Li // CHECK-LD-RT-ANDROID-NOT: warning:
80*67e74705SXin Li // CHECK-LD-RT-ANDROID: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
81*67e74705SXin Li // CHECK-LD-RT-ANDROID: "--eh-frame-hdr"
82*67e74705SXin Li // CHECK-LD-RT-ANDROID: "-m" "armelf_linux_eabi"
83*67e74705SXin Li // CHECK-LD-RT-ANDROID: "-dynamic-linker"
84*67e74705SXin Li // CHECK-LD-RT-ANDROID: libclang_rt.builtins-arm-android.a"
85*67e74705SXin Li // CHECK-LD-RT-ANDROID: "-lc"
86*67e74705SXin Li // CHECK-LD-RT-ANDROID: libclang_rt.builtins-arm-android.a"
87*67e74705SXin Li //
88*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
89*67e74705SXin Li // RUN:     --target=x86_64-unknown-linux \
90*67e74705SXin Li // RUN:     --gcc-toolchain="" \
91*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
92*67e74705SXin Li // RUN:     --rtlib=libgcc \
93*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-LD-GCC %s
94*67e74705SXin Li // CHECK-LD-GCC-NOT: warning:
95*67e74705SXin Li // CHECK-LD-GCC: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
96*67e74705SXin Li // CHECK-LD-GCC: "--eh-frame-hdr"
97*67e74705SXin Li // CHECK-LD-GCC: "-m" "elf_x86_64"
98*67e74705SXin Li // CHECK-LD-GCC: "-dynamic-linker"
99*67e74705SXin Li // CHECK-LD-GCC: "{{.*}}/usr/lib/gcc/x86_64-unknown-linux/4.6.0{{/|\\\\}}crtbegin.o"
100*67e74705SXin Li // CHECK-LD-GCC: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0"
101*67e74705SXin Li // CHECK-LD-GCC: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib"
102*67e74705SXin Li // CHECK-LD-GCC: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../.."
103*67e74705SXin Li // CHECK-LD-GCC: "-L[[SYSROOT]]/lib"
104*67e74705SXin Li // CHECK-LD-GCC: "-L[[SYSROOT]]/usr/lib"
105*67e74705SXin Li // CHECK-LD-GCC: "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed"
106*67e74705SXin Li // CHECK-LD-GCC: "-lc"
107*67e74705SXin Li // CHECK-LD-GCC: "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed"
108*67e74705SXin Li //
109*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
110*67e74705SXin Li // RUN:     --target=x86_64-unknown-linux \
111*67e74705SXin Li // RUN:     -static-libgcc \
112*67e74705SXin Li // RUN:     --gcc-toolchain="" \
113*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
114*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-LD-64-STATIC-LIBGCC %s
115*67e74705SXin Li // CHECK-LD-64-STATIC-LIBGCC-NOT: warning:
116*67e74705SXin Li // CHECK-LD-64-STATIC-LIBGCC: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
117*67e74705SXin Li // CHECK-LD-64-STATIC-LIBGCC: "--eh-frame-hdr"
118*67e74705SXin Li // CHECK-LD-64-STATIC-LIBGCC: "-m" "elf_x86_64"
119*67e74705SXin Li // CHECK-LD-64-STATIC-LIBGCC: "-dynamic-linker"
120*67e74705SXin Li // CHECK-LD-64-STATIC-LIBGCC: "{{.*}}/usr/lib/gcc/x86_64-unknown-linux/4.6.0{{/|\\\\}}crtbegin.o"
121*67e74705SXin Li // CHECK-LD-64-STATIC-LIBGCC: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0"
122*67e74705SXin Li // CHECK-LD-64-STATIC-LIBGCC: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib"
123*67e74705SXin Li // CHECK-LD-64-STATIC-LIBGCC: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../.."
124*67e74705SXin Li // CHECK-LD-64-STATIC-LIBGCC: "-L[[SYSROOT]]/lib"
125*67e74705SXin Li // CHECK-LD-64-STATIC-LIBGCC: "-L[[SYSROOT]]/usr/lib"
126*67e74705SXin Li // CHECK-LD-64-STATIC-LIBGCC: "-lgcc" "-lgcc_eh"
127*67e74705SXin Li // CHECK-LD-64-STATIC-LIBGCC: "-lc"
128*67e74705SXin Li // CHECK-LD-64-STATIC-LIBGCC: "-lgcc" "-lgcc_eh"
129*67e74705SXin Li //
130*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
131*67e74705SXin Li // RUN:     --target=x86_64-unknown-linux \
132*67e74705SXin Li // RUN:     -static \
133*67e74705SXin Li // RUN:     --gcc-toolchain="" \
134*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
135*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-LD-64-STATIC %s
136*67e74705SXin Li // CHECK-LD-64-STATIC-NOT: warning:
137*67e74705SXin Li // CHECK-LD-64-STATIC: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
138*67e74705SXin Li // CHECK-LD-64-STATIC-NOT: "--eh-frame-hdr"
139*67e74705SXin Li // CHECK-LD-64-STATIC: "-m" "elf_x86_64"
140*67e74705SXin Li // CHECK-LD-64-STATIC-NOT: "-dynamic-linker"
141*67e74705SXin Li // CHECK-LD-64-STATIC: "-static"
142*67e74705SXin Li // CHECK-LD-64-STATIC: "{{.*}}/usr/lib/gcc/x86_64-unknown-linux/4.6.0{{/|\\\\}}crtbeginT.o"
143*67e74705SXin Li // CHECK-LD-64-STATIC: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0"
144*67e74705SXin Li // CHECK-LD-64-STATIC: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib"
145*67e74705SXin Li // CHECK-LD-64-STATIC: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../.."
146*67e74705SXin Li // CHECK-LD-64-STATIC: "-L[[SYSROOT]]/lib"
147*67e74705SXin Li // CHECK-LD-64-STATIC: "-L[[SYSROOT]]/usr/lib"
148*67e74705SXin Li // CHECK-LD-64-STATIC: "--start-group" "-lgcc" "-lgcc_eh" "-lc" "--end-group"
149*67e74705SXin Li //
150*67e74705SXin Li // Check that flags can be combined. The -static dominates.
151*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
152*67e74705SXin Li // RUN:     --target=x86_64-unknown-linux \
153*67e74705SXin Li // RUN:     -static-libgcc -static \
154*67e74705SXin Li // RUN:     --gcc-toolchain="" \
155*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
156*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-LD-64-STATIC %s
157*67e74705SXin Li //
158*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
159*67e74705SXin Li // RUN:     --target=i386-unknown-linux -m32 \
160*67e74705SXin Li // RUN:     --gcc-toolchain="" \
161*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/multilib_32bit_linux_tree \
162*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-32-TO-32 %s
163*67e74705SXin Li // CHECK-32-TO-32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
164*67e74705SXin Li // CHECK-32-TO-32: "{{.*}}/usr/lib/gcc/i386-unknown-linux/4.6.0{{/|\\\\}}crtbegin.o"
165*67e74705SXin Li // CHECK-32-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0"
166*67e74705SXin Li // CHECK-32-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0/../../../../i386-unknown-linux/lib/../lib32"
167*67e74705SXin Li // CHECK-32-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0/../../../../lib32"
168*67e74705SXin Li // CHECK-32-TO-32: "-L[[SYSROOT]]/lib/../lib32"
169*67e74705SXin Li // CHECK-32-TO-32: "-L[[SYSROOT]]/usr/lib/../lib32"
170*67e74705SXin Li // CHECK-32-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0/../../../../i386-unknown-linux/lib"
171*67e74705SXin Li // CHECK-32-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0/../../.."
172*67e74705SXin Li // CHECK-32-TO-32: "-L[[SYSROOT]]/lib"
173*67e74705SXin Li // CHECK-32-TO-32: "-L[[SYSROOT]]/usr/lib"
174*67e74705SXin Li //
175*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
176*67e74705SXin Li // RUN:     --target=i386-unknown-linux -m64 \
177*67e74705SXin Li // RUN:     --gcc-toolchain="" \
178*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/multilib_32bit_linux_tree \
179*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-32-TO-64 %s
180*67e74705SXin Li // CHECK-32-TO-64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
181*67e74705SXin Li // CHECK-32-TO-64: "{{.*}}/usr/lib/gcc/i386-unknown-linux/4.6.0/64{{/|\\\\}}crtbegin.o"
182*67e74705SXin Li // CHECK-32-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0/64"
183*67e74705SXin Li // CHECK-32-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0/../../../../i386-unknown-linux/lib/../lib64"
184*67e74705SXin Li // CHECK-32-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0/../../../../lib64"
185*67e74705SXin Li // CHECK-32-TO-64: "-L[[SYSROOT]]/lib/../lib64"
186*67e74705SXin Li // CHECK-32-TO-64: "-L[[SYSROOT]]/usr/lib/../lib64"
187*67e74705SXin Li // CHECK-32-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0"
188*67e74705SXin Li // CHECK-32-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0/../../../../i386-unknown-linux/lib"
189*67e74705SXin Li // CHECK-32-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0/../../.."
190*67e74705SXin Li // CHECK-32-TO-64: "-L[[SYSROOT]]/lib"
191*67e74705SXin Li // CHECK-32-TO-64: "-L[[SYSROOT]]/usr/lib"
192*67e74705SXin Li //
193*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
194*67e74705SXin Li // RUN:     --target=x86_64-unknown-linux -m64 \
195*67e74705SXin Li // RUN:     --gcc-toolchain="" \
196*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/multilib_64bit_linux_tree \
197*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-64-TO-64 %s
198*67e74705SXin Li // CHECK-64-TO-64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
199*67e74705SXin Li // CHECK-64-TO-64: "{{.*}}/usr/lib/gcc/x86_64-unknown-linux/4.6.0{{/|\\\\}}crtbegin.o"
200*67e74705SXin Li // CHECK-64-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0"
201*67e74705SXin Li // CHECK-64-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib/../lib64"
202*67e74705SXin Li // CHECK-64-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../lib64"
203*67e74705SXin Li // CHECK-64-TO-64: "-L[[SYSROOT]]/lib/../lib64"
204*67e74705SXin Li // CHECK-64-TO-64: "-L[[SYSROOT]]/usr/lib/../lib64"
205*67e74705SXin Li // CHECK-64-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib"
206*67e74705SXin Li // CHECK-64-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../.."
207*67e74705SXin Li // CHECK-64-TO-64: "-L[[SYSROOT]]/lib"
208*67e74705SXin Li // CHECK-64-TO-64: "-L[[SYSROOT]]/usr/lib"
209*67e74705SXin Li //
210*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
211*67e74705SXin Li // RUN:     --target=x86_64-unknown-linux -m32 \
212*67e74705SXin Li // RUN:     --gcc-toolchain="" \
213*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/multilib_64bit_linux_tree \
214*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-64-TO-32 %s
215*67e74705SXin Li // CHECK-64-TO-32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
216*67e74705SXin Li // CHECK-64-TO-32: "{{.*}}/usr/lib/gcc/x86_64-unknown-linux/4.6.0/32{{/|\\\\}}crtbegin.o"
217*67e74705SXin Li // CHECK-64-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/32"
218*67e74705SXin Li // CHECK-64-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib/../lib32"
219*67e74705SXin Li // CHECK-64-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../lib32"
220*67e74705SXin Li // CHECK-64-TO-32: "-L[[SYSROOT]]/lib/../lib32"
221*67e74705SXin Li // CHECK-64-TO-32: "-L[[SYSROOT]]/usr/lib/../lib32"
222*67e74705SXin Li // CHECK-64-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0"
223*67e74705SXin Li // CHECK-64-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib"
224*67e74705SXin Li // CHECK-64-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../.."
225*67e74705SXin Li // CHECK-64-TO-32: "-L[[SYSROOT]]/lib"
226*67e74705SXin Li // CHECK-64-TO-32: "-L[[SYSROOT]]/usr/lib"
227*67e74705SXin Li //
228*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
229*67e74705SXin Li // RUN:     --target=x86_64-unknown-linux-gnux32 \
230*67e74705SXin Li // RUN:     --gcc-toolchain="" \
231*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/multilib_64bit_linux_tree \
232*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-X32 %s
233*67e74705SXin Li // CHECK-X32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
234*67e74705SXin Li // CHECK-X32: "{{.*}}/usr/lib/gcc/x86_64-unknown-linux/4.6.0/x32{{/|\\\\}}crtbegin.o"
235*67e74705SXin Li // CHECK-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/x32"
236*67e74705SXin Li // CHECK-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib/../libx32"
237*67e74705SXin Li // CHECK-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../libx32"
238*67e74705SXin Li // CHECK-X32: "-L[[SYSROOT]]/lib/../libx32"
239*67e74705SXin Li // CHECK-X32: "-L[[SYSROOT]]/usr/lib/../libx32"
240*67e74705SXin Li // CHECK-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0"
241*67e74705SXin Li // CHECK-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib"
242*67e74705SXin Li // CHECK-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../.."
243*67e74705SXin Li // CHECK-X32: "-L[[SYSROOT]]/lib"
244*67e74705SXin Li // CHECK-X32: "-L[[SYSROOT]]/usr/lib"
245*67e74705SXin Li //
246*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
247*67e74705SXin Li // RUN:     --target=x86_64-unknown-linux -mx32 \
248*67e74705SXin Li // RUN:     --gcc-toolchain="" \
249*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/multilib_64bit_linux_tree \
250*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-64-TO-X32 %s
251*67e74705SXin Li // CHECK-64-TO-X32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
252*67e74705SXin Li // CHECK-64-TO-X32: "{{.*}}/usr/lib/gcc/x86_64-unknown-linux/4.6.0/x32{{/|\\\\}}crtbegin.o"
253*67e74705SXin Li // CHECK-64-TO-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/x32"
254*67e74705SXin Li // CHECK-64-TO-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib/../libx32"
255*67e74705SXin Li // CHECK-64-TO-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../libx32"
256*67e74705SXin Li // CHECK-64-TO-X32: "-L[[SYSROOT]]/lib/../libx32"
257*67e74705SXin Li // CHECK-64-TO-X32: "-L[[SYSROOT]]/usr/lib/../libx32"
258*67e74705SXin Li // CHECK-64-TO-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0"
259*67e74705SXin Li // CHECK-64-TO-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib"
260*67e74705SXin Li // CHECK-64-TO-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../.."
261*67e74705SXin Li // CHECK-64-TO-X32: "-L[[SYSROOT]]/lib"
262*67e74705SXin Li // CHECK-64-TO-X32: "-L[[SYSROOT]]/usr/lib"
263*67e74705SXin Li //
264*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
265*67e74705SXin Li // RUN:     --target=i386-unknown-linux -mx32 \
266*67e74705SXin Li // RUN:     --gcc-toolchain="" \
267*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/multilib_64bit_linux_tree \
268*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-32-TO-X32 %s
269*67e74705SXin Li // CHECK-32-TO-X32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
270*67e74705SXin Li // CHECK-32-TO-X32: "{{.*}}/usr/lib/gcc/x86_64-unknown-linux/4.6.0/x32{{/|\\\\}}crtbegin.o"
271*67e74705SXin Li // CHECK-32-TO-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/x32"
272*67e74705SXin Li // CHECK-32-TO-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib/../libx32"
273*67e74705SXin Li // CHECK-32-TO-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../libx32"
274*67e74705SXin Li // CHECK-32-TO-X32: "-L[[SYSROOT]]/lib/../libx32"
275*67e74705SXin Li // CHECK-32-TO-X32: "-L[[SYSROOT]]/usr/lib/../libx32"
276*67e74705SXin Li // CHECK-32-TO-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0"
277*67e74705SXin Li // CHECK-32-TO-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib"
278*67e74705SXin Li // CHECK-32-TO-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../.."
279*67e74705SXin Li // CHECK-32-TO-X32: "-L[[SYSROOT]]/lib"
280*67e74705SXin Li // CHECK-32-TO-X32: "-L[[SYSROOT]]/usr/lib"
281*67e74705SXin Li //
282*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
283*67e74705SXin Li // RUN:     --target=x86_64-unknown-linux-gnux32 -m64 \
284*67e74705SXin Li // RUN:     --gcc-toolchain="" \
285*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/multilib_64bit_linux_tree \
286*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-X32-TO-64 %s
287*67e74705SXin Li // CHECK-X32-TO-64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
288*67e74705SXin Li // CHECK-X32-TO-64: "{{.*}}/usr/lib/gcc/x86_64-unknown-linux/4.6.0{{/|\\\\}}crtbegin.o"
289*67e74705SXin Li // CHECK-X32-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0"
290*67e74705SXin Li // CHECK-X32-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib/../lib64"
291*67e74705SXin Li // CHECK-X32-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../lib64"
292*67e74705SXin Li // CHECK-X32-TO-64: "-L[[SYSROOT]]/lib/../lib64"
293*67e74705SXin Li // CHECK-X32-TO-64: "-L[[SYSROOT]]/usr/lib/../lib64"
294*67e74705SXin Li // CHECK-X32-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib"
295*67e74705SXin Li // CHECK-X32-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../.."
296*67e74705SXin Li // CHECK-X32-TO-64: "-L[[SYSROOT]]/lib"
297*67e74705SXin Li // CHECK-X32-TO-64: "-L[[SYSROOT]]/usr/lib"
298*67e74705SXin Li //
299*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
300*67e74705SXin Li // RUN:     --target=x86_64-unknown-linux-gnux32 -m32 \
301*67e74705SXin Li // RUN:     --gcc-toolchain="" \
302*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/multilib_64bit_linux_tree \
303*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-X32-TO-32 %s
304*67e74705SXin Li // CHECK-X32-TO-32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
305*67e74705SXin Li // CHECK-X32-TO-32: "{{.*}}/usr/lib/gcc/x86_64-unknown-linux/4.6.0/32{{/|\\\\}}crtbegin.o"
306*67e74705SXin Li // CHECK-X32-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/32"
307*67e74705SXin Li // CHECK-X32-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib/../lib32"
308*67e74705SXin Li // CHECK-X32-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../lib32"
309*67e74705SXin Li // CHECK-X32-TO-32: "-L[[SYSROOT]]/lib/../lib32"
310*67e74705SXin Li // CHECK-X32-TO-32: "-L[[SYSROOT]]/usr/lib/../lib32"
311*67e74705SXin Li // CHECK-X32-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0"
312*67e74705SXin Li // CHECK-X32-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib"
313*67e74705SXin Li // CHECK-X32-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../.."
314*67e74705SXin Li // CHECK-X32-TO-32: "-L[[SYSROOT]]/lib"
315*67e74705SXin Li // CHECK-X32-TO-32: "-L[[SYSROOT]]/usr/lib"
316*67e74705SXin Li //
317*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
318*67e74705SXin Li // RUN:     --target=x86_64-unknown-linux -m32 \
319*67e74705SXin Li // RUN:     --gcc-toolchain=%S/Inputs/multilib_64bit_linux_tree/usr \
320*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/multilib_32bit_linux_tree \
321*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-64-TO-32-SYSROOT %s
322*67e74705SXin Li // CHECK-64-TO-32-SYSROOT: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
323*67e74705SXin Li // CHECK-64-TO-32-SYSROOT: "{{.*}}/usr/lib/gcc/x86_64-unknown-linux/4.6.0/32{{/|\\\\}}crtbegin.o"
324*67e74705SXin Li // CHECK-64-TO-32-SYSROOT: "-L{{[^"]*}}/Inputs/multilib_64bit_linux_tree/usr/lib/gcc/x86_64-unknown-linux/4.6.0/32"
325*67e74705SXin Li // CHECK-64-TO-32-SYSROOT: "-L[[SYSROOT]]/lib/../lib32"
326*67e74705SXin Li // CHECK-64-TO-32-SYSROOT: "-L[[SYSROOT]]/usr/lib/../lib32"
327*67e74705SXin Li // CHECK-64-TO-32-SYSROOT: "-L{{[^"]*}}/Inputs/multilib_64bit_linux_tree/usr/lib/gcc/x86_64-unknown-linux/4.6.0"
328*67e74705SXin Li // CHECK-64-TO-32-SYSROOT: "-L[[SYSROOT]]/lib"
329*67e74705SXin Li // CHECK-64-TO-32-SYSROOT: "-L[[SYSROOT]]/usr/lib"
330*67e74705SXin Li //
331*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
332*67e74705SXin Li // RUN:     --target=i386-unknown-linux -m32 \
333*67e74705SXin Li // RUN:     -ccc-install-dir %S/Inputs/fake_install_tree/bin \
334*67e74705SXin Li // RUN:     --gcc-toolchain="" \
335*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
336*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-INSTALL-DIR-32 %s
337*67e74705SXin Li // CHECK-INSTALL-DIR-32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
338*67e74705SXin Li // CHECK-INSTALL-DIR-32: "{{.*}}/Inputs/fake_install_tree/bin/../lib/gcc/i386-unknown-linux/4.7.0{{/|\\\\}}crtbegin.o"
339*67e74705SXin Li // CHECK-INSTALL-DIR-32: "-L{{.*}}/Inputs/fake_install_tree/bin/../lib/gcc/i386-unknown-linux/4.7.0"
340*67e74705SXin Li //
341*67e74705SXin Li // Check that with 64-bit builds, we don't actually use the install directory
342*67e74705SXin Li // as its version of GCC is lower than our sysrooted version.
343*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
344*67e74705SXin Li // RUN:     --target=x86_64-unknown-linux -m64 \
345*67e74705SXin Li // RUN:     -ccc-install-dir %S/Inputs/fake_install_tree/bin \
346*67e74705SXin Li // RUN:     --gcc-toolchain="" \
347*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
348*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-INSTALL-DIR-64 %s
349*67e74705SXin Li // CHECK-INSTALL-DIR-64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
350*67e74705SXin Li // CHECK-INSTALL-DIR-64: "{{.*}}/usr/lib/gcc/x86_64-unknown-linux/4.6.0{{/|\\\\}}crtbegin.o"
351*67e74705SXin Li // CHECK-INSTALL-DIR-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0"
352*67e74705SXin Li //
353*67e74705SXin Li // Check that we support unusual patch version formats, including missing that
354*67e74705SXin Li // component.
355*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
356*67e74705SXin Li // RUN:     --target=i386-unknown-linux -m32 \
357*67e74705SXin Li // RUN:     -ccc-install-dir %S/Inputs/gcc_version_parsing1/bin \
358*67e74705SXin Li // RUN:     --gcc-toolchain="" \
359*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
360*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-GCC-VERSION1 %s
361*67e74705SXin Li // CHECK-GCC-VERSION1: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
362*67e74705SXin Li // CHECK-GCC-VERSION1: "{{.*}}/Inputs/gcc_version_parsing1/bin/../lib/gcc/i386-unknown-linux/4.7{{/|\\\\}}crtbegin.o"
363*67e74705SXin Li // CHECK-GCC-VERSION1: "-L{{.*}}/Inputs/gcc_version_parsing1/bin/../lib/gcc/i386-unknown-linux/4.7"
364*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
365*67e74705SXin Li // RUN:     --target=i386-unknown-linux -m32 \
366*67e74705SXin Li // RUN:     -ccc-install-dir %S/Inputs/gcc_version_parsing2/bin \
367*67e74705SXin Li // RUN:     --gcc-toolchain="" \
368*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
369*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-GCC-VERSION2 %s
370*67e74705SXin Li // CHECK-GCC-VERSION2: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
371*67e74705SXin Li // CHECK-GCC-VERSION2: "{{.*}}/Inputs/gcc_version_parsing2/bin/../lib/gcc/i386-unknown-linux/4.7.x{{/|\\\\}}crtbegin.o"
372*67e74705SXin Li // CHECK-GCC-VERSION2: "-L{{.*}}/Inputs/gcc_version_parsing2/bin/../lib/gcc/i386-unknown-linux/4.7.x"
373*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
374*67e74705SXin Li // RUN:     --target=i386-unknown-linux -m32 \
375*67e74705SXin Li // RUN:     -ccc-install-dir %S/Inputs/gcc_version_parsing3/bin \
376*67e74705SXin Li // RUN:     --gcc-toolchain="" \
377*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
378*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-GCC-VERSION3 %s
379*67e74705SXin Li // CHECK-GCC-VERSION3: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
380*67e74705SXin Li // CHECK-GCC-VERSION3: "{{.*}}/Inputs/gcc_version_parsing3/bin/../lib/gcc/i386-unknown-linux/4.7.99-rc5{{/|\\\\}}crtbegin.o"
381*67e74705SXin Li // CHECK-GCC-VERSION3: "-L{{.*}}/Inputs/gcc_version_parsing3/bin/../lib/gcc/i386-unknown-linux/4.7.99-rc5"
382*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
383*67e74705SXin Li // RUN:     --target=i386-unknown-linux -m32 \
384*67e74705SXin Li // RUN:     -ccc-install-dir %S/Inputs/gcc_version_parsing4/bin \
385*67e74705SXin Li // RUN:     --gcc-toolchain="" \
386*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
387*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-GCC-VERSION4 %s
388*67e74705SXin Li // CHECK-GCC-VERSION4: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
389*67e74705SXin Li // CHECK-GCC-VERSION4: "{{.*}}/Inputs/gcc_version_parsing4/bin/../lib/gcc/i386-unknown-linux/4.7.99{{/|\\\\}}crtbegin.o"
390*67e74705SXin Li // CHECK-GCC-VERSION4: "-L{{.*}}/Inputs/gcc_version_parsing4/bin/../lib/gcc/i386-unknown-linux/4.7.99"
391*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
392*67e74705SXin Li // RUN:     --target=i386-unknown-linux -m32 \
393*67e74705SXin Li // RUN:     -ccc-install-dir %S/Inputs/gcc_version_parsing5/bin \
394*67e74705SXin Li // RUN:     --gcc-toolchain="" \
395*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
396*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-GCC-VERSION5 %s
397*67e74705SXin Li // CHECK-GCC-VERSION5: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
398*67e74705SXin Li // CHECK-GCC-VERSION5: "{{.*}}/Inputs/gcc_version_parsing5/bin/../lib/gcc/i386-unknown-linux/5{{/|\\\\}}crtbegin.o"
399*67e74705SXin Li // CHECK-GCC-VERSION5: "-L{{.*}}/Inputs/gcc_version_parsing5/bin/../lib/gcc/i386-unknown-linux/5"
400*67e74705SXin Li //
401*67e74705SXin Li // Test a simulated installation of libc++ on Linux, both through sysroot and
402*67e74705SXin Li // the installation path of Clang.
403*67e74705SXin Li // RUN: %clangxx -no-canonical-prefixes -x c++ %s -### -o %t.o 2>&1 \
404*67e74705SXin Li // RUN:     -target x86_64-unknown-linux-gnu \
405*67e74705SXin Li // RUN:     -stdlib=libc++ \
406*67e74705SXin Li // RUN:     -ccc-install-dir %S/Inputs/basic_linux_tree/usr/bin \
407*67e74705SXin Li // RUN:     --gcc-toolchain="" \
408*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/basic_linux_libcxx_tree \
409*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-BASIC-LIBCXX-SYSROOT %s
410*67e74705SXin Li // CHECK-BASIC-LIBCXX-SYSROOT: "{{[^"]*}}clang{{[^"]*}}" "-cc1"
411*67e74705SXin Li // CHECK-BASIC-LIBCXX-SYSROOT: "-isysroot" "[[SYSROOT:[^"]+]]"
412*67e74705SXin Li // CHECK-BASIC-LIBCXX-SYSROOT: "-internal-isystem" "[[SYSROOT]]/usr/include/c++/v1"
413*67e74705SXin Li // CHECK-BASIC-LIBCXX-SYSROOT: "-internal-isystem" "[[SYSROOT]]/usr/local/include"
414*67e74705SXin Li // CHECK-BASIC-LIBCXX-SYSROOT: "--sysroot=[[SYSROOT]]"
415*67e74705SXin Li // RUN: %clang -no-canonical-prefixes -x c++ %s -### -o %t.o 2>&1 \
416*67e74705SXin Li // RUN:     -target x86_64-unknown-linux-gnu \
417*67e74705SXin Li // RUN:     -stdlib=libc++ \
418*67e74705SXin Li // RUN:     -ccc-install-dir %S/Inputs/basic_linux_libcxx_tree/usr/bin \
419*67e74705SXin Li // RUN:     --gcc-toolchain="" \
420*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/basic_linux_libcxx_tree \
421*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-BASIC-LIBCXX-INSTALL %s
422*67e74705SXin Li // CHECK-BASIC-LIBCXX-INSTALL: "{{[^"]*}}clang{{[^"]*}}" "-cc1"
423*67e74705SXin Li // CHECK-BASIC-LIBCXX-INSTALL: "-isysroot" "[[SYSROOT:[^"]+]]"
424*67e74705SXin Li // CHECK-BASIC-LIBCXX-INSTALL: "-internal-isystem" "[[SYSROOT]]/usr/bin/../include/c++/v1"
425*67e74705SXin Li // CHECK-BASIC-LIBCXX-INSTALL: "-internal-isystem" "[[SYSROOT]]/usr/local/include"
426*67e74705SXin Li // CHECK-BASIC-LIBCXX-INSTALL: "--sysroot=[[SYSROOT]]"
427*67e74705SXin Li // CHECK-BASIC-LIBCXX-INSTALL: "-L[[SYSROOT]]/usr/bin/../lib"
428*67e74705SXin Li //
429*67e74705SXin Li // Test that we can use -stdlib=libc++ in a build system even when it
430*67e74705SXin Li // occasionally links C code instead of C++ code.
431*67e74705SXin Li // RUN: %clang -no-canonical-prefixes -x c %s -### -o %t.o 2>&1 \
432*67e74705SXin Li // RUN:     -target x86_64-unknown-linux-gnu \
433*67e74705SXin Li // RUN:     -stdlib=libc++ \
434*67e74705SXin Li // RUN:     -ccc-install-dir %S/Inputs/basic_linux_libcxx_tree/usr/bin \
435*67e74705SXin Li // RUN:     --gcc-toolchain="" \
436*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/basic_linux_libcxx_tree \
437*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-BASIC-LIBCXX-C-LINK %s
438*67e74705SXin Li // CHECK-BASIC-LIBCXX-C-LINK-NOT: warning:
439*67e74705SXin Li // CHECK-BASIC-LIBCXX-C-LINK: "{{[^"]*}}clang{{[^"]*}}" "-cc1"
440*67e74705SXin Li // CHECK-BASIC-LIBCXX-C-LINK: "-isysroot" "[[SYSROOT:[^"]+]]"
441*67e74705SXin Li // CHECK-BASIC-LIBCXX-C-LINK-NOT: "-internal-isystem" "[[SYSROOT]]/usr/bin/../include/c++/v1"
442*67e74705SXin Li // CHECK-BASIC-LIBCXX-C-LINK: "-internal-isystem" "[[SYSROOT]]/usr/local/include"
443*67e74705SXin Li // CHECK-BASIC-LIBCXX-C-LINK: "--sysroot=[[SYSROOT]]"
444*67e74705SXin Li // CHECK-BASIC-LIBCXX-C-LINK: "-L[[SYSROOT]]/usr/bin/../lib"
445*67e74705SXin Li //
446*67e74705SXin Li // Test a very broken version of multiarch that shipped in Ubuntu 11.04.
447*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
448*67e74705SXin Li // RUN:     --target=i386-unknown-linux \
449*67e74705SXin Li // RUN:     --gcc-toolchain="" \
450*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/ubuntu_11.04_multiarch_tree \
451*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-UBUNTU-11-04 %s
452*67e74705SXin Li // CHECK-UBUNTU-11-04: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
453*67e74705SXin Li // CHECK-UBUNTU-11-04: "{{.*}}/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5{{/|\\\\}}crtbegin.o"
454*67e74705SXin Li // CHECK-UBUNTU-11-04: "-L[[SYSROOT]]/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5"
455*67e74705SXin Li // CHECK-UBUNTU-11-04: "-L[[SYSROOT]]/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5/../../../../i386-linux-gnu"
456*67e74705SXin Li // CHECK-UBUNTU-11-04: "-L[[SYSROOT]]/usr/lib/i386-linux-gnu"
457*67e74705SXin Li // CHECK-UBUNTU-11-04: "-L[[SYSROOT]]/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5/../../../.."
458*67e74705SXin Li // CHECK-UBUNTU-11-04: "-L[[SYSROOT]]/lib"
459*67e74705SXin Li // CHECK-UBUNTU-11-04: "-L[[SYSROOT]]/usr/lib"
460*67e74705SXin Li //
461*67e74705SXin Li // Check multi arch support on Ubuntu 12.04 LTS.
462*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
463*67e74705SXin Li // RUN:     --target=arm-unknown-linux-gnueabihf \
464*67e74705SXin Li // RUN:     --gcc-toolchain="" \
465*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/ubuntu_12.04_LTS_multiarch_tree \
466*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-UBUNTU-12-04-ARM-HF %s
467*67e74705SXin Li // CHECK-UBUNTU-12-04-ARM-HF: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
468*67e74705SXin Li // CHECK-UBUNTU-12-04-ARM-HF: "{{.*}}/usr/lib/gcc/arm-linux-gnueabihf/4.6.3/../../../arm-linux-gnueabihf{{/|\\\\}}crt1.o"
469*67e74705SXin Li // CHECK-UBUNTU-12-04-ARM-HF: "{{.*}}/usr/lib/gcc/arm-linux-gnueabihf/4.6.3/../../../arm-linux-gnueabihf{{/|\\\\}}crti.o"
470*67e74705SXin Li // CHECK-UBUNTU-12-04-ARM-HF: "{{.*}}/usr/lib/gcc/arm-linux-gnueabihf/4.6.3{{/|\\\\}}crtbegin.o"
471*67e74705SXin Li // CHECK-UBUNTU-12-04-ARM-HF: "-L[[SYSROOT]]/usr/lib/gcc/arm-linux-gnueabihf/4.6.3"
472*67e74705SXin Li // CHECK-UBUNTU-12-04-ARM-HF: "-L[[SYSROOT]]/usr/lib/gcc/arm-linux-gnueabihf/4.6.3/../../../arm-linux-gnueabihf"
473*67e74705SXin Li // CHECK-UBUNTU-12-04-ARM-HF: "-L[[SYSROOT]]/lib/arm-linux-gnueabihf"
474*67e74705SXin Li // CHECK-UBUNTU-12-04-ARM-HF: "-L[[SYSROOT]]/usr/lib/arm-linux-gnueabihf"
475*67e74705SXin Li // CHECK-UBUNTU-12-04-ARM-HF: "-L[[SYSROOT]]/usr/lib/gcc/arm-linux-gnueabihf/4.6.3/../../.."
476*67e74705SXin Li // CHECK-UBUNTU-12-04-ARM-HF: "{{.*}}/usr/lib/gcc/arm-linux-gnueabihf/4.6.3{{/|\\\\}}crtend.o"
477*67e74705SXin Li // CHECK-UBUNTU-12-04-ARM-HF: "{{.*}}/usr/lib/gcc/arm-linux-gnueabihf/4.6.3/../../../arm-linux-gnueabihf{{/|\\\\}}crtn.o"
478*67e74705SXin Li //
479*67e74705SXin Li // Check Ubuntu 13.10 on x86-64 targeting arm-linux-gnueabihf.
480*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
481*67e74705SXin Li // RUN:     --target=arm-linux-gnueabihf \
482*67e74705SXin Li // RUN:     --gcc-toolchain="" \
483*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/x86-64_ubuntu_13.10 \
484*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-X86-64-UBUNTU-13-10-ARM-HF %s
485*67e74705SXin Li // CHECK-X86-64-UBUNTU-13-10-ARM-HF: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
486*67e74705SXin Li // CHECK-X86-64-UBUNTU-13-10-ARM-HF: "-dynamic-linker" "{{(/usr/arm--linux-gnueabihf)?}}/lib/ld-linux-armhf.so.3"
487*67e74705SXin Li // CHECK-X86-64-UBUNTU-13-10-ARM-HF: "{{.*}}/usr/lib/gcc-cross/arm-linux-gnueabihf/4.8/../../../../arm-linux-gnueabihf/lib/../lib{{/|\\\\}}crt1.o"
488*67e74705SXin Li // CHECK-X86-64-UBUNTU-13-10-ARM-HF: "{{.*}}/usr/lib/gcc-cross/arm-linux-gnueabihf/4.8/../../../../arm-linux-gnueabihf/lib/../lib{{/|\\\\}}crti.o"
489*67e74705SXin Li // CHECK-X86-64-UBUNTU-13-10-ARM-HF: "{{.*}}/usr/lib/gcc-cross/arm-linux-gnueabihf/4.8{{/|\\\\}}crtbegin.o"
490*67e74705SXin Li // CHECK-X86-64-UBUNTU-13-10-ARM-HF: "-L[[SYSROOT]]/usr/lib/gcc-cross/arm-linux-gnueabihf/4.8"
491*67e74705SXin Li // CHECK-X86-64-UBUNTU-13-10-ARM-HF: "-L[[SYSROOT]]/usr/lib/gcc-cross/arm-linux-gnueabihf/4.8/../../../../arm-linux-gnueabihf/lib/../lib"
492*67e74705SXin Li // CHECK-X86-64-UBUNTU-13-10-ARM-HF: "-L[[SYSROOT]]/lib/../lib"
493*67e74705SXin Li // CHECK-X86-64-UBUNTU-13-10-ARM-HF: "-L[[SYSROOT]]/usr/lib/../lib"
494*67e74705SXin Li // CHECK-X86-64-UBUNTU-13-10-ARM-HF: "-L[[SYSROOT]]/usr/lib/gcc-cross/arm-linux-gnueabihf/4.8/../../../../arm-linux-gnueabihf/lib"
495*67e74705SXin Li // CHECK-X86-64-UBUNTU-13-10-ARM-HF: "{{.*}}/usr/lib/gcc-cross/arm-linux-gnueabihf/4.8{{/|\\\\}}crtend.o"
496*67e74705SXin Li // CHECK-X86-64-UBUNTU-13-10-ARM-HF: "{{.*}}/usr/lib/gcc-cross/arm-linux-gnueabihf/4.8/../../../../arm-linux-gnueabihf/lib/../lib{{/|\\\\}}crtn.o"
497*67e74705SXin Li //
498*67e74705SXin Li // Check Ubuntu 13.10 on x86-64 targeting arm-linux-gnueabi.
499*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
500*67e74705SXin Li // RUN:     --target=arm-linux-gnueabi \
501*67e74705SXin Li // RUN:     --gcc-toolchain="" \
502*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/x86-64_ubuntu_13.10 \
503*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-X86-64-UBUNTU-13-10-ARM %s
504*67e74705SXin Li // CHECK-X86-64-UBUNTU-13-10-ARM: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
505*67e74705SXin Li // CHECK-X86-64-UBUNTU-13-10-ARM: "-dynamic-linker" "{{(/usr/arm--linux-gnueabi)?}}/lib/ld-linux.so.3"
506*67e74705SXin Li // CHECK-X86-64-UBUNTU-13-10-ARM: "{{.*}}/usr/lib/gcc-cross/arm-linux-gnueabi/4.7/../../../../arm-linux-gnueabi/lib/../lib{{/|\\\\}}crt1.o"
507*67e74705SXin Li // CHECK-X86-64-UBUNTU-13-10-ARM: "{{.*}}/usr/lib/gcc-cross/arm-linux-gnueabi/4.7/../../../../arm-linux-gnueabi/lib/../lib{{/|\\\\}}crti.o"
508*67e74705SXin Li // CHECK-X86-64-UBUNTU-13-10-ARM: "{{.*}}/usr/lib/gcc-cross/arm-linux-gnueabi/4.7{{/|\\\\}}crtbegin.o"
509*67e74705SXin Li // CHECK-X86-64-UBUNTU-13-10-ARM: "-L[[SYSROOT]]/usr/lib/gcc-cross/arm-linux-gnueabi/4.7"
510*67e74705SXin Li // CHECK-X86-64-UBUNTU-13-10-ARM: "-L[[SYSROOT]]/usr/lib/gcc-cross/arm-linux-gnueabi/4.7/../../../../arm-linux-gnueabi/lib/../lib"
511*67e74705SXin Li // CHECK-X86-64-UBUNTU-13-10-ARM: "-L[[SYSROOT]]/lib/../lib"
512*67e74705SXin Li // CHECK-X86-64-UBUNTU-13-10-ARM: "-L[[SYSROOT]]/usr/lib/../lib"
513*67e74705SXin Li // CHECK-X86-64-UBUNTU-13-10-ARM: "-L[[SYSROOT]]/usr/lib/gcc-cross/arm-linux-gnueabi/4.7/../../../../arm-linux-gnueabi/lib"
514*67e74705SXin Li // CHECK-X86-64-UBUNTU-13-10-ARM: "{{.*}}/usr/lib/gcc-cross/arm-linux-gnueabi/4.7{{/|\\\\}}crtend.o"
515*67e74705SXin Li // CHECK-X86-64-UBUNTU-13-10-ARM: "{{.*}}/usr/lib/gcc-cross/arm-linux-gnueabi/4.7/../../../../arm-linux-gnueabi/lib/../lib{{/|\\\\}}crtn.o"
516*67e74705SXin Li //
517*67e74705SXin Li // Check Ubuntu 14.04 on powerpc64le.
518*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
519*67e74705SXin Li // RUN:     --target=powerpc64le-unknown-linux-gnu \
520*67e74705SXin Li // RUN:     --gcc-toolchain="" \
521*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/ubuntu_14.04_multiarch_tree \
522*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-UBUNTU-14-04-PPC64LE %s
523*67e74705SXin Li // CHECK-UBUNTU-14-04-PPC64LE: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
524*67e74705SXin Li // CHECK-UBUNTU-14-04-PPC64LE: "{{.*}}/usr/lib/gcc/powerpc64le-linux-gnu/4.8/../../../powerpc64le-linux-gnu{{/|\\\\}}crt1.o"
525*67e74705SXin Li // CHECK-UBUNTU-14-04-PPC64LE: "{{.*}}/usr/lib/gcc/powerpc64le-linux-gnu/4.8/../../../powerpc64le-linux-gnu{{/|\\\\}}crti.o"
526*67e74705SXin Li // CHECK-UBUNTU-14-04-PPC64LE: "{{.*}}/usr/lib/gcc/powerpc64le-linux-gnu/4.8{{/|\\\\}}crtbegin.o"
527*67e74705SXin Li // CHECK-UBUNTU-14-04-PPC64LE: "-L[[SYSROOT]]/usr/lib/gcc/powerpc64le-linux-gnu/4.8"
528*67e74705SXin Li // CHECK-UBUNTU-14-04-PPC64LE: "-L[[SYSROOT]]/usr/lib/gcc/powerpc64le-linux-gnu/4.8/../../../powerpc64le-linux-gnu"
529*67e74705SXin Li // CHECK-UBUNTU-14-04-PPC64LE: "-L[[SYSROOT]]/lib/powerpc64le-linux-gnu"
530*67e74705SXin Li // CHECK-UBUNTU-14-04-PPC64LE: "-L[[SYSROOT]]/usr/lib/powerpc64le-linux-gnu"
531*67e74705SXin Li // CHECK-UBUNTU-14-04-PPC64LE: "-L[[SYSROOT]]/usr/lib/gcc/powerpc64le-linux-gnu/4.8/../../.."
532*67e74705SXin Li // CHECK-UBUNTU-14-04-PPC64LE: "{{.*}}/usr/lib/gcc/powerpc64le-linux-gnu/4.8{{/|\\\\}}crtend.o"
533*67e74705SXin Li // CHECK-UBUNTU-14-04-PPC64LE: "{{.*}}/usr/lib/gcc/powerpc64le-linux-gnu/4.8/../../../powerpc64le-linux-gnu{{/|\\\\}}crtn.o"
534*67e74705SXin Li //
535*67e74705SXin Li // Check Ubuntu 14.04 on x32.
536*67e74705SXin Li // "/usr/lib/gcc/x86_64-linux-gnu/4.8/x32/crtend.o" "/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../libx32/crtn.o"
537*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
538*67e74705SXin Li // RUN:     --target=x86_64-unknown-linux-gnux32 \
539*67e74705SXin Li // RUN:     --gcc-toolchain="" \
540*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/ubuntu_14.04_multiarch_tree \
541*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-UBUNTU-14-04-X32 %s
542*67e74705SXin Li // CHECK-UBUNTU-14-04-X32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
543*67e74705SXin Li // CHECK-UBUNTU-14-04-X32: "{{.*}}/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../libx32{{/|\\\\}}crt1.o"
544*67e74705SXin Li // CHECK-UBUNTU-14-04-X32: "{{.*}}/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../libx32{{/|\\\\}}crti.o"
545*67e74705SXin Li // CHECK-UBUNTU-14-04-X32: "{{.*}}/usr/lib/gcc/x86_64-linux-gnu/4.8/x32{{/|\\\\}}crtbegin.o"
546*67e74705SXin Li // CHECK-UBUNTU-14-04-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/4.8/x32"
547*67e74705SXin Li // CHECK-UBUNTU-14-04-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../libx32"
548*67e74705SXin Li // CHECK-UBUNTU-14-04-X32: "-L[[SYSROOT]]/lib/../libx32"
549*67e74705SXin Li // CHECK-UBUNTU-14-04-X32: "-L[[SYSROOT]]/usr/lib/../libx32"
550*67e74705SXin Li // CHECK-UBUNTU-14-04-X32: "-L[[SYSROOT]]/usr/lib/x86_64-linux-gnu/../../libx32"
551*67e74705SXin Li // CHECK-UBUNTU-14-04-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/4.8"
552*67e74705SXin Li // CHECK-UBUNTU-14-04-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/4.8/../../.."
553*67e74705SXin Li // CHECK-UBUNTU-14-04-X32: "{{.*}}/usr/lib/gcc/x86_64-linux-gnu/4.8/x32{{/|\\\\}}crtend.o"
554*67e74705SXin Li // CHECK-UBUNTU-14-04-X32: "{{.*}}/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../libx32{{/|\\\\}}crtn.o"
555*67e74705SXin Li //
556*67e74705SXin Li // Check fedora 18 on arm.
557*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
558*67e74705SXin Li // RUN:     --target=armv7-unknown-linux-gnueabihf \
559*67e74705SXin Li // RUN:     --gcc-toolchain="" \
560*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/fedora_18_tree \
561*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-FEDORA-18-ARM-HF %s
562*67e74705SXin Li // CHECK-FEDORA-18-ARM-HF: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
563*67e74705SXin Li // CHECK-FEDORA-18-ARM-HF: "{{.*}}/usr/lib/gcc/armv7hl-redhat-linux-gnueabi/4.7.2/../../../../lib{{/|\\\\}}crt1.o"
564*67e74705SXin Li // CHECK-FEDORA-18-ARM-HF: "{{.*}}/usr/lib/gcc/armv7hl-redhat-linux-gnueabi/4.7.2/../../../../lib{{/|\\\\}}crti.o"
565*67e74705SXin Li // CHECK-FEDORA-18-ARM-HF: "{{.*}}/usr/lib/gcc/armv7hl-redhat-linux-gnueabi/4.7.2{{/|\\\\}}crtbegin.o"
566*67e74705SXin Li // CHECK-FEDORA-18-ARM-HF: "-L[[SYSROOT]]/usr/lib/gcc/armv7hl-redhat-linux-gnueabi/4.7.2"
567*67e74705SXin Li // CHECK-FEDORA-18-ARM-HF: "-L[[SYSROOT]]/usr/lib/gcc/armv7hl-redhat-linux-gnueabi/4.7.2/../../../../lib"
568*67e74705SXin Li // CHECK-FEDORA-18-ARM-HF: "{{.*}}/usr/lib/gcc/armv7hl-redhat-linux-gnueabi/4.7.2{{/|\\\\}}crtend.o"
569*67e74705SXin Li // CHECK-FEDORA-18-ARM-HF: "{{.*}}/usr/lib/gcc/armv7hl-redhat-linux-gnueabi/4.7.2/../../../../lib{{/|\\\\}}crtn.o"
570*67e74705SXin Li //
571*67e74705SXin Li // Check Fedora 21 on AArch64.
572*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
573*67e74705SXin Li // RUN:     --target=arm64-unknown-linux-gnu \
574*67e74705SXin Li // RUN:     --gcc-toolchain="" \
575*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/fedora_21_tree \
576*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-FEDORA-21-AARCH64 %s
577*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
578*67e74705SXin Li // RUN:     --target=aarch64-unknown-linux-gnu \
579*67e74705SXin Li // RUN:     --gcc-toolchain="" \
580*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/fedora_21_tree \
581*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-FEDORA-21-AARCH64 %s
582*67e74705SXin Li // CHECK-FEDORA-21-AARCH64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
583*67e74705SXin Li // CHECK-FEDORA-21-AARCH64: "{{.*}}/usr/lib/gcc/aarch64-redhat-linux/4.9.0/../../../../lib64{{/|\\\\}}crt1.o"
584*67e74705SXin Li // CHECK-FEDORA-21-AARCH64: "{{.*}}/usr/lib/gcc/aarch64-redhat-linux/4.9.0/../../../../lib64{{/|\\\\}}crti.o"
585*67e74705SXin Li // CHECK-FEDORA-21-AARCH64: "{{.*}}/usr/lib/gcc/aarch64-redhat-linux/4.9.0{{/|\\\\}}crtbegin.o"
586*67e74705SXin Li // CHECK-FEDORA-21-AARCH64: "-L[[SYSROOT]]/usr/lib/gcc/aarch64-redhat-linux/4.9.0"
587*67e74705SXin Li // CHECK-FEDORA-21-AARCH64: "-L[[SYSROOT]]/usr/lib/gcc/aarch64-redhat-linux/4.9.0/../../../../lib64"
588*67e74705SXin Li // CHECK-FEDORA-21-AARCH64: "{{.*}}/usr/lib/gcc/aarch64-redhat-linux/4.9.0{{/|\\\\}}crtend.o"
589*67e74705SXin Li // CHECK-FEDORA-21-AARCH64: "{{.*}}/usr/lib/gcc/aarch64-redhat-linux/4.9.0/../../../../lib64{{/|\\\\}}crtn.o"
590*67e74705SXin Li //
591*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
592*67e74705SXin Li // RUN:     --target=arm-unknown-linux-gnueabi \
593*67e74705SXin Li // RUN:     --gcc-toolchain="" \
594*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/ubuntu_12.04_LTS_multiarch_tree \
595*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-UBUNTU-12-04-ARM %s
596*67e74705SXin Li // CHECK-UBUNTU-12-04-ARM: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
597*67e74705SXin Li // CHECK-UBUNTU-12-04-ARM: "{{.*}}/usr/lib/gcc/arm-linux-gnueabi/4.6.1/../../../arm-linux-gnueabi{{/|\\\\}}crt1.o"
598*67e74705SXin Li // CHECK-UBUNTU-12-04-ARM: "{{.*}}/usr/lib/gcc/arm-linux-gnueabi/4.6.1/../../../arm-linux-gnueabi{{/|\\\\}}crti.o"
599*67e74705SXin Li // CHECK-UBUNTU-12-04-ARM: "{{.*}}/usr/lib/gcc/arm-linux-gnueabi/4.6.1{{/|\\\\}}crtbegin.o"
600*67e74705SXin Li // CHECK-UBUNTU-12-04-ARM: "-L[[SYSROOT]]/usr/lib/gcc/arm-linux-gnueabi/4.6.1"
601*67e74705SXin Li // CHECK-UBUNTU-12-04-ARM: "-L[[SYSROOT]]/usr/lib/gcc/arm-linux-gnueabi/4.6.1/../../../arm-linux-gnueabi"
602*67e74705SXin Li // CHECK-UBUNTU-12-04-ARM: "-L[[SYSROOT]]/lib/arm-linux-gnueabi"
603*67e74705SXin Li // CHECK-UBUNTU-12-04-ARM: "-L[[SYSROOT]]/usr/lib/arm-linux-gnueabi"
604*67e74705SXin Li // CHECK-UBUNTU-12-04-ARM: "-L[[SYSROOT]]/usr/lib/gcc/arm-linux-gnueabi/4.6.1/../../.."
605*67e74705SXin Li // CHECK-UBUNTU-12-04-ARM: "{{.*}}/usr/lib/gcc/arm-linux-gnueabi/4.6.1{{/|\\\\}}crtend.o"
606*67e74705SXin Li // CHECK-UBUNTU-12-04-ARM: "{{.*}}/usr/lib/gcc/arm-linux-gnueabi/4.6.1/../../../arm-linux-gnueabi{{/|\\\\}}crtn.o"
607*67e74705SXin Li //
608*67e74705SXin Li // Test the setup that shipped in SUSE 10.3 on ppc64.
609*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
610*67e74705SXin Li // RUN:     --target=powerpc64-suse-linux \
611*67e74705SXin Li // RUN:     --gcc-toolchain="" \
612*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/suse_10.3_ppc64_tree \
613*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-SUSE-10-3-PPC64 %s
614*67e74705SXin Li // CHECK-SUSE-10-3-PPC64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
615*67e74705SXin Li // CHECK-SUSE-10-3-PPC64: "{{.*}}/usr/lib/gcc/powerpc64-suse-linux/4.1.2/64{{/|\\\\}}crtbegin.o"
616*67e74705SXin Li // CHECK-SUSE-10-3-PPC64: "-L[[SYSROOT]]/usr/lib/gcc/powerpc64-suse-linux/4.1.2/64"
617*67e74705SXin Li // CHECK-SUSE-10-3-PPC64: "-L[[SYSROOT]]/usr/lib/gcc/powerpc64-suse-linux/4.1.2/../../../../lib64"
618*67e74705SXin Li // CHECK-SUSE-10-3-PPC64: "-L[[SYSROOT]]/lib/../lib64"
619*67e74705SXin Li // CHECK-SUSE-10-3-PPC64: "-L[[SYSROOT]]/usr/lib/../lib64"
620*67e74705SXin Li //
621*67e74705SXin Li // Check dynamic-linker for different archs
622*67e74705SXin Li // RUN: %clang %s -### -o %t.o 2>&1 \
623*67e74705SXin Li // RUN:     --target=arm-linux-gnueabi \
624*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-ARM %s
625*67e74705SXin Li // CHECK-ARM: "{{.*}}ld{{(.exe)?}}"
626*67e74705SXin Li // CHECK-ARM: "-m" "armelf_linux_eabi"
627*67e74705SXin Li // CHECK-ARM: "-dynamic-linker" "{{.*}}/lib/ld-linux.so.3"
628*67e74705SXin Li //
629*67e74705SXin Li // RUN: %clang %s -### -o %t.o 2>&1 \
630*67e74705SXin Li // RUN:     --target=arm-linux-gnueabi -mfloat-abi=hard \
631*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-ARM-ABIHF %s
632*67e74705SXin Li // CHECK-ARM-ABIHF: "{{.*}}ld{{(.exe)?}}"
633*67e74705SXin Li // CHECK-ARM-ABIHF: "-m" "armelf_linux_eabi"
634*67e74705SXin Li // CHECK-ARM-ABIHF: "-dynamic-linker" "{{.*}}/lib/ld-linux-armhf.so.3"
635*67e74705SXin Li //
636*67e74705SXin Li // RUN: %clang %s -### -o %t.o 2>&1 \
637*67e74705SXin Li // RUN:     --target=arm-linux-gnueabihf \
638*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-ARM-HF %s
639*67e74705SXin Li // CHECK-ARM-HF: "{{.*}}ld{{(.exe)?}}"
640*67e74705SXin Li // CHECK-ARM-HF: "-m" "armelf_linux_eabi"
641*67e74705SXin Li // CHECK-ARM-HF: "-dynamic-linker" "{{.*}}/lib/ld-linux-armhf.so.3"
642*67e74705SXin Li //
643*67e74705SXin Li // RUN: %clang %s -### -o %t.o 2>&1 \
644*67e74705SXin Li // RUN:     --target=powerpc64-linux-gnu \
645*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-PPC64 %s
646*67e74705SXin Li // CHECK-PPC64: "{{.*}}ld{{(.exe)?}}"
647*67e74705SXin Li // CHECK-PPC64: "-m" "elf64ppc"
648*67e74705SXin Li // CHECK-PPC64: "-dynamic-linker" "{{.*}}/lib{{(64)?}}/ld64.so.1"
649*67e74705SXin Li //
650*67e74705SXin Li // RUN: %clang %s -### -o %t.o 2>&1 \
651*67e74705SXin Li // RUN:     --target=powerpc64-linux-gnu -mabi=elfv1 \
652*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-PPC64-ELFv1 %s
653*67e74705SXin Li // RUN: %clang %s -### -o %t.o 2>&1 \
654*67e74705SXin Li // RUN:     --target=powerpc64-linux-gnu -mabi=elfv1-qpx \
655*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-PPC64-ELFv1 %s
656*67e74705SXin Li // CHECK-PPC64-ELFv1: "{{.*}}ld{{(.exe)?}}"
657*67e74705SXin Li // CHECK-PPC64-ELFv1: "-m" "elf64ppc"
658*67e74705SXin Li // CHECK-PPC64-ELFv1: "-dynamic-linker" "{{.*}}/lib{{(64)?}}/ld64.so.1"
659*67e74705SXin Li //
660*67e74705SXin Li // RUN: %clang %s -### -o %t.o 2>&1 \
661*67e74705SXin Li // RUN:     --target=powerpc64-linux-gnu -mabi=elfv2 \
662*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-PPC64-ELFv2 %s
663*67e74705SXin Li // CHECK-PPC64-ELFv2: "{{.*}}ld{{(.exe)?}}"
664*67e74705SXin Li // CHECK-PPC64-ELFv2: "-m" "elf64ppc"
665*67e74705SXin Li // CHECK-PPC64-ELFv2: "-dynamic-linker" "{{.*}}/lib{{(64)?}}/ld64.so.2"
666*67e74705SXin Li //
667*67e74705SXin Li // RUN: %clang %s -### -o %t.o 2>&1 \
668*67e74705SXin Li // RUN:     --target=powerpc64le-linux-gnu \
669*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-PPC64LE %s
670*67e74705SXin Li // CHECK-PPC64LE: "{{.*}}ld{{(.exe)?}}"
671*67e74705SXin Li // CHECK-PPC64LE: "-m" "elf64lppc"
672*67e74705SXin Li // CHECK-PPC64LE: "-dynamic-linker" "{{.*}}/lib{{(64)?}}/ld64.so.2"
673*67e74705SXin Li //
674*67e74705SXin Li // RUN: %clang %s -### -o %t.o 2>&1 \
675*67e74705SXin Li // RUN:     --target=powerpc64le-linux-gnu -mabi=elfv1 \
676*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-PPC64LE-ELFv1 %s
677*67e74705SXin Li // CHECK-PPC64LE-ELFv1: "{{.*}}ld{{(.exe)?}}"
678*67e74705SXin Li // CHECK-PPC64LE-ELFv1: "-m" "elf64lppc"
679*67e74705SXin Li // CHECK-PPC64LE-ELFv1: "-dynamic-linker" "{{.*}}/lib{{(64)?}}/ld64.so.1"
680*67e74705SXin Li //
681*67e74705SXin Li // RUN: %clang %s -### -o %t.o 2>&1 \
682*67e74705SXin Li // RUN:     --target=powerpc64le-linux-gnu -mabi=elfv2 \
683*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-PPC64LE-ELFv2 %s
684*67e74705SXin Li // CHECK-PPC64LE-ELFv2: "{{.*}}ld{{(.exe)?}}"
685*67e74705SXin Li // CHECK-PPC64LE-ELFv2: "-m" "elf64lppc"
686*67e74705SXin Li // CHECK-PPC64LE-ELFv2: "-dynamic-linker" "{{.*}}/lib{{(64)?}}/ld64.so.2"
687*67e74705SXin Li //
688*67e74705SXin Li // Check that we do not pass --hash-style=gnu and --hash-style=both to linker
689*67e74705SXin Li // and provide correct path to the dynamic linker and emulation mode when build
690*67e74705SXin Li // for MIPS platforms.
691*67e74705SXin Li // RUN: %clang %s -### -o %t.o 2>&1 \
692*67e74705SXin Li // RUN:     --target=mips-linux-gnu \
693*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-MIPS %s
694*67e74705SXin Li // CHECK-MIPS: "{{.*}}ld{{(.exe)?}}"
695*67e74705SXin Li // CHECK-MIPS: "-m" "elf32btsmip"
696*67e74705SXin Li // CHECK-MIPS: "-dynamic-linker" "{{.*}}/lib/ld.so.1"
697*67e74705SXin Li // CHECK-MIPS-NOT: "--hash-style={{gnu|both}}"
698*67e74705SXin Li //
699*67e74705SXin Li // RUN: %clang %s -### -o %t.o 2>&1 \
700*67e74705SXin Li // RUN:     --target=mipsel-linux-gnu \
701*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-MIPSEL %s
702*67e74705SXin Li // CHECK-MIPSEL: "{{.*}}ld{{(.exe)?}}"
703*67e74705SXin Li // CHECK-MIPSEL: "-m" "elf32ltsmip"
704*67e74705SXin Li // CHECK-MIPSEL: "-dynamic-linker" "{{.*}}/lib/ld.so.1"
705*67e74705SXin Li // CHECK-MIPSEL-NOT: "--hash-style={{gnu|both}}"
706*67e74705SXin Li //
707*67e74705SXin Li // RUN: %clang %s -### -o %t.o 2>&1 --target=mipsel-linux-gnu -mnan=2008 \
708*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-MIPSEL-NAN2008 %s
709*67e74705SXin Li // CHECK-MIPSEL-NAN2008: "{{.*}}ld{{(.exe)?}}"
710*67e74705SXin Li // CHECK-MIPSEL-NAN2008: "-m" "elf32ltsmip"
711*67e74705SXin Li // CHECK-MIPSEL-NAN2008: "-dynamic-linker" "{{.*}}/lib/ld-linux-mipsn8.so.1"
712*67e74705SXin Li // CHECK-MIPSEL-NAN2008-NOT: "--hash-style={{gnu|both}}"
713*67e74705SXin Li //
714*67e74705SXin Li // RUN: %clang %s -### -o %t.o 2>&1 --target=mipsel-linux-gnu -mcpu=mips32r6 \
715*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-MIPS32R6EL %s
716*67e74705SXin Li // CHECK-MIPS32R6EL: "{{.*}}ld{{(.exe)?}}"
717*67e74705SXin Li // CHECK-MIPS32R6EL: "-m" "elf32ltsmip"
718*67e74705SXin Li // CHECK-MIPS32R6EL: "-dynamic-linker" "{{.*}}/lib/ld-linux-mipsn8.so.1"
719*67e74705SXin Li // CHECK-MIPS32R6EL-NOT: "--hash-style={{gnu|both}}"
720*67e74705SXin Li //
721*67e74705SXin Li // RUN: %clang %s -### -o %t.o 2>&1 \
722*67e74705SXin Li // RUN:     --target=mips64-linux-gnu \
723*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-MIPS64 %s
724*67e74705SXin Li // CHECK-MIPS64: "{{.*}}ld{{(.exe)?}}"
725*67e74705SXin Li // CHECK-MIPS64: "-m" "elf64btsmip"
726*67e74705SXin Li // CHECK-MIPS64: "-dynamic-linker" "{{.*}}/lib{{(64)?}}/ld.so.1"
727*67e74705SXin Li // CHECK-MIPS64-NOT: "--hash-style={{gnu|both}}"
728*67e74705SXin Li //
729*67e74705SXin Li // RUN: %clang %s -### -o %t.o 2>&1 \
730*67e74705SXin Li // RUN:     --target=mips64el-linux-gnu \
731*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-MIPS64EL %s
732*67e74705SXin Li // CHECK-MIPS64EL: "{{.*}}ld{{(.exe)?}}"
733*67e74705SXin Li // CHECK-MIPS64EL: "-m" "elf64ltsmip"
734*67e74705SXin Li // CHECK-MIPS64EL: "-dynamic-linker" "{{.*}}/lib{{(64)?}}/ld.so.1"
735*67e74705SXin Li // CHECK-MIPS64EL-NOT: "--hash-style={{gnu|both}}"
736*67e74705SXin Li //
737*67e74705SXin Li // RUN: %clang %s -### -o %t.o 2>&1 --target=mips64el-linux-gnu -mnan=2008 \
738*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-MIPS64EL-NAN2008 %s
739*67e74705SXin Li // CHECK-MIPS64EL-NAN2008: "{{.*}}ld{{(.exe)?}}"
740*67e74705SXin Li // CHECK-MIPS64EL-NAN2008: "-m" "elf64ltsmip"
741*67e74705SXin Li // CHECK-MIPS64EL-NAN2008: "-dynamic-linker" "{{.*}}/lib{{(64)?}}/ld-linux-mipsn8.so.1"
742*67e74705SXin Li // CHECK-MIPS64EL-NAN2008-NOT: "--hash-style={{gnu|both}}"
743*67e74705SXin Li //
744*67e74705SXin Li // RUN: %clang %s -### -o %t.o 2>&1 --target=mips64el-linux-gnu -mcpu=mips64r6 \
745*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-MIPS64R6EL %s
746*67e74705SXin Li // CHECK-MIPS64R6EL: "{{.*}}ld{{(.exe)?}}"
747*67e74705SXin Li // CHECK-MIPS64R6EL: "-m" "elf64ltsmip"
748*67e74705SXin Li // CHECK-MIPS64R6EL: "-dynamic-linker" "{{.*}}/lib{{(64)?}}/ld-linux-mipsn8.so.1"
749*67e74705SXin Li // CHECK-MIPS64R6EL-NOT: "--hash-style={{gnu|both}}"
750*67e74705SXin Li //
751*67e74705SXin Li // RUN: %clang %s -### -o %t.o 2>&1 \
752*67e74705SXin Li // RUN:     --target=mips64-linux-gnu -mabi=n32 \
753*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-MIPS64-N32 %s
754*67e74705SXin Li // CHECK-MIPS64-N32: "{{.*}}ld{{(.exe)?}}"
755*67e74705SXin Li // CHECK-MIPS64-N32: "-m" "elf32btsmipn32"
756*67e74705SXin Li // CHECK-MIPS64-N32: "-dynamic-linker" "{{.*}}/lib{{(32)?}}/ld.so.1"
757*67e74705SXin Li // CHECK-MIPS64-N32-NOT: "--hash-style={{gnu|both}}"
758*67e74705SXin Li //
759*67e74705SXin Li // RUN: %clang %s -### -o %t.o 2>&1 \
760*67e74705SXin Li // RUN:     --target=mips64el-linux-gnu -mabi=n32 \
761*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-MIPS64EL-N32 %s
762*67e74705SXin Li // CHECK-MIPS64EL-N32: "{{.*}}ld{{(.exe)?}}"
763*67e74705SXin Li // CHECK-MIPS64EL-N32: "-m" "elf32ltsmipn32"
764*67e74705SXin Li // CHECK-MIPS64EL-N32: "-dynamic-linker" "{{.*}}/lib{{(32)?}}/ld.so.1"
765*67e74705SXin Li // CHECK-MIPS64EL-N32-NOT: "--hash-style={{gnu|both}}"
766*67e74705SXin Li //
767*67e74705SXin Li // RUN: %clang %s -### -o %t.o 2>&1 --target=mips64el-linux-gnu -mabi=n32 \
768*67e74705SXin Li // RUN:   -mnan=2008 | FileCheck --check-prefix=CHECK-MIPS64EL-N32-NAN2008 %s
769*67e74705SXin Li // CHECK-MIPS64EL-N32-NAN2008: "{{.*}}ld{{(.exe)?}}"
770*67e74705SXin Li // CHECK-MIPS64EL-N32-NAN2008: "-m" "elf32ltsmipn32"
771*67e74705SXin Li // CHECK-MIPS64EL-N32-NAN2008: "-dynamic-linker" "{{.*}}/lib{{(32)?}}/ld-linux-mipsn8.so.1"
772*67e74705SXin Li // CHECK-MIPS64EL-N32-NAN2008-NOT: "--hash-style={{gnu|both}}"
773*67e74705SXin Li //
774*67e74705SXin Li // RUN: %clang %s -### -o %t.o 2>&1 --target=mips64el-redhat-linux \
775*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-MIPS64EL-REDHAT %s
776*67e74705SXin Li // CHECK-MIPS64EL-REDHAT: "{{.*}}ld{{(.exe)?}}"
777*67e74705SXin Li // CHECK-MIPS64EL-REDHAT: "-m" "elf64ltsmip"
778*67e74705SXin Li // CHECK-MIPS64EL-REDHAT: "-dynamic-linker" "{{.*}}/lib{{(64)?}}/ld.so.1"
779*67e74705SXin Li // CHECK-MIPS64EL-REDHAT-NOT: "-dynamic-linker" "{{.*}}/lib{{(64)?}}/ld-musl-mipsel.so.1"
780*67e74705SXin Li // CHECK-MIPS64EL-REDHAT-NOT: "--hash-style={{gnu|both}}"
781*67e74705SXin Li //
782*67e74705SXin Li // RUN: %clang %s -### -o %t.o 2>&1 \
783*67e74705SXin Li // RUN:     --target=sparc-unknown-linux-gnu \
784*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-SPARCV8 %s
785*67e74705SXin Li // CHECK-SPARCV8: "{{.*}}ld{{(.exe)?}}"
786*67e74705SXin Li // CHECK-SPARCV8: "-m" "elf32_sparc"
787*67e74705SXin Li // CHECK-SPARCV8: "-dynamic-linker" "{{(/usr/sparc-unknown-linux-gnu)?}}/lib/ld-linux.so.2"
788*67e74705SXin Li //
789*67e74705SXin Li // RUN: %clang %s -### -o %t.o 2>&1 \
790*67e74705SXin Li // RUN:     --target=sparcel-unknown-linux-gnu \
791*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-SPARCV8EL %s
792*67e74705SXin Li // CHECK-SPARCV8EL: "{{.*}}ld{{(.exe)?}}"
793*67e74705SXin Li // CHECK-SPARCV8EL: "-m" "elf32_sparc"
794*67e74705SXin Li // CHECK-SPARCV8EL: "-dynamic-linker" "{{(/usr/sparcel-unknown-linux-gnu)?}}/lib/ld-linux.so.2"
795*67e74705SXin Li //
796*67e74705SXin Li // RUN: %clang %s -### -o %t.o 2>&1 \
797*67e74705SXin Li // RUN:     --target=sparcv9-unknown-linux-gnu \
798*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-SPARCV9 %s
799*67e74705SXin Li // CHECK-SPARCV9: "{{.*}}ld{{(.exe)?}}"
800*67e74705SXin Li // CHECK-SPARCV9: "-m" "elf64_sparc"
801*67e74705SXin Li // CHECK-SPARCV9: "-dynamic-linker" "{{(/usr/sparcv9-unknown-linux-gnu)?}}/lib{{(64)?}}/ld-linux.so.2"
802*67e74705SXin Li //
803*67e74705SXin Li // Thoroughly exercise the Debian multiarch environment.
804*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
805*67e74705SXin Li // RUN:     --target=i686-linux-gnu \
806*67e74705SXin Li // RUN:     --gcc-toolchain="" \
807*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/debian_multiarch_tree \
808*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-X86 %s
809*67e74705SXin Li // CHECK-DEBIAN-X86: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
810*67e74705SXin Li // CHECK-DEBIAN-X86: "{{.*}}/usr/lib/gcc/i686-linux-gnu/4.5{{/|\\\\}}crtbegin.o"
811*67e74705SXin Li // CHECK-DEBIAN-X86: "-L[[SYSROOT]]/usr/lib/gcc/i686-linux-gnu/4.5"
812*67e74705SXin Li // CHECK-DEBIAN-X86: "-L[[SYSROOT]]/usr/lib/gcc/i686-linux-gnu/4.5/../../../i386-linux-gnu"
813*67e74705SXin Li // CHECK-DEBIAN-X86: "-L[[SYSROOT]]/usr/lib/i386-linux-gnu"
814*67e74705SXin Li // CHECK-DEBIAN-X86: "-L[[SYSROOT]]/usr/lib/gcc/i686-linux-gnu/4.5/../../.."
815*67e74705SXin Li // CHECK-DEBIAN-X86: "-L[[SYSROOT]]/lib"
816*67e74705SXin Li // CHECK-DEBIAN-X86: "-L[[SYSROOT]]/usr/lib"
817*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
818*67e74705SXin Li // RUN:     --target=x86_64-linux-gnu \
819*67e74705SXin Li // RUN:     --gcc-toolchain="" \
820*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/debian_multiarch_tree \
821*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-X86-64 %s
822*67e74705SXin Li // CHECK-DEBIAN-X86-64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
823*67e74705SXin Li // CHECK-DEBIAN-X86-64: "{{.*}}/usr/lib/gcc/x86_64-linux-gnu/4.5{{/|\\\\}}crtbegin.o"
824*67e74705SXin Li // CHECK-DEBIAN-X86-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/4.5"
825*67e74705SXin Li // CHECK-DEBIAN-X86-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/4.5/../../../x86_64-linux-gnu"
826*67e74705SXin Li // CHECK-DEBIAN-X86-64: "-L[[SYSROOT]]/usr/lib/x86_64-linux-gnu"
827*67e74705SXin Li // CHECK-DEBIAN-X86-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/4.5/../../.."
828*67e74705SXin Li // CHECK-DEBIAN-X86-64: "-L[[SYSROOT]]/lib"
829*67e74705SXin Li // CHECK-DEBIAN-X86-64: "-L[[SYSROOT]]/usr/lib"
830*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
831*67e74705SXin Li // RUN:     --target=powerpc-linux-gnu \
832*67e74705SXin Li // RUN:     --gcc-toolchain="" \
833*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/debian_multiarch_tree \
834*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-PPC %s
835*67e74705SXin Li // CHECK-DEBIAN-PPC: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
836*67e74705SXin Li // CHECK-DEBIAN-PPC: "{{.*}}/usr/lib/gcc/powerpc-linux-gnu/4.5{{/|\\\\}}crtbegin.o"
837*67e74705SXin Li // CHECK-DEBIAN-PPC: "-L[[SYSROOT]]/usr/lib/gcc/powerpc-linux-gnu/4.5"
838*67e74705SXin Li // CHECK-DEBIAN-PPC: "-L[[SYSROOT]]/usr/lib/gcc/powerpc-linux-gnu/4.5/../../../powerpc-linux-gnu"
839*67e74705SXin Li // CHECK-DEBIAN-PPC: "-L[[SYSROOT]]/usr/lib/powerpc-linux-gnu"
840*67e74705SXin Li // CHECK-DEBIAN-PPC: "-L[[SYSROOT]]/usr/lib/gcc/powerpc-linux-gnu/4.5/../../.."
841*67e74705SXin Li // CHECK-DEBIAN-PPC: "-L[[SYSROOT]]/lib"
842*67e74705SXin Li // CHECK-DEBIAN-PPC: "-L[[SYSROOT]]/usr/lib"
843*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
844*67e74705SXin Li // RUN:     --target=powerpc64le-linux-gnu \
845*67e74705SXin Li // RUN:     --gcc-toolchain="" \
846*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/debian_multiarch_tree \
847*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-PPC64LE %s
848*67e74705SXin Li // CHECK-DEBIAN-PPC64LE: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
849*67e74705SXin Li // CHECK-DEBIAN-PPC64LE: "{{.*}}/usr/lib/gcc/powerpc64le-linux-gnu/4.5{{/|\\\\}}crtbegin.o"
850*67e74705SXin Li // CHECK-DEBIAN-PPC64LE: "-L[[SYSROOT]]/usr/lib/gcc/powerpc64le-linux-gnu/4.5"
851*67e74705SXin Li // CHECK-DEBIAN-PPC64LE: "-L[[SYSROOT]]/usr/lib/gcc/powerpc64le-linux-gnu/4.5/../../../powerpc64le-linux-gnu"
852*67e74705SXin Li // CHECK-DEBIAN-PPC64LE: "-L[[SYSROOT]]/usr/lib/powerpc64le-linux-gnu"
853*67e74705SXin Li // CHECK-DEBIAN-PPC64LE: "-L[[SYSROOT]]/usr/lib/gcc/powerpc64le-linux-gnu/4.5/../../.."
854*67e74705SXin Li // CHECK-DEBIAN-PPC64LE: "-L[[SYSROOT]]/lib"
855*67e74705SXin Li // CHECK-DEBIAN-PPC64LE: "-L[[SYSROOT]]/usr/lib"
856*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
857*67e74705SXin Li // RUN:     --target=powerpc64-linux-gnu \
858*67e74705SXin Li // RUN:     --gcc-toolchain="" \
859*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/debian_multiarch_tree \
860*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-PPC64 %s
861*67e74705SXin Li // CHECK-DEBIAN-PPC64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
862*67e74705SXin Li // CHECK-DEBIAN-PPC64: "{{.*}}/usr/lib/gcc/powerpc64-linux-gnu/4.5{{/|\\\\}}crtbegin.o"
863*67e74705SXin Li // CHECK-DEBIAN-PPC64: "-L[[SYSROOT]]/usr/lib/gcc/powerpc64-linux-gnu/4.5"
864*67e74705SXin Li // CHECK-DEBIAN-PPC64: "-L[[SYSROOT]]/usr/lib/gcc/powerpc64-linux-gnu/4.5/../../../powerpc64-linux-gnu"
865*67e74705SXin Li // CHECK-DEBIAN-PPC64: "-L[[SYSROOT]]/usr/lib/powerpc64-linux-gnu"
866*67e74705SXin Li // CHECK-DEBIAN-PPC64: "-L[[SYSROOT]]/usr/lib/gcc/powerpc64-linux-gnu/4.5/../../.."
867*67e74705SXin Li // CHECK-DEBIAN-PPC64: "-L[[SYSROOT]]/lib"
868*67e74705SXin Li // CHECK-DEBIAN-PPC64: "-L[[SYSROOT]]/usr/lib"
869*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
870*67e74705SXin Li // RUN:     --target=mips-linux-gnu \
871*67e74705SXin Li // RUN:     --gcc-toolchain="" \
872*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/debian_multiarch_tree \
873*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-MIPS %s
874*67e74705SXin Li // CHECK-DEBIAN-MIPS: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
875*67e74705SXin Li // CHECK-DEBIAN-MIPS: "{{.*}}/usr/lib/gcc/mips-linux-gnu/4.5{{/|\\\\}}crtbegin.o"
876*67e74705SXin Li // CHECK-DEBIAN-MIPS: "-L[[SYSROOT]]/usr/lib/gcc/mips-linux-gnu/4.5"
877*67e74705SXin Li // CHECK-DEBIAN-MIPS: "-L[[SYSROOT]]/usr/lib/gcc/mips-linux-gnu/4.5/../../../mips-linux-gnu"
878*67e74705SXin Li // CHECK-DEBIAN-MIPS: "-L[[SYSROOT]]/usr/lib/mips-linux-gnu"
879*67e74705SXin Li // CHECK-DEBIAN-MIPS: "-L[[SYSROOT]]/usr/lib/gcc/mips-linux-gnu/4.5/../../.."
880*67e74705SXin Li // CHECK-DEBIAN-MIPS: "-L[[SYSROOT]]/lib"
881*67e74705SXin Li // CHECK-DEBIAN-MIPS: "-L[[SYSROOT]]/usr/lib"
882*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
883*67e74705SXin Li // RUN:     --target=mipsel-linux-gnu \
884*67e74705SXin Li // RUN:     --gcc-toolchain="" \
885*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/debian_multiarch_tree \
886*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-MIPSEL %s
887*67e74705SXin Li // CHECK-DEBIAN-MIPSEL: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
888*67e74705SXin Li // CHECK-DEBIAN-MIPSEL: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.5{{/|\\\\}}crtbegin.o"
889*67e74705SXin Li // CHECK-DEBIAN-MIPSEL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.5"
890*67e74705SXin Li // CHECK-DEBIAN-MIPSEL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.5/../../../mipsel-linux-gnu"
891*67e74705SXin Li // CHECK-DEBIAN-MIPSEL: "-L[[SYSROOT]]/usr/lib/mipsel-linux-gnu"
892*67e74705SXin Li // CHECK-DEBIAN-MIPSEL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.5/../../.."
893*67e74705SXin Li // CHECK-DEBIAN-MIPSEL: "-L[[SYSROOT]]/lib"
894*67e74705SXin Li // CHECK-DEBIAN-MIPSEL: "-L[[SYSROOT]]/usr/lib"
895*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
896*67e74705SXin Li // RUN:     --target=mips64-linux-gnu \
897*67e74705SXin Li // RUN:     --gcc-toolchain="" \
898*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/debian_multiarch_tree \
899*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-MIPS64 %s
900*67e74705SXin Li // CHECK-DEBIAN-MIPS64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
901*67e74705SXin Li // CHECK-DEBIAN-MIPS64: "{{.*}}/usr/lib/gcc/mips-linux-gnu/4.5/64{{/|\\\\}}crtbegin.o"
902*67e74705SXin Li // CHECK-DEBIAN-MIPS64: "-L[[SYSROOT]]/usr/lib/gcc/mips-linux-gnu/4.5/64"
903*67e74705SXin Li // CHECK-DEBIAN-MIPS64: "-L[[SYSROOT]]/usr/lib/gcc/mips-linux-gnu/4.5"
904*67e74705SXin Li // CHECK-DEBIAN-MIPS64: "-L[[SYSROOT]]/usr/lib/gcc/mips-linux-gnu/4.5/../../.."
905*67e74705SXin Li // CHECK-DEBIAN-MIPS64: "-L[[SYSROOT]]/lib"
906*67e74705SXin Li // CHECK-DEBIAN-MIPS64: "-L[[SYSROOT]]/usr/lib"
907*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
908*67e74705SXin Li // RUN:     --target=mips64el-linux-gnu \
909*67e74705SXin Li // RUN:     --gcc-toolchain="" \
910*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/debian_multiarch_tree \
911*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-MIPS64EL %s
912*67e74705SXin Li // CHECK-DEBIAN-MIPS64EL: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
913*67e74705SXin Li // CHECK-DEBIAN-MIPS64EL: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.5/64{{/|\\\\}}crtbegin.o"
914*67e74705SXin Li // CHECK-DEBIAN-MIPS64EL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.5/64"
915*67e74705SXin Li // CHECK-DEBIAN-MIPS64EL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.5"
916*67e74705SXin Li // CHECK-DEBIAN-MIPS64EL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.5/../../.."
917*67e74705SXin Li // CHECK-DEBIAN-MIPS64EL: "-L[[SYSROOT]]/lib"
918*67e74705SXin Li // CHECK-DEBIAN-MIPS64EL: "-L[[SYSROOT]]/usr/lib"
919*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
920*67e74705SXin Li // RUN:     --target=mips64-linux-gnu -mabi=n32 \
921*67e74705SXin Li // RUN:     --gcc-toolchain="" \
922*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/debian_multiarch_tree \
923*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-MIPS64-N32 %s
924*67e74705SXin Li // CHECK-DEBIAN-MIPS64-N32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
925*67e74705SXin Li // CHECK-DEBIAN-MIPS64-N32: "{{.*}}/usr/lib/gcc/mips-linux-gnu/4.5/n32{{/|\\\\}}crtbegin.o"
926*67e74705SXin Li // CHECK-DEBIAN-MIPS64-N32: "-L[[SYSROOT]]/usr/lib/gcc/mips-linux-gnu/4.5/n32"
927*67e74705SXin Li // CHECK-DEBIAN-MIPS64-N32: "-L[[SYSROOT]]/usr/lib/gcc/mips-linux-gnu/4.5"
928*67e74705SXin Li // CHECK-DEBIAN-MIPS64-N32: "-L[[SYSROOT]]/usr/lib/gcc/mips-linux-gnu/4.5/../../.."
929*67e74705SXin Li // CHECK-DEBIAN-MIPS64-N32: "-L[[SYSROOT]]/lib"
930*67e74705SXin Li // CHECK-DEBIAN-MIPS64-N32: "-L[[SYSROOT]]/usr/lib"
931*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
932*67e74705SXin Li // RUN:     --target=mips64el-linux-gnu -mabi=n32 \
933*67e74705SXin Li // RUN:     --gcc-toolchain="" \
934*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/debian_multiarch_tree \
935*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-MIPS64EL-N32 %s
936*67e74705SXin Li // CHECK-DEBIAN-MIPS64EL-N32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
937*67e74705SXin Li // CHECK-DEBIAN-MIPS64EL-N32: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.5/n32{{/|\\\\}}crtbegin.o"
938*67e74705SXin Li // CHECK-DEBIAN-MIPS64EL-N32: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.5/n32"
939*67e74705SXin Li // CHECK-DEBIAN-MIPS64EL-N32: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.5"
940*67e74705SXin Li // CHECK-DEBIAN-MIPS64EL-N32: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.5/../../.."
941*67e74705SXin Li // CHECK-DEBIAN-MIPS64EL-N32: "-L[[SYSROOT]]/lib"
942*67e74705SXin Li // CHECK-DEBIAN-MIPS64EL-N32: "-L[[SYSROOT]]/usr/lib"
943*67e74705SXin Li //
944*67e74705SXin Li // Check linker paths on Debian 8 / Sparc
945*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
946*67e74705SXin Li // RUN:     --target=sparc-linux-gnu \
947*67e74705SXin Li // RUN:     --gcc-toolchain="" \
948*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/debian_8_sparc_multilib_tree \
949*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-SPARC32 %s
950*67e74705SXin Li // CHECK-DEBIAN-SPARC32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
951*67e74705SXin Li // CHECK-DEBIAN-SPARC32: "[[SYSROOT]]/usr/lib/gcc/sparc-linux-gnu/4.9/../../../sparc-linux-gnu{{/|\\\\}}crt1.o"
952*67e74705SXin Li // CHECK-DEBIAN-SPARC32: "[[SYSROOT]]/usr/lib/gcc/sparc-linux-gnu/4.9/../../../sparc-linux-gnu{{/|\\\\}}crti.o"
953*67e74705SXin Li // CHECK-DEBIAN-SPARC32: "[[SYSROOT]]/usr/lib/gcc/sparc-linux-gnu/4.9{{/|\\\\}}crtbegin.o"
954*67e74705SXin Li // CHECK-DEBIAN-SPARC32: "-L[[SYSROOT]]/usr/lib/gcc/sparc-linux-gnu/4.9"
955*67e74705SXin Li // CHECK-DEBIAN-SPARC32: "-L[[SYSROOT]]/usr/lib/gcc/sparc-linux-gnu/4.9/../../../sparc-linux-gnu"
956*67e74705SXin Li // CHECK-DEBIAN-SPARC32: "-L[[SYSROOT]]/usr/lib/gcc/sparc-linux-gnu/4.9/../../../../lib"
957*67e74705SXin Li // CHECK-DEBIAN-SPARC32: "-L[[SYSROOT]]/lib/sparc-linux-gnu"
958*67e74705SXin Li // CHECK-DEBIAN-SPARC32: "-L[[SYSROOT]]/usr/lib/sparc-linux-gnu"
959*67e74705SXin Li // CHECK-DEBIAN-SPARC32: "-L[[SYSROOT]]/lib"
960*67e74705SXin Li // CHECK-DEBIAN-SPARC32: "-L[[SYSROOT]]/usr/lib"
961*67e74705SXin Li // CHECK-DEBIAN-SPARC32: "[[SYSROOT]]/usr/lib/gcc/sparc-linux-gnu/4.9{{/|\\\\}}crtend.o"
962*67e74705SXin Li // CHECK-DEBIAN-SPARC32: "[[SYSROOT]]/usr/lib/gcc/sparc-linux-gnu/4.9/../../../sparc-linux-gnu{{/|\\\\}}crtn.o"
963*67e74705SXin Li //
964*67e74705SXin Li // Check linker paths on Debian 8 / Sparc, with the oldstyle multilib packages
965*67e74705SXin Li // RUN: %clang -no-canonical-prefixes -m64 %s -### -o %t.o 2>&1 \
966*67e74705SXin Li // RUN:     --target=sparc-linux-gnu \
967*67e74705SXin Li // RUN:     --gcc-toolchain="" \
968*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/debian_8_sparc_multilib_tree \
969*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-SPARC32-LIB64 %s
970*67e74705SXin Li // CHECK-DEBIAN-SPARC32-LIB64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
971*67e74705SXin Li // CHECK-DEBIAN-SPARC32-LIB64: "[[SYSROOT]]/usr/lib/gcc/sparc-linux-gnu/4.9/../../../../lib64{{/|\\\\}}crt1.o"
972*67e74705SXin Li // CHECK-DEBIAN-SPARC32-LIB64: "[[SYSROOT]]/usr/lib/gcc/sparc-linux-gnu/4.9/../../../../lib64{{/|\\\\}}crti.o"
973*67e74705SXin Li // CHECK-DEBIAN-SPARC32-LIB64: "[[SYSROOT]]/usr/lib/gcc/sparc-linux-gnu/4.9/64{{/|\\\\}}crtbegin.o"
974*67e74705SXin Li // CHECK-DEBIAN-SPARC32-LIB64: "-L[[SYSROOT]]/usr/lib/gcc/sparc-linux-gnu/4.9/64"
975*67e74705SXin Li // CHECK-DEBIAN-SPARC32-LIB64: "-L[[SYSROOT]]/usr/lib/gcc/sparc-linux-gnu/4.9/../../../../lib64"
976*67e74705SXin Li // CHECK-DEBIAN-SPARC32-LIB64: "-L[[SYSROOT]]/lib/../lib64"
977*67e74705SXin Li // CHECK-DEBIAN-SPARC32-LIB64: "-L[[SYSROOT]]/usr/lib/../lib64"
978*67e74705SXin Li // CHECK-DEBIAN-SPARC32-LIB64: "-L[[SYSROOT]]/usr/lib/gcc/sparc-linux-gnu/4.9"
979*67e74705SXin Li // CHECK-DEBIAN-SPARC32-LIB64: "-L[[SYSROOT]]/lib"
980*67e74705SXin Li // CHECK-DEBIAN-SPARC32-LIB64: "-L[[SYSROOT]]/usr/lib"
981*67e74705SXin Li // CHECK-DEBIAN-SPARC32-LIB64: "[[SYSROOT]]/usr/lib/gcc/sparc-linux-gnu/4.9/64{{/|\\\\}}crtend.o"
982*67e74705SXin Li // CHECK-DEBIAN-SPARC32-LIB64: "[[SYSROOT]]/usr/lib/gcc/sparc-linux-gnu/4.9/../../../../lib64{{/|\\\\}}crtn.o"
983*67e74705SXin Li //
984*67e74705SXin Li // Check linker paths on Debian 8 / Sparc64
985*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
986*67e74705SXin Li // RUN:     --target=sparc64-linux-gnu \
987*67e74705SXin Li // RUN:     --gcc-toolchain="" \
988*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/debian_8_sparc64_tree \
989*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-SPARC64 %s
990*67e74705SXin Li // CHECK-DEBIAN-SPARC64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
991*67e74705SXin Li // CHECK-DEBIAN-SPARC64: "[[SYSROOT]]/usr/lib/gcc/sparc64-linux-gnu/4.9/../../../sparc64-linux-gnu{{/|\\\\}}crt1.o"
992*67e74705SXin Li // CHECK-DEBIAN-SPARC64: "[[SYSROOT]]/usr/lib/gcc/sparc64-linux-gnu/4.9/../../../sparc64-linux-gnu{{/|\\\\}}crti.o"
993*67e74705SXin Li // CHECK-DEBIAN-SPARC64: "[[SYSROOT]]/usr/lib/gcc/sparc64-linux-gnu/4.9{{/|\\\\}}crtbegin.o"
994*67e74705SXin Li // CHECK-DEBIAN-SPARC64: "-L[[SYSROOT]]/usr/lib/gcc/sparc64-linux-gnu/4.9"
995*67e74705SXin Li // CHECK-DEBIAN-SPARC64: "-L[[SYSROOT]]/usr/lib/gcc/sparc64-linux-gnu/4.9/../../../sparc64-linux-gnu"
996*67e74705SXin Li // CHECK-DEBIAN-SPARC64: "-L[[SYSROOT]]/lib/sparc64-linux-gnu"
997*67e74705SXin Li // CHECK-DEBIAN-SPARC64: "-L[[SYSROOT]]/lib/../lib64"
998*67e74705SXin Li // CHECK-DEBIAN-SPARC64: "-L[[SYSROOT]]/usr/lib/sparc64-linux-gnu"
999*67e74705SXin Li // CHECK-DEBIAN-SPARC64: "-L[[SYSROOT]]/usr/lib/gcc/sparc64-linux-gnu/4.9/../../.."
1000*67e74705SXin Li // CHECK-DEBIAN-SPARC64: "-L[[SYSROOT]]/lib"
1001*67e74705SXin Li // CHECK-DEBIAN-SPARC64: "-L[[SYSROOT]]/usr/lib"
1002*67e74705SXin Li // CHECK-DEBIAN-SPARC64: "[[SYSROOT]]/usr/lib/gcc/sparc64-linux-gnu/4.9{{/|\\\\}}crtend.o"
1003*67e74705SXin Li // CHECK-DEBIAN-SPARC64: "[[SYSROOT]]/usr/lib/gcc/sparc64-linux-gnu/4.9/../../../sparc64-linux-gnu{{/|\\\\}}crtn.o"
1004*67e74705SXin Li //
1005*67e74705SXin Li // Test linker invocation on Android.
1006*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1007*67e74705SXin Li // RUN:     --target=arm-linux-androideabi \
1008*67e74705SXin Li // RUN:     --gcc-toolchain="" \
1009*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1010*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-ANDROID %s
1011*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1012*67e74705SXin Li // RUN:     --target=arm-linux-android \
1013*67e74705SXin Li // RUN:     --gcc-toolchain="" \
1014*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1015*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-ANDROID %s
1016*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1017*67e74705SXin Li // RUN:     --target=aarch64-linux-android \
1018*67e74705SXin Li // RUN:     --gcc-toolchain="" \
1019*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1020*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-ANDROID %s
1021*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1022*67e74705SXin Li // RUN:     --target=arm64-linux-android \
1023*67e74705SXin Li // RUN:     --gcc-toolchain="" \
1024*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1025*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-ANDROID %s
1026*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1027*67e74705SXin Li // RUN:     --target=mipsel-linux-android \
1028*67e74705SXin Li // RUN:     --gcc-toolchain="" \
1029*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1030*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-ANDROID %s
1031*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1032*67e74705SXin Li // RUN:     --target=mips64el-linux-android \
1033*67e74705SXin Li // RUN:     --gcc-toolchain="" \
1034*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1035*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-ANDROID %s
1036*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1037*67e74705SXin Li // RUN:     --target=i686-linux-android \
1038*67e74705SXin Li // RUN:     --gcc-toolchain="" \
1039*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1040*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-ANDROID %s
1041*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1042*67e74705SXin Li // RUN:     --target=x86_64-linux-android \
1043*67e74705SXin Li // RUN:     --gcc-toolchain="" \
1044*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1045*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-ANDROID %s
1046*67e74705SXin Li // CHECK-ANDROID: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
1047*67e74705SXin Li // CHECK-ANDROID: "{{.*}}{{/|\\\\}}crtbegin_dynamic.o"
1048*67e74705SXin Li // CHECK-ANDROID: "-L[[SYSROOT]]/usr/lib"
1049*67e74705SXin Li // CHECK-ANDROID-NOT: "gcc_s"
1050*67e74705SXin Li // CHECK-ANDROID: "-lgcc"
1051*67e74705SXin Li // CHECK-ANDROID: "-ldl"
1052*67e74705SXin Li // CHECK-ANDROID-NOT: "gcc_s"
1053*67e74705SXin Li // CHECK-ANDROID: "{{.*}}{{/|\\\\}}crtend_android.o"
1054*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1055*67e74705SXin Li // RUN:     --target=arm-linux-androideabi \
1056*67e74705SXin Li // RUN:     --gcc-toolchain="" \
1057*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1058*67e74705SXin Li // RUN:     -shared \
1059*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-SO %s
1060*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1061*67e74705SXin Li // RUN:     --target=arm-linux-android \
1062*67e74705SXin Li // RUN:     --gcc-toolchain="" \
1063*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1064*67e74705SXin Li // RUN:     -shared \
1065*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-SO %s
1066*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1067*67e74705SXin Li // RUN:     --target=aarch64-linux-android \
1068*67e74705SXin Li // RUN:     --gcc-toolchain="" \
1069*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1070*67e74705SXin Li // RUN:     -shared \
1071*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-SO %s
1072*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1073*67e74705SXin Li // RUN:     --target=arm64-linux-android \
1074*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1075*67e74705SXin Li // RUN:     -shared \
1076*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-SO %s
1077*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1078*67e74705SXin Li // RUN:     --target=mipsel-linux-android \
1079*67e74705SXin Li // RUN:     --gcc-toolchain="" \
1080*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1081*67e74705SXin Li // RUN:     -shared \
1082*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-SO %s
1083*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1084*67e74705SXin Li // RUN:     --target=mips64el-linux-android \
1085*67e74705SXin Li // RUN:     --gcc-toolchain="" \
1086*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1087*67e74705SXin Li // RUN:     -shared \
1088*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-SO %s
1089*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1090*67e74705SXin Li // RUN:     --target=i686-linux-android \
1091*67e74705SXin Li // RUN:     --gcc-toolchain="" \
1092*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1093*67e74705SXin Li // RUN:     -shared \
1094*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-SO %s
1095*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1096*67e74705SXin Li // RUN:     --target=x86_64-linux-android \
1097*67e74705SXin Li // RUN:     --gcc-toolchain="" \
1098*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1099*67e74705SXin Li // RUN:     -shared \
1100*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-SO %s
1101*67e74705SXin Li // CHECK-ANDROID-SO: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
1102*67e74705SXin Li // CHECK-ANDROID-SO-NOT: "-Bsymbolic"
1103*67e74705SXin Li // CHECK-ANDROID-SO: "{{.*}}{{/|\\\\}}crtbegin_so.o"
1104*67e74705SXin Li // CHECK-ANDROID-SO: "-L[[SYSROOT]]/usr/lib"
1105*67e74705SXin Li // CHECK-ANDROID-SO-NOT: "gcc_s"
1106*67e74705SXin Li // CHECK-ANDROID-SO: "-lgcc"
1107*67e74705SXin Li // CHECK-ANDROID-SO: "-ldl"
1108*67e74705SXin Li // CHECK-ANDROID-SO-NOT: "gcc_s"
1109*67e74705SXin Li // CHECK-ANDROID-SO: "{{.*}}{{/|\\\\}}crtend_so.o"
1110*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1111*67e74705SXin Li // RUN:     --target=arm-linux-androideabi \
1112*67e74705SXin Li // RUN:     --gcc-toolchain="" \
1113*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1114*67e74705SXin Li // RUN:     -static \
1115*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-STATIC %s
1116*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1117*67e74705SXin Li // RUN:     --target=arm-linux-android \
1118*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1119*67e74705SXin Li // RUN:     -static \
1120*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-STATIC %s
1121*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1122*67e74705SXin Li // RUN:     --target=aarch64-linux-android \
1123*67e74705SXin Li // RUN:     --gcc-toolchain="" \
1124*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1125*67e74705SXin Li // RUN:     -static \
1126*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-STATIC %s
1127*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1128*67e74705SXin Li // RUN:     --target=arm64-linux-android \
1129*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1130*67e74705SXin Li // RUN:     -static \
1131*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-STATIC %s
1132*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1133*67e74705SXin Li // RUN:     --target=mipsel-linux-android \
1134*67e74705SXin Li // RUN:     --gcc-toolchain="" \
1135*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1136*67e74705SXin Li // RUN:     -static \
1137*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-STATIC %s
1138*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1139*67e74705SXin Li // RUN:     --target=mips64el-linux-android \
1140*67e74705SXin Li // RUN:     --gcc-toolchain="" \
1141*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1142*67e74705SXin Li // RUN:     -static \
1143*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-STATIC %s
1144*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1145*67e74705SXin Li // RUN:     --target=i686-linux-android \
1146*67e74705SXin Li // RUN:     --gcc-toolchain="" \
1147*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1148*67e74705SXin Li // RUN:     -static \
1149*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-STATIC %s
1150*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1151*67e74705SXin Li // RUN:     --target=x86_64-linux-android \
1152*67e74705SXin Li // RUN:     --gcc-toolchain="" \
1153*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1154*67e74705SXin Li // RUN:     -static \
1155*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-STATIC %s
1156*67e74705SXin Li // CHECK-ANDROID-STATIC: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
1157*67e74705SXin Li // CHECK-ANDROID-STATIC: "{{.*}}{{/|\\\\}}crtbegin_static.o"
1158*67e74705SXin Li // CHECK-ANDROID-STATIC: "-L[[SYSROOT]]/usr/lib"
1159*67e74705SXin Li // CHECK-ANDROID-STATIC-NOT: "gcc_s"
1160*67e74705SXin Li // CHECK-ANDROID-STATIC: "-lgcc"
1161*67e74705SXin Li // CHECK-ANDROID-STATIC-NOT: "-ldl"
1162*67e74705SXin Li // CHECK-ANDROID-STATIC-NOT: "gcc_s"
1163*67e74705SXin Li // CHECK-ANDROID-STATIC: "{{.*}}{{/|\\\\}}crtend_android.o"
1164*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1165*67e74705SXin Li // RUN:     --target=arm-linux-androideabi \
1166*67e74705SXin Li // RUN:     --gcc-toolchain="" \
1167*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot  \
1168*67e74705SXin Li // RUN:     -pie \
1169*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PIE %s
1170*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1171*67e74705SXin Li // RUN:     --target=arm-linux-android \
1172*67e74705SXin Li // RUN:     --gcc-toolchain="" \
1173*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1174*67e74705SXin Li // RUN:     -pie \
1175*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PIE %s
1176*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1177*67e74705SXin Li // RUN:     --target=aarch64-linux-android \
1178*67e74705SXin Li // RUN:     --gcc-toolchain="" \
1179*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot  \
1180*67e74705SXin Li // RUN:     -pie \
1181*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PIE %s
1182*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1183*67e74705SXin Li // RUN:     --target=arm64-linux-android \
1184*67e74705SXin Li // RUN:     --gcc-toolchain="" \
1185*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot  \
1186*67e74705SXin Li // RUN:     -pie \
1187*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PIE %s
1188*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1189*67e74705SXin Li // RUN:     --target=mipsel-linux-android \
1190*67e74705SXin Li // RUN:     --gcc-toolchain="" \
1191*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1192*67e74705SXin Li // RUN:     -pie \
1193*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PIE %s
1194*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1195*67e74705SXin Li // RUN:     --target=mips64el-linux-android \
1196*67e74705SXin Li // RUN:     --gcc-toolchain="" \
1197*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1198*67e74705SXin Li // RUN:     -pie \
1199*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PIE %s
1200*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1201*67e74705SXin Li // RUN:     --target=i686-linux-android \
1202*67e74705SXin Li // RUN:     --gcc-toolchain="" \
1203*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1204*67e74705SXin Li // RUN:     -pie \
1205*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PIE %s
1206*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1207*67e74705SXin Li // RUN:     --target=x86_64-linux-android \
1208*67e74705SXin Li // RUN:     --gcc-toolchain="" \
1209*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1210*67e74705SXin Li // RUN:     -pie \
1211*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PIE %s
1212*67e74705SXin Li // CHECK-ANDROID-PIE: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
1213*67e74705SXin Li // CHECK-ANDROID-PIE: "{{.*}}{{/|\\\\}}crtbegin_dynamic.o"
1214*67e74705SXin Li // CHECK-ANDROID-PIE: "-L[[SYSROOT]]/usr/lib"
1215*67e74705SXin Li // CHECK-ANDROID-PIE-NOT: "gcc_s"
1216*67e74705SXin Li // CHECK-ANDROID-PIE: "-lgcc"
1217*67e74705SXin Li // CHECK-ANDROID-PIE-NOT: "gcc_s"
1218*67e74705SXin Li // CHECK-ANDROID-PIE: "{{.*}}{{/|\\\\}}crtend_android.o"
1219*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1220*67e74705SXin Li // RUN:     --target=arm-linux-androideabi \
1221*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-NO-DEFAULT-PIE %s
1222*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1223*67e74705SXin Li // RUN:     --target=arm-linux-android \
1224*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-NO-DEFAULT-PIE %s
1225*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1226*67e74705SXin Li // RUN:     --target=aarch64-linux-android \
1227*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-NO-DEFAULT-PIE %s
1228*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1229*67e74705SXin Li // RUN:     --target=arm64-linux-android \
1230*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-NO-DEFAULT-PIE %s
1231*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1232*67e74705SXin Li // RUN:     --target=mipsel-linux-android \
1233*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-NO-DEFAULT-PIE %s
1234*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1235*67e74705SXin Li // RUN:     --target=mips64el-linux-android \
1236*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-NO-DEFAULT-PIE %s
1237*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1238*67e74705SXin Li // RUN:     --target=i686-linux-android \
1239*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-NO-DEFAULT-PIE %s
1240*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1241*67e74705SXin Li // RUN:     --target=x86_64-linux-android \
1242*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-NO-DEFAULT-PIE %s
1243*67e74705SXin Li // CHECK-ANDROID-NO-DEFAULT-PIE-NOT: -pie
1244*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1245*67e74705SXin Li // RUN:     --target=arm-linux-androideabi \
1246*67e74705SXin Li // RUN:     --gcc-toolchain="" \
1247*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1248*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-32 %s
1249*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1250*67e74705SXin Li // RUN:     --target=arm-linux-android \
1251*67e74705SXin Li // RUN:     --gcc-toolchain="" \
1252*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1253*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-32 %s
1254*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1255*67e74705SXin Li // RUN:     --target=mipsel-linux-android \
1256*67e74705SXin Li // RUN:     --gcc-toolchain="" \
1257*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1258*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-32 %s
1259*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1260*67e74705SXin Li // RUN:     --target=aarch64-linux-android \
1261*67e74705SXin Li // RUN:     --gcc-toolchain="" \
1262*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1263*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-64 %s
1264*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1265*67e74705SXin Li // RUN:     --target=arm64-linux-android \
1266*67e74705SXin Li // RUN:     --gcc-toolchain="" \
1267*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1268*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-64 %s
1269*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1270*67e74705SXin Li // RUN:     --target=mips64el-linux-android \
1271*67e74705SXin Li // RUN:     --gcc-toolchain="" \
1272*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1273*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-64 %s
1274*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1275*67e74705SXin Li // RUN:     --target=i686-linux-android \
1276*67e74705SXin Li // RUN:     --gcc-toolchain="" \
1277*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1278*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-32 %s
1279*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1280*67e74705SXin Li // RUN:     --target=x86_64-linux-android \
1281*67e74705SXin Li // RUN:     --gcc-toolchain="" \
1282*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1283*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-64 %s
1284*67e74705SXin Li // CHECK-ANDROID-32: "-dynamic-linker" "/system/bin/linker"
1285*67e74705SXin Li // CHECK-ANDROID-64: "-dynamic-linker" "/system/bin/linker64"
1286*67e74705SXin Li //
1287*67e74705SXin Li // Test that -pthread does not add -lpthread on Android.
1288*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1289*67e74705SXin Li // RUN:     --target=arm-linux-androideabi -pthread \
1290*67e74705SXin Li // RUN:     --gcc-toolchain="" \
1291*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1292*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PTHREAD %s
1293*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1294*67e74705SXin Li // RUN:     --target=arm-linux-android -pthread \
1295*67e74705SXin Li // RUN:     --gcc-toolchain="" \
1296*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1297*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PTHREAD %s
1298*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1299*67e74705SXin Li // RUN:     --target=aarch64-linux-android -pthread \
1300*67e74705SXin Li // RUN:     --gcc-toolchain="" \
1301*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1302*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PTHREAD %s
1303*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1304*67e74705SXin Li // RUN:     --target=arm64-linux-android -pthread \
1305*67e74705SXin Li // RUN:     --gcc-toolchain="" \
1306*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1307*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PTHREAD %s
1308*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1309*67e74705SXin Li // RUN:     --target=mipsel-linux-android -pthread \
1310*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1311*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PTHREAD %s
1312*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1313*67e74705SXin Li // RUN:     --target=mips64el-linux-android -pthread \
1314*67e74705SXin Li // RUN:     --gcc-toolchain="" \
1315*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1316*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PTHREAD %s
1317*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1318*67e74705SXin Li // RUN:     --target=i686-linux-android -pthread \
1319*67e74705SXin Li // RUN:     --gcc-toolchain="" \
1320*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1321*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PTHREAD %s
1322*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1323*67e74705SXin Li // RUN:     --target=x86_64-linux-android -pthread \
1324*67e74705SXin Li // RUN:     --gcc-toolchain="" \
1325*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1326*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PTHREAD %s
1327*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1328*67e74705SXin Li // RUN:     --target=arm-linux-androideabi -pthread \
1329*67e74705SXin Li // RUN:     --gcc-toolchain="" \
1330*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1331*67e74705SXin Li // RUN:     -shared \
1332*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PTHREAD %s
1333*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1334*67e74705SXin Li // RUN:     --target=arm-linux-android -pthread \
1335*67e74705SXin Li // RUN:     --gcc-toolchain="" \
1336*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1337*67e74705SXin Li // RUN:     -shared \
1338*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PTHREAD %s
1339*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1340*67e74705SXin Li // RUN:     --target=aarch64-linux-android -pthread \
1341*67e74705SXin Li // RUN:     --gcc-toolchain="" \
1342*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1343*67e74705SXin Li // RUN:     -shared \
1344*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PTHREAD %s
1345*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1346*67e74705SXin Li // RUN:     --target=arm64-linux-android -pthread \
1347*67e74705SXin Li // RUN:     --gcc-toolchain="" \
1348*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1349*67e74705SXin Li // RUN:     -shared \
1350*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PTHREAD %s
1351*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1352*67e74705SXin Li // RUN:     --target=mipsel-linux-android -pthread \
1353*67e74705SXin Li // RUN:     --gcc-toolchain="" \
1354*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1355*67e74705SXin Li // RUN:     -shared \
1356*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PTHREAD %s
1357*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1358*67e74705SXin Li // RUN:     --target=mips64el-linux-android -pthread \
1359*67e74705SXin Li // RUN:     --gcc-toolchain="" \
1360*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1361*67e74705SXin Li // RUN:     -shared \
1362*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PTHREAD %s
1363*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1364*67e74705SXin Li // RUN:     --target=i686-linux-android -pthread \
1365*67e74705SXin Li // RUN:     --gcc-toolchain="" \
1366*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1367*67e74705SXin Li // RUN:     -shared \
1368*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PTHREAD %s
1369*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1370*67e74705SXin Li // RUN:     --target=x86_64-linux-android -pthread \
1371*67e74705SXin Li // RUN:     --gcc-toolchain="" \
1372*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1373*67e74705SXin Li // RUN:     -shared \
1374*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PTHREAD %s
1375*67e74705SXin Li // CHECK-ANDROID-PTHREAD-NOT: -lpthread
1376*67e74705SXin Li //
1377*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %t.o -### -o %t 2>&1 \
1378*67e74705SXin Li // RUN:     --target=arm-linux-androideabi -pthread \
1379*67e74705SXin Li // RUN:     --gcc-toolchain="" \
1380*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/basic_android_tree/sysroot \
1381*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-ANDROID-PTHREAD-LINK %s
1382*67e74705SXin Li // CHECK-ANDROID-PTHREAD-LINK-NOT: argument unused during compilation: '-pthread'
1383*67e74705SXin Li //
1384*67e74705SXin Li // Check linker invocation on Debian 6 MIPS 32/64-bit.
1385*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1386*67e74705SXin Li // RUN:     --target=mipsel-linux-gnu \
1387*67e74705SXin Li // RUN:     --gcc-toolchain="" \
1388*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/debian_6_mips_tree \
1389*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-ML-MIPSEL %s
1390*67e74705SXin Li // CHECK-DEBIAN-ML-MIPSEL: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
1391*67e74705SXin Li // CHECK-DEBIAN-ML-MIPSEL: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.4/../../../../lib{{/|\\\\}}crt1.o"
1392*67e74705SXin Li // CHECK-DEBIAN-ML-MIPSEL: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.4/../../../../lib{{/|\\\\}}crti.o"
1393*67e74705SXin Li // CHECK-DEBIAN-ML-MIPSEL: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.4{{/|\\\\}}crtbegin.o"
1394*67e74705SXin Li // CHECK-DEBIAN-ML-MIPSEL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.4"
1395*67e74705SXin Li // CHECK-DEBIAN-ML-MIPSEL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.4/../../../../lib"
1396*67e74705SXin Li // CHECK-DEBIAN-ML-MIPSEL: "-L[[SYSROOT]]/lib/../lib"
1397*67e74705SXin Li // CHECK-DEBIAN-ML-MIPSEL: "-L[[SYSROOT]]/usr/lib/../lib"
1398*67e74705SXin Li // CHECK-DEBIAN-ML-MIPSEL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.4/../../.."
1399*67e74705SXin Li // CHECK-DEBIAN-ML-MIPSEL: "-L[[SYSROOT]]/lib"
1400*67e74705SXin Li // CHECK-DEBIAN-ML-MIPSEL: "-L[[SYSROOT]]/usr/lib"
1401*67e74705SXin Li //
1402*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1403*67e74705SXin Li // RUN:     --target=mips64el-linux-gnu \
1404*67e74705SXin Li // RUN:     --gcc-toolchain="" \
1405*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/debian_6_mips_tree \
1406*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-ML-MIPS64EL %s
1407*67e74705SXin Li // CHECK-DEBIAN-ML-MIPS64EL: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
1408*67e74705SXin Li // CHECK-DEBIAN-ML-MIPS64EL: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.4/../../../../lib64{{/|\\\\}}crt1.o"
1409*67e74705SXin Li // CHECK-DEBIAN-ML-MIPS64EL: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.4/../../../../lib64{{/|\\\\}}crti.o"
1410*67e74705SXin Li // CHECK-DEBIAN-ML-MIPS64EL: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.4/64{{/|\\\\}}crtbegin.o"
1411*67e74705SXin Li // CHECK-DEBIAN-ML-MIPS64EL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.4/64"
1412*67e74705SXin Li // CHECK-DEBIAN-ML-MIPS64EL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.4/../../../../lib64"
1413*67e74705SXin Li // CHECK-DEBIAN-ML-MIPS64EL: "-L[[SYSROOT]]/lib/../lib64"
1414*67e74705SXin Li // CHECK-DEBIAN-ML-MIPS64EL: "-L[[SYSROOT]]/usr/lib/../lib64"
1415*67e74705SXin Li // CHECK-DEBIAN-ML-MIPS64EL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.4/../../.."
1416*67e74705SXin Li // CHECK-DEBIAN-ML-MIPS64EL: "-L[[SYSROOT]]/lib"
1417*67e74705SXin Li // CHECK-DEBIAN-ML-MIPS64EL: "-L[[SYSROOT]]/usr/lib"
1418*67e74705SXin Li //
1419*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1420*67e74705SXin Li // RUN:     --target=mips64el-linux-gnu -mabi=n32 \
1421*67e74705SXin Li // RUN:     --gcc-toolchain="" \
1422*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/debian_6_mips_tree \
1423*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-ML-MIPS64EL-N32 %s
1424*67e74705SXin Li // CHECK-DEBIAN-ML-MIPS64EL-N32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
1425*67e74705SXin Li // CHECK-DEBIAN-ML-MIPS64EL-N32: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.4/../../../../lib32{{/|\\\\}}crt1.o"
1426*67e74705SXin Li // CHECK-DEBIAN-ML-MIPS64EL-N32: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.4/../../../../lib32{{/|\\\\}}crti.o"
1427*67e74705SXin Li // CHECK-DEBIAN-ML-MIPS64EL-N32: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.4/n32{{/|\\\\}}crtbegin.o"
1428*67e74705SXin Li // CHECK-DEBIAN-ML-MIPS64EL-N32: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.4/n32"
1429*67e74705SXin Li // CHECK-DEBIAN-ML-MIPS64EL-N32: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.4/../../../../lib32"
1430*67e74705SXin Li // CHECK-DEBIAN-ML-MIPS64EL-N32: "-L[[SYSROOT]]/lib/../lib32"
1431*67e74705SXin Li // CHECK-DEBIAN-ML-MIPS64EL-N32: "-L[[SYSROOT]]/usr/lib/../lib32"
1432*67e74705SXin Li // CHECK-DEBIAN-ML-MIPS64EL-N32: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.4/../../.."
1433*67e74705SXin Li // CHECK-DEBIAN-ML-MIPS64EL-N32: "-L[[SYSROOT]]/lib"
1434*67e74705SXin Li // CHECK-DEBIAN-ML-MIPS64EL-N32: "-L[[SYSROOT]]/usr/lib"
1435*67e74705SXin Li //
1436*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1437*67e74705SXin Li // RUN:     --target=mips64-linux-gnuabi64 -mabi=n64 \
1438*67e74705SXin Li // RUN:     --gcc-toolchain="" \
1439*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/debian_6_mips64_tree \
1440*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-ML-MIPS64-GNUABI %s
1441*67e74705SXin Li // CHECK-DEBIAN-ML-MIPS64-GNUABI: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
1442*67e74705SXin Li // CHECK-DEBIAN-ML-MIPS64-GNUABI: "{{.*}}/usr/lib/gcc/mips64-linux-gnuabi64/4.9/../../../mips64-linux-gnuabi64{{/|\\\\}}crt1.o"
1443*67e74705SXin Li // CHECK-DEBIAN-ML-MIPS64-GNUABI: "{{.*}}/usr/lib/gcc/mips64-linux-gnuabi64/4.9/../../../mips64-linux-gnuabi64{{/|\\\\}}crti.o"
1444*67e74705SXin Li // CHECK-DEBIAN-ML-MIPS64-GNUABI: "{{.*}}/usr/lib/gcc/mips64-linux-gnuabi64/4.9{{/|\\\\}}crtbegin.o"
1445*67e74705SXin Li // CHECK-DEBIAN-ML-MIPS64-GNUABI: "-L[[SYSROOT]]/usr/lib/gcc/mips64-linux-gnuabi64/4.9"
1446*67e74705SXin Li // CHECK-DEBIAN-ML-MIPS64-GNUABI: "-L[[SYSROOT]]/usr/lib/gcc/mips64-linux-gnuabi64/4.9/../../../mips64-linux-gnuabi64"
1447*67e74705SXin Li // CHECK-DEBIAN-ML-MIPS64-GNUABI: "-L[[SYSROOT]]/lib/mips64-linux-gnuabi64"
1448*67e74705SXin Li // CHECK-DEBIAN-ML-MIPS64-GNUABI: "-L[[SYSROOT]]/usr/lib/mips64-linux-gnuabi64"
1449*67e74705SXin Li // CHECK-DEBIAN-ML-MIPS64-GNUABI: "-L[[SYSROOT]]/usr/lib/gcc/mips64-linux-gnuabi64/4.9"
1450*67e74705SXin Li // CHECK-DEBIAN-ML-MIPS64-GNUABI: "-L[[SYSROOT]]/usr/lib/gcc/mips64-linux-gnuabi64/4.9/../../.."
1451*67e74705SXin Li // CHECK-DEBIAN-ML-MIPS64-GNUABI: "-L[[SYSROOT]]/lib"
1452*67e74705SXin Li // CHECK-DEBIAN-ML-MIPS64-GNUABI: "-L[[SYSROOT]]/usr/lib"
1453*67e74705SXin Li // CHECK-DEBIAN-ML-MIPS64-GNUABI: "{{.*}}/usr/lib/gcc/mips64-linux-gnuabi64/4.9{{/|\\\\}}crtend.o"
1454*67e74705SXin Li // CHECK-DEBIAN-ML-MIPS64-GNUABI: "{{.*}}/usr/lib/gcc/mips64-linux-gnuabi64/4.9/../../../mips64-linux-gnuabi64{{/|\\\\}}crtn.o"
1455*67e74705SXin Li //
1456*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1457*67e74705SXin Li // RUN:     --target=mips64el-linux-gnuabi64 -mabi=n64 \
1458*67e74705SXin Li // RUN:     --gcc-toolchain="" \
1459*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/debian_6_mips64_tree \
1460*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-DEBIAN-ML-MIPS64EL-GNUABI %s
1461*67e74705SXin Li // CHECK-DEBIAN-ML-MIPS64EL-GNUABI: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
1462*67e74705SXin Li // CHECK-DEBIAN-ML-MIPS64EL-GNUABI: "{{.*}}/usr/lib/gcc/mips64el-linux-gnuabi64/4.9/../../../mips64el-linux-gnuabi64{{/|\\\\}}crt1.o"
1463*67e74705SXin Li // CHECK-DEBIAN-ML-MIPS64EL-GNUABI: "{{.*}}/usr/lib/gcc/mips64el-linux-gnuabi64/4.9/../../../mips64el-linux-gnuabi64{{/|\\\\}}crti.o"
1464*67e74705SXin Li // CHECK-DEBIAN-ML-MIPS64EL-GNUABI: "{{.*}}/usr/lib/gcc/mips64el-linux-gnuabi64/4.9{{/|\\\\}}crtbegin.o"
1465*67e74705SXin Li // CHECK-DEBIAN-ML-MIPS64EL-GNUABI: "-L[[SYSROOT]]/usr/lib/gcc/mips64el-linux-gnuabi64/4.9"
1466*67e74705SXin Li // CHECK-DEBIAN-ML-MIPS64EL-GNUABI: "-L[[SYSROOT]]/usr/lib/gcc/mips64el-linux-gnuabi64/4.9/../../../mips64el-linux-gnuabi64"
1467*67e74705SXin Li // CHECK-DEBIAN-ML-MIPS64EL-GNUABI: "-L[[SYSROOT]]/lib/mips64el-linux-gnuabi64"
1468*67e74705SXin Li // CHECK-DEBIAN-ML-MIPS64EL-GNUABI: "-L[[SYSROOT]]/usr/lib/mips64el-linux-gnuabi64"
1469*67e74705SXin Li // CHECK-DEBIAN-ML-MIPS64EL-GNUABI: "-L[[SYSROOT]]/usr/lib/gcc/mips64el-linux-gnuabi64/4.9"
1470*67e74705SXin Li // CHECK-DEBIAN-ML-MIPS64EL-GNUABI: "-L[[SYSROOT]]/usr/lib/gcc/mips64el-linux-gnuabi64/4.9/../../.."
1471*67e74705SXin Li // CHECK-DEBIAN-ML-MIPS64EL-GNUABI: "-L[[SYSROOT]]/lib"
1472*67e74705SXin Li // CHECK-DEBIAN-ML-MIPS64EL-GNUABI: "-L[[SYSROOT]]/usr/lib"
1473*67e74705SXin Li // CHECK-DEBIAN-ML-MIPS64EL-GNUABI: "{{.*}}/usr/lib/gcc/mips64el-linux-gnuabi64/4.9{{/|\\\\}}crtend.o"
1474*67e74705SXin Li // CHECK-DEBIAN-ML-MIPS64EL-GNUABI: "{{.*}}/usr/lib/gcc/mips64el-linux-gnuabi64/4.9/../../../mips64el-linux-gnuabi64{{/|\\\\}}crtn.o"
1475*67e74705SXin Li //
1476*67e74705SXin Li // Test linker invocation for Freescale SDK (OpenEmbedded).
1477*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1478*67e74705SXin Li // RUN:     --target=powerpc-fsl-linux \
1479*67e74705SXin Li // RUN:     --gcc-toolchain="" \
1480*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/freescale_ppc_tree \
1481*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-FSL-PPC %s
1482*67e74705SXin Li // CHECK-FSL-PPC: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
1483*67e74705SXin Li // CHECK-FSL-PPC: "-m" "elf32ppclinux"
1484*67e74705SXin Li // CHECK-FSL-PPC: "{{.*}}{{/|\\\\}}crt1.o"
1485*67e74705SXin Li // CHECK-FSL-PPC: "{{.*}}{{/|\\\\}}crtbegin.o"
1486*67e74705SXin Li // CHECK-FSL-PPC: "-L[[SYSROOT]]/usr/lib"
1487*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1488*67e74705SXin Li // RUN:     --target=powerpc64-fsl-linux \
1489*67e74705SXin Li // RUN:     --gcc-toolchain="" \
1490*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/freescale_ppc64_tree \
1491*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-FSL-PPC64 %s
1492*67e74705SXin Li // CHECK-FSL-PPC64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
1493*67e74705SXin Li // CHECK-FSL-PPC64: "-m" "elf64ppc"
1494*67e74705SXin Li // CHECK-FSL-PPC64: "{{.*}}{{/|\\\\}}crt1.o"
1495*67e74705SXin Li // CHECK-FSL-PPC64: "{{.*}}{{/|\\\\}}crtbegin.o"
1496*67e74705SXin Li // CHECK-FSL-PPC64: "-L[[SYSROOT]]/usr/lib64/powerpc64-fsl-linux/4.6.2/../.."
1497*67e74705SXin Li //
1498*67e74705SXin Li // Check that crtfastmath.o is linked with -ffast-math and with -Ofast.
1499*67e74705SXin Li // RUN: %clang --target=x86_64-unknown-linux -### %s \
1500*67e74705SXin Li // RUN:        --gcc-toolchain="" \
1501*67e74705SXin Li // RUN:        --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
1502*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-NOCRTFASTMATH %s
1503*67e74705SXin Li // RUN: %clang --target=x86_64-unknown-linux -### %s -ffast-math \
1504*67e74705SXin Li // RUN:        --gcc-toolchain="" \
1505*67e74705SXin Li // RUN:        --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
1506*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-CRTFASTMATH %s
1507*67e74705SXin Li // RUN: %clang --target=x86_64-unknown-linux -### %s -funsafe-math-optimizations\
1508*67e74705SXin Li // RUN:        --gcc-toolchain="" \
1509*67e74705SXin Li // RUN:        --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
1510*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-CRTFASTMATH %s
1511*67e74705SXin Li // RUN: %clang --target=x86_64-unknown-linux -### %s -Ofast\
1512*67e74705SXin Li // RUN:        --gcc-toolchain="" \
1513*67e74705SXin Li // RUN:        --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
1514*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-CRTFASTMATH %s
1515*67e74705SXin Li // RUN: %clang --target=x86_64-unknown-linux -### %s -Ofast -O3\
1516*67e74705SXin Li // RUN:        --gcc-toolchain="" \
1517*67e74705SXin Li // RUN:        --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
1518*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-NOCRTFASTMATH %s
1519*67e74705SXin Li // RUN: %clang --target=x86_64-unknown-linux -### %s -O3 -Ofast\
1520*67e74705SXin Li // RUN:        --gcc-toolchain="" \
1521*67e74705SXin Li // RUN:        --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
1522*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-CRTFASTMATH %s
1523*67e74705SXin Li // RUN: %clang --target=x86_64-unknown-linux -### %s -ffast-math -fno-fast-math \
1524*67e74705SXin Li // RUN:        --gcc-toolchain="" \
1525*67e74705SXin Li // RUN:        --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
1526*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-NOCRTFASTMATH %s
1527*67e74705SXin Li // RUN: %clang --target=x86_64-unknown-linux -### %s -Ofast -fno-fast-math \
1528*67e74705SXin Li // RUN:        --gcc-toolchain="" \
1529*67e74705SXin Li // RUN:        --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
1530*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-CRTFASTMATH %s
1531*67e74705SXin Li // RUN: %clang --target=x86_64-unknown-linux -### %s -Ofast -fno-unsafe-math-optimizations \
1532*67e74705SXin Li // RUN:        --gcc-toolchain="" \
1533*67e74705SXin Li // RUN:        --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
1534*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-CRTFASTMATH %s
1535*67e74705SXin Li // RUN: %clang --target=x86_64-unknown-linux -### %s -fno-fast-math -Ofast  \
1536*67e74705SXin Li // RUN:        --gcc-toolchain="" \
1537*67e74705SXin Li // RUN:        --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
1538*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-CRTFASTMATH %s
1539*67e74705SXin Li // RUN: %clang --target=x86_64-unknown-linux -### %s -fno-unsafe-math-optimizations -Ofast \
1540*67e74705SXin Li // RUN:        --gcc-toolchain="" \
1541*67e74705SXin Li // RUN:        --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
1542*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-CRTFASTMATH %s
1543*67e74705SXin Li // We don't have crtfastmath.o in the i386 tree, use it to check that file
1544*67e74705SXin Li // detection works.
1545*67e74705SXin Li // RUN: %clang --target=i386-unknown-linux -### %s -ffast-math \
1546*67e74705SXin Li // RUN:        --gcc-toolchain="" \
1547*67e74705SXin Li // RUN:        --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
1548*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-NOCRTFASTMATH %s
1549*67e74705SXin Li // CHECK-CRTFASTMATH: usr/lib/gcc/x86_64-unknown-linux/4.6.0{{/|\\\\}}crtfastmath.o
1550*67e74705SXin Li // CHECK-NOCRTFASTMATH-NOT: crtfastmath.o
1551*67e74705SXin Li 
1552*67e74705SXin Li // Check that we link in gcrt1.o when compiling with -pg
1553*67e74705SXin Li // RUN: %clang -pg --target=x86_64-unknown-linux -### %s \
1554*67e74705SXin Li // RUN:        --gcc-toolchain="" \
1555*67e74705SXin Li // RUN:        --sysroot=%S/Inputs/basic_linux_tree 2>& 1 \
1556*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-PG %s
1557*67e74705SXin Li // CHECK-PG: gcrt1.o
1558*67e74705SXin Li 
1559*67e74705SXin Li // GCC forwards -u to the linker.
1560*67e74705SXin Li // RUN: %clang -u asdf --target=x86_64-unknown-linux -### %s \
1561*67e74705SXin Li // RUN:        --gcc-toolchain="" \
1562*67e74705SXin Li // RUN:        --sysroot=%S/Inputs/basic_linux_tree 2>& 1 \
1563*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-u %s
1564*67e74705SXin Li // CHECK-u: "-u" "asdf"
1565*67e74705SXin Li 
1566*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1567*67e74705SXin Li // RUN:     --target=armeb-unknown-linux \
1568*67e74705SXin Li // RUN:     --gcc-toolchain="" \
1569*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
1570*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-ARMEB %s
1571*67e74705SXin Li // CHECK-ARMEB: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
1572*67e74705SXin Li // CHECK-ARMEB-NOT: "--be8"
1573*67e74705SXin Li // CHECK-ARMEB: "-m" "armelfb_linux_eabi"
1574*67e74705SXin Li 
1575*67e74705SXin Li // RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1576*67e74705SXin Li // RUN:     --target=armebv7-unknown-linux \
1577*67e74705SXin Li // RUN:     --gcc-toolchain="" \
1578*67e74705SXin Li // RUN:     --sysroot=%S/Inputs/basic_linux_tree \
1579*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-ARMV7EB %s
1580*67e74705SXin Li // CHECK-ARMV7EB: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
1581*67e74705SXin Li // CHECK-ARMV7EB: "--be8"
1582*67e74705SXin Li // CHECK-ARMV7EB: "-m" "armelfb_linux_eabi"
1583*67e74705SXin Li 
1584*67e74705SXin Li // Check dynamic-linker for musl-libc
1585*67e74705SXin Li // RUN: %clang %s -### -o %t.o 2>&1 \
1586*67e74705SXin Li // RUN:     --target=i386-pc-linux-musl \
1587*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-MUSL-X86 %s
1588*67e74705SXin Li // RUN: %clang %s -### -o %t.o 2>&1 \
1589*67e74705SXin Li // RUN:     --target=x86_64-pc-linux-musl \
1590*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-MUSL-X86_64 %s
1591*67e74705SXin Li // RUN: %clang %s -### -o %t.o 2>&1 \
1592*67e74705SXin Li // RUN:     --target=mips-pc-linux-musl \
1593*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-MUSL-MIPS %s
1594*67e74705SXin Li // RUN: %clang %s -### -o %t.o 2>&1 \
1595*67e74705SXin Li // RUN:     --target=mipsel-pc-linux-musl \
1596*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-MUSL-MIPSEL %s
1597*67e74705SXin Li // RUN: %clang %s -### -o %t.o 2>&1 \
1598*67e74705SXin Li // RUN:     --target=mips64-pc-linux-musl \
1599*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-MUSL-MIPS64 %s
1600*67e74705SXin Li // RUN: %clang %s -### -o %t.o 2>&1 \
1601*67e74705SXin Li // RUN:     --target=mips64el-pc-linux-musl \
1602*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-MUSL-MIPS64EL %s
1603*67e74705SXin Li // RUN: %clang %s -### -o %t.o 2>&1 \
1604*67e74705SXin Li // RUN:     --target=powerpc-pc-linux-musl \
1605*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-MUSL-PPC %s
1606*67e74705SXin Li // RUN: %clang %s -### -o %t.o 2>&1 \
1607*67e74705SXin Li // RUN:     --target=powerpc64-pc-linux-musl \
1608*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-MUSL-PPC64 %s
1609*67e74705SXin Li // RUN: %clang %s -### -o %t.o 2>&1 \
1610*67e74705SXin Li // RUN:     --target=thumb-pc-linux-musleabi \
1611*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-MUSL-ARM %s
1612*67e74705SXin Li // RUN: %clang %s -### -o %t.o 2>&1 \
1613*67e74705SXin Li // RUN:     --target=thumb-pc-linux-musleabihf \
1614*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-MUSL-ARMHF %s
1615*67e74705SXin Li // RUN: %clang %s -### -o %t.o 2>&1 \
1616*67e74705SXin Li // RUN:     --target=thumbeb-pc-linux-musleabi \
1617*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-MUSL-ARMEB %s
1618*67e74705SXin Li // RUN: %clang %s -### -o %t.o 2>&1 \
1619*67e74705SXin Li // RUN:     --target=thumbeb-pc-linux-musleabihf \
1620*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-MUSL-ARMEBHF %s
1621*67e74705SXin Li // RUN: %clang %s -### -o %t.o 2>&1 \
1622*67e74705SXin Li // RUN:     --target=arm-pc-linux-musleabi \
1623*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-MUSL-ARM %s
1624*67e74705SXin Li // RUN: %clang %s -### -o %t.o 2>&1 \
1625*67e74705SXin Li // RUN:     --target=arm-pc-linux-musleabihf \
1626*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-MUSL-ARMHF %s
1627*67e74705SXin Li // RUN: %clang %s -### -o %t.o 2>&1 \
1628*67e74705SXin Li // RUN:     --target=armeb-pc-linux-musleabi \
1629*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-MUSL-ARMEB %s
1630*67e74705SXin Li // RUN: %clang %s -### -o %t.o 2>&1 \
1631*67e74705SXin Li // RUN:     --target=armeb-pc-linux-musleabihf \
1632*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-MUSL-ARMEBHF %s
1633*67e74705SXin Li // RUN: %clang %s -### -o %t.o 2>&1 \
1634*67e74705SXin Li // RUN:     --target=aarch64-pc-linux-musleabi \
1635*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-MUSL-AARCH64 %s
1636*67e74705SXin Li // RUN: %clang %s -### -o %t.o 2>&1 \
1637*67e74705SXin Li // RUN:     --target=aarch64_be-pc-linux-musleabi \
1638*67e74705SXin Li // RUN:   | FileCheck --check-prefix=CHECK-MUSL-AARCH64_BE %s
1639*67e74705SXin Li // CHECK-MUSL-X86:        "-dynamic-linker" "/lib/ld-musl-i386.so.1"
1640*67e74705SXin Li // CHECK-MUSL-X86_64:     "-dynamic-linker" "/lib/ld-musl-x86_64.so.1"
1641*67e74705SXin Li // CHECK-MUSL-MIPS:       "-dynamic-linker" "/lib/ld-musl-mips.so.1"
1642*67e74705SXin Li // CHECK-MUSL-MIPSEL:     "-dynamic-linker" "/lib/ld-musl-mipsel.so.1"
1643*67e74705SXin Li // CHECK-MUSL-MIPS64:     "-dynamic-linker" "/lib/ld-musl-mips64.so.1"
1644*67e74705SXin Li // CHECK-MUSL-MIPS64EL:   "-dynamic-linker" "/lib/ld-musl-mips64el.so.1"
1645*67e74705SXin Li // CHECK-MUSL-PPC:        "-dynamic-linker" "/lib/ld-musl-powerpc.so.1"
1646*67e74705SXin Li // CHECK-MUSL-PPC64:      "-dynamic-linker" "/lib/ld-musl-powerpc64.so.1"
1647*67e74705SXin Li // CHECK-MUSL-ARM:        "-dynamic-linker" "/lib/ld-musl-arm.so.1"
1648*67e74705SXin Li // CHECK-MUSL-ARMHF:      "-dynamic-linker" "/lib/ld-musl-armhf.so.1"
1649*67e74705SXin Li // CHECK-MUSL-ARMEB:      "-dynamic-linker" "/lib/ld-musl-armeb.so.1"
1650*67e74705SXin Li // CHECK-MUSL-ARMEBHF:    "-dynamic-linker" "/lib/ld-musl-armebhf.so.1"
1651*67e74705SXin Li // CHECK-MUSL-AARCH64:    "-dynamic-linker" "/lib/ld-musl-aarch64.so.1"
1652*67e74705SXin Li // CHECK-MUSL-AARCH64_BE: "-dynamic-linker" "/lib/ld-musl-aarch64_be.so.1"
1653