Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

234
Vistas
uso de comandos de enlazador para análisis estático clang

Estoy desarrollando una herramienta de análisis estático con la biblioteca python-clang-3.6 que me permitiría dibujar gráficos de llamadas de función.

Para crear TranslationUnit correctamente, necesito usar el comando de compilación correspondiente (es decir clang.cindex.Index.parse(c_file, compile_command) ). Sin embargo, creo que para poder interconectar TranslationUnits correctamente, también necesitaría usar comandos de vinculación para saber qué TranslationUnit usa funciones de otras TranslationUnits . Este es un problema en mi proyecto donde en realidad se están construyendo varios binarios con una sola invocación de "hacer" y algunas unidades de TranslationUnits posiblemente tengan nombres de símbolos en conflicto, por lo que no puedo asumir que todos ellos están interconectados.

¿Cuál es la mejor manera de abordar este problema para que mi herramienta sepa qué funciones en el archivo C podrían llamar funciones de otros archivos C?

Por ahora veo dos opciones:

  1. De alguna manera recuperar y usar los comandos del enlazador; Esta opción parece complicada porque no se admite directamente en clang (al menos en la biblioteca clang python); o
  2. En el momento de atravesar el árbol AST de TranslationUnit , recuerde la ubicación de la declaración de la función en el archivo de encabezado. Esta opción parece complicada si, debido al procesamiento de macros, obtengo diferentes números de línea o tengo declaraciones de funciones implícitas para diferentes TranslationUnits .

¿Hay más opciones? ¿Qué opción y por qué elegiría usted?

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

No estoy seguro de si es necesario extraer la información de las fuentes usando clang, o si simplemente puede extraer la información de los archivos binarios resultantes.

Si desea ver los símbolos utilizados en el binario, puede utilizar

 readelf -s <file>

Esto enumera la tabla de símbolos y puede extraer si el binario proporciona el símbolo o si es necesario (importado).

Utilizando

 readelf -d <file> | grep NEEDED

obtienes una lista de bibliotecas dependientes.

over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda