@@ -14950,6 +14950,36 @@ static struct tail_call_test tail_call_tests[] = {
14950
14950
},
14951
14951
.result = 10 ,
14952
14952
},
14953
+ {
14954
+ "Tail call load/store leaf" ,
14955
+ .insns = {
14956
+ BPF_ALU64_IMM (BPF_MOV , R1 , 1 ),
14957
+ BPF_ALU64_IMM (BPF_MOV , R2 , 2 ),
14958
+ BPF_ALU64_REG (BPF_MOV , R3 , BPF_REG_FP ),
14959
+ BPF_STX_MEM (BPF_DW , R3 , R1 , -8 ),
14960
+ BPF_STX_MEM (BPF_DW , R3 , R2 , -16 ),
14961
+ BPF_LDX_MEM (BPF_DW , R0 , BPF_REG_FP , -8 ),
14962
+ BPF_JMP_REG (BPF_JNE , R0 , R1 , 3 ),
14963
+ BPF_LDX_MEM (BPF_DW , R0 , BPF_REG_FP , -16 ),
14964
+ BPF_JMP_REG (BPF_JNE , R0 , R2 , 1 ),
14965
+ BPF_ALU64_IMM (BPF_MOV , R0 , 0 ),
14966
+ BPF_EXIT_INSN (),
14967
+ },
14968
+ .result = 0 ,
14969
+ .stack_depth = 32 ,
14970
+ },
14971
+ {
14972
+ "Tail call load/store" ,
14973
+ .insns = {
14974
+ BPF_ALU64_IMM (BPF_MOV , R0 , 3 ),
14975
+ BPF_STX_MEM (BPF_DW , BPF_REG_FP , R0 , -8 ),
14976
+ TAIL_CALL (-1 ),
14977
+ BPF_ALU64_IMM (BPF_MOV , R0 , -1 ),
14978
+ BPF_EXIT_INSN (),
14979
+ },
14980
+ .result = 0 ,
14981
+ .stack_depth = 16 ,
14982
+ },
14953
14983
{
14954
14984
"Tail call error path, max count reached" ,
14955
14985
.insns = {
0 commit comments