catalyst_api: load libraries into the global space on ELF platforms
Apple is OK with RTLD_LOCAL
, but on Linux, loading a library with
RTLD_LOCAL
applies to transitive libraries as well. Given the
following linking setup:
libcatalyst-foo.so -> libbar.so -> libshared.so -> libfoo.so -> libshared.so
with RTLD_LOCAL
, libbar.so
and libshared.so
are loaded into a
private namespace. When libfoo.so
is then loaded, it sees that
libshared.so
is private and isn't accessible which causes it to
complain about it missing symbols from libshared.so
. Just use
RTLD_GLOBAL
to avoid this problem.