blob: 46fec499e95edf2563833a9387e1cd146730e498 [file] [log] [blame]
Chandler Carruth2a649c72011-10-03 06:41:08 +00001// General tests that ld invocations on Linux targets sane. Note that we use
2// sysroot to make these tests independent of the host system.
Chandler Carruth94bcd382011-10-01 00:37:39 +00003//
Chandler Carruth2a649c72011-10-03 06:41:08 +00004// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +00005// RUN: --target=i386-unknown-linux \
Chandler Carruth2a649c72011-10-03 06:41:08 +00006// RUN: --sysroot=%S/Inputs/basic_linux_tree \
Chandler Carruth94bcd382011-10-01 00:37:39 +00007// RUN: | FileCheck --check-prefix=CHECK-LD-32 %s
Chandler Carruth58d6eb62013-03-04 02:07:55 +00008// CHECK-LD-32-NOT: warning:
Chandler Carruth2a649c72011-10-03 06:41:08 +00009// CHECK-LD-32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
Rafael Espindola49ddb862013-06-24 22:07:15 +000010// CHECK-LD-32: "{{.*}}/usr/lib/gcc/i386-unknown-linux/4.6.0{{/|\\\\}}crtbegin.o"
Chandler Carruth5fdc7cb2011-10-03 08:02:58 +000011// CHECK-LD-32: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0"
Chandler Carruth2c5e91e2011-10-03 08:09:02 +000012// CHECK-LD-32: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0/../../../../i386-unknown-linux/lib"
Chandler Carruth5fdc7cb2011-10-03 08:02:58 +000013// CHECK-LD-32: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0/../../.."
14// CHECK-LD-32: "-L[[SYSROOT]]/lib"
15// CHECK-LD-32: "-L[[SYSROOT]]/usr/lib"
Chandler Carruth94bcd382011-10-01 00:37:39 +000016//
Chandler Carruth2a649c72011-10-03 06:41:08 +000017// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +000018// RUN: --target=x86_64-unknown-linux \
Chandler Carruth2a649c72011-10-03 06:41:08 +000019// RUN: --sysroot=%S/Inputs/basic_linux_tree \
Chandler Carruth94bcd382011-10-01 00:37:39 +000020// RUN: | FileCheck --check-prefix=CHECK-LD-64 %s
Chandler Carruth58d6eb62013-03-04 02:07:55 +000021// CHECK-LD-64-NOT: warning:
Chandler Carruth2a649c72011-10-03 06:41:08 +000022// CHECK-LD-64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
Chandler Carruth4588e342013-03-04 01:27:49 +000023// CHECK-LD-64: "--eh-frame-hdr"
24// CHECK-LD-64: "-m" "elf_x86_64"
25// CHECK-LD-64: "-dynamic-linker"
Rafael Espindola49ddb862013-06-24 22:07:15 +000026// CHECK-LD-64: "{{.*}}/usr/lib/gcc/x86_64-unknown-linux/4.6.0{{/|\\\\}}crtbegin.o"
Chandler Carruth5fdc7cb2011-10-03 08:02:58 +000027// CHECK-LD-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0"
Chandler Carruth2c5e91e2011-10-03 08:09:02 +000028// CHECK-LD-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib"
Chandler Carruth5fdc7cb2011-10-03 08:02:58 +000029// CHECK-LD-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../.."
30// CHECK-LD-64: "-L[[SYSROOT]]/lib"
31// CHECK-LD-64: "-L[[SYSROOT]]/usr/lib"
Chandler Carruth4588e342013-03-04 01:27:49 +000032// CHECK-LD-64: "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed"
33// CHECK-LD-64: "-lc"
34// CHECK-LD-64: "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed"
35//
36// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +000037// RUN: --target=x86_64-unknown-linux \
Renato Golinc4b49242014-02-13 10:01:16 +000038// RUN: --sysroot=%S/Inputs/basic_linux_tree \
39// RUN: --rtlib=compiler-rt \
40// RUN: | FileCheck --check-prefix=CHECK-LD-RT %s
41// CHECK-LD-RT-NOT: warning:
42// CHECK-LD-RT: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
43// CHECK-LD-RT: "--eh-frame-hdr"
44// CHECK-LD-RT: "-m" "elf_x86_64"
45// CHECK-LD-RT: "-dynamic-linker"
46// CHECK-LD-RT: "{{.*}}/usr/lib/gcc/x86_64-unknown-linux/4.6.0{{/|\\\\}}crtbegin.o"
47// CHECK-LD-RT: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0"
48// CHECK-LD-RT: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib"
49// CHECK-LD-RT: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../.."
50// CHECK-LD-RT: "-L[[SYSROOT]]/lib"
51// CHECK-LD-RT: "-L[[SYSROOT]]/usr/lib"
52// CHECK-LD-RT: libclang_rt.x86_64.a" "-lgcc_s"
53// CHECK-LD-RT: "-lc"
54// CHECK-LD-RT: libclang_rt.x86_64.a" "-lgcc_s"
55//
56// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
57// RUN: --target=x86_64-unknown-linux \
58// RUN: --sysroot=%S/Inputs/basic_linux_tree \
59// RUN: --rtlib=libgcc \
60// RUN: | FileCheck --check-prefix=CHECK-LD-GCC %s
61// CHECK-LD-GCC-NOT: warning:
62// CHECK-LD-GCC: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
63// CHECK-LD-GCC: "--eh-frame-hdr"
64// CHECK-LD-GCC: "-m" "elf_x86_64"
65// CHECK-LD-GCC: "-dynamic-linker"
66// CHECK-LD-GCC: "{{.*}}/usr/lib/gcc/x86_64-unknown-linux/4.6.0{{/|\\\\}}crtbegin.o"
67// CHECK-LD-GCC: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0"
68// CHECK-LD-GCC: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib"
69// CHECK-LD-GCC: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../.."
70// CHECK-LD-GCC: "-L[[SYSROOT]]/lib"
71// CHECK-LD-GCC: "-L[[SYSROOT]]/usr/lib"
72// CHECK-LD-GCC "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed"
73// CHECK-LD-GCC: "-lc"
74// CHECK-LD-GCC: "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed"
75//
76// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
77// RUN: --target=x86_64-unknown-linux \
Chandler Carruth4588e342013-03-04 01:27:49 +000078// RUN: -static-libgcc \
79// RUN: --sysroot=%S/Inputs/basic_linux_tree \
80// RUN: | FileCheck --check-prefix=CHECK-LD-64-STATIC-LIBGCC %s
Chandler Carruth58d6eb62013-03-04 02:07:55 +000081// CHECK-LD-64-STATIC-LIBGCC-NOT: warning:
Chandler Carruth4588e342013-03-04 01:27:49 +000082// CHECK-LD-64-STATIC-LIBGCC: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
83// CHECK-LD-64-STATIC-LIBGCC: "--eh-frame-hdr"
84// CHECK-LD-64-STATIC-LIBGCC: "-m" "elf_x86_64"
85// CHECK-LD-64-STATIC-LIBGCC: "-dynamic-linker"
Rafael Espindola49ddb862013-06-24 22:07:15 +000086// CHECK-LD-64-STATIC-LIBGCC: "{{.*}}/usr/lib/gcc/x86_64-unknown-linux/4.6.0{{/|\\\\}}crtbegin.o"
Chandler Carruth4588e342013-03-04 01:27:49 +000087// CHECK-LD-64-STATIC-LIBGCC: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0"
88// CHECK-LD-64-STATIC-LIBGCC: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib"
89// CHECK-LD-64-STATIC-LIBGCC: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../.."
90// CHECK-LD-64-STATIC-LIBGCC: "-L[[SYSROOT]]/lib"
91// CHECK-LD-64-STATIC-LIBGCC: "-L[[SYSROOT]]/usr/lib"
92// CHECK-LD-64-STATIC-LIBGCC: "-lgcc" "-lgcc_eh"
93// CHECK-LD-64-STATIC-LIBGCC: "-lc"
94// CHECK-LD-64-STATIC-LIBGCC: "-lgcc" "-lgcc_eh"
95//
96// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +000097// RUN: --target=x86_64-unknown-linux \
Chandler Carruth4588e342013-03-04 01:27:49 +000098// RUN: -static \
99// RUN: --sysroot=%S/Inputs/basic_linux_tree \
100// RUN: | FileCheck --check-prefix=CHECK-LD-64-STATIC %s
Chandler Carruth58d6eb62013-03-04 02:07:55 +0000101// CHECK-LD-64-STATIC-NOT: warning:
Chandler Carruth4588e342013-03-04 01:27:49 +0000102// CHECK-LD-64-STATIC: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
103// CHECK-LD-64-STATIC-NOT: "--eh-frame-hdr"
104// CHECK-LD-64-STATIC: "-m" "elf_x86_64"
105// CHECK-LD-64-STATIC-NOT: "-dynamic-linker"
106// CHECK-LD-64-STATIC: "-static"
Rafael Espindola49ddb862013-06-24 22:07:15 +0000107// CHECK-LD-64-STATIC: "{{.*}}/usr/lib/gcc/x86_64-unknown-linux/4.6.0{{/|\\\\}}crtbeginT.o"
Chandler Carruth4588e342013-03-04 01:27:49 +0000108// CHECK-LD-64-STATIC: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0"
109// CHECK-LD-64-STATIC: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib"
110// CHECK-LD-64-STATIC: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../.."
111// CHECK-LD-64-STATIC: "-L[[SYSROOT]]/lib"
112// CHECK-LD-64-STATIC: "-L[[SYSROOT]]/usr/lib"
113// CHECK-LD-64-STATIC: "--start-group" "-lgcc" "-lgcc_eh" "-lc" "--end-group"
Chandler Carruth2356b2c2011-10-03 09:00:50 +0000114//
Chandler Carruth58d6eb62013-03-04 02:07:55 +0000115// Check that flags can be combined. The -static dominates.
116// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000117// RUN: --target=x86_64-unknown-linux \
Chandler Carruth58d6eb62013-03-04 02:07:55 +0000118// RUN: -static-libgcc -static \
119// RUN: --sysroot=%S/Inputs/basic_linux_tree \
120// RUN: | FileCheck --check-prefix=CHECK-LD-64-STATIC %s
121//
Chandler Carruth2356b2c2011-10-03 09:00:50 +0000122// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000123// RUN: --target=i386-unknown-linux -m32 \
Chandler Carruth2356b2c2011-10-03 09:00:50 +0000124// RUN: --sysroot=%S/Inputs/multilib_32bit_linux_tree \
125// RUN: | FileCheck --check-prefix=CHECK-32-TO-32 %s
126// CHECK-32-TO-32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
Rafael Espindola49ddb862013-06-24 22:07:15 +0000127// CHECK-32-TO-32: "{{.*}}/usr/lib/gcc/i386-unknown-linux/4.6.0{{/|\\\\}}crtbegin.o"
Chandler Carruth2356b2c2011-10-03 09:00:50 +0000128// CHECK-32-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0"
Rafael Espindolaa8398552013-10-28 23:14:34 +0000129// CHECK-32-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0/../../../../i386-unknown-linux/lib/../lib32"
130// CHECK-32-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0/../../../../lib32"
131// CHECK-32-TO-32: "-L[[SYSROOT]]/lib/../lib32"
132// CHECK-32-TO-32: "-L[[SYSROOT]]/usr/lib/../lib32"
Chandler Carruth2356b2c2011-10-03 09:00:50 +0000133// CHECK-32-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0/../../../../i386-unknown-linux/lib"
134// CHECK-32-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0/../../.."
135// CHECK-32-TO-32: "-L[[SYSROOT]]/lib"
136// CHECK-32-TO-32: "-L[[SYSROOT]]/usr/lib"
137//
138// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000139// RUN: --target=i386-unknown-linux -m64 \
Chandler Carruth2356b2c2011-10-03 09:00:50 +0000140// RUN: --sysroot=%S/Inputs/multilib_32bit_linux_tree \
141// RUN: | FileCheck --check-prefix=CHECK-32-TO-64 %s
142// CHECK-32-TO-64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
Rafael Espindola49ddb862013-06-24 22:07:15 +0000143// CHECK-32-TO-64: "{{.*}}/usr/lib/gcc/i386-unknown-linux/4.6.0/64{{/|\\\\}}crtbegin.o"
Chandler Carruth2356b2c2011-10-03 09:00:50 +0000144// CHECK-32-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0/64"
145// CHECK-32-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0/../../../../i386-unknown-linux/lib/../lib64"
146// CHECK-32-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0/../../../../lib64"
147// CHECK-32-TO-64: "-L[[SYSROOT]]/lib/../lib64"
148// CHECK-32-TO-64: "-L[[SYSROOT]]/usr/lib/../lib64"
149// CHECK-32-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0"
150// CHECK-32-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0/../../../../i386-unknown-linux/lib"
151// CHECK-32-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0/../../.."
152// CHECK-32-TO-64: "-L[[SYSROOT]]/lib"
153// CHECK-32-TO-64: "-L[[SYSROOT]]/usr/lib"
Chandler Carruthadf23a42011-10-03 09:08:26 +0000154//
155// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000156// RUN: --target=x86_64-unknown-linux -m64 \
Chandler Carruthadf23a42011-10-03 09:08:26 +0000157// RUN: --sysroot=%S/Inputs/multilib_64bit_linux_tree \
158// RUN: | FileCheck --check-prefix=CHECK-64-TO-64 %s
159// CHECK-64-TO-64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
Rafael Espindola49ddb862013-06-24 22:07:15 +0000160// CHECK-64-TO-64: "{{.*}}/usr/lib/gcc/x86_64-unknown-linux/4.6.0{{/|\\\\}}crtbegin.o"
Chandler Carruthadf23a42011-10-03 09:08:26 +0000161// CHECK-64-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0"
Rafael Espindolaa8398552013-10-28 23:14:34 +0000162// CHECK-64-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib/../lib64"
163// CHECK-64-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../lib64"
164// CHECK-64-TO-64: "-L[[SYSROOT]]/lib/../lib64"
165// CHECK-64-TO-64: "-L[[SYSROOT]]/usr/lib/../lib64"
Chandler Carruthadf23a42011-10-03 09:08:26 +0000166// CHECK-64-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib"
167// CHECK-64-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../.."
168// CHECK-64-TO-64: "-L[[SYSROOT]]/lib"
169// CHECK-64-TO-64: "-L[[SYSROOT]]/usr/lib"
170//
171// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000172// RUN: --target=x86_64-unknown-linux -m32 \
Chandler Carruthadf23a42011-10-03 09:08:26 +0000173// RUN: --sysroot=%S/Inputs/multilib_64bit_linux_tree \
174// RUN: | FileCheck --check-prefix=CHECK-64-TO-32 %s
175// CHECK-64-TO-32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
Rafael Espindola49ddb862013-06-24 22:07:15 +0000176// CHECK-64-TO-32: "{{.*}}/usr/lib/gcc/x86_64-unknown-linux/4.6.0/32{{/|\\\\}}crtbegin.o"
Chandler Carruthadf23a42011-10-03 09:08:26 +0000177// CHECK-64-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/32"
178// CHECK-64-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib/../lib32"
179// CHECK-64-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../lib32"
180// CHECK-64-TO-32: "-L[[SYSROOT]]/lib/../lib32"
181// CHECK-64-TO-32: "-L[[SYSROOT]]/usr/lib/../lib32"
182// CHECK-64-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0"
183// CHECK-64-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib"
184// CHECK-64-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../.."
185// CHECK-64-TO-32: "-L[[SYSROOT]]/lib"
186// CHECK-64-TO-32: "-L[[SYSROOT]]/usr/lib"
Chandler Carruthf7e0ecb2011-10-05 01:01:57 +0000187//
188// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000189// RUN: --target=x86_64-unknown-linux -m32 \
190// RUN: --gcc-toolchain=%S/Inputs/multilib_64bit_linux_tree/usr \
Chandler Carruth69a125b2012-04-06 16:32:06 +0000191// RUN: --sysroot=%S/Inputs/multilib_32bit_linux_tree \
192// RUN: | FileCheck --check-prefix=CHECK-64-TO-32-SYSROOT %s
193// CHECK-64-TO-32-SYSROOT: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
Rafael Espindola49ddb862013-06-24 22:07:15 +0000194// CHECK-64-TO-32-SYSROOT: "{{.*}}/usr/lib/gcc/x86_64-unknown-linux/4.6.0/32{{/|\\\\}}crtbegin.o"
Chandler Carruth69a125b2012-04-06 16:32:06 +0000195// CHECK-64-TO-32-SYSROOT: "-L{{[^"]*}}/Inputs/multilib_64bit_linux_tree/usr/lib/gcc/x86_64-unknown-linux/4.6.0/32"
196// CHECK-64-TO-32-SYSROOT: "-L[[SYSROOT]]/lib/../lib32"
197// CHECK-64-TO-32-SYSROOT: "-L[[SYSROOT]]/usr/lib/../lib32"
198// CHECK-64-TO-32-SYSROOT: "-L{{[^"]*}}/Inputs/multilib_64bit_linux_tree/usr/lib/gcc/x86_64-unknown-linux/4.6.0"
199// CHECK-64-TO-32-SYSROOT: "-L[[SYSROOT]]/lib"
200// CHECK-64-TO-32-SYSROOT: "-L[[SYSROOT]]/usr/lib"
201//
202// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000203// RUN: --target=i386-unknown-linux -m32 \
Chandler Carruthe276b362011-10-05 06:38:03 +0000204// RUN: -ccc-install-dir %S/Inputs/fake_install_tree/bin \
Chandler Carruthf7e0ecb2011-10-05 01:01:57 +0000205// RUN: --sysroot=%S/Inputs/basic_linux_tree \
206// RUN: | FileCheck --check-prefix=CHECK-INSTALL-DIR-32 %s
207// CHECK-INSTALL-DIR-32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
Rafael Espindola49ddb862013-06-24 22:07:15 +0000208// CHECK-INSTALL-DIR-32: "{{.*}}/Inputs/fake_install_tree/bin/../lib/gcc/i386-unknown-linux/4.7.0{{/|\\\\}}crtbegin.o"
Chandler Carruthe276b362011-10-05 06:38:03 +0000209// CHECK-INSTALL-DIR-32: "-L{{.*}}/Inputs/fake_install_tree/bin/../lib/gcc/i386-unknown-linux/4.7.0"
Chandler Carruthf7e0ecb2011-10-05 01:01:57 +0000210//
211// Check that with 64-bit builds, we don't actually use the install directory
212// as its version of GCC is lower than our sysrooted version.
213// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000214// RUN: --target=x86_64-unknown-linux -m64 \
Chandler Carruthe276b362011-10-05 06:38:03 +0000215// RUN: -ccc-install-dir %S/Inputs/fake_install_tree/bin \
Chandler Carruthf7e0ecb2011-10-05 01:01:57 +0000216// RUN: --sysroot=%S/Inputs/basic_linux_tree \
217// RUN: | FileCheck --check-prefix=CHECK-INSTALL-DIR-64 %s
218// CHECK-INSTALL-DIR-64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
Rafael Espindola49ddb862013-06-24 22:07:15 +0000219// CHECK-INSTALL-DIR-64: "{{.*}}/usr/lib/gcc/x86_64-unknown-linux/4.6.0{{/|\\\\}}crtbegin.o"
Chandler Carruthf7e0ecb2011-10-05 01:01:57 +0000220// CHECK-INSTALL-DIR-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0"
Chandler Carruthcf59bc52011-10-05 03:09:51 +0000221//
222// Check that we support unusual patch version formats, including missing that
223// component.
224// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000225// RUN: --target=i386-unknown-linux -m32 \
Chandler Carruthe276b362011-10-05 06:38:03 +0000226// RUN: -ccc-install-dir %S/Inputs/gcc_version_parsing1/bin \
Chandler Carruthcf59bc52011-10-05 03:09:51 +0000227// RUN: --sysroot=%S/Inputs/basic_linux_tree \
228// RUN: | FileCheck --check-prefix=CHECK-GCC-VERSION1 %s
229// CHECK-GCC-VERSION1: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
Rafael Espindola49ddb862013-06-24 22:07:15 +0000230// CHECK-GCC-VERSION1: "{{.*}}/Inputs/gcc_version_parsing1/bin/../lib/gcc/i386-unknown-linux/4.7{{/|\\\\}}crtbegin.o"
Chandler Carruthe276b362011-10-05 06:38:03 +0000231// CHECK-GCC-VERSION1: "-L{{.*}}/Inputs/gcc_version_parsing1/bin/../lib/gcc/i386-unknown-linux/4.7"
Chandler Carruthcf59bc52011-10-05 03:09:51 +0000232// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000233// RUN: --target=i386-unknown-linux -m32 \
Chandler Carruthe276b362011-10-05 06:38:03 +0000234// RUN: -ccc-install-dir %S/Inputs/gcc_version_parsing2/bin \
Chandler Carruthcf59bc52011-10-05 03:09:51 +0000235// RUN: --sysroot=%S/Inputs/basic_linux_tree \
236// RUN: | FileCheck --check-prefix=CHECK-GCC-VERSION2 %s
237// CHECK-GCC-VERSION2: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
Rafael Espindola49ddb862013-06-24 22:07:15 +0000238// CHECK-GCC-VERSION2: "{{.*}}/Inputs/gcc_version_parsing2/bin/../lib/gcc/i386-unknown-linux/4.7.x{{/|\\\\}}crtbegin.o"
Chandler Carruthe276b362011-10-05 06:38:03 +0000239// CHECK-GCC-VERSION2: "-L{{.*}}/Inputs/gcc_version_parsing2/bin/../lib/gcc/i386-unknown-linux/4.7.x"
Chandler Carruthcf59bc52011-10-05 03:09:51 +0000240// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000241// RUN: --target=i386-unknown-linux -m32 \
Chandler Carruthe276b362011-10-05 06:38:03 +0000242// RUN: -ccc-install-dir %S/Inputs/gcc_version_parsing3/bin \
Chandler Carruthcf59bc52011-10-05 03:09:51 +0000243// RUN: --sysroot=%S/Inputs/basic_linux_tree \
244// RUN: | FileCheck --check-prefix=CHECK-GCC-VERSION3 %s
245// CHECK-GCC-VERSION3: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
Rafael Espindola49ddb862013-06-24 22:07:15 +0000246// CHECK-GCC-VERSION3: "{{.*}}/Inputs/gcc_version_parsing3/bin/../lib/gcc/i386-unknown-linux/4.7.99-rc5{{/|\\\\}}crtbegin.o"
Chandler Carruthe276b362011-10-05 06:38:03 +0000247// CHECK-GCC-VERSION3: "-L{{.*}}/Inputs/gcc_version_parsing3/bin/../lib/gcc/i386-unknown-linux/4.7.99-rc5"
Chandler Carruthbff1e8d2011-11-05 23:24:30 +0000248// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000249// RUN: --target=i386-unknown-linux -m32 \
Chandler Carruthbff1e8d2011-11-05 23:24:30 +0000250// RUN: -ccc-install-dir %S/Inputs/gcc_version_parsing4/bin \
251// RUN: --sysroot=%S/Inputs/basic_linux_tree \
252// RUN: | FileCheck --check-prefix=CHECK-GCC-VERSION4 %s
253// CHECK-GCC-VERSION4: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
Rafael Espindola49ddb862013-06-24 22:07:15 +0000254// CHECK-GCC-VERSION4: "{{.*}}/Inputs/gcc_version_parsing4/bin/../lib/gcc/i386-unknown-linux/4.7.99{{/|\\\\}}crtbegin.o"
Chandler Carruthbff1e8d2011-11-05 23:24:30 +0000255// CHECK-GCC-VERSION4: "-L{{.*}}/Inputs/gcc_version_parsing4/bin/../lib/gcc/i386-unknown-linux/4.7.99"
Chandler Carruth6e46ca22011-11-09 03:46:20 +0000256//
Chandler Carruth902efc62014-01-21 22:49:05 +0000257// Test a simulated installation of libc++ on Linux, both through sysroot and
258// the installation path of Clang.
259// RUN: %clangxx -no-canonical-prefixes -x c++ %s -### -o %t.o 2>&1 \
260// RUN: -target x86_64-unknown-linux-gnu \
261// RUN: -stdlib=libc++ \
262// RUN: -ccc-install-dir %S/Inputs/basic_linux_tree/usr/bin \
263// RUN: --sysroot=%S/Inputs/basic_linux_libcxx_tree \
264// RUN: | FileCheck --check-prefix=CHECK-BASIC-LIBCXX-SYSROOT %s
265// CHECK-BASIC-LIBCXX-SYSROOT: "{{[^"]*}}clang{{[^"]*}}" "-cc1"
266// CHECK-BASIC-LIBCXX-SYSROOT: "-isysroot" "[[SYSROOT:[^"]+]]"
267// CHECK-BASIC-LIBCXX-SYSROOT: "-internal-isystem" "[[SYSROOT]]/usr/include/c++/v1"
268// CHECK-BASIC-LIBCXX-SYSROOT: "-internal-isystem" "[[SYSROOT]]/usr/local/include"
269// CHECK-BASIC-LIBCXX-SYSROOT: "--sysroot=[[SYSROOT]]"
270// RUN: %clang -no-canonical-prefixes -x c++ %s -### -o %t.o 2>&1 \
271// RUN: -target x86_64-unknown-linux-gnu \
272// RUN: -stdlib=libc++ \
273// RUN: -ccc-install-dir %S/Inputs/basic_linux_libcxx_tree/usr/bin \
274// RUN: --sysroot=%S/Inputs/basic_linux_libcxx_tree \
275// RUN: | FileCheck --check-prefix=CHECK-BASIC-LIBCXX-INSTALL %s
276// CHECK-BASIC-LIBCXX-INSTALL: "{{[^"]*}}clang{{[^"]*}}" "-cc1"
277// CHECK-BASIC-LIBCXX-INSTALL: "-isysroot" "[[SYSROOT:[^"]+]]"
278// CHECK-BASIC-LIBCXX-INSTALL: "-internal-isystem" "[[SYSROOT]]/usr/bin/../include/c++/v1"
279// CHECK-BASIC-LIBCXX-INSTALL: "-internal-isystem" "[[SYSROOT]]/usr/local/include"
280// CHECK-BASIC-LIBCXX-INSTALL: "--sysroot=[[SYSROOT]]"
281// CHECK-BASIC-LIBCXX-INSTALL: "-L[[SYSROOT]]/usr/bin/../lib"
282//
Chandler Carruth6e46ca22011-11-09 03:46:20 +0000283// Test a very broken version of multiarch that shipped in Ubuntu 11.04.
284// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000285// RUN: --target=i386-unknown-linux \
Chandler Carruth6e46ca22011-11-09 03:46:20 +0000286// RUN: --sysroot=%S/Inputs/ubuntu_11.04_multiarch_tree \
287// RUN: | FileCheck --check-prefix=CHECK-UBUNTU-11-04 %s
288// CHECK-UBUNTU-11-04: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
Rafael Espindola49ddb862013-06-24 22:07:15 +0000289// CHECK-UBUNTU-11-04: "{{.*}}/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5{{/|\\\\}}crtbegin.o"
Chandler Carruth6e46ca22011-11-09 03:46:20 +0000290// CHECK-UBUNTU-11-04: "-L[[SYSROOT]]/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5"
291// CHECK-UBUNTU-11-04: "-L[[SYSROOT]]/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5/../../../../i386-linux-gnu"
292// CHECK-UBUNTU-11-04: "-L[[SYSROOT]]/usr/lib/i386-linux-gnu"
293// CHECK-UBUNTU-11-04: "-L[[SYSROOT]]/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5/../../../.."
294// CHECK-UBUNTU-11-04: "-L[[SYSROOT]]/lib"
295// CHECK-UBUNTU-11-04: "-L[[SYSROOT]]/usr/lib"
Hal Finkel6b89a102011-12-08 20:36:19 +0000296//
Jiangning Liu61b06cb2012-07-31 08:06:29 +0000297// Check multi arch support on Ubuntu 12.04 LTS.
298// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000299// RUN: --target=arm-unknown-linux-gnueabihf \
Jiangning Liu61b06cb2012-07-31 08:06:29 +0000300// RUN: --sysroot=%S/Inputs/ubuntu_12.04_LTS_multiarch_tree \
301// RUN: | FileCheck --check-prefix=CHECK-UBUNTU-12-04-ARM-HF %s
302// CHECK-UBUNTU-12-04-ARM-HF: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
Rafael Espindola49ddb862013-06-24 22:07:15 +0000303// CHECK-UBUNTU-12-04-ARM-HF: "{{.*}}/usr/lib/gcc/arm-linux-gnueabihf/4.6.3/../../../arm-linux-gnueabihf{{/|\\\\}}crt1.o"
304// CHECK-UBUNTU-12-04-ARM-HF: "{{.*}}/usr/lib/gcc/arm-linux-gnueabihf/4.6.3/../../../arm-linux-gnueabihf{{/|\\\\}}crti.o"
305// CHECK-UBUNTU-12-04-ARM-HF: "{{.*}}/usr/lib/gcc/arm-linux-gnueabihf/4.6.3{{/|\\\\}}crtbegin.o"
Jiangning Liu61b06cb2012-07-31 08:06:29 +0000306// CHECK-UBUNTU-12-04-ARM-HF: "-L[[SYSROOT]]/usr/lib/gcc/arm-linux-gnueabihf/4.6.3"
307// CHECK-UBUNTU-12-04-ARM-HF: "-L[[SYSROOT]]/usr/lib/gcc/arm-linux-gnueabihf/4.6.3/../../../arm-linux-gnueabihf"
308// CHECK-UBUNTU-12-04-ARM-HF: "-L[[SYSROOT]]/lib/arm-linux-gnueabihf"
309// CHECK-UBUNTU-12-04-ARM-HF: "-L[[SYSROOT]]/usr/lib/arm-linux-gnueabihf"
310// CHECK-UBUNTU-12-04-ARM-HF: "-L[[SYSROOT]]/usr/lib/gcc/arm-linux-gnueabihf/4.6.3/../../.."
Rafael Espindola49ddb862013-06-24 22:07:15 +0000311// CHECK-UBUNTU-12-04-ARM-HF: "{{.*}}/usr/lib/gcc/arm-linux-gnueabihf/4.6.3{{/|\\\\}}crtend.o"
312// CHECK-UBUNTU-12-04-ARM-HF: "{{.*}}/usr/lib/gcc/arm-linux-gnueabihf/4.6.3/../../../arm-linux-gnueabihf{{/|\\\\}}crtn.o"
Jiangning Liu61b06cb2012-07-31 08:06:29 +0000313//
Chandler Carruthda797042013-10-29 10:27:30 +0000314// Check Ubuntu 13.10 on x86-64 targeting arm-linux-gnueabihf.
315// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
316// RUN: --target=arm-linux-gnueabihf \
317// RUN: --sysroot=%S/Inputs/x86-64_ubuntu_13.10 \
318// RUN: | FileCheck --check-prefix=CHECK-X86-64-UBUNTU-13-10-ARM-HF %s
319// CHECK-X86-64-UBUNTU-13-10-ARM-HF: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
320// CHECK-X86-64-UBUNTU-13-10-ARM-HF: "-dynamic-linker" "/lib/ld-linux-armhf.so.3"
321// CHECK-X86-64-UBUNTU-13-10-ARM-HF: "{{.*}}/usr/lib/gcc-cross/arm-linux-gnueabihf/4.8/../../../../arm-linux-gnueabihf/lib/../lib{{/|\\\\}}crt1.o"
322// CHECK-X86-64-UBUNTU-13-10-ARM-HF: "{{.*}}/usr/lib/gcc-cross/arm-linux-gnueabihf/4.8/../../../../arm-linux-gnueabihf/lib/../lib{{/|\\\\}}crti.o"
323// CHECK-X86-64-UBUNTU-13-10-ARM-HF: "{{.*}}/usr/lib/gcc-cross/arm-linux-gnueabihf/4.8{{/|\\\\}}crtbegin.o"
324// CHECK-X86-64-UBUNTU-13-10-ARM-HF: "-L[[SYSROOT]]/usr/lib/gcc-cross/arm-linux-gnueabihf/4.8"
325// CHECK-X86-64-UBUNTU-13-10-ARM-HF: "-L[[SYSROOT]]/usr/lib/gcc-cross/arm-linux-gnueabihf/4.8/../../../../arm-linux-gnueabihf/lib/../lib"
326// CHECK-X86-64-UBUNTU-13-10-ARM-HF: "-L[[SYSROOT]]/lib/../lib"
327// CHECK-X86-64-UBUNTU-13-10-ARM-HF: "-L[[SYSROOT]]/usr/lib/../lib"
328// CHECK-X86-64-UBUNTU-13-10-ARM-HF: "-L[[SYSROOT]]/usr/lib/gcc-cross/arm-linux-gnueabihf/4.8/../../../../arm-linux-gnueabihf/lib"
329// CHECK-X86-64-UBUNTU-13-10-ARM-HF: "{{.*}}/usr/lib/gcc-cross/arm-linux-gnueabihf/4.8{{/|\\\\}}crtend.o"
330// CHECK-X86-64-UBUNTU-13-10-ARM-HF: "{{.*}}/usr/lib/gcc-cross/arm-linux-gnueabihf/4.8/../../../../arm-linux-gnueabihf/lib/../lib{{/|\\\\}}crtn.o"
331//
332// Check Ubuntu 13.10 on x86-64 targeting arm-linux-gnueabi.
333// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
334// RUN: --target=arm-linux-gnueabi \
335// RUN: --sysroot=%S/Inputs/x86-64_ubuntu_13.10 \
336// RUN: | FileCheck --check-prefix=CHECK-X86-64-UBUNTU-13-10-ARM %s
337// CHECK-X86-64-UBUNTU-13-10-ARM: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
338// CHECK-X86-64-UBUNTU-13-10-ARM: "-dynamic-linker" "/lib/ld-linux.so.3"
339// CHECK-X86-64-UBUNTU-13-10-ARM: "{{.*}}/usr/lib/gcc-cross/arm-linux-gnueabi/4.7/../../../../arm-linux-gnueabi/lib/../lib{{/|\\\\}}crt1.o"
340// CHECK-X86-64-UBUNTU-13-10-ARM: "{{.*}}/usr/lib/gcc-cross/arm-linux-gnueabi/4.7/../../../../arm-linux-gnueabi/lib/../lib{{/|\\\\}}crti.o"
341// CHECK-X86-64-UBUNTU-13-10-ARM: "{{.*}}/usr/lib/gcc-cross/arm-linux-gnueabi/4.7{{/|\\\\}}crtbegin.o"
342// CHECK-X86-64-UBUNTU-13-10-ARM: "-L[[SYSROOT]]/usr/lib/gcc-cross/arm-linux-gnueabi/4.7"
343// CHECK-X86-64-UBUNTU-13-10-ARM: "-L[[SYSROOT]]/usr/lib/gcc-cross/arm-linux-gnueabi/4.7/../../../../arm-linux-gnueabi/lib/../lib"
344// CHECK-X86-64-UBUNTU-13-10-ARM: "-L[[SYSROOT]]/lib/../lib"
345// CHECK-X86-64-UBUNTU-13-10-ARM: "-L[[SYSROOT]]/usr/lib/../lib"
346// CHECK-X86-64-UBUNTU-13-10-ARM: "-L[[SYSROOT]]/usr/lib/gcc-cross/arm-linux-gnueabi/4.7/../../../../arm-linux-gnueabi/lib"
347// CHECK-X86-64-UBUNTU-13-10-ARM: "{{.*}}/usr/lib/gcc-cross/arm-linux-gnueabi/4.7{{/|\\\\}}crtend.o"
348// CHECK-X86-64-UBUNTU-13-10-ARM: "{{.*}}/usr/lib/gcc-cross/arm-linux-gnueabi/4.7/../../../../arm-linux-gnueabi/lib/../lib{{/|\\\\}}crtn.o"
349//
Rafael Espindola50ba9832013-04-14 10:14:21 +0000350// Check fedora 18 on arm.
351// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000352// RUN: --target=armv7-unknown-linux-gnueabihf \
Rafael Espindola50ba9832013-04-14 10:14:21 +0000353// RUN: --sysroot=%S/Inputs/fedora_18_tree \
354// RUN: | FileCheck --check-prefix=CHECK-FEDORA-18-ARM-HF %s
355// CHECK-FEDORA-18-ARM-HF: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
Chandler Carruthda797042013-10-29 10:27:30 +0000356// CHECK-FEDORA-18-ARM-HF: "{{.*}}/usr/lib/gcc/armv7hl-redhat-linux-gnueabi/4.7.2/../../../../lib{{/|\\\\}}crt1.o"
357// CHECK-FEDORA-18-ARM-HF: "{{.*}}/usr/lib/gcc/armv7hl-redhat-linux-gnueabi/4.7.2/../../../../lib{{/|\\\\}}crti.o"
Rafael Espindola49ddb862013-06-24 22:07:15 +0000358// CHECK-FEDORA-18-ARM-HF: "{{.*}}/usr/lib/gcc/armv7hl-redhat-linux-gnueabi/4.7.2{{/|\\\\}}crtbegin.o"
Rafael Espindola50ba9832013-04-14 10:14:21 +0000359// CHECK-FEDORA-18-ARM-HF: "-L[[SYSROOT]]/usr/lib/gcc/armv7hl-redhat-linux-gnueabi/4.7.2"
Chandler Carruthda797042013-10-29 10:27:30 +0000360// CHECK-FEDORA-18-ARM-HF: "-L[[SYSROOT]]/usr/lib/gcc/armv7hl-redhat-linux-gnueabi/4.7.2/../../../../lib"
Rafael Espindola49ddb862013-06-24 22:07:15 +0000361// CHECK-FEDORA-18-ARM-HF: "{{.*}}/usr/lib/gcc/armv7hl-redhat-linux-gnueabi/4.7.2{{/|\\\\}}crtend.o"
Chandler Carruthda797042013-10-29 10:27:30 +0000362// CHECK-FEDORA-18-ARM-HF: "{{.*}}/usr/lib/gcc/armv7hl-redhat-linux-gnueabi/4.7.2/../../../../lib{{/|\\\\}}crtn.o"
Rafael Espindola50ba9832013-04-14 10:14:21 +0000363//
Jiangning Liu61b06cb2012-07-31 08:06:29 +0000364// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000365// RUN: --target=arm-unknown-linux-gnueabi \
Jiangning Liu61b06cb2012-07-31 08:06:29 +0000366// RUN: --sysroot=%S/Inputs/ubuntu_12.04_LTS_multiarch_tree \
367// RUN: | FileCheck --check-prefix=CHECK-UBUNTU-12-04-ARM %s
368// CHECK-UBUNTU-12-04-ARM: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
Rafael Espindola49ddb862013-06-24 22:07:15 +0000369// CHECK-UBUNTU-12-04-ARM: "{{.*}}/usr/lib/gcc/arm-linux-gnueabi/4.6.1/../../../arm-linux-gnueabi{{/|\\\\}}crt1.o"
370// CHECK-UBUNTU-12-04-ARM: "{{.*}}/usr/lib/gcc/arm-linux-gnueabi/4.6.1/../../../arm-linux-gnueabi{{/|\\\\}}crti.o"
371// CHECK-UBUNTU-12-04-ARM: "{{.*}}/usr/lib/gcc/arm-linux-gnueabi/4.6.1{{/|\\\\}}crtbegin.o"
Jiangning Liu61b06cb2012-07-31 08:06:29 +0000372// CHECK-UBUNTU-12-04-ARM: "-L[[SYSROOT]]/usr/lib/gcc/arm-linux-gnueabi/4.6.1"
373// CHECK-UBUNTU-12-04-ARM: "-L[[SYSROOT]]/usr/lib/gcc/arm-linux-gnueabi/4.6.1/../../../arm-linux-gnueabi"
374// CHECK-UBUNTU-12-04-ARM: "-L[[SYSROOT]]/lib/arm-linux-gnueabi"
375// CHECK-UBUNTU-12-04-ARM: "-L[[SYSROOT]]/usr/lib/arm-linux-gnueabi"
376// CHECK-UBUNTU-12-04-ARM: "-L[[SYSROOT]]/usr/lib/gcc/arm-linux-gnueabi/4.6.1/../../.."
Rafael Espindola49ddb862013-06-24 22:07:15 +0000377// CHECK-UBUNTU-12-04-ARM: "{{.*}}/usr/lib/gcc/arm-linux-gnueabi/4.6.1{{/|\\\\}}crtend.o"
378// CHECK-UBUNTU-12-04-ARM: "{{.*}}/usr/lib/gcc/arm-linux-gnueabi/4.6.1/../../../arm-linux-gnueabi{{/|\\\\}}crtn.o"
Jiangning Liu61b06cb2012-07-31 08:06:29 +0000379//
Hal Finkel6b89a102011-12-08 20:36:19 +0000380// Test the setup that shipped in SUSE 10.3 on ppc64.
381// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000382// RUN: --target=powerpc64-suse-linux \
Hal Finkel6b89a102011-12-08 20:36:19 +0000383// RUN: --sysroot=%S/Inputs/suse_10.3_ppc64_tree \
384// RUN: | FileCheck --check-prefix=CHECK-SUSE-10-3-PPC64 %s
385// CHECK-SUSE-10-3-PPC64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
Rafael Espindola49ddb862013-06-24 22:07:15 +0000386// CHECK-SUSE-10-3-PPC64: "{{.*}}/usr/lib/gcc/powerpc64-suse-linux/4.1.2/64{{/|\\\\}}crtbegin.o"
Hal Finkel6b89a102011-12-08 20:36:19 +0000387// CHECK-SUSE-10-3-PPC64: "-L[[SYSROOT]]/usr/lib/gcc/powerpc64-suse-linux/4.1.2/64"
388// CHECK-SUSE-10-3-PPC64: "-L[[SYSROOT]]/usr/lib/gcc/powerpc64-suse-linux/4.1.2/../../../../lib64"
389// CHECK-SUSE-10-3-PPC64: "-L[[SYSROOT]]/lib/../lib64"
390// CHECK-SUSE-10-3-PPC64: "-L[[SYSROOT]]/usr/lib/../lib64"
Chandler Carruth7cf80e382011-12-17 21:57:25 +0000391//
Jiangning Liueabbf922012-07-30 11:05:56 +0000392// Check dynamic-linker for different archs
393// RUN: %clang %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000394// RUN: --target=arm-linux-gnueabi \
Jiangning Liueabbf922012-07-30 11:05:56 +0000395// RUN: | FileCheck --check-prefix=CHECK-ARM %s
396// CHECK-ARM: "{{.*}}ld{{(.exe)?}}"
397// CHECK-ARM: "-m" "armelf_linux_eabi"
398// CHECK-ARM: "-dynamic-linker" "{{.*}}/lib/ld-linux.so.3"
399//
400// RUN: %clang %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000401// RUN: --target=arm-linux-gnueabihf \
Jiangning Liueabbf922012-07-30 11:05:56 +0000402// RUN: | FileCheck --check-prefix=CHECK-ARM-HF %s
403// CHECK-ARM-HF: "{{.*}}ld{{(.exe)?}}"
404// CHECK-ARM-HF: "-m" "armelf_linux_eabi"
405// CHECK-ARM-HF: "-dynamic-linker" "{{.*}}/lib/ld-linux-armhf.so.3"
406//
Chandler Carruth7cf80e382011-12-17 21:57:25 +0000407// Check that we do not pass --hash-style=gnu and --hash-style=both to linker
Simon Atanasyan1e1e2e22012-04-06 20:14:27 +0000408// and provide correct path to the dynamic linker and emulation mode when build
409// for MIPS platforms.
Chandler Carruth7cf80e382011-12-17 21:57:25 +0000410// RUN: %clang %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000411// RUN: --target=mips-linux-gnu \
Chandler Carruth7cf80e382011-12-17 21:57:25 +0000412// RUN: | FileCheck --check-prefix=CHECK-MIPS %s
413// CHECK-MIPS: "{{.*}}ld{{(.exe)?}}"
Simon Atanasyan1e1e2e22012-04-06 20:14:27 +0000414// CHECK-MIPS: "-m" "elf32btsmip"
415// CHECK-MIPS: "-dynamic-linker" "{{.*}}/lib/ld.so.1"
Chandler Carruth7cf80e382011-12-17 21:57:25 +0000416// CHECK-MIPS-NOT: "--hash-style={{gnu|both}}"
417// RUN: %clang %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000418// RUN: --target=mipsel-linux-gnu \
Chandler Carruth7cf80e382011-12-17 21:57:25 +0000419// RUN: | FileCheck --check-prefix=CHECK-MIPSEL %s
420// CHECK-MIPSEL: "{{.*}}ld{{(.exe)?}}"
Simon Atanasyan1e1e2e22012-04-06 20:14:27 +0000421// CHECK-MIPSEL: "-m" "elf32ltsmip"
422// CHECK-MIPSEL: "-dynamic-linker" "{{.*}}/lib/ld.so.1"
Chandler Carruth7cf80e382011-12-17 21:57:25 +0000423// CHECK-MIPSEL-NOT: "--hash-style={{gnu|both}}"
424// RUN: %clang %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000425// RUN: --target=mips64-linux-gnu \
Chandler Carruth7cf80e382011-12-17 21:57:25 +0000426// RUN: | FileCheck --check-prefix=CHECK-MIPS64 %s
427// CHECK-MIPS64: "{{.*}}ld{{(.exe)?}}"
Simon Atanasyan1e1e2e22012-04-06 20:14:27 +0000428// CHECK-MIPS64: "-m" "elf64btsmip"
429// CHECK-MIPS64: "-dynamic-linker" "{{.*}}/lib64/ld.so.1"
Chandler Carruth7cf80e382011-12-17 21:57:25 +0000430// CHECK-MIPS64-NOT: "--hash-style={{gnu|both}}"
431// RUN: %clang %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000432// RUN: --target=mips64el-linux-gnu \
Chandler Carruth7cf80e382011-12-17 21:57:25 +0000433// RUN: | FileCheck --check-prefix=CHECK-MIPS64EL %s
434// CHECK-MIPS64EL: "{{.*}}ld{{(.exe)?}}"
Simon Atanasyan1e1e2e22012-04-06 20:14:27 +0000435// CHECK-MIPS64EL: "-m" "elf64ltsmip"
436// CHECK-MIPS64EL: "-dynamic-linker" "{{.*}}/lib64/ld.so.1"
Chandler Carruth7cf80e382011-12-17 21:57:25 +0000437// CHECK-MIPS64EL-NOT: "--hash-style={{gnu|both}}"
Simon Atanasyan2d1b1ad2012-10-21 11:44:57 +0000438// RUN: %clang %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000439// RUN: --target=mips64-linux-gnu -mabi=n32 \
Simon Atanasyan2d1b1ad2012-10-21 11:44:57 +0000440// RUN: | FileCheck --check-prefix=CHECK-MIPS64-N32 %s
441// CHECK-MIPS64-N32: "{{.*}}ld{{(.exe)?}}"
442// CHECK-MIPS64-N32: "-m" "elf32btsmipn32"
443// CHECK-MIPS64-N32: "-dynamic-linker" "{{.*}}/lib32/ld.so.1"
444// CHECK-MIPS64-N32-NOT: "--hash-style={{gnu|both}}"
445// RUN: %clang %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000446// RUN: --target=mips64el-linux-gnu -mabi=n32 \
Simon Atanasyan2d1b1ad2012-10-21 11:44:57 +0000447// RUN: | FileCheck --check-prefix=CHECK-MIPS64EL-N32 %s
448// CHECK-MIPS64EL-N32: "{{.*}}ld{{(.exe)?}}"
449// CHECK-MIPS64EL-N32: "-m" "elf32ltsmipn32"
450// CHECK-MIPS64EL-N32: "-dynamic-linker" "{{.*}}/lib32/ld.so.1"
451// CHECK-MIPS64EL-N32-NOT: "--hash-style={{gnu|both}}"
Chandler Carruthaf3c2092012-02-26 09:03:21 +0000452//
Jakob Stoklund Olesen91a8e032014-01-10 03:51:33 +0000453// RUN: %clang %s -### -o %t.o 2>&1 \
454// RUN: --target=sparc-linux-gnu \
455// RUN: | FileCheck --check-prefix=CHECK-SPARCV8 %s
456// CHECK-SPARCV8: "{{.*}}ld{{(.exe)?}}"
457// CHECK-SPARCV8: "-m" "elf32_sparc"
Jakob Stoklund Olesen73cb84c2014-01-10 08:18:34 +0000458// CHECK-SPARCV8: "-dynamic-linker" "/lib/ld-linux.so.2"
Jakob Stoklund Olesen91a8e032014-01-10 03:51:33 +0000459//
460// RUN: %clang %s -### -o %t.o 2>&1 \
461// RUN: --target=sparcv9-linux-gnu \
462// RUN: | FileCheck --check-prefix=CHECK-SPARCV9 %s
463// CHECK-SPARCV9: "{{.*}}ld{{(.exe)?}}"
464// CHECK-SPARCV9: "-m" "elf64_sparc"
Jakob Stoklund Olesen73cb84c2014-01-10 08:18:34 +0000465// CHECK-SPARCV9: "-dynamic-linker" "/lib64/ld-linux.so.2"
Jakob Stoklund Olesen91a8e032014-01-10 03:51:33 +0000466//
Chandler Carruthaf3c2092012-02-26 09:03:21 +0000467// Thoroughly exercise the Debian multiarch environment.
468// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000469// RUN: --target=i686-linux-gnu \
Chandler Carruthaf3c2092012-02-26 09:03:21 +0000470// RUN: --sysroot=%S/Inputs/debian_multiarch_tree \
471// RUN: | FileCheck --check-prefix=CHECK-DEBIAN-X86 %s
472// CHECK-DEBIAN-X86: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
Rafael Espindola49ddb862013-06-24 22:07:15 +0000473// CHECK-DEBIAN-X86: "{{.*}}/usr/lib/gcc/i686-linux-gnu/4.5{{/|\\\\}}crtbegin.o"
Chandler Carruthaf3c2092012-02-26 09:03:21 +0000474// CHECK-DEBIAN-X86: "-L[[SYSROOT]]/usr/lib/gcc/i686-linux-gnu/4.5"
475// CHECK-DEBIAN-X86: "-L[[SYSROOT]]/usr/lib/gcc/i686-linux-gnu/4.5/../../../i386-linux-gnu"
476// CHECK-DEBIAN-X86: "-L[[SYSROOT]]/usr/lib/i386-linux-gnu"
477// CHECK-DEBIAN-X86: "-L[[SYSROOT]]/usr/lib/gcc/i686-linux-gnu/4.5/../../.."
478// CHECK-DEBIAN-X86: "-L[[SYSROOT]]/lib"
479// CHECK-DEBIAN-X86: "-L[[SYSROOT]]/usr/lib"
480// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000481// RUN: --target=x86_64-linux-gnu \
Chandler Carruthaf3c2092012-02-26 09:03:21 +0000482// RUN: --sysroot=%S/Inputs/debian_multiarch_tree \
483// RUN: | FileCheck --check-prefix=CHECK-DEBIAN-X86-64 %s
484// CHECK-DEBIAN-X86-64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
Rafael Espindola49ddb862013-06-24 22:07:15 +0000485// CHECK-DEBIAN-X86-64: "{{.*}}/usr/lib/gcc/x86_64-linux-gnu/4.5{{/|\\\\}}crtbegin.o"
Chandler Carruthaf3c2092012-02-26 09:03:21 +0000486// CHECK-DEBIAN-X86-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/4.5"
487// CHECK-DEBIAN-X86-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/4.5/../../../x86_64-linux-gnu"
488// CHECK-DEBIAN-X86-64: "-L[[SYSROOT]]/usr/lib/x86_64-linux-gnu"
489// CHECK-DEBIAN-X86-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/4.5/../../.."
490// CHECK-DEBIAN-X86-64: "-L[[SYSROOT]]/lib"
491// CHECK-DEBIAN-X86-64: "-L[[SYSROOT]]/usr/lib"
492// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000493// RUN: --target=powerpc-linux-gnu \
Chandler Carruthaf3c2092012-02-26 09:03:21 +0000494// RUN: --sysroot=%S/Inputs/debian_multiarch_tree \
495// RUN: | FileCheck --check-prefix=CHECK-DEBIAN-PPC %s
496// CHECK-DEBIAN-PPC: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
Rafael Espindola49ddb862013-06-24 22:07:15 +0000497// CHECK-DEBIAN-PPC: "{{.*}}/usr/lib/gcc/powerpc-linux-gnu/4.5{{/|\\\\}}crtbegin.o"
Chandler Carruthaf3c2092012-02-26 09:03:21 +0000498// CHECK-DEBIAN-PPC: "-L[[SYSROOT]]/usr/lib/gcc/powerpc-linux-gnu/4.5"
499// CHECK-DEBIAN-PPC: "-L[[SYSROOT]]/usr/lib/gcc/powerpc-linux-gnu/4.5/../../../powerpc-linux-gnu"
500// CHECK-DEBIAN-PPC: "-L[[SYSROOT]]/usr/lib/powerpc-linux-gnu"
501// CHECK-DEBIAN-PPC: "-L[[SYSROOT]]/usr/lib/gcc/powerpc-linux-gnu/4.5/../../.."
502// CHECK-DEBIAN-PPC: "-L[[SYSROOT]]/lib"
503// CHECK-DEBIAN-PPC: "-L[[SYSROOT]]/usr/lib"
504// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000505// RUN: --target=powerpc64-linux-gnu \
Chandler Carruthaf3c2092012-02-26 09:03:21 +0000506// RUN: --sysroot=%S/Inputs/debian_multiarch_tree \
507// RUN: | FileCheck --check-prefix=CHECK-DEBIAN-PPC64 %s
508// CHECK-DEBIAN-PPC64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
Rafael Espindola49ddb862013-06-24 22:07:15 +0000509// CHECK-DEBIAN-PPC64: "{{.*}}/usr/lib/gcc/powerpc64-linux-gnu/4.5{{/|\\\\}}crtbegin.o"
Chandler Carruthaf3c2092012-02-26 09:03:21 +0000510// CHECK-DEBIAN-PPC64: "-L[[SYSROOT]]/usr/lib/gcc/powerpc64-linux-gnu/4.5"
511// CHECK-DEBIAN-PPC64: "-L[[SYSROOT]]/usr/lib/gcc/powerpc64-linux-gnu/4.5/../../../powerpc64-linux-gnu"
512// CHECK-DEBIAN-PPC64: "-L[[SYSROOT]]/usr/lib/powerpc64-linux-gnu"
513// CHECK-DEBIAN-PPC64: "-L[[SYSROOT]]/usr/lib/gcc/powerpc64-linux-gnu/4.5/../../.."
514// CHECK-DEBIAN-PPC64: "-L[[SYSROOT]]/lib"
515// CHECK-DEBIAN-PPC64: "-L[[SYSROOT]]/usr/lib"
Simon Atanasyan2be62252012-04-26 08:35:58 +0000516// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000517// RUN: --target=mips-linux-gnu \
Simon Atanasyan2be62252012-04-26 08:35:58 +0000518// RUN: --sysroot=%S/Inputs/debian_multiarch_tree \
519// RUN: | FileCheck --check-prefix=CHECK-DEBIAN-MIPS %s
520// CHECK-DEBIAN-MIPS: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
Rafael Espindola49ddb862013-06-24 22:07:15 +0000521// CHECK-DEBIAN-MIPS: "{{.*}}/usr/lib/gcc/mips-linux-gnu/4.5{{/|\\\\}}crtbegin.o"
Simon Atanasyan2be62252012-04-26 08:35:58 +0000522// CHECK-DEBIAN-MIPS: "-L[[SYSROOT]]/usr/lib/gcc/mips-linux-gnu/4.5"
523// CHECK-DEBIAN-MIPS: "-L[[SYSROOT]]/usr/lib/gcc/mips-linux-gnu/4.5/../../../mips-linux-gnu"
524// CHECK-DEBIAN-MIPS: "-L[[SYSROOT]]/usr/lib/mips-linux-gnu"
525// CHECK-DEBIAN-MIPS: "-L[[SYSROOT]]/usr/lib/gcc/mips-linux-gnu/4.5/../../.."
526// CHECK-DEBIAN-MIPS: "-L[[SYSROOT]]/lib"
527// CHECK-DEBIAN-MIPS: "-L[[SYSROOT]]/usr/lib"
528// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000529// RUN: --target=mipsel-linux-gnu \
Simon Atanasyan2be62252012-04-26 08:35:58 +0000530// RUN: --sysroot=%S/Inputs/debian_multiarch_tree \
531// RUN: | FileCheck --check-prefix=CHECK-DEBIAN-MIPSEL %s
532// CHECK-DEBIAN-MIPSEL: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
Rafael Espindola49ddb862013-06-24 22:07:15 +0000533// CHECK-DEBIAN-MIPSEL: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.5{{/|\\\\}}crtbegin.o"
Simon Atanasyan2be62252012-04-26 08:35:58 +0000534// CHECK-DEBIAN-MIPSEL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.5"
535// CHECK-DEBIAN-MIPSEL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.5/../../../mipsel-linux-gnu"
536// CHECK-DEBIAN-MIPSEL: "-L[[SYSROOT]]/usr/lib/mipsel-linux-gnu"
537// CHECK-DEBIAN-MIPSEL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.5/../../.."
538// CHECK-DEBIAN-MIPSEL: "-L[[SYSROOT]]/lib"
539// CHECK-DEBIAN-MIPSEL: "-L[[SYSROOT]]/usr/lib"
Simon Atanasyan9bb634d2012-04-26 19:57:02 +0000540// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000541// RUN: --target=mips64-linux-gnu \
Simon Atanasyan9bb634d2012-04-26 19:57:02 +0000542// RUN: --sysroot=%S/Inputs/debian_multiarch_tree \
543// RUN: | FileCheck --check-prefix=CHECK-DEBIAN-MIPS64 %s
544// CHECK-DEBIAN-MIPS64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
Rafael Espindola49ddb862013-06-24 22:07:15 +0000545// CHECK-DEBIAN-MIPS64: "{{.*}}/usr/lib/gcc/mips-linux-gnu/4.5/64{{/|\\\\}}crtbegin.o"
Simon Atanasyan9bb634d2012-04-26 19:57:02 +0000546// CHECK-DEBIAN-MIPS64: "-L[[SYSROOT]]/usr/lib/gcc/mips-linux-gnu/4.5/64"
547// CHECK-DEBIAN-MIPS64: "-L[[SYSROOT]]/usr/lib/gcc/mips-linux-gnu/4.5"
548// CHECK-DEBIAN-MIPS64: "-L[[SYSROOT]]/usr/lib/gcc/mips-linux-gnu/4.5/../../.."
549// CHECK-DEBIAN-MIPS64: "-L[[SYSROOT]]/lib"
550// CHECK-DEBIAN-MIPS64: "-L[[SYSROOT]]/usr/lib"
551// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000552// RUN: --target=mips64el-linux-gnu \
Simon Atanasyan9bb634d2012-04-26 19:57:02 +0000553// RUN: --sysroot=%S/Inputs/debian_multiarch_tree \
554// RUN: | FileCheck --check-prefix=CHECK-DEBIAN-MIPS64EL %s
555// CHECK-DEBIAN-MIPS64EL: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
Rafael Espindola49ddb862013-06-24 22:07:15 +0000556// CHECK-DEBIAN-MIPS64EL: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.5/64{{/|\\\\}}crtbegin.o"
Simon Atanasyan9bb634d2012-04-26 19:57:02 +0000557// CHECK-DEBIAN-MIPS64EL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.5/64"
558// CHECK-DEBIAN-MIPS64EL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.5"
559// CHECK-DEBIAN-MIPS64EL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.5/../../.."
560// CHECK-DEBIAN-MIPS64EL: "-L[[SYSROOT]]/lib"
561// CHECK-DEBIAN-MIPS64EL: "-L[[SYSROOT]]/usr/lib"
Simon Atanasyan2d1b1ad2012-10-21 11:44:57 +0000562// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000563// RUN: --target=mips64-linux-gnu -mabi=n32 \
Simon Atanasyan2d1b1ad2012-10-21 11:44:57 +0000564// RUN: --sysroot=%S/Inputs/debian_multiarch_tree \
565// RUN: | FileCheck --check-prefix=CHECK-DEBIAN-MIPS64-N32 %s
566// CHECK-DEBIAN-MIPS64-N32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
Rafael Espindola49ddb862013-06-24 22:07:15 +0000567// CHECK-DEBIAN-MIPS64-N32: "{{.*}}/usr/lib/gcc/mips-linux-gnu/4.5/n32{{/|\\\\}}crtbegin.o"
Simon Atanasyan2d1b1ad2012-10-21 11:44:57 +0000568// CHECK-DEBIAN-MIPS64-N32: "-L[[SYSROOT]]/usr/lib/gcc/mips-linux-gnu/4.5/n32"
569// CHECK-DEBIAN-MIPS64-N32: "-L[[SYSROOT]]/usr/lib/gcc/mips-linux-gnu/4.5"
570// CHECK-DEBIAN-MIPS64-N32: "-L[[SYSROOT]]/usr/lib/gcc/mips-linux-gnu/4.5/../../.."
571// CHECK-DEBIAN-MIPS64-N32: "-L[[SYSROOT]]/lib"
572// CHECK-DEBIAN-MIPS64-N32: "-L[[SYSROOT]]/usr/lib"
573// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000574// RUN: --target=mips64el-linux-gnu -mabi=n32 \
Simon Atanasyan2d1b1ad2012-10-21 11:44:57 +0000575// RUN: --sysroot=%S/Inputs/debian_multiarch_tree \
576// RUN: | FileCheck --check-prefix=CHECK-DEBIAN-MIPS64EL-N32 %s
577// CHECK-DEBIAN-MIPS64EL-N32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
Rafael Espindola49ddb862013-06-24 22:07:15 +0000578// CHECK-DEBIAN-MIPS64EL-N32: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.5/n32{{/|\\\\}}crtbegin.o"
Simon Atanasyan2d1b1ad2012-10-21 11:44:57 +0000579// CHECK-DEBIAN-MIPS64EL-N32: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.5/n32"
580// CHECK-DEBIAN-MIPS64EL-N32: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.5"
581// CHECK-DEBIAN-MIPS64EL-N32: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.5/../../.."
582// CHECK-DEBIAN-MIPS64EL-N32: "-L[[SYSROOT]]/lib"
583// CHECK-DEBIAN-MIPS64EL-N32: "-L[[SYSROOT]]/usr/lib"
Chandler Carruthaf3c2092012-02-26 09:03:21 +0000584//
Evgeniy Stepanov77866712012-04-25 08:59:22 +0000585// Test linker invocation on Android.
586// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000587// RUN: --target=arm-linux-androideabi \
Evgeniy Stepanov763671e2012-09-03 09:05:50 +0000588// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
Evgeniy Stepanov77866712012-04-25 08:59:22 +0000589// RUN: | FileCheck --check-prefix=CHECK-ANDROID %s
Logan Chienc6fd8202012-09-02 09:30:11 +0000590// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000591// RUN: --target=arm-linux-android \
Evgeniy Stepanov763671e2012-09-03 09:05:50 +0000592// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
Logan Chienc6fd8202012-09-02 09:30:11 +0000593// RUN: | FileCheck --check-prefix=CHECK-ANDROID %s
Simon Atanasyan53fefd12012-10-03 17:46:38 +0000594// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Logan Chien6a00cc82014-04-23 13:36:23 +0000595// RUN: --target=aarch64-linux-android \
596// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
597// RUN: | FileCheck --check-prefix=CHECK-ANDROID %s
598// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000599// RUN: --target=mipsel-linux-android \
Simon Atanasyan53fefd12012-10-03 17:46:38 +0000600// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
601// RUN: | FileCheck --check-prefix=CHECK-ANDROID %s
Rafael Espindola7df35012012-11-02 20:41:30 +0000602// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Simon Atanasyan68855fe32014-01-25 16:04:08 +0000603// RUN: --target=mips64el-linux-android \
604// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
605// RUN: | FileCheck --check-prefix=CHECK-ANDROID %s
606// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Alexey Bataev75db8c32014-01-13 03:49:38 +0000607// RUN: --target=i686-linux-android \
Rafael Espindola7df35012012-11-02 20:41:30 +0000608// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
609// RUN: | FileCheck --check-prefix=CHECK-ANDROID %s
Alexey Bataevcf7ae302014-01-23 09:08:32 +0000610// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
611// RUN: --target=x86_64-linux-android \
612// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
613// RUN: | FileCheck --check-prefix=CHECK-ANDROID %s
Evgeniy Stepanov77866712012-04-25 08:59:22 +0000614// CHECK-ANDROID: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
Rafael Espindola49ddb862013-06-24 22:07:15 +0000615// CHECK-ANDROID: "{{.*}}{{/|\\\\}}crtbegin_dynamic.o"
Evgeniy Stepanov77866712012-04-25 08:59:22 +0000616// CHECK-ANDROID: "-L[[SYSROOT]]/usr/lib"
617// CHECK-ANDROID-NOT: "gcc_s"
618// CHECK-ANDROID: "-lgcc"
Logan Chien3d3373c2012-11-19 12:04:11 +0000619// CHECK-ANDROID: "-ldl"
Evgeniy Stepanov77866712012-04-25 08:59:22 +0000620// CHECK-ANDROID-NOT: "gcc_s"
Rafael Espindola49ddb862013-06-24 22:07:15 +0000621// CHECK-ANDROID: "{{.*}}{{/|\\\\}}crtend_android.o"
Evgeniy Stepanov77866712012-04-25 08:59:22 +0000622// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000623// RUN: --target=arm-linux-androideabi \
Evgeniy Stepanov763671e2012-09-03 09:05:50 +0000624// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
Evgeniy Stepanov77866712012-04-25 08:59:22 +0000625// RUN: -shared \
626// RUN: | FileCheck --check-prefix=CHECK-ANDROID-SO %s
Logan Chienc6fd8202012-09-02 09:30:11 +0000627// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000628// RUN: --target=arm-linux-android \
Evgeniy Stepanov763671e2012-09-03 09:05:50 +0000629// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
Logan Chienc6fd8202012-09-02 09:30:11 +0000630// RUN: -shared \
631// RUN: | FileCheck --check-prefix=CHECK-ANDROID-SO %s
Simon Atanasyan53fefd12012-10-03 17:46:38 +0000632// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Logan Chien6a00cc82014-04-23 13:36:23 +0000633// RUN: --target=aarch64-linux-android \
634// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
635// RUN: -shared \
636// RUN: | FileCheck --check-prefix=CHECK-ANDROID-SO %s
637// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000638// RUN: --target=mipsel-linux-android \
Simon Atanasyan53fefd12012-10-03 17:46:38 +0000639// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
640// RUN: -shared \
641// RUN: | FileCheck --check-prefix=CHECK-ANDROID-SO %s
Rafael Espindola7df35012012-11-02 20:41:30 +0000642// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Simon Atanasyan68855fe32014-01-25 16:04:08 +0000643// RUN: --target=mips64el-linux-android \
644// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
645// RUN: -shared \
646// RUN: | FileCheck --check-prefix=CHECK-ANDROID-SO %s
647// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Alexey Bataev75db8c32014-01-13 03:49:38 +0000648// RUN: --target=i686-linux-android \
Rafael Espindola7df35012012-11-02 20:41:30 +0000649// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
650// RUN: -shared \
651// RUN: | FileCheck --check-prefix=CHECK-ANDROID-SO %s
Alexey Bataevcf7ae302014-01-23 09:08:32 +0000652// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
653// RUN: --target=x86_64-linux-android \
654// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
655// RUN: -shared \
656// RUN: | FileCheck --check-prefix=CHECK-ANDROID-SO %s
Evgeniy Stepanov77866712012-04-25 08:59:22 +0000657// CHECK-ANDROID-SO: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
Rafael Espindola7df35012012-11-02 20:41:30 +0000658// CHECK-ANDROID-SO: "-Bsymbolic"
Rafael Espindola49ddb862013-06-24 22:07:15 +0000659// CHECK-ANDROID-SO: "{{.*}}{{/|\\\\}}crtbegin_so.o"
Evgeniy Stepanov77866712012-04-25 08:59:22 +0000660// CHECK-ANDROID-SO: "-L[[SYSROOT]]/usr/lib"
661// CHECK-ANDROID-SO-NOT: "gcc_s"
662// CHECK-ANDROID-SO: "-lgcc"
Logan Chien3d3373c2012-11-19 12:04:11 +0000663// CHECK-ANDROID-SO: "-ldl"
Evgeniy Stepanov77866712012-04-25 08:59:22 +0000664// CHECK-ANDROID-SO-NOT: "gcc_s"
Rafael Espindola49ddb862013-06-24 22:07:15 +0000665// CHECK-ANDROID-SO: "{{.*}}{{/|\\\\}}crtend_so.o"
Evgeniy Stepanov77866712012-04-25 08:59:22 +0000666// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000667// RUN: --target=arm-linux-androideabi \
Evgeniy Stepanov763671e2012-09-03 09:05:50 +0000668// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
Evgeniy Stepanov77866712012-04-25 08:59:22 +0000669// RUN: -static \
670// RUN: | FileCheck --check-prefix=CHECK-ANDROID-STATIC %s
Logan Chienc6fd8202012-09-02 09:30:11 +0000671// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000672// RUN: --target=arm-linux-android \
Evgeniy Stepanov763671e2012-09-03 09:05:50 +0000673// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
Logan Chienc6fd8202012-09-02 09:30:11 +0000674// RUN: -static \
675// RUN: | FileCheck --check-prefix=CHECK-ANDROID-STATIC %s
Simon Atanasyan53fefd12012-10-03 17:46:38 +0000676// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Logan Chien6a00cc82014-04-23 13:36:23 +0000677// RUN: --target=aarch64-linux-android \
678// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
679// RUN: -static \
680// RUN: | FileCheck --check-prefix=CHECK-ANDROID-STATIC %s
681// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000682// RUN: --target=mipsel-linux-android \
Simon Atanasyan53fefd12012-10-03 17:46:38 +0000683// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
684// RUN: -static \
685// RUN: | FileCheck --check-prefix=CHECK-ANDROID-STATIC %s
Rafael Espindola7df35012012-11-02 20:41:30 +0000686// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Simon Atanasyan68855fe32014-01-25 16:04:08 +0000687// RUN: --target=mips64el-linux-android \
688// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
689// RUN: -static \
690// RUN: | FileCheck --check-prefix=CHECK-ANDROID-STATIC %s
691// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Alexey Bataev75db8c32014-01-13 03:49:38 +0000692// RUN: --target=i686-linux-android \
Rafael Espindola7df35012012-11-02 20:41:30 +0000693// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
694// RUN: -static \
695// RUN: | FileCheck --check-prefix=CHECK-ANDROID-STATIC %s
Alexey Bataevcf7ae302014-01-23 09:08:32 +0000696// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
697// RUN: --target=x86-linux-android \
698// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
699// RUN: -static \
700// RUN: | FileCheck --check-prefix=CHECK-ANDROID-STATIC %s
Evgeniy Stepanov77866712012-04-25 08:59:22 +0000701// CHECK-ANDROID-STATIC: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
Rafael Espindola49ddb862013-06-24 22:07:15 +0000702// CHECK-ANDROID-STATIC: "{{.*}}{{/|\\\\}}crtbegin_static.o"
Evgeniy Stepanov77866712012-04-25 08:59:22 +0000703// CHECK-ANDROID-STATIC: "-L[[SYSROOT]]/usr/lib"
704// CHECK-ANDROID-STATIC-NOT: "gcc_s"
705// CHECK-ANDROID-STATIC: "-lgcc"
Logan Chien3d3373c2012-11-19 12:04:11 +0000706// CHECK-ANDROID-STATIC-NOT: "-ldl"
Evgeniy Stepanov77866712012-04-25 08:59:22 +0000707// CHECK-ANDROID-STATIC-NOT: "gcc_s"
Rafael Espindola49ddb862013-06-24 22:07:15 +0000708// CHECK-ANDROID-STATIC: "{{.*}}{{/|\\\\}}crtend_android.o"
Evgeniy Stepanovc9cde482012-09-10 10:30:12 +0000709// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000710// RUN: --target=arm-linux-androideabi \
Evgeniy Stepanovc9cde482012-09-10 10:30:12 +0000711// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
712// RUN: -pie \
713// RUN: | FileCheck --check-prefix=CHECK-ANDROID-PIE %s
714// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000715// RUN: --target=arm-linux-android \
Evgeniy Stepanovc9cde482012-09-10 10:30:12 +0000716// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
717// RUN: -pie \
718// RUN: | FileCheck --check-prefix=CHECK-ANDROID-PIE %s
Simon Atanasyan53fefd12012-10-03 17:46:38 +0000719// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Logan Chien6a00cc82014-04-23 13:36:23 +0000720// RUN: --target=aarch64-linux-android \
721// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
722// RUN: -pie \
723// RUN: | FileCheck --check-prefix=CHECK-ANDROID-PIE %s
724// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000725// RUN: --target=mipsel-linux-android \
Simon Atanasyan53fefd12012-10-03 17:46:38 +0000726// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
727// RUN: -pie \
728// RUN: | FileCheck --check-prefix=CHECK-ANDROID-PIE %s
Rafael Espindola7df35012012-11-02 20:41:30 +0000729// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Simon Atanasyan68855fe32014-01-25 16:04:08 +0000730// RUN: --target=mips64el-linux-android \
731// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
732// RUN: -pie \
733// RUN: | FileCheck --check-prefix=CHECK-ANDROID-PIE %s
734// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Alexey Bataev75db8c32014-01-13 03:49:38 +0000735// RUN: --target=i686-linux-android \
Rafael Espindola7df35012012-11-02 20:41:30 +0000736// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
737// RUN: -pie \
738// RUN: | FileCheck --check-prefix=CHECK-ANDROID-PIE %s
Alexey Bataevcf7ae302014-01-23 09:08:32 +0000739// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
740// RUN: --target=x86_64-linux-android \
741// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
742// RUN: -pie \
743// RUN: | FileCheck --check-prefix=CHECK-ANDROID-PIE %s
Evgeniy Stepanovc9cde482012-09-10 10:30:12 +0000744// CHECK-ANDROID-PIE: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
Rafael Espindola49ddb862013-06-24 22:07:15 +0000745// CHECK-ANDROID-PIE: "{{.*}}{{/|\\\\}}crtbegin_dynamic.o"
Evgeniy Stepanovc9cde482012-09-10 10:30:12 +0000746// CHECK-ANDROID-PIE: "-L[[SYSROOT]]/usr/lib"
747// CHECK-ANDROID-PIE-NOT: "gcc_s"
748// CHECK-ANDROID-PIE: "-lgcc"
749// CHECK-ANDROID-PIE-NOT: "gcc_s"
Rafael Espindola49ddb862013-06-24 22:07:15 +0000750// CHECK-ANDROID-PIE: "{{.*}}{{/|\\\\}}crtend_android.o"
Alexey Bataevcf7ae302014-01-23 09:08:32 +0000751// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
752// RUN: --target=arm-linux-androideabi \
753// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
754// RUN: | FileCheck --check-prefix=CHECK-ANDROID-32 %s
755// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
756// RUN: --target=arm-linux-android \
757// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
758// RUN: | FileCheck --check-prefix=CHECK-ANDROID-32 %s
759// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
760// RUN: --target=mipsel-linux-android \
761// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
762// RUN: | FileCheck --check-prefix=CHECK-ANDROID-32 %s
763// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Logan Chien6a00cc82014-04-23 13:36:23 +0000764// RUN: --target=aarch64-linux-android \
765// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
766// RUN: | FileCheck --check-prefix=CHECK-ANDROID-64 %s
767// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Simon Atanasyan68855fe32014-01-25 16:04:08 +0000768// RUN: --target=mips64el-linux-android \
769// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
770// RUN: | FileCheck --check-prefix=CHECK-ANDROID-64 %s
771// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Alexey Bataevcf7ae302014-01-23 09:08:32 +0000772// RUN: --target=i686-linux-android \
773// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
774// RUN: | FileCheck --check-prefix=CHECK-ANDROID-32 %s
775// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
776// RUN: --target=x86_64-linux-android \
777// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
778// RUN: | FileCheck --check-prefix=CHECK-ANDROID-64 %s
779// CHECK-ANDROID-32: "-dynamic-linker" "/system/bin/linker"
780// CHECK-ANDROID-64: "-dynamic-linker" "/system/bin/linker64"
Simon Atanasyand4413882012-09-14 11:27:24 +0000781//
782// Check linker invocation on Debian 6 MIPS 32/64-bit.
783// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000784// RUN: --target=mipsel-linux-gnu \
Simon Atanasyand4413882012-09-14 11:27:24 +0000785// RUN: --sysroot=%S/Inputs/debian_6_mips_tree \
786// RUN: | FileCheck --check-prefix=CHECK-DEBIAN-ML-MIPSEL %s
787// CHECK-DEBIAN-ML-MIPSEL: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
Rafael Espindola49ddb862013-06-24 22:07:15 +0000788// CHECK-DEBIAN-ML-MIPSEL: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.4/../../../../lib{{/|\\\\}}crt1.o"
789// CHECK-DEBIAN-ML-MIPSEL: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.4/../../../../lib{{/|\\\\}}crti.o"
790// CHECK-DEBIAN-ML-MIPSEL: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.4{{/|\\\\}}crtbegin.o"
Simon Atanasyand4413882012-09-14 11:27:24 +0000791// CHECK-DEBIAN-ML-MIPSEL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.4"
792// CHECK-DEBIAN-ML-MIPSEL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.4/../../../../lib"
793// CHECK-DEBIAN-ML-MIPSEL: "-L[[SYSROOT]]/lib/../lib"
794// CHECK-DEBIAN-ML-MIPSEL: "-L[[SYSROOT]]/usr/lib/../lib"
795// CHECK-DEBIAN-ML-MIPSEL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.4/../../.."
796// CHECK-DEBIAN-ML-MIPSEL: "-L[[SYSROOT]]/lib"
797// CHECK-DEBIAN-ML-MIPSEL: "-L[[SYSROOT]]/usr/lib"
798//
799// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000800// RUN: --target=mips64el-linux-gnu \
Simon Atanasyand4413882012-09-14 11:27:24 +0000801// RUN: --sysroot=%S/Inputs/debian_6_mips_tree \
802// RUN: | FileCheck --check-prefix=CHECK-DEBIAN-ML-MIPS64EL %s
803// CHECK-DEBIAN-ML-MIPS64EL: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
Rafael Espindola49ddb862013-06-24 22:07:15 +0000804// CHECK-DEBIAN-ML-MIPS64EL: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.4/../../../../lib64{{/|\\\\}}crt1.o"
805// CHECK-DEBIAN-ML-MIPS64EL: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.4/../../../../lib64{{/|\\\\}}crti.o"
806// CHECK-DEBIAN-ML-MIPS64EL: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.4/64{{/|\\\\}}crtbegin.o"
Simon Atanasyand4413882012-09-14 11:27:24 +0000807// CHECK-DEBIAN-ML-MIPS64EL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.4/64"
808// CHECK-DEBIAN-ML-MIPS64EL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.4/../../../../lib64"
809// CHECK-DEBIAN-ML-MIPS64EL: "-L[[SYSROOT]]/lib/../lib64"
810// CHECK-DEBIAN-ML-MIPS64EL: "-L[[SYSROOT]]/usr/lib/../lib64"
811// CHECK-DEBIAN-ML-MIPS64EL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.4/../../.."
812// CHECK-DEBIAN-ML-MIPS64EL: "-L[[SYSROOT]]/lib"
813// CHECK-DEBIAN-ML-MIPS64EL: "-L[[SYSROOT]]/usr/lib"
Hal Finkelf3587912012-09-18 22:25:07 +0000814//
Simon Atanasyan2d1b1ad2012-10-21 11:44:57 +0000815// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000816// RUN: --target=mips64el-linux-gnu -mabi=n32 \
Simon Atanasyan2d1b1ad2012-10-21 11:44:57 +0000817// RUN: --sysroot=%S/Inputs/debian_6_mips_tree \
818// RUN: | FileCheck --check-prefix=CHECK-DEBIAN-ML-MIPS64EL-N32 %s
819// CHECK-DEBIAN-ML-MIPS64EL-N32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
Rafael Espindola49ddb862013-06-24 22:07:15 +0000820// CHECK-DEBIAN-ML-MIPS64EL-N32: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.4/../../../../lib32{{/|\\\\}}crt1.o"
821// CHECK-DEBIAN-ML-MIPS64EL-N32: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.4/../../../../lib32{{/|\\\\}}crti.o"
822// CHECK-DEBIAN-ML-MIPS64EL-N32: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.4/n32{{/|\\\\}}crtbegin.o"
Simon Atanasyan2d1b1ad2012-10-21 11:44:57 +0000823// CHECK-DEBIAN-ML-MIPS64EL-N32: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.4/n32"
824// CHECK-DEBIAN-ML-MIPS64EL-N32: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.4/../../../../lib32"
825// CHECK-DEBIAN-ML-MIPS64EL-N32: "-L[[SYSROOT]]/lib/../lib32"
826// CHECK-DEBIAN-ML-MIPS64EL-N32: "-L[[SYSROOT]]/usr/lib/../lib32"
827// CHECK-DEBIAN-ML-MIPS64EL-N32: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.4/../../.."
828// CHECK-DEBIAN-ML-MIPS64EL-N32: "-L[[SYSROOT]]/lib"
829// CHECK-DEBIAN-ML-MIPS64EL-N32: "-L[[SYSROOT]]/usr/lib"
830//
Hal Finkelf3587912012-09-18 22:25:07 +0000831// Test linker invocation for Freescale SDK (OpenEmbedded).
832// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000833// RUN: --target=powerpc-fsl-linux \
Hal Finkelf3587912012-09-18 22:25:07 +0000834// RUN: --sysroot=%S/Inputs/freescale_ppc_tree \
835// RUN: | FileCheck --check-prefix=CHECK-FSL-PPC %s
836// CHECK-FSL-PPC: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
837// CHECK-FSL-PPC: "-m" "elf32ppclinux"
Rafael Espindola49ddb862013-06-24 22:07:15 +0000838// CHECK-FSL-PPC: "{{.*}}{{/|\\\\}}crt1.o"
839// CHECK-FSL-PPC: "{{.*}}{{/|\\\\}}crtbegin.o"
Hal Finkelf3587912012-09-18 22:25:07 +0000840// CHECK-FSL-PPC: "-L[[SYSROOT]]/usr/lib"
841// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000842// RUN: --target=powerpc64-fsl-linux \
Hal Finkelf3587912012-09-18 22:25:07 +0000843// RUN: --sysroot=%S/Inputs/freescale_ppc64_tree \
844// RUN: | FileCheck --check-prefix=CHECK-FSL-PPC64 %s
845// CHECK-FSL-PPC64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
846// CHECK-FSL-PPC64: "-m" "elf64ppc"
Rafael Espindola49ddb862013-06-24 22:07:15 +0000847// CHECK-FSL-PPC64: "{{.*}}{{/|\\\\}}crt1.o"
848// CHECK-FSL-PPC64: "{{.*}}{{/|\\\\}}crtbegin.o"
Hal Finkelf3587912012-09-18 22:25:07 +0000849// CHECK-FSL-PPC64: "-L[[SYSROOT]]/usr/lib64/powerpc64-fsl-linux/4.6.2/../.."
Benjamin Kramer058666a2012-10-04 19:42:20 +0000850//
Benjamin Kramerab88f622014-03-25 18:02:07 +0000851// Check that crtfastmath.o is linked with -ffast-math and with -Ofast.
Chandler Carruth274b6f02013-06-20 09:42:40 +0000852// RUN: %clang --target=x86_64-unknown-linux -### %s \
Benjamin Kramer058666a2012-10-04 19:42:20 +0000853// RUN: --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
854// RUN: | FileCheck --check-prefix=CHECK-NOCRTFASTMATH %s
Chandler Carruth274b6f02013-06-20 09:42:40 +0000855// RUN: %clang --target=x86_64-unknown-linux -### %s -ffast-math \
Benjamin Kramer058666a2012-10-04 19:42:20 +0000856// RUN: --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
857// RUN: | FileCheck --check-prefix=CHECK-CRTFASTMATH %s
Chandler Carruth274b6f02013-06-20 09:42:40 +0000858// RUN: %clang --target=x86_64-unknown-linux -### %s -funsafe-math-optimizations\
Benjamin Kramer058666a2012-10-04 19:42:20 +0000859// RUN: --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
860// RUN: | FileCheck --check-prefix=CHECK-CRTFASTMATH %s
Benjamin Kramerab88f622014-03-25 18:02:07 +0000861// RUN: %clang --target=x86_64-unknown-linux -### %s -Ofast\
862// RUN: --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
863// RUN: | FileCheck --check-prefix=CHECK-CRTFASTMATH %s
864// RUN: %clang --target=x86_64-unknown-linux -### %s -Ofast -O3\
865// RUN: --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
866// RUN: | FileCheck --check-prefix=CHECK-NOCRTFASTMATH %s
867// RUN: %clang --target=x86_64-unknown-linux -### %s -O3 -Ofast\
868// RUN: --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
869// RUN: | FileCheck --check-prefix=CHECK-CRTFASTMATH %s
Chandler Carruth274b6f02013-06-20 09:42:40 +0000870// RUN: %clang --target=x86_64-unknown-linux -### %s -ffast-math -fno-fast-math \
Benjamin Kramer058666a2012-10-04 19:42:20 +0000871// RUN: --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
872// RUN: | FileCheck --check-prefix=CHECK-NOCRTFASTMATH %s
Benjamin Kramerab88f622014-03-25 18:02:07 +0000873// RUN: %clang --target=x86_64-unknown-linux -### %s -Ofast -fno-fast-math \
874// RUN: --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
875// RUN: | FileCheck --check-prefix=CHECK-CRTFASTMATH %s
876// RUN: %clang --target=x86_64-unknown-linux -### %s -Ofast -fno-unsafe-math-optimizations \
877// RUN: --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
878// RUN: | FileCheck --check-prefix=CHECK-CRTFASTMATH %s
879// RUN: %clang --target=x86_64-unknown-linux -### %s -fno-fast-math -Ofast \
880// RUN: --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
881// RUN: | FileCheck --check-prefix=CHECK-CRTFASTMATH %s
882// RUN: %clang --target=x86_64-unknown-linux -### %s -fno-unsafe-math-optimizations -Ofast \
883// RUN: --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
884// RUN: | FileCheck --check-prefix=CHECK-CRTFASTMATH %s
Benjamin Kramer058666a2012-10-04 19:42:20 +0000885// We don't have crtfastmath.o in the i386 tree, use it to check that file
886// detection works.
Chandler Carruth274b6f02013-06-20 09:42:40 +0000887// RUN: %clang --target=i386-unknown-linux -### %s -ffast-math \
Benjamin Kramer058666a2012-10-04 19:42:20 +0000888// RUN: --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
889// RUN: | FileCheck --check-prefix=CHECK-NOCRTFASTMATH %s
Rafael Espindola49ddb862013-06-24 22:07:15 +0000890// CHECK-CRTFASTMATH: usr/lib/gcc/x86_64-unknown-linux/4.6.0{{/|\\\\}}crtfastmath.o
Benjamin Kramer058666a2012-10-04 19:42:20 +0000891// CHECK-NOCRTFASTMATH-NOT: crtfastmath.o
Eric Christopherac021742013-06-07 23:25:01 +0000892
893// Check that we link in gcrt1.o when compiling with -pg
Chandler Carruth274b6f02013-06-20 09:42:40 +0000894// RUN: %clang -pg --target=x86_64-unknown-linux -### %s \
Eric Christopherac021742013-06-07 23:25:01 +0000895// RUN: --sysroot=%S/Inputs/basic_linux_tree 2>& 1 \
896// RUN: | FileCheck --check-prefix=CHECK-PG %s
897// CHECK-PG: gcrt1.o