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))
9int f1(struct __sk_buff *skb)
10{
11	return skb->len;
12}
13
14__attribute__ ((noinline))
15int f2(int val, struct __sk_buff *skb)
16{
17	return f1(skb) + val;
18}
19
20__attribute__ ((noinline))
21int f3(int val, struct __sk_buff *skb, int var)
22{
23	return f2(var, skb) + val;
24}
25
26__attribute__ ((noinline))
27int f4(struct __sk_buff *skb)
28{
29	return f3(1, skb, 2);
30}
31
32__attribute__ ((noinline))
33int f5(struct __sk_buff *skb)
34{
35	return f4(skb);
36}
37
38__attribute__ ((noinline))
39int f6(struct __sk_buff *skb)
40{
41	return f5(skb);
42}
43
44__attribute__ ((noinline))
45int f7(struct __sk_buff *skb)
46{
47	return f6(skb);
48}
49
50SEC("tc")
51__success
52int global_func4(struct __sk_buff *skb)
53{
54	return f7(skb);
55}
56