v9.3.2 Distribution Files
- All downloads are hosted on our GitHub repository:
https://github.com/dyninst/dyninst/releases/tag/v9.3.2
Version 9.3.2
Released on April 5, 2017
Improvements from 9.3.1
- i386 build fixes
- Fixes for binary rewriter tests
- Many ARMv8 decoding fixes verified
- Bug fixes for relocating functions with exception handling
- Bug fixes for reference counting of type objects
- Documentation updates
v9.3.1 Distribution Files
- All downloads are hosted on our GitHub repository:
https://github.com/dyninst/dyninst/releases/tag/v9.3.1
Version 9.3.1
Released on March 2, 2017
Includes minor bugfixes from 9.3.0
v9.3.0 Distribution Files
- All downloads are hosted on our GitHub repository:
https://github.com/dyninst/dyninst/releases/tag/v9.3.0
Version 9.3.0
Released on December 22, 2016
New features
- Full support for Knight's Landing processors
- First official release of ParseAPI for ARMv8
- First release of cross-architecture binary analysis capabilities (parsing of ARM binaries on x86 and vice versa, for example). PowerPC parsing still requires compile-time selection of endianness; a fix for this is coming in 9.3.1. This is a significant step in our long road to making Dyninst's host and target platforms fully independent from each other.
- Dyninst can now safely relocate and instrument code containing C++ exceptions.
- Documented various ProcControl and Stackwalker tracking/tracking control interfaces.
- Read access to Symtab and ParseAPI data structures should now be thread-safe, provided that you force eager creation of those data structures. If there exist data structures that cannot be eagerly created and are thus thread-unsafe for your use case, please let us know.
- Automatic detection of Dyninst runtime library location (currently Unix-ish only, Windows support to follow in 9.3.1).
- Cotire added to speed up build. If building with GCC, this requires version >= 4.5.0; for all compilers, this requires CMake >= 2.8.12.
- Improvements to stack analysis on x86
Improvements from 9.2.0
- Fixed segfault when a process is attached without specifying executable name
- Fixed crash in liveness
- Fixed assert when running stack modifications on SPEC
- Fixed multiple jump table parsing issues
- Fixed findMain analysis for stripped binaries
- Assorted fixes in line information handling
- Assorted fixes for race conditions in ProcControl
- Fixed cases where Dyninst heaps were not allocated sufficiently close to the code being relocated into them
- Ensured stack modification code is only built on supported platforms (x86/Linux for now)
v9.2.0 Distribution Files
- All downloads are hosted on our GitHub repository:
https://github.com/dyninst/dyninst/releases/tag/v9.2.0
Version 9.2.0
Released on June 29, 2016
New features
- ARM64 SIMD support in InstructionAPI
- Support for all x86 instruction sets up to Knight's Landing (AVX, AVX2, AVX512)
- DataflowAPI now has an official manual
- Initial ppc64/little endian support in Symtab, InstructionAPI, ProcControl, and Stackwalker. Add -Darch_ppc64_little_endian to your CMake command line when building on little-endian ppc64 systems
- New InstructionAPI test framework based on structured fuzzing. This resulted in finding (and fixing) lots of corner-case instruction parsing errors. The fuzzer framework, called Peach, will be released later this year.
- Main source code repository has moved to GitHub. Older Dyninst releases may be found at https://github.com/dyninst/dyninst/releases
Improvements from 9.1.0
- PIE binaries should now be rewritten correctly, even if they have a zero base address
- Symtab should now correctly file symbols into their associated modules based on the best available DWARF information
- Many more fixes in x86 instruction decoding
- Enhancements to jump table analysis
- PC-relative memory accesses in VEX instructions can now be relocated correctly
- Various proccontrol bug fixes
- RTlib's DYNINSTos_malloc and DYNINSTos_free should now be signal-safe
- RTlib's tramp guard lock/unlock functions should now avoid making implicit function calls (which are unsafe from tramp guard code)
- ppc64 bit rot for create/attach modes is fixed
Known Issues
- ppc64 rewriter mode does not yet handle code that does not conform to the "caller sets up TOC" model for intermodule calls
- Windows 64-bit mode is not yet supported
- Windows rewriter mode is not yet supported
- Exceptions in relocated code will not be caught
- Linux rewriter mode for 32-bit, statically linked binaries does not support binaries with .plt, .rel, or .rela sections.
- Callbacks at thread or process exit that stop the process will deadlock when a SIGSEGV occurs on a thread other than the main thread of a process
- InstructionAPI's format() method does not produce AT&T syntax output
- Stackwalker is fragile on Windows
- Parsing a binary with no functions (typically a single object file) will crash at CodeObject destruction time.
v9.1.0 Distribution Files
- Source Tarballs
Version 9.1.0
Released on December 15, 2015
Interface changes
- Shared objects and executables now both correspond to BPatch_objects, and their constituent .o files correspond to BPatch_modules
New features
- Initial ARM64 implementation of InstructionAPI (SIMD instructions are currently not supported)
- New code example: disassembler
- Boost should now auto-detect up to version 1.59
Improvements from 9.0.3
- Fixed LD_PRELOAD support
- Relocation and instrumentation no longer trigger unnecessary parsing on Windows
- Windows no longer misidentifies calling conventions due to use-after-free string corruption
- Slicing no longer attempts to follow edges to or from catch blocks
Known Bugs
- See 9.0.3 Known Bugs.
v9.0.3 Distribution Files
- Source Tarballs
- Ubuntu
Version 9.0.3
Released on August 28, 2015
Improvements from 9.0.2
- Minor bugfixes.
Known Bugs
- See 9.0.2 Known Bugs.
v9.0.2 Distribution Files
- Source Tarballs
- Ubuntu
Version 9.0.2
Released on August 24, 2015
Improvements from 9.0.1
- Minor bugfixes.
Known Bugs
- See 9.0.1 Known Bugs.
v9.0.1 Distribution Files
- Source Tarballs
- Ubuntu
Version 9.0.1
Released on August 21, 2015
Improvements from 9.0.0
- Minor bugfixes.
Known Bugs
- See 9.0.0 Known Bugs.
v9.0.0 Distribution Files
- Source Tarballs
- Ubuntu
Version 9.0.0
Released on August 20, 2015
Improvements from 8.2.1
- Dyninst now allows modification of the stack frames of functions. See the manual for details.
- SD-Dyninst is now integrated into the Dyninst main line. See the manual for details.
- Machine learning based gap parsing rules are now integrated into Dyninst, and no longer need to be compiler-specific. Gap parsing should find significantly more function entry points, particularly when run on code generated by non-GNU compilers.
- SymtabAPI now provides information about inlined functions. See the manual for details.
- SymtabAPI (in read-only mode), ProcControl, and Stackwalker (in 3rd-party mode) now work on ARM64 Linux.
- Loops are now represented in ParseAPI and PatchAPI, as well as at the BPatch level. The loop interface has been extended to represent irreducible loops correctly; see the manual for details.
- Indirect control flow is now analyzed by a principled, slicing-based approach and its accuracy is substantially improved.
- SymtabAPI and ParseAPI should consume much less memory for representing symbols, symbol indexes, line information, block extents, and function extents. There will be a small CPU penalty when opening files under SymtabAPI in exchange for this.
- ProcControl, in conjunction with Symtab, now supports accessing variables located in thread-local storage on Linux. See the manual for details.
- TrampGuards have been optimized.
- Compile-time thread limit on mutatees has been removed.
- Fixes in ProcControl's exit handling code.
Known Bugs
- Windows: inserting call snippets to call __thiscall or __fastcall functions is unsafe. __cdecl and __stdcall work.
- Windows: binary rewriting is still not supported, but is coming soon.