diff --git a/libffi/ChangeLog b/libffi/ChangeLog
index df544ba0f852032abdf5c6ad964b6e5900c82d89..7c9c97e44a6bf3258b89db019baf2d44899980bb 100644
--- a/libffi/ChangeLog
+++ b/libffi/ChangeLog
@@ -1,3 +1,8 @@
+2005-09-30  Geoffrey Keating  <geoffk@apple.com>
+
+	* testsuite/lib/libffi-dg.exp (libffi_target_compile): For
+	darwin, use -shared-libgcc not -lgcc_s, and explain why.
+
 2005-09-26  Tom Tromey  <tromey@redhat.com>
 
 	* testsuite/libffi.call/float1.c (value_type): New typedef.
diff --git a/libffi/testsuite/lib/libffi-dg.exp b/libffi/testsuite/lib/libffi-dg.exp
index 4708ef7b4e73fca0f534fb627fe733d4b5c2b0d0..c3eecff96c0a15b4bbd723f3ede08b1340d12f71 100644
--- a/libffi/testsuite/lib/libffi-dg.exp
+++ b/libffi/testsuite/lib/libffi-dg.exp
@@ -187,8 +187,13 @@ proc libffi_target_compile { source dest type options } {
     lappend options "additional_flags=-I${libffi_include} -I${srcdir}/../include  -I${libffi_include}/.."
     lappend options "additional_flags=${libffi_link_flags}"
 
-    if { [string match "powerpc-*-darwin*" $target_triplet] } {
-	lappend options "libs= -lgcc_s"
+    # If you're building the compiler with --prefix set to a place
+    # where it's not yet installed, then the linker won't be able to
+    # find the libgcc used by libffi.dylib.  We could pass the
+    # -dylib_file option, but that's complicated, and it's much easier
+    # to just make the linker find libgcc using -L options.
+    if { [string match "*-*-darwin*" $target_triplet] } {
+	lappend options "libs= -shared-libgcc"
     }
 
     lappend options "libs= -lffi"