This is the mail archive of the libc-hacker@sources.redhat.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]
Other format: [Raw text]

ld.so changes


I've jsut checked in a larger patch to improve ld.so performance.  Not
much, only about 2-5% but it's something.  The binary should be
smaller as well.  The idea is to move all global variables in one
struct.  Only for the SHARED code.  This way there are not dozens of
GOT entries for those variables (only one) and accessing more than one
of the ex-global variabes in one function should ideally be faster
since the address of the struct canbe saved.  Could save one
indirection.  I fear gcc does not the best job in the mement, at least
the 2.96 I use.  But still it's better.

A side effect is also that the global variable handling in more
organized.  Definitions and prototypes are not spread across lots
source files.  This way I've found one completely unused variable.

What is important to know for everybody else is that I broke all
architectures.  All of them (except x86 and IA64) need fixing.  Simply
replace uses of, say, _dl_loaded with GL(dl_loaded).  GL for global.
Remove the initial underscore.  That's it.  Only other tricky thing is
that the startup code _dl_start_user normally accesses a variable
_dl_loaded.  Replace this with _rtld_global and you're set.


Which reminds me.  The IA64 startup code pokes into _dl_argv.  It
should have to do this.  The parameters are all on the stack and the
assembler code should be able to find it.  Please, somebody change
that if possible.  It prevents the _dl_argv variable from going into
this struct.


I'll probably fix Alpha myself tomorrow or when I have time but
everything else must be handled by the appropriate maintainer.

-- 
---------------.                          ,-.   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]