| 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 |  | 
|---|
| 47 | Note (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. | 
|---|