[DynInst_API:] [dyninst/dyninst] e48c16: The power instruction decoding tables are declared...


Date: Wed, 17 Oct 2018 07:37:26 -0700
From: Xiaozhu Meng <xmeng@xxxxxxxxxxx>
Subject: [DynInst_API:] [dyninst/dyninst] e48c16: The power instruction decoding tables are declared...
  Branch: refs/heads/new-parallel-parsing
  Home:   https://github.com/dyninst/dyninst
  Commit: e48c16786f8cc50851f07d921350f2bc69829c2f
      https://github.com/dyninst/dyninst/commit/e48c16786f8cc50851f07d921350f2bc69829c2f
  Author: Xiaozhu Meng <xmeng@xxxxxxxxxxx>
  Date:   2018-10-16 (Tue, 16 Oct 2018)

  Changed paths:
    M instructionAPI/src/InstructionDecoder-power.C
    M instructionAPI/src/power_opcode_tables.C

  Log Message:
  -----------
  The power instruction decoding tables are declared as std::map.
Currently, we use the [] operator to access entries in the table.
While the tables are mostly read-only, when we encounter instructions
that are not in the table. The [] operator may create new entries
and cause crashes. Therefore, change all accesses from [] operation
to use find() method.


  Commit: c6cf5abbf49cf013f0e650bc7a55ab5d7b4ee6e8
      https://github.com/dyninst/dyninst/commit/c6cf5abbf49cf013f0e650bc7a55ab5d7b4ee6e8
  Author: Xiaozhu Meng <xmeng@xxxxxxxxxxx>
  Date:   2018-10-16 (Tue, 16 Oct 2018)

  Changed paths:
    M parseAPI/src/Parser.C
    M parseAPI/src/ParserDetails.C

  Log Message:
  -----------
  A block can be split between it is just recorded in the block end
map and adding out-going edge work elements. This means Block::end()
and Block::last() are not reliable when adding parsing work elements.
Change them to use IA_IAPI::getAddr(), which is a local object.


  Commit: 1cfbdeaff2fbe7f8f37e28827fd02b6c07f356ab
      https://github.com/dyninst/dyninst/commit/1cfbdeaff2fbe7f8f37e28827fd02b6c07f356ab
  Author: Xiaozhu Meng <xmeng@xxxxxxxxxxx>
  Date:   2018-10-17 (Wed, 17 Oct 2018)

  Changed paths:
    M dataflowAPI/rose/semantics/DispatcherPowerpc.C
    M instructionAPI/src/power_opcode_tables.C
    M parseAPI/src/CodeObject.C
    M parseAPI/src/IndirectAnalyzer.C
    M parseAPI/src/Parser.C
    M parseAPI/src/Parser.h
    M parseAPI/src/ParserDetails.C

  Log Message:
  -----------
  1. Fix typos in the Power instruction decoding table and add
   instruction semantics for rldicl

2. When pushing new parse work elements into the work queue,
   we cannot get the source address of the edge from Block::last(),
   because we currently do not hold an accessor to the block end
   and the block can be split. So, before adding new work elements,
   first acquire an accessor to the block end


Compare: https://github.com/dyninst/dyninst/compare/0777c247db55...1cfbdeaff2fb
      **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] e48c16: The power instruction decoding tables are declared..., Xiaozhu Meng <=