--- gcc-4.0.4/gcc/config/rs6000/host-darwin.c.orig	2007-11-10 13:24:23.000000000 +0900
+++ gcc-4.0.4/gcc/config/rs6000/host-darwin.c	2007-11-10 13:19:23.000000000 +0900
@@ -33,10 +33,6 @@
 static void segv_handler (int, siginfo_t *, void *);
 static void darwin_rs6000_extra_signals (void);
 
-/* This doesn't have a prototype in signal.h in 10.2.x and earlier,
-   fixed in later releases.  */
-extern int sigaltstack(const struct sigaltstack *, struct sigaltstack *);
-
 #undef HOST_HOOKS_EXTRA_SIGNALS
 #define HOST_HOOKS_EXTRA_SIGNALS darwin_rs6000_extra_signals

@@ -60,7 +60,7 @@
      which case the next line will segfault _again_.  Handle this case.  */
   signal (SIGSEGV, segv_crash_handler);
 
-  faulting_insn = *(unsigned *)uc->uc_mcontext->ss.srr0;
+  faulting_insn = *(unsigned *)uc->uc_mcontext->__ss.__srr0;
 
   /* Note that this only has to work for GCC, so we don't have to deal
      with all the possible cases (GCC has no AltiVec code, for
@@ -109,7 +109,7 @@
     }
 
   fprintf (stderr, "[address=%08lx pc=%08x]\n", 
-	   uc->uc_mcontext->es.dar, uc->uc_mcontext->ss.srr0);
+	   uc->uc_mcontext->__es.__dar, uc->uc_mcontext->__ss.__srr0);
   internal_error ("Segmentation Fault");
   exit (FATAL_EXIT_CODE);
 }
