drgn 0.0.19
Feature-wise, this release mainly adds more helpers, including Linux slab helpers and new "validator" helpers. Internally, a lot of work was done to improve testing.
New features:
- Helpers for the Linux kernel slab allocator were added (
slab_cache_is_merged()
,for_each_slab_cache()
,find_slab_cache()
,print_slab_caches()
, andslab_cache_for_each_allocated_object()
indrgn.helpers.linux.slab
). Contributed by Alex Zhu. - The concept of "validators", special helpers which validate a data structure, was introduced.
- Validators for linked lists were added (
validate_list()
,validate_list_for_each()
, andvalidate_list_for_each_entry()
indrgn.helpers.list
). - Validators for red-black trees were added (
validate_rbtree()
andvalidate_rbtree_inorder_for_each_entry()
indrgn.helpers.linux.rbtree
). - The
drgn.helpers.linux.rbtree.RB_EMPTY_ROOT()
helper was added. - The i386, AArch64, Arm, and RISC-V architectures are now recognized and were added to
Architecture
. (Architecture-specific features have not been implemented for those architectures yet.) - Support for integer reference objects larger than 64 bits was added (values are still not implemented). Contributed by Jay Kamat.
Bug fixes:
Program.crashed_thread()
was fixed when debugging a non-SMP Linux kernel.- A bug in 32-bit builds that could cause poor performance due to hash collisions was fixed.
Other improvements:
- Linux kernel support was tested up to v5.18-rc7.
- Applying ELF relocations (used for kernel modules) was optimized for ppc64, i386, AArch64, Arm, and RISC-V.
- Documentation for
StackFrame.name
was expanded.
Internal:
- The virtual machine testing setup was expanded to test on kernels using all three Linux kernel slab allocator implementations (SLUB, SLAB, SLOB) and both SMP and !SMP.
- The virtual machine testing setup was also expanded to use a custom kernel module to test helpers that couldn't previously be tested.
- Flake8 was added to the pre-commit configuration.