--- /dev/null
+diff -Naur glibc-2.3-20031101.orig/elf/rtld.c glibc-2.3-20031101/elf/rtld.c
+--- glibc-2.3-20031101.orig/elf/rtld.c 2003-11-01 23:47:33.236533536 +0200
++++ glibc-2.3-20031101/elf/rtld.c 2003-11-02 00:19:16.053261424 +0200
+@@ -1237,19 +1237,7 @@
+ while (GL(dl_loaded)->l_searchlist.r_list[i] != &GL(dl_rtld_map))
+ ++i;
+ GL(dl_rtld_map).l_prev = GL(dl_loaded)->l_searchlist.r_list[i - 1];
+- if (__builtin_expect (mode, normal) == normal)
+- GL(dl_rtld_map).l_next = (i + 1 < GL(dl_loaded)->l_searchlist.r_nlist
+- ? GL(dl_loaded)->l_searchlist.r_list[i + 1]
+- : NULL);
+- else
+- /* In trace mode there might be an invisible object (which we
+- could not find) after the previous one in the search list.
+- In this case it doesn't matter much where we put the
+- interpreter object, so we just initialize the list pointer so
+- that the assertion below holds. */
+- GL(dl_rtld_map).l_next = GL(dl_rtld_map).l_prev->l_next;
+-
+- assert (GL(dl_rtld_map).l_prev->l_next == GL(dl_rtld_map).l_next);
++ GL(dl_rtld_map).l_next = GL(dl_rtld_map).l_prev->l_next;
+ GL(dl_rtld_map).l_prev->l_next = &GL(dl_rtld_map);
+ if (GL(dl_rtld_map).l_next != NULL)
+ {