/* Cycript - Optimizing JavaScript Compiler/Runtime
- * Copyright (C) 2009-2010 Jay Freeman (saurik)
+ * Copyright (C) 2009-2012 Jay Freeman (saurik)
*/
/* GNU Lesser General Public License, Version 3 {{{ */
#include <dlfcn.h>
#include <mach/mach.h>
-#include <mach/i386/thread_status.h>
+#include <mach/machine/thread_status.h>
#include <cstdio>
#include <pthread.h>
Baton *baton(reinterpret_cast<Baton *>(local));
baton->__pthread_set_self = &__pthread_set_self;
-
baton->pthread_create = &pthread_create;
- baton->pthread_join = &pthread_join;
-
- baton->dlopen = &dlopen;
- baton->dlerror = &dlerror;
- baton->dlsym = &dlsym;
baton->mach_thread_self = &mach_thread_self;
baton->thread_terminate = &thread_terminate;
+ baton->dlerror = &dlerror;
+ baton->dlsym = &dlsym;
+
baton->pid = getpid();
memcpy(baton->library, library, length);
Trampoline *trampoline;
#if defined(__arm__)
- trampoline = &Trampoline_arm_;
+ trampoline = &Trampoline_armv6_;
arm_thread_state_t state;
flavor = ARM_THREAD_STATE;
count = ARM_THREAD_STATE_COUNT;
_assert(count == count);
#if defined(__arm__)
- state.r[0] = data;
- state.sp = stack + Stack_;
- state.pc = code + trampoline->entry_;
+ state.__r[0] = data;
+ state.__sp = stack + Stack_;
+ state.__pc = code + trampoline->entry_;
- if ((state.pc & 0x1) != 0) {
- state.pc &= ~0x1;
- state.cpsr |= 0x20;
+ if ((state.__pc & 0x1) != 0) {
+ state.__pc &= ~0x1;
+ state.__cpsr |= 0x20;
}
#elif defined(__i386__)
frame[1] = data;