blob: 5509e5341962b3c6bb956be134f778ba32e9ddb9 [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"
Alexey Samsonov99ee10d2014-05-22 21:13:30 +000052// CHECK-LD-RT: libclang_rt.builtins-x86_64.a" "-lgcc_s"
Renato Golinc4b49242014-02-13 10:01:16 +000053// CHECK-LD-RT: "-lc"
Alexey Samsonov99ee10d2014-05-22 21:13:30 +000054// CHECK-LD-RT: libclang_rt.builtins-x86_64.a" "-lgcc_s"
Renato Golinc4b49242014-02-13 10:01:16 +000055//
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//
Tilmann Schellere914bc82014-05-06 16:58:14 +0000364// Check Fedora 21 on AArch64.
365// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
366// RUN: --target=arm64-unknown-linux-gnu \
367// RUN: --sysroot=%S/Inputs/fedora_21_tree \
368// RUN: | FileCheck --check-prefix=CHECK-FEDORA-21-AARCH64 %s
369// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
370// RUN: --target=aarch64-unknown-linux-gnu \
371// RUN: --sysroot=%S/Inputs/fedora_21_tree \
372// RUN: | FileCheck --check-prefix=CHECK-FEDORA-21-AARCH64 %s
373// CHECK-FEDORA-21-AARCH64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
374// CHECK-FEDORA-21-AARCH64: "{{.*}}/usr/lib/gcc/aarch64-redhat-linux/4.9.0/../../../../lib64{{/|\\\\}}crt1.o"
375// CHECK-FEDORA-21-AARCH64: "{{.*}}/usr/lib/gcc/aarch64-redhat-linux/4.9.0/../../../../lib64{{/|\\\\}}crti.o"
376// CHECK-FEDORA-21-AARCH64: "{{.*}}/usr/lib/gcc/aarch64-redhat-linux/4.9.0{{/|\\\\}}crtbegin.o"
377// CHECK-FEDORA-21-AARCH64: "-L[[SYSROOT]]/usr/lib/gcc/aarch64-redhat-linux/4.9.0"
378// CHECK-FEDORA-21-AARCH64: "-L[[SYSROOT]]/usr/lib/gcc/aarch64-redhat-linux/4.9.0/../../../../lib64"
379// CHECK-FEDORA-21-AARCH64: "{{.*}}/usr/lib/gcc/aarch64-redhat-linux/4.9.0{{/|\\\\}}crtend.o"
380// CHECK-FEDORA-21-AARCH64: "{{.*}}/usr/lib/gcc/aarch64-redhat-linux/4.9.0/../../../../lib64{{/|\\\\}}crtn.o"
381//
Jiangning Liu61b06cb2012-07-31 08:06:29 +0000382// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000383// RUN: --target=arm-unknown-linux-gnueabi \
Jiangning Liu61b06cb2012-07-31 08:06:29 +0000384// RUN: --sysroot=%S/Inputs/ubuntu_12.04_LTS_multiarch_tree \
385// RUN: | FileCheck --check-prefix=CHECK-UBUNTU-12-04-ARM %s
386// CHECK-UBUNTU-12-04-ARM: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
Rafael Espindola49ddb862013-06-24 22:07:15 +0000387// CHECK-UBUNTU-12-04-ARM: "{{.*}}/usr/lib/gcc/arm-linux-gnueabi/4.6.1/../../../arm-linux-gnueabi{{/|\\\\}}crt1.o"
388// CHECK-UBUNTU-12-04-ARM: "{{.*}}/usr/lib/gcc/arm-linux-gnueabi/4.6.1/../../../arm-linux-gnueabi{{/|\\\\}}crti.o"
389// CHECK-UBUNTU-12-04-ARM: "{{.*}}/usr/lib/gcc/arm-linux-gnueabi/4.6.1{{/|\\\\}}crtbegin.o"
Jiangning Liu61b06cb2012-07-31 08:06:29 +0000390// CHECK-UBUNTU-12-04-ARM: "-L[[SYSROOT]]/usr/lib/gcc/arm-linux-gnueabi/4.6.1"
391// CHECK-UBUNTU-12-04-ARM: "-L[[SYSROOT]]/usr/lib/gcc/arm-linux-gnueabi/4.6.1/../../../arm-linux-gnueabi"
392// CHECK-UBUNTU-12-04-ARM: "-L[[SYSROOT]]/lib/arm-linux-gnueabi"
393// CHECK-UBUNTU-12-04-ARM: "-L[[SYSROOT]]/usr/lib/arm-linux-gnueabi"
394// CHECK-UBUNTU-12-04-ARM: "-L[[SYSROOT]]/usr/lib/gcc/arm-linux-gnueabi/4.6.1/../../.."
Rafael Espindola49ddb862013-06-24 22:07:15 +0000395// CHECK-UBUNTU-12-04-ARM: "{{.*}}/usr/lib/gcc/arm-linux-gnueabi/4.6.1{{/|\\\\}}crtend.o"
396// 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 +0000397//
Hal Finkel6b89a102011-12-08 20:36:19 +0000398// Test the setup that shipped in SUSE 10.3 on ppc64.
399// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000400// RUN: --target=powerpc64-suse-linux \
Hal Finkel6b89a102011-12-08 20:36:19 +0000401// RUN: --sysroot=%S/Inputs/suse_10.3_ppc64_tree \
402// RUN: | FileCheck --check-prefix=CHECK-SUSE-10-3-PPC64 %s
403// CHECK-SUSE-10-3-PPC64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
Rafael Espindola49ddb862013-06-24 22:07:15 +0000404// CHECK-SUSE-10-3-PPC64: "{{.*}}/usr/lib/gcc/powerpc64-suse-linux/4.1.2/64{{/|\\\\}}crtbegin.o"
Hal Finkel6b89a102011-12-08 20:36:19 +0000405// CHECK-SUSE-10-3-PPC64: "-L[[SYSROOT]]/usr/lib/gcc/powerpc64-suse-linux/4.1.2/64"
406// CHECK-SUSE-10-3-PPC64: "-L[[SYSROOT]]/usr/lib/gcc/powerpc64-suse-linux/4.1.2/../../../../lib64"
407// CHECK-SUSE-10-3-PPC64: "-L[[SYSROOT]]/lib/../lib64"
408// CHECK-SUSE-10-3-PPC64: "-L[[SYSROOT]]/usr/lib/../lib64"
Chandler Carruth7cf80e382011-12-17 21:57:25 +0000409//
Jiangning Liueabbf922012-07-30 11:05:56 +0000410// Check dynamic-linker for different archs
411// RUN: %clang %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000412// RUN: --target=arm-linux-gnueabi \
Jiangning Liueabbf922012-07-30 11:05:56 +0000413// RUN: | FileCheck --check-prefix=CHECK-ARM %s
414// CHECK-ARM: "{{.*}}ld{{(.exe)?}}"
415// CHECK-ARM: "-m" "armelf_linux_eabi"
416// CHECK-ARM: "-dynamic-linker" "{{.*}}/lib/ld-linux.so.3"
417//
418// RUN: %clang %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000419// RUN: --target=arm-linux-gnueabihf \
Jiangning Liueabbf922012-07-30 11:05:56 +0000420// RUN: | FileCheck --check-prefix=CHECK-ARM-HF %s
421// CHECK-ARM-HF: "{{.*}}ld{{(.exe)?}}"
422// CHECK-ARM-HF: "-m" "armelf_linux_eabi"
423// CHECK-ARM-HF: "-dynamic-linker" "{{.*}}/lib/ld-linux-armhf.so.3"
424//
Chandler Carruth7cf80e382011-12-17 21:57:25 +0000425// Check that we do not pass --hash-style=gnu and --hash-style=both to linker
Simon Atanasyan1e1e2e22012-04-06 20:14:27 +0000426// and provide correct path to the dynamic linker and emulation mode when build
427// for MIPS platforms.
Chandler Carruth7cf80e382011-12-17 21:57:25 +0000428// RUN: %clang %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000429// RUN: --target=mips-linux-gnu \
Chandler Carruth7cf80e382011-12-17 21:57:25 +0000430// RUN: | FileCheck --check-prefix=CHECK-MIPS %s
431// CHECK-MIPS: "{{.*}}ld{{(.exe)?}}"
Simon Atanasyan1e1e2e22012-04-06 20:14:27 +0000432// CHECK-MIPS: "-m" "elf32btsmip"
433// CHECK-MIPS: "-dynamic-linker" "{{.*}}/lib/ld.so.1"
Chandler Carruth7cf80e382011-12-17 21:57:25 +0000434// CHECK-MIPS-NOT: "--hash-style={{gnu|both}}"
435// RUN: %clang %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000436// RUN: --target=mipsel-linux-gnu \
Chandler Carruth7cf80e382011-12-17 21:57:25 +0000437// RUN: | FileCheck --check-prefix=CHECK-MIPSEL %s
438// CHECK-MIPSEL: "{{.*}}ld{{(.exe)?}}"
Simon Atanasyan1e1e2e22012-04-06 20:14:27 +0000439// CHECK-MIPSEL: "-m" "elf32ltsmip"
440// CHECK-MIPSEL: "-dynamic-linker" "{{.*}}/lib/ld.so.1"
Chandler Carruth7cf80e382011-12-17 21:57:25 +0000441// CHECK-MIPSEL-NOT: "--hash-style={{gnu|both}}"
442// RUN: %clang %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000443// RUN: --target=mips64-linux-gnu \
Chandler Carruth7cf80e382011-12-17 21:57:25 +0000444// RUN: | FileCheck --check-prefix=CHECK-MIPS64 %s
445// CHECK-MIPS64: "{{.*}}ld{{(.exe)?}}"
Simon Atanasyan1e1e2e22012-04-06 20:14:27 +0000446// CHECK-MIPS64: "-m" "elf64btsmip"
447// CHECK-MIPS64: "-dynamic-linker" "{{.*}}/lib64/ld.so.1"
Chandler Carruth7cf80e382011-12-17 21:57:25 +0000448// CHECK-MIPS64-NOT: "--hash-style={{gnu|both}}"
449// RUN: %clang %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000450// RUN: --target=mips64el-linux-gnu \
Chandler Carruth7cf80e382011-12-17 21:57:25 +0000451// RUN: | FileCheck --check-prefix=CHECK-MIPS64EL %s
452// CHECK-MIPS64EL: "{{.*}}ld{{(.exe)?}}"
Simon Atanasyan1e1e2e22012-04-06 20:14:27 +0000453// CHECK-MIPS64EL: "-m" "elf64ltsmip"
454// CHECK-MIPS64EL: "-dynamic-linker" "{{.*}}/lib64/ld.so.1"
Chandler Carruth7cf80e382011-12-17 21:57:25 +0000455// CHECK-MIPS64EL-NOT: "--hash-style={{gnu|both}}"
Simon Atanasyan2d1b1ad2012-10-21 11:44:57 +0000456// RUN: %clang %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000457// RUN: --target=mips64-linux-gnu -mabi=n32 \
Simon Atanasyan2d1b1ad2012-10-21 11:44:57 +0000458// RUN: | FileCheck --check-prefix=CHECK-MIPS64-N32 %s
459// CHECK-MIPS64-N32: "{{.*}}ld{{(.exe)?}}"
460// CHECK-MIPS64-N32: "-m" "elf32btsmipn32"
461// CHECK-MIPS64-N32: "-dynamic-linker" "{{.*}}/lib32/ld.so.1"
462// CHECK-MIPS64-N32-NOT: "--hash-style={{gnu|both}}"
463// RUN: %clang %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000464// RUN: --target=mips64el-linux-gnu -mabi=n32 \
Simon Atanasyan2d1b1ad2012-10-21 11:44:57 +0000465// RUN: | FileCheck --check-prefix=CHECK-MIPS64EL-N32 %s
466// CHECK-MIPS64EL-N32: "{{.*}}ld{{(.exe)?}}"
467// CHECK-MIPS64EL-N32: "-m" "elf32ltsmipn32"
468// CHECK-MIPS64EL-N32: "-dynamic-linker" "{{.*}}/lib32/ld.so.1"
469// CHECK-MIPS64EL-N32-NOT: "--hash-style={{gnu|both}}"
Chandler Carruthaf3c2092012-02-26 09:03:21 +0000470//
Jakob Stoklund Olesen91a8e032014-01-10 03:51:33 +0000471// RUN: %clang %s -### -o %t.o 2>&1 \
472// RUN: --target=sparc-linux-gnu \
473// RUN: | FileCheck --check-prefix=CHECK-SPARCV8 %s
474// CHECK-SPARCV8: "{{.*}}ld{{(.exe)?}}"
475// CHECK-SPARCV8: "-m" "elf32_sparc"
Jakob Stoklund Olesen73cb84c2014-01-10 08:18:34 +0000476// CHECK-SPARCV8: "-dynamic-linker" "/lib/ld-linux.so.2"
Jakob Stoklund Olesen91a8e032014-01-10 03:51:33 +0000477//
478// RUN: %clang %s -### -o %t.o 2>&1 \
479// RUN: --target=sparcv9-linux-gnu \
480// RUN: | FileCheck --check-prefix=CHECK-SPARCV9 %s
481// CHECK-SPARCV9: "{{.*}}ld{{(.exe)?}}"
482// CHECK-SPARCV9: "-m" "elf64_sparc"
Jakob Stoklund Olesen73cb84c2014-01-10 08:18:34 +0000483// CHECK-SPARCV9: "-dynamic-linker" "/lib64/ld-linux.so.2"
Jakob Stoklund Olesen91a8e032014-01-10 03:51:33 +0000484//
Chandler Carruthaf3c2092012-02-26 09:03:21 +0000485// Thoroughly exercise the Debian multiarch environment.
486// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000487// RUN: --target=i686-linux-gnu \
Chandler Carruthaf3c2092012-02-26 09:03:21 +0000488// RUN: --sysroot=%S/Inputs/debian_multiarch_tree \
489// RUN: | FileCheck --check-prefix=CHECK-DEBIAN-X86 %s
490// CHECK-DEBIAN-X86: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
Rafael Espindola49ddb862013-06-24 22:07:15 +0000491// CHECK-DEBIAN-X86: "{{.*}}/usr/lib/gcc/i686-linux-gnu/4.5{{/|\\\\}}crtbegin.o"
Chandler Carruthaf3c2092012-02-26 09:03:21 +0000492// CHECK-DEBIAN-X86: "-L[[SYSROOT]]/usr/lib/gcc/i686-linux-gnu/4.5"
493// CHECK-DEBIAN-X86: "-L[[SYSROOT]]/usr/lib/gcc/i686-linux-gnu/4.5/../../../i386-linux-gnu"
494// CHECK-DEBIAN-X86: "-L[[SYSROOT]]/usr/lib/i386-linux-gnu"
495// CHECK-DEBIAN-X86: "-L[[SYSROOT]]/usr/lib/gcc/i686-linux-gnu/4.5/../../.."
496// CHECK-DEBIAN-X86: "-L[[SYSROOT]]/lib"
497// CHECK-DEBIAN-X86: "-L[[SYSROOT]]/usr/lib"
498// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000499// RUN: --target=x86_64-linux-gnu \
Chandler Carruthaf3c2092012-02-26 09:03:21 +0000500// RUN: --sysroot=%S/Inputs/debian_multiarch_tree \
501// RUN: | FileCheck --check-prefix=CHECK-DEBIAN-X86-64 %s
502// CHECK-DEBIAN-X86-64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
Rafael Espindola49ddb862013-06-24 22:07:15 +0000503// CHECK-DEBIAN-X86-64: "{{.*}}/usr/lib/gcc/x86_64-linux-gnu/4.5{{/|\\\\}}crtbegin.o"
Chandler Carruthaf3c2092012-02-26 09:03:21 +0000504// CHECK-DEBIAN-X86-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/4.5"
505// CHECK-DEBIAN-X86-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/4.5/../../../x86_64-linux-gnu"
506// CHECK-DEBIAN-X86-64: "-L[[SYSROOT]]/usr/lib/x86_64-linux-gnu"
507// CHECK-DEBIAN-X86-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/4.5/../../.."
508// CHECK-DEBIAN-X86-64: "-L[[SYSROOT]]/lib"
509// CHECK-DEBIAN-X86-64: "-L[[SYSROOT]]/usr/lib"
510// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000511// RUN: --target=powerpc-linux-gnu \
Chandler Carruthaf3c2092012-02-26 09:03:21 +0000512// RUN: --sysroot=%S/Inputs/debian_multiarch_tree \
513// RUN: | FileCheck --check-prefix=CHECK-DEBIAN-PPC %s
514// CHECK-DEBIAN-PPC: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
Rafael Espindola49ddb862013-06-24 22:07:15 +0000515// CHECK-DEBIAN-PPC: "{{.*}}/usr/lib/gcc/powerpc-linux-gnu/4.5{{/|\\\\}}crtbegin.o"
Chandler Carruthaf3c2092012-02-26 09:03:21 +0000516// CHECK-DEBIAN-PPC: "-L[[SYSROOT]]/usr/lib/gcc/powerpc-linux-gnu/4.5"
517// CHECK-DEBIAN-PPC: "-L[[SYSROOT]]/usr/lib/gcc/powerpc-linux-gnu/4.5/../../../powerpc-linux-gnu"
518// CHECK-DEBIAN-PPC: "-L[[SYSROOT]]/usr/lib/powerpc-linux-gnu"
519// CHECK-DEBIAN-PPC: "-L[[SYSROOT]]/usr/lib/gcc/powerpc-linux-gnu/4.5/../../.."
520// CHECK-DEBIAN-PPC: "-L[[SYSROOT]]/lib"
521// CHECK-DEBIAN-PPC: "-L[[SYSROOT]]/usr/lib"
522// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000523// RUN: --target=powerpc64-linux-gnu \
Chandler Carruthaf3c2092012-02-26 09:03:21 +0000524// RUN: --sysroot=%S/Inputs/debian_multiarch_tree \
525// RUN: | FileCheck --check-prefix=CHECK-DEBIAN-PPC64 %s
526// CHECK-DEBIAN-PPC64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
Rafael Espindola49ddb862013-06-24 22:07:15 +0000527// CHECK-DEBIAN-PPC64: "{{.*}}/usr/lib/gcc/powerpc64-linux-gnu/4.5{{/|\\\\}}crtbegin.o"
Chandler Carruthaf3c2092012-02-26 09:03:21 +0000528// CHECK-DEBIAN-PPC64: "-L[[SYSROOT]]/usr/lib/gcc/powerpc64-linux-gnu/4.5"
529// CHECK-DEBIAN-PPC64: "-L[[SYSROOT]]/usr/lib/gcc/powerpc64-linux-gnu/4.5/../../../powerpc64-linux-gnu"
530// CHECK-DEBIAN-PPC64: "-L[[SYSROOT]]/usr/lib/powerpc64-linux-gnu"
531// CHECK-DEBIAN-PPC64: "-L[[SYSROOT]]/usr/lib/gcc/powerpc64-linux-gnu/4.5/../../.."
532// CHECK-DEBIAN-PPC64: "-L[[SYSROOT]]/lib"
533// CHECK-DEBIAN-PPC64: "-L[[SYSROOT]]/usr/lib"
Simon Atanasyan2be62252012-04-26 08:35:58 +0000534// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000535// RUN: --target=mips-linux-gnu \
Simon Atanasyan2be62252012-04-26 08:35:58 +0000536// RUN: --sysroot=%S/Inputs/debian_multiarch_tree \
537// RUN: | FileCheck --check-prefix=CHECK-DEBIAN-MIPS %s
538// CHECK-DEBIAN-MIPS: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
Rafael Espindola49ddb862013-06-24 22:07:15 +0000539// CHECK-DEBIAN-MIPS: "{{.*}}/usr/lib/gcc/mips-linux-gnu/4.5{{/|\\\\}}crtbegin.o"
Simon Atanasyan2be62252012-04-26 08:35:58 +0000540// CHECK-DEBIAN-MIPS: "-L[[SYSROOT]]/usr/lib/gcc/mips-linux-gnu/4.5"
541// CHECK-DEBIAN-MIPS: "-L[[SYSROOT]]/usr/lib/gcc/mips-linux-gnu/4.5/../../../mips-linux-gnu"
542// CHECK-DEBIAN-MIPS: "-L[[SYSROOT]]/usr/lib/mips-linux-gnu"
543// CHECK-DEBIAN-MIPS: "-L[[SYSROOT]]/usr/lib/gcc/mips-linux-gnu/4.5/../../.."
544// CHECK-DEBIAN-MIPS: "-L[[SYSROOT]]/lib"
545// CHECK-DEBIAN-MIPS: "-L[[SYSROOT]]/usr/lib"
546// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000547// RUN: --target=mipsel-linux-gnu \
Simon Atanasyan2be62252012-04-26 08:35:58 +0000548// RUN: --sysroot=%S/Inputs/debian_multiarch_tree \
549// RUN: | FileCheck --check-prefix=CHECK-DEBIAN-MIPSEL %s
550// CHECK-DEBIAN-MIPSEL: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
Rafael Espindola49ddb862013-06-24 22:07:15 +0000551// CHECK-DEBIAN-MIPSEL: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.5{{/|\\\\}}crtbegin.o"
Simon Atanasyan2be62252012-04-26 08:35:58 +0000552// CHECK-DEBIAN-MIPSEL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.5"
553// CHECK-DEBIAN-MIPSEL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.5/../../../mipsel-linux-gnu"
554// CHECK-DEBIAN-MIPSEL: "-L[[SYSROOT]]/usr/lib/mipsel-linux-gnu"
555// CHECK-DEBIAN-MIPSEL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.5/../../.."
556// CHECK-DEBIAN-MIPSEL: "-L[[SYSROOT]]/lib"
557// CHECK-DEBIAN-MIPSEL: "-L[[SYSROOT]]/usr/lib"
Simon Atanasyan9bb634d2012-04-26 19:57:02 +0000558// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000559// RUN: --target=mips64-linux-gnu \
Simon Atanasyan9bb634d2012-04-26 19:57:02 +0000560// RUN: --sysroot=%S/Inputs/debian_multiarch_tree \
561// RUN: | FileCheck --check-prefix=CHECK-DEBIAN-MIPS64 %s
562// CHECK-DEBIAN-MIPS64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
Rafael Espindola49ddb862013-06-24 22:07:15 +0000563// CHECK-DEBIAN-MIPS64: "{{.*}}/usr/lib/gcc/mips-linux-gnu/4.5/64{{/|\\\\}}crtbegin.o"
Simon Atanasyan9bb634d2012-04-26 19:57:02 +0000564// CHECK-DEBIAN-MIPS64: "-L[[SYSROOT]]/usr/lib/gcc/mips-linux-gnu/4.5/64"
565// CHECK-DEBIAN-MIPS64: "-L[[SYSROOT]]/usr/lib/gcc/mips-linux-gnu/4.5"
566// CHECK-DEBIAN-MIPS64: "-L[[SYSROOT]]/usr/lib/gcc/mips-linux-gnu/4.5/../../.."
567// CHECK-DEBIAN-MIPS64: "-L[[SYSROOT]]/lib"
568// CHECK-DEBIAN-MIPS64: "-L[[SYSROOT]]/usr/lib"
569// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000570// RUN: --target=mips64el-linux-gnu \
Simon Atanasyan9bb634d2012-04-26 19:57:02 +0000571// RUN: --sysroot=%S/Inputs/debian_multiarch_tree \
572// RUN: | FileCheck --check-prefix=CHECK-DEBIAN-MIPS64EL %s
573// CHECK-DEBIAN-MIPS64EL: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
Rafael Espindola49ddb862013-06-24 22:07:15 +0000574// CHECK-DEBIAN-MIPS64EL: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.5/64{{/|\\\\}}crtbegin.o"
Simon Atanasyan9bb634d2012-04-26 19:57:02 +0000575// CHECK-DEBIAN-MIPS64EL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.5/64"
576// CHECK-DEBIAN-MIPS64EL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.5"
577// CHECK-DEBIAN-MIPS64EL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.5/../../.."
578// CHECK-DEBIAN-MIPS64EL: "-L[[SYSROOT]]/lib"
579// CHECK-DEBIAN-MIPS64EL: "-L[[SYSROOT]]/usr/lib"
Simon Atanasyan2d1b1ad2012-10-21 11:44:57 +0000580// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000581// RUN: --target=mips64-linux-gnu -mabi=n32 \
Simon Atanasyan2d1b1ad2012-10-21 11:44:57 +0000582// RUN: --sysroot=%S/Inputs/debian_multiarch_tree \
583// RUN: | FileCheck --check-prefix=CHECK-DEBIAN-MIPS64-N32 %s
584// CHECK-DEBIAN-MIPS64-N32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
Rafael Espindola49ddb862013-06-24 22:07:15 +0000585// CHECK-DEBIAN-MIPS64-N32: "{{.*}}/usr/lib/gcc/mips-linux-gnu/4.5/n32{{/|\\\\}}crtbegin.o"
Simon Atanasyan2d1b1ad2012-10-21 11:44:57 +0000586// CHECK-DEBIAN-MIPS64-N32: "-L[[SYSROOT]]/usr/lib/gcc/mips-linux-gnu/4.5/n32"
587// CHECK-DEBIAN-MIPS64-N32: "-L[[SYSROOT]]/usr/lib/gcc/mips-linux-gnu/4.5"
588// CHECK-DEBIAN-MIPS64-N32: "-L[[SYSROOT]]/usr/lib/gcc/mips-linux-gnu/4.5/../../.."
589// CHECK-DEBIAN-MIPS64-N32: "-L[[SYSROOT]]/lib"
590// CHECK-DEBIAN-MIPS64-N32: "-L[[SYSROOT]]/usr/lib"
591// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000592// RUN: --target=mips64el-linux-gnu -mabi=n32 \
Simon Atanasyan2d1b1ad2012-10-21 11:44:57 +0000593// RUN: --sysroot=%S/Inputs/debian_multiarch_tree \
594// RUN: | FileCheck --check-prefix=CHECK-DEBIAN-MIPS64EL-N32 %s
595// CHECK-DEBIAN-MIPS64EL-N32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
Rafael Espindola49ddb862013-06-24 22:07:15 +0000596// CHECK-DEBIAN-MIPS64EL-N32: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.5/n32{{/|\\\\}}crtbegin.o"
Simon Atanasyan2d1b1ad2012-10-21 11:44:57 +0000597// CHECK-DEBIAN-MIPS64EL-N32: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.5/n32"
598// CHECK-DEBIAN-MIPS64EL-N32: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.5"
599// CHECK-DEBIAN-MIPS64EL-N32: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.5/../../.."
600// CHECK-DEBIAN-MIPS64EL-N32: "-L[[SYSROOT]]/lib"
601// CHECK-DEBIAN-MIPS64EL-N32: "-L[[SYSROOT]]/usr/lib"
Chandler Carruthaf3c2092012-02-26 09:03:21 +0000602//
Evgeniy Stepanov77866712012-04-25 08:59:22 +0000603// Test linker invocation on Android.
604// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000605// RUN: --target=arm-linux-androideabi \
Evgeniy Stepanov763671e2012-09-03 09:05:50 +0000606// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
Evgeniy Stepanov77866712012-04-25 08:59:22 +0000607// RUN: | FileCheck --check-prefix=CHECK-ANDROID %s
Logan Chienc6fd8202012-09-02 09:30:11 +0000608// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000609// RUN: --target=arm-linux-android \
Evgeniy Stepanov763671e2012-09-03 09:05:50 +0000610// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
Logan Chienc6fd8202012-09-02 09:30:11 +0000611// RUN: | FileCheck --check-prefix=CHECK-ANDROID %s
Simon Atanasyan53fefd12012-10-03 17:46:38 +0000612// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Logan Chien6a00cc82014-04-23 13:36:23 +0000613// RUN: --target=aarch64-linux-android \
614// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
615// RUN: | FileCheck --check-prefix=CHECK-ANDROID %s
616// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Bradley Smith4da7dd82014-04-30 10:52:05 +0000617// RUN: --target=arm64-linux-android \
618// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
619// RUN: | FileCheck --check-prefix=CHECK-ANDROID %s
620// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000621// RUN: --target=mipsel-linux-android \
Simon Atanasyan53fefd12012-10-03 17:46:38 +0000622// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
623// RUN: | FileCheck --check-prefix=CHECK-ANDROID %s
Rafael Espindola7df35012012-11-02 20:41:30 +0000624// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Simon Atanasyan68855fe32014-01-25 16:04:08 +0000625// RUN: --target=mips64el-linux-android \
626// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
627// RUN: | FileCheck --check-prefix=CHECK-ANDROID %s
628// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Alexey Bataev75db8c32014-01-13 03:49:38 +0000629// RUN: --target=i686-linux-android \
Rafael Espindola7df35012012-11-02 20:41:30 +0000630// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
631// RUN: | FileCheck --check-prefix=CHECK-ANDROID %s
Alexey Bataevcf7ae302014-01-23 09:08:32 +0000632// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
633// RUN: --target=x86_64-linux-android \
634// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
635// RUN: | FileCheck --check-prefix=CHECK-ANDROID %s
Evgeniy Stepanov77866712012-04-25 08:59:22 +0000636// CHECK-ANDROID: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
Rafael Espindola49ddb862013-06-24 22:07:15 +0000637// CHECK-ANDROID: "{{.*}}{{/|\\\\}}crtbegin_dynamic.o"
Evgeniy Stepanov77866712012-04-25 08:59:22 +0000638// CHECK-ANDROID: "-L[[SYSROOT]]/usr/lib"
639// CHECK-ANDROID-NOT: "gcc_s"
640// CHECK-ANDROID: "-lgcc"
Logan Chien3d3373c2012-11-19 12:04:11 +0000641// CHECK-ANDROID: "-ldl"
Evgeniy Stepanov77866712012-04-25 08:59:22 +0000642// CHECK-ANDROID-NOT: "gcc_s"
Rafael Espindola49ddb862013-06-24 22:07:15 +0000643// CHECK-ANDROID: "{{.*}}{{/|\\\\}}crtend_android.o"
Evgeniy Stepanov77866712012-04-25 08:59:22 +0000644// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000645// RUN: --target=arm-linux-androideabi \
Evgeniy Stepanov763671e2012-09-03 09:05:50 +0000646// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
Evgeniy Stepanov77866712012-04-25 08:59:22 +0000647// RUN: -shared \
648// RUN: | FileCheck --check-prefix=CHECK-ANDROID-SO %s
Logan Chienc6fd8202012-09-02 09:30:11 +0000649// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000650// RUN: --target=arm-linux-android \
Evgeniy Stepanov763671e2012-09-03 09:05:50 +0000651// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
Logan Chienc6fd8202012-09-02 09:30:11 +0000652// RUN: -shared \
653// RUN: | FileCheck --check-prefix=CHECK-ANDROID-SO %s
Simon Atanasyan53fefd12012-10-03 17:46:38 +0000654// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Logan Chien6a00cc82014-04-23 13:36:23 +0000655// RUN: --target=aarch64-linux-android \
656// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
657// RUN: -shared \
658// RUN: | FileCheck --check-prefix=CHECK-ANDROID-SO %s
659// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Bradley Smith4da7dd82014-04-30 10:52:05 +0000660// RUN: --target=arm64-linux-android \
661// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
662// RUN: -shared \
663// RUN: | FileCheck --check-prefix=CHECK-ANDROID-SO %s
664// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000665// RUN: --target=mipsel-linux-android \
Simon Atanasyan53fefd12012-10-03 17:46:38 +0000666// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
667// RUN: -shared \
668// RUN: | FileCheck --check-prefix=CHECK-ANDROID-SO %s
Rafael Espindola7df35012012-11-02 20:41:30 +0000669// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Simon Atanasyan68855fe32014-01-25 16:04:08 +0000670// RUN: --target=mips64el-linux-android \
671// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
672// RUN: -shared \
673// RUN: | FileCheck --check-prefix=CHECK-ANDROID-SO %s
674// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Alexey Bataev75db8c32014-01-13 03:49:38 +0000675// RUN: --target=i686-linux-android \
Rafael Espindola7df35012012-11-02 20:41:30 +0000676// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
677// RUN: -shared \
678// RUN: | FileCheck --check-prefix=CHECK-ANDROID-SO %s
Alexey Bataevcf7ae302014-01-23 09:08:32 +0000679// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
680// RUN: --target=x86_64-linux-android \
681// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
682// RUN: -shared \
683// RUN: | FileCheck --check-prefix=CHECK-ANDROID-SO %s
Evgeniy Stepanov77866712012-04-25 08:59:22 +0000684// CHECK-ANDROID-SO: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
Rafael Espindola7df35012012-11-02 20:41:30 +0000685// CHECK-ANDROID-SO: "-Bsymbolic"
Rafael Espindola49ddb862013-06-24 22:07:15 +0000686// CHECK-ANDROID-SO: "{{.*}}{{/|\\\\}}crtbegin_so.o"
Evgeniy Stepanov77866712012-04-25 08:59:22 +0000687// CHECK-ANDROID-SO: "-L[[SYSROOT]]/usr/lib"
688// CHECK-ANDROID-SO-NOT: "gcc_s"
689// CHECK-ANDROID-SO: "-lgcc"
Logan Chien3d3373c2012-11-19 12:04:11 +0000690// CHECK-ANDROID-SO: "-ldl"
Evgeniy Stepanov77866712012-04-25 08:59:22 +0000691// CHECK-ANDROID-SO-NOT: "gcc_s"
Rafael Espindola49ddb862013-06-24 22:07:15 +0000692// CHECK-ANDROID-SO: "{{.*}}{{/|\\\\}}crtend_so.o"
Evgeniy Stepanov77866712012-04-25 08:59:22 +0000693// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000694// RUN: --target=arm-linux-androideabi \
Evgeniy Stepanov763671e2012-09-03 09:05:50 +0000695// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
Evgeniy Stepanov77866712012-04-25 08:59:22 +0000696// RUN: -static \
697// RUN: | FileCheck --check-prefix=CHECK-ANDROID-STATIC %s
Logan Chienc6fd8202012-09-02 09:30:11 +0000698// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000699// RUN: --target=arm-linux-android \
Evgeniy Stepanov763671e2012-09-03 09:05:50 +0000700// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
Logan Chienc6fd8202012-09-02 09:30:11 +0000701// RUN: -static \
702// RUN: | FileCheck --check-prefix=CHECK-ANDROID-STATIC %s
Simon Atanasyan53fefd12012-10-03 17:46:38 +0000703// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Logan Chien6a00cc82014-04-23 13:36:23 +0000704// RUN: --target=aarch64-linux-android \
705// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
706// RUN: -static \
707// RUN: | FileCheck --check-prefix=CHECK-ANDROID-STATIC %s
708// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Bradley Smith4da7dd82014-04-30 10:52:05 +0000709// RUN: --target=arm64-linux-android \
710// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
711// RUN: -static \
712// RUN: | FileCheck --check-prefix=CHECK-ANDROID-STATIC %s
713// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000714// RUN: --target=mipsel-linux-android \
Simon Atanasyan53fefd12012-10-03 17:46:38 +0000715// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
716// RUN: -static \
717// RUN: | FileCheck --check-prefix=CHECK-ANDROID-STATIC %s
Rafael Espindola7df35012012-11-02 20:41:30 +0000718// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Simon Atanasyan68855fe32014-01-25 16:04:08 +0000719// RUN: --target=mips64el-linux-android \
720// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
721// RUN: -static \
722// RUN: | FileCheck --check-prefix=CHECK-ANDROID-STATIC %s
723// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Alexey Bataev75db8c32014-01-13 03:49:38 +0000724// RUN: --target=i686-linux-android \
Rafael Espindola7df35012012-11-02 20:41:30 +0000725// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
726// RUN: -static \
727// RUN: | FileCheck --check-prefix=CHECK-ANDROID-STATIC %s
Alexey Bataevcf7ae302014-01-23 09:08:32 +0000728// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
729// RUN: --target=x86-linux-android \
730// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
731// RUN: -static \
732// RUN: | FileCheck --check-prefix=CHECK-ANDROID-STATIC %s
Evgeniy Stepanov77866712012-04-25 08:59:22 +0000733// CHECK-ANDROID-STATIC: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
Rafael Espindola49ddb862013-06-24 22:07:15 +0000734// CHECK-ANDROID-STATIC: "{{.*}}{{/|\\\\}}crtbegin_static.o"
Evgeniy Stepanov77866712012-04-25 08:59:22 +0000735// CHECK-ANDROID-STATIC: "-L[[SYSROOT]]/usr/lib"
736// CHECK-ANDROID-STATIC-NOT: "gcc_s"
737// CHECK-ANDROID-STATIC: "-lgcc"
Logan Chien3d3373c2012-11-19 12:04:11 +0000738// CHECK-ANDROID-STATIC-NOT: "-ldl"
Evgeniy Stepanov77866712012-04-25 08:59:22 +0000739// CHECK-ANDROID-STATIC-NOT: "gcc_s"
Rafael Espindola49ddb862013-06-24 22:07:15 +0000740// CHECK-ANDROID-STATIC: "{{.*}}{{/|\\\\}}crtend_android.o"
Evgeniy Stepanovc9cde482012-09-10 10:30:12 +0000741// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000742// RUN: --target=arm-linux-androideabi \
Evgeniy Stepanovc9cde482012-09-10 10:30:12 +0000743// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
744// RUN: -pie \
745// RUN: | FileCheck --check-prefix=CHECK-ANDROID-PIE %s
746// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000747// RUN: --target=arm-linux-android \
Evgeniy Stepanovc9cde482012-09-10 10:30:12 +0000748// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
749// RUN: -pie \
750// RUN: | FileCheck --check-prefix=CHECK-ANDROID-PIE %s
Simon Atanasyan53fefd12012-10-03 17:46:38 +0000751// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Logan Chien6a00cc82014-04-23 13:36:23 +0000752// RUN: --target=aarch64-linux-android \
753// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
754// RUN: -pie \
755// RUN: | FileCheck --check-prefix=CHECK-ANDROID-PIE %s
756// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Bradley Smith4da7dd82014-04-30 10:52:05 +0000757// RUN: --target=arm64-linux-android \
758// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
759// RUN: -pie \
760// RUN: | FileCheck --check-prefix=CHECK-ANDROID-PIE %s
761// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000762// RUN: --target=mipsel-linux-android \
Simon Atanasyan53fefd12012-10-03 17:46:38 +0000763// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
764// RUN: -pie \
765// RUN: | FileCheck --check-prefix=CHECK-ANDROID-PIE %s
Rafael Espindola7df35012012-11-02 20:41:30 +0000766// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Simon Atanasyan68855fe32014-01-25 16:04:08 +0000767// RUN: --target=mips64el-linux-android \
768// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
769// RUN: -pie \
770// RUN: | FileCheck --check-prefix=CHECK-ANDROID-PIE %s
771// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Alexey Bataev75db8c32014-01-13 03:49:38 +0000772// RUN: --target=i686-linux-android \
Rafael Espindola7df35012012-11-02 20:41:30 +0000773// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
774// RUN: -pie \
775// RUN: | FileCheck --check-prefix=CHECK-ANDROID-PIE %s
Alexey Bataevcf7ae302014-01-23 09:08:32 +0000776// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
777// RUN: --target=x86_64-linux-android \
778// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
779// RUN: -pie \
780// RUN: | FileCheck --check-prefix=CHECK-ANDROID-PIE %s
Evgeniy Stepanovc9cde482012-09-10 10:30:12 +0000781// CHECK-ANDROID-PIE: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
Rafael Espindola49ddb862013-06-24 22:07:15 +0000782// CHECK-ANDROID-PIE: "{{.*}}{{/|\\\\}}crtbegin_dynamic.o"
Evgeniy Stepanovc9cde482012-09-10 10:30:12 +0000783// CHECK-ANDROID-PIE: "-L[[SYSROOT]]/usr/lib"
784// CHECK-ANDROID-PIE-NOT: "gcc_s"
785// CHECK-ANDROID-PIE: "-lgcc"
786// CHECK-ANDROID-PIE-NOT: "gcc_s"
Rafael Espindola49ddb862013-06-24 22:07:15 +0000787// CHECK-ANDROID-PIE: "{{.*}}{{/|\\\\}}crtend_android.o"
Alexey Bataevcf7ae302014-01-23 09:08:32 +0000788// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
789// RUN: --target=arm-linux-androideabi \
790// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
791// RUN: | FileCheck --check-prefix=CHECK-ANDROID-32 %s
792// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
793// RUN: --target=arm-linux-android \
794// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
795// RUN: | FileCheck --check-prefix=CHECK-ANDROID-32 %s
796// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
797// RUN: --target=mipsel-linux-android \
798// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
799// RUN: | FileCheck --check-prefix=CHECK-ANDROID-32 %s
800// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Logan Chien6a00cc82014-04-23 13:36:23 +0000801// RUN: --target=aarch64-linux-android \
802// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
803// RUN: | FileCheck --check-prefix=CHECK-ANDROID-64 %s
804// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Bradley Smith4da7dd82014-04-30 10:52:05 +0000805// RUN: --target=arm64-linux-android \
806// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
807// RUN: | FileCheck --check-prefix=CHECK-ANDROID-64 %s
808// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Simon Atanasyan68855fe32014-01-25 16:04:08 +0000809// RUN: --target=mips64el-linux-android \
810// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
811// RUN: | FileCheck --check-prefix=CHECK-ANDROID-64 %s
812// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Alexey Bataevcf7ae302014-01-23 09:08:32 +0000813// RUN: --target=i686-linux-android \
814// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
815// RUN: | FileCheck --check-prefix=CHECK-ANDROID-32 %s
816// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
817// RUN: --target=x86_64-linux-android \
818// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
819// RUN: | FileCheck --check-prefix=CHECK-ANDROID-64 %s
820// CHECK-ANDROID-32: "-dynamic-linker" "/system/bin/linker"
821// CHECK-ANDROID-64: "-dynamic-linker" "/system/bin/linker64"
Simon Atanasyand4413882012-09-14 11:27:24 +0000822//
823// Check linker invocation on Debian 6 MIPS 32/64-bit.
824// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000825// RUN: --target=mipsel-linux-gnu \
Simon Atanasyand4413882012-09-14 11:27:24 +0000826// RUN: --sysroot=%S/Inputs/debian_6_mips_tree \
827// RUN: | FileCheck --check-prefix=CHECK-DEBIAN-ML-MIPSEL %s
828// CHECK-DEBIAN-ML-MIPSEL: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
Rafael Espindola49ddb862013-06-24 22:07:15 +0000829// CHECK-DEBIAN-ML-MIPSEL: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.4/../../../../lib{{/|\\\\}}crt1.o"
830// CHECK-DEBIAN-ML-MIPSEL: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.4/../../../../lib{{/|\\\\}}crti.o"
831// CHECK-DEBIAN-ML-MIPSEL: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.4{{/|\\\\}}crtbegin.o"
Simon Atanasyand4413882012-09-14 11:27:24 +0000832// CHECK-DEBIAN-ML-MIPSEL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.4"
833// CHECK-DEBIAN-ML-MIPSEL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.4/../../../../lib"
834// CHECK-DEBIAN-ML-MIPSEL: "-L[[SYSROOT]]/lib/../lib"
835// CHECK-DEBIAN-ML-MIPSEL: "-L[[SYSROOT]]/usr/lib/../lib"
836// CHECK-DEBIAN-ML-MIPSEL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.4/../../.."
837// CHECK-DEBIAN-ML-MIPSEL: "-L[[SYSROOT]]/lib"
838// CHECK-DEBIAN-ML-MIPSEL: "-L[[SYSROOT]]/usr/lib"
839//
840// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000841// RUN: --target=mips64el-linux-gnu \
Simon Atanasyand4413882012-09-14 11:27:24 +0000842// RUN: --sysroot=%S/Inputs/debian_6_mips_tree \
843// RUN: | FileCheck --check-prefix=CHECK-DEBIAN-ML-MIPS64EL %s
844// CHECK-DEBIAN-ML-MIPS64EL: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
Rafael Espindola49ddb862013-06-24 22:07:15 +0000845// CHECK-DEBIAN-ML-MIPS64EL: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.4/../../../../lib64{{/|\\\\}}crt1.o"
846// CHECK-DEBIAN-ML-MIPS64EL: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.4/../../../../lib64{{/|\\\\}}crti.o"
847// CHECK-DEBIAN-ML-MIPS64EL: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.4/64{{/|\\\\}}crtbegin.o"
Simon Atanasyand4413882012-09-14 11:27:24 +0000848// CHECK-DEBIAN-ML-MIPS64EL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.4/64"
849// CHECK-DEBIAN-ML-MIPS64EL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.4/../../../../lib64"
850// CHECK-DEBIAN-ML-MIPS64EL: "-L[[SYSROOT]]/lib/../lib64"
851// CHECK-DEBIAN-ML-MIPS64EL: "-L[[SYSROOT]]/usr/lib/../lib64"
852// CHECK-DEBIAN-ML-MIPS64EL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.4/../../.."
853// CHECK-DEBIAN-ML-MIPS64EL: "-L[[SYSROOT]]/lib"
854// CHECK-DEBIAN-ML-MIPS64EL: "-L[[SYSROOT]]/usr/lib"
Hal Finkelf3587912012-09-18 22:25:07 +0000855//
Simon Atanasyan2d1b1ad2012-10-21 11:44:57 +0000856// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000857// RUN: --target=mips64el-linux-gnu -mabi=n32 \
Simon Atanasyan2d1b1ad2012-10-21 11:44:57 +0000858// RUN: --sysroot=%S/Inputs/debian_6_mips_tree \
859// RUN: | FileCheck --check-prefix=CHECK-DEBIAN-ML-MIPS64EL-N32 %s
860// CHECK-DEBIAN-ML-MIPS64EL-N32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
Rafael Espindola49ddb862013-06-24 22:07:15 +0000861// CHECK-DEBIAN-ML-MIPS64EL-N32: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.4/../../../../lib32{{/|\\\\}}crt1.o"
862// CHECK-DEBIAN-ML-MIPS64EL-N32: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.4/../../../../lib32{{/|\\\\}}crti.o"
863// CHECK-DEBIAN-ML-MIPS64EL-N32: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.4/n32{{/|\\\\}}crtbegin.o"
Simon Atanasyan2d1b1ad2012-10-21 11:44:57 +0000864// CHECK-DEBIAN-ML-MIPS64EL-N32: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.4/n32"
865// CHECK-DEBIAN-ML-MIPS64EL-N32: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.4/../../../../lib32"
866// CHECK-DEBIAN-ML-MIPS64EL-N32: "-L[[SYSROOT]]/lib/../lib32"
867// CHECK-DEBIAN-ML-MIPS64EL-N32: "-L[[SYSROOT]]/usr/lib/../lib32"
868// CHECK-DEBIAN-ML-MIPS64EL-N32: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.4/../../.."
869// CHECK-DEBIAN-ML-MIPS64EL-N32: "-L[[SYSROOT]]/lib"
870// CHECK-DEBIAN-ML-MIPS64EL-N32: "-L[[SYSROOT]]/usr/lib"
871//
Hal Finkelf3587912012-09-18 22:25:07 +0000872// Test linker invocation for Freescale SDK (OpenEmbedded).
873// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000874// RUN: --target=powerpc-fsl-linux \
Hal Finkelf3587912012-09-18 22:25:07 +0000875// RUN: --sysroot=%S/Inputs/freescale_ppc_tree \
876// RUN: | FileCheck --check-prefix=CHECK-FSL-PPC %s
877// CHECK-FSL-PPC: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
878// CHECK-FSL-PPC: "-m" "elf32ppclinux"
Rafael Espindola49ddb862013-06-24 22:07:15 +0000879// CHECK-FSL-PPC: "{{.*}}{{/|\\\\}}crt1.o"
880// CHECK-FSL-PPC: "{{.*}}{{/|\\\\}}crtbegin.o"
Hal Finkelf3587912012-09-18 22:25:07 +0000881// CHECK-FSL-PPC: "-L[[SYSROOT]]/usr/lib"
882// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000883// RUN: --target=powerpc64-fsl-linux \
Hal Finkelf3587912012-09-18 22:25:07 +0000884// RUN: --sysroot=%S/Inputs/freescale_ppc64_tree \
885// RUN: | FileCheck --check-prefix=CHECK-FSL-PPC64 %s
886// CHECK-FSL-PPC64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
887// CHECK-FSL-PPC64: "-m" "elf64ppc"
Rafael Espindola49ddb862013-06-24 22:07:15 +0000888// CHECK-FSL-PPC64: "{{.*}}{{/|\\\\}}crt1.o"
889// CHECK-FSL-PPC64: "{{.*}}{{/|\\\\}}crtbegin.o"
Hal Finkelf3587912012-09-18 22:25:07 +0000890// CHECK-FSL-PPC64: "-L[[SYSROOT]]/usr/lib64/powerpc64-fsl-linux/4.6.2/../.."
Benjamin Kramer058666a2012-10-04 19:42:20 +0000891//
Benjamin Kramerab88f622014-03-25 18:02:07 +0000892// Check that crtfastmath.o is linked with -ffast-math and with -Ofast.
Chandler Carruth274b6f02013-06-20 09:42:40 +0000893// RUN: %clang --target=x86_64-unknown-linux -### %s \
Benjamin Kramer058666a2012-10-04 19:42:20 +0000894// RUN: --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
895// RUN: | FileCheck --check-prefix=CHECK-NOCRTFASTMATH %s
Chandler Carruth274b6f02013-06-20 09:42:40 +0000896// RUN: %clang --target=x86_64-unknown-linux -### %s -ffast-math \
Benjamin Kramer058666a2012-10-04 19:42:20 +0000897// RUN: --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
898// RUN: | FileCheck --check-prefix=CHECK-CRTFASTMATH %s
Chandler Carruth274b6f02013-06-20 09:42:40 +0000899// RUN: %clang --target=x86_64-unknown-linux -### %s -funsafe-math-optimizations\
Benjamin Kramer058666a2012-10-04 19:42:20 +0000900// RUN: --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
901// RUN: | FileCheck --check-prefix=CHECK-CRTFASTMATH %s
Benjamin Kramerab88f622014-03-25 18:02:07 +0000902// RUN: %clang --target=x86_64-unknown-linux -### %s -Ofast\
903// RUN: --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
904// RUN: | FileCheck --check-prefix=CHECK-CRTFASTMATH %s
905// RUN: %clang --target=x86_64-unknown-linux -### %s -Ofast -O3\
906// RUN: --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
907// RUN: | FileCheck --check-prefix=CHECK-NOCRTFASTMATH %s
908// RUN: %clang --target=x86_64-unknown-linux -### %s -O3 -Ofast\
909// RUN: --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
910// RUN: | FileCheck --check-prefix=CHECK-CRTFASTMATH %s
Chandler Carruth274b6f02013-06-20 09:42:40 +0000911// RUN: %clang --target=x86_64-unknown-linux -### %s -ffast-math -fno-fast-math \
Benjamin Kramer058666a2012-10-04 19:42:20 +0000912// RUN: --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
913// RUN: | FileCheck --check-prefix=CHECK-NOCRTFASTMATH %s
Benjamin Kramerab88f622014-03-25 18:02:07 +0000914// RUN: %clang --target=x86_64-unknown-linux -### %s -Ofast -fno-fast-math \
915// RUN: --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
916// RUN: | FileCheck --check-prefix=CHECK-CRTFASTMATH %s
917// RUN: %clang --target=x86_64-unknown-linux -### %s -Ofast -fno-unsafe-math-optimizations \
918// RUN: --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
919// RUN: | FileCheck --check-prefix=CHECK-CRTFASTMATH %s
920// RUN: %clang --target=x86_64-unknown-linux -### %s -fno-fast-math -Ofast \
921// RUN: --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
922// RUN: | FileCheck --check-prefix=CHECK-CRTFASTMATH %s
923// RUN: %clang --target=x86_64-unknown-linux -### %s -fno-unsafe-math-optimizations -Ofast \
924// RUN: --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
925// RUN: | FileCheck --check-prefix=CHECK-CRTFASTMATH %s
Benjamin Kramer058666a2012-10-04 19:42:20 +0000926// We don't have crtfastmath.o in the i386 tree, use it to check that file
927// detection works.
Chandler Carruth274b6f02013-06-20 09:42:40 +0000928// RUN: %clang --target=i386-unknown-linux -### %s -ffast-math \
Benjamin Kramer058666a2012-10-04 19:42:20 +0000929// RUN: --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
930// RUN: | FileCheck --check-prefix=CHECK-NOCRTFASTMATH %s
Rafael Espindola49ddb862013-06-24 22:07:15 +0000931// CHECK-CRTFASTMATH: usr/lib/gcc/x86_64-unknown-linux/4.6.0{{/|\\\\}}crtfastmath.o
Benjamin Kramer058666a2012-10-04 19:42:20 +0000932// CHECK-NOCRTFASTMATH-NOT: crtfastmath.o
Eric Christopherac021742013-06-07 23:25:01 +0000933
934// Check that we link in gcrt1.o when compiling with -pg
Chandler Carruth274b6f02013-06-20 09:42:40 +0000935// RUN: %clang -pg --target=x86_64-unknown-linux -### %s \
Eric Christopherac021742013-06-07 23:25:01 +0000936// RUN: --sysroot=%S/Inputs/basic_linux_tree 2>& 1 \
937// RUN: | FileCheck --check-prefix=CHECK-PG %s
938// CHECK-PG: gcrt1.o