diff --git a/toolchain/gcc/patches/4.6-linaro/850-use_shared_libgcc.patch b/toolchain/gcc/patches/4.6-linaro/850-use_shared_libgcc.patch
index 1a7f62a7e16a2231548d1989f28205e7d4dc50de..61e1035d350056cea951c49bd5c09039d260770d 100644
--- a/toolchain/gcc/patches/4.6-linaro/850-use_shared_libgcc.patch
+++ b/toolchain/gcc/patches/4.6-linaro/850-use_shared_libgcc.patch
@@ -57,12 +57,30 @@
  }
 --- a/libgcc/Makefile.in
 +++ b/libgcc/Makefile.in
-@@ -272,7 +272,7 @@ ifeq ($(enable_shared),yes)
+@@ -269,6 +269,12 @@ ifeq ($(enable_shared),yes)
+     install-libunwind = install-libunwind
+   endif
+ 
++else
++# Not enable_shared.
++iterator = $(srcdir)/empty.mk $(patsubst %,$(srcdir)/static-object.mk,$(iter-items))
++endif
++
++
  # For -fvisibility=hidden.  We need both a -fvisibility=hidden on
  # the command line, and a #define to prevent libgcc2.h etc from
  # overriding that with #pragmas.
--vis_hide = @vis_hide@
-+vis_hide =
- 
- ifneq (,$(vis_hide))
+@@ -291,13 +297,6 @@ else
+ gen-hide-list = echo > $@
+ endif
  
+-else
+-# Not enable_shared.
+-iterator = $(srcdir)/empty.mk $(patsubst %,$(srcdir)/static-object.mk,$(iter-items))
+-vis_hide =
+-gen-hide-list = echo > \$@
+-endif
+-
+ ifneq ($(EXTRA_PARTS),)
+   extra-parts = libgcc-extra-parts
+   INSTALL_PARTS = $(EXTRA_PARTS)
diff --git a/toolchain/gcc/patches/4.8-linaro/850-use_shared_libgcc.patch b/toolchain/gcc/patches/4.8-linaro/850-use_shared_libgcc.patch
index ee3f602731f402992aae133eb121d1b89c5ae6cd..6fa19241f50d582a6881b938e9337ae45b47aa07 100644
--- a/toolchain/gcc/patches/4.8-linaro/850-use_shared_libgcc.patch
+++ b/toolchain/gcc/patches/4.8-linaro/850-use_shared_libgcc.patch
@@ -33,17 +33,6 @@
 -    printf ("\n  local:\n\t*;\n};\n");
 +    printf ("\n\t*;\n};\n");
  }
---- a/libgcc/Makefile.in
-+++ b/libgcc/Makefile.in
-@@ -368,7 +368,7 @@ endif
- # For -fvisibility=hidden.  We need both a -fvisibility=hidden on
- # the command line, and a #define to prevent libgcc2.h etc from
- # overriding that with #pragmas.
--vis_hide = @vis_hide@
-+vis_hide =
- 
- ifneq (,$(vis_hide))
- 
 --- a/gcc/config/rs6000/linux.h
 +++ b/gcc/config/rs6000/linux.h
 @@ -61,6 +61,9 @@
diff --git a/toolchain/gcc/patches/4.8.0/850-use_shared_libgcc.patch b/toolchain/gcc/patches/4.8.0/850-use_shared_libgcc.patch
index 4a77b86c1765a83f6fe4d706e53d518949117b20..2c7369fc25c1bc448c7a58868cb8f2d273a24a6e 100644
--- a/toolchain/gcc/patches/4.8.0/850-use_shared_libgcc.patch
+++ b/toolchain/gcc/patches/4.8.0/850-use_shared_libgcc.patch
@@ -33,17 +33,6 @@
 -    printf ("\n  local:\n\t*;\n};\n");
 +    printf ("\n\t*;\n};\n");
  }
---- a/libgcc/Makefile.in
-+++ b/libgcc/Makefile.in
-@@ -368,7 +368,7 @@ endif
- # For -fvisibility=hidden.  We need both a -fvisibility=hidden on
- # the command line, and a #define to prevent libgcc2.h etc from
- # overriding that with #pragmas.
--vis_hide = @vis_hide@
-+vis_hide =
- 
- ifneq (,$(vis_hide))
- 
 --- a/gcc/config/rs6000/linux.h
 +++ b/gcc/config/rs6000/linux.h
 @@ -61,6 +61,9 @@