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

257
Visualizações
¿Los símbolos locales en la sección DYNSYM de ELF no son realmente locales? ¿Como decir?

Estoy tratando de implementar la resolución de símbolos para mi herramienta de verificación de coherencia de enlaces (análoga a revdep-rebuild de Gentoo, pero para Arch).

No hay símbolos con bind=STB_LOCAL en mi sistema (artix de escritorio), pero alrededor del 12% (381522) con versym=VER_NDX_LOCAL ; la mayoría de ellos (379189) están en section=SHN_UNDEF .

La mayoría de estos símbolos "locales indefinidos", ¡pero no todos! - en realidad son resueltos por otras bibliotecas. El patrón común es que los símbolos locales en /usr/lib/xxx/.../*.so que en realidad hacen referencia a símbolos globales en /usr/lib/xxx.so (y en sus bibliotecas NECESARIAS y, a veces, en otras bibliotecas cargadas dinámicamente). Supongo que estos /usr/lib/xxx/.../*.so se cargan dinámicamente usando dlopen() por /usr/lib/xxx.so como complementos.

Para asegurarme de que no haya símbolos huérfanos en el sistema, puedo especificar que /usr/lib/xxx.so es NECESARIO lib para todos /usr/lib/xxx/.../*.so a través del archivo de configuración de mi herramienta:

 addLib=/usr/lib/bash/** /usr/bin/bash addLib=/usr/lib/hwloc/** /usr/lib/libhwloc.so ... addLib=/usr/lib/xorg/modules/** /usr/lib/Xorg

( ** significa "incluidos los subdirectorios", es decir, la última línea también se aplica a los modules/drivers ). Actualmente, mi configuración tiene 60 de esas líneas.

El problema es que 50 de estos símbolos "locales indefinidos" no hacen referencia a nada (no puedo encontrar el símbolo exportado correspondiente en el sistema), pero están en la section=SHN_UNDEF y no difieren de los símbolos locales "resolvibles" en ningún otro forma en que pude verificar. La mayoría de ellos están en nVidia blob /usr/lib/xorg/modules/drivers/nvidia_drv.so :

  • por ejemplo, la mayoría de los símbolos mi* se resuelven en /usr/lib/Xorg (por ejemplo, miPolyRectangle );
  • pero algunos son huérfanos (por ejemplo miRegionCreate ).

Me dijeron que estos símbolos huérfanos se eliminaron hace mucho tiempo de X11 lib y ahora están en línea, pero ¿cómo puedo distinguirlos de los que debería resolver? ¿Cómo los distingue Loader? O si no es así, lo que significa que simplemente ignora silenciosamente los símbolos "indefinidos locales" que no pudo resolver (lo cual es totalmente extraño), entonces yo también debería hacerlo, dejando así el 12% de los símbolos en el sistema sin marcar (y terminando con mucho más pequeño archivo de configuración, hablando del lado positivo). Y podría ser prácticamente irrelevante, pero para una mejor comprensión: ¿por qué estos símbolos en línea están en la sección DYNSYM?

Gracias por leer hasta ahora. :)

over 4 years ago · Santiago Trujillo
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