@@ -54,6 +54,7 @@ static void __attribute__((used)) __do_init(void) {
54
54
}
55
55
56
56
#ifdef CRT_HAS_INITFINI_ARRAY
57
+ #ifdef __clang__
57
58
#if __has_feature (ptrauth_init_fini )
58
59
// TODO: use __ptrauth-qualified pointers when they are supported on clang side
59
60
#if __has_feature (ptrauth_init_fini_address_discrimination )
@@ -70,6 +71,10 @@ __attribute__((section(".init_array"), used)) static void *__init =
70
71
__attribute__((section (".init_array" ),
71
72
used )) static void (* __init )(void ) = __do_init ;
72
73
#endif
74
+ #else
75
+ __attribute__((section (".init_array" ),
76
+ used )) static void (* __init )(void ) = __do_init ;
77
+ #endif
73
78
#elif defined(__i386__ ) || defined(__x86_64__ )
74
79
__asm__(".pushsection .init,\"ax\",@progbits\n\t"
75
80
"call __do_init\n\t"
@@ -125,6 +130,7 @@ static void __attribute__((used)) __do_fini(void) {
125
130
}
126
131
127
132
#ifdef CRT_HAS_INITFINI_ARRAY
133
+ #ifdef __clang__
128
134
#if __has_feature (ptrauth_init_fini )
129
135
// TODO: use __ptrauth-qualified pointers when they are supported on clang side
130
136
#if __has_feature (ptrauth_init_fini_address_discrimination )
@@ -141,6 +147,10 @@ __attribute__((section(".fini_array"), used)) static void *__fini =
141
147
__attribute__((section (".fini_array" ),
142
148
used )) static void (* __fini )(void ) = __do_fini ;
143
149
#endif
150
+ #else
151
+ __attribute__((section (".fini_array" ),
152
+ used )) static void (* __fini )(void ) = __do_fini ;
153
+ #endif
144
154
#elif defined(__i386__ ) || defined(__x86_64__ )
145
155
__asm__(".pushsection .fini,\"ax\",@progbits\n\t"
146
156
"call __do_fini\n\t"
0 commit comments