exit( EXIT_FAILURE );
}
void* addr = ReturnPageAlignedAddress(si->si_addr);
+
unsigned int backingpage=snapshotrecord->lastBackingPage++; //Could run out of pages...
if (backingpage==snapshotrecord->maxBackingPages) {
printf("Out of backing pages at %p\n", si->si_addr);
sa.sa_flags = SA_SIGINFO | SA_NODEFER | SA_RESTART | SA_ONSTACK;
sigemptyset( &sa.sa_mask );
sa.sa_sigaction = HandlePF;
+#ifdef MAC
+ if( sigaction( SIGBUS, &sa, NULL ) == -1 ){
+ printf("SIGACTION CANNOT BE INSTALLED\n");
+ exit(EXIT_FAILURE);
+ }
+#endif
if( sigaction( SIGSEGV, &sa, NULL ) == -1 ){
printf("SIGACTION CANNOT BE INSTALLED\n");
exit(EXIT_FAILURE);
}
+
initSnapShotRecord(numbackingpages, numsnapshots, nummemoryregions);
// EVIL HACK: We need to make sure that calls into the HandlePF method don't cause dynamic links
siginfo_t si;
si.si_addr=ss.ss_sp;
+ si.si_code = 0;
HandlePF(SIGSEGV, &si, NULL);
snapshotrecord->lastBackingPage--; //remove the fake page we copied