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