Pin
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Groups Pages
Typedefs | Enumerations | Functions | Variables
exception.cpp File Reference
#include "level_base.H"

Typedefs

typedef struct EXCEPTION_INFO EXCEPTION_INFO
 

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)
}
 

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)
 
string PIN_ExceptionToString (const EXCEPTION_INFO *pExceptInfo)
 
LOCALFUN string ExceptCodeToString (EXCEPTION_CODE exceptCode)
 
LOCALFUN string AccessTypeToString (FAULTY_ACCESS_TYPE accessType)
 
LOCALFUN string FpErrorMaskToString (UINT32 fpErrors)
 

Variables

GLOBALCONST UINT32 MAX_WINDOWS_EXCEPTION_ARGS = 5
 

Detailed Description

Basic definitions pertaining to hardware and software exceptions.