1 votos

¿Cómo eliminar símbolos locales específicos utilizando `strip` en MacOS?

Usando Linux, puedo eliminar símbolos locales específicos usando strip -N SYM .

Sin embargo, el uso de strip en MacOS, sólo puedo ver las opciones -X y -x que, respectivamente, eliminan todos los símbolos locales que empiezan por L y TODOS los símbolos locales.

Cuando se trata de símbolos globales, puedo utilizar el -R filename para eliminar los símbolos globales en filename .

¿Por qué no puedo eliminar sólo un subconjunto específico de símbolos locales?

2voto

Jose Chavez Puntos 645

No se puede eliminar un subconjunto de símbolos locales sólo porque el programa de tiras no lo soporta. El razonamiento detrás está fuera del alcance de AskDifferent, pero yo asumiría que es simplemente porque la necesidad de hacer no ha surgido para los ingenieros de Apple o los desarrolladores de software de terceros a menudo.

Si todavía quieres hacer esto, es relativamente sencillo mejorar strip para que funcione como la versión de Linux, donde puedes eliminar un único símbolo local con nombre. Descargue el código para strip aquí:

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

A continuación, eche un vistazo al código de la opción -X y cree su propia opción que elimine el símbolo que desee en lugar de los que empiezan por L.

Otros han creado en el pasado versiones más capaces de la tira. Por ejemplo el programa "striptease" aquí:

https://github.com/mackyle/striptease

Allí puede encontrar inspiración para posibles mejoras.

0 votos

Sé que tal vez es off-topic, pero ¿por qué Apple no ha portado simplemente el Linux strip ? ¿Y es el strip desde el repositorio de Github (opensource) anterior el mismo strip que está instalado en mi Macbook o alguna versión de código abierto?

0 votos

Bueno, hay muchas razones. En primer lugar, MacOS utiliza el formato de archivo binario Mach-O y Linux utiliza ELF, por lo que no tiene sentido portarlo. En segundo lugar, el programa de MacOS es probablemente anterior a la versión de Linux en varios años. Linux utilizó el formato a.out los primeros años, y cambió a ELF en 1995. El formato de Mach-O es de aproximadamente 1985, así que los empleados de Apple/NeXT probablemente escribieron su implementación de la tira mucho antes de que existiera la de Linux. Y sí, la tira que he enlazado es la que está instalada en tu MacBook (suponiendo que estés en la misma versión). También es una versión de código abierto...

AppleAyuda.com

AppleAyuda es una comunidad de usuarios de los productos de Apple en la que puedes resolver tus problemas y dudas.
Puedes consultar las preguntas de otros usuarios, hacer tus propias preguntas o resolver las de los demás.

Powered by:

X