Add support for riscv64. Minimum supported kernel version is now 5.5.
- New implementation of
BEGIN
/END
which is more reliable across architectures. (Mingzheng Xing)
- New architecture: riscv64 (Mingzheng Xing)
- kprobe wildcards are now filtered through available_filter_functions, if available, making them much more reliable.
- Self-test (ply -T) to automatically diagnose the most common configuration issues.
sum()
aggregation (Namhyung Kim).BEGIN
andEND
probes that run at the beginning/end of a script (Namhyung Kim).interval
provider to run a probe at a specified interval (Namhyung Kim).- Access to dynamic tracepoint data, i.e. members marked with the
__data_loc
attribute.
- A bunch of parsing errors from weird scripts. Found via fuzzing done by Juraj Vijtiuk.
- Static linking is now supported (Namhyung Kim)
- Data layout issues with some tracepoints.
- Disable the kernel verifier output by default. Newer kernels
generates massive amounts of verifier output for certain BPF
programs. It expects to be able to store up to 16MB (!) of text. On
some systems using
ply
, that is half of the total system RAM. Instead, the verifier output is now enabled by specifying the-d
/--debug
option.
- Allow lossy tracing. By default ply will exit when it detects loss
of any trace events. The new
-k
/--keep-going
option allows the user to disable this safety check. ply
can now be built against alternative libcs. In particular Glibc and musl are known to work.- VPATH builds are now supported.
- Basic automatic test system. This ensures that basic ply can be built against all supported architectures and that basic probes work as expected.
- When expanding wildcards in probe specifiers, avoid symbols that we know are untraceable.
- Symbol lookups (typically in stack traces) now always return the correct symbol.
- Multiple references to
stack
no longer results in aSIGSEGV
. - The type information from
caller
/retval
is now retained in all cases.
tracepoint
provider to use the kernel's stable tracepoints.delete
keyword to remove associations from a map.- Numeric constants can now be in binary using the
0b
prefix. - Numeric constants can be grouped by insering
_
's, i.e. one million could be written as1_000_000
a 32-bit address could be written as0xc1ab_dead
- Architecture specific files are now a part of the distribution tarball (#10).
- Multiple off-by-one issues with string literals have been fixed (#14).
- Unary operators now work with arguments that require AST rewrites (#11).
The entire compiler has been re-written using the lessons learned from the limitations of v1. There is now a proper type system that be extended to describe all C types, there is an intermediate representation (IR) that makes instruction selection much easier. Some NIH accidents regarding the grammar have been corrected to align with existing work (DTrace). Error messages on invalid scripts should be more helpful, though there is still much to be done in this area.
- Everything
- Tracepoint provider. Not ported to v2 yet.
- Profile provider. Not ported to v2 yet.
- uprobe provider. Not ported to v2 yet.
- PowerPC support.