    Garbage Collector (parallel iversion) for ix86 DG/UX Release R4.20MU07


     *READ* the file README.QUICK.

     You need the GCC-3.0.3 rev (DG/UX) compiler to build this tree.
     This compiler has the new "dgux386" threads package implemented.
     It also supports the switch "-pthread" needed to link correctly
     the DG/UX's -lrte -lthread with -lgcc and the system's -lc. 
     Finally we support parralleli-mark for the SMP DG/UX machines.
     To build the garbage collector do:
      
      ./configure --enable-parallel-mark
      make
      make gctest

     Before you run "gctest" you need to set your LD_LIBRARY_PATH
     correctly so that "gctest" can find the shared library libgc.
     Alternatively you can do a configuration

      ./configure --enable-parallel-mark --disable-shared
  
     to build only the static version of libgc.
  
     To enable debugging messages please do:
     1) Add the "--enable-full-debug" flag during configuration. 
     2) Edit the file linux-threads.c and uncommnect the line:

     /* #define DEBUG_THREADS 1 */ to ---> 

     #define DEBUG_THREADS 1

     Then give "make" as usual.
    
     In a machine with 4 CPUs (my own machine) the option parallel
     mark (aka --enable-parallel-mark) makes a BIG difference.

     Takis Psarogiannakopoulos
     University of Cambridge
     Centre for Mathematical Sciences
     Department of Pure Mathematics
     Wilberforce Road
     Cambridge CB3 0WB ,UK , <takis@XFree86.Org>
     January 2002


Note (HB):
     The integration of this patch is currently not complete.
     The following patches against 6.1alpha3 where hard to move
     to alpha4, and are not integrated.  There may also be minor
     problems with stylistic corrections made by me.


--- ltconfig.ORIG	Mon Jan 28 20:22:18 2002
+++ ltconfig	Mon Jan 28 20:44:00 2002
@@ -689,6 +689,11 @@
        pic_flag=-Kconform_pic
     fi
     ;;
+  dgux*)
+    pic_flag='-fPIC'
+    link_static='-Bstatic'
+    wl='-Wl,'
+    ;;
   *)
     pic_flag='-fPIC'
     ;;
@@ -718,6 +723,12 @@
     # We can build DLLs from non-PIC.
     ;;
 
+  dgux*)
+    pic_flag='-KPIC'
+    link_static='-Bstatic'
+    wl='-Wl,'
+    ;;
+
   osf3* | osf4* | osf5*)
     # All OSF/1 code is PIC.
     wl='-Wl,'
@@ -1154,6 +1165,22 @@
     fi
     ;;
 
+  dgux*)
+    ld_shlibs=yes
+    # For both C/C++ ommit the deplibs. This is because we relying on the fact
+    # that compilation of execitables will put them in correct order
+    # in any case and sometimes are wrong when listed as deplibs (or missing some deplibs)
+    # However when GNU ld and --whole-archive needs to be used we have the problem
+    # that if the -fPIC *_s.a archive is linked through deplibs list we ommiting crucial
+    # .lo/.o files from the created shared lib. This I think is not the case here.
+    archive_cmds='$CC -shared -h $soname -o $lib $libobjs $linkopts'
+    thread_safe_flag_spec='-pthread'
+    wlarc=
+    hardcode_libdir_flag_spec='-L$libdir'
+    hardcode_shlibpath_var=no
+    ac_cv_archive_cmds_needs_lc=no
+    ;;
+
   cygwin* | mingw*)
     # hardcode_libdir_flag_spec is actually meaningless, as there is
     # no search path for DLLs.
@@ -1497,7 +1524,7 @@
     ;;
 
   dgux*)
-    archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts'
+    archive_cmds='$CC -shared -h $soname -o $lib $libobjs $linkopts'
     hardcode_libdir_flag_spec='-L$libdir'
     hardcode_shlibpath_var=no
     ;;
@@ -2092,12 +2119,17 @@
   ;;
 
 dgux*)
-  version_type=linux
+  version_type=dgux
   need_lib_prefix=no
   need_version=no
-  library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so'
-  soname_spec='${libname}${release}.so$major'
+  library_names_spec='$libname.so$versuffix'
+  soname_spec='$libname.so$versuffix'
   shlibpath_var=LD_LIBRARY_PATH
+  thread_safe_flag_spec='-pthread'
+  wlarc=
+  hardcode_libdir_flag_spec='-L$libdir'
+  hardcode_shlibpath_var=no
+  ac_cv_archive_cmds_needs_lc=no
   ;;
 
 sysv4*MP*)


--- ltmain.sh.ORIG	Mon Jan 28 20:31:18 2002
+++ ltmain.sh	Tue Jan 29 00:11:29 2002
@@ -1072,11 +1072,38 @@
 	esac
 	;;
 
+      -thread*)
+	# DG/UX GCC 2.95.x, 3.x.x rev (DG/UX) links -lthread
+	# with the switch -threads
+	if test "$arg" = "-threads"; then
+	  case "$host" in
+	  i[3456]86-*-dgux*)
+	    deplibs="$deplibs $arg"
+	    continue
+	    ;;
+	  esac
+	fi
+	;;
+
+      -pthread*)
+	# DG/UX GCC 2.95.x, 3.x.x rev (DG/UX) links -lthread
+	# with the switch -pthread
+	if test "$arg" = "-pthread"; then
+	  case "$host" in
+	  i[3456]86-*-dgux*)
+	    deplibs="$deplibs $arg"
+	    continue
+	    ;;
+	  esac
+	fi
+	;;
+
       -l*)
 	if test "$arg" = "-lc"; then
 	  case "$host" in
-	  *-*-cygwin* | *-*-mingw* | *-*-os2* | *-*-beos*)
+	  *-*-cygwin* | *-*-mingw* | *-*-os2* | *-*-beos* | i[3456]86-*-dgux*)
 	    # These systems don't actually have c library (as such)
+	    # It is wrong in DG/UX to add -lc when creating shared/dynamic objs/libs
 	    continue
 	    ;;
 	  esac
@@ -1248,6 +1275,12 @@
 	  temp_deplibs=
 	  for deplib in $dependency_libs; do
 	    case "$deplib" in
+	    -thread*)
+		 temp_deplibs="$temp_deplibs $deplib"
+		 ;;
+	    -pthread)
+		 temp_deplibs="$temp_deplibs $deplib"
+		 ;;
 	    -R*) temp_xrpath=`$echo "X$deplib" | $Xsed -e 's/^-R//'`
 		 case " $rpath $xrpath " in
 		 *" $temp_xrpath "*) ;;
@@ -1709,6 +1742,13 @@
 	  done
 	  ;;
 
+	dgux)
+	  # Leave mostly blank for DG/UX
+	  major=
+	  versuffix=".$current.$revision";
+	  verstring=
+	  ;;
+
 	linux)
 	  major=.`expr $current - $age`
 	  versuffix="$major.$age.$revision"
@@ -1792,8 +1832,9 @@
 
 	dependency_libs="$deplibs"
 	case "$host" in
-	*-*-cygwin* | *-*-mingw* | *-*-os2* | *-*-beos*)
+	*-*-cygwin* | *-*-mingw* | *-*-os2* | *-*-beos* | i[3456]86-*-dgux*)
 	  # these systems don't actually have a c library (as such)!
+	  # It is wrong in DG/UX to add -lc when creating shared/dynamic objs/libs
 	  ;;
 	*)
 	  # Add libc to deplibs on all other systems.
