Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/mono/mono.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorZoltan Varga <vargaz@gmail.com>2009-02-24 00:26:49 +0300
committerZoltan Varga <vargaz@gmail.com>2009-02-24 00:26:49 +0300
commit9d5b786e3c8c70c7f721beeaa1dbae8949d7e47b (patch)
tree06a68260260662a440dae27a8de512d840f43390 /libgc/os_dep.c
parent3980eb0b28ecb8380c6f923fb09fca8287200b66 (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.c9
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);