Top-level include file for DynamoRIO API. More...
|#define||DR_DISALLOW_UNSAFE_STATIC DR_EXPORT LINK_ONCE int _DR_DISALLOW_UNSAFE_STATIC_ = 1;|
|DR_EXPORT void||dr_client_main (client_id_t id, int argc, const char *argv)|
|DR_EXPORT void||dr_init (client_id_t id)|
Top-level include file for DynamoRIO API.
Macro Definition Documentation
|#define DR_DISALLOW_UNSAFE_STATIC DR_EXPORT LINK_ONCE int _DR_DISALLOW_UNSAFE_STATIC_ = 1;|
This declaration requests that DR perform sanity checks to ensure that client libraries will also operate safely when linked statically into an application. These checks include ensuring that the system allocator is not called outside of process initialization or exit, where such calls raise transparency issues due to the lack of isolation without a private loader. Currently, these checks are only performed in debug builds on UNIX. This can be overridden in client code by calling dr_allow_unsafe_static_behavior().
|DR_EXPORT void dr_client_main||(||client_id_t||id,|
|const char *||argv|
When registering a process, users must provide a list of paths to client libraries and their associated client-specific options. DR looks up "dr_client_main" in each client library and calls that function when the process starts. Clients can register to receive callbacks for the various events within dr_client_main(). Note that client paths and options cannot include semicolons.
The arguments passed to the client are specified in
argv. To match standalone application conventions,
argv is set to the client library path, with the actual parameters starting at index 1.