[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Commits] r19823 - in /fsf/trunk/libc: ./ hesiod/ include/ inet/ malloc/ manual/ math/ nptl/ nptl/sysdeps/unix/sysv/linux/i386/ nptl/s...



Author: eglibc
Date: Thu Jul 26 00:01:40 2012
New Revision: 19823

Log:
Import glibc-mainline for 2012-07-26

Added:
    fsf/trunk/libc/stdlib/tst-secure-getenv.c
    fsf/trunk/libc/sysdeps/i386/ldsodefs.h
    fsf/trunk/libc/sysdeps/powerpc/ldsodefs.h
    fsf/trunk/libc/sysdeps/s390/ldsodefs.h
    fsf/trunk/libc/sysdeps/sh/ldsodefs.h
    fsf/trunk/libc/sysdeps/sparc/ldsodefs.h
    fsf/trunk/libc/sysdeps/x86_64/ldsodefs.h
Modified:
    fsf/trunk/libc/ChangeLog
    fsf/trunk/libc/NEWS
    fsf/trunk/libc/Versions.def
    fsf/trunk/libc/hesiod/hesiod.c
    fsf/trunk/libc/include/stdlib.h
    fsf/trunk/libc/inet/ruserpass.c
    fsf/trunk/libc/malloc/mtrace.c
    fsf/trunk/libc/manual/startup.texi
    fsf/trunk/libc/math/libm-test.inc
    fsf/trunk/libc/nptl/ChangeLog
    fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/i386/pt-vfork.S
    fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/i386/sysdep-cancel.h
    fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h
    fsf/trunk/libc/nptl/tst-pthread-getattr.c
    fsf/trunk/libc/nscd/gai.c
    fsf/trunk/libc/ports/ChangeLog.alpha
    fsf/trunk/libc/ports/ChangeLog.arm
    fsf/trunk/libc/ports/ChangeLog.ia64
    fsf/trunk/libc/ports/ChangeLog.m68k
    fsf/trunk/libc/ports/ChangeLog.mips
    fsf/trunk/libc/ports/ChangeLog.powerpc
    fsf/trunk/libc/ports/ChangeLog.tile
    fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/alpha/nptl/libc.abilist
    fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/arm/kernel-features.h
    fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/arm/nptl/libc.abilist
    fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/ia64/nptl/libc.abilist
    fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/m68k/coldfire/nptl/libc.abilist
    fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/m68k/kernel-features.h
    fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/m68k/m680x0/nptl/libc.abilist
    fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/mips/mips32/nptl/libc.abilist
    fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/mips/mips64/n32/nptl/libc.abilist
    fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/mips/mips64/n64/nptl/libc.abilist
    fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/nptl/libc.abilist
    fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libc.abilist
    fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libc.abilist
    fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/tile/tilepro/nptl/libc.abilist
    fsf/trunk/libc/stdlib/Makefile
    fsf/trunk/libc/stdlib/Versions
    fsf/trunk/libc/stdlib/secure-getenv.c
    fsf/trunk/libc/stdlib/stdlib.h
    fsf/trunk/libc/sysdeps/generic/ldsodefs.h
    fsf/trunk/libc/sysdeps/ieee754/dbl-64/e_jn.c
    fsf/trunk/libc/sysdeps/ieee754/flt-32/e_jnf.c
    fsf/trunk/libc/sysdeps/ieee754/ldbl-128/e_jnl.c
    fsf/trunk/libc/sysdeps/ieee754/ldbl-128ibm/e_jnl.c
    fsf/trunk/libc/sysdeps/ieee754/ldbl-96/e_jnl.c
    fsf/trunk/libc/sysdeps/mach/hurd/tmpfile.c
    fsf/trunk/libc/sysdeps/posix/libc_fatal.c
    fsf/trunk/libc/sysdeps/posix/sysconf.c
    fsf/trunk/libc/sysdeps/posix/tempname.c
    fsf/trunk/libc/sysdeps/unix/sysv/linux/check_pf.c
    fsf/trunk/libc/sysdeps/unix/sysv/linux/configure
    fsf/trunk/libc/sysdeps/unix/sysv/linux/configure.in
    fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/accept4.S
    fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/call_sync_file_range.S
    fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/clone.S
    fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/epoll_pwait.S
    fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/getcontext.S
    fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/mmap.S
    fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/mmap64.S
    fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/nptl/libc.abilist
    fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/semtimedop.S
    fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/setcontext.S
    fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/socket.S
    fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/swapcontext.S
    fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/syscall.S
    fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/sysdep.h
    fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/vfork.S
    fsf/trunk/libc/sysdeps/unix/sysv/linux/if_index.c
    fsf/trunk/libc/sysdeps/unix/sysv/linux/ifaddrs.c
    fsf/trunk/libc/sysdeps/unix/sysv/linux/kernel-features.h
    fsf/trunk/libc/sysdeps/unix/sysv/linux/libc_fatal.c
    fsf/trunk/libc/sysdeps/unix/sysv/linux/netlinkaccess.h
    fsf/trunk/libc/sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c
    fsf/trunk/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/clone.S
    fsf/trunk/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/fe_mask.c
    fsf/trunk/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/fe_nomask.c
    fsf/trunk/libc/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/nptl/libc.abilist
    fsf/trunk/libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/fpu/fe_mask.c
    fsf/trunk/libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/fpu/fe_nomask.c
    fsf/trunk/libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/getcontext.S
    fsf/trunk/libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/makecontext.S
    fsf/trunk/libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libc.abilist
    fsf/trunk/libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/setcontext.S
    fsf/trunk/libc/sysdeps/unix/sysv/linux/powerpc/powerpc64/swapcontext.S
    fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/s390-32/nptl/libc.abilist
    fsf/trunk/libc/sysdeps/unix/sysv/linux/s390/s390-64/nptl/libc.abilist
    fsf/trunk/libc/sysdeps/unix/sysv/linux/sh/nptl/libc.abilist
    fsf/trunk/libc/sysdeps/unix/sysv/linux/sparc/sparc32/nptl/libc.abilist
    fsf/trunk/libc/sysdeps/unix/sysv/linux/sparc/sparc64/nptl/libc.abilist
    fsf/trunk/libc/sysdeps/unix/sysv/linux/x86_64/64/nptl/libc.abilist
    fsf/trunk/libc/sysdeps/unix/sysv/linux/x86_64/clone.S
    fsf/trunk/libc/sysdeps/unix/sysv/linux/x86_64/getcontext.S
    fsf/trunk/libc/sysdeps/unix/sysv/linux/x86_64/sched_getcpu.S
    fsf/trunk/libc/sysdeps/unix/sysv/linux/x86_64/setcontext.S
    fsf/trunk/libc/sysdeps/unix/sysv/linux/x86_64/swapcontext.S
    fsf/trunk/libc/sysdeps/unix/sysv/linux/x86_64/syscall.S
    fsf/trunk/libc/sysdeps/unix/sysv/linux/x86_64/sysdep.h
    fsf/trunk/libc/sysdeps/unix/sysv/linux/x86_64/vfork.S
    fsf/trunk/libc/sysdeps/unix/sysv/linux/x86_64/x32/nptl/libc.abilist
    fsf/trunk/libc/sysdeps/unix/sysv/linux/x86_64/x32/sched_getcpu.S

Modified: fsf/trunk/libc/ChangeLog
==============================================================================
--- fsf/trunk/libc/ChangeLog (original)
+++ fsf/trunk/libc/ChangeLog Thu Jul 26 00:01:40 2012
@@ -1,3 +1,202 @@
+2012-07-25  Joseph Myers  <joseph@xxxxxxxxxxxxxxxx>
+
+	[BZ #13717]
+	* sysdeps/unix/sysv/linux/configure.in (arch_minimum_kernel):
+	Change to 2.4.21 where previously 2.4.1.
+	* sysdeps/unix/sysv/linux/configure: Regenerated.
+	* sysdeps/unix/sysv/linux/kernel-features.h [(__powerpc__ ||
+	__sh__) && !__powerpc64__] (__ASSUME_FCNTL64): Do not condition on
+	Linux kernel version.
+	(__ASSUME_STD_AUXV): Remove.
+	[__powerpc__] (__ASSUME_VFORK_SYSCALL): Do not condition on Linux
+	kernel version.
+	[__powerpc__ && !__powerpc64] (__ASSUME_MMAP2_SYSCALL): Likewise.
+	(__ASSUME_NEW_PRCTL_SYSCALL): Remove.
+	(__ASSUME_FIXED_CLONE_SYSCALL): Likewise.
+	(__ASSUME_NEW_RT_SIGRETURN_SYSCALL): Likewise.
+	(__ASSUME_NETLINK_SUPPORT): Likewise.
+	* nscd/gai.c [NEED_NETLINK && __ASSUME_NETLINK_SUPPORT == 0]
+	(__no_netlink_support): Remove conditional definition.
+	* sysdeps/unix/sysv/linux/check_pf.c (__no_netlink_support):
+	Remove.
+	(__check_pf) [!__ASSUME_NETLINK_SUPPORT]: Remove conditional code.
+	[__ASSUME_NETLINK_SUPPORT]: Make code unconditional.
+	* sysdeps/unix/sysv/linux/if_index.c [!__ASSUME_NETLINK_SUPPORT]
+	(if_nameindex_ioctl): Remove.
+	(if_nameindex_netlink): Do not handle __no_netlink_support.
+	(if_nameindex) [!__ASSUME_NETLINK_SUPPORT]: Remove conditional
+	code.
+	* sysdeps/unix/sysv/linux/ifaddrs.c [!__ASSUME_NETLINK_SUPPORT]:
+	Remove conditional code.
+	(__netlink_open) [!__ASSUME_NETLINK_SUPPORT]: Remove conditional
+	code.
+	(getifaddrs_internal) [__ASSUME_NETLINK_SUPPORT]: Make code
+	unconditional.
+	[!__ASSUME_NETLINK_SUPPORT]: Remove conditional code.
+	[__ASSUME_NETLINK_SUPPORT] (freeifaddrs): Make code unconditional.
+	* sysdeps/unix/sysv/linux/netlinkaccess.h (__no_netlink_support):
+	Remove.
+	* sysdeps/unix/sysv/linux/powerpc/dl-sysdep.c
+	[!__ASSUME_STD_AUXV]: Remove conditional code.
+	* sysdeps/unix/sysv/linux/powerpc/powerpc32/clone.S (__clone)
+	[!__ASSUME_FIXED_CLONE_SYSCALL]: Remove conditional code.
+	[__ASSUME_FIXED_CLONE_SYSCALL]: Make code unconditional.
+	* sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/fe_mask.c
+	[!__ASSUME_NEW_PRCTL_SYSCALL] (fe_mask_handler): Remove.
+	(__fe_mask_env) [!__ASSUME_NEW_PRCTL_SYSCALL]: Remove conditional
+	code.
+	[__ASSUME_NEW_PRCTL_SYSCALL]: Make code unconditional.
+	* sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/fe_nomask.c
+	[!__ASSUME_NEW_PRCTL_SYSCALL] (fe_nomask_handler): Remove.
+	(__fe_nomask_env) [!__ASSUME_NEW_PRCTL_SYSCALL]: Remove
+	conditional code.
+	[__ASSUME_NEW_PRCTL_SYSCALL]: Make code unconditional.
+	* sysdeps/unix/sysv/linux/powerpc/powerpc64/fpu/fe_mask.c
+	(__fe_mask_env) [!__ASSUME_NEW_PRCTL_SYSCALL]: Remove conditional
+	code.
+	* sysdeps/unix/sysv/linux/powerpc/powerpc64/fpu/fe_nomask.c
+	(__fe_nomask_env) [!__ASSUME_NEW_PRCTL_SYSCALL]: Remove
+	conditional code.
+	* sysdeps/unix/sysv/linux/powerpc/powerpc64/getcontext.S
+	(__novec_getcontext) [__ASSUME_NEW_RT_SIGRETURN_SYSCALL]: Make
+	code unconditional.
+	(__novec_getcontext) [!__ASSUME_NEW_RT_SIGRETURN_SYSCALL]: Remove
+	conditional code.
+	(__getcontext) [__ASSUME_NEW_RT_SIGRETURN_SYSCALL]: Make code
+	unconditional.
+	(__getcontext) [!__ASSUME_NEW_RT_SIGRETURN_SYSCALL]: Remove
+	conditional code.
+	* sysdeps/unix/sysv/linux/powerpc/powerpc64/makecontext.S
+	(__makecontext) [__ASSUME_NEW_RT_SIGRETURN_SYSCALL]: Make code
+	unconditional.
+	(__makecontext) [!__ASSUME_NEW_RT_SIGRETURN_SYSCALL]: Remove
+	conditional code.
+	* sysdeps/unix/sysv/linux/powerpc/powerpc64/setcontext.S
+	(__novec_setcontext) [__ASSUME_NEW_RT_SIGRETURN_SYSCALL]: Make
+	code unconditional.
+	(__novec_setcontext) [!__ASSUME_NEW_RT_SIGRETURN_SYSCALL]: Remove
+	conditional code.
+	(__setcontext) [__ASSUME_NEW_RT_SIGRETURN_SYSCALL]: Make code
+	unconditional.
+	(__setcontext) [!__ASSUME_NEW_RT_SIGRETURN_SYSCALL]: Remove
+	conditional code.
+	* sysdeps/unix/sysv/linux/powerpc/powerpc64/swapcontext.S
+	(__novec_swapcontext) [__ASSUME_NEW_RT_SIGRETURN_SYSCALL]: Make
+	code unconditional.
+	(__novec_swapcontext) [!__ASSUME_NEW_RT_SIGRETURN_SYSCALL]: Remove
+	conditional code.
+	(__swapcontext) [__ASSUME_NEW_RT_SIGRETURN_SYSCALL]: Make code
+	unconditional.
+	(__swapcontext) [!__ASSUME_NEW_RT_SIGRETURN_SYSCALL]: Remove
+	conditional code.
+
+2012-07-25  Andreas Schwab  <schwab@xxxxxxxxxxxxxx>
+
+	* sysdeps/unix/sysv/linux/i386/accept4.S: Remove pseudo_end label.
+	* sysdeps/unix/sysv/linux/i386/call_sync_file_range.S: Likewise.
+	* sysdeps/unix/sysv/linux/i386/clone.S: Likewise.
+	* sysdeps/unix/sysv/linux/i386/epoll_pwait.S: Likewise.
+	* sysdeps/unix/sysv/linux/i386/getcontext.S: Likewise.
+	* sysdeps/unix/sysv/linux/i386/mmap.S: Likewise.
+	* sysdeps/unix/sysv/linux/i386/mmap64.S: Likewise.
+	* sysdeps/unix/sysv/linux/i386/semtimedop.S: Likewise.
+	* sysdeps/unix/sysv/linux/i386/setcontext.S: Likewise.
+	* sysdeps/unix/sysv/linux/i386/socket.S: Likewise.
+	* sysdeps/unix/sysv/linux/i386/swapcontext.S: Likewise.
+	* sysdeps/unix/sysv/linux/i386/syscall.S: Likewise.
+	* sysdeps/unix/sysv/linux/i386/sysdep.h (PSEUDO): Likewise.
+	* sysdeps/unix/sysv/linux/i386/vfork.S: Likewise.
+	* sysdeps/unix/sysv/linux/x86_64/clone.S: Likewise.
+	* sysdeps/unix/sysv/linux/x86_64/getcontext.S: Likewise.
+	* sysdeps/unix/sysv/linux/x86_64/setcontext.S: Likewise.
+	* sysdeps/unix/sysv/linux/x86_64/sched_getcpu.S: Likewise.
+	* sysdeps/unix/sysv/linux/x86_64/syscall.S: Likewise.
+	* sysdeps/unix/sysv/linux/x86_64/sysdep.h (PSEUDO): Likewise.
+	* sysdeps/unix/sysv/linux/x86_64/swapcontext.S: Likewise.
+	* sysdeps/unix/sysv/linux/x86_64/vfork.S: Likewise.
+	* sysdeps/unix/sysv/linux/x86_64/x32/sched_getcpu.S: Likewise.
+
+2012-07-25  Florian Weimer  <fweimer@xxxxxxxxxx>
+
+	* Versions.def: Add GLIBC_2.17.
+	* stdlib/stdlib.h: Rename __secure_getenv to secure_getenv.
+	* include/stdlib.h: Rename __secure_getenv to secure_getenv.
+	Introduce __libc_secure_getenv.
+	* stdlib/Versions (2.17): Add secure_getenv
+	(GLIBC_PRIVATE): Add __libc_secure_getenv.
+	* stdlib/secure-getenv.c: Rename __secure_getenv to
+	__libc_secure_getenv.  Add secure_getenv alias.  Add compatibility
+	symbol __secure_getenv for GLIBC_2.0.
+	* stdlib/tst-secure-getenv.c: New.
+	* stdlib/Makefile (tests): Add testcase.
+	* manual/startup.texi (Environment Access): Document
+	secure_getenv.
+	* hesiod/hesiod.c (hesiod_init): Rename __secure_getenv to
+	__libc_secure_getenv.
+	* inet/ruserpass.c (ruserpass): Likewise.
+	* malloc/mtrace.c (mtrace): Likewise.
+	* sysdeps/mach/hurd/tmpfile.c (__tmpfile): Likewise.
+	* sysdeps/posix/libc_fatal.c (__libc_fatal): Likewise.
+	* sysdeps/posix/sysconf.c (__sysconf__check_spec): Likewise.
+	* sysdeps/posix/tempname.c: Likewise.  Evaluate
+	HAVE_SECURE_GETENV.
+	* sysdeps/unix/sysv/linux/libc_fatal.c (__libc_message): Rename
+	__secure_getenv to __libc_secure_getenv.
+	* sysdeps/unix/sysv/linux/i386/nptl/libc.abilist: Add secure_getenv.
+	* sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/nptl/libc.abilist:
+	Likewise.
+	* sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libc.abilist:
+	Likewise.
+	* sysdeps/unix/sysv/linux/s390/s390-32/nptl/libc.abilist: Likewise.
+	* sysdeps/unix/sysv/linux/s390/s390-64/nptl/libc.abilist: Likewise.
+	* sysdeps/unix/sysv/linux/sh/nptl/libc.abilist: Likewise.
+	* sysdeps/unix/sysv/linux/sparc/sparc32/nptl/libc.abilist: Likewise.
+	* sysdeps/unix/sysv/linux/sparc/sparc64/nptl/libc.abilist: Likewise.
+	* sysdeps/unix/sysv/linux/x86_64/64/nptl/libc.abilist: Likewise.
+	* sysdeps/unix/sysv/linux/x86_64/x32/nptl/libc.abilist: Likewise.
+
+2012-07-25  Joseph Myers  <joseph@xxxxxxxxxxxxxxxx>
+
+	* sysdeps/generic/ldsodefs.h (struct La_i86_regs): Remove.
+	(struct La_i86_retval): Likewise.
+	(struct La_x86_64_regs): Likewise.
+	(struct La_x86_64_retval): Likewise.
+	(struct La_x32_regs): Likewise.
+	(struct La_x32_retval): Likewise.
+	(struct La_ppc32_regs): Likewise.
+	(struct La_ppc32_retval): Likewise.
+	(struct La_ppc64_regs): Likewise.
+	(struct La_ppc64_retval): Likewise.
+	(struct La_sh_regs): Likewise.
+	(struct La_sh_retval): Likewise.
+	(struct La_s390_32_regs): Likewise.
+	(struct La_s390_32_retval): Likewise.
+	(struct La_s390_64_regs): Likewise.
+	(struct La_s390_64_retval): Likewise.
+	(struct La_sparc32_regs): Likewise.
+	(struct La_sparc32_retval): Likewise.
+	(struct La_sparc64_regs): Likewise.
+	(struct La_sparc64_retval): Likewise.
+	(struct audit_ifaces): Remove architecture-specific pltenter and
+	pltexit members.
+	* sysdeps/i386/ldsodefs.h: New file.
+	* sysdeps/powerpc/ldsodefs.h: Likewise.
+	* sysdeps/s390/ldsodefs.h: Likewise.
+	* sysdeps/sh/ldsodefs.h: Likewise.
+	* sysdeps/sparc/ldsodefs.h: Likewise.
+	* sysdeps/x86_64/ldsodefs.h: Likewise.
+
+2012-07-25  Marek Polacek  <polacek@xxxxxxxxxx>
+
+	[BZ #6808]
+	* math/libm-test.inc (yn_test): Add another test.
+	* sysdeps/ieee754/ldbl-128ibm/e_jnl.c (__ieee754_ynl): Set errno
+	to ERANGE when the result is +-Inf.
+	* sysdeps/ieee754/ldbl-96/e_jnl.c (__ieee754_ynl): Likewise.
+	* sysdeps/ieee754/flt-32/e_jnf.c (__ieee754_ynf): Likewise.
+	* sysdeps/ieee754/ldbl-128/e_jnl.c (__ieee754_ynl): Likewise.
+	* sysdeps/ieee754/dbl-64/e_jn.c (__ieee754_yn): Likewise.
+
 2012-07-24  Joseph Myers  <joseph@xxxxxxxxxxxxxxxx>
 
 	* conform/data/time.h-data (NULL): Use macro-constant.  Require

Modified: fsf/trunk/libc/NEWS
==============================================================================
--- fsf/trunk/libc/NEWS (original)
+++ fsf/trunk/libc/NEWS Thu Jul 26 00:01:40 2012
@@ -9,13 +9,17 @@
 
 * The following bugs are resolved with this release:
 
-  6778, 14042, 14151, 14154, 14157, 14173, 14283, 14328, 14331, 14337,
+  6778, 6808, 14042, 14151, 14154, 14157, 14173, 14283, 14328, 14331, 14337,
   14347, 14349
 
 * Support for STT_GNU_IFUNC symbols added for s390 and s390x.
   Optimized versions of memcpy, memset, and memcmp added for System z10 and
   zEnterprise z196.
   Implemented by Andreas Krebbel.
+
+* The new function secure_getenv allows secure access to the environment,
+  returning NULL if running in a SUID/SGID process.  This function replaces
+  the internal function __secure_getenv.
 
 
 Version 2.16

Modified: fsf/trunk/libc/Versions.def
==============================================================================
--- fsf/trunk/libc/Versions.def (original)
+++ fsf/trunk/libc/Versions.def Thu Jul 26 00:01:40 2012
@@ -33,6 +33,7 @@
   GLIBC_2.14
   GLIBC_2.15
   GLIBC_2.16
+  GLIBC_2.17
   HURD_CTHREADS_0.3
 %ifdef EXPORT_UNWIND_FIND_FDE
   GCC_3.0

Modified: fsf/trunk/libc/hesiod/hesiod.c
==============================================================================
--- fsf/trunk/libc/hesiod/hesiod.c (original)
+++ fsf/trunk/libc/hesiod/hesiod.c Thu Jul 26 00:01:40 2012
@@ -87,7 +87,7 @@
 	ctx->classes[0] = C_IN;
 	ctx->classes[1] = C_HS;
 
-	configname = __secure_getenv("HESIOD_CONFIG");
+	configname = __libc_secure_getenv("HESIOD_CONFIG");
 	if (!configname)
 	  configname = _PATH_HESIOD_CONF;
 	if (parse_config_file(ctx, configname) < 0) {
@@ -109,7 +109,7 @@
 	 * The default RHS can be overridden by an environment
 	 * variable.
 	 */
-	if ((cp = __secure_getenv("HES_DOMAIN")) != NULL) {
+	if ((cp = __libc_secure_getenv("HES_DOMAIN")) != NULL) {
 		free(ctx->RHS);
 		ctx->RHS = malloc(strlen(cp)+2);
 		if (!ctx->RHS)

Modified: fsf/trunk/libc/include/stdlib.h
==============================================================================
--- fsf/trunk/libc/include/stdlib.h (original)
+++ fsf/trunk/libc/include/stdlib.h Thu Jul 26 00:01:40 2012
@@ -33,12 +33,13 @@
 libc_hidden_proto (exit)
 libc_hidden_proto (abort)
 libc_hidden_proto (getenv)
+extern __typeof (secure_getenv) __libc_secure_getenv;
+libc_hidden_proto (__libc_secure_getenv)
 libc_hidden_proto (bsearch)
 libc_hidden_proto (qsort)
 libc_hidden_proto (qsort_r)
 libc_hidden_proto (lrand48_r)
 libc_hidden_proto (wctomb)
-libc_hidden_proto (__secure_getenv)
 
 extern long int __random (void);
 extern void __srandom (unsigned int __seed);

Modified: fsf/trunk/libc/inet/ruserpass.c
==============================================================================
--- fsf/trunk/libc/inet/ruserpass.c (original)
+++ fsf/trunk/libc/inet/ruserpass.c Thu Jul 26 00:01:40 2012
@@ -102,7 +102,7 @@
 	int t, usedefault = 0;
 	struct stat64 stb;
 
-	hdir = __secure_getenv("HOME");
+	hdir = __libc_secure_getenv("HOME");
 	if (hdir == NULL) {
 		/* If we can't get HOME, fail instead of trying ".",
 		   which is no improvement. This really should call

Modified: fsf/trunk/libc/malloc/mtrace.c
==============================================================================
--- fsf/trunk/libc/malloc/mtrace.c (original)
+++ fsf/trunk/libc/malloc/mtrace.c Thu Jul 26 00:01:40 2012
@@ -309,7 +309,7 @@
   /* When compiling the GNU libc we use the secure getenv function
      which prevents the misuse in case of SUID or SGID enabled
      programs.  */
-  mallfile = __secure_getenv (mallenv);
+  mallfile = __libc_secure_getenv (mallenv);
 #else
   mallfile = getenv (mallenv);
 #endif

Modified: fsf/trunk/libc/manual/startup.texi
==============================================================================
--- fsf/trunk/libc/manual/startup.texi (original)
+++ fsf/trunk/libc/manual/startup.texi Thu Jul 26 00:01:40 2012
@@ -310,10 +310,14 @@
 
 The value of an environment variable can be accessed with the
 @code{getenv} function.  This is declared in the header file
-@file{stdlib.h}.  Modifications of enviroment variables are not
-allowed in Multi-threaded programs.  The @code{getenv} function
-can be safely used in multi-threaded programs
+@file{stdlib.h}.
 @pindex stdlib.h
+
+Libraries should use @code{secure_getenv} instead of @code{getenv}, so
+that they do not accidentally use untrusted environment variables.
+Modifications of environment variables are not allowed in
+multi-threaded programs.  The @code{getenv} and @code{secure_getenv}
+functions can be safely used in multi-threaded programs.
 
 @comment stdlib.h
 @comment ISO
@@ -324,6 +328,18 @@
 calls to @code{getenv} (but not by any other library function).  If the
 environment variable @var{name} is not defined, the value is a null
 pointer.
+@end deftypefun
+
+@comment stdlib.h
+@comment GNU
+@deftypefun {char *} secure_getenv (const char *@var{name})
+This function is similar to @code{getenv}, but it returns a null
+pointer if the environment is untrusted.  This happens when the
+program file has SUID or SGID bits set.  General-purpose libraries
+should always prefer this function over @code{getenv} to avoid
+vulnerabilities if the library is referenced from a SUID/SGID program.
+
+This function is a GNU extension.
 @end deftypefun
 
 

Modified: fsf/trunk/libc/math/libm-test.inc
==============================================================================
--- fsf/trunk/libc/math/libm-test.inc (original)
+++ fsf/trunk/libc/math/libm-test.inc Thu Jul 26 00:01:40 2012
@@ -9019,6 +9019,10 @@
      and FLT_MIN.  See Bug 14173.  */
   TEST_ff_f (yn, 10, min_value, minus_infty, OVERFLOW_EXCEPTION);
 
+  errno = 0;
+  TEST_ff_f (yn, 10, min_value, minus_infty, OVERFLOW_EXCEPTION);
+  check_int ("errno for yn(10,-min) == ERANGE", errno, ERANGE, 0, 0, 0);
+
   END (yn);
 }
 

Modified: fsf/trunk/libc/nptl/ChangeLog
==============================================================================
--- fsf/trunk/libc/nptl/ChangeLog (original)
+++ fsf/trunk/libc/nptl/ChangeLog Thu Jul 26 00:01:40 2012
@@ -1,3 +1,15 @@
+2012-07-25  Andreas Schwab  <schwab@xxxxxxxxxxxxxx>
+
+	* sysdeps/unix/sysv/linux/i386/pt-vfork.S: Remove pseudo_end
+	label.
+	* sysdeps/unix/sysv/linux/i386/sysdep-cancel.h (PSEUDO): Likewise.
+	* sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h (PSEUDO):
+	Likewise.
+
+2012-07-25  Siddhesh Poyarekar  <siddhesh@xxxxxxxxxx>
+
+	* tst-pthread-getattr.c: Revert last change.
+
 2012-07-20  Siddhesh Poyarekar  <siddhesh@xxxxxxxxxx>
 
 	* tst-pthread-getattr.c (MAX_STACK_SIZE): New max cap for stack

Modified: fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/i386/pt-vfork.S
==============================================================================
--- fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/i386/pt-vfork.S (original)
+++ fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/i386/pt-vfork.S Thu Jul 26 00:01:40 2012
@@ -1,4 +1,4 @@
-/* Copyright (C) 1999, 2002, 2004 Free Software Foundation, Inc.
+/* Copyright (C) 1999-2012 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Andreas Schwab <schwab@xxxxxxx>.
 
@@ -60,7 +60,6 @@
 
 	cmpl	$-4095, %eax
 	jae	SYSCALL_ERROR_LABEL	/* Branch forward if it failed.  */
-.Lpseudo_end:
 	ret
 PSEUDO_END (__vfork)
 

Modified: fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/i386/sysdep-cancel.h
==============================================================================
--- fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/i386/sysdep-cancel.h (original)
+++ fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/i386/sysdep-cancel.h Thu Jul 26 00:01:40 2012
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002, 2003, 2004, 2005, 2006 Free Software Foundation, Inc.
+/* Copyright (C) 2002-2012 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Jakub Jelinek <jakub@xxxxxxxxxx>, 2002.
 
@@ -48,8 +48,7 @@
     POPCARGS_##args;							      \
     POPSTATE_##args							      \
     cmpl $-4095, %eax;							      \
-    jae SYSCALL_ERROR_LABEL;						      \
-  L(pseudo_end):
+    jae SYSCALL_ERROR_LABEL
 
 # define SAVE_OLDTYPE_0	movl %eax, %ecx;
 # define SAVE_OLDTYPE_1	SAVE_OLDTYPE_0

Modified: fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h
==============================================================================
--- fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h (original)
+++ fsf/trunk/libc/nptl/sysdeps/unix/sysv/linux/x86_64/sysdep-cancel.h Thu Jul 26 00:01:40 2012
@@ -1,4 +1,4 @@
-/* Copyright (C) 2002-2006, 2009 Free Software Foundation, Inc.
+/* Copyright (C) 2002-2012 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Jakub Jelinek <jakub@xxxxxxxxxx>, 2002.
 
@@ -56,8 +56,7 @@
     movq %rdx, %rax;							      \
     addq $8,%rsp; cfi_adjust_cfa_offset (-8);				      \
     cmpq $-4095, %rax;							      \
-    jae SYSCALL_ERROR_LABEL;						      \
-  L(pseudo_end):
+    jae SYSCALL_ERROR_LABEL
 
 
 # ifdef IS_IN_libpthread

Modified: fsf/trunk/libc/nptl/tst-pthread-getattr.c
==============================================================================
--- fsf/trunk/libc/nptl/tst-pthread-getattr.c (original)
+++ fsf/trunk/libc/nptl/tst-pthread-getattr.c Thu Jul 26 00:01:40 2012
@@ -23,38 +23,16 @@
 #include <sys/resource.h>
 #include <pthread.h>
 #include <alloca.h>
-#include <assert.h>
-
-/* There is an obscure bug in the kernel due to which RLIMIT_STACK is sometimes
-   returned as unlimited when it is not, which may cause this test to fail.
-   There is also the other case where RLIMIT_STACK is intentionally set as
-   unlimited or very high, which may result in a vma that is too large and again
-   results in a test case failure.  To avoid these problems, we cap the stack
-   size to one less than 8M.  See the following mailing list threads for more
-   information about this problem:
-   <http://sourceware.org/ml/libc-alpha/2012-06/msg00599.html>
-   <http://sourceware.org/ml/libc-alpha/2012-06/msg00713.html>.  */
-#define MAX_STACK_SIZE (8192 * 1024 - 1)
-
-#define _MIN(l,o) ((l) < (o) ? (l) : (o))
 
 /* Move the stack pointer so that stackaddr is accessible and then check if it
    really is accessible.  This will segfault if it fails.  */
-static void *
+static void
 allocate_and_test (void *stackaddr)
 {
   void *mem = &mem;
-  /* FIXME:  mem >= stackaddr for _STACK_GROWSUP.  */
+  /* FIXME:  The difference will be negative for _STACK_GROWSUP.  */
   mem = alloca ((size_t) (mem - stackaddr));
-  assert (mem <= stackaddr);
-
-  /* We don't access mem here because the compiler may move the stack pointer
-     beyond what we expect, thus making our alloca send the stack pointer
-     beyond stackaddr.  Using only stackaddr without the assert may make the
-     compiler think that this instruction is independent of the above alloca
-     and hence reshuffle to do this dereference before the alloca.  */
-  *(int *)stackaddr = 42;
-  return stackaddr;
+  *(int *)(mem) = 0;
 }
 
 static int
@@ -99,20 +77,17 @@
       return 1;
     }
 
-  printf ("current rlimit_stack is %zu\n", stack_limit.rlim_cur);
-
   if (get_self_pthread_attr ("check_stack_top", &stackaddr, &stacksize))
     return 1;
 
-  /* Reduce the rlimit to a page less that what is currently being returned
-     (subject to a maximum of MAX_STACK_SIZE) so that we ensure that
-     pthread_getattr_np uses rlimit.  The figure is intentionally unaligned so
-     to verify that pthread_getattr_np returns an aligned stacksize that
-     correctly fits into the rlimit.  We don't bother about the case where the
-     stack is limited by the vma below it and not by the rlimit because the
-     stacksize returned in that case is computed from the end of that vma and is
-     hence safe.  */
-  stack_limit.rlim_cur = _MIN(stacksize - 4095, MAX_STACK_SIZE);
+  /* Reduce the rlimit to a page less that what is currently being returned so
+     that we ensure that pthread_getattr_np uses rlimit.  The figure is
+     intentionally unaligned so to verify that pthread_getattr_np returns an
+     aligned stacksize that correctly fits into the rlimit.  We don't bother
+     about the case where the stack is limited by the vma below it and not by
+     the rlimit because the stacksize returned in that case is computed from
+     the end of that vma and is hence safe.  */
+  stack_limit.rlim_cur = stacksize - 4095;
   printf ("Adjusting RLIMIT_STACK to %zu\n", stack_limit.rlim_cur);
   if ((ret = setrlimit (RLIMIT_STACK, &stack_limit)))
     {
@@ -125,10 +100,7 @@
 
   printf ("Adjusted rlimit: stacksize=%zu, stackaddr=%p\n", stacksize,
           stackaddr);
-
-  /* So that the compiler does not optimize out this call.  */
-  stackaddr = allocate_and_test (stackaddr);
-  assert (*(int *)stackaddr == 42);
+  allocate_and_test (stackaddr);
 
   puts ("Stack top tests done");
 

Modified: fsf/trunk/libc/nscd/gai.c
==============================================================================
--- fsf/trunk/libc/nscd/gai.c (original)
+++ fsf/trunk/libc/nscd/gai.c Thu Jul 26 00:01:40 2012
@@ -1,4 +1,4 @@
-/* Copyright (C) 2004, 2005, 2006, 2007 Free Software Foundation, Inc.
+/* Copyright (C) 2004-2012 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@xxxxxxxxxx>, 2004.
 
@@ -43,7 +43,3 @@
 
 /* Some variables normally defined in libc.  */
 service_user *__nss_hosts_database;
-
-#if defined NEED_NETLINK && __ASSUME_NETLINK_SUPPORT == 0
-int __no_netlink_support attribute_hidden;
-#endif

Modified: fsf/trunk/libc/ports/ChangeLog.alpha
==============================================================================
--- fsf/trunk/libc/ports/ChangeLog.alpha (original)
+++ fsf/trunk/libc/ports/ChangeLog.alpha Thu Jul 26 00:01:40 2012
@@ -1,3 +1,8 @@
+2012-07-25  Florian Weimer  <fweimer@xxxxxxxxxx>
+
+	* sysdeps/unix/sysv/linux/alpha/nptl/libc.abilist: Add
+	secure_getenv.
+
 2012-07-20  Joseph Myers  <joseph@xxxxxxxxxxxxxxxx>
 
 	* data/localplt-alpha-linux-gnu.data: Move to ...

Modified: fsf/trunk/libc/ports/ChangeLog.arm
==============================================================================
--- fsf/trunk/libc/ports/ChangeLog.arm (original)
+++ fsf/trunk/libc/ports/ChangeLog.arm Thu Jul 26 00:01:40 2012
@@ -1,3 +1,13 @@
+2012-07-25  Joseph Myers  <joseph@xxxxxxxxxxxxxxxx>
+
+	* sysdeps/unix/sysv/linux/arm/kernel-features.h
+	(__ASSUME_FCNTL64): Define unconditionally.
+
+2012-07-25  Florian Weimer  <fweimer@xxxxxxxxxx>
+
+	* sysdeps/unix/sysv/linux/arm/nptl/libc.abilist: Add
+	secure_getenv.
+
 2012-07-20  Joseph Myers  <joseph@xxxxxxxxxxxxxxxx>
 
 	* data/localplt-arm-linux-gnueabi.data: Move to ...

Modified: fsf/trunk/libc/ports/ChangeLog.ia64
==============================================================================
--- fsf/trunk/libc/ports/ChangeLog.ia64 (original)
+++ fsf/trunk/libc/ports/ChangeLog.ia64 Thu Jul 26 00:01:40 2012
@@ -1,3 +1,8 @@
+2012-07-25  Florian Weimer  <fweimer@xxxxxxxxxx>
+
+	* sysdeps/unix/sysv/linux/ia64/nptl/libc.abilist: Add
+	secure_getenv.
+
 2012-07-20  Joseph Myers  <joseph@xxxxxxxxxxxxxxxx>
 
 	* data/localplt-ia64-linux-gnu.data: Move to ...

Modified: fsf/trunk/libc/ports/ChangeLog.m68k
==============================================================================
--- fsf/trunk/libc/ports/ChangeLog.m68k (original)
+++ fsf/trunk/libc/ports/ChangeLog.m68k Thu Jul 26 00:01:40 2012
@@ -1,3 +1,18 @@
+2012-07-25  Joseph Myers  <joseph@xxxxxxxxxxxxxxxx>
+
+	* sysdeps/unix/sysv/linux/m68k/kernel-features.h
+	(__ASSUME_MMAP2_SYSCALL): Define unconditionally.
+	(__ASSUME_STAT64_SYSCALL): Likewise.
+	(__ASSUME_FCNTL64): Likewise.
+	(__ASSUME_VFORK_SYSCALL): Likewise.
+
+2012-07-25  Florian Weimer  <fweimer@xxxxxxxxxx>
+
+	* sysdeps/unix/sysv/linux/m68k/coldfire/nptl/libc.abilist:
+	Add secure_getenv.
+	* sysdeps/unix/sysv/linux/m68k/m680x0/nptl/libc.abilist:
+	Likewise.
+
 2012-07-20  Joseph Myers  <joseph@xxxxxxxxxxxxxxxx>
 
 	* data/localplt-m68k-linux-gnu.data: Move to ...

Modified: fsf/trunk/libc/ports/ChangeLog.mips
==============================================================================
--- fsf/trunk/libc/ports/ChangeLog.mips (original)
+++ fsf/trunk/libc/ports/ChangeLog.mips Thu Jul 26 00:01:40 2012
@@ -1,3 +1,12 @@
+2012-07-25  Florian Weimer  <fweimer@xxxxxxxxxx>
+
+	* sysdeps/unix/sysv/linux/mips/mips32/nptl/libc.abilist: Add
+	secure_getenv.
+	* sysdeps/unix/sysv/linux/mips/mips64/n32/nptl/libc.abilist:
+	Likewise.
+	* sysdeps/unix/sysv/linux/mips/mips64/n64/nptl/libc.abilist:
+	Likewise.
+
 2012-07-17  Joseph Myers  <joseph@xxxxxxxxxxxxxxxx>
 
 	* sysdeps/mips/configure.in: Remove TLS check.

Modified: fsf/trunk/libc/ports/ChangeLog.powerpc
==============================================================================
--- fsf/trunk/libc/ports/ChangeLog.powerpc (original)
+++ fsf/trunk/libc/ports/ChangeLog.powerpc Thu Jul 26 00:01:40 2012
@@ -1,3 +1,10 @@
+2012-07-25  Florian Weimer  <fweimer@xxxxxxxxxx>
+
+	* sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/nptl/libc.abilist:
+	Add secure_getenv.
+	* sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libc.abilist:
+	Likewise.
+
 2012-07-20  Joseph Myers  <joseph@xxxxxxxxxxxxxxxx>
 
 	* data/localplt-powerpcsoft-linux-gnu.data: Move to ...

Modified: fsf/trunk/libc/ports/ChangeLog.tile
==============================================================================
--- fsf/trunk/libc/ports/ChangeLog.tile (original)
+++ fsf/trunk/libc/ports/ChangeLog.tile Thu Jul 26 00:01:40 2012
@@ -1,3 +1,10 @@
+2012-07-25  Florian Weimer  <fweimer@xxxxxxxxxx>
+
+	* sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libc.abilist:
+	Add secure_getenv.
+	* sysdeps/unix/sysv/linux/tile/tilepro/nptl/libc.abilist:
+	Likewise.
+
 2012-07-17  Chris Metcalf  <cmetcalf@xxxxxxxxxx>
 
 	* sysdeps/unix/sysv/linux/tile/setcontext.S: Ensure exit status is

Modified: fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/alpha/nptl/libc.abilist
==============================================================================
--- fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/alpha/nptl/libc.abilist (original)
+++ fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/alpha/nptl/libc.abilist Thu Jul 26 00:01:40 2012
@@ -1811,6 +1811,9 @@
  sys_errlist D 0x460
  sys_nerr D 0x4
  timespec_get F
+GLIBC_2.17
+ GLIBC_2.17 A
+ secure_getenv F
 GLIBC_2.2
  GLIBC_2.2 A
  _IO_adjust_wcolumn F

Modified: fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/arm/kernel-features.h
==============================================================================
--- fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/arm/kernel-features.h (original)
+++ fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/arm/kernel-features.h Thu Jul 26 00:01:40 2012
@@ -28,9 +28,7 @@
 #define __ASSUME_STAT64_SYSCALL	1
 
 /* Arm got fcntl64 in 2.4.4.  */
-#if __LINUX_KERNEL_VERSION >= 132100
-# define __ASSUME_FCNTL64		1
-#endif
+#define __ASSUME_FCNTL64		1
 
 /* The vfork syscall on arm was definitely available in 2.4.  */
 #define __ASSUME_VFORK_SYSCALL		1

Modified: fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/arm/nptl/libc.abilist
==============================================================================
--- fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/arm/nptl/libc.abilist (original)
+++ fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/arm/nptl/libc.abilist Thu Jul 26 00:01:40 2012
@@ -78,6 +78,9 @@
  mbrtoc16 F
  mbrtoc32 F
  timespec_get F
+GLIBC_2.17
+ GLIBC_2.17 A
+ secure_getenv F
 GLIBC_2.4
  GLIBC_2.4 A
  _Exit F

Modified: fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/ia64/nptl/libc.abilist
==============================================================================
--- fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/ia64/nptl/libc.abilist (original)
+++ fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/ia64/nptl/libc.abilist Thu Jul 26 00:01:40 2012
@@ -78,6 +78,9 @@
  mbrtoc16 F
  mbrtoc32 F
  timespec_get F
+GLIBC_2.17
+ GLIBC_2.17 A
+ secure_getenv F
 GLIBC_2.2
  GLIBC_2.2 A
  _Exit F

Modified: fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/m68k/coldfire/nptl/libc.abilist
==============================================================================
--- fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/m68k/coldfire/nptl/libc.abilist (original)
+++ fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/m68k/coldfire/nptl/libc.abilist Thu Jul 26 00:01:40 2012
@@ -79,6 +79,9 @@
  mbrtoc16 F
  mbrtoc32 F
  timespec_get F
+GLIBC_2.17
+ GLIBC_2.17 A
+ secure_getenv F
 GLIBC_2.4
  GLIBC_2.4 A
  _Exit F

Modified: fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/m68k/kernel-features.h
==============================================================================
--- fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/m68k/kernel-features.h (original)
+++ fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/m68k/kernel-features.h Thu Jul 26 00:01:40 2012
@@ -18,12 +18,10 @@
    <http://www.gnu.org/licenses/>.  */
 
 /* These features were surely available with 2.4.12.  */
-#if __LINUX_KERNEL_VERSION >= 132108
-# define __ASSUME_MMAP2_SYSCALL		1
-# define __ASSUME_STAT64_SYSCALL	1
-# define __ASSUME_FCNTL64		1
-# define __ASSUME_VFORK_SYSCALL		1
-#endif
+#define __ASSUME_MMAP2_SYSCALL		1
+#define __ASSUME_STAT64_SYSCALL	1
+#define __ASSUME_FCNTL64		1
+#define __ASSUME_VFORK_SYSCALL		1
 
 /* Many syscalls were added in 2.6.10 for m68k.  */
 #if __LINUX_KERNEL_VERSION >= 132618

Modified: fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/m68k/m680x0/nptl/libc.abilist
==============================================================================
--- fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/m68k/m680x0/nptl/libc.abilist (original)
+++ fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/m68k/m680x0/nptl/libc.abilist Thu Jul 26 00:01:40 2012
@@ -1767,6 +1767,9 @@
  mbrtoc16 F
  mbrtoc32 F
  timespec_get F
+GLIBC_2.17
+ GLIBC_2.17 A
+ secure_getenv F
 GLIBC_2.2
  GLIBC_2.2 A
  _IO_adjust_wcolumn F

Modified: fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/mips/mips32/nptl/libc.abilist
==============================================================================
--- fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/mips/mips32/nptl/libc.abilist (original)
+++ fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/mips/mips32/nptl/libc.abilist Thu Jul 26 00:01:40 2012
@@ -2242,3 +2242,6 @@
  pipe2 F
 _gp_disp
  _gp_disp A
+GLIBC_2.17
+ GLIBC_2.17 A
+ secure_getenv F

Modified: fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/mips/mips64/n32/nptl/libc.abilist
==============================================================================
--- fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/mips/mips64/n32/nptl/libc.abilist (original)
+++ fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/mips/mips64/n32/nptl/libc.abilist Thu Jul 26 00:01:40 2012
@@ -1390,6 +1390,9 @@
  mbrtoc16 F
  mbrtoc32 F
  timespec_get F
+GLIBC_2.17
+ GLIBC_2.17 A
+ secure_getenv F
 GLIBC_2.2
  GLIBC_2.2 A
  _Exit F

Modified: fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/mips/mips64/n64/nptl/libc.abilist
==============================================================================
--- fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/mips/mips64/n64/nptl/libc.abilist (original)
+++ fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/mips/mips64/n64/nptl/libc.abilist Thu Jul 26 00:01:40 2012
@@ -1388,6 +1388,9 @@
  mbrtoc16 F
  mbrtoc32 F
  timespec_get F
+GLIBC_2.17
+ GLIBC_2.17 A
+ secure_getenv F
 GLIBC_2.2
  GLIBC_2.2 A
  _Exit F

Modified: fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/nptl/libc.abilist
==============================================================================
--- fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/nptl/libc.abilist (original)
+++ fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/nptl/libc.abilist Thu Jul 26 00:01:40 2012
@@ -1772,6 +1772,9 @@
  mbrtoc16 F
  mbrtoc32 F
  timespec_get F
+GLIBC_2.17
+ GLIBC_2.17 A
+ secure_getenv F
 GLIBC_2.2
  GLIBC_2.2 A
  _IO_adjust_wcolumn F

Modified: fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libc.abilist
==============================================================================
--- fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libc.abilist (original)
+++ fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/nptl/libc.abilist Thu Jul 26 00:01:40 2012
@@ -2080,3 +2080,6 @@
  mbrtoc16 F
  mbrtoc32 F
  timespec_get F
+GLIBC_2.17
+ GLIBC_2.17 A
+ secure_getenv F

Modified: fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libc.abilist
==============================================================================
--- fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libc.abilist (original)
+++ fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/nptl/libc.abilist Thu Jul 26 00:01:40 2012
@@ -2080,3 +2080,6 @@
  mbrtoc16 F
  mbrtoc32 F
  timespec_get F
+GLIBC_2.17
+ GLIBC_2.17 A
+ secure_getenv F

Modified: fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/tile/tilepro/nptl/libc.abilist
==============================================================================
--- fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/tile/tilepro/nptl/libc.abilist (original)
+++ fsf/trunk/libc/ports/sysdeps/unix/sysv/linux/tile/tilepro/nptl/libc.abilist Thu Jul 26 00:01:40 2012
@@ -2080,3 +2080,6 @@
  mbrtoc16 F
  mbrtoc32 F
  timespec_get F
+GLIBC_2.17
+ GLIBC_2.17 A
+ secure_getenv F

Modified: fsf/trunk/libc/stdlib/Makefile
==============================================================================
--- fsf/trunk/libc/stdlib/Makefile (original)
+++ fsf/trunk/libc/stdlib/Makefile Thu Jul 26 00:01:40 2012
@@ -68,7 +68,9 @@
 		   tst-atof1 tst-atof2 tst-strtod2 tst-strtod3 tst-rand48-2 \
 		   tst-makecontext tst-strtod4 tst-strtod5 tst-qsort2	    \
 		   tst-makecontext2 tst-strtod6 tst-unsetenv1		    \
-		   tst-makecontext3 bug-getcontext bug-fmtmsg1
+		   tst-makecontext3 bug-getcontext bug-fmtmsg1		    \
+		   tst-secure-getenv
+tests-static	:= tst-secure-getenv
 
 include ../Makeconfig
 

Modified: fsf/trunk/libc/stdlib/Versions
==============================================================================
--- fsf/trunk/libc/stdlib/Versions (original)
+++ fsf/trunk/libc/stdlib/Versions Thu Jul 26 00:01:40 2012
@@ -6,7 +6,7 @@
     # functions used in inline functions or macros
     __strto*_internal;
 
-    # functions used in other libraries
+    # compatibility symbol
     __secure_getenv;
 
     # a*
@@ -103,11 +103,16 @@
   GLIBC_2.13 {
     __fentry__;
   }
+  GLIBC_2.17 {
+    secure_getenv;
+  }
   GLIBC_PRIVATE {
     # functions which have an additional interface since they are
     # are cancelable.
     __libc_system;
     # Variable which needs a dynamic symbol table entry.
     __abort_msg;
+    # Used from other libraries
+    __libc_secure_getenv;
   }
 }

Modified: fsf/trunk/libc/stdlib/secure-getenv.c
==============================================================================
--- fsf/trunk/libc/stdlib/secure-getenv.c (original)
+++ fsf/trunk/libc/stdlib/secure-getenv.c Thu Jul 26 00:01:40 2012
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1992, 1994, 1996, 2002 Free Software Foundation, Inc.
+/* Copyright (C) 1991-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
@@ -18,13 +18,20 @@
 #include <stdlib.h>
 #include <unistd.h>
 
+#include <shlib-compat.h>
+
 /* Some programs and especially the libc itself have to be careful
    what values to accept from the environment.  This special version
    checks for SUID or SGID first before doing any work.  */
 char *
-__secure_getenv (name)
+__libc_secure_getenv (name)
      const char *name;
 {
   return __libc_enable_secure ? NULL : getenv (name);
 }
-libc_hidden_def (__secure_getenv)
+weak_alias (__libc_secure_getenv, secure_getenv)
+libc_hidden_weak (__libc_secure_getenv)
+
+#if SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_16)
+compat_symbol (libc, __libc_secure_getenv, __secure_getenv, GLIBC_2_0);
+#endif

Modified: fsf/trunk/libc/stdlib/stdlib.h
==============================================================================
--- fsf/trunk/libc/stdlib/stdlib.h (original)
+++ fsf/trunk/libc/stdlib/stdlib.h Thu Jul 26 00:01:40 2012
@@ -568,10 +568,12 @@
 extern char *getenv (const char *__name) __THROW __nonnull ((1)) __wur;
 __END_NAMESPACE_STD
 
+#ifdef __USE_GNU
 /* This function is similar to the above but returns NULL if the
    programs is running with SUID or SGID enabled.  */
-extern char *__secure_getenv (const char *__name)
+extern char *secure_getenv (const char *__name)
      __THROW __nonnull ((1)) __wur;
+#endif
 
 #if defined __USE_SVID || defined __USE_XOPEN
 /* The SVID says this is in <stdio.h>, but this seems a better place.	*/

Added: fsf/trunk/libc/stdlib/tst-secure-getenv.c
==============================================================================
--- fsf/trunk/libc/stdlib/tst-secure-getenv.c (added)
+++ fsf/trunk/libc/stdlib/tst-secure-getenv.c Thu Jul 26 00:01:40 2012
@@ -1,0 +1,250 @@
+/* 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/>.  */
+
+/* Test that secure_getenv works by invoking the test as a SGID
+   program with a group ID from the supplementary group list.  This
+   test can fail spuriously if the user is not a member of a suitable
+   supplementary group. */
+
+#include <errno.h>
+#include <fcntl.h>
+#include <stdlib.h>
+#include <stdint.h>
+#include <stdio.h>
+#include <string.h>
+#include <sys/stat.h>
+#include <sys/wait.h>
+#include <unistd.h>
+
+static char MAGIC_ARGUMENT[] = "run-actual-test";
+#define MAGIC_STATUS 19
+
+static const char *test_dir;
+
+/* Return a GID which is not our current GID, but is present in the
+   supplementary group list. */
+static gid_t
+choose_gid (void)
+{
+  const int count = 64;
+  gid_t groups[count];
+  int ret = getgroups (count, groups);
+  if (ret < 0)
+    {
+      perror ("getgroups");
+      exit (1);
+    }
+  gid_t current = getgid ();
+  for (int i = 0; i < ret; ++i)
+    {
+      if (groups[i] != current)
+	return groups[i];
+    }
+  return 0;
+}
+
+
+/* Copies the executable into a restricted directory, so that we can
+   safely make it SGID with the TARGET group ID.  Then runs the
+   executable. */
+static int
+run_executable_sgid (gid_t target)
+{
+  char *dirname = 0;
+  char *execname = 0;
+  int infd = -1;
+  int outfd = -1;
+  int ret = -1;
+  if (asprintf (&dirname, "%s/secure-getenv.%jd",
+		test_dir, (intmax_t) getpid ()) < 0)
+    {
+      perror ("asprintf");
+      goto err;
+    }
+  if (mkdir (dirname, 0700) < 0)
+    {
+      perror ("mkdir");
+      goto err;
+    }
+  if (asprintf (&execname, "%s/bin", dirname) < 0)
+    {
+      perror ("asprintf");
+      goto err;
+    }
+  infd = open ("/proc/self/exe", O_RDONLY);
+  if (infd < 0)
+    {
+      perror ("open");
+      goto err;
+    }
+  outfd = open (execname, O_WRONLY | O_CREAT | O_EXCL, 0700);
+  if (outfd < 0)
+    {
+      perror ("open");
+      goto err;
+    }
+  char buf[4096];
+  for (;;)
+    {
+      ssize_t rdcount = read (infd, buf, sizeof (buf));
+      if (rdcount < 0)
+	{
+	  perror ("read");
+	  goto err;
+	}
+      if (rdcount == 0)
+	break;
+      char *p = buf;
+      char *end = buf + rdcount;
+      while (p != end)
+	{
+	  ssize_t wrcount = write (outfd, buf, end - p);
+	  if (wrcount == 0)
+	    errno = ENOSPC;
+	  if (wrcount <= 0)
+	    {
+	      perror ("write");
+	      goto err;
+	    }
+	  p += wrcount;
+	}
+    }
+  if (fchown (outfd, getuid (), target) < 0)
+    {
+      perror ("fchown");
+      goto err;
+    }
+  if (fchmod (outfd, 02750) < 0)
+    {
+      perror ("fchmod");
+      goto err;
+    }
+  if (close (outfd) < 0)
+    {
+      perror ("close");
+      goto err;
+    }
+  if (close (infd) < 0)
+    {
+      perror ("close");
+      goto err;
+    }
+
+  int kid = fork ();
+  if (kid < 0)
+    {
+      perror ("fork");
+      goto err;
+    }
+  if (kid == 0)
+    {
+      /* Child process. */
+      char *args[] = { execname, MAGIC_ARGUMENT, NULL };
+      execve (execname, args, environ);
+      perror ("execve");
+      _exit (1);
+    }
+  int status;
+  if (waitpid (kid, &status, 0) < 0)
+    {
+      perror ("waitpid");
+      goto err;
+    }
+  if (!WIFEXITED (status) || WEXITSTATUS (status) != MAGIC_STATUS)
+    {
+      fprintf (stderr, "Unexpected exit status %d from child process\n",
+	       status);
+      goto err;
+    }
+  ret = 0;
+
+err:
+  if (outfd >= 0)
+    close (outfd);
+  if (infd >= 0)
+    close (infd);
+  if (execname)
+    {
+      unlink (execname);
+      free (execname);
+    }
+  if (dirname)
+    {
+      rmdir (dirname);
+      free (dirname);
+    }
+  return ret;
+}
+
+static int
+do_test (void)
+{
+  if (getenv ("PATH") == NULL)
+    {
+      fprintf (stderr, "PATH not set\n");
+      exit (1);
+    }
+  if (secure_getenv ("PATH") == NULL)
+    {
+      fprintf (stderr, "PATH not set according to secure_getenv\n");
+      exit (1);
+    }
+  if (strcmp (getenv ("PATH"), secure_getenv ("PATH")) != 0)
+    {
+      fprintf (stderr, "PATH mismatch (%s, %s)\n",
+	       getenv ("PATH"), secure_getenv ("PATH"));
+      exit (1);
+    }
+
+  gid_t target = choose_gid ();
+  if (target == 0)
+    {
+      fprintf (stderr, "Could not find a suitable GID user %jd\n",
+	       (intmax_t) getuid ());
+      exit (1);
+    }
+  return run_executable_sgid (target);
+}
+
+static void
+alternative_main (int argc, char **argv)
+{
+  if (argc == 2 && strcmp (argv[1], MAGIC_ARGUMENT) == 0)
+    {
+      if (getgid () == getegid ())
+	{
+	  fprintf (stderr, "SGID failed: GID and EGID match (%jd)\n",
+		   (intmax_t) getgid ());
+	  exit (2);
+	}
+      if (getenv ("PATH") == NULL)
+	{
+	  fprintf (stderr, "PATH variable not present\n");
+	  exit (3);
+	}
+      if (secure_getenv ("PATH") != NULL)
+	{
+	  fprintf (stderr, "PATH variable not filtered out\n");
+	  exit (4);
+	}
+      exit (MAGIC_STATUS);
+    }
+}
+
+#define PREPARE(argc, argv) alternative_main(argc, argv)
+#define TEST_FUNCTION do_test ()
+#include "../test-skeleton.c"

Modified: fsf/trunk/libc/sysdeps/generic/ldsodefs.h
==============================================================================
--- fsf/trunk/libc/sysdeps/generic/ldsodefs.h (original)
+++ fsf/trunk/libc/sysdeps/generic/ldsodefs.h Thu Jul 26 00:01:40 2012
@@ -182,28 +182,6 @@
   };
 
 
-/* Type for list of auditing interfaces.  */
-struct La_i86_regs;
-struct La_i86_retval;
-struct La_x86_64_regs;
-struct La_x86_64_retval;
-struct La_x32_regs;
-struct La_x32_retval;
-struct La_ppc32_regs;
-struct La_ppc32_retval;
-struct La_ppc64_regs;
-struct La_ppc64_retval;
-struct La_sh_regs;
-struct La_sh_retval;
-struct La_s390_32_regs;
-struct La_s390_32_retval;
-struct La_s390_64_regs;
-struct La_s390_64_retval;
-struct La_sparc32_regs;
-struct La_sparc32_retval;
-struct La_sparc64_regs;
-struct La_sparc64_retval;
-
 struct audit_ifaces
 {
   void (*activity) (uintptr_t *, unsigned int);
@@ -219,98 +197,12 @@
   };
   union
   {
-    Elf32_Addr (*i86_gnu_pltenter) (Elf32_Sym *, unsigned int, uintptr_t *,
-				    uintptr_t *, struct La_i86_regs *,
-				    unsigned int *, const char *name,
-				    long int *framesizep);
-    Elf64_Addr (*x86_64_gnu_pltenter) (Elf64_Sym *, unsigned int, uintptr_t *,
-				       uintptr_t *, struct La_x86_64_regs *,
-				       unsigned int *, const char *name,
-				       long int *framesizep);
-    Elf32_Addr (*x32_gnu_pltenter) (Elf32_Sym *, unsigned int, uintptr_t *,
-				    uintptr_t *, struct La_x32_regs *,
-				    unsigned int *, const char *name,
-				    long int *framesizep);
-    Elf32_Addr (*ppc32_gnu_pltenter) (Elf32_Sym *, unsigned int, uintptr_t *,
-				      uintptr_t *, struct La_ppc32_regs *,
-				      unsigned int *, const char *name,
-				      long int *framesizep);
-    Elf64_Addr (*ppc64_gnu_pltenter) (Elf64_Sym *, unsigned int, uintptr_t *,
-				      uintptr_t *, struct La_ppc64_regs *,
-				      unsigned int *, const char *name,
-				      long int *framesizep);
-    uintptr_t (*sh_gnu_pltenter) (Elf32_Sym *, unsigned int, uintptr_t *,
-				  uintptr_t *, const struct La_sh_regs *,
-				  unsigned int *, const char *name,
-				  long int *framesizep);
-    Elf32_Addr (*s390_32_gnu_pltenter) (Elf32_Sym *, unsigned int, uintptr_t *,
-					uintptr_t *, struct La_s390_32_regs *,
-					unsigned int *, const char *name,
-					long int *framesizep);
-    Elf64_Addr (*s390_64_gnu_pltenter) (Elf64_Sym *, unsigned int, uintptr_t *,
-					uintptr_t *, struct La_s390_64_regs *,
-					unsigned int *, const char *name,
-					long int *framesizep);
-    Elf32_Addr (*sparc32_gnu_pltenter) (Elf32_Sym *, unsigned int,
-					uintptr_t *, uintptr_t *,
-					const struct La_sparc32_regs *,
-					unsigned int *, const char *name,
-					long int *framesizep);
-    Elf64_Addr (*sparc64_gnu_pltenter) (Elf64_Sym *, unsigned int,
-					uintptr_t *, uintptr_t *,
-					const struct La_sparc64_regs *,
-					unsigned int *, const char *name,
-					long int *framesizep);
 #ifdef ARCH_PLTENTER_MEMBERS
     ARCH_PLTENTER_MEMBERS;
 #endif
   };
   union
   {
-    unsigned int (*i86_gnu_pltexit) (Elf32_Sym *, unsigned int, uintptr_t *,
-				     uintptr_t *, const struct La_i86_regs *,
-				     struct La_i86_retval *, const char *);
-    unsigned int (*x86_64_gnu_pltexit) (Elf64_Sym *, unsigned int, uintptr_t *,
-					uintptr_t *,
-					const struct La_x86_64_regs *,
-					struct La_x86_64_retval *,
-					const char *);
-    unsigned int (*x32_gnu_pltexit) (Elf32_Sym *, unsigned int, uintptr_t *,
-				     uintptr_t *,
-				     const struct La_x32_regs *,
-				     struct La_x86_64_retval *,
-				     const char *);
-    unsigned int (*ppc32_gnu_pltexit) (Elf32_Sym *, unsigned int, uintptr_t *,
-				       uintptr_t *,
-				       const struct La_ppc32_regs *,
-				       struct La_ppc32_retval *, const char *);
-    unsigned int (*ppc64_gnu_pltexit) (Elf64_Sym *, unsigned int, uintptr_t *,
-				       uintptr_t *,
-				       const struct La_ppc64_regs *,
-				       struct La_ppc64_retval *, const char *);
-    unsigned int (*sh_gnu_pltexit) (Elf32_Sym *, unsigned int, uintptr_t *,
-				    uintptr_t *, const struct La_sh_regs *,
-				    struct La_sh_retval *, const char *);
-    unsigned int (*s390_32_gnu_pltexit) (Elf32_Sym *, unsigned int,
-					 uintptr_t *, uintptr_t *,
-					 const struct La_s390_32_regs *,
-					 struct La_s390_32_retval *,
-					 const char *);
-    unsigned int (*s390_64_gnu_pltexit) (Elf64_Sym *, unsigned int,
-					 uintptr_t *, uintptr_t *,
-					 const struct La_s390_64_regs *,
-					 struct La_s390_64_retval *,
-					 const char *);
-    unsigned int (*sparc32_gnu_pltexit) (Elf32_Sym *, unsigned int,
-					 uintptr_t *, uintptr_t *,
-					 const struct La_sparc32_regs *,
-					 struct La_sparc32_retval *,
-					 const char *);
-    unsigned int (*sparc64_gnu_pltexit) (Elf64_Sym *, unsigned int,
-					 uintptr_t *, uintptr_t *,
-					 const struct La_sparc32_regs *,
-					 struct La_sparc32_retval *,
-					 const char *);
 #ifdef ARCH_PLTEXIT_MEMBERS
     ARCH_PLTEXIT_MEMBERS;
 #endif

Added: fsf/trunk/libc/sysdeps/i386/ldsodefs.h
==============================================================================
--- fsf/trunk/libc/sysdeps/i386/ldsodefs.h (added)
+++ fsf/trunk/libc/sysdeps/i386/ldsodefs.h Thu Jul 26 00:01:40 2012
@@ -1,0 +1,40 @@
+/* Run-time dynamic linker data structures for loaded ELF shared objects.
+   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
+   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/>.  */
+
+#ifndef	_I386_LDSODEFS_H
+#define	_I386_LDSODEFS_H	1
+
+#include <elf.h>
+
+struct La_i86_regs;
+struct La_i86_retval;
+
+#define ARCH_PLTENTER_MEMBERS						\
+    Elf32_Addr (*i86_gnu_pltenter) (Elf32_Sym *, unsigned int, uintptr_t *, \
+				    uintptr_t *, struct La_i86_regs *,	\
+				    unsigned int *, const char *name,	\
+				    long int *framesizep)
+
+#define ARCH_PLTEXIT_MEMBERS						\
+    unsigned int (*i86_gnu_pltexit) (Elf32_Sym *, unsigned int, uintptr_t *, \
+				     uintptr_t *, const struct La_i86_regs *, \
+				     struct La_i86_retval *, const char *)
+
+#include_next <ldsodefs.h>
+
+#endif

Modified: fsf/trunk/libc/sysdeps/ieee754/dbl-64/e_jn.c
==============================================================================
--- fsf/trunk/libc/sysdeps/ieee754/dbl-64/e_jn.c (original)
+++ fsf/trunk/libc/sysdeps/ieee754/dbl-64/e_jn.c Thu Jul 26 00:01:40 2012
@@ -36,6 +36,7 @@
  *
  */
 
+#include <errno.h>
 #include <math.h>
 #include <math_private.h>
 
@@ -276,6 +277,9 @@
 		GET_HIGH_WORD(high,b);
 		a = temp;
 	    }
+	    /* If B is +-Inf, set up errno accordingly.  */
+	    if (! __finite (b))
+	      __set_errno (ERANGE);
 	}
 	if(sign>0) return b; else return -b;
 }

Modified: fsf/trunk/libc/sysdeps/ieee754/flt-32/e_jnf.c
==============================================================================
--- fsf/trunk/libc/sysdeps/ieee754/flt-32/e_jnf.c (original)
+++ fsf/trunk/libc/sysdeps/ieee754/flt-32/e_jnf.c Thu Jul 26 00:01:40 2012
@@ -13,6 +13,7 @@
  * ====================================================
  */
 
+#include <errno.h>
 #include <math.h>
 #include <math_private.h>
 
@@ -199,6 +200,9 @@
 	    GET_FLOAT_WORD(ib,b);
 	    a = temp;
 	}
+	/* If B is +-Inf, set up errno accordingly.  */
+	if (! __finitef (b))
+	  __set_errno (ERANGE);
 	if(sign>0) return b; else return -b;
 }
 strong_alias (__ieee754_ynf, __ynf_finite)

Modified: fsf/trunk/libc/sysdeps/ieee754/ldbl-128/e_jnl.c
==============================================================================
--- fsf/trunk/libc/sysdeps/ieee754/ldbl-128/e_jnl.c (original)
+++ fsf/trunk/libc/sysdeps/ieee754/ldbl-128/e_jnl.c Thu Jul 26 00:01:40 2012
@@ -56,6 +56,7 @@
  *
  */
 
+#include <errno.h>
 #include <math.h>
 #include <math_private.h>
 
@@ -385,6 +386,9 @@
 	  a = temp;
 	}
     }
+  /* If B is +-Inf, set up errno accordingly.  */
+  if (! __finitel (b))
+    __set_errno (ERANGE);
   if (sign > 0)
     return b;
   else

Modified: fsf/trunk/libc/sysdeps/ieee754/ldbl-128ibm/e_jnl.c
==============================================================================
--- fsf/trunk/libc/sysdeps/ieee754/ldbl-128ibm/e_jnl.c (original)
+++ fsf/trunk/libc/sysdeps/ieee754/ldbl-128ibm/e_jnl.c Thu Jul 26 00:01:40 2012
@@ -56,6 +56,7 @@
  *
  */
 
+#include <errno.h>
 #include <math.h>
 #include <math_private.h>
 
@@ -387,6 +388,9 @@
 	  a = temp;
 	}
     }
+  /* If B is +-Inf, set up errno accordingly.  */
+  if (! __finitel (b))
+    __set_errno (ERANGE);
   if (sign > 0)
     return b;
   else

Modified: fsf/trunk/libc/sysdeps/ieee754/ldbl-96/e_jnl.c
==============================================================================
--- fsf/trunk/libc/sysdeps/ieee754/ldbl-96/e_jnl.c (original)
+++ fsf/trunk/libc/sysdeps/ieee754/ldbl-96/e_jnl.c Thu Jul 26 00:01:40 2012
@@ -56,6 +56,7 @@
  *
  */
 
+#include <errno.h>
 #include <math.h>
 #include <math_private.h>
 
@@ -369,6 +370,9 @@
 	  a = temp;
 	}
     }
+  /* If B is +-Inf, set up errno accordingly.  */
+  if (! __finitel (b))
+    __set_errno (ERANGE);
   if (sign > 0)
     return b;
   else

Modified: fsf/trunk/libc/sysdeps/mach/hurd/tmpfile.c
==============================================================================
--- fsf/trunk/libc/sysdeps/mach/hurd/tmpfile.c (original)
+++ fsf/trunk/libc/sysdeps/mach/hurd/tmpfile.c Thu Jul 26 00:01:40 2012
@@ -37,7 +37,7 @@
   FILE *f;
 
   /* Get a port to the directory that will contain the file.  */
-  const char *dirname = __secure_getenv ("TMPDIR") ?: P_tmpdir;
+  const char *dirname = __libc_secure_getenv ("TMPDIR") ?: P_tmpdir;
   file_t dir = __file_name_lookup (dirname, 0, 0);
   if (dir == MACH_PORT_NULL)
     return NULL;

Modified: fsf/trunk/libc/sysdeps/posix/libc_fatal.c
==============================================================================
--- fsf/trunk/libc/sysdeps/posix/libc_fatal.c (original)
+++ fsf/trunk/libc/sysdeps/posix/libc_fatal.c Thu Jul 26 00:01:40 2012
@@ -1,5 +1,4 @@
-/* Copyright (C) 1993-1995,1997,2000,2004,2005,2009,2011
-	Free Software Foundation, Inc.
+/* Copyright (C) 1993-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
@@ -61,7 +60,7 @@
 
   /* Open a descriptor for /dev/tty unless the user explicitly
      requests errors on standard error.  */
-  const char *on_2 = __secure_getenv ("LIBC_FATAL_STDERR_");
+  const char *on_2 = __libc_secure_getenv ("LIBC_FATAL_STDERR_");
   if (on_2 == NULL || *on_2 == '\0')
     fd = open_not_cancel_2 (_PATH_TTY, O_RDWR | O_NOCTTY | O_NDELAY);
 

Modified: fsf/trunk/libc/sysdeps/posix/sysconf.c
==============================================================================
--- fsf/trunk/libc/sysdeps/posix/sysconf.c (original)
+++ fsf/trunk/libc/sysdeps/posix/sysconf.c Thu Jul 26 00:01:40 2012
@@ -1,5 +1,4 @@
-/* Copyright (C) 1991,1993,1995-1997,1999-2003,2004,2006,2009
-	Free Software Foundation, Inc.
+/* Copyright (C) 1991-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
@@ -1259,7 +1258,7 @@
 {
   int save_errno = errno;
 
-  const char *getconf_dir = __secure_getenv ("GETCONF_DIR") ?: GETCONF_DIR;
+  const char *getconf_dir = __libc_secure_getenv ("GETCONF_DIR") ?: GETCONF_DIR;
   size_t getconf_dirlen = strlen (getconf_dir);
   size_t speclen = strlen (spec);
 

Modified: fsf/trunk/libc/sysdeps/posix/tempname.c
==============================================================================
--- fsf/trunk/libc/sysdeps/posix/tempname.c (original)
+++ fsf/trunk/libc/sysdeps/posix/tempname.c Thu Jul 26 00:01:40 2012
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991-2001, 2006, 2007, 2009 Free Software Foundation, Inc.
+/* Copyright (C) 1991-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
@@ -101,8 +101,12 @@
 # define __xstat64(version, path, buf) stat (path, buf)
 #endif
 
-#if ! (HAVE___SECURE_GETENV || _LIBC)
-# define __secure_getenv getenv
+#if ! (HAVE_SECURE_GETENV || _LIBC)
+# ifdef HAVE___SECURE_GETENV
+#  define __libc_secure_getenv __secure_getenv
+# else
+#  define __libc_secure_getenv getenv
+# endif
 #endif
 
 #ifdef _LIBC
@@ -168,7 +172,7 @@
 
   if (try_tmpdir)
     {
-      d = __secure_getenv ("TMPDIR");
+      d = __libc_secure_getenv ("TMPDIR");
       if (d != NULL && direxists (d))
 	dir = d;
       else if (dir != NULL && direxists (dir))

Added: fsf/trunk/libc/sysdeps/powerpc/ldsodefs.h
==============================================================================
--- fsf/trunk/libc/sysdeps/powerpc/ldsodefs.h (added)
+++ fsf/trunk/libc/sysdeps/powerpc/ldsodefs.h Thu Jul 26 00:01:40 2012
@@ -1,0 +1,54 @@
+/* Run-time dynamic linker data structures for loaded ELF shared objects.
+   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
+   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/>.  */
+
+#ifndef	_POWERPC_LDSODEFS_H
+#define	_POWERPC_LDSODEFS_H	1
+
+#include <elf.h>
+
+struct La_ppc32_regs;
+struct La_ppc32_retval;
+struct La_ppc64_regs;
+struct La_ppc64_retval;
+
+#define ARCH_PLTENTER_MEMBERS						\
+    Elf32_Addr (*ppc32_gnu_pltenter) (Elf32_Sym *, unsigned int, uintptr_t *, \
+				      uintptr_t *, struct La_ppc32_regs *, \
+				      unsigned int *, const char *name,	\
+				      long int *framesizep);		\
+    Elf64_Addr (*ppc64_gnu_pltenter) (Elf64_Sym *, unsigned int, uintptr_t *, \
+				      uintptr_t *, struct La_ppc64_regs *, \
+				      unsigned int *, const char *name,	\
+				      long int *framesizep)
+
+#define ARCH_PLTEXIT_MEMBERS						\
+    unsigned int (*ppc32_gnu_pltexit) (Elf32_Sym *, unsigned int,	\
+				       uintptr_t *,			\
+				       uintptr_t *,			\
+				       const struct La_ppc32_regs *,	\
+				       struct La_ppc32_retval *,	\
+				       const char *);			\
+    unsigned int (*ppc64_gnu_pltexit) (Elf64_Sym *, unsigned int,	\
+				       uintptr_t *,			\
+				       uintptr_t *,			\
+				       const struct La_ppc64_regs *,	\
+				       struct La_ppc64_retval *, const char *)
+
+#include_next <ldsodefs.h>
+
+#endif

Added: fsf/trunk/libc/sysdeps/s390/ldsodefs.h
==============================================================================
--- fsf/trunk/libc/sysdeps/s390/ldsodefs.h (added)
+++ fsf/trunk/libc/sysdeps/s390/ldsodefs.h Thu Jul 26 00:01:40 2012
@@ -1,0 +1,57 @@
+/* Run-time dynamic linker data structures for loaded ELF shared objects.
+   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
+   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/>.  */
+
+#ifndef	_S390_LDSODEFS_H
+#define	_S390_LDSODEFS_H	1
+
+#include <elf.h>
+
+struct La_s390_32_regs;
+struct La_s390_32_retval;
+struct La_s390_64_regs;
+struct La_s390_64_retval;
+
+#define ARCH_PLTENTER_MEMBERS						\
+    Elf32_Addr (*s390_32_gnu_pltenter) (Elf32_Sym *, unsigned int,	\
+					uintptr_t *,			\
+					uintptr_t *,			\
+					struct La_s390_32_regs *,	\
+					unsigned int *, const char *name, \
+					long int *framesizep);		\
+    Elf64_Addr (*s390_64_gnu_pltenter) (Elf64_Sym *, unsigned int,	\
+					uintptr_t *,			\
+					uintptr_t *,			\
+					struct La_s390_64_regs *,	\
+					unsigned int *, const char *name, \
+					long int *framesizep)
+
+#define ARCH_PLTEXIT_MEMBERS						\
+    unsigned int (*s390_32_gnu_pltexit) (Elf32_Sym *, unsigned int,	\
+					 uintptr_t *, uintptr_t *,	\
+					 const struct La_s390_32_regs *, \
+					 struct La_s390_32_retval *,	\
+					 const char *);			\
+    unsigned int (*s390_64_gnu_pltexit) (Elf64_Sym *, unsigned int,	\
+					 uintptr_t *, uintptr_t *,	\
+					 const struct La_s390_64_regs *, \
+					 struct La_s390_64_retval *,	\
+					 const char *)
+
+#include_next <ldsodefs.h>
+
+#endif

Added: fsf/trunk/libc/sysdeps/sh/ldsodefs.h
==============================================================================
--- fsf/trunk/libc/sysdeps/sh/ldsodefs.h (added)
+++ fsf/trunk/libc/sysdeps/sh/ldsodefs.h Thu Jul 26 00:01:40 2012
@@ -1,0 +1,40 @@
+/* Run-time dynamic linker data structures for loaded ELF shared objects.
+   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
+   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/>.  */
+
+#ifndef	_SH_LDSODEFS_H
+#define	_SH_LDSODEFS_H	1
+
+#include <elf.h>
+
+struct La_sh_regs;
+struct La_sh_retval;
+
+#define ARCH_PLTENTER_MEMBERS						\
+    uintptr_t (*sh_gnu_pltenter) (Elf32_Sym *, unsigned int, uintptr_t *, \
+				  uintptr_t *, const struct La_sh_regs *, \
+				  unsigned int *, const char *name,	\
+				  long int *framesizep)
+
+#define ARCH_PLTEXIT_MEMBERS						\
+    unsigned int (*sh_gnu_pltexit) (Elf32_Sym *, unsigned int, uintptr_t *, \
+				    uintptr_t *, const struct La_sh_regs *, \
+				    struct La_sh_retval *, const char *)
+
+#include_next <ldsodefs.h>
+
+#endif

Added: fsf/trunk/libc/sysdeps/sparc/ldsodefs.h
==============================================================================
--- fsf/trunk/libc/sysdeps/sparc/ldsodefs.h (added)
+++ fsf/trunk/libc/sysdeps/sparc/ldsodefs.h Thu Jul 26 00:01:40 2012
@@ -1,0 +1,55 @@
+/* Run-time dynamic linker data structures for loaded ELF shared objects.
+   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
+   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/>.  */
+
+#ifndef	_SPARC_LDSODEFS_H
+#define	_SPARC_LDSODEFS_H	1
+
+#include <elf.h>
+
+struct La_sparc32_regs;
+struct La_sparc32_retval;
+struct La_sparc64_regs;
+struct La_sparc64_retval;
+
+#define ARCH_PLTENTER_MEMBERS						\
+    Elf32_Addr (*sparc32_gnu_pltenter) (Elf32_Sym *, unsigned int,	\
+					uintptr_t *, uintptr_t *,	\
+					const struct La_sparc32_regs *,	\
+					unsigned int *, const char *name, \
+					long int *framesizep);		\
+    Elf64_Addr (*sparc64_gnu_pltenter) (Elf64_Sym *, unsigned int,	\
+					uintptr_t *, uintptr_t *,	\
+					const struct La_sparc64_regs *,	\
+					unsigned int *, const char *name, \
+					long int *framesizep)
+
+#define ARCH_PLTEXIT_MEMBERS						\
+    unsigned int (*sparc32_gnu_pltexit) (Elf32_Sym *, unsigned int,	\
+					 uintptr_t *, uintptr_t *,	\
+					 const struct La_sparc32_regs *, \
+					 struct La_sparc32_retval *,	\
+					 const char *);			\
+    unsigned int (*sparc64_gnu_pltexit) (Elf64_Sym *, unsigned int,	\
+					 uintptr_t *, uintptr_t *,	\
+					 const struct La_sparc32_regs *, \
+					 struct La_sparc32_retval *,	\
+					 const char *)
+
+#include_next <ldsodefs.h>
+
+#endif

Modified: fsf/trunk/libc/sysdeps/unix/sysv/linux/check_pf.c
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/check_pf.c (original)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/check_pf.c Thu Jul 26 00:01:40 2012
@@ -1,5 +1,5 @@
 /* Determine protocol families for which interfaces exist.  Linux version.
-   Copyright (C) 2003, 2006-2008, 2010, 2011 Free Software Foundation, Inc.
+   Copyright (C) 2003-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
@@ -289,16 +289,6 @@
 }
 
 
-/* We don't know if we have NETLINK support compiled into our
-   Kernel.  */
-#if __ASSUME_NETLINK_SUPPORT == 0
-/* Define in ifaddrs.h.  */
-extern int __no_netlink_support attribute_hidden;
-#else
-# define __no_netlink_support 0
-#endif
-
-
 void
 attribute_hidden
 __check_pf (bool *seen_ipv4, bool *seen_ipv6,
@@ -307,12 +297,10 @@
   *in6ai = NULL;
   *in6ailen = 0;
 
-  if (! __no_netlink_support)
-    {
-      struct cached_data *olddata = NULL;
-      struct cached_data *data = NULL;
-
-      __libc_lock_lock (lock);
+  struct cached_data *olddata = NULL;
+  struct cached_data *data = NULL;
+
+  __libc_lock_lock (lock);
 
 #ifdef IS_IN_nscd
 # define cache_valid() nl_timestamp != 0 && cache->timestamp == nl_timestamp
@@ -321,90 +309,59 @@
       ({ uint32_t val = __nscd_get_nl_timestamp ();			      \
 	 val != 0 && cache->timestamp == val; })
 #endif
-      if (cache != NULL && cache_valid ())
-	{
-	  data = cache;
-	  atomic_increment (&cache->usecnt);
-	}
-      else
-	{
-	  int fd = __socket (PF_NETLINK, SOCK_RAW, NETLINK_ROUTE);
-
-	  if (__builtin_expect (fd >= 0, 1))
-	    {
-	      struct sockaddr_nl nladdr;
-	      memset (&nladdr, '\0', sizeof (nladdr));
-	      nladdr.nl_family = AF_NETLINK;
-
-	      socklen_t addr_len = sizeof (nladdr);
-
-	      if(__bind (fd, (struct sockaddr *) &nladdr, sizeof (nladdr)) == 0
-		 && __getsockname (fd, (struct sockaddr *) &nladdr,
-				   &addr_len) == 0)
-		data = make_request (fd, nladdr.nl_pid);
-
-	      close_not_cancel_no_status (fd);
-	    }
-
-	  if (data != NULL)
-	    {
-	      olddata = cache;
-	      cache = data;
-	    }
-	}
-
-      __libc_lock_unlock (lock);
+  if (cache != NULL && cache_valid ())
+    {
+      data = cache;
+      atomic_increment (&cache->usecnt);
+    }
+  else
+    {
+      int fd = __socket (PF_NETLINK, SOCK_RAW, NETLINK_ROUTE);
+
+      if (__builtin_expect (fd >= 0, 1))
+	{
+	  struct sockaddr_nl nladdr;
+	  memset (&nladdr, '\0', sizeof (nladdr));
+	  nladdr.nl_family = AF_NETLINK;
+
+	  socklen_t addr_len = sizeof (nladdr);
+
+	  if (__bind (fd, (struct sockaddr *) &nladdr, sizeof (nladdr)) == 0
+	      && __getsockname (fd, (struct sockaddr *) &nladdr,
+				&addr_len) == 0)
+	    data = make_request (fd, nladdr.nl_pid);
+
+	  close_not_cancel_no_status (fd);
+	}
 
       if (data != NULL)
 	{
-	  /* It worked.  */
-	  *seen_ipv4 = data->seen_ipv4;
-	  *seen_ipv6 = data->seen_ipv6;
-	  *in6ailen = data->in6ailen;
-	  *in6ai = data->in6ai;
-
-	  if (olddata != NULL && olddata->usecnt > 0
-	      && atomic_add_zero (&olddata->usecnt, -1))
-	    free (olddata);
-
-	  return;
-	}
-
-#if __ASSUME_NETLINK_SUPPORT == 0
-      /* Remember that there is no netlink support.  */
-      __no_netlink_support = 1;
-#else
-      /* We cannot determine what interfaces are available.  Be
-	 pessimistic.  */
-      *seen_ipv4 = true;
-      *seen_ipv6 = true;
-#endif
-    }
-
-#if __ASSUME_NETLINK_SUPPORT == 0
-  /* No netlink.  Get the interface list via getifaddrs.  */
-  struct ifaddrs *ifa = NULL;
-  if (getifaddrs (&ifa) != 0)
-    {
-      /* We cannot determine what interfaces are available.  Be
-	 pessimistic.  */
-      *seen_ipv4 = true;
-      *seen_ipv6 = true;
+	  olddata = cache;
+	  cache = data;
+	}
+    }
+
+  __libc_lock_unlock (lock);
+
+  if (data != NULL)
+    {
+      /* It worked.  */
+      *seen_ipv4 = data->seen_ipv4;
+      *seen_ipv6 = data->seen_ipv6;
+      *in6ailen = data->in6ailen;
+      *in6ai = data->in6ai;
+
+      if (olddata != NULL && olddata->usecnt > 0
+	  && atomic_add_zero (&olddata->usecnt, -1))
+	free (olddata);
+
       return;
     }
 
-  struct ifaddrs *runp;
-  for (runp = ifa; runp != NULL; runp = runp->ifa_next)
-    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
+  /* We cannot determine what interfaces are available.  Be
+     pessimistic.  */
+  *seen_ipv4 = true;
+  *seen_ipv6 = true;
 }
 
 

Modified: fsf/trunk/libc/sysdeps/unix/sysv/linux/configure
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/configure (original)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/configure Thu Jul 26 00:01:40 2012
@@ -284,25 +284,22 @@
 case "$machine" in
   i386*)
     libc_cv_gcc_unwind_find_fde=yes
-    arch_minimum_kernel=2.4.1
+    arch_minimum_kernel=2.4.21
     ;;
   powerpc/powerpc32)
     libc_cv_gcc_unwind_find_fde=yes
-    arch_minimum_kernel=2.4.1
-    ;;
-  powerpc/powerpc64)
     arch_minimum_kernel=2.4.21
     ;;
   s390/s390-32)
     libc_cv_gcc_unwind_find_fde=yes
-    arch_minimum_kernel=2.4.1
+    arch_minimum_kernel=2.4.21
     ;;
   s390/s390-64)
     libc_cv_gcc_unwind_find_fde=yes
-    arch_minimum_kernel=2.4.1
+    arch_minimum_kernel=2.4.21
     ;;
   sh*)
-    arch_minimum_kernel=2.4.1
+    arch_minimum_kernel=2.4.21
     libc_cv_gcc_unwind_find_fde=yes
     ;;
   sparc/sparc64*)
@@ -311,10 +308,10 @@
     ;;
   sparc*)
     libc_cv_gcc_unwind_find_fde=yes
-    arch_minimum_kernel=2.4.1
+    arch_minimum_kernel=2.4.21
     ;;
   *)
-    arch_minimum_kernel=2.4.1
+    arch_minimum_kernel=2.4.21
     ;;
 esac
 if test -n "$minimum_kernel"; then

Modified: fsf/trunk/libc/sysdeps/unix/sysv/linux/configure.in
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/configure.in (original)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/configure.in Thu Jul 26 00:01:40 2012
@@ -41,25 +41,22 @@
 case "$machine" in
   i386*)
     libc_cv_gcc_unwind_find_fde=yes
-    arch_minimum_kernel=2.4.1
+    arch_minimum_kernel=2.4.21
     ;;
   powerpc/powerpc32)
     libc_cv_gcc_unwind_find_fde=yes
-    arch_minimum_kernel=2.4.1
-    ;;
-  powerpc/powerpc64)
     arch_minimum_kernel=2.4.21
     ;;
   s390/s390-32)
     libc_cv_gcc_unwind_find_fde=yes
-    arch_minimum_kernel=2.4.1
+    arch_minimum_kernel=2.4.21
     ;;
   s390/s390-64)
     libc_cv_gcc_unwind_find_fde=yes
-    arch_minimum_kernel=2.4.1
+    arch_minimum_kernel=2.4.21
     ;;
   sh*)
-    arch_minimum_kernel=2.4.1
+    arch_minimum_kernel=2.4.21
     libc_cv_gcc_unwind_find_fde=yes
     ;;
   sparc/sparc64*)
@@ -68,10 +65,10 @@
     ;;
   sparc*)
     libc_cv_gcc_unwind_find_fde=yes
-    arch_minimum_kernel=2.4.1
+    arch_minimum_kernel=2.4.21
     ;;
   *)
-    arch_minimum_kernel=2.4.1
+    arch_minimum_kernel=2.4.21
     ;;
 esac
 if test -n "$minimum_kernel"; then

Modified: fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/accept4.S
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/accept4.S (original)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/accept4.S Thu Jul 26 00:01:40 2012
@@ -1,4 +1,4 @@
-/* Copyright (C) 1995-1998,2002,2003,2005, 2008 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
@@ -67,7 +67,6 @@
 	jae errlabel
 
 	/* Successful; return the syscall's value.  */
-L(pseudo_end):
 	ret
 
 

Modified: fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/call_sync_file_range.S
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/call_sync_file_range.S (original)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/call_sync_file_range.S Thu Jul 26 00:01:40 2012
@@ -1,5 +1,5 @@
 /* Selective file content synch'ing.
-   Copyright (C) 2006, 2007, 2011 Free Software Foundation, Inc.
+   Copyright (C) 2006-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
@@ -66,6 +66,5 @@
 	movl	$-ENOSYS, %eax
 	jmp	SYSCALL_ERROR_LABEL
 #endif
-L(pseudo_end):
 	ret
 PSEUDO_END (__call_sync_file_range)

Modified: fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/clone.S
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/clone.S (original)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/clone.S Thu Jul 26 00:01:40 2012
@@ -1,4 +1,4 @@
-/* Copyright (C) 1996-2000,02,03,04,2005 Free Software Foundation, Inc.
+/* Copyright (C) 1996-2012 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Richard Henderson (rth@xxxxxxxx)
 
@@ -115,7 +115,6 @@
 	jl	SYSCALL_ERROR_LABEL
 	jz	L(thread_start)
 
-L(pseudo_end):
 	ret
 
 L(thread_start):

Modified: fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/epoll_pwait.S
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/epoll_pwait.S (original)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/epoll_pwait.S Thu Jul 26 00:01:40 2012
@@ -1,4 +1,4 @@
-/* Copyright (C) 2007 Free Software Foundation, Inc.
+/* Copyright (C) 2007-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
@@ -74,6 +74,5 @@
 	movl $-ENOSYS, %eax
 	jmp SYSCALL_ERROR_LABEL
 #endif
-L(pseudo_end):
 	ret
 PSEUDO_END (epoll_pwait)

Modified: fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/getcontext.S
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/getcontext.S (original)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/getcontext.S Thu Jul 26 00:01:40 2012
@@ -1,5 +1,5 @@
 /* Save current context.
-   Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc.
+   Copyright (C) 2001-2012 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@xxxxxxxxxx>, 2001.
 
@@ -77,7 +77,6 @@
 
 	/* All done, return 0 for success.  */
 	xorl	%eax, %eax
-L(pseudo_end):
 	ret
 PSEUDO_END(__getcontext)
 

Modified: fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/mmap.S
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/mmap.S (original)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/mmap.S Thu Jul 26 00:01:40 2012
@@ -1,5 +1,4 @@
-/* Copyright (C) 1995,96,97,98,99,2000,2002,2005,2006
-	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
@@ -98,7 +97,6 @@
 	ja SYSCALL_ERROR_LABEL
 
 	/* Successful; return the syscall's value.  */
-L(pseudo_end):
 	ret
 
 PSEUDO_END (__mmap)

Modified: fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/mmap64.S
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/mmap64.S (original)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/mmap64.S Thu Jul 26 00:01:40 2012
@@ -1,5 +1,4 @@
-/* Copyright (C) 1995,96,97,98,99,2000,2002,2005,2006
-	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
@@ -100,7 +99,6 @@
 	ja SYSCALL_ERROR_LABEL
 
 	/* Successful; return the syscall's value.  */
-L(pseudo_end):
 	ret
 
 	cfi_adjust_cfa_offset (16)
@@ -151,9 +149,6 @@
 	ja SYSCALL_ERROR_LABEL
 
 	/* Successful; return the syscall's value.  */
-#ifndef __NR_mmap2
-L(pseudo_end):
-#endif
 	ret
 
 	cfi_register (ebx, edx)

Modified: fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/nptl/libc.abilist
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/nptl/libc.abilist (original)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/nptl/libc.abilist Thu Jul 26 00:01:40 2012
@@ -1811,6 +1811,9 @@
  mbrtoc16 F
  mbrtoc32 F
  timespec_get F
+GLIBC_2.17
+ GLIBC_2.17 A
+ secure_getenv F
 GLIBC_2.2
  GLIBC_2.2 A
  _IO_adjust_wcolumn F

Modified: fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/semtimedop.S
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/semtimedop.S (original)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/semtimedop.S Thu Jul 26 00:01:40 2012
@@ -1,4 +1,4 @@
-/* Copyright (C) 2003, 2005 Free Software Foundation, Inc.
+/* Copyright (C) 2003-2012 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@xxxxxxxxxx>, 2003.
 
@@ -65,7 +65,6 @@
 	ja SYSCALL_ERROR_LABEL
 
 	/* Successful; return the syscall's value.  */
-L(pseudo_end):
 	ret
 
 #ifdef PIC

Modified: fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/setcontext.S
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/setcontext.S (original)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/setcontext.S Thu Jul 26 00:01:40 2012
@@ -1,5 +1,5 @@
 /* Install given context.
-   Copyright (C) 2001, 2002, 2003, 2005 Free Software Foundation, Inc.
+   Copyright (C) 2001-2012 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@xxxxxxxxxx>, 2001.
 
@@ -89,7 +89,6 @@
 	/* The following 'ret' will pop the address of the code and jump
 	   to it.  */
 
-L(pseudo_end):
 	ret
 PSEUDO_END(__setcontext)
 

Modified: fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/socket.S
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/socket.S (original)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/socket.S Thu Jul 26 00:01:40 2012
@@ -1,4 +1,4 @@
-/* Copyright (C) 1995-1998,2002,2003,2005,2008 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
@@ -68,7 +68,6 @@
 	jae SYSCALL_ERROR_LABEL
 
 	/* Successful; return the syscall's value.  */
-L(pseudo_end):
 	ret
 
 

Modified: fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/swapcontext.S
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/swapcontext.S (original)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/swapcontext.S Thu Jul 26 00:01:40 2012
@@ -1,5 +1,5 @@
 /* Save current context and install the given one.
-   Copyright (C) 2001, 2002, 2003 Free Software Foundation, Inc.
+   Copyright (C) 2001-2012 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper <drepper@xxxxxxxxxx>, 2001.
 
@@ -103,8 +103,6 @@
 
 	/* The following 'ret' will pop the address of the code and jump
 	   to it.  */
-
-L(pseudo_end):
 	ret
 PSEUDO_END(__swapcontext)
 

Modified: fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/syscall.S
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/syscall.S (original)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/syscall.S Thu Jul 26 00:01:40 2012
@@ -1,4 +1,4 @@
-/* Copyright (C) 1995, 1996, 1998, 2002, 2004 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
@@ -30,7 +30,6 @@
 	POPARGS_6		/* Restore register contents.  */
 	cmpl $-4095, %eax	/* Check %eax for error.  */
 	jae SYSCALL_ERROR_LABEL	/* Jump to error handler if error.  */
-L(pseudo_end):
 	ret			/* Return to caller.  */
 
 PSEUDO_END (syscall)

Modified: fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/sysdep.h
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/sysdep.h (original)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/sysdep.h Thu Jul 26 00:01:40 2012
@@ -1,5 +1,4 @@
-/* Copyright (C) 1992,1993,1995-2000,2002-2006,2007,2011-2012
-	Free Software Foundation, Inc.
+/* Copyright (C) 1992-2012 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Ulrich Drepper, <drepper@xxxxxxx>, August 1995.
 
@@ -70,8 +69,7 @@
   ENTRY (name)								      \
     DO_CALL (syscall_name, args);					      \
     cmpl $-4095, %eax;							      \
-    jae SYSCALL_ERROR_LABEL;						      \
-  L(pseudo_end):
+    jae SYSCALL_ERROR_LABEL
 
 #undef	PSEUDO_END
 #define	PSEUDO_END(name)						      \

Modified: fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/vfork.S
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/vfork.S (original)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/i386/vfork.S Thu Jul 26 00:01:40 2012
@@ -1,4 +1,4 @@
-/* Copyright (C) 1999, 2002, 2004, 2005, 2008 Free Software Foundation, Inc.
+/* Copyright (C) 1999-2012 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Andreas Schwab <schwab@xxxxxxx>.
 
@@ -57,7 +57,6 @@
 	/* Branch forward if it failed.  */
 # ifdef __ASSUME_VFORK_SYSCALL
 	jae	SYSCALL_ERROR_LABEL
-.Lpseudo_end:
 # else
 	jae	.Lerror
 # endif
@@ -79,7 +78,6 @@
 	int	$0x80
 	cmpl	$-4095, %eax
 	jae	SYSCALL_ERROR_LABEL
-.Lpseudo_end:
 	ret
 #endif
 PSEUDO_END (__vfork)

Modified: fsf/trunk/libc/sysdeps/unix/sysv/linux/if_index.c
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/if_index.c (original)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/if_index.c Thu Jul 26 00:01:40 2012
@@ -74,90 +74,13 @@
 libc_hidden_def (if_freenameindex)
 
 
-#if __ASSUME_NETLINK_SUPPORT == 0
-static struct if_nameindex *
-if_nameindex_ioctl (void)
-{
-  int fd = __opensock ();
-  struct ifconf ifc;
-  unsigned int nifs, i;
-  int rq_len;
-  struct if_nameindex *idx = NULL;
-# define RQ_IFS	4
-
-  if (fd < 0)
-    return NULL;
-
-  ifc.ifc_buf = NULL;
-
-  /* We may be able to get the needed buffer size directly, rather than
-     guessing.  */
-  ifc.ifc_buf = NULL;
-  ifc.ifc_len = 0;
-  if (__ioctl (fd, SIOCGIFCONF, &ifc) < 0 || ifc.ifc_len == 0)
-    rq_len = RQ_IFS * sizeof (struct ifreq);
-  else
-    rq_len = ifc.ifc_len;
-
-  /* Read all the interfaces out of the kernel.  */
-  ifc.ifc_buf = alloca (rq_len);
-  ifc.ifc_len = rq_len;
-  if (__ioctl (fd, SIOCGIFCONF, &ifc) < 0)
-    {
-      close_not_cancel_no_status (fd);
-      return NULL;
-    }
-
-  nifs = ifc.ifc_len / sizeof (struct ifreq);
-
-  idx = malloc ((nifs + 1) * sizeof (struct if_nameindex));
-  if (idx == NULL)
-    {
-      close_not_cancel_no_status (fd);
-      __set_errno (ENOBUFS);
-      return NULL;
-    }
-
-  for (i = 0; i < nifs; ++i)
-    {
-      struct ifreq *ifr = &ifc.ifc_req[i];
-      idx[i].if_name = __strdup (ifr->ifr_name);
-      if (idx[i].if_name == NULL
-	  || __ioctl (fd, SIOCGIFINDEX, ifr) < 0)
-	{
-	  int saved_errno = errno;
-	  unsigned int j;
-
-	  for (j =  0; j < i; ++j)
-	    free (idx[j].if_name);
-	  free (idx);
-	  close_not_cancel_no_status (fd);
-	  if (saved_errno == EINVAL)
-	    saved_errno = ENOSYS;
-	  else if (saved_errno == ENOMEM)
-	    saved_errno = ENOBUFS;
-	  __set_errno (saved_errno);
-	  return NULL;
-	}
-      idx[i].if_index = ifr->ifr_ifindex;
-    }
-
-  idx[i].if_index = 0;
-  idx[i].if_name = NULL;
-
-  close_not_cancel_no_status (fd);
-  return idx;
-}
-#endif
-
-
 static struct if_nameindex *
 if_nameindex_netlink (void)
 {
   struct netlink_handle nh = { 0, 0, 0, NULL, NULL };
   struct if_nameindex *idx = NULL;
 
-  if (__no_netlink_support || __netlink_open (&nh) < 0)
+  if (__netlink_open (&nh) < 0)
     return NULL;
 
 
@@ -274,10 +197,6 @@
   return NULL;
 #else
   struct if_nameindex *result = if_nameindex_netlink ();
-# if __ASSUME_NETLINK_SUPPORT == 0
-  if (__no_netlink_support)
-    result = if_nameindex_ioctl ();
-# endif
   return result;
 #endif
 }

Modified: fsf/trunk/libc/sysdeps/unix/sysv/linux/ifaddrs.c
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/ifaddrs.c (original)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/ifaddrs.c Thu Jul 26 00:01:40 2012
@@ -1,5 +1,5 @@
 /* getifaddrs -- get names and addresses of all network interfaces
-   Copyright (C) 2003-2008, 2009, 2010, 2011 Free Software Foundation, Inc.
+   Copyright (C) 2003-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
@@ -37,17 +37,6 @@
 #include "netlinkaccess.h"
 
 
-/* We don't know if we have NETLINK support compiled into our
-   Kernel, so include the old implementation as fallback.  */
-#if __ASSUME_NETLINK_SUPPORT == 0
-int __no_netlink_support attribute_hidden;
-
-# define getifaddrs fallback_getifaddrs
-# include "sysdeps/gnu/ifaddrs.c"
-# undef getifaddrs
-#endif
-
-
 /* There is a problem with this type.  The address length for
    Infiniband sockets is much longer than the 8 bytes allocated in the
    sockaddr_ll definition.  Hence we use here a special
@@ -274,9 +263,6 @@
     close_and_out:
       __netlink_close (h);
     out:
-#if __ASSUME_NETLINK_SUPPORT == 0
-      __no_netlink_support = 1;
-#endif
       return -1;
     }
   /* Determine the ID the kernel assigned for this netlink connection.
@@ -340,17 +326,8 @@
 
   *ifap = NULL;
 
-  if (! __no_netlink_support && __netlink_open (&nh) < 0)
-    {
-#if __ASSUME_NETLINK_SUPPORT != 0
-      return -1;
-#endif
-    }
-
-#if __ASSUME_NETLINK_SUPPORT == 0
-  if (__no_netlink_support)
-    return fallback_getifaddrs (ifap);
-#endif
+  if (__netlink_open (&nh) < 0)
+    return -1;
 
   /* Tell the kernel that we wish to get a list of all
      active interfaces, collect all data for every interface.  */
@@ -859,11 +836,9 @@
 libc_hidden_def (getifaddrs)
 
 
-#if __ASSUME_NETLINK_SUPPORT != 0
 void
 freeifaddrs (struct ifaddrs *ifa)
 {
   free (ifa);
 }
 libc_hidden_def (freeifaddrs)
-#endif

Modified: fsf/trunk/libc/sysdeps/unix/sysv/linux/kernel-features.h
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/kernel-features.h (original)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/kernel-features.h Thu Jul 26 00:01:40 2012
@@ -91,8 +91,7 @@
 /* Arm got fcntl64 in 2.4.4, PowerPC and SH have it also in 2.4.4 (I
    don't know when it got introduced).  But PowerPC64 does not support
    separate FCNTL64 call, FCNTL is already 64-bit */
-#if __LINUX_KERNEL_VERSION >= 132100 \
-    && (defined __powerpc__ || defined __sh__) \
+#if (defined __powerpc__ || defined __sh__) \
     && !defined __powerpc64__
 # define __ASSUME_FCNTL64		1
 #endif
@@ -101,37 +100,16 @@
    MIPS n32).  */
 #define __ASSUME_GETDENTS64_SYSCALL	1
 
-/* Starting with 2.4.5 kernels PPC passes the AUXV in the standard way
-   and the vfork syscall made it into the official kernel.  */
-#if __LINUX_KERNEL_VERSION >= (132096+5) && defined __powerpc__
-# define __ASSUME_STD_AUXV		1
+/* Starting with 2.4.5 kernels the vfork syscall made it into the
+   official kernel for PPC.  */
+#ifdef __powerpc__
 # define __ASSUME_VFORK_SYSCALL		1
 #endif
 
 /* Starting with 2.4.5 kernels the mmap2 syscall made it into the official
    kernel.  But PowerPC64 does not support a separate MMAP2 call.  */
-#if __LINUX_KERNEL_VERSION >= (132096+5) && defined __powerpc__ \
-    && !defined __powerpc64__
+#if defined __powerpc__ && !defined __powerpc64__
 # define __ASSUME_MMAP2_SYSCALL		1
-#endif
-
-/* Starting with 2.4.21 PowerPC implements the new prctl syscall.
-   This allows applications to get/set the Floating Point Exception Mode.  */
-#if __LINUX_KERNEL_VERSION >= (132096+21) && defined __powerpc__
-# define __ASSUME_NEW_PRCTL_SYSCALL		1
-#endif
-
-/* Starting with 2.4.21 the PowerPC32 clone syscall works as expected.  */
-#if __LINUX_KERNEL_VERSION >= (132096+21) && defined __powerpc__ \
-    && !defined __powerpc64__
-# define __ASSUME_FIXED_CLONE_SYSCALL		1
-#endif
-
-/* Starting with 2.4.21 PowerPC64 implements the new rt_sigreturn syscall.
-   The new rt_sigreturn takes an ucontext pointer allowing rt_sigreturn
-   to be used in the set/swapcontext implementation.  */
-#if __LINUX_KERNEL_VERSION >= (132096+21) && defined __powerpc64__
-# define __ASSUME_NEW_RT_SIGRETURN_SYSCALL		1
 #endif
 
 /* On x86, the set_thread_area syscall was introduced in 2.5.29, but its
@@ -169,11 +147,6 @@
 # define __ASSUME_POSIX_CPU_TIMERS	1
 #endif
 
-/* With kernel 2.4.17 we always have netlink support.  */
-#if __LINUX_KERNEL_VERSION >= (132096+17)
-# define __ASSUME_NETLINK_SUPPORT	1
-#endif
-
 /* The requeue futex functionality was introduced in 2.5.70.  */
 #if __LINUX_KERNEL_VERSION >= 132422
 # define __ASSUME_FUTEX_REQUEUE	1

Modified: fsf/trunk/libc/sysdeps/unix/sysv/linux/libc_fatal.c
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/libc_fatal.c (original)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/libc_fatal.c Thu Jul 26 00:01:40 2012
@@ -1,5 +1,4 @@
-/* Copyright (C) 1993-1995,1997,2000,2002-2005,2009,2011
-   Free Software Foundation, Inc.
+/* Copyright (C) 1993-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
@@ -64,7 +63,7 @@
 
   /* Open a descriptor for /dev/tty unless the user explicitly
      requests errors on standard error.  */
-  const char *on_2 = __secure_getenv ("LIBC_FATAL_STDERR_");
+  const char *on_2 = __libc_secure_getenv ("LIBC_FATAL_STDERR_");
   if (on_2 == NULL || *on_2 == '\0')
     fd = open_not_cancel_2 (_PATH_TTY, O_RDWR | O_NOCTTY | O_NDELAY);
 

Modified: fsf/trunk/libc/sysdeps/unix/sysv/linux/netlinkaccess.h
==============================================================================
--- fsf/trunk/libc/sysdeps/unix/sysv/linux/netlinkaccess.h (original)
+++ fsf/trunk/libc/sysdeps/unix/sysv/linux/netlinkaccess.h Thu Jul 26 00:01:40 2012
@@ -1,4 +1,4 @@
-/* Copyright (C) 2004, 2005, 2006 Free Software Foundation, Inc.
+/* Copyright (C) 2004-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
@@ -44,13 +44,6 @@
 };
 
 
-#if __ASSUME_NETLINK_SUPPORT == 0
-extern int __no_netlink_support attribute_hidden;
-#else
-# define __no_netlink_support 0

[... 895 lines stripped ...]
_______________________________________________
Commits mailing list
Commits@xxxxxxxxxx
http://eglibc.org/cgi-bin/mailman/listinfo/commits