diff options
Diffstat (limited to 'boehm-gc/dyn_load.c')
-rw-r--r-- | boehm-gc/dyn_load.c | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/boehm-gc/dyn_load.c b/boehm-gc/dyn_load.c index f205be2823d..200abde7810 100644 --- a/boehm-gc/dyn_load.c +++ b/boehm-gc/dyn_load.c @@ -400,6 +400,16 @@ GC_bool GC_register_main_static_data() /* It may still not be available in the library on the target system. */ /* Thus we also treat it as a weak symbol. */ #define HAVE_DL_ITERATE_PHDR +#pragma weak dl_iterate_phdr +#endif + +# if (defined(FREEBSD) && __FreeBSD__ >= 7) +/* On the FreeBSD system, any target system at major version 7 shall */ +/* have dl_iterate_phdr; therefore, we need not make it weak as above. */ +#define HAVE_DL_ITERATE_PHDR +#endif + +#if defined(HAVE_DL_ITERATE_PHDR) static int GC_register_dynlib_callback(info, size, ptr) struct dl_phdr_info * info; @@ -441,8 +451,6 @@ static int GC_register_dynlib_callback(info, size, ptr) /* Return TRUE if we succeed, FALSE if dl_iterate_phdr wasn't there. */ -#pragma weak dl_iterate_phdr - GC_bool GC_register_dynamic_libraries_dl_iterate_phdr() { if (dl_iterate_phdr) { |