int main(int argc, char * argv[]) { // Initialize symbol processing PIN_InitSymbols(); // Initialize pin if (PIN_Init(argc, argv)) return Usage(); logging = ! KnobReplay.Value(); string logFile = KnobFilesPrefix.Value() + ".record"; if (logging) { string traceFile = KnobFilesPrefix.Value() + "_rec.out"; trace = fopen(traceFile.c_str(), "w"); ASSERTX(NULL!=trace); imgLog = fopen(logFile.c_str(), "w"); ASSERTX(NULL!=imgLog); IMG_AddInstrumentFunction(LogImageLoad, 0); IMG_AddUnloadFunction (LogImageUnload, 0); } else { // Replaying string traceFile = KnobFilesPrefix.Value() + "_play.out"; trace = fopen(traceFile.c_str(), "w"); ASSERTX(NULL!=trace); imgLog = fopen(logFile.c_str(), "r"); ASSERTX(NULL!=imgLog); // We will handle image load operations. PIN_SetReplayMode (REPLAY_MODE_IMAGEOPS); // And then we replay the first two image load ops before we start the program. // We do this even before adding the image instrumentation callback, that should still work, // Pin should defer these and replay them inside PIN_StartProgram. ReplayImageEntry(); ReplayImageEntry(); INS_AddInstrumentFunction (InstrumentInstruction, 0); } // These Trace functions demonstrate that the events are happening, they are the client... IMG_AddInstrumentFunction(TraceImageLoad, 0); IMG_AddUnloadFunction (TraceImageUnload, 0); // Register Fini to be called when the application exits PIN_AddFiniFunction(Fini, 0); // Start the program, never returns PIN_StartProgram(); return 0; }
// argc, argv are the entire command line, including pin -t <toolname> -- ... int main(int argc, char * argv[]) { // Initialize symbol processing PIN_InitSymbols(); // Initialize pin PIN_Init(argc, argv); // Register ImageLoad to be called when an image is loaded IMG_AddInstrumentFunction(ImageLoad, 0); // Register ImageUnload to be called when an image is unloaded IMG_AddUnloadFunction(ImageUnload, 0); // Register fini funcation PIN_AddFiniFunction(Fini, 0); printf("This is a negative test it is expected to fail\n"); // Never returns if ( PIN_IsProbeMode() ) { // Thread start callback is JIT mode only PIN_AddThreadStartFunction(ThreadStart, 0); PIN_StartProgramProbed(); } else { // Detach probed callback is Probe mode only PIN_AddDetachFunctionProbed(DetachComplete, 0); PIN_StartProgram(); } return 0; }
int main(int argc, char *argv[]) { // Initialize pin & symbol manager PIN_InitSymbols(); if( PIN_Init(argc,argv) ) { return Usage(); } thread_init(); PIN_AddFollowChildProcessFunction(FollowChild, 0); // Write to a file since cout and cerr maybe closed by the application TraceFile.open(KnobOutputFile.Value().c_str()); TraceFile << hex; TraceFile.setf(ios::showbase); // Register Image to be called to instrument functions. IMG_AddInstrumentFunction(ImageLoad, 0); IMG_AddUnloadFunction(ImageUnLoad, 0); TRACE_AddInstrumentFunction(trace_instrument, 0); PIN_AddFiniFunction(Fini, 0); // Never returns PIN_StartProgram(); return 0; }
int main(int argc, CHAR *argv[]) { PIN_InitSymbols(); if( PIN_Init(argc,argv) ) { return Usage(); } TRACE_AddInstrumentFunction(Trace, 0); PIN_AddFiniFunction(Fini, 0); IMG_AddUnloadFunction(ImageUnload, 0); out.open(KnobOutputFile.Value().c_str()); out.setf(ios::showbase); out << hex; // Never returns PIN_StartProgram(); return 0; }
int main(int argc, char** argv) { PIN_InitSymbols(); if(PIN_Init(argc,argv)) { return Usage(); } // Set up the events initialize_events(); if(!KnobDisableLibraryTracing.Value()) { printf("Enabling library tracing.\n"); /* Enable library tracing. */ IMG_AddInstrumentFunction(library_loaded_function, 0); IMG_AddUnloadFunction(library_unloaded_function, 0); } if(KnobEnableInitialMonitoring.Value()) { printf("Enabling tracing on initialization.\n"); event_monitoring_set(true); } if(KnobEnableMonitoring.Value()) { long start = KnobRegionStart.Value(); long end = KnobRegionEnd.Value(); const char* library_name = KnobRegionName.Value().c_str(); printf("Library name: %s\n", library_name); printf("0x%lx 0x%lx\n", start, end); region_t *r = (region_t*)malloc(sizeof(region_t)); r->start = (void*)start; r->end = (void*)end; strncpy(r->library_name, library_name, 260); printf("Added %s\n", r->library_name); add_region_to_monitoring(r); event_snapshot_set(true); region_monitoring_enabled = true; } // Add instrumentation. It handles both regions and instruction monitoring so must be enabled INS_AddInstrumentFunction(instruction_trace, 0); // Start up the program to investigate. PIN_StartProgram(); return 0; }
int main(int argc, char** argv) { PIN_InitSymbols(); if (!PIN_Init(argc, argv)) { IMG_AddUnloadFunction(onImageUnload, 0); PIN_StartProgram(); } return(1); }
int main(int argc, char * argv[]) { PIN_InitSymbols(); PIN_Init(argc, argv); outfile.open(KnobOutputFile.Value().c_str()); IMG_AddInstrumentFunction(ImageLoad, 0); IMG_AddUnloadFunction(ImageUnload, 0); PIN_AddFiniFunction(Fini, 0); // Start the program, never returns PIN_StartProgram(); return 0; }
// argc, argv are the entire command line, including pin -t <toolname> -- ... int main(int argc, char * argv[]) { PIN_InitSymbols(); // Initialize pin PIN_Init(argc, argv); // Register ImageLoad to be called when an image is loaded IMG_AddInstrumentFunction(ImageLoad, 0); // Register ImageUnload to be called when an image is unloaded IMG_AddUnloadFunction(ImageUnload, 0); // Start the program, never returns PIN_StartProgram(); return 0; }
int __cdecl main(int argc, char *argv[]){ PIN_InitSymbols(); if (PIN_Init(argc, argv)) return 1; InitLock(&lock); pcounter = (unsigned char *)log_init(); TRACE_AddInstrumentFunction(Trace, 0); IMG_AddInstrumentFunction(Image, 0); IMG_AddUnloadFunction(ImageUnload, 0); PIN_AddContextChangeFunction(ContextChange, 0); PIN_AddFiniFunction(ExitFunction, 0); 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(); }
int main (int argc, char *argv[]) { char buff[20]; if(PIN_Init(argc,argv)) { printf("command line error\n"); return 1; } pid = PIN_GetPid(); sprintf(buff, "ct%d.log", pid); logfp = fopen(buff, "w"); if (logfp == NULL) { printf("cannot open '%s' for writing\n", buff); return 1; } sprintf(buff, "ct%d.trace", pid); if (tb_create(buff)) { fprintf(logfp, "tb_create() failed\n"); fflush(logfp); return 1; } PIN_AddFiniFunction(fini, 0); PIN_AddThreadStartFunction(thread_start, 0); PIN_AddThreadFiniFunction(thread_fini, 0); IMG_AddInstrumentFunction(img_load, NULL); IMG_AddUnloadFunction(img_unload, NULL); TRACE_AddInstrumentFunction(trace, NULL); INS_AddInstrumentFunction(instruction, NULL); PIN_AddSyscallEntryFunction(sys_enter, NULL); PIN_AddSyscallExitFunction(sys_exit, NULL); PIN_AddContextChangeFunction(context_switch, NULL); PIN_InitSymbols(); PIN_StartProgram(); // Never returns return 0; }
// argc, argv are the entire command line, including pin -t <toolname> -- ... int main(int argc, char * argv[]) { trace = fopen("dlopen.output", "w"); // Initialize pin PIN_Init(argc, argv); // Register ImageLoad to be called when an image is loaded IMG_AddInstrumentFunction(ImageLoad, 0); // Register ImageUnload to be called when an image is unloaded IMG_AddUnloadFunction(ImageUnload, 0); // Register Fini to be called when the application exits PIN_AddFiniFunction(Fini, 0); // Start the program, never returns PIN_StartProgram(); return 0; }
int main(int argc, char * argv[]) { MYLOG("Strating prototype ins\n"); FilterHandler *filterH = FilterHandler::getInstance(); filterH->setFilters("teb"); tStart = clock(); // Initialize pin PIN_InitSymbols(); if (PIN_Init(argc, argv)) return Usage(); // TRACE_AddInstrumentFunction(Trace,0); INS_AddInstrumentFunction(Instruction,0); PIN_AddThreadStartFunction(OnThreadStart, 0); // Register ImageLoad to be called when an image is loaded IMG_AddInstrumentFunction(imageLoadCallback, 0); // Register ImageUnload to be called when an image is unloaded IMG_AddUnloadFunction(ImageUnloadCallback, 0); //PIN_AddApplicationStartFunction(bootstrap, 0); // Register Fini to be called when the application exits PIN_AddFiniFunction(Fini, 0); // Start the program, never returns PIN_StartProgram(); return 0; }