Pin
|
Classes | |
class | ADDRESS_RANGE |
class | COMMAND_LINE_ARGUMENTS |
struct | DECSTR |
struct | FLTSTR |
struct | HEXSTR |
struct | ImageLoaderInfo |
class | KNOB |
class | KNOB_BASE |
class | KNOB_COMMENT |
class | KNOBVALUE |
class | KNOBVALUE_LIST |
struct | LINUX_LOADER_IMAGE_INFO |
class | PARSER |
struct | PIN_LOCK |
struct | REGDEF_ENTRY |
Typedefs | |
typedef struct EXCEPTION_INFO | EXCEPTION_INFO |
typedef PINVM::PINSYNC_POD_LOCK | PIN_MUTEX |
typedef PINVM::PINSYNC_POD_RWLOCK | PIN_RWMUTEX |
typedef PINVM::PINSYNC_POD_SEMAPHORE | PIN_SEMAPHORE |
typedef INT32 | TLS_KEY |
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 | EXCEPTION_CLASS { EXCEPTCLASS_NONE, EXCEPTCLASS_UNKNOWN, EXCEPTCLASS_ACCESS_FAULT, EXCEPTCLASS_INVALID_INS, EXCEPTCLASS_INT_ERROR, EXCEPTCLASS_FP_ERROR, EXCEPTCLASS_MULTIPLE_FP_ERROR, EXCEPTCLASS_DEBUG, EXCEPTCLASS_OS } |
enum | EXCEPTION_CODE { EXCEPTCODE_NONE, EXCEPTCODE_ACCESS_INVALID_ADDRESS, EXCEPTCODE_ACCESS_DENIED, EXCEPTCODE_ACCESS_INVALID_PAGE, EXCEPTCODE_ACCESS_MISALIGNED, EXCEPTCODE_ILLEGAL_INS, EXCEPTCODE_PRIVILEGED_INS, EXCEPTCODE_INT_DIVIDE_BY_ZERO, EXCEPTCODE_INT_OVERFLOW_TRAP, EXCEPTCODE_INT_BOUNDS_EXCEEDED, EXCEPTCODE_X87_DIVIDE_BY_ZERO, EXCEPTCODE_X87_OVERFLOW, EXCEPTCODE_X87_UNDERFLOW, EXCEPTCODE_X87_INEXACT_RESULT, EXCEPTCODE_X87_INVALID_OPERATION, EXCEPTCODE_X87_DENORMAL_OPERAND, EXCEPTCODE_X87_STACK_ERROR, EXCEPTCODE_SIMD_DIVIDE_BY_ZERO, EXCEPTCODE_SIMD_OVERFLOW, EXCEPTCODE_SIMD_UNDERFLOW, EXCEPTCODE_SIMD_INEXACT_RESULT, EXCEPTCODE_SIMD_INVALID_OPERATION, EXCEPTCODE_SIMD_DENORMAL_OPERAND, EXCEPTCODE_DBG_BREAKPOINT_TRAP, EXCEPTCODE_DBG_SINGLE_STEP_TRAP, EXCEPTCODE_ACCESS_WINDOWS_GUARD_PAGE, EXCEPTCODE_ACCESS_WINDOWS_STACK_OVERFLOW, EXCEPTCODE_WINDOWS, EXCEPTCODE_RECEIVED_UNKNOWN, EXCEPTCODE_RECEIVED_ACCESS_FAULT, EXCEPTCODE_RECEIVED_AMBIGUOUS_X87, EXCEPTCODE_RECEIVED_AMBIGUOUS_SIMD } |
enum | FAULTY_ACCESS_TYPE { FAULTY_ACCESS_TYPE_UNKNOWN, FAULTY_ACCESS_READ, FAULTY_ACCESS_WRITE, FAULTY_ACCESS_EXECUTE } |
enum | FPERROR { FPERROR_DIVIDE_BY_ZERO = (1<<0), FPERROR_OVERFLOW = (1<<1), FPERROR_UNDERFLOW = (1<<2), FPERROR_INEXACT_RESULT = (1<<3), FPERROR_INVALID_OPERATION = (1<<4), FPERROR_DENORMAL_OPERAND = (1<<5), FPERROR_X87_STACK_ERROR = (1<<6) } |
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 | 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 | REG { REG_INVALID_ = 0, REG_GR_BASE = REG_RBASE, REG_RDI = REG_GR_BASE, REG_GDI = REG_RDI, REG_RSI, REG_GSI = REG_RSI, REG_RBP, REG_GBP = REG_RBP, REG_RSP, REG_STACK_PTR = REG_RSP, REG_RBX, REG_GBX = REG_RBX, REG_RDX, REG_GDX = REG_RDX, REG_RCX, REG_GCX = REG_RCX, REG_RAX, REG_GAX = REG_RAX, REG_R8, REG_R9, REG_R10, REG_R11, REG_R12, REG_R13, REG_R14, REG_R15, REG_GR_LAST = REG_R15, 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_RFLAGS, REG_GFLAGS =REG_RFLAGS, REG_RIP, REG_INST_PTR = REG_RIP, 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_EDI, REG_DIL, REG_ESI, REG_SIL, REG_EBP, REG_BPL, REG_ESP, REG_SPL, REG_EBX, REG_EDX, REG_ECX, REG_EAX, REG_EFLAGS, REG_EIP, REG_R8B, REG_R8W, REG_R8D, REG_R9B, REG_R9W, REG_R9D, REG_R10B, REG_R10W, REG_R10D, REG_R11B, REG_R11W, REG_R11D, REG_R12B, REG_R12W, REG_R12D, REG_R13B, REG_R13W, REG_R13D, REG_R14B, REG_R14W, REG_R14D, REG_R15B, REG_R15W, REG_R15D, 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_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_XMM8, REG_XMM9, REG_XMM10, REG_XMM11, REG_XMM12, REG_XMM13, REG_XMM14, REG_XMM15, REG_XMM_SSE_LAST = REG_XMM15, REG_XMM_AVX_LAST = REG_XMM_SSE_LAST, REG_XMM_AVX512_HI16_FIRST, REG_XMM16 = REG_XMM_AVX512_HI16_FIRST, REG_XMM17, REG_XMM18, REG_XMM19, REG_XMM20, REG_XMM21, REG_XMM22, REG_XMM23, REG_XMM24, REG_XMM25, REG_XMM26, REG_XMM27, REG_XMM28, REG_XMM29, REG_XMM30, REG_XMM31, REG_XMM_AVX512_HI16_LAST = REG_XMM31, REG_XMM_AVX512_LAST = REG_XMM_AVX512_HI16_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_YMM8, REG_YMM9, REG_YMM10, REG_YMM11, REG_YMM12, REG_YMM13, REG_YMM14, REG_YMM15, REG_YMM_AVX_LAST = REG_YMM15, REG_YMM_AVX512_HI16_FIRST, REG_YMM16 = REG_YMM_AVX512_HI16_FIRST, REG_YMM17, REG_YMM18, REG_YMM19, REG_YMM20, REG_YMM21, REG_YMM22, REG_YMM23, REG_YMM24, REG_YMM25, REG_YMM26, REG_YMM27, REG_YMM28, REG_YMM29, REG_YMM30, REG_YMM31, REG_YMM_AVX512_HI16_LAST = REG_YMM31, REG_YMM_AVX512_LAST = REG_YMM_AVX512_HI16_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_ZMM8, REG_ZMM9, REG_ZMM10, REG_ZMM11, REG_ZMM12, REG_ZMM13, REG_ZMM14, REG_ZMM15, REG_ZMM_AVX512_SPLIT_LAST = REG_ZMM15, REG_ZMM_AVX512_HI16_FIRST, REG_ZMM16 = REG_ZMM_AVX512_HI16_FIRST, REG_ZMM17, REG_ZMM18, REG_ZMM19, REG_ZMM20, REG_ZMM21, REG_ZMM22, REG_ZMM23, REG_ZMM24, REG_ZMM25, REG_ZMM26, REG_ZMM27, REG_ZMM28, REG_ZMM29, REG_ZMM30, REG_ZMM31, REG_ZMM_AVX512_HI16_LAST = REG_ZMM31, REG_ZMM_AVX512_LAST = REG_ZMM_AVX512_HI16_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_RAX, REG_ORIG_GAX = REG_ORIG_RAX, 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_INST_G0D, REG_INST_G1D, REG_INST_G2D, REG_INST_G3D, REG_INST_G4D, REG_INST_G5D, REG_INST_G6D, REG_INST_G7D, REG_INST_G8D, REG_INST_G9D, REG_INST_G10D, REG_INST_G11D, REG_INST_G12D, REG_INST_G13D, REG_INST_G14D, REG_INST_G15D, REG_INST_G16D, REG_INST_G17D, REG_INST_G18D, REG_INST_G19D, REG_INST_G20D, REG_INST_G21D, REG_INST_G22D, REG_INST_G23D, REG_INST_G24D, REG_INST_G25D, REG_INST_G26D, REG_INST_G27D, REG_INST_G28D, REG_INST_G29D, REG_TOOL_LAST = REG_INST_G29D, REG_LAST } |
enum | REG_ACCESS { REG_ACCESS_READ, REG_ACCESS_WRITE, REG_ACCESS_OVERWRITE } |
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_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_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_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_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_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 | |
VOID | PIN_InitExceptionInfo (EXCEPTION_INFO *pExceptInfo, EXCEPTION_CODE exceptCode, ADDRINT exceptAddress) |
VOID | PIN_InitAccessFaultInfo (EXCEPTION_INFO *pExceptInfo, EXCEPTION_CODE exceptCode, ADDRINT exceptAddress, ADDRINT accessAddress, FAULTY_ACCESS_TYPE accessType=FAULTY_ACCESS_TYPE_UNKNOWN) |
VOID | PIN_InitWindowsExceptionInfo (EXCEPTION_INFO *pExceptInfo, UINT32 sysExceptCode, ADDRINT exceptAddress, UINT32 numArgs=0, const ADDRINT *pArgs=0) |
EXCEPTION_CODE | PIN_GetExceptionCode (const EXCEPTION_INFO *pExceptInfo) |
EXCEPTION_CLASS | PIN_GetExceptionClass (EXCEPTION_CODE exceptCode) |
ADDRINT | PIN_GetExceptionAddress (const EXCEPTION_INFO *pExceptInfo) |
VOID | PIN_SetExceptionAddress (EXCEPTION_INFO *pExceptInfo, ADDRINT exceptAddress) |
FAULTY_ACCESS_TYPE | PIN_GetFaultyAccessType (const EXCEPTION_INFO *pExceptInfo) |
BOOL | PIN_GetFaultyAccessAddress (const EXCEPTION_INFO *pExceptInfo, ADDRINT *pAccessAddress) |
UINT32 | PIN_GetFpErrorSet (const EXCEPTION_INFO *pExceptInfo) |
UINT32 | PIN_GetWindowsExceptionCode (const EXCEPTION_INFO *pExceptInfo) |
UINT32 | PIN_CountWindowsExceptionArguments (const EXCEPTION_INFO *pExceptInfo) |
ADDRINT | PIN_GetWindowsExceptionArgument (const EXCEPTION_INFO *pExceptInfo, UINT32 argNum) |
std::string | PIN_ExceptionToString (const EXCEPTION_INFO *pExceptInfo) |
LOCALVAR KNOB_COMMENT | KnobUserAndPintoolFamily ("user&pintool", "General switches (available in pin and tool)") |
LOCALVAR KNOB_COMMENT | KnobMemoryConstraintsFamily ("user:memory", "Knobs for constraining memory usage") |
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) |
LOCALVAR KNOB_COMMENT | KnobStatFamily ("supported:stat", "Statistic switches") |
VOID | SetAddress0x (BOOL val) |
BOOL | CharIsSpace (CHAR c) |
CHAR | CharToUpper (CHAR c) |
std::string | ptrstr (const VOID *val) |
std::string | StringFromAddrint (ADDRINT l) |
std::string | StringFromUint64 (UINT64 l) |
std::string | StringDec (UINT64 l, UINT32 digits, CHAR padding) |
std::string | StringDecSigned (INT64 l, UINT32 digits, CHAR padding) |
std::string | StringBignum (INT64 l, UINT32 digits, CHAR padding) |
std::string | Reformat (const std::string &s, const std::string &prefix, UINT32 min_line, UINT32 max_line) |
std::string | StringHex32 (UINT32 l, UINT32 digits, BOOL prefix_0x) |
std::string | StringBool (BOOL b) |
std::string | StringTri (TRI t) |
INT32 | Int32FromString (const std::string &s) |
UINT32 | Uint32FromString (const std::string &s) |
INT64 | Int64FromString (const std::string &s) |
UINT64 | Uint64FromString (const std::string &s) |
FLT64 | FLT64FromString (const std::string &s) |
INT | CharToHexDigit (CHAR c) |
ADDRINT | AddrintFromString (const std::string &str) |
std::string | ReadLine (std::istream &inputFile, UINT32 *lineNum) |
UINT32 | Tokenize (const std::string &line, std::string *array, UINT32 n) |
std::string | StringHex (UINT32 l, UINT32 digits, BOOL prefix_0x=TRUE) |
std::string | decstr (INT64 val, UINT32 width=0) |
std::string | decstr (INT32 val, UINT32 width=0) |
std::string | decstr (INT16 val, UINT32 width=0) |
std::string | decstr (UINT64 val, UINT32 width=0) |
std::string | decstr (UINT32 val, UINT32 width=0) |
std::string | decstr (UINT16 val, UINT32 width=0) |
std::string | hexstr (INT64 val, UINT32 width=0) |
std::string | hexstr (INT32 val, UINT32 width=0) |
std::string | hexstr (INT16 val, UINT32 width=0) |
std::string | hexstr (UINT64 val, UINT32 width=0) |
std::string | hexstr (VOID *p, UINT32 width=0) |
std::string | hexstr (const VOID *p, UINT32 width=0) |
std::string | hexstr (UINT32 val, UINT32 width=0) |
std::string | hexstr (UINT16 val, UINT32 width=0) |
std::string | ljstr (const std::string &s, UINT32 width, CHAR padding=' ') |
std::string | StringFlt (FLT64 val, UINT32 precision, UINT32 width) |
std::string | fltstr (FLT64 val, UINT32 prec=0, UINT32 width=0) |
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) |
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_mxcsr (REG reg) |
BOOL | REG_is_any_mxcsr (REG reg) |
BOOL | REG_is_mm (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) |
BOOL | REG_is_st (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_is_gs_or_fs (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_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) |
BOOL | REG_is_pin64 (REG reg) |
REG | REG_LastSupportedXmm () |
REG | REG_LastSupportedYmm () |
REG | REG_LastSupportedZmm () |
UINT32 | REG_Size (REG reg) |
REG | REG_FullRegName (const REG reg) |
std::string | REG_StringShort (REG reg) |
REG | REG_IdentityCopy (const REG reg) |
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) |
BOOL | REG_is_partialreg (const REG reg) |
Variables | |
GLOBALCONST UINT32 | MAX_WINDOWS_EXCEPTION_ARGS = 5 |
GLOBALCONST TLS_KEY | INVALID_TLS_KEY =(-1) |
LOCALVAR BOOL | Address0x = false |
LOCALVAR const CHAR | HexTab [] = "0123456789abcdef" |
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 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 |
This file defines an object which collects statistics about the various ATOMIC objects.
This module contains routines and classes for the memory management of large arrays When changing this code, keep in mind that is supposed to work in both 32bit and 64bit environments!
TODO: when reserving a new memory chunk we could probe whether the area is available
child process definitions
A lock that is more full-featured than a "simple" lock. This lock uses a loop over yield to wait on the lock. The Linux implementation uses FUTEX and is implemented in futexlock.cpp.
A specific lock implementation that is more full-featured than a "simple" lock.
This module contains routines and classes for the handling error messages. This module differs from message.cpp by being included only in the VM, not the client.
Basic definitions pertaining to hardware and software exceptions.
Contains declarations of types related to the fp state on ia-32
Contains declarations of types related to the fp state on Intel64
This module contains routines and classes for the processing of command line arguments.
Definitions of knobs which are part of pin's command line (rather than the tool's command line). This file is located in level base in order to allow the launcher (i.e. pin.exe) to define the same set of knobs
This file contains lock primitives
This module contains routines and classes for the handling error messages
Parsing utilities of pin's command line
This file contains REG primitives
Templates of singleton classes
This module contains useful utility functions.
This file contains general unicode utilities
This module provides information about current Pin Version. pin_version.h is a special auto-generated file.
This file contains basic abstractions for IA32
Interface for querying the ia32/intel64 CPU features
GLOBALCONST UINT32 LEVEL_BASE::PIN_INFINITE_TIMEOUT = static_cast<UINT32>(-1) |
Timeout interval that never elapses.
GLOBALCONST UINT32 LEVEL_BASE::PIN_MAX_THREADS = 2048 |
Maximum number of threads supported by PIN.