From 36c961ad9dc0e5b72efc784a57717424a02bfa00 Mon Sep 17 00:00:00 2001 From: Simone Weiß Date: Mon, 15 Apr 2024 14:30:03 +0200 Subject: tools/syz-db: add more usage info for syz-db MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Add some short notes on how syz-db can also be used manually. Signed-off-by: Simone Weiß --- docs/db.md | 59 ++++++++++++++++++++++++++++++++++++++++++++++++++ tools/syz-db/syz-db.go | 23 +++++++++++++++----- 2 files changed, 77 insertions(+), 5 deletions(-) create mode 100644 docs/db.md diff --git a/docs/db.md b/docs/db.md new file mode 100644 index 000000000..e77daee59 --- /dev/null +++ b/docs/db.md @@ -0,0 +1,59 @@ +# syz-db + +`syz-db` program can be used to manipulate corpus.db databases that are used +by syz-managers. + +## Build + +Build `syz-db` with `make db` or by changing to `tools/syz-db` and run `go build`. + +## Options + +`syz-db` currently overs the following generic arguments: + +```shell + -arch string + target arch + -os string + target OS + -version uint + database version + -vv int + verbosity +``` + +That can be used with + +``` + syz-db pack dir corpus.db +``` + +to pack a database + +``` + syz-db unpack corpus.db dir +``` + +to unpack a database. A file containing performed syscalls will be returned. + +``` + syz-db merge dst-corpus.db add-corpus.db* add-prog* +``` + +to merge databases. No additional file will be created: The first file will be replaced by the merged result. + +``` + syz-db bench corpus.db +``` + +to run a deserialization benchmark. For example: + +``` +syz-db -os=linux -arch=amd64 bench corpus.db +``` + +could give an output like + +``` +allocs 123 MB (123 M), next GC 123 MB, sys heap 123 MB, live allocs 123 MB (123 M), time 324s. +``` diff --git a/tools/syz-db/syz-db.go b/tools/syz-db/syz-db.go index 8d261307a..47ecc62bb 100644 --- a/tools/syz-db/syz-db.go +++ b/tools/syz-db/syz-db.go @@ -73,11 +73,24 @@ func main() { } func usage() { - fmt.Fprintf(os.Stderr, "usage:\n") - fmt.Fprintf(os.Stderr, " syz-db pack dir corpus.db\n") - fmt.Fprintf(os.Stderr, " syz-db unpack corpus.db dir\n") - fmt.Fprintf(os.Stderr, " syz-db merge dst-corpus.db add-corpus.db* add-prog*\n") - fmt.Fprintf(os.Stderr, " syz-db bench corpus.db\n") + fmt.Fprintf(os.Stderr, `usage: syz-db can be used to manipulate corpus +databases that are used by syz-managers. The following generic arguments are +offered: + -arch string + -os string + -version uint + -vv int + + they can be used for: + packing a database: + syz-db pack dir corpus.db + unpacking a database. A file containing performed syscalls will be returned: + syz-db unpack corpus.db dir + merging databases. No additional file will be created: The first file will be replaced by the merged result: + syz-db merge dst-corpus.db add-corpus.db* add-prog* + running a deserialization benchmark: + syz-db bench corpus.db +`) os.Exit(1) } -- cgit mrf-deployment