From: Ivan Maidanski Date: Wed, 13 Feb 2013 20:47:30 +0000 (+0400) Subject: Allow not to rely on __data_start value (Linux) X-Git-Tag: gc7_4_0~90 X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=d378538072d0dd5c72f5ab8b39bf8b32c9940904;p=gc Allow not to rely on __data_start value (Linux) * os_dep.c (GC_init_linux_data_start): Skip use of [__]data_start if IGNORE_PROG_DATA_START (useful if give wrong value). * os_dep.c (GC_init_linux_data_start): Add assertion checks for [__]data_start to be not greater than _end. --- diff --git a/os_dep.c b/os_dep.c index 563cd6ce..cb3ef43b 100644 --- a/os_dep.c +++ b/os_dep.c @@ -455,14 +455,16 @@ GC_INNER char * GC_get_maps(void) GC_INNER void GC_init_linux_data_start(void) { -# if defined(LINUX) || defined(HURD) +# if (defined(LINUX) || defined(HURD)) && !defined(IGNORE_PROG_DATA_START) /* Try the easy approaches first: */ if ((ptr_t)__data_start != 0) { GC_data_start = (ptr_t)(__data_start); + GC_ASSERT((word)GC_data_start <= (word)_end); return; } if ((ptr_t)data_start != 0) { GC_data_start = (ptr_t)(data_start); + GC_ASSERT((word)GC_data_start <= (word)_end); return; } # endif /* LINUX */