51488
|
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.
|