|
CCTLib
Calling-context and data-object attribution library for Intel Pin
|
#include <stdio.h>#include <stdlib.h>#include <stdint.h>#include <malloc.h>#include <iostream>#include <unistd.h>#include <assert.h>#include <string.h>#include <sys/mman.h>#include <sstream>#include <functional>#include <unordered_set>#include <vector>#include <unordered_map>#include <algorithm>#include <list>#include "pin.H"#include "pin_isa_compat.H"#include "cctlib.H"#include "shadow_memory.H"#include <xmmintrin.h>#include <immintrin.h>#include "xed-interface.h"#include "xed-common-hdrs.h"#include <google/sparse_hash_map>#include <google/dense_hash_map>
Include dependency graph for redspy_temporal_client.cpp:Go to the source code of this file.
Classes | |
| struct | AddrValPair |
| struct | LargeReg |
| struct | RedSpyThreadData |
| struct | HandleAliasRegisters< T, aliasGroup > |
| struct | HandleGeneralRegisters< T, len > |
| struct | HandleSpecialRegisters< lenInt64 > |
| struct | ApproxGeneralRegisters< T, isAlias > |
| struct | ApproxLargeRegisters< T, simdType > |
| struct | UnrolledLoop< start, end, incr > |
| struct | UnrolledLoop< end, end, incr, conditional, approx > |
| struct | UnrolledConjunction< start, end, incr > |
| struct | UnrolledConjunction< end, end, incr > |
| struct | RedSpyAnalysis< AccessLen, bufferOffset > |
| struct | RedSpyInstrument< readBufferSlotIndex > |
| struct | RedundacyData |
Macros | |
| #define | READ_ACTION (0) |
| #define | WRITE_ACTION (0xff) |
| #define | ONE_BYTE_READ_ACTION (0) |
| #define | TWO_BYTE_READ_ACTION (0) |
| #define | FOUR_BYTE_READ_ACTION (0) |
| #define | EIGHT_BYTE_READ_ACTION (0) |
| #define | ONE_BYTE_WRITE_ACTION (0xff) |
| #define | TWO_BYTE_WRITE_ACTION (0xffff) |
| #define | FOUR_BYTE_WRITE_ACTION (0xffffffff) |
| #define | EIGHT_BYTE_WRITE_ACTION (0xffffffffffffffff) |
| #define | IS_ACCESS_WITHIN_PAGE_BOUNDARY(accessAddr, accessLen) (PAGE_OFFSET((accessAddr)) <= (PAGE_OFFSET_MASK - (accessLen))) |
| #define | MAX_REDUNDANT_CONTEXTS_TO_LOG (1000) |
| #define | THREAD_MAX (1024) |
| #define | ENCODE_ADDRESS_AND_ACCESS_LEN(addr, len) ((addr) | (((uint64_t)(len)) << 48)) |
| #define | DECODE_ADDRESS(addrAndLen) ((addrAndLen) & ((1L << 48) - 1)) |
| #define | DECODE_ACCESS_LEN(addrAndLen) ((addrAndLen) >> 48) |
| #define | MAX_WRITE_OP_LENGTH (512) |
| #define | MAX_WRITE_OPS_IN_INS (8) |
| #define | MAX_REG_LENGTH (64) |
| #define | MAX_SIMD_LENGTH (64) |
| #define | MAX_SIMD_REGS (32) |
| #define | MAX_ALIAS_REGS (16) |
| #define | MAX_ALIAS_REG_SIZE (8) |
| #define | MAX_ALIAS_TYPE (3) |
| #define | ALIAS_BYTES_INDEX_64 (0) |
| #define | ALIAS_BYTES_INDEX_32 (0) |
| #define | ALIAS_BYTES_INDEX_16 (0) |
| #define | ALIAS_BYTES_INDEX_8_L (0) |
| #define | ALIAS_BYTES_INDEX_8_H (1) |
| #define | DECODE_DEAD(data) static_cast<ContextHandle_t>(((data)&0xffffffffffffffff) >> 32) |
| #define | DECODE_KILL(data) (static_cast<ContextHandle_t>((data)&0x00000000ffffffff)) |
| #define | MAKE_CONTEXT_PAIR(a, b) (((uint64_t)(a) << 32) | ((uint64_t)(b))) |
| #define | delta 0.01 |
| #define | HANDLE_SPECIALREG(LEN, REG_ID) INS_InsertPredicatedCall(ins, IPOINT_AFTER, (AFUNPTR)HandleSpecialRegisters<LEN>::CheckRegValues, IARG_REG_CONST_REFERENCE, reg, IARG_UINT32, REG_ID, IARG_UINT32, opaqueHandle, IARG_THREAD_ID, IARG_END) |
| #define | HANDLE_LARGEREG_APPROX(T, SIMD_TYPE, REG_ID) INS_InsertPredicatedCall(ins, IPOINT_AFTER, (AFUNPTR)ApproxLargeRegisters<T, SIMD_TYPE>::CheckValues, IARG_REG_CONST_REFERENCE, reg, IARG_UINT32, REG_ID, IARG_UINT32, opaqueHandle, IARG_THREAD_ID, IARG_END) |
| #define | HANDLE_ALIAS_REG(T, ALIAS_GRP, ID) INS_InsertPredicatedCall(ins, IPOINT_AFTER, (AFUNPTR)HandleAliasRegisters<T, ALIAS_GRP>::CheckUpdateGenericAlias, IARG_UINT32, ID, IARG_REG_VALUE, reg, IARG_UINT32, opaqueHandle, IARG_THREAD_ID, IARG_END) |
| #define | HANDLE_GENERAL(T) INS_InsertPredicatedCall(ins, IPOINT_AFTER, (AFUNPTR)HandleGeneralRegisters<T, 1>::CheckValues, IARG_REG_VALUE, reg, IARG_UINT32, reg, IARG_UINT32, opaqueHandle, IARG_THREAD_ID, IARG_END) |
| #define | HANDLE_APPROXREG(T, IS_ALIAS, REG_ID) INS_InsertPredicatedCall(ins, IPOINT_AFTER, (AFUNPTR)ApproxGeneralRegisters<T, IS_ALIAS>::CheckValues, IARG_REG_CONST_REFERENCE, reg, IARG_UINT32, REG_ID, IARG_UINT32, opaqueHandle, IARG_THREAD_ID, IARG_END) |
| #define | HANDLE_10BYTES_APPROX(REG_ID) INS_InsertPredicatedCall(ins, IPOINT_AFTER, (AFUNPTR)Check10BytesReg, IARG_CONTEXT, IARG_UINT32, REG_ID, IARG_UINT32, opaqueHandle, IARG_THREAD_ID, IARG_END) |
| #define | HANDLE_CASE(T, ACCESS_LEN, BUFFER_INDEX, IS_APPROX) |
| #define | HANDLE_APPROX_CASE(T, ACCESS_LEN, BUFFER_INDEX, IS_APPROX) |
| #define | HANDLE_LARGE() |
Enumerations | |
| enum | AliasReg { ALIAS_REG_A = 0 , ALIAS_REG_B , ALIAS_REG_C , ALIAS_REG_D , ALIAS_REG_BP , ALIAS_REG_DI , ALIAS_REG_SI , ALIAS_REG_SP , ALIAS_REG_R8 , ALIAS_REG_R9 , ALIAS_REG_R10 , ALIAS_REG_R11 , ALIAS_REG_R12 , ALIAS_REG_R13 , ALIAS_REG_R14 , ALIAS_REG_R15 } |
| enum | AliasGroup { ALIAS_GENERIC = 0 , ALIAS_HIGH_BYTE , ALIAS_LOW_BYTE } |
Functions | |
| struct AddrValPair | __attribute__ ((aligned(16))) |
| struct LargeReg | __attribute__ ((aligned(32))) |
| RedSpyThreadData * | ClientGetTLS (const THREADID threadId) |
| static INT32 | Usage () |
| static void | ClientInit (int argc, char *argv[]) |
| static void | AddToRedTable (uint64_t key, uint16_t value, THREADID threadId) __attribute__((always_inline |
| static void | AddToApproximateRedTable (uint64_t key, uint16_t value, THREADID threadId) __attribute__((always_inline |
| static bool | IsFloatInstruction (ADDRINT ip) |
| static bool | IsFloatInstructionOld (ADDRINT ip) |
| static uint16_t | FloatOperandSize (ADDRINT ip, uint32_t oper) |
| static void | Check10BytesReg (CONTEXT *ctxt, REG reg, uint32_t opaqueHandle, THREADID threadId) |
| static uint32_t | GetAliasIDs (REG reg) |
| bool | RegHasAlias (REG reg) |
| static void | InstrumentAliasReg (INS ins, REG reg, uint16_t oper, uint32_t opaqueHandle) |
| static void | InstrumentGeneralReg (INS ins, REG reg, uint16_t oper, uint32_t opaqueHandle) |
| static VOID | RecordValueBeforeLargeWrite (void *addr, UINT32 accessLen, uint32_t bufferOffset, THREADID threadId) |
| static VOID | CheckAfterLargeWrite (UINT32 accessLen, uint32_t bufferOffset, uint32_t opaqueHandle, THREADID threadId) |
| static int | GetNumWriteOperandsInIns (INS ins, UINT32 &whichOp) |
| static bool | INS_IsIgnorable (INS ins) |
| static bool | REG_IsIgnorable (REG reg) |
| static VOID | InstrumentInsCallback (INS ins, VOID *v, const uint32_t opaqueHandle) |
| VOID | Update (uint32_t bytes, THREADID threadId) |
| static void | InstrumentTrace (TRACE trace, void *f) |
| static bool | RedundacyCompare (const struct RedundacyData &first, const struct RedundacyData &second) |
| static void | PrintRedundancyPairs (THREADID threadId) |
| static void | PrintApproximationRedundancyPairs (THREADID threadId) |
| static VOID | ImageUnload (IMG img, VOID *v) |
| static VOID | ThreadFiniFunc (THREADID threadid, const CONTEXT *ctxt, INT32 code, VOID *v) |
| static VOID | FiniFunc (INT32 code, VOID *v) |
| static void | InitThreadData (RedSpyThreadData *tdata) |
| static VOID | ThreadStart (THREADID threadid, CONTEXT *ctxt, INT32 flags, VOID *v) |
| int | main (int argc, char *argv[]) |
Variables | |
| uint8_t | value [MAX_WRITE_OP_LENGTH] |
| void * | address |
| struct RedSpyThreadData | __attribute__ |
| static TLS_KEY | client_tls_key |
| static RedSpyThreadData * | gSingleThreadedTData |
| static FILE * | gTraceFile |
| static ConcurrentShadowMemory< ContextHandle_t > | sm |
| struct { | |
| char dummy1 [128] | |
| xed_state_t xedState | |
| char dummy2 [128] | |
| } | RedSpyGlobals |
| static const uint64_t | READ_ACCESS_STATES [] = { 0, ONE_BYTE_READ_ACTION, TWO_BYTE_READ_ACTION, 0, FOUR_BYTE_READ_ACTION, 0, 0, 0, EIGHT_BYTE_READ_ACTION} |
| static const uint64_t | WRITE_ACCESS_STATES [] = { 0, ONE_BYTE_WRITE_ACTION, TWO_BYTE_WRITE_ACTION, 0, FOUR_BYTE_WRITE_ACTION, 0, 0, 0, EIGHT_BYTE_WRITE_ACTION} |
| static const uint8_t | OVERFLOW_CHECK [] = { 0, 0, 0, 1, 2, 3, 4, 5, 6} |
| static dense_hash_map< uint64_t, uint64_t > | RedMap [THREAD_MAX] |
| static dense_hash_map< uint64_t, uint64_t > | ApproxRedMap [THREAD_MAX] |
| static void | flatten |
| #define ALIAS_BYTES_INDEX_16 (0) |
Definition at line 111 of file redspy_temporal_client.cpp.
| #define ALIAS_BYTES_INDEX_32 (0) |
Definition at line 110 of file redspy_temporal_client.cpp.
| #define ALIAS_BYTES_INDEX_64 (0) |
Definition at line 109 of file redspy_temporal_client.cpp.
| #define ALIAS_BYTES_INDEX_8_H (1) |
Definition at line 113 of file redspy_temporal_client.cpp.
| #define ALIAS_BYTES_INDEX_8_L (0) |
Definition at line 112 of file redspy_temporal_client.cpp.
| #define DECODE_ACCESS_LEN | ( | addrAndLen | ) | ((addrAndLen) >> 48) |
Definition at line 65 of file redspy_temporal_client.cpp.
| #define DECODE_ADDRESS | ( | addrAndLen | ) | ((addrAndLen) & ((1L << 48) - 1)) |
Definition at line 64 of file redspy_temporal_client.cpp.
| #define DECODE_DEAD | ( | data | ) | static_cast<ContextHandle_t>(((data)&0xffffffffffffffff) >> 32) |
Definition at line 137 of file redspy_temporal_client.cpp.
| #define DECODE_KILL | ( | data | ) | (static_cast<ContextHandle_t>((data)&0x00000000ffffffff)) |
Definition at line 138 of file redspy_temporal_client.cpp.
| #define delta 0.01 |
Definition at line 143 of file redspy_temporal_client.cpp.
| #define EIGHT_BYTE_READ_ACTION (0) |
Definition at line 49 of file redspy_temporal_client.cpp.
| #define EIGHT_BYTE_WRITE_ACTION (0xffffffffffffffff) |
Definition at line 54 of file redspy_temporal_client.cpp.
| #define ENCODE_ADDRESS_AND_ACCESS_LEN | ( | addr, | |
| len | |||
| ) | ((addr) | (((uint64_t)(len)) << 48)) |
Definition at line 63 of file redspy_temporal_client.cpp.
| #define FOUR_BYTE_READ_ACTION (0) |
Definition at line 48 of file redspy_temporal_client.cpp.
| #define FOUR_BYTE_WRITE_ACTION (0xffffffff) |
Definition at line 53 of file redspy_temporal_client.cpp.
| #define HANDLE_10BYTES_APPROX | ( | REG_ID | ) | INS_InsertPredicatedCall(ins, IPOINT_AFTER, (AFUNPTR)Check10BytesReg, IARG_CONTEXT, IARG_UINT32, REG_ID, IARG_UINT32, opaqueHandle, IARG_THREAD_ID, IARG_END) |
Definition at line 1447 of file redspy_temporal_client.cpp.
| #define HANDLE_ALIAS_REG | ( | T, | |
| ALIAS_GRP, | |||
| ID | |||
| ) | INS_InsertPredicatedCall(ins, IPOINT_AFTER, (AFUNPTR)HandleAliasRegisters<T, ALIAS_GRP>::CheckUpdateGenericAlias, IARG_UINT32, ID, IARG_REG_VALUE, reg, IARG_UINT32, opaqueHandle, IARG_THREAD_ID, IARG_END) |
Definition at line 1438 of file redspy_temporal_client.cpp.
| #define HANDLE_APPROX_CASE | ( | T, | |
| ACCESS_LEN, | |||
| BUFFER_INDEX, | |||
| IS_APPROX | |||
| ) |
Definition at line 1961 of file redspy_temporal_client.cpp.
| #define HANDLE_APPROXREG | ( | T, | |
| IS_ALIAS, | |||
| REG_ID | |||
| ) | INS_InsertPredicatedCall(ins, IPOINT_AFTER, (AFUNPTR)ApproxGeneralRegisters<T, IS_ALIAS>::CheckValues, IARG_REG_CONST_REFERENCE, reg, IARG_UINT32, REG_ID, IARG_UINT32, opaqueHandle, IARG_THREAD_ID, IARG_END) |
Definition at line 1444 of file redspy_temporal_client.cpp.
| #define HANDLE_CASE | ( | T, | |
| ACCESS_LEN, | |||
| BUFFER_INDEX, | |||
| IS_APPROX | |||
| ) |
Definition at line 1957 of file redspy_temporal_client.cpp.
| #define HANDLE_GENERAL | ( | T | ) | INS_InsertPredicatedCall(ins, IPOINT_AFTER, (AFUNPTR)HandleGeneralRegisters<T, 1>::CheckValues, IARG_REG_VALUE, reg, IARG_UINT32, reg, IARG_UINT32, opaqueHandle, IARG_THREAD_ID, IARG_END) |
Definition at line 1441 of file redspy_temporal_client.cpp.
| #define HANDLE_LARGE | ( | ) |
Definition at line 1965 of file redspy_temporal_client.cpp.
| #define HANDLE_LARGEREG_APPROX | ( | T, | |
| SIMD_TYPE, | |||
| REG_ID | |||
| ) | INS_InsertPredicatedCall(ins, IPOINT_AFTER, (AFUNPTR)ApproxLargeRegisters<T, SIMD_TYPE>::CheckValues, IARG_REG_CONST_REFERENCE, reg, IARG_UINT32, REG_ID, IARG_UINT32, opaqueHandle, IARG_THREAD_ID, IARG_END) |
Definition at line 1435 of file redspy_temporal_client.cpp.
| #define HANDLE_SPECIALREG | ( | LEN, | |
| REG_ID | |||
| ) | INS_InsertPredicatedCall(ins, IPOINT_AFTER, (AFUNPTR)HandleSpecialRegisters<LEN>::CheckRegValues, IARG_REG_CONST_REFERENCE, reg, IARG_UINT32, REG_ID, IARG_UINT32, opaqueHandle, IARG_THREAD_ID, IARG_END) |
Definition at line 1432 of file redspy_temporal_client.cpp.
| #define IS_ACCESS_WITHIN_PAGE_BOUNDARY | ( | accessAddr, | |
| accessLen | |||
| ) | (PAGE_OFFSET((accessAddr)) <= (PAGE_OFFSET_MASK - (accessLen))) |
Definition at line 57 of file redspy_temporal_client.cpp.
Definition at line 141 of file redspy_temporal_client.cpp.
| #define MAX_ALIAS_REG_SIZE (8) |
Definition at line 76 of file redspy_temporal_client.cpp.
| #define MAX_ALIAS_REGS (16) |
Definition at line 75 of file redspy_temporal_client.cpp.
| #define MAX_ALIAS_TYPE (3) |
Definition at line 77 of file redspy_temporal_client.cpp.
| #define MAX_REDUNDANT_CONTEXTS_TO_LOG (1000) |
Definition at line 60 of file redspy_temporal_client.cpp.
| #define MAX_REG_LENGTH (64) |
Definition at line 70 of file redspy_temporal_client.cpp.
| #define MAX_SIMD_LENGTH (64) |
Definition at line 72 of file redspy_temporal_client.cpp.
| #define MAX_SIMD_REGS (32) |
Definition at line 73 of file redspy_temporal_client.cpp.
| #define MAX_WRITE_OP_LENGTH (512) |
Definition at line 68 of file redspy_temporal_client.cpp.
| #define MAX_WRITE_OPS_IN_INS (8) |
Definition at line 69 of file redspy_temporal_client.cpp.
| #define ONE_BYTE_READ_ACTION (0) |
Definition at line 46 of file redspy_temporal_client.cpp.
| #define ONE_BYTE_WRITE_ACTION (0xff) |
Definition at line 51 of file redspy_temporal_client.cpp.
| #define READ_ACTION (0) |
Definition at line 43 of file redspy_temporal_client.cpp.
| #define THREAD_MAX (1024) |
Definition at line 61 of file redspy_temporal_client.cpp.
| #define TWO_BYTE_READ_ACTION (0) |
Definition at line 47 of file redspy_temporal_client.cpp.
| #define TWO_BYTE_WRITE_ACTION (0xffff) |
Definition at line 52 of file redspy_temporal_client.cpp.
| #define WRITE_ACTION (0xff) |
Definition at line 44 of file redspy_temporal_client.cpp.
| enum AliasGroup |
| Enumerator | |
|---|---|
| ALIAS_GENERIC | |
| ALIAS_HIGH_BYTE | |
| ALIAS_LOW_BYTE | |
Definition at line 101 of file redspy_temporal_client.cpp.
| enum AliasReg |
Definition at line 80 of file redspy_temporal_client.cpp.
| struct AddrValPair __attribute__ | ( | (aligned(16)) | ) |
| struct LargeReg __attribute__ | ( | (aligned(32)) | ) |
|
inlinestatic |
Definition at line 257 of file redspy_temporal_client.cpp.
References ApproxRedMap, and value.
Referenced by UnrolledLoop< start, end, incr >::__attribute__(), Check10BytesReg(), UnrolledLoop< start, end, incr >::if(), ApproxGeneralRegisters< T, isAlias >::if(), RedSpyAnalysis< AccessLen, bufferOffset >::if(), and ApproxLargeRegisters< T, simdType >::if().
|
inlinestatic |
Definition at line 241 of file redspy_temporal_client.cpp.
Referenced by UnrolledLoop< start, end, incr >::__attribute__(), CheckAfterLargeWrite(), UnrolledLoop< start, end, incr >::if(), RedSpyAnalysis< AccessLen, bufferOffset >::if(), and HandleSpecialRegisters< lenInt64 >::if().
|
static |
Definition at line 739 of file redspy_temporal_client.cpp.
References AddToApproximateRedTable(), ClientGetTLS(), PinCCTLib::GetContextHandle(), MAKE_CONTEXT_PAIR, RedSpyThreadData::regCtxt, and RedSpyThreadData::regValue.
|
inlinestatic |
Definition at line 1907 of file redspy_temporal_client.cpp.
References AddrValPair::address, AddToRedTable(), RedSpyThreadData::buffer, ClientGetTLS(), PinCCTLib::GetContextHandle(), MAKE_CONTEXT_PAIR, PAGE_OFFSET, sm, PinCCTLib::status, and AddrValPair::value.
|
inline |
Definition at line 177 of file redspy_temporal_client.cpp.
References client_tls_key, and gSingleThreadedTData.
Referenced by RedSpyAnalysis< AccessLen, bufferOffset >::__attribute__(), HandleSpecialRegisters< lenInt64 >::__attribute__(), HandleAliasRegisters< T, aliasGroup >::__attribute__(), ApproxGeneralRegisters< T, isAlias >::__attribute__(), ApproxLargeRegisters< T, simdType >::__attribute__(), HandleGeneralRegisters< T, len >::__attribute__(), Check10BytesReg(), CheckAfterLargeWrite(), PrintApproximationRedundancyPairs(), PrintRedundancyPairs(), RecordValueBeforeLargeWrite(), and Update().
|
static |
Definition at line 203 of file redspy_temporal_client.cpp.
References gTraceFile, MAX_FILE_PATH, and RedSpyGlobals.
Referenced by main().
|
static |
Definition at line 2449 of file redspy_temporal_client.cpp.
Referenced by main().
|
inlinestatic |
Definition at line 584 of file redspy_temporal_client.cpp.
References ip, and RedSpyGlobals.
Referenced by RedSpyInstrument< readBufferSlotIndex >::if(), and InstrumentGeneralReg().
|
inlinestatic |
Definition at line 959 of file redspy_temporal_client.cpp.
References ALIAS_BYTES_INDEX_16, ALIAS_BYTES_INDEX_32, ALIAS_BYTES_INDEX_64, ALIAS_BYTES_INDEX_8_H, ALIAS_BYTES_INDEX_8_L, ALIAS_GENERIC, ALIAS_HIGH_BYTE, ALIAS_LOW_BYTE, ALIAS_REG_A, ALIAS_REG_B, ALIAS_REG_BP, ALIAS_REG_C, ALIAS_REG_D, ALIAS_REG_DI, ALIAS_REG_R10, ALIAS_REG_R11, ALIAS_REG_R12, ALIAS_REG_R13, ALIAS_REG_R14, ALIAS_REG_R15, ALIAS_REG_R8, ALIAS_REG_R9, ALIAS_REG_SI, and ALIAS_REG_SP.
Referenced by InstrumentAliasReg().
|
static |
Definition at line 1972 of file redspy_temporal_client.cpp.
Referenced by InstrumentInsCallback().
|
static |
Definition at line 2432 of file redspy_temporal_client.cpp.
References ApproxRedMap, gTraceFile, PrintApproximationRedundancyPairs(), PrintRedundancyPairs(), and RedMap.
Referenced by main().
|
static |
Definition at line 2453 of file redspy_temporal_client.cpp.
References ApproxRedMap, RedSpyThreadData::bytesWritten, RedSpyThreadData::numIns, RedSpyThreadData::numWinds, RedMap, RedSpyThreadData::sampleFlag, and THREAD_MAX.
Referenced by ThreadStart().
|
inlinestatic |
Definition at line 2059 of file redspy_temporal_client.cpp.
References INS_IsMaskedJump().
Referenced by InstrumentInsCallback(), and InstrumentTrace().
|
inlinestatic |
Definition at line 1452 of file redspy_temporal_client.cpp.
References ALIAS_GENERIC, ALIAS_HIGH_BYTE, ALIAS_LOW_BYTE, GetAliasIDs(), HANDLE_ALIAS_REG, HANDLE_APPROXREG, and IsFloatInstruction().
Referenced by InstrumentInsCallback().
|
inlinestatic |
Definition at line 1500 of file redspy_temporal_client.cpp.
References FloatOperandSize(), HANDLE_10BYTES_APPROX, HANDLE_APPROXREG, HANDLE_GENERAL, HANDLE_LARGEREG_APPROX, HANDLE_SPECIALREG, IsFloatInstruction(), and REG_is_in_X87().
Referenced by InstrumentInsCallback().
|
static |
Definition at line 2093 of file redspy_temporal_client.cpp.
References GetNumWriteOperandsInIns(), INS_IsIgnorable(), InstrumentAliasReg(), InstrumentGeneralReg(), REG_IsIgnorable(), and RegHasAlias().
Referenced by main().
|
static |
Definition at line 2254 of file redspy_temporal_client.cpp.
References INS_IsIgnorable(), INS_MemoryWriteSize(), REG_IsIgnorable(), and Update().
Referenced by main().
|
inlinestatic |
Definition at line 289 of file redspy_temporal_client.cpp.
References ip, and RedSpyGlobals.
Referenced by InstrumentAliasReg(), and InstrumentGeneralReg().
|
inlinestatic |
Definition at line 354 of file redspy_temporal_client.cpp.
References ip, and RedSpyGlobals.
| int main | ( | int | argc, |
| char * | argv[] | ||
| ) |
Definition at line 2476 of file redspy_temporal_client.cpp.
References client_tls_key, ClientInit(), FiniFunc(), gTraceFile, ImageUnload(), InstrumentInsCallback(), InstrumentTrace(), INTERESTING_INS_ALL, PinCCTLib::PinCCTLibInit(), ThreadFiniFunc(), ThreadStart(), and Usage().
|
static |
Definition at line 2364 of file redspy_temporal_client.cpp.
References ApproxRedMap, ClientGetTLS(), DECODE_DEAD, DECODE_KILL, delta, RedundacyData::frequency, gTraceFile, PinCCTLib::HaveSameCallerPrefix(), PinCCTLib::IsSameSourceLine(), MAX_REDUNDANT_CONTEXTS_TO_LOG, PinCCTLib::PrintFullCallingContext(), and RedundacyCompare().
Referenced by ImageUnload().
|
static |
Definition at line 2298 of file redspy_temporal_client.cpp.
References ClientGetTLS(), DECODE_DEAD, DECODE_KILL, RedundacyData::frequency, gTraceFile, PinCCTLib::HaveSameCallerPrefix(), PinCCTLib::IsSameSourceLine(), MAX_REDUNDANT_CONTEXTS_TO_LOG, PinCCTLib::PrintFullCallingContext(), RedMap, and RedundacyCompare().
Referenced by ImageUnload().
|
inlinestatic |
Definition at line 1901 of file redspy_temporal_client.cpp.
References AddrValPair::address, RedSpyThreadData::buffer, ClientGetTLS(), and AddrValPair::value.
|
inlinestatic |
Definition at line 2294 of file redspy_temporal_client.cpp.
References RedundacyData::frequency.
Referenced by PrintApproximationRedundancyPairs(), and PrintRedundancyPairs().
|
inlinestatic |
Definition at line 2081 of file redspy_temporal_client.cpp.
Referenced by InstrumentInsCallback(), and InstrumentTrace().
|
inline |
Definition at line 1328 of file redspy_temporal_client.cpp.
Referenced by InstrumentInsCallback().
|
static |
Definition at line 2446 of file redspy_temporal_client.cpp.
Referenced by main().
|
static |
Definition at line 2464 of file redspy_temporal_client.cpp.
References client_tls_key, gSingleThreadedTData, and InitThreadData().
Referenced by main().
|
inline |
Definition at line 2248 of file redspy_temporal_client.cpp.
References RedSpyThreadData::bytesWritten, and ClientGetTLS().
Referenced by InstrumentTrace().
|
static |
Definition at line 187 of file redspy_temporal_client.cpp.
Referenced by main().
| __attribute__ |
Definition at line 17 of file deadspy_tn_simple.c.
Referenced by RedSpyAnalysis< AccessLen, bufferOffset >::__attribute__(), RedSpyAnalysis< AccessLen, bufferOffset >::if(), and ApproxLargeRegisters< T, simdType >::if().
| void* address |
Definition at line 1 of file redspy_temporal_client.cpp.
Referenced by __attribute__(), Checker(), PinCCTLib::constructIPNodeFromIP(), CopyRegionToShadowMemory(), PinCCTLib::findSameIP(), PinCCTLib::findSameIPbyIP(), ConcurrentShadowMemory< Ts >::GetOrCreateShadowBaseAddress(), ShadowMemory< Ts >::GetOrCreateShadowBaseAddress(), GetOrCreateShadowBaseAddress(), GetShadowBaseAddress(), HandleOneCacheLine(), OnAccess(), OnEvict(), UpdateFootPrint(), and ArrayAnalysis< T, isApprox >::while().
|
static |
Definition at line 238 of file redspy_temporal_client.cpp.
Referenced by AddToApproximateRedTable(), ImageUnload(), InitThreadData(), and PrintApproximationRedundancyPairs().
|
static |
Definition at line 173 of file redspy_temporal_client.cpp.
Referenced by ClientGetTLS(), main(), and ThreadStart().
| char dummy1[128] |
Definition at line 197 of file redspy_temporal_client.cpp.
| char dummy2[128] |
Definition at line 199 of file redspy_temporal_client.cpp.
| void flatten |
Definition at line 240 of file redspy_temporal_client.cpp.
|
static |
Definition at line 174 of file redspy_temporal_client.cpp.
Referenced by ClientGetTLS(), and ThreadStart().
|
static |
Definition at line 193 of file redspy_temporal_client.cpp.
Referenced by ClientInit(), ImageUnload(), main(), PrintApproximationRedundancyPairs(), and PrintRedundancyPairs().
|
static |
Definition at line 235 of file redspy_temporal_client.cpp.
|
static |
Definition at line 233 of file redspy_temporal_client.cpp.
|
static |
Definition at line 237 of file redspy_temporal_client.cpp.
Referenced by AddToRedTable(), ImageUnload(), InitThreadData(), and PrintRedundancyPairs().
| struct { ... } RedSpyGlobals |
Referenced by ClientInit(), FloatOperandSize(), IsFloatInstruction(), and IsFloatInstructionOld().
|
static |
Definition at line 194 of file redspy_temporal_client.cpp.
Referenced by UnrolledLoop< start, end, incr >::__attribute__(), RedSpyAnalysis< AccessLen, bufferOffset >::__attribute__(), and CheckAfterLargeWrite().
| UINT8 value |
Definition at line 0 of file redspy_temporal_client.cpp.
Referenced by AddToApproximateRedTable(), AddToRedTable(), checkOpcodeValueNum(), anonymous_namespace{splay_deserialize_test.cpp}::insert(), insert(), anonymous_namespace{rbtree_test.cpp}::NodeArena::make(), setMemValueNum(), setRegValueNum(), anonymous_namespace{shadow_memory_test.cpp}::TEST(), test_concurrent_free_fn_matches_base_fn(), test_concurrent_write_read_single(), test_shadow_base_fn_matches_free_fn(), test_shadow_free_fn_matches_base_fn(), test_shadow_write_read_single(), UpdateValue(), valueNumbering(), valueNumberingMem1(), valueNumberingMem2(), valueNumberingMem3(), valueNumberingMem4(), and ArrayAnalysis< T, isApprox >::while().
|
static |
Definition at line 234 of file redspy_temporal_client.cpp.
| xed_state_t xedState |
Definition at line 198 of file redspy_temporal_client.cpp.