dyninst.git
9 years agoTurns off gap parsing for Dyninst's runtime library and removes compiler warnings
Kevin Roundy [Thu, 9 Dec 2010 20:06:19 +0000 (14:06 -0600)]
Turns off gap parsing for Dyninst's runtime library and removes compiler warnings

9 years agox86 fix
Madhavi Krishnan [Mon, 6 Dec 2010 18:45:54 +0000 (12:45 -0600)]
x86 fix

isReturnInst is relevant only in power since a return instruction (blr) can
be a real return or indirect jump using LR. For x86, if the instruction
category is ReturnInsn, is it HAS to be a return. Hence, it is the same
as isReturn function.

9 years agoFix for vxWorks platform.
Ray Chen [Sun, 5 Dec 2010 21:32:55 +0000 (16:32 -0500)]
Fix for vxWorks platform.

Older 4.x versions of GCC cannot compare const_iters and regular iters.

9 years agoOptimize the x86/x86_64 stack alignment sequence.
Ray Chen [Sun, 5 Dec 2010 14:27:49 +0000 (09:27 -0500)]
Optimize the x86/x86_64 stack alignment sequence.
 - Only align the stack if we generate a function call or save the FP state.
 - If we must align the stack, only preserve the flags if they are live.

9 years agox86 build fix for previous commit
Madhavi Krishnan [Sun, 5 Dec 2010 02:46:21 +0000 (20:46 -0600)]
x86 build fix for previous commit

9 years agopowerpc rewriter commit
Madhavi Krishnan [Sat, 4 Dec 2010 23:32:52 +0000 (17:32 -0600)]
powerpc rewriter commit

This commit implements more accurate heuristics for parsing
powerpc jump tables using backward dataflow graph analysis.

This commit also implements heuristics and backward slicing
to determine if a blr instruction in a powerpc binary,
is a return or a jump table. This is specially relevant to BlueGene binaries.
To do slicing, an instruction adapter is always constructed/associated
with a specific block.

9 years agoForce FP saves
Madhavi Krishnan [Sat, 4 Dec 2010 01:49:14 +0000 (19:49 -0600)]
Force FP saves

As per user request, we are adding a force FP save option.
This will force FP registers to be saved. This is necessary because
right now, even if saveFP is set, analysis may incorrectly determine
no FP is ised and hence not save FP registers. This happens if
the instrumentation calls a function using FP in the rewriter case.
forceFPSave interface will not be published - since we hope to fix this for
the next release.

9 years agoEnable powerpc traps.
Madhavi Krishnan [Fri, 3 Dec 2010 23:53:02 +0000 (17:53 -0600)]
Enable powerpc traps.

1)This will cause sigtraps to be used for long jumps or when we do
  have free registers.
2)This will cause trap instructions to be used in placed of
  relocated instructions. This makes life easy for debugging when
 we have jumps into relocated code.

9 years agopowerpc instruction semantics
Madhavi Krishnan [Fri, 3 Dec 2010 23:39:05 +0000 (17:39 -0600)]
powerpc instruction semantics

Adding more instructions to powerpc semantics set.

9 years agoSlicing changes
Madhavi Krishnan [Fri, 3 Dec 2010 23:37:05 +0000 (17:37 -0600)]
Slicing changes

Slicing had a bug in labeling edges in the backward slicing case.
The edge from the instruction at which backward slicing
is applied, was labeled with the output of the instruction. Instead we
should create an edge for each of the inputs to the instruction (since
it is backward slicing) and label them based on the input.

9 years agoMinor commit
Madhavi Krishnan [Fri, 3 Dec 2010 23:31:23 +0000 (17:31 -0600)]
Minor commit

This commit includes many small changes:
1) Added semantics for si, subfz and ora powerpc instructions
2) Removed printf from dataflow Visitor
3) Added check to make sure we are not opening a
   rewritten binary using openFile. Opening rewritten file
   will cause symtabAPI and and parsing to fail.
4) Symtab was adding a new library dependency using the full
   path of the library. We should only add the library name
   without full path, so that LD_LIBRRAY_PATH of the user's
   environment will determine which library to use. This is
   very critical in bluegene type environment where the
   backend does not have access to the whole filesystem.

9 years agoMake symlinks local to the install directory, rather than including build residue.
Bill Williams [Thu, 2 Dec 2010 18:11:59 +0000 (12:11 -0600)]
Make symlinks local to the install directory, rather than including build residue.

9 years agoMake destination directories have absolute paths so that we don't screw up symlinks.
Bill Williams [Thu, 2 Dec 2010 16:59:46 +0000 (10:59 -0600)]
Make destination directories have absolute paths so that we don't screw up symlinks.

9 years agoRemove dead code (save_the_world, #if 0).
Bill Williams [Wed, 1 Dec 2010 16:44:27 +0000 (10:44 -0600)]
Remove dead code (save_the_world, #if 0).

9 years agoA few more fixes for RTlib naming.
Bill Williams [Wed, 1 Dec 2010 16:44:10 +0000 (10:44 -0600)]
A few more fixes for RTlib naming.

9 years agoAdd absolute conditionals and blrl to ppc semantics.
Bill Williams [Tue, 30 Nov 2010 19:11:27 +0000 (13:11 -0600)]
Add absolute conditionals and blrl to ppc semantics.

9 years agoAdd component versioning information to all components & filenames.
Bill Williams [Mon, 29 Nov 2010 23:23:18 +0000 (17:23 -0600)]
Add component versioning information to all components & filenames.

9 years agoChanges for library versioning; verified on linux/x86_64 and AIX
Bill Williams [Tue, 16 Nov 2010 20:04:33 +0000 (14:04 -0600)]
Changes for library versioning; verified on linux/x86_64 and AIX

9 years agoAdd --exe option for runhunt mode--allows runhunt to be used on a shared library...
Bill Williams [Mon, 8 Nov 2010 20:31:54 +0000 (14:31 -0600)]
Add --exe option for runhunt mode--allows runhunt to be used on a shared library driven by an un-rewritten executable.

9 years agoComment out debugging code in ProcControlAPI.
Daniel McNulty [Tue, 30 Nov 2010 15:46:29 +0000 (09:46 -0600)]
Comment out debugging code in ProcControlAPI.

9 years agoMerge branch 'master' into devel
Todd Frederick [Tue, 23 Nov 2010 22:56:29 +0000 (16:56 -0600)]
Merge branch 'master' into devel

9 years agoBPatch interface to specify non-returning functions
Todd Frederick [Tue, 23 Nov 2010 22:55:24 +0000 (16:55 -0600)]
BPatch interface to specify non-returning functions

9 years agoRemove cycle edges before populating expansion worklist. Expand from all
Emily Jacobson [Tue, 23 Nov 2010 22:11:32 +0000 (16:11 -0600)]
Remove cycle edges before populating expansion worklist. Expand from all
nodes, rather than just entryNodes.

9 years agoRemove self-loops from slices.
Emily Jacobson [Tue, 23 Nov 2010 22:10:31 +0000 (16:10 -0600)]
Remove self-loops from slices.

9 years agoEliminate spurious `thunk function' detection on x86
Nathan Rosenblum [Wed, 17 Nov 2010 21:31:38 +0000 (15:31 -0600)]
Eliminate spurious `thunk function' detection on x86

A `thunk function' is one that contains exactly two instructions:

mov (%esp),<a register>
ret

This construct is used in position independent code to retrieve
the program counter---see for example the __i686.get_pc_thunk.*
functions in glibc. Previously, any function that had a mov
instruction that referenced the stack pointer followed by a return
would be treated as a thunk. This commit properly checks for a
zero-offset dereference of the stack pointer.

9 years agoOptimize order of slice expansion
Nathan Rosenblum [Fri, 12 Nov 2010 23:13:58 +0000 (17:13 -0600)]
Optimize order of slice expansion

The order that slice nodes are visited in slice -> AST expansion matters
quite a bit; bad visitation order can lead to a great deal of extra work
being done as nodes are repeatedly visited to fill in partially expanded
ASTS. Because cycles in the slice DAG are removed prior to expansion,
an optimal ordering is possible. This commit implements that ordering. It
also correctly avoids traversing the `skip edges' that are removed to
break cycles in all instances of edge enumeration.

9 years agoImproves efficiency of the slicing algorithm
Nathan Rosenblum [Thu, 11 Nov 2010 21:13:34 +0000 (15:13 -0600)]
Improves efficiency of the slicing algorithm

The previous slicing algorithm searched the control flow graph in a
sub-optimal fashion, leading to complexity that was quadratic in the
best case of CFGs that are chains (linear control flow without
branches). This commit introduces a recursive slicing algorithm that
avoids this structural problem.

9 years agoFixes for bug 1081, bug 1104 (fork test bugs)
Daniel McNulty [Tue, 16 Nov 2010 21:42:27 +0000 (15:42 -0600)]
Fixes for bug 1081, bug 1104 (fork test bugs)

Both of these bugs were caused by a combination of OS bugs and our fork tests
using mutatees where the parent can exit before the child and both the child
and parent are short lived. Both of the OS bugs were reproduced using test
programs separate from Dyninst, so I am confident we are indeed observing
kernel bugs.

This commit, in addition to fixes for these bugs, removes the extra continues
in our test_fork_* tests that were added to avoid leaving around a bunch of
stopped processes when the nightlies ran.

Bug 1081:

We were seeing the fork tests leave around stopped mutatees on AIX. This bug
was being triggered by our soft breakpoint mechanism in the RT library that has
a process send itself a SIGSTOP. The following chain of events triggers the
bug:

1) The parent forks a child
2) The child sends itself a SIGSTOP
3) Dyninst continues both the parent and child
4) The parent exits before the child
5) The child exits almost immediately after being forked
6) Dyninst sees the pre-exit stop of the child and continues it
7) After continue the child is delivered a SIGSTOP by the OS

We originally used the soft breakpoint mechanism because we could not rely on
AIX to attach to and stop a child after fork. This was a bug on version 5.2 of
AIX. Since we have decided to no longer support AIX 5.2, we can rely on the OS
to automatically mark forked processes as being traced by Dyninst. Ideally, we
would want to stop both the parent and child at the exit of fork to initiate
some updates in the RT library using the OS provided mechanism for this. Due to
some probably more OS bugs, this cannot be done.

AIX 5.3 still exhibits some odd behavior where LWPs cannot be modified
on syscall entry/exit. An existing workaround for this is to set a trap at
the exit of the system call. This is done by reading registers and walking
the stack (if necessary). However, for the child at the exit of fork, the
values read from the registers are unreliable.

Working around all these bugs, the solution becomes to use a SIGTRAP instead of
a SIGSTOP in our soft breakpoint mechansim.

Bug 1104:

For test4_2, we were seeing a race where the exit callback of the child was not
being delivered, causing the test to fail. This bug in Dyninst was being
triggered by another kernel bug where if the parent exited before the child
entered userland for the first time, the child process would never execute.

In this scenario, Dyninst would observe that the child process disappeared and
generate an approriate event. On UNIX platforms, we however don't deliver
callbacks on a normal process exit; we deliver them at the entrance to the exit
system call when the process' address space is still around.  In this case, the
child doesn't hit our pre-exit instrumentation and we therefore don't deliver
the callback.

The fix is to check whether a callback has been attempted to be delivered when
we receive the process exit event and deliver the callback if it hasn't been
delivered yet. Additionally, the type of callback delivered is the same as if
the process had exited due to a signal because the process' address space is
not around anymore. When the kernel bug occurs, this would still cause the
test to fail so I have modified the mutatee's parent to wait for the child.

9 years agoForce stack alignment on x86/x86_64 platforms.
Ray Chen [Fri, 12 Nov 2010 13:12:54 +0000 (08:12 -0500)]
Force stack alignment on x86/x86_64 platforms.

Both x86 and x86_64 platforms require an aligned stack pointer at certain
points of execution.  This commit introduces a preamble in our state saving
code to forcably align the stack pointer.

Care is also taken to ensure the stack is aligned before we generate a
function call on x86_64.  Similar functionality may be needed for x86
in the future.

9 years agoAdded missing instruction entries to IAPI string map
Mike Lam [Thu, 11 Nov 2010 17:47:28 +0000 (12:47 -0500)]
Added missing instruction entries to IAPI string map

9 years agoFix for non-cap_registers platforms
Mike Lam [Tue, 9 Nov 2010 23:35:38 +0000 (18:35 -0500)]
Fix for non-cap_registers platforms

9 years agoAdded optional parameter in getRegisters to return SPRs
Mike Lam [Tue, 9 Nov 2010 22:00:36 +0000 (17:00 -0500)]
Added optional parameter in getRegisters to return SPRs

9 years agoAdded missing header files
Mike Lam [Tue, 9 Nov 2010 21:59:26 +0000 (16:59 -0500)]
Added missing header files

9 years agoMerge branch 'master' into devel
Todd Frederick [Tue, 9 Nov 2010 17:55:41 +0000 (11:55 -0600)]
Merge branch 'master' into devel

9 years agoFix bug 1144, Register liveness on Power
Todd Frederick [Tue, 9 Nov 2010 17:53:07 +0000 (11:53 -0600)]
Fix bug 1144, Register liveness on Power

9 years agoFixes IBSTree::successor bug that could trigger after range removal
Kevin Roundy [Fri, 5 Nov 2010 22:50:18 +0000 (17:50 -0500)]
Fixes IBSTree::successor bug that could trigger after range removal

Range removal introduces the possibility of nodes in the tree
that have empty equals sets, meaning that successor has to be
able to do a full depth-first search, since we never remove
nodes from the tree.

9 years agoFix segfault in symbolic expansion due to inconsistent operator<
Andrew Bernat [Thu, 4 Nov 2010 20:17:51 +0000 (15:17 -0500)]
Fix segfault in symbolic expansion due to inconsistent operator<

9 years agoCleanup.
Emily Jacobson [Thu, 4 Nov 2010 18:27:01 +0000 (13:27 -0500)]
Cleanup.

9 years agoMerge branch 'master' of ssh://git.dyninst.org/pub/dyninst
Emily Jacobson [Thu, 4 Nov 2010 18:11:35 +0000 (13:11 -0500)]
Merge branch 'master' of ssh://git.dyninst.org/pub/dyninst

9 years agoChanged backward slicing to not re-trigger parsing during slice.
Emily Jacobson [Thu, 4 Nov 2010 18:11:26 +0000 (13:11 -0500)]
Changed backward slicing to not re-trigger parsing during slice.
Checking interprocedural edges to follow is now moved into the
followCallBackward predicate and can be triggered by a user as necessary.

9 years agoFixes BPatch_basicBlockLoop::hasAncestor
Kevin Roundy [Wed, 3 Nov 2010 23:08:19 +0000 (18:08 -0500)]
Fixes BPatch_basicBlockLoop::hasAncestor

BPatch_basicBlockLoop::hasAncestor(otherloop) queries were breaking for complicated loops.
hasAncestor works by traversing a linked list of parents, but this method can fail if a loop
is contained by multiple equivalent loops defined by distinct back edges.
I switched the hasAncestor implementation to do a lookup in the (already existing)
BPatch_basicBlockLoop::containedLoops set.

9 years agoMerge branch 'master' of git.dyninst.org:/pub/dyninst
Andrew Bernat [Tue, 2 Nov 2010 20:46:24 +0000 (15:46 -0500)]
Merge branch 'master' of git.dyninst.org:/pub/dyninst

9 years agoPrevent duplication of cached call edges
Nathan Rosenblum [Tue, 2 Nov 2010 19:01:18 +0000 (14:01 -0500)]
Prevent duplication of cached call edges

ParseAPI::Functions cache call edges for rapid lookup. Incremental parsing
or updating of a parsed function could lead to such edges being duplicated.

9 years agoWindows build fix
Andrew Bernat [Tue, 2 Nov 2010 18:18:44 +0000 (13:18 -0500)]
Windows build fix

9 years agoEnable Windows register liveness.
Andrew Bernat [Mon, 1 Nov 2010 19:22:21 +0000 (14:22 -0500)]
Enable Windows register liveness.

9 years agoMerge branch 'master' of ssh://git.dyninst.org/pub/dyninst
Todd Frederick [Mon, 1 Nov 2010 16:45:51 +0000 (11:45 -0500)]
Merge branch 'master' of ssh://git.dyninst.org/pub/dyninst

9 years agoStackwalker documentation corrections
Todd Frederick [Mon, 1 Nov 2010 16:41:46 +0000 (11:41 -0500)]
Stackwalker documentation corrections

9 years agoUse provided names for PLT functions, if available.
Nathan Rosenblum [Fri, 29 Oct 2010 21:08:45 +0000 (16:08 -0500)]
Use provided names for PLT functions, if available.

During parsing, calls through the PLT lead to creation of functions
for the PLT entry stubs. These functions were getting the standard
targ* names we give to recursively discovered functions, which names
can be highly annoying when you KNOW that the real name of the PLT
entry in question exists RIGHT THERE in the symbol table. This commit
does the Right Thing.

9 years agoAdded stackwalker documentation to the repository
Kevin Roundy [Fri, 29 Oct 2010 18:13:01 +0000 (13:13 -0500)]
Added stackwalker documentation to the repository

9 years agoSmall fix for vxWorks platform.
Ray Chen [Fri, 29 Oct 2010 03:43:54 +0000 (23:43 -0400)]
Small fix for vxWorks platform.

Older 4.x versions of GCC cannot compare const_iters and non-const_iters.

9 years agoshouldRunTest(), contrary to its name, is not idempotent. Reverting "fix" in this...
Bill Williams [Thu, 28 Oct 2010 21:37:31 +0000 (16:37 -0500)]
shouldRunTest(), contrary to its name, is not idempotent.  Reverting "fix" in this area.

9 years agoMerge branch 'master' of git.dyninst.org:/pub/dyninst
Andrew Bernat [Thu, 28 Oct 2010 18:30:16 +0000 (13:30 -0500)]
Merge branch 'master' of git.dyninst.org:/pub/dyninst

9 years agoHandle SymEval cases where there are overlapping identical inputs.
Andrew Bernat [Thu, 28 Oct 2010 18:09:11 +0000 (13:09 -0500)]
Handle SymEval cases where there are overlapping identical inputs.

9 years agoFix problem in mis-identifying cycles in slices.
Andrew Bernat [Thu, 28 Oct 2010 17:02:48 +0000 (12:02 -0500)]
Fix problem in mis-identifying cycles in slices.

9 years agoppc32_linux fix
Madhavi Krishnan [Thu, 28 Oct 2010 04:16:04 +0000 (23:16 -0500)]
ppc32_linux fix

runTests on ppc32_linux was spinning and spewing
kill signal messages while running the
nightly testsuite. This was
due to a bad while loop which was
running forever. This led to a timeout in
our testsuite. Fixed with iterators.
This should fix build and run
problems in bruckner.

9 years agoParseAPI manual update
Nathan Rosenblum [Wed, 27 Oct 2010 20:21:33 +0000 (15:21 -0500)]
ParseAPI manual update

9 years agoImplements findMain() for ppc32-Linux.
Nathan Rosenblum [Wed, 27 Oct 2010 16:12:07 +0000 (11:12 -0500)]
Implements findMain() for ppc32-Linux.

The location of main is stored in a data structure passed to
__libc_start_main in glibc. The _start code linked at the beginning
of the text section computes the address of this data structure;
this patch uses slicing and SymEval to evaluate this computation
and extract the address of main from the startup structure.

9 years agoAvoid deadlock when recursively parsing tail calls, while ensuring that
Nathan Rosenblum [Tue, 26 Oct 2010 19:11:59 +0000 (14:11 -0500)]
Avoid deadlock when recursively parsing tail calls, while ensuring that
the return status of the [tail-]calling function is properly updated.

Also use a more efficient lookup for the "non returning by name" test.

9 years agofix for build fix
Bill Williams [Wed, 27 Oct 2010 19:29:33 +0000 (14:29 -0500)]
fix for build fix

9 years agoWindows build fix.
Bill Williams [Wed, 27 Oct 2010 15:25:18 +0000 (10:25 -0500)]
Windows build fix.

9 years agoBetter return status labeling for shared funcs and Rose input sanitizing
Kevin Roundy [Tue, 26 Oct 2010 22:39:01 +0000 (17:39 -0500)]
Better return status labeling for shared funcs and Rose input sanitizing

If two functions share code, and function A parses into an already parsed function B,
we can be sure that B's return status is the same as function A's if B is contained
in A.  As of this commit, we assign B's return status to A if A parses into B's entry point.
This commit also sanitizes the pushf instruction so that it can be passed into Rose.

9 years agoMake -cpumem work with getrusage() data on a per-test basis, with output added to...
Bill Williams [Tue, 26 Oct 2010 19:12:26 +0000 (14:12 -0500)]
Make -cpumem work with getrusage() data on a per-test basis, with output added to the database driver.

9 years agoFix for bug 1141: bad register from fld ST0, foo with a REX prefix.
Bill Williams [Tue, 26 Oct 2010 19:09:27 +0000 (14:09 -0500)]
Fix for bug 1141: bad register from fld ST0, foo with a REX prefix.

9 years agoMerge branch 'master' of git.dyninst.org:/pub/dyninst
Andrew Bernat [Tue, 26 Oct 2010 18:42:16 +0000 (13:42 -0500)]
Merge branch 'master' of git.dyninst.org:/pub/dyninst

9 years agoPowerPC slicing updates
Andrew Bernat [Tue, 26 Oct 2010 18:36:07 +0000 (13:36 -0500)]
PowerPC slicing updates

9 years agoFix two bugs in Dyninst's exec handling code.
Daniel McNulty [Mon, 25 Oct 2010 17:14:56 +0000 (12:14 -0500)]
Fix two bugs in Dyninst's exec handling code.

Both of these bugs were reported by the Open SpeedShop folks when
using Dyninst from the openssd daemon. They existed in both Dyninst 6.1
and GIT HEAD.

The first bug occurs when a multithread capable process exec's an executable
that is not multithread capable. We were incorrectly assuming that the exec'd
process was still multithread capable.

The second bug was observed when a multithread capable process exec's an
executable that is also multithread capable. The bug was that the tramp guard
AST was being cached across exec's and results in asserts in code generation
because the tramp guard variable created during mulitthreaded initialization
doesn't match the variable maintained by the tramp guard AST. The fix is to
clear the cached the tramp guard AST on exec.

9 years agoMerge branch 'master' of ssh://git.dyninst.org/pub/dyninst
Daniel McNulty [Mon, 25 Oct 2010 14:03:27 +0000 (09:03 -0500)]
Merge branch 'master' of ssh://git.dyninst.org/pub/dyninst

9 years agoUntested verbose accounting code didn't compile
Nathan Rosenblum [Thu, 21 Oct 2010 15:55:02 +0000 (10:55 -0500)]
Untested verbose accounting code didn't compile

9 years agoMerge branch 'master' of ssh://git.dyninst.org/pub/dyninst
Emily Jacobson [Wed, 20 Oct 2010 18:05:16 +0000 (13:05 -0500)]
Merge branch 'master' of ssh://git.dyninst.org/pub/dyninst

9 years agoAdded missing std:: namespace specifiers.
Emily Jacobson [Wed, 20 Oct 2010 17:09:44 +0000 (12:09 -0500)]
Added missing std:: namespace specifiers.

9 years agoMerge branch 'master' of ssh://git.dyninst.org/pub/dyninst
Daniel McNulty [Tue, 19 Oct 2010 20:15:42 +0000 (15:15 -0500)]
Merge branch 'master' of ssh://git.dyninst.org/pub/dyninst

9 years agoPower jump table parsing
Madhavi Krishnan [Tue, 19 Oct 2010 19:24:09 +0000 (14:24 -0500)]
Power jump table parsing

1) Extensions to parseAPI(IA_powerDetails) to
find jump tables in ppc32 code.
The addi-addis combination instructions can
be anywhere in the function before the indirect
jump - not necessarily in the same block as the
indirect jump instruction.
The jump table start address is stored in got
section. For shared libraries, this is filled by
the dynamic loader via a relocation entry. Hence,
we should find the relocation entry corresponding
to the table start address to find the table in
rodata section.
2) symtabAPI: Relocation entries are added to
the corresponding DT_REL sections (rel.dyn and
rel.plt) in addition to the target region of the
relocations (plt section). This enables us to
get a list of relocations in a particular ELF
section.

9 years agoMerge branch 'master' of ssh://git.dyninst.org/pub/dyninst
Kevin Roundy [Tue, 19 Oct 2010 18:50:43 +0000 (13:50 -0500)]
Merge branch 'master' of ssh://git.dyninst.org/pub/dyninst

9 years agoAdded support for "callpath sensitive" backward slicing.
Emily Jacobson [Tue, 19 Oct 2010 16:51:18 +0000 (11:51 -0500)]
Added support for "callpath sensitive" backward slicing.

Various backward slicing bug fixes.

Added 2 new EdgePredicates: Interproc and SingleContextOrInterproc.

9 years agoMerge branch 'master' of ssh://git.dyninst.org/pub/dyninst
Kevin Roundy [Tue, 19 Oct 2010 14:16:10 +0000 (09:16 -0500)]
Merge branch 'master' of ssh://git.dyninst.org/pub/dyninst

Conflicts:
parseAPI/doc/parseapi.pdf

9 years agoparseapi doc and codeRange fix
Kevin Roundy [Mon, 18 Oct 2010 21:00:00 +0000 (16:00 -0500)]
parseapi doc and codeRange fix

9 years agoBug 1139 fix
Madhavi Krishnan [Mon, 18 Oct 2010 17:23:56 +0000 (12:23 -0500)]
Bug 1139 fix

Test1_33 was failing in rewriter mode because
test1_33_globalVariable1 was initialized in the
bss section. The rewriter cannot modify variables
in the bss section. This commit initializes the
global variable to a non-zero value so that it
is not initialized in the bss section. This commit
fixes bug 1139

9 years agoMerge branch 'master' of ssh://git.dyninst.org/pub/dyninst
Todd Frederick [Mon, 18 Oct 2010 16:33:01 +0000 (11:33 -0500)]
Merge branch 'master' of ssh://git.dyninst.org/pub/dyninst

9 years agoWorkarounds for old buggy versions of PGF (for ParseAPI manual front page)
Nathan Rosenblum [Mon, 18 Oct 2010 15:40:47 +0000 (10:40 -0500)]
Workarounds for old buggy versions of PGF (for ParseAPI manual front page)

9 years agoMerge branch 'master' into devel
Todd Frederick [Mon, 18 Oct 2010 15:36:17 +0000 (10:36 -0500)]
Merge branch 'master' into devel

9 years agodataflowAPI: allow stack analysis to be disabled for AssignmentConverter
Todd Frederick [Mon, 18 Oct 2010 15:34:36 +0000 (10:34 -0500)]
dataflowAPI: allow stack analysis to be disabled for AssignmentConverter

9 years agoPPC64 Linux PLT call stack fix
Ray Chen [Mon, 18 Oct 2010 04:32:01 +0000 (00:32 -0400)]
PPC64 Linux PLT call stack fix

We must store the caller's TOC into 40(r1) when replacing function calls
because the original call (to a PLT stub) would have stored the TOC there,
and subsequent code may expect to restore it.

Also removes an unnecessary dynamic_cast from parsing code.

9 years agoFixes an off-by-one error in Power decoder.
Ray Chen [Mon, 18 Oct 2010 04:29:42 +0000 (00:29 -0400)]
Fixes an off-by-one error in Power decoder.

9 years agoVarious documentation updates to the ParseAPI manual
Kevin Roundy [Fri, 15 Oct 2010 23:49:41 +0000 (18:49 -0500)]
Various documentation updates to the ParseAPI manual

9 years agoTestsuite changes
Madhavi Krishnan [Fri, 15 Oct 2010 21:09:25 +0000 (16:09 -0500)]
Testsuite changes

Added rewriter mode to test1_28, test1_33, test1_34 and init_fini_callback
on power, x86 and x86_64 linux platforms.

9 years agoImplements the ProcControlAPI::ThreadPool::find function.
Daniel McNulty [Thu, 14 Oct 2010 21:54:03 +0000 (16:54 -0500)]
Implements the ProcControlAPI::ThreadPool::find function.

9 years agoModify ParseThat to return non-zero on mutator failure (or crash).
Andrew Bernat [Thu, 14 Oct 2010 21:44:45 +0000 (16:44 -0500)]
Modify ParseThat to return non-zero on mutator failure (or crash).

9 years agoMark CodeObjects unparseable when no valid code regions exist
Nathan Rosenblum [Thu, 14 Oct 2010 15:14:22 +0000 (10:14 -0500)]
Mark CodeObjects unparseable when no valid code regions exist

9 years agoUpdated ParseAPI manual
Nathan Rosenblum [Tue, 12 Oct 2010 19:16:06 +0000 (14:16 -0500)]
Updated ParseAPI manual

9 years agoPrevent duplicate return edge creation in Function::blocks_int
Nathan Rosenblum [Tue, 12 Oct 2010 22:00:50 +0000 (17:00 -0500)]
Prevent duplicate return edge creation in Function::blocks_int

9 years agoImplement PPC/Linux trap handler.
Andrew Bernat [Tue, 12 Oct 2010 15:26:12 +0000 (10:26 -0500)]
Implement PPC/Linux trap handler.

9 years agoMerge branch 'master' of git.dyninst.org:/pub/dyninst
Andrew Bernat [Mon, 11 Oct 2010 22:33:03 +0000 (17:33 -0500)]
Merge branch 'master' of git.dyninst.org:/pub/dyninst

Conflicts:
dataflowAPI/src/Absloc.C

9 years agoFix stack comparison bug.
Andrew Bernat [Mon, 11 Oct 2010 22:31:11 +0000 (17:31 -0500)]
Fix stack comparison bug.

9 years agoFix stack comparison bug.
Andrew Bernat [Mon, 11 Oct 2010 22:30:10 +0000 (17:30 -0500)]
Fix stack comparison bug.

Conflicts:

dataflowAPI/h/slicing.h
dataflowAPI/src/slicing.C

9 years agoRearranged code for better ordering of if statements.
Emily Jacobson [Mon, 11 Oct 2010 18:14:50 +0000 (13:14 -0500)]
Rearranged code for better ordering of if statements.

9 years agojumpSize() fix: take the absolute value of a signed value, not an unsigned. This...
Bill Williams [Fri, 8 Oct 2010 20:48:42 +0000 (16:48 -0400)]
jumpSize() fix: take the absolute value of a signed value, not an unsigned.  This was breaking backwards branching on POWER.

9 years agoRemove assert.
Bill Williams [Thu, 7 Oct 2010 15:53:52 +0000 (11:53 -0400)]
Remove assert.

9 years agoTreat blrl as a return, rather than a call, since in practice it is used as a linking...
Bill Williams [Thu, 7 Oct 2010 15:53:17 +0000 (11:53 -0400)]
Treat blrl as a return, rather than a call, since in practice it is used as a linking return.

9 years agoIgnore regions with zero memory size cross-platform.
Bill Williams [Thu, 7 Oct 2010 15:52:50 +0000 (11:52 -0400)]
Ignore regions with zero memory size cross-platform.

9 years agoAllow jump tables to use add-with-carry as well as add.
Bill Williams [Thu, 7 Oct 2010 15:52:25 +0000 (11:52 -0400)]
Allow jump tables to use add-with-carry as well as add.