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

262
Vistas
¿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 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