diff -durN gcc-3.4.6.orig/gcc/config/sh/lib1funcs.asm gcc-3.4.6/gcc/config/sh/lib1funcs.asm
--- gcc-3.4.6.orig/gcc/config/sh/lib1funcs.asm	2003-08-12 03:25:07.000000000 +0200
+++ gcc-3.4.6/gcc/config/sh/lib1funcs.asm	2007-08-15 23:04:26.000000000 +0200
@@ -37,9 +37,19 @@
    ELF local label prefixes by J"orn Rennecke
    amylaar@cygnus.com  */
 
+#define ALIAS(X,Y)	.global GLOBAL(X); .set GLOBAL(X),GLOBAL(Y)
+
 #ifdef __ELF__
 #define LOCAL(X)	.L_##X
-#define FUNC(X)		.type X,@function
+
+#if 1 /* ??? The export list mechanism is broken, everything that is not
+	 hidden is exported.  */
+#undef FUNC
+#define FUNC(X)		.type X,@function; .hidden X
+#undef ALIAS
+#define ALIAS(X,Y)	.global GLOBAL(X); .set GLOBAL(X),GLOBAL(Y); .hidden GLOBAL(X)
+#endif
+
 #define ENDFUNC0(X)	.Lfe_##X: .size X,.Lfe_##X-X
 #define ENDFUNC(X)	ENDFUNC0(X)
 #else
