Clang Project

clang_source_code/test/Driver/openbsd.c
1// RUN: %clang -no-canonical-prefixes -target i686-pc-openbsd %s -### 2>&1 \
2// RUN:   | FileCheck --check-prefix=CHECK-LD %s
3// CHECK-LD: clang{{.*}}" "-cc1" "-triple" "i686-pc-openbsd"
4// CHECK-LD: ld{{.*}}" "-e" "__start" "--eh-frame-hdr" "-Bdynamic" "-dynamic-linker" "{{.*}}ld.so" "-o" "a.out" "{{.*}}crt0.o" "{{.*}}crtbegin.o" "{{.*}}.o" "-lcompiler_rt" "-lc" "-lcompiler_rt" "{{.*}}crtend.o"
5
6// Check for --eh-frame-hdr being passed with static linking
7// RUN: %clang -no-canonical-prefixes -target i686-pc-openbsd -static %s -### 2>&1 \
8// RUN:   | FileCheck --check-prefix=CHECK-LD-STATIC-EH %s
9// CHECK-LD-STATIC-EH: clang{{.*}}" "-cc1" "-triple" "i686-pc-openbsd"
10// CHECK-LD-STATIC-EH: ld{{.*}}" "-e" "__start" "--eh-frame-hdr" "-Bstatic" "-o" "a.out" "{{.*}}rcrt0.o" "{{.*}}crtbegin.o" "{{.*}}.o" "-lcompiler_rt" "-lc" "-lcompiler_rt" "{{.*}}crtend.o"
11
12// RUN: %clang -no-canonical-prefixes -target i686-pc-openbsd -pg -pthread %s -### 2>&1 \
13// RUN:   | FileCheck --check-prefix=CHECK-PG %s
14// CHECK-PG: clang{{.*}}" "-cc1" "-triple" "i686-pc-openbsd"
15// CHECK-PG: ld{{.*}}" "-e" "__start" "--eh-frame-hdr" "-Bdynamic" "-dynamic-linker" "{{.*}}ld.so" "-nopie" "-o" "a.out" "{{.*}}gcrt0.o" "{{.*}}crtbegin.o" "{{.*}}.o" "-lcompiler_rt" "-lpthread_p" "-lc_p" "-lcompiler_rt" "{{.*}}crtend.o"
16
17// Check CPU type for MIPS64
18// RUN: %clang -target mips64-unknown-openbsd -### -c %s 2>&1 \
19// RUN:   | FileCheck -check-prefix=CHECK-MIPS64-CPU %s
20// RUN: %clang -target mips64el-unknown-openbsd -### -c %s 2>&1 \
21// RUN:   | FileCheck -check-prefix=CHECK-MIPS64EL-CPU %s
22// CHECK-MIPS64-CPU: "-target-cpu" "mips3"
23// CHECK-MIPS64EL-CPU: "-target-cpu" "mips3"
24
25// Check that the new linker flags are passed to OpenBSD
26// RUN: %clang -no-canonical-prefixes -target i686-pc-openbsd -r %s -### 2>&1 \
27// RUN:   | FileCheck --check-prefix=CHECK-LD-R %s
28// RUN: %clang -no-canonical-prefixes -target i686-pc-openbsd -s %s -### 2>&1 \
29// RUN:   | FileCheck --check-prefix=CHECK-LD-S %s
30// RUN: %clang -no-canonical-prefixes -target i686-pc-openbsd -t %s -### 2>&1 \
31// RUN:   | FileCheck --check-prefix=CHECK-LD-T %s
32// RUN: %clang -no-canonical-prefixes -target i686-pc-openbsd -Z %s -### 2>&1 \
33// RUN:   | FileCheck --check-prefix=CHECK-LD-Z %s
34// RUN: %clang -no-canonical-prefixes -target mips64-unknown-openbsd %s -### 2>&1 \
35// RUN:   | FileCheck --check-prefix=CHECK-MIPS64-LD %s
36// RUN: %clang -no-canonical-prefixes -target mips64el-unknown-openbsd %s -### 2>&1 \
37// RUN:   | FileCheck --check-prefix=CHECK-MIPS64EL-LD %s
38// CHECK-LD-R: clang{{.*}}" "-cc1" "-triple" "i686-pc-openbsd"
39// CHECK-LD-R: ld{{.*}}" "-e" "__start" "--eh-frame-hdr" "-Bdynamic" "-dynamic-linker" "{{.*}}ld.so" "-o" "a.out" "{{.*}}crt0.o" "{{.*}}crtbegin.o" "-L{{.*}}" "-r" "{{.*}}.o" "-lcompiler_rt" "-lc" "-lcompiler_rt" "{{.*}}crtend.o"
40// CHECK-LD-S: clang{{.*}}" "-cc1" "-triple" "i686-pc-openbsd"
41// CHECK-LD-S: ld{{.*}}" "-e" "__start" "--eh-frame-hdr" "-Bdynamic" "-dynamic-linker" "{{.*}}ld.so" "-o" "a.out" "{{.*}}crt0.o" "{{.*}}crtbegin.o" "-L{{.*}}" "-s" "{{.*}}.o" "-lcompiler_rt" "-lc" "-lcompiler_rt" "{{.*}}crtend.o"
42// CHECK-LD-T: clang{{.*}}" "-cc1" "-triple" "i686-pc-openbsd"
43// CHECK-LD-T: ld{{.*}}" "-e" "__start" "--eh-frame-hdr" "-Bdynamic" "-dynamic-linker" "{{.*}}ld.so" "-o" "a.out" "{{.*}}crt0.o" "{{.*}}crtbegin.o" "-L{{.*}}" "-t" "{{.*}}.o" "-lcompiler_rt" "-lc" "-lcompiler_rt" "{{.*}}crtend.o"
44// CHECK-LD-Z: clang{{.*}}" "-cc1" "-triple" "i686-pc-openbsd"
45// CHECK-LD-Z: ld{{.*}}" "-e" "__start" "--eh-frame-hdr" "-Bdynamic" "-dynamic-linker" "{{.*}}ld.so" "-o" "a.out" "{{.*}}crt0.o" "{{.*}}crtbegin.o" "-L{{.*}}" "-Z" "{{.*}}.o" "-lcompiler_rt" "-lc" "-lcompiler_rt" "{{.*}}crtend.o"
46// CHECK-MIPS64-LD: clang{{.*}}" "-cc1" "-triple" "mips64-unknown-openbsd"
47// CHECK-MIPS64-LD: ld{{.*}}" "-EB" "-e" "__start" "--eh-frame-hdr" "-Bdynamic" "-dynamic-linker" "{{.*}}ld.so" "-o" "a.out" "{{.*}}crt0.o" "{{.*}}crtbegin.o" "-L{{.*}}" "{{.*}}.o" "-lcompiler_rt" "-lc" "-lcompiler_rt" "{{.*}}crtend.o"
48// CHECK-MIPS64EL-LD: clang{{.*}}" "-cc1" "-triple" "mips64el-unknown-openbsd"
49// CHECK-MIPS64EL-LD: ld{{.*}}" "-EL" "-e" "__start" "--eh-frame-hdr" "-Bdynamic" "-dynamic-linker" "{{.*}}ld.so" "-o" "a.out" "{{.*}}crt0.o" "{{.*}}crtbegin.o" "-L{{.*}}" "{{.*}}.o" "-lcompiler_rt" "-lc" "-lcompiler_rt" "{{.*}}crtend.o"
50
51// Check passing options to the assembler for various OpenBSD targets
52// RUN: %clang -target amd64-pc-openbsd -m32 -### -no-integrated-as -c %s 2>&1 \
53// RUN:   | FileCheck -check-prefix=CHECK-AMD64-M32 %s
54// RUN: %clang -target powerpc-unknown-openbsd -### -no-integrated-as -c %s 2>&1 \
55// RUN:   | FileCheck -check-prefix=CHECK-POWERPC %s
56// RUN: %clang -target sparc-unknown-openbsd -### -no-integrated-as -c %s 2>&1 \
57// RUN:   | FileCheck -check-prefix=CHECK-SPARC %s
58// RUN: %clang -target sparc64-unknown-openbsd -### -no-integrated-as -c %s 2>&1 \
59// RUN:   | FileCheck -check-prefix=CHECK-SPARC64 %s
60// RUN: %clang -target mips64-unknown-openbsd -### -no-integrated-as -c %s 2>&1 \
61// RUN:   | FileCheck -check-prefix=CHECK-MIPS64 %s
62// RUN: %clang -target mips64-unknown-openbsd -fPIC -### -no-integrated-as -c %s 2>&1 \
63// RUN:   | FileCheck -check-prefix=CHECK-MIPS64-PIC %s
64// RUN: %clang -target mips64el-unknown-openbsd -### -no-integrated-as -c %s 2>&1 \
65// RUN:   | FileCheck -check-prefix=CHECK-MIPS64EL %s
66// RUN: %clang -target mips64el-unknown-openbsd -fPIC -### -no-integrated-as -c %s 2>&1 \
67// RUN:   | FileCheck -check-prefix=CHECK-MIPS64EL-PIC %s
68// CHECK-AMD64-M32: as{{.*}}" "--32"
69// CHECK-POWERPC: as{{.*}}" "-mppc" "-many"
70// CHECK-SPARC: as{{.*}}" "-32" "-Av8"
71// CHECK-SPARC64: as{{.*}}" "-64" "-Av9"
72// CHECK-MIPS64: as{{.*}}" "-mabi" "64" "-EB"
73// CHECK-MIPS64-PIC: as{{.*}}" "-mabi" "64" "-EB" "-KPIC"
74// CHECK-MIPS64EL: as{{.*}}" "-mabi" "64" "-EL"
75// CHECK-MIPS64EL-PIC: as{{.*}}" "-mabi" "64" "-EL" "-KPIC"
76
77// Check that the integrated assembler is enabled for MIPS64/SPARC
78// RUN: %clang -target mips64-unknown-openbsd -### -c %s 2>&1 \
79// RUN:   | FileCheck -check-prefix=CHECK-IAS %s
80// RUN: %clang -target mips64el-unknown-openbsd -### -c %s 2>&1 \
81// RUN:   | FileCheck -check-prefix=CHECK-IAS %s
82// RUN: %clang -target sparc-unknown-openbsd -### -c %s 2>&1 \
83// RUN:   | FileCheck -check-prefix=CHECK-IAS %s
84// RUN: %clang -target sparc64-unknown-openbsd -### -c %s 2>&1 \
85// RUN:   | FileCheck -check-prefix=CHECK-IAS %s
86// CHECK-IAS-NOT: "-no-integrated-as"
87
88// Check linking against correct startup code when (not) using PIE
89// RUN: %clang -no-canonical-prefixes -target i686-pc-openbsd %s -### 2>&1 \
90// RUN:   | FileCheck -check-prefix=CHECK-PIE %s
91// RUN: %clang -no-canonical-prefixes -target i686-pc-openbsd -pie %s -### 2>&1 \
92// RUN:   | FileCheck -check-prefix=CHECK-PIE-FLAG %s
93// RUN: %clang -no-canonical-prefixes -target i686-pc-openbsd -fno-pie %s -### 2>&1 \
94// RUN:   | FileCheck -check-prefix=CHECK-PIE %s
95// RUN: %clang -no-canonical-prefixes -target i686-pc-openbsd -static %s -### 2>&1 \
96// RUN:   | FileCheck -check-prefix=CHECK-STATIC-PIE %s
97// RUN: %clang -no-canonical-prefixes -target i686-pc-openbsd -static -fno-pie %s -### 2>&1 \
98// RUN:   | FileCheck -check-prefix=CHECK-STATIC-PIE %s
99// RUN: %clang -no-canonical-prefixes -target i686-pc-openbsd -nopie %s -### 2>&1 \
100// RUN:   | FileCheck -check-prefix=CHECK-NOPIE %s
101// RUN: %clang -no-canonical-prefixes -target i686-pc-openbsd -fno-pie -nopie %s -### 2>&1 \
102// RUN:   | FileCheck -check-prefix=CHECK-NOPIE %s
103// RUN: %clang -no-canonical-prefixes -target i686-pc-openbsd -static -nopie %s -### 2>&1 \
104// RUN:   | FileCheck -check-prefix=CHECK-NOPIE %s
105// RUN: %clang -no-canonical-prefixes -target i686-pc-openbsd -fno-pie -static -nopie %s -### 2>&1 \
106// RUN:   | FileCheck -check-prefix=CHECK-NOPIE %s
107// CHECK-PIE: "{{.*}}crt0.o"
108// CHECK-PIE-NOT: "-nopie"
109// CHECK-PIE-FLAG: "-pie"
110// CHECK-STATIC-PIE: "{{.*}}rcrt0.o"
111// CHECK-STATIC-PIE-NOT: "-nopie"
112// CHECK-NOPIE: "-nopie" "{{.*}}crt0.o"
113
114// Check ARM float ABI
115// RUN: %clang -target arm-unknown-openbsd -### -c %s 2>&1 \
116// RUN:   | FileCheck -check-prefix=CHECK-ARM-FLOAT-ABI %s
117// CHECK-ARM-FLOAT-ABI-NOT: "-target-feature" "+soft-float"
118// CHECK-ARM-FLOAT-ABI: "-target-feature" "+soft-float-abi"
119
120// Check PowerPC for Secure PLT
121// RUN: %clang -target powerpc-unknown-openbsd -### -c %s 2>&1 \
122// RUN:   | FileCheck -check-prefix=CHECK-POWERPC-SECUREPLT %s
123// CHECK-POWERPC-SECUREPLT: "-target-feature" "+secure-plt"
124