Skip site navigation (1)Skip section navigation (2)
Date:      Fri, 28 Nov 2003 10:16:49 +0000
From:      Doug Rabson <dfr@nlsystems.com>
To:        Peter Jeremy <peterjeremy@optushome.com.au>
Cc:        freebsd-current@freebsd.org
Subject:   Re: Apples linking
Message-ID:  <1070014609.42990.1.camel@herring.nlsystems.com>
In-Reply-To: <20031128075911.GB23322@server.vk2pj.dyndns.org>
References:  <3FC60848.5030908@catpa.com> <Pine.NEB.3.96L.1031127101515.30532A-100000@fledge.watson.org> <20031128075911.GB23322@server.vk2pj.dyndns.org>

next in thread | previous in thread | raw e-mail | index | archive | help
On Fri, 2003-11-28 at 07:59, Peter Jeremy wrote:
> 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.

This is approximately what happens on Win32 too. When developing DLLs
for windows, I tend to manually pick a load address at link time. This
is messy but it helps load time a lot for large projects.




Want to link to this message? Use this URL: <https://mail-archive.FreeBSD.org/cgi/mid.cgi?1070014609.42990.1.camel>