blob: a5f96085a97812aeff31c10fd981cadb0fefe3b0 [file] [log] [blame]
Daniel Dunbarce341cb2009-03-26 16:29:05 +00001// Check that ld gets arch_multiple.
2
Sebastian Pop9ec60df2012-01-20 22:01:23 +00003// RUN: %clang -target i386-apple-darwin9 -arch i386 -arch x86_64 %s -### -o foo 2> %t.log
Daniel Dunbar4fcfde42009-11-08 01:45:36 +00004// RUN: grep '".*ld.*" .*"-arch_multiple" "-final_output" "foo"' %t.log
Daniel Dunbarce341cb2009-03-26 16:29:05 +00005
Daniel Dunbar0b46e1b2009-04-04 00:55:30 +00006// Make sure we run dsymutil on source input files.
Sebastian Pop9ec60df2012-01-20 22:01:23 +00007// RUN: %clang -target i386-apple-darwin9 -### -g %s -o BAR 2> %t.log
Daniel Dunbar03e92302011-05-09 17:23:16 +00008// RUN: grep '".*dsymutil" "-o" "BAR.dSYM" "BAR"' %t.log
Sebastian Pop9ec60df2012-01-20 22:01:23 +00009// RUN: %clang -target i386-apple-darwin9 -### -g -filelist FOO %s -o BAR 2> %t.log
Daniel Dunbar03e92302011-05-09 17:23:16 +000010// RUN: grep '".*dsymutil" "-o" "BAR.dSYM" "BAR"' %t.log
Daniel Dunbar0b46e1b2009-04-04 00:55:30 +000011
Daniel Dunbarcacb0f02010-01-27 00:56:56 +000012// Check linker changes that came with new linkedit format.
13// RUN: touch %t.o
Sebastian Pop9ec60df2012-01-20 22:01:23 +000014// 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
Daniel Dunbarcacb0f02010-01-27 00:56:56 +000017// RUN: FileCheck -check-prefix=LINK_IPHONE_3_0 %s < %t.log
Daniel Dunbarce341cb2009-03-26 16:29:05 +000018
Francois Pichet880cf252010-09-11 20:43:12 +000019// LINK_IPHONE_3_0: {{ld(.exe)?"}}
Stephen Hines176edba2014-12-01 14:53:08 -080020// LINK_IPHONE_3_0: -iphoneos_version_min
21// LINK_IPHONE_3_0: 3.0.0
Daniel Dunbarcacb0f02010-01-27 00:56:56 +000022// LINK_IPHONE_3_0-NOT: -lcrt1.3.1.o
23// LINK_IPHONE_3_0: -lcrt1.o
24// LINK_IPHONE_3_0: -lSystem
Francois Pichet880cf252010-09-11 20:43:12 +000025// LINK_IPHONE_3_0: {{ld(.exe)?"}}
Daniel Dunbarcacb0f02010-01-27 00:56:56 +000026// LINK_IPHONE_3_0: -dylib
27// LINK_IPHONE_3_0: -ldylib1.o
28// LINK_IPHONE_3_0: -lSystem
Francois Pichet880cf252010-09-11 20:43:12 +000029// LINK_IPHONE_3_0: {{ld(.exe)?"}}
Daniel Dunbarcacb0f02010-01-27 00:56:56 +000030// LINK_IPHONE_3_0: -lbundle1.o
31// LINK_IPHONE_3_0: -lSystem
Daniel Dunbarce341cb2009-03-26 16:29:05 +000032
Sebastian Pop9ec60df2012-01-20 22:01:23 +000033// 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
Daniel Dunbarcacb0f02010-01-27 00:56:56 +000036// RUN: FileCheck -check-prefix=LINK_IPHONE_3_1 %s < %t.log
37
Francois Pichet880cf252010-09-11 20:43:12 +000038// LINK_IPHONE_3_1: {{ld(.exe)?"}}
Stephen Hines176edba2014-12-01 14:53:08 -080039// LINK_IPHONE_3_1: -iphoneos_version_min
40// LINK_IPHONE_3_1: 3.1.0
Daniel Dunbarcacb0f02010-01-27 00:56:56 +000041// LINK_IPHONE_3_1-NOT: -lcrt1.o
42// LINK_IPHONE_3_1: -lcrt1.3.1.o
43// LINK_IPHONE_3_1: -lSystem
Francois Pichet880cf252010-09-11 20:43:12 +000044// LINK_IPHONE_3_1: {{ld(.exe)?"}}
Daniel Dunbarcacb0f02010-01-27 00:56:56 +000045// LINK_IPHONE_3_1: -dylib
46// LINK_IPHONE_3_1-NOT: -ldylib1.o
47// LINK_IPHONE_3_1: -lSystem
Francois Pichet880cf252010-09-11 20:43:12 +000048// LINK_IPHONE_3_1: {{ld(.exe)?"}}
Daniel Dunbarcacb0f02010-01-27 00:56:56 +000049// LINK_IPHONE_3_1-NOT: -lbundle1.o
50// LINK_IPHONE_3_1: -lSystem
Daniel Dunbar47e879d2010-07-13 23:31:40 +000051
Stephen Hines651f13c2014-04-23 16:59:28 -070052// 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)?"}}
Stephen Hines176edba2014-12-01 14:53:08 -080058// LINK_IOSSIM_3_0: -ios_simulator_version_min
59// LINK_IOSSIM_3_0: 3.0.0
Stephen Hines651f13c2014-04-23 16:59:28 -070060// 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
Sebastian Pop9ec60df2012-01-20 22:01:23 +000070// RUN: %clang -target i386-apple-darwin9 -### -fpie %t.o 2> %t.log
Daniel Dunbar47e879d2010-07-13 23:31:40 +000071// RUN: FileCheck -check-prefix=LINK_EXPLICIT_PIE %s < %t.log
72//
Francois Pichet880cf252010-09-11 20:43:12 +000073// LINK_EXPLICIT_PIE: {{ld(.exe)?"}}
Daniel Dunbar47e879d2010-07-13 23:31:40 +000074// LINK_EXPLICIT_PIE: "-pie"
75
Sebastian Pop9ec60df2012-01-20 22:01:23 +000076// RUN: %clang -target i386-apple-darwin9 -### -fno-pie %t.o 2> %t.log
Daniel Dunbar47e879d2010-07-13 23:31:40 +000077// RUN: FileCheck -check-prefix=LINK_EXPLICIT_NO_PIE %s < %t.log
78//
Francois Pichet880cf252010-09-11 20:43:12 +000079// LINK_EXPLICIT_NO_PIE: {{ld(.exe)?"}}
Daniel Dunbar47e879d2010-07-13 23:31:40 +000080// LINK_EXPLICIT_NO_PIE: "-no_pie"
Daniel Dunbarb18dc5b2010-08-11 23:07:50 +000081
Sebastian Pop9ec60df2012-01-20 22:01:23 +000082// RUN: %clang -target x86_64-apple-darwin10 -### %t.o \
Daniel Dunbarb18dc5b2010-08-11 23:07:50 +000083// RUN: -mlinker-version=100 2> %t.log
84// RUN: FileCheck -check-prefix=LINK_NEWER_DEMANGLE %s < %t.log
85//
Francois Pichet880cf252010-09-11 20:43:12 +000086// LINK_NEWER_DEMANGLE: {{ld(.exe)?"}}
Daniel Dunbarb18dc5b2010-08-11 23:07:50 +000087// LINK_NEWER_DEMANGLE: "-demangle"
88
Sebastian Pop9ec60df2012-01-20 22:01:23 +000089// RUN: %clang -target x86_64-apple-darwin10 -### %t.o \
Daniel Dunbarb18dc5b2010-08-11 23:07:50 +000090// RUN: -mlinker-version=100 -Wl,--no-demangle 2> %t.log
91// RUN: FileCheck -check-prefix=LINK_NEWER_NODEMANGLE %s < %t.log
92//
Francois Pichet880cf252010-09-11 20:43:12 +000093// LINK_NEWER_NODEMANGLE: {{ld(.exe)?"}}
Daniel Dunbarb18dc5b2010-08-11 23:07:50 +000094// LINK_NEWER_NODEMANGLE-NOT: "-demangle"
Daniel Dunbar673745f2010-08-23 20:58:55 +000095// LINK_NEWER_NODEMANGLE: "-lSystem"
Daniel Dunbarb18dc5b2010-08-11 23:07:50 +000096
Sebastian Pop9ec60df2012-01-20 22:01:23 +000097// RUN: %clang -target x86_64-apple-darwin10 -### %t.o \
Daniel Dunbarb18dc5b2010-08-11 23:07:50 +000098// RUN: -mlinker-version=95 2> %t.log
99// RUN: FileCheck -check-prefix=LINK_OLDER_NODEMANGLE %s < %t.log
100//
Francois Pichet880cf252010-09-11 20:43:12 +0000101// LINK_OLDER_NODEMANGLE: {{ld(.exe)?"}}
Daniel Dunbarb18dc5b2010-08-11 23:07:50 +0000102// LINK_OLDER_NODEMANGLE-NOT: "-demangle"
Daniel Dunbar673745f2010-08-23 20:58:55 +0000103// LINK_OLDER_NODEMANGLE: "-lSystem"
Daniel Dunbar5bfa6562011-06-21 20:55:11 +0000104
Bill Wendlingad90d102012-10-02 18:07:59 +0000105// RUN: %clang -target x86_64-apple-darwin10 -### %s \
Daniel Dunbara68e1c32011-06-21 21:18:32 +0000106// RUN: -mlinker-version=117 -flto 2> %t.log
Daniel Dunbar5bfa6562011-06-21 20:55:11 +0000107// 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"
Daniel Dunbar99ca47b2011-06-28 20:16:02 +0000112
Sebastian Pop9ec60df2012-01-20 22:01:23 +0000113// RUN: %clang -target x86_64-apple-darwin10 -### %t.o \
Daniel Dunbar99ca47b2011-06-28 20:16:02 +0000114// 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"
Chad Rosieredb94592012-01-05 01:56:11 +0000120
Sebastian Pop9ec60df2012-01-20 22:01:23 +0000121// RUN: %clang -target x86_64-apple-darwin10 -### %t.o \
Chad Rosieredb94592012-01-05 01:56:11 +0000122// 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
Sebastian Pop9ec60df2012-01-20 22:01:23 +0000128// RUN: %clang -target x86_64-apple-darwin10 -### %t.o \
Chad Rosieredb94592012-01-05 01:56:11 +0000129// 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"
Bob Wilson10853772012-01-31 21:30:03 +0000134
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"
Ted Kremenekebcb57a2012-03-06 20:05:56 +0000142
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
Bob Wilson1fc6e4f2012-07-03 20:42:10 +0000146
Daniel Dunbar7a0c0642012-10-15 22:23:53 +0000147// 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
Stephen Hines651f13c2014-04-23 16:59:28 -0700151// 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
Bob Wilson1fc6e4f2012-07-03 20:42:10 +0000155// RUN: %clang -target i386-apple-darwin12 -pg -### %t.o 2> %t.log
156// RUN: FileCheck -check-prefix=LINK_PG %s < %t.log
157// LINK_PG: -lgcrt1.o
158// LINK_PG: -no_new_main
Bob Wilsonbd77c592013-08-02 22:25:34 +0000159
Stephen Hines651f13c2014-04-23 16:59:28 -0700160// Check that clang links with libgcc_s.1 for iOS 4 and earlier, but not arm64.
161// RUN: %clang -target armv7-apple-ios4.0 -miphoneos-version-min=4.0 -### %t.o 2> %t.log
162// RUN: FileCheck -check-prefix=LINK_IOS_LIBGCC_S %s < %t.log
163// LINK_IOS_LIBGCC_S: lgcc_s.1
164
165// RUN: %clang -target arm64-apple-ios4.0 -miphoneos-version-min=4.0 -### %t.o 2> %t.log
166// RUN: FileCheck -check-prefix=LINK_NO_IOS_ARM64_LIBGCC_S %s < %t.log
167// LINK_NO_IOS_ARM64_LIBGCC_S-NOT: lgcc_s.1
168
Bob Wilsonbd77c592013-08-02 22:25:34 +0000169// RUN: %clang -target x86_64-apple-darwin12 -rdynamic -### %t.o \
170// RUN: -mlinker-version=100 2> %t.log
171// RUN: FileCheck -check-prefix=LINK_NO_EXPORT_DYNAMIC %s < %t.log
172// LINK_NO_EXPORT_DYNAMIC: {{ld(.exe)?"}}
173// LINK_NO_EXPORT_DYNAMIC-NOT: "-export_dynamic"
174
175// RUN: %clang -target x86_64-apple-darwin12 -rdynamic -### %t.o \
176// RUN: -mlinker-version=137 2> %t.log
177// RUN: FileCheck -check-prefix=LINK_EXPORT_DYNAMIC %s < %t.log
178// LINK_EXPORT_DYNAMIC: {{ld(.exe)?"}}
179// LINK_EXPORT_DYNAMIC: "-export_dynamic"
180
Stephen Hines651f13c2014-04-23 16:59:28 -0700181// RUN: %clang -target x86_64h-apple-darwin -### %t.o 2> %t.log
182// RUN: FileCheck -check-prefix=LINK_X86_64H_ARCH %s < %t.log
183//
184// LINK_X86_64H_ARCH: {{ld(.exe)?"}}
185// LINK_X86_64H_ARCH: "x86_64h"
Bob Wilsonbd77c592013-08-02 22:25:34 +0000186
Stephen Hines651f13c2014-04-23 16:59:28 -0700187// RUN: %clang -target x86_64-apple-darwin -arch x86_64 -arch x86_64h -### %t.o 2> %t.log
188// RUN: FileCheck -check-prefix=LINK_X86_64H_MULTIARCH %s < %t.log
189//
190// LINK_X86_64H_MULTIARCH: {{ld(.exe)?"}}
191// LINK_X86_64H_MULTIARCH: "x86_64"
192//
193// LINK_X86_64H_MULTIARCH: {{ld(.exe)?"}}
194// LINK_X86_64H_MULTIARCH: "x86_64h"
195
Stephen Hines176edba2014-12-01 14:53:08 -0800196// Check for the linker options to specify the iOS version when the
197// IPHONEOS_DEPLOYMENT_TARGET variable is used instead of the command-line
198// deployment target options.
199// RUN: env IPHONEOS_DEPLOYMENT_TARGET=7.0 \
200// RUN: %clang -target arm64-apple-darwin -### %t.o 2> %t.log
201// RUN: FileCheck -check-prefix=LINK_IPHONEOS_VERSION_MIN %s < %t.log
Stephen Hines651f13c2014-04-23 16:59:28 -0700202// RUN: env IPHONEOS_DEPLOYMENT_TARGET=7.0 \
203// RUN: %clang -target i386-apple-darwin -### %t.o 2> %t.log
Stephen Hines176edba2014-12-01 14:53:08 -0800204// RUN: FileCheck -check-prefix=LINK_IOS_SIMULATOR_VERSION_MIN %s < %t.log
Stephen Hines651f13c2014-04-23 16:59:28 -0700205// LINK_IPHONEOS_VERSION_MIN: -iphoneos_version_min
Stephen Hines176edba2014-12-01 14:53:08 -0800206// LINK_IOS_SIMULATOR_VERSION_MIN: -ios_simulator_version_min
Stephen Hines0e2c34f2015-03-23 12:09:02 -0700207
208// Check -iframework gets forward to ld as -F
209// RUN: %clang -target x86_64-apple-darwin %s -iframework Bar -framework Foo -### 2>&1 | \
210// RUN: FileCheck --check-prefix=LINK-IFRAMEWORK %s
211// LINK-IFRAMEWORK: {{ld(.exe)?"}}
212// LINK-IFRAMEWORK: "-FBar"