Recent and Upcoming Advances in the Dyninst Toolkits Bill Williams - - PowerPoint PPT Presentation
Recent and Upcoming Advances in the Dyninst Toolkits Bill Williams - - PowerPoint PPT Presentation
Recent and Upcoming Advances in the Dyninst Toolkits Bill Williams Paradyn Project Petascale Tools Workshop Granlibakken, CA Aug 1-Aug 4, 2016 Dyninst Development Roadmap Dyninst 9.2 Dyninst 9.3 Dyninst 10.0 Q2/3 2016
New Developments in the Dyninst Toolkits
Dyninst 10.0 Dyninst 9.3 Dyninst 9.2
Dyninst Development Roadmap
2
Q2/3 2016 Q3 2016 2017
- New platforms
- New features
- Smarter, better, faster
- Testing and robustness
New Developments in the Dyninst Toolkits
Dyninst Platforms
3
Q2/3 2016 Q3 2016 2017
New Developments in the Dyninst Toolkits
Dyninst 9.2 KNL support PPC/LE analysis ARMv8 instructions
Dyninst Platforms
3
Q2/3 2016 Q3 2016 2017
New Developments in the Dyninst Toolkits
Dyninst 9.2 KNL support PPC/LE analysis ARMv8 instructions Dyninst 9.3 Windows rewriter PPC/LE instrumentation ARMv8 parsing
Dyninst Platforms
3
Q2/3 2016 Q3 2016 2017
New Developments in the Dyninst Toolkits
Dyninst 9.2 KNL support PPC/LE analysis ARMv8 instructions Dyninst 10.0 ARMv8 instrumentation Windows 64-bit Power9? ARM 32-bit? Dyninst 9.3 Windows rewriter PPC/LE instrumentation ARMv8 parsing
Dyninst Platforms
3
Q2/3 2016 Q3 2016 2017
New Developments in the Dyninst Toolkits
Dyninst Features
4
Q2/3 2016 Q3 2016 2017
New Developments in the Dyninst Toolkits
Dyninst 9.2 New platforms PIE rewriting support Bug fixes
Dyninst Features
4
Q2/3 2016 Q3 2016 2017
New Developments in the Dyninst Toolkits
Dyninst 9.2 New platforms PIE rewriting support Bug fixes Dyninst 9.3 AT&T disassembly PPC ABI v2 abstractions
Dyninst Features
4
Q2/3 2016 Q3 2016 2017
New Developments in the Dyninst Toolkits
Dyninst 9.2 New platforms PIE rewriting support Bug fixes Dyninst 10.0 Callbacks revisited Exception support GPU abstractions Dyninst 9.3 AT&T disassembly PPC ABI v2 abstractions
Dyninst Features
4
Q2/3 2016 Q3 2016 2017
New Developments in the Dyninst Toolkits
Smarter, Better, Faster
5
Q2/3 2016 Q3 2016 2017
New Developments in the Dyninst Toolkits
Dyninst 9.2 SD-Dyninst in main release
Smarter, Better, Faster
5
Q2/3 2016 Q3 2016 2017
New Developments in the Dyninst Toolkits
Dyninst 9.2 SD-Dyninst in main release Dyninst 9.3 Better stack analysis Better line info
Smarter, Better, Faster
5
Q2/3 2016 Q3 2016 2017
New Developments in the Dyninst Toolkits
Dyninst 9.2 SD-Dyninst in main release Dyninst 10.0 DWARF for relocated code SD-Dyninst Self-propelled Dyninst 9.3 Better stack analysis Better line info
Smarter, Better, Faster
5
Q2/3 2016 Q3 2016 2017
New Developments in the Dyninst Toolkits
Testing and Robustness
6
Q2/3 2016 Q3 2016 2017
New Developments in the Dyninst Toolkits
Dyninst 9.2 Move to github Fuzz testing DataflowAPI docs
Testing and Robustness
6
Q2/3 2016 Q3 2016 2017
New Developments in the Dyninst Toolkits
Dyninst 9.2 Move to github Fuzz testing DataflowAPI docs Dyninst 9.3 Better test reports Better CI system
Testing and Robustness
6
Q2/3 2016 Q3 2016 2017
New Developments in the Dyninst Toolkits
Dyninst 9.2 Move to github Fuzz testing DataflowAPI docs Dyninst 10.0 Ongoing improvements Dyninst 9.3 Better test reports Better CI system
Testing and Robustness
6
Q2/3 2016 Q3 2016 2017
New Developments in the Dyninst Toolkits
Github and Community Engagement
- Open bug tracker
- Easier to verify contributions
- Turnkey release system
- Increased activity
- Number of commits
- Number of committers
- Transparent discussions
7
New Developments in the Dyninst Toolkits
Outside contributions (current and future)
- Architecture-independent binary analysis
- Improvements in continuous integration
- Much code cleanup
- External build and test machines
- More and better bug reports
- More collaborative bug fixes
8
New Developments in the Dyninst Toolkits
Release 9.2.1
- Line information fixes
- Correctness (virtual functions, Fortran)
- Speed
- PPC64 rewriting fixes
- Generate more robust intermodule calls
- Crash bugs fixed
- Windows stack walking fixes
9
New Developments in the Dyninst Toolkits
Dyninst 9.3
- PPC ABI v2
- Uniform AT&T disassembly
- ARM64 instruction semantics
- Complete ParseAPI on ARM64
- Windows rewriter
10
New Developments in the Dyninst Toolkits
Fuzz testing instructions
- Started in Dyninst 9.1
- Integral in ARM implementation
- Allowed rapid, accurate catch-up on x86
11
New Developments in the Dyninst Toolkits
ARM semantics: interface
Provides overridable function for each element of semantic pseudocode:
- Assignment
- Bit field extraction
- Sign/zero extension
- Math
- If/then/else
- Register access
- Memory access
12
New Developments in the Dyninst Toolkits
ARM semantics: construction
Translate book pseudocode to ROSE policy class
- Build Bison grammar from XML to C++
- Start with elements for common instructions
- Apply to ParseAPI
- Iterate
13
New Developments in the Dyninst Toolkits
Software info
- Main project page: https://github.com/dyninst/
dyninst
- Issue tracker
- Releases and manuals
- Coming soon: test results
- LGPL
- Contributions welcome
14