diff options
author | Hans Boehm <Hans_Boehm@hp.com> | 2003-03-03 19:34:11 +0000 |
---|---|---|
committer | Hans Boehm <hboehm@gcc.gnu.org> | 2003-03-03 19:34:11 +0000 |
commit | ebcc6a7ec08a1e7cc2cf1d2a06daebbb904bde25 (patch) | |
tree | 0e084fa019f219c6affbd96447044ea359920119 /boehm-gc/misc.c | |
parent | b22b239e5a587d473731560ea5d05cba42bdd4a7 (diff) | |
download | gcc-ebcc6a7ec08a1e7cc2cf1d2a06daebbb904bde25.zip gcc-ebcc6a7ec08a1e7cc2cf1d2a06daebbb904bde25.tar.gz gcc-ebcc6a7ec08a1e7cc2cf1d2a06daebbb904bde25.tar.bz2 |
mark_rts.c (GC_cond_register_dynamic_libraries): add.
2003-03-03 Hans Boehm <Hans.Boehm@hp.com>
* mark_rts.c (GC_cond_register_dynamic_libraries): add.
(GC_push_roots): explicitly mark free list headers, register
dynamic libraries only if !REGISTER_LIBRARIES_EARLY.
* alloc.c (GC_stopped_mark): Conditionally call
GC_cond_register_dynamic_libraries().
(GC_collect_a_little_inner, GC_try_to_collect_inner): Check GC_dont_gc.
* dyn_load.c (GC_register_main_static_data): define.
(GC_register_dyn_libraries (Linux /proc, Linux ELF versions)):
no longer skip main data.
* misc.c (GC_REGISTER_MAIN_STATIC_DATA): define.
(GC_init_inner): Make main data registration conditional.
* include/private/gc_priv.h (GC_register_main_static_data): declare.
* include/private/gcconfig.h (REGISTER_LIBRARIES_EARLY): define
for LINUX.
From-SVN: r63727
Diffstat (limited to 'boehm-gc/misc.c')
-rw-r--r-- | boehm-gc/misc.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/boehm-gc/misc.c b/boehm-gc/misc.c index f607973..891cdc7 100644 --- a/boehm-gc/misc.c +++ b/boehm-gc/misc.c @@ -75,6 +75,14 @@ #undef STACKBASE #endif +/* Dont unnecessarily call GC_register_main_static_data() in case */ +/* dyn_load.c isn't linked in. */ +#ifdef DYNAMIC_LOADING +# define GC_REGISTER_MAIN_STATIC_DATA() GC_register_main_static_data() +#else +# define GC_REGISTER_MAIN_STATIC_DATA() TRUE +#endif + GC_FAR struct _GC_arrays GC_arrays /* = { 0 } */; @@ -572,7 +580,7 @@ void GC_init_inner() GC_init_win32(); # endif # if defined(SEARCH_FOR_DATA_START) - GC_init_linux_data_start(); + if (GC_REGISTER_MAIN_STATIC_DATA()) GC_init_linux_data_start(); # endif # if (defined(NETBSD) || defined(OPENBSD)) && defined(__ELF__) GC_init_netbsd_elf(); @@ -619,7 +627,7 @@ void GC_init_inner() /* Add initial guess of root sets. Do this first, since sbrk(0) */ /* might be used. */ - GC_register_data_segments(); + if (GC_REGISTER_MAIN_STATIC_DATA()) GC_register_data_segments(); GC_init_headers(); GC_bl_init(); GC_mark_init(); |