blob: 662aabb8671e9f74aa9203d4f27fd6cc3abcc443 [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 \
Samuel Antao4ae1f672015-01-05 17:07:42 +00006// RUN: --gcc-toolchain="" \
Chandler Carruth2a649c72011-10-03 06:41:08 +00007// RUN: --sysroot=%S/Inputs/basic_linux_tree \
Chandler Carruth94bcd382011-10-01 00:37:39 +00008// RUN: | FileCheck --check-prefix=CHECK-LD-32 %s
Chandler Carruth58d6eb62013-03-04 02:07:55 +00009// CHECK-LD-32-NOT: warning:
Chandler Carruth2a649c72011-10-03 06:41:08 +000010// CHECK-LD-32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
Rafael Espindola49ddb862013-06-24 22:07:15 +000011// CHECK-LD-32: "{{.*}}/usr/lib/gcc/i386-unknown-linux/4.6.0{{/|\\\\}}crtbegin.o"
Chandler Carruth5fdc7cb2011-10-03 08:02:58 +000012// CHECK-LD-32: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0"
Chandler Carruth2c5e91e2011-10-03 08:09:02 +000013// 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 +000014// CHECK-LD-32: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0/../../.."
15// CHECK-LD-32: "-L[[SYSROOT]]/lib"
16// CHECK-LD-32: "-L[[SYSROOT]]/usr/lib"
Chandler Carruth94bcd382011-10-01 00:37:39 +000017//
Chandler Carruth2a649c72011-10-03 06:41:08 +000018// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Jonas Hahnfeldd196fa52016-07-27 08:15:54 +000019// RUN: --target=x86_64-unknown-linux -rtlib=platform \
Samuel Antao4ae1f672015-01-05 17:07:42 +000020// RUN: --gcc-toolchain="" \
Chandler Carruth2a649c72011-10-03 06:41:08 +000021// RUN: --sysroot=%S/Inputs/basic_linux_tree \
Chandler Carruth94bcd382011-10-01 00:37:39 +000022// RUN: | FileCheck --check-prefix=CHECK-LD-64 %s
Chandler Carruth58d6eb62013-03-04 02:07:55 +000023// CHECK-LD-64-NOT: warning:
Chandler Carruth2a649c72011-10-03 06:41:08 +000024// CHECK-LD-64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
Chandler Carruth4588e342013-03-04 01:27:49 +000025// CHECK-LD-64: "--eh-frame-hdr"
26// CHECK-LD-64: "-m" "elf_x86_64"
27// CHECK-LD-64: "-dynamic-linker"
Rafael Espindola49ddb862013-06-24 22:07:15 +000028// CHECK-LD-64: "{{.*}}/usr/lib/gcc/x86_64-unknown-linux/4.6.0{{/|\\\\}}crtbegin.o"
Chandler Carruth5fdc7cb2011-10-03 08:02:58 +000029// CHECK-LD-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0"
Chandler Carruth2c5e91e2011-10-03 08:09:02 +000030// 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 +000031// CHECK-LD-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../.."
32// CHECK-LD-64: "-L[[SYSROOT]]/lib"
33// CHECK-LD-64: "-L[[SYSROOT]]/usr/lib"
Chandler Carruth4588e342013-03-04 01:27:49 +000034// CHECK-LD-64: "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed"
35// CHECK-LD-64: "-lc"
36// CHECK-LD-64: "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed"
37//
38// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Jonas Hahnfeldd196fa52016-07-27 08:15:54 +000039// RUN: --target=x86_64-unknown-linux-gnux32 -rtlib=platform \
Samuel Antao4ae1f672015-01-05 17:07:42 +000040// RUN: --gcc-toolchain="" \
Zinovy Nis1db95732014-07-10 15:27:19 +000041// RUN: --sysroot=%S/Inputs/basic_linux_tree \
42// RUN: | FileCheck --check-prefix=CHECK-LD-X32 %s
43// CHECK-LD-X32-NOT: warning:
44// CHECK-LD-X32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
45// CHECK-LD-X32: "--eh-frame-hdr"
46// CHECK-LD-X32: "-m" "elf32_x86_64"
47// CHECK-LD-X32: "-dynamic-linker"
48// CHECK-LD-X32: "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed"
49// CHECK-LD-X32: "-lc"
50// CHECK-LD-X32: "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed"
51//
52// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +000053// RUN: --target=x86_64-unknown-linux \
Samuel Antao4ae1f672015-01-05 17:07:42 +000054// RUN: --gcc-toolchain="" \
Renato Golinc4b49242014-02-13 10:01:16 +000055// RUN: --sysroot=%S/Inputs/basic_linux_tree \
56// RUN: --rtlib=compiler-rt \
57// RUN: | FileCheck --check-prefix=CHECK-LD-RT %s
58// CHECK-LD-RT-NOT: warning:
59// CHECK-LD-RT: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
60// CHECK-LD-RT: "--eh-frame-hdr"
61// CHECK-LD-RT: "-m" "elf_x86_64"
62// CHECK-LD-RT: "-dynamic-linker"
63// CHECK-LD-RT: "{{.*}}/usr/lib/gcc/x86_64-unknown-linux/4.6.0{{/|\\\\}}crtbegin.o"
64// CHECK-LD-RT: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0"
65// CHECK-LD-RT: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib"
66// CHECK-LD-RT: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../.."
67// CHECK-LD-RT: "-L[[SYSROOT]]/lib"
68// CHECK-LD-RT: "-L[[SYSROOT]]/usr/lib"
Renato Golin830f0c42015-07-23 17:24:41 +000069// CHECK-LD-RT: libclang_rt.builtins-x86_64.a"
Renato Golinc4b49242014-02-13 10:01:16 +000070// CHECK-LD-RT: "-lc"
Renato Golin830f0c42015-07-23 17:24:41 +000071// CHECK-LD-RT: libclang_rt.builtins-x86_64.a"
Renato Golinc4b49242014-02-13 10:01:16 +000072//
73// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Michal Gorny62dc83b2017-08-28 20:29:52 +000074// RUN: --target=i686-unknown-linux \
75// RUN: --gcc-toolchain="" \
76// RUN: --sysroot=%S/Inputs/basic_linux_tree \
77// RUN: --rtlib=compiler-rt \
78// RUN: | FileCheck --check-prefix=CHECK-LD-RT-I686 %s
79// CHECK-LD-RT-I686-NOT: warning:
80// CHECK-LD-RT-I686: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
81// CHECK-LD-RT-I686: "--eh-frame-hdr"
82// CHECK-LD-RT-I686: "-m" "elf_i386"
83// CHECK-LD-RT-I686: "-dynamic-linker"
84// CHECK-LD-RT-I686: "{{.*}}/usr/lib/gcc/i686-unknown-linux/4.6.0{{/|\\\\}}crtbegin.o"
85// CHECK-LD-RT-I686: "-L[[SYSROOT]]/usr/lib/gcc/i686-unknown-linux/4.6.0"
86// CHECK-LD-RT-I686: "-L[[SYSROOT]]/usr/lib/gcc/i686-unknown-linux/4.6.0/../../../../i686-unknown-linux/lib"
87// CHECK-LD-RT-I686: "-L[[SYSROOT]]/usr/lib/gcc/i686-unknown-linux/4.6.0/../../.."
88// CHECK-LD-RT-I686: "-L[[SYSROOT]]/lib"
89// CHECK-LD-RT-I686: "-L[[SYSROOT]]/usr/lib"
90// CHECK-LD-RT-I686: libclang_rt.builtins-i386.a"
91// CHECK-LD-RT-I686: "-lc"
92// CHECK-LD-RT-I686: libclang_rt.builtins-i386.a"
93//
94// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Dan Albert6f2875d2015-01-28 23:23:36 +000095// RUN: --target=arm-linux-androideabi \
96// RUN: --gcc-toolchain="" \
97// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
98// RUN: --rtlib=compiler-rt \
99// RUN: | FileCheck --check-prefix=CHECK-LD-RT-ANDROID %s
100// CHECK-LD-RT-ANDROID-NOT: warning:
101// CHECK-LD-RT-ANDROID: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
102// CHECK-LD-RT-ANDROID: "--eh-frame-hdr"
103// CHECK-LD-RT-ANDROID: "-m" "armelf_linux_eabi"
104// CHECK-LD-RT-ANDROID: "-dynamic-linker"
Renato Golin830f0c42015-07-23 17:24:41 +0000105// CHECK-LD-RT-ANDROID: libclang_rt.builtins-arm-android.a"
Dan Albert6f2875d2015-01-28 23:23:36 +0000106// CHECK-LD-RT-ANDROID: "-lc"
Renato Golin830f0c42015-07-23 17:24:41 +0000107// CHECK-LD-RT-ANDROID: libclang_rt.builtins-arm-android.a"
Dan Albert6f2875d2015-01-28 23:23:36 +0000108//
109// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Jonas Hahnfeldd196fa52016-07-27 08:15:54 +0000110// RUN: --target=x86_64-unknown-linux -rtlib=platform \
Samuel Antao4ae1f672015-01-05 17:07:42 +0000111// RUN: --gcc-toolchain="" \
Renato Golinc4b49242014-02-13 10:01:16 +0000112// RUN: --sysroot=%S/Inputs/basic_linux_tree \
113// RUN: --rtlib=libgcc \
114// RUN: | FileCheck --check-prefix=CHECK-LD-GCC %s
115// CHECK-LD-GCC-NOT: warning:
116// CHECK-LD-GCC: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
117// CHECK-LD-GCC: "--eh-frame-hdr"
118// CHECK-LD-GCC: "-m" "elf_x86_64"
119// CHECK-LD-GCC: "-dynamic-linker"
120// CHECK-LD-GCC: "{{.*}}/usr/lib/gcc/x86_64-unknown-linux/4.6.0{{/|\\\\}}crtbegin.o"
121// CHECK-LD-GCC: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0"
122// CHECK-LD-GCC: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib"
123// CHECK-LD-GCC: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../.."
124// CHECK-LD-GCC: "-L[[SYSROOT]]/lib"
125// CHECK-LD-GCC: "-L[[SYSROOT]]/usr/lib"
Hans Wennborg2151d122015-08-31 21:48:52 +0000126// CHECK-LD-GCC: "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed"
Renato Golinc4b49242014-02-13 10:01:16 +0000127// CHECK-LD-GCC: "-lc"
128// CHECK-LD-GCC: "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed"
129//
130// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Jonas Hahnfeldd196fa52016-07-27 08:15:54 +0000131// RUN: --target=x86_64-unknown-linux -rtlib=platform \
Chandler Carruth4588e342013-03-04 01:27:49 +0000132// RUN: -static-libgcc \
Samuel Antao4ae1f672015-01-05 17:07:42 +0000133// RUN: --gcc-toolchain="" \
Chandler Carruth4588e342013-03-04 01:27:49 +0000134// RUN: --sysroot=%S/Inputs/basic_linux_tree \
135// RUN: | FileCheck --check-prefix=CHECK-LD-64-STATIC-LIBGCC %s
Chandler Carruth58d6eb62013-03-04 02:07:55 +0000136// CHECK-LD-64-STATIC-LIBGCC-NOT: warning:
Chandler Carruth4588e342013-03-04 01:27:49 +0000137// CHECK-LD-64-STATIC-LIBGCC: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
138// CHECK-LD-64-STATIC-LIBGCC: "--eh-frame-hdr"
139// CHECK-LD-64-STATIC-LIBGCC: "-m" "elf_x86_64"
140// CHECK-LD-64-STATIC-LIBGCC: "-dynamic-linker"
Rafael Espindola49ddb862013-06-24 22:07:15 +0000141// CHECK-LD-64-STATIC-LIBGCC: "{{.*}}/usr/lib/gcc/x86_64-unknown-linux/4.6.0{{/|\\\\}}crtbegin.o"
Chandler Carruth4588e342013-03-04 01:27:49 +0000142// CHECK-LD-64-STATIC-LIBGCC: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0"
143// CHECK-LD-64-STATIC-LIBGCC: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib"
144// CHECK-LD-64-STATIC-LIBGCC: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../.."
145// CHECK-LD-64-STATIC-LIBGCC: "-L[[SYSROOT]]/lib"
146// CHECK-LD-64-STATIC-LIBGCC: "-L[[SYSROOT]]/usr/lib"
147// CHECK-LD-64-STATIC-LIBGCC: "-lgcc" "-lgcc_eh"
148// CHECK-LD-64-STATIC-LIBGCC: "-lc"
149// CHECK-LD-64-STATIC-LIBGCC: "-lgcc" "-lgcc_eh"
150//
151// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Jonas Hahnfeldd196fa52016-07-27 08:15:54 +0000152// RUN: --target=x86_64-unknown-linux -rtlib=platform \
Chandler Carruth4588e342013-03-04 01:27:49 +0000153// RUN: -static \
Samuel Antao4ae1f672015-01-05 17:07:42 +0000154// RUN: --gcc-toolchain="" \
Chandler Carruth4588e342013-03-04 01:27:49 +0000155// RUN: --sysroot=%S/Inputs/basic_linux_tree \
156// RUN: | FileCheck --check-prefix=CHECK-LD-64-STATIC %s
Chandler Carruth58d6eb62013-03-04 02:07:55 +0000157// CHECK-LD-64-STATIC-NOT: warning:
Chandler Carruth4588e342013-03-04 01:27:49 +0000158// CHECK-LD-64-STATIC: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
159// CHECK-LD-64-STATIC-NOT: "--eh-frame-hdr"
160// CHECK-LD-64-STATIC: "-m" "elf_x86_64"
161// CHECK-LD-64-STATIC-NOT: "-dynamic-linker"
162// CHECK-LD-64-STATIC: "-static"
Rafael Espindola49ddb862013-06-24 22:07:15 +0000163// CHECK-LD-64-STATIC: "{{.*}}/usr/lib/gcc/x86_64-unknown-linux/4.6.0{{/|\\\\}}crtbeginT.o"
Chandler Carruth4588e342013-03-04 01:27:49 +0000164// CHECK-LD-64-STATIC: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0"
165// CHECK-LD-64-STATIC: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib"
166// CHECK-LD-64-STATIC: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../.."
167// CHECK-LD-64-STATIC: "-L[[SYSROOT]]/lib"
168// CHECK-LD-64-STATIC: "-L[[SYSROOT]]/usr/lib"
169// CHECK-LD-64-STATIC: "--start-group" "-lgcc" "-lgcc_eh" "-lc" "--end-group"
Chandler Carruth2356b2c2011-10-03 09:00:50 +0000170//
Chandler Carruth58d6eb62013-03-04 02:07:55 +0000171// Check that flags can be combined. The -static dominates.
172// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Jonas Hahnfeldd196fa52016-07-27 08:15:54 +0000173// RUN: --target=x86_64-unknown-linux -rtlib=platform \
Chandler Carruth58d6eb62013-03-04 02:07:55 +0000174// RUN: -static-libgcc -static \
Samuel Antao4ae1f672015-01-05 17:07:42 +0000175// RUN: --gcc-toolchain="" \
Chandler Carruth58d6eb62013-03-04 02:07:55 +0000176// RUN: --sysroot=%S/Inputs/basic_linux_tree \
177// RUN: | FileCheck --check-prefix=CHECK-LD-64-STATIC %s
178//
Chandler Carruth2356b2c2011-10-03 09:00:50 +0000179// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000180// RUN: --target=i386-unknown-linux -m32 \
Samuel Antao4ae1f672015-01-05 17:07:42 +0000181// RUN: --gcc-toolchain="" \
Chandler Carruth2356b2c2011-10-03 09:00:50 +0000182// RUN: --sysroot=%S/Inputs/multilib_32bit_linux_tree \
183// RUN: | FileCheck --check-prefix=CHECK-32-TO-32 %s
184// CHECK-32-TO-32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
Rafael Espindola49ddb862013-06-24 22:07:15 +0000185// CHECK-32-TO-32: "{{.*}}/usr/lib/gcc/i386-unknown-linux/4.6.0{{/|\\\\}}crtbegin.o"
Chandler Carruth2356b2c2011-10-03 09:00:50 +0000186// CHECK-32-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0"
Rafael Espindolaa8398552013-10-28 23:14:34 +0000187// CHECK-32-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0/../../../../i386-unknown-linux/lib/../lib32"
188// CHECK-32-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0/../../../../lib32"
189// CHECK-32-TO-32: "-L[[SYSROOT]]/lib/../lib32"
190// CHECK-32-TO-32: "-L[[SYSROOT]]/usr/lib/../lib32"
Chandler Carruth2356b2c2011-10-03 09:00:50 +0000191// CHECK-32-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0/../../../../i386-unknown-linux/lib"
192// CHECK-32-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0/../../.."
193// CHECK-32-TO-32: "-L[[SYSROOT]]/lib"
194// CHECK-32-TO-32: "-L[[SYSROOT]]/usr/lib"
195//
196// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000197// RUN: --target=i386-unknown-linux -m64 \
Samuel Antao4ae1f672015-01-05 17:07:42 +0000198// RUN: --gcc-toolchain="" \
Chandler Carruth2356b2c2011-10-03 09:00:50 +0000199// RUN: --sysroot=%S/Inputs/multilib_32bit_linux_tree \
200// RUN: | FileCheck --check-prefix=CHECK-32-TO-64 %s
201// CHECK-32-TO-64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
Rafael Espindola49ddb862013-06-24 22:07:15 +0000202// CHECK-32-TO-64: "{{.*}}/usr/lib/gcc/i386-unknown-linux/4.6.0/64{{/|\\\\}}crtbegin.o"
Chandler Carruth2356b2c2011-10-03 09:00:50 +0000203// CHECK-32-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0/64"
204// CHECK-32-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0/../../../../i386-unknown-linux/lib/../lib64"
205// CHECK-32-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0/../../../../lib64"
206// CHECK-32-TO-64: "-L[[SYSROOT]]/lib/../lib64"
207// CHECK-32-TO-64: "-L[[SYSROOT]]/usr/lib/../lib64"
208// CHECK-32-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0"
209// CHECK-32-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0/../../../../i386-unknown-linux/lib"
210// CHECK-32-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0/../../.."
211// CHECK-32-TO-64: "-L[[SYSROOT]]/lib"
212// CHECK-32-TO-64: "-L[[SYSROOT]]/usr/lib"
Chandler Carruthadf23a42011-10-03 09:08:26 +0000213//
214// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000215// RUN: --target=x86_64-unknown-linux -m64 \
Samuel Antao4ae1f672015-01-05 17:07:42 +0000216// RUN: --gcc-toolchain="" \
Chandler Carruthadf23a42011-10-03 09:08:26 +0000217// RUN: --sysroot=%S/Inputs/multilib_64bit_linux_tree \
218// RUN: | FileCheck --check-prefix=CHECK-64-TO-64 %s
219// CHECK-64-TO-64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
Rafael Espindola49ddb862013-06-24 22:07:15 +0000220// CHECK-64-TO-64: "{{.*}}/usr/lib/gcc/x86_64-unknown-linux/4.6.0{{/|\\\\}}crtbegin.o"
Chandler Carruthadf23a42011-10-03 09:08:26 +0000221// CHECK-64-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0"
Rafael Espindolaa8398552013-10-28 23:14:34 +0000222// CHECK-64-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib/../lib64"
223// CHECK-64-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../lib64"
224// CHECK-64-TO-64: "-L[[SYSROOT]]/lib/../lib64"
225// CHECK-64-TO-64: "-L[[SYSROOT]]/usr/lib/../lib64"
Chandler Carruthadf23a42011-10-03 09:08:26 +0000226// CHECK-64-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib"
227// CHECK-64-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../.."
228// CHECK-64-TO-64: "-L[[SYSROOT]]/lib"
229// CHECK-64-TO-64: "-L[[SYSROOT]]/usr/lib"
230//
231// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000232// RUN: --target=x86_64-unknown-linux -m32 \
Samuel Antao4ae1f672015-01-05 17:07:42 +0000233// RUN: --gcc-toolchain="" \
Chandler Carruthadf23a42011-10-03 09:08:26 +0000234// RUN: --sysroot=%S/Inputs/multilib_64bit_linux_tree \
235// RUN: | FileCheck --check-prefix=CHECK-64-TO-32 %s
236// CHECK-64-TO-32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
Rafael Espindola49ddb862013-06-24 22:07:15 +0000237// CHECK-64-TO-32: "{{.*}}/usr/lib/gcc/x86_64-unknown-linux/4.6.0/32{{/|\\\\}}crtbegin.o"
Chandler Carruthadf23a42011-10-03 09:08:26 +0000238// CHECK-64-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/32"
239// CHECK-64-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib/../lib32"
240// CHECK-64-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../lib32"
241// CHECK-64-TO-32: "-L[[SYSROOT]]/lib/../lib32"
242// CHECK-64-TO-32: "-L[[SYSROOT]]/usr/lib/../lib32"
243// CHECK-64-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0"
244// CHECK-64-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib"
245// CHECK-64-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../.."
246// CHECK-64-TO-32: "-L[[SYSROOT]]/lib"
247// CHECK-64-TO-32: "-L[[SYSROOT]]/usr/lib"
Chandler Carruthf7e0ecb2011-10-05 01:01:57 +0000248//
249// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Zinovy Nis1db95732014-07-10 15:27:19 +0000250// RUN: --target=x86_64-unknown-linux-gnux32 \
Samuel Antao4ae1f672015-01-05 17:07:42 +0000251// RUN: --gcc-toolchain="" \
Zinovy Nis1db95732014-07-10 15:27:19 +0000252// RUN: --sysroot=%S/Inputs/multilib_64bit_linux_tree \
253// RUN: | FileCheck --check-prefix=CHECK-X32 %s
254// CHECK-X32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
255// CHECK-X32: "{{.*}}/usr/lib/gcc/x86_64-unknown-linux/4.6.0/x32{{/|\\\\}}crtbegin.o"
256// CHECK-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/x32"
257// CHECK-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib/../libx32"
258// CHECK-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../libx32"
259// CHECK-X32: "-L[[SYSROOT]]/lib/../libx32"
260// CHECK-X32: "-L[[SYSROOT]]/usr/lib/../libx32"
261// CHECK-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0"
262// CHECK-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib"
263// CHECK-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../.."
264// CHECK-X32: "-L[[SYSROOT]]/lib"
265// CHECK-X32: "-L[[SYSROOT]]/usr/lib"
266//
267// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Zinovy Nis3d163872014-07-11 14:28:45 +0000268// RUN: --target=x86_64-unknown-linux -mx32 \
Samuel Antao4ae1f672015-01-05 17:07:42 +0000269// RUN: --gcc-toolchain="" \
Zinovy Nis3d163872014-07-11 14:28:45 +0000270// RUN: --sysroot=%S/Inputs/multilib_64bit_linux_tree \
271// RUN: | FileCheck --check-prefix=CHECK-64-TO-X32 %s
272// CHECK-64-TO-X32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
273// CHECK-64-TO-X32: "{{.*}}/usr/lib/gcc/x86_64-unknown-linux/4.6.0/x32{{/|\\\\}}crtbegin.o"
274// CHECK-64-TO-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/x32"
275// CHECK-64-TO-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib/../libx32"
276// CHECK-64-TO-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../libx32"
277// CHECK-64-TO-X32: "-L[[SYSROOT]]/lib/../libx32"
278// CHECK-64-TO-X32: "-L[[SYSROOT]]/usr/lib/../libx32"
279// CHECK-64-TO-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0"
280// CHECK-64-TO-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib"
281// CHECK-64-TO-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../.."
282// CHECK-64-TO-X32: "-L[[SYSROOT]]/lib"
283// CHECK-64-TO-X32: "-L[[SYSROOT]]/usr/lib"
284//
285// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
286// RUN: --target=i386-unknown-linux -mx32 \
Samuel Antao4ae1f672015-01-05 17:07:42 +0000287// RUN: --gcc-toolchain="" \
Zinovy Nis3d163872014-07-11 14:28:45 +0000288// RUN: --sysroot=%S/Inputs/multilib_64bit_linux_tree \
289// RUN: | FileCheck --check-prefix=CHECK-32-TO-X32 %s
290// CHECK-32-TO-X32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
291// CHECK-32-TO-X32: "{{.*}}/usr/lib/gcc/x86_64-unknown-linux/4.6.0/x32{{/|\\\\}}crtbegin.o"
292// CHECK-32-TO-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/x32"
293// CHECK-32-TO-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib/../libx32"
294// CHECK-32-TO-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../libx32"
295// CHECK-32-TO-X32: "-L[[SYSROOT]]/lib/../libx32"
296// CHECK-32-TO-X32: "-L[[SYSROOT]]/usr/lib/../libx32"
297// CHECK-32-TO-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0"
298// CHECK-32-TO-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib"
299// CHECK-32-TO-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../.."
300// CHECK-32-TO-X32: "-L[[SYSROOT]]/lib"
301// CHECK-32-TO-X32: "-L[[SYSROOT]]/usr/lib"
302//
303// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Pavel Chupin4a294682014-08-18 15:38:38 +0000304// RUN: --target=x86_64-unknown-linux-gnux32 -m64 \
Samuel Antao4ae1f672015-01-05 17:07:42 +0000305// RUN: --gcc-toolchain="" \
Pavel Chupin4a294682014-08-18 15:38:38 +0000306// RUN: --sysroot=%S/Inputs/multilib_64bit_linux_tree \
307// RUN: | FileCheck --check-prefix=CHECK-X32-TO-64 %s
308// CHECK-X32-TO-64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
309// CHECK-X32-TO-64: "{{.*}}/usr/lib/gcc/x86_64-unknown-linux/4.6.0{{/|\\\\}}crtbegin.o"
310// CHECK-X32-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0"
311// CHECK-X32-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib/../lib64"
312// CHECK-X32-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../lib64"
313// CHECK-X32-TO-64: "-L[[SYSROOT]]/lib/../lib64"
314// CHECK-X32-TO-64: "-L[[SYSROOT]]/usr/lib/../lib64"
315// CHECK-X32-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib"
316// CHECK-X32-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../.."
317// CHECK-X32-TO-64: "-L[[SYSROOT]]/lib"
318// CHECK-X32-TO-64: "-L[[SYSROOT]]/usr/lib"
319//
320// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
321// RUN: --target=x86_64-unknown-linux-gnux32 -m32 \
Samuel Antao4ae1f672015-01-05 17:07:42 +0000322// RUN: --gcc-toolchain="" \
Pavel Chupin4a294682014-08-18 15:38:38 +0000323// RUN: --sysroot=%S/Inputs/multilib_64bit_linux_tree \
324// RUN: | FileCheck --check-prefix=CHECK-X32-TO-32 %s
325// CHECK-X32-TO-32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
326// CHECK-X32-TO-32: "{{.*}}/usr/lib/gcc/x86_64-unknown-linux/4.6.0/32{{/|\\\\}}crtbegin.o"
327// CHECK-X32-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/32"
328// CHECK-X32-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib/../lib32"
329// CHECK-X32-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../lib32"
330// CHECK-X32-TO-32: "-L[[SYSROOT]]/lib/../lib32"
331// CHECK-X32-TO-32: "-L[[SYSROOT]]/usr/lib/../lib32"
332// CHECK-X32-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0"
333// CHECK-X32-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib"
334// CHECK-X32-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../.."
335// CHECK-X32-TO-32: "-L[[SYSROOT]]/lib"
336// CHECK-X32-TO-32: "-L[[SYSROOT]]/usr/lib"
337//
338// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000339// RUN: --target=x86_64-unknown-linux -m32 \
340// RUN: --gcc-toolchain=%S/Inputs/multilib_64bit_linux_tree/usr \
Chandler Carruth69a125b2012-04-06 16:32:06 +0000341// RUN: --sysroot=%S/Inputs/multilib_32bit_linux_tree \
342// RUN: | FileCheck --check-prefix=CHECK-64-TO-32-SYSROOT %s
343// CHECK-64-TO-32-SYSROOT: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
Rafael Espindola49ddb862013-06-24 22:07:15 +0000344// 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 +0000345// CHECK-64-TO-32-SYSROOT: "-L{{[^"]*}}/Inputs/multilib_64bit_linux_tree/usr/lib/gcc/x86_64-unknown-linux/4.6.0/32"
346// CHECK-64-TO-32-SYSROOT: "-L[[SYSROOT]]/lib/../lib32"
347// CHECK-64-TO-32-SYSROOT: "-L[[SYSROOT]]/usr/lib/../lib32"
348// CHECK-64-TO-32-SYSROOT: "-L{{[^"]*}}/Inputs/multilib_64bit_linux_tree/usr/lib/gcc/x86_64-unknown-linux/4.6.0"
349// CHECK-64-TO-32-SYSROOT: "-L[[SYSROOT]]/lib"
350// CHECK-64-TO-32-SYSROOT: "-L[[SYSROOT]]/usr/lib"
351//
352// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000353// RUN: --target=i386-unknown-linux -m32 \
Chandler Carruthe276b362011-10-05 06:38:03 +0000354// RUN: -ccc-install-dir %S/Inputs/fake_install_tree/bin \
Samuel Antao4ae1f672015-01-05 17:07:42 +0000355// RUN: --gcc-toolchain="" \
Chandler Carruthf7e0ecb2011-10-05 01:01:57 +0000356// RUN: --sysroot=%S/Inputs/basic_linux_tree \
357// RUN: | FileCheck --check-prefix=CHECK-INSTALL-DIR-32 %s
358// CHECK-INSTALL-DIR-32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
Rafael Espindola49ddb862013-06-24 22:07:15 +0000359// 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 +0000360// 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 +0000361//
362// Check that with 64-bit builds, we don't actually use the install directory
363// as its version of GCC is lower than our sysrooted version.
364// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000365// RUN: --target=x86_64-unknown-linux -m64 \
Chandler Carruthe276b362011-10-05 06:38:03 +0000366// RUN: -ccc-install-dir %S/Inputs/fake_install_tree/bin \
Samuel Antao4ae1f672015-01-05 17:07:42 +0000367// RUN: --gcc-toolchain="" \
Chandler Carruthf7e0ecb2011-10-05 01:01:57 +0000368// RUN: --sysroot=%S/Inputs/basic_linux_tree \
369// RUN: | FileCheck --check-prefix=CHECK-INSTALL-DIR-64 %s
370// CHECK-INSTALL-DIR-64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
Rafael Espindola49ddb862013-06-24 22:07:15 +0000371// CHECK-INSTALL-DIR-64: "{{.*}}/usr/lib/gcc/x86_64-unknown-linux/4.6.0{{/|\\\\}}crtbegin.o"
Chandler Carruthf7e0ecb2011-10-05 01:01:57 +0000372// CHECK-INSTALL-DIR-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0"
Chandler Carruthcf59bc52011-10-05 03:09:51 +0000373//
374// Check that we support unusual patch version formats, including missing that
375// component.
376// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000377// RUN: --target=i386-unknown-linux -m32 \
Chandler Carruthe276b362011-10-05 06:38:03 +0000378// RUN: -ccc-install-dir %S/Inputs/gcc_version_parsing1/bin \
Samuel Antao4ae1f672015-01-05 17:07:42 +0000379// RUN: --gcc-toolchain="" \
Chandler Carruthcf59bc52011-10-05 03:09:51 +0000380// RUN: --sysroot=%S/Inputs/basic_linux_tree \
381// RUN: | FileCheck --check-prefix=CHECK-GCC-VERSION1 %s
382// CHECK-GCC-VERSION1: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
Rafael Espindola49ddb862013-06-24 22:07:15 +0000383// CHECK-GCC-VERSION1: "{{.*}}/Inputs/gcc_version_parsing1/bin/../lib/gcc/i386-unknown-linux/4.7{{/|\\\\}}crtbegin.o"
Chandler Carruthe276b362011-10-05 06:38:03 +0000384// CHECK-GCC-VERSION1: "-L{{.*}}/Inputs/gcc_version_parsing1/bin/../lib/gcc/i386-unknown-linux/4.7"
Chandler Carruthcf59bc52011-10-05 03:09:51 +0000385// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000386// RUN: --target=i386-unknown-linux -m32 \
Chandler Carruthe276b362011-10-05 06:38:03 +0000387// RUN: -ccc-install-dir %S/Inputs/gcc_version_parsing2/bin \
Samuel Antao4ae1f672015-01-05 17:07:42 +0000388// RUN: --gcc-toolchain="" \
Chandler Carruthcf59bc52011-10-05 03:09:51 +0000389// RUN: --sysroot=%S/Inputs/basic_linux_tree \
390// RUN: | FileCheck --check-prefix=CHECK-GCC-VERSION2 %s
391// CHECK-GCC-VERSION2: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
Rafael Espindola49ddb862013-06-24 22:07:15 +0000392// 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 +0000393// CHECK-GCC-VERSION2: "-L{{.*}}/Inputs/gcc_version_parsing2/bin/../lib/gcc/i386-unknown-linux/4.7.x"
Chandler Carruthcf59bc52011-10-05 03:09:51 +0000394// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000395// RUN: --target=i386-unknown-linux -m32 \
Chandler Carruthe276b362011-10-05 06:38:03 +0000396// RUN: -ccc-install-dir %S/Inputs/gcc_version_parsing3/bin \
Samuel Antao4ae1f672015-01-05 17:07:42 +0000397// RUN: --gcc-toolchain="" \
Chandler Carruthcf59bc52011-10-05 03:09:51 +0000398// RUN: --sysroot=%S/Inputs/basic_linux_tree \
399// RUN: | FileCheck --check-prefix=CHECK-GCC-VERSION3 %s
400// CHECK-GCC-VERSION3: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
Rafael Espindola49ddb862013-06-24 22:07:15 +0000401// 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 +0000402// 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 +0000403// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000404// RUN: --target=i386-unknown-linux -m32 \
Chandler Carruthbff1e8d2011-11-05 23:24:30 +0000405// RUN: -ccc-install-dir %S/Inputs/gcc_version_parsing4/bin \
Samuel Antao4ae1f672015-01-05 17:07:42 +0000406// RUN: --gcc-toolchain="" \
Chandler Carruthbff1e8d2011-11-05 23:24:30 +0000407// RUN: --sysroot=%S/Inputs/basic_linux_tree \
408// RUN: | FileCheck --check-prefix=CHECK-GCC-VERSION4 %s
409// CHECK-GCC-VERSION4: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
Rafael Espindola49ddb862013-06-24 22:07:15 +0000410// 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 +0000411// CHECK-GCC-VERSION4: "-L{{.*}}/Inputs/gcc_version_parsing4/bin/../lib/gcc/i386-unknown-linux/4.7.99"
Bryan Chand346ae62016-06-17 16:47:14 +0000412// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
413// RUN: --target=i386-unknown-linux -m32 \
414// RUN: -ccc-install-dir %S/Inputs/gcc_version_parsing5/bin \
415// RUN: --gcc-toolchain="" \
416// RUN: --sysroot=%S/Inputs/basic_linux_tree \
417// RUN: | FileCheck --check-prefix=CHECK-GCC-VERSION5 %s
418// CHECK-GCC-VERSION5: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
419// CHECK-GCC-VERSION5: "{{.*}}/Inputs/gcc_version_parsing5/bin/../lib/gcc/i386-unknown-linux/5{{/|\\\\}}crtbegin.o"
420// CHECK-GCC-VERSION5: "-L{{.*}}/Inputs/gcc_version_parsing5/bin/../lib/gcc/i386-unknown-linux/5"
Chandler Carruth6e46ca22011-11-09 03:46:20 +0000421//
Chandler Carruth902efc62014-01-21 22:49:05 +0000422// Test a simulated installation of libc++ on Linux, both through sysroot and
423// the installation path of Clang.
424// RUN: %clangxx -no-canonical-prefixes -x c++ %s -### -o %t.o 2>&1 \
425// RUN: -target x86_64-unknown-linux-gnu \
426// RUN: -stdlib=libc++ \
427// RUN: -ccc-install-dir %S/Inputs/basic_linux_tree/usr/bin \
Samuel Antao4ae1f672015-01-05 17:07:42 +0000428// RUN: --gcc-toolchain="" \
Chandler Carruth902efc62014-01-21 22:49:05 +0000429// RUN: --sysroot=%S/Inputs/basic_linux_libcxx_tree \
430// RUN: | FileCheck --check-prefix=CHECK-BASIC-LIBCXX-SYSROOT %s
431// CHECK-BASIC-LIBCXX-SYSROOT: "{{[^"]*}}clang{{[^"]*}}" "-cc1"
432// CHECK-BASIC-LIBCXX-SYSROOT: "-isysroot" "[[SYSROOT:[^"]+]]"
433// CHECK-BASIC-LIBCXX-SYSROOT: "-internal-isystem" "[[SYSROOT]]/usr/include/c++/v1"
434// CHECK-BASIC-LIBCXX-SYSROOT: "-internal-isystem" "[[SYSROOT]]/usr/local/include"
435// CHECK-BASIC-LIBCXX-SYSROOT: "--sysroot=[[SYSROOT]]"
436// RUN: %clang -no-canonical-prefixes -x c++ %s -### -o %t.o 2>&1 \
437// RUN: -target x86_64-unknown-linux-gnu \
438// RUN: -stdlib=libc++ \
439// RUN: -ccc-install-dir %S/Inputs/basic_linux_libcxx_tree/usr/bin \
Samuel Antao4ae1f672015-01-05 17:07:42 +0000440// RUN: --gcc-toolchain="" \
Chandler Carruth902efc62014-01-21 22:49:05 +0000441// RUN: --sysroot=%S/Inputs/basic_linux_libcxx_tree \
442// RUN: | FileCheck --check-prefix=CHECK-BASIC-LIBCXX-INSTALL %s
443// CHECK-BASIC-LIBCXX-INSTALL: "{{[^"]*}}clang{{[^"]*}}" "-cc1"
444// CHECK-BASIC-LIBCXX-INSTALL: "-isysroot" "[[SYSROOT:[^"]+]]"
445// CHECK-BASIC-LIBCXX-INSTALL: "-internal-isystem" "[[SYSROOT]]/usr/bin/../include/c++/v1"
446// CHECK-BASIC-LIBCXX-INSTALL: "-internal-isystem" "[[SYSROOT]]/usr/local/include"
447// CHECK-BASIC-LIBCXX-INSTALL: "--sysroot=[[SYSROOT]]"
448// CHECK-BASIC-LIBCXX-INSTALL: "-L[[SYSROOT]]/usr/bin/../lib"
449//
Chandler Carruth7e7dd472015-03-07 10:01:29 +0000450// Test that we can use -stdlib=libc++ in a build system even when it
451// occasionally links C code instead of C++ code.
452// RUN: %clang -no-canonical-prefixes -x c %s -### -o %t.o 2>&1 \
453// RUN: -target x86_64-unknown-linux-gnu \
454// RUN: -stdlib=libc++ \
455// RUN: -ccc-install-dir %S/Inputs/basic_linux_libcxx_tree/usr/bin \
456// RUN: --gcc-toolchain="" \
457// RUN: --sysroot=%S/Inputs/basic_linux_libcxx_tree \
458// RUN: | FileCheck --check-prefix=CHECK-BASIC-LIBCXX-C-LINK %s
459// CHECK-BASIC-LIBCXX-C-LINK-NOT: warning:
460// CHECK-BASIC-LIBCXX-C-LINK: "{{[^"]*}}clang{{[^"]*}}" "-cc1"
461// CHECK-BASIC-LIBCXX-C-LINK: "-isysroot" "[[SYSROOT:[^"]+]]"
462// CHECK-BASIC-LIBCXX-C-LINK-NOT: "-internal-isystem" "[[SYSROOT]]/usr/bin/../include/c++/v1"
463// CHECK-BASIC-LIBCXX-C-LINK: "-internal-isystem" "[[SYSROOT]]/usr/local/include"
464// CHECK-BASIC-LIBCXX-C-LINK: "--sysroot=[[SYSROOT]]"
465// CHECK-BASIC-LIBCXX-C-LINK: "-L[[SYSROOT]]/usr/bin/../lib"
466//
Chandler Carruth6e46ca22011-11-09 03:46:20 +0000467// Test a very broken version of multiarch that shipped in Ubuntu 11.04.
468// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000469// RUN: --target=i386-unknown-linux \
Samuel Antao4ae1f672015-01-05 17:07:42 +0000470// RUN: --gcc-toolchain="" \
Chandler Carruth6e46ca22011-11-09 03:46:20 +0000471// RUN: --sysroot=%S/Inputs/ubuntu_11.04_multiarch_tree \
472// RUN: | FileCheck --check-prefix=CHECK-UBUNTU-11-04 %s
473// CHECK-UBUNTU-11-04: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
Rafael Espindola49ddb862013-06-24 22:07:15 +0000474// CHECK-UBUNTU-11-04: "{{.*}}/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5{{/|\\\\}}crtbegin.o"
Chandler Carruth6e46ca22011-11-09 03:46:20 +0000475// CHECK-UBUNTU-11-04: "-L[[SYSROOT]]/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5"
476// CHECK-UBUNTU-11-04: "-L[[SYSROOT]]/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5/../../../../i386-linux-gnu"
477// CHECK-UBUNTU-11-04: "-L[[SYSROOT]]/usr/lib/i386-linux-gnu"
478// CHECK-UBUNTU-11-04: "-L[[SYSROOT]]/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5/../../../.."
479// CHECK-UBUNTU-11-04: "-L[[SYSROOT]]/lib"
480// CHECK-UBUNTU-11-04: "-L[[SYSROOT]]/usr/lib"
Hal Finkel6b89a102011-12-08 20:36:19 +0000481//
Jiangning Liu61b06cb2012-07-31 08:06:29 +0000482// Check multi arch support on Ubuntu 12.04 LTS.
483// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000484// RUN: --target=arm-unknown-linux-gnueabihf \
Samuel Antao4ae1f672015-01-05 17:07:42 +0000485// RUN: --gcc-toolchain="" \
Jiangning Liu61b06cb2012-07-31 08:06:29 +0000486// RUN: --sysroot=%S/Inputs/ubuntu_12.04_LTS_multiarch_tree \
487// RUN: | FileCheck --check-prefix=CHECK-UBUNTU-12-04-ARM-HF %s
488// CHECK-UBUNTU-12-04-ARM-HF: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
Rafael Espindola49ddb862013-06-24 22:07:15 +0000489// CHECK-UBUNTU-12-04-ARM-HF: "{{.*}}/usr/lib/gcc/arm-linux-gnueabihf/4.6.3/../../../arm-linux-gnueabihf{{/|\\\\}}crt1.o"
490// CHECK-UBUNTU-12-04-ARM-HF: "{{.*}}/usr/lib/gcc/arm-linux-gnueabihf/4.6.3/../../../arm-linux-gnueabihf{{/|\\\\}}crti.o"
491// CHECK-UBUNTU-12-04-ARM-HF: "{{.*}}/usr/lib/gcc/arm-linux-gnueabihf/4.6.3{{/|\\\\}}crtbegin.o"
Jiangning Liu61b06cb2012-07-31 08:06:29 +0000492// CHECK-UBUNTU-12-04-ARM-HF: "-L[[SYSROOT]]/usr/lib/gcc/arm-linux-gnueabihf/4.6.3"
493// CHECK-UBUNTU-12-04-ARM-HF: "-L[[SYSROOT]]/usr/lib/gcc/arm-linux-gnueabihf/4.6.3/../../../arm-linux-gnueabihf"
494// CHECK-UBUNTU-12-04-ARM-HF: "-L[[SYSROOT]]/lib/arm-linux-gnueabihf"
495// CHECK-UBUNTU-12-04-ARM-HF: "-L[[SYSROOT]]/usr/lib/arm-linux-gnueabihf"
496// CHECK-UBUNTU-12-04-ARM-HF: "-L[[SYSROOT]]/usr/lib/gcc/arm-linux-gnueabihf/4.6.3/../../.."
Rafael Espindola49ddb862013-06-24 22:07:15 +0000497// CHECK-UBUNTU-12-04-ARM-HF: "{{.*}}/usr/lib/gcc/arm-linux-gnueabihf/4.6.3{{/|\\\\}}crtend.o"
498// 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 +0000499//
Chandler Carruthda797042013-10-29 10:27:30 +0000500// Check Ubuntu 13.10 on x86-64 targeting arm-linux-gnueabihf.
501// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
502// RUN: --target=arm-linux-gnueabihf \
Samuel Antao4ae1f672015-01-05 17:07:42 +0000503// RUN: --gcc-toolchain="" \
Chandler Carruthda797042013-10-29 10:27:30 +0000504// RUN: --sysroot=%S/Inputs/x86-64_ubuntu_13.10 \
505// RUN: | FileCheck --check-prefix=CHECK-X86-64-UBUNTU-13-10-ARM-HF %s
506// CHECK-X86-64-UBUNTU-13-10-ARM-HF: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
Saleem Abdulrasool6f8442b2016-05-23 02:17:28 +0000507// CHECK-X86-64-UBUNTU-13-10-ARM-HF: "-dynamic-linker" "{{(/usr/arm--linux-gnueabihf)?}}/lib/ld-linux-armhf.so.3"
Chandler Carruthda797042013-10-29 10:27:30 +0000508// CHECK-X86-64-UBUNTU-13-10-ARM-HF: "{{.*}}/usr/lib/gcc-cross/arm-linux-gnueabihf/4.8/../../../../arm-linux-gnueabihf/lib/../lib{{/|\\\\}}crt1.o"
509// CHECK-X86-64-UBUNTU-13-10-ARM-HF: "{{.*}}/usr/lib/gcc-cross/arm-linux-gnueabihf/4.8/../../../../arm-linux-gnueabihf/lib/../lib{{/|\\\\}}crti.o"
510// CHECK-X86-64-UBUNTU-13-10-ARM-HF: "{{.*}}/usr/lib/gcc-cross/arm-linux-gnueabihf/4.8{{/|\\\\}}crtbegin.o"
511// CHECK-X86-64-UBUNTU-13-10-ARM-HF: "-L[[SYSROOT]]/usr/lib/gcc-cross/arm-linux-gnueabihf/4.8"
512// CHECK-X86-64-UBUNTU-13-10-ARM-HF: "-L[[SYSROOT]]/usr/lib/gcc-cross/arm-linux-gnueabihf/4.8/../../../../arm-linux-gnueabihf/lib/../lib"
513// CHECK-X86-64-UBUNTU-13-10-ARM-HF: "-L[[SYSROOT]]/lib/../lib"
514// CHECK-X86-64-UBUNTU-13-10-ARM-HF: "-L[[SYSROOT]]/usr/lib/../lib"
515// CHECK-X86-64-UBUNTU-13-10-ARM-HF: "-L[[SYSROOT]]/usr/lib/gcc-cross/arm-linux-gnueabihf/4.8/../../../../arm-linux-gnueabihf/lib"
516// CHECK-X86-64-UBUNTU-13-10-ARM-HF: "{{.*}}/usr/lib/gcc-cross/arm-linux-gnueabihf/4.8{{/|\\\\}}crtend.o"
517// CHECK-X86-64-UBUNTU-13-10-ARM-HF: "{{.*}}/usr/lib/gcc-cross/arm-linux-gnueabihf/4.8/../../../../arm-linux-gnueabihf/lib/../lib{{/|\\\\}}crtn.o"
518//
519// Check Ubuntu 13.10 on x86-64 targeting arm-linux-gnueabi.
520// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
521// RUN: --target=arm-linux-gnueabi \
Samuel Antao4ae1f672015-01-05 17:07:42 +0000522// RUN: --gcc-toolchain="" \
Chandler Carruthda797042013-10-29 10:27:30 +0000523// RUN: --sysroot=%S/Inputs/x86-64_ubuntu_13.10 \
524// RUN: | FileCheck --check-prefix=CHECK-X86-64-UBUNTU-13-10-ARM %s
525// CHECK-X86-64-UBUNTU-13-10-ARM: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
Saleem Abdulrasool6f8442b2016-05-23 02:17:28 +0000526// CHECK-X86-64-UBUNTU-13-10-ARM: "-dynamic-linker" "{{(/usr/arm--linux-gnueabi)?}}/lib/ld-linux.so.3"
Chandler Carruthda797042013-10-29 10:27:30 +0000527// CHECK-X86-64-UBUNTU-13-10-ARM: "{{.*}}/usr/lib/gcc-cross/arm-linux-gnueabi/4.7/../../../../arm-linux-gnueabi/lib/../lib{{/|\\\\}}crt1.o"
528// CHECK-X86-64-UBUNTU-13-10-ARM: "{{.*}}/usr/lib/gcc-cross/arm-linux-gnueabi/4.7/../../../../arm-linux-gnueabi/lib/../lib{{/|\\\\}}crti.o"
529// CHECK-X86-64-UBUNTU-13-10-ARM: "{{.*}}/usr/lib/gcc-cross/arm-linux-gnueabi/4.7{{/|\\\\}}crtbegin.o"
530// CHECK-X86-64-UBUNTU-13-10-ARM: "-L[[SYSROOT]]/usr/lib/gcc-cross/arm-linux-gnueabi/4.7"
531// CHECK-X86-64-UBUNTU-13-10-ARM: "-L[[SYSROOT]]/usr/lib/gcc-cross/arm-linux-gnueabi/4.7/../../../../arm-linux-gnueabi/lib/../lib"
532// CHECK-X86-64-UBUNTU-13-10-ARM: "-L[[SYSROOT]]/lib/../lib"
533// CHECK-X86-64-UBUNTU-13-10-ARM: "-L[[SYSROOT]]/usr/lib/../lib"
534// CHECK-X86-64-UBUNTU-13-10-ARM: "-L[[SYSROOT]]/usr/lib/gcc-cross/arm-linux-gnueabi/4.7/../../../../arm-linux-gnueabi/lib"
535// CHECK-X86-64-UBUNTU-13-10-ARM: "{{.*}}/usr/lib/gcc-cross/arm-linux-gnueabi/4.7{{/|\\\\}}crtend.o"
536// CHECK-X86-64-UBUNTU-13-10-ARM: "{{.*}}/usr/lib/gcc-cross/arm-linux-gnueabi/4.7/../../../../arm-linux-gnueabi/lib/../lib{{/|\\\\}}crtn.o"
537//
Ulrich Weigand68e902c2014-06-20 14:19:02 +0000538// Check Ubuntu 14.04 on powerpc64le.
539// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
540// RUN: --target=powerpc64le-unknown-linux-gnu \
Samuel Antao4ae1f672015-01-05 17:07:42 +0000541// RUN: --gcc-toolchain="" \
Ulrich Weigand68e902c2014-06-20 14:19:02 +0000542// RUN: --sysroot=%S/Inputs/ubuntu_14.04_multiarch_tree \
543// RUN: | FileCheck --check-prefix=CHECK-UBUNTU-14-04-PPC64LE %s
544// CHECK-UBUNTU-14-04-PPC64LE: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
545// CHECK-UBUNTU-14-04-PPC64LE: "{{.*}}/usr/lib/gcc/powerpc64le-linux-gnu/4.8/../../../powerpc64le-linux-gnu{{/|\\\\}}crt1.o"
546// CHECK-UBUNTU-14-04-PPC64LE: "{{.*}}/usr/lib/gcc/powerpc64le-linux-gnu/4.8/../../../powerpc64le-linux-gnu{{/|\\\\}}crti.o"
547// CHECK-UBUNTU-14-04-PPC64LE: "{{.*}}/usr/lib/gcc/powerpc64le-linux-gnu/4.8{{/|\\\\}}crtbegin.o"
548// CHECK-UBUNTU-14-04-PPC64LE: "-L[[SYSROOT]]/usr/lib/gcc/powerpc64le-linux-gnu/4.8"
549// CHECK-UBUNTU-14-04-PPC64LE: "-L[[SYSROOT]]/usr/lib/gcc/powerpc64le-linux-gnu/4.8/../../../powerpc64le-linux-gnu"
550// CHECK-UBUNTU-14-04-PPC64LE: "-L[[SYSROOT]]/lib/powerpc64le-linux-gnu"
551// CHECK-UBUNTU-14-04-PPC64LE: "-L[[SYSROOT]]/usr/lib/powerpc64le-linux-gnu"
552// CHECK-UBUNTU-14-04-PPC64LE: "-L[[SYSROOT]]/usr/lib/gcc/powerpc64le-linux-gnu/4.8/../../.."
553// CHECK-UBUNTU-14-04-PPC64LE: "{{.*}}/usr/lib/gcc/powerpc64le-linux-gnu/4.8{{/|\\\\}}crtend.o"
554// CHECK-UBUNTU-14-04-PPC64LE: "{{.*}}/usr/lib/gcc/powerpc64le-linux-gnu/4.8/../../../powerpc64le-linux-gnu{{/|\\\\}}crtn.o"
555//
Zinovy Nis1db95732014-07-10 15:27:19 +0000556// Check Ubuntu 14.04 on x32.
557// "/usr/lib/gcc/x86_64-linux-gnu/4.8/x32/crtend.o" "/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../libx32/crtn.o"
558// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
559// RUN: --target=x86_64-unknown-linux-gnux32 \
Samuel Antao4ae1f672015-01-05 17:07:42 +0000560// RUN: --gcc-toolchain="" \
Zinovy Nis1db95732014-07-10 15:27:19 +0000561// RUN: --sysroot=%S/Inputs/ubuntu_14.04_multiarch_tree \
562// RUN: | FileCheck --check-prefix=CHECK-UBUNTU-14-04-X32 %s
563// CHECK-UBUNTU-14-04-X32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
564// CHECK-UBUNTU-14-04-X32: "{{.*}}/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../libx32{{/|\\\\}}crt1.o"
565// CHECK-UBUNTU-14-04-X32: "{{.*}}/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../libx32{{/|\\\\}}crti.o"
566// CHECK-UBUNTU-14-04-X32: "{{.*}}/usr/lib/gcc/x86_64-linux-gnu/4.8/x32{{/|\\\\}}crtbegin.o"
567// CHECK-UBUNTU-14-04-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/4.8/x32"
568// CHECK-UBUNTU-14-04-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../libx32"
569// CHECK-UBUNTU-14-04-X32: "-L[[SYSROOT]]/lib/../libx32"
570// CHECK-UBUNTU-14-04-X32: "-L[[SYSROOT]]/usr/lib/../libx32"
571// CHECK-UBUNTU-14-04-X32: "-L[[SYSROOT]]/usr/lib/x86_64-linux-gnu/../../libx32"
572// CHECK-UBUNTU-14-04-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/4.8"
573// CHECK-UBUNTU-14-04-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/4.8/../../.."
574// CHECK-UBUNTU-14-04-X32: "{{.*}}/usr/lib/gcc/x86_64-linux-gnu/4.8/x32{{/|\\\\}}crtend.o"
575// CHECK-UBUNTU-14-04-X32: "{{.*}}/usr/lib/gcc/x86_64-linux-gnu/4.8/../../../../libx32{{/|\\\\}}crtn.o"
576//
Rafael Espindola50ba9832013-04-14 10:14:21 +0000577// Check fedora 18 on arm.
578// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000579// RUN: --target=armv7-unknown-linux-gnueabihf \
Samuel Antao4ae1f672015-01-05 17:07:42 +0000580// RUN: --gcc-toolchain="" \
Rafael Espindola50ba9832013-04-14 10:14:21 +0000581// RUN: --sysroot=%S/Inputs/fedora_18_tree \
582// RUN: | FileCheck --check-prefix=CHECK-FEDORA-18-ARM-HF %s
583// CHECK-FEDORA-18-ARM-HF: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
Chandler Carruthda797042013-10-29 10:27:30 +0000584// CHECK-FEDORA-18-ARM-HF: "{{.*}}/usr/lib/gcc/armv7hl-redhat-linux-gnueabi/4.7.2/../../../../lib{{/|\\\\}}crt1.o"
585// 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 +0000586// CHECK-FEDORA-18-ARM-HF: "{{.*}}/usr/lib/gcc/armv7hl-redhat-linux-gnueabi/4.7.2{{/|\\\\}}crtbegin.o"
Rafael Espindola50ba9832013-04-14 10:14:21 +0000587// CHECK-FEDORA-18-ARM-HF: "-L[[SYSROOT]]/usr/lib/gcc/armv7hl-redhat-linux-gnueabi/4.7.2"
Chandler Carruthda797042013-10-29 10:27:30 +0000588// 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 +0000589// CHECK-FEDORA-18-ARM-HF: "{{.*}}/usr/lib/gcc/armv7hl-redhat-linux-gnueabi/4.7.2{{/|\\\\}}crtend.o"
Chandler Carruthda797042013-10-29 10:27:30 +0000590// 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 +0000591//
Tilmann Schellere914bc82014-05-06 16:58:14 +0000592// Check Fedora 21 on AArch64.
593// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
594// RUN: --target=arm64-unknown-linux-gnu \
Samuel Antao4ae1f672015-01-05 17:07:42 +0000595// RUN: --gcc-toolchain="" \
Tilmann Schellere914bc82014-05-06 16:58:14 +0000596// RUN: --sysroot=%S/Inputs/fedora_21_tree \
597// RUN: | FileCheck --check-prefix=CHECK-FEDORA-21-AARCH64 %s
598// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
599// RUN: --target=aarch64-unknown-linux-gnu \
Samuel Antao4ae1f672015-01-05 17:07:42 +0000600// RUN: --gcc-toolchain="" \
Tilmann Schellere914bc82014-05-06 16:58:14 +0000601// RUN: --sysroot=%S/Inputs/fedora_21_tree \
602// RUN: | FileCheck --check-prefix=CHECK-FEDORA-21-AARCH64 %s
603// CHECK-FEDORA-21-AARCH64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
604// CHECK-FEDORA-21-AARCH64: "{{.*}}/usr/lib/gcc/aarch64-redhat-linux/4.9.0/../../../../lib64{{/|\\\\}}crt1.o"
605// CHECK-FEDORA-21-AARCH64: "{{.*}}/usr/lib/gcc/aarch64-redhat-linux/4.9.0/../../../../lib64{{/|\\\\}}crti.o"
606// CHECK-FEDORA-21-AARCH64: "{{.*}}/usr/lib/gcc/aarch64-redhat-linux/4.9.0{{/|\\\\}}crtbegin.o"
607// CHECK-FEDORA-21-AARCH64: "-L[[SYSROOT]]/usr/lib/gcc/aarch64-redhat-linux/4.9.0"
608// CHECK-FEDORA-21-AARCH64: "-L[[SYSROOT]]/usr/lib/gcc/aarch64-redhat-linux/4.9.0/../../../../lib64"
609// CHECK-FEDORA-21-AARCH64: "{{.*}}/usr/lib/gcc/aarch64-redhat-linux/4.9.0{{/|\\\\}}crtend.o"
610// CHECK-FEDORA-21-AARCH64: "{{.*}}/usr/lib/gcc/aarch64-redhat-linux/4.9.0/../../../../lib64{{/|\\\\}}crtn.o"
611//
Jiangning Liu61b06cb2012-07-31 08:06:29 +0000612// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000613// RUN: --target=arm-unknown-linux-gnueabi \
Samuel Antao4ae1f672015-01-05 17:07:42 +0000614// RUN: --gcc-toolchain="" \
Jiangning Liu61b06cb2012-07-31 08:06:29 +0000615// RUN: --sysroot=%S/Inputs/ubuntu_12.04_LTS_multiarch_tree \
616// RUN: | FileCheck --check-prefix=CHECK-UBUNTU-12-04-ARM %s
617// CHECK-UBUNTU-12-04-ARM: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
Rafael Espindola49ddb862013-06-24 22:07:15 +0000618// CHECK-UBUNTU-12-04-ARM: "{{.*}}/usr/lib/gcc/arm-linux-gnueabi/4.6.1/../../../arm-linux-gnueabi{{/|\\\\}}crt1.o"
619// CHECK-UBUNTU-12-04-ARM: "{{.*}}/usr/lib/gcc/arm-linux-gnueabi/4.6.1/../../../arm-linux-gnueabi{{/|\\\\}}crti.o"
620// CHECK-UBUNTU-12-04-ARM: "{{.*}}/usr/lib/gcc/arm-linux-gnueabi/4.6.1{{/|\\\\}}crtbegin.o"
Jiangning Liu61b06cb2012-07-31 08:06:29 +0000621// CHECK-UBUNTU-12-04-ARM: "-L[[SYSROOT]]/usr/lib/gcc/arm-linux-gnueabi/4.6.1"
622// CHECK-UBUNTU-12-04-ARM: "-L[[SYSROOT]]/usr/lib/gcc/arm-linux-gnueabi/4.6.1/../../../arm-linux-gnueabi"
623// CHECK-UBUNTU-12-04-ARM: "-L[[SYSROOT]]/lib/arm-linux-gnueabi"
624// CHECK-UBUNTU-12-04-ARM: "-L[[SYSROOT]]/usr/lib/arm-linux-gnueabi"
625// CHECK-UBUNTU-12-04-ARM: "-L[[SYSROOT]]/usr/lib/gcc/arm-linux-gnueabi/4.6.1/../../.."
Rafael Espindola49ddb862013-06-24 22:07:15 +0000626// CHECK-UBUNTU-12-04-ARM: "{{.*}}/usr/lib/gcc/arm-linux-gnueabi/4.6.1{{/|\\\\}}crtend.o"
627// 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 +0000628//
Hal Finkel6b89a102011-12-08 20:36:19 +0000629// Test the setup that shipped in SUSE 10.3 on ppc64.
630// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000631// RUN: --target=powerpc64-suse-linux \
Samuel Antao4ae1f672015-01-05 17:07:42 +0000632// RUN: --gcc-toolchain="" \
Hal Finkel6b89a102011-12-08 20:36:19 +0000633// RUN: --sysroot=%S/Inputs/suse_10.3_ppc64_tree \
634// RUN: | FileCheck --check-prefix=CHECK-SUSE-10-3-PPC64 %s
635// CHECK-SUSE-10-3-PPC64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
Rafael Espindola49ddb862013-06-24 22:07:15 +0000636// CHECK-SUSE-10-3-PPC64: "{{.*}}/usr/lib/gcc/powerpc64-suse-linux/4.1.2/64{{/|\\\\}}crtbegin.o"
Hal Finkel6b89a102011-12-08 20:36:19 +0000637// CHECK-SUSE-10-3-PPC64: "-L[[SYSROOT]]/usr/lib/gcc/powerpc64-suse-linux/4.1.2/64"
638// CHECK-SUSE-10-3-PPC64: "-L[[SYSROOT]]/usr/lib/gcc/powerpc64-suse-linux/4.1.2/../../../../lib64"
639// CHECK-SUSE-10-3-PPC64: "-L[[SYSROOT]]/lib/../lib64"
640// CHECK-SUSE-10-3-PPC64: "-L[[SYSROOT]]/usr/lib/../lib64"
Chandler Carruth7cf80e382011-12-17 21:57:25 +0000641//
Kostya Kortchinskyaf6a9b92017-01-10 21:13:08 +0000642// Check openSuse Leap 42.2 on AArch64
643// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
644// RUN: --target=arm64-unknown-linux-gnu \
645// RUN: --gcc-toolchain="" \
646// RUN: --sysroot=%S/Inputs/opensuse_42.2_aarch64_tree \
647// RUN: | FileCheck --check-prefix=CHECK-OPENSUSE-42-2-AARCH64 %s
648// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
649// RUN: --target=aarch64-unknown-linux-gnu \
650// RUN: --gcc-toolchain="" \
651// RUN: --sysroot=%S/Inputs/opensuse_42.2_aarch64_tree \
652// RUN: | FileCheck --check-prefix=CHECK-OPENSUSE-42-2-AARCH64 %s
653// CHECK-OPENSUSE-42-2-AARCH64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
654// CHECK-OPENSUSE-42-2-AARCH64: "{{.*}}/usr/lib64/gcc/aarch64-suse-linux/4.8/../../../../lib64{{/|\\\\}}crt1.o"
655// CHECK-OPENSUSE-42-2-AARCH64: "{{.*}}/usr/lib64/gcc/aarch64-suse-linux/4.8/../../../../lib64{{/|\\\\}}crti.o"
656// CHECK-OPENSUSE-42-2-AARCH64: "{{.*}}/usr/lib64/gcc/aarch64-suse-linux/4.8{{/|\\\\}}crtbegin.o"
657// CHECK-OPENSUSE-42-2-AARCH64: "-L[[SYSROOT]]/usr/lib64/gcc/aarch64-suse-linux/4.8"
658// CHECK-OPENSUSE-42-2-AARCH64: "-L[[SYSROOT]]/usr/lib64/gcc/aarch64-suse-linux/4.8/../../../../lib64"
659// CHECK-OPENSUSE-42-2-AARCH64: "{{.*}}/usr/lib64/gcc/aarch64-suse-linux/4.8{{/|\\\\}}crtend.o"
660// CHECK-OPENSUSE-42-2-AARCH64: "{{.*}}/usr/lib64/gcc/aarch64-suse-linux/4.8/../../../../lib64{{/|\\\\}}crtn.o"
661//
Ismail Donmezca9cdad2017-04-21 12:26:43 +0000662// Check openSUSE Tumbleweed on armv6hl
663// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
664// RUN: --target=armv6hl-suse-linux-gnueabi \
665// RUN: --gcc-toolchain="" \
666// RUN: --sysroot=%S/Inputs/opensuse_tumbleweed_armv6hl_tree \
667// RUN: | FileCheck --check-prefix=CHECK-OPENSUSE-TW-ARMV6HL %s
668// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
669// RUN: --target=armv6hl-suse-linux-gnueabi \
670// RUN: --gcc-toolchain="" \
671// RUN: --sysroot=%S/Inputs/opensuse_tumbleweed_armv6hl_tree \
672// RUN: | FileCheck --check-prefix=CHECK-OPENSUSE-TW-ARMV6HL %s
673// CHECK-OPENSUSE-TW-ARMV6HL: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
674// CHECK-OPENSUSE-TW-ARMV6HL: "{{.*}}/usr/lib/gcc/armv6hl-suse-linux-gnueabi/5/../../../../lib{{/|\\\\}}crt1.o"
675// CHECK-OPENSUSE-TW-ARMV6HL: "{{.*}}/usr/lib/gcc/armv6hl-suse-linux-gnueabi/5/../../../../lib{{/|\\\\}}crti.o"
676// CHECK-OPENSUSE-TW-ARMV6HL: "{{.*}}/usr/lib/gcc/armv6hl-suse-linux-gnueabi/5{{/|\\\\}}crtbegin.o"
677// CHECK-OPENSUSE-TW-ARMV6HL: "-L[[SYSROOT]]/usr/lib/gcc/armv6hl-suse-linux-gnueabi/5"
678// CHECK-OPENSUSE-TW-ARMV6HL: "-L[[SYSROOT]]/usr/lib/gcc/armv6hl-suse-linux-gnueabi/5/../../../../lib"
679// CHECK-OPENSUSE-TW-ARMV6HL: "{{.*}}/usr/lib/gcc/armv6hl-suse-linux-gnueabi/5{{/|\\\\}}crtend.o"
680// CHECK-OPENSUSE-TW-ARMV6HL: "{{.*}}/usr/lib/gcc/armv6hl-suse-linux-gnueabi/5/../../../../lib{{/|\\\\}}crtn.o"
681//
682// Check openSUSE Tumbleweed on armv7hl
683// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
684// RUN: --target=armv7hl-suse-linux-gnueabi \
685// RUN: --gcc-toolchain="" \
686// RUN: --sysroot=%S/Inputs/opensuse_tumbleweed_armv7hl_tree \
687// RUN: | FileCheck --check-prefix=CHECK-OPENSUSE-TW-ARMV7HL %s
688// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
689// RUN: --target=armv7hl-suse-linux-gnueabi \
690// RUN: --gcc-toolchain="" \
691// RUN: --sysroot=%S/Inputs/opensuse_tumbleweed_armv7hl_tree \
692// RUN: | FileCheck --check-prefix=CHECK-OPENSUSE-TW-ARMV7HL %s
693// CHECK-OPENSUSE-TW-ARMV7HL: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
694// CHECK-OPENSUSE-TW-ARMV7HL: "{{.*}}/usr/lib/gcc/armv7hl-suse-linux-gnueabi/5/../../../../lib{{/|\\\\}}crt1.o"
695// CHECK-OPENSUSE-TW-ARMV7HL: "{{.*}}/usr/lib/gcc/armv7hl-suse-linux-gnueabi/5/../../../../lib{{/|\\\\}}crti.o"
696// CHECK-OPENSUSE-TW-ARMV7HL: "{{.*}}/usr/lib/gcc/armv7hl-suse-linux-gnueabi/5{{/|\\\\}}crtbegin.o"
697// CHECK-OPENSUSE-TW-ARMV7HL: "-L[[SYSROOT]]/usr/lib/gcc/armv7hl-suse-linux-gnueabi/5"
698// CHECK-OPENSUSE-TW-ARMV7HL: "-L[[SYSROOT]]/usr/lib/gcc/armv7hl-suse-linux-gnueabi/5/../../../../lib"
699// CHECK-OPENSUSE-TW-ARMV7HL: "{{.*}}/usr/lib/gcc/armv7hl-suse-linux-gnueabi/5{{/|\\\\}}crtend.o"
700// CHECK-OPENSUSE-TW-ARMV7HL: "{{.*}}/usr/lib/gcc/armv7hl-suse-linux-gnueabi/5/../../../../lib{{/|\\\\}}crtn.o"
701//
Jiangning Liueabbf922012-07-30 11:05:56 +0000702// Check dynamic-linker for different archs
703// RUN: %clang %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000704// RUN: --target=arm-linux-gnueabi \
Jiangning Liueabbf922012-07-30 11:05:56 +0000705// RUN: | FileCheck --check-prefix=CHECK-ARM %s
706// CHECK-ARM: "{{.*}}ld{{(.exe)?}}"
707// CHECK-ARM: "-m" "armelf_linux_eabi"
708// CHECK-ARM: "-dynamic-linker" "{{.*}}/lib/ld-linux.so.3"
709//
710// RUN: %clang %s -### -o %t.o 2>&1 \
Renato Golin24ba3e92015-07-27 09:56:37 +0000711// RUN: --target=arm-linux-gnueabi -mfloat-abi=hard \
712// RUN: | FileCheck --check-prefix=CHECK-ARM-ABIHF %s
713// CHECK-ARM-ABIHF: "{{.*}}ld{{(.exe)?}}"
714// CHECK-ARM-ABIHF: "-m" "armelf_linux_eabi"
715// CHECK-ARM-ABIHF: "-dynamic-linker" "{{.*}}/lib/ld-linux-armhf.so.3"
716//
717// RUN: %clang %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000718// RUN: --target=arm-linux-gnueabihf \
Jiangning Liueabbf922012-07-30 11:05:56 +0000719// RUN: | FileCheck --check-prefix=CHECK-ARM-HF %s
720// CHECK-ARM-HF: "{{.*}}ld{{(.exe)?}}"
721// CHECK-ARM-HF: "-m" "armelf_linux_eabi"
722// CHECK-ARM-HF: "-dynamic-linker" "{{.*}}/lib/ld-linux-armhf.so.3"
723//
Ulrich Weigand68e902c2014-06-20 14:19:02 +0000724// RUN: %clang %s -### -o %t.o 2>&1 \
Ulrich Weigand8afad612014-07-28 13:17:52 +0000725// RUN: --target=powerpc64-linux-gnu \
726// RUN: | FileCheck --check-prefix=CHECK-PPC64 %s
727// CHECK-PPC64: "{{.*}}ld{{(.exe)?}}"
728// CHECK-PPC64: "-m" "elf64ppc"
Saleem Abdulrasool6f8442b2016-05-23 02:17:28 +0000729// CHECK-PPC64: "-dynamic-linker" "{{.*}}/lib{{(64)?}}/ld64.so.1"
Ulrich Weigand8afad612014-07-28 13:17:52 +0000730//
731// RUN: %clang %s -### -o %t.o 2>&1 \
732// RUN: --target=powerpc64-linux-gnu -mabi=elfv1 \
733// RUN: | FileCheck --check-prefix=CHECK-PPC64-ELFv1 %s
Hal Finkel0d0a1a52015-03-11 19:14:15 +0000734// RUN: %clang %s -### -o %t.o 2>&1 \
735// RUN: --target=powerpc64-linux-gnu -mabi=elfv1-qpx \
736// RUN: | FileCheck --check-prefix=CHECK-PPC64-ELFv1 %s
Ulrich Weigand8afad612014-07-28 13:17:52 +0000737// CHECK-PPC64-ELFv1: "{{.*}}ld{{(.exe)?}}"
738// CHECK-PPC64-ELFv1: "-m" "elf64ppc"
Saleem Abdulrasool6f8442b2016-05-23 02:17:28 +0000739// CHECK-PPC64-ELFv1: "-dynamic-linker" "{{.*}}/lib{{(64)?}}/ld64.so.1"
Ulrich Weigand8afad612014-07-28 13:17:52 +0000740//
741// RUN: %clang %s -### -o %t.o 2>&1 \
742// RUN: --target=powerpc64-linux-gnu -mabi=elfv2 \
743// RUN: | FileCheck --check-prefix=CHECK-PPC64-ELFv2 %s
744// CHECK-PPC64-ELFv2: "{{.*}}ld{{(.exe)?}}"
745// CHECK-PPC64-ELFv2: "-m" "elf64ppc"
Saleem Abdulrasool6f8442b2016-05-23 02:17:28 +0000746// CHECK-PPC64-ELFv2: "-dynamic-linker" "{{.*}}/lib{{(64)?}}/ld64.so.2"
Ulrich Weigand8afad612014-07-28 13:17:52 +0000747//
748// RUN: %clang %s -### -o %t.o 2>&1 \
Ulrich Weigand68e902c2014-06-20 14:19:02 +0000749// RUN: --target=powerpc64le-linux-gnu \
750// RUN: | FileCheck --check-prefix=CHECK-PPC64LE %s
751// CHECK-PPC64LE: "{{.*}}ld{{(.exe)?}}"
752// CHECK-PPC64LE: "-m" "elf64lppc"
Saleem Abdulrasool6f8442b2016-05-23 02:17:28 +0000753// CHECK-PPC64LE: "-dynamic-linker" "{{.*}}/lib{{(64)?}}/ld64.so.2"
Ulrich Weigand68e902c2014-06-20 14:19:02 +0000754//
Ulrich Weigand8afad612014-07-28 13:17:52 +0000755// RUN: %clang %s -### -o %t.o 2>&1 \
756// RUN: --target=powerpc64le-linux-gnu -mabi=elfv1 \
757// RUN: | FileCheck --check-prefix=CHECK-PPC64LE-ELFv1 %s
758// CHECK-PPC64LE-ELFv1: "{{.*}}ld{{(.exe)?}}"
759// CHECK-PPC64LE-ELFv1: "-m" "elf64lppc"
Saleem Abdulrasool6f8442b2016-05-23 02:17:28 +0000760// CHECK-PPC64LE-ELFv1: "-dynamic-linker" "{{.*}}/lib{{(64)?}}/ld64.so.1"
Ulrich Weigand8afad612014-07-28 13:17:52 +0000761//
762// RUN: %clang %s -### -o %t.o 2>&1 \
763// RUN: --target=powerpc64le-linux-gnu -mabi=elfv2 \
764// RUN: | FileCheck --check-prefix=CHECK-PPC64LE-ELFv2 %s
765// CHECK-PPC64LE-ELFv2: "{{.*}}ld{{(.exe)?}}"
766// CHECK-PPC64LE-ELFv2: "-m" "elf64lppc"
Saleem Abdulrasool6f8442b2016-05-23 02:17:28 +0000767// CHECK-PPC64LE-ELFv2: "-dynamic-linker" "{{.*}}/lib{{(64)?}}/ld64.so.2"
Ulrich Weigand8afad612014-07-28 13:17:52 +0000768//
Sumanth Gundapaneni1952acf2017-01-19 16:54:04 +0000769// Check that we do not pass --hash-style=gnu or --hash-style=both to
770// hexagon linux linker
771// RUN: %clang %s -### -o %t.o 2>&1 \
772// RUN: --target=hexagon-linux-gnu \
773// RUN: | FileCheck --check-prefix=CHECK-HEXAGON %s
774// CHECK-HEXAGON: "{{.*}}hexagon-link{{(.exe)?}}"
775// CHECK-HEXAGON-NOT: "--hash-style={{gnu|both}}"
776//
Chandler Carruth7cf80e382011-12-17 21:57:25 +0000777// Check that we do not pass --hash-style=gnu and --hash-style=both to linker
Simon Atanasyan1e1e2e22012-04-06 20:14:27 +0000778// and provide correct path to the dynamic linker and emulation mode when build
779// for MIPS platforms.
Chandler Carruth7cf80e382011-12-17 21:57:25 +0000780// RUN: %clang %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000781// RUN: --target=mips-linux-gnu \
Chandler Carruth7cf80e382011-12-17 21:57:25 +0000782// RUN: | FileCheck --check-prefix=CHECK-MIPS %s
783// CHECK-MIPS: "{{.*}}ld{{(.exe)?}}"
Simon Atanasyan1e1e2e22012-04-06 20:14:27 +0000784// CHECK-MIPS: "-m" "elf32btsmip"
785// CHECK-MIPS: "-dynamic-linker" "{{.*}}/lib/ld.so.1"
Chandler Carruth7cf80e382011-12-17 21:57:25 +0000786// CHECK-MIPS-NOT: "--hash-style={{gnu|both}}"
Daniel Sanders3b92c5b2014-06-24 15:04:16 +0000787//
Chandler Carruth7cf80e382011-12-17 21:57:25 +0000788// RUN: %clang %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000789// RUN: --target=mipsel-linux-gnu \
Chandler Carruth7cf80e382011-12-17 21:57:25 +0000790// RUN: | FileCheck --check-prefix=CHECK-MIPSEL %s
791// CHECK-MIPSEL: "{{.*}}ld{{(.exe)?}}"
Simon Atanasyan1e1e2e22012-04-06 20:14:27 +0000792// CHECK-MIPSEL: "-m" "elf32ltsmip"
793// CHECK-MIPSEL: "-dynamic-linker" "{{.*}}/lib/ld.so.1"
Chandler Carruth7cf80e382011-12-17 21:57:25 +0000794// CHECK-MIPSEL-NOT: "--hash-style={{gnu|both}}"
Daniel Sanders3b92c5b2014-06-24 15:04:16 +0000795//
796// RUN: %clang %s -### -o %t.o 2>&1 --target=mipsel-linux-gnu -mnan=2008 \
797// RUN: | FileCheck --check-prefix=CHECK-MIPSEL-NAN2008 %s
798// CHECK-MIPSEL-NAN2008: "{{.*}}ld{{(.exe)?}}"
799// CHECK-MIPSEL-NAN2008: "-m" "elf32ltsmip"
800// CHECK-MIPSEL-NAN2008: "-dynamic-linker" "{{.*}}/lib/ld-linux-mipsn8.so.1"
801// CHECK-MIPSEL-NAN2008-NOT: "--hash-style={{gnu|both}}"
802//
803// RUN: %clang %s -### -o %t.o 2>&1 --target=mipsel-linux-gnu -mcpu=mips32r6 \
804// RUN: | FileCheck --check-prefix=CHECK-MIPS32R6EL %s
805// CHECK-MIPS32R6EL: "{{.*}}ld{{(.exe)?}}"
806// CHECK-MIPS32R6EL: "-m" "elf32ltsmip"
807// CHECK-MIPS32R6EL: "-dynamic-linker" "{{.*}}/lib/ld-linux-mipsn8.so.1"
808// CHECK-MIPS32R6EL-NOT: "--hash-style={{gnu|both}}"
809//
Chandler Carruth7cf80e382011-12-17 21:57:25 +0000810// RUN: %clang %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000811// RUN: --target=mips64-linux-gnu \
Chandler Carruth7cf80e382011-12-17 21:57:25 +0000812// RUN: | FileCheck --check-prefix=CHECK-MIPS64 %s
813// CHECK-MIPS64: "{{.*}}ld{{(.exe)?}}"
Simon Atanasyan1e1e2e22012-04-06 20:14:27 +0000814// CHECK-MIPS64: "-m" "elf64btsmip"
Saleem Abdulrasool6f8442b2016-05-23 02:17:28 +0000815// CHECK-MIPS64: "-dynamic-linker" "{{.*}}/lib{{(64)?}}/ld.so.1"
Chandler Carruth7cf80e382011-12-17 21:57:25 +0000816// CHECK-MIPS64-NOT: "--hash-style={{gnu|both}}"
Daniel Sanders3b92c5b2014-06-24 15:04:16 +0000817//
Chandler Carruth7cf80e382011-12-17 21:57:25 +0000818// RUN: %clang %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000819// RUN: --target=mips64el-linux-gnu \
Chandler Carruth7cf80e382011-12-17 21:57:25 +0000820// RUN: | FileCheck --check-prefix=CHECK-MIPS64EL %s
821// CHECK-MIPS64EL: "{{.*}}ld{{(.exe)?}}"
Simon Atanasyan1e1e2e22012-04-06 20:14:27 +0000822// CHECK-MIPS64EL: "-m" "elf64ltsmip"
Saleem Abdulrasool6f8442b2016-05-23 02:17:28 +0000823// CHECK-MIPS64EL: "-dynamic-linker" "{{.*}}/lib{{(64)?}}/ld.so.1"
Chandler Carruth7cf80e382011-12-17 21:57:25 +0000824// CHECK-MIPS64EL-NOT: "--hash-style={{gnu|both}}"
Daniel Sanders3b92c5b2014-06-24 15:04:16 +0000825//
826// RUN: %clang %s -### -o %t.o 2>&1 --target=mips64el-linux-gnu -mnan=2008 \
827// RUN: | FileCheck --check-prefix=CHECK-MIPS64EL-NAN2008 %s
828// CHECK-MIPS64EL-NAN2008: "{{.*}}ld{{(.exe)?}}"
829// CHECK-MIPS64EL-NAN2008: "-m" "elf64ltsmip"
Saleem Abdulrasool6f8442b2016-05-23 02:17:28 +0000830// CHECK-MIPS64EL-NAN2008: "-dynamic-linker" "{{.*}}/lib{{(64)?}}/ld-linux-mipsn8.so.1"
Daniel Sanders3b92c5b2014-06-24 15:04:16 +0000831// CHECK-MIPS64EL-NAN2008-NOT: "--hash-style={{gnu|both}}"
832//
833// RUN: %clang %s -### -o %t.o 2>&1 --target=mips64el-linux-gnu -mcpu=mips64r6 \
834// RUN: | FileCheck --check-prefix=CHECK-MIPS64R6EL %s
835// CHECK-MIPS64R6EL: "{{.*}}ld{{(.exe)?}}"
836// CHECK-MIPS64R6EL: "-m" "elf64ltsmip"
Saleem Abdulrasool6f8442b2016-05-23 02:17:28 +0000837// CHECK-MIPS64R6EL: "-dynamic-linker" "{{.*}}/lib{{(64)?}}/ld-linux-mipsn8.so.1"
Daniel Sanders3b92c5b2014-06-24 15:04:16 +0000838// CHECK-MIPS64R6EL-NOT: "--hash-style={{gnu|both}}"
839//
Simon Atanasyan2d1b1ad2012-10-21 11:44:57 +0000840// RUN: %clang %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000841// RUN: --target=mips64-linux-gnu -mabi=n32 \
Simon Atanasyan2d1b1ad2012-10-21 11:44:57 +0000842// RUN: | FileCheck --check-prefix=CHECK-MIPS64-N32 %s
843// CHECK-MIPS64-N32: "{{.*}}ld{{(.exe)?}}"
844// CHECK-MIPS64-N32: "-m" "elf32btsmipn32"
Saleem Abdulrasool6f8442b2016-05-23 02:17:28 +0000845// CHECK-MIPS64-N32: "-dynamic-linker" "{{.*}}/lib{{(32)?}}/ld.so.1"
Simon Atanasyan2d1b1ad2012-10-21 11:44:57 +0000846// CHECK-MIPS64-N32-NOT: "--hash-style={{gnu|both}}"
Daniel Sanders3b92c5b2014-06-24 15:04:16 +0000847//
Simon Atanasyan2d1b1ad2012-10-21 11:44:57 +0000848// RUN: %clang %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000849// RUN: --target=mips64el-linux-gnu -mabi=n32 \
Simon Atanasyan2d1b1ad2012-10-21 11:44:57 +0000850// RUN: | FileCheck --check-prefix=CHECK-MIPS64EL-N32 %s
851// CHECK-MIPS64EL-N32: "{{.*}}ld{{(.exe)?}}"
852// CHECK-MIPS64EL-N32: "-m" "elf32ltsmipn32"
Saleem Abdulrasool6f8442b2016-05-23 02:17:28 +0000853// CHECK-MIPS64EL-N32: "-dynamic-linker" "{{.*}}/lib{{(32)?}}/ld.so.1"
Simon Atanasyan2d1b1ad2012-10-21 11:44:57 +0000854// CHECK-MIPS64EL-N32-NOT: "--hash-style={{gnu|both}}"
Chandler Carruthaf3c2092012-02-26 09:03:21 +0000855//
Daniel Sanders3b92c5b2014-06-24 15:04:16 +0000856// RUN: %clang %s -### -o %t.o 2>&1 --target=mips64el-linux-gnu -mabi=n32 \
857// RUN: -mnan=2008 | FileCheck --check-prefix=CHECK-MIPS64EL-N32-NAN2008 %s
858// CHECK-MIPS64EL-N32-NAN2008: "{{.*}}ld{{(.exe)?}}"
859// CHECK-MIPS64EL-N32-NAN2008: "-m" "elf32ltsmipn32"
Saleem Abdulrasool6f8442b2016-05-23 02:17:28 +0000860// CHECK-MIPS64EL-N32-NAN2008: "-dynamic-linker" "{{.*}}/lib{{(32)?}}/ld-linux-mipsn8.so.1"
Daniel Sanders3b92c5b2014-06-24 15:04:16 +0000861// CHECK-MIPS64EL-N32-NAN2008-NOT: "--hash-style={{gnu|both}}"
862//
Vasileios Kalintiris44deb632016-05-16 11:53:51 +0000863// RUN: %clang %s -### -o %t.o 2>&1 --target=mips64el-redhat-linux \
864// RUN: | FileCheck --check-prefix=CHECK-MIPS64EL-REDHAT %s
865// CHECK-MIPS64EL-REDHAT: "{{.*}}ld{{(.exe)?}}"
866// CHECK-MIPS64EL-REDHAT: "-m" "elf64ltsmip"
Saleem Abdulrasool6f8442b2016-05-23 02:17:28 +0000867// CHECK-MIPS64EL-REDHAT: "-dynamic-linker" "{{.*}}/lib{{(64)?}}/ld.so.1"
868// CHECK-MIPS64EL-REDHAT-NOT: "-dynamic-linker" "{{.*}}/lib{{(64)?}}/ld-musl-mipsel.so.1"
Vasileios Kalintiris44deb632016-05-16 11:53:51 +0000869// CHECK-MIPS64EL-REDHAT-NOT: "--hash-style={{gnu|both}}"
870//
Jakob Stoklund Olesen91a8e032014-01-10 03:51:33 +0000871// RUN: %clang %s -### -o %t.o 2>&1 \
Douglas Katzmanf36dddf2015-05-11 15:21:44 +0000872// RUN: --target=sparc-unknown-linux-gnu \
Jakob Stoklund Olesen91a8e032014-01-10 03:51:33 +0000873// RUN: | FileCheck --check-prefix=CHECK-SPARCV8 %s
874// CHECK-SPARCV8: "{{.*}}ld{{(.exe)?}}"
875// CHECK-SPARCV8: "-m" "elf32_sparc"
Saleem Abdulrasool6f8442b2016-05-23 02:17:28 +0000876// CHECK-SPARCV8: "-dynamic-linker" "{{(/usr/sparc-unknown-linux-gnu)?}}/lib/ld-linux.so.2"
Jakob Stoklund Olesen91a8e032014-01-10 03:51:33 +0000877//
878// RUN: %clang %s -### -o %t.o 2>&1 \
Douglas Katzmanf36dddf2015-05-11 15:21:44 +0000879// RUN: --target=sparcel-unknown-linux-gnu \
880// RUN: | FileCheck --check-prefix=CHECK-SPARCV8EL %s
881// CHECK-SPARCV8EL: "{{.*}}ld{{(.exe)?}}"
882// CHECK-SPARCV8EL: "-m" "elf32_sparc"
Saleem Abdulrasool6f8442b2016-05-23 02:17:28 +0000883// CHECK-SPARCV8EL: "-dynamic-linker" "{{(/usr/sparcel-unknown-linux-gnu)?}}/lib/ld-linux.so.2"
Douglas Katzmanf36dddf2015-05-11 15:21:44 +0000884//
885// RUN: %clang %s -### -o %t.o 2>&1 \
886// RUN: --target=sparcv9-unknown-linux-gnu \
Jakob Stoklund Olesen91a8e032014-01-10 03:51:33 +0000887// RUN: | FileCheck --check-prefix=CHECK-SPARCV9 %s
888// CHECK-SPARCV9: "{{.*}}ld{{(.exe)?}}"
889// CHECK-SPARCV9: "-m" "elf64_sparc"
Saleem Abdulrasool6f8442b2016-05-23 02:17:28 +0000890// CHECK-SPARCV9: "-dynamic-linker" "{{(/usr/sparcv9-unknown-linux-gnu)?}}/lib{{(64)?}}/ld-linux.so.2"
Jakob Stoklund Olesen91a8e032014-01-10 03:51:33 +0000891//
Chandler Carruthaf3c2092012-02-26 09:03:21 +0000892// Thoroughly exercise the Debian multiarch environment.
893// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000894// RUN: --target=i686-linux-gnu \
Samuel Antao4ae1f672015-01-05 17:07:42 +0000895// RUN: --gcc-toolchain="" \
Chandler Carruthaf3c2092012-02-26 09:03:21 +0000896// RUN: --sysroot=%S/Inputs/debian_multiarch_tree \
897// RUN: | FileCheck --check-prefix=CHECK-DEBIAN-X86 %s
898// CHECK-DEBIAN-X86: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
Rafael Espindola49ddb862013-06-24 22:07:15 +0000899// CHECK-DEBIAN-X86: "{{.*}}/usr/lib/gcc/i686-linux-gnu/4.5{{/|\\\\}}crtbegin.o"
Chandler Carruthaf3c2092012-02-26 09:03:21 +0000900// CHECK-DEBIAN-X86: "-L[[SYSROOT]]/usr/lib/gcc/i686-linux-gnu/4.5"
901// CHECK-DEBIAN-X86: "-L[[SYSROOT]]/usr/lib/gcc/i686-linux-gnu/4.5/../../../i386-linux-gnu"
902// CHECK-DEBIAN-X86: "-L[[SYSROOT]]/usr/lib/i386-linux-gnu"
903// CHECK-DEBIAN-X86: "-L[[SYSROOT]]/usr/lib/gcc/i686-linux-gnu/4.5/../../.."
904// CHECK-DEBIAN-X86: "-L[[SYSROOT]]/lib"
905// CHECK-DEBIAN-X86: "-L[[SYSROOT]]/usr/lib"
906// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000907// RUN: --target=x86_64-linux-gnu \
Samuel Antao4ae1f672015-01-05 17:07:42 +0000908// RUN: --gcc-toolchain="" \
Chandler Carruthaf3c2092012-02-26 09:03:21 +0000909// RUN: --sysroot=%S/Inputs/debian_multiarch_tree \
910// RUN: | FileCheck --check-prefix=CHECK-DEBIAN-X86-64 %s
911// CHECK-DEBIAN-X86-64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
Rafael Espindola49ddb862013-06-24 22:07:15 +0000912// CHECK-DEBIAN-X86-64: "{{.*}}/usr/lib/gcc/x86_64-linux-gnu/4.5{{/|\\\\}}crtbegin.o"
Chandler Carruthaf3c2092012-02-26 09:03:21 +0000913// CHECK-DEBIAN-X86-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/4.5"
914// CHECK-DEBIAN-X86-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/4.5/../../../x86_64-linux-gnu"
915// CHECK-DEBIAN-X86-64: "-L[[SYSROOT]]/usr/lib/x86_64-linux-gnu"
916// CHECK-DEBIAN-X86-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/4.5/../../.."
917// CHECK-DEBIAN-X86-64: "-L[[SYSROOT]]/lib"
918// CHECK-DEBIAN-X86-64: "-L[[SYSROOT]]/usr/lib"
919// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000920// RUN: --target=powerpc-linux-gnu \
Samuel Antao4ae1f672015-01-05 17:07:42 +0000921// RUN: --gcc-toolchain="" \
Chandler Carruthaf3c2092012-02-26 09:03:21 +0000922// RUN: --sysroot=%S/Inputs/debian_multiarch_tree \
923// RUN: | FileCheck --check-prefix=CHECK-DEBIAN-PPC %s
924// CHECK-DEBIAN-PPC: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
Rafael Espindola49ddb862013-06-24 22:07:15 +0000925// CHECK-DEBIAN-PPC: "{{.*}}/usr/lib/gcc/powerpc-linux-gnu/4.5{{/|\\\\}}crtbegin.o"
Chandler Carruthaf3c2092012-02-26 09:03:21 +0000926// CHECK-DEBIAN-PPC: "-L[[SYSROOT]]/usr/lib/gcc/powerpc-linux-gnu/4.5"
927// CHECK-DEBIAN-PPC: "-L[[SYSROOT]]/usr/lib/gcc/powerpc-linux-gnu/4.5/../../../powerpc-linux-gnu"
928// CHECK-DEBIAN-PPC: "-L[[SYSROOT]]/usr/lib/powerpc-linux-gnu"
929// CHECK-DEBIAN-PPC: "-L[[SYSROOT]]/usr/lib/gcc/powerpc-linux-gnu/4.5/../../.."
930// CHECK-DEBIAN-PPC: "-L[[SYSROOT]]/lib"
931// CHECK-DEBIAN-PPC: "-L[[SYSROOT]]/usr/lib"
932// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Douglas Katzmanecddb3a2015-06-26 18:37:15 +0000933// RUN: --target=powerpc64le-linux-gnu \
934// RUN: --gcc-toolchain="" \
935// RUN: --sysroot=%S/Inputs/debian_multiarch_tree \
936// RUN: | FileCheck --check-prefix=CHECK-DEBIAN-PPC64LE %s
937// CHECK-DEBIAN-PPC64LE: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
938// CHECK-DEBIAN-PPC64LE: "{{.*}}/usr/lib/gcc/powerpc64le-linux-gnu/4.5{{/|\\\\}}crtbegin.o"
939// CHECK-DEBIAN-PPC64LE: "-L[[SYSROOT]]/usr/lib/gcc/powerpc64le-linux-gnu/4.5"
940// CHECK-DEBIAN-PPC64LE: "-L[[SYSROOT]]/usr/lib/gcc/powerpc64le-linux-gnu/4.5/../../../powerpc64le-linux-gnu"
941// CHECK-DEBIAN-PPC64LE: "-L[[SYSROOT]]/usr/lib/powerpc64le-linux-gnu"
942// CHECK-DEBIAN-PPC64LE: "-L[[SYSROOT]]/usr/lib/gcc/powerpc64le-linux-gnu/4.5/../../.."
943// CHECK-DEBIAN-PPC64LE: "-L[[SYSROOT]]/lib"
944// CHECK-DEBIAN-PPC64LE: "-L[[SYSROOT]]/usr/lib"
945// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000946// RUN: --target=powerpc64-linux-gnu \
Samuel Antao4ae1f672015-01-05 17:07:42 +0000947// RUN: --gcc-toolchain="" \
Chandler Carruthaf3c2092012-02-26 09:03:21 +0000948// RUN: --sysroot=%S/Inputs/debian_multiarch_tree \
949// RUN: | FileCheck --check-prefix=CHECK-DEBIAN-PPC64 %s
950// CHECK-DEBIAN-PPC64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
Rafael Espindola49ddb862013-06-24 22:07:15 +0000951// CHECK-DEBIAN-PPC64: "{{.*}}/usr/lib/gcc/powerpc64-linux-gnu/4.5{{/|\\\\}}crtbegin.o"
Chandler Carruthaf3c2092012-02-26 09:03:21 +0000952// CHECK-DEBIAN-PPC64: "-L[[SYSROOT]]/usr/lib/gcc/powerpc64-linux-gnu/4.5"
953// CHECK-DEBIAN-PPC64: "-L[[SYSROOT]]/usr/lib/gcc/powerpc64-linux-gnu/4.5/../../../powerpc64-linux-gnu"
954// CHECK-DEBIAN-PPC64: "-L[[SYSROOT]]/usr/lib/powerpc64-linux-gnu"
955// CHECK-DEBIAN-PPC64: "-L[[SYSROOT]]/usr/lib/gcc/powerpc64-linux-gnu/4.5/../../.."
956// CHECK-DEBIAN-PPC64: "-L[[SYSROOT]]/lib"
957// CHECK-DEBIAN-PPC64: "-L[[SYSROOT]]/usr/lib"
Simon Atanasyan2be62252012-04-26 08:35:58 +0000958// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000959// RUN: --target=mips-linux-gnu \
Samuel Antao4ae1f672015-01-05 17:07:42 +0000960// RUN: --gcc-toolchain="" \
Simon Atanasyan2be62252012-04-26 08:35:58 +0000961// RUN: --sysroot=%S/Inputs/debian_multiarch_tree \
962// RUN: | FileCheck --check-prefix=CHECK-DEBIAN-MIPS %s
963// CHECK-DEBIAN-MIPS: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
Rafael Espindola49ddb862013-06-24 22:07:15 +0000964// CHECK-DEBIAN-MIPS: "{{.*}}/usr/lib/gcc/mips-linux-gnu/4.5{{/|\\\\}}crtbegin.o"
Simon Atanasyan2be62252012-04-26 08:35:58 +0000965// CHECK-DEBIAN-MIPS: "-L[[SYSROOT]]/usr/lib/gcc/mips-linux-gnu/4.5"
966// CHECK-DEBIAN-MIPS: "-L[[SYSROOT]]/usr/lib/gcc/mips-linux-gnu/4.5/../../../mips-linux-gnu"
967// CHECK-DEBIAN-MIPS: "-L[[SYSROOT]]/usr/lib/mips-linux-gnu"
968// CHECK-DEBIAN-MIPS: "-L[[SYSROOT]]/usr/lib/gcc/mips-linux-gnu/4.5/../../.."
969// CHECK-DEBIAN-MIPS: "-L[[SYSROOT]]/lib"
970// CHECK-DEBIAN-MIPS: "-L[[SYSROOT]]/usr/lib"
971// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000972// RUN: --target=mipsel-linux-gnu \
Samuel Antao4ae1f672015-01-05 17:07:42 +0000973// RUN: --gcc-toolchain="" \
Simon Atanasyan2be62252012-04-26 08:35:58 +0000974// RUN: --sysroot=%S/Inputs/debian_multiarch_tree \
975// RUN: | FileCheck --check-prefix=CHECK-DEBIAN-MIPSEL %s
976// CHECK-DEBIAN-MIPSEL: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
Rafael Espindola49ddb862013-06-24 22:07:15 +0000977// CHECK-DEBIAN-MIPSEL: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.5{{/|\\\\}}crtbegin.o"
Simon Atanasyan2be62252012-04-26 08:35:58 +0000978// CHECK-DEBIAN-MIPSEL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.5"
979// CHECK-DEBIAN-MIPSEL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.5/../../../mipsel-linux-gnu"
980// CHECK-DEBIAN-MIPSEL: "-L[[SYSROOT]]/usr/lib/mipsel-linux-gnu"
981// CHECK-DEBIAN-MIPSEL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.5/../../.."
982// CHECK-DEBIAN-MIPSEL: "-L[[SYSROOT]]/lib"
983// CHECK-DEBIAN-MIPSEL: "-L[[SYSROOT]]/usr/lib"
Simon Atanasyan9bb634d2012-04-26 19:57:02 +0000984// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000985// RUN: --target=mips64-linux-gnu \
Samuel Antao4ae1f672015-01-05 17:07:42 +0000986// RUN: --gcc-toolchain="" \
Simon Atanasyan9bb634d2012-04-26 19:57:02 +0000987// RUN: --sysroot=%S/Inputs/debian_multiarch_tree \
988// RUN: | FileCheck --check-prefix=CHECK-DEBIAN-MIPS64 %s
989// CHECK-DEBIAN-MIPS64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
Rafael Espindola49ddb862013-06-24 22:07:15 +0000990// CHECK-DEBIAN-MIPS64: "{{.*}}/usr/lib/gcc/mips-linux-gnu/4.5/64{{/|\\\\}}crtbegin.o"
Simon Atanasyan9bb634d2012-04-26 19:57:02 +0000991// CHECK-DEBIAN-MIPS64: "-L[[SYSROOT]]/usr/lib/gcc/mips-linux-gnu/4.5/64"
992// CHECK-DEBIAN-MIPS64: "-L[[SYSROOT]]/usr/lib/gcc/mips-linux-gnu/4.5"
993// CHECK-DEBIAN-MIPS64: "-L[[SYSROOT]]/usr/lib/gcc/mips-linux-gnu/4.5/../../.."
994// CHECK-DEBIAN-MIPS64: "-L[[SYSROOT]]/lib"
995// CHECK-DEBIAN-MIPS64: "-L[[SYSROOT]]/usr/lib"
996// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +0000997// RUN: --target=mips64el-linux-gnu \
Samuel Antao4ae1f672015-01-05 17:07:42 +0000998// RUN: --gcc-toolchain="" \
Simon Atanasyan9bb634d2012-04-26 19:57:02 +0000999// RUN: --sysroot=%S/Inputs/debian_multiarch_tree \
1000// RUN: | FileCheck --check-prefix=CHECK-DEBIAN-MIPS64EL %s
1001// CHECK-DEBIAN-MIPS64EL: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
Rafael Espindola49ddb862013-06-24 22:07:15 +00001002// CHECK-DEBIAN-MIPS64EL: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.5/64{{/|\\\\}}crtbegin.o"
Simon Atanasyan9bb634d2012-04-26 19:57:02 +00001003// CHECK-DEBIAN-MIPS64EL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.5/64"
1004// CHECK-DEBIAN-MIPS64EL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.5"
1005// CHECK-DEBIAN-MIPS64EL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.5/../../.."
1006// CHECK-DEBIAN-MIPS64EL: "-L[[SYSROOT]]/lib"
1007// CHECK-DEBIAN-MIPS64EL: "-L[[SYSROOT]]/usr/lib"
Simon Atanasyan2d1b1ad2012-10-21 11:44:57 +00001008// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +00001009// RUN: --target=mips64-linux-gnu -mabi=n32 \
Samuel Antao4ae1f672015-01-05 17:07:42 +00001010// RUN: --gcc-toolchain="" \
Simon Atanasyan2d1b1ad2012-10-21 11:44:57 +00001011// RUN: --sysroot=%S/Inputs/debian_multiarch_tree \
1012// RUN: | FileCheck --check-prefix=CHECK-DEBIAN-MIPS64-N32 %s
1013// CHECK-DEBIAN-MIPS64-N32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
Rafael Espindola49ddb862013-06-24 22:07:15 +00001014// CHECK-DEBIAN-MIPS64-N32: "{{.*}}/usr/lib/gcc/mips-linux-gnu/4.5/n32{{/|\\\\}}crtbegin.o"
Simon Atanasyan2d1b1ad2012-10-21 11:44:57 +00001015// CHECK-DEBIAN-MIPS64-N32: "-L[[SYSROOT]]/usr/lib/gcc/mips-linux-gnu/4.5/n32"
1016// CHECK-DEBIAN-MIPS64-N32: "-L[[SYSROOT]]/usr/lib/gcc/mips-linux-gnu/4.5"
1017// CHECK-DEBIAN-MIPS64-N32: "-L[[SYSROOT]]/usr/lib/gcc/mips-linux-gnu/4.5/../../.."
1018// CHECK-DEBIAN-MIPS64-N32: "-L[[SYSROOT]]/lib"
1019// CHECK-DEBIAN-MIPS64-N32: "-L[[SYSROOT]]/usr/lib"
1020// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +00001021// RUN: --target=mips64el-linux-gnu -mabi=n32 \
Samuel Antao4ae1f672015-01-05 17:07:42 +00001022// RUN: --gcc-toolchain="" \
Simon Atanasyan2d1b1ad2012-10-21 11:44:57 +00001023// RUN: --sysroot=%S/Inputs/debian_multiarch_tree \
1024// RUN: | FileCheck --check-prefix=CHECK-DEBIAN-MIPS64EL-N32 %s
1025// CHECK-DEBIAN-MIPS64EL-N32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
Rafael Espindola49ddb862013-06-24 22:07:15 +00001026// CHECK-DEBIAN-MIPS64EL-N32: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.5/n32{{/|\\\\}}crtbegin.o"
Simon Atanasyan2d1b1ad2012-10-21 11:44:57 +00001027// CHECK-DEBIAN-MIPS64EL-N32: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.5/n32"
1028// CHECK-DEBIAN-MIPS64EL-N32: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.5"
1029// CHECK-DEBIAN-MIPS64EL-N32: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.5/../../.."
1030// CHECK-DEBIAN-MIPS64EL-N32: "-L[[SYSROOT]]/lib"
1031// CHECK-DEBIAN-MIPS64EL-N32: "-L[[SYSROOT]]/usr/lib"
Chandler Carruthaf3c2092012-02-26 09:03:21 +00001032//
James Y Knight09677ad2015-06-05 13:44:43 +00001033// Check linker paths on Debian 8 / Sparc
1034// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1035// RUN: --target=sparc-linux-gnu \
1036// RUN: --gcc-toolchain="" \
1037// RUN: --sysroot=%S/Inputs/debian_8_sparc_multilib_tree \
1038// RUN: | FileCheck --check-prefix=CHECK-DEBIAN-SPARC32 %s
1039// CHECK-DEBIAN-SPARC32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
James Y Knightf9373862015-06-05 14:16:39 +00001040// CHECK-DEBIAN-SPARC32: "[[SYSROOT]]/usr/lib/gcc/sparc-linux-gnu/4.9/../../../sparc-linux-gnu{{/|\\\\}}crt1.o"
1041// CHECK-DEBIAN-SPARC32: "[[SYSROOT]]/usr/lib/gcc/sparc-linux-gnu/4.9/../../../sparc-linux-gnu{{/|\\\\}}crti.o"
1042// CHECK-DEBIAN-SPARC32: "[[SYSROOT]]/usr/lib/gcc/sparc-linux-gnu/4.9{{/|\\\\}}crtbegin.o"
James Y Knight09677ad2015-06-05 13:44:43 +00001043// CHECK-DEBIAN-SPARC32: "-L[[SYSROOT]]/usr/lib/gcc/sparc-linux-gnu/4.9"
1044// CHECK-DEBIAN-SPARC32: "-L[[SYSROOT]]/usr/lib/gcc/sparc-linux-gnu/4.9/../../../sparc-linux-gnu"
1045// CHECK-DEBIAN-SPARC32: "-L[[SYSROOT]]/usr/lib/gcc/sparc-linux-gnu/4.9/../../../../lib"
1046// CHECK-DEBIAN-SPARC32: "-L[[SYSROOT]]/lib/sparc-linux-gnu"
1047// CHECK-DEBIAN-SPARC32: "-L[[SYSROOT]]/usr/lib/sparc-linux-gnu"
1048// CHECK-DEBIAN-SPARC32: "-L[[SYSROOT]]/lib"
1049// CHECK-DEBIAN-SPARC32: "-L[[SYSROOT]]/usr/lib"
James Y Knightf9373862015-06-05 14:16:39 +00001050// CHECK-DEBIAN-SPARC32: "[[SYSROOT]]/usr/lib/gcc/sparc-linux-gnu/4.9{{/|\\\\}}crtend.o"
1051// CHECK-DEBIAN-SPARC32: "[[SYSROOT]]/usr/lib/gcc/sparc-linux-gnu/4.9/../../../sparc-linux-gnu{{/|\\\\}}crtn.o"
James Y Knight09677ad2015-06-05 13:44:43 +00001052//
1053// Check linker paths on Debian 8 / Sparc, with the oldstyle multilib packages
1054// RUN: %clang -no-canonical-prefixes -m64 %s -### -o %t.o 2>&1 \
1055// RUN: --target=sparc-linux-gnu \
1056// RUN: --gcc-toolchain="" \
1057// RUN: --sysroot=%S/Inputs/debian_8_sparc_multilib_tree \
1058// RUN: | FileCheck --check-prefix=CHECK-DEBIAN-SPARC32-LIB64 %s
1059// CHECK-DEBIAN-SPARC32-LIB64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
James Y Knightf9373862015-06-05 14:16:39 +00001060// CHECK-DEBIAN-SPARC32-LIB64: "[[SYSROOT]]/usr/lib/gcc/sparc-linux-gnu/4.9/../../../../lib64{{/|\\\\}}crt1.o"
1061// CHECK-DEBIAN-SPARC32-LIB64: "[[SYSROOT]]/usr/lib/gcc/sparc-linux-gnu/4.9/../../../../lib64{{/|\\\\}}crti.o"
1062// CHECK-DEBIAN-SPARC32-LIB64: "[[SYSROOT]]/usr/lib/gcc/sparc-linux-gnu/4.9/64{{/|\\\\}}crtbegin.o"
James Y Knight09677ad2015-06-05 13:44:43 +00001063// CHECK-DEBIAN-SPARC32-LIB64: "-L[[SYSROOT]]/usr/lib/gcc/sparc-linux-gnu/4.9/64"
1064// CHECK-DEBIAN-SPARC32-LIB64: "-L[[SYSROOT]]/usr/lib/gcc/sparc-linux-gnu/4.9/../../../../lib64"
1065// CHECK-DEBIAN-SPARC32-LIB64: "-L[[SYSROOT]]/lib/../lib64"
1066// CHECK-DEBIAN-SPARC32-LIB64: "-L[[SYSROOT]]/usr/lib/../lib64"
1067// CHECK-DEBIAN-SPARC32-LIB64: "-L[[SYSROOT]]/usr/lib/gcc/sparc-linux-gnu/4.9"
1068// CHECK-DEBIAN-SPARC32-LIB64: "-L[[SYSROOT]]/lib"
1069// CHECK-DEBIAN-SPARC32-LIB64: "-L[[SYSROOT]]/usr/lib"
James Y Knightf9373862015-06-05 14:16:39 +00001070// CHECK-DEBIAN-SPARC32-LIB64: "[[SYSROOT]]/usr/lib/gcc/sparc-linux-gnu/4.9/64{{/|\\\\}}crtend.o"
1071// CHECK-DEBIAN-SPARC32-LIB64: "[[SYSROOT]]/usr/lib/gcc/sparc-linux-gnu/4.9/../../../../lib64{{/|\\\\}}crtn.o"
James Y Knight09677ad2015-06-05 13:44:43 +00001072//
1073// Check linker paths on Debian 8 / Sparc64
1074// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1075// RUN: --target=sparc64-linux-gnu \
1076// RUN: --gcc-toolchain="" \
1077// RUN: --sysroot=%S/Inputs/debian_8_sparc64_tree \
1078// RUN: | FileCheck --check-prefix=CHECK-DEBIAN-SPARC64 %s
1079// CHECK-DEBIAN-SPARC64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
James Y Knightf9373862015-06-05 14:16:39 +00001080// CHECK-DEBIAN-SPARC64: "[[SYSROOT]]/usr/lib/gcc/sparc64-linux-gnu/4.9/../../../sparc64-linux-gnu{{/|\\\\}}crt1.o"
1081// CHECK-DEBIAN-SPARC64: "[[SYSROOT]]/usr/lib/gcc/sparc64-linux-gnu/4.9/../../../sparc64-linux-gnu{{/|\\\\}}crti.o"
1082// CHECK-DEBIAN-SPARC64: "[[SYSROOT]]/usr/lib/gcc/sparc64-linux-gnu/4.9{{/|\\\\}}crtbegin.o"
James Y Knight09677ad2015-06-05 13:44:43 +00001083// CHECK-DEBIAN-SPARC64: "-L[[SYSROOT]]/usr/lib/gcc/sparc64-linux-gnu/4.9"
1084// CHECK-DEBIAN-SPARC64: "-L[[SYSROOT]]/usr/lib/gcc/sparc64-linux-gnu/4.9/../../../sparc64-linux-gnu"
1085// CHECK-DEBIAN-SPARC64: "-L[[SYSROOT]]/lib/sparc64-linux-gnu"
1086// CHECK-DEBIAN-SPARC64: "-L[[SYSROOT]]/lib/../lib64"
1087// CHECK-DEBIAN-SPARC64: "-L[[SYSROOT]]/usr/lib/sparc64-linux-gnu"
1088// CHECK-DEBIAN-SPARC64: "-L[[SYSROOT]]/usr/lib/gcc/sparc64-linux-gnu/4.9/../../.."
1089// CHECK-DEBIAN-SPARC64: "-L[[SYSROOT]]/lib"
1090// CHECK-DEBIAN-SPARC64: "-L[[SYSROOT]]/usr/lib"
James Y Knightf9373862015-06-05 14:16:39 +00001091// CHECK-DEBIAN-SPARC64: "[[SYSROOT]]/usr/lib/gcc/sparc64-linux-gnu/4.9{{/|\\\\}}crtend.o"
1092// CHECK-DEBIAN-SPARC64: "[[SYSROOT]]/usr/lib/gcc/sparc64-linux-gnu/4.9/../../../sparc64-linux-gnu{{/|\\\\}}crtn.o"
James Y Knight09677ad2015-06-05 13:44:43 +00001093//
Evgeniy Stepanov77866712012-04-25 08:59:22 +00001094// Test linker invocation on Android.
1095// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Jonas Hahnfeldd196fa52016-07-27 08:15:54 +00001096// RUN: --target=arm-linux-androideabi -rtlib=platform \
Samuel Antao4ae1f672015-01-05 17:07:42 +00001097// RUN: --gcc-toolchain="" \
Evgeniy Stepanov763671e2012-09-03 09:05:50 +00001098// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
Evgeniy Stepanov77866712012-04-25 08:59:22 +00001099// RUN: | FileCheck --check-prefix=CHECK-ANDROID %s
Logan Chienc6fd8202012-09-02 09:30:11 +00001100// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Jonas Hahnfeldd196fa52016-07-27 08:15:54 +00001101// RUN: --target=arm-linux-android -rtlib=platform \
Samuel Antao4ae1f672015-01-05 17:07:42 +00001102// RUN: --gcc-toolchain="" \
Evgeniy Stepanov763671e2012-09-03 09:05:50 +00001103// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
Logan Chienc6fd8202012-09-02 09:30:11 +00001104// RUN: | FileCheck --check-prefix=CHECK-ANDROID %s
Simon Atanasyan53fefd12012-10-03 17:46:38 +00001105// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Jonas Hahnfeldd196fa52016-07-27 08:15:54 +00001106// RUN: --target=aarch64-linux-android -rtlib=platform \
Samuel Antao4ae1f672015-01-05 17:07:42 +00001107// RUN: --gcc-toolchain="" \
Logan Chien6a00cc82014-04-23 13:36:23 +00001108// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
1109// RUN: | FileCheck --check-prefix=CHECK-ANDROID %s
1110// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Jonas Hahnfeldd196fa52016-07-27 08:15:54 +00001111// RUN: --target=arm64-linux-android -rtlib=platform \
Samuel Antao4ae1f672015-01-05 17:07:42 +00001112// RUN: --gcc-toolchain="" \
Bradley Smith4da7dd82014-04-30 10:52:05 +00001113// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
1114// RUN: | FileCheck --check-prefix=CHECK-ANDROID %s
1115// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Jonas Hahnfeldd196fa52016-07-27 08:15:54 +00001116// RUN: --target=mipsel-linux-android -rtlib=platform \
Samuel Antao4ae1f672015-01-05 17:07:42 +00001117// RUN: --gcc-toolchain="" \
Simon Atanasyan53fefd12012-10-03 17:46:38 +00001118// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
1119// RUN: | FileCheck --check-prefix=CHECK-ANDROID %s
Rafael Espindola7df35012012-11-02 20:41:30 +00001120// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Jonas Hahnfeldd196fa52016-07-27 08:15:54 +00001121// RUN: --target=mips64el-linux-android -rtlib=platform \
Samuel Antao4ae1f672015-01-05 17:07:42 +00001122// RUN: --gcc-toolchain="" \
Simon Atanasyan68855fe32014-01-25 16:04:08 +00001123// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
1124// RUN: | FileCheck --check-prefix=CHECK-ANDROID %s
1125// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Jonas Hahnfeldd196fa52016-07-27 08:15:54 +00001126// RUN: --target=i686-linux-android -rtlib=platform \
Samuel Antao4ae1f672015-01-05 17:07:42 +00001127// RUN: --gcc-toolchain="" \
Rafael Espindola7df35012012-11-02 20:41:30 +00001128// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
1129// RUN: | FileCheck --check-prefix=CHECK-ANDROID %s
Alexey Bataevcf7ae302014-01-23 09:08:32 +00001130// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Jonas Hahnfeldd196fa52016-07-27 08:15:54 +00001131// RUN: --target=x86_64-linux-android -rtlib=platform \
Samuel Antao4ae1f672015-01-05 17:07:42 +00001132// RUN: --gcc-toolchain="" \
Alexey Bataevcf7ae302014-01-23 09:08:32 +00001133// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
1134// RUN: | FileCheck --check-prefix=CHECK-ANDROID %s
Evgeniy Stepanov77866712012-04-25 08:59:22 +00001135// CHECK-ANDROID: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
Evgeniy Stepanov117627c2017-10-25 20:39:22 +00001136// CHECK-ANDROID: "--enable-new-dtags"
Rafael Espindola49ddb862013-06-24 22:07:15 +00001137// CHECK-ANDROID: "{{.*}}{{/|\\\\}}crtbegin_dynamic.o"
Evgeniy Stepanov77866712012-04-25 08:59:22 +00001138// CHECK-ANDROID: "-L[[SYSROOT]]/usr/lib"
1139// CHECK-ANDROID-NOT: "gcc_s"
1140// CHECK-ANDROID: "-lgcc"
Logan Chien3d3373c2012-11-19 12:04:11 +00001141// CHECK-ANDROID: "-ldl"
Evgeniy Stepanov77866712012-04-25 08:59:22 +00001142// CHECK-ANDROID-NOT: "gcc_s"
Rafael Espindola49ddb862013-06-24 22:07:15 +00001143// CHECK-ANDROID: "{{.*}}{{/|\\\\}}crtend_android.o"
Evgeniy Stepanov77866712012-04-25 08:59:22 +00001144// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Jonas Hahnfeldd196fa52016-07-27 08:15:54 +00001145// RUN: --target=arm-linux-androideabi -rtlib=platform \
Samuel Antao4ae1f672015-01-05 17:07:42 +00001146// RUN: --gcc-toolchain="" \
Evgeniy Stepanov763671e2012-09-03 09:05:50 +00001147// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
Evgeniy Stepanov77866712012-04-25 08:59:22 +00001148// RUN: -shared \
1149// RUN: | FileCheck --check-prefix=CHECK-ANDROID-SO %s
Logan Chienc6fd8202012-09-02 09:30:11 +00001150// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Jonas Hahnfeldd196fa52016-07-27 08:15:54 +00001151// RUN: --target=arm-linux-android -rtlib=platform \
Samuel Antao4ae1f672015-01-05 17:07:42 +00001152// RUN: --gcc-toolchain="" \
Evgeniy Stepanov763671e2012-09-03 09:05:50 +00001153// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
Logan Chienc6fd8202012-09-02 09:30:11 +00001154// RUN: -shared \
1155// RUN: | FileCheck --check-prefix=CHECK-ANDROID-SO %s
Simon Atanasyan53fefd12012-10-03 17:46:38 +00001156// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Jonas Hahnfeldd196fa52016-07-27 08:15:54 +00001157// RUN: --target=aarch64-linux-android -rtlib=platform \
Samuel Antao4ae1f672015-01-05 17:07:42 +00001158// RUN: --gcc-toolchain="" \
Logan Chien6a00cc82014-04-23 13:36:23 +00001159// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
1160// RUN: -shared \
1161// RUN: | FileCheck --check-prefix=CHECK-ANDROID-SO %s
1162// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Jonas Hahnfeldd196fa52016-07-27 08:15:54 +00001163// RUN: --target=arm64-linux-android -rtlib=platform \
Bradley Smith4da7dd82014-04-30 10:52:05 +00001164// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
1165// RUN: -shared \
1166// RUN: | FileCheck --check-prefix=CHECK-ANDROID-SO %s
1167// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Jonas Hahnfeldd196fa52016-07-27 08:15:54 +00001168// RUN: --target=mipsel-linux-android -rtlib=platform \
Samuel Antao4ae1f672015-01-05 17:07:42 +00001169// RUN: --gcc-toolchain="" \
Simon Atanasyan53fefd12012-10-03 17:46:38 +00001170// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
1171// RUN: -shared \
1172// RUN: | FileCheck --check-prefix=CHECK-ANDROID-SO %s
Rafael Espindola7df35012012-11-02 20:41:30 +00001173// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Jonas Hahnfeldd196fa52016-07-27 08:15:54 +00001174// RUN: --target=mips64el-linux-android -rtlib=platform \
Samuel Antao4ae1f672015-01-05 17:07:42 +00001175// RUN: --gcc-toolchain="" \
Simon Atanasyan68855fe32014-01-25 16:04:08 +00001176// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
1177// RUN: -shared \
1178// RUN: | FileCheck --check-prefix=CHECK-ANDROID-SO %s
1179// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Jonas Hahnfeldd196fa52016-07-27 08:15:54 +00001180// RUN: --target=i686-linux-android -rtlib=platform \
Samuel Antao4ae1f672015-01-05 17:07:42 +00001181// RUN: --gcc-toolchain="" \
Rafael Espindola7df35012012-11-02 20:41:30 +00001182// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
1183// RUN: -shared \
1184// RUN: | FileCheck --check-prefix=CHECK-ANDROID-SO %s
Alexey Bataevcf7ae302014-01-23 09:08:32 +00001185// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Jonas Hahnfeldd196fa52016-07-27 08:15:54 +00001186// RUN: --target=x86_64-linux-android -rtlib=platform \
Samuel Antao4ae1f672015-01-05 17:07:42 +00001187// RUN: --gcc-toolchain="" \
Alexey Bataevcf7ae302014-01-23 09:08:32 +00001188// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
1189// RUN: -shared \
1190// RUN: | FileCheck --check-prefix=CHECK-ANDROID-SO %s
Evgeniy Stepanov77866712012-04-25 08:59:22 +00001191// CHECK-ANDROID-SO: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
Evgeniy Stepanova3331172014-07-16 08:46:35 +00001192// CHECK-ANDROID-SO-NOT: "-Bsymbolic"
Rafael Espindola49ddb862013-06-24 22:07:15 +00001193// CHECK-ANDROID-SO: "{{.*}}{{/|\\\\}}crtbegin_so.o"
Evgeniy Stepanov77866712012-04-25 08:59:22 +00001194// CHECK-ANDROID-SO: "-L[[SYSROOT]]/usr/lib"
1195// CHECK-ANDROID-SO-NOT: "gcc_s"
1196// CHECK-ANDROID-SO: "-lgcc"
Logan Chien3d3373c2012-11-19 12:04:11 +00001197// CHECK-ANDROID-SO: "-ldl"
Evgeniy Stepanov77866712012-04-25 08:59:22 +00001198// CHECK-ANDROID-SO-NOT: "gcc_s"
Rafael Espindola49ddb862013-06-24 22:07:15 +00001199// CHECK-ANDROID-SO: "{{.*}}{{/|\\\\}}crtend_so.o"
Evgeniy Stepanov77866712012-04-25 08:59:22 +00001200// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Jonas Hahnfeldd196fa52016-07-27 08:15:54 +00001201// RUN: --target=arm-linux-androideabi -rtlib=platform \
Samuel Antao4ae1f672015-01-05 17:07:42 +00001202// RUN: --gcc-toolchain="" \
Evgeniy Stepanov763671e2012-09-03 09:05:50 +00001203// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
Evgeniy Stepanov77866712012-04-25 08:59:22 +00001204// RUN: -static \
1205// RUN: | FileCheck --check-prefix=CHECK-ANDROID-STATIC %s
Logan Chienc6fd8202012-09-02 09:30:11 +00001206// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Jonas Hahnfeldd196fa52016-07-27 08:15:54 +00001207// RUN: --target=arm-linux-android -rtlib=platform \
Evgeniy Stepanov763671e2012-09-03 09:05:50 +00001208// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
Logan Chienc6fd8202012-09-02 09:30:11 +00001209// RUN: -static \
1210// RUN: | FileCheck --check-prefix=CHECK-ANDROID-STATIC %s
Simon Atanasyan53fefd12012-10-03 17:46:38 +00001211// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Jonas Hahnfeldd196fa52016-07-27 08:15:54 +00001212// RUN: --target=aarch64-linux-android -rtlib=platform \
Samuel Antao4ae1f672015-01-05 17:07:42 +00001213// RUN: --gcc-toolchain="" \
Logan Chien6a00cc82014-04-23 13:36:23 +00001214// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
1215// RUN: -static \
1216// RUN: | FileCheck --check-prefix=CHECK-ANDROID-STATIC %s
1217// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Jonas Hahnfeldd196fa52016-07-27 08:15:54 +00001218// RUN: --target=arm64-linux-android -rtlib=platform \
Bradley Smith4da7dd82014-04-30 10:52:05 +00001219// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
1220// RUN: -static \
1221// RUN: | FileCheck --check-prefix=CHECK-ANDROID-STATIC %s
1222// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Jonas Hahnfeldd196fa52016-07-27 08:15:54 +00001223// RUN: --target=mipsel-linux-android -rtlib=platform \
Samuel Antao4ae1f672015-01-05 17:07:42 +00001224// RUN: --gcc-toolchain="" \
Simon Atanasyan53fefd12012-10-03 17:46:38 +00001225// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
1226// RUN: -static \
1227// RUN: | FileCheck --check-prefix=CHECK-ANDROID-STATIC %s
Rafael Espindola7df35012012-11-02 20:41:30 +00001228// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Jonas Hahnfeldd196fa52016-07-27 08:15:54 +00001229// RUN: --target=mips64el-linux-android -rtlib=platform \
Samuel Antao4ae1f672015-01-05 17:07:42 +00001230// RUN: --gcc-toolchain="" \
Simon Atanasyan68855fe32014-01-25 16:04:08 +00001231// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
1232// RUN: -static \
1233// RUN: | FileCheck --check-prefix=CHECK-ANDROID-STATIC %s
1234// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Jonas Hahnfeldd196fa52016-07-27 08:15:54 +00001235// RUN: --target=i686-linux-android -rtlib=platform \
Samuel Antao4ae1f672015-01-05 17:07:42 +00001236// RUN: --gcc-toolchain="" \
Rafael Espindola7df35012012-11-02 20:41:30 +00001237// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
1238// RUN: -static \
1239// RUN: | FileCheck --check-prefix=CHECK-ANDROID-STATIC %s
Alexey Bataevcf7ae302014-01-23 09:08:32 +00001240// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Jonas Hahnfeldd196fa52016-07-27 08:15:54 +00001241// RUN: --target=x86_64-linux-android -rtlib=platform \
Samuel Antao4ae1f672015-01-05 17:07:42 +00001242// RUN: --gcc-toolchain="" \
Alexey Bataevcf7ae302014-01-23 09:08:32 +00001243// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
1244// RUN: -static \
1245// RUN: | FileCheck --check-prefix=CHECK-ANDROID-STATIC %s
Evgeniy Stepanov77866712012-04-25 08:59:22 +00001246// CHECK-ANDROID-STATIC: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
Rafael Espindola49ddb862013-06-24 22:07:15 +00001247// CHECK-ANDROID-STATIC: "{{.*}}{{/|\\\\}}crtbegin_static.o"
Evgeniy Stepanov77866712012-04-25 08:59:22 +00001248// CHECK-ANDROID-STATIC: "-L[[SYSROOT]]/usr/lib"
1249// CHECK-ANDROID-STATIC-NOT: "gcc_s"
1250// CHECK-ANDROID-STATIC: "-lgcc"
Logan Chien3d3373c2012-11-19 12:04:11 +00001251// CHECK-ANDROID-STATIC-NOT: "-ldl"
Evgeniy Stepanov77866712012-04-25 08:59:22 +00001252// CHECK-ANDROID-STATIC-NOT: "gcc_s"
Rafael Espindola49ddb862013-06-24 22:07:15 +00001253// CHECK-ANDROID-STATIC: "{{.*}}{{/|\\\\}}crtend_android.o"
Evgeniy Stepanovc9cde482012-09-10 10:30:12 +00001254// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Jonas Hahnfeldd196fa52016-07-27 08:15:54 +00001255// RUN: --target=arm-linux-androideabi -rtlib=platform \
Samuel Antao4ae1f672015-01-05 17:07:42 +00001256// RUN: --gcc-toolchain="" \
Evgeniy Stepanovc9cde482012-09-10 10:30:12 +00001257// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
1258// RUN: -pie \
1259// RUN: | FileCheck --check-prefix=CHECK-ANDROID-PIE %s
1260// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Jonas Hahnfeldd196fa52016-07-27 08:15:54 +00001261// RUN: --target=arm-linux-android -rtlib=platform \
Samuel Antao4ae1f672015-01-05 17:07:42 +00001262// RUN: --gcc-toolchain="" \
Evgeniy Stepanovc9cde482012-09-10 10:30:12 +00001263// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
1264// RUN: -pie \
1265// RUN: | FileCheck --check-prefix=CHECK-ANDROID-PIE %s
Simon Atanasyan53fefd12012-10-03 17:46:38 +00001266// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Jonas Hahnfeldd196fa52016-07-27 08:15:54 +00001267// RUN: --target=aarch64-linux-android -rtlib=platform \
Samuel Antao4ae1f672015-01-05 17:07:42 +00001268// RUN: --gcc-toolchain="" \
Logan Chien6a00cc82014-04-23 13:36:23 +00001269// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
1270// RUN: -pie \
1271// RUN: | FileCheck --check-prefix=CHECK-ANDROID-PIE %s
1272// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Jonas Hahnfeldd196fa52016-07-27 08:15:54 +00001273// RUN: --target=arm64-linux-android -rtlib=platform \
Samuel Antao4ae1f672015-01-05 17:07:42 +00001274// RUN: --gcc-toolchain="" \
Bradley Smith4da7dd82014-04-30 10:52:05 +00001275// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
1276// RUN: -pie \
1277// RUN: | FileCheck --check-prefix=CHECK-ANDROID-PIE %s
1278// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Jonas Hahnfeldd196fa52016-07-27 08:15:54 +00001279// RUN: --target=mipsel-linux-android -rtlib=platform \
Samuel Antao4ae1f672015-01-05 17:07:42 +00001280// RUN: --gcc-toolchain="" \
Simon Atanasyan53fefd12012-10-03 17:46:38 +00001281// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
1282// RUN: -pie \
1283// RUN: | FileCheck --check-prefix=CHECK-ANDROID-PIE %s
Rafael Espindola7df35012012-11-02 20:41:30 +00001284// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Jonas Hahnfeldd196fa52016-07-27 08:15:54 +00001285// RUN: --target=mips64el-linux-android -rtlib=platform \
Samuel Antao4ae1f672015-01-05 17:07:42 +00001286// RUN: --gcc-toolchain="" \
Simon Atanasyan68855fe32014-01-25 16:04:08 +00001287// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
1288// RUN: -pie \
1289// RUN: | FileCheck --check-prefix=CHECK-ANDROID-PIE %s
1290// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Jonas Hahnfeldd196fa52016-07-27 08:15:54 +00001291// RUN: --target=i686-linux-android -rtlib=platform \
Samuel Antao4ae1f672015-01-05 17:07:42 +00001292// RUN: --gcc-toolchain="" \
Rafael Espindola7df35012012-11-02 20:41:30 +00001293// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
1294// RUN: -pie \
1295// RUN: | FileCheck --check-prefix=CHECK-ANDROID-PIE %s
Alexey Bataevcf7ae302014-01-23 09:08:32 +00001296// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Jonas Hahnfeldd196fa52016-07-27 08:15:54 +00001297// RUN: --target=x86_64-linux-android -rtlib=platform \
Samuel Antao4ae1f672015-01-05 17:07:42 +00001298// RUN: --gcc-toolchain="" \
Alexey Bataevcf7ae302014-01-23 09:08:32 +00001299// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
1300// RUN: -pie \
1301// RUN: | FileCheck --check-prefix=CHECK-ANDROID-PIE %s
Evgeniy Stepanovc9cde482012-09-10 10:30:12 +00001302// CHECK-ANDROID-PIE: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
Rafael Espindola49ddb862013-06-24 22:07:15 +00001303// CHECK-ANDROID-PIE: "{{.*}}{{/|\\\\}}crtbegin_dynamic.o"
Evgeniy Stepanovc9cde482012-09-10 10:30:12 +00001304// CHECK-ANDROID-PIE: "-L[[SYSROOT]]/usr/lib"
1305// CHECK-ANDROID-PIE-NOT: "gcc_s"
1306// CHECK-ANDROID-PIE: "-lgcc"
1307// CHECK-ANDROID-PIE-NOT: "gcc_s"
Rafael Espindola49ddb862013-06-24 22:07:15 +00001308// CHECK-ANDROID-PIE: "{{.*}}{{/|\\\\}}crtend_android.o"
Alexey Bataevcf7ae302014-01-23 09:08:32 +00001309// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1310// RUN: --target=arm-linux-androideabi \
Samuel Antao4ae1f672015-01-05 17:07:42 +00001311// RUN: --gcc-toolchain="" \
Alexey Bataevcf7ae302014-01-23 09:08:32 +00001312// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
1313// RUN: | FileCheck --check-prefix=CHECK-ANDROID-32 %s
1314// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1315// RUN: --target=arm-linux-android \
Samuel Antao4ae1f672015-01-05 17:07:42 +00001316// RUN: --gcc-toolchain="" \
Alexey Bataevcf7ae302014-01-23 09:08:32 +00001317// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
1318// RUN: | FileCheck --check-prefix=CHECK-ANDROID-32 %s
1319// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1320// RUN: --target=mipsel-linux-android \
Samuel Antao4ae1f672015-01-05 17:07:42 +00001321// RUN: --gcc-toolchain="" \
Alexey Bataevcf7ae302014-01-23 09:08:32 +00001322// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
1323// RUN: | FileCheck --check-prefix=CHECK-ANDROID-32 %s
1324// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Logan Chien6a00cc82014-04-23 13:36:23 +00001325// RUN: --target=aarch64-linux-android \
Samuel Antao4ae1f672015-01-05 17:07:42 +00001326// RUN: --gcc-toolchain="" \
Logan Chien6a00cc82014-04-23 13:36:23 +00001327// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
1328// RUN: | FileCheck --check-prefix=CHECK-ANDROID-64 %s
1329// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Bradley Smith4da7dd82014-04-30 10:52:05 +00001330// RUN: --target=arm64-linux-android \
Samuel Antao4ae1f672015-01-05 17:07:42 +00001331// RUN: --gcc-toolchain="" \
Bradley Smith4da7dd82014-04-30 10:52:05 +00001332// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
1333// RUN: | FileCheck --check-prefix=CHECK-ANDROID-64 %s
1334// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Simon Atanasyan68855fe32014-01-25 16:04:08 +00001335// RUN: --target=mips64el-linux-android \
Samuel Antao4ae1f672015-01-05 17:07:42 +00001336// RUN: --gcc-toolchain="" \
Simon Atanasyan68855fe32014-01-25 16:04:08 +00001337// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
1338// RUN: | FileCheck --check-prefix=CHECK-ANDROID-64 %s
1339// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Alexey Bataevcf7ae302014-01-23 09:08:32 +00001340// RUN: --target=i686-linux-android \
Samuel Antao4ae1f672015-01-05 17:07:42 +00001341// RUN: --gcc-toolchain="" \
Alexey Bataevcf7ae302014-01-23 09:08:32 +00001342// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
1343// RUN: | FileCheck --check-prefix=CHECK-ANDROID-32 %s
1344// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1345// RUN: --target=x86_64-linux-android \
Samuel Antao4ae1f672015-01-05 17:07:42 +00001346// RUN: --gcc-toolchain="" \
Alexey Bataevcf7ae302014-01-23 09:08:32 +00001347// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
1348// RUN: | FileCheck --check-prefix=CHECK-ANDROID-64 %s
1349// CHECK-ANDROID-32: "-dynamic-linker" "/system/bin/linker"
1350// CHECK-ANDROID-64: "-dynamic-linker" "/system/bin/linker64"
Simon Atanasyand4413882012-09-14 11:27:24 +00001351//
Evgeniy Stepanov152b0232014-05-28 12:53:34 +00001352// Test that -pthread does not add -lpthread on Android.
1353// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1354// RUN: --target=arm-linux-androideabi -pthread \
Samuel Antao4ae1f672015-01-05 17:07:42 +00001355// RUN: --gcc-toolchain="" \
Evgeniy Stepanov152b0232014-05-28 12:53:34 +00001356// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
1357// RUN: | FileCheck --check-prefix=CHECK-ANDROID-PTHREAD %s
1358// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1359// RUN: --target=arm-linux-android -pthread \
Samuel Antao4ae1f672015-01-05 17:07:42 +00001360// RUN: --gcc-toolchain="" \
Evgeniy Stepanov152b0232014-05-28 12:53:34 +00001361// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
1362// RUN: | FileCheck --check-prefix=CHECK-ANDROID-PTHREAD %s
1363// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1364// RUN: --target=aarch64-linux-android -pthread \
Samuel Antao4ae1f672015-01-05 17:07:42 +00001365// RUN: --gcc-toolchain="" \
Evgeniy Stepanov152b0232014-05-28 12:53:34 +00001366// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
1367// RUN: | FileCheck --check-prefix=CHECK-ANDROID-PTHREAD %s
1368// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1369// RUN: --target=arm64-linux-android -pthread \
Samuel Antao4ae1f672015-01-05 17:07:42 +00001370// RUN: --gcc-toolchain="" \
Evgeniy Stepanov152b0232014-05-28 12:53:34 +00001371// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
1372// RUN: | FileCheck --check-prefix=CHECK-ANDROID-PTHREAD %s
1373// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1374// RUN: --target=mipsel-linux-android -pthread \
1375// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
1376// RUN: | FileCheck --check-prefix=CHECK-ANDROID-PTHREAD %s
1377// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1378// RUN: --target=mips64el-linux-android -pthread \
Samuel Antao4ae1f672015-01-05 17:07:42 +00001379// RUN: --gcc-toolchain="" \
Evgeniy Stepanov152b0232014-05-28 12:53:34 +00001380// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
1381// RUN: | FileCheck --check-prefix=CHECK-ANDROID-PTHREAD %s
1382// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1383// RUN: --target=i686-linux-android -pthread \
Samuel Antao4ae1f672015-01-05 17:07:42 +00001384// RUN: --gcc-toolchain="" \
Evgeniy Stepanov152b0232014-05-28 12:53:34 +00001385// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
1386// RUN: | FileCheck --check-prefix=CHECK-ANDROID-PTHREAD %s
1387// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1388// RUN: --target=x86_64-linux-android -pthread \
Samuel Antao4ae1f672015-01-05 17:07:42 +00001389// RUN: --gcc-toolchain="" \
Evgeniy Stepanov152b0232014-05-28 12:53:34 +00001390// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
1391// RUN: | FileCheck --check-prefix=CHECK-ANDROID-PTHREAD %s
1392// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1393// RUN: --target=arm-linux-androideabi -pthread \
Samuel Antao4ae1f672015-01-05 17:07:42 +00001394// RUN: --gcc-toolchain="" \
Evgeniy Stepanov152b0232014-05-28 12:53:34 +00001395// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
1396// RUN: -shared \
1397// RUN: | FileCheck --check-prefix=CHECK-ANDROID-PTHREAD %s
1398// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1399// RUN: --target=arm-linux-android -pthread \
Samuel Antao4ae1f672015-01-05 17:07:42 +00001400// RUN: --gcc-toolchain="" \
Evgeniy Stepanov152b0232014-05-28 12:53:34 +00001401// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
1402// RUN: -shared \
1403// RUN: | FileCheck --check-prefix=CHECK-ANDROID-PTHREAD %s
1404// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1405// RUN: --target=aarch64-linux-android -pthread \
Samuel Antao4ae1f672015-01-05 17:07:42 +00001406// RUN: --gcc-toolchain="" \
Evgeniy Stepanov152b0232014-05-28 12:53:34 +00001407// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
1408// RUN: -shared \
1409// RUN: | FileCheck --check-prefix=CHECK-ANDROID-PTHREAD %s
1410// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1411// RUN: --target=arm64-linux-android -pthread \
Samuel Antao4ae1f672015-01-05 17:07:42 +00001412// RUN: --gcc-toolchain="" \
Evgeniy Stepanov152b0232014-05-28 12:53:34 +00001413// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
1414// RUN: -shared \
1415// RUN: | FileCheck --check-prefix=CHECK-ANDROID-PTHREAD %s
1416// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1417// RUN: --target=mipsel-linux-android -pthread \
Samuel Antao4ae1f672015-01-05 17:07:42 +00001418// RUN: --gcc-toolchain="" \
Evgeniy Stepanov152b0232014-05-28 12:53:34 +00001419// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
1420// RUN: -shared \
1421// RUN: | FileCheck --check-prefix=CHECK-ANDROID-PTHREAD %s
1422// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1423// RUN: --target=mips64el-linux-android -pthread \
Samuel Antao4ae1f672015-01-05 17:07:42 +00001424// RUN: --gcc-toolchain="" \
Evgeniy Stepanov152b0232014-05-28 12:53:34 +00001425// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
1426// RUN: -shared \
1427// RUN: | FileCheck --check-prefix=CHECK-ANDROID-PTHREAD %s
1428// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1429// RUN: --target=i686-linux-android -pthread \
Samuel Antao4ae1f672015-01-05 17:07:42 +00001430// RUN: --gcc-toolchain="" \
Evgeniy Stepanov152b0232014-05-28 12:53:34 +00001431// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
1432// RUN: -shared \
1433// RUN: | FileCheck --check-prefix=CHECK-ANDROID-PTHREAD %s
1434// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1435// RUN: --target=x86_64-linux-android -pthread \
Samuel Antao4ae1f672015-01-05 17:07:42 +00001436// RUN: --gcc-toolchain="" \
Evgeniy Stepanov152b0232014-05-28 12:53:34 +00001437// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
1438// RUN: -shared \
1439// RUN: | FileCheck --check-prefix=CHECK-ANDROID-PTHREAD %s
1440// CHECK-ANDROID-PTHREAD-NOT: -lpthread
1441//
Evgeniy Stepanovdad92062014-06-05 11:41:39 +00001442// RUN: %clang -no-canonical-prefixes %t.o -### -o %t 2>&1 \
1443// RUN: --target=arm-linux-androideabi -pthread \
Samuel Antao4ae1f672015-01-05 17:07:42 +00001444// RUN: --gcc-toolchain="" \
Evgeniy Stepanovdad92062014-06-05 11:41:39 +00001445// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
1446// RUN: | FileCheck --check-prefix=CHECK-ANDROID-PTHREAD-LINK %s
1447// CHECK-ANDROID-PTHREAD-LINK-NOT: argument unused during compilation: '-pthread'
1448//
Simon Atanasyand4413882012-09-14 11:27:24 +00001449// Check linker invocation on Debian 6 MIPS 32/64-bit.
1450// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +00001451// RUN: --target=mipsel-linux-gnu \
Samuel Antao4ae1f672015-01-05 17:07:42 +00001452// RUN: --gcc-toolchain="" \
Simon Atanasyand4413882012-09-14 11:27:24 +00001453// RUN: --sysroot=%S/Inputs/debian_6_mips_tree \
1454// RUN: | FileCheck --check-prefix=CHECK-DEBIAN-ML-MIPSEL %s
1455// CHECK-DEBIAN-ML-MIPSEL: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
Rafael Espindola49ddb862013-06-24 22:07:15 +00001456// CHECK-DEBIAN-ML-MIPSEL: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.4/../../../../lib{{/|\\\\}}crt1.o"
1457// CHECK-DEBIAN-ML-MIPSEL: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.4/../../../../lib{{/|\\\\}}crti.o"
1458// CHECK-DEBIAN-ML-MIPSEL: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.4{{/|\\\\}}crtbegin.o"
Simon Atanasyand4413882012-09-14 11:27:24 +00001459// CHECK-DEBIAN-ML-MIPSEL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.4"
1460// CHECK-DEBIAN-ML-MIPSEL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.4/../../../../lib"
1461// CHECK-DEBIAN-ML-MIPSEL: "-L[[SYSROOT]]/lib/../lib"
1462// CHECK-DEBIAN-ML-MIPSEL: "-L[[SYSROOT]]/usr/lib/../lib"
1463// CHECK-DEBIAN-ML-MIPSEL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.4/../../.."
1464// CHECK-DEBIAN-ML-MIPSEL: "-L[[SYSROOT]]/lib"
1465// CHECK-DEBIAN-ML-MIPSEL: "-L[[SYSROOT]]/usr/lib"
1466//
1467// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +00001468// RUN: --target=mips64el-linux-gnu \
Samuel Antao4ae1f672015-01-05 17:07:42 +00001469// RUN: --gcc-toolchain="" \
Simon Atanasyand4413882012-09-14 11:27:24 +00001470// RUN: --sysroot=%S/Inputs/debian_6_mips_tree \
1471// RUN: | FileCheck --check-prefix=CHECK-DEBIAN-ML-MIPS64EL %s
1472// CHECK-DEBIAN-ML-MIPS64EL: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
Rafael Espindola49ddb862013-06-24 22:07:15 +00001473// CHECK-DEBIAN-ML-MIPS64EL: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.4/../../../../lib64{{/|\\\\}}crt1.o"
1474// CHECK-DEBIAN-ML-MIPS64EL: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.4/../../../../lib64{{/|\\\\}}crti.o"
1475// CHECK-DEBIAN-ML-MIPS64EL: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.4/64{{/|\\\\}}crtbegin.o"
Simon Atanasyand4413882012-09-14 11:27:24 +00001476// CHECK-DEBIAN-ML-MIPS64EL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.4/64"
1477// CHECK-DEBIAN-ML-MIPS64EL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.4/../../../../lib64"
1478// CHECK-DEBIAN-ML-MIPS64EL: "-L[[SYSROOT]]/lib/../lib64"
1479// CHECK-DEBIAN-ML-MIPS64EL: "-L[[SYSROOT]]/usr/lib/../lib64"
1480// CHECK-DEBIAN-ML-MIPS64EL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.4/../../.."
1481// CHECK-DEBIAN-ML-MIPS64EL: "-L[[SYSROOT]]/lib"
1482// CHECK-DEBIAN-ML-MIPS64EL: "-L[[SYSROOT]]/usr/lib"
Hal Finkelf3587912012-09-18 22:25:07 +00001483//
Simon Atanasyan2d1b1ad2012-10-21 11:44:57 +00001484// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +00001485// RUN: --target=mips64el-linux-gnu -mabi=n32 \
Samuel Antao4ae1f672015-01-05 17:07:42 +00001486// RUN: --gcc-toolchain="" \
Simon Atanasyan2d1b1ad2012-10-21 11:44:57 +00001487// RUN: --sysroot=%S/Inputs/debian_6_mips_tree \
1488// RUN: | FileCheck --check-prefix=CHECK-DEBIAN-ML-MIPS64EL-N32 %s
1489// CHECK-DEBIAN-ML-MIPS64EL-N32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
Rafael Espindola49ddb862013-06-24 22:07:15 +00001490// CHECK-DEBIAN-ML-MIPS64EL-N32: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.4/../../../../lib32{{/|\\\\}}crt1.o"
1491// CHECK-DEBIAN-ML-MIPS64EL-N32: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.4/../../../../lib32{{/|\\\\}}crti.o"
1492// CHECK-DEBIAN-ML-MIPS64EL-N32: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.4/n32{{/|\\\\}}crtbegin.o"
Simon Atanasyan2d1b1ad2012-10-21 11:44:57 +00001493// CHECK-DEBIAN-ML-MIPS64EL-N32: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.4/n32"
1494// CHECK-DEBIAN-ML-MIPS64EL-N32: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.4/../../../../lib32"
1495// CHECK-DEBIAN-ML-MIPS64EL-N32: "-L[[SYSROOT]]/lib/../lib32"
1496// CHECK-DEBIAN-ML-MIPS64EL-N32: "-L[[SYSROOT]]/usr/lib/../lib32"
1497// CHECK-DEBIAN-ML-MIPS64EL-N32: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.4/../../.."
1498// CHECK-DEBIAN-ML-MIPS64EL-N32: "-L[[SYSROOT]]/lib"
1499// CHECK-DEBIAN-ML-MIPS64EL-N32: "-L[[SYSROOT]]/usr/lib"
1500//
Simon Atanasyan3a46afa2014-06-24 19:00:12 +00001501// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1502// RUN: --target=mips64-linux-gnuabi64 -mabi=n64 \
Samuel Antao4ae1f672015-01-05 17:07:42 +00001503// RUN: --gcc-toolchain="" \
Simon Atanasyan3a46afa2014-06-24 19:00:12 +00001504// RUN: --sysroot=%S/Inputs/debian_6_mips64_tree \
1505// RUN: | FileCheck --check-prefix=CHECK-DEBIAN-ML-MIPS64-GNUABI %s
1506// CHECK-DEBIAN-ML-MIPS64-GNUABI: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
1507// CHECK-DEBIAN-ML-MIPS64-GNUABI: "{{.*}}/usr/lib/gcc/mips64-linux-gnuabi64/4.9/../../../mips64-linux-gnuabi64{{/|\\\\}}crt1.o"
1508// CHECK-DEBIAN-ML-MIPS64-GNUABI: "{{.*}}/usr/lib/gcc/mips64-linux-gnuabi64/4.9/../../../mips64-linux-gnuabi64{{/|\\\\}}crti.o"
1509// CHECK-DEBIAN-ML-MIPS64-GNUABI: "{{.*}}/usr/lib/gcc/mips64-linux-gnuabi64/4.9{{/|\\\\}}crtbegin.o"
1510// CHECK-DEBIAN-ML-MIPS64-GNUABI: "-L[[SYSROOT]]/usr/lib/gcc/mips64-linux-gnuabi64/4.9"
1511// CHECK-DEBIAN-ML-MIPS64-GNUABI: "-L[[SYSROOT]]/usr/lib/gcc/mips64-linux-gnuabi64/4.9/../../../mips64-linux-gnuabi64"
1512// CHECK-DEBIAN-ML-MIPS64-GNUABI: "-L[[SYSROOT]]/lib/mips64-linux-gnuabi64"
1513// CHECK-DEBIAN-ML-MIPS64-GNUABI: "-L[[SYSROOT]]/usr/lib/mips64-linux-gnuabi64"
1514// CHECK-DEBIAN-ML-MIPS64-GNUABI: "-L[[SYSROOT]]/usr/lib/gcc/mips64-linux-gnuabi64/4.9"
1515// CHECK-DEBIAN-ML-MIPS64-GNUABI: "-L[[SYSROOT]]/usr/lib/gcc/mips64-linux-gnuabi64/4.9/../../.."
1516// CHECK-DEBIAN-ML-MIPS64-GNUABI: "-L[[SYSROOT]]/lib"
1517// CHECK-DEBIAN-ML-MIPS64-GNUABI: "-L[[SYSROOT]]/usr/lib"
1518// CHECK-DEBIAN-ML-MIPS64-GNUABI: "{{.*}}/usr/lib/gcc/mips64-linux-gnuabi64/4.9{{/|\\\\}}crtend.o"
1519// CHECK-DEBIAN-ML-MIPS64-GNUABI: "{{.*}}/usr/lib/gcc/mips64-linux-gnuabi64/4.9/../../../mips64-linux-gnuabi64{{/|\\\\}}crtn.o"
1520//
1521// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1522// RUN: --target=mips64el-linux-gnuabi64 -mabi=n64 \
Samuel Antao4ae1f672015-01-05 17:07:42 +00001523// RUN: --gcc-toolchain="" \
Simon Atanasyan3a46afa2014-06-24 19:00:12 +00001524// RUN: --sysroot=%S/Inputs/debian_6_mips64_tree \
1525// RUN: | FileCheck --check-prefix=CHECK-DEBIAN-ML-MIPS64EL-GNUABI %s
1526// CHECK-DEBIAN-ML-MIPS64EL-GNUABI: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
1527// CHECK-DEBIAN-ML-MIPS64EL-GNUABI: "{{.*}}/usr/lib/gcc/mips64el-linux-gnuabi64/4.9/../../../mips64el-linux-gnuabi64{{/|\\\\}}crt1.o"
1528// CHECK-DEBIAN-ML-MIPS64EL-GNUABI: "{{.*}}/usr/lib/gcc/mips64el-linux-gnuabi64/4.9/../../../mips64el-linux-gnuabi64{{/|\\\\}}crti.o"
1529// CHECK-DEBIAN-ML-MIPS64EL-GNUABI: "{{.*}}/usr/lib/gcc/mips64el-linux-gnuabi64/4.9{{/|\\\\}}crtbegin.o"
1530// CHECK-DEBIAN-ML-MIPS64EL-GNUABI: "-L[[SYSROOT]]/usr/lib/gcc/mips64el-linux-gnuabi64/4.9"
1531// CHECK-DEBIAN-ML-MIPS64EL-GNUABI: "-L[[SYSROOT]]/usr/lib/gcc/mips64el-linux-gnuabi64/4.9/../../../mips64el-linux-gnuabi64"
1532// CHECK-DEBIAN-ML-MIPS64EL-GNUABI: "-L[[SYSROOT]]/lib/mips64el-linux-gnuabi64"
1533// CHECK-DEBIAN-ML-MIPS64EL-GNUABI: "-L[[SYSROOT]]/usr/lib/mips64el-linux-gnuabi64"
1534// CHECK-DEBIAN-ML-MIPS64EL-GNUABI: "-L[[SYSROOT]]/usr/lib/gcc/mips64el-linux-gnuabi64/4.9"
1535// CHECK-DEBIAN-ML-MIPS64EL-GNUABI: "-L[[SYSROOT]]/usr/lib/gcc/mips64el-linux-gnuabi64/4.9/../../.."
1536// CHECK-DEBIAN-ML-MIPS64EL-GNUABI: "-L[[SYSROOT]]/lib"
1537// CHECK-DEBIAN-ML-MIPS64EL-GNUABI: "-L[[SYSROOT]]/usr/lib"
1538// CHECK-DEBIAN-ML-MIPS64EL-GNUABI: "{{.*}}/usr/lib/gcc/mips64el-linux-gnuabi64/4.9{{/|\\\\}}crtend.o"
1539// CHECK-DEBIAN-ML-MIPS64EL-GNUABI: "{{.*}}/usr/lib/gcc/mips64el-linux-gnuabi64/4.9/../../../mips64el-linux-gnuabi64{{/|\\\\}}crtn.o"
1540//
Hal Finkelf3587912012-09-18 22:25:07 +00001541// Test linker invocation for Freescale SDK (OpenEmbedded).
1542// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +00001543// RUN: --target=powerpc-fsl-linux \
Samuel Antao4ae1f672015-01-05 17:07:42 +00001544// RUN: --gcc-toolchain="" \
Hal Finkelf3587912012-09-18 22:25:07 +00001545// RUN: --sysroot=%S/Inputs/freescale_ppc_tree \
1546// RUN: | FileCheck --check-prefix=CHECK-FSL-PPC %s
1547// CHECK-FSL-PPC: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
1548// CHECK-FSL-PPC: "-m" "elf32ppclinux"
Rafael Espindola49ddb862013-06-24 22:07:15 +00001549// CHECK-FSL-PPC: "{{.*}}{{/|\\\\}}crt1.o"
1550// CHECK-FSL-PPC: "{{.*}}{{/|\\\\}}crtbegin.o"
Hal Finkelf3587912012-09-18 22:25:07 +00001551// CHECK-FSL-PPC: "-L[[SYSROOT]]/usr/lib"
1552// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth274b6f02013-06-20 09:42:40 +00001553// RUN: --target=powerpc64-fsl-linux \
Samuel Antao4ae1f672015-01-05 17:07:42 +00001554// RUN: --gcc-toolchain="" \
Hal Finkelf3587912012-09-18 22:25:07 +00001555// RUN: --sysroot=%S/Inputs/freescale_ppc64_tree \
1556// RUN: | FileCheck --check-prefix=CHECK-FSL-PPC64 %s
1557// CHECK-FSL-PPC64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
1558// CHECK-FSL-PPC64: "-m" "elf64ppc"
Rafael Espindola49ddb862013-06-24 22:07:15 +00001559// CHECK-FSL-PPC64: "{{.*}}{{/|\\\\}}crt1.o"
1560// CHECK-FSL-PPC64: "{{.*}}{{/|\\\\}}crtbegin.o"
Hal Finkelf3587912012-09-18 22:25:07 +00001561// CHECK-FSL-PPC64: "-L[[SYSROOT]]/usr/lib64/powerpc64-fsl-linux/4.6.2/../.."
Benjamin Kramer058666a2012-10-04 19:42:20 +00001562//
Benjamin Kramerab88f622014-03-25 18:02:07 +00001563// Check that crtfastmath.o is linked with -ffast-math and with -Ofast.
Chandler Carruth274b6f02013-06-20 09:42:40 +00001564// RUN: %clang --target=x86_64-unknown-linux -### %s \
Samuel Antao4ae1f672015-01-05 17:07:42 +00001565// RUN: --gcc-toolchain="" \
Benjamin Kramer058666a2012-10-04 19:42:20 +00001566// RUN: --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
1567// RUN: | FileCheck --check-prefix=CHECK-NOCRTFASTMATH %s
Chandler Carruth274b6f02013-06-20 09:42:40 +00001568// RUN: %clang --target=x86_64-unknown-linux -### %s -ffast-math \
Samuel Antao4ae1f672015-01-05 17:07:42 +00001569// RUN: --gcc-toolchain="" \
Benjamin Kramer058666a2012-10-04 19:42:20 +00001570// RUN: --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
1571// RUN: | FileCheck --check-prefix=CHECK-CRTFASTMATH %s
Chandler Carruth274b6f02013-06-20 09:42:40 +00001572// RUN: %clang --target=x86_64-unknown-linux -### %s -funsafe-math-optimizations\
Samuel Antao4ae1f672015-01-05 17:07:42 +00001573// RUN: --gcc-toolchain="" \
Benjamin Kramer058666a2012-10-04 19:42:20 +00001574// RUN: --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
1575// RUN: | FileCheck --check-prefix=CHECK-CRTFASTMATH %s
Benjamin Kramerab88f622014-03-25 18:02:07 +00001576// RUN: %clang --target=x86_64-unknown-linux -### %s -Ofast\
Samuel Antao4ae1f672015-01-05 17:07:42 +00001577// RUN: --gcc-toolchain="" \
Benjamin Kramerab88f622014-03-25 18:02:07 +00001578// RUN: --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
1579// RUN: | FileCheck --check-prefix=CHECK-CRTFASTMATH %s
1580// RUN: %clang --target=x86_64-unknown-linux -### %s -Ofast -O3\
Samuel Antao4ae1f672015-01-05 17:07:42 +00001581// RUN: --gcc-toolchain="" \
Benjamin Kramerab88f622014-03-25 18:02:07 +00001582// RUN: --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
1583// RUN: | FileCheck --check-prefix=CHECK-NOCRTFASTMATH %s
1584// RUN: %clang --target=x86_64-unknown-linux -### %s -O3 -Ofast\
Samuel Antao4ae1f672015-01-05 17:07:42 +00001585// RUN: --gcc-toolchain="" \
Benjamin Kramerab88f622014-03-25 18:02:07 +00001586// RUN: --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
1587// RUN: | FileCheck --check-prefix=CHECK-CRTFASTMATH %s
Chandler Carruth274b6f02013-06-20 09:42:40 +00001588// RUN: %clang --target=x86_64-unknown-linux -### %s -ffast-math -fno-fast-math \
Samuel Antao4ae1f672015-01-05 17:07:42 +00001589// RUN: --gcc-toolchain="" \
Benjamin Kramer058666a2012-10-04 19:42:20 +00001590// RUN: --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
1591// RUN: | FileCheck --check-prefix=CHECK-NOCRTFASTMATH %s
Benjamin Kramerab88f622014-03-25 18:02:07 +00001592// RUN: %clang --target=x86_64-unknown-linux -### %s -Ofast -fno-fast-math \
Samuel Antao4ae1f672015-01-05 17:07:42 +00001593// RUN: --gcc-toolchain="" \
Benjamin Kramerab88f622014-03-25 18:02:07 +00001594// RUN: --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
1595// RUN: | FileCheck --check-prefix=CHECK-CRTFASTMATH %s
1596// RUN: %clang --target=x86_64-unknown-linux -### %s -Ofast -fno-unsafe-math-optimizations \
Samuel Antao4ae1f672015-01-05 17:07:42 +00001597// RUN: --gcc-toolchain="" \
Benjamin Kramerab88f622014-03-25 18:02:07 +00001598// RUN: --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
1599// RUN: | FileCheck --check-prefix=CHECK-CRTFASTMATH %s
1600// RUN: %clang --target=x86_64-unknown-linux -### %s -fno-fast-math -Ofast \
Samuel Antao4ae1f672015-01-05 17:07:42 +00001601// RUN: --gcc-toolchain="" \
Benjamin Kramerab88f622014-03-25 18:02:07 +00001602// RUN: --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
1603// RUN: | FileCheck --check-prefix=CHECK-CRTFASTMATH %s
1604// RUN: %clang --target=x86_64-unknown-linux -### %s -fno-unsafe-math-optimizations -Ofast \
Samuel Antao4ae1f672015-01-05 17:07:42 +00001605// RUN: --gcc-toolchain="" \
Benjamin Kramerab88f622014-03-25 18:02:07 +00001606// RUN: --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
1607// RUN: | FileCheck --check-prefix=CHECK-CRTFASTMATH %s
Benjamin Kramer058666a2012-10-04 19:42:20 +00001608// We don't have crtfastmath.o in the i386 tree, use it to check that file
1609// detection works.
Chandler Carruth274b6f02013-06-20 09:42:40 +00001610// RUN: %clang --target=i386-unknown-linux -### %s -ffast-math \
Samuel Antao4ae1f672015-01-05 17:07:42 +00001611// RUN: --gcc-toolchain="" \
Benjamin Kramer058666a2012-10-04 19:42:20 +00001612// RUN: --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
1613// RUN: | FileCheck --check-prefix=CHECK-NOCRTFASTMATH %s
Rafael Espindola49ddb862013-06-24 22:07:15 +00001614// CHECK-CRTFASTMATH: usr/lib/gcc/x86_64-unknown-linux/4.6.0{{/|\\\\}}crtfastmath.o
Benjamin Kramer058666a2012-10-04 19:42:20 +00001615// CHECK-NOCRTFASTMATH-NOT: crtfastmath.o
Eric Christopherac021742013-06-07 23:25:01 +00001616
1617// Check that we link in gcrt1.o when compiling with -pg
Chandler Carruth274b6f02013-06-20 09:42:40 +00001618// RUN: %clang -pg --target=x86_64-unknown-linux -### %s \
Samuel Antao4ae1f672015-01-05 17:07:42 +00001619// RUN: --gcc-toolchain="" \
Eric Christopherac021742013-06-07 23:25:01 +00001620// RUN: --sysroot=%S/Inputs/basic_linux_tree 2>& 1 \
1621// RUN: | FileCheck --check-prefix=CHECK-PG %s
1622// CHECK-PG: gcrt1.o
Reid Kleckner69071442014-06-26 01:08:54 +00001623
1624// GCC forwards -u to the linker.
1625// RUN: %clang -u asdf --target=x86_64-unknown-linux -### %s \
Samuel Antao4ae1f672015-01-05 17:07:42 +00001626// RUN: --gcc-toolchain="" \
Reid Kleckner69071442014-06-26 01:08:54 +00001627// RUN: --sysroot=%S/Inputs/basic_linux_tree 2>& 1 \
1628// RUN: | FileCheck --check-prefix=CHECK-u %s
1629// CHECK-u: "-u" "asdf"
Joerg Sonnenberger1689d3f2015-01-28 23:30:39 +00001630
1631// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1632// RUN: --target=armeb-unknown-linux \
1633// RUN: --gcc-toolchain="" \
1634// RUN: --sysroot=%S/Inputs/basic_linux_tree \
1635// RUN: | FileCheck --check-prefix=CHECK-ARMEB %s
1636// CHECK-ARMEB: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
1637// CHECK-ARMEB-NOT: "--be8"
Strahinja Petrovicb8598962016-06-10 16:09:20 +00001638// CHECK-ARMEB: "-m" "armelfb_linux_eabi"
Joerg Sonnenberger1689d3f2015-01-28 23:30:39 +00001639
1640// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1641// RUN: --target=armebv7-unknown-linux \
1642// RUN: --gcc-toolchain="" \
1643// RUN: --sysroot=%S/Inputs/basic_linux_tree \
1644// RUN: | FileCheck --check-prefix=CHECK-ARMV7EB %s
1645// CHECK-ARMV7EB: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
1646// CHECK-ARMV7EB: "--be8"
Strahinja Petrovicb8598962016-06-10 16:09:20 +00001647// CHECK-ARMV7EB: "-m" "armelfb_linux_eabi"
Rafael Espindola164fe342016-06-14 12:47:24 +00001648
1649// Check dynamic-linker for musl-libc
1650// RUN: %clang %s -### -o %t.o 2>&1 \
1651// RUN: --target=i386-pc-linux-musl \
Rafael Espindolab31478b2016-06-15 20:02:22 +00001652// RUN: | FileCheck --check-prefix=CHECK-MUSL-X86 %s
Rafael Espindola164fe342016-06-14 12:47:24 +00001653// RUN: %clang %s -### -o %t.o 2>&1 \
1654// RUN: --target=x86_64-pc-linux-musl \
Rafael Espindolab31478b2016-06-15 20:02:22 +00001655// RUN: | FileCheck --check-prefix=CHECK-MUSL-X86_64 %s
1656// RUN: %clang %s -### -o %t.o 2>&1 \
1657// RUN: --target=mips-pc-linux-musl \
1658// RUN: | FileCheck --check-prefix=CHECK-MUSL-MIPS %s
1659// RUN: %clang %s -### -o %t.o 2>&1 \
1660// RUN: --target=mipsel-pc-linux-musl \
1661// RUN: | FileCheck --check-prefix=CHECK-MUSL-MIPSEL %s
1662// RUN: %clang %s -### -o %t.o 2>&1 \
1663// RUN: --target=mips64-pc-linux-musl \
1664// RUN: | FileCheck --check-prefix=CHECK-MUSL-MIPS64 %s
1665// RUN: %clang %s -### -o %t.o 2>&1 \
1666// RUN: --target=mips64el-pc-linux-musl \
1667// RUN: | FileCheck --check-prefix=CHECK-MUSL-MIPS64EL %s
1668// RUN: %clang %s -### -o %t.o 2>&1 \
1669// RUN: --target=powerpc-pc-linux-musl \
1670// RUN: | FileCheck --check-prefix=CHECK-MUSL-PPC %s
1671// RUN: %clang %s -### -o %t.o 2>&1 \
1672// RUN: --target=powerpc64-pc-linux-musl \
1673// RUN: | FileCheck --check-prefix=CHECK-MUSL-PPC64 %s
Rafael Espindola0fa66802016-06-24 21:35:06 +00001674// RUN: %clang %s -### -o %t.o 2>&1 \
1675// RUN: --target=thumb-pc-linux-musleabi \
1676// RUN: | FileCheck --check-prefix=CHECK-MUSL-ARM %s
1677// RUN: %clang %s -### -o %t.o 2>&1 \
1678// RUN: --target=thumb-pc-linux-musleabihf \
1679// RUN: | FileCheck --check-prefix=CHECK-MUSL-ARMHF %s
1680// RUN: %clang %s -### -o %t.o 2>&1 \
Diana Picus86db9e72016-08-08 08:27:36 +00001681// RUN: --target=thumbv7-pc-linux-musleabi -mhard-float \
1682// RUN: | FileCheck --check-prefix=CHECK-MUSL-ARMHF %s
1683// RUN: %clang %s -### -o %t.o 2>&1 \
Rafael Espindola0fa66802016-06-24 21:35:06 +00001684// RUN: --target=thumbeb-pc-linux-musleabi \
1685// RUN: | FileCheck --check-prefix=CHECK-MUSL-ARMEB %s
1686// RUN: %clang %s -### -o %t.o 2>&1 \
1687// RUN: --target=thumbeb-pc-linux-musleabihf \
1688// RUN: | FileCheck --check-prefix=CHECK-MUSL-ARMEBHF %s
1689// RUN: %clang %s -### -o %t.o 2>&1 \
Diana Picus86db9e72016-08-08 08:27:36 +00001690// RUN: --target=thumbv7eb-pc-linux-musleabi -mhard-float \
1691// RUN: | FileCheck --check-prefix=CHECK-MUSL-ARMEBHF %s
1692// RUN: %clang %s -### -o %t.o 2>&1 \
Rafael Espindola0fa66802016-06-24 21:35:06 +00001693// RUN: --target=arm-pc-linux-musleabi \
1694// RUN: | FileCheck --check-prefix=CHECK-MUSL-ARM %s
1695// RUN: %clang %s -### -o %t.o 2>&1 \
1696// RUN: --target=arm-pc-linux-musleabihf \
1697// RUN: | FileCheck --check-prefix=CHECK-MUSL-ARMHF %s
1698// RUN: %clang %s -### -o %t.o 2>&1 \
Diana Picus86db9e72016-08-08 08:27:36 +00001699// RUN: --target=armv7-pc-linux-musleabi -mhard-float \
1700// RUN: | FileCheck --check-prefix=CHECK-MUSL-ARMHF %s
1701// RUN: %clang %s -### -o %t.o 2>&1 \
Rafael Espindola0fa66802016-06-24 21:35:06 +00001702// RUN: --target=armeb-pc-linux-musleabi \
1703// RUN: | FileCheck --check-prefix=CHECK-MUSL-ARMEB %s
1704// RUN: %clang %s -### -o %t.o 2>&1 \
1705// RUN: --target=armeb-pc-linux-musleabihf \
1706// RUN: | FileCheck --check-prefix=CHECK-MUSL-ARMEBHF %s
1707// RUN: %clang %s -### -o %t.o 2>&1 \
Diana Picus86db9e72016-08-08 08:27:36 +00001708// RUN: --target=armv7eb-pc-linux-musleabi -mhard-float \
1709// RUN: | FileCheck --check-prefix=CHECK-MUSL-ARMEBHF %s
1710// RUN: %clang %s -### -o %t.o 2>&1 \
Rafael Espindola0fa66802016-06-24 21:35:06 +00001711// RUN: --target=aarch64-pc-linux-musleabi \
1712// RUN: | FileCheck --check-prefix=CHECK-MUSL-AARCH64 %s
1713// RUN: %clang %s -### -o %t.o 2>&1 \
1714// RUN: --target=aarch64_be-pc-linux-musleabi \
1715// RUN: | FileCheck --check-prefix=CHECK-MUSL-AARCH64_BE %s
1716// CHECK-MUSL-X86: "-dynamic-linker" "/lib/ld-musl-i386.so.1"
1717// CHECK-MUSL-X86_64: "-dynamic-linker" "/lib/ld-musl-x86_64.so.1"
1718// CHECK-MUSL-MIPS: "-dynamic-linker" "/lib/ld-musl-mips.so.1"
1719// CHECK-MUSL-MIPSEL: "-dynamic-linker" "/lib/ld-musl-mipsel.so.1"
1720// CHECK-MUSL-MIPS64: "-dynamic-linker" "/lib/ld-musl-mips64.so.1"
1721// CHECK-MUSL-MIPS64EL: "-dynamic-linker" "/lib/ld-musl-mips64el.so.1"
1722// CHECK-MUSL-PPC: "-dynamic-linker" "/lib/ld-musl-powerpc.so.1"
1723// CHECK-MUSL-PPC64: "-dynamic-linker" "/lib/ld-musl-powerpc64.so.1"
1724// CHECK-MUSL-ARM: "-dynamic-linker" "/lib/ld-musl-arm.so.1"
1725// CHECK-MUSL-ARMHF: "-dynamic-linker" "/lib/ld-musl-armhf.so.1"
1726// CHECK-MUSL-ARMEB: "-dynamic-linker" "/lib/ld-musl-armeb.so.1"
1727// CHECK-MUSL-ARMEBHF: "-dynamic-linker" "/lib/ld-musl-armebhf.so.1"
1728// CHECK-MUSL-AARCH64: "-dynamic-linker" "/lib/ld-musl-aarch64.so.1"
1729// CHECK-MUSL-AARCH64_BE: "-dynamic-linker" "/lib/ld-musl-aarch64_be.so.1"
Michal Gornyf4debdd2016-12-12 15:07:43 +00001730
1731// Check whether multilib gcc install works fine on Gentoo with gcc-config
1732// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1733// RUN: --target=x86_64-unknown-linux-gnu -rtlib=platform \
1734// RUN: --sysroot=%S/Inputs/gentoo_linux_gcc_multi_version_tree \
1735// RUN: --gcc-toolchain="" \
1736// RUN: | FileCheck --check-prefix=CHECK-LD-GENTOO %s
1737// CHECK-LD-GENTOO-NOT: warning:
1738// CHECK-LD-GENTOO: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
1739// CHECK-LD-GENTOO: "--eh-frame-hdr"
1740// CHECK-LD-GENTOO: "-m" "elf_x86_64"
1741// CHECK-LD-GENTOO: "-dynamic-linker"
Michal Gorny108044a2016-12-12 16:04:37 +00001742// CHECK-LD-GENTOO: "{{.*}}/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.3{{/|\\\\}}crtbegin.o"
Michal Gornyf4debdd2016-12-12 15:07:43 +00001743// CHECK-LD-GENTOO: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.3"
1744// CHECK-LD-GENTOO: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.3/../../../../x86_64-pc-linux-gnu/lib"
1745// CHECK-LD-GENTOO: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.3/../../.."
1746// CHECK-LD-GENTOO: "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed"
1747// CHECK-LD-GENTOO: "-lc"
1748// CHECK-LD-GENTOO: "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed"
1749// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1750// RUN: --target=i686-unknown-linux-gnu -rtlib=platform \
1751// RUN: --sysroot=%S/Inputs/gentoo_linux_gcc_multi_version_tree \
1752// RUN: --gcc-toolchain="" \
1753// RUN: | FileCheck --check-prefix=CHECK-LD-GENTOO-32 %s
1754// CHECK-LD-GENTOO-32-NOT: warning:
1755// CHECK-LD-GENTOO-32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
1756// CHECK-LD-GENTOO-32: "--eh-frame-hdr"
1757// CHECK-LD-GENTOO-32: "-m" "elf_i386"
1758// CHECK-LD-GENTOO-32: "-dynamic-linker"
Michal Gorny108044a2016-12-12 16:04:37 +00001759// CHECK-LD-GENTOO-32: "{{.*}}/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.3/32{{/|\\\\}}crtbegin.o"
Michal Gornyf4debdd2016-12-12 15:07:43 +00001760// CHECK-LD-GENTOO-32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.3/32"
1761// CHECK-LD-GENTOO-32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.3/../../../../x86_64-pc-linux-gnu/lib"
1762// CHECK-LD-GENTOO-32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.3/../../.."
1763// CHECK-LD-GENTOO-32: "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed"
1764// CHECK-LD-GENTOO-32: "-lc"
1765// CHECK-LD-GENTOO-32: "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed"
1766// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
1767// RUN: --target=x86_64-unknown-linux-gnux32 -rtlib=platform \
1768// RUN: --sysroot=%S/Inputs/gentoo_linux_gcc_multi_version_tree \
1769// RUN: --gcc-toolchain="" \
1770// RUN: | FileCheck --check-prefix=CHECK-LD-GENTOO-X32 %s
1771// CHECK-LD-GENTOO-X32-NOT: warning:
1772// CHECK-LD-GENTOO-X32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
1773// CHECK-LD-GENTOO-X32: "--eh-frame-hdr"
1774// CHECK-LD-GENTOO-X32: "-m" "elf32_x86_64"
1775// CHECK-LD-GENTOO-X32: "-dynamic-linker"
Michal Gorny108044a2016-12-12 16:04:37 +00001776// CHECK-LD-GENTOO-X32: "{{.*}}/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.3/x32{{/|\\\\}}crtbegin.o"
Michal Gornyf4debdd2016-12-12 15:07:43 +00001777// CHECK-LD-GENTOO-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.3/x32"
1778// CHECK-LD-GENTOO-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.3/../../../../x86_64-pc-linux-gnu/lib"
1779// CHECK-LD-GENTOO-X32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-pc-linux-gnu/4.9.3/../../.."
1780// CHECK-LD-GENTOO-X32: "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed"
1781// CHECK-LD-GENTOO-X32: "-lc"
1782// CHECK-LD-GENTOO-X32: "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed"