diff options
author | hboehm <hboehm@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-03-03 19:34:11 +0000 |
---|---|---|
committer | hboehm <hboehm@138bc75d-0d04-0410-961f-82ee72b054a4> | 2003-03-03 19:34:11 +0000 |
commit | 0c67eea30c500aad72b41360a5268d3190085d08 (patch) | |
tree | 0e084fa019f219c6affbd96447044ea359920119 /boehm-gc/misc.c | |
parent | 0801242f635e1ab529ed092f5a44e63fe933d9f1 (diff) | |
download | gcc-0c67eea30c500aad72b41360a5268d3190085d08.tar.gz |
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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@63727 138bc75d-0d04-0410-961f-82ee72b054a4
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 f6079732fbf..891cdc722b7 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(); |