(1) Compilability with gcc 3.4.3 ( wanted to check if compiling gcc with
authorjaw <jaw>
Thu, 1 Dec 2005 00:56:23 +0000 (00:56 +0000)
committerjaw <jaw>
Thu, 1 Dec 2005 00:56:23 +0000 (00:56 +0000)
commit14e47b2fd78db8b9c8248a79fc99050109dc7a5d
tree3f06dcf8cd7d316dcb12d870df5c5ca867f633b5
parente92bde8112f51113513324fe367b1efd4745890f
(1)  Compilability with gcc 3.4.3 ( wanted to check if compiling gcc with
--enable-threads=posix, vs --enable-threads=single made a difference --
our default gcc 3.3.3 compiler is "single", but our gcc3.4.3 is posix ).
No discernable difference, except test1 subtest24 fails when dyninst is
compiled with gcc 3.4.3.

(2)  Examination of how we generate arbitrary inst points -- the
historical way to do it is to get a basic block and then call
BPatch_image::createInstPointAtAddr() on every address in the block,
expecting failures along the way (particularly on x86).  There was
a comment in test1 suggesting that this was the "second stupidest way to
do it" and that we really need to iterate over instructions.

So...  I added an api:  BPatch_instruction::getInstPoint().  Now, to
generate arbitrary inst points, we can get all the instructions in a basic
block and get the instPoints explicitly, as opposed to doing all of the
previously expected guesswork.

My reasons for doing this was that test1, subtest20 was _crawling_ on
alpha -- for some reason it was generating 1500+ inst points, some of
which (guessing half) were duplicates.

Unfortunately subtest20 is still mind-numbingly slow, simply due to the
time required to generate, install, and link 750+ snippets.  I'm not
familiar enough (yet) with the multiTramp code to know if this can be sped
up, but it seems intractably slow at the moment.
33 files changed:
dyninstAPI/h/BPatch_basicBlock.h
dyninstAPI/h/BPatch_instruction.h
dyninstAPI/h/BPatch_memoryAccess_NP.h
dyninstAPI/h/BPatch_process.h
dyninstAPI/src/BPatch_asyncEventHandler.C
dyninstAPI/src/BPatch_basicBlock.C
dyninstAPI/src/BPatch_instruction.C
dyninstAPI/src/BPatch_module.C
dyninstAPI/src/BPatch_process.C
dyninstAPI/src/EventHandler.C
dyninstAPI/src/EventHandler.h
dyninstAPI/src/InstrucIter-alpha.C
dyninstAPI/src/InstrucIter-ia64.C
dyninstAPI/src/InstrucIter-power.C
dyninstAPI/src/InstrucIter-sparc.C
dyninstAPI/src/InstrucIter-x86.C
dyninstAPI/src/MemoryAccess.C
dyninstAPI/src/codeRange.h
dyninstAPI/src/instPoint.C
dyninstAPI/src/libState.h
dyninstAPI/src/mailbox.h
dyninstAPI/src/osf.C
dyninstAPI/src/parseCoff.C
dyninstAPI/src/process.C
dyninstAPI/src/process.h
dyninstAPI/src/procfs.C
dyninstAPI/src/signalhandler.C
dyninstAPI/src/signalhandler.h
dyninstAPI/src/sol_proc.C
dyninstAPI/src/unix.C
dyninstAPI/tests/src/test1.C
dyninstAPI/tests/src/test6.C
make.config