Bill Williams [Tue, 6 Oct 2009 16:42:31 +0000 (11:42 -0500)]
Autoconf fix: wrong variables used for ICC/ICPC.
James Waskiewicz [Tue, 6 Oct 2009 05:59:00 +0000 (01:59 -0400)]
Merge branch 'master' of git.dyninst.org:/pub/dyninst
James Waskiewicz [Tue, 6 Oct 2009 05:57:43 +0000 (01:57 -0400)]
bug 1030: check for and attempt to fix issues with alignment related fields in
the elf header structs. Left things noisy for the moment so others may look over the
fixes easier.
Bill Williams [Mon, 5 Oct 2009 23:08:36 +0000 (18:08 -0500)]
Fix for bug 1035: fxsave incorrectly emitted when we don't need it. FPU register liveness, due to the register stack nature, is overapproximated via "does this function contain a write to the FP stack". This requires that we initially treat the FP stack as dead, and set it to live if we find that it's written to.
Note that while the MM0-MM7 registers overlap with the FPU registers, we check them for liveness using the ordinary algorithm, and so they are initialized to "live". If any of them, or the virtual FP stack register, is live, we'll emit a fxsave/fxrestore pair.
Bill Williams [Mon, 5 Oct 2009 20:42:47 +0000 (15:42 -0500)]
Added heuristic to look for the movslq sign-extending move that signifies that an AMD64 jump table likely has 32-bit entries
Bill Williams [Mon, 5 Oct 2009 19:03:02 +0000 (14:03 -0500)]
AIX build fix (pdvector vs. std::vector)
Bill Williams [Mon, 5 Oct 2009 19:02:34 +0000 (14:02 -0500)]
More dead code removal (BPatch_dependenceGraph node and edge classes).
Bill Williams [Mon, 5 Oct 2009 16:23:12 +0000 (11:23 -0500)]
Disabled test_instruction_profile (looks for libc) and test3_5 (crashes mutatee deliberately) on Windows.
Test_instruction_profile doesn't *test* much, it's just a profiling harness, and test3_5's mutatee crash causes more problems (Windows nightlies failing to report) than it detects.
Bill Williams [Mon, 5 Oct 2009 15:51:38 +0000 (10:51 -0500)]
Added sanity checks to InstructionDecoder for immediate decoding. Correctly re-examined the presence of an operand size prefix when doing operand decoding; this ensures that decoding immediates will not access uninitialized memory.
Bill Williams [Mon, 5 Oct 2009 15:49:08 +0000 (10:49 -0500)]
Windows fixes: there are 4 more calls on Windows than Unix in test6LS. These write memory now.
Bill Williams [Mon, 5 Oct 2009 15:47:51 +0000 (10:47 -0500)]
IAT lookups converted to InstructionAPI for windows/x86.
Bill Williams [Mon, 5 Oct 2009 15:37:21 +0000 (10:37 -0500)]
Optimizations: remove vector that's no longer useful, don't duplicate isCode/isData calls unnecessarily (avoiding log N lookups in Symtab regions)
Bill Williams [Mon, 5 Oct 2009 15:35:48 +0000 (10:35 -0500)]
Removed dead slicing code.
Bill Williams [Mon, 5 Oct 2009 15:35:23 +0000 (10:35 -0500)]
Optimized register ID ordering for faster category detection.
Bill Williams [Mon, 5 Oct 2009 15:35:07 +0000 (10:35 -0500)]
Optimized register promotion, removed dead code
Bill Williams [Mon, 5 Oct 2009 15:34:34 +0000 (10:34 -0500)]
Bug fix: rebinding a binary function's arguments should clear its cached result.
Bill Williams [Thu, 1 Oct 2009 22:59:17 +0000 (17:59 -0500)]
Jump table parsing fix (O|SS et al); register promotion optimization
Bill Williams [Thu, 1 Oct 2009 16:39:08 +0000 (11:39 -0500)]
Bug fixes
Bill Williams [Wed, 30 Sep 2009 20:26:06 +0000 (15:26 -0500)]
Autoconf fixes: ia64 platform typo, export more standard directories; configure rebuilt as a result.
Bill Williams [Wed, 30 Sep 2009 20:25:20 +0000 (15:25 -0500)]
Cross-platform fixes for parsing migration to IAPI; includes experimental Windows call target checking, IAPI version.
Verified on AIX/power, Sparc/Solaris, IA64/Linux, AMD64/Linux so far.
Bill Williams [Thu, 10 Sep 2009 21:45:29 +0000 (16:45 -0500)]
Bug fix: force 32-bit mode for decoding a 32-bit libc
Bill Williams [Thu, 10 Sep 2009 21:44:59 +0000 (16:44 -0500)]
GetInstLevel abstracted to InstructionAdapter base
Bill Williams [Thu, 10 Sep 2009 21:19:19 +0000 (16:19 -0500)]
Cleanup:
* Separate IAPI and InstrucIter adapters into separate files.
* Promote common methods, provide useful IA data members for internals
Bill Williams [Thu, 10 Sep 2009 16:07:09 +0000 (11:07 -0500)]
Everything but NOP detection and instruction copying to instpoints in buildCFG using IAPI rather than InstrucIter.
Still somewhat slow, and needs code cleanup desperately.
Bill Williams [Thu, 3 Sep 2009 20:12:35 +0000 (15:12 -0500)]
Added extra debug logging to loop test (1-37).
Bill Williams [Thu, 3 Sep 2009 20:12:14 +0000 (15:12 -0500)]
Parsing rewrite 1.0: adapter for IAPI/InstrucIter conversion.
Matthew Legendre [Thu, 1 Oct 2009 14:53:48 +0000 (09:53 -0500)]
Merge branch 'master' of legendre@git.dyninst.org:/pub/dyninst
Matthew Legendre [Thu, 1 Oct 2009 14:53:16 +0000 (09:53 -0500)]
Fix for segfault when sorting exception block objects
Matthew Legendre [Wed, 30 Sep 2009 21:45:28 +0000 (16:45 -0500)]
Merge branch 'master' of legendre@git.dyninst.org:/pub/dyninst
Matthew Legendre [Wed, 30 Sep 2009 21:44:24 +0000 (16:44 -0500)]
Fixes, mostly building, for Fedora Core 11
Madhavi Krishnan [Mon, 28 Sep 2009 17:03:01 +0000 (12:03 -0500)]
Fixes for bug 1028:Single snippet removal at multi-inst point
In this fix, we regenerate multitramp when its basetramp is changed.
A new function called updateCode is added to multiTramp class. This function
regenerates new code for the multiTramp when a miniTrampInstance is
removed.
I also fixed a bug in multiTramp.C - removeCode function - condition to
check if a particular multiTramp is the current version mapped in the process
table.
Madhavi Krishnan [Tue, 1 Sep 2009 15:54:39 +0000 (10:54 -0500)]
Fixes for instrumenting shared library:
* Fixed condition for checking if a binary is static or not
- We determine if a binary is static by the absence of INTERP
section. Shared libraries may not have INTERP section but
are still dynamic. In this fix, we check for the presence of
INTERP section or the elf type being ELF_DYN
(dynamic shared library) to mark both dynamic executable
and shared library as non-static.
* Added place holder for saving referring symbol when creating
a new symbol from undefined symbol. This is needed for checking if
a variable comes an executable or shared library to add a dependency in
DT_NEEDED entries. If the variable comes from an executable, we should not
add to DT_NEEDED entry.
* Set RT path for dynamically loaded library
Bill Williams [Thu, 20 Aug 2009 20:15:15 +0000 (15:15 -0500)]
Autoconf fixes:
* Pick up binary/include/library destinations from PREFIX.
* Add disable-testsuite option (so that make install will work, e.g. for packagers)
Bill Williams [Thu, 20 Aug 2009 20:12:58 +0000 (15:12 -0500)]
Test build fixes: Instruction to Instruction::Ptr conversion for AMD64, killed dead code.
Nathan Rosenblum [Thu, 20 Aug 2009 18:54:03 +0000 (13:54 -0500)]
Several small fixes, including the following:
- Recursive function parsing eliminates a previously held invariant
on the order of functions in a block's funcs_ vector. Relying on
this (nonexistent) ordering coudl cause us to miss copying some
instPoints in shared code.
- Kevin discovered an extremely common non-returning function on
Windows platforms; this is now on the special-case list.
- Calling the STL set::size() method is slow. Fixed.
Bill Williams [Mon, 17 Aug 2009 15:44:01 +0000 (10:44 -0500)]
Add boost pool headers to external; update IAPI make.module.tmpl so it no longer tries to copy a nonexistent header.
Bill Williams [Fri, 14 Aug 2009 21:47:04 +0000 (16:47 -0500)]
InstructionAPI optimization pass 1:
* Delayed decoding of operands
* Use of fixed-size allocation pools for IAPI objects
* Placement new for frequently reconstructed objects
* Lighter-weight low-level decoding
* Optimized storage of raw instruction bytes
* Eliminated redundant encoding of operand read/write info
* Eliminated many unnecessary copy operations
- Parameter passing by cref preferred to passing by value
- Eliminate copy-on-return via shared pointer in public interface, since we can't rely on RVO
* Avoid dynamic casts where possible
* Delay construction of flag objects as long as possible
Andrew Bernat [Tue, 28 Jul 2009 19:51:38 +0000 (14:51 -0500)]
Update DepGraphAPI to use new StackAnalysis interface
Update StackAnalysis to return shared pointers instead of raw pointers.
Andrew Bernat [Fri, 3 Jul 2009 21:04:18 +0000 (16:04 -0500)]
Initial commit of new region-based stack depth analysis.
TODO:
1) Shared-pointer Region tracking so that users can discard a stack analysis object without losing all its memory.
2) Fill in stack affecting instructions.
Andrew Bernat [Fri, 3 Jul 2009 21:03:34 +0000 (16:03 -0500)]
Reduce InstructionAPI copy overhead by making fewer copies.
Todd Frederick [Fri, 3 Jul 2009 13:52:44 +0000 (08:52 -0500)]
Fix Stackwalker custom ProcessState, Fix Symtab address size
James Waskiewicz [Tue, 30 Jun 2009 17:46:08 +0000 (13:46 -0400)]
temporarily disable test_symtab_ser_funcs for the release
Bill Williams [Tue, 30 Jun 2009 17:34:52 +0000 (12:34 -0500)]
Use the right path for external/boost in building the test suite.
Matthew Legendre [Tue, 30 Jun 2009 17:03:56 +0000 (12:03 -0500)]
Add StackwalkerAPI to top level build target
Matthew Legendre [Tue, 30 Jun 2009 17:02:56 +0000 (12:02 -0500)]
Update Dyninst version numbers from 5.2 to 6.0
Matthew Legendre [Tue, 30 Jun 2009 02:35:35 +0000 (21:35 -0500)]
Make test_type_info compatible with Windows
Matthew Legendre [Mon, 29 Jun 2009 22:53:42 +0000 (17:53 -0500)]
Fix bad defines in include file
Matthew Legendre [Mon, 29 Jun 2009 22:47:44 +0000 (17:47 -0500)]
Fix race condition that showed up in a fork test
Bill Williams [Fri, 26 Jun 2009 19:28:32 +0000 (14:28 -0500)]
Fix for mismatch between C and C++ memory allocation: new/free changed to new/delete
Bill Williams [Fri, 26 Jun 2009 15:50:43 +0000 (10:50 -0500)]
InstructionAPI docs versioned to 1.0.
Andrew Bernat [Fri, 26 Jun 2009 19:56:16 +0000 (14:56 -0500)]
Merge branch 'master' of git.dyninst.org:/pub/dyninst
Andrew Bernat [Fri, 26 Jun 2009 19:56:03 +0000 (14:56 -0500)]
Remove DEBUG_FLAG from Makefiles.
Matthew Legendre [Fri, 26 Jun 2009 19:44:13 +0000 (14:44 -0500)]
Windows build fix
Madhavi Krishnan [Fri, 26 Jun 2009 19:23:42 +0000 (14:23 -0500)]
More changes to Makefile.in to set libelf and libdwarf
Madhavi Krishnan [Fri, 26 Jun 2009 19:20:04 +0000 (14:20 -0500)]
More parseThat build issues
Changes to build parseThat when LD_LIBRARY_PATH is not set.
We pass dwarf and elf library path to configure.
Matthew Legendre [Fri, 26 Jun 2009 18:21:57 +0000 (13:21 -0500)]
Merge branch 'master' of legendre@git.dyninst.org:/pub/dyninst
Matthew Legendre [Fri, 26 Jun 2009 18:20:53 +0000 (13:20 -0500)]
Fix issue where test_driver could infinite spin if a group setup crashed
Matthew Legendre [Fri, 26 Jun 2009 18:19:11 +0000 (13:19 -0500)]
We weren't setting location structure for a couple types of instructions.
Matthew Legendre [Fri, 26 Jun 2009 18:17:33 +0000 (13:17 -0500)]
Fix issue where we failed to throw away a junk link map entry
Matthew Legendre [Fri, 26 Jun 2009 18:16:31 +0000 (13:16 -0500)]
Make strings of nop break basic blocks
Madhavi Krishnan [Thu, 25 Jun 2009 22:32:19 +0000 (17:32 -0500)]
Rewriting libc
We were dropping relocation entries if they have index STN_UNDEF and
no name. This was causing failures while rewriting libc.
This commit fixes this. We replicate original relocation entries
even if they have no name preserving its undefined index status.
Madhavi Krishnan [Thu, 25 Jun 2009 19:10:53 +0000 (14:10 -0500)]
Fix for parseThat build failures
parseThat build involves executing parseThat/Makefile and
parseThat/$PLATFORM/Makefile. We were setting
TO_CORE (path to dyninst directory) as "../.." which is correct
if we are in parseThat/$PLATFORM/Makefile but
wrong if we are in parseThat/Makefile.
The only reason to use TO_CORE in parseThat/Makefile is to set the
platform if not set, using scripts/sysname. This commit fixes this
problem by setting the path to scripts correctly, without using TO_CORE.
Bill Williams [Wed, 24 Jun 2009 22:49:23 +0000 (17:49 -0500)]
* Correctly open the first dependency that matches the ABI of its parent.
* Only do a full dependency check if we're opening them
* Scan for a thread library separately from opening dependent libs
* Maintain proper recursion for opening dependent libraries & adding new ones
Matthew Legendre [Wed, 24 Jun 2009 18:24:14 +0000 (13:24 -0500)]
Fix issues with instrumenting overlapping instructions
Matthew Legendre [Tue, 23 Jun 2009 23:59:07 +0000 (18:59 -0500)]
Merge branch 'master' of legendre@git.dyninst.org:/pub/dyninst
Matthew Legendre [Tue, 23 Jun 2009 23:58:42 +0000 (18:58 -0500)]
Fix testsuite attach race condition
Matthew Legendre [Tue, 23 Jun 2009 23:56:29 +0000 (18:56 -0500)]
More windows build fixes
Madhavi Krishnan [Tue, 23 Jun 2009 22:53:30 +0000 (17:53 -0500)]
Rewriting static binary
This commit handles rewriting static binaries. We determine if
a binary is static in ObjectElf using PT_INTERP. We use this
condition to selectively not execute code related to dynamic linking
and relocation in ObjectElf and emitElf.
We also disable traps in binaryEdit and baseTramps - since static
binaries cannot load our runtime library.
We still do not handle stripped binary in this commit - but thats
coming soon.
Bill Williams [Tue, 23 Jun 2009 20:37:26 +0000 (15:37 -0500)]
Fortran fixes
Bill Williams [Tue, 23 Jun 2009 19:32:04 +0000 (14:32 -0500)]
Platform-specific guard for platform-specific check
Bill Williams [Tue, 23 Jun 2009 15:35:52 +0000 (10:35 -0500)]
Set the right address width before we emit any code.
Bill Williams [Tue, 23 Jun 2009 15:35:23 +0000 (10:35 -0500)]
Move more variables out of .bss so we can write them with the rewriter.
Bill Williams [Fri, 19 Jun 2009 18:45:39 +0000 (13:45 -0500)]
Add boost include directory to test suite includes.
Bill Williams [Thu, 18 Jun 2009 15:21:46 +0000 (10:21 -0500)]
Enabled many tests in binary rewriter mode. Still some failures on AMD64.
Matthew Legendre [Tue, 23 Jun 2009 17:45:32 +0000 (12:45 -0500)]
Fix windows build breakage
Matthew Legendre [Tue, 23 Jun 2009 17:14:56 +0000 (12:14 -0500)]
Remove bad check from test--modules without code address are legal
Matthew Legendre [Tue, 23 Jun 2009 17:14:01 +0000 (12:14 -0500)]
Fix issues with line number parsing when we can't find a module
Matthew Legendre [Tue, 23 Jun 2009 17:12:49 +0000 (12:12 -0500)]
Remove debugging printfs, code cleanup
Matthew Legendre [Mon, 22 Jun 2009 23:28:40 +0000 (18:28 -0500)]
Fix problem with mis-aligned section entries vs section sizes
Matthew Legendre [Mon, 22 Jun 2009 22:43:47 +0000 (17:43 -0500)]
Merge branch 'master' of legendre@git.dyninst.org:/pub/dyninst
Matthew Legendre [Mon, 22 Jun 2009 22:43:29 +0000 (17:43 -0500)]
Fix issues with testsuite not restarting properly after crashes
Madhavi Krishnan [Mon, 22 Jun 2009 17:13:05 +0000 (12:13 -0500)]
bug 1022 - fixed (again) loop condition for finding dynamic section in ELF binary
Madhavi Krishnan [Fri, 19 Jun 2009 21:46:41 +0000 (16:46 -0500)]
bug 1022 - fixed loop condition for finding dynamic section in ELF binary
Andrew Bernat [Fri, 19 Jun 2009 19:24:25 +0000 (14:24 -0500)]
Merge branch 'master' of git.dyninst.org:/pub/dyninst
Andrew Bernat [Fri, 19 Jun 2009 19:24:19 +0000 (14:24 -0500)]
Code generation fixes.
Andrew Bernat [Fri, 19 Jun 2009 19:23:59 +0000 (14:23 -0500)]
Use correct code generation path in code replacement.
Matthew Legendre [Fri, 19 Jun 2009 19:00:36 +0000 (14:00 -0500)]
Merge branch 'master' of legendre@git.dyninst.org:/pub/dyninst
Matthew Legendre [Fri, 19 Jun 2009 18:41:04 +0000 (13:41 -0500)]
Merge branch 'master' of legendre@git.dyninst.org:/pub/dyninst
Conflicts:
dyninstAPI/src/BPatch_binaryEdit.C
dyninstAPI/src/binaryEdit.C
James Waskiewicz [Fri, 19 Jun 2009 18:37:32 +0000 (14:37 -0400)]
remove debug output leakage
James Waskiewicz [Fri, 19 Jun 2009 18:24:28 +0000 (14:24 -0400)]
testsuite: expand DYNINST_REWRITER_NO_UNLINK such that unique filenames are produced for each rungroup, this ensures that binaries are not overwritten by each successive group. For a given rungroup, only a subset of the rewriter tests will be valid. This also creates a report file, one per rewritten binary, that contains the list of
tests that were implemented in that particular binary.
Also, if, in a rungroup, one test fails or crashes, all tests in the group were marked with failure. This changes that: now if a rewritten mutatee crashes or reports failure, the rungroup is broken apart into individual tests, with each being run seperately to provide a finer grain of reporting on what succeeded and what failed.
James Waskiewicz [Fri, 19 Jun 2009 14:59:50 +0000 (10:59 -0400)]
test_pt_ls: update to execute rewritten binary (both automatically via parseThat and manually as a sanity check)
Matthew Legendre [Thu, 18 Jun 2009 21:51:55 +0000 (16:51 -0500)]
Fixes for intercepting SIGTRAP registration
Andrew Bernat [Thu, 18 Jun 2009 20:49:00 +0000 (15:49 -0500)]
Add "dyn_signal" to intercept calls to signal()
Andrew Bernat [Thu, 18 Jun 2009 20:22:54 +0000 (15:22 -0500)]
Add stdlib to include line so that Ginger won't complain it doesn't know what a malloc is.
Andrew Bernat [Thu, 18 Jun 2009 20:10:47 +0000 (15:10 -0500)]
Merge branch 'master' of git.dyninst.org:/pub/dyninst
Andrew Bernat [Thu, 18 Jun 2009 20:10:33 +0000 (15:10 -0500)]
Add inter-module call replacement to test1_14F (fortran mode)
Andrew Bernat [Thu, 18 Jun 2009 20:10:11 +0000 (15:10 -0500)]
Remove debugging statements.
Fix a logic error in emitting static inter-module calls
Recognize shared libraries correctly in the binary rewriter.
Andrew Bernat [Thu, 18 Jun 2009 20:09:37 +0000 (15:09 -0500)]
Remove debugging statements
Matthew Legendre [Thu, 18 Jun 2009 17:00:10 +0000 (12:00 -0500)]
testsuite Windows build fixes
Matthew Legendre [Thu, 18 Jun 2009 01:18:30 +0000 (20:18 -0500)]
Fix issue with emitting 1 byte and 2 byte loads/stores on x86_64