Subject: Reducing library searches in ld.elf_so
To: None <>
From: Bang Jun-Young <>
List: tech-userlevel
Date: 09/22/2002 23:46:05

I have found that ld.elf_so does quite a number of ununcessary searches
on shared objects already loaded. Searches are quite expensive, so I
think it's one of the reasons why mozilla starts up so slowly. The
following patch fixes the problem, hopefully:

Index: search.c
RCS file: /cvsroot/basesrc/libexec/ld.elf_so/search.c,v
retrieving revision 1.10
diff -u -r1.10 search.c
--- search.c	2000/07/27 10:44:39	1.10
+++ search.c	2002/09/22 14:30:42
@@ -63,9 +63,16 @@
 	const char *pathname;
+	Obj_Entry *obj;
 	struct stat mystat;
 	Elf_Ehdr ehdr;
 	int fd;
+	for (obj = _rtld_objlist->next; obj != NULL; obj = obj->next)
+		if (strcmp(obj->path, pathname) == 0) {
+			dbg(("  %s is already on the list", pathname));
+			return true;
+		}
 	if (stat(pathname, &mystat) == -1 || !S_ISREG(mystat.st_mode))
 		return false;

For comparison, I have uploaded log files at my directory.

with current ld.elf_so:

with the patch applied:

I'd like to hear if the patch is right and does really help reduce
loading time of mozilla binary.


Bang Jun-Young <>