1 Garbage Collector (parallel iversion) for ix86 DG/UX Release R4.20MU07 2 3 4 *READ* the file README.QUICK. 5 6 You need the GCC-3.0.3 rev (DG/UX) compiler to build this tree. 7 This compiler has the new "dgux386" threads package implemented. 8 It also supports the switch "-pthread" needed to link correctly 9 the DG/UX's -lrte -lthread with -lgcc and the system's -lc. 10 Finally we support parralleli-mark for the SMP DG/UX machines. 11 To build the garbage collector do: 12 13 ./configure --enable-parallel-mark 14 make 15 make gctest 16 17 Before you run "gctest" you need to set your LD_LIBRARY_PATH 18 correctly so that "gctest" can find the shared library libgc. 19 Alternatively you can do a configuration 20 21 ./configure --enable-parallel-mark --disable-shared 22 23 to build only the static version of libgc. 24 25 To enable debugging messages please do: 26 1) Add the "--enable-full-debug" flag during configuration. 27 2) Edit the file linux-threads.c and uncommnect the line: 28 29 /* #define DEBUG_THREADS 1 */ to ---> 30 31 #define DEBUG_THREADS 1 32 33 Then give "make" as usual. 34 35 In a machine with 4 CPUs (my own machine) the option parallel 36 mark (aka --enable-parallel-mark) makes a BIG difference. 37 38 Takis Psarogiannakopoulos 39 University of Cambridge 40 Centre for Mathematical Sciences 41 Department of Pure Mathematics 42 Wilberforce Road 43 Cambridge CB3 0WB ,UK , <takis@XFree86.Org> 44 January 2002 45 46 47Note (HB): 48 The integration of this patch is currently not complete. 49 The following patches against 6.1alpha3 where hard to move 50 to alpha4, and are not integrated. There may also be minor 51 problems with stylistic corrections made by me. 52 53 54--- ltconfig.ORIG Mon Jan 28 20:22:18 2002 55+++ ltconfig Mon Jan 28 20:44:00 2002 56@@ -689,6 +689,11 @@ 57 pic_flag=-Kconform_pic 58 fi 59 ;; 60+ dgux*) 61+ pic_flag='-fPIC' 62+ link_static='-Bstatic' 63+ wl='-Wl,' 64+ ;; 65 *) 66 pic_flag='-fPIC' 67 ;; 68@@ -718,6 +723,12 @@ 69 # We can build DLLs from non-PIC. 70 ;; 71 72+ dgux*) 73+ pic_flag='-KPIC' 74+ link_static='-Bstatic' 75+ wl='-Wl,' 76+ ;; 77+ 78 osf3* | osf4* | osf5*) 79 # All OSF/1 code is PIC. 80 wl='-Wl,' 81@@ -1154,6 +1165,22 @@ 82 fi 83 ;; 84 85+ dgux*) 86+ ld_shlibs=yes 87+ # For both C/C++ ommit the deplibs. This is because we relying on the fact 88+ # that compilation of execitables will put them in correct order 89+ # in any case and sometimes are wrong when listed as deplibs (or missing some deplibs) 90+ # However when GNU ld and --whole-archive needs to be used we have the problem 91+ # that if the -fPIC *_s.a archive is linked through deplibs list we ommiting crucial 92+ # .lo/.o files from the created shared lib. This I think is not the case here. 93+ archive_cmds='$CC -shared -h $soname -o $lib $libobjs $linkopts' 94+ thread_safe_flag_spec='-pthread' 95+ wlarc= 96+ hardcode_libdir_flag_spec='-L$libdir' 97+ hardcode_shlibpath_var=no 98+ ac_cv_archive_cmds_needs_lc=no 99+ ;; 100+ 101 cygwin* | mingw*) 102 # hardcode_libdir_flag_spec is actually meaningless, as there is 103 # no search path for DLLs. 104@@ -1497,7 +1524,7 @@ 105 ;; 106 107 dgux*) 108- archive_cmds='$LD -G -h $soname -o $lib $libobjs $deplibs $linkopts' 109+ archive_cmds='$CC -shared -h $soname -o $lib $libobjs $linkopts' 110 hardcode_libdir_flag_spec='-L$libdir' 111 hardcode_shlibpath_var=no 112 ;; 113@@ -2092,12 +2119,17 @@ 114 ;; 115 116 dgux*) 117- version_type=linux 118+ version_type=dgux 119 need_lib_prefix=no 120 need_version=no 121- library_names_spec='${libname}${release}.so$versuffix ${libname}${release}.so$major $libname.so' 122- soname_spec='${libname}${release}.so$major' 123+ library_names_spec='$libname.so$versuffix' 124+ soname_spec='$libname.so$versuffix' 125 shlibpath_var=LD_LIBRARY_PATH 126+ thread_safe_flag_spec='-pthread' 127+ wlarc= 128+ hardcode_libdir_flag_spec='-L$libdir' 129+ hardcode_shlibpath_var=no 130+ ac_cv_archive_cmds_needs_lc=no 131 ;; 132 133 sysv4*MP*) 134 135 136--- ltmain.sh.ORIG Mon Jan 28 20:31:18 2002 137+++ ltmain.sh Tue Jan 29 00:11:29 2002 138@@ -1072,11 +1072,38 @@ 139 esac 140 ;; 141 142+ -thread*) 143+ # DG/UX GCC 2.95.x, 3.x.x rev (DG/UX) links -lthread 144+ # with the switch -threads 145+ if test "$arg" = "-threads"; then 146+ case "$host" in 147+ i[3456]86-*-dgux*) 148+ deplibs="$deplibs $arg" 149+ continue 150+ ;; 151+ esac 152+ fi 153+ ;; 154+ 155+ -pthread*) 156+ # DG/UX GCC 2.95.x, 3.x.x rev (DG/UX) links -lthread 157+ # with the switch -pthread 158+ if test "$arg" = "-pthread"; then 159+ case "$host" in 160+ i[3456]86-*-dgux*) 161+ deplibs="$deplibs $arg" 162+ continue 163+ ;; 164+ esac 165+ fi 166+ ;; 167+ 168 -l*) 169 if test "$arg" = "-lc"; then 170 case "$host" in 171- *-*-cygwin* | *-*-mingw* | *-*-os2* | *-*-beos*) 172+ *-*-cygwin* | *-*-mingw* | *-*-os2* | *-*-beos* | i[3456]86-*-dgux*) 173 # These systems don't actually have c library (as such) 174+ # It is wrong in DG/UX to add -lc when creating shared/dynamic objs/libs 175 continue 176 ;; 177 esac 178@@ -1248,6 +1275,12 @@ 179 temp_deplibs= 180 for deplib in $dependency_libs; do 181 case "$deplib" in 182+ -thread*) 183+ temp_deplibs="$temp_deplibs $deplib" 184+ ;; 185+ -pthread) 186+ temp_deplibs="$temp_deplibs $deplib" 187+ ;; 188 -R*) temp_xrpath=`$echo "X$deplib" | $Xsed -e 's/^-R//'` 189 case " $rpath $xrpath " in 190 *" $temp_xrpath "*) ;; 191@@ -1709,6 +1742,13 @@ 192 done 193 ;; 194 195+ dgux) 196+ # Leave mostly blank for DG/UX 197+ major= 198+ versuffix=".$current.$revision"; 199+ verstring= 200+ ;; 201+ 202 linux) 203 major=.`expr $current - $age` 204 versuffix="$major.$age.$revision" 205@@ -1792,8 +1832,9 @@ 206 207 dependency_libs="$deplibs" 208 case "$host" in 209- *-*-cygwin* | *-*-mingw* | *-*-os2* | *-*-beos*) 210+ *-*-cygwin* | *-*-mingw* | *-*-os2* | *-*-beos* | i[3456]86-*-dgux*) 211 # these systems don't actually have a c library (as such)! 212+ # It is wrong in DG/UX to add -lc when creating shared/dynamic objs/libs 213 ;; 214 *) 215 # Add libc to deplibs on all other systems. 216