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é:

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
Mais le symbole est enlevé. Lorsque j'analyse la table des symboles avec l'outil nm, la méthode "PrepareMechanism" a été enlevée.

J'ai également essayé:

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
Mais le symbole est également supprimé.

Comment donc faire pour forcer cette méthode à rester visible en compilant avec le flag -fvisibility=hidden?

Merci d'avance pour votre aide.

Salutations