2.0.0-1.12 (Feb 27th, 2023)
Twelfth errata of the standalone userspace implementation.
This is a pre-release with limited functionality.
New features:
-
The
bcopy()
subroutine no longer enforces that its first argument (source address) can't be analloca()'d
memory region. While this restriction is documented, it was never enforced in DTrace and the restriction has no practical reason. -
The
clear()
andtracemem()
actions have been implemented. -
The
switchrate
andaggrate
options have been implemented. -
The
cpc
andproc
providers have been implemented. -
The
copyout()
andcopyoutstr()
subroutines have been implemented. -
The
uregs[]
built-in variable has been implemented.
Bugfixes:
-
The maximum
strtab
size has been increased toSSIZE_MAX
. -
Probe argument information is only be retrieved once per probe.
-
Handling string values in
alloca()'d
memory has been fixed. -
The
basename()
,dirname()
,strchr()
,strrchr()
,inet_ntoa()
subroutines have been updated to fully support using arbitrary address pointers. -
The return value of
copyin()
is now a valid offset intoscratchmem
(native representation of a pointer toalloca()'d
memory). -
The
arg0
andarg1
probe arguments forprofile-*
andtick-*
probes have been corrected. (Thearg2
argument is still unimplemented.) -
The evaluation order of arguments to
bcopy()
has been corrected. -
Runtime bounds checking has been implemented for scalar array access.
Internal changes:
-
Selection of the correct arch-dependent asm include hierarchy for building the precompiled BPF function library has been corrected.
-
A few potentially unsafe calls to printf-style functions have been fixed.
-
The manpage for dtrace has been moved to section 8 (System Management Commands).
-
The error handling mechanism between libdtrace and consumer front-ends has been amended to allow error reporting for non-probing related issues.
-
The
copyinstr()
subroutine has been updated to use the temporary string mechanism. -
The tracking of pointers to
alloca()'d
memory and pointer to DTrace managed memory has been improved, and explicit tests for it have been added to the testsuite. -
The code generator uses indirect load instructions for pointers to
alloca()'d
and DTrace managed memory for efficiency and to enable the BPF verifier to perform access checks.
Testsuite changes:
-
The
copyin*()
tests are now more robust with the use of a distinct trigger. -
Various tests have been moved from XFAIL to PASS status to reflect the implementation of new features and because some bug fixes.
-
Various tests were improved.
-
Various new tests were added.
Known problems:
-
The
uregs[]
built-in variable isn't supported on kernels before 5.15.