Page 1 of 1

Warum hat glibc.so schwache Symbole, wenn sie sich nur auf statische Verknüpfungen beziehen?

Posted: 19 Jan 2025, 18:03
by Guest
Ich habe die folgenden Fragen gelesen:
  • Ist pthread in glibc.so durch ein schwaches Symbol implementiert, um pthread-Stub-Funktionen bereitzustellen? Dies erklärt, dass sich schwache Symbole eher auf statische Verknüpfungen als auf dynamische Linker beziehen.
  • Warum haben einige libc-Symbole eine SCHWACH-Bindung und andere eine GLOBALE?
  • https:/ /en.wikipedia.org/wiki/Weak_symbol
Und ich verstehe immer noch nicht, warum es W für z.B. puts?

Code: Select all

nm -D /lib/x86_64-linux-gnu/libc.so.6  | grep puts
0000000000080e50 W puts@@GLIBC_2.2.5
Vielleicht hängt es irgendwie mit LD_DYNAMIC_WEAK zusammen, aber was bringt es, wenn libc.so sowieso zuletzt vom dynamischen Linker geladen wird, also gibt es kein Problem Überschreiben durch eine andere gemeinsam genutzte Bibliothek: Ich habe überprüft, ob ich sogar T-Symbole von libc.so überschreiben kann (sowohl durch Einfügen alternativer Definitionen in ein Hauptprogramm als auch in eine andere gemeinsam genutzte Bibliothek, die mit dem Hauptprogramm verknüpft ist Programm).