diff options
| author | Hrutvik Kanabar <hrutvik@google.com> | 2022-10-25 10:13:51 +0000 |
|---|---|---|
| committer | Aleksandr Nogikh <wp32pw@gmail.com> | 2022-11-21 11:06:14 +0100 |
| commit | d0405298b24db0e2a6b2abfdc8c7e5ebbe49d1a0 (patch) | |
| tree | c022669ce377e0c09376d60b45a01584c67c0989 /prog/prio.go | |
| parent | 7954d07c228dd9ce63b7ebd13239b4d1f2c35233 (diff) | |
prog, pkg/compiler: add `BufferCompressed` buffer type & `compressed_image` builtin
Create the `BufferCompressed` kind of `BufferType`, which will be used
to represent compressed data. Create the corresponding `compressed_image`
syzlang builtin, which is backed by `BufferCompressed`. For now, no
syscalls use this feature - this will be introduced in future commits.
We have to be careful to decompress the data before mutating, and
re-compress before storing. We make sure that any deserialised
`BufferCompressed` data is valid too.
`BufferCompressed` arguments are mutated using a generic heatmap. In
future, we could add variants of `BufferCompressed` or populate the
`BufferType` sub-kind, using it to choose different kinds of heatmap for
different uncompressed data formats.
Various operations on compressed data must be forbidden, so we check for
`BufferCompressed` in key places. We also have to ensure `compressed_image`
can only be used in syscalls that are marked `no_{generate,minimize}`.
Therefore, we add a generic compiler check which allows type
descriptions to require attributes on the syscalls which use them.
Diffstat (limited to 'prog/prio.go')
| -rw-r--r-- | prog/prio.go | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/prog/prio.go b/prog/prio.go index d0013b75d..535999c1a 100644 --- a/prog/prio.go +++ b/prog/prio.go @@ -96,7 +96,7 @@ func (target *Target) calcResourceUsage() map[string]map[int]weights { } case *BufferType: switch a.Kind { - case BufferBlobRand, BufferBlobRange, BufferText: + case BufferBlobRand, BufferBlobRange, BufferText, BufferCompressed: case BufferString, BufferGlob: if a.SubKind != "" { noteUsage(uses, c, 2, ctx.Dir, fmt.Sprintf("str-%v", a.SubKind)) |
