Subject: Re: New ld.elf_so from FreeBSD
To: Charles Hannum <abuse@spamalicious.com>
From: Jason R Thorpe <thorpej@wasabisystems.com>
List: tech-toolchain
Date: 09/05/2002 12:44:17
On Thu, Sep 05, 2002 at 02:24:36AM +0000, Charles Hannum wrote:

 > * C++ code (and thus GNOME, KDE, mozilla, etc.) starts up much faster.

junyoung has a patch that addresses this problem.

 > * The Alpha platform attains reasonable performance, where right now
 >   things like the XF86 4 server are basically unusable.

What you've neglected to tell the list is that you have already patched
our ld.elf_so to fix this problem, but have not yet checked it in to the
tree.

 > * The occasional `undefined PLT symbol' problems (on Alpha) are gone.

Again, you neglected to tell the list that you debugged, and fixed, this
already in our ld.elf_so.

 > * Multi-threading support (i.e. r/w locking for dl*() calls) is added.

I think there are some problems with this.

	1. We've been talking a lot about performance of the dynamic
	   linker lately.  The r/w locking is totally unnecessary for
	   non-threaded applications.  Making non-threaded applications
	   pay the penalty of using them seems to go against the spirit
	   of improving performance.

	2. Since not all platforms have the required atomic primitives
	   to support the r/w locking, the expense incurred by using them
	   for non-threaded apps might, in fact, be substantial (e.g.
	   unnecessarily making all processes on that platform use RAS,
	   for example).

I agree that we need r/w locking support in our rtld, but I think the
problem is big enough that we need to think about it a while longer before
simply adopting a solution from some other system which doens't run on
as many platforms as we run on.

-- 
        -- Jason R. Thorpe <thorpej@wasabisystems.com>