Branch: refs/heads/master
Home: https://github.com/dyninst/dyninst
Commit: d327c37f216db09b2a45e92c3db455e41c68fe35
https://github.com/dyninst/dyninst/commit/d327c37f216db09b2a45e92c3db455e41c68fe35
Author: Xiaozhu Meng <mxz297@xxxxxxxxx>
Date: 2020-04-11 (Sat, 11 Apr 2020)
Changed paths:
M common/h/concurrent.h
M dataflowAPI/rose/x86_64InstructionSemantics.h
M dataflowAPI/src/ExpressionConversionVisitor.C
M dataflowAPI/src/SymbolicExpansion.C
M parseAPI/h/CodeObject.h
M parseAPI/src/Block.C
M parseAPI/src/BoundFactCalculator.C
M parseAPI/src/BoundFactData.C
M parseAPI/src/CodeObject.C
M parseAPI/src/JumpTableIndexPred.C
M parseAPI/src/ParseData.h
M parseAPI/src/Parser-speculative.C
M parseAPI/src/Parser.C
M parseAPI/src/Parser.h
M parseAPI/src/SymtabCodeSource.C
M symtabAPI/h/Collections.h
M symtabAPI/src/Collections.C
M symtabAPI/src/Type-mem.h
Log Message:
-----------
More parallel parsing optimization and fixes (#729)
* Don't clean up the jump tables, the code needs some tuning.
* Refactor Block::getFuncs to not use interval trees, which will cause
mutual exclusion writes. Build a concurrent lookup during function finalization
* Swap to use unique_lock instead of lock_guard.
* (Untested) Shift synchronization to the entry-level locks.
* Add a fast-path to getModTypeCollection, to reduce contention issues.
* Do not assert when cannot trasnslate instruction to symbolic expression on x86_64
* By design, the target block of an edge should not change when the target address is not changed.
This is because there should be a unique block created at a give address. Previously, sink block
does not satisfy this invariant, so I perform an index lookup for edge target. This lookup will
cause significant unnecessary lock contention for the block concurrent hash map.
Fix sink block so that there is one and only one sink block and remove the edge target block
lookup
* Disable jump table finalization (Need to enable it after its performance is investigated)
* Pre-allocate hash table buckets for funcByBlocks map to remove hash table resizing overhead
* Fix jump table finalization
* Enable jump table finalization
* Do not remove incoming edges for the sink block.
* Fix gap searching in gap parsing
* More gap searching fixes
* Open libgcc.a on x86 for rewriting statically linked binaries
* Should convert pstate register to rose register on ARMv8
* Parse 2-PLT style PLT stubs, which are used when Intel-CET is enabled
* Cleanup some error messages
* More debug output cleanup
Co-authored-by: blue42u <anderson.jonathonm@xxxxxxxxx>
Co-authored-by: blue42u <blue42u@xxxxxxxxxxxxxxxxxxxxxxxx>
|