User's Manual
+-->libA.so
|
libP.so-->libD------+
| | |
| v v
+-->libQ.so-->libB.so
For PA-32 compatibility mode
The loader uses the following algorithm in PA-32 mode:
if the library has not been visited then
mark the library as visited.
if the library has a dependency list then
traverse the list in reverse order.
Place the library at the head of the load list.
1. mark P, traverse Q
2. mark Q, traverse B
3. mark B, load B
4. load Q
5. traverse D
6. mark D, traverse B
7. B is already marked, so skip B, traverse Q
8. Q is already marked, so skip Q
9. load D
10. mark A, load A
11. load P
The resulting load graph is:
libP-->libA-->libD--> libQ--> libB
The dynamic loader uses the following algorithm in PA-64 and IPF mode:
if the library has not been visited then
mark the library as visited;
append the library at the end of the list.
if the library has a dependency list then
traverse the list in order.
1. mark P, load P
2. traverse P
3. mark A, load A
4. mark D, load D
5. mark Q, load Q
6. traverse D
7. Q is already marked, so skip Q
8. mark B, load B
9. traverse Q
10. B is already marked, so skip B
The resulting load graph is:
libP-->libA-->libD--> libQ--> libB
Placing Loaded Libraries in the Search List
The libraries must be added to the shared library search list once a load graph is formed, thus
binding their symbols to the program. If the initial library is an implicitly loaded library (that is, a
library that is automatically loaded when the program begins execution), the libraries in the load
graph are appended to the library search list. For example, if libP is implicitly loaded, the library
search list is:
Creating Shared Libraries 101