7a48cdb883
There are several optimizations here: 1) Objects on _rtld_list_main do not participate in the DAG structures at all. This is okay because all symbols must be resolvable at link/load time, and _rtld_list_main is always searched first, so any references from those objects must necessarily be resolved to other objects on _rtld_list_main. (Making this work completely required setting obj->main a bit earlier; hence the RTLD_MAIN hack.) 2) Objects on _rtld_list_main are not put on _rtld_list_global, preventing an extra search. 3) A bit is used to keep track of whether an object is on _rtld_list_global, so we don't have to do a silly linear search. 4) A small attempt is made to prevent objects being put on the DAG lists multiple times (using a silly linear search). The sum of this appears to be a ~10% (.3s) reduction in Mozilla's startup time on my 800MHz box. Also, make sure _rtld_objmain->path is always set, just to make the debug output nicer. |
||
---|---|---|
.. | ||
atrun | ||
comsat | ||
cron | ||
fingerd | ||
ftpd | ||
getNAME | ||
getty | ||
hpropd | ||
identd | ||
kadmind | ||
kpasswdd | ||
ld.aout_so | ||
ld.elf_so | ||
lfs_cleanerd | ||
mail.local | ||
makekey | ||
makewhatis | ||
rexecd | ||
rlogind | ||
rmail | ||
rpc.rquotad | ||
rpc.rstatd | ||
rpc.rusersd | ||
rpc.rwalld | ||
rpc.sprayd | ||
rshd | ||
talkd | ||
telnetd | ||
tftpd | ||
utmp_update | ||
uucpd | ||
Makefile | ||
Makefile.inc |