1 konrad.r 1.1 OpenPegasus implements RTLD_GLOBAL when loading providers.
3 The significance of this is that the provider writer has to be aware off the following:
5 - C++ providers sharing a shared library, such as a third party resource library,
6 is accessible amongst the C++ providers that use it (and have been compiled to use the
7 shared library). Exceptions from such third-party libraries can be recognized in those
8 providers. Previously in Pegasus 2.4 the exceptions were only recognized in the first
9 provider loaded while in the other providers they would not.
11 Problem: Possible collision of symbolic names of third party libraries. For example, if
12 the providers were using multiple third-party libraries with the same symbolic names in
13 the same namespace, then only the symbolic name solved would be called.
15 1). Use different namespaces.
16 2). Use symbol hidding for different versions
19 More information is located at http://gcc.gnu.org/faq.html#dso
21 - C providers are not affected. Third party libraries linked to the provider libraries
22 konrad.r 1.1 behave unchanged - they are shared amongst providers.