[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[commits] r11997 - in /fsf/glibc-2_11-branch/libc: ./ elf/ hurd/ hurd/hurd/ malloc/ manual/ nptl/ nptl/sysdeps/unix/sysv/linux/i386/ p...
- To: commits@xxxxxxxxxx
- Subject: [commits] r11997 - in /fsf/glibc-2_11-branch/libc: ./ elf/ hurd/ hurd/hurd/ malloc/ manual/ nptl/ nptl/sysdeps/unix/sysv/linux/i386/ p...
- From: eglibc@xxxxxxxxxx
- Date: Tue, 09 Nov 2010 08:09:28 -0000
Author: eglibc
Date: Tue Nov 9 00:09:28 2010
New Revision: 11997
Log:
Import glibc-2.11 for 2010-11-09
Added:
fsf/glibc-2_11-branch/libc/nptl/sysdeps/unix/sysv/linux/i386/Makefile (with props)
fsf/glibc-2_11-branch/libc/posix/bug-regex31.c
fsf/glibc-2_11-branch/libc/posix/bug-regex31.input
fsf/glibc-2_11-branch/libc/scripts/data/localplt-s390-linux-gnu.data
fsf/glibc-2_11-branch/libc/scripts/data/localplt-s390x-linux-gnu.data
fsf/glibc-2_11-branch/libc/sysdeps/i386/elf/Makefile (with props)
Modified:
fsf/glibc-2_11-branch/libc/ChangeLog
fsf/glibc-2_11-branch/libc/INSTALL
fsf/glibc-2_11-branch/libc/Makeconfig
fsf/glibc-2_11-branch/libc/config.make.in
fsf/glibc-2_11-branch/libc/configure
fsf/glibc-2_11-branch/libc/configure.in
fsf/glibc-2_11-branch/libc/elf/Makefile
fsf/glibc-2_11-branch/libc/elf/dl-open.c
fsf/glibc-2_11-branch/libc/elf/dl-sysdep.c
fsf/glibc-2_11-branch/libc/elf/rtld-Rules
fsf/glibc-2_11-branch/libc/hurd/hurd/fd.h
fsf/glibc-2_11-branch/libc/hurd/hurdselect.c
fsf/glibc-2_11-branch/libc/hurd/lookup-at.c
fsf/glibc-2_11-branch/libc/malloc/malloc.c
fsf/glibc-2_11-branch/libc/malloc/mcheck.c
fsf/glibc-2_11-branch/libc/manual/arith.texi
fsf/glibc-2_11-branch/libc/manual/locale.texi
fsf/glibc-2_11-branch/libc/manual/memory.texi
fsf/glibc-2_11-branch/libc/nptl/ChangeLog
fsf/glibc-2_11-branch/libc/nptl/Makefile
fsf/glibc-2_11-branch/libc/posix/Makefile
fsf/glibc-2_11-branch/libc/posix/regcomp.c
fsf/glibc-2_11-branch/libc/resolv/res_init.c
fsf/glibc-2_11-branch/libc/stdlib/strtod_l.c
fsf/glibc-2_11-branch/libc/sysdeps/mach/hurd/linkat.c
fsf/glibc-2_11-branch/libc/sysdeps/s390/s390-32/__longjmp.c
fsf/glibc-2_11-branch/libc/sysdeps/s390/s390-64/__longjmp.c
fsf/glibc-2_11-branch/libc/sysdeps/unix/sysv/linux/check_pf.c
fsf/glibc-2_11-branch/libc/sysdeps/unix/sysv/linux/getdents.c
fsf/glibc-2_11-branch/libc/sysdeps/unix/sysv/linux/ttyname.c
fsf/glibc-2_11-branch/libc/sysdeps/unix/sysv/linux/ttyname_r.c
fsf/glibc-2_11-branch/libc/sysdeps/unix/sysv/linux/x86_64/____longjmp_chk.S
fsf/glibc-2_11-branch/libc/sysdeps/unix/sysv/linux/x86_64/sys/epoll.h
fsf/glibc-2_11-branch/libc/sysdeps/x86_64/cacheinfo.c
Modified: fsf/glibc-2_11-branch/libc/ChangeLog
==============================================================================
--- fsf/glibc-2_11-branch/libc/ChangeLog (original)
+++ fsf/glibc-2_11-branch/libc/ChangeLog Tue Nov 9 00:09:28 2010
@@ -1,9 +1,15 @@
-2010-10-25 Ulrich Drepper <drepper@xxxxxxxxxx>
-
- [BZ #12159]
- * sysdeps/x86_64/multiarch/strchr.S: Fix propagation of search byte
- into all bytes of SSE register.
- Patch by Richard Li <richardpku@xxxxxxxxx>.
+2010-10-24 Ulrich Drepper <drepper@xxxxxxxxxx>
+
+ [BZ #12140]
+ * malloc/malloc.c (_int_free): Fill correct number of bytes when
+ perturbing.
+
+2010-09-09 Andreas Schwab <schwab@xxxxxxxxxx>
+
+ * Makeconfig (sysd-rules-patterns): Add rtld-%:rtld-%.
+ (sysd-rules-targets): Remove duplicates.
+ * elf/rtld-Rules ($(objpfx)rtld-%.os): Add pattern rules with
+ rtld-%.$o dependency.
2010-10-22 Andreas Schwab <schwab@xxxxxxxxxx>
@@ -20,6 +26,174 @@
(do_preload): Use __RTLD_SECURE instead of is_preloaded.
(dlmopen_doit): Add __RTLD_SECURE to mode bits.
+2010-10-18 Andreas Schwab <schwab@xxxxxxxxxx>
+
+ * elf/dl-open.c (dl_open_worker): Don't expand DST here, let
+ _dl_map_object do it.
+
+2010-10-15 Andreas Schwab <schwab@xxxxxxxxxx>
+
+ * scripts/data/localplt-s390-linux-gnu.data: New file.
+ * scripts/data/localplt-s390x-linux-gnu.data: New file.
+
+2010-10-12 Ulrich Drepper <drepper@xxxxxxxxxx>
+
+ [BZ #12078]
+ * posix/regcomp.c (parse_branch): One more memory leak plugged.
+ * posix/bug-regex31.input: Add test case.
+
+2010-10-11 Ulrich Drepper <drepper@xxxxxxxxx>
+
+ * posix/bug-regex31.c: Rewrite to run multiple tests from stdin.
+ * posix/bug-regex31.input: New file.
+
+ [BZ #12078]
+ * posix/regcomp.c (parse_branch): Free memory when allocation failed.
+ (parse_sub_exp): Fix last change, use postorder.
+
+ * posix/bug-regex31.c: New file.
+ * posix/Makefile: Add rules to build and run bug-regex31.
+
+ * posix/regcomp.c (parse_bracket_exp): Add missing re_free calls.
+
+ [BZ #12078]
+ * posix/regcomp.c (parse_sub_exp): Free tree data when it is not used.
+
+ [BZ #12093]
+ * sysdeps/unix/sysv/linux/check_pf.c (__check_pf): ->ifa_addr might
+ be NULL.
+
+2010-09-15 Joseph Myers <joseph@xxxxxxxxxxxxxxxx>
+
+ * sysdeps/unix/sysv/linux/getdents.c (__GETDENTS): When
+ implementing getdents64 using getdents syscall, set d_type if
+ __ASSUME_GETDENTS32_D_TYPE.
+
+2010-09-14 Andreas Schwab <schwab@xxxxxxxxxx>
+
+ * sysdeps/s390/s390-32/__longjmp.c (__longjmp): Define register
+ variables after CHECK_SP call.
+ * sysdeps/s390/s390-64/__longjmp.c (__longjmp): Likewise.
+
+2010-09-08 Chung-Lin Tang <cltang@xxxxxxxxxxxxxxxx>
+ Ulrich Drepper <drepper@xxxxxxxxxx>
+
+ [BZ #11968]
+ * sysdeps/unix/sysv/linux/x86_64/____longjmp_chk.S
+ (____longjmp_chk): Use %ebx for saving value across system call.
+ Add unwind info.
+
+2010-08-31 Mike Frysinger <vapier@xxxxxxxxxx>
+
+ * sysdeps/unix/sysv/linux/x86_64/sys/epoll.h: Fix typo.
+
+2010-08-31 Andreas Schwab <schwab@xxxxxxxxxx>
+
+ [BZ #7066]
+ * stdlib/strtod_l.c (____STRTOF_INTERNAL): Fix array overflow when
+ shifting retval into place.
+
+2010-09-14 Ulrich Drepper <drepper@xxxxxxxxxx>
+
+ * resolv/res_init.c (__res_vinit): Count the default server we added.
+
+2010-08-25 Ulrich Drepper <drepper@xxxxxxxxxx>
+
+ [BZ #10851]
+ * resolv/res_init.c (__res_vinit): When no server address at all
+ is given default to loopback.
+
+2010-08-12 H.J. Lu <hongjiu.lu@xxxxxxxxx>
+
+ * sysdeps/i386/elf/Makefile: New file.
+
+2010-07-31 Samuel Thibault <samuel.thibault@xxxxxxxxxxxx>
+
+ * hurd/hurdselect.c (_hurd_select): Round timeout up instead of down
+ when converting to ms.
+
+2010-07-29 Roland McGrath <roland@xxxxxxxxxx>
+
+ [BZ 11856]
+ * manual/locale.texi (Yes-or-No Questions): Fix example code.
+
+2010-07-27 Andreas Schwab <schwab@xxxxxxxxxx>
+
+ * manual/memory.texi (Malloc Tunable Parameters): Document
+ M_PERTURB.
+
+2010-07-26 Roland McGrath <roland@xxxxxxxxxx>
+
+ [BZ #11840]
+ * configure.in (-fgnu89-inline check): Set and substitute
+ gnu89_inline, not libc_cv_gnu89_inline.
+ * configure: Regenerated.
+ * config.make.in (gnu89-inline-CFLAGS): Use @gnu89_inline@.
+
+2010-07-20 Roland McGrath <roland@xxxxxxxxxx>
+
+ * elf/dl-sysdep.c (_dl_important_hwcaps): Add dsocaps mask to
+ dl_hwcap_mask as well as dl_hwcap. Without this, dsocaps matching in
+ ld.so.cache was broken. With it, there is no way to disable dsocaps
+ like LD_HWCAP_MASK can disable hwcaps.
+
+2010-07-05 Roland McGrath <roland@xxxxxxxxxx>
+
+ * manual/arith.texi (Rounding Functions): Fix rint description
+ implicit in round description.
+
+2010-07-02 Ulrich Drepper <drepper@xxxxxxxxxx>
+
+ * elf/Makefile: Fix linking for a few tests to make recent linker
+ happy.
+
+2010-06-02 Emilio Pozuelo Monfort <pochu27@xxxxxxxxx>
+
+ * hurd/lookup-at.c (__file_name_lookup_at): Accept
+ AT_SYMLINK_FOLLOW in AT_FLAGS. Fail with EINVAL if both
+ AT_SYMLINK_FOLLOW and AT_SYMLINK_NOFOLLOW are present
+ in AT_FLAGS.
+ * hurd/hurd/fd.h (__file_name_lookup_at): Update comment.
+ * sysdeps/mach/hurd/linkat.c (linkat): Pass O_NOLINK in FLAGS.
+
+2010-11-03 H.J. Lu <hongjiu.lu@xxxxxxxxx>
+
+ [BZ #12191]
+ * sysdeps/x86_64/cacheinfo.c (init_cacheinfo): Round
+ __x86_64_data_cache_size_half, __x86_64_data_cache_size
+ __x86_64_shared_cache_size_half and __x86_64_shared_cache_size,
+ to multiple of 256 bytes.
+
+2010-11-03 Ulrich Drepper <drepper@xxxxxxxxx>
+
+ [BZ #12167]
+ * sysdeps/unix/sysv/linux/ttyname.c (ttyname): Recognize new mangling
+ of inacessible symlinks. Verify result of symlink before returning it.
+ * sysdeps/unix/sysv/linux/ttyname_r.c (__ttyname_r): Likewise.
+ Patch mostly by Miklos Szeredi <miklos@xxxxxxxxxx>.
+
+2010-10-25 Ulrich Drepper <drepper@xxxxxxxxxx>
+
+ [BZ #12159]
+ * sysdeps/x86_64/multiarch/strchr.S: Fix propagation of search byte
+ into all bytes of SSE register.
+ Patch by Richard Li <richardpku@xxxxxxxxx>.
+
+2010-10-22 Andreas Schwab <schwab@xxxxxxxxxx>
+
+ * include/dlfcn.h (__RTLD_SECURE): Define.
+ * elf/dl-load.c (_dl_map_object): Remove preloaded parameter. Use
+ mode & __RTLD_SECURE instead.
+ (open_path): Rename preloaded parameter to secure.
+ * sysdeps/generic/ldsodefs.h (_dl_map_object): Adjust declaration.
+ * elf/dl-open.c (dl_open_worker): Adjust call to _dl_map_object.
+ * elf/dl-deps.c (openaux): Likewise.
+ * elf/rtld.c (struct map_args): Remove is_preloaded.
+ (map_doit): Don't use it.
+ (dl_main): Likewise.
+ (do_preload): Use __RTLD_SECURE instead of is_preloaded.
+ (dlmopen_doit): Add __RTLD_SECURE to mode bits.
+
2010-10-06 Ulrich Drepper <drepper@xxxxxxxxx>
* string/bug-strstr1.c: New file.
@@ -32,6 +206,9 @@
when skipping input due to the shift table.
2010-10-03 Ulrich Drepper <drepper@xxxxxxxxx>
+
+ [BZ #12005]
+ * malloc/mcheck.c: Handle large requests.
[BZ #12077]
* sysdeps/x86_64/strcmp.S: Fix handling of remaining bytes in buffer
Modified: fsf/glibc-2_11-branch/libc/INSTALL
==============================================================================
--- fsf/glibc-2_11-branch/libc/INSTALL (original)
+++ fsf/glibc-2_11-branch/libc/INSTALL Tue Nov 9 00:09:28 2010
@@ -317,11 +317,12 @@
Check the FAQ for any special compiler issues on particular
platforms.
- * GNU `binutils' 2.15 or later
+ * GNU `binutils'
You must use GNU `binutils' (as and ld) to build the GNU C library.
No other assembler or linker has the necessary functionality at the
- moment.
+ moment. The configure scripts checks for the appropriate version
+ for the platform. Too-old versions will prevent building glibc.
* GNU `texinfo' 3.12f
@@ -460,4 +461,3 @@
errors or omissions in this manual, please report them to the bug
database. If you refer to specific sections of the manual, please
include the section names for easier identification.
-
Modified: fsf/glibc-2_11-branch/libc/Makeconfig
==============================================================================
--- fsf/glibc-2_11-branch/libc/Makeconfig (original)
+++ fsf/glibc-2_11-branch/libc/Makeconfig Tue Nov 9 00:09:28 2010
@@ -686,7 +686,7 @@
-include $(..)include/libc-symbols.h $(sysdep-CPPFLAGS) \
$(CPPFLAGS-$(suffix $@)) \
$(foreach lib,$(libof-$(basename $(@F))) \
- $(libof-$(<F)) $(libof-$(@F)),$(CPPFLAGS-$(lib))) \
+ $(libof-$(<F)) $(libof-$(@F)),$(CPPFLAGS-$(lib))) \
$(CPPFLAGS-$(<F)) $(CPPFLAGS-$(@F)) $(CPPFLAGS-$(basename $(@F)))
override CFLAGS = -std=gnu99 $(gnu89-inline-CFLAGS) \
$(filter-out %frame-pointer,$(+cflags)) $(+gccwarn-c) \
@@ -957,7 +957,7 @@
# emitted into sysd-rules. A sysdeps Makeconfig fragment can
# add its own special object file prefix to this list with e.g. foo-%:%
# to have foo-*.? compiled from *.? using $(foo-CPPFLAGS).
-sysd-rules-patterns := %:% rtld-%:% m_%:s_%
+sysd-rules-patterns := %:% rtld-%:rtld-% rtld-%:% m_%:s_%
# Let sysdeps/ subdirs contain a Makeconfig fragment for us to include here.
sysdep-makeconfigs := $(wildcard $(+sysdep_dirs:=/Makeconfig))
@@ -966,8 +966,8 @@
endif
# Compute just the target patterns. Makeconfig has set sysd-rules-patterns.
-sysd-rules-targets := $(foreach p,$(sysd-rules-patterns),\
- $(firstword $(subst :, ,$p)))
+sysd-rules-targets := $(sort $(foreach p,$(sysd-rules-patterns),\
+ $(firstword $(subst :, ,$p))))
endif # Makeconfig not yet included
Modified: fsf/glibc-2_11-branch/libc/config.make.in
==============================================================================
--- fsf/glibc-2_11-branch/libc/config.make.in (original)
+++ fsf/glibc-2_11-branch/libc/config.make.in Tue Nov 9 00:09:28 2010
@@ -58,7 +58,7 @@
enable-check-abi = @enable_check_abi@
have-forced-unwind = @libc_cv_forced_unwind@
have-fpie = @libc_cv_fpie@
-gnu89-inline-CFLAGS = @libc_cv_gnu89_inline@
+gnu89-inline-CFLAGS = @gnu89_inline@
have-ssp = @libc_cv_ssp@
have-selinux = @have_selinux@
have-libaudit = @have_libaudit@
Modified: fsf/glibc-2_11-branch/libc/configure
==============================================================================
--- fsf/glibc-2_11-branch/libc/configure (original)
+++ fsf/glibc-2_11-branch/libc/configure Tue Nov 9 00:09:28 2010
@@ -681,7 +681,7 @@
exceptions
no_whole_archive
libc_cv_have_initfini
-libc_cv_gnu89_inline
+gnu89_inline
libc_cv_ssp
fno_unit_at_a_time
libc_cv_hashstyle
@@ -6890,9 +6890,9 @@
{ $as_echo "$as_me:$LINENO: result: $libc_cv_gnu89_inline" >&5
$as_echo "$libc_cv_gnu89_inline" >&6; }
if test $libc_cv_gnu89_inline = yes; then
- libc_cv_gnu89_inline=-fgnu89-inline
-else
- libc_cv_gnu89_inline=
+ gnu89_inline=-fgnu89-inline
+else
+ gnu89_inline=
fi
Modified: fsf/glibc-2_11-branch/libc/configure.in
==============================================================================
--- fsf/glibc-2_11-branch/libc/configure.in (original)
+++ fsf/glibc-2_11-branch/libc/configure.in Tue Nov 9 00:09:28 2010
@@ -1776,11 +1776,11 @@
fi
rm -f conftest*])
if test $libc_cv_gnu89_inline = yes; then
- libc_cv_gnu89_inline=-fgnu89-inline
-else
- libc_cv_gnu89_inline=
-fi
-AC_SUBST(libc_cv_gnu89_inline)
+ gnu89_inline=-fgnu89-inline
+else
+ gnu89_inline=
+fi
+AC_SUBST(gnu89_inline)
if test $elf != yes; then
AC_CACHE_CHECK(for .init and .fini sections, libc_cv_have_initfini,
Modified: fsf/glibc-2_11-branch/libc/elf/Makefile
==============================================================================
--- fsf/glibc-2_11-branch/libc/elf/Makefile (original)
+++ fsf/glibc-2_11-branch/libc/elf/Makefile Tue Nov 9 00:09:28 2010
@@ -759,11 +759,11 @@
$(objpfx)tst-tls9: $(libdl)
$(objpfx)tst-tls9.out: $(objpfx)tst-tlsmod5.so $(objpfx)tst-tlsmod6.so
-$(objpfx)tst-tls10: $(objpfx)tst-tlsmod8.so
-
-$(objpfx)tst-tls11: $(objpfx)tst-tlsmod10.so
-
-$(objpfx)tst-tls12: $(objpfx)tst-tlsmod12.so
+$(objpfx)tst-tls10: $(objpfx)tst-tlsmod8.so $(objpfx)tst-tlsmod7.so
+
+$(objpfx)tst-tls11: $(objpfx)tst-tlsmod10.so $(objpfx)tst-tlsmod9.so
+
+$(objpfx)tst-tls12: $(objpfx)tst-tlsmod12.so $(objpfx)tst-tlsmod11.so
$(objpfx)tst-tls13: $(libdl)
$(objpfx)tst-tls13.out: $(objpfx)tst-tlsmod13a.so
Modified: fsf/glibc-2_11-branch/libc/elf/dl-open.c
==============================================================================
--- fsf/glibc-2_11-branch/libc/elf/dl-open.c (original)
+++ fsf/glibc-2_11-branch/libc/elf/dl-open.c Tue Nov 9 00:09:28 2010
@@ -220,35 +220,6 @@
assert (_dl_debug_initialize (0, args->nsid)->r_state == RT_CONSISTENT);
- /* Maybe we have to expand a DST. */
- if (__builtin_expect (dst != NULL, 0))
- {
- size_t len = strlen (file);
-
- /* Determine how much space we need. We have to allocate the
- memory locally. */
- size_t required = DL_DST_REQUIRED (call_map, file, len,
- _dl_dst_count (dst, 0));
-
- /* Get space for the new file name. */
- char *new_file = (char *) alloca (required + 1);
-
- /* Generate the new file name. */
- _dl_dst_substitute (call_map, file, new_file, 0);
-
- /* If the substitution failed don't try to load. */
- if (*new_file == '\0')
- _dl_signal_error (0, "dlopen", NULL,
- N_("empty dynamic string token substitution"));
-
- /* Now we have a new file name. */
- file = new_file;
-
- /* It does not matter whether call_map is set even if we
- computed it only because of the DST. Since the path contains
- a slash the value is not used. See dl-load.c. */
- }
-
/* Load the named object. */
struct link_map *new;
args->map = new = _dl_map_object (call_map, file, lt_loaded, 0,
Modified: fsf/glibc-2_11-branch/libc/elf/dl-sysdep.c
==============================================================================
--- fsf/glibc-2_11-branch/libc/elf/dl-sysdep.c (original)
+++ fsf/glibc-2_11-branch/libc/elf/dl-sysdep.c Tue Nov 9 00:09:28 2010
@@ -424,6 +424,11 @@
{
const ElfW(Word) mask = ((const ElfW(Word) *) dsocaps)[-1];
GLRO(dl_hwcap) |= (uint64_t) mask << _DL_FIRST_EXTRA;
+ /* Note that we add the dsocaps to the set already chosen by the
+ LD_HWCAP_MASK environment variable (or default HWCAP_IMPORTANT).
+ So there is no way to request ignoring an OS-supplied dsocap
+ string and bit like you can ignore an OS-supplied HWCAP bit. */
+ GLRO(dl_hwcap_mask) |= (uint64_t) mask << _DL_FIRST_EXTRA;
size_t len;
for (const char *p = dsocaps; p < dsocaps + dsocapslen; p += len + 1)
{
Modified: fsf/glibc-2_11-branch/libc/elf/rtld-Rules
==============================================================================
--- fsf/glibc-2_11-branch/libc/elf/rtld-Rules (original)
+++ fsf/glibc-2_11-branch/libc/elf/rtld-Rules Tue Nov 9 00:09:28 2010
@@ -1,6 +1,6 @@
# Subroutine makefile for compiling libc modules linked into dynamic linker.
-# Copyright (C) 2002, 2003, 2005, 2006, 2008 Free Software Foundation, Inc.
+# Copyright (C) 2002,2003,2005,2006,2008,2010 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
@@ -56,7 +56,7 @@
# Use the verbose option of ar and tar when not running silently.
ifeq "$(findstring s,$(MAKEFLAGS))" "" # if not -s
verbose := v
-else # -s
+else # -s
verbose :=
endif # not -s
@@ -93,6 +93,12 @@
# These are the basic compilation rules corresponding to the Makerules ones.
# The sysd-rules generated makefile already defines pattern rules for rtld-%
# targets built from sysdeps source files.
+$(objpfx)rtld-%.os: rtld-%.S $(before-compile)
+ $(compile-command.S) $(rtld-CPPFLAGS)
+$(objpfx)rtld-%.os: rtld-%.s $(before-compile)
+ $(compile-command.s) $(rtld-CPPFLAGS)
+$(objpfx)rtld-%.os: rtld-%.c $(before-compile)
+ $(compile-command.c) $(rtld-CPPFLAGS)
$(objpfx)rtld-%.os: %.S $(before-compile)
$(compile-command.S) $(rtld-CPPFLAGS)
$(objpfx)rtld-%.os: %.s $(before-compile)
@@ -101,6 +107,9 @@
$(compile-command.c) $(rtld-CPPFLAGS)
# The rules for generated source files.
+$(objpfx)rtld-%.os: $(objpfx)rtld-%.S $(before-compile); $(compile-command.S)
+$(objpfx)rtld-%.os: $(objpfx)rtld-%.s $(before-compile); $(compile-command.s)
+$(objpfx)rtld-%.os: $(objpfx)rtld-%.c $(before-compile); $(compile-command.c)
$(objpfx)rtld-%.os: $(objpfx)%.S $(before-compile); $(compile-command.S)
$(objpfx)rtld-%.os: $(objpfx)%.s $(before-compile); $(compile-command.s)
$(objpfx)rtld-%.os: $(objpfx)%.c $(before-compile); $(compile-command.c)
Modified: fsf/glibc-2_11-branch/libc/hurd/hurd/fd.h
==============================================================================
--- fsf/glibc-2_11-branch/libc/hurd/hurd/fd.h (original)
+++ fsf/glibc-2_11-branch/libc/hurd/hurd/fd.h Tue Nov 9 00:09:28 2010
@@ -254,8 +254,9 @@
const sigset_t *sigmask);
/* Variant of file_name_lookup used in *at function implementations.
- AT_FLAGS should contain only AT_SYMLINK_NOFOLLOW; other bits
- cause EINVAL. */
+ AT_FLAGS may only contain AT_SYMLINK_FOLLOW or AT_SYMLINK_NOFOLLOW,
+ which will remove and add O_NOLINK from FLAGS respectively.
+ Other bits cause EINVAL. */
extern file_t __file_name_lookup_at (int fd, int at_flags,
const char *file_name,
int flags, mode_t mode);
Modified: fsf/glibc-2_11-branch/libc/hurd/hurdselect.c
==============================================================================
--- fsf/glibc-2_11-branch/libc/hurd/hurdselect.c (original)
+++ fsf/glibc-2_11-branch/libc/hurd/hurdselect.c Tue Nov 9 00:09:28 2010
@@ -52,7 +52,7 @@
int firstfd, lastfd;
mach_msg_timeout_t to = (timeout != NULL ?
(timeout->tv_sec * 1000 +
- timeout->tv_nsec / 1000000) :
+ (timeout->tv_nsec + 999999) / 1000000) :
0);
struct
{
Modified: fsf/glibc-2_11-branch/libc/hurd/lookup-at.c
==============================================================================
--- fsf/glibc-2_11-branch/libc/hurd/lookup-at.c (original)
+++ fsf/glibc-2_11-branch/libc/hurd/lookup-at.c Tue Nov 9 00:09:28 2010
@@ -30,8 +30,14 @@
error_t err;
file_t result;
+ if ((at_flags & AT_SYMLINK_FOLLOW) && (at_flags & AT_SYMLINK_NOFOLLOW))
+ return (__hurd_fail (EINVAL), MACH_PORT_NULL);
+
flags |= (at_flags & AT_SYMLINK_NOFOLLOW) ? O_NOLINK : 0;
at_flags &= ~AT_SYMLINK_NOFOLLOW;
+ if (at_flags & AT_SYMLINK_FOLLOW)
+ flags &= ~O_NOLINK;
+ at_flags &= ~AT_SYMLINK_FOLLOW;
if (at_flags != 0)
return (__hurd_fail (EINVAL), MACH_PORT_NULL);
Modified: fsf/glibc-2_11-branch/libc/malloc/malloc.c
==============================================================================
--- fsf/glibc-2_11-branch/libc/malloc/malloc.c (original)
+++ fsf/glibc-2_11-branch/libc/malloc/malloc.c Tue Nov 9 00:09:28 2010
@@ -4850,7 +4850,7 @@
}
if (__builtin_expect (perturb_byte, 0))
- free_perturb (chunk2mem(p), size - SIZE_SZ);
+ free_perturb (chunk2mem(p), size - 2 * SIZE_SZ);
set_fastchunks(av);
fb = &fastbin (av, fastbin_index(size));
@@ -4938,7 +4938,7 @@
}
if (__builtin_expect (perturb_byte, 0))
- free_perturb (chunk2mem(p), size - SIZE_SZ);
+ free_perturb (chunk2mem(p), size - 2 * SIZE_SZ);
/* consolidate backward */
if (!prev_inuse(p)) {
Modified: fsf/glibc-2_11-branch/libc/malloc/mcheck.c
==============================================================================
--- fsf/glibc-2_11-branch/libc/malloc/mcheck.c (original)
+++ fsf/glibc-2_11-branch/libc/malloc/mcheck.c Tue Nov 9 00:09:28 2010
@@ -1,5 +1,6 @@
/* Standard debugging hooks for `malloc'.
- Copyright (C) 1990-1997,1999,2000-2002,2007 Free Software Foundation, Inc.
+ Copyright (C) 1990-1997,1999,2000-2002,2007,2010
+ Free Software Foundation, Inc.
This file is part of the GNU C Library.
Written May 1989 by Mike Haertel.
@@ -25,6 +26,7 @@
# include <stdint.h>
# include <stdio.h>
# include <libintl.h>
+# include <errno.h>
#endif
/* Old hook values. */
@@ -209,6 +211,12 @@
if (pedantic)
mcheck_check_all ();
+ if (size > ~((size_t) 0) - (sizeof (struct hdr) + 1))
+ {
+ __set_errno (ENOMEM);
+ return NULL;
+ }
+
__malloc_hook = old_malloc_hook;
if (old_malloc_hook != NULL)
hdr = (struct hdr *) (*old_malloc_hook) (sizeof (struct hdr) + size + 1,
@@ -241,6 +249,12 @@
slop = (sizeof *hdr + alignment - 1) & -alignment;
+ if (size > ~((size_t) 0) - (slop + 1))
+ {
+ __set_errno (ENOMEM);
+ return NULL;
+ }
+
__memalign_hook = old_memalign_hook;
if (old_memalign_hook != NULL)
block = (*old_memalign_hook) (alignment, slop + size + 1, caller);
@@ -275,6 +289,12 @@
if (pedantic)
mcheck_check_all ();
+
+ if (size > ~((size_t) 0) - (sizeof (struct hdr) + 1))
+ {
+ __set_errno (ENOMEM);
+ return NULL;
+ }
if (ptr)
{
Modified: fsf/glibc-2_11-branch/libc/manual/arith.texi
==============================================================================
--- fsf/glibc-2_11-branch/libc/manual/arith.texi (original)
+++ fsf/glibc-2_11-branch/libc/manual/arith.texi Tue Nov 9 00:09:28 2010
@@ -1407,7 +1407,8 @@
@comment ISO
@deftypefunx {long double} roundl (long double @var{x})
These functions are similar to @code{rint}, but they round halfway
-cases away from zero instead of to the nearest even integer.
+cases away from zero instead of to the nearest integer (or other
+current rounding mode).
@end deftypefun
@comment math.h
Modified: fsf/glibc-2_11-branch/libc/manual/locale.texi
==============================================================================
--- fsf/glibc-2_11-branch/libc/manual/locale.texi (original)
+++ fsf/glibc-2_11-branch/libc/manual/locale.texi Tue Nov 9 00:09:28 2010
@@ -1210,7 +1210,7 @@
/* @r{Prepare the @code{getline} call.} */
line = NULL;
len = 0;
- while (getline (&line, &len, stdout) >= 0)
+ while (getline (&line, &len, stdin) >= 0)
@{
/* @r{Check the response.} */
int res = rpmatch (line);
Modified: fsf/glibc-2_11-branch/libc/manual/memory.texi
==============================================================================
--- fsf/glibc-2_11-branch/libc/manual/memory.texi (original)
+++ fsf/glibc-2_11-branch/libc/manual/memory.texi Tue Nov 9 00:09:28 2010
@@ -702,6 +702,11 @@
@item M_MMAP_MAX
The maximum number of chunks to allocate with @code{mmap}. Setting this
to zero disables all use of @code{mmap}.
+@item M_PERTURB
+If non-zero, memory blocks are filled with values depending on some
+low order bits of this parameter when they are allocated (except when
+allocated by @code{calloc}) and freed. This can be used to debug the
+use of uninitialized or freed heap memory.
@end table
@end deftypefun
Modified: fsf/glibc-2_11-branch/libc/nptl/ChangeLog
==============================================================================
--- fsf/glibc-2_11-branch/libc/nptl/ChangeLog (original)
+++ fsf/glibc-2_11-branch/libc/nptl/ChangeLog Tue Nov 9 00:09:28 2010
@@ -1,3 +1,18 @@
+2010-10-13 H.J. Lu <hongjiu.lu@xxxxxxxxx>
+
+ [BZ #12113]
+ * sysdeps/x86_64/pthreaddef.h (TCB_ALIGNMENT): Changed to 32.
+ * sysdeps/x86_64/tls.h (TLS_TCB_ALIGN): Defined with alignment
+ of "struct pthread".
+
+2010-08-12 H.J. Lu <hongjiu.lu@xxxxxxxxx>
+
+ * nptl/sysdeps/unix/sysv/linux/i386/Makefile: New file.
+
+2010-07-01 Ulrich Drepper <drepper@xxxxxxxxxx>
+
+ * Makefile (tst-_res1): Add tst-_res1mod1 to dependency list.
+
2010-10-13 H.J. Lu <hongjiu.lu@xxxxxxxxx>
[BZ #12113]
Modified: fsf/glibc-2_11-branch/libc/nptl/Makefile
==============================================================================
--- fsf/glibc-2_11-branch/libc/nptl/Makefile (original)
+++ fsf/glibc-2_11-branch/libc/nptl/Makefile Tue Nov 9 00:09:28 2010
@@ -489,7 +489,8 @@
$(objpfx)tst-_res1mod2.so: $(objpfx)tst-_res1mod1.so
LDFLAGS-tst-_res1mod1.so = -Wl,-soname,tst-_res1mod1.so
LDFLAGS-tst-_res1mod2.so = -Wl,-soname,tst-_res1mod2.so
-$(objpfx)tst-_res1: $(objpfx)tst-_res1mod2.so $(shared-thread-library)
+$(objpfx)tst-_res1: $(objpfx)tst-_res1mod1.so $(objpfx)tst-_res1mod2.so \
+ $(shared-thread-library)
else
$(objpfx)tst-cond11: $(common-objpfx)rt/librt.a
$(objpfx)tst-cond19: $(common-objpfx)rt/librt.a
Added: fsf/glibc-2_11-branch/libc/nptl/sysdeps/unix/sysv/linux/i386/Makefile
==============================================================================
Binary file - no diff available.
Propchange: fsf/glibc-2_11-branch/libc/nptl/sysdeps/unix/sysv/linux/i386/Makefile
------------------------------------------------------------------------------
svn:mime-type = audio/x-669-mod
Modified: fsf/glibc-2_11-branch/libc/posix/Makefile
==============================================================================
--- fsf/glibc-2_11-branch/libc/posix/Makefile (original)
+++ fsf/glibc-2_11-branch/libc/posix/Makefile Tue Nov 9 00:09:28 2010
@@ -82,7 +82,7 @@
bug-regex17 bug-regex18 bug-regex19 bug-regex20 \
bug-regex21 bug-regex22 bug-regex23 bug-regex24 \
bug-regex25 bug-regex26 bug-regex27 bug-regex28 \
- bug-regex29 bug-regex30 \
+ bug-regex29 bug-regex30 bug-regex31 \
tst-nice tst-nanosleep tst-regex2 \
transbug tst-rxspencer tst-pcre tst-boost \
bug-ga1 tst-vfork1 tst-vfork2 tst-vfork3 tst-waitid \
@@ -109,6 +109,7 @@
annexc annexc.out wordexp-tst.out bug-regex2-mem \
bug-regex2.mtrace bug-regex14-mem bug-regex14.mtrace \
bug-regex21-mem bug-regex21.mtrace \
+ bug-regex31-mem bug-regex31.mtrace \
tst-rxspencer-mem tst-rxspencer.mtrace tst-getconf.out \
tst-pcre-mem tst-pcre.mtrace tst-boost-mem tst-boost.mtrace \
bug-ga2.mtrace bug-ga2-mem bug-glob2.mtrace bug-glob2-mem \
@@ -222,7 +223,7 @@
tests: $(objpfx)annexc.out
ifeq (no,$(cross-compiling))
tests: $(objpfx)bug-regex2-mem $(objpfx)bug-regex14-mem \
- $(objpfx)bug-regex21-mem $(objpfx)tst-rxspencer-mem \
+ $(objpfx)bug-regex21-mem $(objpfx)bug-regex31-mem $(objpfx)tst-rxspencer-mem\
$(objpfx)tst-pcre-mem $(objpfx)tst-boost-mem $(objpfx)tst-getconf.out \
$(objpfx)bug-glob2-mem $(objpfx)tst-vfork3-mem
xtests: $(objpfx)bug-ga2-mem
@@ -250,6 +251,11 @@
$(objpfx)bug-regex21-mem: $(objpfx)bug-regex21.out
$(common-objpfx)malloc/mtrace $(objpfx)bug-regex21.mtrace > $@
+
+bug-regex31-ENV = MALLOC_TRACE=$(objpfx)bug-regex31.mtrace
+
+$(objpfx)bug-regex31-mem: $(objpfx)bug-regex31.out
+ $(common-objpfx)malloc/mtrace $(objpfx)bug-regex31.mtrace > $@
tst-vfork3-ENV = MALLOC_TRACE=$(objpfx)tst-vfork3.mtrace
Added: fsf/glibc-2_11-branch/libc/posix/bug-regex31.c
==============================================================================
--- fsf/glibc-2_11-branch/libc/posix/bug-regex31.c (added)
+++ fsf/glibc-2_11-branch/libc/posix/bug-regex31.c Tue Nov 9 00:09:28 2010
@@ -1,0 +1,36 @@
+#include <mcheck.h>
+#include <regex.h>
+#include <stdio.h>
+#include <sys/types.h>
+
+int
+main (void)
+{
+ mtrace ();
+
+ int res = 0;
+ char *buf = NULL;
+ size_t len = 0;
+ while (! feof (stdin))
+ {
+ ssize_t n = getline (&buf, &len, stdin);
+ if (n <= 0)
+ break;
+ if (buf[n - 1] == '\n')
+ buf[n - 1] = '\0';
+
+ regex_t regex;
+ int rc = regcomp (®ex, buf, REG_EXTENDED);
+ if (rc != 0)
+ printf ("%s: Error %d (expected)\n", buf, rc);
+ else
+ {
+ printf ("%s: succeeded !\n", buf);
+ res = 1;
+ }
+ }
+
+ free (buf);
+
+ return 0;
+}
Added: fsf/glibc-2_11-branch/libc/posix/bug-regex31.input
==============================================================================
--- fsf/glibc-2_11-branch/libc/posix/bug-regex31.input (added)
+++ fsf/glibc-2_11-branch/libc/posix/bug-regex31.input Tue Nov 9 00:09:28 2010
@@ -1,0 +1,4 @@
+[[][
+([0]
+([0]a
+([0]([0])
Modified: fsf/glibc-2_11-branch/libc/posix/regcomp.c
==============================================================================
--- fsf/glibc-2_11-branch/libc/posix/regcomp.c (original)
+++ fsf/glibc-2_11-branch/libc/posix/regcomp.c Tue Nov 9 00:09:28 2010
@@ -2154,16 +2154,21 @@
exp = parse_expression (regexp, preg, token, syntax, nest, err);
if (BE (*err != REG_NOERROR && exp == NULL, 0))
{
+ if (tree != NULL)
+ postorder (tree, free_tree, NULL);
return NULL;
}
if (tree != NULL && exp != NULL)
{
- tree = create_tree (dfa, tree, exp, CONCAT);
- if (tree == NULL)
+ bin_tree_t *newtree = create_tree (dfa, tree, exp, CONCAT);
+ if (newtree == NULL)
{
+ postorder (exp, free_tree, NULL);
+ postorder (tree, free_tree, NULL);
*err = REG_ESPACE;
return NULL;
}
+ tree = newtree;
}
else if (tree == NULL)
tree = exp;
@@ -2412,7 +2417,11 @@
{
tree = parse_reg_exp (regexp, preg, token, syntax, nest, err);
if (BE (*err == REG_NOERROR && token->type != OP_CLOSE_SUBEXP, 0))
- *err = REG_EPAREN;
+ {
+ if (tree != NULL)
+ postorder (tree, free_tree, NULL);
+ *err = REG_EPAREN;
+ }
if (BE (*err != REG_NOERROR, 0))
return NULL;
}
@@ -3022,6 +3031,10 @@
if (BE (sbcset == NULL, 0))
#endif /* RE_ENABLE_I18N */
{
+ re_free (sbcset);
+#ifdef RE_ENABLE_I18N
+ re_free (mbcset);
+#endif
*err = REG_ESPACE;
return NULL;
}
Modified: fsf/glibc-2_11-branch/libc/resolv/res_init.c
==============================================================================
--- fsf/glibc-2_11-branch/libc/resolv/res_init.c (original)
+++ fsf/glibc-2_11-branch/libc/resolv/res_init.c Tue Nov 9 00:09:28 2010
@@ -176,13 +176,6 @@
statp->id = res_randomid();
}
-#ifdef USELOOPBACK
- statp->nsaddr.sin_addr = inet_makeaddr(IN_LOOPBACKNET, 1);
-#else
- statp->nsaddr.sin_addr.s_addr = INADDR_ANY;
-#endif
- statp->nsaddr.sin_family = AF_INET;
- statp->nsaddr.sin_port = htons(NAMESERVER_PORT);
statp->nscount = 0;
statp->ndots = 1;
statp->pfcode = 0;
@@ -321,24 +314,24 @@
nserv++;
#ifdef _LIBC
nservall++;
- } else {
- struct in6_addr a6;
- char *el;
-
- if ((el = strchr(cp, '\n')) != NULL)
- *el = '\0';
+ } else {
+ struct in6_addr a6;
+ char *el;
+
+ if ((el = strchr(cp, '\n')) != NULL)
+ *el = '\0';
if ((el = strchr(cp, SCOPE_DELIMITER)) != NULL)
*el = '\0';
- if ((*cp != '\0') &&
- (inet_pton(AF_INET6, cp, &a6) > 0)) {
- struct sockaddr_in6 *sa6;
-
- sa6 = malloc(sizeof(*sa6));
- if (sa6 != NULL) {
- sa6->sin6_family = AF_INET6;
- sa6->sin6_port = htons(NAMESERVER_PORT);
+ if ((*cp != '\0') &&
+ (inet_pton(AF_INET6, cp, &a6) > 0)) {
+ struct sockaddr_in6 *sa6;
+
+ sa6 = malloc(sizeof(*sa6));
+ if (sa6 != NULL) {
+ sa6->sin6_family = AF_INET6;
+ sa6->sin6_port = htons(NAMESERVER_PORT);
sa6->sin6_flowinfo = 0;
- sa6->sin6_addr = a6;
+ sa6->sin6_addr = a6;
if (__builtin_expect (el == NULL, 1))
sa6->sin6_scope_id = 0;
@@ -365,9 +358,9 @@
statp->_u._ext.nsaddrs[nservall] = sa6;
statp->_u._ext.nssocks[nservall] = -1;
statp->_u._ext.nsmap[nservall] = MAXNS + 1;
- nservall++;
- }
- }
+ nservall++;
+ }
+ }
#endif
}
continue;
@@ -433,6 +426,12 @@
#endif
(void) fclose(fp);
}
+ if (__builtin_expect(statp->nscount == 0, 0)) {
+ statp->nsaddr.sin_addr = inet_makeaddr(IN_LOOPBACKNET, 1);
+ statp->nsaddr.sin_family = AF_INET;
+ statp->nsaddr.sin_port = htons(NAMESERVER_PORT);
+ statp->nscount = 1;
+ }
if (statp->defdname[0] == 0 &&
__gethostname(buf, sizeof(statp->defdname) - 1) == 0 &&
(cp = strchr(buf, '.')) != NULL)
@@ -538,12 +537,12 @@
} else if (!strncmp(cp, "no-check-names",
sizeof("no-check-names") - 1)) {
statp->options |= RES_NOCHECKNAME;
- } else if (!strncmp(cp, "edns0", sizeof("edns0") - 1)) {
+ } else if (!strncmp(cp, "edns0", sizeof("edns0") - 1)) {
statp->options |= RES_USE_EDNS0;
- } else if (!strncmp(cp, "single-request-reopen",
+ } else if (!strncmp(cp, "single-request-reopen",
sizeof("single-request-reopen") - 1)) {
statp->options |= RES_SNGLKUPREOP;
- } else if (!strncmp(cp, "single-request",
+ } else if (!strncmp(cp, "single-request",
sizeof("single-request") - 1)) {
statp->options |= RES_SNGLKUP;
} else {
Added: fsf/glibc-2_11-branch/libc/scripts/data/localplt-s390-linux-gnu.data
==============================================================================
--- fsf/glibc-2_11-branch/libc/scripts/data/localplt-s390-linux-gnu.data (added)
+++ fsf/glibc-2_11-branch/libc/scripts/data/localplt-s390-linux-gnu.data Tue Nov 9 00:09:28 2010
@@ -1,0 +1,7 @@
+libc.so: _Unwind_Find_FDE
+libc.so: calloc
+libc.so: free
+libc.so: malloc
+libc.so: memalign
+libc.so: realloc
+libm.so: matherr
Added: fsf/glibc-2_11-branch/libc/scripts/data/localplt-s390x-linux-gnu.data
==============================================================================
--- fsf/glibc-2_11-branch/libc/scripts/data/localplt-s390x-linux-gnu.data (added)
+++ fsf/glibc-2_11-branch/libc/scripts/data/localplt-s390x-linux-gnu.data Tue Nov 9 00:09:28 2010
@@ -1,0 +1,7 @@
+libc.so: _Unwind_Find_FDE
+libc.so: calloc
+libc.so: free
+libc.so: malloc
+libc.so: memalign
+libc.so: realloc
+libm.so: matherr
Modified: fsf/glibc-2_11-branch/libc/stdlib/strtod_l.c
==============================================================================
--- fsf/glibc-2_11-branch/libc/stdlib/strtod_l.c (original)
+++ fsf/glibc-2_11-branch/libc/stdlib/strtod_l.c Tue Nov 9 00:09:28 2010
@@ -1491,7 +1491,9 @@
register int i;
(void) __mpn_lshift (&retval[used
/ BITS_PER_MP_LIMB],
- retval, RETURN_LIMB_SIZE,
+ retval,
+ (RETURN_LIMB_SIZE
+ - used / BITS_PER_MP_LIMB),
used % BITS_PER_MP_LIMB);
for (i = used / BITS_PER_MP_LIMB - 1; i >= 0; --i)
retval[i] = 0;
Added: fsf/glibc-2_11-branch/libc/sysdeps/i386/elf/Makefile
==============================================================================
Binary file - no diff available.
Propchange: fsf/glibc-2_11-branch/libc/sysdeps/i386/elf/Makefile
------------------------------------------------------------------------------
svn:mime-type = audio/x-669-mod
Modified: fsf/glibc-2_11-branch/libc/sysdeps/mach/hurd/linkat.c
==============================================================================
--- fsf/glibc-2_11-branch/libc/sysdeps/mach/hurd/linkat.c (original)
+++ fsf/glibc-2_11-branch/libc/sysdeps/mach/hurd/linkat.c Tue Nov 9 00:09:28 2010
@@ -1,5 +1,5 @@
/* Make a link between file names relative to open directories. Hurd version.
- Copyright (C) 2006 Free Software Foundation, Inc.
+ Copyright (C) 2006,2010 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
@@ -38,7 +38,9 @@
file_t oldfile, linknode, todir;
char *toname;
- oldfile = __file_name_lookup_at (fromfd, flags, from, 0, 0);
+ /* POSIX says linkat doesn't follow symlinks by default, so pass
+ O_NOLINK. That can be overridden by AT_SYMLINK_FOLLOW in FLAGS. */
+ oldfile = __file_name_lookup_at (fromfd, flags, from, O_NOLINK, 0);
if (oldfile == MACH_PORT_NULL)
return -1;
Modified: fsf/glibc-2_11-branch/libc/sysdeps/s390/s390-32/__longjmp.c
==============================================================================
--- fsf/glibc-2_11-branch/libc/sysdeps/s390/s390-32/__longjmp.c (original)
+++ fsf/glibc-2_11-branch/libc/sysdeps/s390/s390-32/__longjmp.c Tue Nov 9 00:09:28 2010
@@ -1,4 +1,4 @@
-/* Copyright (C) 2000, 2001, 2005, 2009 Free Software Foundation, Inc.
+/* Copyright (C) 2000, 2001, 2005, 2009, 2010 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Martin Schwidefsky (schwidefsky@xxxxxxxxxx).
@@ -29,15 +29,18 @@
void
__longjmp (__jmp_buf env, int val)
{
- register int r2 __asm ("%r2") = val == 0 ? 1 : val;
#ifdef PTR_DEMANGLE
- register uintptr_t r3 __asm ("%r3") = THREAD_GET_POINTER_GUARD ();
- register void *r1 __asm ("%r1") = (void *) env;
+ uintptr_t guard = THREAD_GET_POINTER_GUARD ();
# ifdef CHECK_SP
- CHECK_SP (env, r3);
+ CHECK_SP (env, guard);
# endif
#elif defined CHECK_SP
CHECK_SP (env, 0);
+#endif
+ register int r2 __asm ("%r2") = val == 0 ? 1 : val;
+#ifdef PTR_DEMANGLE
+ register uintptr_t r3 __asm ("%r3") = guard;
+ register void *r1 __asm ("%r1") = (void *) env;
#endif
/* Restore registers and jump back. */
asm volatile ("ld %%f6,48(%1)\n\t"
Modified: fsf/glibc-2_11-branch/libc/sysdeps/s390/s390-64/__longjmp.c
==============================================================================
--- fsf/glibc-2_11-branch/libc/sysdeps/s390/s390-64/__longjmp.c (original)
+++ fsf/glibc-2_11-branch/libc/sysdeps/s390/s390-64/__longjmp.c Tue Nov 9 00:09:28 2010
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001, 2005, 2009 Free Software Foundation, Inc.
+/* Copyright (C) 2001, 2005, 2009, 2010 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Martin Schwidefsky (schwidefsky@xxxxxxxxxx).
@@ -29,15 +29,18 @@
void
__longjmp (__jmp_buf env, int val)
{
- register long int r2 __asm ("%r2") = val == 0 ? 1 : val;
#ifdef PTR_DEMANGLE
- register uintptr_t r3 __asm ("%r3") = THREAD_GET_POINTER_GUARD ();
- register void *r1 __asm ("%r1") = (void *) env;
+ uintptr_t guard = THREAD_GET_POINTER_GUARD ();
# ifdef CHECK_SP
- CHECK_SP (env, r3);
+ CHECK_SP (env, guard);
# endif
#elif defined CHECK_SP
CHECK_SP (env, 0);
+#endif
+ register long int r2 __asm ("%r2") = val == 0 ? 1 : val;
+#ifdef PTR_DEMANGLE
+ register uintptr_t r3 __asm ("%r3") = guard;
+ register void *r1 __asm ("%r1") = (void *) env;
#endif
/* Restore registers and jump back. */
asm volatile ("ld %%f7,104(%1)\n\t"
Modified: fsf/glibc-2_11-branch/libc/sysdeps/unix/sysv/linux/check_pf.c
==============================================================================
--- fsf/glibc-2_11-branch/libc/sysdeps/unix/sysv/linux/check_pf.c (original)
+++ fsf/glibc-2_11-branch/libc/sysdeps/unix/sysv/linux/check_pf.c Tue Nov 9 00:09:28 2010
@@ -1,5 +1,5 @@
/* Determine protocol families for which interfaces exist. Linux version.
- Copyright (C) 2003, 2006, 2007, 2008 Free Software Foundation, Inc.
+ Copyright (C) 2003, 2006, 2007, 2008, 2010 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
@@ -304,10 +304,13 @@
struct ifaddrs *runp;
for (runp = ifa; runp != NULL; runp = runp->ifa_next)
- if (runp->ifa_addr->sa_family == PF_INET)
- *seen_ipv4 = true;
- else if (runp->ifa_addr->sa_family == PF_INET6)
- *seen_ipv6 = true;
+ if (runp->ifa_addr != NULL)
+ {
+ if (runp->ifa_addr->sa_family == PF_INET)
+ *seen_ipv4 = true;
+ else if (runp->ifa_addr->sa_family == PF_INET6)
+ *seen_ipv6 = true;
+ }
(void) freeifaddrs (ifa);
#endif
Modified: fsf/glibc-2_11-branch/libc/sysdeps/unix/sysv/linux/getdents.c
==============================================================================
--- fsf/glibc-2_11-branch/libc/sysdeps/unix/sysv/linux/getdents.c (original)
+++ fsf/glibc-2_11-branch/libc/sysdeps/unix/sysv/linux/getdents.c Tue Nov 9 00:09:28 2010
@@ -1,4 +1,4 @@
-/* Copyright (C) 1993, 1995-2003, 2004, 2006, 2007
+/* Copyright (C) 1993, 1995-2004, 2006, 2007, 2010
Free Software Foundation, Inc.
This file is part of the GNU C Library.
@@ -285,7 +285,11 @@
DIRENT_SET_DP_INO(dp, kdp->d_ino);
dp->d_off = kdp->d_off;
dp->d_reclen = new_reclen;
+#ifdef __ASSUME_GETDENTS32_D_TYPE
+ dp->d_type = *((char *) kdp + kdp->d_reclen - 1);
+#else
dp->d_type = DT_UNKNOWN;
+#endif
memcpy (dp->d_name, kdp->d_name,
kdp->d_reclen - offsetof (struct kernel_dirent, d_name));
Modified: fsf/glibc-2_11-branch/libc/sysdeps/unix/sysv/linux/ttyname.c
==============================================================================
--- fsf/glibc-2_11-branch/libc/sysdeps/unix/sysv/linux/ttyname.c (original)
+++ fsf/glibc-2_11-branch/libc/sysdeps/unix/sysv/linux/ttyname.c Tue Nov 9 00:09:28 2010
@@ -1,4 +1,5 @@
-/* Copyright (C) 1991,92,93,1996-2002,2006,2009 Free Software Foundation, Inc.
+/* Copyright (C) 1991-1993,1996-2002,2006,2009,2010
+ 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
@@ -131,6 +132,9 @@
if (__builtin_expect (__tcgetattr (fd, &term) < 0, 0))
return NULL;
+ if (__fxstat64 (_STAT_VER, fd, &st) < 0)
+ return NULL;
+
/* We try using the /proc filesystem. */
*_fitoa_word (fd, __stpcpy (procname, "/proc/self/fd/"), 10, 0) = '\0';
@@ -161,13 +165,32 @@
{
if ((size_t) len >= buflen)
return NULL;
+
+#define UNREACHABLE_LEN strlen ("(unreachable)")
+ if (len > UNREACHABLE_LEN
+ && memcmp (ttyname_buf, "(unreachable)", UNREACHABLE_LEN) == 0)
+ {
+ memmove (ttyname_buf, ttyname_buf + UNREACHABLE_LEN,
+ len - UNREACHABLE_LEN);
+ len -= UNREACHABLE_LEN;
+ }
+
/* readlink need not terminate the string. */
ttyname_buf[len] = '\0';
- return ttyname_buf;
- }
-
- if (__fxstat64 (_STAT_VER, fd, &st) < 0)
- return NULL;
+
+ /* Verify readlink result, fall back on iterating through devices. */
+ if (ttyname_buf[0] == '/'
+ && __xstat64 (_STAT_VER, ttyname_buf, &st1) == 0
+#ifdef _STATBUF_ST_RDEV
+ && S_ISCHR (st1.st_mode)
+ && st1.st_rdev == st.st_rdev
+#else
+ && st1.st_ino == st.st_ino
+ && st1.st_dev == st.st_dev
+#endif
+ )
+ return ttyname_buf;
+ }
if (__xstat64 (_STAT_VER, "/dev/pts", &st1) == 0 && S_ISDIR (st1.st_mode))
{
Modified: fsf/glibc-2_11-branch/libc/sysdeps/unix/sysv/linux/ttyname_r.c
==============================================================================
--- fsf/glibc-2_11-branch/libc/sysdeps/unix/sysv/linux/ttyname_r.c (original)
+++ fsf/glibc-2_11-branch/libc/sysdeps/unix/sysv/linux/ttyname_r.c Tue Nov 9 00:09:28 2010
@@ -1,4 +1,5 @@
-/* Copyright (C) 1991,92,93,1995-2001,2003,2006 Free Software Foundation, Inc.
+/* Copyright (C) 1991-1993,1995-2001,2003,2006,2010
+ 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
@@ -122,6 +123,9 @@
if (__builtin_expect (__tcgetattr (fd, &term) < 0, 0))
return errno;
+ if (__fxstat64 (_STAT_VER, fd, &st) < 0)
+ return errno;
+
/* We try using the /proc filesystem. */
*_fitoa_word (fd, __stpcpy (procname, "/proc/self/fd/"), 10, 0) = '\0';
@@ -145,12 +149,30 @@
#endif
, 1))
{
+#define UNREACHABLE_LEN strlen ("(unreachable)")
+ if (ret > UNREACHABLE_LEN
+ && memcmp (buf, "(unreachable)", UNREACHABLE_LEN) == 0)
+ {
+ memmove (buf, buf + UNREACHABLE_LEN, ret - UNREACHABLE_LEN);
+ ret -= UNREACHABLE_LEN;
+ }
+
+ /* readlink need not terminate the string. */
buf[ret] = '\0';
- return 0;
- }
-
- if (__fxstat64 (_STAT_VER, fd, &st) < 0)
- return errno;
+
+ /* Verify readlink result, fall back on iterating through devices. */
+ if (buf[0] == '/'
+ && __xstat64 (_STAT_VER, buf, &st1) == 0
+#ifdef _STATBUF_ST_RDEV
+ && S_ISCHR (st1.st_mode)
+ && st1.st_rdev == st.st_rdev
+#else
+ && st1.st_ino == st.st_ino
+ && st1.st_dev == st.st_dev
+#endif
+ )
+ return 0;
+ }
/* Prepare the result buffer. */
memcpy (buf, "/dev/pts/", sizeof ("/dev/pts/"));
Modified: fsf/glibc-2_11-branch/libc/sysdeps/unix/sysv/linux/x86_64/____longjmp_chk.S
==============================================================================
--- fsf/glibc-2_11-branch/libc/sysdeps/unix/sysv/linux/x86_64/____longjmp_chk.S (original)
+++ fsf/glibc-2_11-branch/libc/sysdeps/unix/sysv/linux/x86_64/____longjmp_chk.S Tue Nov 9 00:09:28 2010
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001,2004,2005,2006,2009 Free Software Foundation, Inc.
+/* Copyright (C) 2001,2004,2005,2006,2009,2010 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
@@ -49,9 +49,9 @@
.text
ENTRY(____longjmp_chk)
/* Restore registers. */
- movq (JB_RSP*8)(%rdi),%r8
- movq (JB_RBP*8)(%rdi),%r9
- movq (JB_PC*8)(%rdi),%rdx
+ movq (JB_RSP*8)(%rdi), %r8
+ movq (JB_RBP*8)(%rdi), %r9
+ movq (JB_PC*8)(%rdi), %rdx
#ifdef PTR_DEMANGLE
PTR_DEMANGLE (%r8)
PTR_DEMANGLE (%r9)
@@ -63,7 +63,9 @@
/* Save function parameters. */
movq %rdi, %r10
- movl %esi, %ecx
+ cfi_register (%rdi, %r10)
+ movl %esi, %ebx
+ cfi_register (%rsi, %rbx)
xorl %edi, %edi
leaq -24(%rsp), %rsi
@@ -84,7 +86,9 @@
.Lfail: CALL_FAIL
.Lok2: movq %r10, %rdi
- movl %ecx, %esi
+ cfi_restore (%rdi)
+ movl %ebx, %esi
+ cfi_restore (%rsi)
.Lok: /* We add unwind information for the target here. */
cfi_def_cfa(%rdi, 0)
@@ -96,11 +100,11 @@
cfi_offset(%r13,JB_R13*8)
cfi_offset(%r14,JB_R14*8)
cfi_offset(%r15,JB_R15*8)
- movq (JB_RBX*8)(%rdi),%rbx
- movq (JB_R12*8)(%rdi),%r12
- movq (JB_R13*8)(%rdi),%r13
- movq (JB_R14*8)(%rdi),%r14
- movq (JB_R15*8)(%rdi),%r15
+ movq (JB_RBX*8)(%rdi), %rbx
+ movq (JB_R12*8)(%rdi), %r12
+ movq (JB_R13*8)(%rdi), %r13
+ movq (JB_R14*8)(%rdi), %r14
+ movq (JB_R15*8)(%rdi), %r15
/* Set return value for setjmp. */
movl %esi, %eax
movq %r8,%rsp
Modified: fsf/glibc-2_11-branch/libc/sysdeps/unix/sysv/linux/x86_64/sys/epoll.h
==============================================================================
--- fsf/glibc-2_11-branch/libc/sysdeps/unix/sysv/linux/x86_64/sys/epoll.h (original)
+++ fsf/glibc-2_11-branch/libc/sysdeps/unix/sysv/linux/x86_64/sys/epoll.h Tue Nov 9 00:09:28 2010
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002,2003,2004,2005,2006,2007,2008 Free Software Foundation, Inc.
+/* Copyright (C) 2002-2008, 2010 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
@@ -31,7 +31,7 @@
#endif
-/* Flags to be passed to epoll_create2. */
+/* Flags to be passed to epoll_create1. */
enum
{
EPOLL_CLOEXEC = 02000000,
Modified: fsf/glibc-2_11-branch/libc/sysdeps/x86_64/cacheinfo.c
==============================================================================
--- fsf/glibc-2_11-branch/libc/sysdeps/x86_64/cacheinfo.c (original)
+++ fsf/glibc-2_11-branch/libc/sysdeps/x86_64/cacheinfo.c Tue Nov 9 00:09:28 2010
@@ -453,10 +453,10 @@
/* Half the data cache size for use in memory and string routines, typically
- L1 size. */
+ L1 size, rounded to multiple of 256 bytes. */
long int __x86_64_data_cache_size_half attribute_hidden = 32 * 1024 / 2;
/* Shared cache size for use in memory and string routines, typically
- L2 or L3 size. */
+ L2 or L3 size, rounded to multiple of 256 bytes. */
long int __x86_64_shared_cache_size_half attribute_hidden = 1024 * 1024 / 2;
long int __x86_64_shared_cache_size attribute_hidden = 1024 * 1024;
@@ -657,10 +657,16 @@
}
if (data > 0)
- __x86_64_data_cache_size_half = data / 2;
+ {
+ /* Round data cache size to multiple of 256 bytes. */
+ data = data & ~255L;
+ __x86_64_data_cache_size_half = data / 2;
+ }
if (shared > 0)
{
+ /* Round shared cache size to multiple of 256 bytes. */
+ shared = shared & ~255L;
__x86_64_shared_cache_size_half = shared / 2;
__x86_64_shared_cache_size = shared;
}