1 |
721 |
jeremybenn |
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 ,
|
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.
|