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
-
correct instruction length for x86_64 EVEX instructions (#1439)
-
Correctly save & restore of registers on aarch64 for instrumented code (#1000, #1392)
-
Fix determination of an instruction being an interrupt or syscall (#1683)
-
Correctly determine if an x86 register is MMX (#1644)
-
Prevent segfault in Indirect Analyzer (#1672)
-
Fix segfault in output operator<< for Module* (#1682)
-
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 (#1293, #1331, #1332, #1389, #1390, #1394, #1395, #1397, #1402, #1403, #1405, #1416, #1418, #1426, #1427, #1428, #1429, #1430, #1431, #1432, #1433, #1434, #1435, #1443, #1447, #1448, #1449, #1450, #1451, #1456, #1462, #1464, #1466, #1475, #1476, #1477, #1478, #1479, #1480, #1481, #1483, #1485, #1486, #1487, #1488, #1489, #1490, #1491, #1492, #1494, #1495, #1496, #1499, #1503, #1504, #1505, #1506, #1507, #1509, #1514, #1515, #1516, #1520, #1530, #1531, #1532, #1534, #1535, #1536, #1539, #1540, #1543, #1544, #1549, #1550, #1554, #1557, #1559, #1561, #1562, #1563, #1564, #1566, #1567, #1569, #1570, #1576, #1578, #1583, #1585, #1589, #1591, #1592, #1593, #1594, #1595, #1597, #1598, #1599, #1600, #1603, #1604, #1605, #1607, #1608, #1609, #1610, #1611, #1612, #1613, #1614, #1615, #1616, #1617, #1618, #1619, #1620, #1621, #1622, #1624, #1631, #1632, #1640, #1641, #1643, #1645, #1650, #1651, #1654, #1655, #1656, #1657, #1658, #1662, #1663, #1679, #1685, #1687, #1689, #1695)
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
- DyninstAPI 13.0.0
- PatchAPI 13.0.0
- ParseAPI 13.0.0
- DataflowAPI 13.0.0
- InstructionAPI 13.0.0
- SymtabAPI 13.0.0