Instrumentation arguments


Typedefs

typedef IARGLIST_CLASS * IARGLIST

Enumerations

enum  IPOINT {
  IPOINT_INVALID,
  IPOINT_BEFORE,
  IPOINT_AFTER,
  IPOINT_ANYWHERE,
  IPOINT_TAKEN_BRANCH
}
enum  IARG_TYPE {
  IARG_INVALID,
  IARG_END,
  IARG_ADDRINT,
  IARG_PTR,
  IARG_BOOL,
  IARG_UINT32,
  IARG_INST_PTR,
  IARG_REG_VALUE,
  IARG_REG_REFERENCE,
  IARG_REG_CONST_REFERENCE,
  IARG_MEMORYREAD_EA,
  IARG_MEMORYREAD2_EA,
  IARG_MEMORYWRITE_EA,
  IARG_MEMORYREAD_SIZE,
  IARG_MEMORYWRITE_SIZE,
  IARG_BRANCH_TAKEN,
  IARG_BRANCH_TARGET_ADDR,
  IARG_FALLTHROUGH_ADDR,
  IARG_EXECUTING,
  IARG_PREDICATE,
  IARG_REP_SIZE,
  IARG_STACK_VALUE,
  IARG_STACK_REFERENCE,
  IARG_SYSCALL_NUMBER,
  IARG_SYSARG_REFERENCE,
  IARG_SYSARG_VALUE,
  IARG_SYSRET_VALUE,
  IARG_SYSRET_ERRNO,
  IARG_FUNCARG_CALLSITE_REFERENCE,
  IARG_FUNCARG_CALLSITE_VALUE,
  IARG_FUNCARG_ENTRYPOINT_REFERENCE,
  IARG_FUNCARG_ENTRYPOINT_VALUE,
  IARG_FUNCRET_EXITPOINT_REFERENCE,
  IARG_FUNCRET_EXITPOINT_VALUE,
  IARG_RETURN_IP,
  IARG_ORIG_FUNCPTR,
  IARG_PROTOTYPE,
  IARG_THREAD_ID,
  IARG_CHECKPOINT,
  IARG_CONTEXT,
  IARG_RETURN_REGS,
  IARG_REG_NAT_VALUE,
  IARG_REG_OUTPUT_FRAME_VALUE,
  IARG_REG_OUTPUT_FRAME_REFERENCE,
  IARG_IARGLIST,
  IARG_SYSCALL_ARG0,
  IARG_SYSCALL_ARGBASE = IARG_SYSCALL_ARG0,
  IARG_SYSCALL_ARG1,
  IARG_SYSCALL_ARG2,
  IARG_SYSCALL_ARG3,
  IARG_SYSCALL_ARG4,
  IARG_SYSCALL_ARG5,
  IARG_SYSCALL_ARGLAST = IARG_SYSCALL_ARG5,
  IARG_G_RESULT0,
  IARG_G_RETBASE = IARG_G_RESULT0,
  IARG_G_RESULTLAST = IARG_G_RESULT0,
  IARG_G_ARG0_CALLEE,
  IARG_G_ARGBASE_CALLEE = IARG_G_ARG0_CALLEE,
  IARG_G_ARG1_CALLEE,
  IARG_G_ARG2_CALLEE,
  IARG_G_ARG3_CALLEE,
  IARG_G_ARG4_CALLEE,
  IARG_G_ARG5_CALLEE,
  IARG_G_ARGLAST_CALLEE = IARG_G_ARG5_CALLEE,
  IARG_G_ARG0_CALLER,
  IARG_G_ARGBASE_CALLER = IARG_G_ARG0_CALLER,
  IARG_G_ARG1_CALLER,
  IARG_G_ARG2_CALLER,
  IARG_G_ARG3_CALLER,
  IARG_G_ARG4_CALLER,
  IARG_G_ARG5_CALLER,
  IARG_G_ARGLAST_CALLER = IARG_G_ARG5_CALLER
}

Functions

VOID LEVEL_PINCLIENT::IARGLIST_AddArguments (IARGLIST args,...)
IARGLIST LEVEL_PINCLIENT::IARGLIST_Alloc ()
VOID LEVEL_PINCLIENT::IARGLIST_Free (IARGLIST args)

Detailed Description

See INS_InsertCall

Typedef Documentation

typedef IARGLIST_CLASS* IARGLIST
 

List of IARG_TYPE elements. See IARGLIST_Alloc() for its use.


Enumeration Type Documentation

enum IARG_TYPE
 

Determines the arguments that are passed to the analysis call.

Enumerator:
IARG_END  Must be last in IARG list for *_InsertCall.
IARG_ADDRINT  Type: ADDRINT. Constant value (additional arg required).
IARG_PTR  Type: VOID *. Constant value (additional pointer arg required).
IARG_BOOL  Type: BOOL. Constant (additional BOOL arg required).
IARG_UINT32  Type: UINT32. Constant (additional integer arg required).
IARG_INST_PTR  Type: ADDRINT. The address of the instrumented instruction. This value does not change at IPOINT_AFTER.
IARG_REG_VALUE  Type: ADDRINT for integer register. Value of a register (additional register arg required) REG: Register Object.
IARG_REG_REFERENCE  Type: PIN_REGISTER *. Pointer to union holding register contents. Registers are updated.
IARG_REG_CONST_REFERENCE  Type: PIN_REGISTER *. Pointer to union holding register contents. Registers are not updated.
IARG_MEMORYREAD_EA  Type: ADDRINT. Effective address of a memory read, only valid if INS_IsMemoryRead is true.
IARG_MEMORYREAD2_EA  Type: ADDRINT. Effective address of a 2nd memory read (e.g. 2nd operand in cmps on ia32).
IARG_MEMORYWRITE_EA  Type: ADDRINT. Effective address of a memory write.
IARG_MEMORYREAD_SIZE  Type: ADDRINT. Size in bytes of memory read, repeating ia32 string instructions are treated as a single memory operation.
IARG_MEMORYWRITE_SIZE  Type: ADDRINT. Size in bytes of memory write.
IARG_BRANCH_TAKEN  Type: BOOL. Non zero if a branch is taken.
IARG_BRANCH_TARGET_ADDR  Type: ADDRINT. Target address of this branch instruction, only valid if INS_IsBranchOrCall is true.
IARG_FALLTHROUGH_ADDR  Type: ADDRINT. Fall through address of this instruction.
IARG_EXECUTING  Type: BOOL. Return false if the instruction will not be executed because of predication, otherwise true.
IARG_PREDICATE  Reserved. Do not use.
IARG_REP_SIZE  Reserved. Do not use.
IARG_STACK_VALUE  Reserved. Do not use.
IARG_STACK_REFERENCE  Reserved. Do not use.
IARG_SYSCALL_NUMBER  Type: ADDRINT. System call number. Valid for IPOINT_BEFORE at the system call instruction.
IARG_SYSARG_REFERENCE  Type: ADDRINT *. Pointer to system call argument n. Valid for IPOINT_BEFORE at the system call instruction.
IARG_SYSARG_VALUE  Type: ADDRINT. System call argument n. Valid for IPOINT_BEFORE at the system call instruction.
IARG_SYSRET_VALUE  Type: ADDRINT. System call return value. -1 if unsuccessful. (IPOINT_AFTER only).
IARG_SYSRET_ERRNO  Type: INT32. System call errno (IPOINT_AFTER_only).
IARG_FUNCARG_CALLSITE_REFERENCE  Type: ADDRINT *. Pointer to integer argument n. Valid at the call site.
IARG_FUNCARG_CALLSITE_VALUE  Type: ADDRINT. Integer argument n. Valid at the call site.
IARG_FUNCARG_ENTRYPOINT_REFERENCE  Type: ADDRINT *. Pointer to integer argument n. Valid at the entry point of a routine.
IARG_FUNCARG_ENTRYPOINT_VALUE  Type: ADDRINT. Integer argument n. Valid at the entry point of a routine.
IARG_FUNCRET_EXITPOINT_REFERENCE  Type: ADDRINT *. Pointer to function result. Valid at return instruction.
IARG_FUNCRET_EXITPOINT_VALUE  Type: ADDRINT. Function result. Valid at return instruction.
IARG_RETURN_IP  Type: ADDRINT. Return address for function call, only valid at the function entry point.
IARG_ORIG_FUNCPTR  Type: AFUNPTR. Function pointer to the relocated entry of the original uninstrumented function.
IARG_PROTOTYPE  Type: PROTO. The function prototype of the application function. See Prototypes.
IARG_THREAD_ID  Type: UINT32. Application thread id.
IARG_CHECKPOINT  Type: CHECKPOINT. Handle to access a checkpoint (processor state).
IARG_CONTEXT  Type: CONTEXT. Handle to access a context (architectural state).
IARG_RETURN_REGS  Register to write analysis function return value (additional register arg required).
IARG_REG_NAT_VALUE  Type: BOOL. Nat value of register. Ipf only.
IARG_REG_OUTPUT_FRAME_VALUE  Type: ADDRINT for integer registers. Like IARG_REG_VALUE, but use index into RSE output frame instead of register name. Ipf only.
IARG_REG_OUTPUT_FRAME_REFERENCE  Type: ADDRINT *. Like IARG_REG_REFERENCE, but use index into RSE output frame instead of register name. Ipf only.
IARG_IARGLIST  Type: IARGLIST. List of IARGS which can be constructed one IARG at a time.
IARG_SYSCALL_ARG0  DEPRECATED, see IARG_SYSARG_CALLSITE_{VALUE,REFERENCE}.
IARG_SYSCALL_ARG1  DEPRECATED, see IARG_SYSARG_CALLSITE_{VALUE,REFERENCE}.
IARG_SYSCALL_ARG2  DEPRECATED, see IARG_SYSARG_CALLSITE_{VALUE,REFERENCE}.
IARG_SYSCALL_ARG3  DEPRECATED, see IARG_SYSARG_CALLSITE_{VALUE,REFERENCE}.
IARG_SYSCALL_ARG4  DEPRECATED, see IARG_SYSARG_CALLSITE_{VALUE,REFERENCE}.
IARG_SYSCALL_ARG5  DEPRECATED, see IARG_SYSARG_CALLSITE_{VALUE,REFERENCE}.
IARG_G_RESULT0  DEPRECATED, see IARG_SYSRET_{VALUE,REFERENCE}.
IARG_G_ARG0_CALLEE  DEPRECATED, see IARG_FUNCARG_CALLSITE_{VALUE,REFERENCE}.
IARG_G_ARG1_CALLEE  DEPRECATED, see IARG_FUNCARG_CALLSITE_{VALUE,REFERENCE}.
IARG_G_ARG2_CALLEE  DEPRECATED, see IARG_FUNCARG_CALLSITE_{VALUE,REFERENCE}.
IARG_G_ARG3_CALLEE  DEPRECATED, see IARG_FUNCARG_CALLSITE_{VALUE,REFERENCE}.
IARG_G_ARG4_CALLEE  DEPRECATED, see IARG_FUNCARG_CALLSITE_{VALUE,REFERENCE}.
IARG_G_ARG5_CALLEE  DEPRECATED, see IARG_FUNCARG_CALLSITE_{VALUE,REFERENCE}.
IARG_G_ARG0_CALLER  DEPRECATED, see IARG_FUNCARG_ENTRYPOINT_{VALUE,REFERENCE}.
IARG_G_ARG1_CALLER  DEPRECATED, see IARG_FUNCARG_ENTRYPOINT_{VALUE,REFERENCE}.
IARG_G_ARG2_CALLER  DEPRECATED, see IARG_FUNCARG_ENTRYPOINT_{VALUE,REFERENCE}.
IARG_G_ARG3_CALLER  DEPRECATED, see IARG_FUNCARG_ENTRYPOINT_{VALUE,REFERENCE}.
IARG_G_ARG4_CALLER  DEPRECATED, see IARG_FUNCARG_ENTRYPOINT_{VALUE,REFERENCE}.
IARG_G_ARG5_CALLER  DEPRECATED, see IARG_FUNCARG_ENTRYPOINT_{VALUE,REFERENCE}.

enum IPOINT
 

Determines where the analysis call is inserted relative to the instrumented object

Enumerator:
IPOINT_BEFORE  Insert a call before an instruction or routine.
IPOINT_AFTER  Insert a call on the fall thorugh path of an instruction or return path of a routine.
IPOINT_ANYWHERE  Insert a call anywhere inside a trace or a bbl.
IPOINT_TAKEN_BRANCH  Insert a call on the taken edge of branch, side effects of branch are visible.


Function Documentation

VOID LEVEL_PINCLIENT::IARGLIST_AddArguments IARGLIST  args,
  ...
 

Add an argument to an IARGLIST.

IARGLIST LEVEL_PINCLIENT::IARGLIST_Alloc  ) 
 

Allocate a container to hold instrumentation arguments. Pass to *_InsertCall by using IARG_LIST

VOID LEVEL_PINCLIENT::IARGLIST_Free IARGLIST  args  ) 
 

Free a container to hold instrumentation arguments. Pass to *_InsertCall by using IARG_LIST


Generated on Tue Jan 16 00:09:08 2007 for Pin by  doxygen 1.4.6