Fix FirstDLOpenedLinkMap for case libgc not 1st dynamically linked (NetBSD)
authorTsugutomo Enami <tsugutomo.enami@jp.sony.com>
Sun, 2 Nov 2014 07:46:17 +0000 (10:46 +0300)
committerIvan Maidanski <ivmai@mail.ru>
Sun, 2 Nov 2014 07:46:17 +0000 (10:46 +0300)
commit8f6f15858cd5ae6c4f7fb6da935f8276632413cc
treed03c62b3ac40c52f93d20c52dc79da2be57d732e
parentb519011261256f8b5b0f3d9868536271c78b53f5
Fix FirstDLOpenedLinkMap for case libgc not 1st dynamically linked (NetBSD)

Current GC_FirstDLOpenedLinkMap() for NetBSD calls dlinfo(RTLD_SELF,
RTLD_DI_LINKMAP, &lm) to find link_map. So it will find link_map of
libgc.  With guile's case, libgc is link to libguile and libguile is
linked to the guile command, so libgc is not the first one in the
link_map chain.  That is why, data section of libguile, where
scm_protects exists, is not added to GC root and GC_is_visible fails.

* dyn_load.c (GC_FirstDLOpenedLinkMap): Iterate over link_map
(provided by dlinfo(RTLD_SELF)) to return 2nd element instead of the
provided one which might not always belong to libgc (only for NETBSD
and defined RTLD_DI_LINKMAP).
dyn_load.c