|
@@ -1485,6 +1485,96 @@ static struct bpf_test tests[] = {
|
|
{ },
|
|
{ },
|
|
{ },
|
|
{ },
|
|
},
|
|
},
|
|
|
|
+ { /* Mainly checking JIT here. */
|
|
|
|
+ "M[]: STX + LDX",
|
|
|
|
+ .u.insns = {
|
|
|
|
+ BPF_STMT(BPF_LDX | BPF_IMM, 100),
|
|
|
|
+ BPF_STMT(BPF_STX, 0),
|
|
|
|
+ BPF_STMT(BPF_LDX | BPF_MEM, 0),
|
|
|
|
+ BPF_STMT(BPF_MISC | BPF_TXA, 0),
|
|
|
|
+ BPF_STMT(BPF_ALU | BPF_ADD | BPF_K, 1),
|
|
|
|
+ BPF_STMT(BPF_MISC | BPF_TAX, 0),
|
|
|
|
+ BPF_STMT(BPF_STX, 1),
|
|
|
|
+ BPF_STMT(BPF_LDX | BPF_MEM, 1),
|
|
|
|
+ BPF_STMT(BPF_MISC | BPF_TXA, 0),
|
|
|
|
+ BPF_STMT(BPF_ALU | BPF_ADD | BPF_K, 1),
|
|
|
|
+ BPF_STMT(BPF_MISC | BPF_TAX, 0),
|
|
|
|
+ BPF_STMT(BPF_STX, 2),
|
|
|
|
+ BPF_STMT(BPF_LDX | BPF_MEM, 2),
|
|
|
|
+ BPF_STMT(BPF_MISC | BPF_TXA, 0),
|
|
|
|
+ BPF_STMT(BPF_ALU | BPF_ADD | BPF_K, 1),
|
|
|
|
+ BPF_STMT(BPF_MISC | BPF_TAX, 0),
|
|
|
|
+ BPF_STMT(BPF_STX, 3),
|
|
|
|
+ BPF_STMT(BPF_LDX | BPF_MEM, 3),
|
|
|
|
+ BPF_STMT(BPF_MISC | BPF_TXA, 0),
|
|
|
|
+ BPF_STMT(BPF_ALU | BPF_ADD | BPF_K, 1),
|
|
|
|
+ BPF_STMT(BPF_MISC | BPF_TAX, 0),
|
|
|
|
+ BPF_STMT(BPF_STX, 4),
|
|
|
|
+ BPF_STMT(BPF_LDX | BPF_MEM, 4),
|
|
|
|
+ BPF_STMT(BPF_MISC | BPF_TXA, 0),
|
|
|
|
+ BPF_STMT(BPF_ALU | BPF_ADD | BPF_K, 1),
|
|
|
|
+ BPF_STMT(BPF_MISC | BPF_TAX, 0),
|
|
|
|
+ BPF_STMT(BPF_STX, 5),
|
|
|
|
+ BPF_STMT(BPF_LDX | BPF_MEM, 5),
|
|
|
|
+ BPF_STMT(BPF_MISC | BPF_TXA, 0),
|
|
|
|
+ BPF_STMT(BPF_ALU | BPF_ADD | BPF_K, 1),
|
|
|
|
+ BPF_STMT(BPF_MISC | BPF_TAX, 0),
|
|
|
|
+ BPF_STMT(BPF_STX, 6),
|
|
|
|
+ BPF_STMT(BPF_LDX | BPF_MEM, 6),
|
|
|
|
+ BPF_STMT(BPF_MISC | BPF_TXA, 0),
|
|
|
|
+ BPF_STMT(BPF_ALU | BPF_ADD | BPF_K, 1),
|
|
|
|
+ BPF_STMT(BPF_MISC | BPF_TAX, 0),
|
|
|
|
+ BPF_STMT(BPF_STX, 7),
|
|
|
|
+ BPF_STMT(BPF_LDX | BPF_MEM, 7),
|
|
|
|
+ BPF_STMT(BPF_MISC | BPF_TXA, 0),
|
|
|
|
+ BPF_STMT(BPF_ALU | BPF_ADD | BPF_K, 1),
|
|
|
|
+ BPF_STMT(BPF_MISC | BPF_TAX, 0),
|
|
|
|
+ BPF_STMT(BPF_STX, 8),
|
|
|
|
+ BPF_STMT(BPF_LDX | BPF_MEM, 8),
|
|
|
|
+ BPF_STMT(BPF_MISC | BPF_TXA, 0),
|
|
|
|
+ BPF_STMT(BPF_ALU | BPF_ADD | BPF_K, 1),
|
|
|
|
+ BPF_STMT(BPF_MISC | BPF_TAX, 0),
|
|
|
|
+ BPF_STMT(BPF_STX, 9),
|
|
|
|
+ BPF_STMT(BPF_LDX | BPF_MEM, 9),
|
|
|
|
+ BPF_STMT(BPF_MISC | BPF_TXA, 0),
|
|
|
|
+ BPF_STMT(BPF_ALU | BPF_ADD | BPF_K, 1),
|
|
|
|
+ BPF_STMT(BPF_MISC | BPF_TAX, 0),
|
|
|
|
+ BPF_STMT(BPF_STX, 10),
|
|
|
|
+ BPF_STMT(BPF_LDX | BPF_MEM, 10),
|
|
|
|
+ BPF_STMT(BPF_MISC | BPF_TXA, 0),
|
|
|
|
+ BPF_STMT(BPF_ALU | BPF_ADD | BPF_K, 1),
|
|
|
|
+ BPF_STMT(BPF_MISC | BPF_TAX, 0),
|
|
|
|
+ BPF_STMT(BPF_STX, 11),
|
|
|
|
+ BPF_STMT(BPF_LDX | BPF_MEM, 11),
|
|
|
|
+ BPF_STMT(BPF_MISC | BPF_TXA, 0),
|
|
|
|
+ BPF_STMT(BPF_ALU | BPF_ADD | BPF_K, 1),
|
|
|
|
+ BPF_STMT(BPF_MISC | BPF_TAX, 0),
|
|
|
|
+ BPF_STMT(BPF_STX, 12),
|
|
|
|
+ BPF_STMT(BPF_LDX | BPF_MEM, 12),
|
|
|
|
+ BPF_STMT(BPF_MISC | BPF_TXA, 0),
|
|
|
|
+ BPF_STMT(BPF_ALU | BPF_ADD | BPF_K, 1),
|
|
|
|
+ BPF_STMT(BPF_MISC | BPF_TAX, 0),
|
|
|
|
+ BPF_STMT(BPF_STX, 13),
|
|
|
|
+ BPF_STMT(BPF_LDX | BPF_MEM, 13),
|
|
|
|
+ BPF_STMT(BPF_MISC | BPF_TXA, 0),
|
|
|
|
+ BPF_STMT(BPF_ALU | BPF_ADD | BPF_K, 1),
|
|
|
|
+ BPF_STMT(BPF_MISC | BPF_TAX, 0),
|
|
|
|
+ BPF_STMT(BPF_STX, 14),
|
|
|
|
+ BPF_STMT(BPF_LDX | BPF_MEM, 14),
|
|
|
|
+ BPF_STMT(BPF_MISC | BPF_TXA, 0),
|
|
|
|
+ BPF_STMT(BPF_ALU | BPF_ADD | BPF_K, 1),
|
|
|
|
+ BPF_STMT(BPF_MISC | BPF_TAX, 0),
|
|
|
|
+ BPF_STMT(BPF_STX, 15),
|
|
|
|
+ BPF_STMT(BPF_LDX | BPF_MEM, 15),
|
|
|
|
+ BPF_STMT(BPF_MISC | BPF_TXA, 0),
|
|
|
|
+ BPF_STMT(BPF_ALU | BPF_ADD | BPF_K, 1),
|
|
|
|
+ BPF_STMT(BPF_MISC | BPF_TAX, 0),
|
|
|
|
+ BPF_STMT(BPF_RET | BPF_A, 0),
|
|
|
|
+ },
|
|
|
|
+ CLASSIC | FLAG_NO_DATA,
|
|
|
|
+ { },
|
|
|
|
+ { { 0, 116 } },
|
|
|
|
+ },
|
|
};
|
|
};
|
|
|
|
|
|
static struct net_device dev;
|
|
static struct net_device dev;
|