diff options
| author | Dmitry Vyukov <dvyukov@google.com> | 2020-04-29 17:57:32 +0200 |
|---|---|---|
| committer | Dmitry Vyukov <dvyukov@google.com> | 2020-04-30 17:18:29 +0200 |
| commit | ec42220e7773fba548e379606fe445cb30f4c424 (patch) | |
| tree | ff6967f2eb11408cb99fe810f805c8c44d553832 /docs/syscall_descriptions.md | |
| parent | 136082ab38d86932bc3ed0087694e99d0e55491b (diff) | |
Makefile: generate descriptions on-the-fly
Checking in the generated descriptions files makes few things simpler,
but causes pain for pull requests: (1) PRs that touch descriptions
_always_ conflict, (2) PRs are large and harder to review,
(3) people sometimes forget to add auto-generated files.
The proposed way does not require us to hardcode lots of dependencies
in the Makefile (which is nice) and seem to work.
Let's see how it works.
The main contributor-visible consequence is that the auto-generated
files do not need to be checked-in now.
Credit for figuring the Makefile magic goes to @melver.
Fixes #1291
Diffstat (limited to 'docs/syscall_descriptions.md')
| -rw-r--r-- | docs/syscall_descriptions.md | 11 |
1 files changed, 4 insertions, 7 deletions
diff --git a/docs/syscall_descriptions.md b/docs/syscall_descriptions.md index 7cf715250..7e46fa2d8 100644 --- a/docs/syscall_descriptions.md +++ b/docs/syscall_descriptions.md @@ -76,17 +76,15 @@ so if `make extract` complains about missing header files or constants undefined try to use the latest [linux-next](https://git.kernel.org/pub/scm/linux/kernel/git/next/linux-next.git/log/) tree (or if it happens to be broken at the moment, try a slightly older linux-next tree).\ _Note_: `make extract` overwrites `.config` in `$KSRC` and `mrproper`'s it. +_Note_: `*.const` files are checked-in with the `*.txt` changes in the same commit. Then `make generate` updates generated code and `make` rebuilds binaries.\ Note: `make generate` does not require any kernel sources, native compilers, etc and is pure text processing. -Note: `make generate` also updates the SYZ_REVISION under executor/defs.h, which +Note: `make generate` also updates the SYZ_REVISION under `executor/defs.h`, which is required for machine check while running syz-manager. This should be taken care of especially if you are trying to rebase with your own change on syscall description. -Note: _all_ generated files (`*.const`, `*.go`, `*.h`) are checked-in with the -`*.txt` changes in the same commit. - Note: `make extract` extracts constants for all architectures which requires installed cross-compilers. If you get errors about missing compilers/libraries, try `sudo make install_prerequisites` or install equivalent package for your distro. @@ -121,9 +119,8 @@ The second step is translation of descriptions into Go code using [pkg/ast](/pkg/ast/) and [pkg/compiler](/pkg/compiler/)). This step uses syscall descriptions and the const files generated during the first step and produces instantiations of `Syscall` and `Type` types defined in [prog/types.go](/prog/types.go). -Here is an [example](/sys/akaros/gen/amd64.go) of the compiler output for Akaros. -This step also generates some minimal syscall metadata for C++ code in -[executor/syscalls.h](/executor/syscalls.h). +You can see an example of the compiler output for Akaros in `sys/akaros/gen/amd64.go`. +This step also generates some minimal syscall metadata for C++ code in `executor/syscalls.h`. ## Non-mainline subsystems |
