Code Monkey home page Code Monkey logo

pinpp's Introduction

Pin++

A C++ template meta-programmable framework for authoring Pintools

Build Status

Publications

Tutorials

See our Wiki for tutorials on using Pin++, or the list below for tutorial presentations:

System Requirements

The following is the minumum system requirements needed to build and use Pin++:

To build the examples:

  • C++11 compliant compiler

If you building only the Pin++ library, then you do not have to worry about the requirements for building the examples.

Tested Architectures, Compilers, and Platforms

We have physically tested Pin++ with the following compilers:

  • GCC 4.2*, 4.6*, 4.7, 4.8, 4.9
  • Visual Studio 2008 (vc9)*, 2010 (vc10)*, 2012 (vc11)

* Does not support compiling the examples.

If a compiler you use is not on the list above and Pin++ compiles correctly, please let us know so we can update the list with the compiler you have tested and/or are using.

Environment Setup

Set PIN_ROOT environment variable to the location of Pin since we will be building Pintools outside of the normal distribution of Pin. We also assume that you have your PATH (and LD_LIBRARY_PATH or DYLD_LIBRARY_PATH) configured correctly for Pin. Next, clone the Pin++ repo and configure the environment variables:

Windows

set PINPP_ROOT=[location of Pin++]
set PATH=%PATH%;%PINPP_ROOT%\bin;%PINPP_ROOT%\lib

Linux

export PINPP_ROOT=[location of Pin++]
export PATH=$PATH:$PINPP_ROOT/bin
export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$PINPP_ROOT/lib

MacOS X

export PINPP_ROOT=[location of Pin++]
export PATH=$PATH:$PINPP_ROOT/bin
export DYLD_LIBRARY_PATH=$DYLD_LIBRARY_PATH:$PINPP_ROOT/lib

Quick Build

Generate the Pin++ workspace:

cd $PINPP_ROOT
$MPC_ROOT/mwc.pl -type [build type] -features pin=1,[ia32=0|1],intel64=[0|1] pin++.mwc

If you are building Pin++ for a 32-bit architecture, then select ia32=1. If you are building Pin++ for a 64-bit architecture, then select intel64=1. You can not set both features to 1, and one must be set to 0.

Lastly, build the generated workspace. The Pin++ library (i.e., pin++[.a|.lib]) will be placed in $PINPP_ROOT/lib.

Compiling on MacOS X

The default compiler on MacOS X (distributed via XCode) can sometimes be an outdated version of GCC. If you need to use a newer version of GCC than what is provided when installing XCode, we recommend installing your version of choice via MacPorts.

To use the different version of GCC, make sure set the CC and CXX macros to the corresponding version of gcc and g++ that you want to you.

Here is an example:

make CC=gcc-mp-4.9 CXX=g++-mp-4.9

Thanks to Kenneth Miller for the suggestion.

Compiling the C++11 examples

When building the Pin++ examples, you must enable the C++11 feature cpp11=1. Here is the command-line for building the Pin++ library, and the examples:

$MPC_ROOT/mwc.pl -type [build type] -features pin=1,[ia32=0|1],intel64=[0|1],cpp11=1 pin++.mwc

If you do not have a C++11 compliant compiler, then you will get a LOT of compile and link errors build you try to build the workspace.

Contact

Send all questions to [email protected]. Please make sure to include Pin++ in the subject.

Happy Coding!

pinpp's People

Contributors

dfeiock avatar hilljh82 avatar jwillemsen avatar tuliren avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.