Clang Project

clang_source_code/test/Driver/darwin-ld.c
1// Check that ld gets arch_multiple.
2
3// RUN: %clang -target i386-apple-darwin9 -arch i386 -arch x86_64 %s -### -o foo 2> %t.log
4// RUN: grep '".*ld.*" .*"-arch_multiple" "-final_output" "foo"' %t.log
5
6// Make sure we run dsymutil on source input files.
7// RUN: %clang -target i386-apple-darwin9 -### -g %s -o BAR 2> %t.log
8// RUN: grep '".*dsymutil" "-o" "BAR.dSYM" "BAR"' %t.log
9// RUN: %clang -target i386-apple-darwin9 -### -g -filelist FOO %s -o BAR 2> %t.log
10// RUN: grep '".*dsymutil" "-o" "BAR.dSYM" "BAR"' %t.log
11
12// Check linker changes that came with new linkedit format.
13// RUN: touch %t.o
14// RUN: %clang -target i386-apple-darwin9 -### -arch armv6 -miphoneos-version-min=3.0 %t.o 2> %t.log
15// RUN: %clang -target i386-apple-darwin9 -### -arch armv6 -miphoneos-version-min=3.0 -dynamiclib %t.o 2>> %t.log
16// RUN: %clang -target i386-apple-darwin9 -### -arch armv6 -miphoneos-version-min=3.0 -bundle %t.o 2>> %t.log
17// RUN: FileCheck -check-prefix=LINK_IPHONE_3_0 %s < %t.log
18
19// LINK_IPHONE_3_0: {{ld(.exe)?"}}
20// LINK_IPHONE_3_0: -iphoneos_version_min
21// LINK_IPHONE_3_0: 3.0.0
22// LINK_IPHONE_3_0-NOT: -lcrt1.3.1.o
23// LINK_IPHONE_3_0: -lcrt1.o
24// LINK_IPHONE_3_0: -lSystem
25// LINK_IPHONE_3_0: {{ld(.exe)?"}}
26// LINK_IPHONE_3_0: -dylib
27// LINK_IPHONE_3_0: -ldylib1.o
28// LINK_IPHONE_3_0: -lSystem
29// LINK_IPHONE_3_0: {{ld(.exe)?"}}
30// LINK_IPHONE_3_0: -lbundle1.o
31// LINK_IPHONE_3_0: -lSystem
32
33// RUN: %clang -target i386-apple-darwin9 -### -arch armv7 -miphoneos-version-min=3.1 %t.o 2> %t.log
34// RUN: %clang -target i386-apple-darwin9 -### -arch armv7 -miphoneos-version-min=3.1 -dynamiclib %t.o 2>> %t.log
35// RUN: %clang -target i386-apple-darwin9 -### -arch armv7 -miphoneos-version-min=3.1 -bundle %t.o 2>> %t.log
36// RUN: FileCheck -check-prefix=LINK_IPHONE_3_1 %s < %t.log
37
38// LINK_IPHONE_3_1: {{ld(.exe)?"}}
39// LINK_IPHONE_3_1: -iphoneos_version_min
40// LINK_IPHONE_3_1: 3.1.0
41// LINK_IPHONE_3_1-NOT: -lcrt1.o
42// LINK_IPHONE_3_1: -lcrt1.3.1.o
43// LINK_IPHONE_3_1: -lSystem
44// LINK_IPHONE_3_1: {{ld(.exe)?"}}
45// LINK_IPHONE_3_1: -dylib
46// LINK_IPHONE_3_1-NOT: -ldylib1.o
47// LINK_IPHONE_3_1: -lSystem
48// LINK_IPHONE_3_1: {{ld(.exe)?"}}
49// LINK_IPHONE_3_1-NOT: -lbundle1.o
50// LINK_IPHONE_3_1: -lSystem
51
52// RUN: %clang -target i386-apple-darwin9 -### -arch i386 -mios-simulator-version-min=3.0 %t.o 2> %t.log
53// RUN: %clang -target i386-apple-darwin9 -### -arch i386 -mios-simulator-version-min=3.0 -dynamiclib %t.o 2>> %t.log
54// RUN: %clang -target i386-apple-darwin9 -### -arch i386 -mios-simulator-version-min=3.0 -bundle %t.o 2>> %t.log
55// RUN: FileCheck -check-prefix=LINK_IOSSIM_3_0 %s < %t.log
56
57// LINK_IOSSIM_3_0: {{ld(.exe)?"}}
58// LINK_IOSSIM_3_0: -ios_simulator_version_min
59// LINK_IOSSIM_3_0: 3.0.0
60// LINK_IOSSIM_3_0-NOT: -lcrt1.o
61// LINK_IOSSIM_3_0: -lSystem
62// LINK_IOSSIM_3_0: {{ld(.exe)?"}}
63// LINK_IOSSIM_3_0: -dylib
64// LINK_IOSSIM_3_0-NOT: -ldylib1.o
65// LINK_IOSSIM_3_0: -lSystem
66// LINK_IOSSIM_3_0: {{ld(.exe)?"}}
67// LINK_IOSSIM_3_0-NOT: -lbundle1.o
68// LINK_IOSSIM_3_0: -lSystem
69
70// RUN: %clang -target i386-apple-darwin9 -### -fpie %t.o 2> %t.log
71// RUN: FileCheck -check-prefix=LINK_EXPLICIT_PIE %s < %t.log
72//
73// LINK_EXPLICIT_PIE: {{ld(.exe)?"}}
74// LINK_EXPLICIT_PIE: "-pie"
75
76// RUN: %clang -target i386-apple-darwin9 -### -fno-pie %t.o 2> %t.log
77// RUN: FileCheck -check-prefix=LINK_EXPLICIT_NO_PIE %s < %t.log
78//
79// LINK_EXPLICIT_NO_PIE: {{ld(.exe)?"}}
80// LINK_EXPLICIT_NO_PIE: "-no_pie"
81
82// RUN: %clang -target x86_64-apple-darwin10 -### %t.o \
83// RUN:   -mlinker-version=100 2> %t.log
84// RUN: FileCheck -check-prefix=LINK_NEWER_DEMANGLE %s < %t.log
85//
86// LINK_NEWER_DEMANGLE: {{ld(.exe)?"}}
87// LINK_NEWER_DEMANGLE: "-demangle"
88
89// RUN: %clang -target x86_64-apple-darwin10 -### %t.o \
90// RUN:   -mlinker-version=100 -Wl,--no-demangle 2> %t.log
91// RUN: FileCheck -check-prefix=LINK_NEWER_NODEMANGLE %s < %t.log
92//
93// LINK_NEWER_NODEMANGLE: {{ld(.exe)?"}}
94// LINK_NEWER_NODEMANGLE-NOT: "-demangle"
95// LINK_NEWER_NODEMANGLE: "-lSystem"
96
97// RUN: %clang -target x86_64-apple-darwin10 -### %t.o \
98// RUN:   -mlinker-version=95 2> %t.log
99// RUN: FileCheck -check-prefix=LINK_OLDER_NODEMANGLE %s < %t.log
100//
101// LINK_OLDER_NODEMANGLE: {{ld(.exe)?"}}
102// LINK_OLDER_NODEMANGLE-NOT: "-demangle"
103// LINK_OLDER_NODEMANGLE: "-lSystem"
104
105// RUN: %clang -target x86_64-apple-darwin10 -### %s \
106// RUN:   -mlinker-version=117 -flto 2> %t.log
107// RUN: cat %t.log
108// RUN: FileCheck -check-prefix=LINK_OBJECT_LTO_PATH %s < %t.log
109//
110// LINK_OBJECT_LTO_PATH: {{ld(.exe)?"}}
111// LINK_OBJECT_LTO_PATH: "-object_path_lto"
112
113// RUN: %clang -target x86_64-apple-darwin10 -### %t.o \
114// RUN:   -force_load a -force_load b 2> %t.log
115// RUN: cat %t.log
116// RUN: FileCheck -check-prefix=FORCE_LOAD %s < %t.log
117//
118// FORCE_LOAD: {{ld(.exe)?"}}
119// FORCE_LOAD: "-force_load" "a" "-force_load" "b"
120
121// RUN: %clang -target x86_64-apple-darwin10 -### %t.o \
122// RUN:   -lazy_framework Framework 2> %t.log
123//
124// RUN: FileCheck -check-prefix=LINK_LAZY_FRAMEWORK %s < %t.log
125// LINK_LAZY_FRAMEWORK: {{ld(.exe)?"}}
126// LINK_LAZY_FRAMEWORK: "-lazy_framework" "Framework"
127
128// RUN: %clang -target x86_64-apple-darwin10 -### %t.o \
129// RUN:   -lazy_library Library 2> %t.log
130//
131// RUN: FileCheck -check-prefix=LINK_LAZY_LIBRARY %s < %t.log
132// LINK_LAZY_LIBRARY: {{ld(.exe)?"}}
133// LINK_LAZY_LIBRARY: "-lazy_library" "Library"
134
135// RUN: %clang -target x86_64-apple-darwin10 -### %t.o 2> %t.log
136// RUN: %clang -target x86_64-apple-macosx10.7 -### %t.o 2>> %t.log
137// RUN: FileCheck -check-prefix=LINK_VERSION_MIN %s < %t.log
138// LINK_VERSION_MIN: {{ld(.exe)?"}}
139// LINK_VERSION_MIN: "-macosx_version_min" "10.6.0"
140// LINK_VERSION_MIN: {{ld(.exe)?"}}
141// LINK_VERSION_MIN: "-macosx_version_min" "10.7.0"
142
143// RUN: %clang -target x86_64-apple-darwin12 -### %t.o 2> %t.log
144// RUN: FileCheck -check-prefix=LINK_NO_CRT1 %s < %t.log
145// LINK_NO_CRT1-NOT: crt
146
147// RUN: %clang -target armv7-apple-ios6.0 -miphoneos-version-min=6.0 -### %t.o 2> %t.log
148// RUN: FileCheck -check-prefix=LINK_NO_IOS_CRT1 %s < %t.log
149// LINK_NO_IOS_CRT1-NOT: crt
150
151// RUN: %clang -target arm64-apple-ios5.0 -miphoneos-version-min=5.0 -### %t.o 2> %t.log
152// RUN: FileCheck -check-prefix=LINK_NO_IOS_ARM64_CRT1 %s < %t.log
153// LINK_NO_IOS_ARM64_CRT1-NOT: crt
154
155// RUN: %clang -target x86_64-apple-ios6.0 -miphoneos-version-min=6.0 -fprofile-instr-generate -resource-dir=%S/Inputs/resource_dir -### %t.o 2> %t.log
156// RUN: FileCheck -check-prefix=LINK_IOSSIM_PROFILE %s < %t.log
157// LINK_IOSSIM_PROFILE: {{ld(.exe)?"}}
158// LINK_IOSSIM_PROFILE: libclang_rt.profile_iossim.a
159// LINK_IOSSIM_PROFILE: libclang_rt.ios.a
160
161// RUN: %clang -target arm64-apple-tvos8.3 -mtvos-version-min=8.3 -resource-dir=%S/Inputs/resource_dir -### %t.o 2> %t.log
162// RUN: FileCheck -check-prefix=LINK_TVOS_ARM64 %s < %t.log
163// LINK_TVOS_ARM64: {{ld(.exe)?"}}
164// LINK_TVOS_ARM64: -tvos_version_min
165// LINK_TVOS_ARM64-NOT: crt
166// LINK_TVOS_ARM64-NOT: lgcc_s.1
167// LINK_TVOS_ARM64: libclang_rt.tvos.a
168
169// RUN: %clang -target arm64-apple-tvos8.3 -mtvos-version-min=8.3 -fprofile-instr-generate -resource-dir=%S/Inputs/resource_dir  -### %t.o 2> %t.log
170// RUN: FileCheck -check-prefix=LINK_TVOS_PROFILE %s < %t.log
171// LINK_TVOS_PROFILE: {{ld(.exe)?"}}
172// LINK_TVOS_PROFILE: libclang_rt.profile_tvos.a
173// LINK_TVOS_PROFILE: libclang_rt.tvos.a
174
175// RUN: %clang -target arm64-apple-tvos8.3 -mtvos-version-min=8.3 -resource-dir=%S/Inputs/resource_dir -### %t.o -lcc_kext 2> %t.log
176// RUN: FileCheck -check-prefix=LINK_TVOS_KEXT %s < %t.log
177// LINK_TVOS_KEXT: {{ld(.exe)?"}}
178// LINK_TVOS_KEXT: libclang_rt.cc_kext_tvos.a
179// LINK_TVOS_KEXT: libclang_rt.tvos.a
180
181// RUN: %clang -target armv7k-apple-watchos2.0 -mwatchos-version-min=2.0 -resource-dir=%S/Inputs/resource_dir -### %t.o 2> %t.log
182// RUN: FileCheck -check-prefix=LINK_WATCHOS_ARM %s < %t.log
183// LINK_WATCHOS_ARM: {{ld(.exe)?"}}
184// LINK_WATCHOS_ARM: -watchos_version_min
185// LINK_WATCHOS_ARM-NOT: crt
186// LINK_WATCHOS_ARM-NOT: lgcc_s.1
187// LINK_WATCHOS_ARM: libclang_rt.watchos.a
188
189// RUN: %clang -target armv7k-apple-watchos2.0 -mwatchos-version-min=2.0 -resource-dir=%S/Inputs/resource_dir -fprofile-instr-generate -### %t.o 2> %t.log
190// RUN: FileCheck -check-prefix=LINK_WATCHOS_PROFILE %s < %t.log
191// LINK_WATCHOS_PROFILE: {{ld(.exe)?"}}
192// LINK_WATCHOS_PROFILE: libclang_rt.profile_watchos.a
193// LINK_WATCHOS_PROFILE: libclang_rt.watchos.a
194
195// RUN: %clang -target armv7k-apple-watchos2.0 -mwatchos-version-min=2.0 -resource-dir=%S/Inputs/resource_dir -### %t.o -lcc_kext 2> %t.log
196// RUN: FileCheck -check-prefix=LINK_WATCHOS_KEXT %s < %t.log
197// LINK_WATCHOS_KEXT: {{ld(.exe)?"}}
198// LINK_WATCHOS_KEXT: libclang_rt.cc_kext_watchos.a
199// LINK_WATCHOS_KEXT: libclang_rt.watchos.a
200
201// RUN: %clang -target i386-apple-darwin12 -pg -### %t.o 2> %t.log
202// RUN: FileCheck -check-prefix=LINK_PG %s < %t.log
203// LINK_PG: -lgcrt1.o
204// LINK_PG: -no_new_main
205
206// RUN: %clang -target i386-apple-darwin13 -pg -### %t.o 2> %t.log
207// RUN: FileCheck -check-prefix=LINK_PG_NO_SUPPORT_OSX %s < %t.log
208// LINK_PG_NO_SUPPORT_OSX: error: the clang compiler does not support -pg option on versions of OS X
209
210// RUN: %clang -target x86_64-apple-ios5.0 -pg -### %t.o 2> %t.log
211// RUN: FileCheck -check-prefix=LINK_PG_NO_SUPPORT %s < %t.log
212// LINK_PG_NO_SUPPORT: error: the clang compiler does not support -pg option on Darwin
213
214// Check that clang links with libgcc_s.1 for iOS 4 and earlier, but not arm64.
215// RUN: %clang -target armv7-apple-ios4.0 -miphoneos-version-min=4.0 -### %t.o 2> %t.log
216// RUN: FileCheck -check-prefix=LINK_IOS_LIBGCC_S %s < %t.log
217// LINK_IOS_LIBGCC_S: lgcc_s.1
218
219// RUN: %clang -target arm64-apple-ios4.0 -miphoneos-version-min=4.0 -### %t.o 2> %t.log
220// RUN: FileCheck -check-prefix=LINK_NO_IOS_ARM64_LIBGCC_S %s < %t.log
221// LINK_NO_IOS_ARM64_LIBGCC_S-NOT: lgcc_s.1
222
223// RUN: %clang -target x86_64-apple-darwin12 -rdynamic -### %t.o \
224// RUN:   -mlinker-version=100 2> %t.log
225// RUN: FileCheck -check-prefix=LINK_NO_EXPORT_DYNAMIC %s < %t.log
226// LINK_NO_EXPORT_DYNAMIC: {{ld(.exe)?"}}
227// LINK_NO_EXPORT_DYNAMIC-NOT: "-export_dynamic"
228
229// RUN: %clang -target x86_64-apple-darwin12 -rdynamic -### %t.o \
230// RUN:   -mlinker-version=137 2> %t.log
231// RUN: FileCheck -check-prefix=LINK_EXPORT_DYNAMIC %s < %t.log
232// LINK_EXPORT_DYNAMIC: {{ld(.exe)?"}}
233// LINK_EXPORT_DYNAMIC: "-export_dynamic"
234
235// RUN: %clang -target x86_64h-apple-darwin -### %t.o 2> %t.log
236// RUN: FileCheck -check-prefix=LINK_X86_64H_ARCH %s < %t.log
237//
238// LINK_X86_64H_ARCH: {{ld(.exe)?"}}
239// LINK_X86_64H_ARCH: "x86_64h"
240
241// RUN: %clang -target x86_64-apple-darwin -arch x86_64 -arch x86_64h -### %t.o 2> %t.log
242// RUN: FileCheck -check-prefix=LINK_X86_64H_MULTIARCH %s < %t.log
243//
244// LINK_X86_64H_MULTIARCH: {{ld(.exe)?"}}
245// LINK_X86_64H_MULTIARCH: "x86_64"
246//
247// LINK_X86_64H_MULTIARCH: {{ld(.exe)?"}}
248// LINK_X86_64H_MULTIARCH: "x86_64h"
249
250// Check for the linker options to specify the iOS version when the
251// IPHONEOS_DEPLOYMENT_TARGET variable is used instead of the command-line
252// deployment target options.
253// RUN: env IPHONEOS_DEPLOYMENT_TARGET=7.0 \
254// RUN:   %clang -target arm64-apple-darwin -### %t.o 2> %t.log
255// RUN: FileCheck -check-prefix=LINK_IPHONEOS_VERSION_MIN %s < %t.log
256// RUN: env IPHONEOS_DEPLOYMENT_TARGET=7.0 \
257// RUN:   %clang -target i386-apple-darwin -### %t.o 2> %t.log
258// RUN: FileCheck -check-prefix=LINK_IOS_SIMULATOR_VERSION_MIN %s < %t.log
259// LINK_IPHONEOS_VERSION_MIN: -iphoneos_version_min
260// LINK_IOS_SIMULATOR_VERSION_MIN: -ios_simulator_version_min
261
262// Ditto for tvOS....
263// RUN: env TVOS_DEPLOYMENT_TARGET=7.0 \
264// RUN:   %clang -target armv7-apple-darwin -### %t.o 2> %t.log
265// RUN: FileCheck -check-prefix=LINK_TVOS_VERSION_MIN %s < %t.log
266// RUN: env TVOS_DEPLOYMENT_TARGET=7.0 \
267// RUN:   %clang -target x86_64-apple-darwin -### %t.o 2> %t.log
268// RUN: FileCheck -check-prefix=LINK_TVOS_SIMULATOR_VERSION_MIN %s < %t.log
269// LINK_TVOS_VERSION_MIN: -tvos_version_min
270// LINK_TVOS_SIMULATOR_VERSION_MIN: -tvos_simulator_version_min
271
272// ...and for watchOS.
273// RUN: env WATCHOS_DEPLOYMENT_TARGET=2.0 \
274// RUN:   %clang -target armv7k-apple-darwin -### %t.o 2> %t.log
275// RUN: FileCheck -check-prefix=LINK_WATCHOS_VERSION_MIN %s < %t.log
276// RUN: env WATCHOS_DEPLOYMENT_TARGET=2.0 \
277// RUN:   %clang -target i386-apple-darwin -### %t.o 2> %t.log
278// RUN: FileCheck -check-prefix=LINK_WATCHOS_SIMULATOR_VERSION_MIN %s < %t.log
279// LINK_WATCHOS_VERSION_MIN: -watchos_version_min
280// LINK_WATCHOS_SIMULATOR_VERSION_MIN: -watchos_simulator_version_min
281
282// Check -iframework gets forward to ld as -F
283// RUN: %clang -target x86_64-apple-darwin %s -iframework Bar -framework Foo -### 2>&1 | \
284// RUN:   FileCheck --check-prefix=LINK-IFRAMEWORK %s
285// LINK-IFRAMEWORK: {{ld(.exe)?"}}
286// LINK-IFRAMEWORK: "-FBar"
287
288// Check ld64 accepts up to 5 digits with no extra characters
289// RUN: %clang -target x86_64-apple-darwin12 %s -### -o %t \
290// RUN:   -mlinker-version=133.3 2> %t.log
291// RUN: %clang -target x86_64-apple-darwin12 %s -### -o %t \
292// RUN:   -mlinker-version=133.3.0 2>> %t.log
293// RUN: %clang -target x86_64-apple-darwin12 %s -### -o %t \
294// RUN:   -mlinker-version=133.3.0.1 2>> %t.log
295// RUN: %clang -target x86_64-apple-darwin12 %s -### -o %t \
296// RUN:   -mlinker-version=133.3.0.1.2 2>> %t.log
297// RUN: %clang -target x86_64-apple-darwin12 %s -### -o %t \
298// RUN:   -mlinker-version=133.3.0.1.2.6 2>> %t.log
299// RUN: %clang -target x86_64-apple-darwin12 %s -### -o %t \
300// RUN:   -mlinker-version=133.3.0.1.a 2>> %t.log
301// RUN: %clang -target x86_64-apple-darwin12 %s -### -o %t \
302// RUN:   -mlinker-version=133.3.0.1a 2>> %t.log
303// RUN: FileCheck -check-prefix=LINK_VERSION_DIGITS %s < %t.log
304// LINK_VERSION_DIGITS-NOT: invalid version number in '-mlinker-version=133.3'
305// LINK_VERSION_DIGITS-NOT: invalid version number in '-mlinker-version=133.3.0'
306// LINK_VERSION_DIGITS-NOT: invalid version number in '-mlinker-version=133.3.0.1'
307// LINK_VERSION_DIGITS-NOT: invalid version number in '-mlinker-version=133.3.0.1.2'
308// LINK_VERSION_DIGITS: invalid version number in '-mlinker-version=133.3.0.1.2.6'
309// LINK_VERSION_DIGITS: invalid version number in '-mlinker-version=133.3.0.1.a'
310// LINK_VERSION_DIGITS: invalid version number in '-mlinker-version=133.3.0.1a'
311
312// Check that we're passing -lto-pass-remarks-output for LTO
313// RUN: %clang -target x86_64-apple-darwin12 %t.o -fsave-optimization-record -### -o foo/bar.out 2> %t.log
314// RUN: FileCheck -check-prefix=PASS_REMARKS_OUTPUT %s < %t.log
315// PASS_REMARKS_OUTPUT: "-mllvm" "-lto-pass-remarks-output" "-mllvm" "foo/bar.out.opt.yaml"
316// PASS_REMARKS_OUTPUT-NOT: -lto-pass-remarks-with-hotness
317
318// RUN: %clang -target x86_64-apple-darwin12 %t.o -fsave-optimization-record -### 2> %t.log
319// RUN: FileCheck -check-prefix=PASS_REMARKS_OUTPUT_NO_O %s < %t.log
320// PASS_REMARKS_OUTPUT_NO_O: "-mllvm" "-lto-pass-remarks-output" "-mllvm" "a.out.opt.yaml"
321
322// RUN: %clang -target x86_64-apple-darwin12 %t.o -fsave-optimization-record -fprofile-instr-use=blah -### -o foo/bar.out 2> %t.log
323// RUN: FileCheck -check-prefix=PASS_REMARKS_WITH_HOTNESS %s < %t.log
324// PASS_REMARKS_WITH_HOTNESS: "-mllvm" "-lto-pass-remarks-output" "-mllvm" "foo/bar.out.opt.yaml" "-mllvm" "-lto-pass-remarks-with-hotness"
325
326// RUN: %clang -target x86_64-apple-darwin12 %t.o -fsave-optimization-record -fprofile-instr-use=blah -fdiagnostics-hotness-threshold=100 -### -o foo/bar.out 2> %t.log
327// RUN: FileCheck -check-prefix=PASS_REMARKS_WITH_HOTNESS_THRESHOLD %s < %t.log
328// PASS_REMARKS_WITH_HOTNESS_THRESHOLD: "-mllvm" "-lto-pass-remarks-output" "-mllvm" "foo/bar.out.opt.yaml" "-mllvm" "-lto-pass-remarks-with-hotness" "-mllvm" "-lto-pass-remarks-hotness-threshold=100"
329
330// RUN: %clang -target x86_64-apple-darwin12 %t.o -fsave-optimization-record -foptimization-record-passes=inline -### -o foo/bar.out 2> %t.log
331// RUN: FileCheck -check-prefix=PASS_REMARKS_WITH_PASSES %s < %t.log
332// PASS_REMARKS_WITH_PASSES: "-mllvm" "-lto-pass-remarks-output" "-mllvm" "foo/bar.out.opt.yaml" "-mllvm" "-lto-pass-remarks-filter=inline"
333
334// RUN: %clang -target x86_64-apple-ios6.0 -miphoneos-version-min=6.0 -fprofile-instr-generate -### %t.o 2> %t.log
335// RUN: FileCheck -check-prefix=LINK_PROFILE_FIRST %s < %t.log
336// RUN: %clang -target x86_64-apple-darwin12 -fprofile-instr-generate -### %t.o 2> %t.log
337// RUN: FileCheck -check-prefix=LINK_PROFILE_FIRST %s < %t.log
338// RUN: %clang -target i386-apple-darwin9 -fprofile-instr-generate -### %t.o 2> %t.log
339// RUN: FileCheck -check-prefix=LINK_PROFILE_FIRST %s < %t.log
340// RUN: %clang -target arm64-apple-ios5.0 -miphoneos-version-min=5.0 -fprofile-instr-generate -### %t.o 2> %t.log
341// RUN: FileCheck -check-prefix=LINK_PROFILE_FIRST %s < %t.log
342// LINK_PROFILE_FIRST: {{ld(.exe)?"}} "{{[^"]+}}libclang_rt.profile_{{[a-z]+}}.a"
343
344// RUN: %clang -target x86_64-apple-darwin12 -fprofile-instr-generate -exported_symbols_list /dev/null -### %t.o 2> %t.log
345// RUN: FileCheck -check-prefix=PROFILE_EXPORT %s < %t.log
346// RUN: %clang -target x86_64-apple-darwin12 -fprofile-instr-generate -Wl,-exported_symbols_list,/dev/null -### %t.o 2> %t.log
347// RUN: FileCheck -check-prefix=PROFILE_EXPORT %s < %t.log
348// RUN: %clang -target x86_64-apple-darwin12 -fprofile-instr-generate -Wl,-exported_symbol,foo -### %t.o 2> %t.log
349// RUN: FileCheck -check-prefix=PROFILE_EXPORT %s < %t.log
350// RUN: %clang -target x86_64-apple-darwin12 -fprofile-instr-generate -Xlinker -exported_symbol -Xlinker foo -### %t.o 2> %t.log
351// RUN: FileCheck -check-prefix=PROFILE_EXPORT %s < %t.log
352// RUN: %clang -target x86_64-apple-darwin12 -fprofile-instr-generate -Xlinker -exported_symbols_list -Xlinker /dev/null -### %t.o 2> %t.log
353// RUN: FileCheck -check-prefix=PROFILE_EXPORT %s < %t.log
354// PROFILE_EXPORT: "-exported_symbol" "___llvm_profile_filename" "-exported_symbol" "___llvm_profile_raw_version" "-exported_symbol" "_lprofCurFilename"
355//
356// RUN: %clang -target x86_64-apple-darwin12 -fprofile-instr-generate --coverage -### %t.o 2> %t.log
357// RUN: FileCheck -check-prefix=NO_PROFILE_EXPORT %s < %t.log
358// NO_PROFILE_EXPORT-NOT: "-exported_symbol"
359//
360// RUN: %clang -target x86_64-apple-darwin12 --coverage -exported_symbols_list /dev/null -### %t.o 2> %t.log
361// RUN: FileCheck -check-prefix=GCOV_EXPORT %s < %t.log
362// RUN: %clang -target x86_64-apple-darwin12 -fprofile-arcs -Wl,-exported_symbols_list,/dev/null -### %t.o 2> %t.log
363// RUN: FileCheck -check-prefix=GCOV_EXPORT %s < %t.log
364// RUN: %clang -target x86_64-apple-darwin12 -fprofile-arcs -Wl,-exported_symbol,foo -### %t.o 2> %t.log
365// RUN: FileCheck -check-prefix=GCOV_EXPORT %s < %t.log
366// RUN: %clang -target x86_64-apple-darwin12 -fprofile-arcs -Xlinker -exported_symbol -Xlinker foo -### %t.o 2> %t.log
367// RUN: FileCheck -check-prefix=GCOV_EXPORT %s < %t.log
368// RUN: %clang -target x86_64-apple-darwin12 -fprofile-arcs -Xlinker -exported_symbols_list -Xlinker /dev/null -### %t.o 2> %t.log
369// RUN: FileCheck -check-prefix=GCOV_EXPORT %s < %t.log
370// GCOV_EXPORT: "-exported_symbol" "___gcov_flush"
371//
372// Check that we can pass the outliner down to the linker.
373// RUN: env IPHONEOS_DEPLOYMENT_TARGET=7.0 \
374// RUN:   %clang -target arm64-apple-darwin -moutline -### %t.o 2> %t.log
375// RUN: FileCheck -check-prefix=MOUTLINE %s < %t.log
376// MOUTLINE: {{ld(.exe)?"}}
377// MOUTLINE-SAME: "-mllvm" "-enable-machine-outliner" "-mllvm" "-enable-linkonceodr-outlining"
378// RUN: env IPHONEOS_DEPLOYMENT_TARGET=7.0 \
379// RUN:   %clang -target arm64-apple-darwin -mno-outline -### %t.o 2> %t.log
380// RUN: FileCheck -check-prefix=MNO_OUTLINE %s < %t.log
381// MNO_OUTLINE: {{ld(.exe)?"}}
382// MNO_OUTLINE-SAME: "-mllvm" "-enable-machine-outliner=never"
383