Releases: peadar/pstack
Releases · peadar/pstack
v2.10
v2.9
- Move image caches, options, and global variables to a single structure, Context, that can be passed around.
- Implement more DW_OP's in DWARF expressions
- throw exceptions rather than abort()ing if we can't handle DWARF operations/types/forms/etc.
- Minor bugfixes and API cleanups.
v2.8.3
v2.8.2
v2.8.1
v2.8
v2.7.2
Changes:
- Improve behaviour of cache reader in the face of underlying IO errors.
- if the start of the requested content from a cache reader is available, then present that, and just stop where the IO error occurrs, rather than erroring the entire "read()"
- "--args" now indirects through references and pointers when printing function arguments
- Clean up ReaderArray and its iterators to be more conformant to C++ iterator concept
- Fix a bug in the --dump options that faulted due to previous FDE parsing optimisations.
v2.7.1
Changes:
- Display signal trampoline function correctly on aarch64
- there is no FDE for
__kernel_rt_sigreturn
in the aarch64 VDSO in some kernels, so just use its name as an indicator that it is a signal trampoline function
- there is no FDE for
- Fix calculation of "base" address for rangelists.
- When there is no base address in the list, it should come from the compilation unit. The DWARF5 version was also ignoring the passed
base
address anyway. This fixes the detection of inlined subroutines for a number of cases.
- When there is no base address in the list, it should come from the compilation unit. The DWARF5 version was also ignoring the passed
- Optimise search for FDEs.
- FDEs are now kept sorted by the instruction address they cover, rather than the order they are present in eh_frame. They can therefore be binary searched, rather than linearly. Also, if the .eh_frame_hdr section is present, we don't parse them all up-front, but lazily populate the in-memory array from the already-sorted table in that section as we conduct the binary search. This can mean we decode just a handful of FDEs rather than thousands.
- Remove some ill-considered changes to applying pcrel addressing in call frame information
- this fixes problems decoding the VDSO on arm, where there is no PT_GNU_EH_FRAME segment
v2.6.1
Various bugfixes and featurettes, and improved C++ API
- Allow fetching floating-point registers as well as general registers via the API
- Include
NT_PRPSINFO
in ELF dump of a core. - Fix crash if dumping core files (via --elf-dump) if there's no NT_FILE note
- Honour flags in ELF phdrs when getting the
addressSpace()
of a core files (C++ API) - Some clang-tidy cleanups
- Allow "canal" to find 32-bit values on 64-bit systems, and vice versa. (Added --wordsize argument)
- Fix options parser to deal with options with no short form
- Performance improvements in
ReaderArray
.- This improves performance on some basic tests by a couple of percent.
- Also brings performance of
ReaderArray
in line with Paulo's caching improvement in canal (it's basically the same thing, just applied generally), so we can useReaderArray
there now to get the same benefit.
v2.5.3
Maintenance release
- Fixes for aarch64
- Don't terminate DWARF unwinding without explicit signal. Prevents truncated stacktraces.
- Don't fault if the process image has no VDSO (eg, generate from valgrind)
- DWARF improvements
- Implement DW_OP_piece
- Implement displaying floating point arguments
- Be more robust dealing with arguments that can't be printed
- Fix clang compilation errors
- Allow compilation against older glibc versions (where gettid syscall may not have a wrapper function)