- void* codeBlock = malloc(4096);
- memcpy(codeBlock, &calldlopen, 4096);
+ // now try to create a page where foo() was
+ vm_address_t addr = 0;
+ kern_return_t r = vm_allocate(mach_task_self(), &addr, 4096, VM_FLAGS_ANYWHERE);
+ if ( r != KERN_SUCCESS ) {
+ FAIL("vm_allocate returned %d", r);
+ return 0;
+ }
+ void* codeBlock = (void*)(addr);
+ memcpy(codeBlock, START_OF_FUNC(calldlopen), 4096);