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

265
Views
¿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
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!