[DynInst_API:] [dyninst/dyninst] 29535f: Various bug fixes


Date: Mon, 05 Nov 2018 12:39:32 -0800
From: Xiaozhu Meng <xmeng@xxxxxxxxxxx>
Subject: [DynInst_API:] [dyninst/dyninst] 29535f: Various bug fixes
  Branch: refs/heads/master
  Home:   https://github.com/dyninst/dyninst
  Commit: 29535f22c1a17581107140da3910ccf148b36372
      https://github.com/dyninst/dyninst/commit/29535f22c1a17581107140da3910ccf148b36372
  Author: Xiaozhu Meng <xmeng@xxxxxxxxxxx>
  Date:   2018-11-05 (Mon, 05 Nov 2018)

  Changed paths:
    M dataflowAPI/h/slicing.h
    M dataflowAPI/rose/semantics/DispatcherARM64.C
    M dataflowAPI/src/slicing.C
    M dyninstAPI/src/Parsing.C
    M instructionAPI/src/InstructionDecoder-aarch64.C
    M parseAPI/src/BoundFactCalculator.C
    M parseAPI/src/CodeSource.C
    M parseAPI/src/Function.C
    M parseAPI/src/IA_IAPI.h
    M parseAPI/src/IA_aarch64.C
    M parseAPI/src/IA_power.C
    M parseAPI/src/IA_x86.C
    M parseAPI/src/IndirectAnalyzer.C
    M parseAPI/src/IndirectAnalyzer.h
    M parseAPI/src/JumpTableFormatPred.C
    M parseAPI/src/JumpTableFormatPred.h
    M parseAPI/src/JumpTableIndexPred.C
    M parseAPI/src/JumpTableIndexPred.h
    M parseAPI/src/Parser.C
    M parseAPI/src/SymtabCodeSource.C
    M parseAPI/src/debug_parse.C

  Log Message:
  -----------
  Various bug fixes

1. Jump table analysis
   1.1 do not slice backward along indirect edges, which will
   make jump table analysis depends on results of previous jump table analysis,
   and have cascading wrong analysis results.
   1.2 On x86, perform tentative instruction decoding at potential jump targets.
   If we find junk instructions at jump target, then we know the jump target is wrong
   1.3 Remove jump target checks that relies on the parsing function context.
   For jump tables shared by multiple functions, such checks can easily lead to
   non-determinisitic results.

2. Tail calls: on x86, if there is a pop to a callee saved register, it means
   the function is tearing down the stack frame. So, this jump should be a tail call

3. PLT stubs
   3.1 Improve analysis of PLT in .plt.got and fix related instrumentation problems
   3.2 Function should use the PLT name at the beginning of the parsing, not at the
   end of parsing. Otherwise, for PLT that is known to be non-returning, its caller
   may have the wrong retstatus



      **NOTE:** This service has been marked for deprecation: https://developer.github.com/changes/2018-04-25-github-services-deprecation/

      Functionality will be removed from GitHub.com on January 31st, 2019.
[← Prev in Thread] Current Thread [Next in Thread→]
  • [DynInst_API:] [dyninst/dyninst] 29535f: Various bug fixes, Xiaozhu Meng <=