1*67e74705SXin Li // Test the driver's control over the PIC behavior. These consist of tests of 2*67e74705SXin Li // the relocation model flags and the pic level flags passed to CC1. 3*67e74705SXin Li // 4*67e74705SXin Li // CHECK-NO-PIC: "-mrelocation-model" "static" 5*67e74705SXin Li // CHECK-NO-PIC-NOT: "-pic-level" 6*67e74705SXin Li // CHECK-NO-PIC-NOT: "-pic-is-pie" 7*67e74705SXin Li // 8*67e74705SXin Li // CHECK-PIC1: "-mrelocation-model" "pic" 9*67e74705SXin Li // CHECK-PIC1: "-pic-level" "1" 10*67e74705SXin Li // CHECK-PIC1-NOT: "-pic-is-pie" 11*67e74705SXin Li // 12*67e74705SXin Li // CHECK-PIC2: "-mrelocation-model" "pic" 13*67e74705SXin Li // CHECK-PIC2: "-pic-level" "2" 14*67e74705SXin Li // CHECK-PIC2-NOT: "-pic-is-pie" 15*67e74705SXin Li // 16*67e74705SXin Li // CHECK-STATIC: "-static" 17*67e74705SXin Li // CHECK-NO-STATIC-NOT: "-static" 18*67e74705SXin Li // 19*67e74705SXin Li // CHECK-PIE1: "-mrelocation-model" "pic" 20*67e74705SXin Li // CHECK-PIE1: "-pic-level" "1" 21*67e74705SXin Li // CHECK-PIE1: "-pic-is-pie" 22*67e74705SXin Li // 23*67e74705SXin Li // CHECK-PIE2: "-mrelocation-model" "pic" 24*67e74705SXin Li // CHECK-PIE2: "-pic-level" "2" 25*67e74705SXin Li // CHECK-PIE2: "-pic-is-pie" 26*67e74705SXin Li // 27*67e74705SXin Li // CHECK-PIE-LD: "{{.*}}ld{{(.exe)?}}" 28*67e74705SXin Li // CHECK-PIE-LD: "-pie" 29*67e74705SXin Li // CHECK-PIE-LD: "Scrt1.o" "crti.o" "crtbeginS.o" 30*67e74705SXin Li // CHECK-PIE-LD: "crtendS.o" "crtn.o" 31*67e74705SXin Li // 32*67e74705SXin Li // CHECK-NOPIE-LD: "-nopie" 33*67e74705SXin Li // 34*67e74705SXin Li // CHECK-DYNAMIC-NO-PIC-32: "-mrelocation-model" "dynamic-no-pic" 35*67e74705SXin Li // CHECK-DYNAMIC-NO-PIC-32-NOT: "-pic-level" 36*67e74705SXin Li // CHECK-DYNAMIC-NO-PIC-32-NOT: "-pic-is-pie" 37*67e74705SXin Li // 38*67e74705SXin Li // CHECK-DYNAMIC-NO-PIC-64: "-mrelocation-model" "dynamic-no-pic" 39*67e74705SXin Li // CHECK-DYNAMIC-NO-PIC-64: "-pic-level" "2" 40*67e74705SXin Li // CHECK-DYNAMIC-NO-PIC-64-NOT: "-pic-is-pie" 41*67e74705SXin Li // 42*67e74705SXin Li // CHECK-NON-DARWIN-DYNAMIC-NO-PIC: error: unsupported option '-mdynamic-no-pic' for target 'i386-unknown-unknown' 43*67e74705SXin Li // 44*67e74705SXin Li // CHECK-NO-PIE-NOT: "-pie" 45*67e74705SXin Li // 46*67e74705SXin Li // CHECK-NO-UNUSED-ARG-NOT: argument unused during compilation 47*67e74705SXin Li // 48*67e74705SXin Li // RUN: %clang -c %s -target i386-unknown-unknown -### 2>&1 \ 49*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-NO-PIC 50*67e74705SXin Li // RUN: %clang -c %s -target i386-unknown-unknown -fpic -### 2>&1 \ 51*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-PIC1 52*67e74705SXin Li // RUN: %clang -c %s -target i386-unknown-unknown -fPIC -### 2>&1 \ 53*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-PIC2 54*67e74705SXin Li // RUN: %clang -c %s -target i386-unknown-unknown -fpie -### 2>&1 \ 55*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-PIE1 56*67e74705SXin Li // RUN: %clang -c %s -target i386-unknown-unknown -fPIE -### 2>&1 \ 57*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-PIE2 58*67e74705SXin Li // 59*67e74705SXin Li // Check that PIC and PIE flags obey last-match-wins. If the last flag is 60*67e74705SXin Li // a no-* variant, regardless of which variant or which flags precede it, we 61*67e74705SXin Li // get no PIC. 62*67e74705SXin Li // RUN: %clang -c %s -target i386-unknown-unknown -fpic -fno-pic -### 2>&1 \ 63*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-NO-PIC 64*67e74705SXin Li // RUN: %clang -c %s -target i386-unknown-unknown -fPIC -fno-pic -### 2>&1 \ 65*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-NO-PIC 66*67e74705SXin Li // RUN: %clang -c %s -target i386-unknown-unknown -fpie -fno-pic -### 2>&1 \ 67*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-NO-PIC 68*67e74705SXin Li // RUN: %clang -c %s -target i386-unknown-unknown -fPIE -fno-pic -### 2>&1 \ 69*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-NO-PIC 70*67e74705SXin Li // RUN: %clang -c %s -target i386-unknown-unknown -fpic -fno-PIC -### 2>&1 \ 71*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-NO-PIC 72*67e74705SXin Li // RUN: %clang -c %s -target i386-unknown-unknown -fPIC -fno-PIC -### 2>&1 \ 73*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-NO-PIC 74*67e74705SXin Li // RUN: %clang -c %s -target i386-unknown-unknown -fpie -fno-PIC -### 2>&1 \ 75*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-NO-PIC 76*67e74705SXin Li // RUN: %clang -c %s -target i386-unknown-unknown -fPIE -fno-PIC -### 2>&1 \ 77*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-NO-PIC 78*67e74705SXin Li // RUN: %clang -c %s -target i386-unknown-unknown -fpic -fno-pie -### 2>&1 \ 79*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-NO-PIC 80*67e74705SXin Li // RUN: %clang -c %s -target i386-unknown-unknown -fPIC -fno-pie -### 2>&1 \ 81*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-NO-PIC 82*67e74705SXin Li // RUN: %clang -c %s -target i386-unknown-unknown -fpie -fno-pie -### 2>&1 \ 83*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-NO-PIC 84*67e74705SXin Li // RUN: %clang -c %s -target i386-unknown-unknown -fPIE -fno-pie -### 2>&1 \ 85*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-NO-PIC 86*67e74705SXin Li // RUN: %clang -c %s -target i386-unknown-unknown -fpic -fno-PIE -### 2>&1 \ 87*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-NO-PIC 88*67e74705SXin Li // RUN: %clang -c %s -target i386-unknown-unknown -fPIC -fno-PIE -### 2>&1 \ 89*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-NO-PIC 90*67e74705SXin Li // RUN: %clang -c %s -target i386-unknown-unknown -fpie -fno-PIE -### 2>&1 \ 91*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-NO-PIC 92*67e74705SXin Li // RUN: %clang -c %s -target i386-unknown-unknown -fPIE -fno-PIE -### 2>&1 \ 93*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-NO-PIC 94*67e74705SXin Li // 95*67e74705SXin Li // Last-match-wins where both pic and pie are specified. 96*67e74705SXin Li // RUN: %clang -c %s -target i386-unknown-unknown -fpie -fpic -### 2>&1 \ 97*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-PIC1 98*67e74705SXin Li // RUN: %clang -c %s -target i386-unknown-unknown -fPIE -fpic -### 2>&1 \ 99*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-PIC1 100*67e74705SXin Li // RUN: %clang -c %s -target i386-unknown-unknown -fpie -fPIC -### 2>&1 \ 101*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-PIC2 102*67e74705SXin Li // RUN: %clang -c %s -target i386-unknown-unknown -fPIE -fPIC -### 2>&1 \ 103*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-PIC2 104*67e74705SXin Li // RUN: %clang -c %s -target i386-unknown-unknown -fpic -fpie -### 2>&1 \ 105*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-PIE1 106*67e74705SXin Li // RUN: %clang -c %s -target i386-unknown-unknown -fPIC -fpie -### 2>&1 \ 107*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-PIE1 108*67e74705SXin Li // RUN: %clang -c %s -target i386-unknown-unknown -fpic -fPIE -### 2>&1 \ 109*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-PIE2 110*67e74705SXin Li // RUN: %clang -c %s -target i386-unknown-unknown -fPIC -fPIE -### 2>&1 \ 111*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-PIE2 112*67e74705SXin Li // 113*67e74705SXin Li // Last-match-wins when selecting level 1 vs. level 2. 114*67e74705SXin Li // RUN: %clang -c %s -target i386-unknown-unknown -fpic -fPIC -### 2>&1 \ 115*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-PIC2 116*67e74705SXin Li // RUN: %clang -c %s -target i386-unknown-unknown -fPIC -fpic -### 2>&1 \ 117*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-PIC1 118*67e74705SXin Li // RUN: %clang -c %s -target i386-unknown-unknown -fpic -fPIE -fpie -### 2>&1 \ 119*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-PIE1 120*67e74705SXin Li // RUN: %clang -c %s -target i386-unknown-unknown -fpie -fPIC -fPIE -### 2>&1 \ 121*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-PIE2 122*67e74705SXin Li // 123*67e74705SXin Li // Make sure -pie is passed to along to ld and that the right *crt* files 124*67e74705SXin Li // are linked in. 125*67e74705SXin Li // RUN: %clang %s -target i386-unknown-freebsd -fPIE -pie -### \ 126*67e74705SXin Li // RUN: --gcc-toolchain="" \ 127*67e74705SXin Li // RUN: --sysroot=%S/Inputs/basic_freebsd_tree 2>&1 \ 128*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-PIE-LD 129*67e74705SXin Li // RUN: %clang %s -target i386-linux-gnu -fPIE -pie -### \ 130*67e74705SXin Li // RUN: --gcc-toolchain="" \ 131*67e74705SXin Li // RUN: --sysroot=%S/Inputs/basic_linux_tree 2>&1 \ 132*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-PIE-LD 133*67e74705SXin Li // RUN: %clang %s -target i386-linux-gnu -fPIC -pie -### \ 134*67e74705SXin Li // RUN: --gcc-toolchain="" \ 135*67e74705SXin Li // RUN: --sysroot=%S/Inputs/basic_linux_tree 2>&1 \ 136*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-PIE-LD 137*67e74705SXin Li // 138*67e74705SXin Li // Disregard any of the PIC-specific flags if we have a trump-card flag. 139*67e74705SXin Li // RUN: %clang -c %s -target i386-unknown-unknown -mkernel -fPIC -### 2>&1 \ 140*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-NO-PIC 141*67e74705SXin Li 142*67e74705SXin Li // The -static argument *doesn't* override PIC: -static only affects 143*67e74705SXin Li // linking, and -fPIC only affects code generation. 144*67e74705SXin Li // RUN: %clang -c %s -target i386-unknown-unknown -static -fPIC -### 2>&1 \ 145*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-PIC2 146*67e74705SXin Li // RUN: %clang %s -target i386-linux-gnu -static -fPIC -### \ 147*67e74705SXin Li // RUN: --gcc-toolchain="" \ 148*67e74705SXin Li // RUN: --sysroot=%S/Inputs/basic_linux_tree 2>&1 \ 149*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-STATIC 150*67e74705SXin Li // 151*67e74705SXin Li // On Linux, disregard -pie if we have -shared. 152*67e74705SXin Li // RUN: %clang %s -target i386-unknown-linux -shared -pie -### 2>&1 \ 153*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-NO-PIE 154*67e74705SXin Li // 155*67e74705SXin Li // Darwin is a beautiful and unique snowflake when it comes to these flags. 156*67e74705SXin Li // When targeting a 32-bit darwin system, only level 2 is supported. On 64-bit 157*67e74705SXin Li // targets, there is simply nothing you can do, there is no PIE, there is only 158*67e74705SXin Li // PIC when it comes to compilation. 159*67e74705SXin Li // RUN: %clang -c %s -target i386-apple-darwin -### 2>&1 \ 160*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-PIC2 161*67e74705SXin Li // RUN: %clang -c %s -target i386-apple-darwin -fpic -### 2>&1 \ 162*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-PIC2 163*67e74705SXin Li // RUN: %clang -c %s -target i386-apple-darwin -fPIC -### 2>&1 \ 164*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-PIC2 165*67e74705SXin Li // RUN: %clang -c %s -target i386-apple-darwin -fpie -### 2>&1 \ 166*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-PIE2 167*67e74705SXin Li // RUN: %clang -c %s -target i386-apple-darwin -fPIE -### 2>&1 \ 168*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-PIE2 169*67e74705SXin Li // RUN: %clang -c %s -target i386-apple-darwin -fno-PIC -### 2>&1 \ 170*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-NO-PIC 171*67e74705SXin Li // RUN: %clang -c %s -target i386-apple-darwin -fno-PIE -### 2>&1 \ 172*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-NO-PIC 173*67e74705SXin Li // RUN: %clang -c %s -target i386-apple-darwin -fno-PIC -fpic -### 2>&1 \ 174*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-PIC2 175*67e74705SXin Li // RUN: %clang -c %s -target i386-apple-darwin -fno-PIC -fPIE -### 2>&1 \ 176*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-PIE2 177*67e74705SXin Li // RUN: %clang -c %s -target x86_64-apple-darwin -fno-PIC -### 2>&1 \ 178*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-PIC2 179*67e74705SXin Li // RUN: %clang -c %s -target x86_64-apple-darwin -fno-PIE -### 2>&1 \ 180*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-PIC2 181*67e74705SXin Li // RUN: %clang -c %s -target x86_64-apple-darwin -fpic -### 2>&1 \ 182*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-PIC2 183*67e74705SXin Li // RUN: %clang -c %s -target x86_64-apple-darwin -fPIE -### 2>&1 \ 184*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-PIC2 185*67e74705SXin Li // RUN: %clang -c %s -target x86_64-apple-darwin -fPIC -### 2>&1 \ 186*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-NO-UNUSED-ARG 187*67e74705SXin Li // 188*67e74705SXin Li // Darwin gets even more special with '-mdynamic-no-pic'. This flag is only 189*67e74705SXin Li // valid on Darwin, and it's behavior is very strange but needs to remain 190*67e74705SXin Li // consistent for compatibility. 191*67e74705SXin Li // RUN: %clang -c %s -target i386-unknown-unknown -mdynamic-no-pic -### 2>&1 \ 192*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-NON-DARWIN-DYNAMIC-NO-PIC 193*67e74705SXin Li // RUN: %clang -c %s -target i386-apple-darwin -mdynamic-no-pic -### 2>&1 \ 194*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-DYNAMIC-NO-PIC-32 195*67e74705SXin Li // RUN: %clang -c %s -target i386-apple-darwin -mdynamic-no-pic -fno-pic -### 2>&1 \ 196*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-DYNAMIC-NO-PIC-32 197*67e74705SXin Li // RUN: %clang -c %s -target i386-apple-darwin -mdynamic-no-pic -fpie -### 2>&1 \ 198*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-DYNAMIC-NO-PIC-32 199*67e74705SXin Li // RUN: %clang -c %s -target x86_64-apple-darwin -mdynamic-no-pic -### 2>&1 \ 200*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-DYNAMIC-NO-PIC-64 201*67e74705SXin Li // RUN: %clang -c %s -target x86_64-apple-darwin -mdynamic-no-pic -fno-pic -### 2>&1 \ 202*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-DYNAMIC-NO-PIC-64 203*67e74705SXin Li // RUN: %clang -c %s -target x86_64-apple-darwin -mdynamic-no-pic -fpie -### 2>&1 \ 204*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-DYNAMIC-NO-PIC-64 205*67e74705SXin Li // 206*67e74705SXin Li // Checks for ARM+Apple+IOS including -fapple-kext, -mkernel, and iphoneos 207*67e74705SXin Li // version boundaries. 208*67e74705SXin Li // RUN: %clang -c %s -target armv7-apple-ios -fapple-kext -miphoneos-version-min=6.0.0 -### 2>&1 \ 209*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-PIC2 210*67e74705SXin Li // RUN: %clang -c %s -target armv7-apple-ios -mkernel -miphoneos-version-min=6.0.0 -### 2>&1 \ 211*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-PIC2 212*67e74705SXin Li // RUN: %clang -c %s -target arm64-apple-ios -mkernel -miphoneos-version-min=7.0.0 -### 2>&1 \ 213*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-PIC2 214*67e74705SXin Li // RUN: %clang -x assembler -c %s -target arm64-apple-ios -mkernel -miphoneos-version-min=7.0.0 -no-integrated-as -### 2>&1 \ 215*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-NO-STATIC 216*67e74705SXin Li // RUN: %clang -c %s -target armv7k-apple-watchos -fapple-kext -mwatchos-version-min=1.0.0 -### 2>&1 \ 217*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-PIC2 218*67e74705SXin Li // RUN: %clang -c %s -target armv7-apple-ios -fapple-kext -miphoneos-version-min=5.0.0 -### 2>&1 \ 219*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-NO-PIC 220*67e74705SXin Li // RUN: %clang -c %s -target armv7-apple-ios -fapple-kext -miphoneos-version-min=6.0.0 -static -### 2>&1 \ 221*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-NO-PIC 222*67e74705SXin Li // RUN: %clang -c %s -target armv7-apple-unknown-macho -static -### 2>&1 \ 223*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-NO-PIC 224*67e74705SXin Li // 225*67e74705SXin Li // On OpenBSD, PIE is enabled by default, but can be disabled. 226*67e74705SXin Li // RUN: %clang -c %s -target amd64-pc-openbsd -### 2>&1 \ 227*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-PIE1 228*67e74705SXin Li // RUN: %clang -c %s -target i386-pc-openbsd -### 2>&1 \ 229*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-PIE1 230*67e74705SXin Li // RUN: %clang -c %s -target mips64-unknown-openbsd -### 2>&1 \ 231*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-PIE1 232*67e74705SXin Li // RUN: %clang -c %s -target mips64el-unknown-openbsd -### 2>&1 \ 233*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-PIE1 234*67e74705SXin Li // RUN: %clang -c %s -target powerpc-unknown-openbsd -### 2>&1 \ 235*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-PIE2 236*67e74705SXin Li // RUN: %clang -c %s -target sparc-unknown-openbsd -### 2>&1 \ 237*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-PIE2 238*67e74705SXin Li // RUN: %clang -c %s -target sparc64-unknown-openbsd -### 2>&1 \ 239*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-PIE2 240*67e74705SXin Li // RUN: %clang -c %s -target i386-pc-openbsd -fno-pie -### 2>&1 \ 241*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-NO-PIC 242*67e74705SXin Li // 243*67e74705SXin Li // On OpenBSD, -nopie needs to be passed through to the linker. 244*67e74705SXin Li // RUN: %clang %s -target i386-pc-openbsd -nopie -### 2>&1 \ 245*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-NOPIE-LD 246*67e74705SXin Li // 247*67e74705SXin Li // On Android PIC is enabled by default 248*67e74705SXin Li // RUN: %clang -c %s -target i686-linux-android -### 2>&1 \ 249*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-PIC2 250*67e74705SXin Li // RUN: %clang -c %s -target arm-linux-androideabi -### 2>&1 \ 251*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-PIC1 252*67e74705SXin Li // RUN: %clang -c %s -target mipsel-linux-android -### 2>&1 \ 253*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-PIC1 254*67e74705SXin Li // RUN: %clang -c %s -target aarch64-linux-android -### 2>&1 \ 255*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-PIC1 256*67e74705SXin Li // RUN: %clang -c %s -target arm64-linux-android -### 2>&1 \ 257*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-PIC1 258*67e74705SXin Li // 259*67e74705SXin Li // On Windows-X64 PIC is enabled by default 260*67e74705SXin Li // RUN: %clang -c %s -target x86_64-pc-windows-msvc18.0.0 -### 2>&1 \ 261*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-PIC2 262*67e74705SXin Li // RUN: %clang -c %s -target x86_64-pc-windows-gnu -### 2>&1 \ 263*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-PIC2 264