diff options
author | Ulrich Drepper <drepper@redhat.com> | 2007-02-12 15:17:30 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2007-02-12 15:17:30 +0000 |
commit | 2f978feb67c29ce3eb866aa719ed75ebdaabf4d1 (patch) | |
tree | f61c658fbc5aa098e4fc86b67ac7a2d323793020 /elf | |
parent | 5ed61e0fd6177e6ef6054a15ca04d0f5e90851d8 (diff) | |
download | glibc-2f978feb67c29ce3eb866aa719ed75ebdaabf4d1.tar.gz glibc-2f978feb67c29ce3eb866aa719ed75ebdaabf4d1.tar.xz glibc-2f978feb67c29ce3eb866aa719ed75ebdaabf4d1.zip |
* elf/rtld.c (RESOLVE_MAP): Always return bootstrap_map reference.
* elf/Makefile ($(objpfx)ld.so): Check that ld.so has no undefined references.
Diffstat (limited to 'elf')
-rw-r--r-- | elf/Makefile | 3 | ||||
-rw-r--r-- | elf/rtld.c | 9 |
2 files changed, 7 insertions, 5 deletions
diff --git a/elf/Makefile b/elf/Makefile index afebaec1ec..1c5b16908a 100644 --- a/elf/Makefile +++ b/elf/Makefile @@ -1,4 +1,4 @@ -# Copyright (C) 1995-2004, 2005, 2006 Free Software Foundation, Inc. +# Copyright (C) 1995-2004, 2005, 2006, 2007 Free Software Foundation, Inc. # This file is part of the GNU C Library. # The GNU C Library is free software; you can redistribute it and/or @@ -307,6 +307,7 @@ $(objpfx)ld.so: $(objpfx)librtld.os $(ld-map) $(filter-out $(map-file),$^) $(load-map-file) \ -Wl,-soname=$(rtld-installed-name) -T $@.lds rm -f $@.lds + nm -u $@ | cmp -s /dev/null - # interp.c exists just to get this string into the libraries. CFLAGS-interp.c = -D'RUNTIME_LINKER="$(slibdir)/$(rtld-installed-name)"' \ diff --git a/elf/rtld.c b/elf/rtld.c index 5e6ee51603..c57ef17e13 100644 --- a/elf/rtld.c +++ b/elf/rtld.c @@ -1,5 +1,5 @@ /* Run time dynamic linker. - Copyright (C) 1995-2002,2003,2004,2005,2006 Free Software Foundation, Inc. + Copyright (C) 1995-2006, 2007 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -359,10 +359,11 @@ _dl_start (void *arg) #endif /* This #define produces dynamic linking inline functions for - bootstrap relocation instead of general-purpose relocation. */ + bootstrap relocation instead of general-purpose relocation. + Since ld.so must not have any undefined symbols the result + is trivial: always the map of ld.so itself. */ #define RTLD_BOOTSTRAP -#define RESOLVE_MAP(sym, version, flags) \ - ((*(sym))->st_shndx == SHN_UNDEF ? 0 : &bootstrap_map) +#define RESOLVE_MAP(sym, version, flags) (&bootstrap_map) #include "dynamic-link.h" if (HP_TIMING_INLINE && HP_TIMING_AVAIL) |