summaryrefslogtreecommitdiff
path: root/os_dep.c
diff options
context:
space:
mode:
Diffstat (limited to 'os_dep.c')
-rw-r--r--os_dep.c29
1 files changed, 12 insertions, 17 deletions
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)