Skip to content

Releases: dyninst/dyninst

Dyninst v13.0.0

21 Mar 18:10
268b630
Compare
Choose a tag to compare

Enhancements

  • Initial instruction decoding AMD gfx940 (#1511, #1522, #1541)

  • Add indirect branch support for AMD GPUs (#1519)

  • Improve instruction decoding for gfx908 and gfx90a based on AMD data files (#1404, #1407, #1408)

  • Make formatting of AMD GPU instructions match objdump (#1473, #1508)

  • Make AMD GPU binaries are RELA relocatable (#1444)

  • Treat Intel's XE Gen12 ELF binaries like Gen9 ELF binaries (#1468)

  • Correct and improve detection of instructions that are system call and interrupt instructions on all platforms (#1684, #1686, #1691, #1692, #1693)

  • Add a callback mechanism for instructions not decoded by Dyninst to allow user decoding (#1276)

  • Correctly determine if an x86 LEA instruction is a NOP in all cases (#1681)

  • 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 (#1457, #1463, #1465)

  • Enhance x86 instruction information: add support for additional x86 registers, correct x86 mnemonic misspellings, synchronize instruction IDs with those found Capstone (#1421, #1467, #1582, #1588, #1590, #1629, #1630, #1633, #1634, #1636, #1638, #1639)

  • Cleanup and enhance DWARF processing: r-value references, C++ scoped enums, sub-ranges (#1159, #1164, #1369)

  • 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 (#1547, #1581, #1587)

  • 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) (#1498, #1500, #1501, #1538, #1545, #1546, #1551, #1552, #1558, #1565, #1568, #1571, #1572, #1573, #1574, #1575, #1577, #1579, #1580, #1586, #1596, #1601, #1606, #1623, #1626)

  • Support instrumentation of static executables that are statically linked with glibc 2.34 and newer (#1355)

  • 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 (#1391, #1642, #1688)

  • Improve comparison order for ParseAPI::Function objects so the order is stable across runs and more meaningful for human inspection (#1668)

  • Safely read and write unaligned memory locations to prevent crashes to prevent a C++ undefined behavior and crashes on platforms that have alignment requirements (#1394)

  • Enhance BinaryEdit::getResolvedLibraryPath to correctly handle additional output by recent version of /sbin/ldconfig (#1362)

  • 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 (#1393, #1399, #1400, #1411, #1412, #1415, #1419, #1420, #1423, #1424, #1425, #1512, #1513, #1521, #1524, #1525, #1526, #1527, #1528, #1529, #1533, #1548, #1553, #1560, #1648, #1649, #1652, #1659, #1660, #1661, #1664, #1665, #1666, #1667, #1676)

Bug Fixes

API & ABI changes

Renamed classes

InstructionAPI::Operation_impl to InstructionAPI::Operation

Member function signatures changes:

SymtabAPI::LineInformation::equal_range
SymtabAPI::LineInformation::~LineInformation
InstructionAPI::ArchSpecificFormatter::getInstructionString(const std::vector<std::string>&) const
InstructionAPI::ArchSpecificFormatter::formatImmediate(const std::string&) const = 0
InstructionAPI::ArchSpecificFormatter::formatDeref(const std::string&)  const= 0
InstructionAPI::ArchSpecificFormatter::formatRegister(const std::string&)  const= 0
InstructionAPI::ArchSpecificFormatter::formatBinaryFunc(const std::string&, const std::string&, const std::string&) const
InstructionAPI::Instruction::addSuccessor(Expression::Pt, bool, bool, bool, bool, bool) const
InstructionAPI::Operand(Expression::Ptr, bool, bool)

Member functions removals:

MachRegister(int, char const*)
Symtab::exportXML,exportBin,importBin
Symtab::getAllFunctions(std::vector<Function*>);
Symtab::findModuleByName(Module *&, std::string)
Symtab::getDefaultModule const
Symtab::fixup_SymbolAddr
SymtabAPI::FunctionBase::setReturnType(Type*)
SymtabAPI::Module::setName
Symtab::mfForDebugInfo
Symtab::checkPPC64DescriptorSymbols
Symtab::Symtab(Symtab const&)
Symtab::addLine(std::string, unsigned int, unsigned int, Offset, Offset);
Symtab::addAddressRange(Offset, Offset, std::string, unsigned int, unsigned int);
Symtab::Module::getCompDir()
Symtab::Module::getCompDir(Module::DebugInfoT&)
Symtab::Module::addDebugInfo(Module::DebugIntoT)
SymtabAPI::FunctionBase::FunctionBase(Symbol *)
SymtabAPI::FunctionBase::FunctionBase(Module *)
SymtabAPI::FunctionBase::Function(Symbol *)
InstructionAPI::Instruction::appendOperand
InstructionAPI::Operand::~Operand
InstructionAPI::Operand::(Operand const&)
InstructionAPI::Operand::operator=(Operand const&)

Classes with changed sizes:

SymtabAPI::Module
SymtabAPI::Symtab

Classes no longer usable as a base class:

SymtabAPI::LineInformation

Manuals


Special thanks to external contributors to this release:

Dyninst v12.3.0

22 Feb 21:49
334b685
Compare
Choose a tag to compare

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


Manuals

Dyninst v12.2.1

21 Nov 19:46
def4204
Compare
Choose a tag to compare

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

Dyninst v12.2.0

28 Jul 21:27
02c20e9
Compare
Choose a tag to compare

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

Dyninst v12.1.0

09 Mar 22:43
14d9d44
Compare
Choose a tag to compare

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

v12.1.0-rc3

09 Mar 15:46
9b5ffe3
Compare
Choose a tag to compare
v12.1.0-rc3 Pre-release
Pre-release

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)

v12.1.0-rc2

27 Feb 19:50
4655b90
Compare
Choose a tag to compare
v12.1.0-rc2 Pre-release
Pre-release

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

v12.1.0-rc1

23 Feb 16:17
a858352
Compare
Choose a tag to compare
v12.1.0-rc1 Pre-release
Pre-release

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

Dyninst 12.0.1

23 Nov 21:52
Compare
Choose a tag to compare

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


Manuals

Dyninst 12.0.0

11 Nov 20:48
154dde7
Compare
Choose a tag to compare

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


Manuals