Subject: Dynamic Linker - PLT unresolved symbols
I am creating a shared library for use in a Java application.
I have a Fortran algorithm consisting of a number of subroutines
which will be call by a C wrapper.
After making a shared library of all these routines, I wanted to
test this library.
All modules were compiled with a -g and -KPIC option. The library
was created using the f77 linker so that all Fortran symbols were
resolved. Linker options -g, -G and -nolib were invoked and all
libraries were linked in after all application modules were loaded.
I have a test program in C that will call the C wrapper and exercise
the
algorithms. The algorithm makes use of client/server calls which are
found in the /usr/lib/libnsl.so.1 library.
Using ldd on the test program shows that /usr/lib/libnsl.so.1 is
preloaded.
The object of interest is the function 'clnt_create'.
I can run this test program through the de* and successfully access
all the Fortran modules in the new shared library.
One of the Fortran modules calls 'clnt_create'. This symbol is
unresolved in
the Procedure Linkage table (PLT) even though this library
(/usr/lib/libnsl.so.1)
was preloaded. An 'nm' on the library shows that the symbol is defined.
Can anyone give my any clues as to why the PLT isn't correct and why I
can't
open the 'clnt_create' object. I'm probably going to have the same
problem with
other similar system calls.
I would gratefully appreciate any insights.
Peg Mahoney
p.s. platform is SunOS 5.5.1