go/cmd
Than McIntosh fb3622a928 signature-generator: add Go func signature fuzzing tools
Add a new subdirectory 'signature-fuzzer' to the x/tools/cmd
directory, with contents:

  internal/fuzz-generator      Guts of the signature fuzzer
  fuzz-driver                  Simple driver for the fuzzer
  fuzz-runner                  Test harness for doing iterative fuzzing

This set of tools is primarily of interest to compiler developers as
opposed to end users. The fuzzer generates random Go code with
"interesting" randomly chosen function signatures (random numbers of
parameters of randomly generated types), then emits code to call these
random functions with known inputs, as well as code that checks to
make sure parameter values were passed correctly and that returns
worked.  The generator tries to include odd scenarios and corner cases
(e.g. reflect calls, recursion, blank params, zero sized types, etc)
so as to explore all the nooks and crannies of the compiler.

This fuzzer was used during the bringup of the new register ABI (as
part of Go 1.17) to identify odd corner cases and flush out bugs. It
may be useful in the future if we have to support new ABI versions or
bring up register ABIs on new architectures.

See the README.md for more details.

Change-Id: Icbc89ddd07c3909a44a005deab43720c7a0dffde
Reviewed-on: https://go-review.googlesource.com/c/tools/+/350329
Reviewed-by: Jeremy Faller <jeremy@golang.org>
Trust: Than McIntosh <thanm@google.com>
Run-TryBot: Than McIntosh <thanm@google.com>
gopls-CI: kokoro <noreply+kokoro@google.com>
TryBot-Result: Gopher Robot <gobot@golang.org>
2022-03-01 16:32:20 +00:00
..
auth all: replace all usages of os/exec with golang.org/x/sys/execabs 2021-01-19 22:25:03 +00:00
benchcmp all: add copyright notices to files that are missing them 2021-01-06 17:23:47 +00:00
bundle all: fmt tests with new gofmt 2021-02-20 03:28:42 +00:00
callgraph cmd/callgraph: skip TestCallgraph on the windows-arm64-10 builder 2022-01-24 16:42:11 +00:00
compilebench all: replace all usages of os/exec with golang.org/x/sys/execabs 2021-01-19 22:25:03 +00:00
cover cmd: avoid printing redundant newlines 2021-11-08 18:39:25 +00:00
digraph
eg cmd: avoid printing redundant newlines 2021-11-08 18:39:25 +00:00
file2fuzz file2fuzz: add fuzzer corpus conversion tool 2021-07-26 20:19:17 +00:00
fiximports cmd/fiximports: skip TestDryRun on plan9-arm 2022-01-24 16:42:25 +00:00
getgo cmd/getgo: determine current version via /dl/?mode=json API 2021-06-07 15:22:48 +00:00
go-contrib-init all: replace all usages of os/exec with golang.org/x/sys/execabs 2021-01-19 22:25:03 +00:00
godex all: go fmt ./... 2021-02-20 03:28:52 +00:00
godoc internal/imports: update to permit multiple main modules 2022-02-22 17:36:43 +00:00
goimports cmd/goimports: recommend go install instead of go get in docs 2021-10-12 19:23:00 +00:00
gomvpkg cmd: avoid printing redundant newlines 2021-11-08 18:39:25 +00:00
gorename cmd/gorename: log 'go build' output on failure 2021-12-08 16:15:56 +00:00
gotype cmd: avoid printing redundant newlines 2021-11-08 18:39:25 +00:00
goyacc cmd/goyacc: reduce array sizes using smaller base types 2022-02-16 20:47:08 +00:00
guru all: various test fixes related to any 2021-12-09 15:47:16 +00:00
html2article copyright: test that all files in the repo have copyright notices 2021-01-11 22:19:46 +00:00
present playground: remove /share registration, add Proxy 2021-02-25 15:03:53 +00:00
present2md cmd/present2md: allow comments to be retained in translated document 2021-03-19 17:27:47 +00:00
signature-fuzzer signature-generator: add Go func signature fuzzing tools 2022-03-01 16:32:20 +00:00
splitdwarf all: go fmt ./... 2021-02-20 03:28:52 +00:00
ssadump
stress all: go fmt ./... 2021-02-20 03:28:52 +00:00
stringer x/tools/cmd/stringer: adjust generics tests 2021-10-28 00:09:41 +00:00
toolstash all: replace all usages of os/exec with golang.org/x/sys/execabs 2021-01-19 22:25:03 +00:00