dyninst.git
4 years agoUpdated manuals to 9.0 cover page
Bill Williams [Tue, 4 Aug 2015 15:40:20 +0000 (10:40 -0500)]
Updated manuals to 9.0 cover page

4 years agoSymtab manual bug fixes: escape all underscores
Bill Williams [Mon, 3 Aug 2015 22:24:12 +0000 (17:24 -0500)]
Symtab manual bug fixes: escape all underscores

4 years agoSymtab manual updates.
Bill Williams [Wed, 29 Jul 2015 16:23:53 +0000 (11:23 -0500)]
Symtab manual updates.

4 years agoProper support for extended ELF machine types.
Bill Williams [Wed, 29 Jul 2015 16:23:33 +0000 (11:23 -0500)]
Proper support for extended ELF machine types.

4 years agocommon: try process_vm_readv/writev for Linux bulk access
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.

4 years agoFix typo in filling loop entries
Xiaozhu Meng [Mon, 3 Aug 2015 06:14:27 +0000 (01:14 -0500)]
Fix typo in filling loop entries

4 years agoCurrent implementation of non-returning function analysis
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.

4 years agocommon: rewrite caching in Linux P_cplus_demangle()
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.

4 years agoFencepost error fixed, from John Mellor-Crummey at Rice.
Bill Williams [Fri, 24 Jul 2015 19:48:55 +0000 (14:48 -0500)]
Fencepost error fixed, from John Mellor-Crummey at Rice.

4 years agoICC detection enabled under CMake, from Rashawn Knapp at Intel.
Bill Williams [Fri, 24 Jul 2015 19:48:35 +0000 (14:48 -0500)]
ICC detection enabled under CMake, from Rashawn Knapp at Intel.

4 years agoParseAPI manual update
Xiaozhu Meng [Mon, 27 Jul 2015 04:10:43 +0000 (23:10 -0500)]
ParseAPI manual update

4 years agoWindow build fix
Xiaozhu Meng [Sat, 25 Jul 2015 15:35:00 +0000 (10:35 -0500)]
Window build fix

4 years agoThis commit merges my various changes in parsing to master,
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

4 years agoAlways use cache in slicing, but clear the cache when jump table is reoslved on one...
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

4 years agodataflowAPI: use boost::bind() instead of bind<void>()
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.

4 years agoDebug output cleanning and ParseAPI manual update
Xiaozhu Meng [Thu, 23 Jul 2015 15:29:34 +0000 (10:29 -0500)]
Debug output cleanning and ParseAPI manual update

4 years agoPriorize existing call fallthrough edges over any jumps to increase the effectiveness...
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

4 years agoIf a non-function symbol points to code sections, then the pointed range is not code...
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

4 years agoChange slice interface to allow choose whether control flow dependenc or stack analys...
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

4 years agoHandle aliasing
Xiaozhu Meng [Tue, 21 Jul 2015 14:41:32 +0000 (09:41 -0500)]
Handle aliasing

4 years agoFix conflicts between caching and stopping slicing
Xiaozhu Meng [Tue, 21 Jul 2015 02:09:14 +0000 (21:09 -0500)]
Fix conflicts between caching and stopping slicing

4 years agoFix semantics of invert operation
Xiaozhu Meng [Thu, 16 Jul 2015 20:18:19 +0000 (15:18 -0500)]
Fix semantics of invert operation

4 years agoHandle instruction xchg, where the relations between the oeprands are reversed
Xiaozhu Meng [Wed, 15 Jul 2015 21:43:54 +0000 (16:43 -0500)]
Handle instruction xchg, where the relations between the oeprands are reversed

4 years agoWhen an indirect jump is deferred for analysis, we may need to look for the correct...
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

4 years agoIf we ask about ABI on a register we do not care about in ABI, like st1, we should...
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

4 years agofix handling thunks
Xiaozhu Meng [Tue, 14 Jul 2015 03:30:22 +0000 (22:30 -0500)]
fix handling thunks

4 years agoOne byte read can produce bound [0,255], but it is possible that an one byte read...
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.

4 years agoMerge branch 'master' into parsing
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

4 years agoBSF and BSR instructions can produce bounds for jump tables
Xiaozhu Meng [Mon, 13 Jul 2015 02:56:42 +0000 (21:56 -0500)]
BSF and BSR instructions can produce bounds for jump tables

4 years agoDefensive mode debugging fixes.
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.

4 years agoDefensive mode dynamic fixes.
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.

4 years agoVarious defensive mode fixes.
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.

4 years agoMake PC's getThreadLocalAddress interface const
Matthew LeGendre [Mon, 29 Jun 2015 17:50:36 +0000 (10:50 -0700)]
Make PC's getThreadLocalAddress interface const

4 years agoRevert to default-off logs
Bill Williams [Wed, 24 Jun 2015 19:37:39 +0000 (14:37 -0500)]
Revert to default-off logs

4 years agoDon't add names (notably, from DWARF) that duplicate substrings of symbol-based names.
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.

4 years agoDe-static some unnecessary statics
Bill Williams [Wed, 17 Jun 2015 19:20:00 +0000 (14:20 -0500)]
De-static some unnecessary statics

4 years agoRemove dead code
Bill Williams [Wed, 17 Jun 2015 19:19:31 +0000 (14:19 -0500)]
Remove dead code

4 years agoMore inline fixes
Bill Williams [Tue, 16 Jun 2015 19:17:54 +0000 (14:17 -0500)]
More inline fixes

4 years agoInline function handling: de-aggregate FunctionBase, add getName to functionBase...
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

4 years agoMerge branch 'master' of ssh://git.dyninst.org/pub/dyninst
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

4 years agoMerge branch 'temp'
SteveXiSong [Tue, 16 Jun 2015 21:32:23 +0000 (16:32 -0500)]
Merge branch 'temp'

4 years ago modified: dyninstAPI/src/ast.C
SteveXiSong [Tue, 16 Jun 2015 21:28:50 +0000 (16:28 -0500)]
modified:   dyninstAPI/src/ast.C

4 years agoMerge branch 'master' of /p/paradyn/development/xmeng/dyninstapi/dyninst into HEAD
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

4 years agoMerge branch 'master' of /p/paradyn/development/xmeng/dyninstapi/dyninst
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

4 years agoMerge branch 'master' of ssh://git.dyninst.org/pub/dyninst
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

4 years agoMerge branch 'master' into parsing
Xiaozhu Meng [Wed, 10 Jun 2015 18:55:01 +0000 (13:55 -0500)]
Merge branch 'master' into parsing

4 years agoMerge branch 'IndirectControlFlow' 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

4 years agoupdate sw
Steve [Tue, 9 Jun 2015 03:53:08 +0000 (22:53 -0500)]
update sw

4 years agoMerge branch 'arm64' of feta.cs.wisc.edu:/p/paradyn/development/xi/Dyninst/dyninst...
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

4 years agofix registerMap.c
SteveXiSong [Fri, 5 Jun 2015 19:47:23 +0000 (14:47 -0500)]
fix registerMap.c

4 years agoMerge branch 'arm64' of feta.cs.wisc.edu:/p/paradyn/development/xi/Dyninst/dyninst...
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

4 years agoremove warning
SteveXiSong [Wed, 3 Jun 2015 21:08:21 +0000 (16:08 -0500)]
remove warning

4 years agoremove warning
SteveXiSong [Wed, 3 Jun 2015 21:02:37 +0000 (16:02 -0500)]
remove warning

4 years agoremove warning
SteveXiSong [Wed, 3 Jun 2015 18:27:03 +0000 (13:27 -0500)]
remove warning

4 years agoMerge branch 'arm64' of feta.cs.wisc.edu:/p/paradyn/development/xi/Dyninst/dyninst...
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

4 years agocomment #error
SteveXiSong [Wed, 3 Jun 2015 16:36:46 +0000 (11:36 -0500)]
comment #error

4 years agoresolve conflicts
Steve [Wed, 3 Jun 2015 16:04:54 +0000 (11:04 -0500)]
resolve conflicts

4 years agofix warning defines
SteveXiSong [Wed, 3 Jun 2015 15:53:06 +0000 (10:53 -0500)]
fix warning defines

4 years agomodified for swk
Steve [Sat, 30 May 2015 03:40:41 +0000 (22:40 -0500)]
modified for swk

4 years agochange struct to classes
SteveXiSong [Fri, 22 May 2015 19:32:29 +0000 (14:32 -0500)]
change struct to classes

4 years agofixes some arm compile issues on x86
SteveXiSong [Fri, 22 May 2015 19:01:04 +0000 (14:01 -0500)]
fixes some arm compile issues on x86

4 years agoMove x86-specific emitters out of Emitter class
Emily Gember-Jacobson [Fri, 22 May 2015 16:47:50 +0000 (11:47 -0500)]
Move x86-specific emitters out of Emitter class

4 years agoDefine cap_stack_mods and properly limit stack mods to x86,x86_64
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

4 years agopull from feta
Steve [Fri, 22 May 2015 16:20:42 +0000 (11:20 -0500)]
pull from feta

4 years agorebased and tests passes
Steve [Fri, 22 May 2015 16:14:04 +0000 (11:14 -0500)]
rebased and tests passes

4 years agoTemporary aarch64 fixes
Steve [Thu, 21 May 2015 22:52:08 +0000 (17:52 -0500)]
Temporary aarch64 fixes

4 years agoproccontrol: all tests passed. Solution II is used to solve arm kernel bug.
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.

4 years agoadded branch reg for emulated ss
Steve [Mon, 4 May 2015 18:54:59 +0000 (13:54 -0500)]
added branch reg for emulated ss

4 years agoInitial cmake fixes
Bill Williams [Tue, 10 Mar 2015 18:27:00 +0000 (13:27 -0500)]
Initial cmake fixes

4 years agoproccontrol: all tests passed. Solution II is used to solve arm kernel bug.
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.

4 years agosolved proccontrol mt bug by simple solution.
Steve [Fri, 15 May 2015 16:14:05 +0000 (11:14 -0500)]
solved proccontrol mt bug by simple solution.

4 years agoadded branch reg for emulated ss
Steve [Mon, 4 May 2015 18:54:59 +0000 (13:54 -0500)]
added branch reg for emulated ss

4 years agopc works in sp, mp mode, but mt mode failed
Steve [Mon, 27 Apr 2015 22:01:15 +0000 (17:01 -0500)]
pc works in sp, mp mode, but mt mode failed

4 years ago new file: .syntastic_cpp_config
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

4 years ago modified: common/CMakeLists.txt
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

4 years ago modified: cmake/cap_arch_def.cmake
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

4 years ago modified: symtabAPI/CMakeLists.txt
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

4 years agoInitial cmake fixes
Bill Williams [Tue, 10 Mar 2015 18:27:00 +0000 (13:27 -0500)]
Initial cmake fixes

4 years agopatch 2
SteveXiSong [Fri, 22 May 2015 02:00:23 +0000 (21:00 -0500)]
patch 2

4 years agoTesting stack mods build fix
SteveXiSong [Thu, 21 May 2015 22:40:54 +0000 (17:40 -0500)]
Testing stack mods build fix

4 years agoproccontrol: all tests passed. Solution II is used to solve arm kernel bug.
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.

4 years agoHandle complex LEA instructions in stack analysis.
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.

4 years agoUpdate StackAnalysis::handleMov to handle non register-register moves.
Emily Gember-Jacobson [Fri, 8 May 2015 19:34:23 +0000 (14:34 -0500)]
Update StackAnalysis::handleMov to handle non register-register moves.

4 years agoUpdated StackAnalysis::handleAddSub to also operate on non-SP registers.
Emily Gember-Jacobson [Fri, 8 May 2015 19:32:09 +0000 (14:32 -0500)]
Updated StackAnalysis::handleAddSub to also operate on non-SP registers.

4 years agoRedefine StackAnalysis::handleDefault to round a register to TOP or BOTTOM,
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.

4 years agoModify StackAnalysis::findDefinedHeights to include registers with a height of 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.

4 years agoIn stack analysis, add handlers for sign- and zero-extend instructions.
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.

4 years agoExtend stack analysis transfer functions to handle targets that should be
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

4 years agoRedefine delta and abs to be of type long in StackAnalysis::TransferFunc
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

4 years agoBug fixes for arithmetic operations for StackAnalysis::Height
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.

4 years agoAdd += operator for StackAnalysis::Height
Emily Gember-Jacobson [Fri, 8 May 2015 18:35:52 +0000 (13:35 -0500)]
Add += operator for StackAnalysis::Height

4 years agoAdd sensitivity analysis for stack modifications.
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).

4 years agoAdded insnCodeGen::modifyDisp, which modifies the displacement encoded in an instruction.
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.

4 years agoImplement stack modifications.
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.

4 years agoDefine >, <=, >=, and - operators for StackAnalysis::Height
Emily Gember-Jacobson [Fri, 8 May 2015 17:42:01 +0000 (12:42 -0500)]
Define >, <=, >=, and - operators for StackAnalysis::Height

4 years agoAdd several fortran functions to list of known non-returning functions
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

4 years agoRecord the frameOffset as an absolute offset in VariableLocation (in addition to...
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)

4 years agoAdd flag to codeGen class to generate instrumentation code without baseTramp saves...
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.

4 years agoMove emitLEA into the Emitter class
Emily Gember-Jacobson [Fri, 8 May 2015 15:32:31 +0000 (10:32 -0500)]
Move emitLEA into the Emitter class

4 years agoAdd emit functions to handle various operations with segment registers
Emily Gember-Jacobson [Fri, 8 May 2015 15:17:23 +0000 (10:17 -0500)]
Add emit functions to handle various operations with segment registers