===============================
ANNOUNCEMENT: Release 13.0 of
Dyninst
ParseAPI
SymtabAPI
InstructionAPI
StackwalkerAPI
ProcControl
PatchAPI
DynC_API
================================
We are pleased to announce the 13.0 release of Dyninst and its related
toolkits. It's been a while since our last release!
The release can be found at:
https://github.com/dyninst/dyninst
Description at:
https://github.com/dyninst/dyninst/releases/tag/v13.0.0
New to this release are:
## ENHANCEMENTS
- Initial instruction decoding AMD gfx940
- Add indirect branch support for AMD GPUs
- Improve instruction decoding for gfx908 and gfx90a based on AMD data files
- Make formatting of AMD GPU instructions match objdump
- Make AMD GPU binaries are RELA relocatable
- Treat Intel's XE Gen12 ELF binaries like Gen9 ELF binaries
- Correct and improve detection of instructions that are system call and
interrupt instructions on all platforms
- Add a callback mechanism for instructions not decoded by Dyninst to allow
user decoding
- Correctly determine if an x86 LEA instruction is a NOP in all cases
- Enhance formatting of x86 instruction to always use AT&T syntax order,
correctly handle mask registers, fix display of x86 RET instruction, added
getDisplayOrderedOperands to get operands in display order, allow
formatting of individual operands
- Enhance x86 instruction information: add support for additional x86
registers, correct x86 mnemonic misspellings, synchronize instruction IDs
with those found Capstone
- Cleanup and enhance DWARF processing: r-value references, C++ scoped enums,
sub-ranges
- Support line map parsing for DWARF CUs without aranges or and invalid one
(e.g., gtpin binaries), and remove SymtabAPI's addLine and AddAddressRange
methods
- Improve modules (compilation units) support: allow for modules with
duplicate names, support modules with non-unique PC starting pointer,
Module::getAllFunctions now correctly returns the set of functions contained
in the module and has an API change, new Symtab::getContainingModule returns
module containing address, Symtab::findModulesByName returns a list of
modules with the given name, new API for Symtab::findModuleByOffset, and
deprecate Symtab::findModuleByOffset(Module*&, Offset)
- Support instrumentation of static executables that are statically linked
with glibc 2.34 and newer
- Rewrite of cmake files to support modern cmake constructs allowing Dyninst
libraries to be more easily consumed by cmake projects via library targets
and to improved build consistency and maintainability
- Improve comparison order for ParseAPI::Function objects so the order is
stable across runs and more meaningful for human inspection
- Safely read and write unaligned memory locations to prevent crashes to
prevent a C++ undefined behavior and crashes on platforms that have
alignment requirements
- Enhance BinaryEdit::getResolvedLibraryPath to correctly handle additional
output by recent version of /sbin/ldconfig
- Add Github CI testing for every pull request to ensure Dyninst builds on a
variety of platforms and compilers, that packages that depend on Dyninst
build including the tests suite and 3rd party packages, and that basic sanity tests pass
## BUG FIXES
- correct instruction length for x86_64 EVEX instructions
- Correctly save & restore of registers on aarch64 for instrumented code
- Fix determination of an instruction being an interrupt or syscall
- Correctly determine if an x86 register is MMX
- Fix hang when emitting AMD GPU binaries
- Fix thread safety issues
- Prevent segfault in Indirect Analyzer
- Fix segfault in output operator<< for Module*
- General code improvements for correctness, efficiency, new C++ standards,
code quality, maintainability and dead code removal; many of these found by
compiler settings and static code analysis tools
|