1 // This program makes a multi tier nested function call to test AArch64
2 // Pointer Authentication feature.
3 
4 // To enable PAC return address signing compile with following clang arguments:
5 // -march=armv8.3-a -mbranch-protection=pac-ret+leaf
6 
7 #include <stdlib.h>
8 
9 static void __attribute__((noinline)) func_c(void) {
10   exit(0); // Frame func_c
11 }
12 
13 static void __attribute__((noinline)) func_b(void) {
14   func_c(); // Frame func_b
15 }
16 
17 static void __attribute__((noinline)) func_a(void) {
18   func_b(); // Frame func_a
19 }
20 
21 int main(int argc, char *argv[]) {
22   func_a(); // Frame main
23   return 0;
24 }
25