about summary refs log tree commit diff
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
parent8847f0377003fbfe9cbe951ce9f8717d74f26247 (diff)
downloadglibc-1f393a11f65dcaa1952bdcaf0317a65a5f8aff9d.tar.gz
glibc-1f393a11f65dcaa1952bdcaf0317a65a5f8aff9d.tar.xz
glibc-1f393a11f65dcaa1952bdcaf0317a65a5f8aff9d.zip
Always set l_used for vDSO.
-rw-r--r--ChangeLog6
-rw-r--r--NEWS2
-rw-r--r--elf/Makefile11
-rw-r--r--elf/rtld.c5
4 files changed, 22 insertions, 2 deletions
diff --git a/ChangeLog b/ChangeLog
index 6bc32be30a..069bbc3e0f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,9 @@
+2012-02-29  Marek Polacek  <polacek@redhat.com>
+
+	[BZ #13706]
+	* elf/rtld.c (dl_main): Always set l_used to 1 for vDSO.
+	* elf/Makefile: Add rules to run tst-unused-dep.out.
+
 2012-02-28  David S. Miller  <davem@davemloft.net>
 
 	* sysdeps/sparc/sparc32/fpu/w_sqrt.S: New file.
diff --git a/NEWS b/NEWS
index d68ae66d81..06e7242e51 100644
--- a/NEWS
+++ b/NEWS
@@ -13,7 +13,7 @@ Version 2.16
   5993, 6884, 6907, 9739, 9902, 10110, 10140, 10210, 11174, 11322, 11365,
   11494, 12047, 13058, 13525, 13526, 13527, 13528, 13529, 13530, 13531,
   13532, 13533, 13547, 13551, 13552, 13553, 13555, 13559, 13583, 13618,
-  13637, 13695, 13704, 13738
+  13637, 13695, 13704, 13706, 13738
 
 * ISO C11 support:
 
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