Classes | |
struct | ImageLoaderInfo |
struct | LINUX_LOADER_IMAGE_INFO |
Typedefs | |
typedef PINVM::PINSYNC_POD_LOCK | PIN_MUTEX |
typedef PINVM::PINSYNC_POD_RWLOCK | PIN_RWMUTEX |
typedef PINVM::PINSYNC_POD_SEMAPHORE | PIN_SEMAPHORE |
typedef BOOL(* | MESSAGE_CALLBACK )(const string &message, PIN_ERRTYPE type, INT32 userType, INT32 severity, INT32 numArgs, va_list ap) |
typedef STAT_INTEGRAL< UINT32 > | STAT_UINT32 |
typedef STAT_INTEGRAL< SIZE > | STAT_SIZE |
typedef STAT_INTEGRAL< UINT64 > | STAT_UINT64 |
typedef STAT_INTEGRAL< INT64 > | STAT_INT64 |
typedef STAT_SINGLE< FLT32 > | STAT_FLT32 |
typedef STAT_SINGLE< FLT64 > | STAT_FLT64 |
typedef STAT_FLT64 | STAT1 |
typedef INT32 | TLS_KEY |
typedef UINT8 | REGTYPE |
typedef UINT64 | REG_CLASS_BITS |
typedef VOID(* | AFUNPTR )() |
typedef VOID *(* | THREAD_STARTROUTINE )(void *) |
typedef VOID(* | DESTRUCTFUN )(void *) |
typedef UINT16 | OPCODE |
typedef PREDICATE_IA32 | PREDICATE |
Enumerations | |
enum | KNOB_MODE { KNOB_MODE_INVALID, KNOB_MODE_COMMENT, KNOB_MODE_WRITEONCE, KNOB_MODE_OVERWRITE, KNOB_MODE_ACCUMULATE, KNOB_MODE_APPEND, KNOB_MODE_LAST } |
enum | LOGTYPE { LOGTYPE_CONSOLE, LOGTYPE_LOGFILE, LOGTYPE_CONSOLE_AND_LOGFILE } |
enum | PIN_LOAD_STATUS { PIN_LOAD_STATUS_INVALID, PIN_LOAD_STATUS_INJECTOR, PIN_LOAD_STATUS_ATTACHED, PIN_LOAD_STATUS_CLEAR, PIN_LOAD_STATUS_CHILD_RUNS_APP, PIN_LOAD_STATUS_PARENT_RUNS_APP, PIN_LOAD_STATUS_SELF_RUNS_APP, PIN_LOAD_STATUS_DETACHED_LITE, PIN_LOAD_STATUS_DETACHED_FULL } |
enum | REGALLOC_HINT_TYPE { REGALLOC_HINT_INVALID, REGALLOC_HINT_FREEBEFORE, REGALLOC_HINT_FREEAFTER, REGALLOC_HINT_REG_IN_PREG_AFTER, REGALLOC_HINT_REG_IN_MEM_AFTER } |
enum | STAT_TYPE { STAT_TYPE_INVALID, STAT_TYPE_SINGLE, STAT_TYPE_SD, STAT_TYPE_BA, STAT_TYPE_NORM, STAT_TYPE_DIST } |
enum | PREDICATE_IA32 { PREDICATE_ALWAYS_TRUE, PREDICATE_INVALID, PREDICATE_BELOW, PREDICATE_BELOW_OR_EQUAL, PREDICATE_LESS, PREDICATE_LESS_OR_EQUAL, PREDICATE_NOT_BELOW, PREDICATE_NOT_BELOW_OR_EQUAL, PREDICATE_NOT_LESS, PREDICATE_NOT_LESS_OR_EQUAL, PREDICATE_NOT_OVERFLOW, PREDICATE_NOT_PARITY, PREDICATE_NOT_SIGN, PREDICATE_NOT_ZERO, PREDICATE_OVERFLOW, PREDICATE_PARITY, PREDICATE_SIGN, PREDICATE_ZERO, PREDICATE_CX_NON_ZERO, PREDICATE_ECX_NON_ZERO, PREDICATE_RCX_NON_ZERO, PREDICATE_SAVED_GCX_NON_ZERO, PREDICATE_LAST } |
enum | CPU_FEATURE { CPU_FEATURE_FIRST = 0, CPU_FEATURE_SSE = CPU_FEATURE_FIRST, CPU_FEATURE_SSE2, CPU_FEATURE_SSE3, CPU_FEATURE_EST, CPU_FEATURE_PBE, CPU_FEATURE_FXSR, CPU_FEATURE_CX8, CPU_FEATURE_CMOV, CPU_FEATURE_LAHF_SAHF, CPU_FEATURE_AVX, CPU_FEATURE_AVX2, CPU_FEATURE_AVX512F, CPU_FEATURE_AVX512BW, CPU_FEATURE_LAST = CPU_FEATURE_AVX512BW } |
enum | CPU_XFEATURE_BIT { CPU_XFEATURE_BIT_X87 = (1 << 0), CPU_XFEATURE_BIT_SSE = (1 << 1), CPU_XFEATURE_BIT_AVX = (1 << 2), CPU_XFEATURE_BIT_BNDREGS = (1 << 3), CPU_XFEATURE_BIT_BNDCSR = (1 << 4), CPU_XFEATURE_BIT_OPMASK = (1 << 5), CPU_XFEATURE_BIT_ZMM_HI256 = (1 << 6), CPU_XFEATURE_BIT_HI16_ZMM = (1 << 7), CPU_XFEATURE_BIT_AVX512F = CPU_XFEATURE_BIT_OPMASK | CPU_XFEATURE_BIT_ZMM_HI256 | CPU_XFEATURE_BIT_HI16_ZMM } |
enum | VECTOR_REGISTER_SET { VECTOR_REGISTER_SET_NONE, VECTOR_REGISTER_SET_AVX, VECTOR_REGISTER_SET_AVX512 } |
enum | REG { REG_INVALID_ = 0, REG_GR_BASE = REG_RBASE, REG_EDI = REG_GR_BASE, REG_GDI = REG_EDI, REG_ESI, REG_GSI = REG_ESI, REG_EBP, REG_GBP = REG_EBP, REG_ESP, REG_STACK_PTR = REG_ESP, REG_EBX, REG_GBX = REG_EBX, REG_EDX, REG_GDX = REG_EDX, REG_ECX, REG_GCX = REG_ECX, REG_EAX, REG_GAX = REG_EAX, REG_GR_LAST = REG_EAX, REG_SEG_BASE, REG_SEG_CS = REG_SEG_BASE, REG_SEG_SS, REG_SEG_DS, REG_SEG_ES, REG_SEG_FS, REG_SEG_GS, REG_SEG_LAST = REG_SEG_GS, REG_EFLAGS, REG_GFLAGS = REG_EFLAGS, REG_EIP, REG_INST_PTR = REG_EIP, REG_AL, REG_AH, REG_AX, REG_CL, REG_CH, REG_CX, REG_DL, REG_DH, REG_DX, REG_BL, REG_BH, REG_BX, REG_BP, REG_SI, REG_DI, REG_SP, REG_FLAGS, REG_IP, REG_MM_BASE, REG_MM0 = REG_MM_BASE, REG_MM1, REG_MM2, REG_MM3, REG_MM4, REG_MM5, REG_MM6, REG_MM7, REG_MM_LAST = REG_MM7, REG_EMM_BASE, REG_EMM0 = REG_EMM_BASE, REG_EMM1, REG_EMM2, REG_EMM3, REG_EMM4, REG_EMM5, REG_EMM6, REG_EMM7, REG_EMM_LAST = REG_EMM7, REG_XMM_BASE, REG_FIRST_FP_REG = REG_XMM_BASE, REG_XMM0 = REG_XMM_BASE, REG_XMM1, REG_XMM2, REG_XMM3, REG_XMM4, REG_XMM5, REG_XMM6, REG_XMM7, REG_XMM_SSE_LAST = REG_XMM7, REG_XMM_AVX_LAST = REG_XMM_SSE_LAST, REG_XMM_AVX512_LAST = REG_XMM_AVX_LAST, REG_XMM_LAST = REG_XMM_AVX512_LAST, REG_YMM_BASE, REG_YMM0 = REG_YMM_BASE, REG_YMM1, REG_YMM2, REG_YMM3, REG_YMM4, REG_YMM5, REG_YMM6, REG_YMM7, REG_YMM_AVX_LAST = REG_YMM7, REG_YMM_AVX512_LAST = REG_YMM_AVX_LAST, REG_YMM_LAST = REG_YMM_AVX512_LAST, REG_ZMM_BASE, REG_ZMM0 = REG_ZMM_BASE, REG_ZMM1, REG_ZMM2, REG_ZMM3, REG_ZMM4, REG_ZMM5, REG_ZMM6, REG_ZMM7, REG_ZMM_AVX512_SPLIT_LAST = REG_ZMM7, REG_ZMM_AVX512_LAST = REG_ZMM_AVX512_SPLIT_LAST, REG_ZMM_LAST = REG_ZMM_AVX512_LAST, REG_K_BASE, REG_K0 = REG_K_BASE, REG_IMPLICIT_FULL_MASK = REG_K0, REG_K1, REG_K2, REG_K3, REG_K4, REG_K5, REG_K6, REG_K7, REG_K_LAST = REG_K7, REG_MXCSR, REG_MXCSRMASK, REG_ORIG_EAX, REG_ORIG_GAX = REG_ORIG_EAX, REG_FPST_BASE, REG_FPSTATUS_BASE = REG_FPST_BASE, REG_FPCW = REG_FPSTATUS_BASE, REG_FPSW, REG_FPTAG, REG_FPIP_OFF, REG_FPIP_SEL, REG_FPOPCODE, REG_FPDP_OFF, REG_FPDP_SEL, REG_FPSTATUS_LAST = REG_FPDP_SEL, REG_FPTAG_FULL, REG_ST_BASE, REG_ST0 = REG_ST_BASE, REG_ST1, REG_ST2, REG_ST3, REG_ST4, REG_ST5, REG_ST6, REG_ST7, REG_ST_LAST = REG_ST7, REG_FPST_LAST = REG_ST_LAST, REG_DR_BASE, REG_DR0 = REG_DR_BASE, REG_DR1, REG_DR2, REG_DR3, REG_DR4, REG_DR5, REG_DR6, REG_DR7, REG_DR_LAST = REG_DR7, REG_CR_BASE, REG_CR0 = REG_CR_BASE, REG_CR1, REG_CR2, REG_CR3, REG_CR4, REG_CR_LAST = REG_CR4, REG_TSSR, REG_LDTR, REG_TR_BASE, REG_TR = REG_TR_BASE, REG_TR3, REG_TR4, REG_TR5, REG_TR6, REG_TR7, REG_TR_LAST = REG_TR7, REG_SEG_GS_BASE = REG_TOOL_BASE, REG_SEG_FS_BASE, REG_INST_BASE, REG_INST_SCRATCH_BASE = REG_INST_BASE, REG_INST_G0 = REG_INST_SCRATCH_BASE, REG_INST_G1, REG_INST_G2, REG_INST_G3, REG_INST_G4, REG_INST_G5, REG_INST_G6, REG_INST_G7, REG_INST_G8, REG_INST_G9, REG_INST_G10, REG_INST_G11, REG_INST_G12, REG_INST_G13, REG_INST_G14, REG_INST_G15, REG_INST_G16, REG_INST_G17, REG_INST_G18, REG_INST_G19, REG_INST_G20, REG_INST_G21, REG_INST_G22, REG_INST_G23, REG_INST_G24, REG_INST_G25, REG_INST_G26, REG_INST_G27, REG_INST_G28, REG_INST_G29, REG_INST_TOOL_FIRST = REG_INST_G0, REG_INST_TOOL_LAST = REG_INST_G29, REG_BUF_BASE0, REG_BUF_BASE1, REG_BUF_BASE2, REG_BUF_BASE3, REG_BUF_BASE4, REG_BUF_BASE5, REG_BUF_BASE6, REG_BUF_BASE7, REG_BUF_BASE8, REG_BUF_BASE9, REG_BUF_BASE_LAST = REG_BUF_BASE9, REG_BUF_END0, REG_BUF_END1, REG_BUF_END2, REG_BUF_END3, REG_BUF_END4, REG_BUF_END5, REG_BUF_END6, REG_BUF_END7, REG_BUF_END8, REG_BUF_END9, REG_BUF_ENDLAST = REG_BUF_END9, REG_BUF_LAST = REG_BUF_ENDLAST, REG_INST_SCRATCH_LAST = REG_BUF_LAST, REG_TOOL_LAST = REG_BUF_LAST, REG_LAST } |
enum | REGNAME { REGNAME_LAST } |
enum | REGWIDTH { REGWIDTH_8 = 0, REGWIDTH_16 = 1, REGWIDTH_32 = 2, REGWIDTH_64 = 3, REGWIDTH_80, REGWIDTH_128, REGWIDTH_256, REGWIDTH_512, REGWIDTH_FPSTATE, REGWIDTH_INVALID, REGWIDTH_NATIVE = REGWIDTH_64 } |
enum | REG_CLASS { REG_CLASS_NONE = 0, REG_CLASS_PSEUDO, REG_CLASS_GR, REG_CLASS_GRU8, REG_CLASS_GRL8, REG_CLASS_GRH16, REG_CLASS_GRH32, REG_CLASS_SEG, REG_CLASS_MM, REG_CLASS_EMM, REG_CLASS_XMM, REG_CLASS_YMM, REG_CLASS_ZMM, REG_CLASS_K, REG_CLASS_FPST, REG_CLASS_ST, REG_CLASS_CR, REG_CLASS_DR, REG_CLASS_TR, REG_CLASS_FLAGS, REG_CLASS_FLAGS16, REG_CLASS_FLAGS32, REG_CLASS_STATUS_FLAGS, REG_CLASS_DFLAG, REG_CLASS_X87, REG_CLASS_MXCSR, REG_CLASS_MXCSRMASK, REG_CLASS_IP, REG_CLASS_IP16, REG_CLASS_IP32, REG_CLASS_ARCH, REG_CLASS_PIN_GR, REG_CLASS_PIN_GRU8, REG_CLASS_PIN_GRL8, REG_CLASS_PIN_GRH16, REG_CLASS_PIN_GRH32, REG_CLASS_PIN_XMM, REG_CLASS_PIN_YMM, REG_CLASS_PIN_ZMM, REG_CLASS_PIN_K, REG_CLASS_PIN_X87, REG_CLASS_PIN_MXCSR, REG_CLASS_PIN_FLAGS, REG_CLASS_PIN_STATUS_FLAGS, REG_CLASS_PIN_DFLAG } |
enum | REG_SUBCLASS { REG_SUBCLASS_NONE = 0, REG_SUBCLASS_REX, REG_SUBCLASS_FULL_STACKPTR, REG_SUBCLASS_PIN_FULL_STACKPTR, REG_SUBCLASS_PIN_TMP, REG_SUBCLASS_PIN_INST_GR, REG_SUBCLASS_PIN_INST_GR_H32, REG_SUBCLASS_PIN_INST_BUF, REG_SUBCLASS_PIN_INST_COND } |
enum | REG_ALLOC_TYPE { REG_ALLOC_NONE = 0, REG_ALLOC_PART, REG_ALLOC_ANY_GR, REG_ALLOC_IDENT, REG_ALLOC_CR = REG_ALLOC_IDENT, REG_ALLOC_DR = REG_ALLOC_IDENT, REG_ALLOC_TR = REG_ALLOC_IDENT, REG_ALLOC_ST = REG_ALLOC_IDENT, REG_ALLOC_MM = REG_ALLOC_IDENT, REG_ALLOC_EMM = REG_ALLOC_IDENT, REG_ALLOC_XMM = REG_ALLOC_IDENT, REG_ALLOC_YMM = REG_ALLOC_IDENT, REG_ALLOC_ZMM = REG_ALLOC_IDENT, REG_ALLOC_K = REG_ALLOC_IDENT, REG_ALLOC_SEG = REG_ALLOC_IDENT, REG_ALLOC_STACK_PTR = REG_ALLOC_IDENT, REG_ALLOC_X87 = REG_ALLOC_IDENT, REG_ALLOC_FLAGS = REG_ALLOC_IDENT, REG_ALLOC_STATUS_FLAGS = REG_ALLOC_IDENT, REG_ALLOC_DFLAG = REG_ALLOC_IDENT } |
Functions | |
LOCALFUN INT32 | MEGA (INT32 v) |
LOCALFUN INT32 | KILO (INT32 v) |
LOCALVAR STAT_NORM | StatStripeBytes ("mem","bytes","stripe","",&StatRawMmapBytes) |
LOCALVAR STAT_UINT64 | STAT_ArrayBaseAlloc ("pin","array_base","alloc","") |
LOCALVAR STAT_UINT64 | STAT_ArrayBaseFree ("pin","array_base","free","") |
STAT_UINT64 | STAT_TotalAttempts_COMPLEXLOCK ("pin","complexlock","attempts","") |
STAT_UINT64 | STAT_TotalSpins_COMPLEXLOCK ("pin","complexlock","spins_total","") |
STAT_UINT64 | STAT_MaxSpins_COMPLEXLOCK ("pin","complexlock","spins_max","") |
STAT_NORM | STAT_WaitTime_COMPLEXLOCK ("pin","time","complexlock_wait","",&TimerApp) |
ATOMIC_STATS | STAT_Backoff_COMPLEXLOCK ("pin","complexlock") |
LOCALCONST char * | SeverityToString (int num) |
LOCALFUN string | StripNewline (const string &cstr) |
LOCALFUN VOID | XML_encode (const string &source, string &destination) |
LOCALFUN string | LowerDash (const string &s) |
LOCALFUN int | cmp (const void *x1, const void *x2) |
LOCALVAR KNOB_COMMENT | KnobUserAndPintoolFamily ("user&pintool","General switches (available in pin and tool)") |
LOCALVAR KNOB_COMMENT | KnobMemoryConstraintsFamily ("user:memory","Knobs for constraining memory usage") |
KNOB< BOOL > | KnobSlowAsserts (KNOB_MODE_WRITEONCE,"user&pintool","slow_asserts","0","Perform expensive sanity checks") |
KNOB< BOOL > | KnobIFeelLucky (KNOB_MODE_WRITEONCE,"user","ifeellucky","0","skip warning message for unsupported platforms and convert some errors to warnings") |
KNOB< BOOL > | KnobAllowMt (KNOB_MODE_WRITEONCE,"user","mt","1","Allow multithreaded programs") |
KNOB< UINT32 > | KnobAttachToProcessPid (KNOB_MODE_WRITEONCE,"user","pid","0","Attach to process with PID") |
KNOB< BOOL > | KnobDetachReattachActive (KNOB_MODE_WRITEONCE,"user","detach_reattach","0","Allow detach and reattach in probe mode") |
KNOB< UINT32 > | KnobWaitingProcess (KNOB_MODE_WRITEONCE,"internal","waiting_process","0","Attach to waiting process with PID") |
KNOB< UINT32 > | KnobWaitingInjector (KNOB_MODE_WRITEONCE,"internal","waiting_injector","0","PID of waiting injector process") |
KNOB< UINT32 > | KnobSigChildHandler (KNOB_MODE_WRITEONCE,"internal","sigchld_handler","0","PID of waiting injector process") |
KNOB< string > | KnobErrorFile (KNOB_MODE_WRITEONCE,"user","error_file","","The error file name") |
KNOB< BOOL > | KnobUniqueErrorFile (KNOB_MODE_WRITEONCE,"user","unique_error_file","0","The error file name will contain the pid") |
KNOB< string > | KnobLogFile (KNOB_MODE_WRITEONCE,"user","logfile","pin.log","The log file path and file name") |
KNOB< BOOL > | KnobUniqueLogFiles (KNOB_MODE_WRITEONCE,"user","unique_logfile","0","The log file names will contain the pid") |
KNOB< BOOL > | KnobAppendLogFile (KNOB_MODE_WRITEONCE,"supported","append_logfile","0","Append to the end of the log file if it already exists") |
KNOB< string > | P64Knob (KNOB_MODE_WRITEONCE,"user","p64","","Specify Pin binary for Intel(R) 64 architecture") |
KNOB< string > | P32Knob (KNOB_MODE_WRITEONCE,"user","p32","","Specify Pin binary for IA-32 architecture") |
KNOB< string > | T64Knob (KNOB_MODE_WRITEONCE,"user","t64","","Specify tool binary for Intel(R) 64 architecture") |
KNOB< BOOL > | KnobFollowChild (KNOB_MODE_WRITEONCE,"user","follow_execv","0","Execute with Pin all processes spawned by execv class system calls") |
KNOB< BOOL > | KnobLateInjection (KNOB_MODE_WRITEONCE,"supported","late_injection","0","Late injection (after initialization APC) on Windows") |
KNOB< BOOL > | KnobDebugInstrumentedProcesses (KNOB_MODE_WRITEONCE,"user","debug_instrumented_processes","0","Print message to allow debugger attach to instrumented processes") |
KNOB< BOOL > | KnobHelp (KNOB_MODE_WRITEONCE,"user","help","0","Print help message") |
KNOB< BOOL > | KnobVersion (KNOB_MODE_WRITEONCE,"user","version","0","Print version message") |
KNOB< BOOL > | KnobVersionLong (KNOB_MODE_WRITEONCE,"user","version_long","0","Print version/diagnostic message") |
VOID | PIN_InitLock (PIN_LOCK *lock) |
VOID | PIN_GetLock (PIN_LOCK *lock, INT32 val) |
INT32 | PIN_ReleaseLock (PIN_LOCK *lock) |
BOOL | PIN_MutexInit (PIN_MUTEX *lock) |
VOID | PIN_MutexFini (PIN_MUTEX *lock) |
VOID | PIN_MutexLock (PIN_MUTEX *lock) |
VOID | PIN_MutexUnlock (PIN_MUTEX *lock) |
BOOL | PIN_MutexTryLock (PIN_MUTEX *lock) |
BOOL | PIN_RWMutexInit (PIN_RWMUTEX *lock) |
VOID | PIN_RWMutexFini (PIN_RWMUTEX *lock) |
VOID | PIN_RWMutexReadLock (PIN_RWMUTEX *lock) |
VOID | PIN_RWMutexWriteLock (PIN_RWMUTEX *lock) |
VOID | PIN_RWMutexUnlock (PIN_RWMUTEX *lock) |
BOOL | PIN_RWMutexTryReadLock (PIN_RWMUTEX *lock) |
BOOL | PIN_RWMutexTryWriteLock (PIN_RWMUTEX *lock) |
BOOL | PIN_SemaphoreInit (PIN_SEMAPHORE *sem) |
VOID | PIN_SemaphoreFini (PIN_SEMAPHORE *sem) |
VOID | PIN_SemaphoreSet (PIN_SEMAPHORE *sem) |
VOID | PIN_SemaphoreClear (PIN_SEMAPHORE *sem) |
BOOL | PIN_SemaphoreIsSet (PIN_SEMAPHORE *sem) |
VOID | PIN_SemaphoreWait (PIN_SEMAPHORE *sem) |
BOOL | PIN_SemaphoreTimedWait (PIN_SEMAPHORE *sem, unsigned timeout) |
MESSAGE_TYPE | MessageTypeNonFatalError ("non_fatal_error","NFE: ", false, false, true, false, LOGTYPE_CONSOLE_AND_LOGFILE,"errors") |
MESSAGE_TYPE | MessageTypeError ("error","E: ", true, false, true, false, LOGTYPE_CONSOLE_AND_LOGFILE,"errors") |
MESSAGE_TYPE | MessageTypeCriticalError ("critical_error","E: ", false, false, true, false, LOGTYPE_CONSOLE_AND_LOGFILE,"errors") |
MESSAGE_TYPE | MessageTypeWarning ("warning","W: ", false, false, true, false, LOGTYPE_LOGFILE,"warnings") |
MESSAGE_TYPE | MessageTypeConsole ("console","C: ", false, false, true, false, LOGTYPE_CONSOLE,"console") |
MESSAGE_TYPE | MessageTypeConsoleNoPrefix ("console_noprefix","", false, false, true, false, LOGTYPE_CONSOLE,"console") |
MESSAGE_TYPE_ALWAYS_ON | MessageTypeAssert ("assert","A: ", true, true, false, LOGTYPE_CONSOLE_AND_LOGFILE,"assert") |
MESSAGE_TYPE | MessageTypePhase ("phase","P: ", false, false, true, true, LOGTYPE_CONSOLE,"phase") |
MESSAGE_TYPE | MessageTypeKnown ("known","K: ", false, false, true, false, LOGTYPE_CONSOLE,"known problem") |
MESSAGE_TYPE | MessageTypeInfo ("info","I: ", false, false, true, false, LOGTYPE_CONSOLE,"info") |
MESSAGE_TYPE | MessageTypeDebug ("debug","D: ", false, false, false, false, LOGTYPE_CONSOLE,"generic debug") |
MESSAGE_TYPE | MessageTypeOpportunity ("opportunity","O: ", false, false, true, false, LOGTYPE_CONSOLE,"generic optimization opportunity") |
MESSAGE_TYPE | MessageTypeStats ("stats","S: ", false, false, true, false, LOGTYPE_CONSOLE,"statistic") |
MESSAGE_TYPE | MessageTypeLog ("log","", false, false, true, false, LOGTYPE_LOGFILE,"generic log") |
const string | Line1 (80,'#') |
const string | Line2 (80,'=') |
const string | Line3 (80,'-') |
const string | Line4 (80,'.') |
UINT64 | MilliSecondsElapsed () |
UINT64 | KiloBytesUsed () |
string | ResourceInfo () |
string | AssertString (const char *fileName, const char *functionName, unsigned line, const std::string &message) |
LOCALVAR KNOB< UINT32 > | PauseAbortKnob (KNOB_MODE_WRITEONCE,"supported:basic","pause_abort","0","Pause and print pid so gdb can attach before pin aborts") |
VOID | BreakMe () |
UINT32 | DivZero (UINT32 x) |
VOID | SegFault () |
LOCALFUN VOID | SignalHandler (int arg) |
VOID | InstallSignalHandlers () |
KNOB< string > | KnobMesgOn (KNOB_MODE_APPEND,"supported:message","mesgon","","enable given message type") |
KNOB< string > | KnobMesgOff (KNOB_MODE_APPEND,"supported:message","mesgoff","","disable given message type") |
PIN_LOAD_STATUS | PinStatusGetLoadStatus () |
VOID | PinStatusSetLoadStatus (PIN_LOAD_STATUS ls) |
PIN_LOAD_STATUS | PinStatusGetInjectionType () |
string | LoadStatusString (PIN_LOAD_STATUS load_status) |
string | PinStatusString (PIN_STATUS *ps) |
KNOB< BOOL > | KnobSeparatelyHandledXmm (KNOB_MODE_WRITEONCE,"supported","separately_handled_xmm","1","separtely handled xmm") |
string | REGALLOCHINT_String (const REGALLOC_HINT_TYPE hint) |
LOCALVAR KNOB_COMMENT | KnobStatFamily ("supported:stat","Statistic switches") |
KNOB< BOOL > | KnobStatistics (KNOB_MODE_WRITEONCE,"supported:stat","statistic","0","print general statistics") |
LOCALFUN int | cmp (const VOID *x1, const VOID *x2) |
LOCALFUN VOID | TestStringForBadChars (const string &s) |
STAT_NORM | TimerApp ("pin","time","total","", 0) |
LOCALVAR STAT_NORM | TimerOtherApp ("pin","time","cc+tool","",&TimerApp, TRUE) |
STAT_NORM | TimerVm ("pin","time","vm","",&TimerApp) |
STAT_NORM | STAT_vm_enter_count ("pin","time_vm","vmenter_count","", NULL) |
STAT_NORM | STAT_time_vm_enter_to_leave ("pin","time_vm","time_in_vm","",&STAT_vm_enter_count) |
STAT_NORM | STAT_time_vm_past_enter ("pin","time_vm","time_in_vm_past_enter","",&STAT_time_vm_enter_to_leave) |
STAT_NORM | STAT_time_vm_locked ("pin","time_vm","time_locked","",&STAT_time_vm_enter_to_leave) |
STAT_NORM | STAT_acquire_vm_lock_count ("pin","time_vm","get_lock_count","", NULL) |
STAT_NORM | STAT_time_wait_for_vm_lock ("pin","time_vm","time_wait_for_lock","",&STAT_acquire_vm_lock_count) |
STAT_NORM | STAT_time_vm_threads ("pin","time_vm","time_all_threads","",&STAT_time_vm_enter_to_leave) |
STAT_NORM | STAT_time_VMSVC_EMU ("pin","time_vm","VMSVC_EMU","",&STAT_time_vm_enter_to_leave) |
STAT_NORM | STAT_time_VMSVC_XFER ("pin","time_vm","VMSVC_XFER","",&STAT_time_vm_enter_to_leave) |
STAT_NORM | STAT_time_VMSVC_XFER_INDIRECT ("pin","time_vm","VMSVC_XFER_INDIRECT","",&STAT_time_vm_enter_to_leave) |
STAT_NORM | STAT_time_VMSVC_XFER_NATIVE ("pin","time_vm","VMSVC_XFER_NATIVE","",&STAT_time_vm_enter_to_leave) |
STAT_NORM | STAT_time_VMSVC_SMC ("pin","time_vm","VMSVC_SMC","",&STAT_time_vm_enter_to_leave) |
STAT_NORM | STAT_time_VMSVC_SELF_HANDLER ("pin","time_vm","VMSVC_SELF_HANDLER","",&STAT_time_vm_enter_to_leave) |
STAT_NORM | STAT_time_VMSVC_XFER_BRIDGE ("pin","time_vm","VMSVC_XFER_BRIDGE","",&STAT_time_vm_enter_to_leave) |
STAT_NORM | TimerCompile ("pin","time","Compile","",&TimerVm) |
STAT_NORM | TimerMakeRegion ("pin","time","MakeRegion","",&TimerCompile) |
STAT_NORM | TimerMakeApplication ("pin","time","MakeApplication","",&TimerMakeRegion) |
STAT_NORM | TimerFetchRegion ("pin","time","FetchRegion","",&TimerMakeApplication) |
VOID | StartApplicationTimer () |
VOID | StopApplicationTimer () |
CHAR * | GetCmdArg (const CHAR *cmdPtr, BOOL isFile, CHAR *buf, size_t bufSize, size_t *pArgSize, const CHAR **pNextPtr) |
CHAR * | GetAppCmdLine (const CHAR *pinCmdLine) |
string | SplitString (string *input, const string &delimiter=" ") |
BOOL | EndsWith (const CHAR *in, const CHAR *post) |
BOOL | StartsWith (const CHAR *in, const CHAR *pre) |
VOID | SetAddress0x (BOOL val) |
BOOL | CharIsSpace (CHAR c) |
CHAR | CharToUpper (CHAR c) |
string | ptrstr (const VOID *val) |
string | StringFromAddrint (ADDRINT l) |
string | StringFromUint64 (UINT64 l) |
string | StringDec (UINT64 l, UINT32 digits, CHAR padding) |
string | StringDecSigned (INT64 l, UINT32 digits, CHAR padding) |
string | StringBignum (INT64 l, UINT32 digits, CHAR padding) |
string | Reformat (const string &s, const string &prefix, UINT32 min_line, UINT32 max_line) |
string | StringHex32 (UINT32 l, UINT32 digits, BOOL prefix_0x) |
LOCALFUN VOID | InsertCommas (CHAR *buffer, INT32 width) |
string | StringFlt (FLT64 val, UINT32 precision, UINT32 width) |
string | StringBool (BOOL b) |
string | StringTri (TRI t) |
INT32 | Int32FromString (const string &s) |
UINT32 | Uint32FromString (const string &s) |
UINT64 | Uint64FromString (const string &s) |
FLT64 | FLT64FromString (const string &s) |
INT | CharToHexDigit (CHAR c) |
ADDRINT | AddrintFromString (const string &str) |
UINT32 | BitCount (ADDRINT val) |
string | ReadLine (istream &inputFile, UINT32 *lineNum) |
UINT32 | Tokenize (const string &line, string *array, UINT32 n) |
string | StringHex (UINT32 l, UINT32 digits, BOOL prefix_0x=TRUE) |
string | decstr (INT64 val, UINT32 width=0) |
string | decstr (INT32 val, UINT32 width=0) |
string | decstr (INT16 val, UINT32 width=0) |
string | decstr (UINT64 val, UINT32 width=0) |
string | decstr (UINT32 val, UINT32 width=0) |
string | decstr (UINT16 val, UINT32 width=0) |
string | hexstr (INT64 val, UINT32 width=0) |
string | hexstr (INT32 val, UINT32 width=0) |
string | hexstr (INT16 val, UINT32 width=0) |
string | hexstr (UINT64 val, UINT32 width=0) |
string | hexstr (VOID *p, UINT32 width=0) |
string | hexstr (const VOID *p, UINT32 width=0) |
string | hexstr (UINT32 val, UINT32 width=0) |
string | hexstr (UINT16 val, UINT32 width=0) |
string | fltstr (FLT64 val, UINT32 prec=0, UINT32 width=0) |
string | ljstr (const string &s, UINT32 width, CHAR padding= ' ') |
template<typename ITER, typename CONV> | |
GLOBALTEMPLATEFUN string | StringSequence (ITER begin, ITER end, const CONV &conv, const string &delimiter=string(" ")) |
VOID * | Addrint2VoidStar (ADDRINT addr) |
ADDRINT | VoidStar2Addrint (const VOID *addr) |
ADDRINT | VoidStar2Addrint (VOID *addr) |
template<typename T> | |
GLOBALTEMPLATEFUN BOOL | IsPowerOf2 (T value) |
template<typename T> | |
GLOBALTEMPLATEFUN T | RoundToNextPower2 (T value) |
template<typename T> | |
GLOBALTEMPLATEFUN T | RoundUp (T value, size_t alignment) |
template<typename T> | |
GLOBALTEMPLATEFUN T * | RoundUp (T *ptr, size_t alignment) |
template<typename T> | |
GLOBALTEMPLATEFUN T | RoundUpPowerOf2 (T value, size_t alignment) |
template<typename T> | |
GLOBALTEMPLATEFUN T * | RoundUpPowerOf2 (T *ptr, size_t alignment) |
template<typename T> | |
GLOBALTEMPLATEFUN T | RoundDown (T value, size_t alignment) |
template<typename T> | |
GLOBALTEMPLATEFUN T * | RoundDown (T *ptr, size_t alignment) |
template<typename T> | |
GLOBALTEMPLATEFUN T | RoundDownPowerOf2 (T value, size_t alignment) |
template<typename T> | |
GLOBALTEMPLATEFUN T * | RoundDownPowerOf2 (T *ptr, size_t alignment) |
template<typename T> | |
GLOBALTEMPLATEFUN ADDRINT | PointerToInt (const T *ptr) |
template<typename T> | |
GLOBALTEMPLATEFUN T * | IntToPointer (ADDRINT addr) |
INT64 | VoidStar2Int (VOID *addr) |
BOOL | UnsignedImmediateFits (const UINT64 value, const UINT32 bits) |
void | RangeCheck (const UINT32 value, const UINT32 bits) |
BOOL | SignedImmediateFits (const INT64 value, const UINT32 origSize, const UINT32 extendedSize) |
BOOL | SignedImmediateFits (const INT64 value, const UINT32 origSize) |
template<UINT32 size> | |
GLOBALTEMPLATEFUN UINT32 | internalHashData (UINT32 prevHash, const CHAR *bytes) |
template<> | |
GLOBALTEMPLATEFUN UINT32 | internalHashData< 1 > (UINT32 prevHash, const CHAR *bytes) |
template<> | |
GLOBALTEMPLATEFUN UINT32 | internalHashData< 2 > (UINT32 prevHash, const CHAR *bytes) |
template<> | |
GLOBALTEMPLATEFUN UINT32 | internalHashData< 4 > (UINT32 prevHash, const CHAR *bytes) |
template<> | |
GLOBALTEMPLATEFUN UINT32 | internalHashData< 8 > (UINT32 prevHash, const CHAR *bytes) |
template<typename T> | |
GLOBALTEMPLATEFUN UINT32 | HashData (UINT32 oldHash, const T &data) |
BOOL | HasBaseName (const char *fileName, const char *baseNameToCheckFor) |
INT32 | MEMORY_ReadInt32 (ADDRINT address) |
VOID | MEMORY_WriteInt32 (ADDRINT address, INT32 value) |
UINT32 | MEMORY_ReadUint32 (ADDRINT address) |
VOID | MEMORY_WriteUint32 (ADDRINT address, UINT32 value) |
INT64 | MEMORY_ReadInt64 (ADDRINT address) |
VOID | MEMORY_WriteInt64 (ADDRINT address, INT64 value) |
UINT64 | MEMORY_ReadUint64 (ADDRINT address) |
VOID | MEMORY_WriteUint64 (ADDRINT address, UINT32 value) |
ADDRINT | GetPageOfAddr (ADDRINT addr) |
ADDRINT | ProgramEntry (const ImageLoaderInfo *mainImage, const ImageLoaderInfo *loader) |
string | Joinpath (string s1, string s2) |
string | Basename (const string &path) |
CHAR * | CreateTmpFileName (const CHAR *fnameTemplate) |
const VOID * | GetSp () |
size_t | PtrDiff (const VOID *ptr1, const VOID *ptr2) |
VOID * | PtrAtOffset (VOID *ptr, size_t offset) |
const VOID * | PtrAtOffset (const VOID *ptr, size_t offset) |
template<typename T> | |
GLOBALTEMPLATEFUN VOID * | PushDataToStack (VOID *stack, const T *data, size_t alignment=1, size_t size=sizeof(T)) |
VOID * | PushAddrintToStack (VOID *stack, ADDRINT value) |
string | MemRangeToString (const MemRange &range) |
MemRange | MemPageRange (ADDRINT addr) |
MemRange | MemPageRange (const VOID *addr) |
STAT_NORM | StatRawMmapBytes ("mem","bytes","RawMmap","",&StatReservedBytes) |
STAT_NORM | StatReservedBytes ("mem","bytes","Reserved","", 0) |
LOCALVAR STAT_NORM | StatOtherBytes ("mem","bytes","other","",&StatRawMmapBytes, TRUE) |
USIZE | GetRawMmapBytes () |
VOID | UpdateRawMmapBytes () |
VOID | PullinPinMalloc () |
const CHAR * | GetEnvFromArray (const CHAR *envArray[], const CHAR *name) |
string | VersionShort () |
string | ReleaseShort () |
string | VersionLong () |
string | ReleaseLong () |
SECTION_END const CHAR * | CharmVersion () |
GLOBALDLLCFUN const CHAR * | CharmVersionC () |
string | VersionDetailed () |
string | VersionFancy () |
VOID * | FunctionCodeAddress (void(*fp)()) |
LOCALVAR KNOB< BOOL > | KnobAllowAvxSupport (KNOB_MODE_WRITEONCE,"supported","allow_AVX_support","1","allow AVX support") |
LOCALVAR KNOB< BOOL > | KnobAllowAvx512Support (KNOB_MODE_WRITEONCE,"supported","allow_AVX512_support","1","Allow using AVX-512 instructions") |
CPU_INFO & | Cpu () |
LOCALVAR KNOB< BOOL > | KnobNoCmov (KNOB_MODE_WRITEONCE,"supported","nocmov","0","disable the use of CMOV even on machines which support it") |
BOOL | CanUseCMOV () |
BOOL | CpuSupportsLahfSahf () |
GLOBALCFUN ADDRINT | HaveAvxSupport () |
GLOBALCFUN ADDRINT | HaveAvx2Support () |
GLOBALCFUN ADDRINT | HaveAvx512FSupport () |
GLOBALCFUN ADDRINT | HaveAvx512BWSupport () |
LOCALFUN VECTOR_REGISTER_SET | DetermineVectorRegisterSet () |
VECTOR_REGISTER_SET | SupportedVectorRegisterSet () |
VOID | InitRegTables () |
BOOL | REG_is_reg (REG reg) |
BOOL | REG_is_pseudo (REG reg) |
BOOL | REG_is_gr (REG reg) |
BOOL | REG_is_fr (REG reg) |
BOOL | REG_is_br (REG reg) |
BOOL | REG_is_gr64 (REG reg) |
REG | operator++ (REG &r) |
BOOL | REG_is_gr32 (REG reg) |
BOOL | REG_is_pin_gr32 (REG reg) |
BOOL | REG_is_gr16 (REG reg) |
BOOL | REG_is_gr8 (REG reg) |
BOOL | REG_is_seg (REG reg) |
BOOL | REG_is_fr_for_get_context (REG reg) |
BOOL | REG_is_fr_or_x87 (REG reg) |
BOOL | REG_is_mxcsr (REG reg) |
BOOL | REG_is_any_mxcsr (REG reg) |
BOOL | REG_is_any_x87 (REG reg) |
REG | REG_st_return_reg () |
BOOL | REG_is_mm (REG reg) |
BOOL | REG_is_emm (REG reg) |
BOOL | REG_is_xmm (REG reg) |
BOOL | REG_is_ymm (REG reg) |
BOOL | REG_is_zmm (REG reg) |
BOOL | REG_is_xmm_ymm_zmm (REG reg) |
BOOL | REG_is_any_vector_reg (REG reg) |
BOOL | REG_is_k_mask (REG reg) |
BOOL | REG_is_any_mask (REG reg) |
REG | REG_corresponding_ymm_reg (REG reg) |
REG | REG_corresponding_zmm_reg (REG reg) |
REG | REG_corresponding_zmm_from_ymm (REG reg) |
BOOL | REG_is_dr (REG reg) |
BOOL | REG_is_cr (REG reg) |
BOOL | REG_is_tr (REG reg) |
BOOL | REG_is_st (REG reg) |
BOOL | REG_is_fpst (REG reg) |
BOOL | REG_is_in_X87 (REG reg) |
BOOL | REG_is_machine (REG reg) |
BOOL | REG_is_application (REG reg) |
BOOL | REG_is_pin (REG reg) |
BOOL | REG_is_subclass_none (REG reg) |
BOOL | REG_is_pin_gpr (REG reg) |
BOOL | REG_is_seg_base (REG reg) |
BOOL | REG_valid_for_iarg_reg_value (REG reg) |
BOOL | REG_is_pin_gr (REG reg) |
BOOL | REG_is_pin_gr_half32 (REG reg) |
BOOL | REG_is_pin_xmm (REG reg) |
BOOL | REG_is_pin_ymm (REG reg) |
BOOL | REG_is_pin_zmm (REG reg) |
BOOL | REG_is_pin_xmm_ymm_zmm (REG reg) |
BOOL | REG_is_pin_k_mask (REG reg) |
BOOL | REG_is_avx512_hi16_xmm (const REG xmm) |
BOOL | REG_is_avx512_hi16_ymm (const REG ymm) |
BOOL | REG_is_gr_type (REG reg) |
REG | REG_AppFlags () |
BOOL | REG_is_flags (REG reg) |
BOOL | REG_is_pin_flags (REG reg) |
BOOL | REG_is_status_flags (REG reg) |
BOOL | REG_is_pin_status_flags (REG reg) |
BOOL | REG_is_df_flag (REG reg) |
BOOL | REG_is_pin_df_flag (REG reg) |
BOOL | REG_is_flags_type (REG reg) |
BOOL | REG_is_flags_any_size_type (REG reg) |
BOOL | REG_is_status_flags_type (REG reg) |
BOOL | REG_is_app_status_flags_type (REG reg) |
BOOL | REG_is_df_flag_type (REG reg) |
BOOL | REG_is_app_df_flag_type (REG reg) |
BOOL | REG_is_any_flags_type (REG reg) |
BOOL | REG_is_any_pin_flags (REG reg) |
BOOL | REG_is_any_app_flags (REG reg) |
REG | REG_get_status_flags_reg_of_type (REG reg) |
REG | REG_get_df_flag_reg_of_type (REG reg) |
REG | REG_get_full_flags_reg_of_type (REG reg) |
BOOL | REG_is_stackptr_type (REG reg) |
BOOL | REG_is_representative_reg (REG reg) |
BOOL | REG_is_x87_reg (REG reg) |
BOOL | REG_is_pin_inst (REG reg) |
BOOL | REG_is_buffer (REG reg) |
BOOL | REG_is_inst_scratch (REG reg) |
ADDRINT | REG_regSubClassBitMapTable () |
ADDRINT | REG_regDefTable () |
BOOL | REG_is_pin_tmp (REG reg) |
REG | REG_INVALID () |
BOOL | REG_valid (REG reg) |
UINT32 | REG_SpilledSize (const REG reg) |
UINT32 | REG_SpilledAlignment (const REG reg) |
REG | REG_PinToMachine (const REG reg, BOOL strict) |
REG | REG_MachineToPin (const REG reg) |
BOOL | REG_is_pin64 (REG reg) |
BOOL | REG_RequiresRex (const REG reg) |
REGWIDTH | REG_WidthOfGr (REG reg) |
REGWIDTH | REGWIDTH_FromByteWidth (UINT32 byteWidth) |
INT32 | BitWidth_FromREGWIDTH (REGWIDTH regWidth) |
BOOL | REG_needs_identical_phys_reg (REG vreg) |
LOCALFUN REG | REG_DetermineLastSupportedXmm () |
REG | REG_LastSupportedXmm () |
LOCALFUN REG | REG_DetermineLastSupportedYmm () |
REG | REG_LastSupportedYmm () |
LOCALFUN REG | REG_DetermineLastSupportedZmm () |
REG | REG_LastSupportedZmm () |
LOCALFUN REG | REG_DetermineLastSupportedPinXmm () |
REG | REG_LastSupportedPinXmm () |
LOCALFUN REG | REG_DetermineLastSupportedPinYmm () |
REG | REG_LastSupportedPinYmm () |
LOCALFUN REG | REG_DetermineLastSupportedPinZmm () |
REG | REG_LastSupportedPinZmm () |
BOOL | REG_IsVectorRegSupported (const REG reg) |
UINT32 | REG_Size (REG reg) |
REG | REG_FullRegName (const REG reg) |
string | REG_StringShort (REG reg) |
BOOL | REG_SameType (const REG vreg, const REG preg) |
REG | REG_IdentityCopy (const REG reg) |
REG | REG_SpillPtr () |
REG | REG_PinToMachineAndSpillPtr (const REG reg, BOOL strict) |
UINT32 | REG_SizeFromREGWIDTH (REGWIDTH width) |
INT32 | REG_NmCondCallThenExtraReadRegs () |
INT32 | REG_NmCondCallThenExtraWriteRegs () |
REG | REG_GetCondCallExtraRegRead (INT32 index) |
REG | REG_GetCondCallExtraRegWritten (INT32 index) |
BOOL | REG_is_Half16 (const REG reg) |
REGWIDTH | REG_Width (REG reg) |
BOOL | REG_is_Half32 (const REG reg) |
BOOL | REG_is_Lower8 (const REG reg) |
BOOL | REG_is_Upper8 (const REG reg) |
BOOL | REG_is_Any8 (const REG reg) |
REG | REG_Half16 (const REG reg, const BOOL must_success) |
REG | REG_Half32 (const REG reg, const BOOL must_success) |
REG | REG_Lower8 (const REG reg, const BOOL must_succeed) |
REG | REG_Upper8 (const REG reg, const BOOL must_succeed) |
REG | REG_Xmm (const REG reg, const BOOL must_succeed) |
REG | REG_Ymm (const REG reg, const BOOL must_succeed) |
BOOL | REG_is_partialreg (const REG reg) |
VOID | SanityCheckPartialRegisters () |
VOID | REG_SetHalf16 (ADDRINT &fullvalue, ADDRINT half16) |
VOID | REG_SetLower8 (ADDRINT &fullvalue, ADDRINT lower8) |
VOID | REG_SetUpper8 (ADDRINT &fullvalue, ADDRINT upper8) |
Variables | |
LOCALCONST INT32 | MEMORY_CHUNK_ALLOCATION_SIZE = GetMemoryAllocationGranularity() |
LOCALCONST PIN_ERROR_DESCRIPTOR | PinErrorDescriptors [] |
LOCALCONST string | ArgumentNumber [] |
LOCALVAR PINVM::PINSYNC_SAFEPOD_LOCK | MessageLock |
LOCALVAR PIN_STATUS | PinStatus = {PIN_LOAD_STATUS_INJECTOR, PIN_LOAD_STATUS_INJECTOR} |
LOCALVAR STAT_TIMER | AppTimer |
GLOBALCONST TLS_KEY | INVALID_TLS_KEY = (-1) |
LOCALVAR BOOL | Address0x = false |
LOCALVAR const CHAR | HexTab [] = "0123456789abcdef" |
LOCALVAR const CHAR | Version [] = "$Rev: 81201 $" |
LOCALVAR const CHAR | charmVersion [] = "@CHARM-VERSION: $Rev: 81201 $" |
LOCALVAR BOOL | cpuSupportsCMOV = Cpu().Supports(CPU_FEATURE_CMOV) |
LOCALVAR BOOL | cpuSupportsLahfSahf = Cpu().Supports(CPU_FEATURE_LAHF_SAHF) |
LOCALVAR BOOL | cpuSupportsAVX = Cpu().Supports(CPU_FEATURE_AVX) |
LOCALVAR BOOL | cpuSupportsAVX2 = Cpu().Supports(CPU_FEATURE_AVX2) |
LOCALVAR BOOL | cpuSupportsAVX512F = Cpu().Supports(CPU_FEATURE_AVX512F) |
LOCALVAR BOOL | cpuSupportsAVX512BW = Cpu().Supports(CPU_FEATURE_AVX512BW) |
GLOBALCONST ADDRINT | AC_FLAG_BIT = 0x40000 |
GLOBALCONST ADDRINT | NUM_PHYSICAL_REGS = REG_PHYSICAL_INTEGER_END - REG_PHYSICAL_INTEGER_BASE + 1 |
GLOBALCONST ADDRINT | NUM_SCRATCH_REGS = REG_INST_SCRATCH_LAST - REG_INST_SCRATCH_BASE + 1 |
GLOBALCONST ADDRINT | NUM_SPECIAL_REGS = 2 + NUM_SCRATCH_REGS |
GLOBALCONST ADDRINT | NUM_CONTEXT_INT_REGS = NUM_PHYSICAL_REGS + NUM_SPECIAL_REGS |
GLOBALCONST ADDRINT | NUM_CONTEXT_REGS = REG_LAST_CONTEXT_REG + 1 |
GLOBALCONST ADDRINT | ARCH_STATE_SIZE |
GLOBALCONST UINT32 | NUM_BUFFER_REGS = REG_BUF_LAST - REG_BUF_BASE0 + 1 |
const REGDEF_ENTRY | _regDefTable [] |
UINT64 | _regClassBitMapTable [REG_LAST] |
UINT64 | _regSubClassBitMapTable [REG_LAST] |
UINT32 | _regSpillSizeTable [REG_LAST] |
REGWIDTH | _regWidthTable [REG_LAST] |
REG_ALLOC_TYPE | _regAllocTypeTable [REG_LAST] |
REG | _regFullNameTable [REG_LAST] |
REG | _regMachineNameTable [REG_LAST] |
REG | _regPinNameTable [REG_LAST] |
INT32 | _regWidthToBitWidth [] |
GLOBALCONST UINT32 | OPCODE_TABLE_NREADS = (11) |
GLOBALCONST UINT32 | OPCODE_TABLE_NWRITES = (9) |
GLOBALCONST REG_CLASS_BITS | REGCBIT_APP_ALL |
GLOBALCONST REG_CLASS_BITS | REGCBIT_PIN_ALL |
GLOBALCONST REG_CLASS_BITS | REGCBIT_ALL_REGS = REGCBIT_APP_ALL | REGCBIT_PIN_ALL |
GLOBALCONST REG_CLASS_BITS | REGCBIT_APP_FLAGS |
GLOBALCONST REG_CLASS_BITS | REGCBIT_PIN_FLAGS |
GLOBALCONST REG_CLASS_BITS | REGCBIT_PARTIAL |
GLOBALCONST REG_SUBCLASS_BITS | REGSBIT_PIN_INST_ALL |
GLOBALCONST REG_SUBCLASS_BITS | REGSBIT_PIN_SCRATCH_ALL |
GLOBALCONST REG_SUBCLASS_BITS | REGSBIT_STACKPTR_ALL |
GLOBALCONST UINT32 | PIN_INFINITE_TIMEOUT = static_cast<UINT32>(-1) |
GLOBALCONST UINT32 | PIN_MAX_THREADS = 2048 |
|
A call-back function that is called whenever a MESSAGE_TYPE object prints a message.
|
|
FLT64 single value stat.
|
|
FLT32 single value stat.
|
|
FLT64 single value stat.
|
|
INT64 single value stat.
|
|
SIZE single value stat.
|
|
UINT32 single value stat.
|
|
UINT64 single value stat.
|
|
Types of CPU features |
|
Bits of the XFEATURE_ENABLED_MASK in the extended control register XCR0. These bits specify processor states that are enabled on the processor. A combination of these bits also specifies which part of the extended state should be saved/restored by XSAVE/XRSTORE instructions. See IA-32 manual, vol.3, section 2.6. and vol 2B. XSAVE/XRSTOR |
|
Type that represents where to put the log. |
|
|
Types of hints for guiding the register allocator. They need to be defined in level_base as they are used in val.C |
|
Types of STAT's Functions that need to iterate over all stats can use this to determine the type |
|
Convert ADDRINT to "void *" |
|
Create a string for an assertion failure.
|
|
Strip the path information |
|
popcount/bitcount code using the usual trick |
|
return the width in bits given the REGWIDTH |
|
x |
|
|
|
Return pointer to contents of .charmversion section |
|
Return reference to the CPU_INFO instance. |
|
|
|
Create a temporary file name |
|
|
|
x |
|
Find if string ends with another string
|
|
|
|
Given pin's command line, return substring containing application's command line.
|
|
Given a command line (sub)string, find and parse its first argument. Parsing rules (see MS CRT): File names =========== Quoted string -> non-quoted string (quotes are not copied) Regular argument ================ 2N backslashes + " -> N backslashes + begin/end quoted string (quote is not copied) 2N+1 backslashes + " -> N backslashes + literal " " + " in a quoted string -> single literal " all other combinations of symbols are copied as is
|
|
Find value of environment variable |
|
Get the address of the page that addr is in |
|
Get StatRawMmapBytes - the number of bytes allocated by Pin. Note that this returns bytes currently allocated, not all bytes that have ever been allocated. Basically, this value will rise and fall during execution. |
|
|
|
Determine if the fileName has the BaseName baseNameToCheckFor On Windows comparison is case-insensitive, others are case sensitive
|
|
Function to incrementally construct a hash value.
|
|
|
|
|
|
|
|
|
|
install signal handler for SIGSEGV,SIGBUS,SIGILL that will behave like an assert |
|
Internal helper for HashData(). |
|
Specialization for optimization (1 byte data size). |
|
Specialization for optimization (2 byte data size). |
|
Specialization for optimization (4 byte data size). |
|
Specialization for optimization (8 byte data size). |
|
Convert an ADDRINT to a pointer. |
|
Determine whether a value is a power of 2
|
|
Concatenate two strings with a path delimiter |
|
KiloBytes used by program according to /proc/self/status |
|
Allow multithreading. When the automatic cache flush is implemented, we can delete this |
|
Indicates that new log messages should be appended to the end of the log file if it already exists. This is particularly useful on Unix when using -follow_execv because the log messages after the exec are appended to any messages that happen before the exec. |
|
pin attach/detach knobs |
|
Pop-up debug message to allow debugger attach to instrumented processes. In follow child scenario, active only if parent is being debugged |
|
pin attach/detach knobs |
|
specifies the error file name. |
|
Should the VM follow spawned processes? |
|
Print help message |
|
Knob for skipping a warning message about unsupported platforms; It also converts some error messages to warnings to try to allow further progress. |
|
Late injection vs. early injection |
|
specifies the log file name. |
|
disable specific message type |
|
enable specific message type |
|
Knob to control the handling of xmm regs as separately-handled-partial-regs when Pin is running on a system with AVX |
|
parent injector process that waits for injection completion |
|
Knob for deciding whether using expensive sanity checks. |
|
Print general statistic info |
|
indicates that the pid should be added to the error file name. |
|
indicates that the pid should be added to the log file name. |
|
Print version message |
|
Print version/diagnostic message |
|
parent injector process that waits for injection completion |
|
pin attach/detach knobs |
|
line of 80 '#' characters |
|
line of 80 '=' characters |
|
line of 80 '-' characters |
|
line of 80 '.' characters |
|
x |
|
Get the page that contains the specified address
|
|
Get the page that contains the specified address
|
|
|
|
Assert message object |
|
Console message object |
|
Console message object - No prefix |
|
Error message object for fatal errors that require post-logging handling. These errors do not cause the process termination in the MESSAGE_TYPE::Message() function. |
|
Debug message object |
|
Error message object (terminates) |
|
Info message object |
|
Known-warning message object |
|
Log message object |
|
Error message object for non-fatal error. |
|
Optimization opportunity message object |
|
Phase message object |
|
Statistcis message object |
|
Warning message object |
|
MilliSeconds elapsed since last invocation of this function |
|
reg++ is convenient for loops over registers |
|
Specify Pin binary for 32-bit applications |
|
Specify Pin binary for 64-bit (IA32E) applications |
|
Return the type of injection used by Pin |
|
x |
|
x |
|
x |
|
Convert a pointer to an ADDRINT. |
|
Return the entry point of a program (either that of the main image or of the dynamic loader) |
|
Return const pointer whose offset, in bytes, from <ptr> is <offset> |
|
Return pointer whose offset, in bytes, from <ptr> is <offset> |
|
Return offset, in bytes, of <ptr1> from <ptr2> |
|
A function calling all malloc-related functions. Calling PullinPinMalloc() in pin and pinclient forces the dynamic loader to pull in the Pin's malloc. |
|
Push ADDRINT value into stack and return updated value of top of stack
|
|
Push data into stack and return updated value of top of stack the stack is growing to the lower addresses
|
|
|
|
No such regs - only write regs |
|
Will write the REG_PIN_DF_FLAGS |
|
Return the lower 16-bit version of reg |
|
Return the lower 32-bit version of reg |
|
|
|
|
|
|
|
|
|
Return the lower 8-bit version of reg |
|
Return TRUE iff the vreg is required to be allocated to it's corresponding preg |
|
No such regs - only write regs |
|
Will write the REG_PIN_DF_FLAGS |
|
Return the identity copy of reg. If it is not a Pin reg and strict is not set, its physical copy is simply reg itself. If strict is set, its physical copy is REG_INVALID(). |
|
Does this register require a REX prefix when encoded on Intel(R) 64 architecture? |
|
Return true if reg can replace orig during register re-allocation |
|
Set the bottom 16 bits of the register without changing the rest of the register's bits. |
|
Set the bottom 8 bits of the register without changing the rest of the register's bits. |
|
Set the upper 8 bits (of the bottom 16) of the register without changing the rest of the register's bits. Note - All instances of upper 8 in the documentation below refers to the upper 8 bits of the lower 16. |
|
return the register size in bytes given a REGWIDTH |
|
Return the size (in bytes) of the alignment of the the spill slot dedicated for reg |
|
Return the size (in bytes) of a spill slot dedicated for reg |
|
The physical register assigned to hold the spill pointer |
|
Return the upper 8-bit version of reg |
|
return the register width for GRs only. |
|
Return the xmm reg part of the ymm/zmm reg (or the xmm itself). |
|
Return the ymm reg part of the zmm reg (or the ymm itself). |
|
|
|
return the register width given a width in bytes |
|
return full CVS based version string |
|
return Pin-release version string. |
|
stringified resource info for use with phase messages |
|
Specialization of the RoundDown function for pointer type |
|
Round integer of type <T> down to given alignment. |
|
Specialization of the RoundDownPowerOf2 function for pointer type |
|
Round integer of type <T> down to given alignment. The alignment must be power of two. |
|
Round integer of type <T> up to the next power of two.
|
|
Specialization of the RoundUp function for pointer type |
|
Round integer of type <T> up to given alignment. |
|
Specialization of the RoundUpPowerOf2 function for pointer type |
|
Round integer of type <T> up to given alignment. The alignment must be power of two. |
|
Ensure that we don't re-create Mantis 1903, where a register was short but not partial. This function checks that the partial register information is internally consistent. It is called when we have the -slow_asserts flag. |
|
x |
|
install signal handler for SIGSEGV,SIGBUS,SIGILL that will behave like an assert |
|
Wrapper for 3-arg SignedImmediateFits()
|
|
Sign extend from origSize to extendedSize and check if it fits in a field of extendedSize
|
|
Split string into 2 sub strings. Example1: prefix = SplitString(input = "aaa bbb ccc", " ") -> prefix = "aaa", input = "bbb ccc" Example2: prefix = SplitString(input = "aaa", " ") -> prefix = "aaa", input = ""
|
|
Start the application timer |
|
Find if string starts with another string
|
|
A counter for the number of times acquiring the VM lock |
|
Exponential backoff statistics while incrementing recursive count. |
|
Max number of Yield() spins for a single lock attempt. |
|
The time spent in the VM including the time waiting for the VM lock |
|
The time spent in the VM executing code while being locked under the VM lock |
|
The time spent in the VM excluding the time waiting for the VM lock |
|
The total time spent by all VM threads |
|
The time spent executing the EMU flow |
|
The time spent executing the SELF_HANDLER flow |
|
The time spent executing the SMC flow |
|
The time spent executing the XFER flow |
|
The time spent executing the XFER_BRIDGE flow |
|
The time spent executing the XFER_INDIRECT flow |
|
The time spent executing the NATIVE flow |
|
The time spent while waiting for the VM lock |
|
Total number of attempts to acquire lock. |
|
Total number of Yield() spins while waiting for lock to be free. |
|
A counter for the number of times entering the VM |
|
Total time waiting for all Yield() spins. |
|
Unattributed allocations |
|
Total net bytes allocated by RawMmap and RawMunmap. This must be global because another stats are normalized to this value. The actual value is kept as a local variable in sysfuncs_* and updated by UpdateRawMmapBytes to avoid accessing this variable before the constructor has run. |
|
Total net bytes reserved. |
|
allocate a memory region of "size" bytes at location address not used with the single mmap approach |
|
Stop the application timer |
|
Convert the sequence [begin, end) to string. Use the <conv> object to convert the elements. Separate the elements by <delimiter>. |
|
|
|
Specify Tool for 64-bit (IA32E) applications |
|
Entire time that Pin is running. |
|
Timer for Compilation |
|
Time spent fetching while MakeApplication. |
|
Timer for MakeApplication |
|
Timer for compiler |
|
Timer for VM |
|
integer bit width check |
|
Update StatRawMmapBytes from a local variable. We can't update the stat directly in RawMmap because it might be called before the constructor for the stat has been executed. |
|
return full, detailed version string |
|
return decorated version string |
|
return decorated SVN version string. |
|
return SVN version string. |
|
Convert "void *" to ADDRINT |
|
Convert "void *" to ADDRINT. |
|
convert "void *" to int |
|
Initial value: (NUM_PHYSICAL_REGS + NUM_SPECIAL_REGS)*sizeof(ADDRINT) + (FPSTATE_SIZE // because CONTEXT size must // be at least as big as // CONTEXT_CANONICAL size, // and CONTEXT_CANONICAL._fpstate is used + FPSTATE_ALIGNMENT) |
|
Initial value: { "1", "2", "3", "4", "5", "6", "7", "8", "9", "10", } |
|
Lock that serializes message logging |
|
Total number of buffer registers, which is also the maximum number of buf ids. |
|
Total number of integer registers in CONTEXT |
|
Total number of registers in CONTEXT (app registers + tool registers + special) |
|
REG_SEG_FS_BASE and REG_SEG_GS_BASE are represented as special IA-32/Intel(R) 64 architecture registers |
|
|
|
|
|
Timeout interval that never elapses. |
|
Maximum number of threads supported by PIN. |