X-Git-Url: http://wien.tomnetworks.com/gitweb/?a=blobdiff_plain;f=libgc%2Fos_dep.c;h=7e4e567df177b52cb026e94e40061ca681ea7845;hb=d5c8747c5a0fc194a9d32ccc066e8813c3cd2bb9;hp=e92a9ef636c4ec2dbdb32a3109696df383c6d5f2;hpb=fc4b07f20f9e79fe99d4b520bb5ff8b5e80b10f6;p=mono.git diff --git a/libgc/os_dep.c b/libgc/os_dep.c index e92a9ef636c..7e4e567df17 100644 --- a/libgc/os_dep.c +++ b/libgc/os_dep.c @@ -54,7 +54,7 @@ # endif # include -# if defined(MSWINCE) +# if defined(MSWINCE) || defined (SN_TARGET_PS3) # define SIGSEGV 0 /* value is irrelevant */ # else # include @@ -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) { @@ -504,7 +511,7 @@ void GC_enable_signals(void) # if !defined(PCR) && !defined(AMIGA) && !defined(MSWIN32) \ && !defined(MSWINCE) \ && !defined(MACOS) && !defined(DJGPP) && !defined(DOS4GW) \ - && !defined(NOSYS) && !defined(ECOS) + && !defined(NOSYS) && !defined(ECOS) && !defined(SN_TARGET_PS3) # if defined(sigmask) && !defined(UTS4) && !defined(HURD) /* Use the traditional BSD interface */ @@ -1396,7 +1403,7 @@ int * etext_addr; } # endif -# if defined(FREEBSD) && (defined(I386) || defined(powerpc) || defined(__powerpc__)) && !defined(PCR) +# if defined(FREEBSD) && (defined(I386) || defined(powerpc) || defined(__powerpc__) || defined(__x86_64__)) && !defined(PCR) /* Its unclear whether this should be identical to the above, or */ /* whether it should apply to non-X86 architectures. */ /* For now we don't assume that there is always an empty page after */ @@ -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); @@ -1505,7 +1514,7 @@ void GC_register_data_segments() # if !defined(OS2) && !defined(PCR) && !defined(AMIGA) \ && !defined(MSWIN32) && !defined(MSWINCE) \ - && !defined(MACOS) && !defined(DOS4GW) + && !defined(MACOS) && !defined(DOS4GW) && !defined(SN_TARGET_PS3) # ifdef SUNOS4 extern caddr_t sbrk(); @@ -3702,7 +3711,7 @@ void GC_dirty_init() { mask, GC_ports.exception, EXCEPTION_DEFAULT, - MACHINE_THREAD_STATE + GC_MACH_THREAD_STATE_FLAVOR ); if(r != KERN_SUCCESS) ABORT("task_set_exception_ports failed");