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

Bug#845387: marked as done (jessie-pu: package glibc/2.19-18+deb8u7)



Your message dated Sat, 14 Jan 2017 12:37:03 +0000
with message-id <1484397423.1091.25.camel@adam-barratt.org.uk>
and subject line Closing requests included in today's point release
has caused the Debian Bug report #845387,
regarding jessie-pu: package glibc/2.19-18+deb8u7
to be marked as done.

This means that you claim that the problem has been dealt with.
If this is not the case it is now your responsibility to reopen the
Bug report if necessary, and/or fix the problem forthwith.

(NB: If you are a system administrator and have no idea what this
message is talking about, this may indicate a serious mail system
misconfiguration somewhere. Please contact owner@bugs.debian.org
immediately.)


-- 
845387: http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=845387
Debian Bug Tracking System
Contact owner@bugs.debian.org with problems
--- Begin Message ---
Package: release.debian.org
Severity: normal
Tags: jessie
User: release.debian.org@packages.debian.org
Usertags: pu

Dear stable release managers,

I would like to upload a new glibc package for the next jessie release.
Here is the changelog with some additional comment:

  * Update from upstream stable branch:
    - Do not unconditionally use the fqsrt instruction on 64-bit PowerPC
      CPUs.  Closes: #843904.

The sqrt functions on powerpc unconditionally use the fqsrt instruction
when running on a 64-bit CPU. However while IBM based PowerPC CPUs all
have this instruction, it's not part of the ISA and not available on
some embedded CPUs like the Freescale^WNXP^Qualcomm  e5500 CPU. The
change is available in stretch/sid since glibc 2.21-1 and mostly
consists in #ifdefery.


  * debian/patches/any/cvs-hesiod-resolver.diff: patch from upstream to
    fix a regression introduced by cvs-resolv-ipv6-nameservers.diff in
    hesiod.  Closes: #821358.

The glibc 2.19-18+deb8u6 from the last point update introduced a
regression as an additional patch had to be backported. This is done
with this patch, which is in stretch/sid since glibc 2.22-8.


  * debian/sysdeps/{amd64,i386,x32}.mk: disable lock elision (aka Intel TSX)
    on x86 architectures. This causes programs (wrongly) unlocking an already
    unlocked mutex to abort. More importantly most of the other distributions
    decided to disable it, so we don't want to be the only distribution left
    testing this code path.

See this thread [1] on debian-devel@ for more background. While I was a
bit reluctant to disable lock elision in jessie, the fact that many
distributions decided to disable it convinced me we should do the same.
Note that it is still not yet disabled in stretch/sid, but I guess we
will end up doing the same before the freeze.

Thanks,
Aurelien

[1] https://lists.debian.org/debian-devel/2016/11/msg00210.html

-- System Information:
Debian Release: stretch/sid
  APT prefers testing
  APT policy: (990, 'testing'), (500, 'unstable'), (1, 'experimental')
Architecture: amd64 (x86_64)
Foreign Architectures: i386

Kernel: Linux 4.8.0-1-amd64 (SMP w/4 CPU cores)
Locale: LANG=fr_FR.UTF-8, LC_CTYPE=fr_FR.UTF-8 (charmap=UTF-8)
Shell: /bin/sh linked to /bin/dash
Init: systemd (via /run/systemd/system)
diff --git a/debian/changelog b/debian/changelog
index 97e2a76..4fdfb65 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -1,3 +1,20 @@
+glibc (2.19-18+deb8u7) UNRELEASED; urgency=medium
+
+  [ Aurelien Jarno ]
+  * Update from upstream stable branch:
+    - Do not unconditionally use the fqsrt instruction on 64-bit PowerPC
+      CPUs.  Closes: #843904.
+  * debian/patches/any/cvs-hesiod-resolver.diff: patch from upstream to
+    fix a regression introduced by cvs-resolv-ipv6-nameservers.diff in
+    hesiod.  Closes: #821358.
+  * debian/sysdeps/{amd64,i386,x32}.mk: disable lock elision (aka Intel TSX)
+    on x86 architectures. This causes programs (wrongly) unlocking an already
+    unlocked mutex to abort. More importantly most of the other distributions
+    decided to disable it, so we don't want to be the only distribution left
+    testing this code path.
+
+ -- Aurelien Jarno <aurel32@debian.org>  Sun, 04 Sep 2016 01:26:19 +0200
+
 glibc (2.19-18+deb8u6) stable; urgency=medium
 
   * Update from upstream stable branch:
diff --git a/debian/patches/any/cvs-hesiod-resolver.diff b/debian/patches/any/cvs-hesiod-resolver.diff
new file mode 100644
index 0000000..d47c6f9
--- /dev/null
+++ b/debian/patches/any/cvs-hesiod-resolver.diff
@@ -0,0 +1,420 @@
+2016-05-02  Florian Weimer  <fweimer@redhat.com>
+ 
+	[BZ #19573]
+	* hesiod/Makefile (libnss_hesiod-routines): Remove hesiod-init.
+	* hesiod/nss_hesiod/hesiod-init.c: Remove file.
+	* hesiod/nss_hesiod/nss_hesiod.h: Likewise.
+	* hesiod/hesiod.h (__hesiod_res_get, __hesiod_res_set): Remove.
+	(hesiod_init, hesiod_end, hesiod_to_bind, hesiod_resolve)
+	(hesiod_free_list): Mark as hidden.
+	* hesiod/hesiod_p (struct hesiod_p): Remove res, free_res,
+	res_set, res_get.
+	* hesiod/hesiod.c: Remove unnecessary forward declarations.
+	(init, __hesiod_res_get, __hesiod_res_set): Remove.
+	(hesiod_init): Remove obsolete res_ninit call.
+	(hesiod_end): Do not free resolver state.  Do not invoke callback.
+	(hesiod_bind): Do not call init.
+	(get_txt_records): Use res_mkquery, res_send instead of
+	res_nmkquery, res_nsend.
+	* hesiod/nss_hesiod/hesiod-grp.c (lookup): Call hesiod_init
+	instead of _nss_hesiod_init.
+	(_nss_hesiod_initgroups_dyn): Likewise.
+	* hesiod/nss_hesiod/hesiod-proto.c (lookup): Likewise.
+	* hesiod/nss_hesiod/hesiod-pwd.c (lookup): Likewise.
+	* hesiod/nss_hesiod/hesiod-service.c (lookup): Likewise.
+
+--- a/hesiod/Makefile
++++ b/hesiod/Makefile
+@@ -28,7 +28,7 @@ extra-libs-others = $(extra-libs)
+ subdir-dirs = nss_hesiod
+ vpath %.c nss_hesiod
+ 
+-libnss_hesiod-routines	:= hesiod hesiod-grp hesiod-init hesiod-proto \
++libnss_hesiod-routines	:= hesiod hesiod-grp hesiod-proto \
+ 			   hesiod-pwd hesiod-service
+ # Build only shared library
+ libnss_hesiod-inhibit-o	= $(filter-out .os,$(object-suffixes))
+--- a/hesiod/hesiod.c
++++ b/hesiod/hesiod.c
+@@ -1,3 +1,20 @@
++/* Copyright (C) 1997-2016 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/>.  */
++
+ #if defined(LIBC_SCCS) && !defined(lint)
+ static const char rcsid[] = "$BINDId: hesiod.c,v 1.21 2000/02/28 14:51:08 vixie Exp $";
+ #endif
+@@ -47,18 +64,9 @@
+ 
+ /* Forward */
+ 
+-int		hesiod_init(void **context);
+-void		hesiod_end(void *context);
+-char *		hesiod_to_bind(void *context, const char *name,
+-			       const char *type);
+-char **		hesiod_resolve(void *context, const char *name,
+-			       const char *type);
+-void		hesiod_free_list(void *context, char **list);
+-
+ static int	parse_config_file(struct hesiod_p *ctx, const char *filename);
+ static char **	get_txt_records(struct hesiod_p *ctx, int class,
+ 				const char *name);
+-static int	init(struct hesiod_p *ctx);
+ 
+ /* Public */
+ 
+@@ -77,7 +85,6 @@ hesiod_init(void **context) {
+ 
+ 	ctx->LHS = NULL;
+ 	ctx->RHS = NULL;
+-	ctx->res = NULL;
+ 	/* Set default query classes. */
+ 	ctx->classes[0] = C_IN;
+ 	ctx->classes[1] = C_HS;
+@@ -114,11 +121,6 @@ hesiod_init(void **context) {
+ 		goto cleanup;
+ 	}
+ 
+-#if 0
+-	if (res_ninit(ctx->res) < 0)
+-		goto cleanup;
+-#endif
+-
+ 	*context = ctx;
+ 	return (0);
+ 
+@@ -135,12 +137,8 @@ hesiod_end(void *context) {
+ 	struct hesiod_p *ctx = (struct hesiod_p *) context;
+ 	int save_errno = errno;
+ 
+-	if (ctx->res)
+-		res_nclose(ctx->res);
+ 	free(ctx->RHS);
+ 	free(ctx->LHS);
+-	if (ctx->res && ctx->free_res)
+-		(*ctx->free_res)(ctx->res);
+ 	free(ctx);
+ 	__set_errno(save_errno);
+ }
+@@ -215,10 +213,6 @@ hesiod_resolve(void *context, const char *name, const char *type) {
+ 
+ 	if (bindname == NULL)
+ 		return (NULL);
+-	if (init(ctx) == -1) {
+-		free(bindname);
+-		return (NULL);
+-	}
+ 
+ 	retvec = get_txt_records(ctx, ctx->classes[0], bindname);
+ 
+@@ -348,13 +342,13 @@ get_txt_records(struct hesiod_p *ctx, int class, const char *name) {
+ 	/*
+ 	 * Construct the query and send it.
+ 	 */
+-	n = res_nmkquery(ctx->res, QUERY, name, class, T_TXT, NULL, 0,
++	n = res_mkquery(QUERY, name, class, T_TXT, NULL, 0,
+ 			 NULL, qbuf, MAX_HESRESP);
+ 	if (n < 0) {
+ 		__set_errno(EMSGSIZE);
+ 		return (NULL);
+ 	}
+-	n = res_nsend(ctx->res, qbuf, n, abuf, MAX_HESRESP);
++	n = res_send(qbuf, n, abuf, MAX_HESRESP);
+ 	if (n < 0) {
+ 		__set_errno(ECONNREFUSED);
+ 		return (NULL);
+@@ -447,44 +441,3 @@ get_txt_records(struct hesiod_p *ctx, int class, const char *name) {
+ 	free(list);
+ 	return (NULL);
+ }
+-
+-struct __res_state *
+-__hesiod_res_get(void *context) {
+-	struct hesiod_p *ctx = context;
+-
+-	if (!ctx->res) {
+-		struct __res_state *res;
+-		res = (struct __res_state *)calloc(1, sizeof *res);
+-		if (res == NULL)
+-			return (NULL);
+-		__hesiod_res_set(ctx, res, free);
+-	}
+-
+-	return (ctx->res);
+-}
+-
+-void
+-__hesiod_res_set(void *context, struct __res_state *res,
+-		 void (*free_res)(void *)) {
+-	struct hesiod_p *ctx = context;
+-
+-	if (ctx->res && ctx->free_res) {
+-		res_nclose(ctx->res);
+-		(*ctx->free_res)(ctx->res);
+-	}
+-
+-	ctx->res = res;
+-	ctx->free_res = free_res;
+-}
+-
+-static int
+-init(struct hesiod_p *ctx) {
+-
+-	if (!ctx->res && !__hesiod_res_get(ctx))
+-		return (-1);
+-
+-	if (__res_maybe_init (ctx->res, 0) == -1)
+-		return (-1);
+-
+-	return (0);
+-}
+--- a/hesiod/hesiod.h
++++ b/hesiod/hesiod.h
+@@ -1,3 +1,20 @@
++/* Copyright (C) 1997-2016 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/>.  */
++
+ /*
+  * Copyright (c) 1996,1999 by Internet Software Consortium.
+  *
+@@ -22,15 +39,12 @@
+ #ifndef _HESIOD_H_INCLUDED
+ #define _HESIOD_H_INCLUDED
+ 
+-int		hesiod_init (void **context);
+-void		hesiod_end (void *context);
++int		hesiod_init (void **context) attribute_hidden;
++void		hesiod_end (void *context) attribute_hidden;
+ char *		hesiod_to_bind (void *context, const char *name,
+-				const char *type);
++				const char *type) attribute_hidden;
+ char **		hesiod_resolve (void *context, const char *name,
+-				const char *type);
+-void		hesiod_free_list (void *context, char **list);
+-struct __res_state * __hesiod_res_get (void *context);
+-void		__hesiod_res_set (void *context, struct __res_state *,
+-				  void (*)(void *));
++				const char *type) attribute_hidden;
++void		hesiod_free_list (void *context, char **list) attribute_hidden;
+ 
+ #endif /*_HESIOD_H_INCLUDED*/
+--- a/hesiod/hesiod_p.h
++++ b/hesiod/hesiod_p.h
+@@ -1,3 +1,20 @@
++/* Copyright (C) 1997-2016 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/>.  */
++
+ /*
+  * Copyright (c) 1996,1999 by Internet Software Consortium.
+  *
+@@ -31,11 +48,6 @@
+ struct hesiod_p {
+ 	char *		LHS;		/* normally ".ns" */
+ 	char *		RHS;		/* AKA the default hesiod domain */
+-	struct __res_state * res;	/* resolver context */
+-	void		(*free_res)(void *);
+-	void		(*res_set)(struct hesiod_p *, struct __res_state *,
+-				   void (*)(void *));
+-	struct __res_state * (*res_get)(struct hesiod_p *);
+ 	int		classes[2];	/* The class search order. */
+ };
+ 
+--- a/hesiod/nss_hesiod/hesiod-grp.c
++++ b/hesiod/nss_hesiod/hesiod-grp.c
+@@ -26,8 +26,6 @@
+ #include <string.h>
+ #include <sys/param.h>
+ 
+-#include "nss_hesiod.h"
+-
+ /* Get the declaration of the parser function.  */
+ #define ENTNAME grent
+ #define STRUCTURE group
+@@ -58,8 +56,7 @@ lookup (const char *name, const char *type, struct group *grp,
+   size_t len;
+   int olderr = errno;
+ 
+-  context = _nss_hesiod_init ();
+-  if (context == NULL)
++  if (hesiod_init (&context) < 0)
+     return NSS_STATUS_UNAVAIL;
+ 
+   list = hesiod_resolve (context, name, type);
+@@ -179,8 +176,7 @@ _nss_hesiod_initgroups_dyn (const char *user, gid_t group, long int *start,
+   gid_t *groups = *groupsp;
+   int save_errno;
+ 
+-  context = _nss_hesiod_init ();
+-  if (context == NULL)
++  if (hesiod_init (&context) < 0)
+     return NSS_STATUS_UNAVAIL;
+ 
+   list = hesiod_resolve (context, user, "grplist");
+--- a/hesiod/nss_hesiod/hesiod-init.c
++++ /dev/null
+@@ -1,38 +0,0 @@
+-/* Copyright (C) 2000-2014 Free Software Foundation, Inc.
+-   This file is part of the GNU C Library.
+-   Contributed by Mark Kettenis <kettenis@phys.uva.nl>, 2000.
+-
+-   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/>.  */
+-
+-#include <sys/cdefs.h>		/* Needs to come before <hesiod.h>.  */
+-#include <hesiod.h>
+-#include <resolv.h>
+-#include <stddef.h>
+-
+-#include "nss_hesiod.h"
+-
+-void *
+-_nss_hesiod_init (void)
+-{
+-  void *context;
+-
+-  if (hesiod_init (&context) == -1)
+-    return NULL;
+-
+-  /* Use the default (per-thread) resolver state.  */
+-  __hesiod_res_set (context, &_res, NULL);
+-
+-  return context;
+-}
+--- a/hesiod/nss_hesiod/hesiod-proto.c
++++ b/hesiod/nss_hesiod/hesiod-proto.c
+@@ -25,8 +25,6 @@
+ #include <stdlib.h>
+ #include <string.h>
+ 
+-#include "nss_hesiod.h"
+-
+ /* Declare a parser for Hesiod protocol entries.  Although the format
+    of the entries is identical to those in /etc/protocols, here is no
+    predefined parser for us to use.  */
+@@ -68,8 +66,7 @@ lookup (const char *name, const char *type, struct protoent *proto,
+   int found;
+   int olderr = errno;
+ 
+-  context = _nss_hesiod_init ();
+-  if (context == NULL)
++  if (hesiod_init (&context) < 0)
+     return NSS_STATUS_UNAVAIL;
+ 
+   list = hesiod_resolve (context, name, type);
+--- a/hesiod/nss_hesiod/hesiod-pwd.c
++++ b/hesiod/nss_hesiod/hesiod-pwd.c
+@@ -24,8 +24,6 @@
+ #include <stdlib.h>
+ #include <string.h>
+ 
+-#include "nss_hesiod.h"
+-
+ /* Get the declaration of the parser function.  */
+ #define ENTNAME pwent
+ #define STRUCTURE passwd
+@@ -56,8 +54,7 @@ lookup (const char *name, const char *type, struct passwd *pwd,
+   size_t len;
+   int olderr = errno;
+ 
+-  context = _nss_hesiod_init ();
+-  if (context == NULL)
++  if (hesiod_init (&context) < 0)
+     return NSS_STATUS_UNAVAIL;
+ 
+   list = hesiod_resolve (context, name, type);
+--- a/hesiod/nss_hesiod/hesiod-service.c
++++ b/hesiod/nss_hesiod/hesiod-service.c
+@@ -25,8 +25,6 @@
+ #include <stdlib.h>
+ #include <string.h>
+ 
+-#include "nss_hesiod.h"
+-
+ /* Hesiod uses a format for service entries that differs from the
+    traditional format.  We therefore declare our own parser.  */
+ 
+@@ -69,8 +67,7 @@ lookup (const char *name, const char *type, const char *protocol,
+   int found;
+   int olderr = errno;
+ 
+-  context = _nss_hesiod_init ();
+-  if (context == NULL)
++  if (hesiod_init (&context) < 0)
+     return NSS_STATUS_UNAVAIL;
+ 
+   list = hesiod_resolve (context, name, type);
+--- a/hesiod/nss_hesiod/nss_hesiod.h
++++ /dev/null
+@@ -1,20 +0,0 @@
+-/* Copyright (C) 2000-2014 Free Software Foundation, Inc.
+-   This file is part of the GNU C Library.
+-   Contributed by Mark Kettenis <kettenis@phys.uva.nl>, 2000.
+-
+-   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/>.  */
+-
+-/* Initialize a Hesiod context.  */
+-extern void *_nss_hesiod_init (void);
diff --git a/debian/patches/git-updates.diff b/debian/patches/git-updates.diff
index d2d83f7..5e3d836 100644
--- a/debian/patches/git-updates.diff
+++ b/debian/patches/git-updates.diff
@@ -1,10 +1,27 @@
 GIT update of git://sourceware.org/git/glibc.git/release/2.19/master from glibc-2.19
 
 diff --git a/ChangeLog b/ChangeLog
-index 81c393a..30da116 100644
+index 81c393a..92b8a2e 100644
 --- a/ChangeLog
 +++ b/ChangeLog
-@@ -1,3 +1,622 @@
+@@ -1,3 +1,639 @@
++2015-01-28  Adhemerval Zanellla  <azanella@linux.vnet.ibm.com>
++
++	[BZ #16576]
++	* sysdeps/powerpc/fpu/math_private.h [__CPU_HAS_FSQRT]: Remove define
++	and use _ARCH_PPCSQ instead.
++	(__ieee754_sqrt): Likewise.
++	(__ieee754_sqrtf): Likewise.
++	* sysdeps/powerpc/fpu/e_sqrt.c (__slow_ieee754_sqrt): Build only if
++	_ARCH_PPCSQ is defined.
++	(__ieee754_sqrt): Use _ARCH_PPCSQ to select wheter to use hardware
++	fsqrt instruction.
++	* sysdeps/powerpc/fpu/e_sqrtf.c (__ieee754_sqrtf): Build only if
++	_ARCH_PPCSQ is defined.
++	(__ieee754_sqrtf): Use _ARCH_PPCSQ to select wheter to use hardware
++	fsqrts instruction.
++	* sysdeps/powerpc/powerpc64/fpu/e_sqrt.c: Remove file.
++
 +2016-08-15  Andreas Schwab  <schwab@suse.de>
 +
 +	[BZ #20435]
@@ -628,7 +645,7 @@ index 81c393a..30da116 100644
  
  	[BZ #16529]
 diff --git a/NEWS b/NEWS
-index 98b479e..a1bb834 100644
+index 98b479e..f62b876 100644
 --- a/NEWS
 +++ b/NEWS
 @@ -5,6 +5,104 @@ See the end for copying conditions.
@@ -639,11 +656,11 @@ index 98b479e..a1bb834 100644
 +
 +* The following bugs are resolved with this release:
 +
-+  15946, 16009, 16545, 16574, 16623, 16657, 16695, 16743, 16758, 16759,
-+  16760, 16878, 16882, 16885, 16916, 16932, 16943, 16958, 17048, 17062,
-+  17069, 17079, 17137, 17153, 17213, 17263, 17269, 17325, 17523, 17555,
-+  17905, 18007, 18032, 18080, 18240, 18287, 18508, 18665, 18905, 18928,
-+  19018, 19779, 19791, 19879, 20010, 20112.
++  15946, 16009, 16545, 16574, 16576, 16623, 16657, 16695, 16743, 16758,
++  16759, 16760, 16878, 16882, 16885, 16916, 16932, 16943, 16958, 17048,
++  17062, 17069, 17079, 17137, 17153, 17213, 17263, 17269, 17325, 17523,
++  17555, 17905, 18007, 18032, 18080, 18240, 18287, 18508, 18665, 18905,
++  18928, 19018, 19779, 19791, 19879, 20010, 20112.
 +
 +* A buffer overflow in gethostbyname_r and related functions performing DNS
 +  requests has been fixed.  If the NSS functions were called with a
@@ -6521,6 +6538,146 @@ index 64d192a..4b7ec36 100644
      {
        va_list arg;
        va_start (arg, oflag);
+diff --git a/sysdeps/powerpc/fpu/e_sqrt.c b/sysdeps/powerpc/fpu/e_sqrt.c
+index 0368e57..24dfe68 100644
+--- a/sysdeps/powerpc/fpu/e_sqrt.c
++++ b/sysdeps/powerpc/fpu/e_sqrt.c
+@@ -24,6 +24,7 @@
+ #include <sysdep.h>
+ #include <ldsodefs.h>
+ 
++#ifndef _ARCH_PPCSQ
+ static const double almost_half = 0.5000000000000001;	/* 0.5 + 2^-53 */
+ static const ieee_float_shape_type a_nan = {.word = 0x7fc00000 };
+ static const ieee_float_shape_type a_inf = {.word = 0x7f800000 };
+@@ -152,6 +153,7 @@ __slow_ieee754_sqrt (double x)
+     }
+   return f_wash (x);
+ }
++#endif /* _ARCH_PPCSQ  */
+ 
+ #undef __ieee754_sqrt
+ double
+@@ -159,16 +161,11 @@ __ieee754_sqrt (double x)
+ {
+   double z;
+ 
+-  /* If the CPU is 64-bit we can use the optional FP instructions.  */
+-  if (__CPU_HAS_FSQRT)
+-    {
+-      /* Volatile is required to prevent the compiler from moving the
+-	 fsqrt instruction above the branch.  */
+-      __asm __volatile ("	fsqrt	%0,%1\n"
+-				:"=f" (z):"f" (x));
+-    }
+-  else
+-    z = __slow_ieee754_sqrt (x);
++#ifdef _ARCH_PPCSQ
++  asm ("fsqrt %0,%1\n" :"=f" (z):"f" (x));
++#else
++  z = __slow_ieee754_sqrt (x);
++#endif
+ 
+   return z;
+ }
+diff --git a/sysdeps/powerpc/fpu/e_sqrtf.c b/sysdeps/powerpc/fpu/e_sqrtf.c
+index fcc74ae..7d2bfb7 100644
+--- a/sysdeps/powerpc/fpu/e_sqrtf.c
++++ b/sysdeps/powerpc/fpu/e_sqrtf.c
+@@ -24,6 +24,7 @@
+ #include <sysdep.h>
+ #include <ldsodefs.h>
+ 
++#ifndef _ARCH_PPCSQ
+ static const float almost_half = 0.50000006;	/* 0.5 + 2^-24 */
+ static const ieee_float_shape_type a_nan = {.word = 0x7fc00000 };
+ static const ieee_float_shape_type a_inf = {.word = 0x7f800000 };
+@@ -128,6 +129,7 @@ __slow_ieee754_sqrtf (float x)
+     }
+   return f_washf (x);
+ }
++#endif /* _ARCH_PPCSQ  */
+ 
+ #undef __ieee754_sqrtf
+ float
+@@ -135,16 +137,11 @@ __ieee754_sqrtf (float x)
+ {
+   double z;
+ 
+-  /* If the CPU is 64-bit we can use the optional FP instructions.  */
+-  if (__CPU_HAS_FSQRT)
+-    {
+-      /* Volatile is required to prevent the compiler from moving the
+-	 fsqrt instruction above the branch.  */
+-      __asm __volatile ("	fsqrts	%0,%1\n"
+-				:"=f" (z):"f" (x));
+-    }
+-  else
+-    z = __slow_ieee754_sqrtf (x);
++#ifdef _ARCH_PPCSQ
++  asm ("fsqrts	%0,%1\n" :"=f" (z):"f" (x));
++#else
++  z = __slow_ieee754_sqrtf (x);
++#endif
+ 
+   return z;
+ }
+diff --git a/sysdeps/powerpc/fpu/math_private.h b/sysdeps/powerpc/fpu/math_private.h
+index dde153d..9048715 100644
+--- a/sysdeps/powerpc/fpu/math_private.h
++++ b/sysdeps/powerpc/fpu/math_private.h
+@@ -25,26 +25,17 @@
+ #include <fenv_private.h>
+ #include_next <math_private.h>
+ 
+-# if __WORDSIZE == 64 || defined _ARCH_PWR4
+-#  define __CPU_HAS_FSQRT 1
+-# else
+-#  define __CPU_HAS_FSQRT ((GLRO(dl_hwcap) & PPC_FEATURE_64) != 0)
+-# endif
+-
+ extern double __slow_ieee754_sqrt (double);
+ extern __always_inline double
+ __ieee754_sqrt (double __x)
+ {
+   double __z;
+ 
+-  if (__CPU_HAS_FSQRT)
+-    {
+-      /* Volatile is required to prevent the compiler from moving the
+-         fsqrt instruction above the branch.  */
+-      __asm __volatile ("fsqrt	%0,%1" : "=f" (__z) : "f" (__x));
+-    }
+-  else
+-     __z = __slow_ieee754_sqrt(__x);
++#ifdef _ARCH_PPCSQ
++   asm ("fsqrt	%0,%1" : "=f" (__z) : "f" (__x));
++#else
++   __z = __slow_ieee754_sqrt(__x);
++#endif
+ 
+   return __z;
+ }
+@@ -55,14 +46,11 @@ __ieee754_sqrtf (float __x)
+ {
+   float __z;
+ 
+-  if (__CPU_HAS_FSQRT)
+-    {
+-      /* Volatile is required to prevent the compiler from moving the
+-         fsqrts instruction above the branch.  */
+-      __asm __volatile ("fsqrts	%0,%1" : "=f" (__z) : "f" (__x));
+-    }
+-  else
+-     __z = __slow_ieee754_sqrtf(__x);
++#ifdef _ARCH_PPCSQ
++  asm ("fsqrts	%0,%1" : "=f" (__z) : "f" (__x));
++#else
++   __z = __slow_ieee754_sqrtf(__x);
++#endif
+ 
+   return __z;
+ }
 diff --git a/sysdeps/powerpc/powerpc64/entry.h b/sysdeps/powerpc/powerpc64/entry.h
 index 76ead1d..30553c1 100644
 --- a/sysdeps/powerpc/powerpc64/entry.h
@@ -6538,6 +6695,78 @@ index 76ead1d..30553c1 100644
    ({ extern unsigned long int _start_as_data[] asm ("_start");  \
       _start_as_data[0]; })
 +#endif
+diff --git a/sysdeps/powerpc/powerpc64/fpu/e_sqrt.c b/sysdeps/powerpc/powerpc64/fpu/e_sqrt.c
+deleted file mode 100644
+index 08d5f69..0000000
+--- a/sysdeps/powerpc/powerpc64/fpu/e_sqrt.c
++++ /dev/null
+@@ -1,30 +0,0 @@
+-/* Double-precision floating point square root.
+-   Copyright (C) 1997-2014 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/>.  */
+-
+-#include <math.h>
+-#include <math_private.h>
+-
+-#undef __ieee754_sqrt
+-double
+-__ieee754_sqrt (double x)
+-{
+-  double z;
+-  __asm __volatile ("fsqrt %0,%1" : "=f" (z) : "f" (x));
+-  return z;
+-}
+-strong_alias (__ieee754_sqrt, __sqrt_finite)
+diff --git a/sysdeps/powerpc/powerpc64/fpu/e_sqrtf.c b/sysdeps/powerpc/powerpc64/fpu/e_sqrtf.c
+deleted file mode 100644
+index 598e7cb..0000000
+--- a/sysdeps/powerpc/powerpc64/fpu/e_sqrtf.c
++++ /dev/null
+@@ -1,30 +0,0 @@
+-/* Single-precision floating point square root.
+-   Copyright (C) 1997-2014 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/>.  */
+-
+-#include <math.h>
+-#include <math_private.h>
+-
+-#undef __ieee754_sqrtf
+-float
+-__ieee754_sqrtf (float x)
+-{
+-  double z;
+-  __asm ("fsqrts %0,%1" : "=f" (z) : "f" (x));
+-  return z;
+-}
+-strong_alias (__ieee754_sqrtf, __sqrtf_finite)
 diff --git a/sysdeps/s390/Makefile b/sysdeps/s390/Makefile
 deleted file mode 100644
 index 42978dc..0000000
diff --git a/debian/patches/series b/debian/patches/series
index bbd2497..746f71c 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -273,3 +273,4 @@ any/cvs-vfprintf.diff
 any/cvs-wscanf.diff
 any/cvs-ldconfig-aux-cache.diff
 any/cvs-grantpt-pty-owner.diff
+any/cvs-hesiod-resolver.diff
diff --git a/debian/sysdeps/amd64.mk b/debian/sysdeps/amd64.mk
index 497a006..50cb63a 100644
--- a/debian/sysdeps/amd64.mk
+++ b/debian/sysdeps/amd64.mk
@@ -1,5 +1,5 @@
 libc_rtlddir = /lib64
-extra_config_options = --enable-multi-arch --enable-lock-elision
+extra_config_options = --enable-multi-arch
 
 # build 32-bit (i386) alternative library
 GLIBC_MULTILIB_PASSES += i386
diff --git a/debian/sysdeps/i386.mk b/debian/sysdeps/i386.mk
index 8f6c494..a3ae225 100644
--- a/debian/sysdeps/i386.mk
+++ b/debian/sysdeps/i386.mk
@@ -1,4 +1,4 @@
-extra_config_options = --enable-multi-arch --enable-lock-elision
+extra_config_options = --enable-multi-arch
 
 # We use -march=i686 and glibc's i686 routines use cmov, so require it.
 # A Debian-local glibc patch adds cmov to the search path.
diff --git a/debian/sysdeps/x32.mk b/debian/sysdeps/x32.mk
index 42dd2a1..37e9ca1 100644
--- a/debian/sysdeps/x32.mk
+++ b/debian/sysdeps/x32.mk
@@ -1,5 +1,5 @@
 libc_rtlddir = /libx32
-extra_config_options = --enable-multi-arch --enable-lock-elision
+extra_config_options = --enable-multi-arch
 
 # build 64-bit (amd64) alternative library
 GLIBC_MULTILIB_PASSES += amd64

--- End Message ---
--- Begin Message ---
Version: 8.7

Hi,

Each of these bugs refers to an update that was included in today's 8.7
point release.

Regards,

Adam

--- End Message ---

Reply to: