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