Clang Project

clang_source_code/test/Driver/mips-img.cpp
1// REQUIRES: mips-registered-target
2
3// Check frontend and linker invocations on the IMG MIPS toolchain.
4//
5// = Big-endian, mips32r6
6// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
7// RUN:     --target=mips-img-linux-gnu -mips32r6 \
8// RUN:     -stdlib=libstdc++ --gcc-toolchain=%S/Inputs/mips_img_tree \
9// RUN:   | FileCheck --check-prefix=CHECK-BE-32R6 %s
10// CHECK-BE-32R6: "-internal-isystem"
11// CHECK-BE-32R6: "[[TC:[^"]+/lib/gcc/mips-img-linux-gnu/4.9.0]]/../../../../mips-img-linux-gnu/include/c++/4.9.0"
12// CHECK-BE-32R6: "-internal-isystem"
13// CHECK-BE-32R6: "[[TC]]/../../../../mips-img-linux-gnu/include/c++/4.9.0/mips-img-linux-gnu"
14// CHECK-BE-32R6: "-internal-isystem"
15// CHECK-BE-32R6: "[[TC]]/../../../../mips-img-linux-gnu/include/c++/4.9.0/backward"
16// CHECK-BE-32R6: "-internal-externc-isystem"
17// CHECK-BE-32R6: "[[TC]]/include"
18// CHECK-BE-32R6: "-internal-externc-isystem"
19// CHECK-BE-32R6: "[[TC]]/../../../../sysroot/usr/include"
20// CHECK-BE-32R6: "{{.*}}ld{{(.exe)?}}"
21// CHECK-BE-32R6: "--sysroot=[[TC]]/../../../../sysroot"
22// CHECK-BE-32R6: "-dynamic-linker" "/lib/ld-linux-mipsn8.so.1"
23// CHECK-BE-32R6: "[[TC]]/../../../../sysroot/usr/lib/../lib{{/|\\\\}}crt1.o"
24// CHECK-BE-32R6: "[[TC]]/../../../../sysroot/usr/lib/../lib{{/|\\\\}}crti.o"
25// CHECK-BE-32R6: "[[TC]]{{/|\\\\}}crtbegin.o"
26// CHECK-BE-32R6: "-L[[TC]]"
27// CHECK-BE-32R6: "-L[[TC]]/../../../../mips-img-linux-gnu/lib/../lib"
28// CHECK-BE-32R6: "-L[[TC]]/../../../../sysroot/usr/lib/../lib"
29// CHECK-BE-32R6: "[[TC]]{{/|\\\\}}crtend.o"
30// CHECK-BE-32R6: "[[TC]]/../../../../sysroot/usr/lib/../lib{{/|\\\\}}crtn.o"
31//
32// = Little-endian, mips32r6
33// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
34// RUN:     --target=mips-img-linux-gnu -mips32r6 -EL \
35// RUN:     -stdlib=libstdc++ --gcc-toolchain=%S/Inputs/mips_img_tree \
36// RUN:   | FileCheck --check-prefix=CHECK-LE-32R6 %s
37// CHECK-LE-32R6: "-internal-isystem"
38// CHECK-LE-32R6: "[[TC:[^"]+/lib/gcc/mips-img-linux-gnu/4.9.0]]/../../../../mips-img-linux-gnu/include/c++/4.9.0"
39// CHECK-LE-32R6: "-internal-isystem"
40// CHECK-LE-32R6: "[[TC]]/../../../../mips-img-linux-gnu/include/c++/4.9.0/mips-img-linux-gnu/el"
41// CHECK-LE-32R6: "-internal-isystem"
42// CHECK-LE-32R6: "[[TC]]/../../../../mips-img-linux-gnu/include/c++/4.9.0/backward"
43// CHECK-LE-32R6: "-internal-externc-isystem"
44// CHECK-LE-32R6: "[[TC]]/include"
45// CHECK-LE-32R6: "-internal-externc-isystem"
46// CHECK-LE-32R6: "[[TC]]/../../../../sysroot/usr/include"
47// CHECK-LE-32R6: "{{.*}}ld{{(.exe)?}}"
48// CHECK-LE-32R6: "--sysroot=[[TC]]/../../../../sysroot/el"
49// CHECK-LE-32R6: "-dynamic-linker" "/lib/ld-linux-mipsn8.so.1"
50// CHECK-LE-32R6: "[[TC]]/../../../../sysroot/el/usr/lib/../lib{{/|\\\\}}crt1.o"
51// CHECK-LE-32R6: "[[TC]]/../../../../sysroot/el/usr/lib/../lib{{/|\\\\}}crti.o"
52// CHECK-LE-32R6: "[[TC]]/el{{/|\\\\}}crtbegin.o"
53// CHECK-LE-32R6: "-L[[TC]]/el"
54// CHECK-LE-32R6: "-L[[TC]]/../../../../mips-img-linux-gnu/lib/../lib/el"
55// CHECK-LE-32R6: "-L[[TC]]/../../../../sysroot/el/usr/lib/../lib"
56// CHECK-LE-32R6: "[[TC]]/el{{/|\\\\}}crtend.o"
57// CHECK-LE-32R6: "[[TC]]/../../../../sysroot/el/usr/lib/../lib{{/|\\\\}}crtn.o"
58//
59// = Big-endian, mips64r6, N32
60// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
61// RUN:     --target=mips64-img-linux-gnu -mips64r6 -mabi=n32 \
62// RUN:     -stdlib=libstdc++ --gcc-toolchain=%S/Inputs/mips_img_tree \
63// RUN:   | FileCheck --check-prefix=CHECK-BE-64R6-N32 %s
64// CHECK-BE-64R6-N32: "-internal-isystem"
65// CHECK-BE-64R6-N32: "[[TC:[^"]+/lib/gcc/mips-img-linux-gnu/4.9.0]]/../../../../mips-img-linux-gnu/include/c++/4.9.0"
66// CHECK-BE-64R6-N32: "-internal-isystem"
67// CHECK-BE-64R6-N32: "[[TC]]/../../../../mips-img-linux-gnu/include/c++/4.9.0/mips-img-linux-gnu/mips64r6"
68// CHECK-BE-64R6-N32: "-internal-isystem"
69// CHECK-BE-64R6-N32: "[[TC]]/../../../../mips-img-linux-gnu/include/c++/4.9.0/backward"
70// CHECK-BE-64R6-N32: "-internal-externc-isystem"
71// CHECK-BE-64R6-N32: "[[TC]]/include"
72// CHECK-BE-64R6-N32: "-internal-externc-isystem"
73// CHECK-BE-64R6-N32: "[[TC]]/../../../../sysroot/usr/include"
74// CHECK-BE-64R6-N32: "{{.*}}ld{{(.exe)?}}"
75// CHECK-BE-64R6-N32: "--sysroot=[[TC]]/../../../../sysroot/mips64r6"
76// CHECK-BE-64R6-N32: "-dynamic-linker" "/lib32/ld-linux-mipsn8.so.1"
77// CHECK-BE-64R6-N32: "[[TC]]/../../../../sysroot/mips64r6/usr/lib{{/|\\\\}}crt1.o"
78// CHECK-BE-64R6-N32: "[[TC]]/../../../../sysroot/mips64r6/usr/lib{{/|\\\\}}crti.o"
79// CHECK-BE-64R6-N32: "[[TC]]/mips64r6{{/|\\\\}}crtbegin.o"
80// CHECK-BE-64R6-N32: "-L[[TC]]/mips64r6"
81// CHECK-BE-64R6-N32: "-L[[TC]]/../../../../mips-img-linux-gnu/lib/mips64r6"
82// CHECK-BE-64R6-N32: "-L[[TC]]/../../../../sysroot/mips64r6/usr/lib"
83// CHECK-BE-64R6-N32: "[[TC]]/mips64r6{{/|\\\\}}crtend.o"
84// CHECK-BE-64R6-N32: "[[TC]]/../../../../sysroot/mips64r6/usr/lib{{/|\\\\}}crtn.o"
85//
86// = Little-endian, mips64r6, N32
87// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
88// RUN:     --target=mips64-img-linux-gnu -mips64r6 -EL -mabi=n32 \
89// RUN:     -stdlib=libstdc++ --gcc-toolchain=%S/Inputs/mips_img_tree \
90// RUN:   | FileCheck --check-prefix=CHECK-LE-64R6-N32 %s
91// CHECK-LE-64R6-N32: "-internal-isystem"
92// CHECK-LE-64R6-N32: "[[TC:[^"]+/lib/gcc/mips-img-linux-gnu/4.9.0]]/../../../../mips-img-linux-gnu/include/c++/4.9.0"
93// CHECK-LE-64R6-N32: "-internal-isystem"
94// CHECK-LE-64R6-N32: "[[TC]]/../../../../mips-img-linux-gnu/include/c++/4.9.0/mips-img-linux-gnu/mips64r6/el"
95// CHECK-LE-64R6-N32: "-internal-isystem"
96// CHECK-LE-64R6-N32: "[[TC]]/../../../../mips-img-linux-gnu/include/c++/4.9.0/backward"
97// CHECK-LE-64R6-N32: "-internal-externc-isystem"
98// CHECK-LE-64R6-N32: "[[TC]]/include"
99// CHECK-LE-64R6-N32: "-internal-externc-isystem"
100// CHECK-LE-64R6-N32: "[[TC]]/../../../../sysroot/usr/include"
101// CHECK-LE-64R6-N32: "{{.*}}ld{{(.exe)?}}"
102// CHECK-LE-64R6-N32: "--sysroot=[[TC]]/../../../../sysroot/mips64r6/el"
103// CHECK-LE-64R6-N32: "-dynamic-linker" "/lib32/ld-linux-mipsn8.so.1"
104// CHECK-LE-64R6-N32: "[[TC]]/../../../../sysroot/mips64r6/el/usr/lib{{/|\\\\}}crt1.o"
105// CHECK-LE-64R6-N32: "[[TC]]/../../../../sysroot/mips64r6/el/usr/lib{{/|\\\\}}crti.o"
106// CHECK-LE-64R6-N32: "[[TC]]/mips64r6/el{{/|\\\\}}crtbegin.o"
107// CHECK-LE-64R6-N32: "-L[[TC]]/mips64r6/el"
108// CHECK-LE-64R6-N32: "-L[[TC]]/../../../../mips-img-linux-gnu/lib/mips64r6/el"
109// CHECK-LE-64R6-N32: "-L[[TC]]/../../../../sysroot/mips64r6/el/usr/lib"
110// CHECK-LE-64R6-N32: "[[TC]]/mips64r6/el{{/|\\\\}}crtend.o"
111// CHECK-LE-64R6-N32: "[[TC]]/../../../../sysroot/mips64r6/el/usr/lib{{/|\\\\}}crtn.o"
112//
113// = Big-endian, mips64r6, N64
114// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
115// RUN:     --target=mips64-img-linux-gnu -mips64r6 -mabi=64 \
116// RUN:     -stdlib=libstdc++ --gcc-toolchain=%S/Inputs/mips_img_tree \
117// RUN:   | FileCheck --check-prefix=CHECK-BE-64R6-N64 %s
118// CHECK-BE-64R6-N64: "-internal-isystem"
119// CHECK-BE-64R6-N64: "[[TC:[^"]+/lib/gcc/mips-img-linux-gnu/4.9.0]]/../../../../mips-img-linux-gnu/include/c++/4.9.0"
120// CHECK-BE-64R6-N64: "-internal-isystem"
121// CHECK-BE-64R6-N64: "[[TC]]/../../../../mips-img-linux-gnu/include/c++/4.9.0/mips-img-linux-gnu/mips64r6/64"
122// CHECK-BE-64R6-N64: "-internal-isystem"
123// CHECK-BE-64R6-N64: "[[TC]]/../../../../mips-img-linux-gnu/include/c++/4.9.0/backward"
124// CHECK-BE-64R6-N64: "-internal-externc-isystem"
125// CHECK-BE-64R6-N64: "[[TC]]/include"
126// CHECK-BE-64R6-N64: "-internal-externc-isystem"
127// CHECK-BE-64R6-N64: "[[TC]]/../../../../sysroot/usr/include"
128// CHECK-BE-64R6-N64: "{{.*}}ld{{(.exe)?}}"
129// CHECK-BE-64R6-N64: "--sysroot=[[TC]]/../../../../sysroot/mips64r6/64"
130// CHECK-BE-64R6-N64: "-dynamic-linker" "/lib64/ld-linux-mipsn8.so.1"
131// CHECK-BE-64R6-N64: "[[TC]]/../../../../sysroot/mips64r6/64/usr/lib{{/|\\\\}}crt1.o"
132// CHECK-BE-64R6-N64: "[[TC]]/../../../../sysroot/mips64r6/64/usr/lib{{/|\\\\}}crti.o"
133// CHECK-BE-64R6-N64: "[[TC]]/mips64r6/64{{/|\\\\}}crtbegin.o"
134// CHECK-BE-64R6-N64: "-L[[TC]]/mips64r6/64"
135// CHECK-BE-64R6-N64: "-L[[TC]]/../../../../mips-img-linux-gnu/lib/mips64r6/64"
136// CHECK-BE-64R6-N64: "-L[[TC]]/../../../../sysroot/mips64r6/64/usr/lib"
137// CHECK-BE-64R6-N64: "[[TC]]/mips64r6/64{{/|\\\\}}crtend.o"
138// CHECK-BE-64R6-N64: "[[TC]]/../../../../sysroot/mips64r6/64/usr/lib{{/|\\\\}}crtn.o"
139//
140// = Little-endian, mips64r6, N64
141// RUN: %clang -no-canonical-prefixes %s -### -o %t.o 2>&1 \
142// RUN:     --target=mips64-img-linux-gnu -mips64r6 -EL -mabi=64 \
143// RUN:     -stdlib=libstdc++ --gcc-toolchain=%S/Inputs/mips_img_tree \
144// RUN:   | FileCheck --check-prefix=CHECK-LE-64R6-N64 %s
145// CHECK-LE-64R6-N64: "-internal-isystem"
146// CHECK-LE-64R6-N64: "[[TC:[^"]+/lib/gcc/mips-img-linux-gnu/4.9.0]]/../../../../mips-img-linux-gnu/include/c++/4.9.0"
147// CHECK-LE-64R6-N64: "-internal-isystem"
148// CHECK-LE-64R6-N64: "[[TC]]/../../../../mips-img-linux-gnu/include/c++/4.9.0/mips-img-linux-gnu/mips64r6/64/el"
149// CHECK-LE-64R6-N64: "-internal-isystem"
150// CHECK-LE-64R6-N64: "[[TC]]/../../../../mips-img-linux-gnu/include/c++/4.9.0/backward"
151// CHECK-LE-64R6-N64: "-internal-externc-isystem"
152// CHECK-LE-64R6-N64: "[[TC]]/include"
153// CHECK-LE-64R6-N64: "-internal-externc-isystem"
154// CHECK-LE-64R6-N64: "[[TC]]/../../../../sysroot/usr/include"
155// CHECK-LE-64R6-N64: "{{.*}}ld{{(.exe)?}}"
156// CHECK-LE-64R6-N64: "--sysroot=[[TC]]/../../../../sysroot/mips64r6/64/el"
157// CHECK-LE-64R6-N64: "-dynamic-linker" "/lib64/ld-linux-mipsn8.so.1"
158// CHECK-LE-64R6-N64: "[[TC]]/../../../../sysroot/mips64r6/64/el/usr/lib{{/|\\\\}}crt1.o"
159// CHECK-LE-64R6-N64: "[[TC]]/../../../../sysroot/mips64r6/64/el/usr/lib{{/|\\\\}}crti.o"
160// CHECK-LE-64R6-N64: "[[TC]]/mips64r6/64/el{{/|\\\\}}crtbegin.o"
161// CHECK-LE-64R6-N64: "-L[[TC]]/mips64r6/64/el"
162// CHECK-LE-64R6-N64: "-L[[TC]]/../../../../mips-img-linux-gnu/lib/mips64r6/64/el"
163// CHECK-LE-64R6-N64: "-L[[TC]]/../../../../sysroot/mips64r6/64/el/usr/lib"
164// CHECK-LE-64R6-N64: "[[TC]]/mips64r6/64/el{{/|\\\\}}crtend.o"
165// CHECK-LE-64R6-N64: "[[TC]]/../../../../sysroot/mips64r6/64/el/usr/lib{{/|\\\\}}crtn.o"
166