|
Call-back function when application changes context.
|
|
Call back function when Pin detaches from application |
|
Call back function when application exits |
|
Call-back function when the application forks.
|
|
Call back function when Pin removes all old instrumented code from its cache |
|
Call back function when tool creates its own signal handler.
|
|
Call-back function before execution of a system call.
|
|
Call-back function after execution of a system call.
|
|
Call-back function when thread ends.
|
|
Call-back function when thread begins.
|
|
|
time of callback notification |
|
Register a notification function that is called immediately before the application changes context due to receipt of an asynchronous event such as Unix signal or Windows APC.
|
|
Call func immediately before Pin relinquishes control of the application through PIN_Detach. The function is not an instrumentation function. There can be more than one Detach function.
|
|
Call func immediately before the application exits. The function is not an instrumentation function--it cannot insert instrumentation. There can be more than one Fini function.
|
|
Register a notification function that is called before a child/exec-ed process is starting to execute NOTE: Only one callback can be registered
|
|
Register a notification handler that is called when the application forks a new process.
|
|
Takes over ownership of a signal for the tool and establishes a tool handler for the signal. Tools should never call sigaction() directly to handle signals. Use this function to take over "ownership" of a signal. If you want to be notified when the application receives a signal, use PIN_AddContextChangeFunction() instead. Tools should take care when intercepting signals, because this can adversely affect the application if it also uses the signal. The application is still allowed to set up its own handler for an intercepted signal. However, the application is prevented from attempts to block the signal. When an intercepted signal is received, the tool's handler is called first. The tool's handler then decides whether the signal should be forwarded to the application's handler (if any). A tool can set only one "intercept" handler for a particular signal, so a new handler overwrites any previous handler for the same signal. To disable a handler, pass a NULL function pointer.
|
|
Register a notification function that is called immediately before execution of a system call.
|
|
Register a notification function that is called immediately after execution of a system call.
|
|
Register a notification function that is called when an application thread terminates. The call-back happens even for the application's root (initial) thread.
|
|
Register a notification function that is called when a thread starts executing in the application. The call-back happens even for the application's root (initial) thread.
|
|
Call an application routine from a replacement function. The replacement function executes in the tools context. The application function should execute in the applications context. This API restores the application context before calling the application routine, and then restores the tools context before returning control to the replacement function. RTN_ReplaceSignature() should be used to replace the application routine, and the application context and the original function pointer should be additional arguments for the replacement function.
|
|
Pin relinquishes control of the application and the original uninstrumented code is executed. To ensure proper behavior the function must be invoked through an analysis routine. Invoking via instrumentation routines could cause could cause Pin to misbehave See Tests/detach.C for an example of its use.
|
|
Initialize Pin system. Must be called before PIN_StartProgram
|
|
Initialize symbol table code. Pin does not read symbols unless this is called. Must be called before PIN_StartProgram
|
|
Return TRUE if -probe on command line. Tool can run in Probe mode without specifying -probe on the command line. This switch is provided as a convenience.
|
|
Some Pin API functions must be called when the thread is holding this lock. See also PIN_UnlockClient.
|
|
Invalidates all the Fini callback functions registered via PIN_AddFiniFunction; Fini callbacks will no longer be called before the application exits. Must be called prior to invoking PIN_Detach if the tool has previously registered Fini callbacks and libc.so is not yet loaded into memory yet for a dynamically linked binary.
|
|
All instrumentation is removed. When application code is executed the instrumentation routines will be called to reinstrument all code.
|
|
Copy the specified number of bytes from a source memory region to a destination memory region. The function guarantees safe return to the caller even if the source or destination regions are inaccessible (entirely or partially). Use of this function also guarantees that the tool reads or writes the values used by the application. For example, on Windows, Pin replaces certain TEB fields when running a tool's analysis code. If the tool accessed these fields directly, it would see the modified values rather than the original ones. Using PIN_SafeCopy() allows the tool to read or write the application's values for these fields. We recommend using this API any time a tool reads or writes application memory.
|
|
Starts executing the application, when Pin is in JIT mode, which is the default. Note that PIN_Init() must be called before PIN_StartProgram(). The PIN_StartProgram() function never returns. It also unwinds the tool's stack, so any local (stack based) variables are lost.
|
|
Starts executing the application, when Pin is in Probe mode. Note that PIN_Init() must be called before PIN_StartProgramProbed(). The PIN_StartProgramProbed() function never returns. It also unwinds the tool's stack, so any local (stack based) variables are lost.
|
|
Some Pin API functions must be called when the thread is holding this lock. See also PIN_LockClient.
|
|
Returns full path of Pin binary invoked, encoded in UTF8 (superset of ASCII), this is supported for Linux (only for locales encoded in UTF8)
|