dyninst.git
9 years agoStackwalker AnalysisStepper and SigHandlerStepper corrections
Todd Frederick [Wed, 16 Feb 2011 16:17:28 +0000 (10:17 -0600)]
Stackwalker AnalysisStepper and SigHandlerStepper corrections

* The frame sizes for signals handlers were set incorrectly
* In the analysis stepper, the frame pointer was being calculated incorrectly

9 years agoSeparate Stackwalker frame steppers for Dyninst static and dynamic instrumentation
Todd Frederick [Mon, 7 Feb 2011 19:07:09 +0000 (13:07 -0600)]
Separate Stackwalker frame steppers for Dyninst static and dynamic instrumentation

9 years agoMinor fixes for building on Linux x86 introduced by previous commit.
Daniel McNulty [Wed, 16 Feb 2011 19:32:45 +0000 (13:32 -0600)]
Minor fixes for building on Linux x86 introduced by previous commit.

9 years agoEnabling DyninstAPI with ProcControlAPi on power Linux
Daniel McNulty [Wed, 16 Feb 2011 19:02:18 +0000 (13:02 -0600)]
Enabling DyninstAPI with ProcControlAPi on power Linux

Refactored RegisterConversion to allow a uniform interface for
converting Dyninst Register representations to ProcControlAPI's
MachRegister representations.

Refactored RT library load AST creation to linux.C as most of it
is not architecture specific (the only remaining architecture
specific functionality is in createUnprotectStackAST).

Removed syscall tracing as it is no longer required to locate main. The
syscall tracing was used to determine when libc was loaded. When this
occurs, we could determine the location of main from libc, if we can't
determine its address from our other heuristics. ProcControlAPI gives
us events when libc is loaded so we don't need to trace system calls
to get this event.

Removed vsyscall indentification from Dyninst -- this is now provided
by StackwalkerAPI.

Removed some old process control code from StackWalker to get it building
on Power Linux. This code is no longer needed with the integration of
ProcControlAPI into StackWalker.

9 years agoppc32_linux support to ProcControlAPI
Daniel McNulty [Tue, 15 Feb 2011 22:33:07 +0000 (16:33 -0600)]
ppc32_linux support to ProcControlAPI

Refactored arch specific process class to x86_process to be arch_process
so multiple architectures can be supported for a single OS (Linux in
this case).

Implemented mmap and munmap snippets for both ppc32_linux and
ppc64_linux.

Implemented register access for ppc32_linux and ppc64_linux.

Added test iRPC snippets for ppc32 and ppc64 to pc_irpc.

Fixed a bug with pc_thread.

All ProcControl tests pass except for pc_singlestep. pc_singlestep
is not terminating due to a special case required to single step
an atomic instruction sequence (bookended by lwarx, stwcx.). More
to come on this soon.

9 years agoEnable ProcControl testsuite on Power Linux
Daniel McNulty [Fri, 11 Feb 2011 21:22:01 +0000 (15:22 -0600)]
Enable ProcControl testsuite on Power Linux

9 years agoMinor fix for ProcControlAPI
Daniel McNulty [Fri, 11 Feb 2011 20:43:10 +0000 (14:43 -0600)]
Minor fix for ProcControlAPI

Fixes a compiler warning and moves some Linux specific event handling to a
Linux specific handler for the correct event (the handling code was being
executed for both pre-LWPDestroy and pre-UserThreadDestroy events, when it only
needed to execute for pre-LWPDestroy).

9 years agoChanges to Dyninst to use the new thread information and events provided by
Daniel McNulty [Wed, 9 Feb 2011 19:48:52 +0000 (13:48 -0600)]
Changes to Dyninst to use the new thread information and events provided by
ProcControlAPI

Modified PCThread and BPatch_thread so PCThread now encapsulates any
functionality required to extract thread information from a process instead of
BPatch_thread.

PCEventHandler now creates and destroys PCThreads using the thread events
provided by ProcControlAPI, agnostic of the events actually available on a
platform.

The RT library now uses thread ids instead of lwp ids when locating a tramp
guard for a thread.

Also, fixes a bug in the ProcControl testsuite component where file
descriptors weren't being closed -- this was causing tests to fail when
run in combination with Dyninst.

9 years agoAdd new method to ProcControl: allThreadsRunningWhenAttached
Daniel McNulty [Thu, 3 Feb 2011 19:25:13 +0000 (13:25 -0600)]
Add new method to ProcControl: allThreadsRunningWhenAttached

This methods is needed by Dyninst to implement
BPatch_process::wasRunningWhenAttached method. This functionality makes the
most sense in ProcControl because it requires querying the OS for the current
state of threads before they are attached. This is inherently
platform-dependent.

9 years agoFixes for new thread_db support on Linux
Daniel McNulty [Thu, 3 Feb 2011 15:58:09 +0000 (09:58 -0600)]
Fixes for new thread_db support on Linux

Fixed a few minor issues with ThreadDestroy and its derived classes. Updated
the tests to use these new events correctly.

Fixed a few bugs with debugging 32-bit debuggees from 64-bit processes
using thread_db. Implemented ps_lgetregs proc_service interface function.

9 years agoMerge branch 'dyn_pc_integration' of ssh://git.dyninst.org/pub/dyninst into dyn_pc_in...
Daniel McNulty [Wed, 2 Feb 2011 20:59:50 +0000 (14:59 -0600)]
Merge branch 'dyn_pc_integration' of ssh://git.dyninst.org/pub/dyninst into dyn_pc_integration

9 years agoMerge branch 'dyn_pc_integration' of legendre@git.dyninst.org:/pub/dyninst into dyn_p...
Matthew P. Legendre [Wed, 2 Feb 2011 19:02:34 +0000 (11:02 -0800)]
Merge branch 'dyn_pc_integration' of legendre@git.dyninst.org:/pub/dyninst into dyn_pc_integration

9 years agoFix issue where parallel make could build parseThat before Dyninst
Matthew P. Legendre [Wed, 2 Feb 2011 19:02:03 +0000 (11:02 -0800)]
Fix issue where parallel make could build parseThat before Dyninst

9 years agoFix Dyninst Stackwalker initialization
Todd Frederick [Wed, 2 Feb 2011 16:56:27 +0000 (10:56 -0600)]
Fix Dyninst Stackwalker initialization

Stackwalker must be initialized after the initial mapped objects so
stack bottom locations will be detected in stripped binaries.

9 years agoMerge branch 'dyn_pc_integration' of ssh://git.dyninst.org/pub/dyninst into dyn_pc_in...
Daniel McNulty [Tue, 1 Feb 2011 16:09:59 +0000 (10:09 -0600)]
Merge branch 'dyn_pc_integration' of ssh://git.dyninst.org/pub/dyninst into dyn_pc_integration

9 years agoTrap-based instrumentation using control transfer breakpoints for dynamic
Daniel McNulty [Tue, 1 Feb 2011 15:56:34 +0000 (09:56 -0600)]
Trap-based instrumentation using control transfer breakpoints for dynamic
instrumentation.

Adds some hooks to AddressSpace to allow the PCProcess to insert
control transfer breakpoints when a trap mapping is added. These hooks
don't do anything in BinaryEdit at the moment.

Also adds some handling for control-transfer breakpoints; the
corresponding events don't require user interaction so the ProcControl
event for these breakpoints is handled by the callback thread and
not passed to the Dyninst user.

9 years agoImplementation of control-transfer breakpoints
Daniel McNulty [Tue, 1 Feb 2011 15:50:49 +0000 (09:50 -0600)]
Implementation of control-transfer breakpoints

A control transfer breakpoint is a breakpoint where after the
breakpoint is hit, we change the PC to a pre-defined address. This
required adding some code to the HandlePostBreakpoint event handler
to set the PC to this pre-defined address when handling a control
transfer breakpoint.

Also includes a small fix for cases when the execv fails on Unix
platforms. The child fails the exec and exits. At exit, the ProcControl
library teardown code kicks in and was deadlocking on the ProcPool
lock. The solution was to unlock the ProcPool lock in the child
before the exec.

9 years agoDyninst frame object cleanup
Todd Frederick [Mon, 31 Jan 2011 20:31:23 +0000 (14:31 -0600)]
Dyninst frame object cleanup

9 years agoMerge branch 'dyn_pc_integration' of git.dyninst.org:/pub/dyninst into dyn_pc_integration
Matthew P. Legendre [Mon, 31 Jan 2011 19:32:52 +0000 (11:32 -0800)]
Merge branch 'dyn_pc_integration' of git.dyninst.org:/pub/dyninst into dyn_pc_integration

9 years agoRe-structure top level build system to be more component aware
Matthew P. Legendre [Mon, 31 Jan 2011 18:45:14 +0000 (10:45 -0800)]
Re-structure top level build system to be more component aware

9 years agoMerge ../../thrdb/dyninst into HEAD
Matthew P. Legendre [Sat, 29 Jan 2011 00:06:11 +0000 (16:06 -0800)]
Merge ../../thrdb/dyninst into HEAD

Conflicts:

Makefile
proccontrol/h/EventType.h
proccontrol/h/Process.h
proccontrol/make.module.tmpl
proccontrol/src/event.C
proccontrol/src/freebsd.C
proccontrol/src/int_process.h
proccontrol/src/linux.C
proccontrol/src/process.C
testsuite/amd64-unknown-freebsd7.2/make.solo_mutatee.gen
testsuite/amd64-unknown-freebsd7.2/tuples
testsuite/i386-unknown-freebsd7.2/make.solo_mutatee.gen
testsuite/i386-unknown-freebsd7.2/tuples
testsuite/i386-unknown-linux2.4/make.solo_mutatee.gen
testsuite/i386-unknown-linux2.4/tuples
testsuite/x86_64-unknown-linux2.4/make.solo_mutatee.gen
testsuite/x86_64-unknown-linux2.4/tuples

9 years agoLabel Stackwalker frames with outgoing stepper
Todd Frederick [Fri, 28 Jan 2011 17:01:43 +0000 (11:01 -0600)]
Label Stackwalker frames with outgoing stepper

9 years agoMerge branch 'pcint' into dyn_pc_integration
Daniel McNulty [Wed, 26 Jan 2011 21:21:42 +0000 (15:21 -0600)]
Merge branch 'pcint' into dyn_pc_integration

Conflicts:
dynC_API/make.module.tmpl
dyninstAPI/src/linux-x86.C
testsuite/amd64-unknown-freebsd7.2/make.solo_mutatee.gen
testsuite/amd64-unknown-freebsd7.2/tuples
testsuite/i386-unknown-freebsd7.2/make.solo_mutatee.gen
testsuite/i386-unknown-freebsd7.2/tuples
testsuite/i386-unknown-linux2.4/make.solo_mutatee.gen
testsuite/i386-unknown-linux2.4/tuples
testsuite/ppc32_linux/make.solo_mutatee.gen
testsuite/ppc32_linux/tuples
testsuite/ppc64_linux/make.solo_mutatee.gen
testsuite/ppc64_linux/tuples
testsuite/rs6000-ibm-aix5.1/make.solo_mutatee.gen
testsuite/rs6000-ibm-aix5.1/tuples
testsuite/sparc-sun-solaris2.8/make.solo_mutatee.gen
testsuite/sparc-sun-solaris2.8/tuples
testsuite/sparc-sun-solaris2.9/make.solo_mutatee.gen
testsuite/sparc-sun-solaris2.9/tuples
testsuite/x86_64-unknown-linux2.4/make.solo_mutatee.gen
testsuite/x86_64-unknown-linux2.4/tuples

9 years agoAdd test_stack_4
Todd Frederick [Wed, 26 Jan 2011 18:34:29 +0000 (12:34 -0600)]
Add test_stack_4

Tests stackwalking out of an entry-instrumented signal handler

9 years agoFix Stackwalker DebugStepper and allow changing the default SymReader
Todd Frederick [Wed, 26 Jan 2011 18:30:40 +0000 (12:30 -0600)]
Fix Stackwalker DebugStepper and allow changing the default SymReader

9 years agoImplement Stackwalker frame stepper helpers for Dyninst
Todd Frederick [Wed, 19 Jan 2011 19:04:31 +0000 (13:04 -0600)]
Implement Stackwalker frame stepper helpers for Dyninst

9 years agoFix improperly inlined Dwarf wrapper functions
Todd Frederick [Wed, 12 Jan 2011 15:37:09 +0000 (09:37 -0600)]
Fix improperly inlined Dwarf wrapper functions

9 years agoConvert Dyninst to use StackwalkerAPI
Todd Frederick [Mon, 29 Nov 2010 14:32:36 +0000 (08:32 -0600)]
Convert Dyninst to use StackwalkerAPI

9 years agoFix a bug with LD_PRELOAD, add some debugging support code, small changes to
Daniel McNulty [Wed, 26 Jan 2011 15:52:22 +0000 (09:52 -0600)]
Fix a bug with LD_PRELOAD, add some debugging support code, small changes to
test_driver.

Modified the test_driver to do program_teardown after all the tests for a
specific module (aka Dyninst, Symtab, etc) have been run instead of when all
the tests for all modules have been executed. In the Dyninst component's
teardown, the BPatch object is destructed which in turn makes sure the
callback thread exits. If this doesn't occur before ProcControl tests are
executed, the callback thread will interfere with the event handling
performed by the user thread in the ProcControl tests, causing them to
exhibit confusing behavior.

The LD_PRELOAD cannot be set in the Dyninst parent process when creating a
mutatee because this setting will persist for multiple mutatees. This causes
problems for when working with 32-bit mutatees.

Adds some debugging support code to dump stack walks when a process recieves a
crash signal and debugging output is on.

Modifies the Dyninst break point on Linux to use tkill. It turns out that
there is no guarantee that kill(lwp, signal) will deliver the signal to the
correct lwp. To get this guarantee, we use tkill.

Modified the implementation of the tc_lock_lock in the RT library on Linux.
There was a possible ordering of threads that would result in the lock failing.
I didn't directly observe this ordering, but it could in theory cause problems.

9 years agoMore fixes for ProcControlAPI
Daniel McNulty [Wed, 26 Jan 2011 15:31:17 +0000 (09:31 -0600)]
More fixes for ProcControlAPI

Handling for a few cases of sending stops to exiting threads was missing.  The
first is the pre-exit of the initial thread. It wasn't being marked as exiting
and as such, ProcControl was waiting for pending stops that would never arrive.

The second case is where the stop and the pre-exit occur simultaneously (at
least from ProcControl's perspective). The generator processes the stop before
the pre-exit and as a result, when processing a pre-exit, an assertion was
failing because the thread was expected to be running instead of stopped. The
handling for this case requires setting a flag in the thread when the generator
sees an exit event so the assertion can check for this case.

Finally, when a pre-exit is received before a SIGSTOP (that may never come),
the pre-exit handler needs to mark the process stopped to maintain consistency
between the actual state of the process and the state maintained by
ProcControl.

Fixes a bug with proc stopper events (such as a Breakpoint) where a event
would get dropped on the floor when the handler thread attempted to handle
a proc stopper event with a registered callback. Since the event has
a registered callback, the handler cannot handle the event. At this point,
the event is not added back to the collection of proc stopper events. The
solution is to only remove the event from the collection when it can be
handled.

9 years agoMerge branch 'master' of ssh://git.dyninst.org/pub/dyninst
Madhavi Krishnan [Mon, 24 Jan 2011 18:17:45 +0000 (12:17 -0600)]
Merge branch 'master' of ssh://git.dyninst.org/pub/dyninst

9 years agoBluegene testsuite fix
Madhavi Krishnan [Mon, 24 Jan 2011 18:17:27 +0000 (12:17 -0600)]
Bluegene testsuite fix

Adding LD_FLAGS (export-dynamic) to ppc32_bgp mutatee makefile -
so that all the functions are exported.

9 years agoMerge branch 'master' of git.dyninst.org:/pub/dyninst
Matthew P. Legendre [Mon, 24 Jan 2011 17:53:54 +0000 (09:53 -0800)]
Merge branch 'master' of git.dyninst.org:/pub/dyninst

9 years agoRemove BlueGene build warning
Matthew P. Legendre [Mon, 24 Jan 2011 17:49:43 +0000 (09:49 -0800)]
Remove BlueGene build warning

9 years agoMakefiles for bluegene.
Madhavi Krishnan [Sat, 22 Jan 2011 09:50:37 +0000 (03:50 -0600)]
Makefiles for bluegene.

9 years agoMerge branch 'master' of ssh://git.dyninst.org/pub/dyninst
Madhavi Krishnan [Sat, 22 Jan 2011 09:42:57 +0000 (03:42 -0600)]
Merge branch 'master' of ssh://git.dyninst.org/pub/dyninst

9 years agoUpdating testsuite make files
Madhavi Krishnan [Sat, 22 Jan 2011 09:42:38 +0000 (03:42 -0600)]
Updating testsuite make files

This commit updates the tuples file and generated make files
for all the platforms based on my previous commit to spec-grouped.pl.

9 years agoBluegene testsuite fixes.
Madhavi Krishnan [Sat, 22 Jan 2011 09:37:16 +0000 (03:37 -0600)]
Bluegene testsuite fixes.

More fixes to spec for bluegene platform.

9 years agoMerge branch 'master' of legendre@git.dyninst.org:/pub/dyninst
Matthew P. Legendre [Sat, 22 Jan 2011 00:21:39 +0000 (16:21 -0800)]
Merge branch 'master' of legendre@git.dyninst.org:/pub/dyninst

Conflicts:

stackwalk/ppc32_bgp_ion/Makefile

9 years agoBuilt dedicated system for static binary library tracking
Matthew P. Legendre [Sat, 22 Jan 2011 00:16:45 +0000 (16:16 -0800)]
Built dedicated system for static binary library tracking

9 years agoNew debug prints to assist debugging
Matthew P. Legendre [Sat, 22 Jan 2011 00:16:26 +0000 (16:16 -0800)]
New debug prints to assist debugging

9 years agoFix attach hang on BlueGene.
Matthew P. Legendre [Sat, 22 Jan 2011 00:15:52 +0000 (16:15 -0800)]
Fix attach hang on BlueGene.

9 years agoFix libelf usage in BlueGene makefiles
Matthew P. Legendre [Sat, 22 Jan 2011 00:15:37 +0000 (16:15 -0800)]
Fix libelf usage in BlueGene makefiles

9 years agoBluegene testsuite fixes
Madhavi Krishnan [Fri, 21 Jan 2011 18:20:40 +0000 (12:20 -0600)]
Bluegene testsuite fixes

bgxlc compilers output statically linked binaries by default
unless -qnostaticlink flag is specified. As of now, dyninst
can rewrite only dynamically linked binaries on power platforms.
This commit adds -qnostaticlink flag to the testsuite makefile
generation.

9 years agoFix for bug in loading RT library during attach on Linux x86/x86_64.
Daniel McNulty [Fri, 21 Jan 2011 17:15:20 +0000 (11:15 -0600)]
Fix for bug in loading RT library during attach on Linux x86/x86_64.

To load the RT library into a process Dyninst has attached to, we
generate some code to load the library via libdl or to an internal libc
function, if libdl isn't in the process. The generated code was not
following the ABI and allowing space for a function to store local
variables below the stack pointer. Our base tramp code already takes
this possibility into account so the solution was to wrap this
generated code with the standard RPC header and trailer that internally
do a base tramp save and restore, respectively.

9 years agoTestsuite fix
Madhavi Krishnan [Wed, 19 Jan 2011 22:42:07 +0000 (16:42 -0600)]
Testsuite fix

The arguments to tests in rewriter mode was clobbered due to my
previous commit. Fixed.

9 years agoFixes to Dyninst (w/ ProcControlAPI) related to oneTimeCodes, eventHandling
Daniel McNulty [Wed, 19 Jan 2011 17:32:38 +0000 (11:32 -0600)]
Fixes to Dyninst (w/ ProcControlAPI) related to oneTimeCodes, eventHandling

Refactored oneTimeCodes to check error conditions and let the lower level
handled continuing or stopping a process after the oneTimeCode
completes.Synchronous oneTimeCodes require a full process stop and the RPC
thread is run (as provided by ProcControl) while the other threads remain
stopped.

Adding some code in event handling to correctly handle synchronous oneTimeCodes
executed from callbacks. To avoid general recursive event handling, the events
for these RPCs bypass the main event queue and handled separately from the any
other pending events.

Made handling of a user terminate more uniform.

Refactored loadLibrary to check error conditions

Cleaned up Linux-only headers

Added sanity checks so waitForStatusChange and pollForStatusChange cannot be
called from callbacks

The user-specified environment is now passed through to ProcControl. On create,
LD_PRELOAD is now utilized to load the RT library, where available.

9 years agoA few bug fixes/enhancements for ProcControlAPI
Daniel McNulty [Tue, 18 Jan 2011 21:30:34 +0000 (15:30 -0600)]
A few bug fixes/enhancements for ProcControlAPI

Adds a new event, ForceTerminate. A callback for this event is delivered
when a process exits after a user requests a process be terminated. It's
parent event is of type Terminate.

Fixes some bugs related to stopping a thread that is in the process of
exiting (i.e., after pre-Exit but before post-Exit). There is no guarantee
that an exiting thread will be delivered a pending stop, and as such, there
are a few corner cases that require different behavior if the thread is
exiting.

Added parameters to Process::createProcess and related methods to allow the
environment of the new process to be specified.

9 years agoMore ppc32_bgp changes
Madhavi Krishnan [Tue, 18 Jan 2011 19:33:32 +0000 (13:33 -0600)]
More ppc32_bgp changes

Adding checks for ppc32_bgp for platform specific code in
dyninstAPI, SymtabAPI and testsuite.

9 years agoAdding ppc32_bgp to make.config
Madhavi Krishnan [Tue, 18 Jan 2011 18:02:19 +0000 (12:02 -0600)]
Adding ppc32_bgp to make.config

9 years agoAdding new platform:ppc32_bgp
Madhavi Krishnan [Fri, 14 Jan 2011 15:23:56 +0000 (09:23 -0600)]
Adding new platform:ppc32_bgp

This commit adds a new platform - ppc32_bgp. For now,
ppc32_bgp is the same as ppc32_linux for components.
This will change when proccontrol is commited.

The only difference between ppc32_linux and ppc32_bgp is
in the testsuite. For ppc32_bgp, we build only rewriter mutatees
and run them on on the compuet nodes. This requires a new
environment variable called "DYNINST_BGP_PARTITION" to be set.
This env variable determines which BGP partition the rewritten
mutatees must be executed.

9 years agoChanges to support synchronous thread creation and deletion
Daniel McNulty [Mon, 10 Jan 2011 22:18:52 +0000 (16:18 -0600)]
Changes to support synchronous thread creation and deletion

Refactoring how thread information is stored in the RT library. Because
we are switching to synchronous thread creation and deletion, Dyninst now
needs to tell the RT library about new threads to support tramp guards.

Fixes for handling signals in multithreaded processes. There are cases where a
process shouldn't be continued after handling an event if it has more pending
events. Consequently, event handling will be more efficient because unnecessary
stops and continues will not be issued while handling consecutive events for
a process.

Fixes some problems with dynamic callsite events, user message events.

9 years agoFix a few ProcControlAPI bugs.
Daniel McNulty [Mon, 10 Jan 2011 19:31:15 +0000 (13:31 -0600)]
Fix a few ProcControlAPI bugs.

1) When a process is forked, refresh_libraries should be called so
the underlying AddressTranslate objects can be created for the new
process. This also means that the mem_state fork constructor should
not copy over libraries because they will be correctly created when
refresh_libraries is called.

2) Certain internal continues on Linux for a thread should not continue
the thread with a pending signal. This case occurs when a signal is
received after an event that is currently being handled and the
handling for this event requires an internal continue.

9 years agoStackwalker: Fix x86 stack pointer calculation
Todd Frederick [Mon, 10 Jan 2011 18:42:08 +0000 (12:42 -0600)]
Stackwalker: Fix x86 stack pointer calculation

9 years agoAIX build fix.
David Aeschlimann [Fri, 7 Jan 2011 16:00:26 +0000 (10:00 -0600)]
AIX build fix.

9 years agoAIX build fix
David Aeschlimann [Fri, 7 Jan 2011 15:50:34 +0000 (09:50 -0600)]
AIX build fix

9 years agoMerge branch 'master' into pcint
Daniel McNulty [Thu, 6 Jan 2011 19:05:11 +0000 (13:05 -0600)]
Merge branch 'master' into pcint

Conflicts:
common/src/addrtranslate-sysv.h
dyninstAPI/src/BPatch.C
dyninstAPI/src/aix.C
dyninstAPI/src/emit-x86.C
dyninstAPI/src/instPoint.C
dyninstAPI/src/linux-x86.C
dyninstAPI/src/linux.C
dyninstAPI/src/process.C
dyninstAPI/src/signalhandler.C
dyninstAPI/src/solaris.C
proccontrol/src/process.C
stackwalk/h/procstate.h
stackwalk/src/catamount-swk.C
stackwalk/src/linux-swk.h
stackwalk/src/procstate.C

9 years agoi386 build fix for dynC generated source files.
David Aeschlimann [Thu, 6 Jan 2011 17:16:51 +0000 (11:16 -0600)]
i386 build fix for dynC generated source files.

9 years agoAdded some handling for corner cases in the main event handling block.
Daniel McNulty [Thu, 6 Jan 2011 17:05:26 +0000 (11:05 -0600)]
Added some handling for corner cases in the main event handling block.

Refactors the RT library signal handling code to be less platform-specific.

Cleans up the state accessors so there isn't any confusion between
isTerminated and hasExited, change any uses of hasExited to isTerminated.

Fixes a bug in iRPC code generation so a stack frame is created and the
stack is not corrupted by iRPC code.

Changes remaining async event handling to be synchronous events. This
includes async events that are triggered by function calls into the
RT library.

Moves some static variables used by BPatch from PCEventHandler to
BPatch_libInfo.

Removes some busy-waiting from the thread tests as well as changes some
error conditions because callbacks are now delivered at different
times.

9 years agoAIX fix
David Aeschlimann [Thu, 6 Jan 2011 16:44:27 +0000 (10:44 -0600)]
AIX fix

9 years agoFixes a ProcControlAPI bug where if only a single thread is stopped
Daniel McNulty [Thu, 6 Jan 2011 16:12:24 +0000 (10:12 -0600)]
Fixes a ProcControlAPI bug where if only a single thread is stopped
when a callback is invoked, the user can request a process stop via
the return value and it will cause an assert.

9 years agoFixed release number error
David Aeschlimann [Tue, 4 Jan 2011 17:39:42 +0000 (11:39 -0600)]
Fixed release number error

9 years agoMerge branch 'master' of ssh://git.dyninst.org/pub/dyninst
David Aeschlimann [Tue, 4 Jan 2011 16:17:29 +0000 (10:17 -0600)]
Merge branch 'master' of ssh://git.dyninst.org/pub/dyninst

9 years agoMerge branch 'master' of ssh://git.dyninst.org/pub/dyninst
David Aeschlimann [Tue, 4 Jan 2011 16:15:25 +0000 (10:15 -0600)]
Merge branch 'master' of ssh://git.dyninst.org/pub/dyninst

Adds dynC commands to dyner.

Conflicts:
Makefile
dataflowAPI/src/debug_dataflow.C
dataflowAPI/src/debug_dataflow.h
dataflowAPI/src/slicing.C
dataflowAPI/src/stackanalysis.C
dyner/make.module.tmpl
dyner/src/cmdline.l
dyner/src/cmdline.y
dyner/src/dyner.C
symtabAPI/src/Function.C

9 years agoFixes related to thread_db for tests
Matthew P. Legendre [Thu, 30 Dec 2010 00:54:11 +0000 (16:54 -0800)]
Fixes related to thread_db for tests

9 years agoMerge branch 'master' of legendre@git.dyninst.org:/pub/dyninst
Matthew P. Legendre [Thu, 30 Dec 2010 00:29:01 +0000 (16:29 -0800)]
Merge branch 'master' of legendre@git.dyninst.org:/pub/dyninst

Conflicts:

testsuite/make.module.tmpl

9 years agoNew pc_thread test for thread_db support
Matthew P. Legendre [Thu, 30 Dec 2010 00:26:03 +0000 (16:26 -0800)]
New pc_thread test for thread_db support

9 years agoAutoconf support for building subsets of components. Thread_db support in autoconf.
Matthew P. Legendre [Thu, 30 Dec 2010 00:24:57 +0000 (16:24 -0800)]
Autoconf support for building subsets of components.  Thread_db support in autoconf.

9 years agoFixes for ProcControlAPI const handling in interface
Matthew P. Legendre [Thu, 30 Dec 2010 00:16:58 +0000 (16:16 -0800)]
Fixes for ProcControlAPI const handling in interface

9 years agoSupport for libthread_db on linux
Matthew P. Legendre [Thu, 30 Dec 2010 00:16:04 +0000 (16:16 -0800)]
Support for libthread_db on linux

9 years agoMerge branch 'master' of ssh://bill@git.dyninst.org/pub/dyninst
Bill Williams [Wed, 22 Dec 2010 20:22:56 +0000 (14:22 -0600)]
Merge branch 'master' of ssh://bill@git.dyninst.org/pub/dyninst

9 years agoIAPI opcode fix: refer to si/addic aliased instructions by primary addic opcode.
Bill Williams [Tue, 21 Dec 2010 19:36:59 +0000 (13:36 -0600)]
IAPI opcode fix: refer to si/addic aliased instructions by primary addic opcode.

9 years agoAdd XMM registers per ABI to call/return read/write sets on AMD64.
Bill Williams [Thu, 2 Dec 2010 21:17:32 +0000 (15:17 -0600)]
Add XMM registers per ABI to call/return read/write sets on AMD64.

9 years agoExit early, falling back to using current file for debug info, if section header...
Bill Williams [Thu, 2 Dec 2010 21:17:10 +0000 (15:17 -0600)]
Exit early, falling back to using current file for debug info, if section header string table is absent.

9 years agoImplement IA_IAPI copy methods
Andrew Bernat [Tue, 21 Dec 2010 21:30:58 +0000 (15:30 -0600)]
Implement IA_IAPI copy methods

9 years agoMerge branch 'master' of git.dyninst.org:/pub/dyninst
Andrew Bernat [Tue, 21 Dec 2010 20:47:00 +0000 (14:47 -0600)]
Merge branch 'master' of git.dyninst.org:/pub/dyninst

9 years agoFix corruption bug copying IA_IAPI instruction adapters
Andrew Bernat [Tue, 21 Dec 2010 20:44:19 +0000 (14:44 -0600)]
Fix corruption bug copying IA_IAPI instruction adapters

Conflicts:

parseAPI/src/ParserDetails.C

9 years agoAdding missed files in parseAPI previous commit.
Madhavi Krishnan [Tue, 21 Dec 2010 20:37:35 +0000 (14:37 -0600)]
Adding missed files in parseAPI previous commit.

9 years agoMerge branch 'master' of git.dyninst.org:/pub/dyninst
Andrew Bernat [Tue, 21 Dec 2010 19:48:45 +0000 (13:48 -0600)]
Merge branch 'master' of git.dyninst.org:/pub/dyninst

9 years agoMerge branch 'master' of ssh://git.dyninst.org/pub/dyninst
Madhavi Krishnan [Tue, 21 Dec 2010 19:36:11 +0000 (13:36 -0600)]
Merge branch 'master' of ssh://git.dyninst.org/pub/dyninst

9 years agoSymbolic expansion now returns an error code if we fail to translate an instruction...
Andrew Bernat [Tue, 21 Dec 2010 19:35:34 +0000 (13:35 -0600)]
Symbolic expansion now returns an error code if we fail to translate an instruction or skip a possible substitution due to loops or overlapping inputs.

9 years agoAdding findFuncs to parseAPI manual.
Madhavi Krishnan [Tue, 21 Dec 2010 19:27:32 +0000 (13:27 -0600)]
Adding findFuncs to parseAPI manual.

9 years agoAdding semantics for stbx (ppc32) instruction.
Madhavi Krishnan [Tue, 21 Dec 2010 19:25:26 +0000 (13:25 -0600)]
Adding semantics for stbx (ppc32) instruction.

9 years agoMerge branch 'master' of git.dyninst.org:/pub/dyninst
Drew Bernat [Tue, 21 Dec 2010 19:24:53 +0000 (14:24 -0500)]
Merge branch 'master' of git.dyninst.org:/pub/dyninst

9 years agoAdd PPC return analysis-specific slicing predicates; fixes segfault.
Drew Bernat [Tue, 21 Dec 2010 19:24:11 +0000 (14:24 -0500)]
Add PPC return analysis-specific slicing predicates; fixes segfault.

9 years agoIdentify shared code regions
Madhavi Krishnan [Tue, 21 Dec 2010 17:26:03 +0000 (11:26 -0600)]
Identify shared code regions

Adding functionality to look up functions
in parseAPI by region (start address and
end address). This is infrastructure to
identify shared code regions.

9 years agoCheck widen/end predicates in slicing; don't assert fail if a widen node is encounter...
Andrew Bernat [Mon, 20 Dec 2010 20:28:12 +0000 (14:28 -0600)]
Check widen/end predicates in slicing; don't assert fail if a widen node is encountered in symbolic expansion.

9 years agoMerge branch 'master' of git.dyninst.org:/pub/dyninst
Andrew Bernat [Mon, 20 Dec 2010 18:45:13 +0000 (12:45 -0600)]
Merge branch 'master' of git.dyninst.org:/pub/dyninst

9 years agoPrototype implementation of "unknown" default semantics for missing PPC instructions
Andrew Bernat [Mon, 20 Dec 2010 18:44:26 +0000 (12:44 -0600)]
Prototype implementation of "unknown" default semantics for missing PPC instructions

9 years agoMerge branch 'master' of ssh://git.dyninst.org/pub/dyninst
Madhavi Krishnan [Sun, 19 Dec 2010 22:27:53 +0000 (16:27 -0600)]
Merge branch 'master' of ssh://git.dyninst.org/pub/dyninst

9 years agoMisc power rewriter commit
Madhavi Krishnan [Sun, 19 Dec 2010 22:27:05 +0000 (16:27 -0600)]
Misc power rewriter commit

1) rlwinm instruction is usually used for setting index and
    not the table start address of a jump table. This was
    causing ambiguity in the backward dataflow graph parsing
    of jump table start address. Hence, removing rlwinm
    instruction from the dataflow graph for checking
    jump table start address.
2) dgfreg was using pointers to the registers, which is not unique.
   Changed to use the register ID itself, which will be unique.
3) Indented IA_powerDetails.C - hence git blame will have my
   name on many lines.

9 years agoFix issue where 32-bit mutatees were not being filtered out on platforms that can...
Matthew Legendre [Fri, 17 Dec 2010 18:08:50 +0000 (12:08 -0600)]
Fix issue where 32-bit mutatees were not being filtered out on platforms that can't build 32-bit

9 years agoAdds placeholders for 5 additional PowerPC instructions in DataFlowAPI.
Ray Chen [Thu, 16 Dec 2010 20:40:57 +0000 (15:40 -0500)]
Adds placeholders for 5 additional PowerPC instructions in DataFlowAPI.

The PowerPC translation function for Rose in DataFlowAPI was missing
a number of cases in its switch statement.  The translation code still
needs to be implemented, but this prevents an assert in the nightly
tests at UMD.

9 years agoPower bug fix
Madhavi Krishnan [Wed, 15 Dec 2010 03:29:19 +0000 (21:29 -0600)]
Power bug fix

Nasty little bug in power code generation.
While generating code for an indirect load of
a variable in a shared library, absolute offset
was being used instead of relative offset. Fixed.

9 years agoImplement handling for fork/exec/exit syscalls, and thread creation and exit.
Daniel McNulty [Tue, 14 Dec 2010 18:22:29 +0000 (12:22 -0600)]
Implement handling for fork/exec/exit syscalls, and thread creation and exit.

Also, updates the Makefile for x86 Linux to use the new internal process
control layer. Fixes a bug in code gen for iRPCs where an incorrect result
register is returned by AST code generation, which results in the iRPC handling
code grabbing the result of the RPC from the wrong register.

Includes some refactoring of the BPatch layer to simplify the handling of
system calls and also destruction of BPatch_process and BPatch_thread objects.

Fixed a race condition with waiting for processes to stop.
BPatch_process::isTerminated should not poll for events and before waiting for
events in BPatch::waitForStatusChange, we should check and make sure some
processes are running as a sanity check.

9 years agoREX.W overrides side prefix; fix incorrect decoding
Andrew Bernat [Tue, 14 Dec 2010 16:28:21 +0000 (10:28 -0600)]
REX.W overrides side prefix; fix incorrect decoding

9 years agoMerge branch 'athome'
Matthew Legendre [Mon, 13 Dec 2010 20:45:17 +0000 (14:45 -0600)]
Merge branch 'athome'

9 years agoBuild fix for AIX
Matt Legendre [Mon, 13 Dec 2010 20:41:53 +0000 (15:41 -0500)]
Build fix for AIX

9 years agoFix Windows build
U-azul\legendre [Mon, 13 Dec 2010 20:35:20 +0000 (12:35 -0800)]
Fix Windows build

9 years agoPower rewriter cleanup
Madhavi Krishnan [Mon, 13 Dec 2010 09:24:53 +0000 (03:24 -0600)]
Power rewriter cleanup