/* Verify that CET works. */ | |
/* { dg-do compile } */ | |
/* { dg-options "-O -fcf-protection" } */ | |
/* { dg-final { scan-assembler-times "endbr32" 3 { target ia32 } } } */ | |
/* { dg-final { scan-assembler-times "endbr64" 3 { target { ! ia32 } } } } */ | |
__attribute__ ((noinline, noclone)) | |
static int | |
func (int arg) | |
{ | |
static void *array[] = { &&foo, &&bar }; | |
goto *array[arg]; | |
foo: | |
return arg*111; | |
bar: | |
return arg*777; | |
} | |
int | |
foo (int arg) | |
{ | |
return func (arg); | |
} |