xref: /llvm-project/lldb/test/API/functionalities/unwind/aarch64_unwind_pac/main.c (revision e8f998c0c5edda3d6bad9b70e60975296df3d9fb)
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 
func_c(void)9 static void __attribute__((noinline)) func_c(void) {
10   exit(0); // Frame func_c
11 }
12 
func_b(void)13 static void __attribute__((noinline)) func_b(void) {
14   func_c(); // Frame func_b
15 }
16 
func_a(void)17 static void __attribute__((noinline)) func_a(void) {
18   func_b(); // Frame func_a
19 }
20 
main(int argc,char * argv[])21 int main(int argc, char *argv[]) {
22   func_a(); // Frame main
23   return 0;
24 }
25