Bonjour,
Dans le but de "sécuriser" une dylib, je cherche à masquer les symboles non utilisés à l'extérieur. Pour cela, je me suis aidé de cet article.
J'ai donc ajouté le flag -fvisibility=hidden et -s à la ligne de commande. J'ai forcé certaines à être exportée en C++ en utilisant "extern "C"". Ceci fonctionne bien, après compilation, je peux bien voir la liste des symboles en utilisant l'outil "nm".
Cependant, j'ai un problème avec certaines méthodes en Objective-C, qui sont supprimées de la table des symboles, mais ne devraient pas.
Pour forcer à garder les symboles, j'ai essayé:
Mais le symbole est enlevé. Lorsque j'analyse la table des symboles avec l'outil nm, la méthode "PrepareMechanism" a été enlevée.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 #define EXPORT __attribute__((visibility("default"))) EXPORT @interface PrepareMechanism : AuthMechanism { } - (OSStatus)invoke; @end
J'ai également essayé:
Mais le symbole est également supprimé.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 #pragma GCC visibility push(default) @interface PrepareMechanism : AuthMechanism { } - (OSStatus)invoke; @end #pragma GCC visibility pop
Comment donc faire pour forcer cette méthode à rester visible en compilant avec le flag -fvisibility=hidden?
Merci d'avance pour votre aide.
Salutations
Partager