* David Haller wrote on Sat, Dec 31, 2005 at 04:43 +0100:
Ich finde es jedenfalls nervig, dass dadurch durch die Hintertuer ein '-static' Binary doch nicht "static" ist... Die Einschraenkungen bei der Namensaufloesung dadurch, dass "nur" libnss_{foo,bar}.a gelinkt werden wuerde ich in Kauf nehmen (bzw. "compile-time-configurable" machen oder so).
libnss_{foo,bar}.a gibt es erst gar nicht, nur .so's und in libc_nonshared.a ist es auch nicht drin. Ja, Du brauchst tatsächlich ein funktionierenden dynaloader, um eine Textdatei wie /etc/hosts zu lesen.
Oder warum man nicht auf einen "Plugin"-Mechanismus zurueckgreift...
Ist libdl ja eigentlich. Je nach dem, wie gethostbyname und Freunde implementiert sind, kommt dann halt NULL zurück - fragt sich nur, ob die Applikationen (Yast, ...) damit umgehen können. Jedenfalls kann man Applikationen schreiben, die damit klarkommen, wir hatten mal sowas, so nach dem Motto "ist Spezial-so nicht da, probieren wird Standard-so, ist auch das nicht da, gibt's schöne Logeinträge etc. Das ist IMHO OK: Die fehlenden Funktionalität fehlt logischerweise, aber auch nicht mehr. Aber ich hab den ganzen Kram eh nicht verstanden (sprich: aus dem Bauch herraus finde ich es einfach falsch) - meiner Meinung nach sollte ein Entwickler entscheiden, ob seine Applikation dynamisch oder statisch gelinkt werden soll, und nicht eine libc_nonshared.a von libnss_*.so abhängen. Ich hab in einer Mail an Philipp schon gealbert, dass man jetzt noch ne Java JVM einbauen sollte, damit der custom-Resolver auch in Java geschrieben werden kann - weil z.B. mein HTTP/SOAP Application Server einen Namesdienst anwendet oder ein multithreaded CORBA Service oder so - beides hängt natürlich vorher vom Stage-1 resolving ab - man muss ja erstmal den Dienst selbst connecten (und natürlich über DNS Namen). Dann dauert eine Auflösung zwar schnell mal > 1000 ms, aber kann dafür viel bunter werden, z.B. mit X11 "Progress-Bar-GUI", wenn DISPLAY gesetzt ist... SCNR.
(da gibt's ja Beispiele, z.B. perl, xmms u.a., wo die plugins (dyn-libs) eben per dlopen geladen werden -- oder beisst sich dlopen generell mit statisch gelinkt?)...
Nein, es funktioniert ja. Ich hab mal ein Testprogramm gemacht, das gethostbyname aufruft und statisch gelinkt ist. Im strace sieht man, dass dann die .so geöffnet wird. Hab jetzt nicht getestet, was passiert, wenn das schiefgeht (also ob da dann einfach NULL zurückkommt, oder ob da vielleicht sogar jemand abort() aufruft oder SIGSEGV verursacht). Wie Du schon geschrieben hast: "durch die Hintertuer", man merkt es erst, wenn man ein Problem mit der libc hat /und/ zur Laufzeit ein gethostbyname oder so braucht. Vermutlich gibt's irgendeinen Grund dafür, google hat mir auf die Schnelle nix erzählt, jedenfalls gefällt es mir nicht, dass ich selbst bei der libc symbolprobleme jetzt erst zur Laufzeit merke und nicht mehr zur Compilezeit. oki, Steffen -- Dieses Schreiben wurde maschinell erstellt, es trägt daher weder Unterschrift noch Siegel.