X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=src%2Fruntime%2Fx86-darwin-os.h;h=79dea316082be20a592cdaa420456a7b92b01a84;hb=127fd3d2fb843c6bb7ad0763e143d81877e760e8;hp=aa2710c8a50a757b62c8198f1f268c976a0b3463;hpb=df1314801984738011676b539cedd2c2a41d1f6e;p=sbcl.git diff --git a/src/runtime/x86-darwin-os.h b/src/runtime/x86-darwin-os.h index aa2710c..79dea31 100644 --- a/src/runtime/x86-darwin-os.h +++ b/src/runtime/x86-darwin-os.h @@ -16,7 +16,55 @@ static inline os_context_t *arch_os_get_context(void **void_context) void set_data_desc_size(data_desc_t* desc, unsigned long size); void set_data_desc_addr(data_desc_t* desc, void* addr); -#define CONTEXT_ADDR_FROM_STEM(stem) &context->uc_mcontext->ss.stem #define DARWIN_FIX_CONTEXT(context) +/* As of XCode 3.0, the field names for the thread state have changed + * and now are prepended with __. Use some #define hackery to deal + * with this. __DARWIN_UNIX03 seems to be a good test to see if we + * need the new style field names. + */ +#if __DARWIN_UNIX03 + +#define CONTEXT_ADDR_FROM_STEM(stem) &context->uc_mcontext->__ss.__##stem +#define EIP __eip +#define ESP __esp +#define EBP __ebp +#define EAX __eax +#define EBX __ebx +#define ECX __ecx +#define EDX __edx +#define ESI __esi +#define EDI __edi +#define EFLAGS __eflags +#define CS __cs +#define DS __ds +#define ES __es +#define FS __fs +#define SS __ss +#define GS __gs + +#else + +#define CONTEXT_ADDR_FROM_STEM(stem) &context->uc_mcontext->ss.stem +#define EIP eip +#define ESP esp +#define EBP ebp +#define EAX eax +#define EBX ebx +#define ECX ecx +#define EDX edx +#define ESI esi +#define EDI edi +#define EFLAGS eflags +#define CS cs +#define DS ds +#define ES es +#define FS fs +#define SS ss +#define GS gs + +#endif /* __DARWIN_UNIX03 */ + + + #endif /* _X86_DARWIN_OS_H */