From 978e71e3df84d53c6131cabd8e4632723c7e2fc4 Mon Sep 17 00:00:00 2001 From: Jeff Law Date: Wed, 29 Feb 2012 12:50:51 -0700 Subject: [PATCH] - Always mark vDSO as used (#758888) --- glibc-rh758888.patch | 52 ++++++++++++++++++++++++++++++++++++++++++++ glibc.spec | 1 + 2 files changed, 53 insertions(+) create mode 100644 glibc-rh758888.patch diff --git a/glibc-rh758888.patch b/glibc-rh758888.patch new file mode 100644 index 0000000..ccf9715 --- /dev/null +++ b/glibc-rh758888.patch @@ -0,0 +1,52 @@ +commit 1f393a11f65dcaa1952bdcaf0317a65a5f8aff9d +Author: Marek Polacek +Date: Wed Feb 29 15:28:38 2012 +0100 + + Always set l_used for vDSO. + +2012-02-29 Marek Polacek + + [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. + +diff --git a/elf/Makefile b/elf/Makefile +index 8234ba7..25ffc57 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 2e4f97f..3e15447 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 diff --git a/glibc.spec b/glibc.spec index 4f7b061..5399069 100644 --- a/glibc.spec +++ b/glibc.spec @@ -1220,6 +1220,7 @@ rm -f *.filelist* %changelog * Wed Feb 29 2012 Jeff Law - 2.15-25 - Fix out of bounds memory access in resolver (#798471) + - Always mark vDSO as used (#758888) * Fri Feb 24 2012 Jeff Law - 2.15-24 - Fix bogus underflow (#760935)