Subject: RTLD_GLOBAL breakage in -current
To: None <tech-toolchain@NetBSD.ORG>
From: Todd Vierling <tv@pobox.com>
List: tech-toolchain
Date: 07/14/1998 12:33:35
The changes to the ld.so interface to make RTLD_LOCAL the default breaks
binary compatibility with any program (the big one biting me is perl) which
assumes that the lack of RTLD_GLOBAL in <dlfcn.h> means that it's on by
default.  My dynamic Perl modules which depend on dlopen()ed libraries are
breaking now that I've updated ld.so to -current.  JDK is also breaking, as
is Mozilla.

Charles suggested to me that we could check the _DYNAMIC version number to
determine whether to turn on RTLD_GLOBAL by default.  I'm not quite sure if
the _DYNAMIC number changed, or even where that value is set.

It hit me, as well, that there is likely software out there that assumes
"NetBSD == RTLD_GLOBAL by default."  Since the more "standardized" (is it
standardized?) implementations out there specify that one of either
RTLD_LOCAL or RTLD_GLOBAL should be specified, I'd propose that the default
behavior be changed back to RTLD_GLOBAL, and that RTLD_LOCAL be made into
the flag which changes behavior.

-- 
-- Todd Vierling (Personal tv@pobox.com; Bus. todd_vierling@xn.xerox.com)