DynamoRIO
|
Top-level include file for DynamoRIO API. More...
#include "dr_defines.h"
#include "dr_events.h"
#include "dr_app.h"
#include "dr_ir_opnd.h"
#include "dr_modules.h"
#include "dr_os_utils.h"
#include "dr_tools.h"
#include "dr_proc.h"
#include "dr_ir_encode.h"
#include "dr_ir_instr.h"
#include "dr_ir_instr_inline.h"
#include "dr_ir_decode.h"
#include "dr_ir_disassemble.h"
#include "dr_ir_utils.h"
#include "dr_ir_instrlist.h"
#include "dr_ir_opcodes.h"
#include "dr_ir_macros.h"
#include "dr_tracedump.h"
#include "dr_annotation.h"
Macros | |
#define | DR_DISALLOW_UNSAFE_STATIC DR_EXPORT LINK_ONCE int _DR_DISALLOW_UNSAFE_STATIC_ = 1; |
Functions | |
DR_EXPORT void | dr_client_main (client_id_t id, int argc, const char *argv[]) |
DR_EXPORT void | dr_init (client_id_t id) |
Detailed Description
Top-level include file for DynamoRIO API.
Macro Definition Documentation
◆ DR_DISALLOW_UNSAFE_STATIC
#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().
Function Documentation
◆ dr_client_main()
DR_EXPORT void dr_client_main | ( | client_id_t | id, |
int | argc, | ||
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.
client_id
is the ID supplied at registration and is used to identify the client for dr_get_option_array(), dr_get_client_path(), and external nudges.
The arguments passed to the client are specified in argc
and argv
. To match standalone application conventions, argv
[0] is set to the client library path, with the actual parameters starting at index 1.
◆ dr_init()
DR_EXPORT void dr_init | ( | client_id_t | id | ) |
Legacy, deprecated initialization routine.