gvisor/tools
Michael Pratt 62ea5c0a22 checklinkname: rudimentary type-checking of linkname directives
This CL introduces a 'checklinkname' analyzer, which provides rudimentary
type-checking that verifies that function signatures on the local and remote
sides of //go:linkname directives match expected values.

If the Go standard library changes the definitions of any of these function,
checklinkname will flag the change as a finding, providing an error informing
the gVisor team to adapt to the upstream changes. This allows us to eliminate
the majority of gVisor's forward-looking negative build tags, as we can catch
mismatches in testing [1].

The remaining forward-looking negative build tags are covering shared struct
definitions, which I hope to add to checklinkname in a future CL.

[1] Of course, semantics/requirements can change without the signature
changing, so we still must be careful, but this covers the common case.

PiperOrigin-RevId: 387873847
2021-07-30 13:42:15 -07:00
..
bazeldefs Sentry: Measure the time it takes to initialize the Sentry. 2021-07-07 12:48:24 -07:00
bigquery internal import of Go cloud client libraries 2021-05-06 10:48:21 -07:00
checkescape Mix checklocks and atomic analyzers. 2021-07-01 15:07:56 -07:00
checklinkname checklinkname: rudimentary type-checking of linkname directives 2021-07-30 13:42:15 -07:00
checklocks Mix checklocks and atomic analyzers. 2021-07-01 15:07:56 -07:00
checkunsafe Remove go_tool_library references. 2021-02-02 09:37:09 -08:00
constraintutil Use go:build directives in generated files. 2021-07-27 18:14:05 -07:00
github Update GitHub packages. 2021-06-04 16:30:27 -07:00
go_generics Use go:build directives in generated files. 2021-07-27 18:14:05 -07:00
go_marshal Use go:build directives in generated files. 2021-07-27 18:14:05 -07:00
go_stateify Use go:build directives in generated files. 2021-07-27 18:14:05 -07:00
installers buildkite: update Go 2021-07-21 15:20:19 -07:00
nogo checklinkname: rudimentary type-checking of linkname directives 2021-07-30 13:42:15 -07:00
parsers Add go:build directives as required by Go 1.17's gofmt. 2021-07-20 16:28:45 -07:00
verity Implement Merkle tree generate tool binary 2021-03-11 17:54:29 -08:00
worker nogo: enable bazel workers and other optimizations. 2021-04-26 11:42:49 -07:00
yamltest Add YAML validation for configuration files. 2021-01-05 10:43:04 -08:00
BUILD Automatically enforce limited netstack dependencies 2021-04-14 10:26:02 -07:00
bazel.mk Update go-tools to 2020.2.1 2021-02-02 14:53:12 -08:00
bazel_gazelle_generate.patch Remove go_tool_library references. 2021-02-02 09:37:09 -08:00
defs.bzl nogo: enable bazel workers and other optimizations. 2021-04-26 11:42:49 -07:00
deps.bzl Internal change 2021-05-05 11:15:26 -07:00
go_branch.sh Update go-tools to 2020.2.1 2021-02-02 14:53:12 -08:00
images.mk Add BuildKite annotations for failures and profiles. 2020-12-30 15:09:12 -08:00
make_apt.sh make/release: Sign a package only if it isn't signed yet. 2021-03-11 21:59:51 -08:00
make_release.sh Fix specific releases and update install instructions. 2021-05-27 18:57:37 -07:00
rules_go_symbols.patch Update go-tools to 2020.2.1 2021-02-02 14:53:12 -08:00
rules_go_visibility.patch Remove go_tool_library references. 2021-02-02 09:37:09 -08:00
tag_release.sh Fix errors when the tagging GitHub releases 2020-10-20 19:30:14 -07:00
workspace_status.sh Make build command more robust. 2021-01-05 18:55:05 -08:00