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