summaryrefslogtreecommitdiff
path: root/tools/perf/scripts/python/bin
diff options
context:
space:
mode:
authorYonghong Song <yonghong.song@linux.dev>2026-10-16 11:30:49 -0700
committerAlexei Starovoitov <ast@kernel.org>2026-10-16 19:50:00 +0000
commit6b26307ce697732224a5bfb26d77e25734b9d5d3 (patch)
treeec86e03eb2df65667ac207fa1ebf9c98390de96f /tools/perf/scripts/python/bin
parent9f9c30435ca92cddb37e67cda46ec02e26dd0a07 (diff)
selftests/bpf: Test trampoline stack args in a program that can tail call
Test the previous patch with a target program made of two call chains: run() -> call_stack() -> callee_stack(a, b, c, d, e, f, g, h) run() -> subprog_tail() -> bpf_tail_call() callee_stack() takes eight u64 arguments, so g and h are passed on the stack. Because run() can reach a tail call, a trampoline on any function of the program keeps the tail call counter pointer. callee_stack() itself does not lead to the tail call, which is why the verifier still lets it take stack arguments. Attach fentry and fexit programs to callee_stack(). The fentry program checks that it sees g and h, and the test checks the value that callee_stack() returns when the fexit trampoline calls it. Without the previous patch, the function takes the counter pointer for its first stack argument: test_stack_arg_tailcall:FAIL:stack ret unexpected stack ret: actual -359789677662885869 != expected 204 test_stack_arg_tailcall:FAIL:stack fexit ret unexpected stack fexit ret: actual -359789677662885869 != expected 204 Signed-off-by: Yonghong Song <yonghong.song@linux.dev> Signed-off-by: Alexei Starovoitov <ast@kernel.org> Link: https://patch.msgid.link/20261016183049.1133231-1-yonghong.song@linux.dev
Diffstat (limited to 'tools/perf/scripts/python/bin')
0 files changed, 0 insertions, 0 deletions