--- /dev/null
+--- gcc-3.4.0/gcc/ada/link.c.orig Mon Jan 12 12:45:24 2004
++++ gcc-3.4.0/gcc/ada/link.c Tue Jun 1 15:57:42 2004
+@@ -165,9 +165,9 @@
+
+ #elif defined (linux)
+ const char *object_file_option = "";
+-const char *run_path_option = "-Wl,-rpath,";
+-char shared_libgnat_default = STATIC;
+-int link_max = 8192;
++const char *run_path_option = "";
++char shared_libgnat_default = SHARED;
++int link_max = 131072;
+ unsigned char objlist_file_supported = 1;
+ unsigned char using_gnu_linker = 1;
+ const char *object_library_extension = ".a";
+--- gcc-3.4.0/gcc/ada/Makefile.in.orig Mon Apr 26 11:19:09 2004
++++ gcc-3.4.0/gcc/ada/Makefile.in Tue Jun 1 15:58:33 2004
+@@ -142,7 +142,7 @@
+ objext = .o
+ exeext =
+ arext = .a
+-soext = .so
++soext = .so.1
+ shext =
+
+ # Define this as & to perform parallel make on a Sequent.
+@@ -1269,6 +1269,46 @@
+ LIBRARY_VERSION := $(LIB_VERSION)
+ endif
+
++ifeq ($(strip $(filter-out alpha% linux%,$(arch) $(osys))),)
++ TOOLS_TARGET_PAIRS=mlib-tgt.adb<5lml-tgt.adb
++ THREADSLIB=-lpthread
++ GNATLIB_SHARED=gnatlib-shared-dual
++ PREFIX_OBJS=$(PREFIX_REAL_OBJS)
++ LIBRARY_VERSION := $(LIB_VERSION)
++endif
++
++ifeq ($(strip $(filter-out sparc% linux%,$(arch) $(osys))),)
++ TOOLS_TARGET_PAIRS=mlib-tgt.adb<5lml-tgt.adb
++ THREADSLIB=-lpthread
++ GNATLIB_SHARED=gnatlib-shared-dual
++ PREFIX_OBJS=$(PREFIX_REAL_OBJS)
++ LIBRARY_VERSION := $(LIB_VERSION)
++endif
++
++ifeq ($(strip $(filter-out ppc% linux%,$(arch) $(osys))),)
++ TOOLS_TARGET_PAIRS=mlib-tgt.adb<5lml-tgt.adb
++ THREADSLIB=-lpthread
++ GNATLIB_SHARED=gnatlib-shared-dual
++ PREFIX_OBJS=$(PREFIX_REAL_OBJS)
++ LIBRARY_VERSION := $(LIB_VERSION)
++endif
++
++ifeq ($(strip $(filter-out powerpc% linux%,$(arch) $(osys))),)
++ TOOLS_TARGET_PAIRS=mlib-tgt.adb<5lml-tgt.adb
++ THREADSLIB=-lpthread
++ GNATLIB_SHARED=gnatlib-shared-dual
++ PREFIX_OBJS=$(PREFIX_REAL_OBJS)
++ LIBRARY_VERSION := $(LIB_VERSION)
++endif
++
++ifeq ($(strip $(filter-out s390% linux%,$(arch) $(osys))),)
++ TOOLS_TARGET_PAIRS=mlib-tgt.adb<5lml-tgt.adb
++ THREADSLIB=-lpthread
++ GNATLIB_SHARED=gnatlib-shared-dual
++ PREFIX_OBJS=$(PREFIX_REAL_OBJS)
++ LIBRARY_VERSION := $(LIB_VERSION)
++endif
++
+ ifeq ($(strip $(filter-out %x86_64 linux%,$(arch) $(osys))),)
+ LIBGNAT_TARGET_PAIRS = \
+ a-intnam.ads<4lintnam.ads \
+@@ -1767,6 +1807,9 @@
+ # is guaranteed to overflow the buffer.
+
+ gnatlib: ../stamp-gnatlib1 ../stamp-gnatlib2
++ $(RMDIR) save
++ $(MKDIR) save
++ $(MV) *.o save/
+ $(MAKE) -C rts CC="../../xgcc -B../../" \
+ INCLUDES="$(INCLUDES_FOR_SUBDIR) -I./../.." \
+ CFLAGS="$(GNATLIBCFLAGS_FOR_C)" \
+@@ -1779,6 +1822,8 @@
+ srcdir=$(fsrcdir) \
+ -f ../Makefile \
+ $(GNATRTL_OBJS)
++ $(MV) save/*.o .
++ $(RMDIR) save
+ $(RM) rts/libgnat$(arext) rts/libgnarl$(arext)
+ $(AR) $(AR_FLAGS) rts/libgnat$(arext) \
+ $(addprefix rts/,$(GNATRTL_NONTASKING_OBJS) $(LIBGNAT_OBJS))
+@@ -1891,14 +1936,15 @@
+ THREAD_KIND="$(THREAD_KIND)" \
+ gnatlib
+ $(RM) rts/libgnat$(soext) rts/libgnarl$(soext)
+- cd rts; ../../xgcc -B../../ -shared $(TARGET_LIBGCC2_CFLAGS) \
++ cd rts; ../../xgcc -B../../ -shared -shared-libgcc $(TARGET_LIBGCC2_CFLAGS) \
+ -o libgnat-$(LIBRARY_VERSION)$(soext) \
+ $(GNATRTL_NONTASKING_OBJS) $(LIBGNAT_OBJS) \
+ $(SO_OPTS)libgnat-$(LIBRARY_VERSION)$(soext) $(MISCLIB) -lm
+ cd rts; ../../xgcc -B../../ -shared $(TARGET_LIBGCC2_CFLAGS) \
+ -o libgnarl-$(LIBRARY_VERSION)$(soext) \
+ $(GNATRTL_TASKING_OBJS) \
+- $(SO_OPTS)libgnarl-$(LIBRARY_VERSION)$(soext) $(THREADSLIB)
++ $(SO_OPTS)libgnarl-$(LIBRARY_VERSION)$(soext) $(THREADSLIB) \
++ ./libgnat-$(LIBRARY_VERSION)$(soext)
+ cd rts; $(LN_S) libgnat-$(LIBRARY_VERSION)$(soext) libgnat$(soext)
+ cd rts; $(LN_S) libgnarl-$(LIBRARY_VERSION)$(soext) libgnarl$(soext)
+