How do I find out which functions of a shared object are used by a program or an other library? In this specific case, I would like to see which functions in /lib/libgcc1_s.so.1 are used by an other dynamic library. Since they are dynamically linked, objdump -d doesn't resolve the function call addresses. Is there a way short of running the program in a debugger or relinking statically? Thanks,
Luca
Edit:
nm and readelf won't do, I don't need to see which symbols are present in a shared object, but which are actually used in an other object that links to it.
Have you looked at ltrace? It intercepts calls to shared library functions at runtime and prints information about them as they occur.
Since this is a dynamic solution, it wouldn't print any information for a library call made in part of your program that never gets executed. But it might still be helpful depending on your needs.