Skip to content

Dyninst v13.0.0

Latest
Compare
Choose a tag to compare
@kupsch kupsch released this 21 Mar 18:10
· 24 commits to master since this release
268b630

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: