1*67e74705SXin Li // REQUIRES: x86-registered-target 2*67e74705SXin Li 3*67e74705SXin Li // Test the driver's control over the PIC behavior for PS4 compiler. 4*67e74705SXin Li // These consist of tests of the relocation model flags and the 5*67e74705SXin Li // pic level flags passed to CC1. 6*67e74705SXin Li // 7*67e74705SXin Li // CHECK-NO-PIC: "-mrelocation-model" "static" 8*67e74705SXin Li // CHECK-NO-PIC-NOT: "-pic-level" 9*67e74705SXin Li // CHECK-NO-PIC-NOT: "-pic-is-pie" 10*67e74705SXin Li // 11*67e74705SXin Li // CHECK-DYNAMIC-NO-PIC2: unsupported option '-mdynamic-no-pic' 12*67e74705SXin Li // CHECK-DYNAMIC-NO-PIC2: "-mrelocation-model" "dynamic-no-pic" 13*67e74705SXin Li // 14*67e74705SXin Li // CHECK-PIC2: "-mrelocation-model" "pic" 15*67e74705SXin Li // CHECK-PIC2: "-pic-level" "2" 16*67e74705SXin Li // 17*67e74705SXin Li // CHECK-PIE2: "-mrelocation-model" "pic" 18*67e74705SXin Li // CHECK-PIE2: "-pic-is-pie" 19*67e74705SXin Li // 20*67e74705SXin Li // CHECK-NOPIC-IGNORED: using '-fPIC' 21*67e74705SXin Li // CHECK-NOPIC-IGNORED: "-mrelocation-model" "pic" 22*67e74705SXin Li // CHECK-NOPIC-IGNORED: "-pic-level" "2" 23*67e74705SXin Li // 24*67e74705SXin Li // CHECK-DIAG-PIC: option '-fno-PIC' was ignored by the PS4 toolchain, using '-fPIC' 25*67e74705SXin Li // CHECK-DIAG-PIE: option '-fno-PIE' was ignored by the PS4 toolchain, using '-fPIC' 26*67e74705SXin Li // CHECK-DIAG-pic: option '-fno-pic' was ignored by the PS4 toolchain, using '-fPIC' 27*67e74705SXin Li // CHECK-DIAG-pie: option '-fno-pie' was ignored by the PS4 toolchain, using '-fPIC' 28*67e74705SXin Li // 29*67e74705SXin Li // CHECK-STATIC-ERR: unsupported option '-static' for target 'PS4' 30*67e74705SXin Li 31*67e74705SXin Li // RUN: %clang -c %s -target x86_64-scei-ps4 -### 2>&1 \ 32*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-PIC2 33*67e74705SXin Li // RUN: %clang -c %s -target x86_64-scei-ps4 -fpic -### 2>&1 \ 34*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-PIC2 35*67e74705SXin Li // RUN: %clang -c %s -target x86_64-scei-ps4 -fPIC -### 2>&1 \ 36*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-PIC2 37*67e74705SXin Li // RUN: %clang -c %s -target x86_64-scei-ps4 -fpie -### 2>&1 \ 38*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-PIE2 39*67e74705SXin Li // RUN: %clang -c %s -target x86_64-scei-ps4 -fPIE -### 2>&1 \ 40*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-PIE2 41*67e74705SXin Li // RUN: %clang -c %s -target x86_64-scei-ps4 -fpic -fno-pic -### 2>&1 \ 42*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-NOPIC-IGNORED 43*67e74705SXin Li // RUN: %clang -c %s -target x86_64-scei-ps4 -fPIC -fno-PIC -### 2>&1 \ 44*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-NOPIC-IGNORED 45*67e74705SXin Li // RUN: %clang -c %s -target x86_64-scei-ps4 -fpic -fno-PIC -### 2>&1 \ 46*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-NOPIC-IGNORED 47*67e74705SXin Li // RUN: %clang -c %s -target x86_64-scei-ps4 -fPIC -fno-pic -### 2>&1 \ 48*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-NOPIC-IGNORED 49*67e74705SXin Li // RUN: %clang -c %s -target x86_64-scei-ps4 -fpie -fno-pie -### 2>&1 \ 50*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-NOPIC-IGNORED 51*67e74705SXin Li // RUN: %clang -c %s -target x86_64-scei-ps4 -fPIE -fno-PIE -### 2>&1 \ 52*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-NOPIC-IGNORED 53*67e74705SXin Li // RUN: %clang -c %s -target x86_64-scei-ps4 -fpie -fno-PIE -### 2>&1 \ 54*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-NOPIC-IGNORED 55*67e74705SXin Li // RUN: %clang -c %s -target x86_64-scei-ps4 -fPIE -fno-pie -### 2>&1 \ 56*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-NOPIC-IGNORED 57*67e74705SXin Li // RUN: %clang -c %s -target x86_64-scei-ps4 -fpie -fno-pic -### 2>&1 \ 58*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-NOPIC-IGNORED 59*67e74705SXin Li // RUN: %clang -c %s -target x86_64-scei-ps4 -fpic -fno-pie -### 2>&1 \ 60*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-NOPIC-IGNORED 61*67e74705SXin Li // RUN: %clang -c %s -target x86_64-scei-ps4 -fpic -fPIC -### 2>&1 \ 62*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-PIC2 63*67e74705SXin Li // RUN: %clang -c %s -target x86_64-scei-ps4 -fPIC -fpic -### 2>&1 \ 64*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-PIC2 65*67e74705SXin Li // RUN: %clang -c %s -target x86_64-scei-ps4 -fpic -fPIE -fpie -### 2>&1 \ 66*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-PIE2 67*67e74705SXin Li // RUN: %clang -c %s -target x86_64-scei-ps4 -fpie -fPIC -fPIE -### 2>&1 \ 68*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-PIE2 69*67e74705SXin Li // 70*67e74705SXin Li // Defaults change for PS4. 71*67e74705SXin Li // RUN: %clang -c %s -target x86_64-scei-ps4 -### 2>&1 \ 72*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-PIC2 73*67e74705SXin Li // RUN: %clang -c %s -target x86_64-scei-ps4 -fno-pic -### 2>&1 \ 74*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-NOPIC-IGNORED 75*67e74705SXin Li // RUN: %clang -c %s -target x86_64-scei-ps4 -fno-PIC -### 2>&1 \ 76*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-NOPIC-IGNORED 77*67e74705SXin Li // 78*67e74705SXin Li // Disregard any of the PIC-specific flags if we have a trump-card flag. 79*67e74705SXin Li // RUN: %clang -c %s -target x86_64-scei-ps4 -mkernel -fPIC -### 2>&1 \ 80*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-NO-PIC 81*67e74705SXin Li // RUN: %clang -c %s -target x86_64-scei-ps4 -mdynamic-no-pic -fPIC -### 2>&1 \ 82*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-DYNAMIC-NO-PIC2 83*67e74705SXin Li // 84*67e74705SXin Li // -static not supported at all. 85*67e74705SXin Li // RUN: %clang -c %s -target x86_64-scei-ps4 -static -### 2>&1 \ 86*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-STATIC-ERR 87*67e74705SXin Li // 88*67e74705SXin Li // -fno-PIC etc. is obeyed if -mcmodel=kernel is also present. 89*67e74705SXin Li // RUN: %clang -c %s -target x86_64-scei-ps4 -mcmodel=kernel -fno-PIC -### 2>&1 \ 90*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-NO-PIC 91*67e74705SXin Li // RUN: %clang -c %s -target x86_64-scei-ps4 -mcmodel=kernel -fno-PIE -### 2>&1 \ 92*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-NO-PIC 93*67e74705SXin Li // RUN: %clang -c %s -target x86_64-scei-ps4 -mcmodel=kernel -fno-pic -### 2>&1 \ 94*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-NO-PIC 95*67e74705SXin Li // RUN: %clang -c %s -target x86_64-scei-ps4 -mcmodel=kernel -fno-pie -### 2>&1 \ 96*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-NO-PIC 97*67e74705SXin Li // 98*67e74705SXin Li // Verify that we reflect the option the user specified, when we ignore it. 99*67e74705SXin Li // RUN: %clang -c %s -target x86_64-scei-ps4 -fno-PIC -### 2>&1 \ 100*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-DIAG-PIC 101*67e74705SXin Li // RUN: %clang -c %s -target x86_64-scei-ps4 -fno-PIE -### 2>&1 \ 102*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-DIAG-PIE 103*67e74705SXin Li // RUN: %clang -c %s -target x86_64-scei-ps4 -fno-pic -### 2>&1 \ 104*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-DIAG-pic 105*67e74705SXin Li // RUN: %clang -c %s -target x86_64-scei-ps4 -fno-pie -### 2>&1 \ 106*67e74705SXin Li // RUN: | FileCheck %s --check-prefix=CHECK-DIAG-pie 107