+diff -urN gcc-2.95.3.test1.org/gcc/config/i386/i386.md gcc-2.95.3.test1/gcc/config/i386/i386.md
+--- gcc-2.95.3.test1.org/gcc/config/i386/i386.md Wed Jan 3 20:34:36 2001
++++ gcc-2.95.3.test1/gcc/config/i386/i386.md Wed Jan 3 20:35:21 2001
+@@ -1345,7 +1345,8 @@
+ else if ((reload_in_progress | reload_completed) == 0
+ && GET_CODE (operands[0]) != MEM
+ && GET_CODE (operands[1]) == CONST_DOUBLE
+- && !standard_80387_constant_p (operands[1]))
++ && ((flag_pic && flag_omit_frame_pointer)
++ || ! standard_80387_constant_p (operands[1])))
+ {
+ operands[1] = validize_mem (force_const_mem (SFmode, operands[1]));
+ }
+@@ -1473,7 +1474,8 @@
+ else if ((reload_in_progress | reload_completed) == 0
+ && GET_CODE (operands[0]) != MEM
+ && GET_CODE (operands[1]) == CONST_DOUBLE
+- && !standard_80387_constant_p (operands[1]))
++ && ((flag_pic && flag_omit_frame_pointer)
++ || ! standard_80387_constant_p (operands[1])))
+ {
+ operands[1] = validize_mem (force_const_mem (DFmode, operands[1]));
+ }
+@@ -1601,7 +1603,8 @@
+ else if ((reload_in_progress | reload_completed) == 0
+ && GET_CODE (operands[0]) != MEM
+ && GET_CODE (operands[1]) == CONST_DOUBLE
+- && !standard_80387_constant_p (operands[1]))
++ && ((flag_pic && flag_omit_frame_pointer)
++ || ! standard_80387_constant_p (operands[1])))
+ {
+ operands[1] = validize_mem (force_const_mem (XFmode, operands[1]));
+ }
+diff -urN gcc-2.95.3.test1.org/gcc/config/linux.h gcc-2.95.3.test1/gcc/config/linux.h
+--- gcc-2.95.3.test1.org/gcc/config/linux.h Wed Jan 3 20:34:33 2001
++++ gcc-2.95.3.test1/gcc/config/linux.h Wed Jan 3 20:35:22 2001
+@@ -103,7 +103,7 @@
+ %{!profile:%{!ggdb:-lc} %{ggdb:-lg}}}"
+ #else
+ #define LIB_SPEC \
+- "%{shared: -lc} \
++ "%{shared: -lc --version-script libgcc.map%s} \
+ %{!shared: %{mieee-fp:-lieee} %{pthread:-lpthread} \
+ %{profile:-lc_p} %{!profile: -lc}}"
+ #endif
+diff -urN gcc-2.95.3.test1.org/gcc/config/t-linux gcc-2.95.3.test1/gcc/config/t-linux
+--- gcc-2.95.3.test1.org/gcc/config/t-linux Wed Jan 3 20:34:33 2001
++++ gcc-2.95.3.test1/gcc/config/t-linux Wed Jan 3 20:35:22 2001
+@@ -14,3 +14,17 @@
+ LIBGCC1 =
+ CROSS_LIBGCC1 =
+ LIBGCC1_TEST =
++
++# Make glocal functions in libgcc.a local to the shared library with
++# symbol versioning.
++LIBGCC_MAP=libgcc.map
++# This list has to be maintained manually. It should cover the libgcc
++# functions, which can be safely made local to a shared library, on
++# all Linux platforms.
++LIBGCC_MAP_LIST=__ashldi3 __ashrdi3 __builtin_saveregs __clear_cache \
++ __cmpdi2 __divdi3 __dummy __eprintf __ffsdi2 __fixdfdi __fixsfdi \
++ __fixunsdfdi __fixunsdfsi __fixunssfdi __fixunssfsi __fixunsxfdi \
++ __fixunsxfsi __fixxfdi __floatdidf __floatdisf __floatdixf \
++ __gcc_bcmp __lshrdi3 __moddi3 __muldi3 __negdi2 __pure_virtual \
++ __ucmpdi2 __udiv_w_sdiv __udivdi3 __udivmoddi4 __umoddi3
++EXTRACT_LIBGCC=for s in $(LIBGCC_MAP_LIST); do echo " $$s;"; done
+diff -urN gcc-2.95.3.test1.org/gcc/f/Make-lang.in gcc-2.95.3.test1/gcc/f/Make-lang.in
+--- gcc-2.95.3.test1.org/gcc/f/Make-lang.in Wed Jan 3 20:34:42 2001
++++ gcc-2.95.3.test1/gcc/f/Make-lang.in Wed Jan 3 20:35:22 2001
+@@ -212,7 +212,7 @@
+
+ f77.all.build: g77$(exeext)
+ f77.all.cross: g77-cross$(exeext)
+-f77.start.encap: g77$(exeext)
++f77.start.encap: g77$(exeext) $(srcdir)/f/intdoc.texi
+ f77.rest.encap:
+
+ f77.info: f/g77.info
+diff -urN gcc-2.95.3.test1.org/libf2c/Makefile.in gcc-2.95.3.test1/libf2c/Makefile.in
+--- gcc-2.95.3.test1.org/libf2c/Makefile.in Wed Jan 3 20:34:47 2001
++++ gcc-2.95.3.test1/libf2c/Makefile.in Wed Jan 3 20:35:22 2001
+@@ -61,18 +61,18 @@