1 votes

Comment supprimer des symboles locaux spécifiques en utilisant `strip` sous MacOS ?

Sous Linux, je peux supprimer des symboles locaux spécifiques en utilisant strip -N SYM .

Cependant, l'utilisation de strip sous MacOS, je ne peux voir que les options -X y -x qui respectivement, suppriment tous les symboles locaux qui commencent par L et TOUS les symboles locaux.

Lorsqu'il s'agit de symboles globaux, je peux utiliser la fonction -R filename pour supprimer les symboles globaux dans filename .

Pourquoi ne puis-je pas supprimer un sous-ensemble spécifique de symboles locaux uniquement ?

2voto

Jose Chavez Points 645

Vous ne pouvez pas supprimer un sous-ensemble de symboles locaux uniquement parce que le programme de bande ne le supporte pas. Le raisonnement derrière est hors de portée d'AskDifferent, mais je suppose que c'est simplement parce que le besoin de le faire ne s'est pas présenté assez souvent pour les ingénieurs d'Apple ou les développeurs de logiciels tiers.

Si vous voulez toujours le faire, il est relativement simple d'améliorer strip pour qu'il fonctionne comme la version Linux, où vous pouvez dépouiller un symbole local unique et nommé. Téléchargez le code de strip ici :

https://github.com/opensource-apple/cctools/blob/master/misc/strip.c

Jetez ensuite un coup d'œil au code de l'option -X, et créez votre propre option qui supprime le symbole que vous voulez au lieu de ceux qui commencent par L.

D'autres ont par le passé créé des versions plus performantes de strip. Par exemple le programme "striptease" ici :

https://github.com/mackyle/striptease

Vous pouvez y trouver de l'inspiration pour d'éventuelles améliorations.

0 votes

Je sais que c'est peut-être hors sujet, mais pourquoi Apple n'a-t-elle pas tout simplement porté le système Linux strip ? Et est-ce que le strip à partir du dépôt Github (opensource) ci-dessus, le même strip qui est installé sur mon Macbook ou une version opensource ?

0 votes

Il y a de nombreuses raisons à cela. Tout d'abord, MacOS utilise le format de fichier binaire Mach-O et Linux utilise ELF - il n'y a donc aucun intérêt à le porter. Deuxièmement, le programme MacOS est probablement antérieur de plusieurs années à la version Linux. Linux a utilisé le format a.out les premières années, puis est passé à ELF en 1995. Le format Mach-O date d'environ 1985, donc les employés d'Apple/NeXT ont probablement écrit leur implémentation du strip bien avant que celle de Linux n'existe. Et oui, le strip que j'ai mis en lien est celui qui est installé sur votre MacBook (en supposant que vous soyez sur la même version). Il s'agit également d'une version open source...

LesApples.com

LesApples est une communauté de Apple où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres utilisateurs d'appareils Apple, poser vos propres questions ou résoudre celles des autres.

Powered by:

X