This commit enables arbitrary instrumentation points at the last instruction
authorjodom <jodom>
Thu, 13 Mar 2003 17:00:05 +0000 (17:00 +0000)
committerjodom <jodom>
Thu, 13 Mar 2003 17:00:05 +0000 (17:00 +0000)
commitddf88631bd84396d5a4fefab33ecda748b2a2dc2
tree6ffcdecf8d040254be81333d2d5917a9d789a058
parentda283e5acfb696a0922e240f0f3b05250ebd028b
This commit enables arbitrary instrumentation points at the last instruction
of a basic block by forcing function relocation (only when this type of inst
point is requested) and inserting an appropriate NOP.  Additionally, since the
inserted NOP is added inside the mini-tramp, the length of the basic block
(as reflected by BPatch_basicBlock::getAddressRange) remains unchanged.

Also, to better control the automatic relocation that happens mostly "behind
the scenes" a new public method, BPatch::setAutoRelocation, has been added
(automatic relocation is on by default to preserve dyninst's current
semantics).  This method is not retroactive and it operates at the granularity
of a snippet (that is, creating inst points will succeed, but calls to
BPatch_thread::insertSnippet will fail if a function requires relocation but
it is turned off).
dyninstAPI/h/BPatch.h
dyninstAPI/src/BPatch.C
dyninstAPI/src/func-reloc.C
dyninstAPI/src/inst-sparc-solaris.C
dyninstAPI/src/inst-sparc.C
dyninstAPI/src/symtab.h