=============================== 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 _______________________________________________ Dyninst-api mailing list Dyninst-api@cs.wisc.edu https://lists.cs.wisc.edu/mailman/listinfo/dyninst-api