diff --git a/src/tools/linker.sh b/src/tools/linker.sh
index a0050b94b574cf65a3caf53344d8b0d6b1cc8244..a5a99ef66d9a8a3181d6eb25e1cd9300d55d51fa 100755
--- a/src/tools/linker.sh
+++ b/src/tools/linker.sh
@@ -99,14 +99,17 @@ case $uname_s in
 	    # when creating the executable on 10.8.  (See ticket:112.)
 
 	    OPT_EXTRA="-segaddr __LINKEDIT 0x99000000 -rdynamic -mmacosx-version-min=10.5"
+	    OS_LIBS=
 	    ;;
 	powerpc)
-	    # Nothing needed for ppc?
+	    # See Config.ppc_darwin Like i386, __LINKEDIT is linked
+	    # just after the dynamic space which messes things up, so
+	    # we move it to a diffferent address. The address below
+	    # appears to be free.
+	    OPT_EXTRA="-segaddr __LINKEDIT 0x99000000 -mmacosx-version-min=10.4 -static-libgcc"
+	    OS_LIBS="-lSystem -lc -lm"
 	    ;;
       esac
-
-      # See Config.x86_darwin
-      OS_LIBS=
       ;;
   SunOS)
       # A quick test indicates that gcc will accept the following