All Projects → Xuhpclab → DrCCTProf

Xuhpclab / DrCCTProf

Licence: MIT License
DrCCTProf is a fine-grained call path profiling framework for binaries running on ARM and X86 architectures.

Programming Languages

c
50402 projects - #5 most used programming language
C++
36643 projects - #6 most used programming language
CMake
9771 projects
shell
77523 projects

Projects that are alternatives of or similar to DrCCTProf

Bap
Binary Analysis Platform
Stars: ✭ 1,385 (+1609.88%)
Mutual labels:  arm, dynamic-analysis, binary-analysis
Redasm
The OpenSource Disassembler
Stars: ✭ 1,042 (+1186.42%)
Mutual labels:  arm, binary-analysis
Barf Project
BARF : A multiplatform open source Binary Analysis and Reverse engineering Framework
Stars: ✭ 1,280 (+1480.25%)
Mutual labels:  arm, binary-analysis
android-openssl
OpenSSL build for Android (arm, armv7, x86)
Stars: ✭ 69 (-14.81%)
Mutual labels:  arm
terminal
Terminal inside the microcontroller (cli for mcu)
Stars: ✭ 31 (-61.73%)
Mutual labels:  arm
os
OS for Pi-KVM based on Arch Linux ARM
Stars: ✭ 42 (-48.15%)
Mutual labels:  arm
Apple-Silicon-Guide
Apple Silicon Guide. Learn all about the M1, M1 Pro, M1 Max, and M1 Ultra chips.
Stars: ✭ 240 (+196.3%)
Mutual labels:  arm
LaunchPadFlightController
TM4C123G based Flight Controller
Stars: ✭ 62 (-23.46%)
Mutual labels:  arm
BEFA-Library
High-level library for executable binary file analysis
Stars: ✭ 14 (-82.72%)
Mutual labels:  binary-analysis
nexus3-docker
ARM Docker image of Sonatype Nexus Repository Manager (NXRM) (Raspberry Pis - armv7l, aarch64)
Stars: ✭ 55 (-32.1%)
Mutual labels:  arm
tor-relay-docker
Tor relay Docker images for x86-64, armhf & arm64 (from source)
Stars: ✭ 32 (-60.49%)
Mutual labels:  arm
orange-pi
Orange pi Kicad libraries and footprints.
Stars: ✭ 13 (-83.95%)
Mutual labels:  arm
on-edge
A library for detecting certain improper uses of the "Defer, Panic, and Recover" pattern in Go programs
Stars: ✭ 84 (+3.7%)
Mutual labels:  dynamic-analysis
Hades
🔥 A Nintendo Game Boy Advance emulator
Stars: ✭ 44 (-45.68%)
Mutual labels:  arm
ncnn-android-squeezenet
The squeezenet image classification android example
Stars: ✭ 100 (+23.46%)
Mutual labels:  arm
metal.test
Deprecated, superseded by https://github.com/metal-ci/test
Stars: ✭ 41 (-49.38%)
Mutual labels:  arm
utf8
Fast UTF-8 validation with range algorithm (NEON+SSE4+AVX2)
Stars: ✭ 60 (-25.93%)
Mutual labels:  arm
volumizr
Simple kubernetes storage solution using Minio
Stars: ✭ 20 (-75.31%)
Mutual labels:  arm
openvino contrib
Repository for OpenVINO's extra modules
Stars: ✭ 55 (-32.1%)
Mutual labels:  arm
how-to-qemu-arm-gdb-gtest
How to run, debug, and unit test ARM code on X86 ubuntu
Stars: ✭ 19 (-76.54%)
Mutual labels:  arm

DrCCTProf

DrCCTProf is a fine-grained call path profiling framework for binaries running on ARM and X86 architectures. DrCCTProf (together with its predecessor CCTLib) won a numbe of paper awards, including ASPLOS'17 Highlight, ICSE'19 Distinguished Paper Award, SC'20 Best Paper Finalist.

  • Please see our blog for the high-level introduction.
  • Please watch our introductory talk to learn more.
  • Please refer documentation for detailed tutorial and API references.

build master Codacy Badge license

Contents

Installation

Linux

1 Install dependencies

In order to build you'll need the following packages:

  • gcc (>= 4.8)
  • binutils (>= 2.26)
  • cmake (>= 3.7)
  • perl

To avoid version conflicts with any packages, we recommend to use Spack to manage the above packages and create a virtual environment to build and run DrCCTProf.

2 Build

Use the following commands to get source code and build DrCCTProf:

$ git clone --recurse https://github.com/Xuhpclab/DrCCTProf.git
$ ./build.sh

Usage

Linux

To run DrCCTProf, one needs to use the following command:

1 Set the global environment variable

$ export drrun=/path/to/DrCCTProf/build/bin64/drrun

2 Run client tool

  • x86_64
$ $drrun -t <client tool> -- <application> [apllication args]

e.g. The command below will start the client drcctlib_instr_statistics_clean_call to analyze echo "Hello World!".

$ $drrun -t drcctlib_instr_statistics_clean_call -- echo "Hello World!"
  • aarch64
$ $drrun -unsafe_build_ldstex -t <client tool> -- <application> [apllication args]

Client tools

Internal client tools list

Name Features Status
drcctlib_cct_only_clean_call A tool that collects call path on each instruction. release
drcctlib_instr_statistics_clean_call A instruction counting tool that counts each instruction. release
drcctlib_reuse_distance_client_cache A reuse distance measurement tool. release
drcctlib_cct_only (Code cache mode)A tool that collects call path on each instruction. beta
drcctlib_instr_statistics (Code cache mode) A instruction counting tool that counts each instruction. beta
drcctlib_reuse_distance (Code cache mode) A reuse distance measurement tool. beta

Support Platforms

The following platforms pass our tests.

Linux

CPU Systems Architecture
Intel(R) Xeon(R) CPU E5-2699 v3 Ubuntu 18.04 x86_64
Intel(R) Xeon(R) CPU E5-2650 v4 Ubuntu 14.04 x86_64
Intel(R) Xeon(R) CPU E7-4830 v4 Red Hat 4.8.3 x86_64
Arm Cortex A53(Raspberry pi 3 b+) Ubuntu 18.04 aarch64
Arm Cortex-A57(Jetson Nano) Ubuntu 18.04 aarch64
ThunderX2 99xx Ubuntu 20.04 aarch64
AWS Graviton1 Ubuntu 18.04 aarch64
AWS Graviton2 Ubuntu 18.04 aarch64

Obtaining Help

Report an error case of building

Please use the build error report.

DrCCTProf is built atop DynamoRIO. If you get errors in building, you can also search the DynamoRIO's issues to get help.

Report a bug

Please use the bug report.

License

DrCCTProf is released under the MIT License.

Related Publication

  1. Milind Chabbi, Xu Liu, and John Mellor-Crummey. 2014. Call Paths for Pin Tools. In Proceedings of Annual IEEE/ACM International Symposium on Code Generation and Optimization (CGO '14). ACM, New York, NY, USA, , Pages 76 , 11 pages. DOI=http://dx.doi.org/10.1145/2544137.2544164
  2. Milind Chabbi, Wim Lavrijsen, Wibe de Jong, Koushik Sen, John Mellor-Crummey, and Costin Iancu. 2015. Barrier elision for production parallel programs. In Proceedings of the 20th ACM SIGPLAN Symposium on Principles and Practice of Parallel Programming (PPoPP 2015). ACM, New York, NY, USA, 109-119. DOI=http://dx.doi.org/10.1145/2688500.2688502
  3. Milind Chabbi and John Mellor-Crummey. 2012. DeadSpy: a tool to pinpoint program inefficiencies. In Proceedings of the Tenth International Symposium on Code Generation and Optimization (CGO '12). ACM, New York, NY, USA, 124-134. DOI=http://dx.doi.org/10.1145/2259016.2259033
  4. Shasha Wen, Xu Liu, Milind Chabbi, "Runtime Value Numbering: A Profiling Technique to Pinpoint Redundant Computations" The 24th International Conference on Parallel Architectures and Compilation Techniques (PACT'15), Oct 18-21, 2015, San Francisco, California, USA
  5. Shasha Wen, Milind Chabbi, and Xu Liu. 2017. REDSPY: Exploring Value Locality in Software. In Proceedings of the Twenty-Second International Conference on Architectural Support for Programming Languages and Operating Systems (ASPLOS '17). ACM, New York, NY, USA, 47-61. DOI: https://doi.org/10.1145/3037697.3037729
  6. Pengfei Su, Shasha Wen, Hailong Yang, Milind Chabbi, and Xu Liu. 2019. Redundant Loads: A Software Inefficiency Indicator. In Proceedings of the 41st International Conference on Software Engineering (ICSE '19). IEEE Press, Piscataway, NJ, USA, 982-993. DOI: https://doi.org/10.1109/ICSE.2019.00103
  7. Jialiang Tan, Shuyin Jiao, Milind Chabbi, Xu Liu. What Every Scientific Programmer Should Know About Compiler Optimizations? The 34th ACM International Conference on Supercomputing (ICS'20), Jun 29 - Jul 2, 2020, Barcelona, Spain.
  8. Xin You, Hailong Yang, Zhongzhi Luan, Depei Qian, Xu Liu. Zerospy: Exploring the Software Inefficiencies with Redundant Zeros, The International Conference for High Performance Computing, Networking, Storage and Analysis (SC'20), Nov 15-20, 2020, Atlanta, GA, USA.
  9. Qidong Zhao, Xu Liu, Milind Chabbi. DRCCTPROF: A Fine-grained Call Path Profiler for ARM-based Clusters, The International Conference for High Performance Computing, Networking, Storage and Analysis (SC'20), Nov 15-20, 2020, Atlanta, GA, USA.
Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].