From c2e1d8a6ba7a9a1a0700b6bdf19a3790944eb463 Mon Sep 17 00:00:00 2001 From: rtoy <rtoy> Date: Mon, 29 Dec 2008 14:40:34 +0000 Subject: [PATCH] Support building and running on OSX 10.4 (Tiger). lisp/Config.x86_darwin: o Add -mmacosx-version-min=10.4 so the C code can run on Tiger. lisp/Darwin.c: lisp/x86-lispregs.h: o The mcontext slot names have a prefix of "__" on 10.5, but have no prefix on 10.4. Add #define's to make the source code work on either. --- lisp/Config.x86_darwin | 6 +++++- lisp/Darwin-os.c | 29 ++++++++++++++++++++++++++++- lisp/x86-lispregs.h | 8 +++++++- 3 files changed, 40 insertions(+), 3 deletions(-) diff --git a/lisp/Config.x86_darwin b/lisp/Config.x86_darwin index 6d6b91651..bc8e6f362 100644 --- a/lisp/Config.x86_darwin +++ b/lisp/Config.x86_darwin @@ -27,6 +27,10 @@ ifdef FEATURE_SSE2 RUNTIME += -DFEATURE_SSE2 endif +# Compile code that will run on OSX 10.4 (Tiger) +MIN_VER = -mmacosx-version-min=10.4 +RUNTIME += $(MIN_VER) + CPPFLAGS = -Di386 -DDARWIN $(RUNTIME) CFLAGS = -Wstrict-prototypes -Wall -g3 $(CPPFLAGS) $(INCLUDES) ASFLAGS = -g3 $(INCLUDES) $(RUNTIME) @@ -35,7 +39,7 @@ UNDEFSYMPATTERN = -Xlinker -u -Xlinker & ASSEM_SRC = x86-assem.S ARCH_SRC = x86-arch.c OS_SRC = Darwin-os.c os-common.c e_rem_pio2.c k_rem_pio2.c -# OS_LINK_FLAGS = -dynamic -export-dynamic +OS_LINK_FLAGS = $(MIN_VER) OS_LIBS = # This has aliasing problems, so turn off aliasing. diff --git a/lisp/Darwin-os.c b/lisp/Darwin-os.c index 737b4bde9..e6111c32a 100644 --- a/lisp/Darwin-os.c +++ b/lisp/Darwin-os.c @@ -14,7 +14,7 @@ * Frobbed for OpenBSD by Pierre R. Mai, 2001. * Frobbed for Darwin by Pierre R. Mai, 2003. * - * $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/Darwin-os.c,v 1.23 2008/12/10 02:39:13 rtoy Exp $ + * $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/Darwin-os.c,v 1.24 2008/12/29 14:40:34 rtoy Exp $ * */ @@ -200,6 +200,33 @@ sc_reg(os_context_t * context, int offset) unsigned long * os_sigcontext_reg(ucontext_t *scp, int index) { +#if __DARWIN_UNIX03 + /* Nothing needed for 10.5 */ +#else + /* This is for 10.4 */ +#define __ss ss +#define __eax eax +#define __ecx ecx +#define __edx edx +#define __ebx ebx +#define __esp esp +#define __ebp ebp +#define __esi esi +#define __edi edi +#define __eip eip +#define __fs fs +#define __fpu_stmm0 fpu_stmm0 +#define __fpu_stmm1 fpu_stmm1 +#define __fpu_stmm2 fpu_stmm2 +#define __fpu_stmm3 fpu_stmm3 +#define __fpu_stmm4 fpu_stmm4 +#define __fpu_stmm5 fpu_stmm5 +#define __fpu_stmm6 fpu_stmm6 +#define __fpu_stmm7 fpu_stmm7 +#define __fpu_fcw fpu_fcw +#define __fpu_fsw fpu_fsw +#define __fpu_mxcsr fpu_mxcsr +#endif switch (index) { case 0: return (unsigned long *) &scp->uc_mcontext->__ss.__eax; diff --git a/lisp/x86-lispregs.h b/lisp/x86-lispregs.h index 09866b600..0e9735e24 100644 --- a/lisp/x86-lispregs.h +++ b/lisp/x86-lispregs.h @@ -1,5 +1,5 @@ /* x86-lispregs.h -*- Mode: C; -*- - * $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/x86-lispregs.h,v 1.12 2008/01/03 11:41:54 cshapiro Exp $ + * $Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/lisp/x86-lispregs.h,v 1.13 2008/12/29 14:40:34 rtoy Rel $ */ #ifndef _X86_LISPREGS_H_ @@ -49,7 +49,13 @@ #define SC_SP(scp) SC_REG(scp, reg_ESP) #if defined(DARWIN) +#if __DARWIN_UNIX03 +/* For 10.5 */ #define SC_EFLAGS(sc) ((sc)->uc_mcontext->__ss.__eflags) +#else +/* For 10.4 */ +#define SC_EFLAGS(sc) ((sc)->uc_mcontext->ss.eflags) +#endif #elif defined(__linux__) #define SC_EFLAGS(sc) ((sc)->uc_mcontext.gregs[REG_EFL]) #endif -- GitLab