Applied patch from Burkhard Linke <blinke@cebitec.uni-bielefeld.de>. Add support...
authorZoltan Varga <vargaz@gmail.com>
Thu, 27 Jan 2011 14:32:46 +0000 (15:32 +0100)
committerZoltan Varga <vargaz@gmail.com>
Thu, 27 Jan 2011 14:34:36 +0000 (15:34 +0100)
configure.in
mono/metadata/boehm-gc.c

index 8ab977a07d0d909c510d6ffd1a7cfccf0d8cf010..5cd56ae3d95ad53b1019c085867528060d51b5ff 100644 (file)
@@ -851,6 +851,14 @@ case "x$gc" in
                if test "x$found_gc_enable" = "xyes"; then
                        BOEHM_DEFINES="-DHAVE_GC_ENABLE $BOEHM_DEFINES"
                fi
+
+               # check whether we need to explicitly allow
+                       # thread registering
+                       AC_CHECK_LIB(gc, GC_allow_register_threads, found_allow_register_threads="yes",,$libdl)
+                       if test "x$found_allow_register_threads" = "xyes"; then
+                        AC_DEFINE(HAVE_GC_ALLOW_REGISTER_THREADS, 1, [GC requires thread registration])
+                       fi
+
                ;;
 
        xincluded)
index ac327c5adeea78dffa34d5497f2e7ed7b8ad5fb3..5484e689616c1fd52702d3dc16a0652a3a887298 100644 (file)
@@ -132,6 +132,10 @@ mono_gc_base_init (void)
        GC_init_gcj_malloc (5, NULL);
 #endif
 
+#ifdef HAVE_GC_ALLOW_REGISTER_THREADS
+       GC_allow_register_threads();
+#endif
+
        if ((env = getenv ("MONO_GC_PARAMS"))) {
                char **ptr, **opts = g_strsplit (env, ",", -1);
                for (ptr = opts; *ptr; ++ptr) {