Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

243
Visualizações
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 Respostas
Responde à pergunta

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda