http://open-source-security-software.net/project/dyninst/releases.atom Recent releases for dyninst 2024-11-01T04:30:56.909783+00:00 python-feedgen dyninst v9.1.0 dyninst v9.1.0 2016-06-29T21:28:36+00:00 INTERFACE CHANGES: - Shared objects and executables now both correspond to BPatch_objects, and their constituent .o files correspond to BPatch_modules. NEW FEATURES: - New code example: disassembler - Boost should now auto-detect up to version 1.59 - Initial ARM64 implementation of InstructionAPI; SIMD instructions are currently not supported BUG FIXES - Many x86 decoding bugs fixed (incorrect operand sizes, incorrect prefix handling) - Memory leaks fixed in line information parsing - Slicing no longer attempts to follow edges to or from catch blocks - Exception block parsing properly matches glibc internals - Line information parsing should no longer erroneously fail to return line information; also should no longer take quadratic time - LD_PRELOAD again works - Relocation and instrumentation no longer trigger unnecessary parsing on Windows - Windows no longer misidentifies calling conventions due to use-after-free string corruption MANUALS [dynC_API-9.1.0.pdf](https://github.com/dyninst/dyninst/files/340237/dynC_API-9.1.0.pdf) [dyninstAPI-9.1.0.pdf](https://github.com/dyninst/dyninst/files/340239/dyninstAPI-9.1.0.pdf) [instructionAPI-9.1.0.pdf](https://github.com/dyninst/dyninst/files/340236/instructionAPI-9.1.0.pdf) [parseAPI-9.1.0.pdf](https://github.com/dyninst/dyninst/files/340238/parseAPI-9.1.0.pdf) [patchAPI-9.1.0.pdf](https://github.com/dyninst/dyninst/files/340241/patchAPI-9.1.0.pdf) [proccontrol-9.1.0.pdf](https://github.com/dyninst/dyninst/files/340240/proccontrol-9.1.0.pdf) [stackwalk-9.1.0.pdf](https://github.com/dyninst/dyninst/files/340243/stackwalk-9.1.0.pdf) [symtabAPI-9.1.0.pdf](https://github.com/dyninst/dyninst/files/340242/symtabAPI-9.1.0.pdf) 2016-06-29T21:28:36+00:00 dyninst v9.2.0 dyninst v9.2.0 2016-06-29T21:59:50+00:00 ## 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. ## Bug Fixes - 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 handle any 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. - Line information is still filed into incorrect modules for a small fraction of functions in SymtabAPI. ## Manuals [dyninstAPI-9.2.0.pdf](https://github.com/dyninst/dyninst/files/340295/dyninstAPI-9.2.0.pdf) [dynC_API-9.2.0.pdf](https://github.com/dyninst/dyninst/files/340247/dynC_API-9.2.0.pdf) [proccontrol-9.2.0.pdf](https://github.com/dyninst/dyninst/files/340294/proccontrol-9.2.0.pdf) [patchAPI-9.2.0.pdf](https://github.com/dyninst/dyninst/files/340251/patchAPI-9.2.0.pdf) [stackwalk-9.2.0.pdf](https://github.com/dyninst/dyninst/files/340250/stackwalk-9.2.0.pdf) [dataflowAPI-9.2.0.pdf](https://github.com/dyninst/dyninst/files/340272/dataflowAPI-9.2.0.pdf) [parseAPI-9.2.0.pdf](https://github.com/dyninst/dyninst/files/340248/parseAPI-9.2.0.pdf) [instructionAPI-9.2.0.pdf](https://github.com/dyninst/dyninst/files/340249/instructionAPI-9.2.0.pdf) [symtabAPI-9.2.0.pdf](https://github.com/dyninst/dyninst/files/340252/symtabAPI-9.2.0.pdf) 2016-06-29T21:59:50+00:00 dyninst v9.3.0 dyninst v9.3.0 2016-12-22T21:57:03+00:00 ## Notes - Dyninst no longer supports `libelf.so.0` (non-elfutils version); it may work for your use case but it is deprecated and will become unsupported in a future release. We intend to migrate fully to the elfutils stack for elf/dwarf infrastructure support. ## 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 ## Bug Fixes - 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) 2016-12-22T21:57:03+00:00 dyninst v9.3.1 dyninst v9.3.1 2017-03-02T21:41:25+00:00 # Change Log ## [v9.3.1](https://github.com/dyninst/dyninst/releases/v9.3.1) (2017-03-02) [Full Changelog](https://github.com/dyninst/dyninst/compare/v9.3.0...v9.3.1) **Fixed bugs:** - Abort on PPC64LE when trying to get line number info [#337](https://github.com/dyninst/dyninst/issues/337) - Seg Fault on PPC64LE during attach [#336](https://github.com/dyninst/dyninst/issues/336) - Memory leaks in indirect control flow analysis [#322](https://github.com/dyninst/dyninst/issues/322) - BPatch_binaryEdit::writeFile() fails for stack diversification [#311](https://github.com/dyninst/dyninst/issues/311) - Stackwalk issue on arm64 [#303](https://github.com/dyninst/dyninst/issues/303) - Decode returns null shared pointer [#288](https://github.com/dyninst/dyninst/issues/288) - Operands labelled "[empty]" with operand type mismatch (all with 0x67 prefix) [#203](https://github.com/dyninst/dyninst/issues/203) **Merged pull requests:** - Replaced a bunch of asserts with graceful error handling. [#340](https://github.com/dyninst/dyninst/pull/340) ([wrwilliams](https://github.com/wrwilliams)) - Fix jump table analysis for lulesh [#338](https://github.com/dyninst/dyninst/pull/338) ([mxz297](https://github.com/mxz297)) - Better handling of anonymous structs and unions [#335](https://github.com/dyninst/dyninst/pull/335) ([wrwilliams](https://github.com/wrwilliams)) - Fix memory leaks found with lsan [#333](https://github.com/dyninst/dyninst/pull/333) ([wrwilliams](https://github.com/wrwilliams)) - Suppress debug message when no vsyscall page was found on arm64 [#332](https://github.com/dyninst/dyninst/pull/332) ([wrwilliams](https://github.com/wrwilliams)) - Use ifdef to guard x86 code [#331](https://github.com/dyninst/dyninst/pull/331) ([wrwilliams](https://github.com/wrwilliams)) - Fix memory leaks in indirect control flow. [#329](https://github.com/dyninst/dyninst/pull/329) ([wrwilliams](https://github.com/wrwilliams)) - Fixes for API and dependency issues in 9.3.0 [#323](https://github.com/dyninst/dyninst/pull/323) ([wrwilliams](https://github.com/wrwilliams)) \* _This Change Log was automatically generated by [github_changelog_generator](https://github.com/skywinder/Github-Changelog-Generator)_ 2017-03-02T21:41:25+00:00 dyninst v9.3.2 dyninst v9.3.2 2017-04-18T19:07:30+00:00 # Change Log ## [v9.3.2](https://github.com/dyninst/dyninst/releases/v9.3.2) (2017-04-05) [Full Changelog](https://github.com/dyninst/dyninst/compare/v9.3.1...v9.3.2) **Fixed bugs:** - memcpy can fail with rewriter tests [\#355](https://github.com/dyninst/dyninst/issues/355) - dyninst does not build on i386 [\#343](https://github.com/dyninst/dyninst/issues/343) - \[ARMv8 Decoding\] SQ\* instructions need to check bits with specific values [\#268](https://github.com/dyninst/dyninst/issues/268) - \[ARMv8 Decoding\] SMADDL and SMSUBL should have 32-bit register for operands 2 and 3 [\#266](https://github.com/dyninst/dyninst/issues/266) - \[ARMv8 Decoding\] SHL and SLI should have 0 for bit 11 [\#265](https://github.com/dyninst/dyninst/issues/265) - \[ARMv8 Decoding\] NEG instruction must have size = '11' [\#263](https://github.com/dyninst/dyninst/issues/263) - \[ARMv8 Decoding\] FMUL instruction cannot have size:q = '10' [\#262](https://github.com/dyninst/dyninst/issues/262) - \[ARM Decoding\] FMUL instructions cannot have 'size:L' == '11' [\#258](https://github.com/dyninst/dyninst/issues/258) - \[ARM Decoding\] Convert instruction immediate has reserved values \(currently ignored\) [\#257](https://github.com/dyninst/dyninst/issues/257) - \[ARM Decoding\] FCVTXN should be FCVTXN2 [\#255](https://github.com/dyninst/dyninst/issues/255) - \[ARM Decoding\] FCVT 'type' field cannot equal 'opc' field [\#254](https://github.com/dyninst/dyninst/issues/254) - \[ARM Decoding\] Reserved size value for some vector register instructions is ignored [\#249](https://github.com/dyninst/dyninst/issues/249) - \[ARM Decoding\] Stack pointer used where zero register should be [\#248](https://github.com/dyninst/dyninst/issues/248) - \[ARM Decoding\] Signed multiply instructions ignore size resitrictions [\#247](https://github.com/dyninst/dyninst/issues/247) - \[ARM Decoding\] Paired memory accesses must access aligned memory [\#245](https://github.com/dyninst/dyninst/issues/245) - \[ARM Decoding\] Convert instruction immediates appear incorrect at 64 [\#241](https://github.com/dyninst/dyninst/issues/241) - \[ARM Decoding\] Convert instruction immediate should not be larger than the register size [\#240](https://github.com/dyninst/dyninst/issues/240) - \[ARM Syntax\] Signed immediates should be shown as signed [\#239](https://github.com/dyninst/dyninst/issues/239) - \[ARM Decoding\] We should print the full operands of PRFUM [\#238](https://github.com/dyninst/dyninst/issues/238) - \[ARM Decoding\] Bad shift amounts. [\#233](https://github.com/dyninst/dyninst/issues/233) - \[ARM Decoding\] SIMD load instruction should be valid [\#223](https://github.com/dyninst/dyninst/issues/223) - \[ARM Decoding\] Decoding of MOVK instruction ignores restriction on combination of size and hw bits [\#222](https://github.com/dyninst/dyninst/issues/222) - \[ARM Decoding\] Decoding of ADDHN ignore reserved size bits [\#221](https://github.com/dyninst/dyninst/issues/221) - \[ARM Syntax\] Zero register should have sizing, either XZR or WZR [\#220](https://github.com/dyninst/dyninst/issues/220) - \[ARM Decoding\] Invalid CCMP and CCMN decoded as valid [\#219](https://github.com/dyninst/dyninst/issues/219) - \[ARM Syntax\] Shifted immediate for CCMP and CCMN [\#218](https://github.com/dyninst/dyninst/issues/218) - \[ARM Syntax\] Immediate out of range for LDRSB [\#217](https://github.com/dyninst/dyninst/issues/217) - \[ARM Syntax\] Repeated register number as constant [\#216](https://github.com/dyninst/dyninst/issues/216) **Merged pull requests:** - CMake fixup [\#349](https://github.com/dyninst/dyninst/pull/349) ([wrwilliams](https://github.com/wrwilliams)) - Fix up exception handling code so that we only consider call instructions for exception sensitivity and its attendant emulation [\#347](https://github.com/dyninst/dyninst/pull/347) ([wrwilliams](https://github.com/wrwilliams)) - Refactor BPatch\_type so it always has a reference to its underlying symtab type. [\#346](https://github.com/dyninst/dyninst/pull/346) ([wrwilliams](https://github.com/wrwilliams)) \* *This Change Log was automatically generated by [github_changelog_generator](https://github.com/skywinder/Github-Changelog-Generator)* 2017-04-18T19:07:30+00:00 dyninst v10.0.0 dyninst v10.0.0 2018-11-09T16:56:54+00:00 ## New Features - Parallel binary code analysis (ParseAPI): - Parallel code parsing, significantly improving the speed of the analysis of large binaries - Parallel query to ParseAPI - Improve multiple aspects of parsing, including non-returning functions, tail call identification, jump table analysis - Partial support of dynamic instrumentation on ARMv8. Please see https://github.com/dyninst/dyninst/wiki/DyninstAPI-ARMv8-status for details. - Improving support for Power 8 & 9 instrumentation and new vector instruction decoding - Limited CUDA support: read-only queries of SymtabAPI - Updated Spack recipe for installing Dyninst ## Software Dependency Changes - Adds dependency on libdw and removes dependency on libdwarf - Adds dependency on Intel Threading Building Blocks (TBB) - Adds optional dependency on OpenMP for parallel code analysis ## Bug Fixes - x86/64 decoding Issues, including adding support for vector instructions and wrong operand sizes - Fix compilation issues on Arch Linux - Cross-architecture binary analysis: try/catch blocks - Improve DWARF parsing: fix dwarf symbol frame and elf section parsing - Improve CMake build systems: automatically downloading correct versions of Boost, TBB, and elfutils - Fix inferior RPC on ARMv8 - Updated CMake build system for automatically downloading Dyninst dependencies and support parallel compilation ## Manuals - [DyninstAPI 10.0](https://github.com/dyninst/dyninst/blob/3e1921c771861bdbb89b6370cd7a3d1217d6bf87/dyninstAPI/doc/dyninstAPI.pdf) - [PatchAPI 10.0](https://github.com/dyninst/dyninst/blob/3e1921c771861bdbb89b6370cd7a3d1217d6bf87/patchAPI/doc/patchAPI.pdf) - [ParseAPI 10.0](https://github.com/dyninst/dyninst/blob/3e1921c771861bdbb89b6370cd7a3d1217d6bf87/parseAPI/doc/parseAPI.pdf) - [DataflowAPI 10.0](https://github.com/dyninst/dyninst/blob/3e1921c771861bdbb89b6370cd7a3d1217d6bf87/dataflowAPI/doc/dataflowAPI.pdf) - [InstructionAPI 10.0](https://github.com/dyninst/dyninst/blob/3e1921c771861bdbb89b6370cd7a3d1217d6bf87/instructionAPI/doc/instructionAPI.pdf) - [SymtabAPI 10.0](https://github.com/dyninst/dyninst/blob/3e1921c771861bdbb89b6370cd7a3d1217d6bf87/symtabAPI/doc/symtabAPI.pdf) 2018-11-09T16:56:54+00:00 dyninst v10.1.0 dyninst v10.1.0 2019-05-16T18:42:47+00:00 ## New Features - Full support of dynamic instrumentation on ARMv8 - Significant improvement of stack walking on ARMv8 - Adding instruction decoding support for AMD instruction extensions, such as XOP and FMA4 - Enhancement of the build system for checking and installing dependencies (see [wiki](https://github.com/dyninst/dyninst/wiki/Building-Dyninst) for important details) - Updated the Spack recipe for building Dyninst with appropriate Boost versions ## Bug Fixes - More stable parallel binary code analysis - Identifying and fixing a couple of race conditions - Enforcing unique analysis order to generate deterministic results - Improving code generation for instrumentation on Power to conform to ABI v2 - Improving binary rewriting on x86 and Power for - Position independent executables (PIEs) - Statically linked binaries - Resolving deadlocks in ProccontrolAPI - Improving code generation for `BPatch_whileExpr` on x86, Power, and ARMv8. - Fixing SIGILLs problems on ARMv8 caused by icache-dcache incoherence - Fixing supports of parsing debug information stored in separate files - Fixing incomplete libdw port for parsing DWARF expressions ## Manuals - [DyninstAPI 10.1](https://github.com/dyninst/dyninst/blob/fdc4d6a2a82726f1c2d71cac47ae66c204f9c1ea/dyninstAPI/doc/dyninstAPI.pdf) - [PatchAPI 10.1](https://github.com/dyninst/dyninst/blob/fdc4d6a2a82726f1c2d71cac47ae66c204f9c1ea/patchAPI/doc/patchAPI.pdf) - [ParseAPI 10.1](https://github.com/dyninst/dyninst/blob/fdc4d6a2a82726f1c2d71cac47ae66c204f9c1ea/parseAPI/doc/parseAPI.pdf) - [DataflowAPI 10.1](https://github.com/dyninst/dyninst/blob/fdc4d6a2a82726f1c2d71cac47ae66c204f9c1ea/dataflowAPI/doc/dataflowAPI.pdf) - [InstructionAPI 10.1](https://github.com/dyninst/dyninst/blob/fdc4d6a2a82726f1c2d71cac47ae66c204f9c1ea/instructionAPI/doc/instructionAPI.pdf) - [SymtabAPI 10.1](https://github.com/dyninst/dyninst/blob/fdc4d6a2a82726f1c2d71cac47ae66c204f9c1ea/symtabAPI/doc/symtabAPI.pdf) 2019-05-16T18:42:47+00:00 dyninst 10.2.0 dyninst 10.2.0 2020-07-31T23:19:13+00:00 ## Enhancements - Improve analysis and instrumentation of large binaries - Handle ELF extended numbering - Fix memory leaks that prevent instrumentation for large binaries - Improve parallel code parsing and dwarf parsing - Implement control flow trimming that removes wrong edges - Remove mutual exclusion in constructing index structures from basic blocks to functions - Improve jump table analysis involving global variables - ARM binary rewriting for dynamically-linked objects - Improve DWARF parsing - support abstract origin attribute - support one machine instruction address mapped to multiple source lines - support parsing of relocatable objects - Remove usage of GNU extensions for varargs - Handle "ghost" threads in proccontrol - "Ghost" threads are stopped threads killed by the OS (or user) before proccontrol continues them ## Bug fixes - Fix instrumentation regressions, including libc-2.29 on ARM, shared libraries instrumentation, corruption to registers - Fix rewriting static binaries about searching libgcc.a on x86 and aarch64 - Cleanup undefined C++ behaviors - Many fixes to code examples in the documentation ## Build changes - Use modern CMake features to enforce language support at build time - Add "sterile build" option to prevent Dyninst from building its own dependencies - Improve Clang support when building Intel TBB from source ## Deprecations - Support for running on IBM's Blue Gene ## Dyninst Toolkit Examples - Code examples previously contained in the 'examples' directory have been moved to their own repository [dyninst/examples](https://github.com/dyninst/examples). --- ## Manuals - [DyninstAPI 10.2](https://github.com/dyninst/dyninst/blob/fcc0d27aa458aacb5a12818beb43509d45848938/dyninstAPI/doc/dyninstAPI.pdf) - [PatchAPI 10.2](https://github.com/dyninst/dyninst/blob/fcc0d27aa458aacb5a12818beb43509d45848938/patchAPI/doc/patchAPI.pdf) - [ParseAPI 10.2](https://github.com/dyninst/dyninst/blob/fcc0d27aa458aacb5a12818beb43509d45848938/parseAPI/doc/parseAPI.pdf) - [DataflowAPI 10.2](https://github.com/dyninst/dyninst/blob/fcc0d27aa458aacb5a12818beb43509d45848938/dataflowAPI/doc/dataflowAPI.pdf) - [InstructionAPI 10.2](https://github.com/dyninst/dyninst/blob/fcc0d27aa458aacb5a12818beb43509d45848938/instructionAPI/doc/instructionAPI.pdf) - [SymtabAPI 10.2](https://github.com/dyninst/dyninst/blob/fcc0d27aa458aacb5a12818beb43509d45848938/symtabAPI/doc/symtabAPI.pdf) 2020-07-31T23:19:13+00:00 dyninst v10.2.0 dyninst v10.2.0 2020-07-31T23:19:13+00:00 ## Enhancements - Improve analysis and instrumentation of large binaries - Handle ELF extended numbering - Fix memory leaks that prevent instrumentation for large binaries - Improve parallel code parsing and dwarf parsing - Implement control flow trimming that removes wrong edges - Remove mutual exclusion in constructing index structures from basic blocks to functions - Improve jump table analysis involving global variables - ARM binary rewriting for dynamically-linked objects - Improve DWARF parsing - Support abstract origin attribute - Support one machine instruction address mapped to multiple source lines - Support parsing of relocatable objects - Remove usage of GNU extensions for varargs - Handle "ghost" threads in proccontrol - "Ghost" threads are stopped threads killed by the OS (or user) before proccontrol continues them ## Bug fixes - Fix instrumentation regressions, including libc-2.29 on ARM, shared libraries instrumentation, corruption to registers - Fix rewriting static binaries about searching libgcc.a on x86 and aarch64 - Cleanup undefined C++ behaviors - Many fixes to code examples in the documentation ## Build changes - Use modern CMake features to enforce language support at build time - Add "sterile build" option to prevent Dyninst from building its own dependencies - Improve Clang support when building Intel TBB from source ## Deprecations - Removed support for running on IBM Blue Gene ## Dyninst Toolkit Examples - Code examples previously contained in the 'examples' directory have been moved to their own repository [dyninst/examples](https://github.com/dyninst/examples). --- ## Manuals - [DyninstAPI 10.2](https://github.com/dyninst/dyninst/blob/fcc0d27aa458aacb5a12818beb43509d45848938/dyninstAPI/doc/dyninstAPI.pdf) - [PatchAPI 10.2](https://github.com/dyninst/dyninst/blob/fcc0d27aa458aacb5a12818beb43509d45848938/patchAPI/doc/patchAPI.pdf) - [ParseAPI 10.2](https://github.com/dyninst/dyninst/blob/fcc0d27aa458aacb5a12818beb43509d45848938/parseAPI/doc/parseAPI.pdf) - [DataflowAPI 10.2](https://github.com/dyninst/dyninst/blob/fcc0d27aa458aacb5a12818beb43509d45848938/dataflowAPI/doc/dataflowAPI.pdf) - [InstructionAPI 10.2](https://github.com/dyninst/dyninst/blob/fcc0d27aa458aacb5a12818beb43509d45848938/instructionAPI/doc/instructionAPI.pdf) - [SymtabAPI 10.2](https://github.com/dyninst/dyninst/blob/fcc0d27aa458aacb5a12818beb43509d45848938/symtabAPI/doc/symtabAPI.pdf) 2020-07-31T23:19:13+00:00 dyninst v10.2.1 dyninst v10.2.1 2020-09-10T03:28:37+00:00 ## Bug fixes - Memory leak fixes - Correct a substantial leak in singleton_object_pool affecting InstructionAPI - Fix instruction decoding leaks for power and aarch64 - Fix memory leak in SymEval::expandInsn - Fix aliasing bug of Region::buffer on copy - Cleanup memory handling when emitting Elf for static libraries ## Enhancements - Code cleanup - Remove use of deprecated C++ exception specifications - Remove deprecated parts of BPatch_flowGraph and miniTramp ## Build changes - Remove use of cotire - Fix cmake configuration when building with -pie --- ## Manuals - [DyninstAPI 10.2](https://github.com/dyninst/dyninst/blob/fcc0d27aa458aacb5a12818beb43509d45848938/dyninstAPI/doc/dyninstAPI.pdf) - [PatchAPI 10.2](https://github.com/dyninst/dyninst/blob/fcc0d27aa458aacb5a12818beb43509d45848938/patchAPI/doc/patchAPI.pdf) - [ParseAPI 10.2](https://github.com/dyninst/dyninst/blob/fcc0d27aa458aacb5a12818beb43509d45848938/parseAPI/doc/parseAPI.pdf) - [DataflowAPI 10.2](https://github.com/dyninst/dyninst/blob/fcc0d27aa458aacb5a12818beb43509d45848938/dataflowAPI/doc/dataflowAPI.pdf) - [InstructionAPI 10.2](https://github.com/dyninst/dyninst/blob/fcc0d27aa458aacb5a12818beb43509d45848938/instructionAPI/doc/instructionAPI.pdf) - [SymtabAPI 10.2](https://github.com/dyninst/dyninst/blob/fcc0d27aa458aacb5a12818beb43509d45848938/symtabAPI/doc/symtabAPI.pdf) 2020-09-10T03:28:37+00:00 dyninst v11.0.0 dyninst v11.0.0 2021-04-08T21:01:12+00:00 ## Removed deprecated functionality - JumpTableIndexPred::FillInOutEdges - BoundFactCalculator::CheckZeroExtend - BoundsFactCalculator::ThunkBound - binaryEdit::deleteBinaryEdit - CFGFactor::destroy_all - BPatch_regExpr - BPatch_addressSpace::findFunctionByAddr - insnCodeGen::generate - AddressSpace::getAddressWidth - BPatch_process::enableDumpPatchedImage - BPatch_snippet::getCost* - InstrucIter, vectorSet, and lineDict classes - Support for bluegene, vxworks, sparc, and AIX - Replace pdvector with std::vector - The entire serialization infrasturcture ## Minimum version requirements - Boost >= 1.67 - gcc >= 6.0 - Standards-compliant c++11 ABI in lib[std]c++ ## Enhancements - DWARF handling - Fully support separate debug files - Disable parallel parsing of DWARF due to a thread safety issue in elfutils - Support debuginfod - GPUs - Initial support for AMD and Intel GPU code parsing - Code slicing on NVIDIA GPUs - Code cleanup - Substantially reduce number of compiler warnings in public headers - BPatch - Callee lookup defaults to "by name" when other modes fail ## Bug fixes - Symtab - Fix non-deterministic inline function lookup for OpenMP outlined code - Handle C++ name demangling correctly and uniformly - Indirect call analysis - Fix detection of indirect calls to PLT stubs subtly broken by v10.2.1 - Patch memory leaks in emitElf See the complete [CHANGELOG](https://github.com/dyninst/dyninst/blob/481abaf20477a20fc533087010dcb671436de38b/CHANGELOG.md). --- ## Manuals - [DyninstAPI 11.0](https://github.com/dyninst/dyninst/blob/481abaf20477a20fc533087010dcb671436de38b/dyninstAPI/doc/dyninstAPI.pdf) - [PatchAPI 11.0](https://github.com/dyninst/dyninst/blob/481abaf20477a20fc533087010dcb671436de38b/patchAPI/doc/patchAPI.pdf) - [ParseAPI 11.0](https://github.com/dyninst/dyninst/blob/481abaf20477a20fc533087010dcb671436de38b/parseAPI/doc/parseAPI.pdf) - [DataflowAPI 11.0](https://github.com/dyninst/dyninst/blob/481abaf20477a20fc533087010dcb671436de38b/dataflowAPI/doc/dataflowAPI.pdf) - [InstructionAPI 11.0](https://github.com/dyninst/dyninst/blob/481abaf20477a20fc533087010dcb671436de38b/instructionAPI/doc/instructionAPI.pdf) - [SymtabAPI 11.0](https://github.com/dyninst/dyninst/blob/481abaf20477a20fc533087010dcb671436de38b/symtabAPI/doc/symtabAPI.pdf) 2021-04-08T21:01:12+00:00 dyninst v11.0.1 dyninst v11.0.1 2021-06-15T02:27:18+00:00 ## Enhancements - Position-Independent Executable (PIE) handling - Dyninst now correctly determines the properties of PIE binaries - position-independent executable archive files (i.e., built with -static-pie using gcc) are not supported ## Bug fixes - DWARF - Correctly handle return values from `dwarf_getabbrevcode` - Parsing - Fix data races from PowerPC when using more than 15 OpenMP threads - Skip parsing of blocks with an empty code buffer - Correctly parse catch blocks - Do not treat symbols in any text sections as data (.text, .init, or .fini) - Fix implicit operand decoding of x86 instructions on non-x86 architectures - Build system - Pass CMake build flags when configuring dyninstAPI_RT - Correctly find version information when building against tbb 2021.3 or newer See the complete [CHANGELOG](https://github.com/dyninst/dyninst/blob/5c7e0ee327399cfae50d77f977ff6655c2ca3ae4/CHANGELOG.md) --- ## Manuals - [DyninstAPI 11.0](https://github.com/dyninst/dyninst/blob/481abaf20477a20fc533087010dcb671436de38b/dyninstAPI/doc/dyninstAPI.pdf) - [PatchAPI 11.0](https://github.com/dyninst/dyninst/blob/481abaf20477a20fc533087010dcb671436de38b/patchAPI/doc/patchAPI.pdf) - [ParseAPI 11.0](https://github.com/dyninst/dyninst/blob/481abaf20477a20fc533087010dcb671436de38b/parseAPI/doc/parseAPI.pdf) - [DataflowAPI 11.0](https://github.com/dyninst/dyninst/blob/481abaf20477a20fc533087010dcb671436de38b/dataflowAPI/doc/dataflowAPI.pdf) - [InstructionAPI 11.0](https://github.com/dyninst/dyninst/blob/481abaf20477a20fc533087010dcb671436de38b/instructionAPI/doc/instructionAPI.pdf) - [SymtabAPI 11.0](https://github.com/dyninst/dyninst/blob/481abaf20477a20fc533087010dcb671436de38b/symtabAPI/doc/symtabAPI.pdf) 2021-06-15T02:27:18+00:00 dyninst v12.0.0 dyninst v12.0.0 2021-11-11T20:48:14+00:00 ## Enhancements - When using elfutils-0.186 or newer, Dyninst can parse nvidia enhanced line maps - MachRegister now supports the ppc64le register set for Rose semantics - Added xsave, xsavec, and xrstor instructions for x86_64 - Dyninst now compiles cleanly when using strong compiler warnings - symtabAPI::typeScalar now supports DWARF4 base type entry encodings ## Bug Fixes - Fixed a bug in .dyninst_heap section reported by Gentoo CI - BPatch and Symtab objects can now be displayed using iostreams - Floating point register usage is now correctly determined on aarch64 - Uncalled functions with internal linkage are no longer relocated on aarch64 - dataflowAPI no longer asserts on newer ppc64le machines - We are working to extend instruction support for ppc64le - More than 80 general bug fixes discovered using strong compiler warnings ## ABI breakages - Removed several empty stub functions from AddressSpace - Removed memory emulation on Windows - The code had been non-functional since ~2012 - Unused member variables were removed from the Symtab class - ELF STABs are no longer supported - Remove abandoned Module::getAllVariables ## Build changes - Remove support for ppc32 - Remove support for Cray CNL - Remove old XLC behavior - STERILE_BUILD is now on by default - Minimum version of Boost has been increased to 1.70.0 - Debug build configuration now uses -Og and -g3 - Updated to the C11 standard - Dyninst is now buildable with clang See the complete [CHANGELOG](https://github.com/dyninst/dyninst/blob/154dde783dbadd502c25b451e10eecdc3b6c732b/CHANGELOG.md) --- ## Manuals - [DyninstAPI 12.0](https://github.com/dyninst/dyninst/blob/154dde783dbadd502c25b451e10eecdc3b6c732b/dyninstAPI/doc/dyninstAPI.pdf) - [PatchAPI 12.0](https://github.com/dyninst/dyninst/blob/154dde783dbadd502c25b451e10eecdc3b6c732b/patchAPI/doc/patchAPI.pdf) - [ParseAPI 12.0](https://github.com/dyninst/dyninst/blob/154dde783dbadd502c25b451e10eecdc3b6c732b/parseAPI/doc/parseAPI.pdf) - [DataflowAPI 12.0](https://github.com/dyninst/dyninst/blob/154dde783dbadd502c25b451e10eecdc3b6c732b/dataflowAPI/doc/dataflowAPI.pdf) - [InstructionAPI 12.0](https://github.com/dyninst/dyninst/blob/154dde783dbadd502c25b451e10eecdc3b6c732b/instructionAPI/doc/instructionAPI.pdf) - [SymtabAPI 12.0](https://github.com/dyninst/dyninst/blob/154dde783dbadd502c25b451e10eecdc3b6c732b/symtabAPI/doc/symtabAPI.pdf) 2021-11-11T20:48:14+00:00 dyninst v12.0.1 dyninst v12.0.1 2021-11-23T21:52:02+00:00 ## Enhancements - Refactor several DwarfWalker internal interfaces - Add readable name for Symtab::typeRef ## Build changes - Increase minimum elfutils version to 0.186 - Remove NVIDIA external line map configure check - Add conflict with CMake 3.19.0 See the complete [CHANGELOG](https://github.com/dyninst/dyninst/blob/91ede1ff4309c3ebb5518d0a8d43befd3eb5ceae/CHANGELOG.md) --- ## Manuals - [DyninstAPI 12.0](https://github.com/dyninst/dyninst/blob/154dde783dbadd502c25b451e10eecdc3b6c732b/dyninstAPI/doc/dyninstAPI.pdf) - [PatchAPI 12.0](https://github.com/dyninst/dyninst/blob/154dde783dbadd502c25b451e10eecdc3b6c732b/patchAPI/doc/patchAPI.pdf) - [ParseAPI 12.0](https://github.com/dyninst/dyninst/blob/154dde783dbadd502c25b451e10eecdc3b6c732b/parseAPI/doc/parseAPI.pdf) - [DataflowAPI 12.0](https://github.com/dyninst/dyninst/blob/154dde783dbadd502c25b451e10eecdc3b6c732b/dataflowAPI/doc/dataflowAPI.pdf) - [InstructionAPI 12.0](https://github.com/dyninst/dyninst/blob/154dde783dbadd502c25b451e10eecdc3b6c732b/instructionAPI/doc/instructionAPI.pdf) - [SymtabAPI 12.0](https://github.com/dyninst/dyninst/blob/154dde783dbadd502c25b451e10eecdc3b6c732b/symtabAPI/doc/symtabAPI.pdf) 2021-11-23T21:52:02+00:00 dyninst v12.1.0-rc1 dyninst v12.1.0-rc1 2022-02-23T16:17:36+00:00 Release candidate for 12.1.0. Enhancements - Add preliminary support for AMDGPU CDNA2 architecture - Fix linker error with glibc-2.35+ to support multiple namespaces - Fix ELF parsing for NVIDIA binaries generated by CUDA-11.6+ - Reduce parsing time for functions called from many locations Build changes - Add a Dockerfile for automated GitHub workflow testing - Updates to get Symlite building 2022-02-23T16:17:36+00:00 dyninst v12.1.0-rc2 dyninst v12.1.0-rc2 2022-02-27T19:50:42+00:00 Release candidate for 12.1.0. ## Bug Fixes - Fix compiler warnings in amdgpu cdna2 code - Fix static analysis warnings for classes in AMDGPU (member variable init, dead code, no returns) ## Enhancements - Remove duplicate headers for AMDGPU - Move Vega files to AMDGPU directory ## Build Changes - Propagate AMDGPU subdirectory layout to 'install/include' for amdgpu/cdna2 2022-02-27T19:50:42+00:00 dyninst v12.1.0-rc3 dyninst v12.1.0-rc3 2022-03-09T15:46:51+00:00 Release candidate for 12.1.0. ## CI Testing Docker: simplify build script (#1212) Docker: use more OS packages (#1211) ## Bug fixes Make a couple constant 64-bit ULL to avoid getting truncated during shifts (#1207) Fix potential buffer overrun in AMDGPU decoders (#1208) 2022-03-09T15:46:51+00:00 dyninst v12.1.0 dyninst v12.1.0 2022-03-09T22:43:23+00:00 ## Enhancements - Implement first steps of multiple namespaces in glibc-2.35+ - Add instruction parsing for AMD's CDNA2 GPU architecture - Code cleanup of unused code and variables in SymtabAPI - Correctly handle DWARF subroutines during parallel parsing - Support ELF/DWARF under CUDA-11.6 and newer - Speed up the case where a function is called from many locations in ParseAPI ## Bug Fixes - Fix potential buffer overrun in AMDGPU decoders - Clean up memory allocations in SymtabAPI and BPatch ## Continuous Integration - Add Docker image for testing and deploying Dyninst on Ubuntu-20.04 on x86_64 ## Build Fixes - Fix building of symlite --- ## Manuals - [DyninstAPI 12.1](https://github.com/dyninst/dyninst/blob/14d9d44f0c03199d76333b9571b1f6ed9e183e46/dyninstAPI/doc/dyninstAPI.pdf) - [PatchAPI 12.1](https://github.com/dyninst/dyninst/blob/14d9d44f0c03199d76333b9571b1f6ed9e183e46/patchAPI/doc/patchAPI.pdf) - [ParseAPI 12.1](https://github.com/dyninst/dyninst/blob/14d9d44f0c03199d76333b9571b1f6ed9e183e46/parseAPI/doc/parseAPI.pdf) - [DataflowAPI 12.1](https://github.com/dyninst/dyninst/blob/14d9d44f0c03199d76333b9571b1f6ed9e183e46/dataflowAPI/doc/dataflowAPI.pdf) - [InstructionAPI 12.1](https://github.com/dyninst/dyninst/blob/14d9d44f0c03199d76333b9571b1f6ed9e183e46/instructionAPI/doc/instructionAPI.pdf) - [SymtabAPI 12.1](https://github.com/dyninst/dyninst/blob/14d9d44f0c03199d76333b9571b1f6ed9e183e46/symtabAPI/doc/symtabAPI.pdf) 2022-03-09T22:43:23+00:00 dyninst v12.2.0 dyninst v12.2.0 2022-07-28T21:27:27+00:00 ## Enhancements - Always use exec entry point for parse hints in stripped binaries - Correctly compute boundaries of functions containing shared code - Improve compiler diagnostics and usage of pragmas - Parse names for inlined functions in DWARF ## Bug fixes - Fix data races when storing line information entries - Fix decoding of DWARF expressions into machine registers for Intel GPUs - Correctly propagate pc ranges for blocks and local variables - Fix format string errors in stackwalk/callchecker.C ## Build system - Remove endian CMake check (we only support little-endian) - Enforce formatting of CMake files using cmake-format - Remove unused options BUILD_DOCS and BUILD_TARBALLS - Require bfd linker when building with LTO enabled --- ## Manuals - [DyninstAPI 12.2](https://github.com/dyninst/dyninst/blob/02c20e9169a9e6ca9da7a486df4e9160143063cb/dyninstAPI/doc/dyninstAPI.pdf) - [PatchAPI 12.2](https://github.com/dyninst/dyninst/blob/02c20e9169a9e6ca9da7a486df4e9160143063cb/patchAPI/doc/patchAPI.pdf) - [ParseAPI 12.2](https://github.com/dyninst/dyninst/blob/02c20e9169a9e6ca9da7a486df4e9160143063cb/parseAPI/doc/parseAPI.pdf) - [DataflowAPI 12.2](https://github.com/dyninst/dyninst/blob/02c20e9169a9e6ca9da7a486df4e9160143063cb/dataflowAPI/doc/dataflowAPI.pdf) - [InstructionAPI 12.2](https://github.com/dyninst/dyninst/blob/02c20e9169a9e6ca9da7a486df4e9160143063cb/instructionAPI/doc/instructionAPI.pdf) - [SymtabAPI 12.2](https://github.com/dyninst/dyninst/blob/02c20e9169a9e6ca9da7a486df4e9160143063cb/symtabAPI/doc/symtabAPI.pdf) 2022-07-28T21:27:27+00:00 dyninst v12.2.1 dyninst v12.2.1 2022-11-21T19:46:53+00:00 ## Enhancements - ParseAPI: improve tail call recognition (#1315) - Support hash_compare concept from TBB >= 2021.1 (#1316) - Various compile warning fixes (#1325, #1324) - Improve instruction stringification formatting (#1311, #1323, #1313) - Allow assignment conversion of an Instruction without a frame pointer (#1314) - Fix incorrect offset in location list PC range values (#1297) --- ## Manuals - [DyninstAPI 12.2.1](https://github.com/dyninst/dyninst/blob/def4204359d2051958d99e8f3c515dbc9ff3edf0/dyninstAPI/doc/dyninstAPI.pdf) - [PatchAPI 12.2.1](https://github.com/dyninst/dyninst/blob/def4204359d2051958d99e8f3c515dbc9ff3edf0/patchAPI/doc/patchAPI.pdf) - [ParseAPI 12.2.1](https://github.com/dyninst/dyninst/blob/def4204359d2051958d99e8f3c515dbc9ff3edf0/parseAPI/doc/parseAPI.pdf) - [DataflowAPI 12.2.1](https://github.com/dyninst/dyninst/blob/def4204359d2051958d99e8f3c515dbc9ff3edf0/dataflowAPI/doc/dataflowAPI.pdf) - [InstructionAPI 12.2.1](https://github.com/dyninst/dyninst/blob/def4204359d2051958d99e8f3c515dbc9ff3edf0/instructionAPI/doc/instructionAPI.pdf) - [SymtabAPI 12.2.1](https://github.com/dyninst/dyninst/blob/def4204359d2051958d99e8f3c515dbc9ff3edf0/symtabAPI/doc/symtabAPI.pdf) 2022-11-21T19:46:53+00:00 dyninst v12.3.0 dyninst v12.3.0 2023-02-22T21:49:43+00:00 ## New Features - Continued development on support for the AMD gfx908 architecture - InstructionAPI: MI100, MI200, MI125 (partial) - ParseAPI: Directcontrol flow analysis for MI100, MI200, MI125 - DataflowAPI: Indirect control analysis for MI125 - Add support for Intel's ENDBR32/64 instruction used by CET (#1368) ## Enhancements - Improve cross-platform static instrumentation on aarch64 (#1373) - Update detection of DWARF languages (#1357) - Substantially improve callee lookup speed (#1337) - Fix encoding for vex2-encoded vpand instruction (#1364) ## Bug Fixes - Add missing include files for newer gcc/clang (#1385, #1384, #1344) --- ## Manuals - [DyninstAPI 12.3.0](https://github.com/dyninst/dyninst/blob/334b6856e28fd34a698ad74aa277f1399a814183/dyninstAPI/doc/dyninstAPI.pdf) - [PatchAPI 12.3.0](https://github.com/dyninst/dyninst/blob/334b6856e28fd34a698ad74aa277f1399a814183/patchAPI/doc/patchAPI.pdf) - [ParseAPI 12.3.0](https://github.com/dyninst/dyninst/blob/334b6856e28fd34a698ad74aa277f1399a814183/parseAPI/doc/parseAPI.pdf) - [DataflowAPI 12.3.0](https://github.com/dyninst/dyninst/blob/334b6856e28fd34a698ad74aa277f1399a814183/dataflowAPI/doc/dataflowAPI.pdf) - [InstructionAPI 12.3.0](https://github.com/dyninst/dyninst/blob/334b6856e28fd34a698ad74aa277f1399a814183/instructionAPI/doc/instructionAPI.pdf) - [SymtabAPI 12.3.0](https://github.com/dyninst/dyninst/blob/334b6856e28fd34a698ad74aa277f1399a814183/symtabAPI/doc/symtabAPI.pdf) 2023-02-22T21:49:43+00:00