diff options
author | Ivan Maidanski <ivmai@mail.ru> | 2022-03-10 09:18:20 +0300 |
---|---|---|
committer | Ivan Maidanski <ivmai@mail.ru> | 2022-03-10 23:18:52 +0300 |
commit | 0ed6cc4e3155cbe17a8aad0a50fcca7062080830 (patch) | |
tree | 61f90945f28424c9fff1a0313dbeaa94b6a8ea4f /os_dep.c | |
parent | 8bdc557f5c4efa0f510210c897c9a7bf007d6771 (diff) | |
download | bdwgc-0ed6cc4e3155cbe17a8aad0a50fcca7062080830.tar.gz |
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.
Diffstat (limited to 'os_dep.c')
-rw-r--r-- | os_dep.c | 29 |
1 files changed, 12 insertions, 17 deletions
@@ -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) |