use RTLD_LOCAL when loading extensions on Mac OS

It appears that Mac OS wants `RTLD_LOCAL` in the dlopen() call,
otherwise dlsym() searches through all previously open shared objects
– even though dlopen() is given a specific library handle.
This commit is contained in:
Matthew Flatt 2017-02-25 13:57:48 -07:00
parent 3c563484c6
commit a7ac75f15d

View File

@ -47,7 +47,9 @@ static Boolean get_ext_file_spec(FSSpec *spec, const char *filename );
static Boolean load_ext_file_spec(FSSpec *spec, CFragConnectionID *connID);
#endif
#if defined(RTLD_NOW)
#if defined(OS_X)
# define DLOPEN_MODE (RTLD_NOW | RTLD_LOCAL)
#elif defined(RTLD_NOW)
# define DLOPEN_MODE (RTLD_NOW)
#elif defined(RTLD_LAZY)
# define DLOPEN_MODE (RTLD_LAZY)