xref: /aosp_15_r20/external/clang/test/Driver/ps4-pic.c (revision 67e74705e28f6214e480b399dd47ea732279e315)
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