• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

Alan-Jowett / ebpf-verifier / 22160684311

18 Feb 2026 09:20PM UTC coverage: 88.256% (+1.1%) from 87.142%
22160684311

push

github

elazarg
lint

Signed-off-by: Elazar Gershuni <elazarg@gmail.com>

78 of 82 new or added lines in 6 files covered. (95.12%)

402 existing lines in 18 files now uncovered.

10731 of 12159 relevant lines covered (88.26%)

837642.51 hits per line

Source File
Press 'n' to go to next uncovered line, 'b' for previous

98.54
/src/test/test_conformance.cpp
1
// Copyright (c) Prevail Verifier contributors.
2
// SPDX-License-Identifier: MIT
3

4
// Conformance tests using direct parsing from bpf_conformance_core.
5
// Tests verify soundness: the expected return value must be within
6
// the verifier's computed range.
7

8
#include <catch2/catch_all.hpp>
9

10
#include <cstddef>
11
#include <filesystem>
12
#include <span>
13
#include <string>
14

15
#include <bpf_conformance_core/bpf_conformance.h>
16
#include <bpf_conformance_core/bpf_test_parser.h>
17

18
#include "spec/vm_isa.hpp"
19
#include "test/ebpf_yaml.hpp"
20

21
/**
22
 * @brief Run a conformance test by parsing the test file directly and
23
 * verifying that the expected result is sound (within the verifier's range).
24
 *
25
 * @param filename Test file name relative to external/bpf_conformance/tests/
26
 * @param expect_verification_failure If true, expect verification to fail
27
 */
28
static void test_conformance(const std::string& filename, bool expect_verification_failure = false) {
626✔
29
    const std::filesystem::path test_path = "external/bpf_conformance/tests/" + filename;
626✔
30

31
    // Parse the test file to get memory, expected result, and instructions
32
    auto [input_memory, expected_value, expected_error, instructions] = parse_test_file(test_path);
626✔
33

34
    // Surface any expected error from the test file for diagnostic purposes
35
    if (!expected_error.empty()) {
626✔
UNCOV
36
        INFO("Test file specifies expected error: " << expected_error);
×
UNCOV
37
    }
×
38

39
    // Skip tests with no instructions
40
    if (instructions.empty()) {
626✔
UNCOV
41
        SKIP("Test file has no instructions");
×
42
        return;
43
    }
44

45
    // Convert ebpf_inst (from bpf_conformance_core) to EbpfInst
46
    // Both are layout-compatible, so we can use reinterpret_cast on a span
47
    static_assert(sizeof(ebpf_inst) == sizeof(prevail::EbpfInst));
313✔
48
    static_assert(alignof(ebpf_inst) == alignof(prevail::EbpfInst));
313✔
49
    static_assert(offsetof(ebpf_inst, opcode) == offsetof(prevail::EbpfInst, opcode));
313✔
50
    static_assert(offsetof(ebpf_inst, offset) == offsetof(prevail::EbpfInst, offset));
313✔
51
    static_assert(offsetof(ebpf_inst, imm) == offsetof(prevail::EbpfInst, imm));
313✔
52
    const std::span<const prevail::EbpfInst> ebpf_instructions{
313✔
53
        reinterpret_cast<const prevail::EbpfInst*>(instructions.data()), instructions.size()};
626✔
54

55
    // Run the verifier
56
    const auto result = prevail::run_conformance_test_case(input_memory, ebpf_instructions, false);
626✔
57

58
    if (expect_verification_failure) {
626✔
59
        // We expect verification to fail for this test
60
        if (!result.error_reason.empty()) {
2✔
UNCOV
61
            INFO("Error reason: " << result.error_reason);
×
UNCOV
62
        }
×
63
        REQUIRE_FALSE(result.success);
2✔
64
        return;
2✔
65
    }
66

67
    // Verification should succeed
68
    REQUIRE(result.success);
624✔
69

70
    // Soundness check: the expected value must be within the verifier's range
71
    // This is the key improvement - we check containment rather than exact equality
72
    const auto expected_signed = static_cast<int64_t>(expected_value);
624✔
73
    const bool is_sound = result.r0_value.contains(expected_signed);
624✔
74

75
    INFO("Expected value: 0x" << std::hex << expected_value << " (" << std::dec << expected_signed << ")");
936✔
76
    INFO("Verifier range: " << result.r0_value);
936✔
77

78
    REQUIRE(is_sound);
624✔
79
}
628✔
80

81
// Standard test macro - checks soundness (expected value is within verifier's range)
82
#define TEST_CONFORMANCE(filename) \
83
    TEST_CASE("conformance_check " filename, "[conformance]") { test_conformance(filename); }
84

85
// Tests that are expected to fail verification (the program is rejected)
86
#define TEST_CONFORMANCE_VERIFICATION_FAILED(filename) \
87
    TEST_CASE("conformance_check " filename, "[conformance]") { test_conformance(filename, true); }
88

89
TEST_CONFORMANCE("add.data")
5✔
90
TEST_CONFORMANCE("add64.data")
5✔
91
TEST_CONFORMANCE("alu-arith.data")
5✔
92
TEST_CONFORMANCE("alu-bit.data")
5✔
93
TEST_CONFORMANCE("alu64-arith.data")
5✔
94
TEST_CONFORMANCE("alu64-bit.data")
5✔
95
TEST_CONFORMANCE("arsh32-imm.data")
5✔
96
TEST_CONFORMANCE("arsh32-imm-high.data")
5✔
97
TEST_CONFORMANCE("arsh32-imm-neg.data")
5✔
98
TEST_CONFORMANCE("arsh32-reg.data")
5✔
99
TEST_CONFORMANCE("arsh32-reg-high.data")
5✔
100
TEST_CONFORMANCE("arsh32-reg-neg.data")
5✔
101
TEST_CONFORMANCE("arsh64-imm.data")
5✔
102
TEST_CONFORMANCE("arsh64-imm-high.data")
5✔
103
TEST_CONFORMANCE("arsh64-imm-neg.data")
5✔
104
TEST_CONFORMANCE("arsh64-reg.data")
5✔
105
TEST_CONFORMANCE("arsh64-reg-high.data")
5✔
106
TEST_CONFORMANCE("arsh64-reg-neg.data")
5✔
107
TEST_CONFORMANCE("be16-high.data")
5✔
108
TEST_CONFORMANCE("be16.data")
5✔
109
TEST_CONFORMANCE("be32-high.data")
5✔
110
TEST_CONFORMANCE("be32.data")
5✔
111
TEST_CONFORMANCE("be64.data")
5✔
112
TEST_CONFORMANCE("bswap16.data")
5✔
113
TEST_CONFORMANCE("bswap32.data")
5✔
114
TEST_CONFORMANCE("bswap64.data")
5✔
115
TEST_CONFORMANCE("call_local.data")
5✔
116
TEST_CONFORMANCE("call_unwind_fail.data")
5✔
117
TEST_CONFORMANCE("callx.data")
5✔
118
TEST_CONFORMANCE("div32-by-zero-reg.data")
5✔
119
TEST_CONFORMANCE("div32-by-zero-reg-2.data")
5✔
120
TEST_CONFORMANCE("div32-high-divisor.data")
5✔
121
TEST_CONFORMANCE("div32-imm.data")
5✔
122
TEST_CONFORMANCE("div32-reg.data")
5✔
123
TEST_CONFORMANCE("div64-by-zero-reg.data")
5✔
124
TEST_CONFORMANCE("div64-imm.data")
5✔
125
TEST_CONFORMANCE("div64-negative-imm.data")
5✔
126
TEST_CONFORMANCE("div64-negative-reg.data")
5✔
127
TEST_CONFORMANCE("div64-reg.data")
5✔
128
TEST_CONFORMANCE("exit-not-last.data")
5✔
129
TEST_CONFORMANCE("exit.data")
5✔
130
TEST_CONFORMANCE("j-signed-imm.data")
5✔
131
TEST_CONFORMANCE("ja32.data")
5✔
132
TEST_CONFORMANCE("jeq-imm.data")
5✔
133
TEST_CONFORMANCE("jeq-reg.data")
5✔
134
TEST_CONFORMANCE("jeq32-imm.data")
5✔
135
TEST_CONFORMANCE("jeq32-reg.data")
5✔
136
TEST_CONFORMANCE("jge-imm.data")
5✔
137
TEST_CONFORMANCE("jge-reg.data")
5✔
138
TEST_CONFORMANCE("jge32-imm.data")
5✔
139
TEST_CONFORMANCE("jge32-reg.data")
5✔
140
TEST_CONFORMANCE("jgt-imm.data")
5✔
141
TEST_CONFORMANCE("jgt-reg.data")
5✔
142
TEST_CONFORMANCE("jgt32-imm.data")
5✔
143
TEST_CONFORMANCE("jgt32-reg.data")
5✔
144
TEST_CONFORMANCE("jit-bounce.data")
5✔
145
TEST_CONFORMANCE("jle-imm.data")
5✔
146
TEST_CONFORMANCE("jle-reg.data")
5✔
147
TEST_CONFORMANCE("jle32-imm.data")
5✔
148
TEST_CONFORMANCE("jle32-reg.data")
5✔
149
TEST_CONFORMANCE("jlt-imm.data")
5✔
150
TEST_CONFORMANCE("jlt-reg.data")
5✔
151
TEST_CONFORMANCE("jlt32-imm.data")
5✔
152
TEST_CONFORMANCE("jlt32-reg.data")
5✔
153
TEST_CONFORMANCE("jne-reg.data")
5✔
154
TEST_CONFORMANCE("jne32-imm.data")
5✔
155
TEST_CONFORMANCE("jne32-reg.data")
5✔
156
TEST_CONFORMANCE("jset-imm.data")
5✔
157
TEST_CONFORMANCE("jset-reg.data")
5✔
158
TEST_CONFORMANCE("jset32-imm.data")
5✔
159
TEST_CONFORMANCE("jset32-reg.data")
5✔
160
TEST_CONFORMANCE("jsge-imm.data")
5✔
161
TEST_CONFORMANCE("jsge-reg.data")
5✔
162
TEST_CONFORMANCE("jsge32-imm.data")
5✔
163
TEST_CONFORMANCE("jsge32-reg.data")
6✔
164
TEST_CONFORMANCE("jsgt-imm.data")
5✔
165
TEST_CONFORMANCE("jsgt-reg.data")
5✔
166
TEST_CONFORMANCE("jsgt32-imm.data")
5✔
167
TEST_CONFORMANCE("jsgt32-reg.data")
5✔
168
TEST_CONFORMANCE("jsle-imm.data")
5✔
169
TEST_CONFORMANCE("jsle-reg.data")
5✔
170
TEST_CONFORMANCE("jsle32-imm.data")
5✔
171
TEST_CONFORMANCE("jsle32-reg.data")
5✔
172
TEST_CONFORMANCE("jslt-imm.data")
5✔
173
TEST_CONFORMANCE("jslt-reg.data")
5✔
174
TEST_CONFORMANCE("jslt32-imm.data")
5✔
175
TEST_CONFORMANCE("jslt32-reg.data")
5✔
176
TEST_CONFORMANCE("lddw.data")
5✔
177
TEST_CONFORMANCE("lddw2.data")
5✔
178
TEST_CONFORMANCE("ldxb-all.data")
5✔
179
TEST_CONFORMANCE("ldxb.data")
5✔
180
TEST_CONFORMANCE("ldxdw.data")
5✔
181
TEST_CONFORMANCE("ldxh-all.data")
5✔
182
TEST_CONFORMANCE("ldxh-all2.data")
5✔
183
TEST_CONFORMANCE("ldxh-same-reg.data")
5✔
184
TEST_CONFORMANCE("ldxh.data")
4✔
185
TEST_CONFORMANCE("ldxw-all.data")
5✔
186
TEST_CONFORMANCE("ldxw.data")
5✔
187
TEST_CONFORMANCE("le16.data")
5✔
188
TEST_CONFORMANCE("le16-high.data")
5✔
189
TEST_CONFORMANCE("le32.data")
5✔
190
TEST_CONFORMANCE("le32-high.data")
5✔
191
TEST_CONFORMANCE("le64.data")
5✔
192
TEST_CONFORMANCE("lock_add.data")
5✔
193
TEST_CONFORMANCE("lock_add32.data")
5✔
194
TEST_CONFORMANCE("lock_and.data")
5✔
195
TEST_CONFORMANCE("lock_and32.data")
5✔
196
TEST_CONFORMANCE("lock_cmpxchg.data")
5✔
197
TEST_CONFORMANCE("lock_cmpxchg32.data")
5✔
198
TEST_CONFORMANCE("lock_fetch_add.data")
5✔
199
TEST_CONFORMANCE("lock_fetch_add32.data")
5✔
200
TEST_CONFORMANCE("lock_fetch_and.data")
5✔
201
TEST_CONFORMANCE("lock_fetch_and32.data")
5✔
202
TEST_CONFORMANCE("lock_fetch_or.data")
5✔
203
TEST_CONFORMANCE("lock_fetch_or32.data")
5✔
204
TEST_CONFORMANCE("lock_fetch_xor.data")
5✔
205
TEST_CONFORMANCE("lock_fetch_xor32.data")
5✔
206
TEST_CONFORMANCE("lock_or.data")
5✔
207
TEST_CONFORMANCE("lock_or32.data")
5✔
208
TEST_CONFORMANCE("lock_xchg.data")
5✔
209
TEST_CONFORMANCE("lock_xchg32.data")
5✔
210
TEST_CONFORMANCE("lock_xor.data")
5✔
211
TEST_CONFORMANCE("lock_xor32.data")
5✔
212
TEST_CONFORMANCE("lsh32-imm.data")
5✔
213
TEST_CONFORMANCE("lsh32-imm-high.data")
5✔
214
TEST_CONFORMANCE("lsh32-imm-neg.data")
5✔
215
TEST_CONFORMANCE("lsh32-reg.data")
5✔
216
TEST_CONFORMANCE("lsh32-reg-high.data")
5✔
217
TEST_CONFORMANCE("lsh32-reg-neg.data")
5✔
218
TEST_CONFORMANCE("lsh64-imm.data")
5✔
219
TEST_CONFORMANCE("lsh64-imm-high.data")
5✔
220
TEST_CONFORMANCE("lsh64-imm-neg.data")
5✔
221
TEST_CONFORMANCE("lsh64-reg.data")
5✔
222
TEST_CONFORMANCE("lsh64-reg-high.data")
5✔
223
TEST_CONFORMANCE("lsh64-reg-neg.data")
5✔
224
TEST_CONFORMANCE_VERIFICATION_FAILED("mem-len.data")
5✔
225
TEST_CONFORMANCE("mod-by-zero-reg.data")
5✔
226
TEST_CONFORMANCE("mod.data")
5✔
227
TEST_CONFORMANCE("mod32.data")
5✔
228
TEST_CONFORMANCE("mod64-by-zero-reg.data")
5✔
229
TEST_CONFORMANCE("mod64.data")
5✔
230
TEST_CONFORMANCE("mov.data")
5✔
231
TEST_CONFORMANCE("mov64.data")
5✔
232
TEST_CONFORMANCE("mov64-sign-extend.data")
5✔
233
TEST_CONFORMANCE("movsx1632-reg.data")
5✔
234
TEST_CONFORMANCE("movsx1664-reg.data")
5✔
235
TEST_CONFORMANCE("movsx3264-reg.data")
5✔
236
TEST_CONFORMANCE("movsx832-reg.data")
5✔
237
TEST_CONFORMANCE("movsx864-reg.data")
5✔
238
TEST_CONFORMANCE("mul32-imm.data")
5✔
239
TEST_CONFORMANCE("mul32-intmin-by-negone-imm.data")
5✔
240
TEST_CONFORMANCE("mul32-intmin-by-negone-reg.data")
5✔
241
TEST_CONFORMANCE("mul32-reg-overflow.data")
5✔
242
TEST_CONFORMANCE("mul32-reg.data")
5✔
243
TEST_CONFORMANCE("mul64-imm.data")
5✔
244
TEST_CONFORMANCE("mul64-intmin-by-negone-imm.data")
5✔
245
TEST_CONFORMANCE("mul64-intmin-by-negone-reg.data")
5✔
246
TEST_CONFORMANCE("mul64-reg.data")
5✔
247
TEST_CONFORMANCE("neg.data")
5✔
248
TEST_CONFORMANCE("neg32-intmin-imm.data")
5✔
249
TEST_CONFORMANCE("neg32-intmin-reg.data")
5✔
250
TEST_CONFORMANCE("neg64.data")
5✔
251
TEST_CONFORMANCE("neg64-intmin-imm.data")
5✔
252
TEST_CONFORMANCE("neg64-intmin-reg.data")
5✔
253
TEST_CONFORMANCE("prime.data")
5✔
254
TEST_CONFORMANCE("rsh32-imm.data")
5✔
255
TEST_CONFORMANCE("rsh32-imm-high.data")
5✔
256
TEST_CONFORMANCE("rsh32-imm-neg.data")
5✔
257
TEST_CONFORMANCE("rsh32-reg.data")
5✔
258
TEST_CONFORMANCE("rsh32-reg-high.data")
5✔
259
TEST_CONFORMANCE("rsh32-reg-neg.data")
5✔
260
TEST_CONFORMANCE("rsh64-imm.data")
5✔
261
TEST_CONFORMANCE("rsh64-imm-high.data")
5✔
262
TEST_CONFORMANCE("rsh64-imm-neg.data")
5✔
263
TEST_CONFORMANCE("rsh64-reg.data")
5✔
264
TEST_CONFORMANCE("rsh64-reg-high.data")
5✔
265
TEST_CONFORMANCE("rsh64-reg-neg.data")
5✔
266
TEST_CONFORMANCE("sdiv32-by-zero-imm.data")
5✔
267
TEST_CONFORMANCE("sdiv32-by-zero-reg.data")
5✔
268
TEST_CONFORMANCE("sdiv32-imm.data")
5✔
269
TEST_CONFORMANCE("sdiv32-intmin-by-negone-imm.data")
5✔
270
TEST_CONFORMANCE("sdiv32-intmin-by-negone-reg.data")
5✔
271
TEST_CONFORMANCE("sdiv32-reg.data")
5✔
272
TEST_CONFORMANCE("sdiv64-by-zero-imm.data")
5✔
273
TEST_CONFORMANCE("sdiv64-by-zero-reg.data")
5✔
274
TEST_CONFORMANCE("sdiv64-imm.data")
5✔
275
TEST_CONFORMANCE("sdiv64-intmin-by-negone-imm.data")
5✔
276
TEST_CONFORMANCE("sdiv64-intmin-by-negone-reg.data")
5✔
277
TEST_CONFORMANCE("sdiv64-reg.data")
5✔
278
TEST_CONFORMANCE("smod32-intmin-by-negone-imm.data")
5✔
279
TEST_CONFORMANCE("smod32-intmin-by-negone-reg.data")
5✔
280
TEST_CONFORMANCE("smod32-neg-by-neg-imm.data")
5✔
281
TEST_CONFORMANCE("smod32-neg-by-neg-reg.data")
5✔
282
TEST_CONFORMANCE("smod32-neg-by-pos-imm.data")
5✔
283
TEST_CONFORMANCE("smod32-neg-by-pos-reg.data")
5✔
284
TEST_CONFORMANCE("smod32-neg-by-zero-imm.data")
5✔
285
TEST_CONFORMANCE("smod32-neg-by-zero-reg.data")
5✔
286
TEST_CONFORMANCE("smod32-pos-by-neg-imm.data")
5✔
287
TEST_CONFORMANCE("smod32-pos-by-neg-reg.data")
5✔
288
TEST_CONFORMANCE("smod64-intmin-by-negone-imm.data")
5✔
289
TEST_CONFORMANCE("smod64-intmin-by-negone-reg.data")
5✔
290
TEST_CONFORMANCE("smod64-neg-by-neg-imm.data")
5✔
291
TEST_CONFORMANCE("smod64-neg-by-neg-reg.data")
5✔
292
TEST_CONFORMANCE("smod64-neg-by-pos-imm.data")
5✔
293
TEST_CONFORMANCE("smod64-neg-by-pos-reg.data")
5✔
294
TEST_CONFORMANCE("smod64-neg-by-zero-imm.data")
5✔
295
TEST_CONFORMANCE("smod64-neg-by-zero-reg.data")
5✔
296
TEST_CONFORMANCE("smod64-pos-by-neg-imm.data")
5✔
297
TEST_CONFORMANCE("smod64-pos-by-neg-reg.data")
5✔
298
TEST_CONFORMANCE("stack.data")
5✔
299
TEST_CONFORMANCE("stb.data")
5✔
300
TEST_CONFORMANCE("stdw.data")
5✔
301
TEST_CONFORMANCE("sth.data")
5✔
302
TEST_CONFORMANCE("stw.data")
5✔
303
TEST_CONFORMANCE("stxb-all.data")
5✔
304
TEST_CONFORMANCE("stxb-all2.data")
5✔
305
TEST_CONFORMANCE("stxb-chain.data")
5✔
306
TEST_CONFORMANCE("stxb.data")
5✔
307
TEST_CONFORMANCE("stxdw.data")
5✔
308
TEST_CONFORMANCE("stxh.data")
5✔
309
TEST_CONFORMANCE("stxw.data")
5✔
310
TEST_CONFORMANCE("swap16.data")
5✔
311
TEST_CONFORMANCE("swap32.data")
5✔
312
TEST_CONFORMANCE("swap64.data")
5✔
313
TEST_CONFORMANCE("subnet.data")
5✔
314

315
// RFC 9669 generated tests (kept as individual test cases, matching the pattern above).
316
TEST_CONFORMANCE("rfc9669_add32.data")
5✔
317
TEST_CONFORMANCE("rfc9669_add64.data")
5✔
318
TEST_CONFORMANCE("rfc9669_and32.data")
5✔
319
TEST_CONFORMANCE("rfc9669_and64.data")
5✔
320
TEST_CONFORMANCE("rfc9669_arsh32.data")
5✔
321
TEST_CONFORMANCE("rfc9669_arsh64.data")
5✔
322
TEST_CONFORMANCE("rfc9669_be16.data")
5✔
323
TEST_CONFORMANCE("rfc9669_be32.data")
5✔
324
TEST_CONFORMANCE("rfc9669_be64.data")
5✔
325
TEST_CONFORMANCE("rfc9669_bswap16.data")
5✔
326
TEST_CONFORMANCE("rfc9669_bswap32.data")
5✔
327
TEST_CONFORMANCE("rfc9669_bswap64.data")
5✔
328
TEST_CONFORMANCE("rfc9669_call_local.data")
5✔
329
TEST_CONFORMANCE("rfc9669_div32.data")
5✔
330
TEST_CONFORMANCE("rfc9669_div64.data")
5✔
331
TEST_CONFORMANCE("rfc9669_exit.data")
5✔
332
TEST_CONFORMANCE("rfc9669_ja.data")
5✔
333
TEST_CONFORMANCE("rfc9669_ja32.data")
5✔
334
TEST_CONFORMANCE("rfc9669_jeq.data")
5✔
335
TEST_CONFORMANCE("rfc9669_jge.data")
5✔
336
TEST_CONFORMANCE("rfc9669_jgt.data")
5✔
337
TEST_CONFORMANCE("rfc9669_jle.data")
5✔
338
TEST_CONFORMANCE("rfc9669_jlt.data")
5✔
339
TEST_CONFORMANCE("rfc9669_jne.data")
5✔
340
TEST_CONFORMANCE("rfc9669_jset.data")
5✔
341
TEST_CONFORMANCE("rfc9669_jsge.data")
5✔
342
TEST_CONFORMANCE("rfc9669_jsgt.data")
5✔
343
TEST_CONFORMANCE("rfc9669_jsle.data")
5✔
344
TEST_CONFORMANCE("rfc9669_jslt.data")
5✔
345
TEST_CONFORMANCE("rfc9669_lddw.data")
5✔
346
TEST_CONFORMANCE("rfc9669_ldxb.data")
5✔
347
TEST_CONFORMANCE("rfc9669_ldxdw.data")
5✔
348
TEST_CONFORMANCE("rfc9669_ldxh.data")
5✔
349
TEST_CONFORMANCE("rfc9669_ldxsb.data")
5✔
350
TEST_CONFORMANCE("rfc9669_ldxsh.data")
5✔
351
TEST_CONFORMANCE("rfc9669_ldxsw.data")
5✔
352
TEST_CONFORMANCE("rfc9669_ldxw.data")
5✔
353
TEST_CONFORMANCE("rfc9669_le16.data")
5✔
354
TEST_CONFORMANCE("rfc9669_le32.data")
5✔
355
TEST_CONFORMANCE("rfc9669_le64.data")
5✔
356
TEST_CONFORMANCE("rfc9669_lock_add32.data")
5✔
357
TEST_CONFORMANCE("rfc9669_lock_add64.data")
5✔
358
TEST_CONFORMANCE("rfc9669_lock_and32.data")
5✔
359
TEST_CONFORMANCE("rfc9669_lock_and64.data")
5✔
360
TEST_CONFORMANCE("rfc9669_lock_cmpxchg32.data")
5✔
361
TEST_CONFORMANCE("rfc9669_lock_cmpxchg64.data")
5✔
362
TEST_CONFORMANCE("rfc9669_lock_fetch_add32.data")
5✔
363
TEST_CONFORMANCE("rfc9669_lock_fetch_add64.data")
5✔
364
TEST_CONFORMANCE("rfc9669_lock_or32.data")
5✔
365
TEST_CONFORMANCE("rfc9669_lock_or64.data")
5✔
366
TEST_CONFORMANCE("rfc9669_lock_xchg32.data")
5✔
367
TEST_CONFORMANCE("rfc9669_lock_xchg64.data")
5✔
368
TEST_CONFORMANCE("rfc9669_lock_xor32.data")
5✔
369
TEST_CONFORMANCE("rfc9669_lock_xor64.data")
5✔
370
TEST_CONFORMANCE("rfc9669_lsh32.data")
5✔
371
TEST_CONFORMANCE("rfc9669_lsh64.data")
5✔
372
TEST_CONFORMANCE("rfc9669_mod32.data")
5✔
373
TEST_CONFORMANCE("rfc9669_mod64.data")
5✔
374
TEST_CONFORMANCE("rfc9669_mov32.data")
5✔
375
TEST_CONFORMANCE("rfc9669_mov64.data")
5✔
376
TEST_CONFORMANCE("rfc9669_movsx.data")
5✔
377
TEST_CONFORMANCE("rfc9669_mul32.data")
5✔
378
TEST_CONFORMANCE("rfc9669_mul64.data")
5✔
379
TEST_CONFORMANCE("rfc9669_neg32.data")
5✔
380
TEST_CONFORMANCE("rfc9669_neg64.data")
5✔
381
TEST_CONFORMANCE("rfc9669_or32.data")
5✔
382
TEST_CONFORMANCE("rfc9669_or64.data")
5✔
383
TEST_CONFORMANCE("rfc9669_rsh32.data")
5✔
384
TEST_CONFORMANCE("rfc9669_rsh64.data")
5✔
385
TEST_CONFORMANCE("rfc9669_sdiv32.data")
5✔
386
TEST_CONFORMANCE("rfc9669_sdiv64.data")
5✔
387
TEST_CONFORMANCE("rfc9669_smod32.data")
5✔
388
TEST_CONFORMANCE("rfc9669_smod64.data")
5✔
389
TEST_CONFORMANCE("rfc9669_stb.data")
5✔
390
TEST_CONFORMANCE("rfc9669_stdw.data")
5✔
391
TEST_CONFORMANCE("rfc9669_sth.data")
5✔
392
TEST_CONFORMANCE("rfc9669_stw.data")
5✔
393
TEST_CONFORMANCE("rfc9669_stxb.data")
5✔
394
TEST_CONFORMANCE("rfc9669_stxdw.data")
5✔
395
TEST_CONFORMANCE("rfc9669_stxh.data")
5✔
396
TEST_CONFORMANCE("rfc9669_stxw.data")
5✔
397
TEST_CONFORMANCE("rfc9669_sub32.data")
5✔
398
TEST_CONFORMANCE("rfc9669_sub64.data")
5✔
399
TEST_CONFORMANCE("rfc9669_swap16.data")
5✔
400
TEST_CONFORMANCE("rfc9669_swap32.data")
5✔
401
TEST_CONFORMANCE("rfc9669_swap64.data")
5✔
402
TEST_CONFORMANCE("rfc9669_xor32.data")
5✔
403
TEST_CONFORMANCE("rfc9669_xor64.data")
5✔
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc