1 /* { dg-do run { target cet } } */ 2 /* { dg-options "-O2 -fcf-protection=branch" } */ 3 4 void callme (void (*callback) (void)); 5 6 int main(void)7main (void) 8 { 9 int ok = 0; 10 void callback (void) { ok = 1; } 11 12 callme (&callback); 13 14 if (!ok) 15 __builtin_abort (); 16 return 0; 17 } 18 19 __attribute__((noinline, noclone)) 20 void callme(void (* callback)(void))21callme (void (*callback) (void)) 22 { 23 (*callback) (); 24 } 25