2
2
// RUN: | FileCheck %s --check-prefix=CXAATEXIT
3
3
4
4
// RUN: %clang_cc1 -triple arm64-apple-ios -fptrauth-calls -emit-llvm -std=c++11 %s -o - \
5
- // RUN: -fno-use-cxa-atexit | FileCheck %s --check-prefixes=ATEXIT,DARWIN
5
+ // RUN: -fno-use-cxa-atexit | FileCheck %s --check-prefixes=ATEXIT,ATEXIT_DARWIN
6
6
7
7
// RUN: %clang_cc1 -triple aarch64-linux-gnu -fptrauth-calls -emit-llvm -std=c++11 %s -o - \
8
8
// RUN: | FileCheck %s --check-prefix=CXAATEXIT
9
9
10
10
// RUN: %clang_cc1 -triple aarch64-linux-gnu -fptrauth-calls -emit-llvm -std=c++11 %s -o - \
11
- // RUN: -fno-use-cxa-atexit | FileCheck %s --check-prefixes=ATEXIT,ELF
11
+ // RUN: -fno-use-cxa-atexit | FileCheck %s --check-prefixes=ATEXIT,ATEXIT_ELF
12
+
13
+ // RUN: %clang_cc1 -triple arm64-apple-ios -fptrauth-calls -emit-llvm -std=c++11 %s \
14
+ // RUN: -fptrauth-function-pointer-type-discrimination -o - | FileCheck %s --check-prefix=CXAATEXIT_DISC
15
+
16
+ // RUN: %clang_cc1 -triple arm64-apple-ios -fptrauth-calls -emit-llvm -std=c++11 %s -o - \
17
+ // RUN: -fptrauth-function-pointer-type-discrimination -fno-use-cxa-atexit \
18
+ // RUN: | FileCheck %s --check-prefixes=ATEXIT_DISC,ATEXIT_DISC_DARWIN
19
+
20
+ // RUN: %clang_cc1 -triple aarch64-linux-gnu -fptrauth-calls -emit-llvm -std=c++11 %s \
21
+ // RUN: -fptrauth-function-pointer-type-discrimination -o - | FileCheck %s --check-prefix=CXAATEXIT_DISC
22
+
23
+ // RUN: %clang_cc1 -triple aarch64-linux-gnu -fptrauth-calls -emit-llvm -std=c++11 %s -o - \
24
+ // RUN: -fptrauth-function-pointer-type-discrimination -fno-use-cxa-atexit \
25
+ // RUN: | FileCheck %s --check-prefixes=ATEXIT_DISC,ATEXIT_DISC_ELF
12
26
13
27
class Foo {
14
28
public:
@@ -21,11 +35,22 @@ Foo global;
21
35
// CXAATEXIT: define internal void @__cxx_global_var_init()
22
36
// CXAATEXIT: call i32 @__cxa_atexit(ptr ptrauth (ptr @_ZN3FooD1Ev, i32 0), ptr @global, ptr @__dso_handle)
23
37
38
+ // CXAATEXIT_DISC: define internal void @__cxx_global_var_init()
39
+ // CXAATEXIT_DISC: call i32 @__cxa_atexit(ptr ptrauth (ptr @_ZN3FooD1Ev, i32 0, i64 10942), ptr @global, ptr @__dso_handle)
24
40
25
41
// ATEXIT: define internal void @__cxx_global_var_init()
26
42
// ATEXIT: %{{.*}} = call i32 @atexit(ptr ptrauth (ptr @__dtor_global, i32 0))
27
43
28
- // DARWIN: define internal void @__dtor_global() {{.*}} section "__TEXT,__StaticInit,regular,pure_instructions" {
29
- // ELF: define internal void @__dtor_global() {{.*}} section ".text.startup" {
30
- // DARWIN: %{{.*}} = call ptr @_ZN3FooD1Ev(ptr @global)
31
- // ELF: call void @_ZN3FooD1Ev(ptr @global)
44
+ // ATEXIT_DARWIN: define internal void @__dtor_global() {{.*}} section "__TEXT,__StaticInit,regular,pure_instructions" {
45
+ // ATEXIT_ELF: define internal void @__dtor_global() {{.*}} section ".text.startup" {
46
+ // ATEXIT_DARWIN: %{{.*}} = call ptr @_ZN3FooD1Ev(ptr @global)
47
+ // ATEXIT_ELF: call void @_ZN3FooD1Ev(ptr @global)
48
+
49
+ // ATEXIT_DISC: define internal void @__cxx_global_var_init()
50
+ // ATEXIT_DISC: %{{.*}} = call i32 @atexit(ptr ptrauth (ptr @__dtor_global, i32 0, i64 10942))
51
+
52
+
53
+ // ATEXIT_DISC_DARWIN: define internal void @__dtor_global() {{.*}} section "__TEXT,__StaticInit,regular,pure_instructions" {
54
+ // ATEXIT_DISC_ELF: define internal void @__dtor_global() {{.*}} section ".text.startup" {
55
+ // ATEXIT_DISC_DARWIN: %{{.*}} = call ptr @_ZN3FooD1Ev(ptr @global)
56
+ // ATEXIT_DISC_ELF: call void @_ZN3FooD1Ev(ptr @global)
0 commit comments