1 // SPDX-License-Identifier: GPL-2.0-only 2 /* Copyright (c) 2020 Facebook */ 3 #include <stddef.h> 4 #include <linux/bpf.h> 5 #include <bpf/bpf_helpers.h> 6 #include "bpf_misc.h" 7 8 __attribute__ ((noinline)) f1(struct __sk_buff * skb)9int f1(struct __sk_buff *skb) 10 { 11 return skb->len; 12 } 13 14 __attribute__ ((noinline)) f2(int val,struct __sk_buff * skb)15int f2(int val, struct __sk_buff *skb) 16 { 17 return f1(skb) + val; 18 } 19 20 __attribute__ ((noinline)) f3(int val,struct __sk_buff * skb,int var)21int f3(int val, struct __sk_buff *skb, int var) 22 { 23 return f2(var, skb) + val; 24 } 25 26 __attribute__ ((noinline)) f4(struct __sk_buff * skb)27int f4(struct __sk_buff *skb) 28 { 29 return f3(1, skb, 2); 30 } 31 32 __attribute__ ((noinline)) f5(struct __sk_buff * skb)33int f5(struct __sk_buff *skb) 34 { 35 return f4(skb); 36 } 37 38 __attribute__ ((noinline)) f6(struct __sk_buff * skb)39int f6(struct __sk_buff *skb) 40 { 41 return f5(skb); 42 } 43 44 __attribute__ ((noinline)) f7(struct __sk_buff * skb)45int f7(struct __sk_buff *skb) 46 { 47 return f6(skb); 48 } 49 50 SEC("tc") 51 __success global_func4(struct __sk_buff * skb)52int global_func4(struct __sk_buff *skb) 53 { 54 return f7(skb); 55 } 56