From 0ed6cc4e3155cbe17a8aad0a50fcca7062080830 Mon Sep 17 00:00:00 2001 From: Ivan Maidanski Date: Thu, 10 Mar 2022 09:18:20 +0300 Subject: Replace GC_init_netbsd_elf with GC_init_linux_data_start on NetBSD (refactoring) * include/private/gc_priv.h [NETBSD && __ELF__] (GC_init_netbsd_elf, GC_find_limit): Do not declare. * include/private/gcconfig.h [NETBSD && __ELF__] (GC_data_start): Likewise. * include/private/gcconfig.h [NETBSD && __ELF__] (DATASTART): Do not define. * include/private/gcconfig.h [NETBSD && __ELF__] (SEARCH_FOR_DATA_START): Define. * misc.c [NETBSD && __ELF__] (GC_init): Do not call GC_init_netbsd_elf. * os_dep.c [NETBSD] (environ): Declare C extern variable only if SEARCH_FOR_DATA_START (regardless of __ELF__). * os_dep.c [SEARCH_FOR_DATA_START && NETBSD] (GC_init_linux_data_start): Pass &environ to GC_find_limit (as in deleted GC_init_netbsd_elf) instead of data_end. * os_dep.c [NETBSD && __ELF__] (GC_data_start, GC_init_netbsd_elf): Do not define. --- os_dep.c | 29 ++++++++++++----------------- 1 file changed, 12 insertions(+), 17 deletions(-) (limited to 'os_dep.c') diff --git a/os_dep.c b/os_dep.c index 25037aa6..d646c6e7 100644 --- a/os_dep.c +++ b/os_dep.c @@ -432,7 +432,11 @@ GC_INNER const char * GC_get_maps(void) # pragma weak data_start extern int __data_start[], data_start[]; EXTERN_C_END -# endif /* LINUX */ +# elif defined(NETBSD) + EXTERN_C_BEGIN + extern char **environ; + EXTERN_C_END +# endif ptr_t GC_data_start = NULL; @@ -469,7 +473,13 @@ GC_INNER const char * GC_get_maps(void) return; } - GC_data_start = (ptr_t)GC_find_limit(data_end, FALSE); +# ifdef NETBSD + /* This may need to be environ, without the underscore, for */ + /* some versions. */ + GC_data_start = (ptr_t)GC_find_limit(&environ, FALSE); +# else + GC_data_start = (ptr_t)GC_find_limit(data_end, FALSE); +# endif } #endif /* SEARCH_FOR_DATA_START */ @@ -499,21 +509,6 @@ GC_INNER const char * GC_get_maps(void) # define sbrk tiny_sbrk #endif /* ECOS */ -#if defined(NETBSD) && defined(__ELF__) - ptr_t GC_data_start = NULL; - - EXTERN_C_BEGIN - extern char **environ; - EXTERN_C_END - - GC_INNER void GC_init_netbsd_elf(void) - { - /* This may need to be environ, without the underscore, for */ - /* some versions. */ - GC_data_start = (ptr_t)GC_find_limit(&environ, FALSE); - } -#endif /* NETBSD */ - #if defined(ADDRESS_SANITIZER) && (defined(UNIX_LIKE) \ || defined(NEED_FIND_LIMIT) || defined(MPROTECT_VDB)) \ && !defined(CUSTOM_ASAN_DEF_OPTIONS) -- cgit v1.2.1