diff options
author | Zoltan Varga <vargaz@gmail.com> | 2009-02-24 00:26:49 +0300 |
---|---|---|
committer | Zoltan Varga <vargaz@gmail.com> | 2009-02-24 00:26:49 +0300 |
commit | 9d5b786e3c8c70c7f721beeaa1dbae8949d7e47b (patch) | |
tree | 06a68260260662a440dae27a8de512d840f43390 /libgc/os_dep.c | |
parent | 3980eb0b28ecb8380c6f923fb09fca8287200b66 (diff) |
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.
svn path=/trunk/mono/; revision=127807
Diffstat (limited to 'libgc/os_dep.c')
-rw-r--r-- | libgc/os_dep.c | 9 |
1 files changed, 9 insertions, 0 deletions
diff --git a/libgc/os_dep.c b/libgc/os_dep.c index 39cb513f68f..83b166c44a9 100644 --- a/libgc/os_dep.c +++ b/libgc/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); |