1 konrad.r 1.1 OpenPegasus implements RTLD_GLOBAL when loading providers.
2
3 The significance of this is that the provider writer has to be aware off the following:
4
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 kumpf 1.2 providers. Previously in Pegasus 2.4 the exceptions were only recognized in the first
|
9 konrad.r 1.1 provider loaded while in the other providers they would not.
|
10 kumpf 1.2
|
11 konrad.r 1.1 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 kumpf 1.2 the same namespace, then only the symbolic name solved would be called.
14 Solution:
15 1). Use different namespaces.
16 2). Use symbol hidding for different versions
|
17 konrad.r 1.1 (http://www.gnu.org/software/binutils/manual/ld-2.9.1/html_node/ld_25.html)
18
19 More information is located at http://gcc.gnu.org/faq.html#dso
20
21 - C providers are not affected. Third party libraries linked to the provider libraries
|
22 kumpf 1.2 behave unchanged - they are shared amongst providers.
|
23 konrad.r 1.1
|