This is the mail archive of the libc-hacker@sourceware.cygnus.com mailing list for the glibc project.

Note that libc-hacker is a closed list. You may look at the archives of this list, but subscription and posting are not open.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

everything is broken


(except for x86)

You will certainly be delighted to hear that I've broken every single
architecture and repaired only x86.  The background.

ld.so was written at a time when stupid programmers had not yet
infected it.  Especially the constructor/destructor area was left up
to the implementor to make it as fast as possible.

Recent ELF specs changed this and the constructors and destructors now
have to run in an order which takes the dependencies into account.  I.e.,
if object A depends on B the constructor of B must run before that of A.
The reverse is true for destructors.

This cannot be resolved at link time therefore we have to do the
topological sorting at runtime which is of course slowing down the
system.  Even worse: since the user can load object dynamically which
introduce additional dependencies the order for the destructors is not
simply that of the constructors in reverse.  No, we have to sort
twice.


Anyway, I've implemented this yesterday (this is why nothing else
happened) and the results are checked in.  While doing this I cleaned
up the startup code a lot.  If you take a look at the RTLD_START macro
in d-machine.h you'll see that it's much nicer.  This is achieved by
pushing more code from asm to C.  This is the part which is broken for
all architectures.  But the benefits should be obvious.  For instance,
the ugly hack in init-first.h is gone.

I'll hopefully later today add some tests for the new functionality.
For now please run whatever tests you have and please fix all the
different architectures.

-- 
---------------.      drepper at gnu.org  ,-.   1325 Chesapeake Terrace
Ulrich Drepper  \    ,-------------------'   \  Sunnyvale, CA 94089 USA
Red Hat          `--' drepper at redhat.com   `------------------------

Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]