88#error Missing kcfi?
99#endif
1010
11- #define __cfi_salt __attribute__(( cfi_salt("pepper")))
11+ #define __cfi_salt [[clang:: cfi_salt("pepper")]]
1212
1313typedef int (* fn_t )(void );
14- typedef int __cfi_salt ( * fn_salt_t )(void );
14+ typedef int ( * __cfi_salt fn_salt_t )(void );
1515
1616typedef unsigned int (* ufn_t )(void );
17- typedef unsigned int __cfi_salt ( * ufn_salt_t )(void );
17+ typedef unsigned int ( * __cfi_salt ufn_salt_t )(void );
1818
1919/// Must emit __kcfi_typeid symbols for address-taken function declarations
2020// CHECK: module asm ".weak __kcfi_typeid_[[F4:[a-zA-Z0-9_]+]]"
@@ -23,7 +23,7 @@ typedef unsigned int __cfi_salt (*ufn_salt_t)(void);
2323// CHECK: module asm ".set __kcfi_typeid_[[F4_SALT]], [[#%d,ASM_SALTY_HASH:]]"
2424
2525/// Must not __kcfi_typeid symbols for non-address-taken declarations
26- // CHECK-NOT: module asm ".weak __kcfi_typeid_{{f6|_Z2f6v}} "
26+ // CHECK-NOT: module asm ".weak __kcfi_typeid_f6 "
2727
2828int f1 (void );
2929int f1_salt (void ) __cfi_salt ;
@@ -51,29 +51,29 @@ struct cfi_struct {
5151int f7_salt (struct cfi_struct * ptr );
5252int f7_typedef_salt (struct cfi_struct * ptr );
5353
54- // CHECK-LABEL: @{{ __call|_Z6__callPFivE}}
54+ // CHECK-LABEL: @__call
5555// CHECK: call{{.*}} i32
5656// CHECK-NOT: "kcfi"
5757// CHECK-SAME: ()
5858int __call (fn_t f ) __attribute__((__no_sanitize__ ("kcfi" ))) {
5959 return f ();
6060}
6161
62- // CHECK-LABEL: @{{ call|_Z4callPFivE}}
62+ // CHECK-LABEL: @call
6363// CHECK: call{{.*}} i32 %{{.}}(){{.*}} [ "kcfi"(i32 [[#LOW_SODIUM_HASH]]) ]
64- // CHECK-LABEL: @{{ call_salt|_Z9call_saltPFivE}}
64+ // CHECK-LABEL: @call_salt
6565// CHECK: call{{.*}} i32 %{{.}}(){{.*}} [ "kcfi"(i32 [[#%d,SALTY_HASH:]]) ]
66- // CHECK-LABEL: @{{ call_salt_ty|_Z12call_salt_tyPFivE}}
66+ // CHECK-LABEL: @call_salt_ty
6767// CHECK: call{{.*}} i32 %{{.}}(){{.*}} [ "kcfi"(i32 [[#SALTY_HASH]]) ]
6868int call (fn_t f ) { return f (); }
6969int call_salt (fn_t __cfi_salt f ) { return f (); }
7070int call_salt_ty (fn_salt_t f ) { return f (); }
7171
72- // CHECK-LABEL: @{{ ucall|_Z5ucallPFjvE}}
72+ // CHECK-LABEL: @ucall
7373// CHECK: call{{.*}} i32 %{{.}}(){{.*}} [ "kcfi"(i32 [[#%d,LOW_SODIUM_UHASH:]]) ]
74- // CHECK-LABEL: @{{ ucall_salt|_Z10ucall_saltPFjvE}}
74+ // CHECK-LABEL: @ucall_salt
7575// CHECK: call{{.*}} i32 %{{.}}(){{.*}} [ "kcfi"(i32 [[#%d,SALTY_UHASH:]]) ]
76- // CHECK-LABEL: @{{ ucall_salt_ty|_Z13ucall_salt_tyPFjvE}}
76+ // CHECK-LABEL: @ucall_salt_ty
7777// CHECK: call{{.*}} i32 %{{.}}(){{.*}} [ "kcfi"(i32 [[#SALTY_UHASH]]) ]
7878unsigned int ucall (ufn_t f ) { return f (); }
7979unsigned int ucall_salt (ufn_t __cfi_salt f ) { return f (); }
@@ -109,23 +109,23 @@ int test1(struct cfi_struct *ptr) {
109109 f7_typedef_salt (ptr );
110110}
111111
112- // CHECK-LABEL: define dso_local{{.*}} i32 @{{f1|_Z2f1v}} (){{.*}} !kcfi_type
112+ // CHECK-LABEL: define dso_local{{.*}} i32 @f1 (){{.*}} !kcfi_type
113113// CHECK-SAME: ![[#LOW_SODIUM_TYPE:]]
114- // CHECK-LABEL: define dso_local{{.*}} i32 @{{ f1_salt|_Z7f1_saltv}} (){{.*}} !kcfi_type
114+ // CHECK-LABEL: define dso_local{{.*}} i32 @f1_salt(){{.*}} !kcfi_type
115115// CHECK-SAME: ![[#SALTY_TYPE:]]
116116int f1 (void ) { return 0 ; }
117117int f1_salt (void ) __cfi_salt { return 0 ; }
118118
119- // CHECK-LABEL: define dso_local{{.*}} i32 @{{f2|_Z2f2v}} (){{.*}} !kcfi_type
119+ // CHECK-LABEL: define dso_local{{.*}} i32 @f2 (){{.*}} !kcfi_type
120120// CHECK-SAME: ![[#LOW_SODIUM_UTYPE:]]
121- // CHECK: define dso_local{{.*}} i32 @{{ f2_salt|_Z7f2_saltv}} (){{.*}} !kcfi_type
121+ // CHECK: define dso_local{{.*}} i32 @f2_salt(){{.*}} !kcfi_type
122122// CHECK-SAME: ![[#SALTY_UTYPE:]]
123123unsigned int f2 (void ) { return 2 ; }
124124unsigned int f2_salt (void ) __cfi_salt { return 2 ; }
125125
126- // CHECK-LABEL: define internal{{.*}} i32 @{{f3|_ZL2f3v}} (){{.*}} !kcfi_type
126+ // CHECK-LABEL: define internal{{.*}} i32 @f3 (){{.*}} !kcfi_type
127127// CHECK-SAME: ![[#LOW_SODIUM_TYPE]]
128- // CHECK-LABEL: define internal{{.*}} i32 @{{ f3_salt|_ZL7f3_saltv}} (){{.*}} !kcfi_type
128+ // CHECK-LABEL: define internal{{.*}} i32 @f3_salt(){{.*}} !kcfi_type
129129// CHECK-SAME: ![[#SALTY_TYPE]]
130130static int f3 (void ) { return 1 ; }
131131static int f3_salt (void ) __cfi_salt { return 1 ; }
@@ -134,21 +134,21 @@ static int f3_salt(void) __cfi_salt { return 1; }
134134// CHECK: declare !kcfi_type ![[#SALTY_TYPE]]{{.*}} i32 @[[F4_SALT]]()
135135
136136/// Must not emit !kcfi_type for non-address-taken local functions
137- // CHECK-LABEL: define internal{{.*}} i32 @{{f5|_ZL2f5v}} ()
137+ // CHECK-LABEL: define internal{{.*}} i32 @f5 ()
138138// CHECK-NOT: !kcfi_type
139139// CHECK-SAME: {
140- // CHECK-LABEL: define internal{{.*}} i32 @{{ f5_salt|_ZL7f5_saltv}} ()
140+ // CHECK-LABEL: define internal{{.*}} i32 @f5_salt()
141141// CHECK-NOT: !kcfi_type
142142// CHECK-SAME: {
143143static int f5 (void ) { return 2 ; }
144144static int f5_salt (void ) __cfi_salt { return 2 ; }
145145
146- // CHECK: declare !kcfi_type ![[#LOW_SODIUM_TYPE]]{{.*}} i32 @{{f6|_Z2f6v}} ()
147- // CHECK: declare !kcfi_type ![[#SALTY_TYPE]]{{.*}} i32 @{{ f6_salt|_Z7f6_saltv}} ()
146+ // CHECK: declare !kcfi_type ![[#LOW_SODIUM_TYPE]]{{.*}} i32 @f6 ()
147+ // CHECK: declare !kcfi_type ![[#SALTY_TYPE]]{{.*}} i32 @f6_salt()
148148
149- // CHECK-LABEL: @{{ f7_salt|_Z7f7_saltP10cfi_struct}}
149+ // CHECK-LABEL: @f7_salt
150150// CHECK: call{{.*}} i32 %{{.*}}() [ "kcfi"(i32 [[#SALTY_HASH]]) ]
151- // CHECK-LABEL: @{{ f7_typedef_salt|_Z15f7_typedef_saltP10cfi_struct}}
151+ // CHECK-LABEL: @f7_typedef_salt
152152// CHECK: call{{.*}} i32 %{{.*}}() [ "kcfi"(i32 [[#SALTY_HASH]]) ]
153153int f7_salt (struct cfi_struct * ptr ) { return ptr -> fptr (); }
154154int f7_typedef_salt (struct cfi_struct * ptr ) { return ptr -> td_fptr (); }
0 commit comments