forked from enlightenment/enlightenment
module loading: use global symbols with BSDs and local with Linux.
The symbol table fix on Linux doesn't translate well on BSD. Adding code to use the older behaviour with the BSD systems and retaining the new preferred behaviour when using dlopen(3) on Linux.
This commit is contained in:
parent
0c61b092bb
commit
28ad7b337c
|
@ -392,7 +392,11 @@ e_module_new(const char *name)
|
|||
m->error = 1;
|
||||
goto init_done;
|
||||
}
|
||||
#if defined(__FreeBSD__) || defined(__DragonFly__) || defined(__OpenBSD__) || defined(__NetBSD__)
|
||||
m->handle = dlopen(modpath, (RTLD_NOW | RTLD_GLOBAL));
|
||||
#else
|
||||
m->handle = dlopen(modpath, (RTLD_NOW | RTLD_LOCAL));
|
||||
#endif
|
||||
if (!m->handle)
|
||||
{
|
||||
snprintf(body, sizeof(body),
|
||||
|
|
|
@ -71,7 +71,11 @@ e_modapi_init(E_Module *m)
|
|||
else
|
||||
snprintf(buf, sizeof(buf), "%s/%s/%s",
|
||||
e_module_dir_get(m), MODULE_ARCH, file);
|
||||
#if defined(__FreeBSD__) || defined(__DragonFly__) || defined(__OpenBSD__) || defined(__NetBSD__)
|
||||
handle = dlopen(buf, RTLD_NOW | RTLD_GLOBAL);
|
||||
#else
|
||||
handle = dlopen(buf, RTLD_NOW | RTLD_LOCAL);
|
||||
#endif
|
||||
if (handle)
|
||||
e_wizard_page_add(handle, file,
|
||||
dlsym(handle, "wizard_page_init"),
|
||||
|
|
Loading…
Reference in New Issue