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