Bill Williams [Wed, 5 Aug 2015 17:21:46 +0000 (12:21 -0500)]
New sections
Bill Williams [Wed, 5 Aug 2015 17:19:41 +0000 (12:19 -0500)]
More manual updates
Bill Williams [Tue, 4 Aug 2015 15:40:20 +0000 (10:40 -0500)]
Updated manuals to 9.0 cover page
Bill Williams [Mon, 3 Aug 2015 22:24:12 +0000 (17:24 -0500)]
Symtab manual bug fixes: escape all underscores
Bill Williams [Wed, 29 Jul 2015 16:23:53 +0000 (11:23 -0500)]
Symtab manual updates.
Bill Williams [Wed, 29 Jul 2015 16:23:33 +0000 (11:23 -0500)]
Proper support for extended ELF machine types.
Josh Stone [Thu, 30 Jul 2015 22:25:00 +0000 (15:25 -0700)]
common: try process_vm_readv/writev for Linux bulk access
These syscalls can read/write entire blocks of memory in one syscall,
rather than using a series of word-sized ptrace peek/poke requests.
However, not all kernels have these (ENOSYS), and they don't bypass page
protection (EFAULT), so the ptrace way is still required as a fallback.
Xiaozhu Meng [Mon, 3 Aug 2015 06:14:27 +0000 (01:14 -0500)]
Fix typo in filling loop entries
Xiaozhu Meng [Sat, 1 Aug 2015 18:24:06 +0000 (13:24 -0500)]
Current implementation of non-returning function analysis
require parsing call edges before parsing call fallthrough edges.
Josh Stone [Thu, 30 Jul 2015 22:02:08 +0000 (15:02 -0700)]
common: rewrite caching in Linux P_cplus_demangle()
This had a bug where a last_typed value was saved even for parameter
includeTypes==false, where cplus_demangle opts lacked DMGL_PARAMS.
Similarly, the nativeCompiler parameter wasn't considered at all for
caching.
This caused strange issues in boost::multi_index, where its internal
rehashing was sometimes allocating buffers incorrectly for its buckets.
This was because Symbol->getTypedName() was returning different values
depending on how P_cplus_demangle was cached, and silently changing keys
in a map is no good at all.
P_cplus_demangle caching now requires an exact match on all three input
parameters before returning the saved result.
Bill Williams [Fri, 24 Jul 2015 19:48:55 +0000 (14:48 -0500)]
Fencepost error fixed, from John Mellor-Crummey at Rice.
Bill Williams [Fri, 24 Jul 2015 19:48:35 +0000 (14:48 -0500)]
ICC detection enabled under CMake, from Rashawn Knapp at Intel.
Xiaozhu Meng [Mon, 27 Jul 2015 04:10:43 +0000 (23:10 -0500)]
ParseAPI manual update
Xiaozhu Meng [Sat, 25 Jul 2015 15:35:00 +0000 (10:35 -0500)]
Window build fix
Xiaozhu Meng [Fri, 24 Jul 2015 18:26:43 +0000 (13:26 -0500)]
This commit merges my various changes in parsing to master,
including machine learning based gap parsing, new jump table analysis
and fixes to our existing tail call heuristics.
It also includes changes made to slicing code to support the new jump table analysis,
where users now have a better control to stop slicing
when their analysis has achieved their goals
and can choose to include control flow dependencies into slice.
Lastly, the ParseAPI manual is updated accordingly.
Merge branch 'master' into parsing
Conflicts:
dataflowAPI/src/slicing.C
Xiaozhu Meng [Fri, 24 Jul 2015 05:02:42 +0000 (00:02 -0500)]
Always use cache in slicing, but clear the cache when jump table is reoslved on one branch
Josh Stone [Thu, 23 Jul 2015 22:28:56 +0000 (15:28 -0700)]
dataflowAPI: use boost::bind() instead of bind<void>()
With boost 1.58, the boost::bind<void>() in Slicer::getPredecessors()
gave an "error: call of overloaded 'bind[...]' is ambiguous".
Every other bind in dyninst uses plain boost::bind(), which does its own
inspection of return type. That works well in this case too, even with
older boost versions.
Xiaozhu Meng [Thu, 23 Jul 2015 15:29:34 +0000 (10:29 -0500)]
Debug output cleanning and ParseAPI manual update
Xiaozhu Meng [Wed, 22 Jul 2015 21:01:50 +0000 (16:01 -0500)]
Priorize existing call fallthrough edges over any jumps to increase the effectiveness of tail call heurisitcs
Xiaozhu Meng [Wed, 22 Jul 2015 04:43:50 +0000 (23:43 -0500)]
If a non-function symbol points to code sections, then the pointed range is not code and do not apply gap parsing to it
Xiaozhu Meng [Wed, 22 Jul 2015 02:13:19 +0000 (21:13 -0500)]
Change slice interface to allow choose whether control flow dependenc or stack analysis is needed
Xiaozhu Meng [Tue, 21 Jul 2015 14:41:32 +0000 (09:41 -0500)]
Handle aliasing
Xiaozhu Meng [Tue, 21 Jul 2015 02:09:14 +0000 (21:09 -0500)]
Fix conflicts between caching and stopping slicing
Xiaozhu Meng [Thu, 16 Jul 2015 20:18:19 +0000 (15:18 -0500)]
Fix semantics of invert operation
Xiaozhu Meng [Wed, 15 Jul 2015 21:43:54 +0000 (16:43 -0500)]
Handle instruction xchg, where the relations between the oeprands are reversed
Xiaozhu Meng [Wed, 15 Jul 2015 03:04:47 +0000 (22:04 -0500)]
When an indirect jump is deferred for analysis, we may need to look for the correct block containing the jump and the correct block may overlap with some other blocks
Xiaozhu Meng [Wed, 15 Jul 2015 00:56:43 +0000 (19:56 -0500)]
If we ask about ABI on a register we do not care about in ABI, like st1, we should return error code rather than assertion
Xiaozhu Meng [Tue, 14 Jul 2015 03:30:22 +0000 (22:30 -0500)]
fix handling thunks
Xiaozhu Meng [Mon, 13 Jul 2015 04:40:12 +0000 (23:40 -0500)]
One byte read can produce bound [0,255], but it is possible that an one byte read is a jump table read. Only generate bound [0,255] when no jump table is found.
Xiaozhu Meng [Mon, 13 Jul 2015 03:20:55 +0000 (22:20 -0500)]
Merge branch 'master' into parsing
Conflicts:
common/src/dyn_regs.C
parseAPI/src/Parser.C
parseAPI/src/ParserDetails.h
proccontrol/src/int_process.h
Xiaozhu Meng [Mon, 13 Jul 2015 02:56:42 +0000 (21:56 -0500)]
BSF and BSR instructions can produce bounds for jump tables
Alex Morris [Mon, 6 Jul 2015 19:52:00 +0000 (14:52 -0500)]
Defensive mode debugging fixes.
This commit removes excess debugging and logging code from defensive mode.
Alex Morris [Tue, 21 Apr 2015 15:30:30 +0000 (10:30 -0500)]
Defensive mode dynamic fixes.
This commit includes a few fixes. First, it adds a callback for changing
permissions of write-protected pages (pages are write protected by default
in defensive mode). Second, it excludes IAT symbols from function parsing.
These symbols are function pointers that were previously being parsed as
code. Last, this commit improves our dynamic parsing abilities, resulting
in fewer defensive mode crashes.
unknown [Mon, 29 Sep 2014 21:22:44 +0000 (16:22 -0500)]
Various defensive mode fixes.
This commit provides various minor fixes to defensive mode. For example,
this enables defensive parsing and includes new debugging assert
statements.
Matthew LeGendre [Mon, 29 Jun 2015 17:50:36 +0000 (10:50 -0700)]
Make PC's getThreadLocalAddress interface const
Bill Williams [Wed, 24 Jun 2015 19:37:39 +0000 (14:37 -0500)]
Revert to default-off logs
Bill Williams [Mon, 22 Jun 2015 21:06:17 +0000 (16:06 -0500)]
Don't add names (notably, from DWARF) that duplicate substrings of symbol-based names.
Bill Williams [Wed, 17 Jun 2015 19:20:00 +0000 (14:20 -0500)]
De-static some unnecessary statics
Bill Williams [Wed, 17 Jun 2015 19:19:31 +0000 (14:19 -0500)]
Remove dead code
Bill Williams [Tue, 16 Jun 2015 19:17:54 +0000 (14:17 -0500)]
More inline fixes
Bill Williams [Mon, 15 Jun 2015 20:06:38 +0000 (15:06 -0500)]
Inline function handling: de-aggregate FunctionBase, add getName to functionBase for primary name, have a bunch of actual function interfaces virtual in FunctionBase rather than monolithically in Aggregate
SteveXiSong [Tue, 16 Jun 2015 21:34:41 +0000 (16:34 -0500)]
Merge branch 'master' of ssh://git.dyninst.org/pub/dyninst
Conflicts:
dyninstAPI/src/ast.C
SteveXiSong [Tue, 16 Jun 2015 21:32:23 +0000 (16:32 -0500)]
Merge branch 'temp'
SteveXiSong [Tue, 16 Jun 2015 21:28:50 +0000 (16:28 -0500)]
modified: dyninstAPI/src/ast.C
SteveXiSong [Tue, 16 Jun 2015 21:26:13 +0000 (16:26 -0500)]
Merge branch 'master' of /p/paradyn/development/xmeng/dyninstapi/dyninst into HEAD
Conflicts:
dyninstAPI/src/ast.C
modified: dyninstAPI/src/ast.C
SteveXiSong [Tue, 16 Jun 2015 21:22:51 +0000 (16:22 -0500)]
Merge branch 'master' of /p/paradyn/development/xmeng/dyninstapi/dyninst
Conflicts:
dyninstAPI/src/ast.C
modified: dyninstAPI/src/ast.C
modified: dyninstAPI/src/emit-x86.h
modified: dyninstAPI/src/emitter.h
SteveXiSong [Tue, 16 Jun 2015 19:38:49 +0000 (14:38 -0500)]
Merge branch 'master' of ssh://git.dyninst.org/pub/dyninst
Conflicts:
dyninstAPI/src/ast.C
modified: dyninstAPI/src/ast.C
modified: dyninstAPI/src/emit-x86.h
modified: dyninstAPI/src/emitter.h
Xiaozhu Meng [Wed, 10 Jun 2015 18:55:01 +0000 (13:55 -0500)]
Merge branch 'master' into parsing
Xiaozhu Meng [Wed, 10 Jun 2015 18:54:42 +0000 (13:54 -0500)]
Merge branch 'IndirectControlFlow' into parsing
Conflicts:
symtabAPI/src/Symtab.C
Steve [Tue, 9 Jun 2015 03:53:08 +0000 (22:53 -0500)]
update sw
Steve [Fri, 5 Jun 2015 20:00:52 +0000 (15:00 -0500)]
Merge branch 'arm64' of feta.cs.wisc.edu:/p/paradyn/development/xi/Dyninst/dyninst into arm64
SteveXiSong [Fri, 5 Jun 2015 19:47:23 +0000 (14:47 -0500)]
fix registerMap.c
Steve [Wed, 3 Jun 2015 21:19:46 +0000 (16:19 -0500)]
Merge branch 'arm64' of feta.cs.wisc.edu:/p/paradyn/development/xi/Dyninst/dyninst into arm64
SteveXiSong [Wed, 3 Jun 2015 21:08:21 +0000 (16:08 -0500)]
remove warning
SteveXiSong [Wed, 3 Jun 2015 21:02:37 +0000 (16:02 -0500)]
remove warning
SteveXiSong [Wed, 3 Jun 2015 18:27:03 +0000 (13:27 -0500)]
remove warning
Steve [Wed, 3 Jun 2015 16:48:12 +0000 (11:48 -0500)]
Merge branch 'arm64' of feta.cs.wisc.edu:/p/paradyn/development/xi/Dyninst/dyninst into arm64
SteveXiSong [Wed, 3 Jun 2015 16:36:46 +0000 (11:36 -0500)]
comment #error
Steve [Wed, 3 Jun 2015 16:04:54 +0000 (11:04 -0500)]
resolve conflicts
SteveXiSong [Wed, 3 Jun 2015 15:53:06 +0000 (10:53 -0500)]
fix warning defines
Steve [Sat, 30 May 2015 03:40:41 +0000 (22:40 -0500)]
modified for swk
SteveXiSong [Fri, 22 May 2015 19:32:29 +0000 (14:32 -0500)]
change struct to classes
SteveXiSong [Fri, 22 May 2015 19:01:04 +0000 (14:01 -0500)]
fixes some arm compile issues on x86
Emily Gember-Jacobson [Fri, 22 May 2015 16:47:50 +0000 (11:47 -0500)]
Move x86-specific emitters out of Emitter class
Emily Gember-Jacobson [Fri, 22 May 2015 14:05:25 +0000 (09:05 -0500)]
Define cap_stack_mods and properly limit stack mods to x86,x86_64
Steve [Fri, 22 May 2015 16:20:42 +0000 (11:20 -0500)]
pull from feta
Steve [Fri, 22 May 2015 16:14:04 +0000 (11:14 -0500)]
rebased and tests passes
Steve [Thu, 21 May 2015 22:52:08 +0000 (17:52 -0500)]
Temporary aarch64 fixes
Steve [Thu, 21 May 2015 19:22:49 +0000 (14:22 -0500)]
proccontrol: all tests passed. Solution II is used to solve arm kernel bug.
Steve [Mon, 4 May 2015 18:54:59 +0000 (13:54 -0500)]
added branch reg for emulated ss
Bill Williams [Tue, 10 Mar 2015 18:27:00 +0000 (13:27 -0500)]
Initial cmake fixes
Steve [Thu, 21 May 2015 19:22:49 +0000 (14:22 -0500)]
proccontrol: all tests passed. Solution II is used to solve arm kernel bug.
Steve [Fri, 15 May 2015 16:14:05 +0000 (11:14 -0500)]
solved proccontrol mt bug by simple solution.
Steve [Mon, 4 May 2015 18:54:59 +0000 (13:54 -0500)]
added branch reg for emulated ss
Steve [Mon, 27 Apr 2015 22:01:15 +0000 (17:01 -0500)]
pc works in sp, mp mode, but mt mode failed
Steve [Mon, 6 Apr 2015 20:50:20 +0000 (15:50 -0500)]
new file: .syntastic_cpp_config
new file: common/h/Display
new file: common/h/FileType
new file: common/h/Initial
new file: common/h/Others
modified: common/h/dyn_regs.h
modified: common/src/arch-aarch64.C
modified: common/src/arch-aarch64.h
modified: common/src/dyn_regs.C
modified: dyninstAPI/src/RegisterConversion-aarch64.C
modified: dyninstAPI/src/codegen-aarch64.C
modified: dyninstAPI/src/debug.C
modified: dyninstAPI/src/registerSpace.h
modified: elf/src/SystemTap.C
new file: proccontrol/.syntastic_cpp_config
modified: proccontrol/CMakeLists.txt
modified: proccontrol/h/PCErrors.h
new file: proccontrol/src/Display
new file: proccontrol/src/FileType
new file: proccontrol/src/Initial
new file: proccontrol/src/Others
modified: proccontrol/src/arm_process.C
modified: proccontrol/src/arm_process.h
modified: proccontrol/src/linux.C
modified: proccontrol/src/loadLibrary/codegen-aarch64.C
modified: proccontrol/src/mmapalloc.C
modified: proccontrol/src/pcerrors.C
modified: proccontrol/src/process.C
modified: proccontrol/src/snippets.h
modified: proccontrol/src/unix.C
modified: stackwalk/src/aarch64-swk.C
new file: syscalls/unistd-by-platform/Linux/Arch_aarch64/unistd.h
Steve [Fri, 20 Mar 2015 20:06:15 +0000 (15:06 -0500)]
modified: common/CMakeLists.txt
modified: common/h/dyn_regs.h
modified: common/src/arch-aarch64.C
modified: common/src/arch-aarch64.h
modified: common/src/arch.h
modified: common/src/dyn_regs.C
modified: dataflowAPI/src/ABI.C
modified: dataflowAPI/src/RegisterMap.C
modified: dyninstAPI/CMakeLists.txt
modified: dyninstAPI/src/BPatch_snippet.C
new file: dyninstAPI/src/RegisterConversion-aarch64.C
new file: dyninstAPI/src/Relocation/Widgets/CFWidget-aarch64.C
modified: dyninstAPI/src/Relocation/Widgets/CFWidget.h
modified: dyninstAPI/src/arch-forward-decl.h
modified: dyninstAPI/src/ast.C
modified: dyninstAPI/src/binaryEdit.C
new file: dyninstAPI/src/codegen-aarch64.C
new file: dyninstAPI/src/codegen-aarch64.h
modified: dyninstAPI/src/codegen.h
new file: dyninstAPI/src/emit-aarch64.h
new file: dyninstAPI/src/inst-aarch64.C
new file: dyninstAPI/src/inst-aarch64.h
modified: dyninstAPI/src/legacy-instruction.h
new file: dyninstAPI/src/linux-aarch64.C
new file: dyninstAPI/src/linux-aarch64.h
modified: dyninstAPI/src/linux.h
modified: dyninstAPI/src/mapped_object.C
new file: dyninstAPI/src/parse-aarch64.C
modified: dyninstAPI/src/registerSpace.C
modified: dyninstAPI/src/registerSpace.h
new file: dyninstAPI/src/stackwalk-aarch64.C
modified: dyninstAPI/src/vxworks.h
modified: dyninstAPI_RT/CMakeLists.txt
modified: dyninstAPI_RT/src/RTcommon.c
modified: dyninstAPI_RT/src/RTlinux.c
new file: dyninstAPI_RT/src/RTstatic_ctors_dtors-aarch64.c
new file: dyninstAPI_RT/src/RTthread-aarch64-asm.S
new file: dyninstAPI_RT/src/RTthread-aarch64-asm.s
new file: dyninstAPI_RT/src/RTthread-aarch64.c
modified: parseAPI/CMakeLists.txt
modified: parseAPI/h/CFGModifier.h
modified: parseAPI/src/IA_IAPI.C
modified: parseAPI/src/IA_IAPI.h
new file: parseAPI/src/IA_aarch64.C
new file: parseAPI/src/IA_aarch64.h
new file: parseAPI/src/IA_aarch64Details.C
new file: parseAPI/src/IA_aarch64Details.h
modified: parseAPI/src/IA_platformDetailsFactory.C
new file: parseAPI/src/InstructionSource-aarch64.C
modified: parseAPI/src/SymLiteCodeSource.C
modified: parseAPI/src/SymtabCodeSource.C
modified: proccontrol/src/arm_process.C
modified: stackwalk/CMakeLists.txt
new file: stackwalk/src/aarch64-swk.C
new file: stackwalk/src/linux-aarch64-swk.C
Steve [Mon, 16 Mar 2015 16:32:28 +0000 (11:32 -0500)]
modified: cmake/cap_arch_def.cmake
modified: common/h/dyn_regs.h
new file: common/src/arch-aarch64.C
new file: common/src/arch-aarch64.h
modified: common/src/arch.h
modified: common/src/dyn_regs.C
modified: dwarf/src/dwarfHandle.C
modified: proccontrol/CMakeLists.txt
new file: proccontrol/src/arm_process.C
new file: proccontrol/src/arm_process.h
modified: proccontrol/src/linux.C
modified: proccontrol/src/linux.h
new file: proccontrol/src/loadLibrary/codegen-aarch64.C
modified: symtabAPI/CMakeLists.txt
modified: symtabAPI/src/emitElfStatic-aarch64.C
modified: symtabAPI/src/relocationEntry-elf-aarch64.C
Steve [Thu, 12 Mar 2015 16:12:09 +0000 (11:12 -0500)]
modified: symtabAPI/CMakeLists.txt
new file: symtabAPI/src/emitElfStatic-aarch64.C
modified: symtabAPI/src/emitElfStatic.C
new file: symtabAPI/src/relocationEntry-elf-aarch64.C
Bill Williams [Tue, 10 Mar 2015 18:27:00 +0000 (13:27 -0500)]
Initial cmake fixes
SteveXiSong [Fri, 22 May 2015 02:00:23 +0000 (21:00 -0500)]
patch 2
SteveXiSong [Thu, 21 May 2015 22:40:54 +0000 (17:40 -0500)]
Testing stack mods build fix
Steve [Thu, 21 May 2015 19:22:49 +0000 (14:22 -0500)]
proccontrol: all tests passed. Solution II is used to solve arm kernel bug.
Emily Gember-Jacobson [Fri, 8 May 2015 20:03:21 +0000 (15:03 -0500)]
Handle complex LEA instructions in stack analysis.
Existing stack analysis only handled LEA instructions with a single source
register. This ignores LEA instructions where the source is an SIB
expression. A new transfer func, sibFunc, has been added, and the apply()
and accumulate() functions have been updated to properly handle this new
transfer function.
Emily Gember-Jacobson [Fri, 8 May 2015 19:34:23 +0000 (14:34 -0500)]
Update StackAnalysis::handleMov to handle non register-register moves.
Emily Gember-Jacobson [Fri, 8 May 2015 19:32:09 +0000 (14:32 -0500)]
Updated StackAnalysis::handleAddSub to also operate on non-SP registers.
Emily Gember-Jacobson [Fri, 8 May 2015 19:26:54 +0000 (14:26 -0500)]
Redefine StackAnalysis::handleDefault to round a register to TOP or BOTTOM,
instead of always setting to BOTTOM.
Emily Gember-Jacobson [Fri, 8 May 2015 19:24:46 +0000 (14:24 -0500)]
Modify StackAnalysis::findDefinedHeights to include registers with a height of BOTTOM.
Emily Gember-Jacobson [Fri, 8 May 2015 19:23:43 +0000 (14:23 -0500)]
In stack analysis, add handlers for sign- and zero-extend instructions.
Emily Gember-Jacobson [Fri, 8 May 2015 19:19:45 +0000 (14:19 -0500)]
Extend stack analysis transfer functions to handle targets that should be
"rounded" to TOP or BOTTOM.
This annotate transfer functions that have the following characteristic:
if target is TOP, keep as TOP
else, target must be set to BOTTOM
E.g., sign-extending a register:
if the register had an uninitialized stack height (TOP),
the sign-extension has no effect
if the register had a valid or notunique (BOTTOM) stack height,
the sign-extension must result in a BOTTOM stack height
Emily Gember-Jacobson [Fri, 8 May 2015 19:03:03 +0000 (14:03 -0500)]
Redefine delta and abs to be of type long in StackAnalysis::TransferFunc
Emily Gember-Jacobson [Fri, 8 May 2015 18:45:45 +0000 (13:45 -0500)]
Bug fixes for arithmetic operations for StackAnalysis::Height
Previously, most arithmetic involving TOP returned TOP. This is not
correct, and the operators have been updated accordingly.
Emily Gember-Jacobson [Fri, 8 May 2015 18:35:52 +0000 (13:35 -0500)]
Add += operator for StackAnalysis::Height
Emily Gember-Jacobson [Fri, 8 May 2015 18:33:05 +0000 (13:33 -0500)]
Add sensitivity analysis for stack modifications.
This sensitivity analysis determines which instructions access
relocated stack memory or stack memory shifted due to modifications;
these instructions are updated during relocation to access the new
stack locations (via a new StackModWidget).
Emily Gember-Jacobson [Fri, 8 May 2015 18:11:51 +0000 (13:11 -0500)]
Added insnCodeGen::modifyDisp, which modifies the displacement encoded in an instruction.
Emily Gember-Jacobson [Fri, 8 May 2015 17:37:21 +0000 (12:37 -0500)]
Implement stack modifications.
Stack modifications allow users to modify the stack frame layout by
inserting, removing, or moving stack space. Stack modifications are
based on the abstraction of stack locations, not the contents of
these locations. Further, we provide the ability to insert
stack canaries or to randomize the DWARF-provided local variables
in a stack frame.
Emily Gember-Jacobson [Fri, 8 May 2015 17:42:01 +0000 (12:42 -0500)]
Define >, <=, >=, and - operators for StackAnalysis::Height
Emily Gember-Jacobson [Fri, 8 May 2015 15:55:35 +0000 (10:55 -0500)]
Add several fortran functions to list of known non-returning functions
Emily Gember-Jacobson [Fri, 8 May 2015 15:47:55 +0000 (10:47 -0500)]
Record the frameOffset as an absolute offset in VariableLocation (in addition to the existing relative offset)
Emily Gember-Jacobson [Fri, 8 May 2015 15:43:51 +0000 (10:43 -0500)]
Add flag to codeGen class to generate instrumentation code without baseTramp saves and restores.