J'ai l'adresse de décalage de tous les symboles (obtenue avec libelf s'exécutant sur son propre binaire .so). Maintenant, à l'exécution, je devrais calculer l'adresse absolutue de tous ces symboles et pour cela je devrais obtenir l'adresse de base (où la bibliothèque partagée est chargée) et faire un calcul:comment la bibliothèque partagée peut-elle obtenir sa propre adresse de base
symbol_address = adresse de base + symbole_offset
Comment une bibliothèque partagée peut-elle obtenir sa propre adresse de base? Sous Windows, j'utiliserais le paramètre passé à DllMain, y a-t-il un équivalent dans Linux?
Vous souhaitez qu'une fonction de bibliothèque calcule l'adresse d'un objet dans cette même bibliothèque? Y at-il une raison pour laquelle vous ne pouvez pas prendre l'adresse de l'objet comme vous le feriez pour une assignation de pointeur? –
J'ai besoin d'itérer tous les symboles d'un binaire et obtenir leur adresse absolue pour d'autres calculs, donc l'accès manuel à chaque objet est presque impossible pour les binaires plus gros (sans parler des symboles de crt). alors maintenant je suis capable d'obtenir les offsets pour tous les symboles avec libelf et ai juste besoin de cette adresse de base pour calculer l'adresse virtuelle. –