Introducing recursive traversal parsing into Dyninst.
authorNathan Rosenblum <nater@aemilia.cs.wisc.edu>
Thu, 22 Jan 2009 20:03:16 +0000 (14:03 -0600)
committerNathan Rosenblum <nater@aemilia.cs.wisc.edu>
Fri, 6 Feb 2009 20:04:13 +0000 (14:04 -0600)
commitecd7eac74f03a119b06382c77c3157117d27e546
treef7f14aee4069268cd6868dcd1dab6972ae5727f3
parent1f662d01fd85e8c0599ea50ac3e51fb4f8d46ad5
Introducing recursive traversal parsing into Dyninst.

Instead of blindly parsing past call instructions, we now
parse the callee first, attempting to determine (if possible)
whether the function returns. If we can safely determine that
it _does not_, parsing is terminated at the call instruction
to prevent misparsed code.

This commit also disables speculative parsing of stripped
binaries using our current heuristics, which are known to
be faulty on some platforms.

A couple of other fixes crept in:

 - Functions created based on bad symbol table data
   (e.g., invalid addresses) are no longer parsed

 - A couple of build errors in the newtestsuite
14 files changed:
.gitignore [new file with mode: 0644]
common/h/IBSTree.h [new file with mode: 0644]
dyninstAPI/src/function.C
dyninstAPI/src/image-flowGraph.C
dyninstAPI/src/image-func.C
dyninstAPI/src/image-func.h
dyninstAPI/src/image-x86.C
dyninstAPI/src/linux.C
dyninstAPI/src/liveness.C
dyninstAPI/src/mapped_module.C
dyninstAPI/src/mapped_object.C
dyninstAPI/src/symtab.C
dyninstAPI/src/symtab.h
newtestsuite/src/dyninst/test5_7_mutatee.C