// argc, argv are the entire command line, including pin -t <toolname> -- ... int main(int argc, char * argv[]) { PIN_Init(argc, argv); PIN_InterceptSignal(SIGSEGV, SigFunc, 0); PIN_StartProgram(); return 0; }
int main(int argc, char * argv[]) { PIN_Init(argc, argv); Out.open(KnobOutputFile.Value().c_str()); PIN_InterceptSignal(SIGSEGV, SigFunc, 0); PIN_StartProgram(); return 0; }
int main(int argc, char **argv) { PIN_Init(argc, argv); if (!ParseCmdLine(argc, argv)) return 1; PIN_InterceptSignal(Signal, HandleSig, 0); PIN_UnblockSignal(Signal, TRUE); PIN_StartProgram(); return 0; }
int main(int argc, char * argv[]) { PIN_Init(argc, argv); PIN_InitSymbols(); PIN_InterceptSignal(SIGUSR2, SignalHandler, 0); PIN_UnblockSignal(SIGUSR2, TRUE); IMG_AddInstrumentFunction(Image, 0); TRACE_AddInstrumentFunction(Trace, 0); PIN_StartProgram(); return 0; }
int main(int argc, char * argv[]) { PIN_InitSymbols(); PIN_Init(argc, argv); TRACE_AddInstrumentFunction(Trace, 0); IMG_AddInstrumentFunction(Image, 0); if (!PIN_InterceptSignal(SIGSEGV, SegvHandler, 0)) { fprintf (stderr, "InterceptSignal failed\n"); exit (1); } // Never returns PIN_StartProgram(); return 0; }
int main(int argc, char *argv[]) { prof_ctrl->Initialize(); prof_ctrl->PreSetup(); PIN_InitSymbols(); PIN_Init(argc, argv); prof_ctrl->PostSetup(); TRACE_AddInstrumentFunction(I_InstrumentTrace, NULL); IMG_AddInstrumentFunction(I_ImageLoad, NULL); IMG_AddUnloadFunction(I_ImageUnload, NULL); PIN_AddSyscallEntryFunction(I_SyscallEntry, NULL); PIN_AddSyscallExitFunction(I_SyscallExit, NULL); PIN_InterceptSignal(SIGUSR2, I_IntSignal, NULL); PIN_AddContextChangeFunction(I_ContextChange, NULL); PIN_AddFiniFunction(I_ProgramExit, NULL); PIN_AddThreadStartFunction(I_ThreadStart, NULL); PIN_AddThreadFiniFunction(I_ThreadExit, NULL); I_ProgramStart(); // start the program PIN_StartProgram(); }
//! The pintool's entry point int main(int argc, char *argv[]) { PIN_InitSymbols(); PIN_SetSyntaxIntel(); if(PIN_Init(argc, argv)) return Usage(); /* Init the Triton module */ triton::bindings::python::inittriton(); /* Define Triton architecure */ if (sizeof(void*) == QWORD_SIZE) tracer::pintool::api.setArchitecture(triton::arch::ARCH_X86_64); else tracer::pintool::api.setArchitecture(triton::arch::ARCH_X86); /* During the execution provide concrete values only if Triton needs them - cf #376, #632 and #645 */ tracer::pintool::api.addCallback(tracer::pintool::context::needConcreteRegisterValue); tracer::pintool::api.addCallback(tracer::pintool::context::needConcreteMemoryValue); /* Image callback */ IMG_AddInstrumentFunction(IMG_Instrumentation, nullptr); /* Instruction callback */ TRACE_AddInstrumentFunction(TRACE_Instrumentation, nullptr); /* End instrumentation callback */ PIN_AddFiniFunction(callbackFini, nullptr); /* Syscall entry callback */ PIN_AddSyscallEntryFunction(callbackSyscallEntry, nullptr); /* Syscall exit callback */ PIN_AddSyscallExitFunction(callbackSyscallExit, nullptr); /* Signals callback */ PIN_InterceptSignal(SIGHUP, callbackSignals, nullptr); PIN_InterceptSignal(SIGINT, callbackSignals, nullptr); PIN_InterceptSignal(SIGQUIT, callbackSignals, nullptr); PIN_InterceptSignal(SIGILL, callbackSignals, nullptr); PIN_InterceptSignal(SIGABRT, callbackSignals, nullptr); PIN_InterceptSignal(SIGFPE, callbackSignals, nullptr); PIN_InterceptSignal(SIGKILL, callbackSignals, nullptr); PIN_InterceptSignal(SIGSEGV, callbackSignals, nullptr); PIN_InterceptSignal(SIGPIPE, callbackSignals, nullptr); PIN_InterceptSignal(SIGALRM, callbackSignals, nullptr); PIN_InterceptSignal(SIGTERM, callbackSignals, nullptr); PIN_InterceptSignal(SIGBUS, callbackSignals, nullptr); /* Exec the Pin's python bindings */ tracer::pintool::initBindings(argc, argv); tracer::pintool::execScript(KnobPythonModule.Value().c_str()); return 0; }