Merge pull request #12860 from monojenkins/backport-pr-12856-to-2019-02
[mono-project.git] / libgc / README.Mono
blob559d3ec493225613625077655994455c6dfca6c5
1 This is a modified version of Boehm GC 6.1 for Mono.
3 * There are two main changes to the upstream version:
5   - Makefile changes:
7     libgc has a lot of configurable options which are AC_DEFINE()d in its
8     configure.ac.  To make it easier to build and bundle it with Mono, I
9     replaced most of the orignal configure.ac and the makefiles with custom
10     versions which just define what we actually need for Mono.
12     This means that you can just run configure in this directory and it'll
13     do the right thing.  Later on, we'll just include this package in Mono
14     and use AC_CONFIG_SUBDIRS().
16   - Threading changes
18     The original libgc has several *_threads.c files for each possible threading
19     implementation.
21     For Mono, we're using a vtable
23         typedef struct
24         {
25                 void (* initialize) (void);
26                 void (* lock) (void);
27                 void (* unlock) (void);
28                 void (* stop_world) (void);
29                 void (* push_thread_structures) (void);
30                 void (* push_all_stacks) (void);
31                 void (* start_world) (void);
32         } GCThreadFunctions;
34         extern GCThreadFunctions *gc_thread_vtable;
36     and a mono_threads.c file.
38   - Deleted files
40     Some files from the original distribution have been deleted in this version.
41     These are files which weren't actually linked into the library so they were not
42     needed.  When importing a new upstream version, you can either keep them removed
43     or just replace them with their new upstream versions.
45   - include/private/gc_locks.h
47     This file has been replaced with a custom version.
49     When importing a new upstream version, keep this custom version, ie. don't import the
50     new upstream gc_locks.h.
52 * Importing a new upstream version
54   This is really simple.  Just import the new version to the vendor branch (LIBGC) in CVS
55   and then merge it into the main trunk.
57   To get a diff to the original version:
59         cvs diff -u -r LIBGC
61   When importing new upstream versions, don't import the new configure.ac or any of the
62   Makefile.am's; they've been replaced by custom versions.  Just import all the new source
63   files and it should be fine.
66 April 4th, 2003
67 Martin Baulig <martin@ximian.com>