2016-05-05 3 views

Antwort

2

Die dlopen Rückgabe ist ein undurchsichtiger void * Zeiger, aber es ist wirklich ein Zeiger auf eine struct link_map.

Sie müssen die Quelle zu glibc bekommen. Suchen Sie im Unterverzeichnisund dann in der Datei link.h nach einer Definition von struct link.

Aber während Sie dort sind, schauen Sie sich ein wenig um, und sehen Sie, wie viel Code es gibt, implementieren Sie dlopen, dlsym, et. al. Es gibt eine Reihe anderer Strukturen, mit denen Sie sich befassen müssen. Dies ist nur die Spitze des Eisbergs.

Für was ich versuche zu erreichen, habe ich Beispielcode gesehen, der eine Pseudo-Struktur verwendet, um richtige Speicherausrichtung und Zugriffselemente zu erzwingen.

Es könnte helfen, wenn Sie erklären, was Sie erreichen wollen: „Das sind nicht die Droiden Sie suchen“

Ich bin mir nicht sicher, was Sie richtige bedeuten durch Erzwingen Speicherausrichtung für den Zugriff auf Mitglieder. Warum musst du die Ausrichtung (und was) erzwingen? Und auf welche Mitglieder beziehen Sie sich?

+0

Ja, es ist ein Zeiger auf 'struct link_map', was ich wollte, um die ganze Liste von geteilten Objekten zu durchlaufen. Vielen Dank. – John

+1

Habe einfach mehr geprüft. 'link.h' [und' elf.h'] befinden sich in '/ usr/include', also könnte es einfacher sein. Dies bedeutet auch, dass, während der ursprüngliche Zeiger undurchsichtig ist, das Neuschreiben eine etwas (d. H. Auf Expertenebene) unterstützte Aktion ist. Siehe auch 'dl_interate_phdr'. Auf jeden Fall hat Glibcs ​​Elf-Subdir eine Menge Code, der als Leitfaden dienen kann. –

+0

Excellent thanks 'dl_iterate_phdr' ist genau das, was ich brauche. – John

1

Ob die filename ist null oder nicht, dlopen gibt einen undurchsichtigen Griff, der an dlsym und dlclose geben werden kann. Sie sollten nicht versuchen, die Daten des Griffs selbst zu überprüfen.

+0

Warum nicht? Für das, was ich zu erreichen versuche, habe ich Beispielcode gesehen, der eine Pseudo-Struktur verwendet, um korrekte Speicherausrichtung und Zugriffselemente zu erzwingen. Ich bin gespannt, wie die offizielle Struktur aussieht, da ich dies lieber verwenden würde. – John

Verwandte Themen