GSoC 2017 Work Product Submission
What is done
- Modified strace to be able to implement a pull-style syscall tracing API for Lua scripting.
- Added support for Lua scripting, implemented a pull-style C API. Lua scripts can select syscalls they want to be notified about; inspect PID of the traced process, syscall arguments, and return value (on syscall exit), inject return values and signals, read traced process’ memory, and make use of strace’ path-matching facilities.
- Implemented a helper Lua library that provides useful wrappers for the C API and a push-style API for hooking events (syscall entry and/or exit).
upokenfunction and exposed it to Lua scripts, allowing them to write traced process’ memory. Implemented
write_objwrapper function in the helper library.
- Added documentation (the “LUA SCRIPTING” section in the man page).
- Added tests for all the functionality implemented.
- (6b4efe9f) strace.c: refactor trace into two functions
- (0a9d8bfd) strace.c: move termination code to a separate function
- (099124e8) syscall.c: split trace_syscall() into 6 functions
Not merged yet:
- (061c6981) Initial support for LuaJIT scripting
- (648ee571) Introduce upoken function and expose it to LuaJIT scripts
- (3dd5543b) tests: check LuaJIT scripting support
- Get unmerged code merged.
- Probably, add more examples to the man page section.