@@ -14950,6 +14950,36 @@ static struct tail_call_test tail_call_tests[] = {
1495014950 },
1495114951 .result = 10 ,
1495214952 },
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+ },
1495314983 {
1495414984 "Tail call error path, max count reached" ,
1495514985 .insns = {
0 commit comments