Pin
Classes | Typedefs | Enumerations | Functions | Variables
LEVEL_BASE Namespace Reference

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
 

Detailed Description

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

Variable Documentation

◆ PIN_INFINITE_TIMEOUT

GLOBALCONST UINT32 LEVEL_BASE::PIN_INFINITE_TIMEOUT = static_cast<UINT32>(-1)

Timeout interval that never elapses.

◆ PIN_MAX_THREADS

GLOBALCONST UINT32 LEVEL_BASE::PIN_MAX_THREADS = 2048

Maximum number of threads supported by PIN.