]> granicus.if.org Git - gc/commitdiff
2009-02-23 Zoltan Varga <vargaz@gmail.com>
authorZoltan Varga <vargaz@gmail.com>
Mon, 23 Feb 2009 21:26:49 +0000 (21:26 +0000)
committerguest <ivmai@mail.ru>
Fri, 29 Jul 2011 11:31:21 +0000 (15:31 +0400)
* os_dep.c (GC_init_linux_data_start): Avoid the call to GC_find_limit ()
if GC_no_dls is TRUE, as it is not needed and it complicates debugging since
it causes a SIGSEGV.

svn path=/trunk/mono/; revision=127807

ChangeLog
os_dep.c

index cbd82f27c38b0d209f38449c4402884efde8fc6a..d5b6acfbe03052c771ea53ca153270139bfa29d2 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2009-02-23  Zoltan Varga  <vargaz@gmail.com>
+
+       * os_dep.c (GC_init_linux_data_start): Avoid the call to GC_find_limit ()
+       if GC_no_dls is TRUE, as it is not needed and it complicates debugging since
+       it causes a SIGSEGV.
+
 2009-01-18  Zoltan Varga  <vargaz@gmail.com>
 
        * include/private/gcconfig.h: Applied patch from Koushik Dutta
index 39cb513f68f9e55410940d7d80f7a4388c95a810..83b166c44a9c9d8e8f18bf3c3bdad194f9094263 100644 (file)
--- a/os_dep.c
+++ b/os_dep.c
@@ -336,6 +336,13 @@ char *GC_parse_map_entry(char *buf_ptr, word *start, word *end,
   {
     extern ptr_t GC_find_limit();
 
+       if (GC_no_dls)
+               /* 
+                * Not needed, avoids the SIGSEGV caused by GC_find_limit which
+                * complicates debugging.
+                */
+               return;
+
 #   ifdef LINUX
       /* Try the easy approaches first:        */
       if ((ptr_t)__data_start != 0) {
@@ -1449,8 +1456,10 @@ void GC_register_data_segments()
        /* hanging from it.  We're on thin ice here ...                 */
         extern caddr_t sbrk();
 
+       GC_ASSERT(DATASTART);
        GC_add_roots_inner(DATASTART, (char *)sbrk(0), FALSE);
 #     else
+       GC_ASSERT(DATASTART);
        GC_add_roots_inner(DATASTART, (char *)(DATAEND), FALSE);
 #       if defined(DATASTART2)
          GC_add_roots_inner(DATASTART2, (char *)(DATAEND2), FALSE);