Clang Project

clang_source_code/test/Driver/ps4-pic.c
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