[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Commits] r20752 - in /fsf/trunk/libc: ./ elf/ nptl/ nptl/sysdeps/i386/
- To: commits@xxxxxxxxxx
- Subject: [Commits] r20752 - in /fsf/trunk/libc: ./ elf/ nptl/ nptl/sysdeps/i386/
- From: eglibc@xxxxxxxxxx
- Date: Thu, 20 Sep 2012 00:01:50 -0000
Author: eglibc
Date: Thu Sep 20 00:01:48 2012
New Revision: 20752
Log:
Import glibc-mainline for 2012-09-20
Added:
fsf/trunk/libc/elf/tst-rtld-load-self.sh (with props)
Modified:
fsf/trunk/libc/ChangeLog
fsf/trunk/libc/NEWS
fsf/trunk/libc/elf/Makefile
fsf/trunk/libc/elf/rtld.c
fsf/trunk/libc/nptl/ChangeLog
fsf/trunk/libc/nptl/sysdeps/i386/tls.h
Modified: fsf/trunk/libc/ChangeLog
==============================================================================
--- fsf/trunk/libc/ChangeLog (original)
+++ fsf/trunk/libc/ChangeLog Thu Sep 20 00:01:48 2012
@@ -1,3 +1,11 @@
+2012-09-19 Dmitry V. Levin <ldv@xxxxxxxxxxxx>
+
+ [BZ #14579]
+ * elf/rtld.c (dl_main): Limit the check for self loading to normal
+ mode only.
+ * elf/tst-rtld-load-self.sh: New test.
+ * elf/Makefile: Run it.
+
2012-09-18 Joseph Myers <joseph@xxxxxxxxxxxxxxxx>
* sysdeps/wordsize-64/Makefile [$(subdir) = misc]
Modified: fsf/trunk/libc/NEWS
==============================================================================
--- fsf/trunk/libc/NEWS (original)
+++ fsf/trunk/libc/NEWS Thu Sep 20 00:01:48 2012
@@ -13,8 +13,8 @@
13542, 13717, 13696, 13939, 13966, 14042, 14090, 14166, 14150, 14151,
14154, 14157, 14166, 14173, 14195, 14237, 14252, 14283, 14298, 14303,
14307, 14328, 14331, 14336, 14337, 14347, 14349, 14459, 14476, 14505,
- 14510, 14516, 14518, 14519, 14532, 14538, 14544, 14545, 14576, 14583,
- 14587
+ 14510, 14516, 14518, 14519, 14532, 14538, 14544, 14545, 14576, 14579,
+ 14583, 14587.
* Support for STT_GNU_IFUNC symbols added for s390 and s390x.
Optimized versions of memcpy, memset, and memcmp added for System z10 and
Modified: fsf/trunk/libc/elf/Makefile
==============================================================================
--- fsf/trunk/libc/elf/Makefile (original)
+++ fsf/trunk/libc/elf/Makefile Thu Sep 20 00:01:48 2012
@@ -434,7 +434,7 @@
ifeq (yes,$(build-shared))
ifeq ($(cross-compiling),no)
-tests: $(objpfx)tst-pathopt.out
+tests: $(objpfx)tst-pathopt.out $(objpfx)tst-rtld-load-self.out
endif
endif
@@ -707,6 +707,9 @@
$(objpfx)pathoptobj.so
$(SHELL) -e $< $(common-objpfx)
+$(objpfx)tst-rtld-load-self.out: tst-rtld-load-self.sh $(objpfx)ld.so
+ $(SHELL) $^ > $@
+
$(objpfx)initfirst: $(libdl)
$(objpfx)initfirst.out: $(objpfx)firstobj.so
Modified: fsf/trunk/libc/elf/rtld.c
==============================================================================
--- fsf/trunk/libc/elf/rtld.c (original)
+++ fsf/trunk/libc/elf/rtld.c Thu Sep 20 00:01:48 2012
@@ -1093,7 +1093,8 @@
/* Now the map for the main executable is available. */
main_map = GL(dl_ns)[LM_ID_BASE]._ns_loaded;
- if (GL(dl_rtld_map).l_info[DT_SONAME] != NULL
+ if (__builtin_expect (mode, normal) == normal
+ && GL(dl_rtld_map).l_info[DT_SONAME] != NULL
&& main_map->l_info[DT_SONAME] != NULL
&& strcmp ((const char *) D_PTR (&GL(dl_rtld_map), l_info[DT_STRTAB])
+ GL(dl_rtld_map).l_info[DT_SONAME]->d_un.d_val,
Added: fsf/trunk/libc/elf/tst-rtld-load-self.sh
==============================================================================
--- fsf/trunk/libc/elf/tst-rtld-load-self.sh (added)
+++ fsf/trunk/libc/elf/tst-rtld-load-self.sh Thu Sep 20 00:01:48 2012
@@ -1,0 +1,46 @@
+#! /bin/sh
+# Test how rtld loads itself.
+# Copyright (C) 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
+# modify it under the terms of the GNU Lesser General Public
+# License as published by the Free Software Foundation; either
+# version 2.1 of the License, or (at your option) any later version.
+
+# The GNU C Library is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+# Lesser General Public License for more details.
+
+# You should have received a copy of the GNU Lesser General Public
+# License along with the GNU C Library; if not, see
+# <http://www.gnu.org/licenses/>.
+
+set -e
+
+rtld=$1
+result=0
+
+echo '# normal mode'
+$rtld $rtld 2>&1 && rc=0 || rc=$?
+echo "# exit status $rc"
+test $rc -le 127 || result=1
+
+echo '# list mode'
+$rtld --list $rtld 2>&1 && rc=0 || rc=$?
+echo "# exit status $rc"
+test $rc -eq 0 || result=1
+
+echo '# verify mode'
+$rtld --verify $rtld 2>&1 && rc=0 || rc=$?
+echo "# exit status $rc"
+test $rc -eq 2 || result=1
+
+echo '# trace mode'
+LD_TRACE_LOADED_OBJECTS=1 $rtld $rtld 2>&1 && rc=0 || rc=$?
+echo "# exit status $rc"
+test $rc -eq 0 || result=1
+
+exit $result
Propchange: fsf/trunk/libc/elf/tst-rtld-load-self.sh
------------------------------------------------------------------------------
svn:executable = *
Modified: fsf/trunk/libc/nptl/ChangeLog
==============================================================================
--- fsf/trunk/libc/nptl/ChangeLog (original)
+++ fsf/trunk/libc/nptl/ChangeLog Thu Sep 20 00:01:48 2012
@@ -1,3 +1,9 @@
+2012-09-19 H.J. Lu <hongjiu.lu@xxxxxxxxx>
+
+ * sysdeps/i386/tls.h (THREAD_SETMEM): Cast to uint64_t for
+ 64-bit store.
+ (THREAD_SETMEM_NC): Likewise.
+
2012-09-14 Jeff Law <law@xxxxxxxxxx>
[BZ #14583]
Modified: fsf/trunk/libc/nptl/sysdeps/i386/tls.h
==============================================================================
--- fsf/trunk/libc/nptl/sysdeps/i386/tls.h (original)
+++ fsf/trunk/libc/nptl/sysdeps/i386/tls.h Thu Sep 20 00:01:48 2012
@@ -343,7 +343,7 @@
\
asm volatile ("movl %%eax,%%gs:%P1\n\t" \
"movl %%edx,%%gs:%P2" : \
- : "A" (value), \
+ : "A" ((uint64_t) (value)), \
"i" (offsetof (struct pthread, member)), \
"i" (offsetof (struct pthread, member) + 4)); \
}})
@@ -370,7 +370,7 @@
\
asm volatile ("movl %%eax,%%gs:%P1(,%2,8)\n\t" \
"movl %%edx,%%gs:4+%P1(,%2,8)" : \
- : "A" (value), \
+ : "A" ((uint64_t) (value)), \
"i" (offsetof (struct pthread, member)), \
"r" (idx)); \
}})
_______________________________________________
Commits mailing list
Commits@xxxxxxxxxx
http://eglibc.org/cgi-bin/mailman/listinfo/commits