From d378538072d0dd5c72f5ab8b39bf8b32c9940904 Mon Sep 17 00:00:00 2001 From: Ivan Maidanski Date: Thu, 14 Feb 2013 00:47:30 +0400 Subject: [PATCH] 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. --- os_dep.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) 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 */ -- 2.50.1