Hallo,
ich suche eine Moeglichkeit, zur Laufzeit eine Liste aller Symbole zu
erhalten, die mittels lib=dlopen("libTest.so",RTLD_LAZY); geladen
wurden.
Mit fun=dlsym(lib,"TestFunction"); kann ich zwar einzelne Symbole
abfragen, aber wie finde ich heraus, welche noch vorhanden sind?
Das (linux) Tool 'nm' gibt mir zwar diese Information (nm -D
libTest.so), aber es muss doch auch aus dem laufenden Programm heraus
moeglich sein, ohne nm auszufuehren und dessen Ausgabe muehsam zu
interpretireren?
Danke
Vlad
Gast
#985225
Interessant, kann vielleicht nützlich sein. Folgendes habe ich gefunden, eventuell kommst damit weiter: dl_iterate_phdr - walk through list of shared objects Schau Dir mal die manpage dazu an, da ist auch ein Beispiel dabei. Würde mich interessieren was dabei rauskommt. Gruß Bobby
>dl_iterate_phdr - walk through list of shared objects
Ja, das Beispiel habe ich auch gefunden und ausprobiert. Es listet alle
"shared objects" auf (das sind anscheinend die libraries selbst), die
das Programm linkt. Damit entspricht es 'ldd', es listet aber nicht die
Funktionen (und sonstigen Symbole) jeder einzelnen Library auf.
Die FreeBSD-manpage von dlopen(3) verweist auf dlinfo(3), das mir auf den ersten Blick danach aussieht, als würde es die gewünschten Informationen liefern können (request RTLD_DI_LINKMAP). Gibt's das bei Linux auch?
Antwort schreiben
Bitte melde dich an, um einen Beitrag zu schreiben.