summary refs log tree commit diff
path: root/elf
diff options
context:
space:
mode:
authorMarek Polacek <polacek@redhat.com>2012-02-29 15:28:38 +0100
committerMarek Polacek <polacek@redhat.com>2012-02-29 15:28:38 +0100
commit1f393a11f65dcaa1952bdcaf0317a65a5f8aff9d (patch)
tree67b875bd55f952e59411163c3fb47706b97d2b76 /elf
parent8847f0377003fbfe9cbe951ce9f8717d74f26247 (diff)
downloadglibc-1f393a11f65dcaa1952bdcaf0317a65a5f8aff9d.tar.gz
glibc-1f393a11f65dcaa1952bdcaf0317a65a5f8aff9d.tar.xz
glibc-1f393a11f65dcaa1952bdcaf0317a65a5f8aff9d.zip
Always set l_used for vDSO.
Diffstat (limited to 'elf')
-rw-r--r--elf/Makefile11
-rw-r--r--elf/rtld.c5
2 files changed, 15 insertions, 1 deletions
diff --git a/elf/Makefile b/elf/Makefile
index 8234ba7a51..25ffc5765b 100644
--- a/elf/Makefile
+++ b/elf/Makefile
@@ -1203,3 +1203,14 @@ $(objpfx)tst-relsort1mod1.so: $(libm) $(objpfx)tst-relsort1mod2.so
 $(objpfx)tst-relsort1mod2.so: $(libm)
 $(objpfx)tst-relsort1.out: $(objpfx)tst-relsort1mod1.so \
 			   $(objpfx)tst-relsort1mod2.so
+
+tests: $(objpfx)tst-unused-dep.out
+
+$(objpfx)tst-unused-dep.out: $(objpfx)testobj1.so
+	LD_TRACE_LOADED_OBJECTS=1 \
+	LD_DEBUG=unused \
+	LD_PRELOAD= \
+	$(elf-objpfx)${rtld-installed-name} \
+	  --library-path $(rpath-link)$(patsubst %,:%,$(sysdep-library-path)) \
+	  $< > $@
+	cmp $@ /dev/null > /dev/null
diff --git a/elf/rtld.c b/elf/rtld.c
index 2e4f97ffed..3e15447f7a 100644
--- a/elf/rtld.c
+++ b/elf/rtld.c
@@ -1,5 +1,5 @@
 /* Run time dynamic linker.
-   Copyright (C) 1995-2010, 2011 Free Software Foundation, Inc.
+   Copyright (C) 1995-2012 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
@@ -1375,6 +1375,9 @@ of this helper program; chances are you did not intend to run this program.\n\
 	  _dl_setup_hash (l);
 	  l->l_relocated = 1;
 
+	  /* The vDSO is always used.  */
+	  l->l_used = 1;
+
 	  /* Initialize l_local_scope to contain just this map.  This allows
 	     the use of dl_lookup_symbol_x to resolve symbols within the vdso.
 	     So we create a single entry list pointing to l_real as its only