aboutsummaryrefslogtreecommitdiffstats
path: root/pkg/compiler/compiler.go
Commit message (Collapse)AuthorAgeFilesLines
* pkg/compiler: add builtin bool type aliasesDmitry Vyukov2018-01-081-0/+3
| | | | | | | | | | | | | | | | This adds builtin: type bool8 int8[0:1] type bool16 int16[0:1] type bool32 int32[0:1] type bool64 int64[0:1] type boolptr intptr[0:1] We used to use just int's for bools. But bool types provide several advantages: - make true/false probability equal - improve description expressiveness - reduce search space (we will take advantage of this later)
* sys: support type aliases (aka typedefs)Dmitry Vyukov2018-01-081-0/+5
| | | | | | | | | | | | | | | | | | | | | | Complex types that are often repeated can be given short type aliases using the following syntax: ``` type identifier underlying_type ``` For example: ``` type signalno int32[0:65] type net_port proc[20000, 4, int16be] ``` Then, type alias can be used instead of the underlying type in any contexts. Underlying type needs to be described as if it's a struct field, that is, with the base type if it's required. However, type alias can be used as syscall arguments as well. Underlying types are currently restricted to integer types, `ptr`, `ptr64`, `const`, `flags` and `proc` types.
* all: more assorted fuchsia supportDmitry Vyukov2017-09-221-2/+5
|
* pkg/compiler: don't genererate missing syscallsDmitry Vyukov2017-09-151-0/+2
| | | | | | | | We used to generate them only because manager had no idea what arch it is testing. So syscalls numbers had to match between all arches. This is not needed anymore. Also don't generate unreferenced structs/resources.
* prog, sys: move types to progDmitry Vyukov2017-09-051-13/+13
| | | | | | | | | | | Large overhaul moves syscalls and arg types from sys to prog. Sys package now depends on prog and contains only generated descriptions of syscalls. Introduce prog.Target type that encapsulates all targer properties, like syscall list, ptr/page size, etc. Also moves OS-dependent pieces like mmap call generation from prog to sys. Update #191
* sys: rename Call to SyscallDmitry Vyukov2017-09-051-1/+1
| | | | | In preparation for moving sys types to prog to avoid confusion between sys.Call and prog.Call.
* sys, pkg/compiler: move padding computation to compilerDmitry Vyukov2017-09-041-26/+33
| | | | This makes types constant during execution, everything is precomputed.
* pkg/compiler: use correct arch ptr sizeDmitry Vyukov2017-09-041-2/+2
|
* pkg/compiler: move checking code to a separate fileDmitry Vyukov2017-09-041-390/+0
|
* pkg/compiler: detect recursive struct declarationsDmitry Vyukov2017-09-041-22/+95
| | | | Update #217
* pkg/compiler: check and generate typesDmitry Vyukov2017-09-021-258/+323
| | | | | | Move most of the logic from sysgen to pkg/compiler. Update #217
* pkg/compiler: actually tolerate unsupported constsDmitry Vyukov2017-08-281-0/+5
| | | | | The previous commit removes errors on unsupported structs/resources, but their usages still error. Fix that.
* pkg/compiler: tolerate unsupported consts everywhereDmitry Vyukov2017-08-281-8/+3
| | | | | | Currently unsupported consts in structs and resources break build. However, that can well happen for arch-specific devices (e.g. Android). Make this non-fatal as it used to be.
* pkg/compiler: more static error checkingDmitry Vyukov2017-08-271-55/+233
| | | | Update #217
* pkg/compiler: move more const-processing code to compilerDmitry Vyukov2017-08-271-70/+126
|
* pkg/compiler, sys/syz-sysgen: move const handling to pkg/compilerDmitry Vyukov2017-08-271-7/+175
| | | | Now pkg/compiler deals with consts.
* sys/syz-extract: switch to the new parserDmitry Vyukov2017-08-181-0/+65