[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Commits] r15559 - in /branches/eglibc-2_14: ./ libc/ libc/elf/ libc/libio/ libc/nptl/ libc/nptl/sysdeps/pthread/ libc/nptl_db/ libc/n...
- To: commits@xxxxxxxxxx
- Subject: [Commits] r15559 - in /branches/eglibc-2_14: ./ libc/ libc/elf/ libc/libio/ libc/nptl/ libc/nptl/sysdeps/pthread/ libc/nptl_db/ libc/n...
- From: joseph@xxxxxxxxxx
- Date: Tue, 25 Oct 2011 17:10:11 -0000
Author: joseph
Date: Tue Oct 25 17:10:11 2011
New Revision: 15559
Log:
Merge changes between r15224 and r15558 from /fsf/glibc-2_14-branch.
Added:
branches/eglibc-2_14/libc/elf/tst-initorder2.c
- copied unchanged from r15558, fsf/glibc-2_14-branch/libc/elf/tst-initorder2.c
branches/eglibc-2_14/libc/elf/tst-initorder2.exp
- copied unchanged from r15558, fsf/glibc-2_14-branch/libc/elf/tst-initorder2.exp
branches/eglibc-2_14/libc/elf/unload8.c
- copied unchanged from r15558, fsf/glibc-2_14-branch/libc/elf/unload8.c
branches/eglibc-2_14/libc/elf/unload8mod1.c
- copied unchanged from r15558, fsf/glibc-2_14-branch/libc/elf/unload8mod1.c
branches/eglibc-2_14/libc/elf/unload8mod1x.c
- copied unchanged from r15558, fsf/glibc-2_14-branch/libc/elf/unload8mod1x.c
branches/eglibc-2_14/libc/elf/unload8mod2.c
- copied unchanged from r15558, fsf/glibc-2_14-branch/libc/elf/unload8mod2.c
branches/eglibc-2_14/libc/elf/unload8mod3.c
- copied unchanged from r15558, fsf/glibc-2_14-branch/libc/elf/unload8mod3.c
branches/eglibc-2_14/libc/stdio-common/bug24.c
- copied unchanged from r15558, fsf/glibc-2_14-branch/libc/stdio-common/bug24.c
Modified:
branches/eglibc-2_14/ (props changed)
branches/eglibc-2_14/libc/ChangeLog
branches/eglibc-2_14/libc/NEWS
branches/eglibc-2_14/libc/elf/Makefile
branches/eglibc-2_14/libc/elf/dl-close.c
branches/eglibc-2_14/libc/elf/dl-deps.c
branches/eglibc-2_14/libc/elf/dl-fini.c
branches/eglibc-2_14/libc/libio/fileops.c
branches/eglibc-2_14/libc/nptl/ChangeLog
branches/eglibc-2_14/libc/nptl/allocatestack.c
branches/eglibc-2_14/libc/nptl/descr.h
branches/eglibc-2_14/libc/nptl/nptl-init.c
branches/eglibc-2_14/libc/nptl/sysdeps/pthread/list.h
branches/eglibc-2_14/libc/nptl_db/ChangeLog
branches/eglibc-2_14/libc/nptl_db/thread_dbP.h
branches/eglibc-2_14/libc/nss/nss_files/files-initgroups.c
branches/eglibc-2_14/libc/stdio-common/Makefile
branches/eglibc-2_14/libc/sysdeps/i386/dl-trampoline.S
branches/eglibc-2_14/libc/sysdeps/i386/i686/multiarch/strspn.S
branches/eglibc-2_14/libc/sysdeps/x86_64/dl-trampoline.S
branches/eglibc-2_14/libc/sysdeps/x86_64/dl-trampoline.h
branches/eglibc-2_14/libc/version.h
Propchange: branches/eglibc-2_14/
------------------------------------------------------------------------------
svn:mergeinfo = /fsf/glibc-2_14-branch:15225-15558
Modified: branches/eglibc-2_14/libc/ChangeLog
==============================================================================
--- branches/eglibc-2_14/libc/ChangeLog (original)
+++ branches/eglibc-2_14/libc/ChangeLog Tue Oct 25 17:10:11 2011
@@ -1,3 +1,79 @@
+2011-10-07 Andreas Schwab <schwab@xxxxxxxxxx>
+
+ * version.h (VERSION): Bump for 2.14.1 release.
+
+2011-09-27 Andreas Schwab <schwab@xxxxxxxxxx>
+
+ * nss/nss_files/files-initgroups.c (_nss_files_initgroups_dyn):
+ Reread the line before reparsing it.
+
+2011-08-29 Jiri Olsa <jolsa@xxxxxxxxxx>
+
+ * sysdeps/i386/dl-trampoline.S (_dl_runtime_profile): Fix cfi
+ directive.
+
+2011-08-24 Andreas Schwab <schwab@xxxxxxxxxx>
+
+ * elf/Makefile: Add rules to build and run unload8 test.
+ * elf/unload8.c: New file.
+ * elf/unload8mod1.c: New file.
+ * elf/unload8mod1x.c: New file.
+ * elf/unload8mod2.c: New file.
+ * elf/unload8mod3.c: New file.
+
+ * elf/dl-close.c (_dl_close_worker): Reset private search list if
+ it wasn't used.
+
+2011-08-23 Andreas Schwab <schwab@xxxxxxxxxx>
+
+ * sysdeps/i386/i686/multiarch/strspn.S (ENTRY): Add missing
+ backslash.
+
+2011-08-22 Andreas Schwab <schwab@xxxxxxxxxx>
+
+ * elf/dl-deps.c (_dl_map_object_deps): Move check for missing
+ dependencies back to end of function.
+
+2011-08-16 Andreas Schwab <schwab@xxxxxxxxxx>
+
+ [BZ #11724]
+ * elf/dl-deps.c (_dl_map_object_deps): Only assume cycle when
+ object is seen twice.
+ * elf/dl-fini.c (_dl_sort_fini): Likewise.
+
+ * elf/Makefile (distribute): Add tst-initorder2.c.
+ (tests): Add tst-initorder2.
+ (modules-names): Add tst-initorder2a tst-initorder2b
+ tst-initorder2c tst-initorder2d. Add rules to build them.
+ ($(objpfx)tst-initorder2.out): New rule.
+ * elf/tst-initorder2.c: New file.
+ * elf/tst-initorder2.exp: New file.
+
+2011-08-20 Ulrich Drepper <drepper@xxxxxxxxx>
+
+ [BZ #13114]
+ * stdio-common/Makefile (tests): Add bug24.
+ * stdio-common/bug24.c: New file.
+
+2011-08-19 Andreas Jaeger <aj@xxxxxxx>
+
+ [BZ #13114]
+ * libio/fileops.c (_IO_new_file_fopen): Fix handling of
+ non-existant file when using close-on-exec mode.
+
+2011-08-20 Ulrich Drepper <drepper@xxxxxxxxx>
+
+ * sysdeps/x86_64/dl-trampoline.S (_dl_runtime_resolve): Fix CFI for
+ the very first instruction.
+
+2011-08-20 Ulrich Drepper <drepper@xxxxxxxxx>
+
+ * sysdeps/x86_64/dl-trampoline.h: If MORE_CODE is defined, restore
+ the CFI state in the end.
+ * sysdeps/x86_64/dl-trampoline.S: Define MORE_CODE before first
+ inclusion of dl-trampoline.h.
+ Based on a patch by Jiri Olsa <jolsa@xxxxxxxxxx>.
+
2011-08-14 Roland McGrath <roland@xxxxxxxxxxxxx>
* locale/Makefile (locale-CPPFLAGS): Renamed CPPFLAGS-locale-programs.
Modified: branches/eglibc-2_14/libc/NEWS
==============================================================================
--- branches/eglibc-2_14/libc/NEWS (original)
+++ branches/eglibc-2_14/libc/NEWS Tue Oct 25 17:10:11 2011
@@ -1,9 +1,16 @@
-GNU C Library NEWS -- history of user-visible changes. 2011-6-4
+GNU C Library NEWS -- history of user-visible changes. 2011-10-07
Copyright (C) 1992-2009, 2010, 2011 Free Software Foundation, Inc.
See the end for copying conditions.
Please send GNU C library bug reports via <http://sources.redhat.com/bugzilla/>
using `glibc' in the "product" field.
+
+Version 2.14.1
+
+* The following bugs are resolved with this release:
+
+ 9696, 11724, 12841, 12849, 12852, 12868, 12885, 12922, 12935, 13007,
+ 13114
Version 2.14
Modified: branches/eglibc-2_14/libc/elf/Makefile
==============================================================================
--- branches/eglibc-2_14/libc/elf/Makefile (original)
+++ branches/eglibc-2_14/libc/elf/Makefile Tue Oct 25 17:10:11 2011
@@ -90,6 +90,7 @@
unload4mod1.c unload4mod2.c unload4mod3.c unload4mod4.c \
unload6mod1.c unload6mod2.c unload6mod3.c \
unload7mod1.c unload7mod2.c \
+ unload8mod1.c unload8mod1x.c unload8mod2.c unload8mod3.c \
tst-audit1.c tst-audit2.c tst-audit3.c tst-audit4.c \
tst-auditmod1.c tst-auditmod3a.c tst-auditmod3b.c \
tst-auditmod4a.c tst-auditmod4b.c \
@@ -120,9 +121,10 @@
ifuncmain7pie.c ifuncmain7static.c \
tst-unique1.c tst-unique1mod1.c tst-unique1mod2.c \
tst-unique2.c tst-unique2mod1.c tst-unique2mod2.c \
- tst-initordera1.c tst-initordera2.c tst-initorderb1.c \
- tst-initorderb2.c tst-initordera3.c tst-initordera4.c \
- tst-initorder.c
+ tst-initordera1.c tst-initordera2.c tst-initorderb1.c \
+ tst-initorderb2.c tst-initordera3.c tst-initordera4.c \
+ tst-initorder.c \
+ tst-initorder2.c
CFLAGS-dl-runtime.c = -fexceptions -fasynchronous-unwind-tables
CFLAGS-dl-lookup.c = -fexceptions -fasynchronous-unwind-tables
@@ -225,11 +227,11 @@
tst-align tst-align2 $(tests-execstack-$(have-z-execstack)) \
tst-dlmodcount tst-dlopenrpath tst-deep1 \
tst-dlmopen1 tst-dlmopen2 tst-dlmopen3 \
- unload3 unload4 unload5 unload6 unload7 tst-global1 order2 \
+ unload3 unload4 unload5 unload6 unload7 unload8 tst-global1 order2 \
tst-audit1 tst-audit2 \
tst-stackguard1 tst-addr1 tst-thrlock \
tst-unique1 tst-unique2 tst-unique3 tst-unique4 \
- tst-initorder
+ tst-initorder tst-initorder2
# reldep9
test-srcs = tst-pathopt
selinux-enabled := $(shell cat /selinux/enforce 2> /dev/null)
@@ -283,6 +285,7 @@
unload4mod1 unload4mod2 unload4mod3 unload4mod4 \
unload6mod1 unload6mod2 unload6mod3 \
unload7mod1 unload7mod2 \
+ unload8mod1 unload8mod1x unload8mod2 unload8mod3 \
order2mod1 order2mod2 order2mod3 order2mod4 \
tst-unique1mod1 tst-unique1mod2 \
tst-unique2mod1 tst-unique2mod2 \
@@ -290,7 +293,8 @@
tst-unique4lib \
tst-initordera1 tst-initorderb1 \
tst-initordera2 tst-initorderb2 \
- tst-initordera3 tst-initordera4
+ tst-initordera3 tst-initordera4 \
+ tst-initorder2a tst-initorder2b tst-initorder2c tst-initorder2d
ifeq (yes,$(have-initfini-array))
modules-names += tst-array2dep tst-array5dep
endif
@@ -574,6 +578,9 @@
$(objpfx)unload6mod3.so: $(libdl)
$(objpfx)unload7mod1.so: $(libdl)
$(objpfx)unload7mod2.so: $(objpfx)unload7mod1.so
+$(objpfx)unload8mod1.so: $(objpfx)unload8mod2.so
+$(objpfx)unload8mod2.so: $(objpfx)unload8mod3.so
+$(objpfx)unload8mod3.so: $(libdl)
$(objpfx)tst-initordera2.so: $(objpfx)tst-initordera1.so
$(objpfx)tst-initorderb2.so: $(objpfx)tst-initorderb1.so $(objpfx)tst-initordera2.so
$(objpfx)tst-initordera3.so: $(objpfx)tst-initorderb2.so $(objpfx)tst-initorderb1.so
@@ -891,6 +898,9 @@
$(objpfx)unload7.out: $(objpfx)unload7mod1.so $(objpfx)unload7mod2.so
unload7-ENV = MALLOC_PERTURB_=85
+$(objpfx)unload8: $(libdl)
+$(objpfx)unload8.out: $(objpfx)unload8mod1.so $(objpfx)unload8mod1x.so
+
ifdef libdl
$(objpfx)tst-tls9-static: $(common-objpfx)dlfcn/libdl.a
$(objpfx)tst-tls9-static.out: $(objpfx)tst-tlsmod5.so $(objpfx)tst-tlsmod6.so
@@ -1175,6 +1185,23 @@
$< > $@
cmp $@ tst-initorder.exp > /dev/null
+$(objpfx)tst-initorder2: $(objpfx)tst-initorder2a.so $(objpfx)tst-initorder2d.so $(objpfx)tst-initorder2c.so
+$(objpfx)tst-initorder2a.so: $(objpfx)tst-initorder2b.so
+$(objpfx)tst-initorder2b.so: $(objpfx)tst-initorder2c.so
+$(objpfx)tst-initorder2c.so: $(objpfx)tst-initorder2d.so
+define o-iterator-doit
+$(objpfx)tst-initorder2$o.os: tst-initorder2.c; \
+$$(compile-command.c) -DNAME=\"$o\"
+endef
+object-suffixes-left := a b c d
+include $(o-iterator)
+
+$(objpfx)tst-initorder2.out: $(objpfx)tst-initorder2
+ $(elf-objpfx)${rtld-installed-name} \
+ --library-path $(rpath-link)$(patsubst %,:%,$(sysdep-library-path)) \
+ $< > $@
+ cmp $@ tst-initorder2.exp > /dev/null
+
ifeq (yes,$(config-cflags-avx))
AVX-CFLAGS=-mavx
ifeq (yes,$(config-cflags-novzeroupper))
Modified: branches/eglibc-2_14/libc/elf/dl-close.c
==============================================================================
--- branches/eglibc-2_14/libc/elf/dl-close.c (original)
+++ branches/eglibc-2_14/libc/elf/dl-close.c Tue Oct 25 17:10:11 2011
@@ -429,6 +429,13 @@
scope_mem_left = true;
imap->l_scope_max = new_size;
+ }
+ else if (new_list != NULL)
+ {
+ /* We didn't change the scope array, so reset the search
+ list. */
+ imap->l_searchlist.r_list = NULL;
+ imap->l_searchlist.r_nlist = 0;
}
/* The loader is gone, so mark the object as not having one.
Modified: branches/eglibc-2_14/libc/elf/dl-deps.c
==============================================================================
--- branches/eglibc-2_14/libc/elf/dl-deps.c (original)
+++ branches/eglibc-2_14/libc/elf/dl-deps.c Tue Oct 25 17:10:11 2011
@@ -491,10 +491,6 @@
if (errno == 0 && errno_saved != 0)
__set_errno (errno_saved);
- if (errno_reason)
- _dl_signal_error (errno_reason == -1 ? 0 : errno_reason, objname,
- NULL, errstring);
-
struct link_map **old_l_initfini = NULL;
if (map->l_initfini != NULL && map->l_type == lt_loaded)
{
@@ -626,12 +622,12 @@
/* We can skip looking for the binary itself which is at the front
of the search list. */
i = 1;
- bool seen[nlist];
- memset (seen, false, nlist * sizeof (seen[0]));
+ char seen[nlist];
+ memset (seen, 0, nlist * sizeof (seen[0]));
while (1)
{
/* Keep track of which object we looked at this round. */
- seen[i] = true;
+ seen[i] += seen[i] < 2;
struct link_map *thisp = l_initfini[i];
/* Find the last object in the list for which the current one is
@@ -652,15 +648,16 @@
(k - i) * sizeof (l_initfini[0]));
l_initfini[k] = thisp;
- if (seen[i + 1])
+ if (seen[i + 1] > 1)
{
++i;
goto next_clear;
}
+ char this_seen = seen[i];
memmove (&seen[i], &seen[i + 1],
(k - i) * sizeof (seen[0]));
- seen[k] = true;
+ seen[k] = this_seen;
goto next;
}
@@ -671,7 +668,7 @@
if (++i == nlist)
break;
next_clear:
- memset (&seen[i], false, (nlist - i) * sizeof (seen[0]));
+ memset (&seen[i], 0, (nlist - i) * sizeof (seen[0]));
next:;
}
@@ -690,4 +687,8 @@
}
if (old_l_initfini != NULL)
map->l_orig_initfini = old_l_initfini;
+
+ if (errno_reason)
+ _dl_signal_error (errno_reason == -1 ? 0 : errno_reason, objname,
+ NULL, errstring);
}
Modified: branches/eglibc-2_14/libc/elf/dl-fini.c
==============================================================================
--- branches/eglibc-2_14/libc/elf/dl-fini.c (original)
+++ branches/eglibc-2_14/libc/elf/dl-fini.c Tue Oct 25 17:10:11 2011
@@ -40,12 +40,12 @@
/* We can skip looking for the binary itself which is at the front
of the search list for the main namespace. */
unsigned int i = ns == LM_ID_BASE;
- bool seen[nmaps];
- memset (seen, false, nmaps * sizeof (seen[0]));
+ char seen[nmaps];
+ memset (seen, 0, nmaps * sizeof (seen[0]));
while (1)
{
/* Keep track of which object we looked at this round. */
- seen[i] = true;
+ seen[i] += seen[i] < 2;
struct link_map *thisp = maps[i];
/* Do not handle ld.so in secondary namespaces and object which
@@ -80,14 +80,15 @@
used[k] = here_used;
}
- if (seen[i + 1])
+ if (seen[i + 1] > 1)
{
++i;
goto next_clear;
}
+ char this_seen = seen[i];
memmove (&seen[i], &seen[i + 1], (k - i) * sizeof (seen[0]));
- seen[k] = true;
+ seen[k] = this_seen;
goto next;
}
@@ -97,7 +98,7 @@
unsigned int m = maps[k]->l_reldeps->act;
struct link_map **relmaps = &maps[k]->l_reldeps->list[0];
- /* Look through the relocation dependencies of the object. */
+ /* Look through the relocation dependencies of the object. */
while (m-- > 0)
if (__builtin_expect (relmaps[m] == thisp, 0))
goto move;
@@ -110,7 +111,7 @@
if (++i == nmaps)
break;
next_clear:
- memset (&seen[i], false, (nmaps - i) * sizeof (seen[0]));
+ memset (&seen[i], 0, (nmaps - i) * sizeof (seen[0]));
next:;
}
Modified: branches/eglibc-2_14/libc/libio/fileops.c
==============================================================================
--- branches/eglibc-2_14/libc/libio/fileops.c (original)
+++ branches/eglibc-2_14/libc/libio/fileops.c Tue Oct 25 17:10:11 2011
@@ -346,23 +346,22 @@
result = _IO_file_open (fp, filename, omode|oflags, oprot, read_write,
is32not64);
+ if (result != NULL)
+ {
#ifndef __ASSUME_O_CLOEXEC
- if ((fp->_flags2 & _IO_FLAGS2_CLOEXEC) != 0 && __have_o_cloexec <= 0)
- {
- int fd = _IO_fileno (fp);
- if (__have_o_cloexec == 0)
- {
- int flags = __fcntl (fd, F_GETFD);
- __have_o_cloexec = (flags & FD_CLOEXEC) == 0 ? -1 : 1;
- }
- if (__have_o_cloexec < 0)
- __fcntl (fd, F_SETFD, FD_CLOEXEC);
- }
-#endif
-
-#ifdef _LIBC
- if (result != NULL)
- {
+ if ((fp->_flags2 & _IO_FLAGS2_CLOEXEC) != 0 && __have_o_cloexec <= 0)
+ {
+ int fd = _IO_fileno (fp);
+ if (__have_o_cloexec == 0)
+ {
+ int flags = __fcntl (fd, F_GETFD);
+ __have_o_cloexec = (flags & FD_CLOEXEC) == 0 ? -1 : 1;
+ }
+ if (__have_o_cloexec < 0)
+ __fcntl (fd, F_SETFD, FD_CLOEXEC);
+ }
+#endif
+
/* Test whether the mode string specifies the conversion. */
cs = strstr (last_recognized + 1, ",ccs=");
if (cs != NULL)
@@ -440,7 +439,6 @@
#endif
}
}
-#endif /* GNU libc */
return result;
}
Modified: branches/eglibc-2_14/libc/nptl/ChangeLog
==============================================================================
--- branches/eglibc-2_14/libc/nptl/ChangeLog (original)
+++ branches/eglibc-2_14/libc/nptl/ChangeLog Tue Oct 25 17:10:11 2011
@@ -1,3 +1,17 @@
+2011-09-15 Andreas Schwab <schwab@xxxxxxxxxx>
+
+ * sysdeps/pthread/list.h: Define only list_t if __need_list_t is
+ defined.
+ (list_add): Add atomic_write_barrier.
+ * descr.h: Define __need_list_t before including <list.h>.
+ * nptl-init.c: Include <list.h>
+ * allocatestack.c: Likewise.
+
+2011-08-31 Andreas Schwab <schwab@xxxxxxxxxx>
+
+ * allocatestack.c (setxid_mark_thread): Ensure that the exiting
+ thread is woken up.
+
2011-08-08 Andreas Schwab <schwab@xxxxxxxxxx>
* sysdeps/unix/sysv/linux/x86_64/cancellation.S: Maintain aligned
Modified: branches/eglibc-2_14/libc/nptl/allocatestack.c
==============================================================================
--- branches/eglibc-2_14/libc/nptl/allocatestack.c (original)
+++ branches/eglibc-2_14/libc/nptl/allocatestack.c Tue Oct 25 17:10:11 2011
@@ -28,6 +28,7 @@
#include <dl-sysdep.h>
#include <dl-tls.h>
#include <tls.h>
+#include <list.h>
#include <lowlevellock.h>
#include <kernel-features.h>
@@ -999,7 +1000,16 @@
/* If the thread is exiting right now, ignore it. */
if ((ch & EXITING_BITMASK) != 0)
- return;
+ {
+ /* Release the futex if there is no other setxid in
+ progress. */
+ if ((ch & SETXID_BITMASK) == 0)
+ {
+ t->setxid_futex = 1;
+ lll_futex_wake (&t->setxid_futex, 1, LLL_PRIVATE);
+ }
+ return;
+ }
}
while (atomic_compare_and_exchange_bool_acq (&t->cancelhandling,
ch | SETXID_BITMASK, ch));
Modified: branches/eglibc-2_14/libc/nptl/descr.h
==============================================================================
--- branches/eglibc-2_14/libc/nptl/descr.h (original)
+++ branches/eglibc-2_14/libc/nptl/descr.h Tue Oct 25 17:10:11 2011
@@ -26,6 +26,7 @@
#include <stdbool.h>
#include <sys/types.h>
#include <hp-timing.h>
+#define __need_list_t
#include <list.h>
#include <lowlevellock.h>
#include <pthreaddef.h>
Modified: branches/eglibc-2_14/libc/nptl/nptl-init.c
==============================================================================
--- branches/eglibc-2_14/libc/nptl/nptl-init.c (original)
+++ branches/eglibc-2_14/libc/nptl/nptl-init.c Tue Oct 25 17:10:11 2011
@@ -29,6 +29,7 @@
#include <atomic.h>
#include <ldsodefs.h>
#include <tls.h>
+#include <list.h>
#include <fork.h>
#include <version.h>
#include <shlib-compat.h>
Modified: branches/eglibc-2_14/libc/nptl/sysdeps/pthread/list.h
==============================================================================
--- branches/eglibc-2_14/libc/nptl/sysdeps/pthread/list.h (original)
+++ branches/eglibc-2_14/libc/nptl/sysdeps/pthread/list.h Tue Oct 25 17:10:11 2011
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002, 2009 Free Software Foundation, Inc.
+/* Copyright (C) 2002, 2009, 2011 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@xxxxxxxxxx>, 2002.
@@ -18,27 +18,39 @@
02111-1307 USA. */
#ifndef _LIST_H
-#define _LIST_H 1
+
+#ifndef __need_list_t
+# define _LIST_H 1
+#endif
/* The definitions of this file are adopted from those which can be
found in the Linux kernel headers to enable people familiar with
the latter find their way in these sources as well. */
+#if defined __need_list_t || defined _LIST_H
+# ifndef __list_t_defined
+# define __list_t_defined
/* Basic type for the double-link list. */
typedef struct list_head
{
struct list_head *next;
struct list_head *prev;
} list_t;
+# endif
+# undef __need_list_t
+#endif
+#ifdef _LIST_H
+
+# include <atomic.h>
/* Define a variable with the head and tail of the list. */
-#define LIST_HEAD(name) \
+# define LIST_HEAD(name) \
list_t name = { &(name), &(name) }
/* Initialize a new list head. */
-#define INIT_LIST_HEAD(ptr) \
+# define INIT_LIST_HEAD(ptr) \
(ptr)->next = (ptr)->prev = (ptr)
@@ -49,6 +61,7 @@
newp->next = head->next;
newp->prev = head;
head->next->prev = newp;
+ atomic_write_barrier ();
head->next = newp;
}
@@ -78,26 +91,28 @@
/* Get typed element from list at a given position. */
-#define list_entry(ptr, type, member) \
+# define list_entry(ptr, type, member) \
((type *) ((char *) (ptr) - (unsigned long) (&((type *) 0)->member)))
/* Iterate forward over the elements of the list. */
-#define list_for_each(pos, head) \
+# define list_for_each(pos, head) \
for (pos = (head)->next; pos != (head); pos = pos->next)
/* Iterate forward over the elements of the list. */
-#define list_for_each_prev(pos, head) \
+# define list_for_each_prev(pos, head) \
for (pos = (head)->prev; pos != (head); pos = pos->prev)
/* Iterate backwards over the elements list. The list elements can be
removed from the list while doing this. */
-#define list_for_each_prev_safe(pos, p, head) \
+# define list_for_each_prev_safe(pos, p, head) \
for (pos = (head)->prev, p = pos->prev; \
pos != (head); \
pos = p, p = pos->prev)
+#endif /* _LIST_H */
+
#endif /* list.h */
Modified: branches/eglibc-2_14/libc/nptl_db/ChangeLog
==============================================================================
--- branches/eglibc-2_14/libc/nptl_db/ChangeLog (original)
+++ branches/eglibc-2_14/libc/nptl_db/ChangeLog Tue Oct 25 17:10:11 2011
@@ -1,3 +1,7 @@
+2011-09-15 Andreas Schwab <schwab@xxxxxxxxxx>
+
+ * thread_dbP.h: Include <list.h>
+
2009-08-23 Roland McGrath <roland@xxxxxxxxxx>
* td_ta_map_lwp2thr.c (__td_ta_lookup_th_unique): Move ta_ok check
Modified: branches/eglibc-2_14/libc/nptl_db/thread_dbP.h
==============================================================================
--- branches/eglibc-2_14/libc/nptl_db/thread_dbP.h (original)
+++ branches/eglibc-2_14/libc/nptl_db/thread_dbP.h Tue Oct 25 17:10:11 2011
@@ -1,5 +1,5 @@
/* Private header for thread debug library
- Copyright (C) 2003, 2004, 2007 Free Software Foundation, Inc.
+ Copyright (C) 2003, 2004, 2007, 2011 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
@@ -29,6 +29,7 @@
#include "proc_service.h"
#include "thread_db.h"
#include "../nptl/pthreadP.h" /* This is for *_BITMASK only. */
+#include <list.h>
/* Indeces for the symbol names. */
enum
Modified: branches/eglibc-2_14/libc/nss/nss_files/files-initgroups.c
==============================================================================
--- branches/eglibc-2_14/libc/nss/nss_files/files-initgroups.c (original)
+++ branches/eglibc-2_14/libc/nss/nss_files/files-initgroups.c Tue Oct 25 17:10:11 2011
@@ -52,8 +52,10 @@
gid_t *groups = *groupsp;
/* We have to iterate over the entire file. */
- while (!feof_unlocked (stream))
+ while (1)
{
+ fpos_t pos;
+ fgetpos (stream, &pos);
ssize_t n = getline (&line, &linelen, stream);
if (n < 0)
{
@@ -64,9 +66,8 @@
}
struct group grp;
- int res;
- while ((res = _nss_files_parse_grent (line, &grp, buffer, buflen,
- errnop)) == -1)
+ int res = _nss_files_parse_grent (line, &grp, buffer, buflen, errnop);
+ if (res == -1)
{
size_t newbuflen = 2 * buflen;
if (buffer_use_malloc || ! __libc_use_alloca (buflen + newbuflen))
@@ -85,6 +86,9 @@
}
else
buffer = extend_alloca (buffer, buflen, newbuflen);
+ /* Reread current line, the parser has clobbered it. */
+ fsetpos (stream, &pos);
+ continue;
}
if (res > 0 && grp.gr_gid != group)
Modified: branches/eglibc-2_14/libc/stdio-common/Makefile
==============================================================================
--- branches/eglibc-2_14/libc/stdio-common/Makefile (original)
+++ branches/eglibc-2_14/libc/stdio-common/Makefile Tue Oct 25 17:10:11 2011
@@ -68,7 +68,7 @@
tst-popen tst-unlockedio tst-fmemopen2 tst-put-error tst-fgets \
tst-fwrite bug16 bug17 tst-sprintf2 bug18 \
bug19 tst-popen2 scanf14 scanf15 bug21 bug22 scanf16 scanf17 \
- tst-setvbuf1 bug23
+ tst-setvbuf1 bug23 bug24
tests-$(OPTION_EGLIBC_LOCALE_CODE) \
+= tst-sscanf tst-swprintf bug15 test-vfprintf bug14 scanf13 tst-grouping
tests-$(OPTION_POSIX_WIDE_CHAR_DEVICE_IO) \
Modified: branches/eglibc-2_14/libc/sysdeps/i386/dl-trampoline.S
==============================================================================
--- branches/eglibc-2_14/libc/sysdeps/i386/dl-trampoline.S (original)
+++ branches/eglibc-2_14/libc/sysdeps/i386/dl-trampoline.S Tue Oct 25 17:10:11 2011
@@ -1,5 +1,5 @@
/* PLT trampolines. i386 version.
- Copyright (C) 2004, 2005, 2007 Free Software Foundation, Inc.
+ Copyright (C) 2004, 2005, 2007, 2011 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
@@ -99,7 +99,7 @@
+4 %edx
%esp free
*/
- cfi_adjust_cfa_offset (12)
+ cfi_adjust_cfa_offset (8)
1: movl %ebx, (%esp)
cfi_rel_offset (ebx, 0)
movl %edx, %ebx # This is the frame buffer size
Modified: branches/eglibc-2_14/libc/sysdeps/i386/i686/multiarch/strspn.S
==============================================================================
--- branches/eglibc-2_14/libc/sysdeps/i386/i686/multiarch/strspn.S (original)
+++ branches/eglibc-2_14/libc/sysdeps/i386/i686/multiarch/strspn.S Tue Oct 25 17:10:11 2011
@@ -76,8 +76,8 @@
# define ENTRY(name) \
.type __strspn_ia32, @function; \
.globl __strspn_ia32; \
- .p2align 4
- __strspn_ia32: cfi_startproc; \
+ .p2align 4; \
+__strspn_ia32: cfi_startproc; \
CALL_MCOUNT
# undef END
# define END(name) \
Modified: branches/eglibc-2_14/libc/sysdeps/x86_64/dl-trampoline.S
==============================================================================
--- branches/eglibc-2_14/libc/sysdeps/x86_64/dl-trampoline.S (original)
+++ branches/eglibc-2_14/libc/sysdeps/x86_64/dl-trampoline.S Tue Oct 25 17:10:11 2011
@@ -27,8 +27,9 @@
.align 16
cfi_startproc
_dl_runtime_resolve:
+ cfi_adjust_cfa_offset(16) # Incorporate PLT
subq $56,%rsp
- cfi_adjust_cfa_offset(72) # Incorporate PLT
+ cfi_adjust_cfa_offset(56)
movq %rax,(%rsp) # Preserve registers otherwise clobbered.
movq %rcx, 8(%rsp)
movq %rdx, 16(%rsp)
@@ -158,14 +159,15 @@
1: js L(no_avx)
# define RESTORE_AVX
+# define MORE_CODE
# include "dl-trampoline.h"
.align 16
L(no_avx):
# endif
-# undef RESTORE_AVX
-# include "dl-trampoline.h"
+# undef RESTORE_AVX
+# include "dl-trampoline.h"
cfi_endproc
.size _dl_runtime_profile, .-_dl_runtime_profile
Modified: branches/eglibc-2_14/libc/sysdeps/x86_64/dl-trampoline.h
==============================================================================
--- branches/eglibc-2_14/libc/sysdeps/x86_64/dl-trampoline.h (original)
+++ branches/eglibc-2_14/libc/sysdeps/x86_64/dl-trampoline.h Tue Oct 25 17:10:11 2011
@@ -1,6 +1,6 @@
/* Partial PLT profile trampoline to save and restore x86-64 vector
registers.
- Copyright (C) 2009 Free Software Foundation, Inc.
+ Copyright (C) 2009, 2011 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
@@ -195,14 +195,14 @@
_dl_call_pltexit. The La_x86_64_regs is being pointed by rsp now,
so we just need to allocate the sizeof(La_x86_64_retval) space on
the stack, since the alignment has already been taken care of. */
-# ifdef RESTORE_AVX
+#ifdef RESTORE_AVX
/* sizeof(La_x86_64_retval). Need extra space for 2 SSE
registers to detect if xmm0/xmm1 registers are changed
by audit module. */
subq $(LRV_SIZE + XMM_SIZE*2), %rsp
-# else
+#else
subq $LRV_SIZE, %rsp # sizeof(La_x86_64_retval)
-# endif
+#endif
movq %rsp, %rcx # La_x86_64_retval argument to %rcx.
/* Fill in the La_x86_64_retval structure. */
@@ -212,7 +212,7 @@
movaps %xmm0, LRV_XMM0_OFFSET(%rcx)
movaps %xmm1, LRV_XMM1_OFFSET(%rcx)
-# ifdef RESTORE_AVX
+#ifdef RESTORE_AVX
/* This is to support AVX audit modules. */
vmovdqu %ymm0, LRV_VECTOR0_OFFSET(%rcx)
vmovdqu %ymm1, LRV_VECTOR1_OFFSET(%rcx)
@@ -221,14 +221,14 @@
by audit module. */
vmovdqa %xmm0, (LRV_SIZE)(%rcx)
vmovdqa %xmm1, (LRV_SIZE + XMM_SIZE)(%rcx)
-# endif
+#endif
fstpt LRV_ST0_OFFSET(%rcx)
fstpt LRV_ST1_OFFSET(%rcx)
movq 24(%rbx), %rdx # La_x86_64_regs argument to %rdx.
movq 40(%rbx), %rsi # Copy args pushed by PLT in register.
- movq 32(%rbx), %rdi # %rdi: link_map, %rsi: reloc_index
+ movq 32(%rbx), %rdi # %rdi: link_map, %rsi: reloc_index
call _dl_call_pltexit
/* Restore return registers. */
@@ -238,7 +238,7 @@
movaps LRV_XMM0_OFFSET(%rsp), %xmm0
movaps LRV_XMM1_OFFSET(%rsp), %xmm1
-# ifdef RESTORE_AVX
+#ifdef RESTORE_AVX
/* Check if xmm0/xmm1 registers are changed by audit module. */
vpcmpeqq (LRV_SIZE)(%rsp), %xmm0, %xmm2
vpmovmskb %xmm2, %esi
@@ -253,7 +253,7 @@
vmovdqu LRV_VECTOR1_OFFSET(%rsp), %ymm1
1:
-# endif
+#endif
fldt LRV_ST1_OFFSET(%rsp)
fldt LRV_ST0_OFFSET(%rsp)
@@ -267,3 +267,10 @@
# (eats the reloc index and link_map)
cfi_adjust_cfa_offset(-48)
retq
+
+#ifdef MORE_CODE
+ cfi_adjust_cfa_offset(48)
+ cfi_rel_offset(%rbx, 0)
+ cfi_def_cfa_register(%rbx)
+# undef MORE_CODE
+#endif
Modified: branches/eglibc-2_14/libc/version.h
==============================================================================
--- branches/eglibc-2_14/libc/version.h (original)
+++ branches/eglibc-2_14/libc/version.h Tue Oct 25 17:10:11 2011
@@ -1,4 +1,4 @@
/* This file just defines the current version number of libc. */
#define RELEASE "stable"
-#define VERSION "2.14"
+#define VERSION "2.14.1"
_______________________________________________
Commits mailing list
Commits@xxxxxxxxxx
http://eglibc.org/cgi-bin/mailman/listinfo/commits