On Thu, Nov 27, 2003 at 11:24:23AM -0500, Robert Watson wrote: [Darwin pre-binding] >presumably applies to other processor architectures. The one thing that >turns me off to this scheme is that I'd like it if we could find a way to >represent this using solely existing BSD/UNIX kernel primitives (mmap, et >al) and userspace, rather than adding special-purpose system calls that >complicated various code paths, and that aren't portable. Compaq/HP Tru64 supports link-time pre-binding, called "Quickstart". To use it, shared libraries are linked to load at mutually exclusive addresses and applications are linked assuming the preferred .so load addresses. At run-time, the rtld verifies that it can map every shared library at its preferred address and that each shared library is the same one the application was linked against (using checksums in the COFF headers). If all this is true, all the relocations are correct and execution starts immediately. If any checks fail, rtld falls back to the traditional check-every-symbol-and-relocation approach. The benefit is very fast start times - not much more overhead than starting a static executable. The disadvantages are: - if any library changes, all dependent applications must be relinked to maintain the fast start. In some cases a utility can be used to re-validate the checksums in the application if the library hasn't grown and is at the same address. - circular shared library dependencies aren't allowed - a writable common list of .so load addresses is needed at .so link time. - having reserved address space for each shared library results in a fragmented process address space and may impact on the space available to the application. For more details see the following links http://h30097.www3.hp.com/docs/base_doc/DOCUMENTATION/V51B_HTML/ARH9VDTE/SHLBCHPX.HTM#using-quickstart http://h30097.www3.hp.com/docs/base_doc/DOCUMENTATION/V51B_HTML/SUPPDOCS/OBJSPEC/NV140XXX.HTM#nav14-54 I don't believe it is feasible to do much about the i386 PIC overheads other than moving to a saner processor architecture. What other techniques are used to improve shared library startup times in other operating systems? PeterReceived on Thu Nov 27 2003 - 22:59:20 UTC
This archive was generated by hypermail 2.4.0 : Wed May 19 2021 - 11:37:31 UTC