This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] Always set l_used for vDSO (BZ #13706)


On Fri, Feb 24, 2012 at 01:23:27PM +0100, Andreas Schwab wrote:
> That doesn't match linux-vdso32.so.1 and linux-vdso64.so.1.

Thanks, fixed.  Now it matches even linux-gate(32|64).so.1, but that shouldn't
be a problem.  Ok now?

2012-02-24  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.

--- libc/elf/Makefile.mp	2012-02-23 14:24:05.292652999 +0100
+++ libc/elf/Makefile	2012-02-24 13:32:54.040623632 +0100
@@ -1203,3 +1203,13 @@ $(objpfx)tst-relsort1mod1.so: $(libm) $(
 $(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 \
+	$(elf-objpfx)${rtld-installed-name} \
+	  --library-path $(rpath-link)$(patsubst %,:%,$(sysdep-library-path)) \
+	  $< | grep -E "linux-(gate|vdso)(32|64)?.so.1" > $@ || :
+	cmp $@ /dev/null > /dev/null
--- libc/elf/rtld.c.mp	2012-02-20 10:03:06.799226404 +0100
+++ libc/elf/rtld.c	2012-02-24 11:05:35.047046172 +0100
@@ -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
 	  _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

	Marek


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]