#include "level_base.H"
#include "level_core.H"
#include "level_imgio.H"
#include "level_vmclient.H"
#include "level_pinclient.H"
#include <map>
#include "my_elf.h"
#include <limits.h>
#include <iostream>
#include <list>
Typedefs | |
typedef VOID(* | LEVEL_PINCLIENT::IMAGECALLBACK )(IMG, VOID *) |
typedef map< ADDRINT, USIZE > | LEVEL_PINCLIENT::CODE_RANGES |
Enumerations | |
enum | LEVEL_PINCLIENT::UNDECORATION { LEVEL_PINCLIENT::UNDECORATION_COMPLETE, LEVEL_PINCLIENT::UNDECORATION_NAME_ONLY } |
enum | LEVEL_PINCLIENT::SYMBOL_INFO_MODE { LEVEL_PINCLIENT::NO_SYMBOLS = 0, LEVEL_PINCLIENT::EXPORT_SYMBOLS = (1<<0), LEVEL_PINCLIENT::DEBUG_SYMBOLS = (1<<1), LEVEL_PINCLIENT::IFUNC_SYMBOLS = (1<<2), LEVEL_PINCLIENT::DEBUG_OR_EXPORT_SYMBOLS = (DEBUG_SYMBOLS | EXPORT_SYMBOLS) } |
enum | IMAGE_LOAD_FLAGS { IMAGE_LOAD_NONE = 0x00, LEVEL_PINCLIENT::IMAGE_LOAD_MAINEXECUTABLE = 0x01, LEVEL_PINCLIENT::IMAGE_LOAD_FOUNDINMEMORY = 0x02, LEVEL_PINCLIENT::IMAGE_LOAD_RUNTIME = 0x04, LEVEL_PINCLIENT::IMAGE_LOAD_TEXTFROMIMAGE = 0x08 } |
Functions | |
LOCALVAR KNOB_COMMENT | LEVEL_PINCLIENT::KnobSymFamily ("pintool:sym","Symbols controls") |
LOCALVAR KNOB< BOOL > | LEVEL_PINCLIENT::KnobUnrestrictedRtnSize (KNOB_MODE_WRITEONCE,"pintool:sym","unrestricted_rtn_size","0","Use the unrestricted RTN size. ""When set the RTN size defined by the distance between RTN start to the beginning of next RTN.") |
LOCALVAR KNOB< BOOL > | LEVEL_PINCLIENT::KnobShortName (KNOB_MODE_WRITEONCE,"pintool:sym","short_name","0","Use the shortest name for the RTN. ""Names with version substrings are preferred over the same name without the substring.") |
KNOB< BOOL > | LEVEL_PINCLIENT::KnobJitApi (KNOB_MODE_WRITEONCE,"pintool:sym","support_jit_api","0","Enables the Jitted Functions Support") |
IMG | LEVEL_PINCLIENT::IMG_Next (IMG img) |
IMG | LEVEL_PINCLIENT::IMG_Prev (IMG img) |
IMG | LEVEL_PINCLIENT::IMG_Invalid () |
BOOL | LEVEL_PINCLIENT::IMG_Valid (IMG img) |
SEC | LEVEL_PINCLIENT::IMG_SecHead (IMG img) |
SEC | LEVEL_PINCLIENT::IMG_SecTail (IMG img) |
SYM | LEVEL_PINCLIENT::IMG_RegsymHead (IMG img) |
ADDRINT | LEVEL_PINCLIENT::IMG_Entry (IMG img) |
const string & | LEVEL_PINCLIENT::IMG_Name (IMG img) |
ADDRINT | LEVEL_PINCLIENT::IMG_Gp (IMG img) |
ADDRINT | LEVEL_PINCLIENT::IMG_LoadOffset (IMG img) |
ADDRINT | LEVEL_PINCLIENT::IMG_LowAddress (IMG img) |
ADDRINT | LEVEL_PINCLIENT::IMG_HighAddress (IMG img) |
ADDRINT | LEVEL_PINCLIENT::IMG_StartAddress (IMG img) |
USIZE | LEVEL_PINCLIENT::IMG_SizeMapped (IMG img) |
IMG_TYPE | LEVEL_PINCLIENT::IMG_Type (IMG img) |
BOOL | LEVEL_PINCLIENT::IMG_IsMainExecutable (IMG x) |
BOOL | LEVEL_PINCLIENT::IMG_IsStaticExecutable (IMG x) |
UINT32 | LEVEL_PINCLIENT::IMG_NumRegions (IMG img) |
ADDRINT | LEVEL_PINCLIENT::IMG_RegionHighAddress (IMG img, UINT32 n) |
ADDRINT | LEVEL_PINCLIENT::IMG_RegionLowAddress (IMG img, UINT32 n) |
RTN | LEVEL_PINCLIENT::IMG_FindRtnByName (IMG img, const string &name) |
LOCALFUN RTN | LEVEL_PINCLIENT::FinalizeRtn (RTN rtn, USIZE size) |
LOCALFUN VOID | LEVEL_PINCLIENT::AddRtnsToMap (IMG img) |
IMG | LEVEL_PINCLIENT::IMG_CreateAt (const char *filename, ADDRINT start, USIZE size, ADDRINT loadOffset, BOOL mainExecutable) |
IMG | LEVEL_PINCLIENT::SEC_Img (SEC sec) |
SEC | LEVEL_PINCLIENT::SEC_Next (SEC sec) |
SEC | LEVEL_PINCLIENT::SEC_Prev (SEC sec) |
SEC | LEVEL_PINCLIENT::SEC_Invalid () |
BOOL | LEVEL_PINCLIENT::SEC_Valid (SEC x) |
RTN | LEVEL_PINCLIENT::SEC_RtnHead (SEC sec) |
RTN | LEVEL_PINCLIENT::SEC_RtnTail (SEC sec) |
const string & | LEVEL_PINCLIENT::SEC_Name (SEC sec) |
SEC_TYPE | LEVEL_PINCLIENT::SEC_Type (SEC sec) |
BOOL | LEVEL_PINCLIENT::SEC_Mapped (SEC sec) |
const VOID * | LEVEL_PINCLIENT::SEC_Data (SEC sec) |
SEC | LEVEL_PINCLIENT::RTN_Sec (RTN x) |
RTN | LEVEL_PINCLIENT::RTN_Next (RTN x) |
RTN | LEVEL_PINCLIENT::RTN_Prev (RTN x) |
RTN | LEVEL_PINCLIENT::RTN_Invalid () |
BOOL | LEVEL_PINCLIENT::RTN_Valid (RTN x) |
LOCALINLINE RTN_OUTSIDE_RANGES & | LEVEL_PINCLIENT::RtnOutsideRangesManager () |
LOCALFUN VOID | LEVEL_PINCLIENT::DisassembleRegion (RTN rtn, BBL bbl, const VOID *current, const VOID *end, ADDRINT rtnStart, ADDRINT rtnEnd, ADDRINT virtual_offset) |
LOCALFUN INS | LEVEL_PINCLIENT::DisassembleFirstIns (const VOID *current, const VOID *end, ADDRINT virtual_offset) |
LOCALFUN VOID | LEVEL_PINCLIENT::FetchRtnIns (RTN rtn) |
LOCALFUN INS | LEVEL_PINCLIENT::FetchRtnInsFirstOnly (RTN rtn) |
PIN_DEPRECATED_API BBL | LEVEL_PINCLIENT::RTN_BblHead (RTN x) |
PIN_DEPRECATED_API BBL | LEVEL_PINCLIENT::RTN_BblTail (RTN x) |
const string & | LEVEL_PINCLIENT::RTN_Name (RTN x) |
BOOL | LEVEL_PINCLIENT::RTN_IsArtificial (RTN x) |
SYM | LEVEL_PINCLIENT::RTN_Sym (RTN x) |
AFUNPTR | LEVEL_PINCLIENT::RTN_Funptr (RTN x) |
LOCALFUN VOID | LEVEL_PINCLIENT::RTN_Destroy (RTN rtn) |
INT32 | LEVEL_PINCLIENT::RTN_Id (RTN x) |
PIN_DEPRECATED_API INT32 | LEVEL_PINCLIENT::RTN_No (RTN x) |
INS | LEVEL_PINCLIENT::BBL_InsHead (BBL x) |
INS | LEVEL_PINCLIENT::BBL_InsTail (BBL x) |
BBL | LEVEL_PINCLIENT::BBL_Next (BBL x) |
BBL | LEVEL_PINCLIENT::BBL_Prev (BBL x) |
BOOL | LEVEL_PINCLIENT::BBL_Valid (BBL x) |
BBL_TYPE | LEVEL_PINCLIENT::BBL_Type (BBL x) |
EDG | LEVEL_PINCLIENT::EDG_NextSucc (EDG x) |
EDG | LEVEL_PINCLIENT::EDG_INVALID () |
BOOL | LEVEL_PINCLIENT::EDG_Valid (EDG x) |
EDG_TYPE | LEVEL_PINCLIENT::EDG_Type (EDG x) |
RTN | LEVEL_PINCLIENT::INS_Rtn (INS x) |
INS | LEVEL_PINCLIENT::INS_Next (INS x) |
INS | LEVEL_PINCLIENT::INS_Prev (INS x) |
INS | LEVEL_PINCLIENT::INS_Invalid () |
BOOL | LEVEL_PINCLIENT::INS_Valid (INS x) |
ADDRINT | LEVEL_PINCLIENT::INS_Address (INS ins) |
USIZE | LEVEL_PINCLIENT::INS_Size (INS ins) |
ADDRINT | LEVEL_PINCLIENT::INS_DirectBranchOrCallTargetAddress (INS ins) |
ADDRINT | LEVEL_PINCLIENT::INS_NextAddress (INS ins) |
SYM | LEVEL_PINCLIENT::SYM_Next (SYM x) |
SYM | LEVEL_PINCLIENT::SYM_Prev (SYM x) |
const string & | LEVEL_PINCLIENT::SYM_Name (SYM x) |
SYM | LEVEL_PINCLIENT::SYM_Invalid () |
BOOL | LEVEL_PINCLIENT::SYM_Valid (SYM x) |
BOOL | LEVEL_PINCLIENT::SYM_Dynamic (SYM x) |
BOOL | LEVEL_PINCLIENT::SYM_OriginatedFromIFunc (SYM x) |
BOOL | LEVEL_PINCLIENT::SYM_IFunc (SYM x) |
ADDRINT | LEVEL_PINCLIENT::SYM_Value (SYM x) |
UINT32 | LEVEL_PINCLIENT::SYM_Index (SYM x) |
ADDRINT | LEVEL_PINCLIENT::SYM_Address (SYM x) |
IMG | LEVEL_PINCLIENT::GetOpenImg () |
VOID | LEVEL_PINCLIENT::ResetOpenRtn () |
VOID | LEVEL_PINCLIENT::ResetOpenImg () |
VOID | LEVEL_PINCLIENT::InitializeApp () |
VOID | LEVEL_PINCLIENT::UnInitializeApp () |
UINT32 | LEVEL_PINCLIENT::IMG_Id (IMG x) |
IMG | LEVEL_PINCLIENT::IMG_FindImgById (UINT32 id) |
IMG | LEVEL_PINCLIENT::IMG_FindByUnloadAddress (ADDRINT startAddress) |
IMG | LEVEL_PINCLIENT::IMG_FindByAddress (ADDRINT address) |
IMG | LEVEL_PINCLIENT::IMG_FindBySectionsAddress (ADDRINT address) |
PIN_CALLBACK | LEVEL_PINCLIENT::RTN_AddInstrumentFunction (RTN_INSTRUMENT_CALLBACK fun, VOID *val) |
LOCALFUN BOOL | LEVEL_PINCLIENT::operator< (const RTN_KEY &p1, const RTN_KEY &p2) |
PIN_CALLBACK | LEVEL_PINCLIENT::IMG_AddInstrumentFunction (IMAGECALLBACK fun, VOID *v) |
VOID | LEVEL_PINCLIENT::IMG_RemoveToolCallbacks () |
PIN_CALLBACK | LEVEL_PINCLIENT::IMG_AddUnloadFunction (IMAGECALLBACK fun, VOID *v) |
LOCALFUN VOID | LEVEL_PINCLIENT::IMG_Destroy (IMG img) |
VOID | LEVEL_PINCLIENT::ProcessImageUnload (IMG img, BOOL copyBits) |
VOID | LEVEL_PINCLIENT::PIN_UnloadAllImages (BOOL copyBits) |
VOID | LEVEL_PINCLIENT::ProcessModuleUnload (ADDRINT base) |
USIZE | LEVEL_PINCLIENT::RTN_Range (RTN rtn) |
USIZE | LEVEL_PINCLIENT::RTN_Size (RTN rtn) |
LOCALFUN VOID | LEVEL_PINCLIENT::InitRtnToSym (RTN rtn, SYM sym) |
LOCALFUN VOID | LEVEL_PINCLIENT::UseShortName (RTN rtn, SYM sym) |
LOCALFUN VOID | LEVEL_PINCLIENT::BestFit (RTN rtn, SYM sym) |
LOCALFUN INT | LEVEL_PINCLIENT::SymPosition (SYM sym, const MemRange &range) |
LOCALFUN VOID | LEVEL_PINCLIENT::FindCodeRanges (IMG img, CODE_RANGES *rangeMap) |
VOID | LEVEL_PINCLIENT::NotifyDataRange (CODE_RANGES *rangeMap, ADDRINT base, USIZE size) |
LOCALFUN VOID | LEVEL_PINCLIENT::MakeRtns (IMG img) |
VOID | LEVEL_PINCLIENT::CallRtnCallbacks (RTN rtn) |
LOCALFUN VOID | LEVEL_PINCLIENT::CallRtnCallbacks (IMG img) |
LOCALFUN IMG | LEVEL_PINCLIENT::ImgLoad (const string &filename, const CHAR *trueFilename, ADDRINT load_offset, UINT32 flags, BOOL *unmapAfterProcessing, void *arg) |
VOID | LEVEL_PINCLIENT::IMG_RecordLoadOp (const string &imageName, const char *fileName, ADDRINT lo, UINT32 fl) |
VOID | LEVEL_PINCLIENT::IMG_RecordLoadOp (IMG img) |
VOID | LEVEL_PINCLIENT::IMG_ExecuteRecordedLoadOps () |
IMG | LEVEL_PINCLIENT::IMG_Open (const string &filename) |
VOID | LEVEL_PINCLIENT::IMG_Close (IMG img) |
LOCALFUN THREAD_CONTEXT | LEVEL_PINCLIENT::NewThread () |
LOCALFUN VOID | LEVEL_PINCLIENT::ImageLoadProbes (IMG img) |
LOCALFUN BOOL | LEVEL_PINCLIENT::CheckImgIntersection (ADDRINT lowaddr, ADDRINT highaddr, IMG img) |
LOCALFUN IMG | LEVEL_PINCLIENT::IMG_CheckIntersectingImg (IMG newimg, ADDRINT lowaddr, ADDRINT highaddr) |
VOID | LEVEL_PINCLIENT::IMG_HandleImageIntersection (IMG new_img, VOID *arg) |
IMG | LEVEL_PINCLIENT::ProcessImageLoad (const string &filename, const CHAR *trueFilename, ADDRINT load_offset, UINT32 flags, void *arg) |
VOID | LEVEL_PINCLIENT::IMG_ReplayImageLoad (IMG img) |
VOID | LEVEL_PINCLIENT::CompleteImageLoad (IMG img, void *arg) |
VOID | LEVEL_PINCLIENT::InitDynamicCodeImage (IMG newImg) |
BOOL | LEVEL_PINCLIENT::IsPinLoaded (const string &name) |
string | LEVEL_PINCLIENT::RTN_FindNameByAddress (ADDRINT address) |
RTN | LEVEL_PINCLIENT::RTN_FindByAddress (ADDRINT address) |
RTN | LEVEL_PINCLIENT::RTN_FindByName (IMG img, const CHAR *name) |
VOID | LEVEL_PINCLIENT::RTN_Open (RTN rtn) |
VOID | LEVEL_PINCLIENT::RTN_OpenAndFetch (RTN rtn) |
VOID | LEVEL_PINCLIENT::RTN_Close (RTN rtn) |
INS | LEVEL_PINCLIENT::RTN_InsHead (RTN rtn) |
INS | LEVEL_PINCLIENT::RTN_InsHeadOnly (RTN rtn) |
INS | LEVEL_PINCLIENT::RTN_InsTail (RTN rtn) |
UINT32 | LEVEL_PINCLIENT::RTN_NumIns (RTN rtn) |
VOID | LEVEL_PINCLIENT::RTN_InsertCall (RTN rtn, IPOINT action, AFUNPTR funptr,...) |
ADDRINT | LEVEL_PINCLIENT::RTN_Address (RTN rtn) |
RTN | LEVEL_PINCLIENT::RTN_CreateAt (ADDRINT address, string name) |
RTN | LEVEL_PINCLIENT::RTN_CreateJitFunction (IMG img, ADDRINT address, const string &name, USIZE size) |
VOID | LEVEL_PINCLIENT::RTN_DestroyJitFunction (ADDRINT address) |
BOOL | LEVEL_PINCLIENT::RTN_IsDynamic (RTN rtn) |
ADDRINT | LEVEL_PINCLIENT::SEC_Address (SEC sec) |
BOOL | LEVEL_PINCLIENT::SEC_IsReadable (SEC sec) |
BOOL | LEVEL_PINCLIENT::SEC_IsWriteable (SEC sec) |
BOOL | LEVEL_PINCLIENT::SEC_IsExecutable (SEC sec) |
USIZE | LEVEL_PINCLIENT::SEC_Size (SEC sec) |
BOOL | LEVEL_PINCLIENT::BBL_Original (BBL bbl) |
ADDRINT | LEVEL_PINCLIENT::BBL_Address (BBL bbl) |
USIZE | LEVEL_PINCLIENT::BBL_Size (BBL bbl) |
IMG | LEVEL_PINCLIENT::APP_ImgHead () |
IMG | LEVEL_PINCLIENT::APP_ImgTail () |
BOOL | LEVEL_PINCLIENT::ToolUseImageAPI () |
string | LEVEL_PINCLIENT::PIN_UndecorateSymbolName (const string &symbolName, UNDECORATION style) |
Static model for instrumenting IMG's once they are loaded into memory.