diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 96374062fdc8e65433fcf9613ea1dc862d1f11e0..90fe8764414d0abb245456386be4f5c9525d8697 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,8 @@
+2010-12-18  Iain Sandoe  <iains@gcc.gnu.org>
+
+	* config/darwin.h (SUBTARGET_C_COMMON_OVERRIDE_OPTIONS):
+	Only set sjlj exceptions for NeXT/m32.
+
 2010-12-18  Iain Sandoe  <iains@gcc.gnu.org>
 
 	* config/darwin.h (GCC_DRIVER_HOST_INITIALIZATION):
diff --git a/gcc/config/darwin.h b/gcc/config/darwin.h
index a2694b873ae2d56cb1ce39af218e61880e5a3352..fe266c037f4259b12408d93f948f946d71caa694 100644
--- a/gcc/config/darwin.h
+++ b/gcc/config/darwin.h
@@ -140,6 +140,11 @@ extern GTY(()) int darwin_ms_struct;
   } while (0)
 
 #define SUBTARGET_C_COMMON_OVERRIDE_OPTIONS do {                        \
+  /* Sort out ObjC exceptions: If the runtime is NeXT we default to	\
+     sjlj for m32 only.  */						\
+  if (!global_options_set.x_flag_objc_sjlj_exceptions)			\
+    global_options.x_flag_objc_sjlj_exceptions = 			\
+				flag_next_runtime && !TARGET_64BIT;	\
     if (flag_mkernel || flag_apple_kext)				\
       {									\
 	if (flag_use_cxa_atexit == 2)					\