Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

242
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!