Index: libobjc/encoding.c
===================================================================
--- libobjc/encoding.c	(revision 161768)
+++ libobjc/encoding.c	(working copy)
@@ -105,10 +105,22 @@ static int __attribute__ ((__unused__)) not_target
  #undef ALTIVEC_VECTOR_MODE
  #define ALTIVEC_VECTOR_MODE(MODE) (0)

+/* Furthermore, some (powerpc) targets also use TARGET_ALIGN_NATURAL
+   in their alignment macros.  Currently[4.5/6], rs6000.h points this
+   to a static variable, initialized by target overrides.  This is  
reset
+   in linux64.h but not in darwin64.h and therefore, all the darwin64
+   stuff is broken.  This echoes the comments above and below about
+   the badness of the approach.  Other powerpc64 targets might also
+   be affected.  */
+
+#if defined(DEFAULT_ABI) && (DEFAULT_ABI==ABI_DARWIN) && __LP64__
+#  undef TARGET_ALIGN_NATURAL
+#  define TARGET_ALIGN_NATURAL 1
+#endif

  /*  FIXME: while this file has no business including tm.h, this
      definitely has no business defining this macro but it
-    is only way around without really rewritting this file,
+    is only way around without really rewriting this file,
      should look after the branch of 3.4 to fix this.  */
  #define rs6000_special_round_type_align(STRUCT, COMPUTED, SPECIFIED)	\
