diff options
author | Ulrich Drepper <drepper@redhat.com> | 2001-09-14 04:25:14 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2001-09-14 04:25:14 +0000 |
commit | 23382b36a7f28c5205edd77bacf00fa7cbee9d53 (patch) | |
tree | b963959d3ac8117e7c0fe285f90245c0576afa73 | |
parent | 31a5468806fa75f49f7239f05eb7c857ee8a4191 (diff) | |
download | glibc-23382b36a7f28c5205edd77bacf00fa7cbee9d53.tar.gz |
Update.
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.
-rw-r--r-- | ChangeLog | 10 | ||||
-rw-r--r-- | elf/dl-deps.c | 27 | ||||
-rw-r--r-- | rt/Makefile | 4 |
3 files changed, 22 insertions, 19 deletions
@@ -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. diff --git a/elf/dl-deps.c b/elf/dl-deps.c index 9d91d5ef00..ec61326614 100644 --- a/elf/dl-deps.c +++ b/elf/dl-deps.c @@ -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 diff --git a/rt/Makefile b/rt/Makefile index 47ce1fbe84..df766f46a1 100644 --- a/rt/Makefile +++ b/rt/Makefile @@ -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 |