[DynInst_API:] [dyninst/dyninst] 23e069: Improve PIC thunk handling.


Date: Tue, 09 May 2017 10:13:38 -0700
From: Sunny Shah <shah28@xxxxxxxx>
Subject: [DynInst_API:] [dyninst/dyninst] 23e069: Improve PIC thunk handling.
  Branch: refs/heads/arm64/feature/relocation
  Home:   https://github.com/dyninst/dyninst
  Commit: 23e06914110b0090354f9d1864f06bc2f3e5cb01
      https://github.com/dyninst/dyninst/commit/23e06914110b0090354f9d1864f06bc2f3e5cb01
  Author: Matt Morehouse <mm@xxxxxxxxxxx>
  Date:   2016-10-27 (Thu, 27 Oct 2016)

  Changed paths:
    M dataflowAPI/h/stackanalysis.h
    M dataflowAPI/src/stackanalysis.C

  Log Message:
  -----------
  Improve PIC thunk handling.

Copy the PC to the target register for common thunk forms.


  Commit: 3868dcc2294ec5cecf30da516a21d3624673b51c
      https://github.com/dyninst/dyninst/commit/3868dcc2294ec5cecf30da516a21d3624673b51c
  Author: Matt Morehouse <mm@xxxxxxxxxxx>
  Date:   2016-10-27 (Thu, 27 Oct 2016)

  Changed paths:
    M dataflowAPI/h/stackanalysis.h
    M dataflowAPI/src/stackanalysis.C

  Log Message:
  -----------
  Implement basic syscall handling in StackAnalysis.

Overwrite return registers and caller-save registers with TOP.


  Commit: a1e33a07d48e4ed43c1deb60108513f751aaef3d
      https://github.com/dyninst/dyninst/commit/a1e33a07d48e4ed43c1deb60108513f751aaef3d
  Author: Matt Morehouse <mm@xxxxxxxxxxx>
  Date:   2016-10-27 (Thu, 27 Oct 2016)

  Changed paths:
    M dataflowAPI/src/stackanalysis.C

  Log Message:
  -----------
  Handle returns with arguments.


  Commit: f76bc90cdf9d77c2b6dd305d4b3ebc8c62e3c917
      https://github.com/dyninst/dyninst/commit/f76bc90cdf9d77c2b6dd305d4b3ebc8c62e3c917
  Author: Matt Morehouse <mm@xxxxxxxxxxx>
  Date:   2017-02-08 (Wed, 08 Feb 2017)

  Changed paths:
    M dataflowAPI/h/ABI.h
    M dataflowAPI/src/ABI.C
    M dyninstAPI/src/StackMod/StackAccess.C

  Log Message:
  -----------
  Conservative fix for the stack pointer passing problem.

If stack pointers may be passed as parameters to a callee, avoid
instrumenting the caller.  Doing so may result in the pointers not
being adjusted correctly for usage in the callee.  Check pointers
in all registers designated as parameter registers in the ABI, as
well as the last 7 stack slots.


  Commit: add39de2369bcf1943e799a5839d36c050ea16b1
      https://github.com/dyninst/dyninst/commit/add39de2369bcf1943e799a5839d36c050ea16b1
  Author: Matt Morehouse <mm@xxxxxxxxxxx>
  Date:   2017-04-19 (Wed, 19 Apr 2017)

  Changed paths:
    M dyninstAPI/src/Relocation/CFG/RelocBlock.C
    M dyninstAPI/src/Relocation/CFG/RelocGraph.C

  Log Message:
  -----------
  Fix relocation of tail calls.

Interprocedural jumps weren't being marked as interprocedural. This
commit fixes that.


  Commit: e45b32388e03cfdac6412bb8dd42b025abc765b5
      https://github.com/dyninst/dyninst/commit/e45b32388e03cfdac6412bb8dd42b025abc765b5
  Author: Matt Morehouse <mm@xxxxxxxxxxx>
  Date:   2017-04-19 (Wed, 19 Apr 2017)

  Changed paths:
    M dyninstAPI/src/Relocation/CodeBuffer.C

  Log Message:
  -----------
  Update commented-out debug print statements.

After some refactoring to remove "using namespace std", some of the
commented-out debug statements no longer worked when uncommenting
them.  This commit updates those debug statements.


  Commit: 5a3ee162162db902c978df07e2bf07fe0dd1aa6c
      https://github.com/dyninst/dyninst/commit/5a3ee162162db902c978df07e2bf07fe0dd1aa6c
  Author: Matt Morehouse <mm@xxxxxxxxxxx>
  Date:   2017-04-19 (Wed, 19 Apr 2017)

  Changed paths:
    M dyninstAPI/src/Relocation/Transformers/Movement-analysis.C

  Log Message:
  -----------
  Apply Bill's fixes for exception-sensitivity checking.


  Commit: c70639210310ccfe656d9a89992f0f473b7dddb8
      https://github.com/dyninst/dyninst/commit/c70639210310ccfe656d9a89992f0f473b7dddb8
  Author: Matt Morehouse <mm@xxxxxxxxxxx>
  Date:   2017-04-19 (Wed, 19 Apr 2017)

  Changed paths:
    M dyninstAPI/src/codegen-x86.C

  Log Message:
  -----------
  Fix incorrect relocation of certain floating-point instructions.


  Commit: 5191cab7d95fd2b49b2228c20c05bbd1b41e2020
      https://github.com/dyninst/dyninst/commit/5191cab7d95fd2b49b2228c20c05bbd1b41e2020
  Author: Matt Morehouse <mm@xxxxxxxxxxx>
  Date:   2017-04-20 (Thu, 20 Apr 2017)

  Changed paths:
    M dataflowAPI/h/stackanalysis.h
    M dataflowAPI/src/stackanalysis.C
    M dyninstAPI/src/Relocation/Transformers/Movement-adhoc.C
    M dyninstAPI/src/Relocation/Transformers/Movement-adhoc.h
    M dyninstAPI/src/StackMod/StackAccess.C
    M dyninstAPI/src/StackMod/StackAccess.h
    M dyninstAPI/src/StackMod/StackModChecker.C
    M dyninstAPI/src/codegen-x86.C
    M dyninstAPI/src/function.C
    M dyninstAPI/src/function.h

  Log Message:
  -----------
  Add reaching definitions analysis to StackAnalysis.

The reaching definitions analysis keeps track of where stack
pointers are defined so that StackMod can modify those definitions
if necessary.  StackMod currently modifies definitions only when
there are multiple possible stack slots a pointer could point to
and then that pointer is dereferenced.  In that scenario, we cannot
modify just the access since we would need to have two different
displacements depending on the value of the pointer.  Instead,
StackMod modifies the pointers at their definition points so that
they point to their new stack locations.


  Commit: da77922e3f1ce0c7a86808ec76742293650d7205
      https://github.com/dyninst/dyninst/commit/da77922e3f1ce0c7a86808ec76742293650d7205
  Author: Matt Morehouse <mm@xxxxxxxxxxx>
  Date:   2017-04-20 (Thu, 20 Apr 2017)

  Changed paths:
    M dyninstAPI/src/BPatch_object.C

  Log Message:
  -----------
  Hard-code function summary for __libc_memalign.

Doing this allows the malloc function summary to not bottom RAX.


  Commit: 14e9419563b50f1a7391b32aa830a934c5f5643c
      https://github.com/dyninst/dyninst/commit/14e9419563b50f1a7391b32aa830a934c5f5643c
  Author: Matt Morehouse <mm@xxxxxxxxxxx>
  Date:   2017-04-20 (Thu, 20 Apr 2017)

  Changed paths:
    M .gitignore
    A .idea/deployment.xml
    A .idea/webServers.xml
    M CMakeLists.txt
    M README.md
    M appveyor.yml
    M cmake/optimization.cmake
    M cmake/packages.cmake
    M cmake/shared.cmake
    M cmake/warnings.cmake
    M common/CMakeLists.txt
    M common/doc/manual_frontpage.tex
    M common/h/IBSTree-fast.h
    M common/h/IBSTree.h
    M common/h/SymReader.h
    M common/h/dyn_regs.h
    M common/h/dyntypes.h
    M common/src/Types.h
    M common/src/debug_common.h
    M common/src/dyn_regs.C
    M common/src/linuxKludges.C
    M dataflowAPI/doc/dataflowAPI.pdf
    M dataflowAPI/h/ABI.h
    M dataflowAPI/h/Absloc.h
    M dataflowAPI/h/AbslocInterface.h
    M dataflowAPI/h/SymEval.h
    M dataflowAPI/h/stackanalysis.h
    M dataflowAPI/rose/semantics/BaseSemantics2.C
    M dataflowAPI/rose/semantics/BaseSemantics2.h
    M dataflowAPI/rose/semantics/DispatcherARM64.C
    M dataflowAPI/rose/semantics/DispatcherARM64.h
    M dataflowAPI/rose/semantics/Registers.C
    M dataflowAPI/rose/semantics/SymEvalSemantics.C
    M dataflowAPI/rose/semantics/SymEvalSemantics.h
    M dataflowAPI/rose/x86_64InstructionSemantics.h
    M dataflowAPI/src/ABI.C
    M dataflowAPI/src/Absloc.C
    M dataflowAPI/src/AbslocInterface.C
    M dataflowAPI/src/ExpressionConversionVisitor.C
    M dataflowAPI/src/RoseImpl.C
    M dataflowAPI/src/SymEvalPolicy.C
    M dataflowAPI/src/SymbolicExpansion.C
    M dataflowAPI/src/slicing.C
    M dataflowAPI/src/stackanalysis.C
    M dynC_API/CMakeLists.txt
    M dynC_API/src/C.l
    M dynC_API/src/C.y
    M dynC_API/src/dynC.tab.C
    M dynC_API/src/dynC.tab.h
    M dynC_API/src/lex.dynC.C
    M dyninstAPI/CMakeLists.txt
    M dyninstAPI/doc/dyninstAPI.doc
    M dyninstAPI/doc/dyninstAPI.pdf
    M dyninstAPI/h/BPatch_addressSpace.h
    M dyninstAPI/h/BPatch_image.h
    M dyninstAPI/h/BPatch_instruction.h
    M dyninstAPI/h/BPatch_memoryAccess_NP.h
    M dyninstAPI/h/BPatch_module.h
    M dyninstAPI/h/BPatch_snippet.h
    M dyninstAPI/h/BPatch_statement.h
    M dyninstAPI/src/BPatch_addressSpace.C
    M dyninstAPI/src/BPatch_image.C
    M dyninstAPI/src/BPatch_module.C
    M dyninstAPI/src/BPatch_object.C
    M dyninstAPI/src/BPatch_snippet.C
    M dyninstAPI/src/BPatch_statement.C
    M dyninstAPI/src/BPatch_type.C
    M dyninstAPI/src/MemoryEmulator/memEmulatorTransformer.h
    M dyninstAPI/src/Relocation/CFG/RelocBlock.C
    M dyninstAPI/src/Relocation/CFG/RelocGraph.C
    M dyninstAPI/src/Relocation/CodeBuffer.C
    M dyninstAPI/src/Relocation/CodeTracker.C
    M dyninstAPI/src/Relocation/CodeTracker.h
    M dyninstAPI/src/Relocation/Transformers/Movement-adhoc.C
    M dyninstAPI/src/Relocation/Transformers/Movement-adhoc.h
    M dyninstAPI/src/Relocation/Transformers/Movement-analysis.C
    M dyninstAPI/src/Relocation/Transformers/Movement-analysis.h
    M dyninstAPI/src/Relocation/Widgets/StackModWidget.C
    M dyninstAPI/src/StackMod/StackAccess.C
    M dyninstAPI/src/StackMod/StackAccess.h
    M dyninstAPI/src/StackMod/StackModChecker.C
    M dyninstAPI/src/addressSpace.h
    M dyninstAPI/src/binaryEdit.C
    M dyninstAPI/src/binaryEdit.h
    M dyninstAPI/src/codegen-x86.C
    M dyninstAPI/src/dynProcess.h
    M dyninstAPI/src/function.C
    M dyninstAPI/src/function.h
    M dyninstAPI/src/hybridCallbacks.C
    M dyninstAPI/src/hybridOverwrites.C
    M dyninstAPI/src/image.C
    M dyninstAPI/src/inst-power.C
    M dyninstAPI/src/inst-x86.C
    M dyninstAPI/src/linux.C
    M dyninstAPI/src/pdwinnt.C
    M dyninstAPI/src/unix.C
    M dyninstAPI_RT/src/RTheap.c
    M dyninstAPI_RT/src/RTthread-x86.c
    M dyninstAPI_RT/src/RTwinnt.c
    M elf/h/Elf_X.h
    M elf/src/Elf_X.C
    M external/rose/armv8InstructionEnum.h
    M instructionAPI/CMakeLists.txt
    M instructionAPI/doc/1-Intro.tex
    M instructionAPI/doc/instructionAPI.pdf
    M instructionAPI/src/InstructionDecoder-aarch64.C
    M parseAPI/CMakeLists.txt
    M parseAPI/doc/1-Intro.tex
    M parseAPI/doc/parseAPI.pdf
    M parseAPI/h/CFG.h
    M parseAPI/h/CFGFactory.h
    M parseAPI/h/CodeSource.h
    M parseAPI/src/Block.C
    M parseAPI/src/BoundFactCalculator.C
    M parseAPI/src/BoundFactData.C
    M parseAPI/src/BoundFactData.h
    M parseAPI/src/CodeObject.C
    M parseAPI/src/Function.C
    M parseAPI/src/IA_IAPI.C
    M parseAPI/src/IA_aarch64.C
    M parseAPI/src/IA_power.C
    M parseAPI/src/IA_powerDetails.C
    M parseAPI/src/IndirectASTVisitor.C
    M parseAPI/src/IndirectASTVisitor.h
    M parseAPI/src/IndirectAnalyzer.C
    M parseAPI/src/InstructionSource-aarch64.C
    M parseAPI/src/JumpTablePred.C
    M parseAPI/src/JumpTablePred.h
    M parseAPI/src/SymLiteCodeSource.C
    M parseAPI/src/SymtabCodeSource.C
    M parseAPI/src/debug_parse.C
    M parseAPI/src/debug_parse.h
    M parseThat/src/dyninstCore.C
    M patchAPI/doc/patchAPI.pdf
    M proccontrol/CMakeLists.txt
    M proccontrol/doc/proccontrol.docx
    M proccontrol/doc/proccontrol.pdf
    M proccontrol/src/DecoderWindows.C
    M proccontrol/src/int_process.h
    M proccontrol/src/linux.C
    M proccontrol/src/linux.h
    M proccontrol/src/process.C
    M proccontrol/src/windows_thread.C
    M stackwalk/doc/3-API.tex
    M stackwalk/doc/stackwalk.pdf
    M stackwalk/src/aarch64-swk.C
    M stackwalk/src/linux-swk.C
    M stackwalk/src/x86-swk.C
    M symlite/h/SymLite-elf.h
    M symlite/src/SymLite-elf.C
    M symtabAPI/CMakeLists.txt
    M symtabAPI/doc/1-Intro.tex
    M symtabAPI/doc/2-Abstractions.tex
    M symtabAPI/doc/API/LineInfo/Iterating.tex
    M symtabAPI/doc/symtabAPI.pdf
    M symtabAPI/h/Function.h
    M symtabAPI/h/LineInformation.h
    M symtabAPI/h/Module.h
    M symtabAPI/h/RangeLookup.h
    A symtabAPI/h/StringTable.h
    M symtabAPI/h/Symtab.h
    M symtabAPI/h/SymtabReader.h
    M symtabAPI/src/Function.C
    M symtabAPI/src/LineInformation.C
    M symtabAPI/src/Module.C
    M symtabAPI/src/Object-elf.C
    M symtabAPI/src/Object-elf.h
    M symtabAPI/src/Object-nt.C
    M symtabAPI/src/Object-nt.h
    M symtabAPI/src/Object.C
    M symtabAPI/src/Object.h
    M symtabAPI/src/Symtab-edit.C
    M symtabAPI/src/Symtab-lookup.C
    M symtabAPI/src/Symtab.C
    M symtabAPI/src/SymtabReader.C
    M symtabAPI/src/dwarfWalker.C
    M symtabAPI/src/dwarfWalker.h
    M symtabAPI/src/emitElf.C
    M symtabAPI/src/relocationEntry-elf-aarch64.C

  Log Message:
  -----------
  Merge branch 'sfm/fixes/conservative_pointer_passing' into sfm/feature/reaching_defs

Conflicts:
	dataflowAPI/src/stackanalysis.C


  Commit: 435b1886a0fda7037149c61a9f6dc39d36eea67e
      https://github.com/dyninst/dyninst/commit/435b1886a0fda7037149c61a9f6dc39d36eea67e
  Author: Matt Morehouse <mm@xxxxxxxxxxx>
  Date:   2017-04-21 (Fri, 21 Apr 2017)

  Changed paths:
    M .travis.yml
    A CHANGELOG.md
    R LGPL
    A LICENSE.md
    M cmake/Modules/FindLibElf.cmake
    M cmake/packages.cmake
    M cmake/shared.cmake
    M common/h/IBSTree-fast.h
    M common/h/dyntypes.h
    M common/src/Types.h
    M common/src/addrtranslate-sysv.C
    M dataflowAPI/src/RegisterMap.C
    M dataflowAPI/src/liveness.C
    M dyninstAPI/h/BPatch_instruction.h
    M dyninstAPI/h/BPatch_memoryAccess_NP.h
    M dyninstAPI/h/BPatch_type.h
    M dyninstAPI/src/BPatch.C
    M dyninstAPI/src/BPatch_collections.C
    M dyninstAPI/src/BPatch_memoryAccess.C
    M dyninstAPI/src/BPatch_type.C
    M dyninstAPI/src/Relocation/Transformers/Movement-analysis.C
    M dyninstAPI/src/codegen.C
    M dyninstAPI/src/image.C
    M dyninstAPI/src/linux-aarch64.C
    M parseAPI/src/BoundFactCalculator.C
    M parseAPI/src/BoundFactData.C
    M parseAPI/src/IndirectASTVisitor.C
    M stackwalk/src/linux-swk.C
    M symtabAPI/h/Symtab.h
    M symtabAPI/src/Aggregate.C
    M symtabAPI/src/Collections.C
    M symtabAPI/src/Module.C
    M symtabAPI/src/Object-elf.C
    M symtabAPI/src/Type.C
    M symtabAPI/src/dwarfWalker.C

  Log Message:
  -----------
  Merge branch 'master' of https://github.com/dyninst/dyninst into sfm/feature/reaching_defs

Conflicts:
	dyninstAPI/src/Relocation/Transformers/Movement-analysis.C


  Commit: 39a3bd8017246c0f985b23d140df804c05b7e9bc
      https://github.com/dyninst/dyninst/commit/39a3bd8017246c0f985b23d140df804c05b7e9bc
  Author: morehouse <mm@xxxxxxxxxxx>
  Date:   2017-04-24 (Mon, 24 Apr 2017)

  Changed paths:
    M dataflowAPI/h/ABI.h
    M dataflowAPI/h/stackanalysis.h
    M dataflowAPI/src/ABI.C
    M dataflowAPI/src/stackanalysis.C
    M dyninstAPI/src/BPatch_object.C
    M dyninstAPI/src/Relocation/CFG/RelocBlock.C
    M dyninstAPI/src/Relocation/CFG/RelocGraph.C
    M dyninstAPI/src/Relocation/CodeBuffer.C
    M dyninstAPI/src/Relocation/Transformers/Movement-adhoc.C
    M dyninstAPI/src/Relocation/Transformers/Movement-adhoc.h
    M dyninstAPI/src/Relocation/Transformers/Movement-analysis.C
    M dyninstAPI/src/StackMod/StackAccess.C
    M dyninstAPI/src/StackMod/StackAccess.h
    M dyninstAPI/src/StackMod/StackModChecker.C
    M dyninstAPI/src/codegen-x86.C
    M dyninstAPI/src/function.C
    M dyninstAPI/src/function.h

  Log Message:
  -----------
  Merge pull request #364 from dyninst/sfm/feature/reaching_defs

Sfm/feature/reaching defs


  Commit: 4596d3a2b769b8518fb717ec16476e091e59d1ac
      https://github.com/dyninst/dyninst/commit/4596d3a2b769b8518fb717ec16476e091e59d1ac
  Author: Sunny Shah <shah28@xxxxxxxx>
  Date:   2017-05-09 (Tue, 09 May 2017)

  Changed paths:
    M dyninstAPI/src/codegen-aarch64.C

  Log Message:
  -----------
  Updated comment for modifyJcc


  Commit: 8788645144267606ea9200e06e278532d4719d0a
      https://github.com/dyninst/dyninst/commit/8788645144267606ea9200e06e278532d4719d0a
  Author: Sunny Shah <shah28@xxxxxxxx>
  Date:   2017-05-09 (Tue, 09 May 2017)

  Changed paths:
    M dataflowAPI/h/ABI.h
    M dataflowAPI/h/stackanalysis.h
    M dataflowAPI/src/ABI.C
    M dataflowAPI/src/stackanalysis.C
    M dyninstAPI/src/BPatch_object.C
    M dyninstAPI/src/Relocation/CFG/RelocBlock.C
    M dyninstAPI/src/Relocation/CFG/RelocGraph.C
    M dyninstAPI/src/Relocation/CodeBuffer.C
    M dyninstAPI/src/Relocation/Transformers/Movement-adhoc.C
    M dyninstAPI/src/Relocation/Transformers/Movement-adhoc.h
    M dyninstAPI/src/Relocation/Transformers/Movement-analysis.C
    M dyninstAPI/src/StackMod/StackAccess.C
    M dyninstAPI/src/StackMod/StackAccess.h
    M dyninstAPI/src/StackMod/StackModChecker.C
    M dyninstAPI/src/codegen-x86.C
    M dyninstAPI/src/function.C
    M dyninstAPI/src/function.h

  Log Message:
  -----------
  Merge remote-tracking branch 'origin/master' into arm64/feature/relocation


Compare: https://github.com/dyninst/dyninst/compare/095f63e6cdfb...878864514426
[← Prev in Thread] Current Thread [Next in Thread→]