aboutsummaryrefslogtreecommitdiff
path: root/boehm-gc/README.linux
diff options
context:
space:
mode:
authorno-author <no-author@gcc.gnu.org>1999-06-24 20:15:28 +0000
committerno-author <no-author@gcc.gnu.org>1999-06-24 20:15:28 +0000
commitf913cc48400b8d9703c882a4a80f93acb609b48d (patch)
tree284712e380cc35e2fac03a7aa252744613a6b8ef /boehm-gc/README.linux
parent25fb9bb53dbc1881bb487bbd14da7197aa4d6c7f (diff)
This commit was manufactured by cvs2svn to create branch
'libgcj-2_95-branch'. git-svn-id: https://gcc.gnu.org/svn/gcc/branches/libgcj-2_95-branch@27730 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'boehm-gc/README.linux')
-rw-r--r--boehm-gc/README.linux39
1 files changed, 39 insertions, 0 deletions
diff --git a/boehm-gc/README.linux b/boehm-gc/README.linux
new file mode 100644
index 00000000000..ffe735bc182
--- /dev/null
+++ b/boehm-gc/README.linux
@@ -0,0 +1,39 @@
+See README.alpha for Linux on DEC AXP info. This file applies to
+Linux/Intel.
+
+Incremental GC is supported.
+
+Dynamic libraries are supported on an ELF system. A static executable
+should be linked with the gcc option "-Wl,-defsym,_DYNAMIC=0".
+
+The collector appears to work with Linux threads. We have seen
+intermittent hangs in sem_wait. So far we have been unable to reproduce
+these unless the process was being debugged or traced. Thus it's
+possible that the only real issue is that the debugger loses
+signals on rare occasions.
+
+The garbage collector uses SIGPWR and SIGXCPU if it is used with
+Linux threads. These should not be touched by the client program.
+
+To use threads, you need to abide by the following requirements:
+
+1) You need to use LinuxThreads (which are included in libc6).
+
+ The collector relies on some implementation details of the LinuxThreads
+ package. It is unlikely that this code will work on other
+ pthread implementations (in particular it will *not* work with
+ MIT pthreads).
+
+2) You must compile the collector with -DLINUX_THREADS and -D_REENTRANT
+ specified in the Makefile.
+
+3) Every file that makes thread calls should define LINUX_THREADS and
+ _REENTRANT and then include gc.h. Gc.h redefines some of the
+ pthread primitives as macros which also provide the collector with
+ information it requires.
+
+4) Currently dlopen() is probably not safe. The collector must traverse
+ the list of libraries maintained by the runtime loader. That can
+ probably be an inconsistent state when a thread calling the loader is
+ is stopped for GC. (It's possible that this is fixable in the
+ same way it is handled for SOLARIS_THREADS, with GC_dlopen.)