This commit allows paradyn to defer instrumenting a function to a later
authorgurari <gurari>
Mon, 2 Jul 2001 22:43:22 +0000 (22:43 +0000)
committergurari <gurari>
Mon, 2 Jul 2001 22:43:22 +0000 (22:43 +0000)
commit65bdf67ddd326bc1e5f3b7f78a13d78b7d46d673
tree33964b8d0bd445cc57603670cf18232d27944ccb
parent2c3b0591752159583273a7b2576a23214cbc94cc
This commit allows paradyn to defer instrumenting a function to a later
time. This occurs when a function needs to be relocated to be
instrumented, but the relocation (and subsequent instrumentation) cannot
be done because the application is executing inside the function. Paradynd
now keeps a vector of defInst (deferred instrumentation) objects (they
indicate the metric and focus that could not be instrumented) and
periodically tries to insert the instrumentation. After an arbitrary
number of tries, which I set it up to be a thousand, if the function has
not been relocated, instrumentation is instead inserted using traps. In
order to do deferred instrumentation I added a boolean to the
addInstFunc() and findAndInstallBaseTramp() functions to indicate whether
the instrumentation had to be deferred. findAndInstallBaseTramp() is a
platform dependent function.
14 files changed:
dyninstAPI/src/func-reloc.C
dyninstAPI/src/inst-alpha.C
dyninstAPI/src/inst-mips.C
dyninstAPI/src/inst-power.C
dyninstAPI/src/inst-sparc-solaris.C
dyninstAPI/src/inst-x86.C
dyninstAPI/src/inst.C
dyninstAPI/src/inst.h
dyninstAPI/src/instP.h
dyninstAPI/src/symtab.h
dyninstAPI/src/templates2.C
paradynd/src/metricFocusNode.C
paradynd/src/metricFocusNode.h
paradynd/src/perfStream.C