CFG-modification, instrumentation & springboard corner cases, defensive mode
authorKevin Roundy <roundy@cs.wisc.edu>
Thu, 1 Sep 2011 22:35:51 +0000 (17:35 -0500)
committerKevin Roundy <roundy@cs.wisc.edu>
Thu, 1 Sep 2011 22:35:51 +0000 (17:35 -0500)
commit7ce20933e496656e964e0b604935a521a9b91036
tree8f32ee648c929e31e452b1a28b2d85f2388a4f10
parentb2c9e64fef869e20293383c81405bad77cce972b
CFG-modification, instrumentation & springboard corner cases, defensive mode

- code overwrite fixes, in re-parsing overwritten functions, loop deletion, page rights, etc
- was failing to instrument some newly parsed functions
- block_instance::callee was very broken
- instruction & preCall instrumentation fixes
- add defensive pads even if call instruction not instrumented
- better descrimination between indirect edges and edges to sink block
- batched block removal for efficiency
- fixed over-exacting consistency checks
- fixed block-point and edge-point deletion
- small dominator graph fixes
- func_instance::getBlock(Address) changed to func_instance::getBlocks(Address)
- fix bugin in calleeName to redirect edge through proper PatchModifier mechanism
- post-call pad trackers use address and function so that block deletion is not a problem
- extra springboards for instrumented instructions (before & after instrumentation)
- fixed SymEval vectorSort to be < , not <= , which violates Windows checks
- replaced .size() with .empty() in several places
- deleted #if 0 code in several places
- replaced ParseAPI->Dyninst callbacks with PatchAPI->Dyninst callbacks
- changed DYNINST_DEBUG_TRAPS to DYNINST_DEBUG_TRAP for consistency with other environment vars
44 files changed:
dataflowAPI/src/SymEval.C
dyninstAPI/src/BPatch_addressSpace.C
dyninstAPI/src/BPatch_image.C
dyninstAPI/src/BPatch_module.C
dyninstAPI/src/BPatch_point.C
dyninstAPI/src/BPatch_process.C
dyninstAPI/src/MemoryEmulator/memEmulator.C
dyninstAPI/src/Patching.C
dyninstAPI/src/Patching.h
dyninstAPI/src/Relocation/CodeMover.C
dyninstAPI/src/Relocation/CodeMover.h
dyninstAPI/src/Relocation/Springboard.C
dyninstAPI/src/Relocation/Transformers/Instrumenter.C
dyninstAPI/src/Relocation/Widgets/CFWidget.C
dyninstAPI/src/Relocation/Widgets/CFWidget.h
dyninstAPI/src/addressSpace.C
dyninstAPI/src/addressSpace.h
dyninstAPI/src/block.C
dyninstAPI/src/block.h
dyninstAPI/src/debug.C
dyninstAPI/src/dominator.C
dyninstAPI/src/function.C
dyninstAPI/src/function.h
dyninstAPI/src/hybridAnalysis.h
dyninstAPI/src/hybridCallbacks.C
dyninstAPI/src/hybridInstrumentation.C
dyninstAPI/src/hybridOverwrites.C
dyninstAPI/src/inst-winnt.C
dyninstAPI/src/mapped_object.C
dyninstAPI/src/mapped_object.h
dyninstAPI/src/parse-cfg.C
dyninstAPI/src/pdwinnt.C
dyninstAPI/src/process.C
dyninstAPI/src/symtab.C
dyninstAPI/src/symtab.h
parseAPI/h/CFGModifier.h
parseAPI/src/CFGModifier.C
patchAPI/h/PatchCallback.h
patchAPI/h/PatchModifier.h
patchAPI/src/ParseCallback.C
patchAPI/src/PatchBlock.C
patchAPI/src/PatchCallback.C
patchAPI/src/PatchFunction.C
patchAPI/src/PatchModifier.C