Skip to content

drgn 0.0.19

Compare
Choose a tag to compare
@osandov osandov released this 18 May 21:18
· 921 commits to main since this release

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(), and slab_cache_for_each_allocated_object() in drgn.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(), and validate_list_for_each_entry() in drgn.helpers.list).
  • Validators for red-black trees were added (validate_rbtree() and validate_rbtree_inorder_for_each_entry() in drgn.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.