=== libgc/ChangeLog ================================================================== --- libgc/ChangeLog (revision 83951) +++ libgc/ChangeLog (local) @@ -1,4 +1,8 @@ +2007-11-01 Geoff Norton + * darwin_stop_world.c: Handle Leopards renaming of some structure + members. + Mon Sep 24 16:15:47 CEST 2007 Paolo Molaro * include/private/gc_priv.h: increase the default MAX_HEAP_SECTS === libgc/darwin_stop_world.c ================================================================== --- libgc/darwin_stop_world.c (revision 83951) +++ libgc/darwin_stop_world.c (local) @@ -102,6 +102,17 @@ if(r != KERN_SUCCESS) ABORT("thread_get_state failed"); #if defined(I386) +#if defined(_STRUCT_X86_EXCEPTION_STATE) + lo = state.__esp; + + GC_push_one(state.__eax); + GC_push_one(state.__ebx); + GC_push_one(state.__ecx); + GC_push_one(state.__edx); + GC_push_one(state.__edi); + GC_push_one(state.__esi); + GC_push_one(state.__ebp); +#else lo = state.esp; GC_push_one(state.eax); @@ -111,7 +122,43 @@ GC_push_one(state.edi); GC_push_one(state.esi); GC_push_one(state.ebp); +#endif #elif defined(POWERPC) +#if defined(_STRUCT_PPC_EXCEPTION_STATE) + lo = (void*)(state.__r1 - PPC_RED_ZONE_SIZE); + + GC_push_one(state.__r0); + GC_push_one(state.__r2); + GC_push_one(state.__r3); + GC_push_one(state.__r4); + GC_push_one(state.__r5); + GC_push_one(state.__r6); + GC_push_one(state.__r7); + GC_push_one(state.__r8); + GC_push_one(state.__r9); + GC_push_one(state.__r10); + GC_push_one(state.__r11); + GC_push_one(state.__r12); + GC_push_one(state.__r13); + GC_push_one(state.__r14); + GC_push_one(state.__r15); + GC_push_one(state.__r16); + GC_push_one(state.__r17); + GC_push_one(state.__r18); + GC_push_one(state.__r19); + GC_push_one(state.__r20); + GC_push_one(state.__r21); + GC_push_one(state.__r22); + GC_push_one(state.__r23); + GC_push_one(state.__r24); + GC_push_one(state.__r25); + GC_push_one(state.__r26); + GC_push_one(state.__r27); + GC_push_one(state.__r28); + GC_push_one(state.__r29); + GC_push_one(state.__r30); + GC_push_one(state.__r31); +#else lo = (void*)(state.r1 - PPC_RED_ZONE_SIZE); GC_push_one(state.r0); @@ -145,6 +192,7 @@ GC_push_one(state.r29); GC_push_one(state.r30); GC_push_one(state.r31); +#endif #else # error FIXME for non-x86 || ppc architectures #endif @@ -199,6 +247,42 @@ (natural_t *)&info, &outCount); if(r != KERN_SUCCESS) continue; +#if defined(_STRUCT_PPC_EXCEPTION_STATE) + lo = (void*)(info.__r1 - PPC_RED_ZONE_SIZE); + hi = (ptr_t)FindTopOfStack(info.__r1); + + GC_push_one(info.__r0); + GC_push_one(info.__r2); + GC_push_one(info.__r3); + GC_push_one(info.__r4); + GC_push_one(info.__r5); + GC_push_one(info.__r6); + GC_push_one(info.__r7); + GC_push_one(info.__r8); + GC_push_one(info.__r9); + GC_push_one(info.__r10); + GC_push_one(info.__r11); + GC_push_one(info.__r12); + GC_push_one(info.__r13); + GC_push_one(info.__r14); + GC_push_one(info.__r15); + GC_push_one(info.__r16); + GC_push_one(info.__r17); + GC_push_one(info.__r18); + GC_push_one(info.__r19); + GC_push_one(info.__r20); + GC_push_one(info.__r21); + GC_push_one(info.__r22); + GC_push_one(info.__r23); + GC_push_one(info.__r24); + GC_push_one(info.__r25); + GC_push_one(info.__r26); + GC_push_one(info.__r27); + GC_push_one(info.__r28); + GC_push_one(info.__r29); + GC_push_one(info.__r30); + GC_push_one(info.__r31); +#else lo = (void*)(info.r1 - PPC_RED_ZONE_SIZE); hi = (ptr_t)FindTopOfStack(info.r1); @@ -233,6 +317,7 @@ GC_push_one(info.r29); GC_push_one(info.r30); GC_push_one(info.r31); +#endif # else /* FIXME: Remove after testing: */ WARN("This is completely untested and likely will not work\n", 0); @@ -242,6 +327,26 @@ (natural_t *)&info, &outCount); if(r != KERN_SUCCESS) continue; +#if defined(_STRUCT_X86_EXCEPTION_STATE) + lo = (void*)info.__esp; + hi = (ptr_t)FindTopOfStack(info.__esp); + + GC_push_one(info.__eax); + GC_push_one(info.__ebx); + GC_push_one(info.__ecx); + GC_push_one(info.__edx); + GC_push_one(info.__edi); + GC_push_one(info.__esi); + /* GC_push_one(info.__ebp); */ + /* GC_push_one(info.__esp); */ + GC_push_one(info.__ss); + GC_push_one(info.__eip); + GC_push_one(info.__cs); + GC_push_one(info.__ds); + GC_push_one(info.__es); + GC_push_one(info.__fs); + GC_push_one(info.__gs); +#else lo = (void*)info.esp; hi = (ptr_t)FindTopOfStack(info.esp); @@ -260,6 +365,7 @@ GC_push_one(info.es); GC_push_one(info.fs); GC_push_one(info.gs); +#endif # endif /* !POWERPC */ } # if DEBUG_THREADS === mono/arch/ChangeLog ================================================================== --- mono/arch/ChangeLog (revision 83951) +++ mono/arch/ChangeLog (local) @@ -1,3 +1,8 @@ +2007-11-01 Geoff Norton + + * ppc/Makefile.am: Only compile tramp.c if INTERP_SUPPORTED is true + Fixes the build on Leopard. + 2007-10-26 Jonathan Chambers * amd64/amd64-codegen.h: Begin Win64 port. Use AMD64_ARG_REG# === mono/arch/ppc/Makefile.am ================================================================== --- mono/arch/ppc/Makefile.am (revision 83951) +++ mono/arch/ppc/Makefile.am (local) @@ -1,3 +1,4 @@ +if INTERP_SUPPORTED INCLUDES = $(GLIB_CFLAGS) -I$(top_srcdir) @@ -5,4 +6,6 @@ libmonoarch_ppc_la_SOURCES = tramp.c ppc-codegen.h -noinst_PROGRAMS = test \ No newline at end of file +noinst_PROGRAMS = test + +endif === mono/mini/ChangeLog ================================================================== --- mono/mini/ChangeLog (revision 83951) +++ mono/mini/ChangeLog (local) @@ -1,4 +1,8 @@ +2007-11-01 Geoff Norton + * mini-ppc.h, mini-x86.h: Handle Leopards renaming of some structure + members. + Wed Oct 31 19:53:33 CET 2007 Paolo Molaro * mini-amd64.c, mini-amd64.h, tramp-amd64.c: breakpoint table support === mono/mini/mini-ppc.h ================================================================== --- mono/mini/mini-ppc.h (revision 83951) +++ mono/mini/mini-ppc.h (local) @@ -179,7 +179,13 @@ #define UCONTEXT_REG_FPRn(ctx, n) ((ctx)->uc_mcontext.uc_regs->fpregs.fpregs [(n)]) #define UCONTEXT_REG_NIP(ctx) ((ctx)->uc_mcontext.uc_regs->gregs [PT_NIP]) #define UCONTEXT_REG_LNK(ctx) ((ctx)->uc_mcontext.uc_regs->gregs [PT_LNK]) -#elif defined (__APPLE__) +#elif defined (__APPLE__) && defined (_STRUCT_MCONTEXT) + typedef struct __darwin_ucontext os_ucontext; + + #define UCONTEXT_REG_Rn(ctx, n) ((ctx)->uc_mcontext->__ss.__r##n) + #define UCONTEXT_REG_FPRn(ctx, n) ((ctx)->uc_mcontext->__fs.__fpregs [(n)]) + #define UCONTEXT_REG_NIP(ctx) ((ctx)->uc_mcontext->__ss.__srr0) +#elif defined (__APPLE__) && !defined (_STRUCT_MCONTEXT) typedef struct ucontext os_ucontext; #define UCONTEXT_REG_Rn(ctx, n) ((ctx)->uc_mcontext->ss.r##n) === mono/mini/mini-x86.h ================================================================== --- mono/mini/mini-x86.h (revision 83951) +++ mono/mini/mini-x86.h (local) @@ -152,7 +152,17 @@ #define UCONTEXT_REG_ESI(ctx) ((ctx)->uc_mcontext.mc_esi) #define UCONTEXT_REG_EDI(ctx) ((ctx)->uc_mcontext.mc_edi) #define UCONTEXT_REG_EIP(ctx) ((ctx)->uc_mcontext.mc_eip) -#elif defined(__APPLE__) +#elif defined(__APPLE__) && defined(_STRUCT_MCONTEXT) + #define UCONTEXT_REG_EAX(ctx) ((ctx)->uc_mcontext.__ss.__eax) + #define UCONTEXT_REG_EBX(ctx) ((ctx)->uc_mcontext.__ss.__ebx) + #define UCONTEXT_REG_ECX(ctx) ((ctx)->uc_mcontext.__ss.__ecx) + #define UCONTEXT_REG_EDX(ctx) ((ctx)->uc_mcontext.__ss.__edx) + #define UCONTEXT_REG_EBP(ctx) ((ctx)->uc_mcontext.__ss.__ebp) + #define UCONTEXT_REG_ESP(ctx) ((ctx)->uc_mcontext.__ss.__esp) + #define UCONTEXT_REG_ESI(ctx) ((ctx)->uc_mcontext.__ss.__esi) + #define UCONTEXT_REG_EDI(ctx) ((ctx)->uc_mcontext.__ss.__edi) + #define UCONTEXT_REG_EIP(ctx) ((ctx)->uc_mcontext.__ss.__eip) +#elif defined(__APPLE__) && !defined(_STRUCT_MCONTEXT) #define UCONTEXT_REG_EAX(ctx) ((ctx)->uc_mcontext->ss.eax) #define UCONTEXT_REG_EBX(ctx) ((ctx)->uc_mcontext->ss.ebx) #define UCONTEXT_REG_ECX(ctx) ((ctx)->uc_mcontext->ss.ecx) === support/ChangeLog ================================================================== --- support/ChangeLog (revision 83951) +++ support/ChangeLog (local) @@ -1,3 +1,7 @@ +2007-11-01 Geoff Norton + + * stdio.c: Handle Leopards lack of L_cuserid. + 2007-10-25 Jonathan Pryor * stdio.c: Provide errno as a parameter and set errno before calling === support/stdio.c ================================================================== --- support/stdio.c (revision 83951) +++ support/stdio.c (local) @@ -26,7 +26,11 @@ gint32 Mono_Posix_Syscall_L_cuserid (void) { +#ifdef __APPLE__ + return -1; +#else return L_cuserid; +#endif } #endif /* ndef PLATFORM_WIN32 */