DynInst on arm64 – Status – BUD17-323
-
Upload
linaro -
Category
Technology
-
view
39 -
download
1
Transcript of DynInst on arm64 – Status – BUD17-323
![Page 1: DynInst on arm64 – Status – BUD17-323](https://reader031.fdocuments.net/reader031/viewer/2022022410/58e639ab1a28abe3108b4c6f/html5/thumbnails/1.jpg)
Dyninst arm64 port statusItaru Kitayama
RIKEN Advanced Institute for Computer Science
![Page 2: DynInst on arm64 – Status – BUD17-323](https://reader031.fdocuments.net/reader031/viewer/2022022410/58e639ab1a28abe3108b4c6f/html5/thumbnails/2.jpg)
ENGINEERS AND DEVICES
WORKING TOGETHER
Agenda● The Dyninst toolkits
○Quick overview○How it works○Comparison with uprobes○Build system
● What Works and What Not on arm64● Dyninst arm64 Porting Work● Testsuite Package● Outlook
![Page 3: DynInst on arm64 – Status – BUD17-323](https://reader031.fdocuments.net/reader031/viewer/2022022410/58e639ab1a28abe3108b4c6f/html5/thumbnails/3.jpg)
ENGINEERS AND DEVICESWORKING TOGETHER
The Dyninst Toolkits - Quick overview● APIs for static and dynamic instrumentation and modification
○ Based upon binary code analysis● Platform-independent (Linux, FreeBSD, and Windows), multi-arch support
(x86, PowerPC, and arm64)○ AArch64 mode support is Community’s current focus
● Community-driven development, fully open-sourced under LGPL○ https://github.com/dyninst/dyninst
● Used in many debugging and performance tools○ Systemtap (when invoked with the --dyninst option)○ TAU○ Vampir○ Extrae
![Page 4: DynInst on arm64 – Status – BUD17-323](https://reader031.fdocuments.net/reader031/viewer/2022022410/58e639ab1a28abe3108b4c6f/html5/thumbnails/4.jpg)
ENGINEERS AND DEVICESWORKING TOGETHER
The Dyninst Toolkits - How it works1. Mutator process accesses mutatee’s memory and events via ptrace2. Generate code3. Uses “trampolines” to transfer further to the generated code
a. Replace original instructions with a branch to base trampoline b. Further branched to mini trampolines that have generated codec. Upon return base trampoline executes original instructions
![Page 5: DynInst on arm64 – Status – BUD17-323](https://reader031.fdocuments.net/reader031/viewer/2022022410/58e639ab1a28abe3108b4c6f/html5/thumbnails/5.jpg)
ENGINEERS AND DEVICESWORKING TOGETHER
The Dyninst Toolkits - Comparison with uprobesuprobes (ported to arm64)● Insn at target address is copied
aside and the BRK insn is called, the pre- and post-handlers are executed at EL1
● Certain instructions aren’t trappable
● Dealing with atomic sequences is best effort
Dyninst● Direct instrumentation. No context
switching, stays at EL0● Dealing with atomic sequence is
hard as well
![Page 6: DynInst on arm64 – Status – BUD17-323](https://reader031.fdocuments.net/reader031/viewer/2022022410/58e639ab1a28abe3108b4c6f/html5/thumbnails/6.jpg)
ENGINEERS AND DEVICESWORKING TOGETHER
The Dyninst Toolkits - Build system Dyninst uses CMake for platform portability and its rich features● Mostly built natively● Has Cotire (compile time reducer) to speed up the builds● Fedora 25 is a good release ● Mustang serves as a build machine
Intel(R) Xeon(R) CPU E3-1285 v3 @ 3.60GHz memory 16GB
APM Potenza CPU Rev B0 @ 2.40GHz memory 32GB
real 5m1.993suser 23m0.040ssys 0m51.792s
real 15m31.589suser 57m3.565ssys 0m54.003s
Full build time of Dyninst release v9.3.x, gcc version 6.3.1
![Page 7: DynInst on arm64 – Status – BUD17-323](https://reader031.fdocuments.net/reader031/viewer/2022022410/58e639ab1a28abe3108b4c6f/html5/thumbnails/7.jpg)
ENGINEERS AND DEVICESWORKING TOGETHER
What Works, What Not on arm64WORKSUsing Fedora 25 (latest kernel is v4.9), we’ve verified:● Process controls via ptrace ● ELF64 symbols parsing● Decoding of the A64 instructions in AArch64 execution state
NOT SUPPORTED YET● Dynamic instrumentation and static binary rewriting are not supported on
arm64
![Page 8: DynInst on arm64 – Status – BUD17-323](https://reader031.fdocuments.net/reader031/viewer/2022022410/58e639ab1a28abe3108b4c6f/html5/thumbnails/8.jpg)
ENGINEERS AND DEVICESWORKING TOGETHER
Dyninst arm64 Porting Work● Code base clean-up
○ Migration from Kernel v4.0 (Fedora 21) to v4.9 (Fedora 25) or higher■ Vsyscall page to vDSO■ Remove work-around for an old arm64 kernel syscall bug
○ Binutil related bug fix● Code generation and relocation (Sunny Shah is working on)
○ The “relocation” branch: https://github.com/dyninst/dyninst/tree/arm64/feature/relocation○ Completion expected sometime early summer 2017
![Page 9: DynInst on arm64 – Status – BUD17-323](https://reader031.fdocuments.net/reader031/viewer/2022022410/58e639ab1a28abe3108b4c6f/html5/thumbnails/9.jpg)
ENGINEERS AND DEVICESWORKING TOGETHER
Testsuite Package● Repository is on GitHub: https://github.com/dyninst/testsuite
○ Wiki pages help you get started
● Needs an x86 platform to redefine a set of tests due to the gprolog dependency, otherwise ok on arm64
● Verified test groups on arm64 ○ test_driver -pcontrol (ProcControlAPI tests)○ test_driver -symtab (SymtabAPI tests)
![Page 10: DynInst on arm64 – Status – BUD17-323](https://reader031.fdocuments.net/reader031/viewer/2022022410/58e639ab1a28abe3108b4c6f/html5/thumbnails/10.jpg)
ENGINEERS AND DEVICESWORKING TOGETHER
Outlook● Dynamic instrumentation support on arm64 systems will appear in the v10.0
release time frame○ https://github.com/dyninst/dyninst/wiki/Dyninst-10.0-Road-Map
● Migrating away from libdwarf to libdw (part of elfutils-libs) to drop a dependency
● Contributions are welcome
![Page 11: DynInst on arm64 – Status – BUD17-323](https://reader031.fdocuments.net/reader031/viewer/2022022410/58e639ab1a28abe3108b4c6f/html5/thumbnails/11.jpg)
ENGINEERS AND DEVICESWORKING TOGETHER
References● Dyninst Project Homepage http://www.dyninst.org● Dyninst Programmer’s Guide, Release 9.2, July 2016
○ http://www.dyninst.org/sites/default/files/manuals/dyninst/dyninstAPI.pdf
![Page 12: DynInst on arm64 – Status – BUD17-323](https://reader031.fdocuments.net/reader031/viewer/2022022410/58e639ab1a28abe3108b4c6f/html5/thumbnails/12.jpg)
Thank you● Bart Miller, Bill Williams, and Sunny Shah (U. of Wisconsin)● Josh Stone (Red Hat)● Andy Doan (Linaro)
![Page 13: DynInst on arm64 – Status – BUD17-323](https://reader031.fdocuments.net/reader031/viewer/2022022410/58e639ab1a28abe3108b4c6f/html5/thumbnails/13.jpg)
Thank You#BUD17
For further information: www.linaro.orgBUD17 keynotes and videos on: connect.linaro.org