Dr. Memory
|
#include <drsyscall.h>
Data Fields | |
drsys_syscall_t * | syscall |
drsys_sysnum_t | sysnum |
void * | drcontext |
bool | pre |
dr_mcontext_t * | mc |
int | ordinal |
drsys_param_mode_t | mode |
drsys_param_type_t | type |
const char * | type_name |
drsys_param_type_t | containing_type |
const char * | arg_name |
reg_id_t | reg |
bool | valid |
void * | start_addr |
ptr_uint_t | value |
size_t | size |
uint64 | value64 |
const char * | enum_name |
Detailed Description
Describes a system call parameter or memory region.
Field Documentation
◆ arg_name
const char* _drsys_arg_t::arg_name |
A string describing the parameter. This may be NULL.
◆ containing_type
drsys_param_type_t _drsys_arg_t::containing_type |
For the memarg iterator, the type of the containing structure. This is only set for some types when the sub-fields of the sructure are separated into different pieces due to gaps in the structure and the containing structure has its own type enum value. If not valid, it is set to DRSYS_TYPE_INVALID. Invalid for the arg iterator.
◆ drcontext
void* _drsys_arg_t::drcontext |
The current thread's drcontext. Set for the dynamic iterators only.
◆ enum_name
const char* _drsys_arg_t::enum_name |
A string describing the symbolic name of named constant. Indicates first entry in the set of enum or define constants. May be NULL.
◆ mc
dr_mcontext_t* _drsys_arg_t::mc |
The application state, cached at the pre- or post-system call event. This contains DR_MC_CONTROL|DR_MC_INTEGER. Set for the dynamic iterators only.
◆ mode
drsys_param_mode_t _drsys_arg_t::mode |
The mode (whether inlined, or read or written memory, etc.) of the parameter.
◆ ordinal
int _drsys_arg_t::ordinal |
The ordinal of the parameter. Set to -1 for a return value.
◆ pre
bool _drsys_arg_t::pre |
Whether operating pre-system call (if true) or post-system call (if false). Set for the dynamic iterators only (drsys_iterate_args() and drsys_iterate_memargs()).
◆ reg
reg_id_t _drsys_arg_t::reg |
If not set to DR_REG_NULL, indicates which register the parameter's value is stored in.
◆ size
size_t _drsys_arg_t::size |
For the memarg iterator, specifies the size in bytes of the memory region. For the arg iterator, specifies the size in bytes of the parameter.
◆ start_addr
void* _drsys_arg_t::start_addr |
For the memarg iterator, holds the address of the start of the memory region represented by this parameter. For the arg iterator, if this parameter is in memory, holds the address of the memory location; if this parameter is a register, holds NULL (and the register is in the reg
field).
◆ syscall
drsys_syscall_t* _drsys_arg_t::syscall |
The system call handle.
◆ sysnum
drsys_sysnum_t _drsys_arg_t::sysnum |
The system call number.
◆ type
drsys_param_type_t _drsys_arg_t::type |
The type of the parameter.
◆ type_name
const char* _drsys_arg_t::type_name |
A string further describing the type of the parameter. May be NULL.
◆ valid
bool _drsys_arg_t::valid |
Indicates whether the start_addr and value fields are valid. For memarg iteration, this is always true, as a failure to read will result in not calling the callback for that memarg. For arg iteration this field can be false. For static iteration this field is always false.
◆ value
ptr_uint_t _drsys_arg_t::value |
For the arg iterator, holds the value of the parameter. Unused for the memarg iterator.
- Deprecated:
- For 32-bit applications, some platforms (namely MacOS) support 64-bit arguments. For such cases, this field will hold only the bottom 32 bits of the value. Use the
value64
field to retrieve the whole value. For cross-platform code, we recommend usingvalue64
rather than this field.
◆ value64
uint64 _drsys_arg_t::value64 |
Identical to value
, except it holds the full value of the parameter for the arg iterator for 32-bit applications on MacOS when the value is an 8-byte type. For cross-plaform code, we recommend using this field rather than value
.
Unused for the memarg iterator.
The documentation for this struct was generated from the following file: