This series of commits includes bug fixes for stack analysis, as well as some new functionality to provide less conservative stack analysis results.
Commit b35549cfbb99f5d8ec3c4fbc3bbc60712dc31af2 <http://git.dyninst.org/?p=dyninst.git;a=commit;h=b35549cfbb99f5d8ec3c4fbc3bbc60712dc31af2> Define >, <=, >=, and - operators for StackAnalysis::Height Commit db37694b60067e7785d47d29d9ac159507849fde <http://git.dyninst.org/?p=dyninst.git;a=commit;h=db37694b60067e7785d47d29d9ac159507849fde> Add += operator for StackAnalysis::Height Commit 8054c01f082943c21cb789ae4a516dcaa8ba7e8e <http://git.dyninst.org/?p=dyninst.git;a=commit;h=8054c01f082943c21cb789ae4a516dcaa8ba7e8e> Bug fixes for arithmetic operations for StackAnalysis::Height Previously, most arithmetic involving TOP returned TOP. This is not correct, and the operators have been updated accordingly. Commit 70ff5b36bd2908367910695362dcedeb6e43cc81 <http://git.dyninst.org/?p=dyninst.git;a=commit;h=70ff5b36bd2908367910695362dcedeb6e43cc81> Redefine delta and abs to be of type long in StackAnalysis::TransferFunc Commit 0f5d60ae68f2eebd82f9c70fc9d26ed12e5c919e <http://git.dyninst.org/?p=dyninst.git;a=commit;h=0f5d60ae68f2eebd82f9c70fc9d26ed12e5c919e> Extend stack analysis transfer functions to handle targets that should be "rounded" to TOP or BOTTOM. This annotate transfer functions that have the following characteristic: if target is TOP, keep as TOP else, target must be set to BOTTOM E.g., sign-extending a register: if the register had an uninitialized stack height (TOP), the sign-extension has no effect if the register had a valid or notunique (BOTTOM) stack height, the sign-extension must result in a BOTTOM stack height Commit d720f4b876cc2ec6d972890f0645c8311bc100b1 <http://git.dyninst.org/?p=dyninst.git;a=commit;h=d720f4b876cc2ec6d972890f0645c8311bc100b1> In stack analysis, add handlers for sign- and zero-extend instructions. Commit 9c25128faa6c9279c936f608e85b2ceb1f9681a4 <http://git.dyninst.org/?p=dyninst.git;a=commit;h=9c25128faa6c9279c936f608e85b2ceb1f9681a4> Modify StackAnalysis::findDefinedHeights to include registers with a height of BOTTOM. Commit 0b3cc15d9569a8196378a2e23b11959fcfede70d <http://git.dyninst.org/?p=dyninst.git;a=commit;h=0b3cc15d9569a8196378a2e23b11959fcfede70d> Redefine StackAnalysis::handleDefault to round a register to TOP or BOTTOM, instead of always setting to BOTTOM. Commit 60856a9e5ab0477cb85781c9ea6909de065bbcb4 <http://git.dyninst.org/?p=dyninst.git;a=commit;h=60856a9e5ab0477cb85781c9ea6909de065bbcb4> Updated StackAnalysis::handleAddSub to also operate on non-SP registers. Commit 54d19f966dd02304a94001e5248eed5cca04739b <http://git.dyninst.org/?p=dyninst.git;a=commit;h=54d19f966dd02304a94001e5248eed5cca04739b> Update StackAnalysis::handleMov to handle non register-register moves. Commit f1d6ae78e50ea0db69396858b191e2ab6310acf0 <http://git.dyninst.org/?p=dyninst.git;a=commit;h=f1d6ae78e50ea0db69396858b191e2ab6310acf0> Handle complex LEA instructions in stack analysis. Existing stack analysis only handled LEA instructions with a single source register. This ignores LEA instructions where the source is an SIB expression. A new transfer func, sibFunc, has been added, and the apply() and accumulate() functions have been updated to properly handle this new transfer function.
_______________________________________________ Dyninst-api mailing list [email protected] https://lists.cs.wisc.edu/mailman/listinfo/dyninst-api
