WIP FPC-III support
[linux/fpc-iii.git] / tools / testing / selftests / bpf / verifier / div0.c
blob7685edfbcf7174d5e1d620087ac5f8303592d87e
2 "DIV32 by 0, zero check 1",
3 .insns = {
4 BPF_MOV32_IMM(BPF_REG_0, 42),
5 BPF_MOV32_IMM(BPF_REG_1, 0),
6 BPF_MOV32_IMM(BPF_REG_2, 1),
7 BPF_ALU32_REG(BPF_DIV, BPF_REG_2, BPF_REG_1),
8 BPF_EXIT_INSN(),
9 },
10 .result = ACCEPT,
11 .retval = 42,
14 "DIV32 by 0, zero check 2",
15 .insns = {
16 BPF_MOV32_IMM(BPF_REG_0, 42),
17 BPF_LD_IMM64(BPF_REG_1, 0xffffffff00000000LL),
18 BPF_MOV32_IMM(BPF_REG_2, 1),
19 BPF_ALU32_REG(BPF_DIV, BPF_REG_2, BPF_REG_1),
20 BPF_EXIT_INSN(),
22 .result = ACCEPT,
23 .retval = 42,
26 "DIV64 by 0, zero check",
27 .insns = {
28 BPF_MOV32_IMM(BPF_REG_0, 42),
29 BPF_MOV32_IMM(BPF_REG_1, 0),
30 BPF_MOV32_IMM(BPF_REG_2, 1),
31 BPF_ALU64_REG(BPF_DIV, BPF_REG_2, BPF_REG_1),
32 BPF_EXIT_INSN(),
34 .result = ACCEPT,
35 .retval = 42,
38 "MOD32 by 0, zero check 1",
39 .insns = {
40 BPF_MOV32_IMM(BPF_REG_0, 42),
41 BPF_MOV32_IMM(BPF_REG_1, 0),
42 BPF_MOV32_IMM(BPF_REG_2, 1),
43 BPF_ALU32_REG(BPF_MOD, BPF_REG_2, BPF_REG_1),
44 BPF_EXIT_INSN(),
46 .result = ACCEPT,
47 .retval = 42,
50 "MOD32 by 0, zero check 2",
51 .insns = {
52 BPF_MOV32_IMM(BPF_REG_0, 42),
53 BPF_LD_IMM64(BPF_REG_1, 0xffffffff00000000LL),
54 BPF_MOV32_IMM(BPF_REG_2, 1),
55 BPF_ALU32_REG(BPF_MOD, BPF_REG_2, BPF_REG_1),
56 BPF_EXIT_INSN(),
58 .result = ACCEPT,
59 .retval = 42,
62 "MOD64 by 0, zero check",
63 .insns = {
64 BPF_MOV32_IMM(BPF_REG_0, 42),
65 BPF_MOV32_IMM(BPF_REG_1, 0),
66 BPF_MOV32_IMM(BPF_REG_2, 1),
67 BPF_ALU64_REG(BPF_MOD, BPF_REG_2, BPF_REG_1),
68 BPF_EXIT_INSN(),
70 .result = ACCEPT,
71 .retval = 42,
74 "DIV32 by 0, zero check ok, cls",
75 .insns = {
76 BPF_MOV32_IMM(BPF_REG_0, 42),
77 BPF_MOV32_IMM(BPF_REG_1, 2),
78 BPF_MOV32_IMM(BPF_REG_2, 16),
79 BPF_ALU32_REG(BPF_DIV, BPF_REG_2, BPF_REG_1),
80 BPF_MOV64_REG(BPF_REG_0, BPF_REG_2),
81 BPF_EXIT_INSN(),
83 .prog_type = BPF_PROG_TYPE_SCHED_CLS,
84 .result = ACCEPT,
85 .retval = 8,
88 "DIV32 by 0, zero check 1, cls",
89 .insns = {
90 BPF_MOV32_IMM(BPF_REG_1, 0),
91 BPF_MOV32_IMM(BPF_REG_0, 1),
92 BPF_ALU32_REG(BPF_DIV, BPF_REG_0, BPF_REG_1),
93 BPF_EXIT_INSN(),
95 .prog_type = BPF_PROG_TYPE_SCHED_CLS,
96 .result = ACCEPT,
97 .retval = 0,
100 "DIV32 by 0, zero check 2, cls",
101 .insns = {
102 BPF_LD_IMM64(BPF_REG_1, 0xffffffff00000000LL),
103 BPF_MOV32_IMM(BPF_REG_0, 1),
104 BPF_ALU32_REG(BPF_DIV, BPF_REG_0, BPF_REG_1),
105 BPF_EXIT_INSN(),
107 .prog_type = BPF_PROG_TYPE_SCHED_CLS,
108 .result = ACCEPT,
109 .retval = 0,
112 "DIV64 by 0, zero check, cls",
113 .insns = {
114 BPF_MOV32_IMM(BPF_REG_1, 0),
115 BPF_MOV32_IMM(BPF_REG_0, 1),
116 BPF_ALU64_REG(BPF_DIV, BPF_REG_0, BPF_REG_1),
117 BPF_EXIT_INSN(),
119 .prog_type = BPF_PROG_TYPE_SCHED_CLS,
120 .result = ACCEPT,
121 .retval = 0,
124 "MOD32 by 0, zero check ok, cls",
125 .insns = {
126 BPF_MOV32_IMM(BPF_REG_0, 42),
127 BPF_MOV32_IMM(BPF_REG_1, 3),
128 BPF_MOV32_IMM(BPF_REG_2, 5),
129 BPF_ALU32_REG(BPF_MOD, BPF_REG_2, BPF_REG_1),
130 BPF_MOV64_REG(BPF_REG_0, BPF_REG_2),
131 BPF_EXIT_INSN(),
133 .prog_type = BPF_PROG_TYPE_SCHED_CLS,
134 .result = ACCEPT,
135 .retval = 2,
138 "MOD32 by 0, zero check 1, cls",
139 .insns = {
140 BPF_MOV32_IMM(BPF_REG_1, 0),
141 BPF_MOV32_IMM(BPF_REG_0, 1),
142 BPF_ALU32_REG(BPF_MOD, BPF_REG_0, BPF_REG_1),
143 BPF_EXIT_INSN(),
145 .prog_type = BPF_PROG_TYPE_SCHED_CLS,
146 .result = ACCEPT,
147 .retval = 1,
150 "MOD32 by 0, zero check 2, cls",
151 .insns = {
152 BPF_LD_IMM64(BPF_REG_1, 0xffffffff00000000LL),
153 BPF_MOV32_IMM(BPF_REG_0, 1),
154 BPF_ALU32_REG(BPF_MOD, BPF_REG_0, BPF_REG_1),
155 BPF_EXIT_INSN(),
157 .prog_type = BPF_PROG_TYPE_SCHED_CLS,
158 .result = ACCEPT,
159 .retval = 1,
162 "MOD64 by 0, zero check 1, cls",
163 .insns = {
164 BPF_MOV32_IMM(BPF_REG_1, 0),
165 BPF_MOV32_IMM(BPF_REG_0, 2),
166 BPF_ALU64_REG(BPF_MOD, BPF_REG_0, BPF_REG_1),
167 BPF_EXIT_INSN(),
169 .prog_type = BPF_PROG_TYPE_SCHED_CLS,
170 .result = ACCEPT,
171 .retval = 2,
174 "MOD64 by 0, zero check 2, cls",
175 .insns = {
176 BPF_MOV32_IMM(BPF_REG_1, 0),
177 BPF_MOV32_IMM(BPF_REG_0, -1),
178 BPF_ALU64_REG(BPF_MOD, BPF_REG_0, BPF_REG_1),
179 BPF_EXIT_INSN(),
181 .prog_type = BPF_PROG_TYPE_SCHED_CLS,
182 .result = ACCEPT,
183 .retval = -1,