These patches implement new filtering architecture. Currently supported actions: trace, inject, fault, read, write, raw, abbrev, verbose. Currently supported filters: syscall, fd, path. Changes in filtering language: * Delimiter of action arguments is now ';'. * Supported logical operators: and, or, not. Also C-like forms of these operators are supported: &&, ||, !. * Syscall filter accepts syscalls' set, class or regex with old set description syntax.
Changes since v1: * qualify.c is now splitted in separate commit. Changes since v2: * Fixed segmentation fault in inject/fault parsing. * basic_filters.c (run_fd_filter): Changed returns to true/false. Changes since v3: * Fixed invalid accounting of syscalls for inject/fault actions. * Fixed order of filter actions with same priority. * Refactored inject arguments parsing. * Refactored fd filtering. * Refactored tests for syscall set syntax. * Improved diagnostics of filtering errors. * Rewritten algorithms of parsing for new filtering language. Changes since v4: * Fixes in fd and path filtering. * Added tests for fd filtering. * Syscall tests refactoring is now in a separate commit. * Style and readability fixes. Known issues in v4: * Fd filter returns valid results only if negative fds are not filtered. Changes since v5: * Refactored parsing. * Fixes in fd and path filtering. * Improved diagnostics. * Added stacktrace action. * Style fixes. Changes since v6: * Refactored fd and path filtering. * Fixed memory leaks in parser. * Fixed some corner cases of parsing. * Disabled set inversions in new syntax. * Improved tests. Notes for v7: "Improve fd filtering" patch should be applied after "pathtrace: fix matching of execveat syscall" and "Add TF flag to inotify_add_watch entries" patches. Nikolay Marchuk (8): tests: improve syscall syntax testing Introduce new filtering architecture Improve fd filtering Optimize default filtering Implement new filtering language parsing Add path filter tests: check fd filter Add stacktrace filter action Makefile.am | 5 + basic_actions.c | 147 ++++++++++++ basic_filters.c | 208 ++++++++++++----- defs.h | 20 +- filter.c | 148 ++++++++++++ filter.h | 46 +++- filter_action.c | 263 +++++++++++++++++++++ filter_expression.c | 455 ++++++++++++++++++++++++++++++++++++ filter_parse.c | 223 ++++++++++++++++++ filter_qualify.c | 280 +++++++++++----------- pathtrace.c | 199 +++++++++------- strace.c | 19 +- syscall.c | 30 +-- tests/.gitignore | 1 + tests/Makefile.am | 4 + tests/filtering_fd-syntax.test | 71 ++++++ tests/filtering_fd.c | 202 ++++++++++++++++ tests/filtering_fd.test | 29 +++ tests/filtering_syscall-syntax.test | 98 ++++++++ tests/options-syntax.test | 28 --- tests/qual_fault-syntax.test | 26 +-- tests/qual_inject-syntax.test | 27 +-- unwind.c | 6 + 23 files changed, 2147 insertions(+), 388 deletions(-) create mode 100644 basic_actions.c create mode 100644 filter.c create mode 100644 filter_action.c create mode 100644 filter_expression.c create mode 100644 filter_parse.c create mode 100755 tests/filtering_fd-syntax.test create mode 100644 tests/filtering_fd.c create mode 100755 tests/filtering_fd.test create mode 100755 tests/filtering_syscall-syntax.test -- 2.11.0 ------------------------------------------------------------------------------ Check out the vibrant tech community on one of the world's most engaging tech sites, Slashdot.org! http://sdm.link/slashdot _______________________________________________ Strace-devel mailing list Strace-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/strace-devel