drgn 0.0.27 This release adds a few helpers, more pluggability for finding types, objects, and symbols, lots of new or improved scripts in `contrib`, and other improvements and bug fixes. New features: - The `print_annotated_memory()` helper was added to `drgn.helpers.common.memory`. It dumps a region of memory and annotates values that can be identified. - The `identify_address()` helper in `drgn.helpers.common.memory` can now identify Linux kernel vmap addresses and vmap kernel stacks. - The `member_at_offset()` helper was added to `drgn.helpers.common.type`. It returns the name of the member at an offset in a type. - The `bdev_partno()` helper was added to `drgn.helpers.linux.block`. It returns the partition number of a block device. - More flexible APIs for naming, reordering, and disabling type and object finders were added. - An API for registering custom symbol finders was added. Contributed by Stephen Brennan. - Support for Linux 6.9 and 6.10 was added. - The `drgn.helpers.linux.stackdepot.stack_depot_fetch()` helper was updated for Linux 6.9 (and 6.8.5). - The `drgn.helpers.linux.block.for_each_disk()` and `drgn.helpers.linux.mm.PageSlab()` helpers were updated for Linux 6.10. - The VMCOREINFO metadata for a kernel core dump can now be manually overridden through the Python API or the CLI. Contributed by Stephen Brennan. - x86-64 kernel core dumps without virtual memory information can now be read. Contributed by Stephen Brennan and Illia Ostapyshyn. - RISC-V kdump-compressed core dumps are now recognized as RISC-V when compiled with libkdumpfile 0.5.4 or newer. Contributed by Stephen Brennan. Bug fixes: - A case where drgn would fail to get the value of a local variable in an inlined function (usually when it had been spilled to the stack) was fixed. - Stack traces from kernel core dumps with missing (offline or unresponsive) CPUs were fixed. - Missing exception throws were added for some internal allocation failure checks in the drgn Python bindings. `contrib` directory: - `contrib/search_kernel_memory.py` was added. It searches all of kernel RAM for a given byte string. - `contrib/gcore.py` was added. It can extract a core dump of a running process without stopping it, or of a process from a kernel core dump. - `contrib/btrfs_tree.py` was substantially improved with new helpers and support for almost all Btrfs item types. - `contrib/negdentdelete.py` was added. It frees negative dentries. Contributed by Stephen Brennan. - `contrib/bpf_inspect.py` was updated to work on Linux 6.4 and later, gained a new command to list BPF links, gained an interactive mode, and added more detailed information. Contributed by Leon Hwang. - `contrib/irq.py` was updated to work on Linux 6.5 and later. Contributed by Imran Khan. - `contrib/lsmod.py` was updated to work on Linux 6.4 and later. Internal: - libdrgn's internal hash table implementation was optimized to use slightly less memory. - Unit tests were added for a lot of libdrgn internals. - Stephen Brennan fixed an issue with builds for free-threaded Python. - Michel Lind enabled Packit builds for CentOS Stream 9.