#
42d075f4 |
| 18-Feb-2025 |
Brooks Davis <brooks@FreeBSD.org> |
makesyscalls: Restore support for cpp in input
Allow patterns like this in syscalls.master:
#if 0 91 AUE_NULL RESERVED #else 91 AUE_NULL STD|CAPENABLED { int newsyscall(void); } #endif
m
makesyscalls: Restore support for cpp in input
Allow patterns like this in syscalls.master:
#if 0 91 AUE_NULL RESERVED #else 91 AUE_NULL STD|CAPENABLED { int newsyscall(void); } #endif
makesyscalls.lua and it's predecessor makesyscalls.sh (really an awk script with a tiny shell prolog) used a single pass parsing model where lines beginning with `#` were emitted into most generated files as they were read. I belive this was initially there to allow includes to be listed in syscalls.master, but Hyrum's Law[0] applies and people are using it for things like architecture-specific syscall definitions.
This use of CPP macro is unsound and there are a number of sharp edges in both the new and old implementations. The macros are unsound because not all the files were generate are run through CPP (or if they are not in the same context) and this will increasingly be true as we generate more things. Sharp edges include the fact that anything before the first syscall would be printed at a different scope (e.g., before an array is declared).
In this patch I collect each non-#include CPP directive and attach them to the syscall table or individual entries. All entries before the first syscall and after the last are attached to the prolog and epilog members. Within the syscall table all entries are attached to the next system calls's prolog member. In generators, each prolog entry is printed regardless of the system call's visibiilty which replicates the naive single pass model's behavior (including lots of empty blocks of #if/#else/#endif in the output). Unlike makesyscalls.lua, I discard none #define entries at the top of the file and print a warning as their usefulness appears limited.
[0] https://www.hyrumslaw.com
Reported by: kevans Reviewed by: kevans Sponsored by: DARPA, AFRL Pull Request: https://github.com/freebsd/freebsd-src/pull/1575
show more ...
|
#
ec86d763 |
| 22-Oct-2024 |
Brooks Davis <brooks@FreeBSD.org> |
sys/tools/syscalls: desupport capabilities.conf
We haven't used this since commit be67ea40c5a0 in 2021 so stop carrying it forward.
Also remove support for setting the list in syscalls.conf via the
sys/tools/syscalls: desupport capabilities.conf
We haven't used this since commit be67ea40c5a0 in 2021 so stop carrying it forward.
Also remove support for setting the list in syscalls.conf via the capenabled variable. This was last used by cloudabi (removed in 2021 by commit cf0ee8738e31).
show more ...
|
#
9ded074e |
| 21-Oct-2024 |
agge3 <sterspark@gmail.com> |
Refactor makesyscalls.lua into a library
* main.lua replicates the functionality of makesyscalls.lua * Individual files are generated by their associated module * Modules can be called as standalo
Refactor makesyscalls.lua into a library
* main.lua replicates the functionality of makesyscalls.lua * Individual files are generated by their associated module * Modules can be called as standalone scripts to generate a specific file * Data and procedures are performed by objects instead of procedual code * Bitmasks are replaced by declarative types * Temporary files are no longer produced, writing is stored in memory * Comments provide explanation to functions and semantics
Google Summer of Code 2024 Final Work Product
Co-authored-by: Warner Losh <imp@freebsd.org> Co-authored-by: Kyle Evans <kevans@freebsd.org> Co-authored-by: Brooks Davis <brooks@freebsd.org> Sponsored by: Google (GSoC 24) Pull Request: https://github.com/freebsd/freebsd-src/pull/1362 Signed-off-by: agge3 <sterspark@gmail.com>
show more ...
|