From 9bcc4dd4ede23edfdb21d1be2791b1ac69441074 Mon Sep 17 00:00:00 2001
From: Joel Dice <git@seibutsu.mailsnare.net>
Date: Mon, 31 Mar 2008 11:58:40 -0600
Subject: [PATCH] fix build for OSX 10.4 and below

---
 src/posix.cpp | 15 +++++++++++----
 1 file changed, 11 insertions(+), 4 deletions(-)

diff --git a/src/posix.cpp b/src/posix.cpp
index 2a60146e1e..21ad14d866 100644
--- a/src/posix.cpp
+++ b/src/posix.cpp
@@ -65,10 +65,17 @@ const int SegFaultSignal = SIGSEGV;
 #  define STACK_REGISTER(context) (context->uc_mcontext.gregs[REG_RSP])
 #  define THREAD_REGISTER(context) (context->uc_mcontext.gregs[REG_RBX])
 #elif defined __APPLE__
-#  define IP_REGISTER(context) (context->uc_mcontext->__ss.__eip)
-#  define BASE_REGISTER(context) (context->uc_mcontext->__ss.__ebp)
-#  define STACK_REGISTER(context) (context->uc_mcontext->__ss.__esp)
-#  define THREAD_REGISTER(context) (context->uc_mcontext->__ss.__ebx)
+#  if __DARWIN_UNIX03 && defined(_STRUCT_X86_EXCEPTION_STATE32)
+#    define IP_REGISTER(context) (context->uc_mcontext->__ss.__eip)
+#    define BASE_REGISTER(context) (context->uc_mcontext->__ss.__ebp)
+#    define STACK_REGISTER(context) (context->uc_mcontext->__ss.__esp)
+#    define THREAD_REGISTER(context) (context->uc_mcontext->__ss.__ebx)
+#  else
+#    define IP_REGISTER(context) (context->uc_mcontext->ss.eip)
+#    define BASE_REGISTER(context) (context->uc_mcontext->ss.ebp)
+#    define STACK_REGISTER(context) (context->uc_mcontext->ss.esp)
+#    define THREAD_REGISTER(context) (context->uc_mcontext->ss.ebx)
+#  endif
 #elif defined __i386__
 #  define IP_REGISTER(context) (context->uc_mcontext.gregs[REG_EIP])
 #  define BASE_REGISTER(context) (context->uc_mcontext.gregs[REG_EBP])