Clang Project

clang_source_code/test/Driver/solaris-ld.c
1// General tests that ld invocations on Solaris targets sane. Note that we use
2// sysroot to make these tests independent of the host system.
3
4// Check sparc-sun-solaris2.11, 32bit
5// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
6// RUN:     --target=sparc-sun-solaris2.11 \
7// RUN:     --gcc-toolchain="" \
8// RUN:     --sysroot=%S/Inputs/solaris_sparc_tree \
9// RUN:   | FileCheck --check-prefix=CHECK-LD-SPARC32 %s
10// CHECK-LD-SPARC32-NOT: warning:
11// CHECK-LD-SPARC32: {{.*}}clang{{(.exe)?}}" "-cc1" "-triple" "sparc-sun-solaris2.11"
12// CHECK-LD-SPARC32-SAME: "-isysroot" "[[SYSROOT:[^"]+]]"
13// CHECK-LD-SPARC32: "{{.*}}ld{{(.exe)?}}"
14// CHECK-LD-SPARC32-SAME: "--dynamic-linker" "[[SYSROOT]]/usr/lib{{/|\\\\}}ld.so.1"
15// CHECK-LD-SPARC32-SAME: "[[SYSROOT]]/usr/gcc/4.8/lib/gcc/sparc-sun-solaris2.11/4.8.2{{/|\\\\}}crt1.o"
16// CHECK-LD-SPARC32-SAME: "[[SYSROOT]]/usr/lib{{/|\\\\}}crti.o"
17// CHECK-LD-SPARC32-SAME: "[[SYSROOT]]/usr/gcc/4.8/lib/gcc/sparc-sun-solaris2.11/4.8.2{{/|\\\\}}crtbegin.o"
18// CHECK-LD-SPARC32-SAME: "-L[[SYSROOT]]/usr/gcc/4.8/lib/gcc/sparc-sun-solaris2.11/4.8.2"
19// CHECK-LD-SPARC32-SAME: "-L[[SYSROOT]]/usr/gcc/4.8/lib/gcc/sparc-sun-solaris2.11/4.8.2/../../.."
20// CHECK-LD-SPARC32-SAME: "-L[[SYSROOT]]/usr/lib"
21// CHECK-LD-SPARC32-SAME: "-lgcc_s"
22// CHECK-LD-SPARC32-SAME: "-lc"
23// CHECK-LD-SPARC32-SAME: "-lgcc"
24// CHECK-LD-SPARC32-SAME: "-lm"
25// CHECK-LD-SPARC32-SAME: "[[SYSROOT]]/usr/gcc/4.8/lib/gcc/sparc-sun-solaris2.11/4.8.2{{/|\\\\}}crtend.o"
26// CHECK-LD-SPARC32-SAME: "[[SYSROOT]]/usr/lib{{/|\\\\}}crtn.o"
27
28// Check sparc-sun-solaris2.11, 64bit
29// RUN: %clang -no-canonical-prefixes -m64 %s -### -o %t.o 2>&1 \
30// RUN:     --target=sparc-sun-solaris2.11 \
31// RUN:     --gcc-toolchain="" \
32// RUN:     --sysroot=%S/Inputs/solaris_sparc_tree \
33// RUN:   | FileCheck --check-prefix=CHECK-LD-SPARC64 %s
34// CHECK-LD-SPARC64-NOT: warning:
35// CHECK-LD-SPARC64: {{.*}}clang{{(.exe)?}}" "-cc1" "-triple" "sparcv9-sun-solaris2.11"
36// CHECK-LD-SPARC64-SAME: "-isysroot" "[[SYSROOT:[^"]+]]"
37// CHECK-LD-SPARC64: "{{.*}}ld{{(.exe)?}}"
38// CHECK-LD-SPARC64-SAME: "--dynamic-linker" "[[SYSROOT]]/usr/lib/sparcv9{{/|\\\\}}ld.so.1"
39// CHECK-LD-SPARC64-SAME: "[[SYSROOT]]/usr/gcc/4.8/lib/gcc/sparc-sun-solaris2.11/4.8.2/sparcv9{{/|\\\\}}crt1.o"
40// CHECK-LD-SPARC64-SAME: "[[SYSROOT]]/usr/lib/sparcv9{{/|\\\\}}crti.o"
41// CHECK-LD-SPARC64-SAME: "[[SYSROOT]]/usr/gcc/4.8/lib/gcc/sparc-sun-solaris2.11/4.8.2/sparcv9{{/|\\\\}}crtbegin.o"
42// CHECK-LD-SPARC64-SAME: "-L[[SYSROOT]]/usr/gcc/4.8/lib/gcc/sparc-sun-solaris2.11/4.8.2/sparcv9"
43// CHECK-LD-SPARC64-SAME: "-L[[SYSROOT]]/usr/gcc/4.8/lib/gcc/sparc-sun-solaris2.11/4.8.2/../../../sparcv9"
44// CHECK-LD-SPARC64-SAME: "-L[[SYSROOT]]/usr/lib/sparcv9"
45// CHECK-LD-SPARC64-SAME: "-lgcc_s"
46// CHECK-LD-SPARC64-SAME: "-lc"
47// CHECK-LD-SPARC64-SAME: "-lgcc"
48// CHECK-LD-SPARC64-SAME: "-lm"
49// CHECK-LD-SPARC64-SAME: "[[SYSROOT]]/usr/gcc/4.8/lib/gcc/sparc-sun-solaris2.11/4.8.2/sparcv9{{/|\\\\}}crtend.o"
50// CHECK-LD-SPARC64-SAME: "[[SYSROOT]]/usr/lib/sparcv9{{/|\\\\}}crtn.o"
51
52// Check i386-pc-solaris2.11, 32bit
53// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
54// RUN:     --target=i386-pc-solaris2.11 \
55// RUN:     --gcc-toolchain="" \
56// RUN:     --sysroot=%S/Inputs/solaris_x86_tree \
57// RUN:   | FileCheck --check-prefix=CHECK-LD-X32 %s
58// CHECK-LD-X32-NOT: warning:
59// CHECK-LD-X32: {{.*}}clang{{(.exe)?}}" "-cc1" "-triple" "i386-pc-solaris2.11"
60// CHECK-LD-X32-SAME: "-isysroot" "[[SYSROOT:[^"]+]]"
61// CHECK-LD-X32: "{{.*}}ld{{(.exe)?}}"
62// CHECK-LD-X32-SAME: "--dynamic-linker" "[[SYSROOT]]/usr/lib{{/|\\\\}}ld.so.1"
63// CHECK-LD-X32-SAME: "[[SYSROOT]]/usr/lib{{/|\\\\}}crt1.o"
64// CHECK-LD-X32-SAME: "[[SYSROOT]]/usr/lib{{/|\\\\}}crti.o"
65// CHECK-LD-X32-SAME: "[[SYSROOT]]/usr/gcc/4.9/lib/gcc/i386-pc-solaris2.11/4.9.4{{/|\\\\}}crtbegin.o"
66// CHECK-LD-X32-SAME: "-L[[SYSROOT]]/usr/gcc/4.9/lib/gcc/i386-pc-solaris2.11/4.9.4"
67// CHECK-LD-X32-SAME: "-L[[SYSROOT]]/usr/gcc/4.9/lib/gcc/i386-pc-solaris2.11/4.9.4/../../.."
68// CHECK-LD-X32-SAME: "-L[[SYSROOT]]/usr/lib"
69// CHECK-LD-X32-SAME: "-lgcc_s"
70// CHECK-LD-X32-SAME: "-lc"
71// CHECK-LD-X32-SAME: "-lgcc"
72// CHECK-LD-X32-SAME: "-lm"
73// CHECK-LD-X32-SAME: "[[SYSROOT]]/usr/gcc/4.9/lib/gcc/i386-pc-solaris2.11/4.9.4{{/|\\\\}}crtend.o"
74// CHECK-LD-X32-SAME: "[[SYSROOT]]/usr/lib{{/|\\\\}}crtn.o"
75
76// Check i386-pc-solaris2.11, 64bit
77// RUN: %clang -no-canonical-prefixes -m64 %s -### -o %t.o 2>&1 \
78// RUN:     --target=i386-pc-solaris2.11 \
79// RUN:     --gcc-toolchain="" \
80// RUN:     --sysroot=%S/Inputs/solaris_x86_tree \
81// RUN:   | FileCheck --check-prefix=CHECK-LD-X64 %s
82// CHECK-LD-X64-NOT: warning:
83// CHECK-LD-X64: {{.*}}clang{{(.exe)?}}" "-cc1" "-triple" "x86_64-pc-solaris2.11"
84// CHECK-LD-X64-SAME: "-isysroot" "[[SYSROOT:[^"]+]]"
85// CHECK-LD-X64: "{{.*}}ld{{(.exe)?}}"
86// CHECK-LD-X64-SAME: "--dynamic-linker" "[[SYSROOT]]/usr/lib/amd64{{/|\\\\}}ld.so.1"
87// CHECK-LD-X64-SAME: "[[SYSROOT]]/usr/lib/amd64{{/|\\\\}}crt1.o"
88// CHECK-LD-X64-SAME: "[[SYSROOT]]/usr/lib/amd64{{/|\\\\}}crti.o"
89// CHECK-LD-X64-SAME: "[[SYSROOT]]/usr/gcc/4.9/lib/gcc/i386-pc-solaris2.11/4.9.4/amd64{{/|\\\\}}crtbegin.o"
90// CHECK-LD-X64-SAME: "-L[[SYSROOT]]/usr/gcc/4.9/lib/gcc/i386-pc-solaris2.11/4.9.4/amd64"
91// CHECK-LD-X64-SAME: "-L[[SYSROOT]]/usr/gcc/4.9/lib/gcc/i386-pc-solaris2.11/4.9.4/../../../amd64"
92// CHECK-LD-X64-SAME: "-L[[SYSROOT]]/usr/lib/amd64"
93// CHECK-LD-X64-SAME: "-lgcc_s"
94// CHECK-LD-X64-SAME: "-lc"
95// CHECK-LD-X64-SAME: "-lgcc"
96// CHECK-LD-X64-SAME: "-lm"
97// CHECK-LD-X64-SAME: "[[SYSROOT]]/usr/gcc/4.9/lib/gcc/i386-pc-solaris2.11/4.9.4/amd64{{/|\\\\}}crtend.o"
98// CHECK-LD-X64-SAME: "[[SYSROOT]]/usr/lib/amd64{{/|\\\\}}crtn.o"
99
100// Check the right -l flags are present with -shared
101// RUN: %clang -no-canonical-prefixes %s -### -o %t.o -shared 2>&1 \
102// RUN:     --target=sparc-sun-solaris2.11 \
103// RUN:     --gcc-toolchain="" \
104// RUN:     --sysroot=%S/Inputs/solaris_sparc_tree \
105// RUN:   | FileCheck --check-prefix=CHECK-SPARC32-SHARED %s
106// CHECK-SPARC32-SHARED: "{{.*}}ld{{(.exe)?}}"
107// CHECK-SPARC32-SHARED-SAME: "-lgcc_s"
108// CHECK-SPARC32-SHARED-SAME: "-lc"
109// CHECK-SPARC32-SHARED-NOT: "-lgcc"
110// CHECK-SPARC32-SHARED-NOT: "-lm"
111