diff --git a/libgcc/ChangeLog b/libgcc/ChangeLog
index 8e030f96c3796d6978c1e13a295b1dd1b85faf41..adb742287e06427b9c4306c1ce80d42245f7472c 100644
--- a/libgcc/ChangeLog
+++ b/libgcc/ChangeLog
@@ -1,3 +1,8 @@
+2012-12-04  Richard Henderson  <rth@redhat.com>
+
+	PR bootstrap/55571
+	* Makefile.in (libgcc_s.so): Depend on and link with libgcc.a.
+
 2012-12-04  Marcus Shawcroft <marcus.shawcroft@arm.com>
 
         * config/aarch64/sfp-machine.h (FP_EX_ALL): Define.
diff --git a/libgcc/Makefile.in b/libgcc/Makefile.in
index 43b14a01f93ccc93e380cc64ccf53083a59fc5dc..cfddfed4b8736c1c29bb200ac6af83c3960499b8 100644
--- a/libgcc/Makefile.in
+++ b/libgcc/Makefile.in
@@ -917,7 +917,7 @@ libgcc-std.ver: $(srcdir)/libgcc-std.ver.in
 	sed -e 's/__PFX__/$(LIBGCC_VER_GNU_PREFIX)/g' \
 	    -e 's/__FIXPTPFX__/$(LIBGCC_VER_FIXEDPOINT_GNU_PREFIX)/g' < $< > $@
 
-libgcc_s$(SHLIB_EXT): $(libgcc-s-objects) $(extra-parts)
+libgcc_s$(SHLIB_EXT): $(libgcc-s-objects) $(extra-parts) libgcc.a
 	# @multilib_flags@ is still needed because this may use
 	# $(GCC_FOR_TARGET) and $(LIBGCC2_CFLAGS) directly.
 	# @multilib_dir@ is not really necessary, but sometimes it has
@@ -925,7 +925,7 @@ libgcc_s$(SHLIB_EXT): $(libgcc-s-objects) $(extra-parts)
 	$(mkinstalldirs) $(MULTIDIR)
 	$(subst @multilib_flags@,$(CFLAGS) -B./,$(subst \
 		@multilib_dir@,$(MULTIDIR),$(subst \
-		@shlib_objs@,$(objects),$(subst \
+		@shlib_objs@,$(objects) libgcc.a,$(subst \
 		@shlib_base_name@,libgcc_s,$(subst \
 		@shlib_map_file@,$(mapfile),$(subst \
 		@shlib_slibdir_qual@,$(MULTIOSSUBDIR),$(subst \