* decl.c (pop_cp_function_context): Don't call free on a NULL
[official-gcc.git] / boehm-gc / README.linux
blobffe735bc1824145789c692c30d599ea1a547817b
1 See README.alpha for Linux on DEC AXP info.  This file applies to
2 Linux/Intel.
4 Incremental GC is supported.
6 Dynamic libraries are supported on an ELF system.  A static executable
7 should be linked with the gcc option "-Wl,-defsym,_DYNAMIC=0".
9 The collector appears to work with Linux threads.  We have seen
10 intermittent hangs in sem_wait.  So far we have been unable to reproduce
11 these unless the process was being debugged or traced.  Thus it's
12 possible that the only real issue is that the debugger loses
13 signals on rare occasions.
15 The garbage collector uses SIGPWR and SIGXCPU if it is used with
16 Linux threads.  These should not be touched by the client program.
18 To use threads, you need to abide by the following requirements:
20 1) You need to use LinuxThreads (which are included in libc6).
22    The collector relies on some implementation details of the LinuxThreads
23    package.  It is unlikely that this code will work on other
24    pthread implementations (in particular it will *not* work with
25    MIT pthreads).
27 2) You must compile the collector with -DLINUX_THREADS and -D_REENTRANT
28    specified in the Makefile.
30 3) Every file that makes thread calls should define LINUX_THREADS and 
31    _REENTRANT and then include gc.h.  Gc.h redefines some of the
32    pthread primitives as macros which also provide the collector with
33    information it requires.
35 4) Currently dlopen() is probably not safe.  The collector must traverse
36    the list of libraries maintained by the runtime loader.  That can
37    probably be an inconsistent state when a thread calling the loader is
38    is stopped for GC.  (It's possible that this is fixable in the
39    same way it is handled for SOLARIS_THREADS, with GC_dlopen.)