Update.
authorUlrich Drepper <drepper@redhat.com>
Fri, 14 Sep 2001 04:25:14 +0000 (04:25 +0000)
committerUlrich Drepper <drepper@redhat.com>
Fri, 14 Sep 2001 04:25:14 +0000 (04:25 +0000)
2001-09-13  Jakub Jelinek  <jakub@redhat.com>

* elf/dl-deps.c (_dl_map_object_deps): Fix filter handling if filter
is already found earlier in the search scope.

2001-09-12  Jakub Jelinek  <jakub@redhat.com>

* rt/Makefile (LDFLAGS-rt.so): Use shared thread library as librt's
filter.

ChangeLog
elf/dl-deps.c
rt/Makefile

index 253864b..ff3c135 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,13 @@
+2001-09-13  Jakub Jelinek  <jakub@redhat.com>
+
+       * elf/dl-deps.c (_dl_map_object_deps): Fix filter handling if filter
+       is already found earlier in the search scope.
+
+2001-09-12  Jakub Jelinek  <jakub@redhat.com>
+
+       * rt/Makefile (LDFLAGS-rt.so): Use shared thread library as librt's
+       filter.
+
 2001-09-13  Ulrich Drepper  <drepper@redhat.com>
 
        * sysdeps/powerpc/fpu/libm-test-ulps: Adjust expected errors for j0.
index 9d91d5e..ec61326 100644 (file)
@@ -362,11 +362,11 @@ _dl_map_object_deps (struct link_map *map,
                    /* This object is already in the search list we
                       are building.  Don't add a duplicate pointer.
                       Just added by _dl_map_object.  */
-                   for (late = newp; late->next; late = late->next)
+                   for (late = newp; late->next != NULL; late = late->next)
                      if (late->next->map == args.aux)
                        break;
 
-                   if (late->next)
+                   if (late->next != NULL)
                      {
                        /* The object is somewhere behind the current
                           position in the search path.  We have to
@@ -380,9 +380,9 @@ _dl_map_object_deps (struct link_map *map,
                        late->next = late->next->next;
 
                        /* We must move the object earlier in the chain.  */
-                       if (args.aux->l_prev)
+                       if (args.aux->l_prev != NULL)
                          args.aux->l_prev->l_next = args.aux->l_next;
-                       if (args.aux->l_next)
+                       if (args.aux->l_next != NULL)
                          args.aux->l_next->l_prev = args.aux->l_prev;
 
                        args.aux->l_prev = newp->map->l_prev;
@@ -394,21 +394,10 @@ _dl_map_object_deps (struct link_map *map,
                    else
                      {
                        /* The object must be somewhere earlier in the
-                          list.  That's good, we only have to insert
-                          an entry for the duplicate list.  */
-                       orig->next = NULL;      /* Never used.  */
-
-                       /* Now we have a problem.  The element
-                          pointing to ORIG in the list must
-                          point to NEWP now.  This is the only place
-                          where we need this backreference and this
-                          situation is really not that frequent.  So
-                          we don't use a double-linked list but
-                          instead search for the preceding element.  */
-                       late = known;
-                       while (late->next != orig)
-                         late = late->next;
-                       late->next = newp;
+                          list.  Undo to the current list element what
+                          we did above.  */
+                       memcpy (orig, newp, sizeof (*newp));
+                       continue;
                      }
                  }
                else
index 47ce1fb..df766f4 100644 (file)
@@ -54,6 +54,10 @@ include ../Rules
 $(objpfx)librt.so: $(common-objpfx)libc.so $(common-objpfx)libc_nonshared.a \
                   $(shared-thread-library)
 
+ifeq (yes,$(have-thread-library))
+LDFLAGS-rt.so += -Wl,-F,lib$(libprefix)$(patsubst lib%.so,%,$(notdir $(shared-thread-library))).so$($(notdir $(shared-thread-library))-version)
+endif
+
 ifeq (yes,$(build-shared))
 $(addprefix $(objpfx),$(tests)): $(objpfx)librt.so $(shared-thread-library)
 else