[DynInst_API:] [dyninst/dyninst] 26a67d: Support for conversion from Instruction API object...


Date: Thu, 21 Jul 2016 13:39:47 -0700
From: ssunny7 <shahsunny712@xxxxxxxxx>
Subject: [DynInst_API:] [dyninst/dyninst] 26a67d: Support for conversion from Instruction API object...
  Branch: refs/heads/master
  Home:   https://github.com/dyninst/dyninst
  Commit: 26a67de8099a521a37acee996d70ef594c924a32
      https://github.com/dyninst/dyninst/commit/26a67de8099a521a37acee996d70ef594c924a32
  Author: Sunny Shah <shah28@xxxxxxxx>
  Date:   2016-06-07 (Tue, 07 Jun 2016)

  Changed paths:
    M common/src/dyn_regs.C
    A dataflowAPI/rose/RegisterDescriptor.h
    A dataflowAPI/rose/SgAsmArmv8Instruction.h
    M dataflowAPI/rose/SgAsmExpression.h
    M dataflowAPI/rose/SgAsmInstruction.h
    M dataflowAPI/rose/SgAsmOperandList.h
    M dataflowAPI/rose/SgAsmType.h
    M dataflowAPI/rose/conversions.h
    M dataflowAPI/rose/integerOps.h
    A dataflowAPI/rose/util/Assert.C
    A dataflowAPI/rose/util/Assert.h
    A dataflowAPI/rose/util/BitVector.h
    A dataflowAPI/rose/util/BitVectorSupport.h
    A dataflowAPI/rose/util/Interval.h
    A dataflowAPI/rose/util/Map.h
    A dataflowAPI/rose/util/Message.C
    A dataflowAPI/rose/util/Message.h
    A dataflowAPI/rose/util/Optional.h
    A dataflowAPI/rose/util/Sawyer.C
    A dataflowAPI/rose/util/Sawyer.h
    A dataflowAPI/rose/util/SharedPointer.h
    A dataflowAPI/rose/util/Synchronization.C
    A dataflowAPI/rose/util/Synchronization.h
    A dataflowAPI/rose/util/WarningsOff.h
    A dataflowAPI/rose/util/WarningsRestore.h
    M dataflowAPI/src/ExpressionConversionVisitor.C
    M dataflowAPI/src/RoseImpl.C
    M dataflowAPI/src/RoseInsnFactory.C
    M dataflowAPI/src/RoseInsnFactory.h
    M dataflowAPI/src/convertOpcodes.C
    A external/rose/armv8InstructionEnum.h
    M external/rose/rose-compat.h
    A external/variantComparer.py
    M parseAPI/CMakeLists.txt

  Log Message:
  -----------
  Support for conversion from Instruction API objects to Rose SgAsmInstruction objects for ARMv8

This commit is the first in a branch that will contain all changes for enabling the conversion from ARMv8 Instruction API objects to SgAsmInstruction objects. Since ROSE doesn't support ARMv8, the instruction representation for it has been added by extending SgAsmInstruction. getROSERegister is also modified to map Dyninst registers to ROSE ARMv8 registers, which have again been newly added and are defined in the armv8InstructionEnum file. ROSE instruction factory for ARMv8 does not perform any processing to Instruction API operands when performing the conversion (unlike x86 and Power) -- this is primarily because there is no existing ARMv8 semantics to conform to.

This commit also brings in lots of changes to the ROSE interface for representing an instruction and its parts:
* SgAsm*ValueExpression types are now replaces with SgAsm(Integer/Float)ValueExpression types; SgAsmType* have been replaced by SgAsmType(Integer/Float). The old classes remain to support the existing x86/Power semantics.
* Several changes are made to the classes that were already present. These changes support existing semantics and will also work for ARMv8.
* New classes have been added for representation of expressions.
* Several classes in the Sawyer namespace of ROSE have been added -- these are used in the newly introduced Sg* classes, and will also be used for ARM semantics.
* ROSE's new representation for registers uses RegisterDescriptor and a new class for register expressions (SgAsmDirectRegisterExoression).
* The new types are used based on a check on the architecture.
* Opcodes for ARMv8 have the same name in ROSE as in Dyninst, except that the name is prefixed by the string "rose_".


  Commit: ae5df2f421f85e049a9ee7b4be6851ee9be9d381
      https://github.com/dyninst/dyninst/commit/ae5df2f421f85e049a9ee7b4be6851ee9be9d381
  Author: Sunny Shah <shah28@xxxxxxxx>
  Date:   2016-06-15 (Wed, 15 Jun 2016)

  Changed paths:
    M common/src/dyn_regs.C
    A dataflowAPI/rose/RegisterDescriptor.h
    A dataflowAPI/rose/SgAsmArmv8Instruction.h
    M dataflowAPI/rose/SgAsmExpression.h
    M dataflowAPI/rose/SgAsmInstruction.h
    M dataflowAPI/rose/SgAsmOperandList.h
    M dataflowAPI/rose/SgAsmType.h
    M dataflowAPI/rose/conversions.h
    M dataflowAPI/rose/integerOps.h
    A dataflowAPI/rose/util/Assert.C
    A dataflowAPI/rose/util/Assert.h
    A dataflowAPI/rose/util/BitVector.h
    A dataflowAPI/rose/util/BitVectorSupport.h
    A dataflowAPI/rose/util/Interval.h
    A dataflowAPI/rose/util/Map.h
    A dataflowAPI/rose/util/Message.C
    A dataflowAPI/rose/util/Message.h
    A dataflowAPI/rose/util/Optional.h
    A dataflowAPI/rose/util/Sawyer.C
    A dataflowAPI/rose/util/Sawyer.h
    A dataflowAPI/rose/util/SharedPointer.h
    A dataflowAPI/rose/util/Synchronization.C
    A dataflowAPI/rose/util/Synchronization.h
    A dataflowAPI/rose/util/WarningsOff.h
    A dataflowAPI/rose/util/WarningsRestore.h
    M dataflowAPI/src/ExpressionConversionVisitor.C
    M dataflowAPI/src/RoseImpl.C
    M dataflowAPI/src/RoseInsnFactory.C
    M dataflowAPI/src/RoseInsnFactory.h
    M dataflowAPI/src/convertOpcodes.C
    A external/rose/armv8InstructionEnum.h
    M external/rose/rose-compat.h
    A external/variantComparer.py
    M parseAPI/CMakeLists.txt

  Log Message:
  -----------
  Merge branch 'arm64/feature/semantics_roseconvert'


  Commit: 558227822b7c7e185a4e1b08dbd62322567c24fe
      https://github.com/dyninst/dyninst/commit/558227822b7c7e185a4e1b08dbd62322567c24fe
  Author: Sunny Shah <shah28@xxxxxxxx>
  Date:   2016-06-27 (Mon, 27 Jun 2016)

  Changed paths:
    A dataflowAPI/rose/ExtentMap.C
    A dataflowAPI/rose/ExtentMap.h
    M dataflowAPI/rose/SgAsmExpression.h
    M dataflowAPI/rose/SgAsmInstruction.h
    M dataflowAPI/rose/SgAsmType.h
    M dataflowAPI/rose/SgAsmx86Instruction.h
    M dataflowAPI/rose/conversions.h
    A dataflowAPI/rose/rangemap.C
    A dataflowAPI/rose/rangemap.h
    A dataflowAPI/rose/semantics/BaseSemantics2.C
    A dataflowAPI/rose/semantics/BaseSemantics2.h
    A dataflowAPI/rose/semantics/BinarySymbolicExpr.C
    A dataflowAPI/rose/semantics/BinarySymbolicExpr.h
    A dataflowAPI/rose/semantics/ByteOrder.C
    A dataflowAPI/rose/semantics/ByteOrder.h
    A dataflowAPI/rose/semantics/ConcreteSemantics2.C
    A dataflowAPI/rose/semantics/ConcreteSemantics2.h
    A dataflowAPI/rose/semantics/DispatcherARM64.C
    A dataflowAPI/rose/semantics/DispatcherARM64.h
    A dataflowAPI/rose/semantics/MemoryMap.C
    A dataflowAPI/rose/semantics/MemoryMap.h
    A dataflowAPI/rose/semantics/RegisterParts.C
    A dataflowAPI/rose/semantics/RegisterParts.h
    A dataflowAPI/rose/semantics/RegisterStateGeneric.C
    A dataflowAPI/rose/semantics/RegisterStateGeneric.h
    A dataflowAPI/rose/semantics/Registers.C
    A dataflowAPI/rose/semantics/Registers.h
    A dataflowAPI/rose/semantics/SMTSolver.C
    A dataflowAPI/rose/semantics/SMTSolver.h
    A dataflowAPI/rose/util/Access.h
    A dataflowAPI/rose/util/AddressMap.h
    A dataflowAPI/rose/util/AddressSegment.h
    A dataflowAPI/rose/util/AllocatingBuffer.h
    A dataflowAPI/rose/util/Attribute.C
    A dataflowAPI/rose/util/Attribute.h
    A dataflowAPI/rose/util/BiMap.h
    A dataflowAPI/rose/util/Buffer.h
    A dataflowAPI/rose/util/Callbacks.h
    A dataflowAPI/rose/util/Combinatorics.C
    A dataflowAPI/rose/util/Combinatorics.h
    A dataflowAPI/rose/util/Exception.h
    A dataflowAPI/rose/util/FileSystem.C
    A dataflowAPI/rose/util/FileSystem.h
    A dataflowAPI/rose/util/FormatRestorer.h
    A dataflowAPI/rose/util/IntervalMap.h
    A dataflowAPI/rose/util/IntervalSet.h
    A dataflowAPI/rose/util/IntervalSetMap.h
    A dataflowAPI/rose/util/LinearCongruentialGenerator.C
    A dataflowAPI/rose/util/LinearCongruentialGenerator.h
    A dataflowAPI/rose/util/MappedBuffer.h
    A dataflowAPI/rose/util/NullBuffer.h
    A dataflowAPI/rose/util/PoolAllocator.h
    A dataflowAPI/rose/util/Set.h
    M dataflowAPI/rose/util/SharedPointer.h
    A dataflowAPI/rose/util/SmallObject.C
    A dataflowAPI/rose/util/SmallObject.h
    A dataflowAPI/rose/util/StaticBuffer.h
    A dataflowAPI/rose/util/Stopwatch.C
    A dataflowAPI/rose/util/Stopwatch.h
    A dataflowAPI/rose/util/StringUtility.C
    A dataflowAPI/rose/util/StringUtility.h
    A dataflowAPI/rose/util/rose_getline.C
    A dataflowAPI/rose/util/rose_getline.h
    A dataflowAPI/rose/util/rose_strtoull.C
    A dataflowAPI/rose/util/rose_strtoull.h
    M dataflowAPI/src/RoseImpl.C
    A external/rose/rose_msvc.h
    M parseAPI/CMakeLists.txt

  Log Message:
  -----------
  Integration of ROSE's new semantics framework with Dyninst

This commit brings in and sets up all the files required to use the new ROSE semantics framework from within Dyninst. The starting point for this was the src/midend/binaryAnalyses/instructionSemantics folder within ROSE's source tree. All the other files have been added because semantics directlyu or indirectly depends on them.

After adding the file to the Dyninst source, several changes may or may not have been made to it. Most of the changes revolve around updating the include paths and removing any macros used by ROSE but not required by Dyninst. Other minor changes have also been made based on build errors/warnings.

Currently, he build succeeds but with a ton of warnings. I've suppressed them for the time being.

By doing this, both old and new instruction semantics should ideally be able to co-exist, although this hasn't been tested yet.


  Commit: 4e4f312fd963725767f21988e8ad07809faab30e
      https://github.com/dyninst/dyninst/commit/4e4f312fd963725767f21988e8ad07809faab30e
  Author: Sunny Shah <shah28@xxxxxxxx>
  Date:   2016-06-27 (Mon, 27 Jun 2016)

  Changed paths:
    M .gitignore
    M .travis.yml
    R ALL_BUILD.vcxproj
    M CMakeLists.txt
    R Dyninst.sln
    R DyninstAPI.sln
    R INSTALL.vcxproj
    R Installer/Installer.vdproj
    R ZERO_CHECK.vcxproj
    R cmake/Modules/FindDIASDK.cmake
    M cmake/packages.cmake
    M cmake/shared.cmake
    M common/CMakeLists.txt
    R common/INSTALL.vcxproj
    R common/common.sln
    R common/common.vcproj
    R common/common.vcxproj
    M common/h/entryIDs.h
    M common/h/util.h
    M common/src/Types.C
    M common/src/arch-x86.C
    M common/src/arch-x86.h
    M common/src/serialize-bin.C
    M common/src/util.C
    M dataflowAPI/rose/x86_64InstructionSemantics.h
    M dataflowAPI/src/RoseInsnFactory.C
    R dyninstAPI/INSTALL.vcxproj
    M dyninstAPI/doc/dyninstAPI.doc
    M dyninstAPI/doc/dyninstAPI.pdf
    R dyninstAPI/dyninstAPI.vcproj
    R dyninstAPI/dyninstAPI.vcxproj
    M dyninstAPI/src/BPatch_type.C
    M dyninstAPI/src/StackMod/StackLocation.h
    M dyninstAPI/src/addressSpace.C
    M dyninstAPI/src/addressSpace.h
    M dyninstAPI/src/debug.C
    M dyninstAPI/src/image.C
    M dyninstAPI/src/pdwinnt.C
    R dyninstAPI_RT/DyninstAPI_RT.vcproj
    R dyninstAPI_RT/DyninstAPI_RT.vcxproj
    R dyninstAPI_RT/INSTALL.vcxproj
    R dyninstAPI_RT/dyninstAPI_RT_static.vcxproj
    M dyninstAPI_RT/src/RTcommon.c
    M dyninstAPI_RT/src/RTheap.c
    A external/cvconst/LICENSE
    A external/cvconst/README
    A external/cvconst/cvconst.h
    R instructionAPI/INSTALL.vcxproj
    R instructionAPI/instructionAPI.vcproj
    R instructionAPI/instructionAPI.vcxproj
    M instructionAPI/src/InstructionDecoder-x86.C
    M instructionAPI/src/InstructionDecoder-x86.h
    R parseAPI/INSTALL.vcxproj
    M parseAPI/h/CFGModifier.h
    M parseAPI/h/CodeSource.h
    M parseAPI/h/InstructionSource.h
    R parseAPI/parseAPI.vcproj
    R parseAPI/parseAPI.vcxproj
    M parseAPI/src/BoundFactCalculator.C
    M parseAPI/src/BoundFactData.C
    M parseAPI/src/BoundFactData.h
    M parseAPI/src/IndirectASTVisitor.C
    M parseAPI/src/IndirectASTVisitor.h
    M parseAPI/src/IndirectAnalyzer.C
    M parseAPI/src/JumpTablePred.C
    M parseAPI/src/JumpTablePred.h
    M parseAPI/src/ParseData.C
    M parseAPI/src/Parser.C
    M parseAPI/src/SymtabCodeSource.C
    R patchAPI/INSTALL.vcxproj
    R patchAPI/patchAPI.vcproj
    R patchAPI/patchAPI.vcxproj
    M proccontrol/h/EventType.h
    R proccontrol/pcontrol.vcxproj
    R proccontrol/proccontrol.vcproj
    R proccontrol/proccontrol.vcxproj
    R proccontrol/proccontrol.vcxproj.filters
    M proccontrol/src/GeneratorWindows.C
    M proccontrol/src/loadLibrary/injector.C
    M proccontrol/src/windows_process.C
    M proccontrol/src/windows_process.h
    R stackwalk/INSTALL.vcxproj
    M stackwalk/h/frame.h
    M stackwalk/src/frame.C
    R stackwalk/stackwalk.vcproj
    R stackwalk/stackwalk.vcxproj
    R symtabAPI/INSTALL.vcxproj
    R symtabAPI/SymtabAPI.sln
    M symtabAPI/src/Object-elf.C
    M symtabAPI/src/Object-nt.C
    M symtabAPI/src/Type.C
    M symtabAPI/src/dwarfWalker.C
    M symtabAPI/src/dwarfWalker.h
    R symtabAPI/symtabAPI.vcproj
    R symtabAPI/symtabAPI.vcxproj

  Log Message:
  -----------
  Merge branch 'master' of https://github.com/dyninst/dyninst


  Commit: acbcadd154b29fea3e6ec6b5eb8bb0f2689328e4
      https://github.com/dyninst/dyninst/commit/acbcadd154b29fea3e6ec6b5eb8bb0f2689328e4
  Author: Sunny Shah <shah28@xxxxxxxx>
  Date:   2016-06-29 (Wed, 29 Jun 2016)

  Changed paths:
    M .travis.yml
    M common/src/arch-x86.C
    M common/src/arch-x86.h
    M dyninstAPI/src/codegen-x86.C
    M instructionAPI/src/InstructionDecoder-x86.C
    M proccontrol/src/irpc.C
    M symtabAPI/src/emitElf.C
    M symtabAPI/src/emitElfStatic.C

  Log Message:
  -----------
  Merge branch 'master' of https://github.com/dyninst/dyninst


  Commit: 687c6f5f9f8a32f7a9e6fc0f2fff657e653a919f
      https://github.com/dyninst/dyninst/commit/687c6f5f9f8a32f7a9e6fc0f2fff657e653a919f
  Author: Sunny Shah <shah28@xxxxxxxx>
  Date:   2016-06-29 (Wed, 29 Jun 2016)

  Changed paths:
    A dataflowAPI/rose/ExtentMap.C
    A dataflowAPI/rose/ExtentMap.h
    M dataflowAPI/rose/SgAsmExpression.h
    M dataflowAPI/rose/SgAsmInstruction.h
    M dataflowAPI/rose/SgAsmType.h
    M dataflowAPI/rose/SgAsmx86Instruction.h
    M dataflowAPI/rose/conversions.h
    A dataflowAPI/rose/rangemap.C
    A dataflowAPI/rose/rangemap.h
    A dataflowAPI/rose/semantics/BaseSemantics2.C
    A dataflowAPI/rose/semantics/BaseSemantics2.h
    A dataflowAPI/rose/semantics/BinarySymbolicExpr.C
    A dataflowAPI/rose/semantics/BinarySymbolicExpr.h
    A dataflowAPI/rose/semantics/ByteOrder.C
    A dataflowAPI/rose/semantics/ByteOrder.h
    A dataflowAPI/rose/semantics/ConcreteSemantics2.C
    A dataflowAPI/rose/semantics/ConcreteSemantics2.h
    A dataflowAPI/rose/semantics/DispatcherARM64.C
    A dataflowAPI/rose/semantics/DispatcherARM64.h
    A dataflowAPI/rose/semantics/MemoryMap.C
    A dataflowAPI/rose/semantics/MemoryMap.h
    A dataflowAPI/rose/semantics/RegisterParts.C
    A dataflowAPI/rose/semantics/RegisterParts.h
    A dataflowAPI/rose/semantics/RegisterStateGeneric.C
    A dataflowAPI/rose/semantics/RegisterStateGeneric.h
    A dataflowAPI/rose/semantics/Registers.C
    A dataflowAPI/rose/semantics/Registers.h
    A dataflowAPI/rose/semantics/SMTSolver.C
    A dataflowAPI/rose/semantics/SMTSolver.h
    A dataflowAPI/rose/util/Access.h
    A dataflowAPI/rose/util/AddressMap.h
    A dataflowAPI/rose/util/AddressSegment.h
    A dataflowAPI/rose/util/AllocatingBuffer.h
    A dataflowAPI/rose/util/Attribute.C
    A dataflowAPI/rose/util/Attribute.h
    A dataflowAPI/rose/util/BiMap.h
    A dataflowAPI/rose/util/Buffer.h
    A dataflowAPI/rose/util/Callbacks.h
    A dataflowAPI/rose/util/Combinatorics.C
    A dataflowAPI/rose/util/Combinatorics.h
    A dataflowAPI/rose/util/Exception.h
    A dataflowAPI/rose/util/FileSystem.C
    A dataflowAPI/rose/util/FileSystem.h
    A dataflowAPI/rose/util/FormatRestorer.h
    A dataflowAPI/rose/util/IntervalMap.h
    A dataflowAPI/rose/util/IntervalSet.h
    A dataflowAPI/rose/util/IntervalSetMap.h
    A dataflowAPI/rose/util/LinearCongruentialGenerator.C
    A dataflowAPI/rose/util/LinearCongruentialGenerator.h
    A dataflowAPI/rose/util/MappedBuffer.h
    A dataflowAPI/rose/util/NullBuffer.h
    A dataflowAPI/rose/util/PoolAllocator.h
    A dataflowAPI/rose/util/Set.h
    M dataflowAPI/rose/util/SharedPointer.h
    A dataflowAPI/rose/util/SmallObject.C
    A dataflowAPI/rose/util/SmallObject.h
    A dataflowAPI/rose/util/StaticBuffer.h
    A dataflowAPI/rose/util/Stopwatch.C
    A dataflowAPI/rose/util/Stopwatch.h
    A dataflowAPI/rose/util/StringUtility.C
    A dataflowAPI/rose/util/StringUtility.h
    A dataflowAPI/rose/util/rose_getline.C
    A dataflowAPI/rose/util/rose_getline.h
    A dataflowAPI/rose/util/rose_strtoull.C
    A dataflowAPI/rose/util/rose_strtoull.h
    M dataflowAPI/src/RoseImpl.C
    A external/rose/rose_msvc.h
    M parseAPI/CMakeLists.txt

  Log Message:
  -----------
  Merge branch 'arm64/feature/semantics_importnew'


  Commit: 8028c5333da9716f85cbf84c80cc4b75324529f0
      https://github.com/dyninst/dyninst/commit/8028c5333da9716f85cbf84c80cc4b75324529f0
  Author: Sunny Shah <shah28@xxxxxxxx>
  Date:   2016-06-30 (Thu, 30 Jun 2016)

  Changed paths:
    M dataflowAPI/rose/semantics/DispatcherARM64.h
    M dataflowAPI/src/SymEval.C
    M dataflowAPI/src/SymbolicExpansion.C
    M dataflowAPI/src/SymbolicExpansion.h

  Log Message:
  -----------
  Initialize semantics for use with ARM64

Before the dispatcher for ARM64 can be called for instruction processing, the value type, register state, memory state and RISC operators need to be initialized. Ideally, these should be specific to Dyninst's SymEvalPolicy. That policy, however, needs to be re-written to work with the new semantics - this hasn't been done yet. Thus the current initializations of the type, states and operators use the base types (defined in BaseSemantics2.h) and will later by replaced by concretized versions.


  Commit: f9dfca3b19aaba4270d11c64a74c2e11ece7046a
      https://github.com/dyninst/dyninst/commit/f9dfca3b19aaba4270d11c64a74c2e11ece7046a
  Author: Sunny Shah <shah28@xxxxxxxx>
  Date:   2016-07-01 (Fri, 01 Jul 2016)

  Changed paths:
    M dataflowAPI/rose/semantics/BaseSemantics2.h
    A dataflowAPI/rose/semantics/SymEvalSemantics.C
    A dataflowAPI/rose/semantics/SymEvalSemantics.h

  Log Message:
  -----------
  Class declarations for SymEvalSemantics

SymEvalPolicy is now called "SymEvalSemantics" - in line with the terminology of the new semantics framework. Using this requires the implementation of 4 main classes - SValue (the value type), RegisterState, MemoryState and RiscOperators. All of these inherit from their respective definitions in BaseSemantics2.h.

Everything from the old policy (eg. SymEvalPolicy) needs to be mapped to these 4 classes. Currently, the implementation of SValue is mostly complete (a couple methods are yet to be implemented and few others need a little more thought) and declarations for some methods in RiscOperators have been added.


  Commit: 6e09e048f49e101d23e92099b51876a251faa336
      https://github.com/dyninst/dyninst/commit/6e09e048f49e101d23e92099b51876a251faa336
  Author: Sunny Shah <shah28@xxxxxxxx>
  Date:   2016-07-05 (Tue, 05 Jul 2016)

  Changed paths:
    M dataflowAPI/rose/semantics/SymEvalSemantics.h

  Log Message:
  -----------
  Added definitions/declarations of methods for the ARM64 register state


  Commit: cde790e8ffc56cc1ce5f644e794575817e3c36ad
      https://github.com/dyninst/dyninst/commit/cde790e8ffc56cc1ce5f644e794575817e3c36ad
  Author: Sunny Shah <shah28@xxxxxxxx>
  Date:   2016-07-08 (Fri, 08 Jul 2016)

  Changed paths:
    M dataflowAPI/rose/semantics/SymEvalSemantics.C
    M dataflowAPI/rose/semantics/SymEvalSemantics.h
    M dataflowAPI/src/SymEval.C
    M dataflowAPI/src/SymbolicExpansion.h

  Log Message:
  -----------
  Definitions of the register state, memory state and value type for SymEval semantics are now complete.

Also modified the intialization of all 4 required components in SymEval.C to use the new definitions instead of those in BaseSemantics2.h. The final RiscOperators object is thus setup to be usable by Dyninst.


  Commit: a8a83dac4d314361f76797c031a942a77894e6d6
      https://github.com/dyninst/dyninst/commit/a8a83dac4d314361f76797c031a942a77894e6d6
  Author: Sunny Shah <shah28@xxxxxxxx>
  Date:   2016-07-08 (Fri, 08 Jul 2016)

  Changed paths:
    M dataflowAPI/rose/semantics/SymEvalSemantics.C
    M dataflowAPI/rose/semantics/SymEvalSemantics.h

  Log Message:
  -----------
  Added definitions for about half of the pure virtual methods of the RiscOperators class.

Most of these micro-operations just translate to the creation of a unary/binary/ternary AST. Utility methods for creating such ASTs and then wrapping them around a SValuePtr are also added.


  Commit: f8ad50d8b1b691761f0eaf7ccf3f3dbbfe7a8ea3
      https://github.com/dyninst/dyninst/commit/f8ad50d8b1b691761f0eaf7ccf3f3dbbfe7a8ea3
  Author: Sunny Shah <shah28@xxxxxxxx>
  Date:   2016-07-08 (Fri, 08 Jul 2016)

  Changed paths:
    M dataflowAPI/rose/semantics/SymEvalSemantics.C
    M dataflowAPI/rose/semantics/SymEvalSemantics.h

  Log Message:
  -----------
  Added definitions for the remaining pure virtual members of the RiscOperators class for use by SymEvalSemantics.


  Commit: 322964ef7b002bb470f0d595c54c5ba84835490e
      https://github.com/dyninst/dyninst/commit/322964ef7b002bb470f0d595c54c5ba84835490e
  Author: Sunny Shah <shah28@xxxxxxxx>
  Date:   2016-07-12 (Tue, 12 Jul 2016)

  Changed paths:
    M dataflowAPI/rose/semantics/DispatcherARM64.h
    M dataflowAPI/rose/semantics/SymEvalSemantics.C
    M dataflowAPI/rose/semantics/SymEvalSemantics.h
    M dataflowAPI/src/SymEval.C
    M parseAPI/CMakeLists.txt

  Log Message:
  -----------
  Allow accessing StateARM64's Dyninst::Address member in RegisterStateARM64 for use by wrap().

When calling wrap() in RegisterStateARM64::readRegister(), the Dyninst::Address member passed in to StateARM64 needs to be accessed. A new RegisterStateARM64::readRegister is added which takes the RegisterDescriptor and the Dyninst::Address, and the default readRegister() causes an assert().

RiscOperators in SymEvalSemantics is renamed to RiscOperatorsARM64. Two methods in it were wrongly named -- they have been renamed to their correct versions.

Building of SymEvalSemantics is also enabled now.


  Commit: d1a7838d0cf39c6f38842802d6104cbcf93c4748
      https://github.com/dyninst/dyninst/commit/d1a7838d0cf39c6f38842802d6104cbcf93c4748
  Author: Sunny Shah <shah28@xxxxxxxx>
  Date:   2016-07-13 (Wed, 13 Jul 2016)

  Changed paths:
    M dataflowAPI/rose/semantics/SymEvalSemantics.C
    M dataflowAPI/rose/semantics/SymEvalSemantics.h

  Log Message:
  -----------
  Added implementation for RiscOperators::addWithCarries().


  Commit: e2b4d7cefa72cfdaf53b6d2b38f86977cdd6e26d
      https://github.com/dyninst/dyninst/commit/e2b4d7cefa72cfdaf53b6d2b38f86977cdd6e26d
  Author: Sunny Shah <shah28@xxxxxxxx>
  Date:   2016-07-13 (Wed, 13 Jul 2016)

  Changed paths:
    M dataflowAPI/rose/SgNode.h
    M dataflowAPI/rose/semantics/SMTSolver.h
    M dataflowAPI/rose/util/BitVectorSupport.h
    M dataflowAPI/src/RoseInsnFactory.C
    M dataflowAPI/src/RoseInsnFactory.h

  Log Message:
  -----------
  Fixed issues seen while building SymEvalSemantics.C.


  Commit: 7070044ee86101410cf82988b9259caaeb003333
      https://github.com/dyninst/dyninst/commit/7070044ee86101410cf82988b9259caaeb003333
  Author: Sunny Shah <shah28@xxxxxxxx>
  Date:   2016-07-13 (Wed, 13 Jul 2016)

  Changed paths:
    M dataflowAPI/rose/semantics/DispatcherARM64.C
    M dataflowAPI/src/SymbolicExpansion.C
    M dataflowAPI/src/SymbolicExpansion.h

  Log Message:
  -----------
  Create Dispatcher object during symbolic expansion for instruction processing

A BaseSemantics::Dispatcher object is created using the passed in RiscOperators object during the expansion of ARM64 instructions. A similar thing will be done for other architectures once they move to the new semantics.


  Commit: fdf66ae928e8ef5febaddbc031bf9491b9b2d620
      https://github.com/dyninst/dyninst/commit/fdf66ae928e8ef5febaddbc031bf9491b9b2d620
  Author: Sunny Shah <shah28@xxxxxxxx>
  Date:   2016-07-14 (Thu, 14 Jul 2016)

  Changed paths:
    M common/src/dyn_regs.C
    M dataflowAPI/rose/semantics/DispatcherARM64.C
    M dataflowAPI/rose/semantics/SymEvalSemantics.C
    M dataflowAPI/src/ExpressionConversionVisitor.C
    M parseAPI/src/IA_aarch64Details.C

  Log Message:
  -----------
  Fixed issues seen while parsing a simple ARM binary

* Direct register expressions need to have their type set - this is set to SgAsmIntegerType for now. The type's signed-ness is set to unsigned, but it shouldn't matter because the only place register expressions' types are used is when accessing the width.
* regPos wasn't being set correctly for ARM flags when converting a Dyninst register to a ROSE register.
* The correct jump table analysis functions are now being called for ARM binaries.


  Commit: 91be3b474cfd0f29cfe1eb2fb6ce21d9082f0bc5
      https://github.com/dyninst/dyninst/commit/91be3b474cfd0f29cfe1eb2fb6ce21d9082f0bc5
  Author: Sunny Shah <shah28@xxxxxxxx>
  Date:   2016-07-18 (Mon, 18 Jul 2016)

  Changed paths:
    M dataflowAPI/rose/SgAsmExpression.h

  Log Message:
  -----------
  set_type() in SgAsmExpression has to be virtual


  Commit: 96c7d97e8e1b32fdb6ae26c46477148de17a4674
      https://github.com/dyninst/dyninst/commit/96c7d97e8e1b32fdb6ae26c46477148de17a4674
  Author: ssunny7 <shahsunny712@xxxxxxxxx>
  Date:   2016-07-21 (Thu, 21 Jul 2016)

  Changed paths:
    M common/src/dyn_regs.C
    A dataflowAPI/rose/ExtentMap.C
    A dataflowAPI/rose/ExtentMap.h
    A dataflowAPI/rose/RegisterDescriptor.h
    A dataflowAPI/rose/SgAsmArmv8Instruction.h
    M dataflowAPI/rose/SgAsmExpression.h
    M dataflowAPI/rose/SgAsmInstruction.h
    M dataflowAPI/rose/SgAsmOperandList.h
    M dataflowAPI/rose/SgAsmType.h
    M dataflowAPI/rose/SgAsmx86Instruction.h
    M dataflowAPI/rose/SgNode.h
    M dataflowAPI/rose/conversions.h
    M dataflowAPI/rose/integerOps.h
    A dataflowAPI/rose/rangemap.C
    A dataflowAPI/rose/rangemap.h
    A dataflowAPI/rose/semantics/BaseSemantics2.C
    A dataflowAPI/rose/semantics/BaseSemantics2.h
    A dataflowAPI/rose/semantics/BinarySymbolicExpr.C
    A dataflowAPI/rose/semantics/BinarySymbolicExpr.h
    A dataflowAPI/rose/semantics/ByteOrder.C
    A dataflowAPI/rose/semantics/ByteOrder.h
    A dataflowAPI/rose/semantics/ConcreteSemantics2.C
    A dataflowAPI/rose/semantics/ConcreteSemantics2.h
    A dataflowAPI/rose/semantics/DispatcherARM64.C
    A dataflowAPI/rose/semantics/DispatcherARM64.h
    A dataflowAPI/rose/semantics/MemoryMap.C
    A dataflowAPI/rose/semantics/MemoryMap.h
    A dataflowAPI/rose/semantics/RegisterParts.C
    A dataflowAPI/rose/semantics/RegisterParts.h
    A dataflowAPI/rose/semantics/RegisterStateGeneric.C
    A dataflowAPI/rose/semantics/RegisterStateGeneric.h
    A dataflowAPI/rose/semantics/Registers.C
    A dataflowAPI/rose/semantics/Registers.h
    A dataflowAPI/rose/semantics/SMTSolver.C
    A dataflowAPI/rose/semantics/SMTSolver.h
    A dataflowAPI/rose/semantics/SymEvalSemantics.C
    A dataflowAPI/rose/semantics/SymEvalSemantics.h
    A dataflowAPI/rose/util/Access.h
    A dataflowAPI/rose/util/AddressMap.h
    A dataflowAPI/rose/util/AddressSegment.h
    A dataflowAPI/rose/util/AllocatingBuffer.h
    A dataflowAPI/rose/util/Assert.C
    A dataflowAPI/rose/util/Assert.h
    A dataflowAPI/rose/util/Attribute.C
    A dataflowAPI/rose/util/Attribute.h
    A dataflowAPI/rose/util/BiMap.h
    A dataflowAPI/rose/util/BitVector.h
    A dataflowAPI/rose/util/BitVectorSupport.h
    A dataflowAPI/rose/util/Buffer.h
    A dataflowAPI/rose/util/Callbacks.h
    A dataflowAPI/rose/util/Combinatorics.C
    A dataflowAPI/rose/util/Combinatorics.h
    A dataflowAPI/rose/util/Exception.h
    A dataflowAPI/rose/util/FileSystem.C
    A dataflowAPI/rose/util/FileSystem.h
    A dataflowAPI/rose/util/FormatRestorer.h
    A dataflowAPI/rose/util/Interval.h
    A dataflowAPI/rose/util/IntervalMap.h
    A dataflowAPI/rose/util/IntervalSet.h
    A dataflowAPI/rose/util/IntervalSetMap.h
    A dataflowAPI/rose/util/LinearCongruentialGenerator.C
    A dataflowAPI/rose/util/LinearCongruentialGenerator.h
    A dataflowAPI/rose/util/Map.h
    A dataflowAPI/rose/util/MappedBuffer.h
    A dataflowAPI/rose/util/Message.C
    A dataflowAPI/rose/util/Message.h
    A dataflowAPI/rose/util/NullBuffer.h
    A dataflowAPI/rose/util/Optional.h
    A dataflowAPI/rose/util/PoolAllocator.h
    A dataflowAPI/rose/util/Sawyer.C
    A dataflowAPI/rose/util/Sawyer.h
    A dataflowAPI/rose/util/Set.h
    A dataflowAPI/rose/util/SharedPointer.h
    A dataflowAPI/rose/util/SmallObject.C
    A dataflowAPI/rose/util/SmallObject.h
    A dataflowAPI/rose/util/StaticBuffer.h
    A dataflowAPI/rose/util/Stopwatch.C
    A dataflowAPI/rose/util/Stopwatch.h
    A dataflowAPI/rose/util/StringUtility.C
    A dataflowAPI/rose/util/StringUtility.h
    A dataflowAPI/rose/util/Synchronization.C
    A dataflowAPI/rose/util/Synchronization.h
    A dataflowAPI/rose/util/WarningsOff.h
    A dataflowAPI/rose/util/WarningsRestore.h
    A dataflowAPI/rose/util/rose_getline.C
    A dataflowAPI/rose/util/rose_getline.h
    A dataflowAPI/rose/util/rose_strtoull.C
    A dataflowAPI/rose/util/rose_strtoull.h
    M dataflowAPI/src/ExpressionConversionVisitor.C
    M dataflowAPI/src/RoseImpl.C
    M dataflowAPI/src/RoseInsnFactory.C
    M dataflowAPI/src/RoseInsnFactory.h
    M dataflowAPI/src/SymEval.C
    M dataflowAPI/src/SymbolicExpansion.C
    M dataflowAPI/src/SymbolicExpansion.h
    M dataflowAPI/src/convertOpcodes.C
    A external/rose/armv8InstructionEnum.h
    M external/rose/rose-compat.h
    A external/rose/rose_msvc.h
    A external/variantComparer.py
    M parseAPI/CMakeLists.txt
    M parseAPI/src/IA_aarch64Details.C

  Log Message:
  -----------
  Merge pull request #127 from dyninst/arm64/feature/semantics_setup

Merge arm64/feature/semantics_setup into master


Compare: https://github.com/dyninst/dyninst/compare/bf6706ab1268...96c7d97e8e1b
[← Prev in Thread] Current Thread [Next in Thread→]