blob: e798942de8aa9180f5dfea770a78b1f19204cb71 [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 \
Sebastian Pop422377c2012-01-20 22:01:23 +00005// RUN: -target i386-unknown-linux \
Chandler Carruth2a649c72011-10-03 06:41:08 +00006// RUN: --sysroot=%S/Inputs/basic_linux_tree \
Chandler Carruth94bcd382011-10-01 00:37:39 +00007// RUN: | FileCheck --check-prefix=CHECK-LD-32 %s
Chandler Carruth2a649c72011-10-03 06:41:08 +00008// CHECK-LD-32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
Chandler Carruth35cd7022011-10-03 08:16:09 +00009// CHECK-LD-32: "{{.*}}/usr/lib/gcc/i386-unknown-linux/4.6.0/crtbegin.o"
Chandler Carruth5fdc7cb2011-10-03 08:02:58 +000010// CHECK-LD-32: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0"
Chandler Carruth2c5e91e2011-10-03 08:09:02 +000011// 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 +000012// CHECK-LD-32: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0/../../.."
13// CHECK-LD-32: "-L[[SYSROOT]]/lib"
14// CHECK-LD-32: "-L[[SYSROOT]]/usr/lib"
Chandler Carruth94bcd382011-10-01 00:37:39 +000015//
Chandler Carruth2a649c72011-10-03 06:41:08 +000016// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Sebastian Pop422377c2012-01-20 22:01:23 +000017// RUN: -target x86_64-unknown-linux \
Chandler Carruth2a649c72011-10-03 06:41:08 +000018// RUN: --sysroot=%S/Inputs/basic_linux_tree \
Chandler Carruth94bcd382011-10-01 00:37:39 +000019// RUN: | FileCheck --check-prefix=CHECK-LD-64 %s
Chandler Carruth2a649c72011-10-03 06:41:08 +000020// CHECK-LD-64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
Chandler Carruth4588e342013-03-04 01:27:49 +000021// CHECK-LD-64: "--eh-frame-hdr"
22// CHECK-LD-64: "-m" "elf_x86_64"
23// CHECK-LD-64: "-dynamic-linker"
Chandler Carruth35cd7022011-10-03 08:16:09 +000024// CHECK-LD-64: "{{.*}}/usr/lib/gcc/x86_64-unknown-linux/4.6.0/crtbegin.o"
Chandler Carruth5fdc7cb2011-10-03 08:02:58 +000025// CHECK-LD-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0"
Chandler Carruth2c5e91e2011-10-03 08:09:02 +000026// 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 +000027// CHECK-LD-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../.."
28// CHECK-LD-64: "-L[[SYSROOT]]/lib"
29// CHECK-LD-64: "-L[[SYSROOT]]/usr/lib"
Chandler Carruth4588e342013-03-04 01:27:49 +000030// CHECK-LD-64: "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed"
31// CHECK-LD-64: "-lc"
32// CHECK-LD-64: "-lgcc" "--as-needed" "-lgcc_s" "--no-as-needed"
33//
34// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
35// RUN: -target x86_64-unknown-linux \
36// RUN: -static-libgcc \
37// RUN: --sysroot=%S/Inputs/basic_linux_tree \
38// RUN: | FileCheck --check-prefix=CHECK-LD-64-STATIC-LIBGCC %s
39// CHECK-LD-64-STATIC-LIBGCC: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
40// CHECK-LD-64-STATIC-LIBGCC: "--eh-frame-hdr"
41// CHECK-LD-64-STATIC-LIBGCC: "-m" "elf_x86_64"
42// CHECK-LD-64-STATIC-LIBGCC: "-dynamic-linker"
43// CHECK-LD-64-STATIC-LIBGCC: "{{.*}}/usr/lib/gcc/x86_64-unknown-linux/4.6.0/crtbegin.o"
44// CHECK-LD-64-STATIC-LIBGCC: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0"
45// CHECK-LD-64-STATIC-LIBGCC: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib"
46// CHECK-LD-64-STATIC-LIBGCC: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../.."
47// CHECK-LD-64-STATIC-LIBGCC: "-L[[SYSROOT]]/lib"
48// CHECK-LD-64-STATIC-LIBGCC: "-L[[SYSROOT]]/usr/lib"
49// CHECK-LD-64-STATIC-LIBGCC: "-lgcc" "-lgcc_eh"
50// CHECK-LD-64-STATIC-LIBGCC: "-lc"
51// CHECK-LD-64-STATIC-LIBGCC: "-lgcc" "-lgcc_eh"
52//
53// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
54// RUN: -target x86_64-unknown-linux \
55// RUN: -static \
56// RUN: --sysroot=%S/Inputs/basic_linux_tree \
57// RUN: | FileCheck --check-prefix=CHECK-LD-64-STATIC %s
58// CHECK-LD-64-STATIC: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
59// CHECK-LD-64-STATIC-NOT: "--eh-frame-hdr"
60// CHECK-LD-64-STATIC: "-m" "elf_x86_64"
61// CHECK-LD-64-STATIC-NOT: "-dynamic-linker"
62// CHECK-LD-64-STATIC: "-static"
63// CHECK-LD-64-STATIC: "{{.*}}/usr/lib/gcc/x86_64-unknown-linux/4.6.0/crtbeginT.o"
64// CHECK-LD-64-STATIC: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0"
65// CHECK-LD-64-STATIC: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib"
66// CHECK-LD-64-STATIC: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../.."
67// CHECK-LD-64-STATIC: "-L[[SYSROOT]]/lib"
68// CHECK-LD-64-STATIC: "-L[[SYSROOT]]/usr/lib"
69// CHECK-LD-64-STATIC: "--start-group" "-lgcc" "-lgcc_eh" "-lc" "--end-group"
Chandler Carruth2356b2c2011-10-03 09:00:50 +000070//
71// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Sebastian Pop422377c2012-01-20 22:01:23 +000072// RUN: -target i386-unknown-linux -m32 \
Chandler Carruth2356b2c2011-10-03 09:00:50 +000073// RUN: --sysroot=%S/Inputs/multilib_32bit_linux_tree \
74// RUN: | FileCheck --check-prefix=CHECK-32-TO-32 %s
75// CHECK-32-TO-32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
76// CHECK-32-TO-32: "{{.*}}/usr/lib/gcc/i386-unknown-linux/4.6.0/crtbegin.o"
77// CHECK-32-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0"
78// CHECK-32-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0/../../../../i386-unknown-linux/lib/../lib32"
79// CHECK-32-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0/../../../../lib32"
80// CHECK-32-TO-32: "-L[[SYSROOT]]/lib/../lib32"
81// CHECK-32-TO-32: "-L[[SYSROOT]]/usr/lib/../lib32"
82// CHECK-32-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0/../../../../i386-unknown-linux/lib"
83// CHECK-32-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0/../../.."
84// CHECK-32-TO-32: "-L[[SYSROOT]]/lib"
85// CHECK-32-TO-32: "-L[[SYSROOT]]/usr/lib"
86//
87// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Sebastian Pop422377c2012-01-20 22:01:23 +000088// RUN: -target i386-unknown-linux -m64 \
Chandler Carruth2356b2c2011-10-03 09:00:50 +000089// RUN: --sysroot=%S/Inputs/multilib_32bit_linux_tree \
90// RUN: | FileCheck --check-prefix=CHECK-32-TO-64 %s
91// CHECK-32-TO-64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
92// CHECK-32-TO-64: "{{.*}}/usr/lib/gcc/i386-unknown-linux/4.6.0/64/crtbegin.o"
93// CHECK-32-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0/64"
94// CHECK-32-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0/../../../../i386-unknown-linux/lib/../lib64"
95// CHECK-32-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0/../../../../lib64"
96// CHECK-32-TO-64: "-L[[SYSROOT]]/lib/../lib64"
97// CHECK-32-TO-64: "-L[[SYSROOT]]/usr/lib/../lib64"
98// CHECK-32-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0"
99// CHECK-32-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0/../../../../i386-unknown-linux/lib"
100// CHECK-32-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/i386-unknown-linux/4.6.0/../../.."
101// CHECK-32-TO-64: "-L[[SYSROOT]]/lib"
102// CHECK-32-TO-64: "-L[[SYSROOT]]/usr/lib"
Chandler Carruthadf23a42011-10-03 09:08:26 +0000103//
104// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Sebastian Pop422377c2012-01-20 22:01:23 +0000105// RUN: -target x86_64-unknown-linux -m64 \
Chandler Carruthadf23a42011-10-03 09:08:26 +0000106// RUN: --sysroot=%S/Inputs/multilib_64bit_linux_tree \
107// RUN: | FileCheck --check-prefix=CHECK-64-TO-64 %s
108// CHECK-64-TO-64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
109// CHECK-64-TO-64: "{{.*}}/usr/lib/gcc/x86_64-unknown-linux/4.6.0/crtbegin.o"
110// CHECK-64-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0"
111// CHECK-64-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib/../lib64"
112// CHECK-64-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../lib64"
113// CHECK-64-TO-64: "-L[[SYSROOT]]/lib/../lib64"
114// CHECK-64-TO-64: "-L[[SYSROOT]]/usr/lib/../lib64"
115// CHECK-64-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib"
116// CHECK-64-TO-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../.."
117// CHECK-64-TO-64: "-L[[SYSROOT]]/lib"
118// CHECK-64-TO-64: "-L[[SYSROOT]]/usr/lib"
119//
120// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Sebastian Pop422377c2012-01-20 22:01:23 +0000121// RUN: -target x86_64-unknown-linux -m32 \
Chandler Carruthadf23a42011-10-03 09:08:26 +0000122// RUN: --sysroot=%S/Inputs/multilib_64bit_linux_tree \
123// RUN: | FileCheck --check-prefix=CHECK-64-TO-32 %s
124// CHECK-64-TO-32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
125// CHECK-64-TO-32: "{{.*}}/usr/lib/gcc/x86_64-unknown-linux/4.6.0/32/crtbegin.o"
126// CHECK-64-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/32"
127// CHECK-64-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib/../lib32"
128// CHECK-64-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../lib32"
129// CHECK-64-TO-32: "-L[[SYSROOT]]/lib/../lib32"
130// CHECK-64-TO-32: "-L[[SYSROOT]]/usr/lib/../lib32"
131// CHECK-64-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0"
132// CHECK-64-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../../../x86_64-unknown-linux/lib"
133// CHECK-64-TO-32: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0/../../.."
134// CHECK-64-TO-32: "-L[[SYSROOT]]/lib"
135// CHECK-64-TO-32: "-L[[SYSROOT]]/usr/lib"
Chandler Carruthf7e0ecb2011-10-05 01:01:57 +0000136//
137// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Chandler Carruth69a125b2012-04-06 16:32:06 +0000138// RUN: -target x86_64-unknown-linux -m32 \
139// RUN: -gcc-toolchain %S/Inputs/multilib_64bit_linux_tree/usr \
140// RUN: --sysroot=%S/Inputs/multilib_32bit_linux_tree \
141// RUN: | FileCheck --check-prefix=CHECK-64-TO-32-SYSROOT %s
142// CHECK-64-TO-32-SYSROOT: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
143// CHECK-64-TO-32-SYSROOT: "{{.*}}/usr/lib/gcc/x86_64-unknown-linux/4.6.0/32/crtbegin.o"
144// CHECK-64-TO-32-SYSROOT: "-L{{[^"]*}}/Inputs/multilib_64bit_linux_tree/usr/lib/gcc/x86_64-unknown-linux/4.6.0/32"
145// CHECK-64-TO-32-SYSROOT: "-L[[SYSROOT]]/lib/../lib32"
146// CHECK-64-TO-32-SYSROOT: "-L[[SYSROOT]]/usr/lib/../lib32"
147// CHECK-64-TO-32-SYSROOT: "-L{{[^"]*}}/Inputs/multilib_64bit_linux_tree/usr/lib/gcc/x86_64-unknown-linux/4.6.0"
148// CHECK-64-TO-32-SYSROOT: "-L[[SYSROOT]]/lib"
149// CHECK-64-TO-32-SYSROOT: "-L[[SYSROOT]]/usr/lib"
150//
151// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Sebastian Pop422377c2012-01-20 22:01:23 +0000152// RUN: -target i386-unknown-linux -m32 \
Chandler Carruthe276b362011-10-05 06:38:03 +0000153// RUN: -ccc-install-dir %S/Inputs/fake_install_tree/bin \
Chandler Carruthf7e0ecb2011-10-05 01:01:57 +0000154// RUN: --sysroot=%S/Inputs/basic_linux_tree \
155// RUN: | FileCheck --check-prefix=CHECK-INSTALL-DIR-32 %s
156// CHECK-INSTALL-DIR-32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
Chandler Carruthe276b362011-10-05 06:38:03 +0000157// CHECK-INSTALL-DIR-32: "{{.*}}/Inputs/fake_install_tree/bin/../lib/gcc/i386-unknown-linux/4.7.0/crtbegin.o"
158// 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 +0000159//
160// Check that with 64-bit builds, we don't actually use the install directory
161// as its version of GCC is lower than our sysrooted version.
162// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Sebastian Pop422377c2012-01-20 22:01:23 +0000163// RUN: -target x86_64-unknown-linux -m64 \
Chandler Carruthe276b362011-10-05 06:38:03 +0000164// RUN: -ccc-install-dir %S/Inputs/fake_install_tree/bin \
Chandler Carruthf7e0ecb2011-10-05 01:01:57 +0000165// RUN: --sysroot=%S/Inputs/basic_linux_tree \
166// RUN: | FileCheck --check-prefix=CHECK-INSTALL-DIR-64 %s
167// CHECK-INSTALL-DIR-64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
168// CHECK-INSTALL-DIR-64: "{{.*}}/usr/lib/gcc/x86_64-unknown-linux/4.6.0/crtbegin.o"
169// CHECK-INSTALL-DIR-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-unknown-linux/4.6.0"
Chandler Carruthcf59bc52011-10-05 03:09:51 +0000170//
171// Check that we support unusual patch version formats, including missing that
172// component.
173// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Sebastian Pop422377c2012-01-20 22:01:23 +0000174// RUN: -target i386-unknown-linux -m32 \
Chandler Carruthe276b362011-10-05 06:38:03 +0000175// RUN: -ccc-install-dir %S/Inputs/gcc_version_parsing1/bin \
Chandler Carruthcf59bc52011-10-05 03:09:51 +0000176// RUN: --sysroot=%S/Inputs/basic_linux_tree \
177// RUN: | FileCheck --check-prefix=CHECK-GCC-VERSION1 %s
178// CHECK-GCC-VERSION1: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
Chandler Carruthe276b362011-10-05 06:38:03 +0000179// CHECK-GCC-VERSION1: "{{.*}}/Inputs/gcc_version_parsing1/bin/../lib/gcc/i386-unknown-linux/4.7/crtbegin.o"
180// CHECK-GCC-VERSION1: "-L{{.*}}/Inputs/gcc_version_parsing1/bin/../lib/gcc/i386-unknown-linux/4.7"
Chandler Carruthcf59bc52011-10-05 03:09:51 +0000181// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Sebastian Pop422377c2012-01-20 22:01:23 +0000182// RUN: -target i386-unknown-linux -m32 \
Chandler Carruthe276b362011-10-05 06:38:03 +0000183// RUN: -ccc-install-dir %S/Inputs/gcc_version_parsing2/bin \
Chandler Carruthcf59bc52011-10-05 03:09:51 +0000184// RUN: --sysroot=%S/Inputs/basic_linux_tree \
185// RUN: | FileCheck --check-prefix=CHECK-GCC-VERSION2 %s
186// CHECK-GCC-VERSION2: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
Chandler Carruthe276b362011-10-05 06:38:03 +0000187// CHECK-GCC-VERSION2: "{{.*}}/Inputs/gcc_version_parsing2/bin/../lib/gcc/i386-unknown-linux/4.7.x/crtbegin.o"
188// CHECK-GCC-VERSION2: "-L{{.*}}/Inputs/gcc_version_parsing2/bin/../lib/gcc/i386-unknown-linux/4.7.x"
Chandler Carruthcf59bc52011-10-05 03:09:51 +0000189// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Sebastian Pop422377c2012-01-20 22:01:23 +0000190// RUN: -target i386-unknown-linux -m32 \
Chandler Carruthe276b362011-10-05 06:38:03 +0000191// RUN: -ccc-install-dir %S/Inputs/gcc_version_parsing3/bin \
Chandler Carruthcf59bc52011-10-05 03:09:51 +0000192// RUN: --sysroot=%S/Inputs/basic_linux_tree \
193// RUN: | FileCheck --check-prefix=CHECK-GCC-VERSION3 %s
194// CHECK-GCC-VERSION3: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
Chandler Carruthe276b362011-10-05 06:38:03 +0000195// CHECK-GCC-VERSION3: "{{.*}}/Inputs/gcc_version_parsing3/bin/../lib/gcc/i386-unknown-linux/4.7.99-rc5/crtbegin.o"
196// 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 +0000197// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Sebastian Pop422377c2012-01-20 22:01:23 +0000198// RUN: -target i386-unknown-linux -m32 \
Chandler Carruthbff1e8d2011-11-05 23:24:30 +0000199// RUN: -ccc-install-dir %S/Inputs/gcc_version_parsing4/bin \
200// RUN: --sysroot=%S/Inputs/basic_linux_tree \
201// RUN: | FileCheck --check-prefix=CHECK-GCC-VERSION4 %s
202// CHECK-GCC-VERSION4: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
203// CHECK-GCC-VERSION4: "{{.*}}/Inputs/gcc_version_parsing4/bin/../lib/gcc/i386-unknown-linux/4.7.99/crtbegin.o"
204// CHECK-GCC-VERSION4: "-L{{.*}}/Inputs/gcc_version_parsing4/bin/../lib/gcc/i386-unknown-linux/4.7.99"
Chandler Carruth6e46ca22011-11-09 03:46:20 +0000205//
206// Test a very broken version of multiarch that shipped in Ubuntu 11.04.
207// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Sebastian Pop422377c2012-01-20 22:01:23 +0000208// RUN: -target i386-unknown-linux \
Chandler Carruth6e46ca22011-11-09 03:46:20 +0000209// RUN: --sysroot=%S/Inputs/ubuntu_11.04_multiarch_tree \
210// RUN: | FileCheck --check-prefix=CHECK-UBUNTU-11-04 %s
211// CHECK-UBUNTU-11-04: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
212// CHECK-UBUNTU-11-04: "{{.*}}/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5/crtbegin.o"
213// CHECK-UBUNTU-11-04: "-L[[SYSROOT]]/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5"
214// CHECK-UBUNTU-11-04: "-L[[SYSROOT]]/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5/../../../../i386-linux-gnu"
215// CHECK-UBUNTU-11-04: "-L[[SYSROOT]]/usr/lib/i386-linux-gnu"
216// CHECK-UBUNTU-11-04: "-L[[SYSROOT]]/usr/lib/i386-linux-gnu/gcc/i686-linux-gnu/4.5/../../../.."
217// CHECK-UBUNTU-11-04: "-L[[SYSROOT]]/lib"
218// CHECK-UBUNTU-11-04: "-L[[SYSROOT]]/usr/lib"
Hal Finkel6b89a102011-12-08 20:36:19 +0000219//
Jiangning Liu61b06cb2012-07-31 08:06:29 +0000220// Check multi arch support on Ubuntu 12.04 LTS.
221// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
222// RUN: -target arm-unknown-linux-gnueabihf \
223// RUN: --sysroot=%S/Inputs/ubuntu_12.04_LTS_multiarch_tree \
224// RUN: | FileCheck --check-prefix=CHECK-UBUNTU-12-04-ARM-HF %s
225// CHECK-UBUNTU-12-04-ARM-HF: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
226// CHECK-UBUNTU-12-04-ARM-HF: "{{.*}}/usr/lib/gcc/arm-linux-gnueabihf/4.6.3/../../../arm-linux-gnueabihf/crt1.o"
227// CHECK-UBUNTU-12-04-ARM-HF: "{{.*}}/usr/lib/gcc/arm-linux-gnueabihf/4.6.3/../../../arm-linux-gnueabihf/crti.o"
228// CHECK-UBUNTU-12-04-ARM-HF: "{{.*}}/usr/lib/gcc/arm-linux-gnueabihf/4.6.3/crtbegin.o"
229// CHECK-UBUNTU-12-04-ARM-HF: "-L[[SYSROOT]]/usr/lib/gcc/arm-linux-gnueabihf/4.6.3"
230// CHECK-UBUNTU-12-04-ARM-HF: "-L[[SYSROOT]]/usr/lib/gcc/arm-linux-gnueabihf/4.6.3/../../../arm-linux-gnueabihf"
231// CHECK-UBUNTU-12-04-ARM-HF: "-L[[SYSROOT]]/lib/arm-linux-gnueabihf"
232// CHECK-UBUNTU-12-04-ARM-HF: "-L[[SYSROOT]]/usr/lib/arm-linux-gnueabihf"
233// CHECK-UBUNTU-12-04-ARM-HF: "-L[[SYSROOT]]/usr/lib/gcc/arm-linux-gnueabihf/4.6.3/../../.."
234// CHECK-UBUNTU-12-04-ARM-HF: "{{.*}}/usr/lib/gcc/arm-linux-gnueabihf/4.6.3/crtend.o"
235// CHECK-UBUNTU-12-04-ARM-HF: "{{.*}}/usr/lib/gcc/arm-linux-gnueabihf/4.6.3/../../../arm-linux-gnueabihf/crtn.o"
236//
237// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
238// RUN: -target arm-unknown-linux-gnueabi \
239// RUN: --sysroot=%S/Inputs/ubuntu_12.04_LTS_multiarch_tree \
240// RUN: | FileCheck --check-prefix=CHECK-UBUNTU-12-04-ARM %s
241// CHECK-UBUNTU-12-04-ARM: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
242// CHECK-UBUNTU-12-04-ARM: "{{.*}}/usr/lib/gcc/arm-linux-gnueabi/4.6.1/../../../arm-linux-gnueabi/crt1.o"
243// CHECK-UBUNTU-12-04-ARM: "{{.*}}/usr/lib/gcc/arm-linux-gnueabi/4.6.1/../../../arm-linux-gnueabi/crti.o"
244// CHECK-UBUNTU-12-04-ARM: "{{.*}}/usr/lib/gcc/arm-linux-gnueabi/4.6.1/crtbegin.o"
245// CHECK-UBUNTU-12-04-ARM: "-L[[SYSROOT]]/usr/lib/gcc/arm-linux-gnueabi/4.6.1"
246// CHECK-UBUNTU-12-04-ARM: "-L[[SYSROOT]]/usr/lib/gcc/arm-linux-gnueabi/4.6.1/../../../arm-linux-gnueabi"
247// CHECK-UBUNTU-12-04-ARM: "-L[[SYSROOT]]/lib/arm-linux-gnueabi"
248// CHECK-UBUNTU-12-04-ARM: "-L[[SYSROOT]]/usr/lib/arm-linux-gnueabi"
249// CHECK-UBUNTU-12-04-ARM: "-L[[SYSROOT]]/usr/lib/gcc/arm-linux-gnueabi/4.6.1/../../.."
250// CHECK-UBUNTU-12-04-ARM: "{{.*}}/usr/lib/gcc/arm-linux-gnueabi/4.6.1/crtend.o"
251// CHECK-UBUNTU-12-04-ARM: "{{.*}}/usr/lib/gcc/arm-linux-gnueabi/4.6.1/../../../arm-linux-gnueabi/crtn.o"
252//
Hal Finkel6b89a102011-12-08 20:36:19 +0000253// Test the setup that shipped in SUSE 10.3 on ppc64.
254// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Sebastian Pop422377c2012-01-20 22:01:23 +0000255// RUN: -target powerpc64-suse-linux \
Hal Finkel6b89a102011-12-08 20:36:19 +0000256// RUN: --sysroot=%S/Inputs/suse_10.3_ppc64_tree \
257// RUN: | FileCheck --check-prefix=CHECK-SUSE-10-3-PPC64 %s
258// CHECK-SUSE-10-3-PPC64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
259// CHECK-SUSE-10-3-PPC64: "{{.*}}/usr/lib/gcc/powerpc64-suse-linux/4.1.2/64/crtbegin.o"
260// CHECK-SUSE-10-3-PPC64: "-L[[SYSROOT]]/usr/lib/gcc/powerpc64-suse-linux/4.1.2/64"
261// CHECK-SUSE-10-3-PPC64: "-L[[SYSROOT]]/usr/lib/gcc/powerpc64-suse-linux/4.1.2/../../../../lib64"
262// CHECK-SUSE-10-3-PPC64: "-L[[SYSROOT]]/lib/../lib64"
263// CHECK-SUSE-10-3-PPC64: "-L[[SYSROOT]]/usr/lib/../lib64"
Chandler Carruth7cf80e382011-12-17 21:57:25 +0000264//
Jiangning Liueabbf922012-07-30 11:05:56 +0000265// Check dynamic-linker for different archs
266// RUN: %clang %s -### -o %t.o 2>&1 \
267// RUN: -target arm-linux-gnueabi \
268// RUN: | FileCheck --check-prefix=CHECK-ARM %s
269// CHECK-ARM: "{{.*}}ld{{(.exe)?}}"
270// CHECK-ARM: "-m" "armelf_linux_eabi"
271// CHECK-ARM: "-dynamic-linker" "{{.*}}/lib/ld-linux.so.3"
272//
273// RUN: %clang %s -### -o %t.o 2>&1 \
274// RUN: -target arm-linux-gnueabihf \
275// RUN: | FileCheck --check-prefix=CHECK-ARM-HF %s
276// CHECK-ARM-HF: "{{.*}}ld{{(.exe)?}}"
277// CHECK-ARM-HF: "-m" "armelf_linux_eabi"
278// CHECK-ARM-HF: "-dynamic-linker" "{{.*}}/lib/ld-linux-armhf.so.3"
279//
Chandler Carruth7cf80e382011-12-17 21:57:25 +0000280// Check that we do not pass --hash-style=gnu and --hash-style=both to linker
Simon Atanasyan1e1e2e22012-04-06 20:14:27 +0000281// and provide correct path to the dynamic linker and emulation mode when build
282// for MIPS platforms.
Chandler Carruth7cf80e382011-12-17 21:57:25 +0000283// RUN: %clang %s -### -o %t.o 2>&1 \
Rafael Espindolafc3fc0c2012-10-09 20:46:28 +0000284// RUN: -target mips-linux-gnu \
Chandler Carruth7cf80e382011-12-17 21:57:25 +0000285// RUN: | FileCheck --check-prefix=CHECK-MIPS %s
286// CHECK-MIPS: "{{.*}}ld{{(.exe)?}}"
Simon Atanasyan1e1e2e22012-04-06 20:14:27 +0000287// CHECK-MIPS: "-m" "elf32btsmip"
288// CHECK-MIPS: "-dynamic-linker" "{{.*}}/lib/ld.so.1"
Chandler Carruth7cf80e382011-12-17 21:57:25 +0000289// CHECK-MIPS-NOT: "--hash-style={{gnu|both}}"
290// RUN: %clang %s -### -o %t.o 2>&1 \
Rafael Espindolafc3fc0c2012-10-09 20:46:28 +0000291// RUN: -target mipsel-linux-gnu \
Chandler Carruth7cf80e382011-12-17 21:57:25 +0000292// RUN: | FileCheck --check-prefix=CHECK-MIPSEL %s
293// CHECK-MIPSEL: "{{.*}}ld{{(.exe)?}}"
Simon Atanasyan1e1e2e22012-04-06 20:14:27 +0000294// CHECK-MIPSEL: "-m" "elf32ltsmip"
295// CHECK-MIPSEL: "-dynamic-linker" "{{.*}}/lib/ld.so.1"
Chandler Carruth7cf80e382011-12-17 21:57:25 +0000296// CHECK-MIPSEL-NOT: "--hash-style={{gnu|both}}"
297// RUN: %clang %s -### -o %t.o 2>&1 \
Rafael Espindolafc3fc0c2012-10-09 20:46:28 +0000298// RUN: -target mips64-linux-gnu \
Chandler Carruth7cf80e382011-12-17 21:57:25 +0000299// RUN: | FileCheck --check-prefix=CHECK-MIPS64 %s
300// CHECK-MIPS64: "{{.*}}ld{{(.exe)?}}"
Simon Atanasyan1e1e2e22012-04-06 20:14:27 +0000301// CHECK-MIPS64: "-m" "elf64btsmip"
302// CHECK-MIPS64: "-dynamic-linker" "{{.*}}/lib64/ld.so.1"
Chandler Carruth7cf80e382011-12-17 21:57:25 +0000303// CHECK-MIPS64-NOT: "--hash-style={{gnu|both}}"
304// RUN: %clang %s -### -o %t.o 2>&1 \
Rafael Espindolafc3fc0c2012-10-09 20:46:28 +0000305// RUN: -target mips64el-linux-gnu \
Chandler Carruth7cf80e382011-12-17 21:57:25 +0000306// RUN: | FileCheck --check-prefix=CHECK-MIPS64EL %s
307// CHECK-MIPS64EL: "{{.*}}ld{{(.exe)?}}"
Simon Atanasyan1e1e2e22012-04-06 20:14:27 +0000308// CHECK-MIPS64EL: "-m" "elf64ltsmip"
309// CHECK-MIPS64EL: "-dynamic-linker" "{{.*}}/lib64/ld.so.1"
Chandler Carruth7cf80e382011-12-17 21:57:25 +0000310// CHECK-MIPS64EL-NOT: "--hash-style={{gnu|both}}"
Simon Atanasyan2d1b1ad2012-10-21 11:44:57 +0000311// RUN: %clang %s -### -o %t.o 2>&1 \
312// RUN: -target mips64-linux-gnu -mabi=n32 \
313// RUN: | FileCheck --check-prefix=CHECK-MIPS64-N32 %s
314// CHECK-MIPS64-N32: "{{.*}}ld{{(.exe)?}}"
315// CHECK-MIPS64-N32: "-m" "elf32btsmipn32"
316// CHECK-MIPS64-N32: "-dynamic-linker" "{{.*}}/lib32/ld.so.1"
317// CHECK-MIPS64-N32-NOT: "--hash-style={{gnu|both}}"
318// RUN: %clang %s -### -o %t.o 2>&1 \
319// RUN: -target mips64el-linux-gnu -mabi=n32 \
320// RUN: | FileCheck --check-prefix=CHECK-MIPS64EL-N32 %s
321// CHECK-MIPS64EL-N32: "{{.*}}ld{{(.exe)?}}"
322// CHECK-MIPS64EL-N32: "-m" "elf32ltsmipn32"
323// CHECK-MIPS64EL-N32: "-dynamic-linker" "{{.*}}/lib32/ld.so.1"
324// CHECK-MIPS64EL-N32-NOT: "--hash-style={{gnu|both}}"
Chandler Carruthaf3c2092012-02-26 09:03:21 +0000325//
326// Thoroughly exercise the Debian multiarch environment.
327// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
328// RUN: -target i686-linux-gnu \
329// RUN: --sysroot=%S/Inputs/debian_multiarch_tree \
330// RUN: | FileCheck --check-prefix=CHECK-DEBIAN-X86 %s
331// CHECK-DEBIAN-X86: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
332// CHECK-DEBIAN-X86: "{{.*}}/usr/lib/gcc/i686-linux-gnu/4.5/crtbegin.o"
333// CHECK-DEBIAN-X86: "-L[[SYSROOT]]/usr/lib/gcc/i686-linux-gnu/4.5"
334// CHECK-DEBIAN-X86: "-L[[SYSROOT]]/usr/lib/gcc/i686-linux-gnu/4.5/../../../i386-linux-gnu"
335// CHECK-DEBIAN-X86: "-L[[SYSROOT]]/usr/lib/i386-linux-gnu"
336// CHECK-DEBIAN-X86: "-L[[SYSROOT]]/usr/lib/gcc/i686-linux-gnu/4.5/../../.."
337// CHECK-DEBIAN-X86: "-L[[SYSROOT]]/lib"
338// CHECK-DEBIAN-X86: "-L[[SYSROOT]]/usr/lib"
339// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
340// RUN: -target x86_64-linux-gnu \
341// RUN: --sysroot=%S/Inputs/debian_multiarch_tree \
342// RUN: | FileCheck --check-prefix=CHECK-DEBIAN-X86-64 %s
343// CHECK-DEBIAN-X86-64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
344// CHECK-DEBIAN-X86-64: "{{.*}}/usr/lib/gcc/x86_64-linux-gnu/4.5/crtbegin.o"
345// CHECK-DEBIAN-X86-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/4.5"
346// CHECK-DEBIAN-X86-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/4.5/../../../x86_64-linux-gnu"
347// CHECK-DEBIAN-X86-64: "-L[[SYSROOT]]/usr/lib/x86_64-linux-gnu"
348// CHECK-DEBIAN-X86-64: "-L[[SYSROOT]]/usr/lib/gcc/x86_64-linux-gnu/4.5/../../.."
349// CHECK-DEBIAN-X86-64: "-L[[SYSROOT]]/lib"
350// CHECK-DEBIAN-X86-64: "-L[[SYSROOT]]/usr/lib"
351// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
352// RUN: -target powerpc-linux-gnu \
353// RUN: --sysroot=%S/Inputs/debian_multiarch_tree \
354// RUN: | FileCheck --check-prefix=CHECK-DEBIAN-PPC %s
355// CHECK-DEBIAN-PPC: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
356// CHECK-DEBIAN-PPC: "{{.*}}/usr/lib/gcc/powerpc-linux-gnu/4.5/crtbegin.o"
357// CHECK-DEBIAN-PPC: "-L[[SYSROOT]]/usr/lib/gcc/powerpc-linux-gnu/4.5"
358// CHECK-DEBIAN-PPC: "-L[[SYSROOT]]/usr/lib/gcc/powerpc-linux-gnu/4.5/../../../powerpc-linux-gnu"
359// CHECK-DEBIAN-PPC: "-L[[SYSROOT]]/usr/lib/powerpc-linux-gnu"
360// CHECK-DEBIAN-PPC: "-L[[SYSROOT]]/usr/lib/gcc/powerpc-linux-gnu/4.5/../../.."
361// CHECK-DEBIAN-PPC: "-L[[SYSROOT]]/lib"
362// CHECK-DEBIAN-PPC: "-L[[SYSROOT]]/usr/lib"
363// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
364// RUN: -target powerpc64-linux-gnu \
365// RUN: --sysroot=%S/Inputs/debian_multiarch_tree \
366// RUN: | FileCheck --check-prefix=CHECK-DEBIAN-PPC64 %s
367// CHECK-DEBIAN-PPC64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
368// CHECK-DEBIAN-PPC64: "{{.*}}/usr/lib/gcc/powerpc64-linux-gnu/4.5/crtbegin.o"
369// CHECK-DEBIAN-PPC64: "-L[[SYSROOT]]/usr/lib/gcc/powerpc64-linux-gnu/4.5"
370// CHECK-DEBIAN-PPC64: "-L[[SYSROOT]]/usr/lib/gcc/powerpc64-linux-gnu/4.5/../../../powerpc64-linux-gnu"
371// CHECK-DEBIAN-PPC64: "-L[[SYSROOT]]/usr/lib/powerpc64-linux-gnu"
372// CHECK-DEBIAN-PPC64: "-L[[SYSROOT]]/usr/lib/gcc/powerpc64-linux-gnu/4.5/../../.."
373// CHECK-DEBIAN-PPC64: "-L[[SYSROOT]]/lib"
374// CHECK-DEBIAN-PPC64: "-L[[SYSROOT]]/usr/lib"
Simon Atanasyan2be62252012-04-26 08:35:58 +0000375// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
376// RUN: -target mips-linux-gnu \
377// RUN: --sysroot=%S/Inputs/debian_multiarch_tree \
378// RUN: | FileCheck --check-prefix=CHECK-DEBIAN-MIPS %s
379// CHECK-DEBIAN-MIPS: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
380// CHECK-DEBIAN-MIPS: "{{.*}}/usr/lib/gcc/mips-linux-gnu/4.5/crtbegin.o"
381// CHECK-DEBIAN-MIPS: "-L[[SYSROOT]]/usr/lib/gcc/mips-linux-gnu/4.5"
382// CHECK-DEBIAN-MIPS: "-L[[SYSROOT]]/usr/lib/gcc/mips-linux-gnu/4.5/../../../mips-linux-gnu"
383// CHECK-DEBIAN-MIPS: "-L[[SYSROOT]]/usr/lib/mips-linux-gnu"
384// CHECK-DEBIAN-MIPS: "-L[[SYSROOT]]/usr/lib/gcc/mips-linux-gnu/4.5/../../.."
385// CHECK-DEBIAN-MIPS: "-L[[SYSROOT]]/lib"
386// CHECK-DEBIAN-MIPS: "-L[[SYSROOT]]/usr/lib"
387// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
388// RUN: -target mipsel-linux-gnu \
389// RUN: --sysroot=%S/Inputs/debian_multiarch_tree \
390// RUN: | FileCheck --check-prefix=CHECK-DEBIAN-MIPSEL %s
391// CHECK-DEBIAN-MIPSEL: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
392// CHECK-DEBIAN-MIPSEL: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.5/crtbegin.o"
393// CHECK-DEBIAN-MIPSEL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.5"
394// CHECK-DEBIAN-MIPSEL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.5/../../../mipsel-linux-gnu"
395// CHECK-DEBIAN-MIPSEL: "-L[[SYSROOT]]/usr/lib/mipsel-linux-gnu"
396// CHECK-DEBIAN-MIPSEL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.5/../../.."
397// CHECK-DEBIAN-MIPSEL: "-L[[SYSROOT]]/lib"
398// CHECK-DEBIAN-MIPSEL: "-L[[SYSROOT]]/usr/lib"
Simon Atanasyan9bb634d2012-04-26 19:57:02 +0000399// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
400// RUN: -target mips64-linux-gnu \
401// RUN: --sysroot=%S/Inputs/debian_multiarch_tree \
402// RUN: | FileCheck --check-prefix=CHECK-DEBIAN-MIPS64 %s
403// CHECK-DEBIAN-MIPS64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
404// CHECK-DEBIAN-MIPS64: "{{.*}}/usr/lib/gcc/mips-linux-gnu/4.5/64/crtbegin.o"
405// CHECK-DEBIAN-MIPS64: "-L[[SYSROOT]]/usr/lib/gcc/mips-linux-gnu/4.5/64"
406// CHECK-DEBIAN-MIPS64: "-L[[SYSROOT]]/usr/lib/gcc/mips-linux-gnu/4.5"
407// CHECK-DEBIAN-MIPS64: "-L[[SYSROOT]]/usr/lib/gcc/mips-linux-gnu/4.5/../../.."
408// CHECK-DEBIAN-MIPS64: "-L[[SYSROOT]]/lib"
409// CHECK-DEBIAN-MIPS64: "-L[[SYSROOT]]/usr/lib"
410// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
411// RUN: -target mips64el-linux-gnu \
412// RUN: --sysroot=%S/Inputs/debian_multiarch_tree \
413// RUN: | FileCheck --check-prefix=CHECK-DEBIAN-MIPS64EL %s
414// CHECK-DEBIAN-MIPS64EL: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
415// CHECK-DEBIAN-MIPS64EL: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.5/64/crtbegin.o"
416// CHECK-DEBIAN-MIPS64EL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.5/64"
417// CHECK-DEBIAN-MIPS64EL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.5"
418// CHECK-DEBIAN-MIPS64EL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.5/../../.."
419// CHECK-DEBIAN-MIPS64EL: "-L[[SYSROOT]]/lib"
420// CHECK-DEBIAN-MIPS64EL: "-L[[SYSROOT]]/usr/lib"
Simon Atanasyan2d1b1ad2012-10-21 11:44:57 +0000421// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
422// RUN: -target mips64-linux-gnu -mabi=n32 \
423// RUN: --sysroot=%S/Inputs/debian_multiarch_tree \
424// RUN: | FileCheck --check-prefix=CHECK-DEBIAN-MIPS64-N32 %s
425// CHECK-DEBIAN-MIPS64-N32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
426// CHECK-DEBIAN-MIPS64-N32: "{{.*}}/usr/lib/gcc/mips-linux-gnu/4.5/n32/crtbegin.o"
427// CHECK-DEBIAN-MIPS64-N32: "-L[[SYSROOT]]/usr/lib/gcc/mips-linux-gnu/4.5/n32"
428// CHECK-DEBIAN-MIPS64-N32: "-L[[SYSROOT]]/usr/lib/gcc/mips-linux-gnu/4.5"
429// CHECK-DEBIAN-MIPS64-N32: "-L[[SYSROOT]]/usr/lib/gcc/mips-linux-gnu/4.5/../../.."
430// CHECK-DEBIAN-MIPS64-N32: "-L[[SYSROOT]]/lib"
431// CHECK-DEBIAN-MIPS64-N32: "-L[[SYSROOT]]/usr/lib"
432// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
433// RUN: -target mips64el-linux-gnu -mabi=n32 \
434// RUN: --sysroot=%S/Inputs/debian_multiarch_tree \
435// RUN: | FileCheck --check-prefix=CHECK-DEBIAN-MIPS64EL-N32 %s
436// CHECK-DEBIAN-MIPS64EL-N32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
437// CHECK-DEBIAN-MIPS64EL-N32: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.5/n32/crtbegin.o"
438// CHECK-DEBIAN-MIPS64EL-N32: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.5/n32"
439// CHECK-DEBIAN-MIPS64EL-N32: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.5"
440// CHECK-DEBIAN-MIPS64EL-N32: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.5/../../.."
441// CHECK-DEBIAN-MIPS64EL-N32: "-L[[SYSROOT]]/lib"
442// CHECK-DEBIAN-MIPS64EL-N32: "-L[[SYSROOT]]/usr/lib"
Chandler Carruthaf3c2092012-02-26 09:03:21 +0000443//
Evgeniy Stepanov77866712012-04-25 08:59:22 +0000444// Test linker invocation on Android.
445// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
446// RUN: -target arm-linux-androideabi \
Evgeniy Stepanov763671e2012-09-03 09:05:50 +0000447// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
Evgeniy Stepanov77866712012-04-25 08:59:22 +0000448// RUN: | FileCheck --check-prefix=CHECK-ANDROID %s
Logan Chienc6fd8202012-09-02 09:30:11 +0000449// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
450// RUN: -target arm-linux-android \
Evgeniy Stepanov763671e2012-09-03 09:05:50 +0000451// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
Logan Chienc6fd8202012-09-02 09:30:11 +0000452// RUN: | FileCheck --check-prefix=CHECK-ANDROID %s
Simon Atanasyan53fefd12012-10-03 17:46:38 +0000453// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
454// RUN: -target mipsel-linux-android \
455// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
456// RUN: | FileCheck --check-prefix=CHECK-ANDROID %s
Rafael Espindola7df35012012-11-02 20:41:30 +0000457// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Logan Chien48a353d2012-12-06 23:40:31 +0000458// RUN: -target i386-linux-android \
Rafael Espindola7df35012012-11-02 20:41:30 +0000459// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
460// RUN: | FileCheck --check-prefix=CHECK-ANDROID %s
Evgeniy Stepanov77866712012-04-25 08:59:22 +0000461// CHECK-ANDROID: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
462// CHECK-ANDROID: "{{.*}}/crtbegin_dynamic.o"
463// CHECK-ANDROID: "-L[[SYSROOT]]/usr/lib"
464// CHECK-ANDROID-NOT: "gcc_s"
465// CHECK-ANDROID: "-lgcc"
Logan Chien3d3373c2012-11-19 12:04:11 +0000466// CHECK-ANDROID: "-ldl"
Evgeniy Stepanov77866712012-04-25 08:59:22 +0000467// CHECK-ANDROID-NOT: "gcc_s"
468// CHECK-ANDROID: "{{.*}}/crtend_android.o"
469// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
470// RUN: -target arm-linux-androideabi \
Evgeniy Stepanov763671e2012-09-03 09:05:50 +0000471// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
Evgeniy Stepanov77866712012-04-25 08:59:22 +0000472// RUN: -shared \
473// RUN: | FileCheck --check-prefix=CHECK-ANDROID-SO %s
Logan Chienc6fd8202012-09-02 09:30:11 +0000474// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
475// RUN: -target arm-linux-android \
Evgeniy Stepanov763671e2012-09-03 09:05:50 +0000476// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
Logan Chienc6fd8202012-09-02 09:30:11 +0000477// RUN: -shared \
478// RUN: | FileCheck --check-prefix=CHECK-ANDROID-SO %s
Simon Atanasyan53fefd12012-10-03 17:46:38 +0000479// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
480// RUN: -target mipsel-linux-android \
481// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
482// RUN: -shared \
483// RUN: | FileCheck --check-prefix=CHECK-ANDROID-SO %s
Rafael Espindola7df35012012-11-02 20:41:30 +0000484// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Logan Chien48a353d2012-12-06 23:40:31 +0000485// RUN: -target i386-linux-android \
Rafael Espindola7df35012012-11-02 20:41:30 +0000486// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
487// RUN: -shared \
488// RUN: | FileCheck --check-prefix=CHECK-ANDROID-SO %s
Evgeniy Stepanov77866712012-04-25 08:59:22 +0000489// CHECK-ANDROID-SO: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
Rafael Espindola7df35012012-11-02 20:41:30 +0000490// CHECK-ANDROID-SO: "-Bsymbolic"
Evgeniy Stepanov77866712012-04-25 08:59:22 +0000491// CHECK-ANDROID-SO: "{{.*}}/crtbegin_so.o"
492// CHECK-ANDROID-SO: "-L[[SYSROOT]]/usr/lib"
493// CHECK-ANDROID-SO-NOT: "gcc_s"
494// CHECK-ANDROID-SO: "-lgcc"
Logan Chien3d3373c2012-11-19 12:04:11 +0000495// CHECK-ANDROID-SO: "-ldl"
Evgeniy Stepanov77866712012-04-25 08:59:22 +0000496// CHECK-ANDROID-SO-NOT: "gcc_s"
497// CHECK-ANDROID-SO: "{{.*}}/crtend_so.o"
498// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
499// RUN: -target arm-linux-androideabi \
Evgeniy Stepanov763671e2012-09-03 09:05:50 +0000500// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
Evgeniy Stepanov77866712012-04-25 08:59:22 +0000501// RUN: -static \
502// RUN: | FileCheck --check-prefix=CHECK-ANDROID-STATIC %s
Logan Chienc6fd8202012-09-02 09:30:11 +0000503// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
504// RUN: -target arm-linux-android \
Evgeniy Stepanov763671e2012-09-03 09:05:50 +0000505// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
Logan Chienc6fd8202012-09-02 09:30:11 +0000506// RUN: -static \
507// RUN: | FileCheck --check-prefix=CHECK-ANDROID-STATIC %s
Simon Atanasyan53fefd12012-10-03 17:46:38 +0000508// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
509// RUN: -target mipsel-linux-android \
510// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
511// RUN: -static \
512// RUN: | FileCheck --check-prefix=CHECK-ANDROID-STATIC %s
Rafael Espindola7df35012012-11-02 20:41:30 +0000513// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Logan Chien48a353d2012-12-06 23:40:31 +0000514// RUN: -target i386-linux-android \
Rafael Espindola7df35012012-11-02 20:41:30 +0000515// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
516// RUN: -static \
517// RUN: | FileCheck --check-prefix=CHECK-ANDROID-STATIC %s
Evgeniy Stepanov77866712012-04-25 08:59:22 +0000518// CHECK-ANDROID-STATIC: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
519// CHECK-ANDROID-STATIC: "{{.*}}/crtbegin_static.o"
520// CHECK-ANDROID-STATIC: "-L[[SYSROOT]]/usr/lib"
521// CHECK-ANDROID-STATIC-NOT: "gcc_s"
522// CHECK-ANDROID-STATIC: "-lgcc"
Logan Chien3d3373c2012-11-19 12:04:11 +0000523// CHECK-ANDROID-STATIC-NOT: "-ldl"
Evgeniy Stepanov77866712012-04-25 08:59:22 +0000524// CHECK-ANDROID-STATIC-NOT: "gcc_s"
525// CHECK-ANDROID-STATIC: "{{.*}}/crtend_android.o"
Evgeniy Stepanovc9cde482012-09-10 10:30:12 +0000526// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
527// RUN: -target arm-linux-androideabi \
528// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
529// RUN: -pie \
530// RUN: | FileCheck --check-prefix=CHECK-ANDROID-PIE %s
531// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
532// RUN: -target arm-linux-android \
533// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
534// RUN: -pie \
535// RUN: | FileCheck --check-prefix=CHECK-ANDROID-PIE %s
Simon Atanasyan53fefd12012-10-03 17:46:38 +0000536// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
537// RUN: -target mipsel-linux-android \
538// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
539// RUN: -pie \
540// RUN: | FileCheck --check-prefix=CHECK-ANDROID-PIE %s
Rafael Espindola7df35012012-11-02 20:41:30 +0000541// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
Logan Chien48a353d2012-12-06 23:40:31 +0000542// RUN: -target i386-linux-android \
Rafael Espindola7df35012012-11-02 20:41:30 +0000543// RUN: --sysroot=%S/Inputs/basic_android_tree/sysroot \
544// RUN: -pie \
545// RUN: | FileCheck --check-prefix=CHECK-ANDROID-PIE %s
Evgeniy Stepanovc9cde482012-09-10 10:30:12 +0000546// CHECK-ANDROID-PIE: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
547// CHECK-ANDROID-PIE: "{{.*}}/crtbegin_dynamic.o"
548// CHECK-ANDROID-PIE: "-L[[SYSROOT]]/usr/lib"
549// CHECK-ANDROID-PIE-NOT: "gcc_s"
550// CHECK-ANDROID-PIE: "-lgcc"
551// CHECK-ANDROID-PIE-NOT: "gcc_s"
552// CHECK-ANDROID-PIE: "{{.*}}/crtend_android.o"
Simon Atanasyand4413882012-09-14 11:27:24 +0000553//
554// Check linker invocation on Debian 6 MIPS 32/64-bit.
555// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
556// RUN: -target mipsel-linux-gnu \
557// RUN: --sysroot=%S/Inputs/debian_6_mips_tree \
558// RUN: | FileCheck --check-prefix=CHECK-DEBIAN-ML-MIPSEL %s
559// CHECK-DEBIAN-ML-MIPSEL: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
560// CHECK-DEBIAN-ML-MIPSEL: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.4/../../../../lib/crt1.o"
561// CHECK-DEBIAN-ML-MIPSEL: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.4/../../../../lib/crti.o"
562// CHECK-DEBIAN-ML-MIPSEL: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.4/crtbegin.o"
563// CHECK-DEBIAN-ML-MIPSEL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.4"
564// CHECK-DEBIAN-ML-MIPSEL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.4/../../../../lib"
565// CHECK-DEBIAN-ML-MIPSEL: "-L[[SYSROOT]]/lib/../lib"
566// CHECK-DEBIAN-ML-MIPSEL: "-L[[SYSROOT]]/usr/lib/../lib"
567// CHECK-DEBIAN-ML-MIPSEL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.4/../../.."
568// CHECK-DEBIAN-ML-MIPSEL: "-L[[SYSROOT]]/lib"
569// CHECK-DEBIAN-ML-MIPSEL: "-L[[SYSROOT]]/usr/lib"
570//
571// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
572// RUN: -target mips64el-linux-gnu \
573// RUN: --sysroot=%S/Inputs/debian_6_mips_tree \
574// RUN: | FileCheck --check-prefix=CHECK-DEBIAN-ML-MIPS64EL %s
575// CHECK-DEBIAN-ML-MIPS64EL: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
576// CHECK-DEBIAN-ML-MIPS64EL: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.4/../../../../lib64/crt1.o"
577// CHECK-DEBIAN-ML-MIPS64EL: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.4/../../../../lib64/crti.o"
578// CHECK-DEBIAN-ML-MIPS64EL: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.4/64/crtbegin.o"
579// CHECK-DEBIAN-ML-MIPS64EL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.4/64"
580// CHECK-DEBIAN-ML-MIPS64EL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.4/../../../../lib64"
581// CHECK-DEBIAN-ML-MIPS64EL: "-L[[SYSROOT]]/lib/../lib64"
582// CHECK-DEBIAN-ML-MIPS64EL: "-L[[SYSROOT]]/usr/lib/../lib64"
583// CHECK-DEBIAN-ML-MIPS64EL: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.4/../../.."
584// CHECK-DEBIAN-ML-MIPS64EL: "-L[[SYSROOT]]/lib"
585// CHECK-DEBIAN-ML-MIPS64EL: "-L[[SYSROOT]]/usr/lib"
Hal Finkelf3587912012-09-18 22:25:07 +0000586//
Simon Atanasyan2d1b1ad2012-10-21 11:44:57 +0000587// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
588// RUN: -target mips64el-linux-gnu -mabi=n32 \
589// RUN: --sysroot=%S/Inputs/debian_6_mips_tree \
590// RUN: | FileCheck --check-prefix=CHECK-DEBIAN-ML-MIPS64EL-N32 %s
591// CHECK-DEBIAN-ML-MIPS64EL-N32: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
592// CHECK-DEBIAN-ML-MIPS64EL-N32: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.4/../../../../lib32/crt1.o"
593// CHECK-DEBIAN-ML-MIPS64EL-N32: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.4/../../../../lib32/crti.o"
594// CHECK-DEBIAN-ML-MIPS64EL-N32: "{{.*}}/usr/lib/gcc/mipsel-linux-gnu/4.4/n32/crtbegin.o"
595// CHECK-DEBIAN-ML-MIPS64EL-N32: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.4/n32"
596// CHECK-DEBIAN-ML-MIPS64EL-N32: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.4/../../../../lib32"
597// CHECK-DEBIAN-ML-MIPS64EL-N32: "-L[[SYSROOT]]/lib/../lib32"
598// CHECK-DEBIAN-ML-MIPS64EL-N32: "-L[[SYSROOT]]/usr/lib/../lib32"
599// CHECK-DEBIAN-ML-MIPS64EL-N32: "-L[[SYSROOT]]/usr/lib/gcc/mipsel-linux-gnu/4.4/../../.."
600// CHECK-DEBIAN-ML-MIPS64EL-N32: "-L[[SYSROOT]]/lib"
601// CHECK-DEBIAN-ML-MIPS64EL-N32: "-L[[SYSROOT]]/usr/lib"
602//
Hal Finkelf3587912012-09-18 22:25:07 +0000603// Test linker invocation for Freescale SDK (OpenEmbedded).
604// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
605// RUN: -target powerpc-fsl-linux \
606// RUN: --sysroot=%S/Inputs/freescale_ppc_tree \
607// RUN: | FileCheck --check-prefix=CHECK-FSL-PPC %s
608// CHECK-FSL-PPC: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
609// CHECK-FSL-PPC: "-m" "elf32ppclinux"
610// CHECK-FSL-PPC: "{{.*}}/crt1.o"
611// CHECK-FSL-PPC: "{{.*}}/crtbegin.o"
612// CHECK-FSL-PPC: "-L[[SYSROOT]]/usr/lib"
613// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
614// RUN: -target powerpc64-fsl-linux \
615// RUN: --sysroot=%S/Inputs/freescale_ppc64_tree \
616// RUN: | FileCheck --check-prefix=CHECK-FSL-PPC64 %s
617// CHECK-FSL-PPC64: "{{.*}}ld{{(.exe)?}}" "--sysroot=[[SYSROOT:[^"]+]]"
618// CHECK-FSL-PPC64: "-m" "elf64ppc"
619// CHECK-FSL-PPC64: "{{.*}}/crt1.o"
620// CHECK-FSL-PPC64: "{{.*}}/crtbegin.o"
621// CHECK-FSL-PPC64: "-L[[SYSROOT]]/usr/lib64/powerpc64-fsl-linux/4.6.2/../.."
Benjamin Kramer058666a2012-10-04 19:42:20 +0000622//
623// Check that crtfastmath.o is linked with -ffast-math.
624// RUN: %clang -target x86_64-unknown-linux -### %s \
625// RUN: --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
626// RUN: | FileCheck --check-prefix=CHECK-NOCRTFASTMATH %s
627// RUN: %clang -target x86_64-unknown-linux -### %s -ffast-math \
628// RUN: --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
629// RUN: | FileCheck --check-prefix=CHECK-CRTFASTMATH %s
630// RUN: %clang -target x86_64-unknown-linux -### %s -funsafe-math-optimizations\
631// RUN: --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
632// RUN: | FileCheck --check-prefix=CHECK-CRTFASTMATH %s
633// RUN: %clang -target x86_64-unknown-linux -### %s -ffast-math -fno-fast-math \
634// RUN: --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
635// RUN: | FileCheck --check-prefix=CHECK-NOCRTFASTMATH %s
636// We don't have crtfastmath.o in the i386 tree, use it to check that file
637// detection works.
638// RUN: %clang -target i386-unknown-linux -### %s -ffast-math \
639// RUN: --sysroot=%S/Inputs/basic_linux_tree 2>&1 \
640// RUN: | FileCheck --check-prefix=CHECK-NOCRTFASTMATH %s
641// CHECK-CRTFASTMATH: usr/lib/gcc/x86_64-unknown-linux/4.6.0/crtfastmath.o
642// CHECK-NOCRTFASTMATH-NOT: crtfastmath.o