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

[glibc] 01/01: debian/patches/git-updates.diff: update from upstream stable branch:



This is an automated email from the git hooks/post-receive script.

aurel32 pushed a commit to branch glibc-2.26
in repository glibc.

commit ce1f642907dcfbc55c14d522e9337cb0161d594c
Author: Aurelien Jarno <aurelien@aurel32.net>
Date:   Wed Dec 13 14:11:11 2017 +0100

    debian/patches/git-updates.diff: update from upstream stable branch:
    
    * debian/patches/git-updates.diff: update from upstream stable branch:
      - Drop debian/patches/ia64/git-ia64-crash-thread-exit.diff (merged upstream).
---
 debian/changelog                                   |    2 +
 debian/patches/git-updates.diff                    | 2736 +++++++++++++++++++-
 .../patches/ia64/git-ia64-crash-thread-exit.diff   |   90 -
 debian/patches/series                              |    2 -
 4 files changed, 2733 insertions(+), 97 deletions(-)

diff --git a/debian/changelog b/debian/changelog
index 8c2fb4c..35bf22c 100644
--- a/debian/changelog
+++ b/debian/changelog
@@ -6,6 +6,8 @@ glibc (2.26-0experimental2) UNRELEASED; urgency=medium
   * debian/patches/git-updates.diff: update from upstream stable branch:
     - Fix malloc returning pointer from tcache_get when it should returns
       NULL (CVE-2017-17426).  Closes: #883729.
+    - Drop debian/patches/ia64/git-ia64-crash-thread-exit.diff (merged
+      upstream).
   * debian/control.in/libc: add a Breaks: libperl5.26 (<< 5.26.1-3) to
     @libc@-dev to handle the xlocale.h removal.  Closes: #883392.
   * debian/control.in/main: point the Vcs-Git field to the glibc-2.26 branch
diff --git a/debian/patches/git-updates.diff b/debian/patches/git-updates.diff
index 46091e3..61dbf17 100644
--- a/debian/patches/git-updates.diff
+++ b/debian/patches/git-updates.diff
@@ -1,10 +1,37 @@
 GIT update of git://sourceware.org/git/glibc.git/release/2.26/master from glibc-2.26
 
 diff --git a/ChangeLog b/ChangeLog
-index 8dbfc7eaff..4fb30a1d8f 100644
+index 8dbfc7eaff..b90e7eb827 100644
 --- a/ChangeLog
 +++ b/ChangeLog
-@@ -1,3 +1,1005 @@
+@@ -1,3 +1,1032 @@
++2017-12-13  Adhemerval Zanella  <adhemerval.zanella@linaro.org>
++
++	* sysdeps/ia64/fpu/libm-test-ulps: Update.
++
++2017-12-12  Adhemerval Zanella  <adhemerval.zanella@linaro.org>
++
++	[BZ #21672]
++	* nptl/allocatestack.c [_STACK_GROWS_DOWN] (setup_stack_prot):
++	Set to use !NEED_SEPARATE_REGISTER_STACK as well.
++	(advise_stack_range): New function.
++	* nptl/pthread_create.c (START_THREAD_DEFN): Move logic to mark
++	stack non required to advise_stack_range at allocatestack.c
++
++2017-12-12  Adhemerval Zanella  <adhemerval.zanella@linaro.org>
++	    Sergei Trofimovich  <slyfox@inbox.ru>
++
++	[BZ #21908]
++	* sysdeps/unix/sysv/linux/m68k/mmap_internal.h (MMAP2_PAGE_SHIFT):
++	Rename to MMAP2_PAGE_UNIT.
++	* sysdeps/unix/sysv/linux/ia64/mmap_internal.h: New file.
++	* sysdeps/unix/sysv/linux/mmap.c: Include mmap_internal iff
++	__OFF_T_MATCHES_OFF64_T is not defined.
++	* sysdeps/unix/sysv/linux/mmap_internal.h (page_unit): Declare as
++	uint64_t.
++	(MMAP2_PAGE_UNIT) [MMAP2_PAGE_UNIT == -1]: Redefine to page_unit.
++	(page_unit) [MMAP2_PAGE_UNIT != -1]: Remove definition.
++
 +2017-12-12  James Clarke <jrtc27@jrtc27.com>
 +
 +	* sysdeps/unix/sysv/linux/ia64/ipc_priv.h: New file defining
@@ -3316,10 +3343,53 @@ index 5cb1bb2c3d..9ca6d01b8c 100644
  ifneq ($(filter %tests,$(MAKECMDGOALS)),)
  .NOTPARALLEL:
 diff --git a/nptl/allocatestack.c b/nptl/allocatestack.c
-index ce2e24af95..dff5d3469e 100644
+index ce2e24af95..1a760e92e5 100644
 --- a/nptl/allocatestack.c
 +++ b/nptl/allocatestack.c
-@@ -727,7 +727,7 @@ allocate_stack (const struct pthread_attr *attr, struct pthread **pdp,
+@@ -356,7 +356,7 @@ setup_stack_prot (char *mem, size_t size, char *guard, size_t guardsize,
+ 		  const int prot)
+ {
+   char *guardend = guard + guardsize;
+-#if _STACK_GROWS_DOWN
++#if _STACK_GROWS_DOWN && !defined(NEED_SEPARATE_REGISTER_STACK)
+   /* As defined at guard_position, for architectures with downward stack
+      the guard page is always at start of the allocated area.  */
+   if (__mprotect (guardend, size - guardsize, prot) != 0)
+@@ -372,6 +372,33 @@ setup_stack_prot (char *mem, size_t size, char *guard, size_t guardsize,
+   return 0;
+ }
+ 
++/* Mark the memory of the stack as usable to the kernel.  It frees everything
++   except for the space used for the TCB itself.  */
++static inline void
++__always_inline
++advise_stack_range (void *mem, size_t size, uintptr_t pd, size_t guardsize)
++{
++  uintptr_t sp = (uintptr_t) CURRENT_STACK_FRAME;
++  size_t pagesize_m1 = __getpagesize () - 1;
++#if _STACK_GROWS_DOWN && !defined(NEED_SEPARATE_REGISTER_STACK)
++  size_t freesize = (sp - (uintptr_t) mem) & ~pagesize_m1;
++  assert (freesize < size);
++  if (freesize > PTHREAD_STACK_MIN)
++    __madvise (mem, freesize - PTHREAD_STACK_MIN, MADV_DONTNEED);
++#else
++  /* Page aligned start of memory to free (higher than or equal
++     to current sp plus the minimum stack size).  */
++  uintptr_t freeblock = (sp + PTHREAD_STACK_MIN + pagesize_m1) & ~pagesize_m1;
++  uintptr_t free_end = (pd - guardsize) & ~pagesize_m1;
++  if (free_end > freeblock)
++    {
++      size_t freesize = free_end - freeblock;
++      assert (freesize < size);
++      __madvise ((void*) freeblock, freesize, MADV_DONTNEED);
++    }
++#endif
++}
++
+ /* Returns a usable stack for a new thread either by allocating a
+    new stack or reusing a cached stack of sufficient size.
+    ATTR must be non-NULL and point to a valid pthread_attr.
+@@ -727,7 +754,7 @@ allocate_stack (const struct pthread_attr *attr, struct pthread **pdp,
  				  - offsetof (pthread_mutex_t,
  					      __data.__list.__next));
    pd->robust_head.list_op_pending = NULL;
@@ -3463,7 +3533,7 @@ index 6e7d6ff09e..c5ae04692e 100644
 +
  #endif	/* pthreadP.h */
 diff --git a/nptl/pthread_create.c b/nptl/pthread_create.c
-index 2f8ada34d6..16c05c3a58 100644
+index 2f8ada34d6..791587218b 100644
 --- a/nptl/pthread_create.c
 +++ b/nptl/pthread_create.c
 @@ -520,7 +520,7 @@ START_THREAD_DEFN
@@ -3484,6 +3554,40 @@ index 2f8ada34d6..16c05c3a58 100644
  	  this->__list.__prev = NULL;
  # endif
  	  this->__list.__next = NULL;
+@@ -551,31 +551,8 @@ START_THREAD_DEFN
+     }
+ #endif
+ 
+-  /* Mark the memory of the stack as usable to the kernel.  We free
+-     everything except for the space used for the TCB itself.  */
+-  size_t pagesize_m1 = __getpagesize () - 1;
+-#ifdef _STACK_GROWS_DOWN
+-  char *sp = CURRENT_STACK_FRAME;
+-  size_t freesize = (sp - (char *) pd->stackblock) & ~pagesize_m1;
+-  assert (freesize < pd->stackblock_size);
+-  if (freesize > PTHREAD_STACK_MIN)
+-    __madvise (pd->stackblock, freesize - PTHREAD_STACK_MIN, MADV_DONTNEED);
+-#else
+-  /* Page aligned start of memory to free (higher than or equal
+-     to current sp plus the minimum stack size).  */
+-  void *freeblock = (void*)((size_t)(CURRENT_STACK_FRAME
+-				     + PTHREAD_STACK_MIN
+-				     + pagesize_m1)
+-				    & ~pagesize_m1);
+-  char *free_end = (char *) (((uintptr_t) pd - pd->guardsize) & ~pagesize_m1);
+-  /* Is there any space to free?  */
+-  if (free_end > (char *)freeblock)
+-    {
+-      size_t freesize = (size_t)(free_end - (char *)freeblock);
+-      assert (freesize < pd->stackblock_size);
+-      __madvise (freeblock, freesize, MADV_DONTNEED);
+-    }
+-#endif
++  advise_stack_range (pd->stackblock, pd->stackblock_size, (uintptr_t) pd,
++		      pd->guardsize);
+ 
+   /* If the thread is detached free the TCB.  */
+   if (IS_DETACHED (pd))
 diff --git a/nptl/pthread_mutex_init.c b/nptl/pthread_mutex_init.c
 index 6f2fc808ff..e1f911bf29 100644
 --- a/nptl/pthread_mutex_init.c
@@ -11503,6 +11607,2544 @@ index 0000000000..9617354dc7
 +#define __PTHREAD_MUTEX_SPINS_OFFSET    20
 +#define __PTHREAD_MUTEX_ELISION_OFFSET  22
 +#define __PTHREAD_MUTEX_LIST_OFFSET     20
+diff --git a/sysdeps/ia64/fpu/libm-test-ulps b/sysdeps/ia64/fpu/libm-test-ulps
+index 2776ba7fae..543cebcb63 100644
+--- a/sysdeps/ia64/fpu/libm-test-ulps
++++ b/sysdeps/ia64/fpu/libm-test-ulps
+@@ -1,508 +1,2396 @@
+ # Begin of automatic generation
+ 
+ # Maximal error of functions:
+-Function: "asin_downward":
++Function: "acos":
++double: 1
++float128: 1
++idouble: 1
++ifloat128: 1
++
++Function: "acos_downward":
+ double: 1
+ float: 1
++float128: 1
+ idouble: 1
+ ifloat: 1
+-ildouble: 1
+-ldouble: 1
++ifloat128: 1
+ 
+-Function: "asin_towardzero":
++Function: "acos_towardzero":
+ double: 1
+ float: 1
++float128: 1
+ idouble: 1
+ ifloat: 1
+-ildouble: 1
+-ldouble: 1
++ifloat128: 1
+ 
+-Function: "asin_upward":
++Function: "acos_upward":
+ double: 1
+ float: 1
++float128: 1
+ idouble: 1
+ ifloat: 1
+-ildouble: 1
+-ldouble: 1
++ifloat128: 1
+ 
+-Function: Real part of "cacos":
++Function: "acosh":
+ double: 1
+-float: 2
++float128: 2
+ idouble: 1
+-ifloat: 2
++ifloat128: 2
+ ildouble: 1
+ ldouble: 1
+ 
+-Function: Imaginary part of "cacos":
+-double: 1
+-float: 2
+-idouble: 1
+-ifloat: 2
+-ildouble: 2
+-ldouble: 2
++Function: "acosh_downward":
++float128: 3
++ifloat128: 3
+ 
+-Function: Real part of "cacosh":
+-double: 1
+-float: 2
+-idouble: 1
+-ifloat: 2
+-ildouble: 2
+-ldouble: 2
++Function: "acosh_towardzero":
++float128: 2
++ifloat128: 2
+ 
+-Function: Imaginary part of "cacosh":
++Function: "acosh_upward":
++float128: 2
++ifloat128: 2
++
++Function: "asin":
++float128: 1
++ifloat128: 1
++
++Function: "asin_downward":
+ double: 1
+-float: 2
++float: 1
++float128: 2
+ idouble: 1
+-ifloat: 2
++ifloat: 1
++ifloat128: 2
+ ildouble: 1
+ ldouble: 1
+ 
+-Function: Real part of "casin":
++Function: "asin_towardzero":
+ double: 1
+ float: 1
++float128: 1
+ idouble: 1
+ ifloat: 1
++ifloat128: 1
+ ildouble: 1
+ ldouble: 1
+ 
+-Function: Imaginary part of "casin":
++Function: "asin_upward":
+ double: 1
+-float: 2
++float: 1
++float128: 2
+ idouble: 1
+-ifloat: 2
+-ildouble: 2
+-ldouble: 2
++ifloat: 1
++ifloat128: 2
++ildouble: 1
++ldouble: 1
+ 
+-Function: Real part of "casinh":
++Function: "asinh":
+ double: 1
+-float: 2
++float128: 3
+ idouble: 1
+-ifloat: 2
+-ildouble: 2
+-ldouble: 2
++ifloat128: 3
+ 
+-Function: Imaginary part of "casinh":
++Function: "asinh_downward":
++float128: 4
++ifloat128: 4
++
++Function: "asinh_towardzero":
++float128: 2
++ifloat128: 2
++
++Function: "asinh_upward":
++float128: 4
++ifloat128: 4
++
++Function: "atan":
++float128: 1
++ifloat128: 1
++
++Function: "atan2":
++float128: 1
++ifloat128: 1
++
++Function: "atan2_downward":
+ double: 1
+ float: 1
++float128: 2
+ idouble: 1
+ ifloat: 1
++ifloat128: 2
+ ildouble: 1
+ ldouble: 1
+ 
+-Function: Imaginary part of "catan":
+-double: 1
++Function: "atan2_towardzero":
+ float: 1
+-idouble: 1
++float128: 3
+ ifloat: 1
++ifloat128: 3
+ ildouble: 1
+ ldouble: 1
+ 
+-Function: Real part of "catanh":
++Function: "atan2_upward":
+ double: 1
+ float: 1
++float128: 2
+ idouble: 1
+ ifloat: 1
++ifloat128: 2
+ ildouble: 1
+ ldouble: 1
+ 
+-Function: Real part of "ccos":
++Function: "atan_downward":
+ double: 1
++float: 1
++float128: 2
+ idouble: 1
++ifloat: 1
++ifloat128: 2
+ ildouble: 1
+ ldouble: 1
+ 
+-Function: Imaginary part of "ccos":
+-double: 1
++Function: "atan_towardzero":
+ float: 1
+-idouble: 1
++float128: 1
+ ifloat: 1
++ifloat128: 1
+ ildouble: 1
+ ldouble: 1
+ 
+-Function: Real part of "ccosh":
++Function: "atan_upward":
+ double: 1
+ float: 1
++float128: 2
+ idouble: 1
+ ifloat: 1
++ifloat128: 2
++ildouble: 1
++ldouble: 1
+ 
+-Function: Imaginary part of "ccosh":
+-double: 1
++Function: "atanh":
++float128: 3
++ifloat128: 3
++
++Function: "atanh_downward":
+ float: 1
+-idouble: 1
++float128: 4
+ ifloat: 1
+-ildouble: 1
+-ldouble: 1
++ifloat128: 4
+ 
+-Function: Real part of "cexp":
+-double: 2
++Function: "atanh_towardzero":
+ float: 1
+-idouble: 2
++float128: 2
++ifloat: 1
++ifloat128: 2
++
++Function: "atanh_upward":
++float: 1
++float128: 4
++ifloat: 1
++ifloat128: 4
++
++Function: "cabs":
++float128: 1
++ifloat128: 1
++
++Function: "cabs_downward":
++double: 1
++float: 1
++float128: 1
++idouble: 1
+ ifloat: 1
++ifloat128: 1
+ ildouble: 1
+ ldouble: 1
+ 
+-Function: Imaginary part of "cexp":
++Function: "cabs_towardzero":
+ double: 1
+-float: 2
++float: 1
++float128: 1
+ idouble: 1
+-ifloat: 2
++ifloat: 1
++ifloat128: 1
+ ildouble: 1
+ ldouble: 1
+ 
+-Function: Real part of "clog":
++Function: "cabs_upward":
+ double: 1
+ float: 1
++float128: 1
+ idouble: 1
+ ifloat: 1
++ifloat128: 1
+ ildouble: 1
+ ldouble: 1
+ 
+-Function: Imaginary part of "clog":
++Function: Real part of "cacos":
+ double: 1
++float: 2
++float128: 2
+ idouble: 1
++ifloat: 2
++ifloat128: 2
+ ildouble: 1
+ ldouble: 1
+ 
+-Function: Real part of "clog10":
++Function: Imaginary part of "cacos":
+ double: 2
+ float: 2
++float128: 2
+ idouble: 2
+ ifloat: 2
+-ildouble: 1
+-ldouble: 1
++ifloat128: 2
++ildouble: 2
++ldouble: 2
+ 
+-Function: Imaginary part of "clog10":
++Function: Real part of "cacos_downward":
+ double: 1
+ float: 1
++float128: 3
+ idouble: 1
+ ifloat: 1
+-ildouble: 1
+-ldouble: 1
++ifloat128: 3
++ildouble: 2
++ldouble: 2
+ 
+-Function: "cos":
+-double: 1
+-idouble: 1
++Function: Imaginary part of "cacos_downward":
++double: 5
++float: 6
++float128: 6
++idouble: 5
++ifloat: 6
++ifloat128: 6
++ildouble: 5
++ldouble: 5
+ 
+-Function: "cos_downward":
++Function: Real part of "cacos_towardzero":
+ double: 1
+ float: 1
++float128: 3
+ idouble: 1
+ ifloat: 1
+-ildouble: 1
+-ldouble: 1
++ifloat128: 3
++ildouble: 2
++ldouble: 2
+ 
+-Function: "cos_towardzero":
++Function: Imaginary part of "cacos_towardzero":
++double: 4
++float: 5
++float128: 5
++idouble: 4
++ifloat: 5
++ifloat128: 5
++ildouble: 4
++ldouble: 4
++
++Function: Real part of "cacos_upward":
++double: 2
++float: 2
++float128: 3
++idouble: 2
++ifloat: 2
++ifloat128: 3
++ildouble: 2
++ldouble: 2
++
++Function: Imaginary part of "cacos_upward":
++double: 5
++float: 5
++float128: 7
++idouble: 5
++ifloat: 5
++ifloat128: 7
++ildouble: 5
++ldouble: 5
++
++Function: Real part of "cacosh":
++double: 2
++float: 2
++float128: 2
++idouble: 2
++ifloat: 2
++ifloat128: 2
++ildouble: 2
++ldouble: 2
++
++Function: Imaginary part of "cacosh":
+ double: 1
+-float: 1
++float: 2
++float128: 2
+ idouble: 1
+-ifloat: 1
++ifloat: 2
++ifloat128: 2
+ ildouble: 1
+ ldouble: 1
+ 
+-Function: "cos_upward":
+-ildouble: 1
+-ldouble: 1
++Function: Real part of "cacosh_downward":
++double: 4
++float: 5
++float128: 5
++idouble: 4
++ifloat: 5
++ifloat128: 5
++ildouble: 4
++ldouble: 4
+ 
+-Function: Real part of "cpow":
++Function: Imaginary part of "cacosh_downward":
+ double: 2
+-float: 5
++float: 2
++float128: 4
+ idouble: 2
+-ifloat: 5
++ifloat: 2
++ifloat128: 4
+ ildouble: 3
+ ldouble: 3
+ 
+-Function: Imaginary part of "cpow":
+-float: 2
+-ifloat: 2
++Function: Real part of "cacosh_towardzero":
++double: 4
++float: 5
++float128: 5
++idouble: 4
++ifloat: 5
++ifloat128: 5
+ ildouble: 4
+ ldouble: 4
+ 
+-Function: Real part of "csin":
++Function: Imaginary part of "cacosh_towardzero":
+ double: 1
+ float: 1
++float128: 3
+ idouble: 1
+ ifloat: 1
+-ildouble: 1
+-ldouble: 1
++ifloat128: 3
++ildouble: 2
++ldouble: 2
+ 
+-Function: Imaginary part of "csin":
+-float: 1
+-ifloat: 1
++Function: Real part of "cacosh_upward":
++double: 4
++float: 3
++float128: 6
++idouble: 4
++ifloat: 3
++ifloat128: 6
++ildouble: 4
++ldouble: 4
+ 
+-Function: Real part of "csinh":
++Function: Imaginary part of "cacosh_upward":
++double: 3
++float: 2
++float128: 4
++idouble: 3
++ifloat: 2
++ifloat128: 4
++ildouble: 3
++ldouble: 3
++
++Function: "carg":
++float128: 2
++ifloat128: 2
++
++Function: "carg_downward":
+ double: 1
+ float: 1
++float128: 2
+ idouble: 1
+ ifloat: 1
++ifloat128: 2
+ ildouble: 1
+ ldouble: 1
+ 
+-Function: Imaginary part of "csinh":
+-double: 1
+-float: 1
+-idouble: 1
+-ifloat: 1
+-
+-Function: Real part of "csqrt":
+-double: 1
++Function: "carg_towardzero":
+ float: 1
+-idouble: 1
++float128: 3
+ ifloat: 1
++ifloat128: 3
+ ildouble: 1
+ ldouble: 1
+ 
+-Function: Imaginary part of "csqrt":
++Function: "carg_upward":
+ double: 1
+ float: 1
++float128: 2
+ idouble: 1
+ ifloat: 1
++ifloat128: 2
+ ildouble: 1
+ ldouble: 1
+ 
+-Function: Real part of "ctan":
++Function: Real part of "casin":
+ double: 1
+ float: 1
++float128: 2
+ idouble: 1
+ ifloat: 1
+-ildouble: 2
+-ldouble: 2
++ifloat128: 2
++ildouble: 1
++ldouble: 1
+ 
+-Function: Imaginary part of "ctan":
++Function: Imaginary part of "casin":
+ double: 2
+-float: 1
++float: 2
++float128: 2
+ idouble: 2
+-ifloat: 1
+-ildouble: 2
+-ldouble: 2
+-
+-Function: Real part of "ctan_downward":
+-double: 4
+-float: 4
+-idouble: 4
+-ifloat: 4
++ifloat: 2
++ifloat128: 2
+ ildouble: 2
+ ldouble: 2
+ 
+-Function: Imaginary part of "ctan_downward":
++Function: Real part of "casin_downward":
+ double: 3
+ float: 2
++float128: 3
+ idouble: 3
+ ifloat: 2
+-ildouble: 2
+-ldouble: 2
++ifloat128: 3
++ildouble: 3
++ldouble: 3
+ 
+-Function: Real part of "ctan_towardzero":
+-double: 2
+-float: 1
+-idouble: 2
+-ifloat: 1
+-ildouble: 2
+-ldouble: 2
++Function: Imaginary part of "casin_downward":
++double: 5
++float: 6
++float128: 6
++idouble: 5
++ifloat: 6
++ifloat128: 6
++ildouble: 5
++ldouble: 5
+ 
+-Function: Imaginary part of "ctan_towardzero":
++Function: Real part of "casin_towardzero":
+ double: 3
+ float: 2
++float128: 3
+ idouble: 3
+ ifloat: 2
++ifloat128: 3
++ildouble: 3
++ldouble: 3
++
++Function: Imaginary part of "casin_towardzero":
++double: 4
++float: 5
++float128: 5
++idouble: 4
++ifloat: 5
++ifloat128: 5
+ ildouble: 4
+ ldouble: 4
+ 
+-Function: Real part of "ctan_upward":
++Function: Real part of "casin_upward":
+ double: 2
+-float: 3
++float: 1
++float128: 3
+ idouble: 2
+-ifloat: 3
+-ildouble: 5
++ifloat: 1
++ifloat128: 3
++ildouble: 2
++ldouble: 2
++
++Function: Imaginary part of "casin_upward":
++double: 5
++float: 5
++float128: 7
++idouble: 5
++ifloat: 5
++ifloat128: 7
++ildouble: 5
++ldouble: 5
++
++Function: Real part of "casinh":
++double: 2
++float: 2
++float128: 2
++idouble: 2
++ifloat: 2
++ifloat128: 2
++ildouble: 2
++ldouble: 2
++
++Function: Imaginary part of "casinh":
++double: 1
++float: 1
++float128: 2
++idouble: 1
++ifloat: 1
++ifloat128: 2
++ildouble: 1
++ldouble: 1
++
++Function: Real part of "casinh_downward":
++double: 5
++float: 6
++float128: 6
++idouble: 5
++ifloat: 6
++ifloat128: 6
++ildouble: 5
++ldouble: 5
++
++Function: Imaginary part of "casinh_downward":
++double: 3
++float: 2
++float128: 3
++idouble: 3
++ifloat: 2
++ifloat128: 3
++ildouble: 3
++ldouble: 3
++
++Function: Real part of "casinh_towardzero":
++double: 4
++float: 5
++float128: 5
++idouble: 4
++ifloat: 5
++ifloat128: 5
++ildouble: 4
++ldouble: 4
++
++Function: Imaginary part of "casinh_towardzero":
++double: 3
++float: 2
++float128: 3
++idouble: 3
++ifloat: 2
++ifloat128: 3
++ildouble: 3
++ldouble: 3
++
++Function: Real part of "casinh_upward":
++double: 5
++float: 5
++float128: 7
++idouble: 5
++ifloat: 5
++ifloat128: 7
++ildouble: 5
++ldouble: 5
++
++Function: Imaginary part of "casinh_upward":
++double: 2
++float: 1
++float128: 3
++idouble: 2
++ifloat: 1
++ifloat128: 3
++ildouble: 2
++ldouble: 2
++
++Function: Real part of "catan":
++double: 1
++float128: 1
++idouble: 1
++ifloat128: 1
++
++Function: Imaginary part of "catan":
++double: 1
++float: 1
++float128: 1
++idouble: 1
++ifloat: 1
++ifloat128: 1
++ildouble: 1
++ldouble: 1
++
++Function: Real part of "catan_downward":
++double: 1
++float: 1
++float128: 2
++idouble: 1
++ifloat: 1
++ifloat128: 2
++ildouble: 1
++ldouble: 1
++
++Function: Imaginary part of "catan_downward":
++double: 2
++float: 1
++float128: 2
++idouble: 2
++ifloat: 1
++ifloat128: 2
++ildouble: 2
++ldouble: 2
++
++Function: Real part of "catan_towardzero":
++double: 1
++float: 1
++float128: 2
++idouble: 1
++ifloat: 1
++ifloat128: 2
++ildouble: 1
++ldouble: 1
++
++Function: Imaginary part of "catan_towardzero":
++double: 1
++float: 1
++float128: 2
++idouble: 1
++ifloat: 1
++ifloat128: 2
++ildouble: 2
++ldouble: 2
++
++Function: Real part of "catan_upward":
++double: 1
++float: 1
++float128: 2
++idouble: 1
++ifloat: 1
++ifloat128: 2
++ildouble: 1
++ldouble: 1
++
++Function: Imaginary part of "catan_upward":
++double: 2
++float: 2
++float128: 3
++idouble: 2
++ifloat: 2
++ifloat128: 3
++ildouble: 3
++ldouble: 3
++
++Function: Real part of "catanh":
++double: 1
++float: 1
++float128: 1
++idouble: 1
++ifloat: 1
++ifloat128: 1
++ildouble: 1
++ldouble: 1
++
++Function: Imaginary part of "catanh":
++double: 1
++float128: 1
++idouble: 1
++ifloat128: 1
++
++Function: Real part of "catanh_downward":
++double: 2
++float: 1
++float128: 2
++idouble: 2
++ifloat: 1
++ifloat128: 2
++ildouble: 2
++ldouble: 2
++
++Function: Imaginary part of "catanh_downward":
++double: 1
++float: 1
++float128: 2
++idouble: 1
++ifloat: 1
++ifloat128: 2
++ildouble: 1
++ldouble: 1
++
++Function: Real part of "catanh_towardzero":
++double: 1
++float: 1
++float128: 2
++idouble: 1
++ifloat: 1
++ifloat128: 2
++ildouble: 2
++ldouble: 2
++
++Function: Imaginary part of "catanh_towardzero":
++double: 1
++float: 1
++float128: 2
++idouble: 1
++ifloat: 1
++ifloat128: 2
++ildouble: 1
++ldouble: 1
++
++Function: Real part of "catanh_upward":
++double: 4
++float: 4
++float128: 4
++idouble: 4
++ifloat: 4
++ifloat128: 4
++ildouble: 4
++ldouble: 4
++
++Function: Imaginary part of "catanh_upward":
++double: 1
++float: 1
++float128: 2
++idouble: 1
++ifloat: 1
++ifloat128: 2
++ildouble: 1
++ldouble: 1
++
++Function: "cbrt":
++float128: 1
++ifloat128: 1
++
++Function: "cbrt_downward":
++double: 1
++float128: 1
++idouble: 1
++ifloat128: 1
++ildouble: 1
++ldouble: 1
++
++Function: "cbrt_towardzero":
++float: 1
++float128: 1
++ifloat: 1
++ifloat128: 1
++
++Function: "cbrt_upward":
++float: 1
++float128: 1
++ifloat: 1
++ifloat128: 1
++ildouble: 1
++ldouble: 1
++
++Function: Real part of "ccos":
++double: 1
++float128: 1
++idouble: 1
++ifloat128: 1
++ildouble: 1
++ldouble: 1
++
++Function: Imaginary part of "ccos":
++double: 1
++float: 1
++float128: 1
++idouble: 1
++ifloat: 1
++ifloat128: 1
++ildouble: 1
++ldouble: 1
++
++Function: Real part of "ccos_downward":
++double: 3
++float: 1
++float128: 2
++idouble: 3
++ifloat: 1
++ifloat128: 2
++ildouble: 3
++ldouble: 3
++
++Function: Imaginary part of "ccos_downward":
++double: 3
++float: 3
++float128: 2
++idouble: 3
++ifloat: 3
++ifloat128: 2
++ildouble: 3
++ldouble: 3
++
++Function: Real part of "ccos_towardzero":
++double: 3
++float: 1
++float128: 2
++idouble: 3
++ifloat: 1
++ifloat128: 2
++ildouble: 3
++ldouble: 3
++
++Function: Imaginary part of "ccos_towardzero":
++double: 3
++float: 3
++float128: 2
++idouble: 3
++ifloat: 3
++ifloat128: 2
++ildouble: 3
++ldouble: 3
++
++Function: Real part of "ccos_upward":
++double: 1
++float: 2
++float128: 3
++idouble: 1
++ifloat: 2
++ifloat128: 3
++ildouble: 2
++ldouble: 2
++
++Function: Imaginary part of "ccos_upward":
++double: 2
++float: 2
++float128: 2
++idouble: 2
++ifloat: 2
++ifloat128: 2
++ildouble: 2
++ldouble: 2
++
++Function: Real part of "ccosh":
++double: 1
++float: 1
++float128: 1
++idouble: 1
++ifloat: 1
++ifloat128: 1
++
++Function: Imaginary part of "ccosh":
++double: 1
++float: 1
++float128: 1
++idouble: 1
++ifloat: 1
++ifloat128: 1
++ildouble: 1
++ldouble: 1
++
++Function: Real part of "ccosh_downward":
++double: 3
++float: 2
++float128: 2
++idouble: 3
++ifloat: 2
++ifloat128: 2
++ildouble: 3
++ldouble: 3
++
++Function: Imaginary part of "ccosh_downward":
++double: 3
++float: 3
++float128: 2
++idouble: 3
++ifloat: 3
++ifloat128: 2
++ildouble: 3
++ldouble: 3
++
++Function: Real part of "ccosh_towardzero":
++double: 3
++float: 2
++float128: 2
++idouble: 3
++ifloat: 2
++ifloat128: 2
++ildouble: 3
++ldouble: 3
++
++Function: Imaginary part of "ccosh_towardzero":
++double: 3
++float: 3
++float128: 2
++idouble: 3
++ifloat: 3
++ifloat128: 2
++ildouble: 3
++ldouble: 3
++
++Function: Real part of "ccosh_upward":
++double: 1
++float: 2
++float128: 3
++idouble: 1
++ifloat: 2
++ifloat128: 3
++ildouble: 2
++ldouble: 2
++
++Function: Imaginary part of "ccosh_upward":
++double: 2
++float: 2
++float128: 2
++idouble: 2
++ifloat: 2
++ifloat128: 2
++ildouble: 2
++ldouble: 2
++
++Function: Real part of "cexp":
++double: 2
++float: 1
++float128: 1
++idouble: 2
++ifloat: 1
++ifloat128: 1
++ildouble: 1
++ldouble: 1
++
++Function: Imaginary part of "cexp":
++double: 1
++float: 2
++float128: 1
++idouble: 1
++ifloat: 2
++ifloat128: 1
++ildouble: 1
++ldouble: 1
++
++Function: Real part of "cexp_downward":
++double: 4
++float: 2
++float128: 2
++idouble: 4
++ifloat: 2
++ifloat128: 2
++ildouble: 3
++ldouble: 3
++
++Function: Imaginary part of "cexp_downward":
++double: 3
++float: 3
++float128: 2
++idouble: 3
++ifloat: 3
++ifloat128: 2
++ildouble: 3
++ldouble: 3
++
++Function: Real part of "cexp_towardzero":
++double: 4
++float: 2
++float128: 2
++idouble: 4
++ifloat: 2
++ifloat128: 2
++ildouble: 3
++ldouble: 3
++
++Function: Imaginary part of "cexp_towardzero":
++double: 3
++float: 3
++float128: 2
++idouble: 3
++ifloat: 3
++ifloat128: 2
++ildouble: 3
++ldouble: 3
++
++Function: Real part of "cexp_upward":
++double: 2
++float: 2
++float128: 3
++idouble: 2
++ifloat: 2
++ifloat128: 3
++ildouble: 2
++ldouble: 2
++
++Function: Imaginary part of "cexp_upward":
++double: 3
++float: 2
++float128: 3
++idouble: 3
++ifloat: 2
++ifloat128: 3
++ildouble: 2
++ldouble: 2
++
++Function: Real part of "clog":
++double: 2
++float: 3
++float128: 2
++idouble: 2
++ifloat: 3
++ifloat128: 2
++ildouble: 2
++ldouble: 2
++
++Function: Imaginary part of "clog":
++double: 1
++float128: 1
++idouble: 1
++ifloat128: 1
++ildouble: 1
++ldouble: 1
++
++Function: Real part of "clog10":
++double: 3
++float: 4
++float128: 2
++idouble: 3
++ifloat: 4
++ifloat128: 2
++ildouble: 2
++ldouble: 2
++
++Function: Imaginary part of "clog10":
++double: 2
++float: 1
++float128: 2
++idouble: 2
++ifloat: 1
++ifloat128: 2
++ildouble: 1
++ldouble: 1
++
++Function: Real part of "clog10_downward":
++double: 4
++float: 4
++float128: 3
++idouble: 4
++ifloat: 4
++ifloat128: 3
++ildouble: 4
++ldouble: 4
++
++Function: Imaginary part of "clog10_downward":
++double: 2
++float: 2
++float128: 3
++idouble: 2
++ifloat: 2
++ifloat128: 3
++ildouble: 2
++ldouble: 2
++
++Function: Real part of "clog10_towardzero":
++double: 5
++float: 5
++float128: 4
++idouble: 5
++ifloat: 5
++ifloat128: 4
++ildouble: 4
++ldouble: 4
++
++Function: Imaginary part of "clog10_towardzero":
++double: 2
++float: 2
++float128: 3
++idouble: 2
++ifloat: 2
++ifloat128: 3
++ildouble: 2
++ldouble: 2
++
++Function: Real part of "clog10_upward":
++double: 4
++float: 5
++float128: 4
++idouble: 4
++ifloat: 5
++ifloat128: 4
++ildouble: 4
++ldouble: 4
++
++Function: Imaginary part of "clog10_upward":
++double: 2
++float: 2
++float128: 3
++idouble: 2
++ifloat: 2
++ifloat128: 3
++ildouble: 2
++ldouble: 2
++
++Function: Real part of "clog_downward":
++double: 3
++float: 3
++float128: 3
++idouble: 3
++ifloat: 3
++ifloat128: 3
++ildouble: 3
++ldouble: 3
++
++Function: Imaginary part of "clog_downward":
++double: 1
++float: 1
++float128: 2
++idouble: 1
++ifloat: 1
++ifloat128: 2
++ildouble: 1
++ldouble: 1
++
++Function: Real part of "clog_towardzero":
++double: 3
++float: 4
++float128: 3
++idouble: 3
++ifloat: 4
++ifloat128: 3
++ildouble: 3
++ldouble: 3
++
++Function: Imaginary part of "clog_towardzero":
++double: 1
++float: 1
++float128: 2
++idouble: 1
++ifloat: 1
++ifloat128: 2
++ildouble: 1
++ldouble: 1
++
++Function: Real part of "clog_upward":
++double: 2
++float: 3
++float128: 4
++idouble: 2
++ifloat: 3
++ifloat128: 4
++ildouble: 3
++ldouble: 3
++
++Function: Imaginary part of "clog_upward":
++double: 1
++float: 1
++float128: 2
++idouble: 1
++ifloat: 1
++ifloat128: 2
++ildouble: 1
++ldouble: 1
++
++Function: "cos":
++double: 1
++float128: 1
++idouble: 1
++ifloat128: 1
++
++Function: "cos_downward":
++double: 1
++float: 1
++float128: 3
++idouble: 1
++ifloat: 1
++ifloat128: 3
++ildouble: 1
++ldouble: 1
++
++Function: "cos_towardzero":
++double: 1
++float: 1
++float128: 1
++idouble: 1
++ifloat: 1
++ifloat128: 1
++ildouble: 1
++ldouble: 1
++
++Function: "cos_upward":
++double: 1
++float128: 2
++idouble: 1
++ifloat128: 2
++ildouble: 1
++ldouble: 1
++
++Function: "cosh":
++float128: 1
++ifloat128: 1
++
++Function: "cosh_downward":
++float128: 2
++ifloat128: 1
++
++Function: "cosh_towardzero":
++float128: 2
++ifloat128: 1
++
++Function: "cosh_upward":
++float128: 3
++ifloat128: 1
++
++Function: Real part of "cpow":
++double: 2
++float: 5
++float128: 4
++idouble: 2
++ifloat: 5
++ifloat128: 4
++ildouble: 3
++ldouble: 3
++
++Function: Imaginary part of "cpow":
++float: 2
++float128: 1
++ifloat: 2
++ifloat128: 1
++ildouble: 4
++ldouble: 4
++
++Function: Real part of "cpow_downward":
++double: 5
++float: 8
++float128: 6
++idouble: 5
++ifloat: 8
++ifloat128: 6
++ildouble: 7
++ldouble: 7
++
++Function: Imaginary part of "cpow_downward":
++double: 2
++float: 2
++float128: 2
++idouble: 2
++ifloat: 2
++ifloat128: 2
++ildouble: 1
++ldouble: 1
++
++Function: Real part of "cpow_towardzero":
++double: 5
++float: 8
++float128: 6
++idouble: 5
++ifloat: 8
++ifloat128: 6
++ildouble: 7
++ldouble: 7
++
++Function: Imaginary part of "cpow_towardzero":
++double: 2
++float: 2
++float128: 2
++idouble: 2
++ifloat: 2
++ifloat128: 2
++ildouble: 1
++ldouble: 1
++
++Function: Real part of "cpow_upward":
++double: 4
++float: 1
++float128: 3
++idouble: 4
++ifloat: 1
++ifloat128: 3
++ildouble: 2
++ldouble: 2
++
++Function: Imaginary part of "cpow_upward":
++double: 2
++float: 2
++float128: 2
++idouble: 2
++ifloat: 2
++ifloat128: 2
++ildouble: 2
++ldouble: 2
++
++Function: Real part of "csin":
++double: 1
++float: 1
++float128: 1
++idouble: 1
++ifloat: 1
++ifloat128: 1
++ildouble: 1
++ldouble: 1
++
++Function: Imaginary part of "csin":
++float: 1
++float128: 1
++ifloat: 1
++ifloat128: 1
++
++Function: Real part of "csin_downward":
++double: 3
++float: 3
++float128: 2
++idouble: 3
++ifloat: 3
++ifloat128: 2
++ildouble: 3
++ldouble: 3
++
++Function: Imaginary part of "csin_downward":
++double: 3
++float: 1
++float128: 2
++idouble: 3
++ifloat: 1
++ifloat128: 2
++ildouble: 3
++ldouble: 3
++
++Function: Real part of "csin_towardzero":
++double: 3
++float: 3
++float128: 2
++idouble: 3
++ifloat: 3
++ifloat128: 2
++ildouble: 3
++ldouble: 3
++
++Function: Imaginary part of "csin_towardzero":
++double: 3
++float: 1
++float128: 2
++idouble: 3
++ifloat: 1
++ifloat128: 2
++ildouble: 3
++ldouble: 3
++
++Function: Real part of "csin_upward":
++double: 2
++float: 2
++float128: 2
++idouble: 2
++ifloat: 2
++ifloat128: 2
++ildouble: 2
++ldouble: 2
++
++Function: Imaginary part of "csin_upward":
++double: 1
++float: 2
++float128: 3
++idouble: 1
++ifloat: 2
++ifloat128: 3
++ildouble: 1
++ldouble: 1
++
++Function: Real part of "csinh":
++double: 1
++float: 1
++float128: 1
++idouble: 1
++ifloat: 1
++ifloat128: 1
++ildouble: 1
++ldouble: 1
++
++Function: Imaginary part of "csinh":
++double: 1
++float: 1
++float128: 1
++idouble: 1
++ifloat: 1
++ifloat128: 1
++ildouble: 1
++ldouble: 1
++
++Function: Real part of "csinh_downward":
++double: 3
++float: 1
++float128: 2
++idouble: 3
++ifloat: 1
++ifloat128: 2
++ildouble: 3
++ldouble: 3
++
++Function: Imaginary part of "csinh_downward":
++double: 3
++float: 3
++float128: 2
++idouble: 3
++ifloat: 3
++ifloat128: 2
++ildouble: 3
++ldouble: 3
++
++Function: Real part of "csinh_towardzero":
++double: 3
++float: 1
++float128: 2
++idouble: 3
++ifloat: 1
++ifloat128: 2
++ildouble: 3
++ldouble: 3
++
++Function: Imaginary part of "csinh_towardzero":
++double: 3
++float: 3
++float128: 2
++idouble: 3
++ifloat: 3
++ifloat128: 2
++ildouble: 3
++ldouble: 3
++
++Function: Real part of "csinh_upward":
++double: 1
++float: 2
++float128: 3
++idouble: 1
++ifloat: 2
++ifloat128: 3
++ildouble: 1
++ldouble: 1
++
++Function: Imaginary part of "csinh_upward":
++double: 2
++float: 2
++float128: 2
++idouble: 2
++ifloat: 2
++ifloat128: 2
++ildouble: 2
++ldouble: 2
++
++Function: Real part of "csqrt":
++double: 2
++float: 2
++float128: 2
++idouble: 2
++ifloat: 2
++ifloat128: 2
++ildouble: 2
++ldouble: 2
++
++Function: Imaginary part of "csqrt":
++double: 2
++float: 2
++float128: 2
++idouble: 2
++ifloat: 2
++ifloat128: 2
++ildouble: 2
++ldouble: 2
++
++Function: Real part of "csqrt_downward":
++double: 4
++float: 4
++float128: 4
++idouble: 4
++ifloat: 4
++ifloat128: 4
++ildouble: 4
++ldouble: 4
++
++Function: Imaginary part of "csqrt_downward":
++double: 3
++float: 3
++float128: 3
++idouble: 3
++ifloat: 3
++ifloat128: 3
++ildouble: 3
++ldouble: 3
++
++Function: Real part of "csqrt_towardzero":
++double: 3
++float: 3
++float128: 3
++idouble: 3
++ifloat: 3
++ifloat128: 3
++ildouble: 3
++ldouble: 3
++
++Function: Imaginary part of "csqrt_towardzero":
++double: 3
++float: 3
++float128: 3
++idouble: 3
++ifloat: 3
++ifloat128: 3
++ildouble: 3
++ldouble: 3
++
++Function: Real part of "csqrt_upward":
++double: 4
++float: 4
++float128: 4
++idouble: 4
++ifloat: 4
++ifloat128: 4
++ildouble: 4
++ldouble: 4
++
++Function: Imaginary part of "csqrt_upward":
++double: 3
++float: 2
++float128: 3
++idouble: 3
++ifloat: 2
++ifloat128: 3
++ildouble: 3
++ldouble: 3
++
++Function: Real part of "ctan":
++double: 1
++float: 1
++float128: 3
++idouble: 1
++ifloat: 1
++ifloat128: 3
++ildouble: 2
++ldouble: 2
++
++Function: Imaginary part of "ctan":
++double: 2
++float: 1
++float128: 3
++idouble: 2
++ifloat: 1
++ifloat128: 3
++ildouble: 2
++ldouble: 2
++
++Function: Real part of "ctan_downward":
++double: 4
++float: 4
++float128: 4
++idouble: 4
++ifloat: 4
++ifloat128: 4
++ildouble: 2
++ldouble: 2
++
++Function: Imaginary part of "ctan_downward":
++double: 3
++float: 2
++float128: 5
++idouble: 3
++ifloat: 2
++ifloat128: 5
++ildouble: 2
++ldouble: 2
++
++Function: Real part of "ctan_towardzero":
++double: 2
++float: 2
++float128: 4
++idouble: 2
++ifloat: 2
++ifloat128: 4
++ildouble: 2
++ldouble: 2
++
++Function: Imaginary part of "ctan_towardzero":
++double: 3
++float: 2
++float128: 5
++idouble: 3
++ifloat: 2
++ifloat128: 5
++ildouble: 4
++ldouble: 4
++
++Function: Real part of "ctan_upward":
++double: 2
++float: 3
++float128: 5
++idouble: 2
++ifloat: 3
++ifloat128: 5
++ildouble: 5
+ ldouble: 5
+ 
+ Function: Imaginary part of "ctan_upward":
+ double: 6
+ float: 2
++float128: 5
+ idouble: 6
+ ifloat: 2
++ifloat128: 5
+ ildouble: 7
+ ldouble: 7
+ 
+ Function: Real part of "ctanh":
+ double: 2
+ float: 1
++float128: 3
+ idouble: 2
+ ifloat: 1
++ifloat128: 3
+ ildouble: 1
+ ldouble: 1
+ 
+ Function: Imaginary part of "ctanh":
+ double: 2
+ float: 1
++float128: 3
+ idouble: 2
+ ifloat: 1
++ifloat128: 3
+ ildouble: 2
+ ldouble: 2
+ 
+ Function: Real part of "ctanh_downward":
+ double: 3
+ float: 2
++float128: 5
+ idouble: 3
+ ifloat: 2
++ifloat128: 5
+ ildouble: 1
+ ldouble: 1
+ 
+ Function: Imaginary part of "ctanh_downward":
+ double: 4
+ float: 4
++float128: 4
+ idouble: 4
+ ifloat: 4
++ifloat128: 4
+ ildouble: 2
+ ldouble: 2
+ 
+ Function: Real part of "ctanh_towardzero":
+ double: 3
+ float: 2
++float128: 5
+ idouble: 3
+ ifloat: 2
++ifloat128: 5
+ ildouble: 4
+ ldouble: 4
+ 
+ Function: Imaginary part of "ctanh_towardzero":
+ double: 2
+ float: 1
++float128: 3
+ idouble: 2
+ ifloat: 1
++ifloat128: 3
+ ildouble: 1
+ ldouble: 1
+ 
+ Function: Real part of "ctanh_upward":
+ double: 6
+ float: 2
++float128: 5
+ idouble: 6
+ ifloat: 2
++ifloat128: 5
+ ildouble: 7
+ ldouble: 7
+ 
+ Function: Imaginary part of "ctanh_upward":
+ double: 2
+ float: 3
++float128: 5
+ idouble: 2
+ ifloat: 3
++ifloat128: 5
+ ildouble: 5
+ ldouble: 5
+ 
+-Function: "expm1":
++Function: "erf":
++float128: 1
++ifloat128: 1
++
++Function: "erf_downward":
++float128: 2
++ifloat128: 2
++
++Function: "erf_towardzero":
++float128: 1
++ifloat128: 1
++
++Function: "erf_upward":
++float128: 2
++ifloat128: 2
++
++Function: "erfc":
++float128: 2
++ifloat128: 2
++
++Function: "erfc_downward":
++double: 1
++float128: 5
++idouble: 1
++ifloat128: 5
++
++Function: "erfc_towardzero":
++double: 1
++float128: 4
++idouble: 1
++ifloat128: 4
++
++Function: "erfc_upward":
++double: 1
++float128: 5
++idouble: 1
++ifloat128: 5
++
++Function: "exp":
++float: 1
++float128: 1
++ifloat: 1
++ifloat128: 1
++
++Function: "exp10":
++float128: 2
++ifloat128: 2
++
++Function: "exp10_downward":
++float128: 3
++ifloat128: 3
++
++Function: "exp10_towardzero":
++float128: 3
++ifloat128: 3
++
++Function: "exp10_upward":
++float128: 3
++ifloat128: 3
++
++Function: "exp2":
++double: 1
++float128: 1
++idouble: 1
++ifloat128: 1
++ildouble: 1
++ldouble: 1
++
++Function: "exp2_downward":
++double: 1
++float128: 1
++idouble: 1
++ifloat128: 1
++ildouble: 1
++ldouble: 1
++
++Function: "exp2_towardzero":
++double: 1
++float128: 1
++idouble: 1
++ifloat128: 1
++ildouble: 1
++ldouble: 1
++
++Function: "exp2_upward":
++double: 1
++float128: 2
++idouble: 1
++ifloat128: 2
++ildouble: 1
++ldouble: 1
++
++Function: "expm1":
++double: 1
++float128: 1
++idouble: 1
++ifloat128: 1
++ildouble: 1
++ldouble: 1
++
++Function: "expm1_downward":
++float128: 2
++ifloat128: 2
++ildouble: 1
++ldouble: 1
++
++Function: "expm1_towardzero":
++float128: 4
++ifloat128: 4
++
++Function: "expm1_upward":
++float128: 3
++ifloat128: 3
++
++Function: "gamma":
++float: 1
++ifloat: 1
++
++Function: "gamma_downward":
++double: 1
++float: 1
++idouble: 1
++ifloat: 1
++
++Function: "gamma_towardzero":
++double: 1
++float: 1
++idouble: 1
++ifloat: 1
++
++Function: "gamma_upward":
++double: 1
++float: 1
++idouble: 1
++ifloat: 1
++
++Function: "hypot":
++float128: 1
++ifloat128: 1
++
++Function: "hypot_downward":
++double: 1
++float: 1
++float128: 1
++idouble: 1
++ifloat: 1
++ifloat128: 1
++ildouble: 1
++ldouble: 1
++
++Function: "hypot_towardzero":
++double: 1
++float: 1
++float128: 1
++idouble: 1
++ifloat: 1
++ifloat128: 1
+ ildouble: 1
+ ldouble: 1
+ 
+-Function: "expm1_downward":
++Function: "hypot_upward":
++double: 1
++float: 1
++float128: 1
++idouble: 1
++ifloat: 1
++ifloat128: 1
+ ildouble: 1
+ ldouble: 1
+ 
+ Function: "j0":
+ double: 2
+ float: 2
++float128: 2
+ idouble: 2
+ ifloat: 2
++ifloat128: 2
+ ildouble: 2
+ ldouble: 2
+ 
++Function: "j0_downward":
++double: 6
++float: 4
++float128: 4
++idouble: 6
++ifloat: 4
++ifloat128: 4
++ildouble: 3
++ldouble: 3
++
++Function: "j0_towardzero":
++double: 2
++float: 1
++float128: 2
++idouble: 2
++ifloat: 1
++ifloat128: 2
++ildouble: 5
++ldouble: 5
++
++Function: "j0_upward":
++double: 3
++float: 2
++float128: 5
++idouble: 3
++ifloat: 2
++ifloat128: 5
++ildouble: 5
++ldouble: 5
++
+ Function: "j1":
+ double: 1
+ float: 2
++float128: 4
+ idouble: 1
+ ifloat: 2
++ifloat128: 4
+ ildouble: 1
+ ldouble: 1
+ 
++Function: "j1_downward":
++double: 3
++float: 2
++float128: 4
++idouble: 3
++ifloat: 2
++ifloat128: 4
++ildouble: 4
++ldouble: 4
++
++Function: "j1_towardzero":
++double: 3
++float: 2
++float128: 4
++idouble: 3
++ifloat: 2
++ifloat128: 4
++ildouble: 4
++ldouble: 4
++
++Function: "j1_upward":
++double: 3
++float: 4
++float128: 3
++idouble: 3
++ifloat: 4
++ifloat128: 3
++ildouble: 3
++ldouble: 3
++
+ Function: "jn":
+ double: 4
+ float: 4
++float128: 7
+ idouble: 4
+ ifloat: 4
++ifloat128: 7
++ildouble: 4
++ldouble: 4
++
++Function: "jn_downward":
++double: 4
++float: 5
++float128: 8
++idouble: 4
++ifloat: 5
++ifloat128: 8
+ ildouble: 4
+ ldouble: 4
+ 
++Function: "jn_towardzero":
++double: 4
++float: 5
++float128: 8
++idouble: 4
++ifloat: 5
++ifloat128: 8
++ildouble: 5
++ldouble: 5
++
++Function: "jn_upward":
++double: 5
++float: 4
++float128: 7
++idouble: 5
++ifloat: 4
++ifloat128: 7
++ildouble: 5
++ldouble: 5
++
++Function: "lgamma":
++float: 1
++float128: 5
++ifloat: 1
++ifloat128: 5
++
++Function: "lgamma_downward":
++double: 1
++float: 1
++float128: 8
++idouble: 1
++ifloat: 1
++ifloat128: 8
++
++Function: "lgamma_towardzero":
++double: 1
++float: 1
++float128: 5
++idouble: 1
++ifloat: 1
++ifloat128: 5
++
++Function: "lgamma_upward":
++double: 1
++float: 1
++float128: 8
++idouble: 1
++ifloat: 1
++ifloat128: 8
++
++Function: "log":
++float128: 1
++ifloat128: 1
++
++Function: "log10":
++float128: 1
++ifloat128: 1
++
++Function: "log10_downward":
++double: 1
++float128: 1
++idouble: 1
++ifloat128: 1
++ildouble: 1
++ldouble: 1
++
++Function: "log10_towardzero":
++double: 1
++float128: 1
++idouble: 1
++ifloat128: 1
++ildouble: 1
++ldouble: 1
++
++Function: "log10_upward":
++double: 1
++float: 1
++float128: 1
++idouble: 1
++ifloat: 1
++ifloat128: 1
++ildouble: 1
++ldouble: 1
++
++Function: "log1p":
++float128: 2
++ifloat128: 2
++
++Function: "log1p_downward":
++double: 1
++float128: 3
++idouble: 1
++ifloat128: 3
++
++Function: "log1p_towardzero":
++double: 1
++float128: 3
++idouble: 1
++ifloat128: 3
++
++Function: "log1p_upward":
++double: 1
++float128: 2
++idouble: 1
++ifloat128: 2
++
++Function: "log2":
++float128: 2
++ifloat128: 2
++
++Function: "log2_downward":
++float128: 3
++ifloat128: 3
++
++Function: "log2_towardzero":
++float128: 1
++ifloat128: 1
++
++Function: "log2_upward":
++float128: 1
++ifloat128: 1
++
++Function: "log_downward":
++double: 1
++float128: 1
++idouble: 1
++ifloat128: 1
++
++Function: "log_towardzero":
++double: 1
++float128: 2
++idouble: 1
++ifloat128: 2
++
++Function: "log_upward":
++double: 1
++float128: 1
++idouble: 1
++ifloat128: 1
++
++Function: "pow":
++float128: 2
++ifloat128: 2
++
+ Function: "pow_downward":
+ double: 1
+ float: 1
++float128: 2
+ idouble: 1
+ ifloat: 1
++ifloat128: 2
++ildouble: 1
++ldouble: 1
+ 
+ Function: "pow_towardzero":
+ double: 1
+ float: 1
++float128: 2
+ idouble: 1
+ ifloat: 1
++ifloat128: 2
++ildouble: 1
++ldouble: 1
+ 
+ Function: "pow_upward":
+ double: 1
+ float: 1
++float128: 2
+ idouble: 1
+ ifloat: 1
++ifloat128: 2
+ ildouble: 1
+ ldouble: 1
+ 
+ Function: "sin":
+ double: 1
++float128: 1
+ idouble: 1
++ifloat128: 1
+ 
+ Function: "sin_downward":
+ double: 1
++float: 1
++float128: 3
+ idouble: 1
++ifloat: 1
++ifloat128: 3
+ ildouble: 1
+ ldouble: 1
+ 
+ Function: "sin_towardzero":
+ double: 1
++float: 1
++float128: 2
+ idouble: 1
++ifloat: 1
++ifloat128: 2
+ ildouble: 1
+ ldouble: 1
+ 
+ Function: "sin_upward":
+ double: 1
++float: 1
++float128: 3
+ idouble: 1
++ifloat: 1
++ifloat128: 3
+ ildouble: 1
+ ldouble: 1
+ 
+ Function: "sincos":
+ double: 1
++float128: 1
+ idouble: 1
++ifloat128: 1
++
++Function: "sincos_downward":
++double: 1
++float: 1
++float128: 3
++idouble: 1
++ifloat: 1
++ifloat128: 3
++
++Function: "sincos_towardzero":
++double: 1
++float: 1
++float128: 2
++idouble: 1
++ifloat: 1
++ifloat128: 2
++
++Function: "sincos_upward":
++double: 1
++float: 1
++float128: 3
++idouble: 1
++ifloat: 1
++ifloat128: 3
++
++Function: "sinh":
++float128: 2
++ifloat128: 2
++
++Function: "sinh_downward":
++float128: 3
++ifloat128: 3
++
++Function: "sinh_towardzero":
++float128: 3
++ifloat128: 3
++
++Function: "sinh_upward":
++float128: 4
++ifloat128: 4
++
++Function: "tan":
++float128: 1
++ifloat128: 1
++ildouble: 1
++ldouble: 1
+ 
+ Function: "tan_downward":
++float128: 1
++ifloat128: 1
+ ildouble: 1
+ ldouble: 1
+ 
+ Function: "tan_towardzero":
++float128: 1
++ifloat128: 1
+ ildouble: 1
+ ldouble: 1
+ 
+ Function: "tan_upward":
++float128: 1
++ifloat128: 1
+ ildouble: 1
+ ldouble: 1
+ 
++Function: "tanh":
++float128: 2
++ifloat128: 2
++
++Function: "tanh_downward":
++float128: 4
++ifloat128: 4
++
++Function: "tanh_towardzero":
++float128: 3
++ifloat128: 3
++
++Function: "tanh_upward":
++float128: 3
++ifloat128: 3
++
+ Function: "tgamma":
++float128: 4
++ifloat128: 4
++ildouble: 1
++ldouble: 1
++
++Function: "tgamma_downward":
++double: 1
++float: 1
++float128: 5
++idouble: 1
++ifloat: 1
++ifloat128: 5
++ildouble: 1
++ldouble: 1
++
++Function: "tgamma_towardzero":
++double: 1
++float: 1
++float128: 5
++idouble: 1
++ifloat: 1
++ifloat128: 5
++ildouble: 1
++ldouble: 1
++
++Function: "tgamma_upward":
++double: 1
++float: 1
++float128: 4
++idouble: 1
++ifloat: 1
++ifloat128: 4
+ ildouble: 1
+ ldouble: 1
+ 
+ Function: "y0":
+ double: 2
+ float: 1
++float128: 3
+ idouble: 2
+ ifloat: 1
++ifloat128: 3
+ ildouble: 1
+ ldouble: 1
+ 
++Function: "y0_downward":
++double: 4
++float: 4
++float128: 4
++idouble: 4
++ifloat: 4
++ifloat128: 4
++ildouble: 4
++ldouble: 4
++
++Function: "y0_towardzero":
++double: 3
++float: 3
++float128: 3
++idouble: 3
++ifloat: 3
++ifloat128: 3
++ildouble: 5
++ldouble: 5
++
++Function: "y0_upward":
++double: 4
++float: 5
++float128: 3
++idouble: 4
++ifloat: 5
++ifloat128: 3
++ildouble: 3
++ldouble: 3
++
+ Function: "y1":
+ double: 3
+ float: 2
++float128: 2
+ idouble: 3
+ ifloat: 2
++ifloat128: 2
+ ildouble: 2
+ ldouble: 2
+ 
++Function: "y1_downward":
++double: 9
++float: 2
++float128: 4
++idouble: 9
++ifloat: 2
++ifloat128: 4
++ildouble: 3
++ldouble: 3
++
++Function: "y1_towardzero":
++double: 3
++float: 2
++float128: 2
++idouble: 3
++ifloat: 2
++ifloat128: 2
++ildouble: 3
++ldouble: 3
++
++Function: "y1_upward":
++double: 4
++float: 2
++float128: 5
++idouble: 4
++ifloat: 2
++ifloat128: 5
++ildouble: 7
++ldouble: 7
++
+ Function: "yn":
+ double: 3
+ float: 3
++float128: 5
+ idouble: 3
+ ifloat: 3
+-ildouble: 2
+-ldouble: 2
++ifloat128: 5
++ildouble: 3
++ldouble: 3
++
++Function: "yn_downward":
++double: 4
++float: 4
++float128: 5
++idouble: 4
++ifloat: 4
++ifloat128: 5
++ildouble: 4
++ldouble: 4
++
++Function: "yn_towardzero":
++double: 3
++float: 3
++float128: 5
++idouble: 3
++ifloat: 3
++ifloat128: 5
++ildouble: 5
++ldouble: 5
++
++Function: "yn_upward":
++double: 4
++float: 5
++float128: 5
++idouble: 4
++ifloat: 5
++ifloat128: 5
++ildouble: 3
++ldouble: 3
+ 
+ # end of automatic generation
 diff --git a/sysdeps/ia64/nptl/bits/pthreadtypes-arch.h b/sysdeps/ia64/nptl/bits/pthreadtypes-arch.h
 index 631cb33d09..2a3bc75b20 100644
 --- a/sysdeps/ia64/nptl/bits/pthreadtypes-arch.h
@@ -17516,6 +20158,41 @@ index 0000000000..e602eea455
 +#include <sys/ipc.h>  /* For __key_t  */
 +
 +#define __IPC_64	0x0
+diff --git a/sysdeps/unix/sysv/linux/ia64/mmap_internal.h b/sysdeps/unix/sysv/linux/ia64/mmap_internal.h
+new file mode 100644
+index 0000000000..dbaaa3f904
+--- /dev/null
++++ b/sysdeps/unix/sysv/linux/ia64/mmap_internal.h
+@@ -0,0 +1,29 @@
++/* Common mmap definition for Linux implementation.  Linux/ia64 version.
++   Copyright (C) 2017 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 MMAP_IA64_INTERNAL_LINUX_H
++#define MMAP_IA64_INTERNAL_LINUX_H
++
++/* Linux allows PAGE_SHIFT in range of [12-16] and expect
++   mmap2 offset to be provided in based on the configured pagesize.
++   Determine the shift dynamically with getpagesize.  */
++#define MMAP2_PAGE_UNIT -1
++
++#include_next <mmap_internal.h>
++
++#endif
 diff --git a/sysdeps/unix/sysv/linux/m68k/glob64.c b/sysdeps/unix/sysv/linux/m68k/glob64.c
 deleted file mode 100644
 index 82a9a296a7..0000000000
@@ -17523,6 +20200,19 @@ index 82a9a296a7..0000000000
 +++ /dev/null
 @@ -1 +0,0 @@
 -#include <sysdeps/unix/sysv/linux/i386/glob64.c>
+diff --git a/sysdeps/unix/sysv/linux/m68k/mmap_internal.h b/sysdeps/unix/sysv/linux/m68k/mmap_internal.h
+index bd8bd3843b..9fe9d9127d 100644
+--- a/sysdeps/unix/sysv/linux/m68k/mmap_internal.h
++++ b/sysdeps/unix/sysv/linux/m68k/mmap_internal.h
+@@ -22,7 +22,7 @@
+ /* ColdFire and Sun 3 kernels have PAGE_SHIFT set to 13 and expect
+    mmap2 offset to be provided in 8K pages.  Determine the shift
+    dynamically with getpagesize.  */
+-#define MMAP2_PAGE_SHIFT -1
++#define MMAP2_PAGE_UNIT -1
+ 
+ #include_next <mmap_internal.h>
+ 
 diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/glob64.c b/sysdeps/unix/sysv/linux/mips/mips64/n64/glob64.c
 deleted file mode 100644
 index 33918ea6a5..0000000000
@@ -17530,6 +20220,42 @@ index 33918ea6a5..0000000000
 +++ /dev/null
 @@ -1 +0,0 @@
 -/* glob64 is in glob.c */
+diff --git a/sysdeps/unix/sysv/linux/mmap.c b/sysdeps/unix/sysv/linux/mmap.c
+index 98c2f88eb8..59292b6d79 100644
+--- a/sysdeps/unix/sysv/linux/mmap.c
++++ b/sysdeps/unix/sysv/linux/mmap.c
+@@ -21,9 +21,9 @@
+ #include <sys/mman.h>
+ #include <sysdep.h>
+ #include <stdint.h>
+-#include <mmap_internal.h>
+ 
+ #ifndef __OFF_T_MATCHES_OFF64_T
++# include <mmap_internal.h>
+ 
+ /* An architecture may override this.  */
+ # ifndef MMAP_ADJUST_OFFSET
+diff --git a/sysdeps/unix/sysv/linux/mmap_internal.h b/sysdeps/unix/sysv/linux/mmap_internal.h
+index 499e389605..47c099183c 100644
+--- a/sysdeps/unix/sysv/linux/mmap_internal.h
++++ b/sysdeps/unix/sysv/linux/mmap_internal.h
+@@ -27,13 +27,13 @@
+ #endif
+ 
+ #if MMAP2_PAGE_UNIT == -1
+-static int page_unit;
+-
++static uint64_t page_unit;
+ # define MMAP_CHECK_PAGE_UNIT()			\
+   if (page_unit == 0)				\
+     page_unit = __getpagesize ();
++# undef MMAP2_PAGE_UNIT
++# define MMAP2_PAGE_UNIT page_unit
+ #else
+-# define page_unit MMAP2_PAGE_UNIT
+ # define MMAP_CHECK_PAGE_UNIT()
+ #endif
+ 
 diff --git a/sysdeps/unix/sysv/linux/olddirent.h b/sysdeps/unix/sysv/linux/olddirent.h
 new file mode 100644
 index 0000000000..413f78d108
diff --git a/debian/patches/ia64/git-ia64-crash-thread-exit.diff b/debian/patches/ia64/git-ia64-crash-thread-exit.diff
deleted file mode 100644
index 9af079b..0000000
--- a/debian/patches/ia64/git-ia64-crash-thread-exit.diff
+++ /dev/null
@@ -1,90 +0,0 @@
-2017-08-29  Adhemerval Zanella  <adhemerval.zanella@linaro.org>
-
-	[BZ #21672]
-	* nptl/allocatestack.c [_STACK_GROWS_DOWN] (setup_stack_prot):
-	Set to use !NEED_SEPARATE_REGISTER_STACK as well.
-	(advise_stack_range): New function.
-	* nptl/pthread_create.c (START_THREAD_DEFN): Move logic to mark
-	stack non required to advise_stack_range at allocatestack.c
-
---- a/nptl/allocatestack.c
-+++ b/nptl/allocatestack.c
-@@ -356,7 +356,7 @@
- 		  const int prot)
- {
-   char *guardend = guard + guardsize;
--#if _STACK_GROWS_DOWN
-+#if _STACK_GROWS_DOWN && !defined(NEED_SEPARATE_REGISTER_STACK)
-   /* As defined at guard_position, for architectures with downward stack
-      the guard page is always at start of the allocated area.  */
-   if (__mprotect (guardend, size - guardsize, prot) != 0)
-@@ -372,6 +372,33 @@
-   return 0;
- }
- 
-+/* Mark the memory of the stack as usable to the kernel.  It frees everything
-+   except for the space used for the TCB itself.  */
-+static inline void
-+__always_inline
-+advise_stack_range (void *mem, size_t size, uintptr_t pd, size_t guardsize)
-+{
-+  uintptr_t sp = (uintptr_t) CURRENT_STACK_FRAME;
-+  size_t pagesize_m1 = __getpagesize () - 1;
-+#if _STACK_GROWS_DOWN && !defined(NEED_SEPARATE_REGISTER_STACK)
-+  size_t freesize = (sp - (uintptr_t) mem) & ~pagesize_m1;
-+  assert (freesize < size);
-+  if (freesize > PTHREAD_STACK_MIN)
-+    __madvise (mem, freesize - PTHREAD_STACK_MIN, MADV_DONTNEED);
-+#else
-+  /* Page aligned start of memory to free (higher than or equal
-+     to current sp plus the minimum stack size).  */
-+  uintptr_t freeblock = (sp + PTHREAD_STACK_MIN + pagesize_m1) & ~pagesize_m1;
-+  uintptr_t free_end = (pd - guardsize) & ~pagesize_m1;
-+  if (free_end > freeblock)
-+    {
-+      size_t freesize = free_end - freeblock;
-+      assert (freesize < size);
-+      __madvise ((void*) freeblock, freesize, MADV_DONTNEED);
-+    }
-+#endif
-+}
-+
- /* Returns a usable stack for a new thread either by allocating a
-    new stack or reusing a cached stack of sufficient size.
-    ATTR must be non-NULL and point to a valid pthread_attr.
---- a/nptl/pthread_create.c
-+++ b/nptl/pthread_create.c
-@@ -551,31 +551,8 @@
-     }
- #endif
- 
--  /* Mark the memory of the stack as usable to the kernel.  We free
--     everything except for the space used for the TCB itself.  */
--  size_t pagesize_m1 = __getpagesize () - 1;
--#ifdef _STACK_GROWS_DOWN
--  char *sp = CURRENT_STACK_FRAME;
--  size_t freesize = (sp - (char *) pd->stackblock) & ~pagesize_m1;
--  assert (freesize < pd->stackblock_size);
--  if (freesize > PTHREAD_STACK_MIN)
--    __madvise (pd->stackblock, freesize - PTHREAD_STACK_MIN, MADV_DONTNEED);
--#else
--  /* Page aligned start of memory to free (higher than or equal
--     to current sp plus the minimum stack size).  */
--  void *freeblock = (void*)((size_t)(CURRENT_STACK_FRAME
--				     + PTHREAD_STACK_MIN
--				     + pagesize_m1)
--				    & ~pagesize_m1);
--  char *free_end = (char *) (((uintptr_t) pd - pd->guardsize) & ~pagesize_m1);
--  /* Is there any space to free?  */
--  if (free_end > (char *)freeblock)
--    {
--      size_t freesize = (size_t)(free_end - (char *)freeblock);
--      assert (freesize < pd->stackblock_size);
--      __madvise (freeblock, freesize, MADV_DONTNEED);
--    }
--#endif
-+  advise_stack_range (pd->stackblock, pd->stackblock_size, (uintptr_t) pd,
-+		      pd->guardsize);
- 
-   /* If the thread is detached free the TCB.  */
-   if (IS_DETACHED (pd))
diff --git a/debian/patches/series b/debian/patches/series
index 0715778..1d2686a 100644
--- a/debian/patches/series
+++ b/debian/patches/series
@@ -171,8 +171,6 @@ hurd-i386/git-NO_HIDDEN.diff
 i386/local-biarch.diff
 i386/unsubmitted-quiet-ldconfig.diff
 
-ia64/git-ia64-crash-thread-exit.diff
-
 kfreebsd/submitted-waitid.diff
 kfreebsd/submitted-auxv.diff
 kfreebsd/local-config_h_in.patch

-- 
Alioth's /usr/local/bin/git-commit-notice on /srv/git.debian.org/git/pkg-glibc/glibc.git


Reply to: