1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
|
# programs where zc0 and the self-hosted compiler print different things on purpose.
# src/tools/parity.sh still runs them and shows the difference as known, and it does
# not fail the run; when one starts to agree it is reported as stale and fails the
# run, so its line goes.
# one program per line: the path, then # and the reason.
#
# zc0 reads types and ownership tags and throws them away. it has no ownership
# analysis and no memdebug checks, so it neither warns about, traps on nor frees what
# the self-hosted compiler does.
tests/programs/doublefree.zc # memdebug on: only the self-hosted compiler emits the double free check
tests/programs/scrub.zc # ownership: the analyzer warns about the use after free, zc0 runs it
tests/programs/uaf.zc # ownership: the analyzer warns about the use after free; zc0 prints nothing
tests/programs/uaf_in.zc # memdebug on: only the self-hosted compiler emits the use after free check
examples/lists.zc # ownership: the block's owner frees at its end, zc0 never frees
# the next program reads a local it never sets when stdin is empty, so it prints stack garbage
tests/programs/bench_strings.zc # reads the repeat count from stdin; with none, acc is uninitialized
# zc0 reads unbounded and ignores it, and emits no index checks at all
tests/programs/bounds_fixed.zc # bounds checks: only the self-hosted compiler checks a fixed array index
tests/programs/bounds_heap.zc # bounds checks: only the self-hosted compiler checks a pointer into a heap block
tests/programs/bounds_proof.zc # bounds checks: zc0 emits none, so the variable-bound loop is as short as the unbounded one
tests/programs/bounds_hoist.zc # bounds checks: zc0 emits none, so the loop past the end runs on
tests/programs/bounds_body.zc # bounds checks: zc0 emits none, so the moved index reads outside the array
tests/programs/bounds_ptr.zc # bounds checks: zc0 emits none, so the loop past the block does not fault
|