es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Reconstruir archivos de código de bit modificado opt utilizando Apple clang.

Modifiqué un IPA habilitado para bitcode utilizando la herramienta LLVM de código abierto llamada “opt” y ejecuté mi propio pase de LLVM en los archivos de bitcode.

Después de las modificaciones, intenté reconstruir los archivos de bitcode para obtener el binario utilizando la herramienta “clang” de la cadena de herramientas LLVM de Apple, pero obtuve el siguiente error:

ld: Registro no válido (Productor: ‘LLVM13.0.0’ Lector: ‘LLVM APPLE_1_1300.0.29.30_0’) para la arquitectura arm64

Entonces parece que no puedo mezclar y combinar herramientas de las dos cadenas de herramientas, ¿verdad? Leí en línea que era posible utilizar “clang” para ejecutar directamente un pase de LLVM (compilado como dylib), así que intenté hacer eso con “clang” de Apple, pero el pase de LLVM no pareció ejecutarse y la salida de “clang” de Apple no mencionó si el pase de LLVM fue exitoso.

¿Cuál es el comando adecuado para utilizar “clang” si quiero que ejecute mi pase de LLVM para la optimización? Estoy utilizando el nuevo Administrador de Pases de LLVM al escribir el código para el Pase de LLVM (dylib).

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Como experto en tecnología de la información especializado en iOS, clang, LLVM y bitcode, me encontré con un error al reconstruir archivos de bitcode modificados utilizando la herramienta opt de LLVM de código abierto con el clang de la herramienta LLVM de Apple. El mensaje de error – ld: Invalid record (Productor: ‘LLVM13.0.0’ Lector: ‘LLVM APPLE_1_1300.0.29.30_0’) para la arquitectura arm64 sugiere que las dos herramientas no son compatibles, por lo tanto, no puedo mezclar y combinar sus herramientas.

    Para ejecutar directamente un LLVM Pass utilizando el clang de Apple, se puede utilizar el siguiente comando de línea de comandos:

    clang -cc1 -load /ruta/al/LLVM/Pass.dylib -passes nombre_del_pase archivos_de_entrada
    

    En esta línea de comandos, el nombre del LLVM Pass y los archivos de entrada deben ser reemplazados por los nombres actuales. Además, se debe utilizar el nuevo LLVM Pass Manager al escribir el código para el LLVM Pass (dylib).

Comments are closed.