9 years agoInitial support for FreeBSD.
Daniel McNulty [Wed, 11 Aug 2010 20:34:42 +0000 (15:34 -0500)]
Initial support for FreeBSD.

This commit serves as a marker for when the initial FreeBSD changes
were merged with git-head. Please see previous commits for
further descriptions of changes.

The initial support for FreeBSD includes a working binary rewriter
and an almost complete port of ProcControlAPI ( I have observed
some race conditions for the iRPC test when working on multithreaded
debuggees ).

It also removes the FreeBSD 8.0 build directories and support in the testsuite
for FreeBSD 8.0, as the initial support was only tested on FreeBSD 7.2.

9 years agoMerge branch 'master' of ssh://git.dyninst.org/pub/dyninst
Daniel McNulty [Wed, 11 Aug 2010 20:03:51 +0000 (15:03 -0500)]
Merge branch 'master' of ssh://git.dyninst.org/pub/dyninst

9 years agoCommit: Fix recursive parsing
Madhavi Krishnan [Wed, 11 Aug 2010 19:59:22 +0000 (14:59 -0500)]
Commit: Fix recursive parsing

Rewriting libpython caused recursive parsing and hence an assert
in ppc32_linux. This commit fixes the recursive parsing by replacing
img() - that triggers parsing- with img_.

9 years agoFix for bug in 64-bit Elf emitter.
Dan McNulty [Wed, 11 Aug 2010 19:22:41 +0000 (14:22 -0500)]
Fix for bug in 64-bit Elf emitter.

9 years agoFixes for rewriter on FreeBSD for problems introduced by previous merge.
Dan McNulty [Wed, 11 Aug 2010 16:41:35 +0000 (11:41 -0500)]
Fixes for rewriter on FreeBSD for problems introduced by previous merge.

The library_adjust mechanism was incorrectly modified during the merge.

Also includes a build fix for FreeBSD/x86_64.

9 years agoMerge branch 'master' of ssh://mcnulty@wasabi.cs.wisc.edu/p/paradyn/development/mcnul...
Dan McNulty [Wed, 11 Aug 2010 14:29:58 +0000 (09:29 -0500)]
Merge branch 'master' of ssh://mcnulty@wasabi.cs.wisc.edu/p/paradyn/development/mcnulty/d0/dyninst

9 years agoFix for bug 1064 - instrumentation of malloc in libc causes seg. fault.
Daniel McNulty [Tue, 10 Aug 2010 21:46:05 +0000 (16:46 -0500)]
Fix for bug 1064 - instrumentation of malloc in libc causes seg. fault.

The relocations for inter-module variable references/function calls included in
instrumentation were being generated incorrectly for shared libraries that have
a non-zero load offset. A notable example of a library that has this
characteristic is libc. The problem was the address stored in the relocation
was decreased by the library's load offset. This is incorrect because the
address stored in a relocation for a shared library is a base virtual address,
not an offset.

9 years agoMerge branch 'master' of ssh://git.dyninst.org/pub/dyninst
Daniel McNulty [Tue, 10 Aug 2010 21:40:40 +0000 (16:40 -0500)]
Merge branch 'master' of ssh://git.dyninst.org/pub/dyninst


findCallee has been moved to unix.C to be shared by both FreeBSD
and Linux.

9 years agoSmall fix in ELF emitter.
Daniel McNulty [Tue, 10 Aug 2010 16:35:13 +0000 (11:35 -0500)]
Small fix in ELF emitter.

9 years agoShared code inst point fixes
Madhavi Krishnan [Tue, 10 Aug 2010 16:19:53 +0000 (11:19 -0500)]
Shared code inst point fixes

This commit fixes issues with
multiple instpoints at the same
address (shared code). This fixes
the bug with rewriting libc on ppc32_linux.

9 years agoModify compilation streamlining - set VERBOSE_COMPILATION environment variable to...
Andrew Bernat [Tue, 10 Aug 2010 15:16:25 +0000 (10:16 -0500)]
Modify compilation streamlining - set VERBOSE_COMPILATION environment variable to turn it off.

9 years agoFixes for address translation, binary rewriter, and compiler warnings for ProcControl.
Daniel McNulty [Tue, 10 Aug 2010 03:23:35 +0000 (22:23 -0500)]
Fixes for address translation, binary rewriter, and compiler warnings for ProcControl.

9 years agoMerge branch 'master' of ssh://mcnulty@wasabi.cs.wisc.edu/p/paradyn/development/mcnul...
Dan McNulty [Mon, 9 Aug 2010 20:10:47 +0000 (15:10 -0500)]
Merge branch 'master' of ssh://mcnulty@wasabi.cs.wisc.edu/p/paradyn/development/mcnulty/d0/dyninst

9 years agoBuild fixes for FreeBSD related to previous merge of ParseAPI changes.
Dan McNulty [Mon, 9 Aug 2010 20:09:44 +0000 (15:09 -0500)]
Build fixes for FreeBSD related to previous merge of ParseAPI changes.

Also includes some small changes to emitElf* code.

9 years agoFix warnings in AST subclasses; rename DataflowAPI init_debug to avoid conflicts.
Andrew Bernat [Mon, 9 Aug 2010 18:47:01 +0000 (13:47 -0500)]
Fix warnings in AST subclasses; rename DataflowAPI init_debug to avoid conflicts.

9 years agoUpdated generated testsuite files for FreeBSD
Daniel McNulty [Mon, 9 Aug 2010 15:05:25 +0000 (10:05 -0500)]
Updated generated testsuite files for FreeBSD

9 years agoMerge branch 'master' of ssh://git.dyninst.org/pub/dyninst
Daniel McNulty [Mon, 9 Aug 2010 15:04:15 +0000 (10:04 -0500)]
Merge branch 'master' of ssh://git.dyninst.org/pub/dyninst


9 years agoAdd parseAPI dependence so that make parallelizes correctly; tidy AIX build lines...
Andrew Bernat [Fri, 6 Aug 2010 21:09:29 +0000 (16:09 -0500)]
Add parseAPI dependence so that make parallelizes correctly; tidy AIX build lines in RT lib.

9 years agoMerge branch 'master' of git.dyninst.org:/pub/dyninst
Andrew Bernat [Fri, 6 Aug 2010 21:00:52 +0000 (16:00 -0500)]
Merge branch 'master' of git.dyninst.org:/pub/dyninst

9 years agoAdded test source file
Bill Williams [Fri, 6 Aug 2010 20:58:39 +0000 (15:58 -0500)]
Added test source file

9 years agoStreamline compilation output
Andrew Bernat [Wed, 4 Aug 2010 15:15:20 +0000 (10:15 -0500)]
Streamline compilation output

9 years agoFix for missing fucompp instruction; test added.
Bill Williams [Fri, 6 Aug 2010 18:01:29 +0000 (13:01 -0500)]
Fix for missing fucompp instruction; test added.

9 years agoBug fix: incorrect comparison in codeGen::fill().
Bill Williams [Fri, 6 Aug 2010 17:04:46 +0000 (12:04 -0500)]
Bug fix: incorrect comparison in codeGen::fill().

9 years agoFilter the SP and direct PC inputs out of a call's PC assignment.
Bill Williams [Fri, 6 Aug 2010 17:04:03 +0000 (12:04 -0500)]
Filter the SP and direct PC inputs out of a call's PC assignment.

9 years agofinish converting to DataflowAPI namespace
Todd Frederick [Wed, 4 Aug 2010 18:48:55 +0000 (13:48 -0500)]
finish converting to DataflowAPI namespace

9 years agofix parallel make for parseAPI
Todd Frederick [Wed, 4 Aug 2010 16:53:22 +0000 (11:53 -0500)]
fix parallel make for parseAPI

9 years agoMerge branch 'master' into devel
Todd Frederick [Wed, 4 Aug 2010 16:06:20 +0000 (11:06 -0500)]
Merge branch 'master' into devel


9 years agosymEval: accessor for generator of an AbsRegion
Todd Frederick [Wed, 4 Aug 2010 15:33:40 +0000 (10:33 -0500)]
symEval: accessor for generator of an AbsRegion

9 years agoCreate new stack frame when getScratchRegister fails.
Madhavi Krishnan [Thu, 29 Jul 2010 20:27:11 +0000 (15:27 -0500)]
Create new stack frame when getScratchRegister fails.

In power platforms, while relocating Thunk code or
emitting load and store shared code outside of baseTramp,
getScratchRegister may fail when there are no free registers.
When there are no free registers, we create a new stack frame,
push register values on the stack and create free registers.

After the operation, we tear down the stack and restore the original
values of the registers.

9 years agoMerge branch 'master' of ssh://git.dyninst.org/pub/dyninst
Daniel McNulty [Thu, 29 Jul 2010 18:30:04 +0000 (13:30 -0500)]
Merge branch 'master' of ssh://git.dyninst.org/pub/dyninst

9 years agoMiscellaneous build fixes for previous merge.
Daniel McNulty [Thu, 29 Jul 2010 18:15:30 +0000 (13:15 -0500)]
Miscellaneous build fixes for previous merge.

9 years agoMerge branch 'bsd'
Daniel McNulty [Wed, 28 Jul 2010 21:33:34 +0000 (16:33 -0500)]
Merge branch 'bsd'


9 years agoFix rewriter crashes(2)
Madhavi Krishnan [Wed, 28 Jul 2010 19:44:32 +0000 (14:44 -0500)]
Fix rewriter crashes(2)

We're being overly aggressive in marking functions
uninstrumentable. We mark functions with both unresolved calls
and branches as uninstrumentable, but only unresolved branches should be
marked. This commit sets a variable for unresolved
branches and checks it before marking the function uninstrumentable.

9 years agoContinued work towards getting iRPC test passing on FreeBSD.
Dan McNulty [Wed, 28 Jul 2010 17:11:45 +0000 (12:11 -0500)]
Continued work towards getting iRPC test passing on FreeBSD.

Added bug definitions for FreeBSD process control-related bugs.

Added a new event ChangePCStop to help workaround bug_freebsd_change_pc.
See the code for a description of this bug.

Changed exec handling to use kqueue/kevent so SIGTRAPs sent by other
processes or users do not get classified as exec's. Removed assert in
SIGSTOP handling for similar reason.

Added some preliminary code for handling forks. This cannot currently
be tested because fork events are never generated on FreeBSD.

Did code cleanup to improve readability.

Changed some code in ProcControl testsuite (some changes are temporary).

9 years agoFix for rewriter crashes in x86
Madhavi Krishnan [Wed, 28 Jul 2010 16:37:01 +0000 (11:37 -0500)]
Fix for rewriter crashes in x86

Fixed the following:
1) Incorrect merge in my previous commit in emitElf.C
2) String manipulation of comment section in Object-elf.C

9 years agoFixed testsuite's error handling of test timeouts
Kevin Roundy [Tue, 27 Jul 2010 23:36:28 +0000 (18:36 -0500)]
Fixed testsuite's error handling of test timeouts

9 years agoFixed testsuite error handling of test timeouts
Kevin Roundy [Tue, 27 Jul 2010 23:34:26 +0000 (18:34 -0500)]
Fixed testsuite error handling of test timeouts

9 years agoFixed testsuite error handling
unknown [Tue, 27 Jul 2010 23:15:28 +0000 (18:15 -0500)]
Fixed testsuite error handling

9 years agoFix for Symtab on AIX
Madhavi Krishnan [Mon, 26 Jul 2010 16:00:59 +0000 (11:00 -0500)]
Fix for Symtab on AIX

Missed a ELF specific function definition on AIX.

9 years agoMerge branch 'master' of ssh://git.dyninst.org/pub/dyninst
Madhavi Krishnan [Mon, 26 Jul 2010 15:58:54 +0000 (10:58 -0500)]
Merge branch 'master' of ssh://git.dyninst.org/pub/dyninst

9 years agoFix compile error
Andrew Bernat [Mon, 26 Jul 2010 15:08:03 +0000 (10:08 -0500)]
Fix compile error

9 years agoMerges DataflowAPI and ParseAPI Visual Studio projects
Kevin Roundy [Fri, 23 Jul 2010 21:55:12 +0000 (16:55 -0500)]
Merges DataflowAPI and ParseAPI Visual Studio projects

Does this to build a single dll out of both projects

9 years agoRemove dataflowAPI build directories
Andrew Bernat [Fri, 23 Jul 2010 21:19:58 +0000 (16:19 -0500)]
Remove dataflowAPI build directories

9 years agoMerge branch 'master' of git.dyninst.org:/pub/dyninst
Andrew Bernat [Fri, 23 Jul 2010 21:10:57 +0000 (16:10 -0500)]
Merge branch 'master' of git.dyninst.org:/pub/dyninst

9 years agoFix binary rewriter symbol addition mechanism
Andrew Bernat [Fri, 23 Jul 2010 21:08:00 +0000 (16:08 -0500)]
Fix binary rewriter symbol addition mechanism

9 years agoMerge branch 'master' of legendre@git.dyninst.org:/pub/dyninst
Matthew Legendre [Fri, 23 Jul 2010 19:57:46 +0000 (14:57 -0500)]
Merge branch 'master' of legendre@git.dyninst.org:/pub/dyninst

9 years agoFixes to BGP rewriter
Madhavi Krishnan [Fri, 23 Jul 2010 19:11:59 +0000 (14:11 -0500)]
Fixes to BGP rewriter

Some changes I missed to commit last time.

9 years agoMerge branch 'master' of git.dyninst.org:/pub/dyninst
Andrew Bernat [Fri, 23 Jul 2010 19:00:58 +0000 (14:00 -0500)]
Merge branch 'master' of git.dyninst.org:/pub/dyninst

9 years agoDon't try to build dataflowAPI by accident; install its headers from parseAPI
Andrew Bernat [Fri, 23 Jul 2010 19:00:50 +0000 (14:00 -0500)]
Don't try to build dataflowAPI by accident; install its headers from parseAPI

9 years agoMerge branch 'master' of legendre@git.dyninst.org:/pub/dyninst
Matthew Legendre [Fri, 23 Jul 2010 18:39:00 +0000 (13:39 -0500)]
Merge branch 'master' of legendre@git.dyninst.org:/pub/dyninst

9 years agoRemove pthread references from libcommon
Matthew Legendre [Fri, 23 Jul 2010 18:37:03 +0000 (13:37 -0500)]
Remove pthread references from libcommon

9 years agoBuild DataflowAPI as part of ParseAPI to remove circular dependency
Andrew Bernat [Fri, 23 Jul 2010 16:39:01 +0000 (11:39 -0500)]
Build DataflowAPI as part of ParseAPI to remove circular dependency

9 years agoBuild DataflowAPI as part of ParseAPI
Andrew Bernat [Fri, 23 Jul 2010 15:12:02 +0000 (10:12 -0500)]
Build DataflowAPI as part of ParseAPI

9 years agoBad logic was preventing parsing of some jump tables.
Nathan Rosenblum [Fri, 23 Jul 2010 15:06:21 +0000 (10:06 -0500)]
Bad logic was preventing parsing of some jump tables.

This only applied where the indirect branch is at the end of the
first block of the function and no calls to that function had been
observed (so the block's sources() vector was empty). This bug
cropped up because functions with unparsed jump tables are now marked
uninstrumentable, and 64-bit libc's printf happens to be just such
a function, causing instrumentation that inserts calls to printf
to break.

9 years agoMove SymEval to production name of DataflowAPI.
Andrew Bernat [Fri, 23 Jul 2010 15:07:19 +0000 (10:07 -0500)]
Move SymEval to production name of DataflowAPI.

9 years agoRe-enable new single functions to be created after parsing.
Nathan Rosenblum [Thu, 22 Jul 2010 21:38:27 +0000 (16:38 -0500)]
Re-enable new single functions to be created after parsing.

Note that this functionality is orthogonal to the bulk reparsing
in mapped_object::parseNewFunctions, and is there to support creation
of targetted functions like ".init", ".fini" and "main" on Linux/x86

9 years agoMerge branch 'master' of legendre@git.dyninst.org:/pub/dyninst
Matthew Legendre [Thu, 22 Jul 2010 21:41:57 +0000 (16:41 -0500)]
Merge branch 'master' of legendre@git.dyninst.org:/pub/dyninst

9 years agoAdd missed file for StackwalkerAPI BG fixes
Matthew Legendre [Thu, 22 Jul 2010 21:40:39 +0000 (16:40 -0500)]
Add missed file for StackwalkerAPI BG fixes

9 years agoRestore broken LineInformation interface in SymtabAPI
Matthew Legendre [Thu, 22 Jul 2010 21:39:42 +0000 (16:39 -0500)]
Restore broken LineInformation interface in SymtabAPI

9 years agoClean build warnings
Matthew Legendre [Thu, 22 Jul 2010 21:38:44 +0000 (16:38 -0500)]
Clean build warnings

9 years agoFixes for StackwalkerAPI on BlueGene
Matthew Legendre [Thu, 22 Jul 2010 21:38:11 +0000 (16:38 -0500)]
Fixes for StackwalkerAPI on BlueGene

9 years agoBluegene rewriter changes
Madhavi Krishnan [Thu, 22 Jul 2010 21:18:19 +0000 (16:18 -0500)]
Bluegene rewriter changes

In object-elf.C,
We identify the platform as Bluegene using the comment section.
The comment section should contain the string BGP.

In Symtab.C,
We adjust the pagesize of the new PT_LOAD segment (if any) to 1MB
due to compute node restrictions.

In emitElf.C,
We use one of the following mechanisms to
add new loadable section in Bluegene:
1) We either expand BSS section
2) We replace NOTE section with a LOAD section.

9 years agoFixed typo
Madhavi Krishnan [Thu, 22 Jul 2010 20:16:54 +0000 (15:16 -0500)]
Fixed typo

9 years agoAdd Function parameter to unresolved_cf callback
Madhavi Krishnan [Thu, 22 Jul 2010 20:02:00 +0000 (15:02 -0500)]
Add Function parameter to unresolved_cf callback

9 years agoRemoves cyclic dependency between symEval and parseAPI
Kevin Roundy [Thu, 22 Jul 2010 17:20:49 +0000 (12:20 -0500)]
Removes cyclic dependency between symEval and parseAPI

It turned out that the cyclic dependency I had introduced between
ParseAPI and symEval caused problems on other platforms than Windows.
These build problems only manifested when building from a clean
repository.  As of this commit, the parseAPI no-longer depends on
symEval, and we'll work on a way to allow for slicing to be allowed
in the ParseAPI without introducing cyclic library dependencies.

9 years agoMerge branch 'bsd' of ssh://mcnulty@wasabi.cs.wisc.edu/p/paradyn/development/mcnulty...
Dan McNulty [Wed, 21 Jul 2010 18:15:04 +0000 (13:15 -0500)]
Merge branch 'bsd' of ssh://mcnulty@wasabi.cs.wisc.edu/p/paradyn/development/mcnulty/d0/dyninst into bsd

9 years agoWorking towards getting pc_irpc test working on FreeBSD
Dan McNulty [Tue, 20 Jul 2010 18:56:07 +0000 (13:56 -0500)]
Working towards getting pc_irpc test working on FreeBSD

This involves misc. changes through out.

Also includes a fix to distinguish SIGTRAPs sent because of
a trap and SIGTRAPs delivered for an unspecified reason.

This commit also includes a rewrite of the pc_thread_cont test.

The original pc_thread_cont continued a thread, one at a time, and
waited for their exit. After continued, each thread (except the initial
thread) would lock and unlock the test init lock and exit.

This implementation caused problems on FreeBSD. When going to continue a
single thread, it will only run if it is first in line to obtain the
test init lock.  So when the test continues a thread and waits for it to
exit, there is no guarantee that the thread will exit before other
threads are continued.

The solution to this problem is to use a lock for each thread in the
mutatee so when a single thread is continued, it is guaranteed to run
and exit before continuing other threads. This solution required a few
handshakes back and forth between the mutatee and mutator to work
correctly. The code will be the best documentation for this.

9 years agoUsing symEval in ParseAPI for slicing, added hybrid analysis code
Paradyn Account [Tue, 13 Jul 2010 17:03:43 +0000 (12:03 -0500)]
Using symEval in ParseAPI for slicing, added hybrid analysis code

This commit gets hybrid analysis closer to working on Dyninst.  As
a part of this effort, I'm using symEval's slicing capabilities
in the ParseAPI so that I can tell if a function tampers with its
call stack to modify its return address.  This introduces a cyclic
dependency between ParseAPI and symEval, which is problematic on
Windows binaries, as cyclic dependencies between dlls are not
allowed.  The solution I used in this commit was to build a single
dll for the two libraries (other platforms continue to produce
separate shared libraries), which seemed reasonable since neither
library will be used without the other anyway.

9 years agoWorking towards getting pc_irpc test working on FreeBSD
Dan McNulty [Tue, 20 Jul 2010 18:56:07 +0000 (13:56 -0500)]
Working towards getting pc_irpc test working on FreeBSD

This commit also includes a rewrite of the pc_thread_cont test.

9 years agoAdd platform "support" for AIX (untested) and Solaris (not built)
Andrew Bernat [Tue, 20 Jul 2010 18:10:59 +0000 (13:10 -0500)]
Add platform "support" for AIX (untested) and Solaris (not built)

9 years agoMore changes to support multithreaded debuggees on FreeBSD.
Dan McNulty [Fri, 9 Jul 2010 17:49:54 +0000 (12:49 -0500)]
More changes to support multithreaded debuggees on FreeBSD.

Updates to FreeBSD Makefiles and the RT library with changes only made to 7.2
i386 so far.

Includes a function to determine the initial LWP of a running process.

Includes some reworking of the pc_thread_cont test. These changes will be
overridden by a future commit.

Made miscellaneous bug fixes throughout, work in progress to get iRPC tests
working for multithreaded debuggees on FreeBSD.

The implementation of thread stops and continues was reworked in this commit.
This commit removes the fields pending user continue and pending continue, and
it removes the EventContinue. FreeBSD requires that a process be stopped before
continuing a thread. So to continue a thread in a process with other running
threads, the process must be stopped before issuing the continue. To implement
this, the desync/restore operations on the internal state were used to stop a
process with running threads before continuing a running thread. This
implementation appears in both the threadPool continue and thread continue

Also encountered a weird bug when attaching to MT debuggees. On attach, all
threads are suspended. When continuing a single of these threads, multiple
threads run which makes ProcControl's state inconsistent with the OS's state.
This commit includes a workaround (see the FreeBSD specific handlers for more

10 years agoFor non-IAPI platforms (SPARC), don't try to get the disassembly of an instruction...
Bill Williams [Fri, 16 Jul 2010 19:22:56 +0000 (14:22 -0500)]
For non-IAPI platforms (SPARC), don't try to get the disassembly of an instruction in the test suite.

10 years agoFix for bugfix in test 2-14.
Bill Williams [Fri, 16 Jul 2010 16:28:13 +0000 (11:28 -0500)]
Fix for bugfix in test 2-14.

10 years agoFixes for memory tests:
Bill Williams [Fri, 16 Jul 2010 16:05:43 +0000 (11:05 -0500)]
Fixes for memory tests:

* Reenable the standard execution path, running mutatees and checking their exit codes
* Disable the explicit continuation of mutatees; the framework handles this
* Enable CPUID checking for SSE/MMX/SSE2/3DNow! on 64-bit x86
* Fix many bugs in code generation of x86 (32 and 64 bit) effective address and byte count snippets
* Remove IA64 platform from test spec
* Fix push, pop, call, return to use correct address widths in memory access instrumentation

10 years agoMerge branch 'master' of legendre@git.dyninst.org:/pub/dyninst
Matthew Legendre [Fri, 16 Jul 2010 17:57:32 +0000 (12:57 -0500)]
Merge branch 'master' of legendre@git.dyninst.org:/pub/dyninst

10 years agoMore fixes for icc on dyn_detail
Matthew Legendre [Fri, 16 Jul 2010 17:56:54 +0000 (12:56 -0500)]
More fixes for icc on dyn_detail

10 years agoUpdated SymEval::expand to ensure that we re-process nodes that were
Emily Jacobson [Fri, 16 Jul 2010 15:16:32 +0000 (10:16 -0500)]
Updated SymEval::expand to ensure that we re-process nodes that were
incomplete during initial passthrough.

10 years agoInitial version of completed backward slicing.
Emily Jacobson [Fri, 16 Jul 2010 15:16:05 +0000 (10:16 -0500)]
Initial version of completed backward slicing.

10 years agosymEval fixes to conform to ROSE expectations.
Emily Jacobson [Fri, 16 Jul 2010 15:15:25 +0000 (10:15 -0500)]
symEval fixes to conform to ROSE expectations.

10 years agoFixed IA_IAPI::isMovAPSTAble() bug that allowed us to accidentally
Emily Jacobson [Fri, 16 Jul 2010 15:13:42 +0000 (10:13 -0500)]
Fixed IA_IAPI::isMovAPSTAble() bug that allowed us to accidentally
decode past the end of a section.

10 years agoAdded Graph::markAsEntryNode() and Graph::markAsExitNode(),
Emily Jacobson [Fri, 16 Jul 2010 15:13:07 +0000 (10:13 -0500)]
Added Graph::markAsEntryNode() and Graph::markAsExitNode(),
which were needed for slicing.

10 years agodyn_detail fix for icc compilers
Matthew Legendre [Thu, 15 Jul 2010 19:53:59 +0000 (14:53 -0500)]
dyn_detail fix for icc compilers

10 years agoUpdated Dyninst solution and project files for Windows
Kevin Roundy [Mon, 12 Jul 2010 18:12:21 +0000 (13:12 -0500)]
Updated Dyninst solution and project files for Windows

10 years agoFixes Windows build errors cause by my last commit
Kevin Roundy [Mon, 12 Jul 2010 17:18:39 +0000 (12:18 -0500)]
Fixes Windows build errors cause by my last commit

In my last commit I failed to merge these fixes;
without them the Windows platform was not building.
The fixes are to code that only triggers on
the Windows platform, with the exception of the
mapped_object::isSystemLib function which I modified
to make it static so that we can determine whether an
object is a system library prior to parsing it.

10 years agoFix build error on gcc 4.3.0+
Bill Williams [Mon, 12 Jul 2010 16:07:59 +0000 (11:07 -0500)]
Fix build error on gcc 4.3.0+

10 years agoAdded hybrid analysis modes, not fully functional.
Kevin Roundy [Mon, 12 Jul 2010 04:43:47 +0000 (23:43 -0500)]
Added hybrid analysis modes, not fully functional.

This commit adds three analysis modes, BPatch_normalMode,
which is the default and the only mode to trigger at present,
BPatch_exploratoryMode, which causes runtime instrumentation
of unresolved indirect control transfers and thereby may
discover additional code at runtime (not fully functional
yet), and BPatch_defensiveMode, which assumes that the binary
is defensive, possibly self-unpacking and self-modifying.

Also, this commit should fix the Windows failures that popped
up this weekend after an upgrade to VS2008 project and solution

10 years agoFix bug related to splitting calls into assignment representations.
Andrew Bernat [Fri, 9 Jul 2010 22:26:39 +0000 (17:26 -0500)]
Fix bug related to splitting calls into assignment representations.

10 years agoMove Windows to VC2008; fix SymEval build errors related to Windows
Andrew Bernat [Fri, 18 Jun 2010 14:55:25 +0000 (09:55 -0500)]
Move Windows to VC2008; fix SymEval build errors related to Windows

10 years agoBad Makefile definition was copying headers unnecessarily
Nathan Rosenblum [Fri, 9 Jul 2010 21:01:12 +0000 (16:01 -0500)]
Bad Makefile definition was copying headers unnecessarily

10 years agoproperly link unresolvable indirect branches to sink block
Nathan Rosenblum [Fri, 9 Jul 2010 19:52:21 +0000 (14:52 -0500)]
properly link unresolvable indirect branches to sink block

10 years agomissing constructor
Nathan Rosenblum [Mon, 5 Jul 2010 15:40:06 +0000 (10:40 -0500)]
missing constructor

10 years agoMerge branch 'master' into devel
Todd Frederick [Thu, 8 Jul 2010 15:46:51 +0000 (10:46 -0500)]
Merge branch 'master' into devel

10 years agosymEval: handle rep-prefixed instructions correctly
Todd Frederick [Thu, 8 Jul 2010 15:45:53 +0000 (10:45 -0500)]
symEval: handle rep-prefixed instructions correctly

10 years agoA first pass at implementing thread stop and continue on FreeBSD.
Dan McNulty [Mon, 5 Jul 2010 16:11:01 +0000 (11:11 -0500)]
A first pass at implementing thread stop and continue on FreeBSD.

Includes a bug fix in HandlePostExit, a int_process was being deleted and still
being used. The debugging printf didn't match the actual behavior.

Includes some reworking on thread_db classes.

A majority of this commit deals with FreeBSD's "interesting" thread control
model via ptrace.

To stop a thread, a SIGSTOP is sent to the thread in the process. The entire
process stops and the thread can then be suspend with a call to ptrace with the
request PT_SUSPEND. The entire process is then continued, but the suspended
thread will not run.

To continue a suspended thread in a running process, a SIGSTOP is sent to any
running thread in the process. The entire process stops and the thread
to-be-continued can then be resumed with a call to ptrace with the request
PT_RESUME. At this point, the entire process is continued.

There are a few changes to the platform-independent code to incorporate this
thread control model via ptrace.

The first is a new internal event, EventContinue.  This is generated when a
SIGSTOP is used to resume a suspended thread. Also, int_thread's now have a
fields to represent a pending continue and a pending user continue. User
continues are differentiated from internal continues because internal continues
need to be batched to avoid race conditions between the generator and handler.
The plat_cont function now basically calls ptrace with the request of PT_RESUME
with some added logic for user and internal continues.  The process is
continued later in waitAndHandleEvents after syncRunState is called. This
continue occurs via a new platform-dependent function, plat_contProcess. It
should be a no-op on other platforms that don't need it.

It is now possible to have pending continues similar to pending stops. A
pending continue is handled in int_process code in exactly the same way as a
pending stop.

To stop this continue from being called on other platforms, the
independentLWPControl function was renamed to getThreadControlMode and it now
returns an enum for the three case: NoLWPControl, HybridLWPControl (FreeBSD),
IndependentLWPControl (Linux).

Processes now have a field for the continue signal because on FreeBSD, threads
cannot be continued with there own signals; only the process can be continued
with a signal. The threads set the parent process' continue signal when

10 years agoAn error when creating symbols for relocated code and instrumentation
Nathan Rosenblum [Fri, 2 Jul 2010 15:21:50 +0000 (10:21 -0500)]
An error when creating symbols for relocated code and instrumentation
prevented most such symbols from being created.

10 years agoUse current block's CodeRegion for lookups and to calculate instruction
Nathan Rosenblum [Fri, 2 Jul 2010 14:06:41 +0000 (09:06 -0500)]
Use current block's CodeRegion for lookups and to calculate instruction
decoding regions during parsign; control flow can span multiple regions

10 years agoStop resetting gap parsing iterator after initial reset.
Nathan Rosenblum [Wed, 30 Jun 2010 23:22:03 +0000 (18:22 -0500)]
Stop resetting gap parsing iterator after initial reset.

10 years agosymEval: fix lea handling
Todd Frederick [Thu, 1 Jul 2010 20:29:17 +0000 (15:29 -0500)]
symEval: fix lea handling

10 years agoPremble heuristic-based gap parsing missed code when run on binaries
Nathan Rosenblum [Wed, 30 Jun 2010 23:17:23 +0000 (18:17 -0500)]
Premble heuristic-based gap parsing missed code when run on binaries
with no existing functions

10 years agoBuild fix
Nathan Rosenblum [Wed, 30 Jun 2010 21:59:00 +0000 (16:59 -0500)]
Build fix