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

Post a reply

Smilies
:) :( :oops: :chelo: :roll: :wink: :muza: :sorry: :angel: :read: *x) :clever:
View more smilies

BBCode is ON
[img] is ON
[flash] is OFF
[url] is ON
Smilies are ON

Topic review
   

Expand view Topic review: Warum hat glibc.so schwache Symbole, wenn sie sich nur auf statische Verknüpfungen beziehen?

by Guest » 19 Jan 2025, 18:03

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).

Top