From 12745e32c184da0bced206e6a8919af40ef78d29 Mon Sep 17 00:00:00 2001 From: CentOS Sources Date: Nov 19 2015 03:35:16 +0000 Subject: import glibc-2.17-106.el7_2.1 --- diff --git a/SOURCES/glibc-aa64-commonpagesize-64k.patch b/SOURCES/glibc-aa64-commonpagesize-64k.patch index 20ca912..a18a0e3 100644 --- a/SOURCES/glibc-aa64-commonpagesize-64k.patch +++ b/SOURCES/glibc-aa64-commonpagesize-64k.patch @@ -1,4 +1,4 @@ ---- glibc-2.17-c758a686.orig/ports/sysdeps/aarch64/preconfigure 2012-12-24 22:02:13.000000000 -0500 +--- glibc-2.17-c758a686/ports/sysdeps/aarch64/preconfigure 2012-12-24 22:02:13.000000000 -0500 +++ glibc-2.17-c758a686/ports/sysdeps/aarch64/preconfigure 2014-05-12 14:29:52.007239252 -0400 @@ -8,7 +8,7 @@ case "$machine" in diff --git a/SOURCES/glibc-aa64-setcontext.patch b/SOURCES/glibc-aa64-setcontext.patch index da20a54..60fc6a5 100644 --- a/SOURCES/glibc-aa64-setcontext.patch +++ b/SOURCES/glibc-aa64-setcontext.patch @@ -8,10 +8,10 @@ Backport [AArch64] Ensure getcontext() initializes PSTATE. -diff --git a/ports/sysdeps/unix/sysv/linux/aarch64/getcontext.S b/ports/sysdeps/unix/sysv/linux/aarch64/getcontext.S +diff --git glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/aarch64/getcontext.S glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/aarch64/getcontext.S index aff2e32..70b2e32 100644 ---- a/ports/sysdeps/unix/sysv/linux/aarch64/getcontext.S -+++ b/ports/sysdeps/unix/sysv/linux/aarch64/getcontext.S +--- glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/aarch64/getcontext.S ++++ glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/aarch64/getcontext.S @@ -1,6 +1,6 @@ /* Save current context. @@ -30,10 +30,10 @@ index aff2e32..70b2e32 100644 /* Figure out where to place the first context extension block. */ add x2, x0, #oEXTENSION -diff --git a/ports/sysdeps/unix/sysv/linux/aarch64/setcontext.S b/ports/sysdeps/unix/sysv/linux/aarch64/setcontext.S +diff --git glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/aarch64/setcontext.S glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/aarch64/setcontext.S index a98f67f..f45a655 100644 ---- a/ports/sysdeps/unix/sysv/linux/aarch64/setcontext.S -+++ b/ports/sysdeps/unix/sysv/linux/aarch64/setcontext.S +--- glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/aarch64/setcontext.S ++++ glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/aarch64/setcontext.S @@ -1,6 +1,6 @@ /* Set current context. @@ -206,10 +206,10 @@ index a98f67f..f45a655 100644 -END(__startcontext) +1: b HIDDEN_JUMPTARGET (_exit) +END (__startcontext) -diff --git a/ports/sysdeps/unix/sysv/linux/aarch64/ucontext_i.sym b/ports/sysdeps/unix/sysv/linux/aarch64/ucontext_i.sym +diff --git glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/aarch64/ucontext_i.sym glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/aarch64/ucontext_i.sym index 1afff78..ab3930c 100644 ---- a/ports/sysdeps/unix/sysv/linux/aarch64/ucontext_i.sym -+++ b/ports/sysdeps/unix/sysv/linux/aarch64/ucontext_i.sym +--- glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/aarch64/ucontext_i.sym ++++ glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/aarch64/ucontext_i.sym @@ -37,6 +37,7 @@ STACK_FLAGS stack (ss_flags) oX0 mcontext (regs) oSP mcontext (sp) diff --git a/SOURCES/glibc-aarch64-add-ptr_mangle-support.patch b/SOURCES/glibc-aarch64-add-ptr_mangle-support.patch index a7d5497..dbdc551 100644 --- a/SOURCES/glibc-aarch64-add-ptr_mangle-support.patch +++ b/SOURCES/glibc-aarch64-add-ptr_mangle-support.patch @@ -4,10 +4,10 @@ Date: Wed Jan 1 17:47:14 2014 +0000 [AArch64] Pointer mangling support for AArch64. -diff --git a/ports/sysdeps/aarch64/__longjmp.S b/ports/sysdeps/aarch64/__longjmp.S +diff --git glibc-2.17-c758a686/ports/sysdeps/aarch64/__longjmp.S glibc-2.17-c758a686/ports/sysdeps/aarch64/__longjmp.S index 250f2af..2d38bbf 100644 ---- a/ports/sysdeps/aarch64/__longjmp.S -+++ b/ports/sysdeps/aarch64/__longjmp.S +--- glibc-2.17-c758a686/ports/sysdeps/aarch64/__longjmp.S ++++ glibc-2.17-c758a686/ports/sysdeps/aarch64/__longjmp.S @@ -50,8 +50,12 @@ ENTRY (__longjmp) ldp x23, x24, [x0, #JB_X23<<3] ldp x25, x26, [x0, #JB_X25<<3] @@ -37,10 +37,10 @@ index 250f2af..2d38bbf 100644 mov sp, x5 cmp x1, #0 mov x0, #1 -diff --git a/ports/sysdeps/aarch64/jmpbuf-offsets.h b/ports/sysdeps/aarch64/jmpbuf-offsets.h +diff --git glibc-2.17-c758a686/ports/sysdeps/aarch64/jmpbuf-offsets.h glibc-2.17-c758a686/ports/sysdeps/aarch64/jmpbuf-offsets.h index 84c2ccc..bcf2afa 100644 ---- a/ports/sysdeps/aarch64/jmpbuf-offsets.h -+++ b/ports/sysdeps/aarch64/jmpbuf-offsets.h +--- glibc-2.17-c758a686/ports/sysdeps/aarch64/jmpbuf-offsets.h ++++ glibc-2.17-c758a686/ports/sysdeps/aarch64/jmpbuf-offsets.h @@ -39,6 +39,22 @@ #define JB_D14 20 #define JB_D15 21 @@ -65,10 +65,10 @@ index 84c2ccc..bcf2afa 100644 #define JB_FRAME_ADDRESS(buf) \ - ((void *) (buf[JB_SP])) + ((void *) _jmpbuf_sp (buf)) -diff --git a/ports/sysdeps/aarch64/jmpbuf-unwind.h b/ports/sysdeps/aarch64/jmpbuf-unwind.h +diff --git glibc-2.17-c758a686/ports/sysdeps/aarch64/jmpbuf-unwind.h glibc-2.17-c758a686/ports/sysdeps/aarch64/jmpbuf-unwind.h index 22c6c2b..39a5dc2 100644 ---- a/ports/sysdeps/aarch64/jmpbuf-unwind.h -+++ b/ports/sysdeps/aarch64/jmpbuf-unwind.h +--- glibc-2.17-c758a686/ports/sysdeps/aarch64/jmpbuf-unwind.h ++++ glibc-2.17-c758a686/ports/sysdeps/aarch64/jmpbuf-unwind.h @@ -29,16 +29,6 @@ #define _JMPBUF_CFA_UNWINDS_ADJ(jmpbuf, context, adj) \ _JMPBUF_UNWINDS_ADJ (jmpbuf, (void *) _Unwind_GetCFA (context), adj) @@ -86,10 +86,10 @@ index 22c6c2b..39a5dc2 100644 #define _JMPBUF_UNWINDS_ADJ(_jmpbuf, _address, _adj) \ ((uintptr_t) (_address) - (_adj) < _jmpbuf_sp (_jmpbuf) - (_adj)) -diff --git a/ports/sysdeps/aarch64/setjmp.S b/ports/sysdeps/aarch64/setjmp.S +diff --git glibc-2.17-c758a686/ports/sysdeps/aarch64/setjmp.S glibc-2.17-c758a686/ports/sysdeps/aarch64/setjmp.S index cb94e01..5822abd 100644 ---- a/ports/sysdeps/aarch64/setjmp.S -+++ b/ports/sysdeps/aarch64/setjmp.S +--- glibc-2.17-c758a686/ports/sysdeps/aarch64/setjmp.S ++++ glibc-2.17-c758a686/ports/sysdeps/aarch64/setjmp.S @@ -39,13 +39,25 @@ ENTRY (__sigsetjmp) stp x23, x24, [x0, #JB_X23<<3] stp x25, x26, [x0, #JB_X25<<3] @@ -116,10 +116,10 @@ index cb94e01..5822abd 100644 #if defined NOT_IN_libc && defined IS_IN_rtld /* In ld.so we never save the signal mask */ mov w0, #0 -diff --git a/ports/sysdeps/aarch64/sysdep.h b/ports/sysdeps/aarch64/sysdep.h +diff --git glibc-2.17-c758a686/ports/sysdeps/aarch64/sysdep.h glibc-2.17-c758a686/ports/sysdeps/aarch64/sysdep.h index 0dd597a..7169ba7 100644 ---- a/ports/sysdeps/aarch64/sysdep.h -+++ b/ports/sysdeps/aarch64/sysdep.h +--- glibc-2.17-c758a686/ports/sysdeps/aarch64/sysdep.h ++++ glibc-2.17-c758a686/ports/sysdeps/aarch64/sysdep.h @@ -78,6 +78,17 @@ # define L(name) .L##name #endif @@ -138,10 +138,10 @@ index 0dd597a..7169ba7 100644 /* Since C identifiers are not normally prefixed with an underscore on this system, the asm identifier `syscall_error' intrudes on the C name space. Make sure we use an innocuous name. */ -diff --git a/ports/sysdeps/unix/sysv/linux/aarch64/sysdep.h b/ports/sysdeps/unix/sysv/linux/aarch64/sysdep.h +diff --git glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/aarch64/sysdep.h glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/aarch64/sysdep.h index f3f0ada..5ccf1da 100644 ---- a/ports/sysdeps/unix/sysv/linux/aarch64/sysdep.h -+++ b/ports/sysdeps/unix/sysv/linux/aarch64/sysdep.h +--- glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/aarch64/sysdep.h ++++ glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/aarch64/sysdep.h @@ -371,8 +371,44 @@ __local_syscall_error: \ #endif /* __ASSEMBLER__ */ @@ -201,10 +201,10 @@ Date: Mon Sep 23 01:44:38 2013 -0400 Provide the right definition depending on the test case we are building. -hiff --git a/elf/Makefile b/elf/Makefile +diff --git glibc-2.17-c758a686/elf/Makefile glibc-2.17-c758a686/elf/Makefile index cb8da93..27d249b 100644 ---- a/elf/Makefile -+++ b/elf/Makefile +--- glibc-2.17-c758a686/elf/Makefile ++++ glibc-2.17-c758a686/elf/Makefile @@ -1019,6 +1019,9 @@ tst-stackguard1-ARGS = --command "$(host-test-program-cmd) --child" tst-stackguard1-static-ARGS = --command "$(objpfx)tst-stackguard1-static --child" @@ -215,10 +215,10 @@ index cb8da93..27d249b 100644 tst-ptrguard1-static-ARGS = --command "$(objpfx)tst-ptrguard1-static --child" $(objpfx)tst-leaks1: $(libdl) -diff --git a/sysdeps/generic/stackguard-macros.h b/sysdeps/generic/stackguard-macros.h +diff --git glibc-2.17-c758a686/sysdeps/generic/stackguard-macros.h glibc-2.17-c758a686/sysdeps/generic/stackguard-macros.h index 4fa3d96..b4a6b23 100644 ---- a/sysdeps/generic/stackguard-macros.h -+++ b/sysdeps/generic/stackguard-macros.h +--- glibc-2.17-c758a686/sysdeps/generic/stackguard-macros.h ++++ glibc-2.17-c758a686/sysdeps/generic/stackguard-macros.h @@ -3,5 +3,10 @@ extern uintptr_t __stack_chk_guard; #define STACK_CHK_GUARD __stack_chk_guard diff --git a/SOURCES/glibc-aarch64-dont-alloc-static-tls-for-TLS_DESC.patch b/SOURCES/glibc-aarch64-dont-alloc-static-tls-for-TLS_DESC.patch deleted file mode 100644 index 314249f..0000000 --- a/SOURCES/glibc-aarch64-dont-alloc-static-tls-for-TLS_DESC.patch +++ /dev/null @@ -1,33 +0,0 @@ -diff --git a/sysdeps/aarch64/dl-machine.h b/sysdeps/aarch64/dl-machine.h -index 997c860..44154c0 100644 ---- a/ports/sysdeps/aarch64/dl-machine.h -+++ b/ports/sysdeps/aarch64/dl-machine.h -@@ -294,21 +294,25 @@ elf_machine_rela (struct link_map *map, const ElfW(Rela) *reloc, - #ifndef RTLD_BOOTSTRAP - # ifndef SHARED - CHECK_STATIC_TLS (map, sym_map); -+ { -+ td->arg = (void*)(sym->st_value + sym_map->l_tls_offset -+ + reloc->r_addend); -+ td->entry = _dl_tlsdesc_return; -+ } - # else -- if (!TRY_STATIC_TLS (map, sym_map)) - { - td->arg = _dl_make_tlsdesc_dynamic - (sym_map, sym->st_value + reloc->r_addend); - td->entry = _dl_tlsdesc_dynamic; - } -- else - # endif --#endif -+#else - { - td->arg = (void*)(sym->st_value + sym_map->l_tls_offset - + reloc->r_addend); - td->entry = _dl_tlsdesc_return; - } -+#endif - } - break; - } diff --git a/SOURCES/glibc-aarch64-fpu-optional-trapping-exceptions.patch b/SOURCES/glibc-aarch64-fpu-optional-trapping-exceptions.patch index bb4ede0..0afa504 100644 --- a/SOURCES/glibc-aarch64-fpu-optional-trapping-exceptions.patch +++ b/SOURCES/glibc-aarch64-fpu-optional-trapping-exceptions.patch @@ -9,8 +9,8 @@ Date: Fri Mar 7 14:05:20 2014 +0000 support can be detected by reading back the FPCR and comparing with the desired value. ---- a/ports/sysdeps/aarch64/fpu/feenablxcpt.c -+++ b/ports/sysdeps/aarch64/fpu/feenablxcpt.c +--- glibc-2.17-c758a686/ports/sysdeps/aarch64/fpu/feenablxcpt.c ++++ glibc-2.17-c758a686/ports/sysdeps/aarch64/fpu/feenablxcpt.c @@ -35,5 +35,18 @@ feenableexcept (int excepts) _FPU_SETCW (fpcr); @@ -30,8 +30,8 @@ Date: Fri Mar 7 14:05:20 2014 +0000 + return original_excepts; } ---- a/ports/sysdeps/aarch64/fpu/fesetenv.c -+++ b/ports/sysdeps/aarch64/fpu/fesetenv.c +--- glibc-2.17-c758a686/ports/sysdeps/aarch64/fpu/fesetenv.c ++++ glibc-2.17-c758a686/ports/sysdeps/aarch64/fpu/fesetenv.c @@ -24,6 +24,7 @@ fesetenv (const fenv_t *envp) { fpu_control_t fpcr; @@ -64,8 +64,8 @@ Date: Thu Apr 17 09:39:27 2014 +0100 (removed unnecessary code to limit it to test-fenv.c --kyle) ---- a/math/test-fenv.c -+++ b/math/test-fenv.c +--- glibc-2.17-c758a686/math/test-fenv.c ++++ glibc-2.17-c758a686/math/test-fenv.c @@ -233,14 +234,9 @@ feenv_nomask_test (const char *flag_name, int fe_exc) #if defined FE_NOMASK_ENV int status; diff --git a/SOURCES/glibc-aarch64-ifunc.patch b/SOURCES/glibc-aarch64-ifunc.patch index bd6425e..7ee9f1f 100644 --- a/SOURCES/glibc-aarch64-ifunc.patch +++ b/SOURCES/glibc-aarch64-ifunc.patch @@ -1,7 +1,7 @@ -diff --git a/elf/elf.h b/elf/elf.h +diff --git glibc-2.17-c758a686/elf/elf.h glibc-2.17-c758a686/elf/elf.h index 8686fd5..2b10581 100644 ---- a/elf/elf.h -+++ b/elf/elf.h +--- glibc-2.17-c758a686/elf/elf.h ++++ glibc-2.17-c758a686/elf/elf.h @@ -2327,6 +2327,117 @@ typedef Elf32_Addr Elf32_Conflict; #define R_AARCH64_NONE 0 /* No relocation. */ #define R_AARCH64_ABS64 257 /* Direct 64 bit. */ @@ -128,10 +128,10 @@ index 8686fd5..2b10581 100644 /* ARM relocs. */ -diff --git a/ports/sysdeps/aarch64/dl-irel.h b/ports/sysdeps/aarch64/dl-irel.h +diff --git glibc-2.17-c758a686/ports/sysdeps/aarch64/dl-irel.h glibc-2.17-c758a686/ports/sysdeps/aarch64/dl-irel.h index 32dee0f..9a48dc2 100644 ---- a/ports/sysdeps/aarch64/dl-irel.h -+++ b/ports/sysdeps/aarch64/dl-irel.h +--- glibc-2.17-c758a686/ports/sysdeps/aarch64/dl-irel.h ++++ glibc-2.17-c758a686/ports/sysdeps/aarch64/dl-irel.h @@ -1,6 +1,6 @@ /* Machine-dependent ELF indirect relocation inline functions. AArch64 version. @@ -175,10 +175,10 @@ index 32dee0f..9a48dc2 100644 } #endif -diff --git a/ports/sysdeps/aarch64/dl-machine.h b/ports/sysdeps/aarch64/dl-machine.h +diff --git glibc-2.17-c758a686/ports/sysdeps/aarch64/dl-machine.h glibc-2.17-c758a686/ports/sysdeps/aarch64/dl-machine.h index b1878a7..1db5a5b 100644 ---- a/ports/sysdeps/aarch64/dl-machine.h -+++ b/ports/sysdeps/aarch64/dl-machine.h +--- glibc-2.17-c758a686/ports/sysdeps/aarch64/dl-machine.h ++++ glibc-2.17-c758a686/ports/sysdeps/aarch64/dl-machine.h @@ -23,6 +23,7 @@ #include diff --git a/SOURCES/glibc-aarch64-rh1076760.patch b/SOURCES/glibc-aarch64-rh1076760.patch index d860868..801bfd6 100644 --- a/SOURCES/glibc-aarch64-rh1076760.patch +++ b/SOURCES/glibc-aarch64-rh1076760.patch @@ -1,5 +1,5 @@ ---- a/ports/sysdeps/aarch64/nptl/tls.h -+++ b/ports/sysdeps/aarch64/nptl/tls.h +--- glibc-2.17-c758a686/ports/sysdeps/aarch64/nptl/tls.h ++++ glibc-2.17-c758a686/ports/sysdeps/aarch64/nptl/tls.h @@ -63,7 +63,7 @@ typedef struct # define TLS_INIT_TCB_SIZE sizeof (tcbhead_t) diff --git a/SOURCES/glibc-aarch64-syscall-rewrite.patch b/SOURCES/glibc-aarch64-syscall-rewrite.patch index 2833e2d..ad4ab32 100644 --- a/SOURCES/glibc-aarch64-syscall-rewrite.patch +++ b/SOURCES/glibc-aarch64-syscall-rewrite.patch @@ -28,10 +28,10 @@ And a not-yet-committed cleanup to clone.S. ports/sysdeps/unix/sysv/linux/aarch64/vfork.S | 4 +- 7 files changed, 108 insertions(+), 238 deletions(-) -diff --git a/ports/sysdeps/unix/sysv/linux/aarch64/clone.S b/ports/sysdeps/unix/sysv/linux/aarch64/clone.S +diff --git glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/aarch64/clone.S glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/aarch64/clone.S index 8be1464..d5c31f3 100644 ---- a/ports/sysdeps/unix/sysv/linux/aarch64/clone.S -+++ b/ports/sysdeps/unix/sysv/linux/aarch64/clone.S +--- glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/aarch64/clone.S ++++ glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/aarch64/clone.S @@ -39,46 +39,43 @@ */ .text @@ -121,10 +121,10 @@ index 8be1464..d5c31f3 100644 + .size thread_start, .-thread_start weak_alias (__clone, clone) -diff --git a/ports/sysdeps/unix/sysv/linux/aarch64/ioctl.S b/ports/sysdeps/unix/sysv/linux/aarch64/ioctl.S +diff --git glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/aarch64/ioctl.S glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/aarch64/ioctl.S index f01fb84..be6c026 100644 ---- a/ports/sysdeps/unix/sysv/linux/aarch64/ioctl.S -+++ b/ports/sysdeps/unix/sysv/linux/aarch64/ioctl.S +--- glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/aarch64/ioctl.S ++++ glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/aarch64/ioctl.S @@ -20,13 +20,12 @@ .text @@ -145,19 +145,19 @@ index f01fb84..be6c026 100644 +PSEUDO_END (__ioctl) weak_alias (__ioctl, ioctl) -diff --git a/ports/sysdeps/unix/sysv/linux/aarch64/nptl/localplt.data b/ports/sysdeps/unix/sysv/linux/aarch64/nptl/localplt.data +diff --git glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/aarch64/nptl/localplt.data glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/aarch64/nptl/localplt.data index 84af95d..dfca9a7 100644 ---- a/ports/sysdeps/unix/sysv/linux/aarch64/nptl/localplt.data -+++ b/ports/sysdeps/unix/sysv/linux/aarch64/nptl/localplt.data +--- glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/aarch64/nptl/localplt.data ++++ glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/aarch64/nptl/localplt.data @@ -12,4 +12,3 @@ libm.so: matherr libm.so: __signbit libm.so: __signbitf libm.so: __signbitl -libpthread.so: __errno_location -diff --git a/ports/sysdeps/unix/sysv/linux/aarch64/nptl/sysdep-cancel.h b/ports/sysdeps/unix/sysv/linux/aarch64/nptl/sysdep-cancel.h +diff --git glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/aarch64/nptl/sysdep-cancel.h glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/aarch64/nptl/sysdep-cancel.h index e0e5cc0..a3b9284 100644 ---- a/ports/sysdeps/unix/sysv/linux/aarch64/nptl/sysdep-cancel.h -+++ b/ports/sysdeps/unix/sysv/linux/aarch64/nptl/sysdep-cancel.h +--- glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/aarch64/nptl/sysdep-cancel.h ++++ glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/aarch64/nptl/sysdep-cancel.h @@ -26,119 +26,60 @@ # undef PSEUDO @@ -370,10 +370,10 @@ index e0e5cc0..a3b9284 100644 # endif # endif -diff --git a/ports/sysdeps/unix/sysv/linux/aarch64/syscall.S b/ports/sysdeps/unix/sysv/linux/aarch64/syscall.S +diff --git glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/aarch64/syscall.S glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/aarch64/syscall.S index 574fdf1..fac6416 100644 ---- a/ports/sysdeps/unix/sysv/linux/aarch64/syscall.S -+++ b/ports/sysdeps/unix/sysv/linux/aarch64/syscall.S +--- glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/aarch64/syscall.S ++++ glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/aarch64/syscall.S @@ -37,8 +37,6 @@ ENTRY (syscall) mov x6, x7 svc 0x0 @@ -384,10 +384,10 @@ index 574fdf1..fac6416 100644 -1: - b SYSCALL_ERROR PSEUDO_END (syscall) -diff --git a/ports/sysdeps/unix/sysv/linux/aarch64/sysdep.h b/ports/sysdeps/unix/sysv/linux/aarch64/sysdep.h +diff --git glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/aarch64/sysdep.h glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/aarch64/sysdep.h index 713bf7d..9961c03 100644 ---- a/ports/sysdeps/unix/sysv/linux/aarch64/sysdep.h -+++ b/ports/sysdeps/unix/sysv/linux/aarch64/sysdep.h +--- glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/aarch64/sysdep.h ++++ glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/aarch64/sysdep.h @@ -58,19 +58,8 @@ .text; \ ENTRY (name); \ @@ -519,10 +519,10 @@ index 713bf7d..9961c03 100644 #else /* not __ASSEMBLER__ */ -diff --git a/ports/sysdeps/unix/sysv/linux/aarch64/vfork.S b/ports/sysdeps/unix/sysv/linux/aarch64/vfork.S +diff --git glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/aarch64/vfork.S glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/aarch64/vfork.S index f2dc49b..3fb68b9 100644 ---- a/ports/sysdeps/unix/sysv/linux/aarch64/vfork.S -+++ b/ports/sysdeps/unix/sysv/linux/aarch64/vfork.S +--- glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/aarch64/vfork.S ++++ glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/aarch64/vfork.S @@ -38,10 +38,8 @@ ENTRY (__vfork) RESTORE_PID #endif diff --git a/SOURCES/glibc-arm-hardfloat-3.patch b/SOURCES/glibc-arm-hardfloat-3.patch index ff4997e..43fe9be 100644 --- a/SOURCES/glibc-arm-hardfloat-3.patch +++ b/SOURCES/glibc-arm-hardfloat-3.patch @@ -1,6 +1,6 @@ -diff -Nrup a/elf/dl-load.c b/elf/dl-load.c ---- a/elf/dl-load.c 2012-06-06 13:07:41.727524312 -0600 -+++ b/elf/dl-load.c 2012-06-06 13:11:19.308681002 -0600 +diff -Nru glibc-2.17-c758a686/elf/dl-load.c glibc-2.17-c758a686/elf/dl-load.c +--- glibc-2.17-c758a686/elf/dl-load.c 2012-06-06 13:07:41.727524312 -0600 ++++ glibc-2.17-c758a686/elf/dl-load.c 2012-06-06 13:11:19.308681002 -0600 @@ -2093,10 +2093,14 @@ _dl_map_object (struct link_map *loader, soname = ((const char *) D_PTR (l, l_info[DT_STRTAB]) + l->l_info[DT_SONAME]->d_un.d_val); diff --git a/SOURCES/glibc-cs-path.patch b/SOURCES/glibc-cs-path.patch index 982f8ff..c94a49a 100644 --- a/SOURCES/glibc-cs-path.patch +++ b/SOURCES/glibc-cs-path.patch @@ -1,6 +1,6 @@ -diff -pruN a/sysdeps/unix/confstr.h b/sysdeps/unix/confstr.h ---- a/sysdeps/unix/confstr.h 2012-12-25 08:32:13.000000000 +0530 -+++ b/sysdeps/unix/confstr.h 2014-09-05 20:02:55.698275219 +0530 +diff -pruN glibc-2.17-c758a686/sysdeps/unix/confstr.h glibc-2.17-c758a686/sysdeps/unix/confstr.h +--- glibc-2.17-c758a686/sysdeps/unix/confstr.h 2012-12-25 08:32:13.000000000 +0530 ++++ glibc-2.17-c758a686/sysdeps/unix/confstr.h 2014-09-05 20:02:55.698275219 +0530 @@ -1 +1 @@ -#define CS_PATH "/bin:/usr/bin" +#define CS_PATH "/usr/bin" diff --git a/SOURCES/glibc-fedora-__libc_multiple_libcs.patch b/SOURCES/glibc-fedora-__libc_multiple_libcs.patch index d15920a..54c6d42 100644 --- a/SOURCES/glibc-fedora-__libc_multiple_libcs.patch +++ b/SOURCES/glibc-fedora-__libc_multiple_libcs.patch @@ -15,8 +15,8 @@ Subject: [PATCH] Properly set __libc_multiple_libcs elf/rtld.c | 4 ---- 4 files changed, 7 insertions(+), 10 deletions(-) ---- a/elf/dl-init.c -+++ b/elf/dl-init.c +--- glibc-2.17-c758a686/elf/dl-init.c ++++ glibc-2.17-c758a686/elf/dl-init.c @@ -23,11 +23,9 @@ /* Type of the initializer. */ typedef void (*init_t) (int, char **, char **); @@ -39,8 +39,8 @@ Subject: [PATCH] Properly set __libc_multiple_libcs -#endif } INTDEF (_dl_init) ---- a/elf/dl-support.c -+++ b/elf/dl-support.c +--- glibc-2.17-c758a686/elf/dl-support.c ++++ glibc-2.17-c758a686/elf/dl-support.c @@ -81,10 +81,8 @@ unsigned long long _dl_load_adds; create a fake scope containing nothing. */ struct r_scope_elem _dl_initial_searchlist; @@ -52,8 +52,8 @@ Subject: [PATCH] Properly set __libc_multiple_libcs /* Random data provided by the kernel. */ void *_dl_random; ---- a/elf/rtld.c -+++ b/elf/rtld.c +--- glibc-2.17-c758a686/elf/rtld.c ++++ glibc-2.17-c758a686/elf/rtld.c @@ -106,7 +106,6 @@ static struct audit_list struct audit_list *next; } *audit_list; diff --git a/SOURCES/glibc-fedora-elf-ORIGIN.patch b/SOURCES/glibc-fedora-elf-ORIGIN.patch index bfaff83..581f2cf 100644 --- a/SOURCES/glibc-fedora-elf-ORIGIN.patch +++ b/SOURCES/glibc-fedora-elf-ORIGIN.patch @@ -13,10 +13,10 @@ path element is skipped. elf/dl-load.c | 34 ++++++++++++++++------------------ 2 files changed, 23 insertions(+), 18 deletions(-) -diff --git a/elf/dl-load.c b/elf/dl-load.c +diff --git glibc-2.17-c758a686/elf/dl-load.c glibc-2.17-c758a686/elf/dl-load.c index 18a83d2..6e16a9a 100644 ---- a/elf/dl-load.c -+++ b/elf/dl-load.c +--- glibc-2.17-c758a686/elf/dl-load.c ++++ glibc-2.17-c758a686/elf/dl-load.c @@ -249,8 +249,7 @@ is_trusted_path_normalize (const char *path, size_t len) diff --git a/SOURCES/glibc-fedora-elf-init-hidden_undef.patch b/SOURCES/glibc-fedora-elf-init-hidden_undef.patch index cd50d3b..df667ec 100644 --- a/SOURCES/glibc-fedora-elf-init-hidden_undef.patch +++ b/SOURCES/glibc-fedora-elf-init-hidden_undef.patch @@ -1,9 +1,9 @@ * Fri May 29 2003 Jakub Jelinek 2.3.2-44 - make __init_array_start etc. symbols in elf-init.oS hidden undefined -diff -Nrup a/csu/elf-init.c b/csu/elf-init.c ---- a/csu/elf-init.c 2012-06-05 07:42:49.000000000 -0600 -+++ b/csu/elf-init.c 2012-06-07 12:15:21.570319597 -0600 +diff -Nru glibc-2.17-c758a686/csu/elf-init.c glibc-2.17-c758a686/csu/elf-init.c +--- glibc-2.17-c758a686/csu/elf-init.c 2012-06-05 07:42:49.000000000 -0600 ++++ glibc-2.17-c758a686/csu/elf-init.c 2012-06-07 12:15:21.570319597 -0600 @@ -63,6 +63,23 @@ extern void (*__init_array_end []) (int, extern void (*__fini_array_start []) (void) attribute_hidden; extern void (*__fini_array_end []) (void) attribute_hidden; diff --git a/SOURCES/glibc-fedora-elf-rh737223.patch b/SOURCES/glibc-fedora-elf-rh737223.patch index 5ae6e3a..376f687 100644 --- a/SOURCES/glibc-fedora-elf-rh737223.patch +++ b/SOURCES/glibc-fedora-elf-rh737223.patch @@ -1,7 +1,7 @@ -Binary files a/elf/.rtld.c.rej.swp and b/elf/.rtld.c.rej.swp differ -diff -Nrup a/elf/setup-vdso.h b/elf/setup-vdso.h ---- a/elf/setup-vdso.h 2012-10-10 21:34:38.000000000 -0600 -+++ b/elf/setup-vdso.h 2012-10-11 09:43:14.152958832 -0600 +Binary filesglibc-2.17-c758a686/elf/.rtld.c.rej.swp andglibc-2.17-c758a686/elf/.rtld.c.rej.swp differ +diff -Nru glibc-2.17-c758a686/elf/setup-vdso.h glibc-2.17-c758a686/elf/setup-vdso.h +--- glibc-2.17-c758a686/elf/setup-vdso.h 2012-10-10 21:34:38.000000000 -0600 ++++ glibc-2.17-c758a686/elf/setup-vdso.h 2012-10-11 09:43:14.152958832 -0600 @@ -93,7 +93,9 @@ setup_vdso (struct link_map *main_map __ char *copy = malloc (len); if (copy == NULL) diff --git a/SOURCES/glibc-fedora-gai-canonical.patch b/SOURCES/glibc-fedora-gai-canonical.patch index c058ecf..e268e72 100644 --- a/SOURCES/glibc-fedora-gai-canonical.patch +++ b/SOURCES/glibc-fedora-gai-canonical.patch @@ -11,8 +11,8 @@ to determine canonical name. sysdeps/posix/getaddrinfo.c | 77 +++---------------------------------------- 2 files changed, 10 insertions(+), 72 deletions(-) ---- a/sysdeps/posix/getaddrinfo.c -+++ b/sysdeps/posix/getaddrinfo.c +--- glibc-2.17-c758a686/sysdeps/posix/getaddrinfo.c ++++ glibc-2.17-c758a686/sysdeps/posix/getaddrinfo.c @@ -565,8 +565,8 @@ gaih_inet (const char *name, const struct gaih_service *service, /* If we do not have to look for IPv6 addresses, use diff --git a/SOURCES/glibc-fedora-getrlimit-PLT.patch b/SOURCES/glibc-fedora-getrlimit-PLT.patch index bd77bb3..760d8c0 100644 --- a/SOURCES/glibc-fedora-getrlimit-PLT.patch +++ b/SOURCES/glibc-fedora-getrlimit-PLT.patch @@ -16,8 +16,8 @@ Subject: [PATCH] Fix PLT reference sysdeps/unix/sysv/linux/i386/getrlimit.c | 1 + 5 files changed, 11 insertions(+), 0 deletions(-) ---- a/include/sys/resource.h -+++ b/include/sys/resource.h +--- glibc-2.17-c758a686/include/sys/resource.h ++++ glibc-2.17-c758a686/include/sys/resource.h @@ -14,5 +14,6 @@ extern int __getrusage (enum __rusage_who __who, struct rusage *__usage) extern int __setrlimit (enum __rlimit_resource __resource, @@ -25,8 +25,8 @@ Subject: [PATCH] Fix PLT reference +libc_hidden_proto (__getrlimit) #endif #endif ---- a/resource/getrlimit.c -+++ b/resource/getrlimit.c +--- glibc-2.17-c758a686/resource/getrlimit.c ++++ glibc-2.17-c758a686/resource/getrlimit.c @@ -27,6 +27,7 @@ __getrlimit (enum __rlimit_resource resource, struct rlimit *rlimits) __set_errno (ENOSYS); return -1; @@ -35,8 +35,8 @@ Subject: [PATCH] Fix PLT reference weak_alias (__getrlimit, getrlimit) stub_warning (getrlimit) ---- a/sysdeps/mach/hurd/getrlimit.c -+++ b/sysdeps/mach/hurd/getrlimit.c +--- glibc-2.17-c758a686/sysdeps/mach/hurd/getrlimit.c ++++ glibc-2.17-c758a686/sysdeps/mach/hurd/getrlimit.c @@ -43,4 +43,5 @@ __getrlimit (enum __rlimit_resource resource, struct rlimit *rlimits) return 0; diff --git a/SOURCES/glibc-fedora-i386-tls-direct-seg-refs.patch b/SOURCES/glibc-fedora-i386-tls-direct-seg-refs.patch index 80c0f0d..451ebf9 100644 --- a/SOURCES/glibc-fedora-i386-tls-direct-seg-refs.patch +++ b/SOURCES/glibc-fedora-i386-tls-direct-seg-refs.patch @@ -1,6 +1,6 @@ -diff -Nrup a/sysdeps/i386/Makefile b/sysdeps/i386/Makefile ---- a/sysdeps/i386/Makefile 2012-06-05 07:42:49.000000000 -0600 -+++ b/sysdeps/i386/Makefile 2012-06-07 12:15:21.826318641 -0600 +diff -Nru glibc-2.17-c758a686/sysdeps/i386/Makefile glibc-2.17-c758a686/sysdeps/i386/Makefile +--- glibc-2.17-c758a686/sysdeps/i386/Makefile 2012-06-05 07:42:49.000000000 -0600 ++++ glibc-2.17-c758a686/sysdeps/i386/Makefile 2012-06-07 12:15:21.826318641 -0600 @@ -62,6 +64,14 @@ endif ifneq (,$(filter -mno-tls-direct-seg-refs,$(CFLAGS))) diff --git a/SOURCES/glibc-fedora-include-bits-ldbl.patch b/SOURCES/glibc-fedora-include-bits-ldbl.patch index 1e5d763..63e6a14 100644 --- a/SOURCES/glibc-fedora-include-bits-ldbl.patch +++ b/SOURCES/glibc-fedora-include-bits-ldbl.patch @@ -14,17 +14,17 @@ Subject: [PATCH] 128-bit long double fixes create mode 100644 include/bits/stdlib-ldbl.h create mode 100644 include/bits/wchar-ldbl.h -diff --git a/include/bits/stdlib-ldbl.h b/include/bits/stdlib-ldbl.h +diff --git glibc-2.17-c758a686/include/bits/stdlib-ldbl.h glibc-2.17-c758a686/include/bits/stdlib-ldbl.h new file mode 100644 index 0000000..6250949 --- /dev/null -+++ b/include/bits/stdlib-ldbl.h ++++ glibc-2.17-c758a686/include/bits/stdlib-ldbl.h @@ -0,0 +1 @@ +#include -diff --git a/include/bits/wchar-ldbl.h b/include/bits/wchar-ldbl.h +diff --git glibc-2.17-c758a686/include/bits/wchar-ldbl.h glibc-2.17-c758a686/include/bits/wchar-ldbl.h new file mode 100644 index 0000000..29baa2f --- /dev/null -+++ b/include/bits/wchar-ldbl.h ++++ glibc-2.17-c758a686/include/bits/wchar-ldbl.h @@ -0,0 +1 @@ +#include diff --git a/SOURCES/glibc-fedora-ldd.patch b/SOURCES/glibc-fedora-ldd.patch index 51aec73..fb3ff29 100644 --- a/SOURCES/glibc-fedora-ldd.patch +++ b/SOURCES/glibc-fedora-ldd.patch @@ -10,8 +10,8 @@ Subject: [PATCH] ldd: never run file directly elf/ldd.bash.in | 14 +------------- 2 files changed, 5 insertions(+), 13 deletions(-) ---- a/elf/ldd.bash.in -+++ b/elf/ldd.bash.in +--- glibc-2.17-c758a686/elf/ldd.bash.in ++++ glibc-2.17-c758a686/elf/ldd.bash.in @@ -166,18 +166,6 @@ warning: you do not have execution permission for" "\`$file'" >&2 fi done diff --git a/SOURCES/glibc-fedora-linux-tcsetattr.patch b/SOURCES/glibc-fedora-linux-tcsetattr.patch index 066ac48..e47d5ec 100644 --- a/SOURCES/glibc-fedora-linux-tcsetattr.patch +++ b/SOURCES/glibc-fedora-linux-tcsetattr.patch @@ -1,6 +1,6 @@ -diff -Nrup a/sysdeps/unix/sysv/linux/tcsetattr.c b/sysdeps/unix/sysv/linux/tcsetattr.c ---- a/sysdeps/unix/sysv/linux/tcsetattr.c 2012-06-05 07:42:49.000000000 -0600 -+++ b/sysdeps/unix/sysv/linux/tcsetattr.c 2012-06-07 12:15:21.831318623 -0600 +diff -Nru glibc-2.17-c758a686/sysdeps/unix/sysv/linux/tcsetattr.c glibc-2.17-c758a686/sysdeps/unix/sysv/linux/tcsetattr.c +--- glibc-2.17-c758a686/sysdeps/unix/sysv/linux/tcsetattr.c 2012-06-05 07:42:49.000000000 -0600 ++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/tcsetattr.c 2012-06-07 12:15:21.831318623 -0600 @@ -48,6 +48,7 @@ tcsetattr (fd, optional_actions, termios { struct __kernel_termios k_termios; diff --git a/SOURCES/glibc-fedora-localedata-rh61908.patch b/SOURCES/glibc-fedora-localedata-rh61908.patch index c8fee0f..0cdd09f 100644 --- a/SOURCES/glibc-fedora-localedata-rh61908.patch +++ b/SOURCES/glibc-fedora-localedata-rh61908.patch @@ -1,9 +1,9 @@ * Tue Mar 26 2002 Jakub Jelinek 2.2.5-28 - add a couple of .ISO-8859-15 locales (#61908) -diff -Nrup a/localedata/SUPPORTED b/localedata/SUPPORTED ---- a/localedata/SUPPORTED 2012-11-25 12:59:31.000000000 -0700 -+++ b/localedata/SUPPORTED 2012-11-26 12:58:43.298223018 -0700 +diff -Nru glibc-2.17-c758a686/localedata/SUPPORTED glibc-2.17-c758a686/localedata/SUPPORTED +--- glibc-2.17-c758a686/localedata/SUPPORTED 2012-11-25 12:59:31.000000000 -0700 ++++ glibc-2.17-c758a686/localedata/SUPPORTED 2012-11-26 12:58:43.298223018 -0700 @@ -89,6 +89,7 @@ cy_GB.UTF-8/UTF-8 \ cy_GB/ISO-8859-14 \ da_DK.UTF-8/UTF-8 \ diff --git a/SOURCES/glibc-fedora-localedef.patch b/SOURCES/glibc-fedora-localedef.patch index ee1463a..41deb0a 100644 --- a/SOURCES/glibc-fedora-localedef.patch +++ b/SOURCES/glibc-fedora-localedef.patch @@ -1,6 +1,6 @@ -diff -Nrup a/localedata/Makefile b/localedata/Makefile ---- a/localedata/Makefile 2012-06-05 07:42:49.000000000 -0600 -+++ b/localedata/Makefile 2012-06-07 12:15:21.776318827 -0600 +diff -Nru glibc-2.17-c758a686/localedata/Makefile glibc-2.17-c758a686/localedata/Makefile +--- glibc-2.17-c758a686/localedata/Makefile 2012-06-05 07:42:49.000000000 -0600 ++++ glibc-2.17-c758a686/localedata/Makefile 2012-06-07 12:15:21.776318827 -0600 @@ -211,6 +211,7 @@ $(INSTALL-SUPPORTED-LOCALES): install-lo echo -n '...'; \ input=`echo $$locale | sed 's/\([^.]*\)[^@]*\(.*\)/\1\2/'`; \ diff --git a/SOURCES/glibc-fedora-locarchive.patch b/SOURCES/glibc-fedora-locarchive.patch index 9a702af..245850a 100644 --- a/SOURCES/glibc-fedora-locarchive.patch +++ b/SOURCES/glibc-fedora-locarchive.patch @@ -1,9 +1,9 @@ This is a part of commit glibc-2.3.3-1492-ga891c7b, needed for fedora/build-locale-archive.c only. -diff -Nrup a/ChangeLog.17 b/ChangeLog.17 ---- a/ChangeLog.17 2012-06-05 07:42:49.000000000 -0600 -+++ b/ChangeLog.17 2012-06-07 12:15:21.564319619 -0600 +diff -Nru glibc-2.17-c758a686/ChangeLog.17 glibc-2.17-c758a686/ChangeLog.17 +--- glibc-2.17-c758a686/ChangeLog.17 2012-06-05 07:42:49.000000000 -0600 ++++ glibc-2.17-c758a686/ChangeLog.17 2012-06-07 12:15:21.564319619 -0600 @@ -11818,6 +11829,10 @@ d2009-10-30 Ulrich Drepper [BZ #4364] -diff -Nrup a/locale/programs/locarchive.c b/locale/programs/locarchive.c ---- a/locale/programs/locarchive.c 2012-06-05 07:42:49.000000000 -0600 -+++ b/locale/programs/locarchive.c 2012-06-07 12:15:21.585319540 -0600 +diff -Nru glibc-2.17-c758a686/locale/programs/locarchive.c glibc-2.17-c758a686/locale/programs/locarchive.c +--- glibc-2.17-c758a686/locale/programs/locarchive.c 2012-06-05 07:42:49.000000000 -0600 ++++ glibc-2.17-c758a686/locale/programs/locarchive.c 2012-06-07 12:15:21.585319540 -0600 @@ -252,9 +252,9 @@ oldlocrecentcmp (const void *a, const vo /* forward decls for below */ static uint32_t add_locale (struct locarhandle *ah, const char *name, diff --git a/SOURCES/glibc-fedora-manual-dircategory.patch b/SOURCES/glibc-fedora-manual-dircategory.patch index f681620..9dce832 100644 --- a/SOURCES/glibc-fedora-manual-dircategory.patch +++ b/SOURCES/glibc-fedora-manual-dircategory.patch @@ -7,8 +7,8 @@ Subject: [PATCH] Change @dircategory. manual/libc.texinfo | 2 +- 1 files changed, 1 insertions(+), 1 deletions(-) ---- a/manual/libc.texinfo -+++ b/manual/libc.texinfo +--- glibc-2.17-c758a686/manual/libc.texinfo ++++ glibc-2.17-c758a686/manual/libc.texinfo @@ -7,7 +7,7 @@ @include macros.texi diff --git a/SOURCES/glibc-fedora-nis-rh188246.patch b/SOURCES/glibc-fedora-nis-rh188246.patch index 9389901..f266774 100644 --- a/SOURCES/glibc-fedora-nis-rh188246.patch +++ b/SOURCES/glibc-fedora-nis-rh188246.patch @@ -7,9 +7,9 @@ Subject: [PATCH] Enable SETENT_BATCH_READ nis/nss option by default - SETENT_BATCH_READ /etc/default/nss option for speeding up some usages of NIS+ (#188246) -diff --git a/nis/nss b/nis/nss ---- a/nis/nss -+++ b/nis/nss +diff --git glibc-2.17-c758a686/nis/nss glibc-2.17-c758a686/nis/nss +--- glibc-2.17-c758a686/nis/nss ++++ glibc-2.17-c758a686/nis/nss @@ -25,7 +25,7 @@ # memory with every getXXent() call. Otherwise each getXXent() call # might result into a network communication with the server to get diff --git a/SOURCES/glibc-fedora-nptl-linklibc.patch b/SOURCES/glibc-fedora-nptl-linklibc.patch index 350c350..e6866ee 100644 --- a/SOURCES/glibc-fedora-nptl-linklibc.patch +++ b/SOURCES/glibc-fedora-nptl-linklibc.patch @@ -1,6 +1,6 @@ -diff -Nrup a/nptl/Makefile b/nptl/Makefile ---- a/nptl/Makefile 2012-06-05 07:42:49.000000000 -0600 -+++ b/nptl/Makefile 2012-06-07 12:15:21.816318678 -0600 +diff -Nru glibc-2.17-c758a686/nptl/Makefile glibc-2.17-c758a686/nptl/Makefile +--- glibc-2.17-c758a686/nptl/Makefile 2012-06-05 07:42:49.000000000 -0600 ++++ glibc-2.17-c758a686/nptl/Makefile 2012-06-07 12:15:21.816318678 -0600 @@ -529,15 +529,19 @@ $(addprefix $(objpfx), \ $(tests) $(xtests) $(test-srcs))): $(objpfx)libpthread.so \ $(objpfx)libpthread_nonshared.a diff --git a/SOURCES/glibc-fedora-nscd.patch b/SOURCES/glibc-fedora-nscd.patch index a26b928..b236ecc 100644 --- a/SOURCES/glibc-fedora-nscd.patch +++ b/SOURCES/glibc-fedora-nscd.patch @@ -1,6 +1,6 @@ -diff -Nrup a/nscd/nscd.conf b/nscd/nscd.conf ---- a/nscd/nscd.conf 2012-06-05 07:42:49.000000000 -0600 -+++ b/nscd/nscd.conf 2012-06-07 12:15:21.818318670 -0600 +diff -Nru glibc-2.17-c758a686/nscd/nscd.conf glibc-2.17-c758a686/nscd/nscd.conf +--- glibc-2.17-c758a686/nscd/nscd.conf 2012-06-05 07:42:49.000000000 -0600 ++++ glibc-2.17-c758a686/nscd/nscd.conf 2012-06-07 12:15:21.818318670 -0600 @@ -33,7 +33,7 @@ # logfile /var/log/nscd.log # threads 4 diff --git a/SOURCES/glibc-fedora-ppc-unwind.patch b/SOURCES/glibc-fedora-ppc-unwind.patch index 7e9b7ab..1068fd8 100644 --- a/SOURCES/glibc-fedora-ppc-unwind.patch +++ b/SOURCES/glibc-fedora-ppc-unwind.patch @@ -6,9 +6,9 @@ glibc-2.3.3-1478-g37582bc future that could be fixable just by providing .cfi_undefined r2 in __libc_start_main instead) -diff -Nrup a/sysdeps/powerpc/powerpc64/Makefile b/sysdeps/powerpc/powerpc64/Makefile ---- a/sysdeps/powerpc/powerpc64/Makefile 2012-06-05 07:42:49.000000000 -0600 -+++ b/sysdeps/powerpc/powerpc64/Makefile 2012-06-07 12:15:21.828318633 -0600 +diff -Nru glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/Makefile glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/Makefile +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/Makefile 2012-06-05 07:42:49.000000000 -0600 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/Makefile 2012-06-07 12:15:21.828318633 -0600 @@ -35,6 +35,8 @@ CFLAGS-rtld-memmove.os = $(no-special-re CFLAGS-rtld-memchr.os = $(no-special-regs) CFLAGS-rtld-strnlen.os = $(no-special-regs) diff --git a/SOURCES/glibc-fedora-regcomp-sw11561.patch b/SOURCES/glibc-fedora-regcomp-sw11561.patch index 0edc04f..372f9b3 100644 --- a/SOURCES/glibc-fedora-regcomp-sw11561.patch +++ b/SOURCES/glibc-fedora-regcomp-sw11561.patch @@ -12,8 +12,8 @@ elements compare against the byte sequence of it, not its name. posix/regcomp.c | 72 ++++++++++++++++++++---------------------------------- 2 files changed, 31 insertions(+), 45 deletions(-) ---- a/posix/regcomp.c -+++ b/posix/regcomp.c +--- glibc-2.17-c758a686/posix/regcomp.c ++++ glibc-2.17-c758a686/posix/regcomp.c @@ -2772,40 +2772,29 @@ parse_bracket_exp (re_string_t *regexp, re_dfa_t *dfa, re_token_t *token, /* Local function for parse_bracket_exp used in _LIBC environement. diff --git a/SOURCES/glibc-fedora-streams-rh436349.patch b/SOURCES/glibc-fedora-streams-rh436349.patch index 44b9195..6b862db 100644 --- a/SOURCES/glibc-fedora-streams-rh436349.patch +++ b/SOURCES/glibc-fedora-streams-rh436349.patch @@ -3,9 +3,9 @@ This is part of commit glibc-2.3.3-1564-gd0b6ac6 * Fri Mar 14 2008 Jakub Jelinek 2.7.90-11 - remove , define _XOPEN_STREAMS -1 (#436349) -diff -Nrup a/nptl/sysdeps/unix/sysv/linux/bits/posix_opt.h b/nptl/sysdeps/unix/sysv/linux/bits/posix_opt.h ---- a/nptl/sysdeps/unix/sysv/linux/bits/posix_opt.h 2012-06-05 07:42:49.000000000 -0600 -+++ b/nptl/sysdeps/unix/sysv/linux/bits/posix_opt.h 2012-06-07 12:15:21.817318674 -0600 +diff -Nru glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/bits/posix_opt.h glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/bits/posix_opt.h +--- glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/bits/posix_opt.h 2012-06-05 07:42:49.000000000 -0600 ++++ glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/bits/posix_opt.h 2012-06-07 12:15:21.817318674 -0600 @@ -188,4 +188,7 @@ /* Typed memory objects are not available. */ #define _POSIX_TYPED_MEMORY_OBJECTS -1 @@ -14,9 +14,9 @@ diff -Nrup a/nptl/sysdeps/unix/sysv/linux/bits/posix_opt.h b/nptl/sysdeps/unix/s +#define _XOPEN_STREAMS -1 + #endif /* bits/posix_opt.h */ -diff -Nrup a/streams/Makefile b/streams/Makefile ---- a/streams/Makefile 2012-06-05 07:42:49.000000000 -0600 -+++ b/streams/Makefile 2012-06-07 12:15:21.824318649 -0600 +diff -Nru glibc-2.17-c758a686/streams/Makefile glibc-2.17-c758a686/streams/Makefile +--- glibc-2.17-c758a686/streams/Makefile 2012-06-05 07:42:49.000000000 -0600 ++++ glibc-2.17-c758a686/streams/Makefile 2012-06-07 12:15:21.824318649 -0600 @@ -20,7 +20,7 @@ # subdir := streams diff --git a/SOURCES/glibc-fedora-uname-getrlimit.patch b/SOURCES/glibc-fedora-uname-getrlimit.patch index 86383d4..b8338b3 100644 --- a/SOURCES/glibc-fedora-uname-getrlimit.patch +++ b/SOURCES/glibc-fedora-uname-getrlimit.patch @@ -18,8 +18,8 @@ GLIBC_PRIVATE. 5 files changed, 17 insertions(+), 2 deletions(-) create mode 100644 nptl/sysdeps/unix/sysv/linux/i386/Versions ---- a/nptl/Version -+++ b/nptl/Versions +--- glibc-2.17-c758a686/nptl/Version ++++ glibc-2.17-c758a686/nptl/Versions @@ -30,6 +30,7 @@ libc { __libc_alloca_cutoff; # Internal libc interface to libpthread @@ -28,8 +28,8 @@ GLIBC_PRIVATE. } } ---- a/nptl/nptl-init.c -+++ b/nptl/nptl-init.c +--- glibc-2.17-c758a686/nptl/nptl-init.c ++++ glibc-2.17-c758a686/nptl/nptl-init.c @@ -414,7 +414,7 @@ __pthread_initialize_minimal_internal (void) /* Determine the default allowed stack size. This is the size used in case the user does not specify one. */ @@ -39,8 +39,8 @@ GLIBC_PRIVATE. || limit.rlim_cur == RLIM_INFINITY) /* The system limit is not usable. Use an architecture-specific default. */ ---- a/nptl/sysdeps/unix/sysv/linux/i386/Versions -+++ b/nptl/sysdeps/unix/sysv/linux/i386/Versions +--- glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/i386/Versions ++++ glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/i386/Versions @@ -0,0 +1,6 @@ +libc { + GLIBC_PRIVATE { @@ -48,8 +48,8 @@ GLIBC_PRIVATE. + __uname; + } +} ---- a/nptl/sysdeps/unix/sysv/linux/i386/smp.h -+++ b/nptl/sysdeps/unix/sysv/linux/i386/smp.h +--- glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/i386/smp.h ++++ glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/i386/smp.h @@ -36,7 +36,7 @@ is_smp_system (void) char *cp; diff --git a/SOURCES/glibc-fix-test-write-buf-size.patch b/SOURCES/glibc-fix-test-write-buf-size.patch index 69ab522..104b97b 100644 --- a/SOURCES/glibc-fix-test-write-buf-size.patch +++ b/SOURCES/glibc-fix-test-write-buf-size.patch @@ -17,9 +17,9 @@ # # * tst-cancel4.c (WRITE_BUFFER_SIZE): Adjust comment. # -diff -urN glibc-2.17-c758a686.next/nptl/tst-cancel4.c glibc-2.17-c758a686.new/nptl/tst-cancel4.c ---- glibc-2.17-c758a686.next/nptl/tst-cancel4.c 2014-07-25 22:07:09.130021164 -0400 -+++ glibc-2.17-c758a686.new/nptl/tst-cancel4.c 2014-07-25 22:12:07.580022919 -0400 +diff -urN glibc-2.17-c758a686/nptl/tst-cancel4.c glibc-2.17-c758a686/nptl/tst-cancel4.c +--- glibc-2.17-c758a686/nptl/tst-cancel4.c 2014-07-25 22:07:09.130021164 -0400 ++++ glibc-2.17-c758a686/nptl/tst-cancel4.c 2014-07-25 22:12:07.580022919 -0400 @@ -83,7 +83,30 @@ # define IPC_ADDVAL 0 #endif diff --git a/SOURCES/glibc-gmake.patch b/SOURCES/glibc-gmake.patch index 29a1cd6..8431c0e 100644 --- a/SOURCES/glibc-gmake.patch +++ b/SOURCES/glibc-gmake.patch @@ -11,9 +11,9 @@ # # Accept make versions 4.0 and greater # -diff -urN glibc-2.17-c758a686/configure glibc-2.17-c758a686.mod/configure +diff -urN glibc-2.17-c758a686/configure glibc-2.17-c758a686/configure --- glibc-2.17-c758a686/configure 2015-01-15 16:32:14.983435268 -0500 -+++ glibc-2.17-c758a686.mod/configure 2015-01-15 16:32:45.396495266 -0500 ++++ glibc-2.17-c758a686/configure 2015-01-15 16:32:45.396495266 -0500 @@ -4991,7 +4991,7 @@ ac_prog_version=`$MAKE --version 2>&1 | sed -n 's/^.*GNU Make[^0-9]*\([0-9][0-9.]*\).*$/\1/p'` case $ac_prog_version in @@ -23,9 +23,9 @@ diff -urN glibc-2.17-c758a686/configure glibc-2.17-c758a686.mod/configure ac_prog_version="$ac_prog_version, ok"; ac_verc_fail=no;; *) ac_prog_version="$ac_prog_version, bad"; ac_verc_fail=yes;; -diff -urN glibc-2.17-c758a686/configure.in glibc-2.17-c758a686.mod/configure.in +diff -urN glibc-2.17-c758a686/configure.in glibc-2.17-c758a686/configure.in --- glibc-2.17-c758a686/configure.in 2015-01-15 16:32:14.781441511 -0500 -+++ glibc-2.17-c758a686.mod/configure.in 2015-01-15 16:32:34.970817501 -0500 ++++ glibc-2.17-c758a686/configure.in 2015-01-15 16:32:34.970817501 -0500 @@ -945,7 +945,7 @@ critic_missing="$critic_missing gcc") AC_CHECK_PROG_VER(MAKE, gnumake gmake make, --version, diff --git a/SOURCES/glibc-manual-update.patch b/SOURCES/glibc-manual-update.patch index 6f35371..bed496b 100644 --- a/SOURCES/glibc-manual-update.patch +++ b/SOURCES/glibc-manual-update.patch @@ -4,9 +4,9 @@ # Include updates that don't impact material differences # between the upstream master and 2.17-based RHEL implemenation. # -diff -urN glibc-2.17-c758a686/manual/argp.texi glibc/manual/argp.texi +diff -urN glibc-2.17-c758a686/manual/argp.texi glibc-2.17-c758a686/manual/argp.texi --- glibc-2.17-c758a686/manual/argp.texi 2012-12-24 22:02:13.000000000 -0500 -+++ glibc/manual/argp.texi 2014-09-12 16:10:06.043792722 -0400 ++++ glibc-2.17-c758a686/manual/argp.texi 2014-09-12 16:10:06.043792722 -0400 @@ -36,6 +36,35 @@ @comment argp.h @comment GNU @@ -231,9 +231,9 @@ diff -urN glibc-2.17-c758a686/manual/argp.texi glibc/manual/argp.texi This outputs a help message for the argp parser @var{argp} to @var{stream}. The type of messages printed will be determined by @var{flags}. -diff -urN glibc-2.17-c758a686/manual/arith.texi glibc/manual/arith.texi +diff -urN glibc-2.17-c758a686/manual/arith.texi glibc-2.17-c758a686/manual/arith.texi --- glibc-2.17-c758a686/manual/arith.texi 2012-12-24 22:02:13.000000000 -0500 -+++ glibc/manual/arith.texi 2014-09-12 16:10:06.043792722 -0400 ++++ glibc-2.17-c758a686/manual/arith.texi 2014-09-12 16:10:06.043792722 -0400 @@ -160,6 +160,8 @@ @comment stdlib.h @comment ISO @@ -1230,9 +1230,9 @@ diff -urN glibc-2.17-c758a686/manual/arith.texi glibc/manual/arith.texi The @code{qfcvt_r} function is the same as @code{qfcvt}, except that it places its result into the user-specified buffer pointed to by @var{buf}, with length @var{len}. The return value is @code{-1} in -diff -urN glibc-2.17-c758a686/manual/charset.texi glibc/manual/charset.texi +diff -urN glibc-2.17-c758a686/manual/charset.texi glibc-2.17-c758a686/manual/charset.texi --- glibc-2.17-c758a686/manual/charset.texi 2012-12-24 22:02:13.000000000 -0500 -+++ glibc/manual/charset.texi 2014-09-12 16:10:06.045792717 -0400 ++++ glibc-2.17-c758a686/manual/charset.texi 2014-09-12 16:10:06.045792717 -0400 @@ -504,6 +504,14 @@ @comment wchar.h @comment ISO @@ -1519,9 +1519,9 @@ diff -urN glibc-2.17-c758a686/manual/charset.texi glibc/manual/charset.texi @r{nothing we can do.} */ if (data->__is_last) @{ -diff -urN glibc-2.17-c758a686/manual/check-safety.sh glibc/manual/check-safety.sh +diff -urN glibc-2.17-c758a686/manual/check-safety.sh glibc-2.17-c758a686/manual/check-safety.sh --- glibc-2.17-c758a686/manual/check-safety.sh 1969-12-31 19:00:00.000000000 -0500 -+++ glibc/manual/check-safety.sh 2014-09-12 16:10:06.044792719 -0400 ++++ glibc-2.17-c758a686/manual/check-safety.sh 2014-09-12 16:10:06.044792719 -0400 @@ -0,0 +1,119 @@ +#! /bin/sh + @@ -1642,9 +1642,9 @@ diff -urN glibc-2.17-c758a686/manual/check-safety.sh glibc/manual/check-safety.s +success=false + +$success -diff -urN glibc-2.17-c758a686/manual/conf.texi glibc/manual/conf.texi +diff -urN glibc-2.17-c758a686/manual/conf.texi glibc-2.17-c758a686/manual/conf.texi --- glibc-2.17-c758a686/manual/conf.texi 2014-09-12 16:08:17.965070383 -0400 -+++ glibc/manual/conf.texi 2014-09-12 16:10:06.047792712 -0400 ++++ glibc-2.17-c758a686/manual/conf.texi 2014-09-12 16:10:06.047792712 -0400 @@ -114,7 +114,7 @@ @comment limits.h @@ -1710,9 +1710,9 @@ diff -urN glibc-2.17-c758a686/manual/conf.texi glibc/manual/conf.texi This function reads the value of a string-valued system parameter, storing the string into @var{len} bytes of memory space starting at @var{buf}. The @var{parameter} argument should be one of the -diff -urN glibc-2.17-c758a686/manual/crypt.texi glibc/manual/crypt.texi +diff -urN glibc-2.17-c758a686/manual/crypt.texi glibc-2.17-c758a686/manual/crypt.texi --- glibc-2.17-c758a686/manual/crypt.texi 2014-09-12 16:08:18.169069859 -0400 -+++ glibc/manual/crypt.texi 2014-09-12 16:10:06.042792724 -0400 ++++ glibc-2.17-c758a686/manual/crypt.texi 2014-09-12 16:10:06.042792724 -0400 @@ -30,15 +30,15 @@ and the other based on the Data Encryption Standard (DES) that is compatible with Unix systems. @@ -1839,9 +1839,9 @@ diff -urN glibc-2.17-c758a686/manual/crypt.texi glibc/manual/crypt.texi The function @code{des_setparity} changes the 64-bit @var{key}, stored packed in 8-bit bytes, to have odd parity by altering the low bits of -diff -urN glibc-2.17-c758a686/manual/ctype.texi glibc/manual/ctype.texi +diff -urN glibc-2.17-c758a686/manual/ctype.texi glibc-2.17-c758a686/manual/ctype.texi --- glibc-2.17-c758a686/manual/ctype.texi 2012-12-24 22:02:13.000000000 -0500 -+++ glibc/manual/ctype.texi 2014-09-12 16:10:06.042792724 -0400 ++++ glibc-2.17-c758a686/manual/ctype.texi 2014-09-12 16:10:06.042792724 -0400 @@ -66,6 +66,16 @@ @comment ctype.h @comment ISO @@ -2167,9 +2167,9 @@ diff -urN glibc-2.17-c758a686/manual/ctype.texi glibc/manual/ctype.texi If @var{wc} is a lower-case letter, @code{towupper} returns the corresponding upper-case letter. Otherwise @var{wc} is returned unchanged. -diff -urN glibc-2.17-c758a686/manual/debug.texi glibc/manual/debug.texi +diff -urN glibc-2.17-c758a686/manual/debug.texi glibc-2.17-c758a686/manual/debug.texi --- glibc-2.17-c758a686/manual/debug.texi 2014-09-12 16:08:17.824070745 -0400 -+++ glibc/manual/debug.texi 2014-09-12 16:10:06.045792717 -0400 ++++ glibc-2.17-c758a686/manual/debug.texi 2014-09-12 16:10:06.045792717 -0400 @@ -1,5 +1,5 @@ @node Debugging Support -@c @node Debugging Support, Internal Probes, Cryptographic Functions, Top @@ -2224,9 +2224,9 @@ diff -urN glibc-2.17-c758a686/manual/debug.texi glibc/manual/debug.texi The @code{backtrace_symbols_fd} function performs the same translation as the function @code{backtrace_symbols} function. Instead of returning the strings to the caller, it writes the strings to the file descriptor -diff -urN glibc-2.17-c758a686/manual/errno.texi glibc/manual/errno.texi +diff -urN glibc-2.17-c758a686/manual/errno.texi glibc-2.17-c758a686/manual/errno.texi --- glibc-2.17-c758a686/manual/errno.texi 2014-09-12 16:08:17.752070930 -0400 -+++ glibc/manual/errno.texi 2014-09-12 16:10:06.045792717 -0400 ++++ glibc-2.17-c758a686/manual/errno.texi 2014-09-12 16:10:06.045792717 -0400 @@ -1293,6 +1293,9 @@ @comment string.h @comment ISO @@ -2383,9 +2383,9 @@ diff -urN glibc-2.17-c758a686/manual/errno.texi glibc/manual/errno.texi -in as an value of type @code{va_list}. +in as a value of type @code{va_list}. @end deftypefun -diff -urN glibc-2.17-c758a686/manual/examples/add.c glibc/manual/examples/add.c +diff -urN glibc-2.17-c758a686/manual/examples/add.c glibc-2.17-c758a686/manual/examples/add.c --- glibc-2.17-c758a686/manual/examples/add.c 2012-12-24 22:02:13.000000000 -0500 -+++ glibc/manual/examples/add.c 2014-09-12 16:10:06.046792714 -0400 ++++ glibc-2.17-c758a686/manual/examples/add.c 2014-09-12 16:10:06.046792714 -0400 @@ -1,5 +1,5 @@ /* Example of a Variadic Function - Copyright (C) 1991-2012 Free Software Foundation, Inc. @@ -2393,9 +2393,9 @@ diff -urN glibc-2.17-c758a686/manual/examples/add.c glibc/manual/examples/add.c This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License -diff -urN glibc-2.17-c758a686/manual/examples/argp-ex1.c glibc/manual/examples/argp-ex1.c +diff -urN glibc-2.17-c758a686/manual/examples/argp-ex1.c glibc-2.17-c758a686/manual/examples/argp-ex1.c --- glibc-2.17-c758a686/manual/examples/argp-ex1.c 2012-12-24 22:02:13.000000000 -0500 -+++ glibc/manual/examples/argp-ex1.c 2014-09-12 16:10:06.046792714 -0400 ++++ glibc-2.17-c758a686/manual/examples/argp-ex1.c 2014-09-12 16:10:06.046792714 -0400 @@ -1,5 +1,5 @@ /* Argp example #1 -- a minimal program using argp - Copyright (C) 1991-2012 Free Software Foundation, Inc. @@ -2403,9 +2403,9 @@ diff -urN glibc-2.17-c758a686/manual/examples/argp-ex1.c glibc/manual/examples/a This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License -diff -urN glibc-2.17-c758a686/manual/examples/argp-ex2.c glibc/manual/examples/argp-ex2.c +diff -urN glibc-2.17-c758a686/manual/examples/argp-ex2.c glibc-2.17-c758a686/manual/examples/argp-ex2.c --- glibc-2.17-c758a686/manual/examples/argp-ex2.c 2012-12-24 22:02:13.000000000 -0500 -+++ glibc/manual/examples/argp-ex2.c 2014-09-12 16:10:06.046792714 -0400 ++++ glibc-2.17-c758a686/manual/examples/argp-ex2.c 2014-09-12 16:10:06.046792714 -0400 @@ -1,5 +1,5 @@ /* Argp example #2 -- a pretty minimal program using argp - Copyright (C) 1991-2012 Free Software Foundation, Inc. @@ -2413,9 +2413,9 @@ diff -urN glibc-2.17-c758a686/manual/examples/argp-ex2.c glibc/manual/examples/a This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License -diff -urN glibc-2.17-c758a686/manual/examples/argp-ex3.c glibc/manual/examples/argp-ex3.c +diff -urN glibc-2.17-c758a686/manual/examples/argp-ex3.c glibc-2.17-c758a686/manual/examples/argp-ex3.c --- glibc-2.17-c758a686/manual/examples/argp-ex3.c 2012-12-24 22:02:13.000000000 -0500 -+++ glibc/manual/examples/argp-ex3.c 2014-09-12 16:10:06.047792712 -0400 ++++ glibc-2.17-c758a686/manual/examples/argp-ex3.c 2014-09-12 16:10:06.047792712 -0400 @@ -1,5 +1,5 @@ /* Argp example #3 -- a program with options and arguments using argp - Copyright (C) 1991-2012 Free Software Foundation, Inc. @@ -2423,9 +2423,9 @@ diff -urN glibc-2.17-c758a686/manual/examples/argp-ex3.c glibc/manual/examples/a This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License -diff -urN glibc-2.17-c758a686/manual/examples/argp-ex4.c glibc/manual/examples/argp-ex4.c +diff -urN glibc-2.17-c758a686/manual/examples/argp-ex4.c glibc-2.17-c758a686/manual/examples/argp-ex4.c --- glibc-2.17-c758a686/manual/examples/argp-ex4.c 2012-12-24 22:02:13.000000000 -0500 -+++ glibc/manual/examples/argp-ex4.c 2014-09-12 16:10:06.046792714 -0400 ++++ glibc-2.17-c758a686/manual/examples/argp-ex4.c 2014-09-12 16:10:06.046792714 -0400 @@ -1,5 +1,5 @@ /* Argp example #4 -- a program with somewhat more complicated options - Copyright (C) 1991-2012 Free Software Foundation, Inc. @@ -2433,9 +2433,9 @@ diff -urN glibc-2.17-c758a686/manual/examples/argp-ex4.c glibc/manual/examples/a This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License -diff -urN glibc-2.17-c758a686/manual/examples/atexit.c glibc/manual/examples/atexit.c +diff -urN glibc-2.17-c758a686/manual/examples/atexit.c glibc-2.17-c758a686/manual/examples/atexit.c --- glibc-2.17-c758a686/manual/examples/atexit.c 2012-12-24 22:02:13.000000000 -0500 -+++ glibc/manual/examples/atexit.c 2014-09-12 16:10:06.047792712 -0400 ++++ glibc-2.17-c758a686/manual/examples/atexit.c 2014-09-12 16:10:06.047792712 -0400 @@ -1,5 +1,5 @@ /* Cleanups on Exit - Copyright (C) 1991-2012 Free Software Foundation, Inc. @@ -2443,9 +2443,9 @@ diff -urN glibc-2.17-c758a686/manual/examples/atexit.c glibc/manual/examples/ate This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License -diff -urN glibc-2.17-c758a686/manual/examples/db.c glibc/manual/examples/db.c +diff -urN glibc-2.17-c758a686/manual/examples/db.c glibc-2.17-c758a686/manual/examples/db.c --- glibc-2.17-c758a686/manual/examples/db.c 2012-12-24 22:02:13.000000000 -0500 -+++ glibc/manual/examples/db.c 2014-09-12 16:10:06.046792714 -0400 ++++ glibc-2.17-c758a686/manual/examples/db.c 2014-09-12 16:10:06.046792714 -0400 @@ -1,5 +1,5 @@ /* User and Group Database Example - Copyright (C) 1991-2012 Free Software Foundation, Inc. @@ -2453,9 +2453,9 @@ diff -urN glibc-2.17-c758a686/manual/examples/db.c glibc/manual/examples/db.c This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License -diff -urN glibc-2.17-c758a686/manual/examples/dir2.c glibc/manual/examples/dir2.c +diff -urN glibc-2.17-c758a686/manual/examples/dir2.c glibc-2.17-c758a686/manual/examples/dir2.c --- glibc-2.17-c758a686/manual/examples/dir2.c 2012-12-24 22:02:13.000000000 -0500 -+++ glibc/manual/examples/dir2.c 2014-09-12 16:10:06.046792714 -0400 ++++ glibc-2.17-c758a686/manual/examples/dir2.c 2014-09-12 16:10:06.046792714 -0400 @@ -1,5 +1,5 @@ /* Simple Program to List a Directory, Mark II - Copyright (C) 1991-2012 Free Software Foundation, Inc. @@ -2463,9 +2463,9 @@ diff -urN glibc-2.17-c758a686/manual/examples/dir2.c glibc/manual/examples/dir2. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License -diff -urN glibc-2.17-c758a686/manual/examples/dir.c glibc/manual/examples/dir.c +diff -urN glibc-2.17-c758a686/manual/examples/dir.c glibc-2.17-c758a686/manual/examples/dir.c --- glibc-2.17-c758a686/manual/examples/dir.c 2012-12-24 22:02:13.000000000 -0500 -+++ glibc/manual/examples/dir.c 2014-09-12 16:10:06.046792714 -0400 ++++ glibc-2.17-c758a686/manual/examples/dir.c 2014-09-12 16:10:06.046792714 -0400 @@ -1,5 +1,5 @@ /* Simple Program to List a Directory - Copyright (C) 1991-2012 Free Software Foundation, Inc. @@ -2473,9 +2473,9 @@ diff -urN glibc-2.17-c758a686/manual/examples/dir.c glibc/manual/examples/dir.c This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License -diff -urN glibc-2.17-c758a686/manual/examples/execinfo.c glibc/manual/examples/execinfo.c +diff -urN glibc-2.17-c758a686/manual/examples/execinfo.c glibc-2.17-c758a686/manual/examples/execinfo.c --- glibc-2.17-c758a686/manual/examples/execinfo.c 2012-12-24 22:02:13.000000000 -0500 -+++ glibc/manual/examples/execinfo.c 2014-09-12 16:10:06.046792714 -0400 ++++ glibc-2.17-c758a686/manual/examples/execinfo.c 2014-09-12 16:10:06.046792714 -0400 @@ -1,5 +1,5 @@ /* Obtain a backtrace and print it. - Copyright (C) 1991-2012 Free Software Foundation, Inc. @@ -2483,9 +2483,9 @@ diff -urN glibc-2.17-c758a686/manual/examples/execinfo.c glibc/manual/examples/e This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License -diff -urN glibc-2.17-c758a686/manual/examples/filecli.c glibc/manual/examples/filecli.c +diff -urN glibc-2.17-c758a686/manual/examples/filecli.c glibc-2.17-c758a686/manual/examples/filecli.c --- glibc-2.17-c758a686/manual/examples/filecli.c 2012-12-24 22:02:13.000000000 -0500 -+++ glibc/manual/examples/filecli.c 2014-09-12 16:10:06.047792712 -0400 ++++ glibc-2.17-c758a686/manual/examples/filecli.c 2014-09-12 16:10:06.047792712 -0400 @@ -1,5 +1,5 @@ /* Example of Reading Datagrams - Copyright (C) 1991-2012 Free Software Foundation, Inc. @@ -2493,9 +2493,9 @@ diff -urN glibc-2.17-c758a686/manual/examples/filecli.c glibc/manual/examples/fi This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License -diff -urN glibc-2.17-c758a686/manual/examples/filesrv.c glibc/manual/examples/filesrv.c +diff -urN glibc-2.17-c758a686/manual/examples/filesrv.c glibc-2.17-c758a686/manual/examples/filesrv.c --- glibc-2.17-c758a686/manual/examples/filesrv.c 2012-12-24 22:02:13.000000000 -0500 -+++ glibc/manual/examples/filesrv.c 2014-09-12 16:10:06.046792714 -0400 ++++ glibc-2.17-c758a686/manual/examples/filesrv.c 2014-09-12 16:10:06.046792714 -0400 @@ -1,5 +1,5 @@ /* Datagram Socket Example - Copyright (C) 1991-2012 Free Software Foundation, Inc. @@ -2503,9 +2503,9 @@ diff -urN glibc-2.17-c758a686/manual/examples/filesrv.c glibc/manual/examples/fi This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License -diff -urN glibc-2.17-c758a686/manual/examples/fmtmsgexpl.c glibc/manual/examples/fmtmsgexpl.c +diff -urN glibc-2.17-c758a686/manual/examples/fmtmsgexpl.c glibc-2.17-c758a686/manual/examples/fmtmsgexpl.c --- glibc-2.17-c758a686/manual/examples/fmtmsgexpl.c 2012-12-24 22:02:13.000000000 -0500 -+++ glibc/manual/examples/fmtmsgexpl.c 2014-09-12 16:10:06.046792714 -0400 ++++ glibc-2.17-c758a686/manual/examples/fmtmsgexpl.c 2014-09-12 16:10:06.046792714 -0400 @@ -1,5 +1,5 @@ /* How to use fmtmsg and addseverity. - Copyright (C) 1991-2012 Free Software Foundation, Inc. @@ -2513,9 +2513,9 @@ diff -urN glibc-2.17-c758a686/manual/examples/fmtmsgexpl.c glibc/manual/examples This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License -diff -urN glibc-2.17-c758a686/manual/examples/genpass.c glibc/manual/examples/genpass.c +diff -urN glibc-2.17-c758a686/manual/examples/genpass.c glibc-2.17-c758a686/manual/examples/genpass.c --- glibc-2.17-c758a686/manual/examples/genpass.c 2012-12-24 22:02:13.000000000 -0500 -+++ glibc/manual/examples/genpass.c 2014-09-12 16:10:06.046792714 -0400 ++++ glibc-2.17-c758a686/manual/examples/genpass.c 2014-09-12 16:10:06.046792714 -0400 @@ -1,5 +1,5 @@ /* Encrypting Passwords - Copyright (C) 1991-2012 Free Software Foundation, Inc. @@ -2523,9 +2523,9 @@ diff -urN glibc-2.17-c758a686/manual/examples/genpass.c glibc/manual/examples/ge This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License -diff -urN glibc-2.17-c758a686/manual/examples/inetcli.c glibc/manual/examples/inetcli.c +diff -urN glibc-2.17-c758a686/manual/examples/inetcli.c glibc-2.17-c758a686/manual/examples/inetcli.c --- glibc-2.17-c758a686/manual/examples/inetcli.c 2012-12-24 22:02:13.000000000 -0500 -+++ glibc/manual/examples/inetcli.c 2014-09-12 16:10:06.046792714 -0400 ++++ glibc-2.17-c758a686/manual/examples/inetcli.c 2014-09-12 16:10:06.046792714 -0400 @@ -1,5 +1,5 @@ /* Byte Stream Socket Example - Copyright (C) 1991-2012 Free Software Foundation, Inc. @@ -2533,9 +2533,9 @@ diff -urN glibc-2.17-c758a686/manual/examples/inetcli.c glibc/manual/examples/in This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License -diff -urN glibc-2.17-c758a686/manual/examples/inetsrv.c glibc/manual/examples/inetsrv.c +diff -urN glibc-2.17-c758a686/manual/examples/inetsrv.c glibc-2.17-c758a686/manual/examples/inetsrv.c --- glibc-2.17-c758a686/manual/examples/inetsrv.c 2012-12-24 22:02:13.000000000 -0500 -+++ glibc/manual/examples/inetsrv.c 2014-09-12 16:10:06.046792714 -0400 ++++ glibc-2.17-c758a686/manual/examples/inetsrv.c 2014-09-12 16:10:06.046792714 -0400 @@ -1,5 +1,5 @@ /* Byte Stream Connection Server Example - Copyright (C) 1991-2012 Free Software Foundation, Inc. @@ -2543,9 +2543,9 @@ diff -urN glibc-2.17-c758a686/manual/examples/inetsrv.c glibc/manual/examples/in This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License -diff -urN glibc-2.17-c758a686/manual/examples/isockad.c glibc/manual/examples/isockad.c +diff -urN glibc-2.17-c758a686/manual/examples/isockad.c glibc-2.17-c758a686/manual/examples/isockad.c --- glibc-2.17-c758a686/manual/examples/isockad.c 2012-12-24 22:02:13.000000000 -0500 -+++ glibc/manual/examples/isockad.c 2014-09-12 16:10:06.046792714 -0400 ++++ glibc-2.17-c758a686/manual/examples/isockad.c 2014-09-12 16:10:06.046792714 -0400 @@ -1,5 +1,5 @@ /* Internet Socket Example using sockaddr_in. - Copyright (C) 1991-2012 Free Software Foundation, Inc. @@ -2553,9 +2553,9 @@ diff -urN glibc-2.17-c758a686/manual/examples/isockad.c glibc/manual/examples/is This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License -diff -urN glibc-2.17-c758a686/manual/examples/longopt.c glibc/manual/examples/longopt.c +diff -urN glibc-2.17-c758a686/manual/examples/longopt.c glibc-2.17-c758a686/manual/examples/longopt.c --- glibc-2.17-c758a686/manual/examples/longopt.c 2012-12-24 22:02:13.000000000 -0500 -+++ glibc/manual/examples/longopt.c 2014-09-12 16:10:06.047792712 -0400 ++++ glibc-2.17-c758a686/manual/examples/longopt.c 2014-09-12 16:10:06.047792712 -0400 @@ -1,5 +1,5 @@ /* Example of Parsing Long Options with getopt_long. - Copyright (C) 1991-2012 Free Software Foundation, Inc. @@ -2563,9 +2563,9 @@ diff -urN glibc-2.17-c758a686/manual/examples/longopt.c glibc/manual/examples/lo This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License -diff -urN glibc-2.17-c758a686/manual/examples/memopen.c glibc/manual/examples/memopen.c +diff -urN glibc-2.17-c758a686/manual/examples/memopen.c glibc-2.17-c758a686/manual/examples/memopen.c --- glibc-2.17-c758a686/manual/examples/memopen.c 2012-12-24 22:02:13.000000000 -0500 -+++ glibc/manual/examples/memopen.c 2014-09-12 16:10:06.046792714 -0400 ++++ glibc-2.17-c758a686/manual/examples/memopen.c 2014-09-12 16:10:06.046792714 -0400 @@ -1,5 +1,5 @@ /* String Streams - Copyright (C) 1991-2012 Free Software Foundation, Inc. @@ -2573,9 +2573,9 @@ diff -urN glibc-2.17-c758a686/manual/examples/memopen.c glibc/manual/examples/me This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License -diff -urN glibc-2.17-c758a686/manual/examples/memstrm.c glibc/manual/examples/memstrm.c +diff -urN glibc-2.17-c758a686/manual/examples/memstrm.c glibc-2.17-c758a686/manual/examples/memstrm.c --- glibc-2.17-c758a686/manual/examples/memstrm.c 2012-12-24 22:02:13.000000000 -0500 -+++ glibc/manual/examples/memstrm.c 2014-09-12 16:10:06.046792714 -0400 ++++ glibc-2.17-c758a686/manual/examples/memstrm.c 2014-09-12 16:10:06.046792714 -0400 @@ -1,5 +1,5 @@ /* open_memstream example. - Copyright (C) 1991-2012 Free Software Foundation, Inc. @@ -2583,9 +2583,9 @@ diff -urN glibc-2.17-c758a686/manual/examples/memstrm.c glibc/manual/examples/me This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License -diff -urN glibc-2.17-c758a686/manual/examples/mkfsock.c glibc/manual/examples/mkfsock.c +diff -urN glibc-2.17-c758a686/manual/examples/mkfsock.c glibc-2.17-c758a686/manual/examples/mkfsock.c --- glibc-2.17-c758a686/manual/examples/mkfsock.c 2012-12-24 22:02:13.000000000 -0500 -+++ glibc/manual/examples/mkfsock.c 2014-09-12 16:10:06.046792714 -0400 ++++ glibc-2.17-c758a686/manual/examples/mkfsock.c 2014-09-12 16:10:06.046792714 -0400 @@ -1,5 +1,5 @@ /* Example of Local-Namespace Sockets - Copyright (C) 1991-2012 Free Software Foundation, Inc. @@ -2609,9 +2609,9 @@ diff -urN glibc-2.17-c758a686/manual/examples/mkfsock.c glibc/manual/examples/mk if (bind (sock, (struct sockaddr *) &name, size) < 0) { -diff -urN glibc-2.17-c758a686/manual/examples/mkisock.c glibc/manual/examples/mkisock.c +diff -urN glibc-2.17-c758a686/manual/examples/mkisock.c glibc-2.17-c758a686/manual/examples/mkisock.c --- glibc-2.17-c758a686/manual/examples/mkisock.c 2012-12-24 22:02:13.000000000 -0500 -+++ glibc/manual/examples/mkisock.c 2014-09-12 16:10:06.046792714 -0400 ++++ glibc-2.17-c758a686/manual/examples/mkisock.c 2014-09-12 16:10:06.046792714 -0400 @@ -1,5 +1,5 @@ /* Internet Socket Example - Copyright (C) 1991-2012 Free Software Foundation, Inc. @@ -2619,9 +2619,9 @@ diff -urN glibc-2.17-c758a686/manual/examples/mkisock.c glibc/manual/examples/mk This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License -diff -urN glibc-2.17-c758a686/manual/examples/mygetpass.c glibc/manual/examples/mygetpass.c +diff -urN glibc-2.17-c758a686/manual/examples/mygetpass.c glibc-2.17-c758a686/manual/examples/mygetpass.c --- glibc-2.17-c758a686/manual/examples/mygetpass.c 2012-12-24 22:02:13.000000000 -0500 -+++ glibc/manual/examples/mygetpass.c 2014-09-12 16:10:06.046792714 -0400 ++++ glibc-2.17-c758a686/manual/examples/mygetpass.c 2014-09-12 16:10:06.046792714 -0400 @@ -1,5 +1,5 @@ /* Reading Passwords - Copyright (C) 1991-2012 Free Software Foundation, Inc. @@ -2629,9 +2629,9 @@ diff -urN glibc-2.17-c758a686/manual/examples/mygetpass.c glibc/manual/examples/ This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License -diff -urN glibc-2.17-c758a686/manual/examples/pipe.c glibc/manual/examples/pipe.c +diff -urN glibc-2.17-c758a686/manual/examples/pipe.c glibc-2.17-c758a686/manual/examples/pipe.c --- glibc-2.17-c758a686/manual/examples/pipe.c 2012-12-24 22:02:13.000000000 -0500 -+++ glibc/manual/examples/pipe.c 2014-09-12 16:10:06.047792712 -0400 ++++ glibc-2.17-c758a686/manual/examples/pipe.c 2014-09-12 16:10:06.047792712 -0400 @@ -1,5 +1,5 @@ /* Creating a Pipe - Copyright (C) 1991-2012 Free Software Foundation, Inc. @@ -2639,9 +2639,9 @@ diff -urN glibc-2.17-c758a686/manual/examples/pipe.c glibc/manual/examples/pipe. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License -diff -urN glibc-2.17-c758a686/manual/examples/popen.c glibc/manual/examples/popen.c +diff -urN glibc-2.17-c758a686/manual/examples/popen.c glibc-2.17-c758a686/manual/examples/popen.c --- glibc-2.17-c758a686/manual/examples/popen.c 2012-12-24 22:02:13.000000000 -0500 -+++ glibc/manual/examples/popen.c 2014-09-12 16:10:06.046792714 -0400 ++++ glibc-2.17-c758a686/manual/examples/popen.c 2014-09-12 16:10:06.046792714 -0400 @@ -1,5 +1,5 @@ /* Pipe to a Subprocess - Copyright (C) 1991-2012 Free Software Foundation, Inc. @@ -2649,9 +2649,9 @@ diff -urN glibc-2.17-c758a686/manual/examples/popen.c glibc/manual/examples/pope This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License -diff -urN glibc-2.17-c758a686/manual/examples/rprintf.c glibc/manual/examples/rprintf.c +diff -urN glibc-2.17-c758a686/manual/examples/rprintf.c glibc-2.17-c758a686/manual/examples/rprintf.c --- glibc-2.17-c758a686/manual/examples/rprintf.c 2012-12-24 22:02:13.000000000 -0500 -+++ glibc/manual/examples/rprintf.c 2014-09-12 16:10:06.047792712 -0400 ++++ glibc-2.17-c758a686/manual/examples/rprintf.c 2014-09-12 16:10:06.047792712 -0400 @@ -1,5 +1,5 @@ /* Printf Extension Example - Copyright (C) 1991-2012 Free Software Foundation, Inc. @@ -2659,9 +2659,9 @@ diff -urN glibc-2.17-c758a686/manual/examples/rprintf.c glibc/manual/examples/rp This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License -diff -urN glibc-2.17-c758a686/manual/examples/search.c glibc/manual/examples/search.c +diff -urN glibc-2.17-c758a686/manual/examples/search.c glibc-2.17-c758a686/manual/examples/search.c --- glibc-2.17-c758a686/manual/examples/search.c 2012-12-24 22:02:13.000000000 -0500 -+++ glibc/manual/examples/search.c 2014-09-12 16:10:06.047792712 -0400 ++++ glibc-2.17-c758a686/manual/examples/search.c 2014-09-12 16:10:06.047792712 -0400 @@ -1,5 +1,5 @@ /* Searching and Sorting Example - Copyright (C) 1991-2012 Free Software Foundation, Inc. @@ -2669,9 +2669,9 @@ diff -urN glibc-2.17-c758a686/manual/examples/search.c glibc/manual/examples/sea This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License -diff -urN glibc-2.17-c758a686/manual/examples/select.c glibc/manual/examples/select.c +diff -urN glibc-2.17-c758a686/manual/examples/select.c glibc-2.17-c758a686/manual/examples/select.c --- glibc-2.17-c758a686/manual/examples/select.c 2012-12-24 22:02:13.000000000 -0500 -+++ glibc/manual/examples/select.c 2014-09-12 16:10:06.046792714 -0400 ++++ glibc-2.17-c758a686/manual/examples/select.c 2014-09-12 16:10:06.046792714 -0400 @@ -1,5 +1,5 @@ /* Waiting for Input or Output - Copyright (C) 1991-2012 Free Software Foundation, Inc. @@ -2679,9 +2679,9 @@ diff -urN glibc-2.17-c758a686/manual/examples/select.c glibc/manual/examples/sel This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License -diff -urN glibc-2.17-c758a686/manual/examples/setjmp.c glibc/manual/examples/setjmp.c +diff -urN glibc-2.17-c758a686/manual/examples/setjmp.c glibc-2.17-c758a686/manual/examples/setjmp.c --- glibc-2.17-c758a686/manual/examples/setjmp.c 2012-12-24 22:02:13.000000000 -0500 -+++ glibc/manual/examples/setjmp.c 2014-09-12 16:10:06.047792712 -0400 ++++ glibc-2.17-c758a686/manual/examples/setjmp.c 2014-09-12 16:10:06.047792712 -0400 @@ -1,5 +1,5 @@ /* Introduction to Non-Local Exits - Copyright (C) 1991-2012 Free Software Foundation, Inc. @@ -2689,9 +2689,9 @@ diff -urN glibc-2.17-c758a686/manual/examples/setjmp.c glibc/manual/examples/set This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License -diff -urN glibc-2.17-c758a686/manual/examples/sigh1.c glibc/manual/examples/sigh1.c +diff -urN glibc-2.17-c758a686/manual/examples/sigh1.c glibc-2.17-c758a686/manual/examples/sigh1.c --- glibc-2.17-c758a686/manual/examples/sigh1.c 2012-12-24 22:02:13.000000000 -0500 -+++ glibc/manual/examples/sigh1.c 2014-09-12 16:10:06.047792712 -0400 ++++ glibc-2.17-c758a686/manual/examples/sigh1.c 2014-09-12 16:10:06.047792712 -0400 @@ -1,5 +1,5 @@ /* Signal Handlers that Return - Copyright (C) 1991-2012 Free Software Foundation, Inc. @@ -2699,9 +2699,9 @@ diff -urN glibc-2.17-c758a686/manual/examples/sigh1.c glibc/manual/examples/sigh This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License -diff -urN glibc-2.17-c758a686/manual/examples/sigusr.c glibc/manual/examples/sigusr.c +diff -urN glibc-2.17-c758a686/manual/examples/sigusr.c glibc-2.17-c758a686/manual/examples/sigusr.c --- glibc-2.17-c758a686/manual/examples/sigusr.c 2012-12-24 22:02:13.000000000 -0500 -+++ glibc/manual/examples/sigusr.c 2014-09-12 16:10:06.046792714 -0400 ++++ glibc-2.17-c758a686/manual/examples/sigusr.c 2014-09-12 16:10:06.046792714 -0400 @@ -1,5 +1,5 @@ /* Using kill for Communication - Copyright (C) 1991-2012 Free Software Foundation, Inc. @@ -2709,9 +2709,9 @@ diff -urN glibc-2.17-c758a686/manual/examples/sigusr.c glibc/manual/examples/sig This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License -diff -urN glibc-2.17-c758a686/manual/examples/stpcpy.c glibc/manual/examples/stpcpy.c +diff -urN glibc-2.17-c758a686/manual/examples/stpcpy.c glibc-2.17-c758a686/manual/examples/stpcpy.c --- glibc-2.17-c758a686/manual/examples/stpcpy.c 2012-12-24 22:02:13.000000000 -0500 -+++ glibc/manual/examples/stpcpy.c 2014-09-12 16:10:06.046792714 -0400 ++++ glibc-2.17-c758a686/manual/examples/stpcpy.c 2014-09-12 16:10:06.046792714 -0400 @@ -1,5 +1,5 @@ /* stpcpy example. - Copyright (C) 1991-2012 Free Software Foundation, Inc. @@ -2719,9 +2719,9 @@ diff -urN glibc-2.17-c758a686/manual/examples/stpcpy.c glibc/manual/examples/stp This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License -diff -urN glibc-2.17-c758a686/manual/examples/strdupa.c glibc/manual/examples/strdupa.c +diff -urN glibc-2.17-c758a686/manual/examples/strdupa.c glibc-2.17-c758a686/manual/examples/strdupa.c --- glibc-2.17-c758a686/manual/examples/strdupa.c 2012-12-24 22:02:13.000000000 -0500 -+++ glibc/manual/examples/strdupa.c 2014-09-12 16:10:06.046792714 -0400 ++++ glibc-2.17-c758a686/manual/examples/strdupa.c 2014-09-12 16:10:06.046792714 -0400 @@ -1,5 +1,5 @@ /* strdupa example. - Copyright (C) 1991-2012 Free Software Foundation, Inc. @@ -2729,9 +2729,9 @@ diff -urN glibc-2.17-c758a686/manual/examples/strdupa.c glibc/manual/examples/st This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License -diff -urN glibc-2.17-c758a686/manual/examples/strftim.c glibc/manual/examples/strftim.c +diff -urN glibc-2.17-c758a686/manual/examples/strftim.c glibc-2.17-c758a686/manual/examples/strftim.c --- glibc-2.17-c758a686/manual/examples/strftim.c 2012-12-24 22:02:13.000000000 -0500 -+++ glibc/manual/examples/strftim.c 2014-09-12 16:10:06.047792712 -0400 ++++ glibc-2.17-c758a686/manual/examples/strftim.c 2014-09-12 16:10:06.047792712 -0400 @@ -1,5 +1,5 @@ /* Time Functions Example - Copyright (C) 1991-2012 Free Software Foundation, Inc. @@ -2739,9 +2739,9 @@ diff -urN glibc-2.17-c758a686/manual/examples/strftim.c glibc/manual/examples/st This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License -diff -urN glibc-2.17-c758a686/manual/examples/strncat.c glibc/manual/examples/strncat.c +diff -urN glibc-2.17-c758a686/manual/examples/strncat.c glibc-2.17-c758a686/manual/examples/strncat.c --- glibc-2.17-c758a686/manual/examples/strncat.c 2012-12-24 22:02:13.000000000 -0500 -+++ glibc/manual/examples/strncat.c 2014-09-12 16:10:06.046792714 -0400 ++++ glibc-2.17-c758a686/manual/examples/strncat.c 2014-09-12 16:10:06.046792714 -0400 @@ -1,5 +1,5 @@ /* strncat example. - Copyright (C) 1991-2012 Free Software Foundation, Inc. @@ -2749,9 +2749,9 @@ diff -urN glibc-2.17-c758a686/manual/examples/strncat.c glibc/manual/examples/st This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License -diff -urN glibc-2.17-c758a686/manual/examples/subopt.c glibc/manual/examples/subopt.c +diff -urN glibc-2.17-c758a686/manual/examples/subopt.c glibc-2.17-c758a686/manual/examples/subopt.c --- glibc-2.17-c758a686/manual/examples/subopt.c 2012-12-24 22:02:13.000000000 -0500 -+++ glibc/manual/examples/subopt.c 2014-09-12 16:10:06.047792712 -0400 ++++ glibc-2.17-c758a686/manual/examples/subopt.c 2014-09-12 16:10:06.047792712 -0400 @@ -1,5 +1,5 @@ /* Parsing of Suboptions Example - Copyright (C) 1991-2012 Free Software Foundation, Inc. @@ -2759,9 +2759,9 @@ diff -urN glibc-2.17-c758a686/manual/examples/subopt.c glibc/manual/examples/sub This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License -diff -urN glibc-2.17-c758a686/manual/examples/swapcontext.c glibc/manual/examples/swapcontext.c +diff -urN glibc-2.17-c758a686/manual/examples/swapcontext.c glibc-2.17-c758a686/manual/examples/swapcontext.c --- glibc-2.17-c758a686/manual/examples/swapcontext.c 2012-12-24 22:02:13.000000000 -0500 -+++ glibc/manual/examples/swapcontext.c 2014-09-12 16:10:06.046792714 -0400 ++++ glibc-2.17-c758a686/manual/examples/swapcontext.c 2014-09-12 16:10:06.046792714 -0400 @@ -1,5 +1,5 @@ /* Complete Context Control - Copyright (C) 1991-2012 Free Software Foundation, Inc. @@ -2769,9 +2769,9 @@ diff -urN glibc-2.17-c758a686/manual/examples/swapcontext.c glibc/manual/example This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License -diff -urN glibc-2.17-c758a686/manual/examples/termios.c glibc/manual/examples/termios.c +diff -urN glibc-2.17-c758a686/manual/examples/termios.c glibc-2.17-c758a686/manual/examples/termios.c --- glibc-2.17-c758a686/manual/examples/termios.c 2012-12-24 22:02:13.000000000 -0500 -+++ glibc/manual/examples/termios.c 2014-09-12 16:10:06.046792714 -0400 ++++ glibc-2.17-c758a686/manual/examples/termios.c 2014-09-12 16:10:06.046792714 -0400 @@ -1,5 +1,5 @@ /* Noncanonical Mode Example - Copyright (C) 1991-2012 Free Software Foundation, Inc. @@ -2779,9 +2779,9 @@ diff -urN glibc-2.17-c758a686/manual/examples/termios.c glibc/manual/examples/te This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License -diff -urN glibc-2.17-c758a686/manual/examples/testopt.c glibc/manual/examples/testopt.c +diff -urN glibc-2.17-c758a686/manual/examples/testopt.c glibc-2.17-c758a686/manual/examples/testopt.c --- glibc-2.17-c758a686/manual/examples/testopt.c 2012-12-24 22:02:13.000000000 -0500 -+++ glibc/manual/examples/testopt.c 2014-09-12 16:10:06.047792712 -0400 ++++ glibc-2.17-c758a686/manual/examples/testopt.c 2014-09-12 16:10:06.047792712 -0400 @@ -1,5 +1,5 @@ /* Example of Parsing Arguments with getopt. - Copyright (C) 1991-2012 Free Software Foundation, Inc. @@ -2789,9 +2789,9 @@ diff -urN glibc-2.17-c758a686/manual/examples/testopt.c glibc/manual/examples/te This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License -diff -urN glibc-2.17-c758a686/manual/examples/testpass.c glibc/manual/examples/testpass.c +diff -urN glibc-2.17-c758a686/manual/examples/testpass.c glibc-2.17-c758a686/manual/examples/testpass.c --- glibc-2.17-c758a686/manual/examples/testpass.c 2012-12-24 22:02:13.000000000 -0500 -+++ glibc/manual/examples/testpass.c 2014-09-12 16:10:06.047792712 -0400 ++++ glibc-2.17-c758a686/manual/examples/testpass.c 2014-09-12 16:10:06.047792712 -0400 @@ -1,5 +1,5 @@ /* Verify a password. - Copyright (C) 1991-2012 Free Software Foundation, Inc. @@ -2799,9 +2799,9 @@ diff -urN glibc-2.17-c758a686/manual/examples/testpass.c glibc/manual/examples/t This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License -diff -urN glibc-2.17-c758a686/manual/examples/timeval_subtract.c glibc/manual/examples/timeval_subtract.c +diff -urN glibc-2.17-c758a686/manual/examples/timeval_subtract.c glibc-2.17-c758a686/manual/examples/timeval_subtract.c --- glibc-2.17-c758a686/manual/examples/timeval_subtract.c 2012-12-24 22:02:13.000000000 -0500 -+++ glibc/manual/examples/timeval_subtract.c 2014-09-12 16:10:06.047792712 -0400 ++++ glibc-2.17-c758a686/manual/examples/timeval_subtract.c 2014-09-12 16:10:06.047792712 -0400 @@ -1,5 +1,5 @@ /* struct timeval subtraction. - Copyright (C) 1991-2012 Free Software Foundation, Inc. @@ -2809,9 +2809,9 @@ diff -urN glibc-2.17-c758a686/manual/examples/timeval_subtract.c glibc/manual/ex This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License -diff -urN glibc-2.17-c758a686/manual/filesys.texi glibc/manual/filesys.texi +diff -urN glibc-2.17-c758a686/manual/filesys.texi glibc-2.17-c758a686/manual/filesys.texi --- glibc-2.17-c758a686/manual/filesys.texi 2014-09-12 16:08:17.966070381 -0400 -+++ glibc/manual/filesys.texi 2014-09-12 16:10:06.044792719 -0400 ++++ glibc-2.17-c758a686/manual/filesys.texi 2014-09-12 16:10:06.044792719 -0400 @@ -58,6 +58,25 @@ @comment unistd.h @comment POSIX.1 @@ -3645,9 +3645,9 @@ diff -urN glibc-2.17-c758a686/manual/filesys.texi glibc/manual/filesys.texi +@c unlinkat +@c utimensat +@c mknodat -diff -urN glibc-2.17-c758a686/manual/freemanuals.texi glibc/manual/freemanuals.texi +diff -urN glibc-2.17-c758a686/manual/freemanuals.texi glibc-2.17-c758a686/manual/freemanuals.texi --- glibc-2.17-c758a686/manual/freemanuals.texi 2012-12-24 22:02:13.000000000 -0500 -+++ glibc/manual/freemanuals.texi 2014-09-12 16:10:06.044792719 -0400 ++++ glibc-2.17-c758a686/manual/freemanuals.texi 2014-09-12 16:10:06.044792719 -0400 @@ -1,4 +1,7 @@ -@appendix Free Software Needs Free Documentation +@c freemanuals.texi - blurb for free documentation. @@ -3657,9 +3657,9 @@ diff -urN glibc-2.17-c758a686/manual/freemanuals.texi glibc/manual/freemanuals.t @cindex free documentation The biggest deficiency in the free software community today is not in -diff -urN glibc-2.17-c758a686/manual/getopt.texi glibc/manual/getopt.texi +diff -urN glibc-2.17-c758a686/manual/getopt.texi glibc-2.17-c758a686/manual/getopt.texi --- glibc-2.17-c758a686/manual/getopt.texi 2012-12-24 22:02:13.000000000 -0500 -+++ glibc/manual/getopt.texi 2014-09-12 16:10:06.044792719 -0400 ++++ glibc-2.17-c758a686/manual/getopt.texi 2014-09-12 16:10:06.044792719 -0400 @@ -59,7 +59,29 @@ @comment unistd.h @@ -3709,18 +3709,18 @@ diff -urN glibc-2.17-c758a686/manual/getopt.texi glibc/manual/getopt.texi The @code{getopt_long_only} function is equivalent to the @code{getopt_long} function but it allows to specify the user of the -diff -urN glibc-2.17-c758a686/manual/install-plain.texi glibc/manual/install-plain.texi +diff -urN glibc-2.17-c758a686/manual/install-plain.texi glibc-2.17-c758a686/manual/install-plain.texi --- glibc-2.17-c758a686/manual/install-plain.texi 1969-12-31 19:00:00.000000000 -0500 -+++ glibc/manual/install-plain.texi 2014-09-12 16:10:06.046792714 -0400 ++++ glibc-2.17-c758a686/manual/install-plain.texi 2014-09-12 16:10:06.046792714 -0400 @@ -0,0 +1,5 @@ +@c This is for making the `INSTALL' file for the distribution. +@c Makeinfo ignores it when processing the file from the include. +@setfilename INSTALL +@set plain +@include install.texi -diff -urN glibc-2.17-c758a686/manual/install.texi glibc/manual/install.texi +diff -urN glibc-2.17-c758a686/manual/install.texi glibc-2.17-c758a686/manual/install.texi --- glibc-2.17-c758a686/manual/install.texi 2014-09-12 16:08:17.783070851 -0400 -+++ glibc/manual/install.texi 2014-09-12 16:10:06.043792722 -0400 ++++ glibc-2.17-c758a686/manual/install.texi 2014-09-12 16:10:06.043792722 -0400 @@ -1,10 +1,10 @@ -@c This is for making the `INSTALL' file for the distribution. -@c Makeinfo ignores it when processing the file from the include. @@ -3901,9 +3901,9 @@ diff -urN glibc-2.17-c758a686/manual/install.texi glibc/manual/install.texi These headers must be installed using @samp{make headers_install}; the headers present in the kernel source directory are not suitable for direct use by @theglibc{}. You do not need to use that kernel, just have -diff -urN glibc-2.17-c758a686/manual/intro.texi glibc/manual/intro.texi +diff -urN glibc-2.17-c758a686/manual/intro.texi glibc-2.17-c758a686/manual/intro.texi --- glibc-2.17-c758a686/manual/intro.texi 2012-12-24 22:02:13.000000000 -0500 -+++ glibc/manual/intro.texi 2014-09-12 16:10:06.044792719 -0400 ++++ glibc-2.17-c758a686/manual/intro.texi 2014-09-12 16:10:06.044792719 -0400 @@ -159,6 +159,14 @@ These include utilities for dealing with regular expressions and other pattern matching facilities (@pxref{Pattern Matching}). @@ -4787,9 +4787,9 @@ diff -urN glibc-2.17-c758a686/manual/intro.texi glibc/manual/intro.texi @ref{Library Summary}, gives a summary of all the functions, variables, and macros in the library, with complete data types and function prototypes, and says what standard or system each is derived from. -diff -urN glibc-2.17-c758a686/manual/ipc.texi glibc/manual/ipc.texi +diff -urN glibc-2.17-c758a686/manual/ipc.texi glibc-2.17-c758a686/manual/ipc.texi --- glibc-2.17-c758a686/manual/ipc.texi 1969-12-31 19:00:00.000000000 -0500 -+++ glibc/manual/ipc.texi 2014-09-12 16:10:06.047792712 -0400 ++++ glibc-2.17-c758a686/manual/ipc.texi 2014-09-12 16:10:06.047792712 -0400 @@ -0,0 +1,116 @@ +@node Inter-Process Communication, Job Control, Processes, Top +@c %MENU% All about inter-process communication @@ -4907,9 +4907,9 @@ diff -urN glibc-2.17-c758a686/manual/ipc.texi glibc/manual/ipc.texi +@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}} +@c Atomic write of a value is safe in all contexts. +@end deftypefun -diff -urN glibc-2.17-c758a686/manual/job.texi glibc/manual/job.texi +diff -urN glibc-2.17-c758a686/manual/job.texi glibc-2.17-c758a686/manual/job.texi --- glibc-2.17-c758a686/manual/job.texi 2012-12-24 22:02:13.000000000 -0500 -+++ glibc/manual/job.texi 2014-09-12 16:10:06.048792709 -0400 ++++ glibc-2.17-c758a686/manual/job.texi 2014-09-12 16:10:06.048792709 -0400 @@ -1,4 +1,4 @@ -@node Job Control, Name Service Switch, Processes, Top +@node Job Control, Name Service Switch, Inter-Process Communication, Top @@ -5049,9 +5049,9 @@ diff -urN glibc-2.17-c758a686/manual/job.texi glibc/manual/job.texi This function is used to obtain the process group ID of the session for which the terminal specified by @var{fildes} is the controlling terminal. If the call is successful the group ID is returned. Otherwise the -diff -urN glibc-2.17-c758a686/manual/lang.texi glibc/manual/lang.texi +diff -urN glibc-2.17-c758a686/manual/lang.texi glibc-2.17-c758a686/manual/lang.texi --- glibc-2.17-c758a686/manual/lang.texi 2012-12-24 22:02:13.000000000 -0500 -+++ glibc/manual/lang.texi 2014-09-12 16:10:06.045792717 -0400 ++++ glibc-2.17-c758a686/manual/lang.texi 2014-09-12 16:10:06.045792717 -0400 @@ -51,6 +51,8 @@ @comment assert.h @comment ISO @@ -5120,9 +5120,9 @@ diff -urN glibc-2.17-c758a686/manual/lang.texi glibc/manual/lang.texi structure member named @var{member} in the structure type @var{type}. For example, @code{offsetof (struct s, elem)} is the offset, in bytes, of the member @code{elem} in a @code{struct s}. -diff -urN glibc-2.17-c758a686/manual/libc.texinfo glibc/manual/libc.texinfo +diff -urN glibc-2.17-c758a686/manual/libc.texinfo glibc-2.17-c758a686/manual/libc.texinfo --- glibc-2.17-c758a686/manual/libc.texinfo 2014-09-12 16:08:17.677071123 -0400 -+++ glibc/manual/libc.texinfo 2014-09-12 16:10:25.996741462 -0400 ++++ glibc-2.17-c758a686/manual/libc.texinfo 2014-09-12 16:10:25.996741462 -0400 @@ -7,7 +7,7 @@ @include macros.texi @@ -5149,9 +5149,9 @@ diff -urN glibc-2.17-c758a686/manual/libc.texinfo glibc/manual/libc.texinfo @include freemanuals.texi @node Copying, Documentation License, Free Manuals, Top -diff -urN glibc-2.17-c758a686/manual/libc-texinfo.sh glibc/manual/libc-texinfo.sh +diff -urN glibc-2.17-c758a686/manual/libc-texinfo.sh glibc-2.17-c758a686/manual/libc-texinfo.sh --- glibc-2.17-c758a686/manual/libc-texinfo.sh 2012-12-24 22:02:13.000000000 -0500 -+++ glibc/manual/libc-texinfo.sh 2014-09-12 16:10:06.042792724 -0400 ++++ glibc-2.17-c758a686/manual/libc-texinfo.sh 2014-09-12 16:10:06.042792724 -0400 @@ -91,9 +91,11 @@ * Variable Index:: Index of variables and variable-like macros. * File Index:: Index of programs and files. @@ -5164,9 +5164,9 @@ diff -urN glibc-2.17-c758a686/manual/libc-texinfo.sh glibc/manual/libc-texinfo.s echo '@end menu'; } >${OUTDIR}top-menu.texi.$$ mv -f ${OUTDIR}top-menu.texi.$$ ${OUTDIR}top-menu.texi -diff -urN glibc-2.17-c758a686/manual/libdl.texi glibc/manual/libdl.texi +diff -urN glibc-2.17-c758a686/manual/libdl.texi glibc-2.17-c758a686/manual/libdl.texi --- glibc-2.17-c758a686/manual/libdl.texi 1969-12-31 19:00:00.000000000 -0500 -+++ glibc/manual/libdl.texi 2014-09-12 16:10:06.045792717 -0400 ++++ glibc-2.17-c758a686/manual/libdl.texi 2014-09-12 16:10:06.045792717 -0400 @@ -0,0 +1,10 @@ +@c FIXME these are undocumented: +@c dladdr @@ -5178,9 +5178,9 @@ diff -urN glibc-2.17-c758a686/manual/libdl.texi glibc/manual/libdl.texi +@c dlopen +@c dlsym +@c dlvsym -diff -urN glibc-2.17-c758a686/manual/llio.texi glibc/manual/llio.texi +diff -urN glibc-2.17-c758a686/manual/llio.texi glibc-2.17-c758a686/manual/llio.texi --- glibc-2.17-c758a686/manual/llio.texi 2012-12-24 22:02:13.000000000 -0500 -+++ glibc/manual/llio.texi 2014-09-12 16:10:06.047792712 -0400 ++++ glibc-2.17-c758a686/manual/llio.texi 2014-09-12 16:10:06.047792712 -0400 @@ -78,6 +82,7 @@ @comment fcntl.h @comment POSIX.1 @@ -6070,9 +6070,9 @@ diff -urN glibc-2.17-c758a686/manual/llio.texi glibc/manual/llio.texi + +@c FIXME this is undocumented: +@c dup3 -diff -urN glibc-2.17-c758a686/manual/locale.texi glibc/manual/locale.texi +diff -urN glibc-2.17-c758a686/manual/locale.texi glibc-2.17-c758a686/manual/locale.texi --- glibc-2.17-c758a686/manual/locale.texi 2014-09-12 16:08:18.266069610 -0400 -+++ glibc/manual/locale.texi 2014-09-12 16:10:06.044792719 -0400 ++++ glibc-2.17-c758a686/manual/locale.texi 2014-09-12 16:10:06.044792719 -0400 @@ -231,6 +231,136 @@ @comment locale.h @comment ISO @@ -6261,9 +6261,9 @@ diff -urN glibc-2.17-c758a686/manual/locale.texi glibc/manual/locale.texi -Note that the loop continues until an read error is detected or until a +Note that the loop continues until a read error is detected or until a definitive (positive or negative) answer is read. -diff -urN glibc-2.17-c758a686/manual/macros.texi glibc/manual/macros.texi +diff -urN glibc-2.17-c758a686/manual/macros.texi glibc-2.17-c758a686/manual/macros.texi --- glibc-2.17-c758a686/manual/macros.texi 2012-12-24 22:02:13.000000000 -0500 -+++ glibc/manual/macros.texi 2014-09-12 16:10:06.045792717 -0400 ++++ glibc-2.17-c758a686/manual/macros.texi 2014-09-12 16:10:06.045792717 -0400 @@ -35,16 +35,225 @@ GNU/Linux and GNU/Hurd systems @end macro @@ -6492,9 +6492,9 @@ diff -urN glibc-2.17-c758a686/manual/macros.texi glibc/manual/macros.texi +@end macro + @end ifclear -diff -urN glibc-2.17-c758a686/manual/maint.texi glibc/manual/maint.texi +diff -urN glibc-2.17-c758a686/manual/maint.texi glibc-2.17-c758a686/manual/maint.texi --- glibc-2.17-c758a686/manual/maint.texi 2012-12-24 22:02:13.000000000 -0500 -+++ glibc/manual/maint.texi 2014-09-12 16:10:06.045792717 -0400 ++++ glibc-2.17-c758a686/manual/maint.texi 2014-09-12 16:10:06.045792717 -0400 @@ -316,7 +316,7 @@ The top-level @file{configure} script uses the shell @code{.} command to read the @file{configure} file in each system-dependent directory @@ -6531,9 +6531,9 @@ diff -urN glibc-2.17-c758a686/manual/maint.texi glibc/manual/maint.texi floating-point coprocessor used with a particular machine should go in @w{@file{sysdeps/@var{machine}/fpu}}. -diff -urN glibc-2.17-c758a686/manual/Makefile glibc/manual/Makefile +diff -urN glibc-2.17-c758a686/manual/Makefile glibc-2.17-c758a686/manual/Makefile --- glibc-2.17-c758a686/manual/Makefile 2014-09-12 16:08:17.823070748 -0400 -+++ glibc/manual/Makefile 2014-09-12 16:10:06.045792717 -0400 ++++ glibc-2.17-c758a686/manual/Makefile 2014-09-12 16:10:06.045792717 -0400 @@ -1,5 +1,4 @@ -# Copyright (C) 1992-2012 -# Free Software Foundation, Inc. @@ -6615,9 +6615,9 @@ diff -urN glibc-2.17-c758a686/manual/Makefile glibc/manual/Makefile include ../Rules -diff -urN glibc-2.17-c758a686/manual/math.texi glibc/manual/math.texi +diff -urN glibc-2.17-c758a686/manual/math.texi glibc-2.17-c758a686/manual/math.texi --- glibc-2.17-c758a686/manual/math.texi 2012-12-24 22:02:13.000000000 -0500 -+++ glibc/manual/math.texi 2014-09-12 16:10:06.043792722 -0400 ++++ glibc-2.17-c758a686/manual/math.texi 2014-09-12 16:10:06.043792722 -0400 @@ -157,6 +157,7 @@ @comment math.h @comment ISO @@ -7422,9 +7422,9 @@ diff -urN glibc-2.17-c758a686/manual/math.texi glibc/manual/math.texi This function initializes all aspects of the random number generator described in @var{buffer} with the data in @var{param}. Here it is especially true that the function does more than just copying the -diff -urN glibc-2.17-c758a686/manual/memory.texi glibc/manual/memory.texi +diff -urN glibc-2.17-c758a686/manual/memory.texi glibc-2.17-c758a686/manual/memory.texi --- glibc-2.17-c758a686/manual/memory.texi 2012-12-24 22:02:13.000000000 -0500 -+++ glibc/manual/memory.texi 2014-09-12 16:10:06.045792717 -0400 ++++ glibc-2.17-c758a686/manual/memory.texi 2014-09-12 16:10:06.045792717 -0400 @@ -302,6 +302,245 @@ @comment malloc.h stdlib.h @comment ISO @@ -8499,9 +8499,9 @@ diff -urN glibc-2.17-c758a686/manual/memory.texi glibc/manual/memory.texi @code{munlockall} unlocks every page in the calling process' virtual address space and turn off @code{MCL_FUTURE} future locking mode. -diff -urN glibc-2.17-c758a686/manual/message.texi glibc/manual/message.texi +diff -urN glibc-2.17-c758a686/manual/message.texi glibc-2.17-c758a686/manual/message.texi --- glibc-2.17-c758a686/manual/message.texi 2012-12-24 22:02:13.000000000 -0500 -+++ glibc/manual/message.texi 2014-09-12 16:10:06.043792722 -0400 ++++ glibc-2.17-c758a686/manual/message.texi 2014-09-12 16:10:06.043792722 -0400 @@ -2,9 +2,9 @@ @c %MENU% How to make the program speak the user's language @chapter Message Translation @@ -8809,9 +8809,9 @@ diff -urN glibc-2.17-c758a686/manual/message.texi glibc/manual/message.texi @node GUI program problems -diff -urN glibc-2.17-c758a686/manual/nss.texi glibc/manual/nss.texi +diff -urN glibc-2.17-c758a686/manual/nss.texi glibc-2.17-c758a686/manual/nss.texi --- glibc-2.17-c758a686/manual/nss.texi 2012-12-24 22:02:13.000000000 -0500 -+++ glibc/manual/nss.texi 2014-09-12 16:10:25.996741462 -0400 ++++ glibc-2.17-c758a686/manual/nss.texi 2014-09-12 16:10:25.996741462 -0400 @@ -10,7 +10,7 @@ using files (e.g., @file{/etc/passwd}), but other nameservices (like the Network Information Service (NIS) and the Domain Name Service (DNS)) @@ -8821,9 +8821,9 @@ diff -urN glibc-2.17-c758a686/manual/nss.texi glibc/manual/nss.texi @Theglibc{} contains a cleaner solution of this problem. It is designed after a method used by Sun Microsystems in the C library of -diff -urN glibc-2.17-c758a686/manual/pattern.texi glibc/manual/pattern.texi +diff -urN glibc-2.17-c758a686/manual/pattern.texi glibc-2.17-c758a686/manual/pattern.texi --- glibc-2.17-c758a686/manual/pattern.texi 2012-12-24 22:02:13.000000000 -0500 -+++ glibc/manual/pattern.texi 2014-09-12 16:10:06.045792717 -0400 ++++ glibc-2.17-c758a686/manual/pattern.texi 2014-09-12 16:10:06.045792717 -0400 @@ -28,6 +28,38 @@ @comment fnmatch.h @comment POSIX.2 @@ -9709,9 +9709,9 @@ diff -urN glibc-2.17-c758a686/manual/pattern.texi glibc/manual/pattern.texi Free the storage used for the word-strings and vector that @code{*@var{word-vector-ptr}} points to. This does not free the structure @code{*@var{word-vector-ptr}} itself---only the other -diff -urN glibc-2.17-c758a686/manual/pipe.texi glibc/manual/pipe.texi +diff -urN glibc-2.17-c758a686/manual/pipe.texi glibc-2.17-c758a686/manual/pipe.texi --- glibc-2.17-c758a686/manual/pipe.texi 2012-12-24 22:02:13.000000000 -0500 -+++ glibc/manual/pipe.texi 2014-09-12 16:10:06.048792709 -0400 ++++ glibc-2.17-c758a686/manual/pipe.texi 2014-09-12 16:10:06.048792709 -0400 @@ -56,6 +56,8 @@ @comment unistd.h @comment POSIX.1 @@ -9850,9 +9850,9 @@ diff -urN glibc-2.17-c758a686/manual/pipe.texi glibc/manual/pipe.texi The @code{mkfifo} function makes a FIFO special file with name @var{filename}. The @var{mode} argument is used to set the file's permissions; see @ref{Setting Permissions}. -diff -urN glibc-2.17-c758a686/manual/platform.texi glibc/manual/platform.texi +diff -urN glibc-2.17-c758a686/manual/platform.texi glibc-2.17-c758a686/manual/platform.texi --- glibc-2.17-c758a686/manual/platform.texi 2014-09-12 16:08:17.865070640 -0400 -+++ glibc/manual/platform.texi 2014-09-12 16:10:06.046792714 -0400 ++++ glibc-2.17-c758a686/manual/platform.texi 2014-09-12 16:10:06.046792714 -0400 @@ -15,6 +15,7 @@ operating system are declared in @file{sys/platform/ppc.h}. @@ -9920,9 +9920,9 @@ diff -urN glibc-2.17-c758a686/manual/platform.texi glibc/manual/platform.texi +@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}} Set the Program Priority Register to medium low value. @end deftypefun -diff -urN glibc-2.17-c758a686/manual/process.texi glibc/manual/process.texi +diff -urN glibc-2.17-c758a686/manual/process.texi glibc-2.17-c758a686/manual/process.texi --- glibc-2.17-c758a686/manual/process.texi 2012-12-24 22:02:13.000000000 -0500 -+++ glibc/manual/process.texi 2014-09-12 16:10:06.044792719 -0400 ++++ glibc-2.17-c758a686/manual/process.texi 2014-09-12 16:10:06.044792719 -0400 @@ -1,4 +1,4 @@ -@node Processes, Job Control, Program Basics, Top +@node Processes, Inter-Process Communication, Program Basics, Top @@ -10153,9 +10153,9 @@ diff -urN glibc-2.17-c758a686/manual/process.texi glibc/manual/process.texi If @var{usage} is a null pointer, @code{wait3} is equivalent to @code{waitpid (-1, @var{status-ptr}, @var{options})}. -diff -urN glibc-2.17-c758a686/manual/resource.texi glibc/manual/resource.texi +diff -urN glibc-2.17-c758a686/manual/resource.texi glibc-2.17-c758a686/manual/resource.texi --- glibc-2.17-c758a686/manual/resource.texi 2012-12-24 22:02:13.000000000 -0500 -+++ glibc/manual/resource.texi 2014-09-12 16:10:06.044792719 -0400 ++++ glibc-2.17-c758a686/manual/resource.texi 2014-09-12 16:10:06.044792719 -0400 @@ -25,6 +25,8 @@ @comment sys/resource.h @comment BSD @@ -10493,9 +10493,9 @@ diff -urN glibc-2.17-c758a686/manual/resource.texi glibc/manual/resource.texi place at most @var{nelem} elements into the array but never more than three elements. The return value is the number of elements written to @var{loadavg}, or -1 on error. -diff -urN glibc-2.17-c758a686/manual/search.texi glibc/manual/search.texi +diff -urN glibc-2.17-c758a686/manual/search.texi glibc-2.17-c758a686/manual/search.texi --- glibc-2.17-c758a686/manual/search.texi 2012-12-24 22:02:13.000000000 -0500 -+++ glibc/manual/search.texi 2014-09-12 16:10:06.043792722 -0400 ++++ glibc-2.17-c758a686/manual/search.texi 2014-09-12 16:10:06.043792722 -0400 @@ -71,7 +71,8 @@ @comment search.h @@ -10693,9 +10693,9 @@ diff -urN glibc-2.17-c758a686/manual/search.texi glibc/manual/search.texi For each node in the tree with a node pointed to by @var{root}, the @code{twalk} function calls the function provided by the parameter @var{action}. For leaf nodes the function is called exactly once with -diff -urN glibc-2.17-c758a686/manual/setjmp.texi glibc/manual/setjmp.texi +diff -urN glibc-2.17-c758a686/manual/setjmp.texi glibc-2.17-c758a686/manual/setjmp.texi --- glibc-2.17-c758a686/manual/setjmp.texi 2012-12-24 22:02:13.000000000 -0500 -+++ glibc/manual/setjmp.texi 2014-09-12 16:10:06.043792722 -0400 ++++ glibc-2.17-c758a686/manual/setjmp.texi 2014-09-12 16:10:06.043792722 -0400 @@ -107,6 +107,10 @@ @comment setjmp.h @comment ISO @@ -10909,9 +10909,9 @@ diff -urN glibc-2.17-c758a686/manual/setjmp.texi glibc/manual/setjmp.texi +are executed is a safer approach. Since @code{swapcontext} is saving the +current context it is possible to have multiple different scheduling points +in the code. Execution will always resume where it was left. -diff -urN glibc-2.17-c758a686/manual/signal.texi glibc/manual/signal.texi +diff -urN glibc-2.17-c758a686/manual/signal.texi glibc-2.17-c758a686/manual/signal.texi --- glibc-2.17-c758a686/manual/signal.texi 2012-12-24 22:02:13.000000000 -0500 -+++ glibc/manual/signal.texi 2014-09-12 16:10:06.045792717 -0400 ++++ glibc-2.17-c758a686/manual/signal.texi 2014-09-12 16:10:06.045792717 -0400 @@ -889,6 +889,20 @@ @comment string.h @comment GNU @@ -11242,9 +11242,9 @@ diff -urN glibc-2.17-c758a686/manual/signal.texi glibc/manual/signal.texi This function is the equivalent of @code{sigsuspend} (@pxref{Waiting for a Signal}): it sets the calling process's signal mask to @var{mask}, and waits for a signal to arrive. On return the previous set of blocked -diff -urN glibc-2.17-c758a686/manual/socket.texi glibc/manual/socket.texi +diff -urN glibc-2.17-c758a686/manual/socket.texi glibc-2.17-c758a686/manual/socket.texi --- glibc-2.17-c758a686/manual/socket.texi 2012-12-24 22:02:13.000000000 -0500 -+++ glibc/manual/socket.texi 2014-09-12 16:10:06.046792714 -0400 ++++ glibc-2.17-c758a686/manual/socket.texi 2014-09-12 16:10:06.046792714 -0400 @@ -394,6 +394,8 @@ @comment sys/socket.h @comment BSD @@ -12345,9 +12345,9 @@ diff -urN glibc-2.17-c758a686/manual/socket.texi glibc/manual/socket.texi +@c libc_lock_unlock @aculock This function closes the networks database. @end deftypefun -diff -urN glibc-2.17-c758a686/manual/startup.texi glibc/manual/startup.texi +diff -urN glibc-2.17-c758a686/manual/startup.texi glibc-2.17-c758a686/manual/startup.texi --- glibc-2.17-c758a686/manual/startup.texi 2012-12-24 22:02:13.000000000 -0500 -+++ glibc/manual/startup.texi 2014-09-12 16:10:06.042792724 -0400 ++++ glibc-2.17-c758a686/manual/startup.texi 2014-09-12 16:10:06.042792724 -0400 @@ -41,7 +41,7 @@ * Program Termination:: Telling the system you're done; return status @end menu @@ -12572,9 +12572,9 @@ diff -urN glibc-2.17-c758a686/manual/startup.texi glibc/manual/startup.texi The @code{_Exit} function is the @w{ISO C} equivalent to @code{_exit}. The @w{ISO C} committee members were not sure whether the definitions of @code{_exit} and @code{_Exit} were compatible so they have not used the -diff -urN glibc-2.17-c758a686/manual/stdio.texi glibc/manual/stdio.texi +diff -urN glibc-2.17-c758a686/manual/stdio.texi glibc-2.17-c758a686/manual/stdio.texi --- glibc-2.17-c758a686/manual/stdio.texi 2012-12-24 22:02:13.000000000 -0500 -+++ glibc/manual/stdio.texi 2014-09-12 16:10:06.043792722 -0400 ++++ glibc-2.17-c758a686/manual/stdio.texi 2014-09-12 16:10:06.043792722 -0400 @@ -148,6 +148,8 @@ @comment stdio.h @comment ISO @@ -13803,9 +13803,9 @@ diff -urN glibc-2.17-c758a686/manual/stdio.texi glibc/manual/stdio.texi This function allows the introduction of new severity classes which can be addressed by the @var{severity} parameter of the @code{fmtmsg} function. The @var{severity} parameter of @code{addseverity} must match the value -diff -urN glibc-2.17-c758a686/manual/string.texi glibc/manual/string.texi +diff -urN glibc-2.17-c758a686/manual/string.texi glibc-2.17-c758a686/manual/string.texi --- glibc-2.17-c758a686/manual/string.texi 2012-12-24 22:02:13.000000000 -0500 -+++ glibc/manual/string.texi 2014-09-12 16:10:06.045792717 -0400 ++++ glibc-2.17-c758a686/manual/string.texi 2014-09-12 16:10:06.045792717 -0400 @@ -200,7 +200,7 @@ @cindex parameter promotion Some of the memory and string functions take single characters as @@ -14777,9 +14777,9 @@ diff -urN glibc-2.17-c758a686/manual/string.texi glibc/manual/string.texi + +@c FIXME this are undocumented: +@c strcasecmp_l @safety{@mtsafe{}@assafe{}@acsafe{}} see strcasecmp -diff -urN glibc-2.17-c758a686/manual/summary.awk glibc/manual/summary.awk +diff -urN glibc-2.17-c758a686/manual/summary.awk glibc-2.17-c758a686/manual/summary.awk --- glibc-2.17-c758a686/manual/summary.awk 2012-12-24 22:02:13.000000000 -0500 -+++ glibc/manual/summary.awk 2014-09-12 16:10:06.042792724 -0400 ++++ glibc-2.17-c758a686/manual/summary.awk 2014-09-12 16:10:06.042792724 -0400 @@ -1,5 +1,5 @@ # awk script to create summary.texinfo from the library texinfo files. -# Copyright (C) 1992, 1993, 1997, 2001 Free Software Foundation, Inc. @@ -14787,9 +14787,9 @@ diff -urN glibc-2.17-c758a686/manual/summary.awk glibc/manual/summary.awk # This file is part of the GNU C Library. # The GNU C Library is free software; you can redistribute it and/or -diff -urN glibc-2.17-c758a686/manual/sysinfo.texi glibc/manual/sysinfo.texi +diff -urN glibc-2.17-c758a686/manual/sysinfo.texi glibc-2.17-c758a686/manual/sysinfo.texi --- glibc-2.17-c758a686/manual/sysinfo.texi 2012-12-24 22:02:13.000000000 -0500 -+++ glibc/manual/sysinfo.texi 2014-09-12 16:10:06.048792709 -0400 ++++ glibc-2.17-c758a686/manual/sysinfo.texi 2014-09-12 16:10:06.048792709 -0400 @@ -91,6 +91,9 @@ @comment unistd.h @comment BSD @@ -15063,9 +15063,9 @@ diff -urN glibc-2.17-c758a686/manual/sysinfo.texi glibc/manual/sysinfo.texi the form of an array of integers. Each component of the path is one element of the array, in order. @var{nlen} is the number of components in the path. -diff -urN glibc-2.17-c758a686/manual/syslog.texi glibc/manual/syslog.texi +diff -urN glibc-2.17-c758a686/manual/syslog.texi glibc-2.17-c758a686/manual/syslog.texi --- glibc-2.17-c758a686/manual/syslog.texi 2012-12-24 22:02:13.000000000 -0500 -+++ glibc/manual/syslog.texi 2014-09-12 16:10:06.044792719 -0400 ++++ glibc-2.17-c758a686/manual/syslog.texi 2014-09-12 16:10:06.044792719 -0400 @@ -147,6 +147,17 @@ @comment syslog.h @comment BSD @@ -15162,9 +15162,9 @@ diff -urN glibc-2.17-c758a686/manual/syslog.texi glibc/manual/syslog.texi @code{setlogmask} sets a mask (the ``logmask'') that determines which future @code{syslog} calls shall be ignored. If a program has not -diff -urN glibc-2.17-c758a686/manual/terminal.texi glibc/manual/terminal.texi +diff -urN glibc-2.17-c758a686/manual/terminal.texi glibc-2.17-c758a686/manual/terminal.texi --- glibc-2.17-c758a686/manual/terminal.texi 2012-12-24 22:02:13.000000000 -0500 -+++ glibc/manual/terminal.texi 2014-09-12 16:10:06.047792712 -0400 ++++ glibc-2.17-c758a686/manual/terminal.texi 2014-09-12 16:10:06.047792712 -0400 @@ -44,6 +44,9 @@ @comment unistd.h @comment POSIX.1 @@ -15536,9 +15536,9 @@ diff -urN glibc-2.17-c758a686/manual/terminal.texi glibc/manual/terminal.texi This function is similar to the @code{openpty} function, but in addition, forks a new process (@pxref{Creating a Process}) and makes the newly opened slave pseudo-terminal device the controlling terminal -diff -urN glibc-2.17-c758a686/manual/texinfo.tex glibc/manual/texinfo.tex +diff -urN glibc-2.17-c758a686/manual/texinfo.tex glibc-2.17-c758a686/manual/texinfo.tex --- glibc-2.17-c758a686/manual/texinfo.tex 2012-12-24 22:02:13.000000000 -0500 -+++ glibc/manual/texinfo.tex 2014-09-12 16:10:06.047792712 -0400 ++++ glibc-2.17-c758a686/manual/texinfo.tex 2014-09-12 16:10:06.047792712 -0400 @@ -3,11 +3,11 @@ % Load plain if necessary, i.e., if running under initex. \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi @@ -17103,9 +17103,9 @@ diff -urN glibc-2.17-c758a686/manual/texinfo.tex glibc/manual/texinfo.tex } % Make _ and + \other characters, temporarily. -diff -urN glibc-2.17-c758a686/manual/threads.texi glibc/manual/threads.texi +diff -urN glibc-2.17-c758a686/manual/threads.texi glibc-2.17-c758a686/manual/threads.texi --- glibc-2.17-c758a686/manual/threads.texi 1969-12-31 19:00:00.000000000 -0500 -+++ glibc/manual/threads.texi 2014-09-12 16:10:06.042792724 -0400 ++++ glibc-2.17-c758a686/manual/threads.texi 2014-09-12 16:10:06.042792724 -0400 @@ -0,0 +1,254 @@ +@node POSIX Threads +@c @node POSIX Threads, Internal Probes, Cryptographic Functions, Top @@ -17361,9 +17361,9 @@ diff -urN glibc-2.17-c758a686/manual/threads.texi glibc/manual/threads.texi +@c pthread_timedjoin_np +@c pthread_tryjoin_np +@c pthread_yield -diff -urN glibc-2.17-c758a686/manual/time.texi glibc/manual/time.texi +diff -urN glibc-2.17-c758a686/manual/time.texi glibc-2.17-c758a686/manual/time.texi --- glibc-2.17-c758a686/manual/time.texi 2012-12-24 22:02:13.000000000 -0500 -+++ glibc/manual/time.texi 2014-09-12 16:10:06.044792719 -0400 ++++ glibc-2.17-c758a686/manual/time.texi 2014-09-12 16:10:06.044792719 -0400 @@ -79,6 +79,7 @@ @comment time.h @comment ISO @@ -18113,9 +18113,9 @@ diff -urN glibc-2.17-c758a686/manual/time.texi glibc/manual/time.texi If resolution to seconds is not enough the @code{nanosleep} function can be used. As the name suggests the sleep interval can be specified in nanoseconds. The actual elapsed time of the sleep interval might be -diff -urN glibc-2.17-c758a686/manual/tsort.awk glibc/manual/tsort.awk +diff -urN glibc-2.17-c758a686/manual/tsort.awk glibc-2.17-c758a686/manual/tsort.awk --- glibc-2.17-c758a686/manual/tsort.awk 2012-12-24 22:02:13.000000000 -0500 -+++ glibc/manual/tsort.awk 2014-09-12 16:10:06.043792722 -0400 ++++ glibc-2.17-c758a686/manual/tsort.awk 2014-09-12 16:10:06.043792722 -0400 @@ -1,6 +1,6 @@ #! /usr/bin/awk -f # Generate topologically sorted list of manual chapters. @@ -18124,9 +18124,9 @@ diff -urN glibc-2.17-c758a686/manual/tsort.awk glibc/manual/tsort.awk # Written by Ulrich Drepper , 1998. BEGIN { -diff -urN glibc-2.17-c758a686/manual/users.texi glibc/manual/users.texi +diff -urN glibc-2.17-c758a686/manual/users.texi glibc-2.17-c758a686/manual/users.texi --- glibc-2.17-c758a686/manual/users.texi 2012-12-24 22:02:13.000000000 -0500 -+++ glibc/manual/users.texi 2014-09-12 16:10:06.043792722 -0400 ++++ glibc-2.17-c758a686/manual/users.texi 2014-09-12 16:10:06.043792722 -0400 @@ -71,7 +71,7 @@ @cindex group ID Users are classified in @dfn{groups}. Each user name belongs to one diff --git a/SOURCES/glibc-power-libm-test-ulps.patch b/SOURCES/glibc-power-libm-test-ulps.patch deleted file mode 100644 index 2b7d277..0000000 --- a/SOURCES/glibc-power-libm-test-ulps.patch +++ /dev/null @@ -1,21 +0,0 @@ -# -# On POWER this patch also fixes test-ildoubl and test-ldouble failures where tan -# rounded toward zero had acceptable 1 ULP error. Upstream is using 3 ULP, but -# we prefer to keep the bound tighter unless we have a reason not to. -# -# This is the generic power version of this patch that applies cleanly when the -# ppc64le patches are not being applied. See glibc-ppc64le-46.patch for the ppc64le -# version. -# ---- glibc-2.17-c758a686/sysdeps/powerpc/fpu/libm-test-ulps 2014-07-26 20:28:21.120919701 -0400 -+++ glibc-2.17-c758a686/sysdeps/powerpc/fpu/libm-test-ulps 2014-07-26 20:47:17.657901758 -0400 -@@ -2641,6 +2641,9 @@ - ifloat: 1 - ildouble: 2 - ldouble: 2 -+Test "tan_towardzero (2) == -2.1850398632615189916433061023136825434320": -+ildouble: 1 -+ldouble: 1 - Test "tan_towardzero (3) == -0.1425465430742778052956354105339134932261": - float: 1 - ifloat: 1 diff --git a/SOURCES/glibc-powerpc-ldbl_high.patch b/SOURCES/glibc-powerpc-ldbl_high.patch index b0b1c5b..68faeee 100644 --- a/SOURCES/glibc-powerpc-ldbl_high.patch +++ b/SOURCES/glibc-powerpc-ldbl_high.patch @@ -1,6 +1,6 @@ -diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/math_ldbl.h glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/math_ldbl.h ---- glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/math_ldbl.h 2014-05-27 19:58:07.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/math_ldbl.h 2014-05-27 19:59:00.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/math_ldbl.h glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/math_ldbl.h +--- glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/math_ldbl.h 2014-05-27 19:58:07.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/math_ldbl.h 2014-05-27 19:59:00.000000000 -0500 @@ -190,6 +190,9 @@ # define ldbl_unpack default_ldbl_unpack #endif diff --git a/SOURCES/glibc-ppc64le-01.patch b/SOURCES/glibc-ppc64le-01.patch index ef7afd6..e2a86d7 100644 --- a/SOURCES/glibc-ppc64le-01.patch +++ b/SOURCES/glibc-ppc64le-01.patch @@ -9,9 +9,9 @@ # machine specific Makefiles to define different abifiles names # (for instance *-le.abilist for powerpc64le). # -diff -urN glibc-2.17-c758a686.orig/Makerules glibc-2.17-c758a686.new/Makerules ---- glibc-2.17-c758a686.orig/Makerules 2014-06-02 15:29:42.000000000 +0000 -+++ glibc-2.17-c758a686.new/Makerules 2014-06-02 15:25:21.000000000 +0000 +diff -urN glibc-2.17-c758a686/Makerules glibc-2.17-c758a686/Makerules +--- glibc-2.17-c758a686/Makerules 2014-06-02 15:29:42.000000000 +0000 ++++ glibc-2.17-c758a686/Makerules 2014-06-02 15:25:21.000000000 +0000 @@ -1152,6 +1152,14 @@ LC_ALL=C $(OBJDUMP) --dynamic-syms $< > $@T mv -f $@T $@ @@ -70,9 +70,9 @@ diff -urN glibc-2.17-c758a686.orig/Makerules glibc-2.17-c758a686.new/Makerules define update-abi @if cmp -s $^ 2> /dev/null; \ then \ -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/Makefile glibc-2.17-c758a686.new/sysdeps/powerpc/Makefile ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/Makefile 2014-06-02 15:29:42.000000000 +0000 -+++ glibc-2.17-c758a686.new/sysdeps/powerpc/Makefile 2014-06-02 15:25:21.000000000 +0000 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/Makefile glibc-2.17-c758a686/sysdeps/powerpc/Makefile +--- glibc-2.17-c758a686/sysdeps/powerpc/Makefile 2014-06-02 15:29:42.000000000 +0000 ++++ glibc-2.17-c758a686/sysdeps/powerpc/Makefile 2014-06-02 15:25:21.000000000 +0000 @@ -27,3 +27,7 @@ sysdep_headers += sys/platform/ppc.h tests += test-gettimebase diff --git a/SOURCES/glibc-ppc64le-02.patch b/SOURCES/glibc-ppc64le-02.patch index 0dcac9c..3878826 100644 --- a/SOURCES/glibc-ppc64le-02.patch +++ b/SOURCES/glibc-ppc64le-02.patch @@ -6,9 +6,9 @@ # # This patch is the abifiles for powerpc64le based on GLIBC 2.17. # -diff -urN glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/ld-le.abilist glibc-2.17-c758a686.new/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/ld-le.abilist ---- glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/ld-le.abilist 1970-01-01 00:00:00.000000000 +0000 -+++ glibc-2.17-c758a686.new/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/ld-le.abilist 2014-06-02 15:22:40.000000000 +0000 +diff -urN glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/ld-le.abilist glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/ld-le.abilist +--- glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/ld-le.abilist 1970-01-01 00:00:00.000000000 +0000 ++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/ld-le.abilist 2014-06-02 15:22:40.000000000 +0000 @@ -0,0 +1,11 @@ +GLIBC_2.17 + GLIBC_2.17 A @@ -21,16 +21,16 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/powerpc/powerpc64/npt + free F + malloc F + realloc F -diff -urN glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libBrokenLocale-le.abilist glibc-2.17-c758a686.new/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libBrokenLocale-le.abilist ---- glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libBrokenLocale-le.abilist 1970-01-01 00:00:00.000000000 +0000 -+++ glibc-2.17-c758a686.new/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libBrokenLocale-le.abilist 2014-06-02 15:22:40.000000000 +0000 +diff -urN glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libBrokenLocale-le.abilist glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libBrokenLocale-le.abilist +--- glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libBrokenLocale-le.abilist 1970-01-01 00:00:00.000000000 +0000 ++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libBrokenLocale-le.abilist 2014-06-02 15:22:40.000000000 +0000 @@ -0,0 +1,3 @@ +GLIBC_2.17 + GLIBC_2.17 A + __ctype_get_mb_cur_max F -diff -urN glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libanl-le.abilist glibc-2.17-c758a686.new/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libanl-le.abilist ---- glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libanl-le.abilist 1970-01-01 00:00:00.000000000 +0000 -+++ glibc-2.17-c758a686.new/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libanl-le.abilist 2014-06-02 15:22:40.000000000 +0000 +diff -urN glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libanl-le.abilist glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libanl-le.abilist +--- glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libanl-le.abilist 1970-01-01 00:00:00.000000000 +0000 ++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libanl-le.abilist 2014-06-02 15:22:40.000000000 +0000 @@ -0,0 +1,6 @@ +GLIBC_2.17 + GLIBC_2.17 A @@ -38,9 +38,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/powerpc/powerpc64/npt + gai_error F + gai_suspend F + getaddrinfo_a F -diff -urN glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libc-le.abilist glibc-2.17-c758a686.new/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libc-le.abilist ---- glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libc-le.abilist 1970-01-01 00:00:00.000000000 +0000 -+++ glibc-2.17-c758a686.new/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libc-le.abilist 2014-06-02 15:22:40.000000000 +0000 +diff -urN glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libc-le.abilist glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libc-le.abilist +--- glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libc-le.abilist 1970-01-01 00:00:00.000000000 +0000 ++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libc-le.abilist 2014-06-02 15:22:40.000000000 +0000 @@ -0,0 +1,2168 @@ +GLIBC_2.17 + GLIBC_2.17 A @@ -2210,9 +2210,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/powerpc/powerpc64/npt + xencrypt F + xprt_register F + xprt_unregister F -diff -urN glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libcrypt-le.abilist glibc-2.17-c758a686.new/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libcrypt-le.abilist ---- glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libcrypt-le.abilist 1970-01-01 00:00:00.000000000 +0000 -+++ glibc-2.17-c758a686.new/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libcrypt-le.abilist 2014-06-02 15:22:40.000000000 +0000 +diff -urN glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libcrypt-le.abilist glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libcrypt-le.abilist +--- glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libcrypt-le.abilist 1970-01-01 00:00:00.000000000 +0000 ++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libcrypt-le.abilist 2014-06-02 15:22:40.000000000 +0000 @@ -0,0 +1,9 @@ +GLIBC_2.17 + GLIBC_2.17 A @@ -2223,9 +2223,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/powerpc/powerpc64/npt + fcrypt F + setkey F + setkey_r F -diff -urN glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libdl-le.abilist glibc-2.17-c758a686.new/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libdl-le.abilist ---- glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libdl-le.abilist 1970-01-01 00:00:00.000000000 +0000 -+++ glibc-2.17-c758a686.new/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libdl-le.abilist 2014-06-02 15:22:40.000000000 +0000 +diff -urN glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libdl-le.abilist glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libdl-le.abilist +--- glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libdl-le.abilist 1970-01-01 00:00:00.000000000 +0000 ++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libdl-le.abilist 2014-06-02 15:22:40.000000000 +0000 @@ -0,0 +1,11 @@ +GLIBC_2.17 + GLIBC_2.17 A @@ -2238,9 +2238,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/powerpc/powerpc64/npt + dlopen F + dlsym F + dlvsym F -diff -urN glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libm-le.abilist glibc-2.17-c758a686.new/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libm-le.abilist ---- glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libm-le.abilist 1970-01-01 00:00:00.000000000 +0000 -+++ glibc-2.17-c758a686.new/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libm-le.abilist 2014-06-02 15:22:40.000000000 +0000 +diff -urN glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libm-le.abilist glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libm-le.abilist +--- glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libm-le.abilist 1970-01-01 00:00:00.000000000 +0000 ++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libm-le.abilist 2014-06-02 15:22:40.000000000 +0000 @@ -0,0 +1,402 @@ +GLIBC_2.17 + GLIBC_2.17 A @@ -2644,9 +2644,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/powerpc/powerpc64/npt + yn F + ynf F + ynl F -diff -urN glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libnsl-le.abilist glibc-2.17-c758a686.new/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libnsl-le.abilist ---- glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libnsl-le.abilist 1970-01-01 00:00:00.000000000 +0000 -+++ glibc-2.17-c758a686.new/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libnsl-le.abilist 2014-06-02 15:22:40.000000000 +0000 +diff -urN glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libnsl-le.abilist glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libnsl-le.abilist +--- glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libnsl-le.abilist 1970-01-01 00:00:00.000000000 +0000 ++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libnsl-le.abilist 2014-06-02 15:22:40.000000000 +0000 @@ -0,0 +1,123 @@ +GLIBC_2.17 + GLIBC_2.17 A @@ -2771,9 +2771,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/powerpc/powerpc64/npt + ypbinderr_string F + yperr_string F + ypprot_err F -diff -urN glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libpthread-le.abilist glibc-2.17-c758a686.new/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libpthread-le.abilist ---- glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libpthread-le.abilist 1970-01-01 00:00:00.000000000 +0000 -+++ glibc-2.17-c758a686.new/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libpthread-le.abilist 2014-06-02 15:22:40.000000000 +0000 +diff -urN glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libpthread-le.abilist glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libpthread-le.abilist +--- glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libpthread-le.abilist 1970-01-01 00:00:00.000000000 +0000 ++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libpthread-le.abilist 2014-06-02 15:22:40.000000000 +0000 @@ -0,0 +1,224 @@ +GLIBC_2.17 + GLIBC_2.17 A @@ -2999,9 +2999,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/powerpc/powerpc64/npt + wait F + waitpid F + write F -diff -urN glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libresolv-le.abilist glibc-2.17-c758a686.new/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libresolv-le.abilist ---- glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libresolv-le.abilist 1970-01-01 00:00:00.000000000 +0000 -+++ glibc-2.17-c758a686.new/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libresolv-le.abilist 2014-06-02 15:22:40.000000000 +0000 +diff -urN glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libresolv-le.abilist glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libresolv-le.abilist +--- glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libresolv-le.abilist 1970-01-01 00:00:00.000000000 +0000 ++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libresolv-le.abilist 2014-06-02 15:22:40.000000000 +0000 @@ -0,0 +1,93 @@ +GLIBC_2.17 + GLIBC_2.17 A @@ -3096,9 +3096,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/powerpc/powerpc64/npt + res_gethostbyname2 F + res_send_setqhook F + res_send_setrhook F -diff -urN glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/librt-le.abilist glibc-2.17-c758a686.new/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/librt-le.abilist ---- glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/librt-le.abilist 1970-01-01 00:00:00.000000000 +0000 -+++ glibc-2.17-c758a686.new/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/librt-le.abilist 2014-06-02 15:22:40.000000000 +0000 +diff -urN glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/librt-le.abilist glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/librt-le.abilist +--- glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/librt-le.abilist 1970-01-01 00:00:00.000000000 +0000 ++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/librt-le.abilist 2014-06-02 15:22:40.000000000 +0000 @@ -0,0 +1,37 @@ +GLIBC_2.17 + GLIBC_2.17 A @@ -3137,9 +3137,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/powerpc/powerpc64/npt + timer_getoverrun F + timer_gettime F + timer_settime F -diff -urN glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libthread_db-le.abilist glibc-2.17-c758a686.new/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libthread_db-le.abilist ---- glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libthread_db-le.abilist 1970-01-01 00:00:00.000000000 +0000 -+++ glibc-2.17-c758a686.new/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libthread_db-le.abilist 2014-06-02 15:22:40.000000000 +0000 +diff -urN glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libthread_db-le.abilist glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libthread_db-le.abilist +--- glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libthread_db-le.abilist 1970-01-01 00:00:00.000000000 +0000 ++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libthread_db-le.abilist 2014-06-02 15:22:40.000000000 +0000 @@ -0,0 +1,42 @@ +GLIBC_2.17 + GLIBC_2.17 A @@ -3183,9 +3183,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/powerpc/powerpc64/npt + td_thr_tlsbase F + td_thr_tsd F + td_thr_validate F -diff -urN glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libutil-le.abilist glibc-2.17-c758a686.new/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libutil-le.abilist ---- glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libutil-le.abilist 1970-01-01 00:00:00.000000000 +0000 -+++ glibc-2.17-c758a686.new/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libutil-le.abilist 2014-06-02 15:22:40.000000000 +0000 +diff -urN glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libutil-le.abilist glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libutil-le.abilist +--- glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libutil-le.abilist 1970-01-01 00:00:00.000000000 +0000 ++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/libutil-le.abilist 2014-06-02 15:22:40.000000000 +0000 @@ -0,0 +1,8 @@ +GLIBC_2.17 + GLIBC_2.17 A diff --git a/SOURCES/glibc-ppc64le-03.patch b/SOURCES/glibc-ppc64le-03.patch index 0280c65..40b6e71 100644 --- a/SOURCES/glibc-ppc64le-03.patch +++ b/SOURCES/glibc-ppc64le-03.patch @@ -4,9 +4,9 @@ # # Update miscellaneous scripts from upstream. # -diff -urN glibc-2.17-c758a686.orig/scripts/config.guess glibc-2.17-c758a686.diff/scripts/config.guess ---- glibc-2.17-c758a686.orig/scripts/config.guess 2014-05-26 15:59:45.000000000 -0500 -+++ glibc-2.17-c758a686.diff/scripts/config.guess 2014-05-26 16:01:00.000000000 -0500 +diff -urN glibc-2.17-c758a686/scripts/config.guess glibc-2.17-c758a686/scripts/config.guess +--- glibc-2.17-c758a686/scripts/config.guess 2014-05-26 15:59:45.000000000 -0500 ++++ glibc-2.17-c758a686/scripts/config.guess 2014-05-26 16:01:00.000000000 -0500 @@ -1,14 +1,12 @@ #! /bin/sh # Attempt to guess a canonical system name. @@ -320,9 +320,9 @@ diff -urN glibc-2.17-c758a686.orig/scripts/config.guess glibc-2.17-c758a686.diff echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE} exit ;; *:procnto*:*:* | *:QNX:[0123456789]*:*) -diff -urN glibc-2.17-c758a686.orig/scripts/config.sub glibc-2.17-c758a686.diff/scripts/config.sub ---- glibc-2.17-c758a686.orig/scripts/config.sub 2014-05-26 15:59:45.000000000 -0500 -+++ glibc-2.17-c758a686.diff/scripts/config.sub 2014-05-26 16:00:52.000000000 -0500 +diff -urN glibc-2.17-c758a686/scripts/config.sub glibc-2.17-c758a686/scripts/config.sub +--- glibc-2.17-c758a686/scripts/config.sub 2014-05-26 15:59:45.000000000 -0500 ++++ glibc-2.17-c758a686/scripts/config.sub 2014-05-26 16:00:52.000000000 -0500 @@ -1,24 +1,18 @@ #! /bin/sh # Configuration validation subroutine script. @@ -578,9 +578,9 @@ diff -urN glibc-2.17-c758a686.orig/scripts/config.sub glibc-2.17-c758a686.diff/s or32-*) os=-coff ;; -diff -urN glibc-2.17-c758a686.orig/scripts/install-sh glibc-2.17-c758a686.diff/scripts/install-sh ---- glibc-2.17-c758a686.orig/scripts/install-sh 2014-05-26 15:59:45.000000000 -0500 -+++ glibc-2.17-c758a686.diff/scripts/install-sh 2014-05-26 16:00:34.000000000 -0500 +diff -urN glibc-2.17-c758a686/scripts/install-sh glibc-2.17-c758a686/scripts/install-sh +--- glibc-2.17-c758a686/scripts/install-sh 2014-05-26 15:59:45.000000000 -0500 ++++ glibc-2.17-c758a686/scripts/install-sh 2014-05-26 16:00:34.000000000 -0500 @@ -1,250 +1,527 @@ -#! /bin/sh -# @@ -1324,9 +1324,9 @@ diff -urN glibc-2.17-c758a686.orig/scripts/install-sh glibc-2.17-c758a686.diff/s +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC" +# End: -diff -urN glibc-2.17-c758a686.orig/scripts/mkinstalldirs glibc-2.17-c758a686.diff/scripts/mkinstalldirs ---- glibc-2.17-c758a686.orig/scripts/mkinstalldirs 2014-05-26 15:59:45.000000000 -0500 -+++ glibc-2.17-c758a686.diff/scripts/mkinstalldirs 2014-05-26 16:00:34.000000000 -0500 +diff -urN glibc-2.17-c758a686/scripts/mkinstalldirs glibc-2.17-c758a686/scripts/mkinstalldirs +--- glibc-2.17-c758a686/scripts/mkinstalldirs 2014-05-26 15:59:45.000000000 -0500 ++++ glibc-2.17-c758a686/scripts/mkinstalldirs 2014-05-26 16:00:34.000000000 -0500 @@ -1,38 +1,162 @@ #! /bin/sh # mkinstalldirs --- make directory hierarchy @@ -1515,9 +1515,9 @@ diff -urN glibc-2.17-c758a686.orig/scripts/mkinstalldirs glibc-2.17-c758a686.dif +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC" +# End: -diff -urN glibc-2.17-c758a686.orig/scripts/move-if-change glibc-2.17-c758a686.diff/scripts/move-if-change ---- glibc-2.17-c758a686.orig/scripts/move-if-change 2014-05-26 15:59:45.000000000 -0500 -+++ glibc-2.17-c758a686.diff/scripts/move-if-change 2014-05-26 16:00:34.000000000 -0500 +diff -urN glibc-2.17-c758a686/scripts/move-if-change glibc-2.17-c758a686/scripts/move-if-change +--- glibc-2.17-c758a686/scripts/move-if-change 2014-05-26 15:59:45.000000000 -0500 ++++ glibc-2.17-c758a686/scripts/move-if-change 2014-05-26 16:00:34.000000000 -0500 @@ -1,17 +1,83 @@ #!/bin/sh # Like mv $1 $2, but if the files are the same, just delete $1. diff --git a/SOURCES/glibc-ppc64le-04.patch b/SOURCES/glibc-ppc64le-04.patch index 2afd9f3..8f6840b 100644 --- a/SOURCES/glibc-ppc64le-04.patch +++ b/SOURCES/glibc-ppc64le-04.patch @@ -24,9 +24,9 @@ # * sysdeps/ieee754/ldbl-128ibm/strtold_l.c: Likewise. # * sysdeps/ieee754/ldbl-128ibm/x2y2m1l.c: Likewise. # -diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/e_exp10l.c glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/e_exp10l.c ---- glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/e_exp10l.c 2014-05-26 21:08:01.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/e_exp10l.c 2014-05-26 21:08:10.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/e_exp10l.c glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/e_exp10l.c +--- glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/e_exp10l.c 2014-05-26 21:08:01.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/e_exp10l.c 2014-05-26 21:08:10.000000000 -0500 @@ -36,9 +36,9 @@ else if (arg > LDBL_MAX_10_EXP + 1) return LDBL_MAX * LDBL_MAX; @@ -40,9 +40,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/e_exp10l.c glibc- exp_high = arg_high * log10_high; exp_low = arg_high * log10_low + arg_low * M_LN10l; return __ieee754_expl (exp_high) * __ieee754_expl (exp_low); -diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/e_expl.c glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/e_expl.c ---- glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/e_expl.c 2014-05-26 21:08:01.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/e_expl.c 2014-05-26 21:08:10.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/e_expl.c glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/e_expl.c +--- glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/e_expl.c 2014-05-26 21:08:01.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/e_expl.c 2014-05-26 21:08:10.000000000 -0500 @@ -162,39 +162,39 @@ x = x + xl; @@ -116,9 +116,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/e_expl.c glibc-2. } /* Exceptional cases: */ else if (isless (x, himark)) -diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/ieee754.h glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/ieee754.h ---- glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/ieee754.h 2014-05-26 21:08:01.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/ieee754.h 2014-05-26 21:08:10.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/ieee754.h glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/ieee754.h +--- glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/ieee754.h 2014-05-26 21:08:01.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/ieee754.h 2014-05-26 21:08:10.000000000 -0500 @@ -180,29 +180,9 @@ union ibm_extended_long_double @@ -152,9 +152,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/ieee754.h glibc-2 __END_DECLS -diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/ldbl2mpn.c glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/ldbl2mpn.c ---- glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/ldbl2mpn.c 2014-05-26 21:08:01.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/ldbl2mpn.c 2014-05-26 21:08:10.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/ldbl2mpn.c glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/ldbl2mpn.c +--- glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/ldbl2mpn.c 2014-05-26 21:08:01.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/ldbl2mpn.c 2014-05-26 21:08:10.000000000 -0500 @@ -36,22 +36,22 @@ union ibm_extended_long_double u; unsigned long long hi, lo; @@ -205,9 +205,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/ldbl2mpn.c glibc- { /* A biased exponent of zero is a special case. Either it is a zero or it is a denormal number. */ -diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/math_ldbl.h glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/math_ldbl.h ---- glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/math_ldbl.h 2014-05-26 21:08:01.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/math_ldbl.h 2014-05-26 21:08:10.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/math_ldbl.h glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/math_ldbl.h +--- glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/math_ldbl.h 2014-05-26 21:08:01.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/math_ldbl.h 2014-05-26 21:08:10.000000000 -0500 @@ -14,28 +14,28 @@ as bit 53 of the mantissa. */ uint64_t hi, lo; @@ -338,9 +338,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/math_ldbl.h glibc } #ifndef ldbl_pack -diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/mpn2ldbl.c glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/mpn2ldbl.c ---- glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/mpn2ldbl.c 2014-05-26 21:08:01.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/mpn2ldbl.c 2014-05-26 21:08:10.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/mpn2ldbl.c glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/mpn2ldbl.c +--- glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/mpn2ldbl.c 2014-05-26 21:08:01.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/mpn2ldbl.c 2014-05-26 21:08:10.000000000 -0500 @@ -34,11 +34,11 @@ unsigned long long hi, lo; int exponent2; @@ -415,9 +415,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/mpn2ldbl.c glibc- - return u.d; + return u.ld; } -diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/printf_fphex.c glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/printf_fphex.c ---- glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/printf_fphex.c 2014-05-26 21:08:01.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/printf_fphex.c 2014-05-26 21:08:10.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/printf_fphex.c glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/printf_fphex.c +--- glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/printf_fphex.c 2014-05-26 21:08:01.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/printf_fphex.c 2014-05-26 21:08:10.000000000 -0500 @@ -27,31 +27,31 @@ unsigned long long int num0, num1; \ unsigned long long hi, lo; \ @@ -503,9 +503,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/printf_fphex.c gl } \ } while (0) -diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/s_nearbyintl.c glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/s_nearbyintl.c ---- glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/s_nearbyintl.c 2014-05-26 21:08:01.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/s_nearbyintl.c 2014-05-26 21:08:10.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_nearbyintl.c glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_nearbyintl.c +--- glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_nearbyintl.c 2014-05-26 21:08:01.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_nearbyintl.c 2014-05-26 21:08:10.000000000 -0500 @@ -33,11 +33,11 @@ fenv_t env; static const long double TWO52 = 4503599627370496.0L; @@ -613,9 +613,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/s_nearbyintl.c gl } long_double_symbol (libm, __nearbyintl, nearbyintl); -diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/strtold_l.c glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/strtold_l.c ---- glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/strtold_l.c 2014-05-26 21:08:01.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/strtold_l.c 2014-05-26 21:12:01.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/strtold_l.c glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/strtold_l.c +--- glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/strtold_l.c 2014-05-26 21:08:01.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/strtold_l.c 2014-05-26 21:12:01.000000000 -0500 @@ -43,12 +43,11 @@ #define FLOAT_HUGE_VAL HUGE_VALL # define SET_MANTISSA(flt, mant) \ @@ -634,9 +634,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/strtold_l.c glibc } while (0) #include -diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/x2y2m1l.c glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/x2y2m1l.c ---- glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/x2y2m1l.c 2014-05-26 21:08:01.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/x2y2m1l.c 2014-05-26 21:08:10.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/x2y2m1l.c glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/x2y2m1l.c +--- glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/x2y2m1l.c 2014-05-26 21:08:01.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/x2y2m1l.c 2014-05-26 21:08:10.000000000 -0500 @@ -89,23 +89,23 @@ double vals[12]; SET_RESTORE_ROUND (FE_TONEAREST); diff --git a/SOURCES/glibc-ppc64le-05.patch b/SOURCES/glibc-ppc64le-05.patch index 6469158..d089fda 100644 --- a/SOURCES/glibc-ppc64le-05.patch +++ b/SOURCES/glibc-ppc64le-05.patch @@ -56,9 +56,9 @@ # (__mpn_construct_long_double): Fix test for overflow of high # mantissa and correct normalisation. Avoid undefined shift. # -diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/e_rem_pio2l.c glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/e_rem_pio2l.c ---- glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/e_rem_pio2l.c 2014-05-27 19:13:56.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/e_rem_pio2l.c 2014-05-27 19:14:45.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/e_rem_pio2l.c glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/e_rem_pio2l.c +--- glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/e_rem_pio2l.c 2014-05-27 19:13:56.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/e_rem_pio2l.c 2014-05-27 19:14:45.000000000 -0500 @@ -243,7 +243,7 @@ We split the 113 bits of the mantissa into 5 24bit integers stored in a double array. */ @@ -68,9 +68,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/e_rem_pio2l.c gli ldbl_extract_mantissa (&ixd, &lxd, &exp, x); exp = exp - 23; /* This is faster than doing this in floating point, because we -diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/ldbl2mpn.c glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/ldbl2mpn.c ---- glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/ldbl2mpn.c 2014-05-27 19:13:56.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/ldbl2mpn.c 2014-05-27 19:14:45.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/ldbl2mpn.c glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/ldbl2mpn.c +--- glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/ldbl2mpn.c 2014-05-27 19:13:56.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/ldbl2mpn.c 2014-05-27 19:14:45.000000000 -0500 @@ -36,6 +36,7 @@ union ibm_extended_long_double u; unsigned long long hi, lo; @@ -128,9 +128,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/ldbl2mpn.c glibc- { /* we have a borrow from the hidden bit, so shift left 1. */ hi = 0x0ffffffffffffeLL | (lo >> 51); -diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/math_ldbl.h glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/math_ldbl.h ---- glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/math_ldbl.h 2014-05-27 19:13:56.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/math_ldbl.h 2014-05-27 19:51:13.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/math_ldbl.h glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/math_ldbl.h +--- glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/math_ldbl.h 2014-05-27 19:13:56.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/math_ldbl.h 2014-05-27 19:51:13.000000000 -0500 @@ -13,77 +13,118 @@ the number before the decimal point and the second implicit bit as bit 53 of the mantissa. */ @@ -369,9 +369,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/math_ldbl.h glibc if (__builtin_expect ((__builtin_fabs (a) < two52), 1)) { -diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/mpn2ldbl.c glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/mpn2ldbl.c ---- glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/mpn2ldbl.c 2014-05-27 19:13:56.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/mpn2ldbl.c 2014-05-27 19:14:45.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/mpn2ldbl.c glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/mpn2ldbl.c +--- glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/mpn2ldbl.c 2014-05-27 19:13:56.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/mpn2ldbl.c 2014-05-27 19:14:45.000000000 -0500 @@ -70,9 +70,9 @@ else lzcount = __builtin_clzl ((long) val) + 32; @@ -458,9 +458,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/mpn2ldbl.c glibc- return u.ld; } -diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/printf_fphex.c glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/printf_fphex.c ---- glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/printf_fphex.c 2014-05-27 19:13:56.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/printf_fphex.c 2014-05-27 19:14:45.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/printf_fphex.c glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/printf_fphex.c +--- glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/printf_fphex.c 2014-05-27 19:13:56.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/printf_fphex.c 2014-05-27 19:14:45.000000000 -0500 @@ -43,15 +43,15 @@ lo <<= 1; \ /* The lower double is normalized separately from the upper. We \ diff --git a/SOURCES/glibc-ppc64le-06.patch b/SOURCES/glibc-ppc64le-06.patch index 9bdc8cc..fe7cf61 100644 --- a/SOURCES/glibc-ppc64le-06.patch +++ b/SOURCES/glibc-ppc64le-06.patch @@ -27,9 +27,9 @@ # ports/ # * sysdeps/ia64/fpu/printf_fphex.c: Adjust for fpnum change. # -diff -urN glibc-2.17-c758a686.orig/math/test-misc.c glibc-2.17-c758a686.diff/math/test-misc.c ---- glibc-2.17-c758a686.orig/math/test-misc.c 2014-05-27 19:53:22.000000000 -0500 -+++ glibc-2.17-c758a686.diff/math/test-misc.c 2014-05-27 19:53:45.000000000 -0500 +diff -urN glibc-2.17-c758a686/math/test-misc.c glibc-2.17-c758a686/math/test-misc.c +--- glibc-2.17-c758a686/math/test-misc.c 2014-05-27 19:53:22.000000000 -0500 ++++ glibc-2.17-c758a686/math/test-misc.c 2014-05-27 19:53:45.000000000 -0500 @@ -721,300 +721,161 @@ #ifndef NO_LONG_DOUBLE @@ -406,9 +406,9 @@ diff -urN glibc-2.17-c758a686.orig/math/test-misc.c glibc-2.17-c758a686.diff/mat result = 1; } -diff -urN glibc-2.17-c758a686.orig/ports/sysdeps/ia64/fpu/printf_fphex.c glibc-2.17-c758a686.diff/ports/sysdeps/ia64/fpu/printf_fphex.c ---- glibc-2.17-c758a686.orig/ports/sysdeps/ia64/fpu/printf_fphex.c 2014-05-27 19:53:21.000000000 -0500 -+++ glibc-2.17-c758a686.diff/ports/sysdeps/ia64/fpu/printf_fphex.c 2014-05-27 19:53:45.000000000 -0500 +diff -urN glibc-2.17-c758a686/ports/sysdeps/ia64/fpu/printf_fphex.c glibc-2.17-c758a686/ports/sysdeps/ia64/fpu/printf_fphex.c +--- glibc-2.17-c758a686/ports/sysdeps/ia64/fpu/printf_fphex.c 2014-05-27 19:53:21.000000000 -0500 ++++ glibc-2.17-c758a686/ports/sysdeps/ia64/fpu/printf_fphex.c 2014-05-27 19:53:45.000000000 -0500 @@ -25,9 +25,11 @@ /* The "strange" 80 bit format on ia64 has an explicit \ leading digit in the 64 bit mantissa. */ \ @@ -434,9 +434,9 @@ diff -urN glibc-2.17-c758a686.orig/ports/sysdeps/ia64/fpu/printf_fphex.c glibc-2 if (exponent == 0) \ { \ if (zero_mantissa) \ -diff -urN glibc-2.17-c758a686.orig/stdio-common/printf_fp.c glibc-2.17-c758a686.diff/stdio-common/printf_fp.c ---- glibc-2.17-c758a686.orig/stdio-common/printf_fp.c 2014-05-27 19:53:22.000000000 -0500 -+++ glibc-2.17-c758a686.diff/stdio-common/printf_fp.c 2014-05-27 19:53:45.000000000 -0500 +diff -urN glibc-2.17-c758a686/stdio-common/printf_fp.c glibc-2.17-c758a686/stdio-common/printf_fp.c +--- glibc-2.17-c758a686/stdio-common/printf_fp.c 2014-05-27 19:53:22.000000000 -0500 ++++ glibc-2.17-c758a686/stdio-common/printf_fp.c 2014-05-27 19:53:45.000000000 -0500 @@ -335,8 +335,7 @@ int res; if (__isnanl (fpnum.ldbl)) @@ -447,9 +447,9 @@ diff -urN glibc-2.17-c758a686.orig/stdio-common/printf_fp.c glibc-2.17-c758a686. if (isupper (info->spec)) { special = "NAN"; -diff -urN glibc-2.17-c758a686.orig/stdio-common/printf_fphex.c glibc-2.17-c758a686.diff/stdio-common/printf_fphex.c ---- glibc-2.17-c758a686.orig/stdio-common/printf_fphex.c 2014-05-27 19:53:22.000000000 -0500 -+++ glibc-2.17-c758a686.diff/stdio-common/printf_fphex.c 2014-05-27 19:53:45.000000000 -0500 +diff -urN glibc-2.17-c758a686/stdio-common/printf_fphex.c glibc-2.17-c758a686/stdio-common/printf_fphex.c +--- glibc-2.17-c758a686/stdio-common/printf_fphex.c 2014-05-27 19:53:22.000000000 -0500 ++++ glibc-2.17-c758a686/stdio-common/printf_fphex.c 2014-05-27 19:53:45.000000000 -0500 @@ -93,7 +93,7 @@ union { @@ -497,9 +497,9 @@ diff -urN glibc-2.17-c758a686.orig/stdio-common/printf_fphex.c glibc-2.17-c758a6 } else #endif /* no long double */ -diff -urN glibc-2.17-c758a686.orig/stdio-common/printf_size.c glibc-2.17-c758a686.diff/stdio-common/printf_size.c ---- glibc-2.17-c758a686.orig/stdio-common/printf_size.c 2014-05-27 19:53:22.000000000 -0500 -+++ glibc-2.17-c758a686.diff/stdio-common/printf_size.c 2014-05-27 19:53:45.000000000 -0500 +diff -urN glibc-2.17-c758a686/stdio-common/printf_size.c glibc-2.17-c758a686/stdio-common/printf_size.c +--- glibc-2.17-c758a686/stdio-common/printf_size.c 2014-05-27 19:53:22.000000000 -0500 ++++ glibc-2.17-c758a686/stdio-common/printf_size.c 2014-05-27 19:53:45.000000000 -0500 @@ -103,7 +103,7 @@ union { @@ -540,9 +540,9 @@ diff -urN glibc-2.17-c758a686.orig/stdio-common/printf_size.c glibc-2.17-c758a68 ++tag; } } -diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128/printf_fphex.c glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128/printf_fphex.c ---- glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128/printf_fphex.c 2014-05-27 19:53:20.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128/printf_fphex.c 2014-05-27 19:53:45.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128/printf_fphex.c glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128/printf_fphex.c +--- glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128/printf_fphex.c 2014-05-27 19:53:20.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128/printf_fphex.c 2014-05-27 19:53:45.000000000 -0500 @@ -24,13 +24,15 @@ digits we use only the implicit digits for the number before \ the decimal point. */ \ @@ -575,9 +575,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128/printf_fphex.c glibc \ if (exponent == 0) \ { \ -diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/printf_fphex.c glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/printf_fphex.c ---- glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/printf_fphex.c 2014-05-27 19:53:20.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/printf_fphex.c 2014-05-27 19:53:45.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/printf_fphex.c glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/printf_fphex.c +--- glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/printf_fphex.c 2014-05-27 19:53:20.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/printf_fphex.c 2014-05-27 19:53:45.000000000 -0500 @@ -28,14 +28,14 @@ unsigned long long hi, lo; \ int ediff; \ @@ -595,9 +595,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/printf_fphex.c gl 53rd bit. */ \ if (u.d[1].ieee.exponent != 0) \ lo |= (1ULL << (52 + 7)); \ -diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-96/printf_fphex.c glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-96/printf_fphex.c ---- glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-96/printf_fphex.c 2014-05-27 19:53:20.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-96/printf_fphex.c 2014-05-27 19:53:45.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/ieee754/ldbl-96/printf_fphex.c glibc-2.17-c758a686/sysdeps/ieee754/ldbl-96/printf_fphex.c +--- glibc-2.17-c758a686/sysdeps/ieee754/ldbl-96/printf_fphex.c 2014-05-27 19:53:20.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/ieee754/ldbl-96/printf_fphex.c 2014-05-27 19:53:45.000000000 -0500 @@ -25,11 +25,13 @@ /* The "strange" 80 bit format on ix86 and m68k has an explicit \ leading digit in the 64 bit mantissa. */ \ @@ -623,9 +623,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-96/printf_fphex.c glibc- \ if (exponent == 0) \ { \ -diff -urN glibc-2.17-c758a686.orig/sysdeps/x86_64/fpu/printf_fphex.c glibc-2.17-c758a686.diff/sysdeps/x86_64/fpu/printf_fphex.c ---- glibc-2.17-c758a686.orig/sysdeps/x86_64/fpu/printf_fphex.c 2014-05-27 19:53:20.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/x86_64/fpu/printf_fphex.c 2014-05-27 19:53:45.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/x86_64/fpu/printf_fphex.c glibc-2.17-c758a686/sysdeps/x86_64/fpu/printf_fphex.c +--- glibc-2.17-c758a686/sysdeps/x86_64/fpu/printf_fphex.c 2014-05-27 19:53:20.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/x86_64/fpu/printf_fphex.c 2014-05-27 19:53:45.000000000 -0500 @@ -25,10 +25,11 @@ /* The "strange" 80 bit format on ix86 and m68k has an explicit \ leading digit in the 64 bit mantissa. */ \ diff --git a/SOURCES/glibc-ppc64le-07.patch b/SOURCES/glibc-ppc64le-07.patch index 2185d36..120576e 100644 --- a/SOURCES/glibc-ppc64le-07.patch +++ b/SOURCES/glibc-ppc64le-07.patch @@ -42,9 +42,9 @@ # * sysdeps/ieee754/ldbl-128ibm/s_tanl.c (__tanl): Likewise. # * sysdeps/powerpc/powerpc32/power7/fpu/s_logbl.c (__logbl): Likewise. # -diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/e_acoshl.c glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/e_acoshl.c ---- glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/e_acoshl.c 2014-05-27 19:58:07.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/e_acoshl.c 2014-05-27 19:59:00.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/e_acoshl.c glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/e_acoshl.c +--- glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/e_acoshl.c 2014-05-27 19:58:07.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/e_acoshl.c 2014-05-27 19:59:00.000000000 -0500 @@ -36,8 +36,12 @@ { long double t; @@ -60,9 +60,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/e_acoshl.c glibc- if(hx<0x3ff0000000000000LL) { /* x < 1 */ return (x-x)/(x-x); } else if(hx >=0x41b0000000000000LL) { /* x > 2**28 */ -diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/e_acosl.c glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/e_acosl.c ---- glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/e_acosl.c 2014-05-27 19:58:07.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/e_acosl.c 2014-05-27 19:59:00.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/e_acosl.c glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/e_acosl.c +--- glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/e_acosl.c 2014-05-27 19:58:07.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/e_acosl.c 2014-05-27 19:59:00.000000000 -0500 @@ -151,26 +151,25 @@ long double __ieee754_acosl (long double x) @@ -147,9 +147,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/e_acosl.c glibc-2 w = w - f2 * f2; w = w / (2.0 * s); /* Arcsine of s. */ -diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/e_asinl.c glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/e_asinl.c ---- glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/e_asinl.c 2014-05-27 19:58:07.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/e_asinl.c 2014-05-27 19:59:00.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/e_asinl.c glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/e_asinl.c +--- glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/e_asinl.c 2014-05-27 19:58:07.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/e_asinl.c 2014-05-27 19:59:00.000000000 -0500 @@ -131,19 +131,18 @@ long double __ieee754_asinl (long double x) @@ -217,9 +217,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/e_asinl.c glibc-2 c = (t - w * w) / (s + w); r = p / q; p = 2.0 * s * r - (pio2_lo - 2.0 * c); -diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/e_atanhl.c glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/e_atanhl.c ---- glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/e_atanhl.c 2014-05-27 19:58:07.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/e_atanhl.c 2014-05-27 19:59:00.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/e_atanhl.c glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/e_atanhl.c +--- glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/e_atanhl.c 2014-05-27 19:58:07.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/e_atanhl.c 2014-05-27 19:59:00.000000000 -0500 @@ -40,8 +40,10 @@ { long double t; @@ -233,9 +233,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/e_atanhl.c glibc- ix = hx&0x7fffffffffffffffLL; if (ix >= 0x3ff0000000000000LL) { /* |x|>=1 */ if (ix > 0x3ff0000000000000LL) -diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/e_coshl.c glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/e_coshl.c ---- glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/e_coshl.c 2014-05-27 19:58:07.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/e_coshl.c 2014-05-27 19:59:00.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/e_coshl.c glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/e_coshl.c +--- glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/e_coshl.c 2014-05-27 19:58:07.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/e_coshl.c 2014-05-27 19:59:00.000000000 -0500 @@ -41,9 +41,11 @@ { long double t,w; @@ -249,9 +249,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/e_coshl.c glibc-2 ix &= 0x7fffffffffffffffLL; /* x is INF or NaN */ -diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/e_log2l.c glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/e_log2l.c ---- glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/e_log2l.c 2014-05-27 19:58:07.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/e_log2l.c 2014-05-27 19:59:00.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/e_log2l.c glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/e_log2l.c +--- glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/e_log2l.c 2014-05-27 19:58:07.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/e_log2l.c 2014-05-27 19:59:00.000000000 -0500 @@ -177,11 +177,13 @@ long double z; long double y; @@ -269,9 +269,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/e_log2l.c glibc-2 return (-1.0L / (x - x)); if (hx < 0) return (x - x) / (x - x); -diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/e_rem_pio2l.c glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/e_rem_pio2l.c ---- glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/e_rem_pio2l.c 2014-05-27 19:58:07.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/e_rem_pio2l.c 2014-05-27 19:59:00.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/e_rem_pio2l.c glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/e_rem_pio2l.c +--- glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/e_rem_pio2l.c 2014-05-27 19:58:07.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/e_rem_pio2l.c 2014-05-27 19:59:00.000000000 -0500 @@ -200,10 +200,11 @@ double tx[8]; int exp; @@ -286,9 +286,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/e_rem_pio2l.c gli ix = hx & 0x7fffffffffffffffLL; if (ix <= 0x3fe921fb54442d10LL) /* x in <-pi/4, pi/4> */ { -diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/e_sinhl.c glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/e_sinhl.c ---- glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/e_sinhl.c 2014-05-27 19:58:07.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/e_sinhl.c 2014-05-27 19:59:00.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/e_sinhl.c glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/e_sinhl.c +--- glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/e_sinhl.c 2014-05-27 19:58:07.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/e_sinhl.c 2014-05-27 19:59:00.000000000 -0500 @@ -38,9 +38,11 @@ { long double t,w,h; @@ -302,9 +302,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/e_sinhl.c glibc-2 ix = jx&0x7fffffffffffffffLL; /* x is INF or NaN */ -diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/k_cosl.c glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/k_cosl.c ---- glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/k_cosl.c 2014-05-27 19:58:07.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/k_cosl.c 2014-05-27 19:59:00.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/k_cosl.c glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/k_cosl.c +--- glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/k_cosl.c 2014-05-27 19:58:07.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/k_cosl.c 2014-05-27 19:59:00.000000000 -0500 @@ -81,8 +81,11 @@ { long double h, l, z, sin_l, cos_l_m1; @@ -329,9 +329,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/k_cosl.c glibc-2. l = y - (h - x); z = l * l; sin_l = l*(ONE+z*(SSIN1+z*(SSIN2+z*(SSIN3+z*(SSIN4+z*SSIN5))))); -diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/k_sincosl.c glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/k_sincosl.c ---- glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/k_sincosl.c 2014-05-27 19:58:07.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/k_sincosl.c 2014-05-27 19:59:00.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/k_sincosl.c glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/k_sincosl.c +--- glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/k_sincosl.c 2014-05-27 19:58:07.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/k_sincosl.c 2014-05-27 19:59:00.000000000 -0500 @@ -100,9 +100,12 @@ { long double h, l, z, sin_l, cos_l_m1; @@ -358,9 +358,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/k_sincosl.c glibc if (iy) l = y - (h - x); else -diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/k_sinl.c glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/k_sinl.c ---- glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/k_sinl.c 2014-05-27 19:58:07.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/k_sinl.c 2014-05-27 19:59:00.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/k_sinl.c glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/k_sinl.c +--- glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/k_sinl.c 2014-05-27 19:58:07.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/k_sinl.c 2014-05-27 19:59:00.000000000 -0500 @@ -82,7 +82,10 @@ long double h, l, z, sin_l, cos_l_m1; int64_t ix; @@ -383,9 +383,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/k_sinl.c glibc-2. if (iy) l = (ix < 0 ? -y : y) - (h - x); else -diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/s_asinhl.c glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/s_asinhl.c ---- glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/s_asinhl.c 2014-05-27 19:58:07.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/s_asinhl.c 2014-05-27 19:59:00.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_asinhl.c glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_asinhl.c +--- glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_asinhl.c 2014-05-27 19:58:07.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_asinhl.c 2014-05-27 19:59:00.000000000 -0500 @@ -38,7 +38,10 @@ { long double t,w; @@ -398,9 +398,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/s_asinhl.c glibc- ix = hx&0x7fffffffffffffffLL; if(ix>=0x7ff0000000000000LL) return x+x; /* x is inf or NaN */ if(ix< 0x3e20000000000000LL) { /* |x|<2**-29 */ -diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/s_atanl.c glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/s_atanl.c ---- glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/s_atanl.c 2014-05-27 19:58:07.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/s_atanl.c 2014-05-27 19:59:00.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_atanl.c glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_atanl.c +--- glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_atanl.c 2014-05-27 19:58:07.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_atanl.c 2014-05-27 19:59:00.000000000 -0500 @@ -173,23 +173,20 @@ long double __atanl (long double x) @@ -431,9 +431,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/s_atanl.c glibc-2 return (x + x); /* Infinity. */ -diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/s_cosl.c glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/s_cosl.c ---- glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/s_cosl.c 2014-05-27 19:58:07.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/s_cosl.c 2014-05-27 19:59:00.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_cosl.c glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_cosl.c +--- glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_cosl.c 2014-05-27 19:58:07.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_cosl.c 2014-05-27 19:59:00.000000000 -0500 @@ -53,9 +53,11 @@ { long double y[2],z=0.0L; @@ -447,9 +447,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/s_cosl.c glibc-2. /* |x| ~< pi/4 */ ix &= 0x7fffffffffffffffLL; -diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/s_fabsl.c glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/s_fabsl.c ---- glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/s_fabsl.c 2014-05-27 19:58:07.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/s_fabsl.c 2014-05-27 19:59:00.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_fabsl.c glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_fabsl.c +--- glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_fabsl.c 2014-05-27 19:58:07.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_fabsl.c 2014-05-27 19:59:00.000000000 -0500 @@ -29,10 +29,16 @@ long double __fabsl(long double x) { @@ -469,9 +469,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/s_fabsl.c glibc-2 return x; } long_double_symbol (libm, __fabsl, fabsl); -diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/s_finitel.c glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/s_finitel.c ---- glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/s_finitel.c 2014-05-27 19:58:07.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/s_finitel.c 2014-05-27 19:59:00.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_finitel.c glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_finitel.c +--- glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_finitel.c 2014-05-27 19:58:07.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_finitel.c 2014-05-27 19:59:00.000000000 -0500 @@ -29,10 +29,14 @@ int ___finitel (long double x) @@ -491,9 +491,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/s_finitel.c glibc } hidden_ver (___finitel, __finitel) weak_alias (___finitel, ____finitel) -diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/s_fpclassifyl.c glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/s_fpclassifyl.c ---- glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/s_fpclassifyl.c 2014-05-27 19:58:07.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/s_fpclassifyl.c 2014-05-27 19:59:00.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_fpclassifyl.c glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_fpclassifyl.c +--- glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_fpclassifyl.c 2014-05-27 19:58:07.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_fpclassifyl.c 2014-05-27 19:59:00.000000000 -0500 @@ -46,8 +46,10 @@ { u_int64_t hx, lx; @@ -514,9 +514,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/s_fpclassifyl.c g if ((lx & 0x7fffffffffffffff) /* lower is non-zero */ && ((lx^hx) & 0x8000000000000000ULL)) { /* and sign differs */ /* +/- denormal */ -diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/s_isnanl.c glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/s_isnanl.c ---- glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/s_isnanl.c 2014-05-27 19:58:07.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/s_isnanl.c 2014-05-27 19:59:00.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_isnanl.c glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_isnanl.c +--- glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_isnanl.c 2014-05-27 19:58:07.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_isnanl.c 2014-05-27 19:59:00.000000000 -0500 @@ -29,12 +29,14 @@ int ___isnanl (long double x) @@ -538,9 +538,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/s_isnanl.c glibc- } hidden_ver (___isnanl, __isnanl) #ifndef IS_IN_libm -diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/s_logbl.c glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/s_logbl.c ---- glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/s_logbl.c 2014-05-27 19:58:07.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/s_logbl.c 2014-05-27 19:59:19.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_logbl.c glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_logbl.c +--- glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_logbl.c 2014-05-27 19:58:07.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_logbl.c 2014-05-27 19:59:19.000000000 -0500 @@ -27,9 +27,10 @@ __logbl (long double x) { @@ -554,9 +554,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/s_logbl.c glibc-2 hx &= 0x7fffffffffffffffLL; /* high |x| */ if (hx == 0) return -1.0 / fabs (x); -diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/s_signbitl.c glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/s_signbitl.c ---- glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/s_signbitl.c 2014-05-27 19:58:07.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/s_signbitl.c 2014-05-27 19:59:19.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_signbitl.c glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_signbitl.c +--- glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_signbitl.c 2014-05-27 19:58:07.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_signbitl.c 2014-05-27 19:59:19.000000000 -0500 @@ -25,8 +25,10 @@ ___signbitl (long double x) { @@ -569,9 +569,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/s_signbitl.c glib return e < 0; } #ifdef IS_IN_libm -diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/s_sincosl.c glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/s_sincosl.c ---- glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/s_sincosl.c 2014-05-27 19:58:07.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/s_sincosl.c 2014-05-27 19:59:19.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_sincosl.c glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_sincosl.c +--- glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_sincosl.c 2014-05-27 19:58:07.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_sincosl.c 2014-05-27 19:59:19.000000000 -0500 @@ -27,9 +27,11 @@ __sincosl (long double x, long double *sinx, long double *cosx) { @@ -585,9 +585,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/s_sincosl.c glibc /* |x| ~< pi/4 */ ix &= 0x7fffffffffffffffLL; -diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/s_sinl.c glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/s_sinl.c ---- glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/s_sinl.c 2014-05-27 19:58:07.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/s_sinl.c 2014-05-27 19:59:19.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_sinl.c glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_sinl.c +--- glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_sinl.c 2014-05-27 19:58:07.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_sinl.c 2014-05-27 19:59:19.000000000 -0500 @@ -53,9 +53,11 @@ { long double y[2],z=0.0L; @@ -601,9 +601,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/s_sinl.c glibc-2. /* |x| ~< pi/4 */ ix &= 0x7fffffffffffffffLL; -diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/s_tanl.c glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/s_tanl.c ---- glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/s_tanl.c 2014-05-27 19:58:07.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/s_tanl.c 2014-05-27 19:59:19.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_tanl.c glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_tanl.c +--- glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_tanl.c 2014-05-27 19:58:07.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_tanl.c 2014-05-27 19:59:19.000000000 -0500 @@ -53,9 +53,11 @@ { long double y[2],z=0.0L; @@ -617,9 +617,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/s_tanl.c glibc-2. /* |x| ~< pi/4 */ ix &= 0x7fffffffffffffffLL; -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power7/fpu/s_logbl.c glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/power7/fpu/s_logbl.c ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power7/fpu/s_logbl.c 2014-05-27 19:58:07.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/power7/fpu/s_logbl.c 2014-05-27 19:59:19.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power7/fpu/s_logbl.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power7/fpu/s_logbl.c +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power7/fpu/s_logbl.c 2014-05-27 19:58:07.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power7/fpu/s_logbl.c 2014-05-27 19:59:19.000000000 -0500 @@ -35,14 +35,14 @@ long double __logbl (long double x) diff --git a/SOURCES/glibc-ppc64le-08.patch b/SOURCES/glibc-ppc64le-08.patch index 5cdba90..5f79844 100644 --- a/SOURCES/glibc-ppc64le-08.patch +++ b/SOURCES/glibc-ppc64le-08.patch @@ -47,9 +47,9 @@ # * sysdeps/ieee754/ldbl-128ibm/s_tanhl.c (__tanhl): Likewise. # * sysdeps/powerpc/fpu/libm-test-ulps: Adjust tan_towardzero ulps. # -diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/e_atan2l.c glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/e_atan2l.c ---- glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/e_atan2l.c 2014-05-27 23:05:51.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/e_atan2l.c 2014-05-27 23:05:55.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/e_atan2l.c glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/e_atan2l.c +--- glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/e_atan2l.c 2014-05-27 23:05:51.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/e_atan2l.c 2014-05-27 23:05:55.000000000 -0500 @@ -56,11 +56,15 @@ { long double z; @@ -87,9 +87,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/e_atan2l.c glibc- /* when x is INF */ if(ix==0x7ff0000000000000LL) { -diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/e_gammal_r.c glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/e_gammal_r.c ---- glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/e_gammal_r.c 2014-05-27 23:05:51.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/e_gammal_r.c 2014-05-27 23:05:55.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/e_gammal_r.c glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/e_gammal_r.c +--- glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/e_gammal_r.c 2014-05-27 23:05:51.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/e_gammal_r.c 2014-05-27 23:05:55.000000000 -0500 @@ -29,11 +29,12 @@ and the exp function. But due to the required boundary conditions we must check some values separately. */ @@ -106,9 +106,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/e_gammal_r.c glib { /* Return value for x == 0 is Inf with divide by zero exception. */ *signgamp = 0; -diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/e_ilogbl.c glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/e_ilogbl.c ---- glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/e_ilogbl.c 2014-05-27 23:05:51.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/e_ilogbl.c 2014-05-27 23:05:55.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/e_ilogbl.c glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/e_ilogbl.c +--- glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/e_ilogbl.c 2014-05-27 23:05:51.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/e_ilogbl.c 2014-05-27 23:05:55.000000000 -0500 @@ -31,26 +31,24 @@ int __ieee754_ilogbl(long double x) @@ -143,9 +143,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/e_ilogbl.c glibc- return INT_MAX; } return FP_ILOGBNAN; -diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/e_jnl.c glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/e_jnl.c ---- glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/e_jnl.c 2014-05-27 23:05:51.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/e_jnl.c 2014-05-27 23:05:55.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/e_jnl.c glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/e_jnl.c +--- glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/e_jnl.c 2014-05-27 23:05:51.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/e_jnl.c 2014-05-27 23:05:55.000000000 -0500 @@ -70,26 +70,25 @@ long double __ieee754_jnl (int n, long double x) @@ -226,9 +226,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/e_jnl.c glibc-2.1 a = temp; } } -diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/e_log10l.c glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/e_log10l.c ---- glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/e_log10l.c 2014-05-27 23:05:51.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/e_log10l.c 2014-05-27 23:05:55.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/e_log10l.c glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/e_log10l.c +--- glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/e_log10l.c 2014-05-27 23:05:51.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/e_log10l.c 2014-05-27 23:05:55.000000000 -0500 @@ -182,11 +182,13 @@ long double z; long double y; @@ -246,9 +246,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/e_log10l.c glibc- return (-1.0L / (x - x)); if (hx < 0) return (x - x) / (x - x); -diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/e_logl.c glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/e_logl.c ---- glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/e_logl.c 2014-05-27 23:05:51.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/e_logl.c 2014-05-27 23:05:55.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/e_logl.c glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/e_logl.c +--- glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/e_logl.c 2014-05-27 23:05:51.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/e_logl.c 2014-05-27 23:05:55.000000000 -0500 @@ -185,18 +185,20 @@ long double __ieee754_logl(long double x) @@ -328,9 +328,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/e_logl.c glibc-2. y += e * ln2a; return y; } -diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/e_powl.c glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/e_powl.c ---- glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/e_powl.c 2014-05-27 23:05:51.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/e_powl.c 2014-05-27 23:05:55.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/e_powl.c glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/e_powl.c +--- glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/e_powl.c 2014-05-27 23:05:51.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/e_powl.c 2014-05-27 23:05:55.000000000 -0500 @@ -151,37 +151,32 @@ long double y1, t1, t2, r, s, t, u, v, w; long double s2, s_h, s_l, t_h, t_l, ay; @@ -584,9 +584,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/e_powl.c glibc-2. u = t * lg2_h; v = (p_l - (t - p_h)) * lg2 + t * lg2_l; z = u + v; -diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/k_tanl.c glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/k_tanl.c ---- glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/k_tanl.c 2014-05-27 23:05:51.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/k_tanl.c 2014-05-27 23:05:55.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/k_tanl.c glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/k_tanl.c +--- glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/k_tanl.c 2014-05-27 23:05:51.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/k_tanl.c 2014-05-27 23:05:55.000000000 -0500 @@ -85,17 +85,17 @@ __kernel_tanl (long double x, long double y, int iy) { @@ -645,9 +645,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/k_tanl.c glibc-2. + return z1 + z * (s + z1 * v); } } -diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/s_expm1l.c glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/s_expm1l.c ---- glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/s_expm1l.c 2014-05-27 23:05:51.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/s_expm1l.c 2014-05-27 23:05:55.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_expm1l.c glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_expm1l.c +--- glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_expm1l.c 2014-05-27 23:05:51.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_expm1l.c 2014-05-27 23:05:55.000000000 -0500 @@ -92,19 +92,19 @@ __expm1l (long double x) { @@ -682,9 +682,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/s_expm1l.c glibc- return x; /* Overflow. */ -diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/s_frexpl.c glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/s_frexpl.c ---- glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/s_frexpl.c 2014-05-27 23:05:51.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/s_frexpl.c 2014-05-27 23:05:55.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_frexpl.c glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_frexpl.c +--- glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_frexpl.c 2014-05-27 23:05:51.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_frexpl.c 2014-05-27 23:05:55.000000000 -0500 @@ -36,16 +36,21 @@ long double __frexpl(long double x, int *eptr) @@ -731,9 +731,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/s_frexpl.c glibc- return x; } #ifdef IS_IN_libm -diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/s_isinf_nsl.c glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/s_isinf_nsl.c ---- glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/s_isinf_nsl.c 2014-05-27 23:05:51.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/s_isinf_nsl.c 2014-05-27 23:05:55.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_isinf_nsl.c glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_isinf_nsl.c +--- glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_isinf_nsl.c 2014-05-27 23:05:51.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_isinf_nsl.c 2014-05-27 23:05:55.000000000 -0500 @@ -1,6 +1,7 @@ /* * __isinf_nsl(x) returns != 0 if x is ±inf, else 0; @@ -761,9 +761,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/s_isinf_nsl.c gli + mask >>= 63; + return ~mask; } -diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/s_isinfl.c glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/s_isinfl.c ---- glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/s_isinfl.c 2014-05-27 23:05:51.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/s_isinfl.c 2014-05-27 23:05:55.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_isinfl.c glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_isinfl.c +--- glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_isinfl.c 2014-05-27 23:05:51.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_isinfl.c 2014-05-27 23:05:55.000000000 -0500 @@ -11,6 +11,7 @@ /* * isinfl(x) returns 1 if x is inf, -1 if x is -inf, else 0; @@ -795,9 +795,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/s_isinfl.c glibc- } hidden_ver (___isinfl, __isinfl) #ifndef IS_IN_libm -diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/s_log1pl.c glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/s_log1pl.c ---- glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/s_log1pl.c 2014-05-27 23:05:51.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/s_log1pl.c 2014-05-27 23:05:55.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_log1pl.c glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_log1pl.c +--- glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_log1pl.c 2014-05-27 23:05:51.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_log1pl.c 2014-05-27 23:05:55.000000000 -0500 @@ -126,19 +126,18 @@ __log1pl (long double xm1) { @@ -823,9 +823,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/s_log1pl.c glibc- return xm1; x = xm1 + 1.0L; -diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/s_modfl.c glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/s_modfl.c ---- glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/s_modfl.c 2014-05-27 23:05:51.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/s_modfl.c 2014-05-27 23:05:55.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_modfl.c glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_modfl.c +--- glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_modfl.c 2014-05-27 23:05:51.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_modfl.c 2014-05-27 23:05:55.000000000 -0500 @@ -37,43 +37,54 @@ { int64_t i0,i1,j0; @@ -889,9 +889,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/s_modfl.c glibc-2 return x - *iptr; } } -diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/s_nextafterl.c glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/s_nextafterl.c ---- glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/s_nextafterl.c 2014-05-27 23:05:51.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/s_nextafterl.c 2014-05-27 23:05:55.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_nextafterl.c glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_nextafterl.c +--- glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_nextafterl.c 2014-05-27 23:05:51.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_nextafterl.c 2014-05-27 23:05:55.000000000 -0500 @@ -30,27 +30,28 @@ long double __nextafterl(long double x, long double y) @@ -994,9 +994,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/s_nextafterl.c gl return x + u; } } -diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/s_nexttoward.c glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/s_nexttoward.c ---- glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/s_nexttoward.c 2014-05-27 23:05:51.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/s_nexttoward.c 2014-05-27 23:10:26.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_nexttoward.c glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_nexttoward.c +--- glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_nexttoward.c 2014-05-27 23:05:51.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_nexttoward.c 2014-05-27 23:10:26.000000000 -0500 @@ -34,23 +34,23 @@ { int32_t hx,ix; @@ -1028,9 +1028,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/s_nexttoward.c gl u = math_opt_barrier (x); u = u * u; math_force_eval (u); /* raise underflow flag */ -diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/s_nexttowardf.c glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/s_nexttowardf.c ---- glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/s_nexttowardf.c 2014-05-27 23:05:51.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/s_nexttowardf.c 2014-05-27 23:05:55.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_nexttowardf.c glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_nexttowardf.c +--- glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_nexttowardf.c 2014-05-27 23:05:51.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_nexttowardf.c 2014-05-27 23:05:55.000000000 -0500 @@ -27,16 +27,16 @@ { int32_t hx,ix; @@ -1052,9 +1052,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/s_nexttowardf.c g /* y is nan */ return x+y; if((long double) x==y) return y; /* x=y, return y */ -diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/s_remquol.c glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/s_remquol.c ---- glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/s_remquol.c 2014-05-27 23:05:51.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/s_remquol.c 2014-05-27 23:05:55.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_remquol.c glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_remquol.c +--- glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_remquol.c 2014-05-27 23:05:51.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_remquol.c 2014-05-27 23:05:55.000000000 -0500 @@ -33,20 +33,24 @@ int64_t hx,hy; u_int64_t sx,lx,ly,qs; @@ -1085,9 +1085,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/s_remquol.c glibc return (x * y) / (x * y); if (hy <= 0x7fbfffffffffffffLL) -diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/s_scalblnl.c glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/s_scalblnl.c ---- glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/s_scalblnl.c 2014-05-27 23:05:51.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/s_scalblnl.c 2014-05-27 23:15:30.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_scalblnl.c glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_scalblnl.c +--- glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_scalblnl.c 2014-05-27 23:05:51.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_scalblnl.c 2014-05-27 23:15:30.000000000 -0500 @@ -41,11 +41,15 @@ { int64_t k,l,hx,lx; @@ -1139,9 +1139,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/s_scalblnl.c glib return x*twolm54; } long_double_symbol (libm, __scalblnl, scalblnl); -diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/s_scalbnl.c glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/s_scalbnl.c ---- glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/s_scalbnl.c 2014-05-27 23:05:51.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/s_scalbnl.c 2014-05-27 23:16:25.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_scalbnl.c glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_scalbnl.c +--- glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_scalbnl.c 2014-05-27 23:05:51.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_scalbnl.c 2014-05-27 23:16:25.000000000 -0500 @@ -41,11 +41,15 @@ { int64_t k,l,hx,lx; @@ -1193,9 +1193,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/s_scalbnl.c glibc return x*twolm54; } #ifdef IS_IN_libm -diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/s_tanhl.c glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/s_tanhl.c ---- glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/s_tanhl.c 2014-05-27 23:05:51.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/s_tanhl.c 2014-05-27 23:05:55.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_tanhl.c glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_tanhl.c +--- glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_tanhl.c 2014-05-27 23:05:51.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_tanhl.c 2014-05-27 23:05:55.000000000 -0500 @@ -47,10 +47,12 @@ long double __tanhl(long double x) { @@ -1220,9 +1220,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/s_tanhl.c glibc-2 return x; /* x == +-0 */ if (ix<0x3c60000000000000LL) /* |x|<2**-57 */ return x*(one+x); /* tanh(small) = small */ -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/fpu/libm-test-ulps glibc-2.17-c758a686.diff/sysdeps/powerpc/fpu/libm-test-ulps ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/fpu/libm-test-ulps 2014-05-27 23:05:51.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/fpu/libm-test-ulps 2014-05-27 23:08:26.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/fpu/libm-test-ulps glibc-2.17-c758a686/sysdeps/powerpc/fpu/libm-test-ulps +--- glibc-2.17-c758a686/sysdeps/powerpc/fpu/libm-test-ulps 2014-05-27 23:05:51.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/fpu/libm-test-ulps 2014-05-27 23:08:26.000000000 -0500 @@ -2641,6 +2641,9 @@ ifloat: 1 ildouble: 2 diff --git a/SOURCES/glibc-ppc64le-09.patch b/SOURCES/glibc-ppc64le-09.patch index 838c0e8..969d3a1 100644 --- a/SOURCES/glibc-ppc64le-09.patch +++ b/SOURCES/glibc-ppc64le-09.patch @@ -42,9 +42,9 @@ # * math/libm-test.inc: Add tests for errors discovered in IBM long # double versions of fmodl, remainderl, erfl and erfcl. # -diff -urN glibc-2.17-c758a686.orig/math/libm-test.inc glibc-2.17-c758a686.diff/math/libm-test.inc ---- glibc-2.17-c758a686.orig/math/libm-test.inc 2014-05-27 20:02:29.000000000 -0500 -+++ glibc-2.17-c758a686.diff/math/libm-test.inc 2014-05-27 20:09:59.000000000 -0500 +diff -urN glibc-2.17-c758a686/math/libm-test.inc glibc-2.17-c758a686/math/libm-test.inc +--- glibc-2.17-c758a686/math/libm-test.inc 2014-05-27 20:02:29.000000000 -0500 ++++ glibc-2.17-c758a686/math/libm-test.inc 2014-05-27 20:09:59.000000000 -0500 @@ -4040,6 +4040,10 @@ TEST_f_f (erf, 2.0L, 0.995322265018952734162069256367252929L); TEST_f_f (erf, 4.125L, 0.999999994576599200434933994687765914L); @@ -91,9 +91,9 @@ diff -urN glibc-2.17-c758a686.orig/math/libm-test.inc glibc-2.17-c758a686.diff/m END (remainder); } -diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/e_fmodl.c glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/e_fmodl.c ---- glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/e_fmodl.c 2014-05-27 20:02:27.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/e_fmodl.c 2014-05-27 20:04:08.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/e_fmodl.c glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/e_fmodl.c +--- glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/e_fmodl.c 2014-05-27 20:02:27.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/e_fmodl.c 2014-05-27 20:04:08.000000000 -0500 @@ -27,76 +27,83 @@ long double __ieee754_fmodl (long double x, long double y) @@ -254,9 +254,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/e_fmodl.c glibc-2 return Zero[(u_int64_t)sx>>63]; while(hx<0x0001000000000000LL) { /* normalize x */ hx = hx+hx+(lx>>63); lx = lx+lx; -diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/e_hypotl.c glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/e_hypotl.c ---- glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/e_hypotl.c 2014-05-27 20:02:27.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/e_hypotl.c 2014-05-27 20:04:08.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/e_hypotl.c glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/e_hypotl.c +--- glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/e_hypotl.c 2014-05-27 20:02:27.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/e_hypotl.c 2014-05-27 20:04:08.000000000 -0500 @@ -45,76 +45,84 @@ #include #include @@ -382,9 +382,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/e_hypotl.c glibc- } if(k!=0) return w*kld; -diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/e_remainderl.c glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/e_remainderl.c ---- glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/e_remainderl.c 2014-05-27 20:02:27.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/e_remainderl.c 2014-05-27 20:04:08.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/e_remainderl.c glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/e_remainderl.c +--- glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/e_remainderl.c 2014-05-27 20:02:27.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/e_remainderl.c 2014-05-27 20:04:08.000000000 -0500 @@ -33,18 +33,22 @@ int64_t hx,hp; u_int64_t sx,lx,lp; @@ -424,9 +424,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/e_remainderl.c gl return x; } strong_alias (__ieee754_remainderl, __remainderl_finite) -diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/s_erfl.c glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/s_erfl.c ---- glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/s_erfl.c 2014-05-27 20:02:27.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/s_erfl.c 2014-05-27 20:04:08.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_erfl.c glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_erfl.c +--- glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_erfl.c 2014-05-27 20:02:27.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_erfl.c 2014-05-27 20:04:08.000000000 -0500 @@ -760,16 +760,16 @@ __erfl (long double x) { diff --git a/SOURCES/glibc-ppc64le-10.patch b/SOURCES/glibc-ppc64le-10.patch index 87e7637..ae80fe6 100644 --- a/SOURCES/glibc-ppc64le-10.patch +++ b/SOURCES/glibc-ppc64le-10.patch @@ -13,9 +13,9 @@ # * sysdeps/ieee754/ldbl-128ibm/math_ldbl.h: Don't include ieee854 # version of math_ldbl.h. # -diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/ieee754.h glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/ieee754.h ---- glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/ieee754.h 2014-05-27 22:10:43.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/ieee754.h 2014-05-27 22:11:10.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/ieee754.h glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/ieee754.h +--- glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/ieee754.h 2014-05-27 22:10:43.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/ieee754.h 2014-05-27 22:11:10.000000000 -0500 @@ -112,61 +112,6 @@ #define IEEE754_DOUBLE_BIAS 0x3ff /* Added to exponent. */ @@ -78,9 +78,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/ieee754.h glibc-2 /* IBM extended format for long double. Each long double is made up of two IEEE doubles. The value of the -diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/math_ldbl.h glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/math_ldbl.h ---- glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/math_ldbl.h 2014-05-27 22:10:43.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/math_ldbl.h 2014-05-27 22:11:10.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/math_ldbl.h glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/math_ldbl.h +--- glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/math_ldbl.h 2014-05-27 22:10:43.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/math_ldbl.h 2014-05-27 22:11:10.000000000 -0500 @@ -2,7 +2,6 @@ #error "Never use directly; include instead." #endif diff --git a/SOURCES/glibc-ppc64le-11.patch b/SOURCES/glibc-ppc64le-11.patch index 0b4c25a..ec12797 100644 --- a/SOURCES/glibc-ppc64le-11.patch +++ b/SOURCES/glibc-ppc64le-11.patch @@ -12,9 +12,9 @@ # (t515, tm256): Double rather than long double. # (__ieee754_sqrtl): Rewrite using 64-bit arithmetic. # -diff -urN glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/e_sqrtl.c glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/e_sqrtl.c ---- glibc-2.17-c758a686.orig/sysdeps/ieee754/ldbl-128ibm/e_sqrtl.c 2014-05-27 22:20:12.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/ieee754/ldbl-128ibm/e_sqrtl.c 2014-05-27 22:21:39.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/e_sqrtl.c glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/e_sqrtl.c +--- glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/e_sqrtl.c 2014-05-27 22:20:12.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/e_sqrtl.c 2014-05-27 22:21:39.000000000 -0500 @@ -34,15 +34,13 @@ #include diff --git a/SOURCES/glibc-ppc64le-12.patch b/SOURCES/glibc-ppc64le-12.patch index 6d24e2e..5e2d378 100644 --- a/SOURCES/glibc-ppc64le-12.patch +++ b/SOURCES/glibc-ppc64le-12.patch @@ -11,9 +11,9 @@ # (lrint): Correct for little-endian. # (lrintf): Call lrint. # -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/fpu/bits/mathinline.h glibc-2.17-c758a686.diff/sysdeps/powerpc/fpu/bits/mathinline.h ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/fpu/bits/mathinline.h 2014-05-27 22:28:12.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/fpu/bits/mathinline.h 2014-05-27 22:28:37.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/fpu/bits/mathinline.h glibc-2.17-c758a686/sysdeps/powerpc/fpu/bits/mathinline.h +--- glibc-2.17-c758a686/sysdeps/powerpc/fpu/bits/mathinline.h 2014-05-27 22:28:12.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/fpu/bits/mathinline.h 2014-05-27 22:28:37.000000000 -0500 @@ -62,21 +62,28 @@ __MATH_INLINE int __NTH (__signbitf (float __x)) diff --git a/SOURCES/glibc-ppc64le-13.patch b/SOURCES/glibc-ppc64le-13.patch index 3001174..52830a1 100644 --- a/SOURCES/glibc-ppc64le-13.patch +++ b/SOURCES/glibc-ppc64le-13.patch @@ -23,9 +23,9 @@ # * sysdeps/powerpc/fpu/fsetexcptflg.c (__fesetexceptflag): Adjust. # * sysdeps/powerpc/fpu/ftestexcept.c (fetestexcept): Adjust. # -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/fpu/e_sqrt.c glibc-2.17-c758a686.diff/sysdeps/powerpc/fpu/e_sqrt.c ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/fpu/e_sqrt.c 2014-05-27 22:31:42.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/fpu/e_sqrt.c 2014-05-27 22:31:43.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/fpu/e_sqrt.c glibc-2.17-c758a686/sysdeps/powerpc/fpu/e_sqrt.c +--- glibc-2.17-c758a686/sysdeps/powerpc/fpu/e_sqrt.c 2014-05-27 22:31:42.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/fpu/e_sqrt.c 2014-05-27 22:31:43.000000000 -0500 @@ -145,7 +145,7 @@ feraiseexcept (FE_INVALID_SQRT); @@ -35,9 +35,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/fpu/e_sqrt.c glibc-2.17-c758a #endif feraiseexcept (FE_INVALID); x = a_nan.value; -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/fpu/e_sqrtf.c glibc-2.17-c758a686.diff/sysdeps/powerpc/fpu/e_sqrtf.c ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/fpu/e_sqrtf.c 2014-05-27 22:31:42.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/fpu/e_sqrtf.c 2014-05-27 22:31:43.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/fpu/e_sqrtf.c glibc-2.17-c758a686/sysdeps/powerpc/fpu/e_sqrtf.c +--- glibc-2.17-c758a686/sysdeps/powerpc/fpu/e_sqrtf.c 2014-05-27 22:31:42.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/fpu/e_sqrtf.c 2014-05-27 22:31:43.000000000 -0500 @@ -121,7 +121,7 @@ feraiseexcept (FE_INVALID_SQRT); @@ -47,9 +47,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/fpu/e_sqrtf.c glibc-2.17-c758 #endif feraiseexcept (FE_INVALID); x = a_nan.value; -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/fpu/fclrexcpt.c glibc-2.17-c758a686.diff/sysdeps/powerpc/fpu/fclrexcpt.c ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/fpu/fclrexcpt.c 2014-05-27 22:31:42.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/fpu/fclrexcpt.c 2014-05-27 22:31:43.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/fpu/fclrexcpt.c glibc-2.17-c758a686/sysdeps/powerpc/fpu/fclrexcpt.c +--- glibc-2.17-c758a686/sysdeps/powerpc/fpu/fclrexcpt.c 2014-05-27 22:31:42.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/fpu/fclrexcpt.c 2014-05-27 22:31:43.000000000 -0500 @@ -28,8 +28,8 @@ u.fenv = fegetenv_register (); @@ -61,9 +61,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/fpu/fclrexcpt.c glibc-2.17-c7 /* Put the new state in effect. */ fesetenv_register (u.fenv); -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/fpu/fedisblxcpt.c glibc-2.17-c758a686.diff/sysdeps/powerpc/fpu/fedisblxcpt.c ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/fpu/fedisblxcpt.c 2014-05-27 22:31:42.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/fpu/fedisblxcpt.c 2014-05-27 22:31:43.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/fpu/fedisblxcpt.c glibc-2.17-c758a686/sysdeps/powerpc/fpu/fedisblxcpt.c +--- glibc-2.17-c758a686/sysdeps/powerpc/fpu/fedisblxcpt.c 2014-05-27 22:31:42.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/fpu/fedisblxcpt.c 2014-05-27 22:31:43.000000000 -0500 @@ -32,15 +32,15 @@ fe.fenv = fegetenv_register (); @@ -85,9 +85,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/fpu/fedisblxcpt.c glibc-2.17- fesetenv_register (fe.fenv); new = __fegetexcept (); -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/fpu/feenablxcpt.c glibc-2.17-c758a686.diff/sysdeps/powerpc/fpu/feenablxcpt.c ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/fpu/feenablxcpt.c 2014-05-27 22:31:42.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/fpu/feenablxcpt.c 2014-05-27 22:31:43.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/fpu/feenablxcpt.c glibc-2.17-c758a686/sysdeps/powerpc/fpu/feenablxcpt.c +--- glibc-2.17-c758a686/sysdeps/powerpc/fpu/feenablxcpt.c 2014-05-27 22:31:42.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/fpu/feenablxcpt.c 2014-05-27 22:31:43.000000000 -0500 @@ -32,15 +32,15 @@ fe.fenv = fegetenv_register (); @@ -109,9 +109,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/fpu/feenablxcpt.c glibc-2.17- fesetenv_register (fe.fenv); new = __fegetexcept (); -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/fpu/fegetexcept.c glibc-2.17-c758a686.diff/sysdeps/powerpc/fpu/fegetexcept.c ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/fpu/fegetexcept.c 2014-05-27 22:31:42.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/fpu/fegetexcept.c 2014-05-27 22:31:43.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/fpu/fegetexcept.c glibc-2.17-c758a686/sysdeps/powerpc/fpu/fegetexcept.c +--- glibc-2.17-c758a686/sysdeps/powerpc/fpu/fegetexcept.c 2014-05-27 22:31:42.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/fpu/fegetexcept.c 2014-05-27 22:31:43.000000000 -0500 @@ -27,15 +27,15 @@ fe.fenv = fegetenv_register (); @@ -133,9 +133,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/fpu/fegetexcept.c glibc-2.17- result |= FE_INVALID; return result; -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/fpu/feholdexcpt.c glibc-2.17-c758a686.diff/sysdeps/powerpc/fpu/feholdexcpt.c ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/fpu/feholdexcpt.c 2014-05-27 22:31:42.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/fpu/feholdexcpt.c 2014-05-27 22:33:09.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/fpu/feholdexcpt.c glibc-2.17-c758a686/sysdeps/powerpc/fpu/feholdexcpt.c +--- glibc-2.17-c758a686/sysdeps/powerpc/fpu/feholdexcpt.c 2014-05-27 22:31:42.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/fpu/feholdexcpt.c 2014-05-27 22:33:09.000000000 -0500 @@ -30,13 +30,12 @@ /* Clear everything except for the rounding modes and non-IEEE arithmetic @@ -152,9 +152,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/fpu/feholdexcpt.c glibc-2.17- (void)__fe_mask_env (); /* Put the new state in effect. */ -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/fpu/fenv_libc.h glibc-2.17-c758a686.diff/sysdeps/powerpc/fpu/fenv_libc.h ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/fpu/fenv_libc.h 2014-05-27 22:31:42.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/fpu/fenv_libc.h 2014-05-27 22:31:43.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/fpu/fenv_libc.h glibc-2.17-c758a686/sysdeps/powerpc/fpu/fenv_libc.h +--- glibc-2.17-c758a686/sysdeps/powerpc/fpu/fenv_libc.h 2014-05-27 22:31:42.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/fpu/fenv_libc.h 2014-05-27 22:31:43.000000000 -0500 @@ -69,7 +69,7 @@ typedef union { @@ -164,9 +164,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/fpu/fenv_libc.h glibc-2.17-c7 } fenv_union_t; -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/fpu/fesetenv.c glibc-2.17-c758a686.diff/sysdeps/powerpc/fpu/fesetenv.c ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/fpu/fesetenv.c 2014-05-27 22:31:42.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/fpu/fesetenv.c 2014-05-27 22:35:18.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/fpu/fesetenv.c glibc-2.17-c758a686/sysdeps/powerpc/fpu/fesetenv.c +--- glibc-2.17-c758a686/sysdeps/powerpc/fpu/fesetenv.c 2014-05-27 22:31:42.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/fpu/fesetenv.c 2014-05-27 22:35:18.000000000 -0500 @@ -36,14 +36,14 @@ exceptions, then unmask SIGFPE in the MSR FE0/FE1 bits. This will put the hardware into "precise mode" and may cause the FPU to run slower on some @@ -184,9 +184,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/fpu/fesetenv.c glibc-2.17-c75 (void)__fe_mask_env (); fesetenv_register (*envp); -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/fpu/feupdateenv.c glibc-2.17-c758a686.diff/sysdeps/powerpc/fpu/feupdateenv.c ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/fpu/feupdateenv.c 2014-05-27 22:31:42.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/fpu/feupdateenv.c 2014-05-27 22:34:23.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/fpu/feupdateenv.c glibc-2.17-c758a686/sysdeps/powerpc/fpu/feupdateenv.c +--- glibc-2.17-c758a686/sysdeps/powerpc/fpu/feupdateenv.c 2014-05-27 22:31:42.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/fpu/feupdateenv.c 2014-05-27 22:34:23.000000000 -0500 @@ -36,20 +36,20 @@ /* Restore rounding mode and exception enable from *envp and merge exceptions. Leave fraction rounded/inexact and FP result/CC bits @@ -211,9 +211,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/fpu/feupdateenv.c glibc-2.17- (void)__fe_mask_env (); /* Atomically enable and raise (if appropriate) exceptions set in `new'. */ -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/fpu/fgetexcptflg.c glibc-2.17-c758a686.diff/sysdeps/powerpc/fpu/fgetexcptflg.c ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/fpu/fgetexcptflg.c 2014-05-27 22:31:42.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/fpu/fgetexcptflg.c 2014-05-27 22:31:43.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/fpu/fgetexcptflg.c glibc-2.17-c758a686/sysdeps/powerpc/fpu/fgetexcptflg.c +--- glibc-2.17-c758a686/sysdeps/powerpc/fpu/fgetexcptflg.c 2014-05-27 22:31:42.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/fpu/fgetexcptflg.c 2014-05-27 22:31:43.000000000 -0500 @@ -28,7 +28,7 @@ u.fenv = fegetenv_register (); @@ -223,9 +223,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/fpu/fgetexcptflg.c glibc-2.17 /* Success. */ return 0; -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/fpu/fraiseexcpt.c glibc-2.17-c758a686.diff/sysdeps/powerpc/fpu/fraiseexcpt.c ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/fpu/fraiseexcpt.c 2014-05-27 22:31:42.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/fpu/fraiseexcpt.c 2014-05-27 22:31:43.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/fpu/fraiseexcpt.c glibc-2.17-c758a686/sysdeps/powerpc/fpu/fraiseexcpt.c +--- glibc-2.17-c758a686/sysdeps/powerpc/fpu/fraiseexcpt.c 2014-05-27 22:31:42.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/fpu/fraiseexcpt.c 2014-05-27 22:31:43.000000000 -0500 @@ -34,11 +34,11 @@ u.fenv = fegetenv_register (); @@ -252,9 +252,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/fpu/fraiseexcpt.c glibc-2.17- set_fpscr_bit (FPSCR_VXSNAN); } -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/fpu/fsetexcptflg.c glibc-2.17-c758a686.diff/sysdeps/powerpc/fpu/fsetexcptflg.c ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/fpu/fsetexcptflg.c 2014-05-27 22:31:42.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/fpu/fsetexcptflg.c 2014-05-27 22:31:43.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/fpu/fsetexcptflg.c glibc-2.17-c758a686/sysdeps/powerpc/fpu/fsetexcptflg.c +--- glibc-2.17-c758a686/sysdeps/powerpc/fpu/fsetexcptflg.c 2014-05-27 22:31:42.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/fpu/fsetexcptflg.c 2014-05-27 22:31:43.000000000 -0500 @@ -32,10 +32,10 @@ flag = *flagp & excepts; @@ -270,9 +270,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/fpu/fsetexcptflg.c glibc-2.17 /* Store the new status word (along with the rest of the environment). This may cause floating-point exceptions if the restored state -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/fpu/ftestexcept.c glibc-2.17-c758a686.diff/sysdeps/powerpc/fpu/ftestexcept.c ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/fpu/ftestexcept.c 2014-05-27 22:31:42.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/fpu/ftestexcept.c 2014-05-27 22:31:43.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/fpu/ftestexcept.c glibc-2.17-c758a686/sysdeps/powerpc/fpu/ftestexcept.c +--- glibc-2.17-c758a686/sysdeps/powerpc/fpu/ftestexcept.c 2014-05-27 22:31:42.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/fpu/ftestexcept.c 2014-05-27 22:31:43.000000000 -0500 @@ -28,6 +28,6 @@ /* The FE_INVALID bit is dealt with correctly by the hardware, so we can diff --git a/SOURCES/glibc-ppc64le-14.patch b/SOURCES/glibc-ppc64le-14.patch index 434d25d..9025fd7 100644 --- a/SOURCES/glibc-ppc64le-14.patch +++ b/SOURCES/glibc-ppc64le-14.patch @@ -15,9 +15,9 @@ # use vector int constants. # (__float_and_test24, __float_and8, __float_get_exp): Likewise. # -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/fpu/s_float_bitwise.h glibc-2.17-c758a686.diff/sysdeps/powerpc/fpu/s_float_bitwise.h ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/fpu/s_float_bitwise.h 2014-05-27 22:37:18.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/fpu/s_float_bitwise.h 2014-05-27 22:37:20.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/fpu/s_float_bitwise.h glibc-2.17-c758a686/sysdeps/powerpc/fpu/s_float_bitwise.h +--- glibc-2.17-c758a686/sysdeps/powerpc/fpu/s_float_bitwise.h 2014-05-27 22:37:18.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/fpu/s_float_bitwise.h 2014-05-27 22:37:20.000000000 -0500 @@ -23,18 +23,19 @@ #include diff --git a/SOURCES/glibc-ppc64le-15.patch b/SOURCES/glibc-ppc64le-15.patch index a81d9a8..29b3b54 100644 --- a/SOURCES/glibc-ppc64le-15.patch +++ b/SOURCES/glibc-ppc64le-15.patch @@ -20,9 +20,9 @@ # * sysdeps/powerpc/fpu/s_llround.c (__llround): Rewrite. # * sysdeps/powerpc/fpu/s_llroundf.c (__llroundf): Rewrite. # -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/fpu/s_llround.c glibc-2.17-c758a686.diff/sysdeps/powerpc/fpu/s_llround.c ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/fpu/s_llround.c 2014-05-27 22:38:55.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/fpu/s_llround.c 2014-05-27 22:38:58.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/fpu/s_llround.c glibc-2.17-c758a686/sysdeps/powerpc/fpu/s_llround.c +--- glibc-2.17-c758a686/sysdeps/powerpc/fpu/s_llround.c 2014-05-27 22:38:55.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/fpu/s_llround.c 2014-05-27 22:38:58.000000000 -0500 @@ -19,29 +19,28 @@ #include #include @@ -69,9 +69,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/fpu/s_llround.c glibc-2.17-c7 } weak_alias (__llround, llround) #ifdef NO_LONG_DOUBLE -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/fpu/s_llroundf.c glibc-2.17-c758a686.diff/sysdeps/powerpc/fpu/s_llroundf.c ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/fpu/s_llroundf.c 2014-05-27 22:38:55.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/fpu/s_llroundf.c 2014-05-27 22:38:58.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/fpu/s_llroundf.c glibc-2.17-c758a686/sysdeps/powerpc/fpu/s_llroundf.c +--- glibc-2.17-c758a686/sysdeps/powerpc/fpu/s_llroundf.c 2014-05-27 22:38:55.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/fpu/s_llroundf.c 2014-05-27 22:38:58.000000000 -0500 @@ -18,28 +18,27 @@ #include diff --git a/SOURCES/glibc-ppc64le-16.patch b/SOURCES/glibc-ppc64le-16.patch index 038710c..0da0865 100644 --- a/SOURCES/glibc-ppc64le-16.patch +++ b/SOURCES/glibc-ppc64le-16.patch @@ -13,9 +13,9 @@ # * sysdeps/powerpc/fpu/tst-setcontext-fpscr.c (_GET_DI_FPSCR): Likewise. # (_SET_DI_FPSCR, _GET_SI_FPSCR, _SET_SI_FPSCR): Likewise. # -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/fpu/fpu_control.h glibc-2.17-c758a686.diff/sysdeps/powerpc/fpu/fpu_control.h ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/fpu/fpu_control.h 2014-05-27 22:40:18.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/fpu/fpu_control.h 2014-05-27 22:43:40.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/fpu/fpu_control.h glibc-2.17-c758a686/sysdeps/powerpc/fpu/fpu_control.h +--- glibc-2.17-c758a686/sysdeps/powerpc/fpu/fpu_control.h 2014-05-27 22:40:18.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/fpu/fpu_control.h 2014-05-27 22:43:40.000000000 -0500 @@ -45,22 +45,26 @@ #define _FPU_IEEE 0x000000f0 @@ -57,9 +57,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/fpu/fpu_control.h glibc-2.17- /* Default control word set at startup. */ extern fpu_control_t __fpu_control; -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/fpu/tst-setcontext-fpscr.c glibc-2.17-c758a686.diff/sysdeps/powerpc/fpu/tst-setcontext-fpscr.c ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/fpu/tst-setcontext-fpscr.c 2014-05-27 22:40:18.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/fpu/tst-setcontext-fpscr.c 2014-05-27 22:40:21.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/fpu/tst-setcontext-fpscr.c glibc-2.17-c758a686/sysdeps/powerpc/fpu/tst-setcontext-fpscr.c +--- glibc-2.17-c758a686/sysdeps/powerpc/fpu/tst-setcontext-fpscr.c 2014-05-27 22:40:18.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/fpu/tst-setcontext-fpscr.c 2014-05-27 22:40:21.000000000 -0500 @@ -83,7 +83,7 @@ return 0; } diff --git a/SOURCES/glibc-ppc64le-17.patch b/SOURCES/glibc-ppc64le-17.patch index 1a0e30d..5ed69a9 100644 --- a/SOURCES/glibc-ppc64le-17.patch +++ b/SOURCES/glibc-ppc64le-17.patch @@ -28,9 +28,9 @@ # * sysdeps/powerpc/powerpc64/power7/fpu/s_finite.S: Use HISHORT. # * sysdeps/powerpc/powerpc64/power7/fpu/s_isinf.S: Likewise. # -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/fpu/s_copysign.S glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/fpu/s_copysign.S ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/fpu/s_copysign.S 2014-05-27 22:45:44.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/fpu/s_copysign.S 2014-05-27 22:45:46.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/fpu/s_copysign.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/fpu/s_copysign.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/fpu/s_copysign.S 2014-05-27 22:45:44.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/fpu/s_copysign.S 2014-05-27 22:45:46.000000000 -0500 @@ -29,7 +29,7 @@ stwu r1,-16(r1) cfi_adjust_cfa_offset (16) @@ -40,9 +40,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/fpu/s_copysign.S gl cmpwi r3,0 addi r1,r1,16 cfi_adjust_cfa_offset (-16) -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/fpu/s_copysignl.S glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/fpu/s_copysignl.S ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/fpu/s_copysignl.S 2014-05-27 22:45:44.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/fpu/s_copysignl.S 2014-05-27 22:45:46.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/fpu/s_copysignl.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/fpu/s_copysignl.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/fpu/s_copysignl.S 2014-05-27 22:45:44.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/fpu/s_copysignl.S 2014-05-27 22:45:46.000000000 -0500 @@ -30,7 +30,7 @@ fmr fp0,fp1 fabs fp1,fp1 @@ -52,9 +52,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/fpu/s_copysignl.S g cmpwi cr6,r3,0 addi r1,r1,16 cfi_adjust_cfa_offset (-16) -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/fpu/s_lrint.S glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/fpu/s_lrint.S ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/fpu/s_lrint.S 2014-05-27 22:45:44.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/fpu/s_lrint.S 2014-05-27 22:45:46.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/fpu/s_lrint.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/fpu/s_lrint.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/fpu/s_lrint.S 2014-05-27 22:45:44.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/fpu/s_lrint.S 2014-05-27 22:45:46.000000000 -0500 @@ -24,10 +24,10 @@ stwu r1,-16(r1) fctiw fp13,fp1 @@ -68,9 +68,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/fpu/s_lrint.S glibc addi r1,r1,16 blr END (__lrint) -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/fpu/s_lround.S glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/fpu/s_lround.S ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/fpu/s_lround.S 2014-05-27 22:45:44.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/fpu/s_lround.S 2014-05-27 22:45:46.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/fpu/s_lround.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/fpu/s_lround.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/fpu/s_lround.S 2014-05-27 22:45:44.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/fpu/s_lround.S 2014-05-27 22:45:46.000000000 -0500 @@ -67,7 +67,7 @@ nop /* Ensure the following load is in a different dispatch */ nop /* group to avoid pipe stall on POWER4&5. */ @@ -80,9 +80,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/fpu/s_lround.S glib .Lout: addi r1,r1,16 blr -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power4/fpu/s_llrint.S glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/power4/fpu/s_llrint.S ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power4/fpu/s_llrint.S 2014-05-27 22:45:44.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/power4/fpu/s_llrint.S 2014-05-27 22:48:09.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/fpu/s_llrint.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/fpu/s_llrint.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/fpu/s_llrint.S 2014-05-27 22:45:44.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/fpu/s_llrint.S 2014-05-27 22:48:09.000000000 -0500 @@ -29,8 +29,8 @@ nop /* Insure the following load is in a different dispatch group */ nop /* to avoid pipe stall on POWER4&5. */ @@ -94,9 +94,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power4/fpu/s_llrint addi r1,r1,16 blr END (__llrint) -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power4/fpu/s_llrintf.S glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/power4/fpu/s_llrintf.S ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power4/fpu/s_llrintf.S 2014-05-27 22:45:44.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/power4/fpu/s_llrintf.S 2014-05-27 22:48:44.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/fpu/s_llrintf.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/fpu/s_llrintf.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/fpu/s_llrintf.S 2014-05-27 22:45:44.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/fpu/s_llrintf.S 2014-05-27 22:48:44.000000000 -0500 @@ -28,8 +28,8 @@ nop /* Insure the following load is in a different dispatch group */ nop /* to avoid pipe stall on POWER4&5. */ @@ -108,9 +108,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power4/fpu/s_llrint addi r1,r1,16 blr END (__llrintf) -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power5/fpu/s_isnan.S glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/power5/fpu/s_isnan.S ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power5/fpu/s_isnan.S 2014-05-27 22:45:44.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/power5/fpu/s_isnan.S 2014-05-27 22:45:46.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power5/fpu/s_isnan.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power5/fpu/s_isnan.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power5/fpu/s_isnan.S 2014-05-27 22:45:44.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power5/fpu/s_isnan.S 2014-05-27 22:45:46.000000000 -0500 @@ -27,8 +27,8 @@ ori r1,r1,0 stfd fp1,24(r1) /* copy FPR to GPR */ @@ -122,9 +122,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power5/fpu/s_isnan. lis r0,0x7ff0 /* const long r0 0x7ff00000 00000000 */ clrlwi r4,r4,1 /* x = fabs(x) */ cmpw cr7,r4,r0 /* if (fabs(x) =< inf) */ -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power5+/fpu/s_llround.S glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/power5+/fpu/s_llround.S ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power5+/fpu/s_llround.S 2014-05-27 22:45:44.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/power5+/fpu/s_llround.S 2014-05-27 22:45:46.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power5+/fpu/s_llround.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power5+/fpu/s_llround.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power5+/fpu/s_llround.S 2014-05-27 22:45:44.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power5+/fpu/s_llround.S 2014-05-27 22:45:46.000000000 -0500 @@ -39,8 +39,8 @@ nop /* Ensure the following load is in a different dispatch */ nop /* group to avoid pipe stall on POWER4&5. */ @@ -136,9 +136,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power5+/fpu/s_llrou addi r1,r1,16 blr END (__llround) -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power5+/fpu/s_lround.S glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/power5+/fpu/s_lround.S ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power5+/fpu/s_lround.S 2014-05-27 22:45:44.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/power5+/fpu/s_lround.S 2014-05-27 22:45:46.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power5+/fpu/s_lround.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power5+/fpu/s_lround.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power5+/fpu/s_lround.S 2014-05-27 22:45:44.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power5+/fpu/s_lround.S 2014-05-27 22:45:46.000000000 -0500 @@ -38,7 +38,7 @@ nop /* Ensure the following load is in a different dispatch */ nop /* group to avoid pipe stall on POWER4&5. */ @@ -148,9 +148,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power5+/fpu/s_lroun addi r1,r1,16 blr END (__lround) -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power6/fpu/s_isnan.S glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/power6/fpu/s_isnan.S ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power6/fpu/s_isnan.S 2014-05-27 22:45:44.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/power6/fpu/s_isnan.S 2014-05-27 22:45:46.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power6/fpu/s_isnan.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power6/fpu/s_isnan.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power6/fpu/s_isnan.S 2014-05-27 22:45:44.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power6/fpu/s_isnan.S 2014-05-27 22:45:46.000000000 -0500 @@ -27,8 +27,8 @@ ori r1,r1,0 stfd fp1,24(r1) /* copy FPR to GPR */ @@ -162,9 +162,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power6/fpu/s_isnan. lis r0,0x7ff0 /* const long r0 0x7ff00000 00000000 */ clrlwi r4,r4,1 /* x = fabs(x) */ cmpw cr7,r4,r0 /* if (fabs(x) =< inf) */ -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power6/fpu/s_llrint.S glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/power6/fpu/s_llrint.S ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power6/fpu/s_llrint.S 2014-05-27 22:45:44.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/power6/fpu/s_llrint.S 2014-05-27 22:46:52.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power6/fpu/s_llrint.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power6/fpu/s_llrint.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power6/fpu/s_llrint.S 2014-05-27 22:45:44.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power6/fpu/s_llrint.S 2014-05-27 22:46:52.000000000 -0500 @@ -29,8 +29,8 @@ /* Insure the following load is in a different dispatch group by inserting "group ending nop". */ @@ -176,9 +176,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power6/fpu/s_llrint addi r1,r1,16 blr END (__llrint) -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power6/fpu/s_llrintf.S glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/power6/fpu/s_llrintf.S ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power6/fpu/s_llrintf.S 2014-05-27 22:45:44.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/power6/fpu/s_llrintf.S 2014-05-27 22:47:29.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power6/fpu/s_llrintf.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power6/fpu/s_llrintf.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power6/fpu/s_llrintf.S 2014-05-27 22:45:44.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power6/fpu/s_llrintf.S 2014-05-27 22:47:29.000000000 -0500 @@ -28,8 +28,8 @@ /* Insure the following load is in a different dispatch group by inserting "group ending nop". */ @@ -190,9 +190,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power6/fpu/s_llrint addi r1,r1,16 blr END (__llrintf) -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power6/fpu/s_llround.S glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/power6/fpu/s_llround.S ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power6/fpu/s_llround.S 2014-05-27 22:45:44.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/power6/fpu/s_llround.S 2014-05-27 22:45:46.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power6/fpu/s_llround.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power6/fpu/s_llround.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power6/fpu/s_llround.S 2014-05-27 22:45:44.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power6/fpu/s_llround.S 2014-05-27 22:45:46.000000000 -0500 @@ -39,8 +39,8 @@ /* Insure the following load is in a different dispatch group by inserting "group ending nop". */ @@ -204,9 +204,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power6/fpu/s_llroun addi r1,r1,16 blr END (__llround) -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power7/fpu/s_finite.S glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/power7/fpu/s_finite.S ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power7/fpu/s_finite.S 2014-05-27 22:45:44.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/power7/fpu/s_finite.S 2014-05-27 22:45:46.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power7/fpu/s_finite.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power7/fpu/s_finite.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power7/fpu/s_finite.S 2014-05-27 22:45:44.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power7/fpu/s_finite.S 2014-05-27 22:45:46.000000000 -0500 @@ -54,9 +54,8 @@ stfd fp1,8(r1) /* Transfer FP to GPR's. */ @@ -219,9 +219,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power7/fpu/s_finite clrlwi r0,r0,17 /* r0 = abs(r0). */ addi r1,r1,16 /* Reset the stack pointer. */ cmpwi cr7,r0,0x7ff0 /* r4 == 0x7ff0?. */ -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power7/fpu/s_isinf.S glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/power7/fpu/s_isinf.S ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power7/fpu/s_isinf.S 2014-05-27 22:45:44.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/power7/fpu/s_isinf.S 2014-05-27 22:45:46.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power7/fpu/s_isinf.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power7/fpu/s_isinf.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power7/fpu/s_isinf.S 2014-05-27 22:45:44.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power7/fpu/s_isinf.S 2014-05-27 22:45:46.000000000 -0500 @@ -48,14 +48,13 @@ li r3,0 bflr 29 /* If not INF, return. */ @@ -240,9 +240,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power7/fpu/s_isinf. addi r1,r1,16 /* Reset the stack pointer. */ cmpwi cr7,r4,0x7ff0 /* r4 == 0x7ff0? */ li r3,1 -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power7/fpu/s_isnan.S glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/power7/fpu/s_isnan.S ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power7/fpu/s_isnan.S 2014-05-27 22:45:44.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/power7/fpu/s_isnan.S 2014-05-27 22:45:46.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power7/fpu/s_isnan.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power7/fpu/s_isnan.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power7/fpu/s_isnan.S 2014-05-27 22:45:44.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power7/fpu/s_isnan.S 2014-05-27 22:45:46.000000000 -0500 @@ -53,8 +53,8 @@ stwu r1,-16(r1) /* Allocate stack space. */ stfd fp1,8(r1) /* Transfer FP to GPR's. */ @@ -254,9 +254,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power7/fpu/s_isnan. addi r1,r1,16 /* Reset the stack pointer. */ lis r0,0x7ff0 /* Load the upper portion for an INF/NaN. */ clrlwi r4,r4,1 /* r4 = abs(r4). */ -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/power7/fpu/s_finite.S glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/power7/fpu/s_finite.S ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/power7/fpu/s_finite.S 2014-05-27 22:45:44.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/power7/fpu/s_finite.S 2014-05-27 22:45:46.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power7/fpu/s_finite.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power7/fpu/s_finite.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power7/fpu/s_finite.S 2014-05-27 22:45:44.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power7/fpu/s_finite.S 2014-05-27 22:45:46.000000000 -0500 @@ -39,10 +39,8 @@ stfd fp1,-16(r1) /* Transfer FP to GPR's. */ @@ -270,9 +270,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/power7/fpu/s_finite clrlwi r4,r4,17 /* r4 = abs(r4). */ cmpwi cr7,r4,0x7ff0 /* r4 == 0x7ff0? */ bltlr cr7 /* LT means finite, other non-finite. */ -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/power7/fpu/s_isinf.S glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/power7/fpu/s_isinf.S ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/power7/fpu/s_isinf.S 2014-05-27 22:45:44.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/power7/fpu/s_isinf.S 2014-05-27 22:45:46.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power7/fpu/s_isinf.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power7/fpu/s_isinf.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power7/fpu/s_isinf.S 2014-05-27 22:45:44.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power7/fpu/s_isinf.S 2014-05-27 22:45:46.000000000 -0500 @@ -38,9 +38,8 @@ stfd fp1,-16(r1) /* Transfer FP to GPR's. */ @@ -285,9 +285,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/power7/fpu/s_isinf. cmpwi cr7,r4,0x7ff0 /* r4 == 0x7ff0? */ li r3,1 beqlr cr7 /* EQ means INF, otherwise -INF. */ -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/sysdep.h glibc-2.17-c758a686.diff/sysdeps/powerpc/sysdep.h ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/sysdep.h 2014-05-27 22:45:44.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/sysdep.h 2014-05-27 22:45:46.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/sysdep.h glibc-2.17-c758a686/sysdeps/powerpc/sysdep.h +--- glibc-2.17-c758a686/sysdeps/powerpc/sysdep.h 2014-05-27 22:45:44.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/sysdep.h 2014-05-27 22:45:46.000000000 -0500 @@ -144,6 +144,21 @@ #define VRSAVE 256 diff --git a/SOURCES/glibc-ppc64le-18.patch b/SOURCES/glibc-ppc64le-18.patch index 58b86c7..f5e327e 100644 --- a/SOURCES/glibc-ppc64le-18.patch +++ b/SOURCES/glibc-ppc64le-18.patch @@ -12,9 +12,9 @@ # constant for 0x1p52. Load little-endian words of double from # correct stack offsets. # -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/fpu/s_roundf.S glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/fpu/s_roundf.S ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/fpu/s_roundf.S 2014-05-27 22:50:13.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/fpu/s_roundf.S 2014-05-27 22:50:13.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/fpu/s_roundf.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/fpu/s_roundf.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/fpu/s_roundf.S 2014-05-27 22:50:13.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/fpu/s_roundf.S 2014-05-27 22:50:13.000000000 -0500 @@ -19,7 +19,7 @@ #include @@ -32,9 +32,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/fpu/s_roundf.S glib lfs fp10,.LC1@l(r9) #endif ble- cr6,.L4 -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power4/fpu/s_llround.S glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/power4/fpu/s_llround.S ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power4/fpu/s_llround.S 2014-05-27 22:50:13.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/power4/fpu/s_llround.S 2014-05-27 22:50:13.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/fpu/s_llround.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/fpu/s_llround.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/fpu/s_llround.S 2014-05-27 22:50:13.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/fpu/s_llround.S 2014-05-27 22:50:13.000000000 -0500 @@ -19,12 +19,10 @@ #include #include diff --git a/SOURCES/glibc-ppc64le-19.patch b/SOURCES/glibc-ppc64le-19.patch index 48652a0..bbf7228 100644 --- a/SOURCES/glibc-ppc64le-19.patch +++ b/SOURCES/glibc-ppc64le-19.patch @@ -15,9 +15,9 @@ # * sysdeps/powerpc/powerpc64/fpu/s_roundf.S: Likewise. # * sysdeps/powerpc/powerpc64/fpu/s_truncf.S: Likewise. # -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/fpu/s_ceilf.S glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/fpu/s_ceilf.S ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/fpu/s_ceilf.S 2014-05-27 22:52:12.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/fpu/s_ceilf.S 2014-05-27 22:52:18.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/s_ceilf.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/s_ceilf.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/s_ceilf.S 2014-05-27 22:52:12.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/s_ceilf.S 2014-05-27 22:52:18.000000000 -0500 @@ -19,8 +19,10 @@ #include @@ -30,9 +30,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/fpu/s_ceilf.S glibc .section ".text" EALIGN (__ceilf, 4, 0) -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/fpu/s_floorf.S glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/fpu/s_floorf.S ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/fpu/s_floorf.S 2014-05-27 22:52:12.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/fpu/s_floorf.S 2014-05-27 22:52:18.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/s_floorf.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/s_floorf.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/s_floorf.S 2014-05-27 22:52:12.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/s_floorf.S 2014-05-27 22:52:18.000000000 -0500 @@ -19,8 +19,10 @@ #include @@ -45,9 +45,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/fpu/s_floorf.S glib .section ".text" EALIGN (__floorf, 4, 0) -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/fpu/s_nearbyintf.S glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/fpu/s_nearbyintf.S ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/fpu/s_nearbyintf.S 2014-05-27 22:52:12.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/fpu/s_nearbyintf.S 2014-05-27 22:52:18.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/s_nearbyintf.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/s_nearbyintf.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/s_nearbyintf.S 2014-05-27 22:52:12.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/s_nearbyintf.S 2014-05-27 22:52:18.000000000 -0500 @@ -26,8 +26,10 @@ /* float [fp1] nearbyintf(float [fp1]) */ @@ -60,9 +60,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/fpu/s_nearbyintf.S .section ".text" EALIGN (__nearbyintf, 4, 0) -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/fpu/s_rintf.S glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/fpu/s_rintf.S ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/fpu/s_rintf.S 2014-05-27 22:52:12.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/fpu/s_rintf.S 2014-05-27 22:52:18.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/s_rintf.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/s_rintf.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/s_rintf.S 2014-05-27 22:52:12.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/s_rintf.S 2014-05-27 22:52:18.000000000 -0500 @@ -19,8 +19,10 @@ #include @@ -75,9 +75,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/fpu/s_rintf.S glibc .section ".text" EALIGN (__rintf, 4, 0) -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/fpu/s_roundf.S glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/fpu/s_roundf.S ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/fpu/s_roundf.S 2014-05-27 22:52:12.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/fpu/s_roundf.S 2014-05-27 22:52:18.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/s_roundf.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/s_roundf.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/s_roundf.S 2014-05-27 22:52:12.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/s_roundf.S 2014-05-27 22:52:18.000000000 -0500 @@ -19,10 +19,12 @@ #include @@ -93,9 +93,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/fpu/s_roundf.S glib .section ".text" /* float [fp1] roundf (float x [fp1]) -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/fpu/s_truncf.S glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/fpu/s_truncf.S ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/fpu/s_truncf.S 2014-05-27 22:52:12.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/fpu/s_truncf.S 2014-05-27 22:52:18.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/s_truncf.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/s_truncf.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/s_truncf.S 2014-05-27 22:52:12.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/s_truncf.S 2014-05-27 22:52:18.000000000 -0500 @@ -19,8 +19,10 @@ #include diff --git a/SOURCES/glibc-ppc64le-20.patch b/SOURCES/glibc-ppc64le-20.patch index ce9af06..1342f97 100644 --- a/SOURCES/glibc-ppc64le-20.patch +++ b/SOURCES/glibc-ppc64le-20.patch @@ -10,9 +10,9 @@ # * sysdeps/powerpc/powerpc32/power4/hp-timing.h (HP_TIMING_NOW): # Don't use a union to pack hi/low value. # -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power4/hp-timing.h glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/power4/hp-timing.h ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power4/hp-timing.h 2014-05-27 22:53:37.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/power4/hp-timing.h 2014-05-27 22:53:39.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/hp-timing.h glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/hp-timing.h +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/hp-timing.h 2014-05-27 22:53:37.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/hp-timing.h 2014-05-27 22:53:39.000000000 -0500 @@ -87,18 +87,15 @@ #define HP_TIMING_NOW(Var) \ diff --git a/SOURCES/glibc-ppc64le-21.patch b/SOURCES/glibc-ppc64le-21.patch index 84384d8..a945404 100644 --- a/SOURCES/glibc-ppc64le-21.patch +++ b/SOURCES/glibc-ppc64le-21.patch @@ -26,9 +26,9 @@ # * sysdeps/powerpc/powerpc64/setjmp-common.S: Likewise CR save. Don't # destroy vmx regs when saving unaligned. # -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/jmpbuf-offsets.h glibc-2.17-c758a686.diff/sysdeps/powerpc/jmpbuf-offsets.h ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/jmpbuf-offsets.h 2014-05-27 22:55:23.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/jmpbuf-offsets.h 2014-05-27 22:55:27.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/jmpbuf-offsets.h glibc-2.17-c758a686/sysdeps/powerpc/jmpbuf-offsets.h +--- glibc-2.17-c758a686/sysdeps/powerpc/jmpbuf-offsets.h 2014-05-27 22:55:23.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/jmpbuf-offsets.h 2014-05-27 22:55:27.000000000 -0500 @@ -21,12 +21,10 @@ #define JB_LR 2 /* The address we will return to */ #if __WORDSIZE == 64 @@ -44,9 +44,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/jmpbuf-offsets.h glibc-2.17-c # define JB_VRS 40 /* VRs 20 through 31 are saved, 12*4 words total. */ #else # define JB_GPRS 3 /* GPRs 14 through 31 are saved, 18 in total. */ -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/fpu/__longjmp-common.S glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/fpu/__longjmp-common.S ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/fpu/__longjmp-common.S 2014-05-27 22:55:23.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/fpu/__longjmp-common.S 2014-05-27 22:55:27.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/fpu/__longjmp-common.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/fpu/__longjmp-common.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/fpu/__longjmp-common.S 2014-05-27 22:55:23.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/fpu/__longjmp-common.S 2014-05-27 22:55:27.000000000 -0500 @@ -46,16 +46,16 @@ # endif mtlr r6 @@ -68,9 +68,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/fpu/__longjmp-commo # endif andis. r5,r5,(PPC_FEATURE_HAS_ALTIVEC >> 16) beq L(no_vmx) -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/fpu/setjmp-common.S glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/fpu/setjmp-common.S ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/fpu/setjmp-common.S 2014-05-27 22:55:23.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/fpu/setjmp-common.S 2014-05-27 22:55:27.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/fpu/setjmp-common.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/fpu/setjmp-common.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/fpu/setjmp-common.S 2014-05-27 22:55:23.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/fpu/setjmp-common.S 2014-05-27 22:55:27.000000000 -0500 @@ -97,14 +97,14 @@ # else lwz r5,_rtld_global_ro@got(r5) @@ -171,9 +171,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/fpu/setjmp-common.S b L(no_vmx) L(aligned_save_vmx): -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/__longjmp-common.S glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/__longjmp-common.S ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/__longjmp-common.S 2014-05-27 22:55:23.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/__longjmp-common.S 2014-05-27 22:55:27.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/__longjmp-common.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/__longjmp-common.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/__longjmp-common.S 2014-05-27 22:55:23.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/__longjmp-common.S 2014-05-27 22:55:27.000000000 -0500 @@ -60,7 +60,7 @@ beq L(no_vmx) la r5,((JB_VRS)*8)(3) @@ -192,9 +192,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/__longjmp-common.S ld r23,((JB_GPRS+9)*8)(r3) lfd fp23,((JB_FPRS+9)*8)(r3) ld r24,((JB_GPRS+10)*8)(r3) -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/setjmp-common.S glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/setjmp-common.S ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/setjmp-common.S 2014-05-27 22:55:23.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/setjmp-common.S 2014-05-27 22:55:27.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/setjmp-common.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/setjmp-common.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/setjmp-common.S 2014-05-27 22:55:23.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/setjmp-common.S 2014-05-27 22:55:27.000000000 -0500 @@ -98,7 +98,7 @@ mfcr r0 std r16,((JB_GPRS+2)*8)(3) diff --git a/SOURCES/glibc-ppc64le-22.patch b/SOURCES/glibc-ppc64le-22.patch index fc7c310..12a0ff0 100644 --- a/SOURCES/glibc-ppc64le-22.patch +++ b/SOURCES/glibc-ppc64le-22.patch @@ -24,9 +24,9 @@ # * sysdeps/powerpc/powerpc64/setjmp.S: Likewise. # * nptl/sysdeps/unix/sysv/linux/powerpc/pt-longjmp.c: Likewise. # -diff -urN glibc-2.17-c758a686.orig/nptl/sysdeps/unix/sysv/linux/powerpc/pt-longjmp.c glibc-2.17-c758a686.diff/nptl/sysdeps/unix/sysv/linux/powerpc/pt-longjmp.c ---- glibc-2.17-c758a686.orig/nptl/sysdeps/unix/sysv/linux/powerpc/pt-longjmp.c 2014-05-27 23:22:12.000000000 -0500 -+++ glibc-2.17-c758a686.diff/nptl/sysdeps/unix/sysv/linux/powerpc/pt-longjmp.c 2014-05-27 23:23:44.000000000 -0500 +diff -urN glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/powerpc/pt-longjmp.c glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/powerpc/pt-longjmp.c +--- glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/powerpc/pt-longjmp.c 2014-05-27 23:22:12.000000000 -0500 ++++ glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/powerpc/pt-longjmp.c 2014-05-27 23:23:44.000000000 -0500 @@ -41,13 +41,8 @@ __novmx__libc_longjmp (env, val); } @@ -51,9 +51,9 @@ diff -urN glibc-2.17-c758a686.orig/nptl/sysdeps/unix/sysv/linux/powerpc/pt-longj -versioned_symbol (libc, __vmx_siglongjmp, siglongjmp, GLIBC_2_3_4); +versioned_symbol (libpthread, __vmx_longjmp, longjmp, GLIBC_2_3_4); +versioned_symbol (libpthread, __vmx_siglongjmp, siglongjmp, GLIBC_2_3_4); -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/longjmp.c glibc-2.17-c758a686.diff/sysdeps/powerpc/longjmp.c ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/longjmp.c 2014-05-27 23:22:10.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/longjmp.c 2014-05-27 23:22:12.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/longjmp.c glibc-2.17-c758a686/sysdeps/powerpc/longjmp.c +--- glibc-2.17-c758a686/sysdeps/powerpc/longjmp.c 2014-05-27 23:22:10.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/longjmp.c 2014-05-27 23:22:12.000000000 -0500 @@ -56,6 +56,6 @@ default_symbol_version (__vmx__libc_longjmp, __libc_longjmp, GLIBC_PRIVATE); @@ -64,9 +64,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/longjmp.c glibc-2.17-c758a686 +versioned_symbol (libc, __vmx_longjmp, _longjmp, GLIBC_2_3_4); +versioned_symbol (libc, __vmxlongjmp, longjmp, GLIBC_2_3_4); +versioned_symbol (libc, __vmxsiglongjmp, siglongjmp, GLIBC_2_3_4); -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/novmx-longjmp.c glibc-2.17-c758a686.diff/sysdeps/powerpc/novmx-longjmp.c ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/novmx-longjmp.c 2014-05-27 23:22:10.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/novmx-longjmp.c 2014-05-27 23:22:12.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/novmx-longjmp.c glibc-2.17-c758a686/sysdeps/powerpc/novmx-longjmp.c +--- glibc-2.17-c758a686/sysdeps/powerpc/novmx-longjmp.c 2014-05-27 23:22:10.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/novmx-longjmp.c 2014-05-27 23:22:12.000000000 -0500 @@ -51,13 +51,7 @@ weak_alias (__novmx__libc_siglongjmp, __novmxlongjmp) weak_alias (__novmx__libc_siglongjmp, __novmxsiglongjmp) @@ -84,9 +84,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/novmx-longjmp.c glibc-2.17-c7 +compat_symbol (libc, __novmxlongjmp, longjmp, GLIBC_2_0); +compat_symbol (libc, __novmxsiglongjmp, siglongjmp, GLIBC_2_0); #endif /* defined SHARED && SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_3_4)) */ -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/bsd-_setjmp.S glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/bsd-_setjmp.S ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/bsd-_setjmp.S 2014-05-27 23:22:10.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/bsd-_setjmp.S 2014-05-27 23:22:12.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/bsd-_setjmp.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/bsd-_setjmp.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/bsd-_setjmp.S 2014-05-27 23:22:10.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/bsd-_setjmp.S 2014-05-27 23:22:12.000000000 -0500 @@ -32,7 +32,7 @@ /* Build a versioned object for libc. */ @@ -105,9 +105,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/bsd-_setjmp.S glibc /* __GI__setjmp prototype is needed for ntpl i.e. _setjmp is defined as a libc_hidden_proto & is used in sysdeps/generic/libc-start.c if HAVE_CLEANUP_JMP_BUF is defined */ -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/bsd-setjmp.S glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/bsd-setjmp.S ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/bsd-setjmp.S 2014-05-27 23:22:10.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/bsd-setjmp.S 2014-05-27 23:22:12.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/bsd-setjmp.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/bsd-setjmp.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/bsd-setjmp.S 2014-05-27 23:22:10.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/bsd-setjmp.S 2014-05-27 23:22:12.000000000 -0500 @@ -27,7 +27,7 @@ b __novmx__sigsetjmp@local END (__novmxsetjmp) @@ -123,9 +123,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/bsd-setjmp.S glibc- strong_alias (__vmx__setjmp, __setjmp) -default_symbol_version (__vmxsetjmp,setjmp,GLIBC_2.3.4) +versioned_symbol (libc, __vmxsetjmp, setjmp, GLIBC_2_3_4) -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/fpu/__longjmp.S glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/fpu/__longjmp.S ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/fpu/__longjmp.S 2014-05-27 23:22:10.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/fpu/__longjmp.S 2014-05-27 23:22:12.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/fpu/__longjmp.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/fpu/__longjmp.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/fpu/__longjmp.S 2014-05-27 23:22:10.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/fpu/__longjmp.S 2014-05-27 23:22:12.000000000 -0500 @@ -26,14 +26,14 @@ #else /* !NOT_IN_libc */ @@ -143,9 +143,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/fpu/__longjmp.S gli # undef __longjmp # define __longjmp __novmx__longjmp # include "__longjmp-common.S" -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/fpu/setjmp.S glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/fpu/setjmp.S ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/fpu/setjmp.S 2014-05-27 23:22:10.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/fpu/setjmp.S 2014-05-27 23:22:12.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/fpu/setjmp.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/fpu/setjmp.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/fpu/setjmp.S 2014-05-27 23:22:10.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/fpu/setjmp.S 2014-05-27 23:22:12.000000000 -0500 @@ -26,7 +26,7 @@ #else /* !NOT_IN_libc */ @@ -164,9 +164,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/fpu/setjmp.S glibc- # define __sigsetjmp __novmx__sigsetjmp # define __sigjmp_save __novmx__sigjmp_save # include "setjmp-common.S" -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/mcount.c glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/mcount.c ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/mcount.c 2014-05-27 23:22:10.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/mcount.c 2014-05-27 23:22:12.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/mcount.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/mcount.c +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/mcount.c 2014-05-27 23:22:10.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/mcount.c 2014-05-27 23:22:12.000000000 -0500 @@ -9,7 +9,7 @@ /* __mcount_internal was added in glibc 2.15 with version GLIBC_PRIVATE, but it should have been put in version GLIBC_2.15. Mark the @@ -176,9 +176,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/mcount.c glibc-2.17 #if SHLIB_COMPAT (libc, GLIBC_2_15, GLIBC_2_16) strong_alias (___mcount_internal, ___mcount_internal_private); -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/setjmp.S glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/setjmp.S ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/setjmp.S 2014-05-27 23:22:10.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/setjmp.S 2014-05-27 23:22:12.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/setjmp.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/setjmp.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/setjmp.S 2014-05-27 23:22:10.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/setjmp.S 2014-05-27 23:22:12.000000000 -0500 @@ -25,7 +25,7 @@ #else /* !NOT_IN_libc */ @@ -197,9 +197,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/setjmp.S glibc-2.17 # define __sigsetjmp __novmx__sigsetjmp # define __sigjmp_save __novmx__sigjmp_save # include "setjmp-common.S" -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/setjmp.S glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/setjmp.S ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/setjmp.S 2014-05-27 23:22:10.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/setjmp.S 2014-05-27 23:22:12.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/setjmp.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/setjmp.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/setjmp.S 2014-05-27 23:22:10.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/setjmp.S 2014-05-27 23:22:12.000000000 -0500 @@ -26,9 +26,9 @@ #else /* !NOT_IN_libc */ diff --git a/SOURCES/glibc-ppc64le-23.patch b/SOURCES/glibc-ppc64le-23.patch index b8c1892..00288b9 100644 --- a/SOURCES/glibc-ppc64le-23.patch +++ b/SOURCES/glibc-ppc64le-23.patch @@ -12,9 +12,9 @@ # * sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext-common.S: Ditto. # * sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext-common.S: Ditto. # -diff -urN glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/powerpc/powerpc32/getcontext-common.S glibc-2.17-c758a686.diff/sysdeps/unix/sysv/linux/powerpc/powerpc32/getcontext-common.S ---- glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/powerpc/powerpc32/getcontext-common.S 2014-05-27 23:25:35.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/unix/sysv/linux/powerpc/powerpc32/getcontext-common.S 2014-05-27 23:25:38.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc32/getcontext-common.S glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc32/getcontext-common.S +--- glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc32/getcontext-common.S 2014-05-27 23:25:35.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc32/getcontext-common.S 2014-05-27 23:25:38.000000000 -0500 @@ -151,15 +151,15 @@ # ifdef SHARED lwz r7,_rtld_global_ro@got(r7) @@ -35,9 +35,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/powerpc/powerpc32/get # endif andis. r7,r7,(PPC_FEATURE_HAS_ALTIVEC >> 16) -diff -urN glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext-common.S glibc-2.17-c758a686.diff/sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext-common.S ---- glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext-common.S 2014-05-27 23:25:35.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext-common.S 2014-05-27 23:25:38.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext-common.S glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext-common.S +--- glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext-common.S 2014-05-27 23:25:35.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc32/setcontext-common.S 2014-05-27 23:25:38.000000000 -0500 @@ -79,15 +79,15 @@ # ifdef SHARED lwz r7,_rtld_global_ro@got(r7) @@ -58,9 +58,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/powerpc/powerpc32/set #endif #ifdef __CONTEXT_ENABLE_FPRS -diff -urN glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext-common.S glibc-2.17-c758a686.diff/sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext-common.S ---- glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext-common.S 2014-05-27 23:25:35.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext-common.S 2014-05-27 23:25:38.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext-common.S glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext-common.S +--- glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext-common.S 2014-05-27 23:25:35.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext-common.S 2014-05-27 23:25:38.000000000 -0500 @@ -152,15 +152,15 @@ # ifdef SHARED lwz r7,_rtld_global_ro@got(r7) diff --git a/SOURCES/glibc-ppc64le-24.patch b/SOURCES/glibc-ppc64le-24.patch index 46f7e54..5870d4f 100644 --- a/SOURCES/glibc-ppc64le-24.patch +++ b/SOURCES/glibc-ppc64le-24.patch @@ -12,9 +12,9 @@ # conditional form of branch and link when obtaining pc. # * sysdeps/unix/sysv/linux/powerpc/powerpc64/makecontext.S: Likewise. # -diff -urN glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/powerpc/powerpc32/makecontext.S glibc-2.17-c758a686.diff/sysdeps/unix/sysv/linux/powerpc/powerpc32/makecontext.S ---- glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/powerpc/powerpc32/makecontext.S 2014-05-28 12:25:49.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/unix/sysv/linux/powerpc/powerpc32/makecontext.S 2014-05-28 12:25:51.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc32/makecontext.S glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc32/makecontext.S +--- glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc32/makecontext.S 2014-05-28 12:25:49.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc32/makecontext.S 2014-05-28 12:25:51.000000000 -0500 @@ -47,7 +47,9 @@ #ifdef PIC mflr r0 @@ -37,9 +37,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/powerpc/powerpc32/mak 1: mflr r6 addi r6,r6,L(novec_exitcode)-1b mtlr r0 -diff -urN glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/powerpc/powerpc64/makecontext.S glibc-2.17-c758a686.diff/sysdeps/unix/sysv/linux/powerpc/powerpc64/makecontext.S ---- glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/powerpc/powerpc64/makecontext.S 2014-05-28 12:25:49.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/unix/sysv/linux/powerpc/powerpc64/makecontext.S 2014-05-28 12:25:51.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/makecontext.S glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/makecontext.S +--- glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/makecontext.S 2014-05-28 12:25:49.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/makecontext.S 2014-05-28 12:25:51.000000000 -0500 @@ -124,8 +124,10 @@ /* If the target function returns we need to do some cleanup. We use a diff --git a/SOURCES/glibc-ppc64le-25.patch b/SOURCES/glibc-ppc64le-25.patch index 05b22e7..144d3f3 100644 --- a/SOURCES/glibc-ppc64le-25.patch +++ b/SOURCES/glibc-ppc64le-25.patch @@ -30,9 +30,9 @@ # Rearrange tmp reg use to suit. Comment. # * sysdeps/powerpc/powerpc32/strlen.S: Likewise. # -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power7/strlen.S glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/power7/strlen.S ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power7/strlen.S 2014-05-28 12:28:44.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/power7/strlen.S 2014-05-28 12:28:45.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power7/strlen.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power7/strlen.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power7/strlen.S 2014-05-28 12:28:44.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power7/strlen.S 2014-05-28 12:28:45.000000000 -0500 @@ -31,7 +31,11 @@ li r0,0 /* Word with null chars to use with cmpb. */ li r5,-1 /* MASK = 0xffffffffffffffff. */ @@ -73,9 +73,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power7/strlen.S gli add r3,r5,r0 /* Compute final length. */ blr END (BP_SYM (strlen)) -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/strlen.S glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/strlen.S ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/strlen.S 2014-05-28 12:28:44.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/strlen.S 2014-05-28 12:32:24.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/strlen.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/strlen.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/strlen.S 2014-05-28 12:28:44.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/strlen.S 2014-05-28 12:32:24.000000000 -0500 @@ -31,7 +31,12 @@ 1 is subtracted you get a value in the range 0x00-0x7f, none of which have their high bit set. The expression here is @@ -212,9 +212,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/strlen.S glibc-2.17 + END (BP_SYM (strlen)) libc_hidden_builtin_def (strlen) -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/power7/strlen.S glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/power7/strlen.S ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/power7/strlen.S 2014-05-28 12:28:44.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/power7/strlen.S 2014-05-28 12:28:45.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power7/strlen.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power7/strlen.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power7/strlen.S 2014-05-28 12:28:44.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power7/strlen.S 2014-05-28 12:28:45.000000000 -0500 @@ -32,7 +32,11 @@ with cmpb. */ li r5,-1 /* MASK = 0xffffffffffffffff. */ @@ -255,9 +255,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/power7/strlen.S gli add r3,r5,r0 /* Compute final length. */ blr END (BP_SYM (strlen)) -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/strlen.S glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/strlen.S ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/strlen.S 2014-05-28 12:28:44.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/strlen.S 2014-05-28 12:38:17.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/strlen.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/strlen.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/strlen.S 2014-05-28 12:28:44.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/strlen.S 2014-05-28 12:38:17.000000000 -0500 @@ -31,7 +31,12 @@ 1 is subtracted you get a value in the range 0x00-0x7f, none of which have their high bit set. The expression here is diff --git a/SOURCES/glibc-ppc64le-26.patch b/SOURCES/glibc-ppc64le-26.patch index c07373a..93fd255 100644 --- a/SOURCES/glibc-ppc64le-26.patch +++ b/SOURCES/glibc-ppc64le-26.patch @@ -17,9 +17,9 @@ # Delete "zero" tail, use "end_max" instead. # * sysdeps/powerpc/powerpc32/power7/strnlen.S: Likewise. # -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power7/strnlen.S glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/power7/strnlen.S ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power7/strnlen.S 2014-05-28 12:40:17.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/power7/strnlen.S 2014-05-28 12:44:52.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power7/strnlen.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power7/strnlen.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power7/strnlen.S 2014-05-28 12:40:17.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power7/strnlen.S 2014-05-28 12:44:52.000000000 -0500 @@ -30,51 +30,47 @@ add r7,r3,r4 /* Calculate the last acceptable address. */ cmplwi r4,16 @@ -194,9 +194,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power7/strnlen.S gl END (BP_SYM (__strnlen)) weak_alias (BP_SYM (__strnlen), BP_SYM(strnlen)) libc_hidden_builtin_def (strnlen) -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/power7/strnlen.S glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/power7/strnlen.S ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/power7/strnlen.S 2014-05-28 12:40:17.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/power7/strnlen.S 2014-05-28 13:24:41.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power7/strnlen.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power7/strnlen.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power7/strnlen.S 2014-05-28 12:40:17.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power7/strnlen.S 2014-05-28 13:24:41.000000000 -0500 @@ -26,33 +26,29 @@ ENTRY (BP_SYM (__strnlen)) CALL_MCOUNT 2 diff --git a/SOURCES/glibc-ppc64le-27.patch b/SOURCES/glibc-ppc64le-27.patch index 26e97bb..83ca794 100644 --- a/SOURCES/glibc-ppc64le-27.patch +++ b/SOURCES/glibc-ppc64le-27.patch @@ -23,9 +23,9 @@ # * sysdeps/powerpc/powerpc64/power7/strncmp.S: Likewise. # * sysdeps/powerpc/powerpc32/power7/strncmp.S: Likewise. # -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power4/strncmp.S glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/power4/strncmp.S ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power4/strncmp.S 2014-05-28 13:26:59.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/power4/strncmp.S 2014-05-28 13:27:02.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/strncmp.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/strncmp.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/strncmp.S 2014-05-28 13:26:59.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/strncmp.S 2014-05-28 13:27:02.000000000 -0500 @@ -26,7 +26,7 @@ EALIGN (BP_SYM(strncmp), 4, 0) @@ -124,9 +124,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power4/strncmp.S gl /* Oh well. In this case, we just do a byte-by-byte comparison. */ .align 4 -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power7/strncmp.S glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/power7/strncmp.S ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power7/strncmp.S 2014-05-28 13:26:59.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/power7/strncmp.S 2014-05-28 13:27:02.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power7/strncmp.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power7/strncmp.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power7/strncmp.S 2014-05-28 13:26:59.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power7/strncmp.S 2014-05-28 13:27:02.000000000 -0500 @@ -28,7 +28,7 @@ EALIGN (BP_SYM(strncmp),5,0) @@ -225,9 +225,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power7/strncmp.S gl /* Oh well. In this case, we just do a byte-by-byte comparison. */ .align 4 -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/strcmp.S glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/strcmp.S ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/strcmp.S 2014-05-28 13:26:59.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/strcmp.S 2014-05-28 13:27:02.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/strcmp.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/strcmp.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/strcmp.S 2014-05-28 13:26:59.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/strcmp.S 2014-05-28 13:27:02.000000000 -0500 @@ -26,7 +26,7 @@ EALIGN (BP_SYM (strcmp), 4, 0) @@ -301,9 +301,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/strcmp.S glibc-2.17 /* Oh well. In this case, we just do a byte-by-byte comparison. */ .align 4 -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/strncmp.S glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/strncmp.S ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/strncmp.S 2014-05-28 13:26:59.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/strncmp.S 2014-05-28 13:27:02.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/strncmp.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/strncmp.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/strncmp.S 2014-05-28 13:26:59.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/strncmp.S 2014-05-28 13:27:02.000000000 -0500 @@ -26,7 +26,7 @@ EALIGN (BP_SYM(strncmp), 4, 0) @@ -402,9 +402,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/strncmp.S glibc-2.1 /* Oh well. In this case, we just do a byte-by-byte comparison. */ .align 4 -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/power4/strncmp.S glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/power4/strncmp.S ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/power4/strncmp.S 2014-05-28 13:26:59.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/power4/strncmp.S 2014-05-28 13:27:02.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power4/strncmp.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power4/strncmp.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power4/strncmp.S 2014-05-28 13:26:59.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power4/strncmp.S 2014-05-28 13:27:02.000000000 -0500 @@ -27,7 +27,7 @@ EALIGN (BP_SYM(strncmp), 4, 0) CALL_MCOUNT 3 @@ -516,9 +516,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/power4/strncmp.S gl /* Oh well. In this case, we just do a byte-by-byte comparison. */ .align 4 -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/power7/strncmp.S glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/power7/strncmp.S ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/power7/strncmp.S 2014-05-28 13:26:59.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/power7/strncmp.S 2014-05-28 13:27:02.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power7/strncmp.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power7/strncmp.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power7/strncmp.S 2014-05-28 13:26:59.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power7/strncmp.S 2014-05-28 13:27:02.000000000 -0500 @@ -29,7 +29,7 @@ EALIGN (BP_SYM(strncmp),5,0) CALL_MCOUNT 3 @@ -628,9 +628,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/power7/strncmp.S gl /* Oh well. In this case, we just do a byte-by-byte comparison. */ .align 4 -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/strcmp.S glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/strcmp.S ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/strcmp.S 2014-05-28 13:26:59.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/strcmp.S 2014-05-28 13:37:15.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/strcmp.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/strcmp.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/strcmp.S 2014-05-28 13:26:59.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/strcmp.S 2014-05-28 13:37:15.000000000 -0500 @@ -27,7 +27,7 @@ EALIGN (BP_SYM(strcmp), 4, 0) CALL_MCOUNT 2 @@ -743,9 +743,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/strcmp.S glibc-2.17 /* Oh well. In this case, we just do a byte-by-byte comparison. */ .align 4 -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/strncmp.S glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/strncmp.S ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/strncmp.S 2014-05-28 13:26:59.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/strncmp.S 2014-05-28 13:38:31.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/strncmp.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/strncmp.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/strncmp.S 2014-05-28 13:26:59.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/strncmp.S 2014-05-28 13:38:31.000000000 -0500 @@ -27,7 +27,7 @@ EALIGN (BP_SYM(strncmp), 4, 0) CALL_MCOUNT 3 diff --git a/SOURCES/glibc-ppc64le-28.patch b/SOURCES/glibc-ppc64le-28.patch index 787c39a..05f63e9 100644 --- a/SOURCES/glibc-ppc64le-28.patch +++ b/SOURCES/glibc-ppc64le-28.patch @@ -16,9 +16,9 @@ # * sysdeps/powerpc/powerpc64/stpcpy.S: Likewise. # * sysdeps/powerpc/powerpc32/stpcpy.S: Likewise. # -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/stpcpy.S glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/stpcpy.S ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/stpcpy.S 2014-05-28 13:40:01.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/stpcpy.S 2014-05-28 13:40:01.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/stpcpy.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/stpcpy.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/stpcpy.S 2014-05-28 13:40:01.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/stpcpy.S 2014-05-28 13:40:01.000000000 -0500 @@ -74,7 +74,22 @@ mr rALT, rWORD @@ -51,9 +51,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/stpcpy.S glibc-2.17 /* Oh well. In this case, we just do a byte-by-byte copy. */ .align 4 -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/strcpy.S glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/strcpy.S ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/strcpy.S 2014-05-28 13:40:01.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/strcpy.S 2014-05-28 13:40:01.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/strcpy.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/strcpy.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/strcpy.S 2014-05-28 13:40:01.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/strcpy.S 2014-05-28 13:40:01.000000000 -0500 @@ -78,7 +78,22 @@ mr rALT, rWORD @@ -86,9 +86,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/strcpy.S glibc-2.17 /* Oh well. In this case, we just do a byte-by-byte copy. */ .align 4 -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/stpcpy.S glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/stpcpy.S ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/stpcpy.S 2014-05-28 13:40:01.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/stpcpy.S 2014-05-28 13:40:01.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/stpcpy.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/stpcpy.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/stpcpy.S 2014-05-28 13:40:01.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/stpcpy.S 2014-05-28 13:40:01.000000000 -0500 @@ -75,7 +75,22 @@ mr rALT, rWORD @@ -121,9 +121,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/stpcpy.S glibc-2.17 /* Oh well. In this case, we just do a byte-by-byte copy. */ .align 4 -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/strcpy.S glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/strcpy.S ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/strcpy.S 2014-05-28 13:40:01.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/strcpy.S 2014-05-28 13:40:01.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/strcpy.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/strcpy.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/strcpy.S 2014-05-28 13:40:01.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/strcpy.S 2014-05-28 13:40:01.000000000 -0500 @@ -90,6 +90,32 @@ mr rALT, rWORD /* We've hit the end of the string. Do the rest byte-by-byte. */ diff --git a/SOURCES/glibc-ppc64le-29.patch b/SOURCES/glibc-ppc64le-29.patch index 2064770..291155e 100644 --- a/SOURCES/glibc-ppc64le-29.patch +++ b/SOURCES/glibc-ppc64le-29.patch @@ -30,10 +30,11 @@ # earlier in tail. # * sysdeps/powerpc/powerpc32/strchr.S: Likewise. # -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power7/strchr.S glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/power7/strchr.S ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power7/strchr.S 2014-05-28 13:41:50.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/power7/strchr.S 2014-05-28 13:41:54.000000000 -0500 -@@ -37,8 +37,8 @@ +Index: glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power7/strchr.S +=================================================================== +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power7/strchr.S.orig ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power7/strchr.S +@@ -37,8 +37,8 @@ ENTRY (BP_SYM(strchr)) beq cr7,L(null_match) /* Replicate byte to word. */ @@ -44,7 +45,7 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power7/strchr.S gli /* Now r4 has a word of c bytes and r0 has a word of null bytes. */ -@@ -48,11 +48,17 @@ +@@ -48,11 +48,17 @@ ENTRY (BP_SYM(strchr)) /* Move the words left and right to discard the bits that are not part of the string and to bring them back as zeros. */ @@ -63,7 +64,7 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power7/strchr.S gli or r5,r10,r11 /* OR the results to speed things up. */ cmpwi cr7,r5,0 /* If r5 == 0, no c or null bytes have been found. */ -@@ -67,7 +73,7 @@ +@@ -67,7 +73,7 @@ ENTRY (BP_SYM(strchr)) /* Handle WORD2 of pair. */ lwzu r12,4(r8) @@ -72,7 +73,7 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power7/strchr.S gli cmpb r11,r12,r0 or r5,r10,r11 cmpwi cr7,r5,0 -@@ -102,22 +108,31 @@ +@@ -102,22 +108,31 @@ L(loop): bne cr6,L(done) /* The c/null byte must be in the second word. Adjust the address @@ -111,7 +112,7 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power7/strchr.S gli add r3,r8,r0 /* Return address of the matching c byte or null in case c was not found. */ blr -@@ -135,10 +150,14 @@ +@@ -135,10 +150,14 @@ L(null_match): cmpb r5,r12,r0 /* Compare each byte against null bytes. */ /* Move the words left and right to discard the bits that are @@ -128,7 +129,7 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power7/strchr.S gli cmpwi cr7,r5,0 /* If r10 == 0, no c or null bytes have been found. */ bne cr7,L(done_null) -@@ -193,7 +212,13 @@ +@@ -193,7 +212,13 @@ L(loop_null): 0xff in the same position as the null byte in the original word from the string. Use that to calculate the pointer. */ L(done_null): @@ -142,10 +143,11 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power7/strchr.S gli srwi r0,r0,3 /* Convert leading zeros to bytes. */ add r3,r8,r0 /* Return address of the matching null byte. */ blr -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power7/strchrnul.S glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/power7/strchrnul.S ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power7/strchrnul.S 2014-05-28 13:41:50.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/power7/strchrnul.S 2014-05-28 13:41:54.000000000 -0500 -@@ -29,8 +29,8 @@ +Index: glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power7/strchrnul.S +=================================================================== +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power7/strchrnul.S.orig ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power7/strchrnul.S +@@ -29,8 +29,8 @@ ENTRY (BP_SYM(__strchrnul)) clrrwi r8,r3,2 /* Align the address to word boundary. */ /* Replicate byte to word. */ @@ -156,7 +158,7 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power7/strchrnul.S rlwinm r6,r3,3,27,28 /* Calculate padding. */ lwz r12,0(r8) /* Load word from memory. */ -@@ -45,10 +45,17 @@ +@@ -45,10 +45,17 @@ ENTRY (BP_SYM(__strchrnul)) /* Move the words left and right to discard the bits that are not part of the string and bring them back as zeros. */ @@ -174,7 +176,7 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power7/strchrnul.S or r5,r9,r10 /* OR the results to speed things up. */ cmpwi cr7,r5,0 /* If r5 == 0, no c or null bytes have been found. */ -@@ -56,7 +63,7 @@ +@@ -56,7 +63,7 @@ ENTRY (BP_SYM(__strchrnul)) mtcrf 0x01,r8 @@ -183,7 +185,7 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power7/strchrnul.S the main loop. Otherwise, go through the alignment code. */ bt 29,L(loop) -@@ -78,7 +85,7 @@ +@@ -78,7 +85,7 @@ L(loop): single register for speed. This is an attempt to speed up the null-checking process for bigger strings. */ lwz r12,4(r8) @@ -192,7 +194,7 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power7/strchrnul.S cmpb r10,r12,r0 cmpb r9,r12,r4 cmpb r6,r11,r0 -@@ -97,9 +104,9 @@ +@@ -97,9 +104,9 @@ L(loop): addi r8,r8,-4 bne cr6,L(done) @@ -205,7 +207,7 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power7/strchrnul.S mr r5,r10 addi r8,r8,4 -@@ -107,7 +114,13 @@ +@@ -107,7 +114,13 @@ L(loop): 0xff in the same position as the c/null byte in the original word from the string. Use that to calculate the pointer. */ L(done): @@ -219,10 +221,11 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power7/strchrnul.S srwi r0,r0,3 /* Convert leading zeros to bytes. */ add r3,r8,r0 /* Return address of matching c/null byte. */ blr -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/strchr.S glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/strchr.S ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/strchr.S 2014-05-28 13:41:50.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/strchr.S 2014-05-28 13:57:31.000000000 -0500 -@@ -44,6 +44,8 @@ +Index: glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/strchr.S +=================================================================== +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/strchr.S.orig ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/strchr.S +@@ -44,6 +44,8 @@ ENTRY (BP_SYM (strchr)) #define rIGN r10 /* number of bits we should ignore in the first word */ #define rMASK r11 /* mask with the bits to ignore set to 0 */ #define rTMP3 r12 @@ -231,7 +234,7 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/strchr.S glibc-2.17 CHECK_BOUNDS_LOW (rSTR, rTMP1, rTMP2) STORE_RETURN_BOUNDS (rTMP1, rTMP2) -@@ -59,53 +61,74 @@ +@@ -59,53 +61,74 @@ ENTRY (BP_SYM (strchr)) addi r7F7F, r7F7F, 0x7f7f /* Test the first (partial?) word. */ lwz rWORD, 0(rSTR) @@ -324,7 +327,7 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/strchr.S glibc-2.17 srwi rCLZB, rCLZB, 3 add rRTN, rSTR, rCLZB CHECK_BOUNDS_HIGH_RTN (rSTR, rTMP2, twlge) -@@ -113,13 +136,21 @@ +@@ -113,13 +136,21 @@ L(missed): blr L(foundit): @@ -348,10 +351,11 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/strchr.S glibc-2.17 add rRTN, rSTR, rCLZB CHECK_BOUNDS_HIGH_RTN (rSTR, rTMP2, twlge) STORE_RETURN_VALUE (rSTR) -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/power7/strchr.S glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/power7/strchr.S ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/power7/strchr.S 2014-05-28 13:41:50.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/power7/strchr.S 2014-05-28 13:41:54.000000000 -0500 -@@ -37,8 +37,8 @@ +Index: glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power7/strchr.S +=================================================================== +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power7/strchr.S.orig ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power7/strchr.S +@@ -37,8 +37,8 @@ ENTRY (BP_SYM(strchr)) beq cr7,L(null_match) /* Replicate byte to doubleword. */ @@ -362,7 +366,7 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/power7/strchr.S gli insrdi r4,r4,32,0 /* Now r4 has a doubleword of c bytes and r0 has -@@ -49,11 +49,17 @@ +@@ -49,11 +49,17 @@ ENTRY (BP_SYM(strchr)) /* Move the doublewords left and right to discard the bits that are not part of the string and bring them back as zeros. */ @@ -381,7 +385,7 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/power7/strchr.S gli or r5,r10,r11 /* OR the results to speed things up. */ cmpdi cr7,r5,0 /* If r5 == 0, no c or null bytes have been found. */ -@@ -110,15 +116,24 @@ +@@ -110,15 +116,24 @@ L(loop): mr r11,r7 addi r8,r8,8 @@ -411,7 +415,7 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/power7/strchr.S gli add r3,r8,r0 /* Return address of the matching c byte or null in case c was not found. */ blr -@@ -137,9 +152,13 @@ +@@ -137,9 +152,13 @@ L(null_match): /* Move the doublewords left and right to discard the bits that are not part of the string and bring them back as zeros. */ @@ -426,7 +430,7 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/power7/strchr.S gli cmpdi cr7,r5,0 /* If r10 == 0, no c or null bytes have been found. */ bne cr7,L(done_null) -@@ -194,7 +213,13 @@ +@@ -194,7 +213,13 @@ L(loop_null): 0xff in the same position as the null byte in the original doubleword from the string. Use that to calculate the pointer. */ L(done_null): @@ -440,10 +444,11 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/power7/strchr.S gli srdi r0,r0,3 /* Convert leading zeros to bytes. */ add r3,r8,r0 /* Return address of the matching null byte. */ blr -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/power7/strchrnul.S glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/power7/strchrnul.S ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/power7/strchrnul.S 2014-05-28 13:41:50.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/power7/strchrnul.S 2014-05-28 13:41:54.000000000 -0500 -@@ -29,8 +29,8 @@ +Index: glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power7/strchrnul.S +=================================================================== +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power7/strchrnul.S.orig ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power7/strchrnul.S +@@ -29,8 +29,8 @@ ENTRY (BP_SYM(__strchrnul)) clrrdi r8,r3,3 /* Align the address to doubleword boundary. */ /* Replicate byte to doubleword. */ @@ -454,7 +459,7 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/power7/strchrnul.S insrdi r4,r4,32,0 rlwinm r6,r3,3,26,28 /* Calculate padding. */ -@@ -46,10 +46,17 @@ +@@ -46,10 +46,17 @@ ENTRY (BP_SYM(__strchrnul)) /* Move the doublewords left and right to discard the bits that are not part of the string and to bring them back as zeros. */ @@ -472,7 +477,7 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/power7/strchrnul.S or r5,r9,r10 /* OR the results to speed things up. */ cmpdi cr7,r5,0 /* If r5 == 0, no c or null bytes have been found. */ -@@ -99,7 +106,7 @@ +@@ -99,7 +106,7 @@ L(loop): bne cr6,L(done) /* The c/null byte must be in the second doubleword. Adjust the @@ -481,7 +486,7 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/power7/strchrnul.S the pointer. */ mr r5,r10 addi r8,r8,8 -@@ -108,7 +115,13 @@ +@@ -108,7 +115,13 @@ L(loop): 0xff in the same position as the c/null byte in the original doubleword from the string. Use that to calculate the pointer. */ L(done): @@ -495,10 +500,11 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/power7/strchrnul.S srdi r0,r0,3 /* Convert leading zeros to bytes. */ add r3,r8,r0 /* Return address of matching c/null byte. */ blr -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/strchr.S glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/strchr.S ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/strchr.S 2014-05-28 13:41:50.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/strchr.S 2014-05-28 14:04:47.000000000 -0500 -@@ -50,14 +50,16 @@ +Index: glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/strchr.S +=================================================================== +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/strchr.S.orig ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/strchr.S +@@ -50,14 +50,16 @@ ENTRY (BP_SYM (strchr)) #define rIGN r10 /* number of bits we should ignore in the first word */ #define rMASK r11 /* mask with the bits to ignore set to 0 */ #define rTMP3 r12 @@ -517,7 +523,7 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/strchr.S glibc-2.17 rlwinm rIGN, rRTN, 3, 26, 28 insrdi rCHR, rCHR, 32, 0 lis rFEFE, -0x101 -@@ -70,53 +72,74 @@ +@@ -70,53 +72,74 @@ ENTRY (BP_SYM (strchr)) add rFEFE, rFEFE, rTMP1 /* Test the first (partial?) word. */ ld rWORD, 0(rSTR) @@ -610,7 +616,7 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/strchr.S glibc-2.17 srdi rCLZB, rCLZB, 3 add rRTN, rSTR, rCLZB CHECK_BOUNDS_HIGH_RTN (rSTR, rTMP2, tdlge) -@@ -124,13 +147,21 @@ +@@ -124,13 +147,21 @@ L(missed): blr L(foundit): diff --git a/SOURCES/glibc-ppc64le-30.patch b/SOURCES/glibc-ppc64le-30.patch index 5ef4766..3834dcc 100644 --- a/SOURCES/glibc-ppc64le-30.patch +++ b/SOURCES/glibc-ppc64le-30.patch @@ -34,9 +34,9 @@ # addi 1,1,64 to pop stack frame. Simplify return value code. # * sysdeps/powerpc/powerpc32/power4/memcmp.S: Likewise. # -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power4/memcmp.S glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/power4/memcmp.S ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power4/memcmp.S 2014-05-28 19:22:37.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/power4/memcmp.S 2014-05-28 23:55:52.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/memcmp.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/memcmp.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/memcmp.S 2014-05-28 19:22:37.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/memcmp.S 2014-05-28 23:55:52.000000000 -0500 @@ -1,4 +1,4 @@ -/* Optimized strcmp implementation for PowerPC64. +/* Optimized strcmp implementation for PowerPC32. @@ -1700,9 +1700,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power4/memcmp.S gli blr END (BP_SYM (memcmp)) -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power7/memcmp.S glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/power7/memcmp.S ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power7/memcmp.S 2014-05-28 19:22:37.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/power7/memcmp.S 2014-05-28 21:44:57.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power7/memcmp.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power7/memcmp.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power7/memcmp.S 2014-05-28 19:22:37.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power7/memcmp.S 2014-05-28 21:44:57.000000000 -0500 @@ -25,10 +25,9 @@ size_t size [r5]) */ @@ -3663,9 +3663,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power7/memcmp.S gli + libc_hidden_builtin_def (memcmp) weak_alias (memcmp,bcmp) -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/power4/memcmp.S glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/power4/memcmp.S ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/power4/memcmp.S 2014-05-28 19:22:37.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/power4/memcmp.S 2014-05-29 09:35:25.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power4/memcmp.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power4/memcmp.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power4/memcmp.S 2014-05-28 19:22:37.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power4/memcmp.S 2014-05-29 09:35:25.000000000 -0500 @@ -1,5 +1,5 @@ -/* Optimized strcmp implementation for PowerPC64. - Copyright (C) 2003, 2006, 2011 Free Software Foundation, Inc. @@ -5395,9 +5395,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/power4/memcmp.S gli +END (memcmp) libc_hidden_builtin_def (memcmp) weak_alias (memcmp, bcmp) -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/power7/memcmp.S glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/power7/memcmp.S ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/power7/memcmp.S 2014-05-28 19:22:37.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/power7/memcmp.S 2014-05-29 09:35:08.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power7/memcmp.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power7/memcmp.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power7/memcmp.S 2014-05-28 19:22:37.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power7/memcmp.S 2014-05-29 09:35:08.000000000 -0500 @@ -1,5 +1,5 @@ /* Optimized memcmp implementation for POWER7/PowerPC64. - Copyright (C) 2010, 2011 Free Software Foundation, Inc. diff --git a/SOURCES/glibc-ppc64le-31.patch b/SOURCES/glibc-ppc64le-31.patch index e32bfa3..de90661 100644 --- a/SOURCES/glibc-ppc64le-31.patch +++ b/SOURCES/glibc-ppc64le-31.patch @@ -21,9 +21,9 @@ # * sysdeps/powerpc/powerpc64/power7/mempcpy.S: Likewise. Make better # use of regs. Use power7 mtocrf. Tidy function tails. # -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power4/memcpy.S glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/power4/memcpy.S ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power4/memcpy.S 2014-05-29 13:04:56.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/power4/memcpy.S 2014-05-29 13:04:56.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/memcpy.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/memcpy.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/memcpy.S 2014-05-29 13:04:56.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/memcpy.S 2014-05-29 13:04:56.000000000 -0500 @@ -205,15 +205,28 @@ blt cr6,5f srwi 7,6,16 @@ -163,9 +163,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power4/memcpy.S gli or 0,0,8 stw 0,0(4) 3: -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power6/memcpy.S glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/power6/memcpy.S ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power6/memcpy.S 2014-05-29 13:04:56.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/power6/memcpy.S 2014-05-29 13:04:56.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power6/memcpy.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power6/memcpy.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power6/memcpy.S 2014-05-29 13:04:56.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power6/memcpy.S 2014-05-29 13:04:56.000000000 -0500 @@ -221,15 +221,28 @@ blt cr6,5f srwi 7,6,16 @@ -385,9 +385,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power6/memcpy.S gli b L(wdu_32tailx) .align 4 L(wdu_32tailx): -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power7/memcpy.S glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/power7/memcpy.S ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power7/memcpy.S 2014-05-29 13:04:56.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/power7/memcpy.S 2014-05-29 13:04:56.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power7/memcpy.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power7/memcpy.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power7/memcpy.S 2014-05-29 13:04:56.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power7/memcpy.S 2014-05-29 13:04:56.000000000 -0500 @@ -385,7 +385,7 @@ beq L(copy_GE_32_unaligned_cont) @@ -441,9 +441,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power7/memcpy.S gli addi 11,11,32 stvx 6,0,10 stvx 10,10,6 -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power7/mempcpy.S glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/power7/mempcpy.S ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power7/mempcpy.S 2014-05-29 13:04:56.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/power7/mempcpy.S 2014-05-29 13:04:56.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power7/mempcpy.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power7/mempcpy.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power7/mempcpy.S 2014-05-29 13:04:56.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power7/mempcpy.S 2014-05-29 13:04:56.000000000 -0500 @@ -327,7 +327,7 @@ beq L(copy_GE_32_unaligned_cont) @@ -499,9 +499,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power7/mempcpy.S gl addi 11,11,32 stvx 6,0,10 stvx 10,10,6 -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/memcpy.S glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/memcpy.S ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/memcpy.S 2014-05-29 13:04:56.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/memcpy.S 2014-05-29 13:04:56.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/memcpy.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/memcpy.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/memcpy.S 2014-05-29 13:04:56.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/memcpy.S 2014-05-29 13:04:56.000000000 -0500 @@ -214,15 +214,28 @@ blt cr6,5f srdi 7,6,16 @@ -569,9 +569,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/memcpy.S glibc-2.17 or 0,0,8 beq 8f ld 7,16(5) -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/power4/memcpy.S glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/power4/memcpy.S ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/power4/memcpy.S 2014-05-29 13:04:56.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/power4/memcpy.S 2014-05-29 13:05:51.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power4/memcpy.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power4/memcpy.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power4/memcpy.S 2014-05-29 13:04:56.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power4/memcpy.S 2014-05-29 13:05:51.000000000 -0500 @@ -1,5 +1,5 @@ /* Optimized memcpy implementation for PowerPC64. - Copyright (C) 2003, 2006, 2011 Free Software Foundation, Inc. @@ -954,9 +954,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/power4/memcpy.S gli -END_GEN_TB (BP_SYM (memcpy),TB_TOCLESS) +END_GEN_TB (memcpy,TB_TOCLESS) libc_hidden_builtin_def (memcpy) -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/power6/memcpy.S glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/power6/memcpy.S ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/power6/memcpy.S 2014-05-29 13:04:56.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/power6/memcpy.S 2014-05-29 13:05:27.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power6/memcpy.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power6/memcpy.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power6/memcpy.S 2014-05-29 13:04:56.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power6/memcpy.S 2014-05-29 13:05:27.000000000 -0500 @@ -1,5 +1,5 @@ /* Optimized memcpy implementation for PowerPC64. - Copyright (C) 2003, 2006, 2007, 2011 Free Software Foundation, Inc. @@ -2073,9 +2073,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/power6/memcpy.S gli -END_GEN_TB (BP_SYM (memcpy),TB_TOCLESS) +END_GEN_TB (memcpy,TB_TOCLESS) libc_hidden_builtin_def (memcpy) -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/power7/memcpy.S glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/power7/memcpy.S ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/power7/memcpy.S 2014-05-29 13:04:56.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/power7/memcpy.S 2014-05-29 13:05:40.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power7/memcpy.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power7/memcpy.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power7/memcpy.S 2014-05-29 13:04:56.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power7/memcpy.S 2014-05-29 13:05:40.000000000 -0500 @@ -1,5 +1,5 @@ /* Optimized memcpy implementation for PowerPC64/POWER7. - Copyright (C) 2010, 2011 Free Software Foundation, Inc. @@ -2892,9 +2892,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/power7/memcpy.S gli -END_GEN_TB (BP_SYM (memcpy),TB_TOCLESS) +END_GEN_TB (memcpy,TB_TOCLESS) libc_hidden_builtin_def (memcpy) -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/power7/mempcpy.S glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/power7/mempcpy.S ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/power7/mempcpy.S 2014-05-29 13:04:56.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/power7/mempcpy.S 2014-05-29 13:04:56.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power7/mempcpy.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power7/mempcpy.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power7/mempcpy.S 2014-05-29 13:04:56.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power7/mempcpy.S 2014-05-29 13:04:56.000000000 -0500 @@ -367,13 +367,21 @@ mr 11,12 mtcrf 0x01,9 diff --git a/SOURCES/glibc-ppc64le-32.patch b/SOURCES/glibc-ppc64le-32.patch index 9da593b..058d53a 100644 --- a/SOURCES/glibc-ppc64le-32.patch +++ b/SOURCES/glibc-ppc64le-32.patch @@ -18,9 +18,9 @@ # * sysdeps/powerpc/powerpc32/power6/memset.S: Likewise. # * sysdeps/powerpc/powerpc32/power7/memset.S: Likewise. # -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power4/memset.S glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/power4/memset.S ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power4/memset.S 2014-05-29 13:07:41.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/power4/memset.S 2014-05-29 13:07:46.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/memset.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/memset.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/memset.S 2014-05-29 13:07:41.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/memset.S 2014-05-29 13:07:46.000000000 -0500 @@ -52,7 +52,7 @@ /* Align to word boundary. */ @@ -39,9 +39,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power4/memset.S gli ble cr5, L(medium) /* Align to 32-byte boundary. */ andi. rALIGN, rMEMP, 0x1C -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power6/memset.S glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/power6/memset.S ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power6/memset.S 2014-05-29 13:07:41.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/power6/memset.S 2014-05-29 13:07:46.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power6/memset.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power6/memset.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power6/memset.S 2014-05-29 13:07:41.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power6/memset.S 2014-05-29 13:07:46.000000000 -0500 @@ -50,7 +50,7 @@ ble- cr1, L(small) /* Align to word boundary. */ @@ -60,9 +60,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power6/memset.S gli ble cr5, L(medium) /* Align to 32-byte boundary. */ andi. rALIGN, rMEMP, 0x1C -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power7/memset.S glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/power7/memset.S ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power7/memset.S 2014-05-29 13:07:41.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/power7/memset.S 2014-05-29 13:07:46.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power7/memset.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power7/memset.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power7/memset.S 2014-05-29 13:07:41.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power7/memset.S 2014-05-29 13:07:46.000000000 -0500 @@ -37,8 +37,8 @@ cfi_offset(31,-8) @@ -74,9 +74,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power7/memset.S gli ble cr6,L(small) /* If length <= 8, use short copy code. */ -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/memset.S glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/memset.S ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/memset.S 2014-05-29 13:07:41.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/memset.S 2014-05-29 13:07:46.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/memset.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/memset.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/memset.S 2014-05-29 13:07:41.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/memset.S 2014-05-29 13:07:46.000000000 -0500 @@ -73,14 +73,14 @@ /* Align to doubleword boundary. */ @@ -120,9 +120,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/memset.S glibc-2.17 cmpldi cr1, rLEN, 16 L(medium_tail2): add rMEMP, rMEMP, rLEN -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/power4/memset.S glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/power4/memset.S ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/power4/memset.S 2014-05-29 13:07:41.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/power4/memset.S 2014-05-29 13:07:46.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power4/memset.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power4/memset.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power4/memset.S 2014-05-29 13:07:41.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power4/memset.S 2014-05-29 13:07:46.000000000 -0500 @@ -68,14 +68,14 @@ /* Align to doubleword boundary. */ @@ -201,9 +201,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/power4/memset.S gli cmpldi cr1, rLEN, 16 L(medium_tail2): add rMEMP, rMEMP, rLEN -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/power6/memset.S glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/power6/memset.S ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/power6/memset.S 2014-05-29 13:07:41.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/power6/memset.S 2014-05-29 13:07:46.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power6/memset.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power6/memset.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power6/memset.S 2014-05-29 13:07:41.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power6/memset.S 2014-05-29 13:07:46.000000000 -0500 @@ -65,14 +65,14 @@ /* Align to doubleword boundary. */ @@ -247,9 +247,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/power6/memset.S gli cmpldi cr1, rLEN, 16 L(medium_tail2): add rMEMP, rMEMP, rLEN -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/power7/memset.S glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/power7/memset.S ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/power7/memset.S 2014-05-29 13:07:41.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/power7/memset.S 2014-05-29 13:07:46.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power7/memset.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power7/memset.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power7/memset.S 2014-05-29 13:07:41.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power7/memset.S 2014-05-29 13:07:46.000000000 -0500 @@ -34,8 +34,8 @@ mr 10,3 diff --git a/SOURCES/glibc-ppc64le-33.patch b/SOURCES/glibc-ppc64le-33.patch index 4be8975..9da11df 100644 --- a/SOURCES/glibc-ppc64le-33.patch +++ b/SOURCES/glibc-ppc64le-33.patch @@ -48,9 +48,9 @@ # support. Avoid rlwimi. # * sysdeps/powerpc/powerpc32/power7/rawmemchr.S: Likewise. # -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power7/memchr.S glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/power7/memchr.S ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power7/memchr.S 2014-05-29 13:09:17.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/power7/memchr.S 2014-05-29 13:13:37.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power7/memchr.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power7/memchr.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power7/memchr.S 2014-05-29 13:09:17.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power7/memchr.S 2014-05-29 13:13:37.000000000 -0500 @@ -1,5 +1,5 @@ /* Optimized memchr implementation for PowerPC32/POWER7 using cmpb insn. - Copyright (C) 2010-2012 Free Software Foundation, Inc. @@ -330,9 +330,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power7/memchr.S gli +END (__memchr) +weak_alias (__memchr, memchr) libc_hidden_builtin_def (memchr) -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power7/memrchr.S glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/power7/memrchr.S ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power7/memrchr.S 2014-05-29 13:09:17.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/power7/memrchr.S 2014-05-29 13:13:47.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power7/memrchr.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power7/memrchr.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power7/memrchr.S 2014-05-29 13:09:17.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power7/memrchr.S 2014-05-29 13:13:47.000000000 -0500 @@ -1,5 +1,5 @@ /* Optimized memrchr implementation for PowerPC32/POWER7 using cmpb insn. - Copyright (C) 2010 Free Software Foundation, Inc. @@ -602,9 +602,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power7/memrchr.S gl +END (__memrchr) +weak_alias (__memrchr, memrchr) libc_hidden_builtin_def (memrchr) -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power7/rawmemchr.S glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/power7/rawmemchr.S ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power7/rawmemchr.S 2014-05-29 13:09:17.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc32/power7/rawmemchr.S 2014-05-29 13:09:19.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power7/rawmemchr.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power7/rawmemchr.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power7/rawmemchr.S 2014-05-29 13:09:17.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power7/rawmemchr.S 2014-05-29 13:09:19.000000000 -0500 @@ -29,16 +29,21 @@ clrrwi r8,r3,2 /* Align the address to word boundary. */ @@ -645,9 +645,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power7/rawmemchr.S add r3,r8,r0 /* Return address of the matching char. */ blr END (BP_SYM (__rawmemchr)) -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/power7/memchr.S glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/power7/memchr.S ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/power7/memchr.S 2014-05-29 13:09:17.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/power7/memchr.S 2014-05-29 13:13:57.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power7/memchr.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power7/memchr.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power7/memchr.S 2014-05-29 13:09:17.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power7/memchr.S 2014-05-29 13:13:57.000000000 -0500 @@ -1,5 +1,5 @@ /* Optimized memchr implementation for PowerPC64/POWER7 using cmpb insn. - Copyright (C) 2010-2012 Free Software Foundation, Inc. @@ -932,9 +932,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/power7/memchr.S gli +END (__memchr) +weak_alias (__memchr, memchr) libc_hidden_builtin_def (memchr) -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/power7/memrchr.S glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/power7/memrchr.S ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/power7/memrchr.S 2014-05-29 13:09:17.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/power7/memrchr.S 2014-05-29 13:14:06.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power7/memrchr.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power7/memrchr.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power7/memrchr.S 2014-05-29 13:09:17.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power7/memrchr.S 2014-05-29 13:14:06.000000000 -0500 @@ -1,5 +1,5 @@ /* Optimized memrchr implementation for PowerPC64/POWER7 using cmpb insn. - Copyright (C) 2010 Free Software Foundation, Inc. @@ -1209,9 +1209,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/power7/memrchr.S gl +END (__memrchr) +weak_alias (__memrchr, memrchr) libc_hidden_builtin_def (memrchr) -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/power7/rawmemchr.S glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/power7/rawmemchr.S ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/power7/rawmemchr.S 2014-05-29 13:09:17.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/power7/rawmemchr.S 2014-05-29 13:09:19.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power7/rawmemchr.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power7/rawmemchr.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power7/rawmemchr.S 2014-05-29 13:09:17.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power7/rawmemchr.S 2014-05-29 13:09:19.000000000 -0500 @@ -29,8 +29,8 @@ clrrdi r8,r3,3 /* Align the address to doubleword boundary. */ diff --git a/SOURCES/glibc-ppc64le-34.patch b/SOURCES/glibc-ppc64le-34.patch index 9324023..ef6362d 100644 --- a/SOURCES/glibc-ppc64le-34.patch +++ b/SOURCES/glibc-ppc64le-34.patch @@ -18,9 +18,9 @@ # # PowerPC: Change powerpc64le start ABI to 2.17. # -diff -urN glibc-2.17-c758a686.orig/configure glibc-2.17-c758a686.diff/configure ---- glibc-2.17-c758a686.orig/configure 2014-05-26 19:52:31.000000000 -0500 -+++ glibc-2.17-c758a686.diff/configure 2014-05-26 19:54:13.000000000 -0500 +diff -urN glibc-2.17-c758a686/configure glibc-2.17-c758a686/configure +--- glibc-2.17-c758a686/configure 2014-05-26 19:52:31.000000000 -0500 ++++ glibc-2.17-c758a686/configure 2014-05-26 19:54:13.000000000 -0500 @@ -4195,8 +4195,8 @@ # base_machine, we don't change it. test -n "$base_machine" || case "$machine" in @@ -32,9 +32,9 @@ diff -urN glibc-2.17-c758a686.orig/configure glibc-2.17-c758a686.diff/configure s390) base_machine=s390 machine=s390/s390-32 ;; s390x) base_machine=s390 machine=s390/s390-64 ;; sh3*) base_machine=sh machine=sh/sh3 ;; -diff -urN glibc-2.17-c758a686.orig/configure.in glibc-2.17-c758a686.diff/configure.in ---- glibc-2.17-c758a686.orig/configure.in 2014-05-26 19:52:30.000000000 -0500 -+++ glibc-2.17-c758a686.diff/configure.in 2014-05-26 19:54:45.000000000 -0500 +diff -urN glibc-2.17-c758a686/configure.in glibc-2.17-c758a686/configure.in +--- glibc-2.17-c758a686/configure.in 2014-05-26 19:52:30.000000000 -0500 ++++ glibc-2.17-c758a686/configure.in 2014-05-26 19:54:45.000000000 -0500 @@ -549,8 +549,8 @@ # base_machine, we don't change it. test -n "$base_machine" || case "$machine" in @@ -46,18 +46,18 @@ diff -urN glibc-2.17-c758a686.orig/configure.in glibc-2.17-c758a686.diff/configu s390) base_machine=s390 machine=s390/s390-32 ;; s390x) base_machine=s390 machine=s390/s390-64 ;; sh3*) base_machine=sh machine=sh/sh3 ;; -diff -urN glibc-2.17-c758a686.orig/nptl/shlib-versions glibc-2.17-c758a686.diff/nptl/shlib-versions ---- glibc-2.17-c758a686.orig/nptl/shlib-versions 2014-05-26 19:52:31.000000000 -0500 -+++ glibc-2.17-c758a686.diff/nptl/shlib-versions 2014-05-26 19:53:31.000000000 -0500 +diff -urN glibc-2.17-c758a686/nptl/shlib-versions glibc-2.17-c758a686/nptl/shlib-versions +--- glibc-2.17-c758a686/nptl/shlib-versions 2014-05-26 19:52:31.000000000 -0500 ++++ glibc-2.17-c758a686/nptl/shlib-versions 2014-05-26 19:53:31.000000000 -0500 @@ -2,4 +2,5 @@ sh.*-.*-linux.* libpthread=0 GLIBC_2.2 s390x-.*-linux.* libpthread=0 GLIBC_2.2 powerpc64-.*-linux.* libpthread=0 GLIBC_2.3 +powerpc.*le-.*-linux.* libpthread=0 GLIBC_2.17 .*-.*-linux.* libpthread=0 -diff -urN glibc-2.17-c758a686.orig/shlib-versions glibc-2.17-c758a686.diff/shlib-versions ---- glibc-2.17-c758a686.orig/shlib-versions 2014-05-26 19:52:31.000000000 -0500 -+++ glibc-2.17-c758a686.diff/shlib-versions 2014-05-26 19:53:31.000000000 -0500 +diff -urN glibc-2.17-c758a686/shlib-versions glibc-2.17-c758a686/shlib-versions +--- glibc-2.17-c758a686/shlib-versions 2014-05-26 19:52:31.000000000 -0500 ++++ glibc-2.17-c758a686/shlib-versions 2014-05-26 19:53:31.000000000 -0500 @@ -23,6 +23,7 @@ s390x-.*-linux.* DEFAULT GLIBC_2.2 diff --git a/SOURCES/glibc-ppc64le-35.patch b/SOURCES/glibc-ppc64le-35.patch index 53c8233..17434b9 100644 --- a/SOURCES/glibc-ppc64le-35.patch +++ b/SOURCES/glibc-ppc64le-35.patch @@ -29,9 +29,9 @@ # is already done on other platforms. This fixes the libgo # regression on ELFv2. # -diff -urN glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/powerpc/powerpc64/makecontext.S glibc-2.17-c758a686.diff/sysdeps/unix/sysv/linux/powerpc/powerpc64/makecontext.S ---- glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/powerpc/powerpc64/makecontext.S 2014-05-29 13:16:16.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/unix/sysv/linux/powerpc/powerpc64/makecontext.S 2014-05-29 13:16:17.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/makecontext.S glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/makecontext.S +--- glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/makecontext.S 2014-05-29 13:16:16.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/makecontext.S 2014-05-29 13:16:17.000000000 -0500 @@ -129,6 +129,10 @@ the cpu link stack used to predict blr return addresses. */ bcl 20,31,L(gotexitcodeaddr); @@ -55,9 +55,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/powerpc/powerpc64/mak /* The address of the exit code is in the link register. Store the lr in the ucontext as LNK so the target function will return to our exit code. */ -diff -urN glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/powerpc/powerpc64/setcontext.S glibc-2.17-c758a686.diff/sysdeps/unix/sysv/linux/powerpc/powerpc64/setcontext.S ---- glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/powerpc/powerpc64/setcontext.S 2014-05-29 13:16:16.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/unix/sysv/linux/powerpc/powerpc64/setcontext.S 2014-05-29 13:16:17.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/setcontext.S glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/setcontext.S +--- glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/setcontext.S 2014-05-29 13:16:16.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/setcontext.S 2014-05-29 13:16:17.000000000 -0500 @@ -129,6 +129,10 @@ lfd fp1,(SIGCONTEXT_FP_REGS+(PT_R1*8))(r31) lfd fp0,(SIGCONTEXT_FP_REGS+(PT_R0*8))(r31) diff --git a/SOURCES/glibc-ppc64le-36.patch b/SOURCES/glibc-ppc64le-36.patch index 007f2be..fbe351c 100644 --- a/SOURCES/glibc-ppc64le-36.patch +++ b/SOURCES/glibc-ppc64le-36.patch @@ -19,9 +19,9 @@ # The patch also fixes a bug in overflow checking for the R_PPC64_ADDR30 # and R_PPC64_ADDR32 relocations. # -diff -urN glibc-2.17-c758a686.orig/elf/elf.h glibc-2.17-c758a686.diff/elf/elf.h ---- glibc-2.17-c758a686.orig/elf/elf.h 2014-05-29 13:17:35.000000000 -0500 -+++ glibc-2.17-c758a686.diff/elf/elf.h 2014-05-29 13:17:35.000000000 -0500 +diff -urN glibc-2.17-c758a686/elf/elf.h glibc-2.17-c758a686/elf/elf.h +--- glibc-2.17-c758a686/elf/elf.h 2014-05-29 13:17:35.000000000 -0500 ++++ glibc-2.17-c758a686/elf/elf.h 2014-05-29 13:17:35.000000000 -0500 @@ -2243,6 +2243,17 @@ #define R_PPC64_DTPREL16_HIGHERA 104 /* half16 (sym+add)@dtprel@highera */ #define R_PPC64_DTPREL16_HIGHEST 105 /* half16 (sym+add)@dtprel@highest */ @@ -40,9 +40,9 @@ diff -urN glibc-2.17-c758a686.orig/elf/elf.h glibc-2.17-c758a686.diff/elf/elf.h /* GNU extension to support local ifunc. */ #define R_PPC64_JMP_IREL 247 -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/dl-machine.h glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/dl-machine.h ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/dl-machine.h 2014-05-29 13:17:34.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/dl-machine.h 2014-05-29 13:17:35.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/dl-machine.h glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/dl-machine.h +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/dl-machine.h 2014-05-29 13:17:34.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/dl-machine.h 2014-05-29 13:17:35.000000000 -0500 @@ -663,11 +663,25 @@ case R_PPC64_TPREL16_HI: diff --git a/SOURCES/glibc-ppc64le-37.patch b/SOURCES/glibc-ppc64le-37.patch index b96ceaa..dad59a6 100644 --- a/SOURCES/glibc-ppc64le-37.patch +++ b/SOURCES/glibc-ppc64le-37.patch @@ -17,9 +17,9 @@ # to avoid changing the ABI; see the recent discussion when adding # the EBB fields. # -diff -urN glibc-2.17-c758a686.orig/nptl/sysdeps/powerpc/tls.h glibc-2.17-c758a686.diff/nptl/sysdeps/powerpc/tls.h ---- glibc-2.17-c758a686.orig/nptl/sysdeps/powerpc/tls.h 2014-05-29 13:19:25.000000000 -0500 -+++ glibc-2.17-c758a686.diff/nptl/sysdeps/powerpc/tls.h 2014-05-29 13:19:25.000000000 -0500 +diff -urN glibc-2.17-c758a686/nptl/sysdeps/powerpc/tls.h glibc-2.17-c758a686/nptl/sysdeps/powerpc/tls.h +--- glibc-2.17-c758a686/nptl/sysdeps/powerpc/tls.h 2014-05-29 13:19:25.000000000 -0500 ++++ glibc-2.17-c758a686/nptl/sysdeps/powerpc/tls.h 2014-05-29 13:19:25.000000000 -0500 @@ -61,6 +61,8 @@ are private. */ typedef struct diff --git a/SOURCES/glibc-ppc64le-38.patch b/SOURCES/glibc-ppc64le-38.patch index 443c9bf..196f0ad 100644 --- a/SOURCES/glibc-ppc64le-38.patch +++ b/SOURCES/glibc-ppc64le-38.patch @@ -16,9 +16,9 @@ # # No relevant change in generated code expected. # -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/crti.S glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/crti.S ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/crti.S 2014-05-29 13:56:35.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/crti.S 2014-05-29 13:56:37.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/crti.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/crti.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/crti.S 2014-05-29 13:56:35.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/crti.S 2014-05-29 13:56:37.000000000 -0500 @@ -60,18 +60,8 @@ .LC0: .tc PREINIT_FUNCTION[TC], PREINIT_FUNCTION @@ -59,9 +59,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/crti.S glibc-2.17-c .align ALIGNARG (2) BODY_LABEL (_fini): mflr 0 -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/dl-machine.h glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/dl-machine.h ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/dl-machine.h 2014-05-29 13:56:35.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/dl-machine.h 2014-05-29 13:56:37.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/dl-machine.h glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/dl-machine.h +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/dl-machine.h 2014-05-29 13:56:35.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/dl-machine.h 2014-05-29 13:56:37.000000000 -0500 @@ -122,14 +122,7 @@ #define RTLD_START \ asm (".pushsection \".text\"\n" \ @@ -109,9 +109,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/dl-machine.h glibc- " bctr\n" \ ".LT__dl_start_user:\n" \ " .long 0\n" \ -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/dl-trampoline.S glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/dl-trampoline.S ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/dl-trampoline.S 2014-05-29 13:56:35.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/dl-trampoline.S 2014-05-29 13:56:37.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/dl-trampoline.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/dl-trampoline.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/dl-trampoline.S 2014-05-29 13:56:35.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/dl-trampoline.S 2014-05-29 13:56:37.000000000 -0500 @@ -71,12 +71,8 @@ ld r5,INT_PARMS+16(r1) ld r4,INT_PARMS+8(r1) @@ -160,9 +160,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/dl-trampoline.S gli /* Load the floating point registers. */ lfd fp1,FPR_PARMS+0(r1) lfd fp2,FPR_PARMS+8(r1) -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/sysdep.h glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/sysdep.h ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/sysdep.h 2014-05-29 13:56:35.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/sysdep.h 2014-05-29 13:56:37.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/sysdep.h glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/sysdep.h +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/sysdep.h 2014-05-29 13:56:35.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/sysdep.h 2014-05-29 13:56:37.000000000 -0500 @@ -74,6 +74,14 @@ #endif .endm @@ -246,9 +246,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/sysdep.h glibc-2.17 # define END_2(name) \ ".size " #name ",.-" BODY_PREFIX #name ";\n" \ ".size " BODY_PREFIX #name ",.-" BODY_PREFIX #name ";" -diff -urN glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/powerpc/powerpc64/clone.S glibc-2.17-c758a686.diff/sysdeps/unix/sysv/linux/powerpc/powerpc64/clone.S ---- glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/powerpc/powerpc64/clone.S 2014-05-29 13:56:35.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/unix/sysv/linux/powerpc/powerpc64/clone.S 2014-05-29 13:56:37.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/clone.S glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/clone.S +--- glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/clone.S 2014-05-29 13:56:35.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/clone.S 2014-05-29 13:56:37.000000000 -0500 @@ -104,9 +104,7 @@ std r2,40(r1) diff --git a/SOURCES/glibc-ppc64le-39.patch b/SOURCES/glibc-ppc64le-39.patch index b3a258c..f837d99 100644 --- a/SOURCES/glibc-ppc64le-39.patch +++ b/SOURCES/glibc-ppc64le-39.patch @@ -33,9 +33,9 @@ # The hack in VDSO_IFUNC_RET to "synthesize" a function descriptor # for vDSO routines is also no longer necessary for ELFv2. # -diff -urN glibc-2.17-c758a686.orig/elf/elf.h glibc-2.17-c758a686.diff/elf/elf.h ---- glibc-2.17-c758a686.orig/elf/elf.h 2014-05-29 13:58:25.000000000 -0500 -+++ glibc-2.17-c758a686.diff/elf/elf.h 2014-05-29 13:58:25.000000000 -0500 +diff -urN glibc-2.17-c758a686/elf/elf.h glibc-2.17-c758a686/elf/elf.h +--- glibc-2.17-c758a686/elf/elf.h 2014-05-29 13:58:25.000000000 -0500 ++++ glibc-2.17-c758a686/elf/elf.h 2014-05-29 13:58:25.000000000 -0500 @@ -2263,6 +2263,12 @@ #define R_PPC64_REL16_HI 251 /* half16 (sym+add-.)@h */ #define R_PPC64_REL16_HA 252 /* half16 (sym+add-.)@ha */ @@ -49,9 +49,9 @@ diff -urN glibc-2.17-c758a686.orig/elf/elf.h glibc-2.17-c758a686.diff/elf/elf.h /* PowerPC64 specific values for the Dyn d_tag field. */ #define DT_PPC64_GLINK (DT_LOPROC + 0) #define DT_PPC64_OPD (DT_LOPROC + 1) -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/crti.S glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/crti.S ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/crti.S 2014-05-29 13:58:25.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/crti.S 2014-05-29 13:58:25.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/crti.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/crti.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/crti.S 2014-05-29 13:58:25.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/crti.S 2014-05-29 13:58:25.000000000 -0500 @@ -64,6 +64,7 @@ ENTRY_2(_init) .align ALIGNARG (2) @@ -68,9 +68,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/crti.S glibc-2.17-c mflr 0 std 0, 16(r1) stdu r1, -112(r1) -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/dl-irel.h glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/dl-irel.h ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/dl-irel.h 2014-05-29 13:58:25.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/dl-irel.h 2014-05-29 13:58:25.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/dl-irel.h glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/dl-irel.h +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/dl-irel.h 2014-05-29 13:58:25.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/dl-irel.h 2014-05-29 13:58:25.000000000 -0500 @@ -50,7 +50,11 @@ { Elf64_Addr *const reloc_addr = (void *) reloc->r_offset; @@ -83,9 +83,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/dl-irel.h glibc-2.1 } else __libc_fatal ("unexpected reloc type in static binary"); -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/dl-machine.h glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/dl-machine.h ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/dl-machine.h 2014-05-29 13:58:25.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/dl-machine.h 2014-05-29 14:05:46.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/dl-machine.h glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/dl-machine.h +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/dl-machine.h 2014-05-29 13:58:25.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/dl-machine.h 2014-05-29 14:05:46.000000000 -0500 @@ -31,6 +31,7 @@ in l_info array. */ #define DT_PPC64(x) (DT_PPC64_##x - DT_LOPROC + DT_NUM) @@ -311,9 +311,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/dl-machine.h glibc- return ((Elf64_Addr (*) (unsigned long int)) value) (GLRO(dl_hwcap)); } -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/setjmp-common.S glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/setjmp-common.S ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/setjmp-common.S 2014-05-29 13:58:25.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/setjmp-common.S 2014-05-29 14:00:27.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/setjmp-common.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/setjmp-common.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/setjmp-common.S 2014-05-29 13:58:25.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/setjmp-common.S 2014-05-29 14:00:27.000000000 -0500 @@ -55,21 +55,22 @@ that saves r2 since the call won't go via a plt call stub. See bugz #269. __GI__setjmp is used in csu/libc-start.c when @@ -366,9 +366,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/setjmp-common.S gli #endif -END (BP_SYM (__sigsetjmp)) +END (__sigsetjmp) -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/sysdep.h glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/sysdep.h ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/sysdep.h 2014-05-29 13:58:25.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/sysdep.h 2014-05-29 13:58:25.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/sysdep.h glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/sysdep.h +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/sysdep.h 2014-05-29 13:58:25.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/sysdep.h 2014-05-29 13:58:25.000000000 -0500 @@ -74,6 +74,8 @@ #endif .endm @@ -463,9 +463,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/sysdep.h glibc-2.17 +#endif /* _CALL_ELF */ #endif /* __ASSEMBLER__ */ -diff -urN glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/powerpc/powerpc64/ldsodefs.h glibc-2.17-c758a686.diff/sysdeps/unix/sysv/linux/powerpc/powerpc64/ldsodefs.h ---- glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/powerpc/powerpc64/ldsodefs.h 2014-05-29 13:58:24.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/unix/sysv/linux/powerpc/powerpc64/ldsodefs.h 2014-05-29 13:58:25.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/ldsodefs.h glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/ldsodefs.h +--- glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/ldsodefs.h 2014-05-29 13:58:24.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/ldsodefs.h 2014-05-29 13:58:25.000000000 -0500 @@ -23,6 +23,8 @@ /* Now define our stuff. */ @@ -482,9 +482,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/powerpc/powerpc64/lds +#endif + #endif /* ldsodefs.h */ -diff -urN glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/powerpc/powerpc64/makecontext.S glibc-2.17-c758a686.diff/sysdeps/unix/sysv/linux/powerpc/powerpc64/makecontext.S ---- glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/powerpc/powerpc64/makecontext.S 2014-05-29 13:58:24.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/unix/sysv/linux/powerpc/powerpc64/makecontext.S 2014-05-29 13:58:25.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/makecontext.S glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/makecontext.S +--- glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/makecontext.S 2014-05-29 13:58:24.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/makecontext.S 2014-05-29 13:58:25.000000000 -0500 @@ -111,6 +111,7 @@ L(noparms): diff --git a/SOURCES/glibc-ppc64le-40.patch b/SOURCES/glibc-ppc64le-40.patch index 8b2c532..663d2f3 100644 --- a/SOURCES/glibc-ppc64le-40.patch +++ b/SOURCES/glibc-ppc64le-40.patch @@ -27,9 +27,9 @@ # the target function for the first time, since it assumed that function # would always reload its own TOC anyway ... # -diff -urN glibc-2.17-c758a686.orig/elf/elf.h glibc-2.17-c758a686.diff/elf/elf.h ---- glibc-2.17-c758a686.orig/elf/elf.h 2014-05-29 14:08:44.000000000 -0500 -+++ glibc-2.17-c758a686.diff/elf/elf.h 2014-05-29 14:08:44.000000000 -0500 +diff -urN glibc-2.17-c758a686/elf/elf.h glibc-2.17-c758a686/elf/elf.h +--- glibc-2.17-c758a686/elf/elf.h 2014-05-29 14:08:44.000000000 -0500 ++++ glibc-2.17-c758a686/elf/elf.h 2014-05-29 14:08:44.000000000 -0500 @@ -2273,8 +2273,19 @@ #define DT_PPC64_GLINK (DT_LOPROC + 0) #define DT_PPC64_OPD (DT_LOPROC + 1) @@ -50,9 +50,9 @@ diff -urN glibc-2.17-c758a686.orig/elf/elf.h glibc-2.17-c758a686.diff/elf/elf.h /* ARM specific declarations */ -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/dl-machine.h glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/dl-machine.h ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/dl-machine.h 2014-05-29 14:08:40.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/dl-machine.h 2014-05-29 14:08:44.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/dl-machine.h glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/dl-machine.h +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/dl-machine.h 2014-05-29 14:08:40.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/dl-machine.h 2014-05-29 14:08:44.000000000 -0500 @@ -425,6 +425,42 @@ return lazy; } @@ -132,9 +132,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/dl-machine.h glibc- #else elf_machine_fixup_plt (map, sym_map, reloc, reloc_addr, value); #endif -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/dl-trampoline.S glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/dl-trampoline.S ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/dl-trampoline.S 2014-05-29 14:08:40.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/dl-trampoline.S 2014-05-29 14:08:44.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/dl-trampoline.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/dl-trampoline.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/dl-trampoline.S 2014-05-29 14:08:40.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/dl-trampoline.S 2014-05-29 14:08:44.000000000 -0500 @@ -74,6 +74,10 @@ /* Prepare for calling the function returned by fixup. */ PPC64_LOAD_FUNCPTR r3 diff --git a/SOURCES/glibc-ppc64le-41.patch b/SOURCES/glibc-ppc64le-41.patch index 7789e3e..506d761 100644 --- a/SOURCES/glibc-ppc64le-41.patch +++ b/SOURCES/glibc-ppc64le-41.patch @@ -34,9 +34,9 @@ # a stack frame, and the patch changes them to add extra space in # these frames as temporary space for the ELFv2 ABI. # -diff -urN glibc-2.17-c758a686.orig/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h glibc-2.17-c758a686.diff/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h ---- glibc-2.17-c758a686.orig/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h 2014-05-29 14:10:00.000000000 -0500 -+++ glibc-2.17-c758a686.diff/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h 2014-05-29 14:10:00.000000000 -0500 +diff -urN glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h +--- glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h 2014-05-29 14:10:00.000000000 -0500 ++++ glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep-cancel.h 2014-05-29 14:10:00.000000000 -0500 @@ -31,6 +31,14 @@ # define DASHDASHPFX(str) __##str # endif @@ -131,9 +131,9 @@ diff -urN glibc-2.17-c758a686.orig/nptl/sysdeps/unix/sysv/linux/powerpc/powerpc6 # ifdef IS_IN_libpthread # ifdef SHARED -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/__longjmp-common.S glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/__longjmp-common.S ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/__longjmp-common.S 2014-05-29 14:09:56.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/__longjmp-common.S 2014-05-29 14:10:00.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/__longjmp-common.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/__longjmp-common.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/__longjmp-common.S 2014-05-29 14:09:56.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/__longjmp-common.S 2014-05-29 14:10:00.000000000 -0500 @@ -133,7 +133,7 @@ ld r14,((JB_GPRS+0)*8)(r3) lfd fp14,((JB_FPRS+0)*8)(r3) @@ -152,9 +152,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/__longjmp-common.S ld r21,((JB_GPRS+7)*8)(r3) lfd fp21,((JB_FPRS+7)*8)(r3) ld r22,((JB_GPRS+8)*8)(r3) -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/crti.S glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/crti.S ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/crti.S 2014-05-29 14:09:56.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/crti.S 2014-05-29 14:10:00.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/crti.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/crti.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/crti.S 2014-05-29 14:09:56.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/crti.S 2014-05-29 14:10:00.000000000 -0500 @@ -66,8 +66,8 @@ BODY_LABEL (_init): LOCALENTRY(_init) @@ -174,9 +174,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/crti.S glibc-2.17-c - stdu r1, -112(r1) + std 0, FRAME_LR_SAVE(r1) + stdu r1, -FRAME_MIN_SIZE_PARM(r1) -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/crtn.S glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/crtn.S ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/crtn.S 2014-05-29 14:09:56.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/crtn.S 2014-05-29 14:10:00.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/crtn.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/crtn.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/crtn.S 2014-05-29 14:09:56.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/crtn.S 2014-05-29 14:10:00.000000000 -0500 @@ -39,13 +39,13 @@ #include @@ -195,9 +195,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/crtn.S glibc-2.17-c + ld r0, FRAME_LR_SAVE(r1) mtlr r0 blr -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/dl-trampoline.S glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/dl-trampoline.S ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/dl-trampoline.S 2014-05-29 14:09:56.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/dl-trampoline.S 2014-05-29 14:10:00.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/dl-trampoline.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/dl-trampoline.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/dl-trampoline.S 2014-05-29 14:09:56.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/dl-trampoline.S 2014-05-29 14:10:00.000000000 -0500 @@ -26,13 +26,13 @@ parm1 (r3) and the index (r0) need to be converted to an offset (index * 24) in parm2 (r4). */ @@ -363,9 +363,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/dl-trampoline.S gli ld r31,584(r1) ld r30,576(r1) mtlr r0 -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/ppc-mcount.S glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/ppc-mcount.S ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/ppc-mcount.S 2014-05-29 14:09:56.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/ppc-mcount.S 2014-05-29 14:10:00.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/ppc-mcount.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/ppc-mcount.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/ppc-mcount.S 2014-05-29 14:09:56.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/ppc-mcount.S 2014-05-29 14:10:00.000000000 -0500 @@ -24,16 +24,16 @@ ENTRY(_mcount) mflr r4 @@ -390,9 +390,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/ppc-mcount.S glibc- blr END(_mcount) -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/setjmp-common.S glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/setjmp-common.S ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/setjmp-common.S 2014-05-29 14:09:56.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/setjmp-common.S 2014-05-29 14:10:00.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/setjmp-common.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/setjmp-common.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/setjmp-common.S 2014-05-29 14:09:56.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/setjmp-common.S 2014-05-29 14:10:00.000000000 -0500 @@ -56,7 +56,7 @@ bugz #269. __GI__setjmp is used in csu/libc-start.c when HAVE_CLEANUP_JMP_BUF is defined. */ @@ -432,9 +432,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/setjmp-common.S gli mtlr r0 blr #endif -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/sysdep.h glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/sysdep.h ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/sysdep.h 2014-05-29 14:09:56.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/sysdep.h 2014-05-29 14:10:00.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/sysdep.h glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/sysdep.h +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/sysdep.h 2014-05-29 14:09:56.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/sysdep.h 2014-05-29 14:10:00.000000000 -0500 @@ -20,25 +20,67 @@ #ifdef __ASSEMBLER__ @@ -557,9 +557,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/sysdep.h glibc-2.17 mtlr 0; \ cfi_restore(lr); \ blr; \ -diff -urN glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/powerpc/powerpc64/____longjmp_chk.S glibc-2.17-c758a686.diff/sysdeps/unix/sysv/linux/powerpc/powerpc64/____longjmp_chk.S ---- glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/powerpc/powerpc64/____longjmp_chk.S 2014-05-29 14:09:56.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/unix/sysv/linux/powerpc/powerpc64/____longjmp_chk.S 2014-05-29 14:10:00.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/____longjmp_chk.S glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/____longjmp_chk.S +--- glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/____longjmp_chk.S 2014-05-29 14:09:56.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/____longjmp_chk.S 2014-05-29 14:10:00.000000000 -0500 @@ -33,24 +33,24 @@ cmpld reg, r1; \ bge+ .Lok; \ @@ -593,9 +593,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/powerpc/powerpc64/___ add r4,r4,r0; \ sub r3,r3,reg; \ cmpld r3,r0; \ -diff -urN glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/powerpc/powerpc64/brk.S glibc-2.17-c758a686.diff/sysdeps/unix/sysv/linux/powerpc/powerpc64/brk.S ---- glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/powerpc/powerpc64/brk.S 2014-05-29 14:09:56.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/unix/sysv/linux/powerpc/powerpc64/brk.S 2014-05-29 14:10:00.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/brk.S glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/brk.S +--- glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/brk.S 2014-05-29 14:09:56.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/brk.S 2014-05-29 14:10:00.000000000 -0500 @@ -31,9 +31,9 @@ CALL_MCOUNT 1 DISCARD_BOUNDS (r3) /* the bounds are meaningless, so toss 'em. */ @@ -608,9 +608,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/powerpc/powerpc64/brk ld r5,.LC__curbrk@toc(r2) std r3,0(r5) cmpld r6,r3 -diff -urN glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/powerpc/powerpc64/clone.S glibc-2.17-c758a686.diff/sysdeps/unix/sysv/linux/powerpc/powerpc64/clone.S ---- glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/powerpc/powerpc64/clone.S 2014-05-29 14:09:56.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/unix/sysv/linux/powerpc/powerpc64/clone.S 2014-05-29 14:10:00.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/clone.S glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/clone.S +--- glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/clone.S 2014-05-29 14:09:56.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/clone.S 2014-05-29 14:10:00.000000000 -0500 @@ -45,22 +45,22 @@ cror cr0*4+eq,cr1*4+eq,cr0*4+eq beq- cr0,L(badargs) @@ -679,9 +679,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/powerpc/powerpc64/clo #ifdef RESET_PID cfi_restore(r29) #endif -diff -urN glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/powerpc/powerpc64/socket.S glibc-2.17-c758a686.diff/sysdeps/unix/sysv/linux/powerpc/powerpc64/socket.S ---- glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/powerpc/powerpc64/socket.S 2014-05-29 14:09:56.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/unix/sysv/linux/powerpc/powerpc64/socket.S 2014-05-29 14:10:00.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/socket.S glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/socket.S +--- glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/socket.S 2014-05-29 14:09:56.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/socket.S 2014-05-29 14:10:00.000000000 -0500 @@ -46,8 +46,13 @@ # endif #endif @@ -731,9 +731,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/powerpc/powerpc64/soc mtlr r4 mtcr r0 addi r1,r1,FRAMESIZE -diff -urN glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/powerpc/powerpc64/ucontext_i.sym glibc-2.17-c758a686.diff/sysdeps/unix/sysv/linux/powerpc/powerpc64/ucontext_i.sym ---- glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/powerpc/powerpc64/ucontext_i.sym 2014-05-29 14:09:56.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/unix/sysv/linux/powerpc/powerpc64/ucontext_i.sym 2014-05-29 14:10:00.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/ucontext_i.sym glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/ucontext_i.sym +--- glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/ucontext_i.sym 2014-05-29 14:09:56.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/ucontext_i.sym 2014-05-29 14:10:00.000000000 -0500 @@ -8,27 +8,6 @@ SIG_SETMASK diff --git a/SOURCES/glibc-ppc64le-42.patch b/SOURCES/glibc-ppc64le-42.patch index 4126f2a..f5fa53e 100644 --- a/SOURCES/glibc-ppc64le-42.patch +++ b/SOURCES/glibc-ppc64le-42.patch @@ -26,9 +26,9 @@ # were stored in the wrong place, and it removes the unnecessary # save/restore of CR. # -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/bits/link.h glibc-2.17-c758a686.diff/sysdeps/powerpc/bits/link.h ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/bits/link.h 2014-05-29 14:11:12.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/bits/link.h 2014-05-29 14:11:20.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/bits/link.h glibc-2.17-c758a686/sysdeps/powerpc/bits/link.h +--- glibc-2.17-c758a686/sysdeps/powerpc/bits/link.h 2014-05-29 14:11:12.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/bits/link.h 2014-05-29 14:11:20.000000000 -0500 @@ -63,7 +63,7 @@ __END_DECLS @@ -87,9 +87,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/bits/link.h glibc-2.17-c758a6 +__END_DECLS + #endif -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/ldsodefs.h glibc-2.17-c758a686.diff/sysdeps/powerpc/ldsodefs.h ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/ldsodefs.h 2014-05-29 14:11:12.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/ldsodefs.h 2014-05-29 14:11:20.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/ldsodefs.h glibc-2.17-c758a686/sysdeps/powerpc/ldsodefs.h +--- glibc-2.17-c758a686/sysdeps/powerpc/ldsodefs.h 2014-05-29 14:11:12.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/ldsodefs.h 2014-05-29 14:11:20.000000000 -0500 @@ -25,6 +25,8 @@ struct La_ppc32_retval; struct La_ppc64_regs; @@ -129,9 +129,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/ldsodefs.h glibc-2.17-c758a68 #include_next -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/dl-machine.h glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/dl-machine.h ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/dl-machine.h 2014-05-29 14:11:12.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/dl-machine.h 2014-05-29 14:11:20.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/dl-machine.h glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/dl-machine.h +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/dl-machine.h 2014-05-29 14:11:12.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/dl-machine.h 2014-05-29 14:11:20.000000000 -0500 @@ -546,8 +546,13 @@ @@ -146,9 +146,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/dl-machine.h glibc- #endif /* dl_machine_h */ -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/dl-trampoline.S glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/dl-trampoline.S ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/dl-trampoline.S 2014-05-29 14:11:12.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/dl-trampoline.S 2014-05-29 14:11:20.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/dl-trampoline.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/dl-trampoline.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/dl-trampoline.S 2014-05-29 14:11:12.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/dl-trampoline.S 2014-05-29 14:11:20.000000000 -0500 @@ -50,11 +50,8 @@ /* Store the LR in the LR Save area. */ std r0,FRAME_SIZE+FRAME_LR_SAVE(r1) @@ -382,9 +382,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/dl-trampoline.S gli mtlr r0 ld r1,0(r1) blr -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/tst-audit.h glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/tst-audit.h ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/tst-audit.h 2014-05-29 14:11:12.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/tst-audit.h 2014-05-29 14:11:20.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/tst-audit.h glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/tst-audit.h +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/tst-audit.h 2014-05-29 14:11:12.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/tst-audit.h 2014-05-29 14:11:20.000000000 -0500 @@ -18,8 +18,16 @@ License along with the GNU C Library. If not, see . */ diff --git a/SOURCES/glibc-ppc64le-43.patch b/SOURCES/glibc-ppc64le-43.patch index 1df936f..8c43abb 100644 --- a/SOURCES/glibc-ppc64le-43.patch +++ b/SOURCES/glibc-ppc64le-43.patch @@ -18,9 +18,9 @@ # check in sysdeps/unix/sysv/linux/powerpc/powerpc64/configure.ac, # replacing the hard-coded value of default-abi in the Makefile. # -diff -urN glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/powerpc/Makefile glibc-2.17-c758a686.diff/sysdeps/unix/sysv/linux/powerpc/Makefile ---- glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/powerpc/Makefile 2014-05-29 14:12:25.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/unix/sysv/linux/powerpc/Makefile 2014-05-29 14:12:30.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/Makefile glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/Makefile +--- glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/Makefile 2014-05-29 14:12:25.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/Makefile 2014-05-29 14:12:30.000000000 -0500 @@ -1,9 +1,12 @@ -abi-variants := 32 64 +abi-variants := 32 64-v1 64-v2 @@ -38,9 +38,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/powerpc/Makefile glib ifeq ($(subdir),rt) librt-routines += rt-sysdep -diff -urN glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/powerpc/ldconfig.h glibc-2.17-c758a686.diff/sysdeps/unix/sysv/linux/powerpc/ldconfig.h ---- glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/powerpc/ldconfig.h 2014-05-29 14:12:25.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/unix/sysv/linux/powerpc/ldconfig.h 2014-05-29 14:12:30.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/ldconfig.h glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/ldconfig.h +--- glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/ldconfig.h 2014-05-29 14:12:25.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/ldconfig.h 2014-05-29 14:12:30.000000000 -0500 @@ -20,7 +20,8 @@ #define SYSDEP_KNOWN_INTERPRETER_NAMES \ @@ -51,15 +51,15 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/powerpc/ldconfig.h gl #define SYSDEP_KNOWN_LIBRARY_NAMES \ { "libc.so.6", FLAG_ELF_LIBC6 }, \ { "libm.so.6", FLAG_ELF_LIBC6 }, -diff -urN glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/powerpc/powerpc64/Makefile glibc-2.17-c758a686.diff/sysdeps/unix/sysv/linux/powerpc/powerpc64/Makefile ---- glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/powerpc/powerpc64/Makefile 2014-05-29 14:12:25.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/unix/sysv/linux/powerpc/powerpc64/Makefile 1969-12-31 18:00:00.000000000 -0600 +diff -urN glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/Makefile glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/Makefile +--- glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/Makefile 2014-05-29 14:12:25.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/Makefile 1969-12-31 18:00:00.000000000 -0600 @@ -1,2 +0,0 @@ -# See Makeconfig regarding the use of default-abi. -default-abi := 64 -diff -urN glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/powerpc/powerpc64/configure glibc-2.17-c758a686.diff/sysdeps/unix/sysv/linux/powerpc/powerpc64/configure ---- glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/powerpc/powerpc64/configure 1969-12-31 18:00:00.000000000 -0600 -+++ glibc-2.17-c758a686.diff/sysdeps/unix/sysv/linux/powerpc/powerpc64/configure 2014-05-29 14:12:30.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/configure glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/configure +--- glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/configure 1969-12-31 18:00:00.000000000 -0600 ++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/configure 2014-05-29 14:12:30.000000000 -0500 @@ -0,0 +1,166 @@ +# This file is generated from configure.ac by Autoconf. DO NOT EDIT! + # Local configure fragment for sysdeps/unix/sysv/linux/powerpc/powerpc64/. @@ -227,9 +227,9 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/powerpc/powerpc64/con + config_vars="$config_vars +default-abi = 64-v1" +fi -diff -urN glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/powerpc/powerpc64/configure.ac glibc-2.17-c758a686.diff/sysdeps/unix/sysv/linux/powerpc/powerpc64/configure.ac ---- glibc-2.17-c758a686.orig/sysdeps/unix/sysv/linux/powerpc/powerpc64/configure.ac 1969-12-31 18:00:00.000000000 -0600 -+++ glibc-2.17-c758a686.diff/sysdeps/unix/sysv/linux/powerpc/powerpc64/configure.ac 2014-05-29 14:12:30.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/configure.ac glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/configure.ac +--- glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/configure.ac 1969-12-31 18:00:00.000000000 -0600 ++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/configure.ac 2014-05-29 14:12:30.000000000 -0500 @@ -0,0 +1,15 @@ +GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory. +# Local configure fragment for sysdeps/unix/sysv/linux/powerpc/powerpc64/. diff --git a/SOURCES/glibc-ppc64le-44.patch b/SOURCES/glibc-ppc64le-44.patch index 70f31e6..e074cb9 100644 --- a/SOURCES/glibc-ppc64le-44.patch +++ b/SOURCES/glibc-ppc64le-44.patch @@ -7,9 +7,9 @@ # [BZ #16786] # * sysdeps/powerpc/powerpc64/fpu/s_copysign.S: Don't trash stack. # -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/fpu/s_copysign.S glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/fpu/s_copysign.S ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/fpu/s_copysign.S 2014-05-29 14:13:47.000000000 -0500 -+++ glibc-2.17-c758a686.diff/sysdeps/powerpc/powerpc64/fpu/s_copysign.S 2014-05-29 14:13:50.000000000 -0500 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/s_copysign.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/s_copysign.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/s_copysign.S 2014-05-29 14:13:47.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/s_copysign.S 2014-05-29 14:13:50.000000000 -0500 @@ -27,11 +27,11 @@ /* double [f1] copysign (double [f1] x, double [f2] y); copysign(x,y) returns a value with the magnitude of x and diff --git a/SOURCES/glibc-ppc64le-45.patch b/SOURCES/glibc-ppc64le-45.patch index e531534..9030fc2 100644 --- a/SOURCES/glibc-ppc64le-45.patch +++ b/SOURCES/glibc-ppc64le-45.patch @@ -12,9 +12,9 @@ # # The ABI testing for libpthread.so now passes for ppc64le. # -diff -urN glibc-2.17-c758a686.orig/Versions.def glibc-2.17-c758a686.new/Versions.def ---- glibc-2.17-c758a686.orig/Versions.def 2014-06-02 21:13:12.000000000 +0000 -+++ glibc-2.17-c758a686.new/Versions.def 2014-06-02 21:14:38.000000000 +0000 +diff -urN glibc-2.17-c758a686/Versions.def glibc-2.17-c758a686/Versions.def +--- glibc-2.17-c758a686/Versions.def 2014-06-02 21:13:12.000000000 +0000 ++++ glibc-2.17-c758a686/Versions.def 2014-06-02 21:14:38.000000000 +0000 @@ -92,6 +92,7 @@ GLIBC_2.2 GLIBC_2.2.3 diff --git a/SOURCES/glibc-ppc64le-46.patch b/SOURCES/glibc-ppc64le-46.patch index 41f7457..6f3d1d9 100644 --- a/SOURCES/glibc-ppc64le-46.patch +++ b/SOURCES/glibc-ppc64le-46.patch @@ -7,9 +7,9 @@ # ppc64le patch that touches the same ULPs file. See glibc-power-libm-test-ulps.patch # for the ppc64/ppc version. # -diff -urN glibc-2.17-c758a686.next/sysdeps/powerpc/fpu/libm-test-ulps glibc-2.17-c758a686.new/sysdeps/powerpc/fpu/libm-test-ulps ---- glibc-2.17-c758a686.next/sysdeps/powerpc/fpu/libm-test-ulps 2014-07-25 22:07:06.280020855 -0400 -+++ glibc-2.17-c758a686.new/sysdeps/powerpc/fpu/libm-test-ulps 2014-07-25 22:26:54.650021033 -0400 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/fpu/libm-test-ulps glibc-2.17-c758a686/sysdeps/powerpc/fpu/libm-test-ulps +--- glibc-2.17-c758a686/sysdeps/powerpc/fpu/libm-test-ulps 2014-07-25 22:07:06.280020855 -0400 ++++ glibc-2.17-c758a686/sysdeps/powerpc/fpu/libm-test-ulps 2014-07-25 22:26:54.650021033 -0400 @@ -2644,6 +2644,9 @@ Test "tan_towardzero (2)": ildouble: 1 diff --git a/SOURCES/glibc-rh1000923.patch b/SOURCES/glibc-rh1000923.patch index b5bc2bd..0db02a3 100644 --- a/SOURCES/glibc-rh1000923.patch +++ b/SOURCES/glibc-rh1000923.patch @@ -1,6 +1,6 @@ -diff -pruN a/nscd/aicache.c b/nscd/aicache.c ---- a/nscd/aicache.c 2013-08-11 04:22:55.000000000 +0530 -+++ b/nscd/aicache.c 2013-08-26 11:10:25.843470413 +0530 +diff -pruN glibc-2.17-c758a686/nscd/aicache.c glibc-2.17-c758a686/nscd/aicache.c +--- glibc-2.17-c758a686/nscd/aicache.c 2013-08-11 04:22:55.000000000 +0530 ++++ glibc-2.17-c758a686/nscd/aicache.c 2013-08-26 11:10:25.843470413 +0530 @@ -25,6 +25,7 @@ #include #include diff --git a/SOURCES/glibc-rh1008298.patch b/SOURCES/glibc-rh1008298.patch index 14d1057..9d7b35c 100644 --- a/SOURCES/glibc-rh1008298.patch +++ b/SOURCES/glibc-rh1008298.patch @@ -1,7 +1,7 @@ -diff --git a/malloc/malloc.c b/malloc/malloc.c +diff --git glibc-2.17-c758a686/malloc/malloc.c glibc-2.17-c758a686/malloc/malloc.c index 3148c5f..f7718a9 100644 ---- a/malloc/malloc.c -+++ b/malloc/malloc.c +--- glibc-2.17-c758a686/malloc/malloc.c ++++ glibc-2.17-c758a686/malloc/malloc.c @@ -3015,6 +3015,13 @@ __libc_memalign(size_t alignment, size_t bytes) /* Otherwise, ensure that it is at least a minimum chunk size */ if (alignment < MINSIZE) alignment = MINSIZE; diff --git a/SOURCES/glibc-rh1020637.patch b/SOURCES/glibc-rh1020637.patch index 54df97d..9d4561a 100644 --- a/SOURCES/glibc-rh1020637.patch +++ b/SOURCES/glibc-rh1020637.patch @@ -4,10 +4,10 @@ Date: Fri Nov 29 09:57:04 2013 +0100 [BZ #16214] S/390: Fix TLS GOT pointer setup. -diff --git a/sysdeps/s390/Versions b/sysdeps/s390/Versions +diff --git glibc-2.17-c758a686/sysdeps/s390/Versions glibc-2.17-c758a686/sysdeps/s390/Versions index e18617c..baf9842 100644 ---- a/sysdeps/s390/Versions -+++ b/sysdeps/s390/Versions +--- glibc-2.17-c758a686/sysdeps/s390/Versions ++++ glibc-2.17-c758a686/sysdeps/s390/Versions @@ -3,4 +3,8 @@ ld { # runtime interface to TLS __tls_get_offset; @@ -17,10 +17,10 @@ index e18617c..baf9842 100644 + __tls_get_addr_internal; + } } -diff --git a/sysdeps/s390/dl-tls.h b/sysdeps/s390/dl-tls.h +diff --git glibc-2.17-c758a686/sysdeps/s390/dl-tls.h glibc-2.17-c758a686/sysdeps/s390/dl-tls.h index 68a5af4..52192a2 100644 ---- a/sysdeps/s390/dl-tls.h -+++ b/sysdeps/s390/dl-tls.h +--- glibc-2.17-c758a686/sysdeps/s390/dl-tls.h ++++ glibc-2.17-c758a686/sysdeps/s390/dl-tls.h @@ -26,11 +26,26 @@ typedef struct @@ -77,10 +77,10 @@ index 68a5af4..52192a2 100644 #endif -diff --git a/sysdeps/s390/s390-32/tls-macros.h b/sysdeps/s390/s390-32/tls-macros.h +diff --git glibc-2.17-c758a686/sysdeps/s390/s390-32/tls-macros.h glibc-2.17-c758a686/sysdeps/s390/s390-32/tls-macros.h index 8a0ad58..a592d81 100644 ---- a/sysdeps/s390/s390-32/tls-macros.h -+++ b/sysdeps/s390/s390-32/tls-macros.h +--- glibc-2.17-c758a686/sysdeps/s390/s390-32/tls-macros.h ++++ glibc-2.17-c758a686/sysdeps/s390/s390-32/tls-macros.h @@ -8,12 +8,15 @@ #ifdef PIC @@ -102,10 +102,10 @@ index 8a0ad58..a592d81 100644 (int *) (__builtin_thread_pointer() + __offset); }) #else # define TLS_IE(x) \ -diff --git a/sysdeps/s390/s390-64/tls-macros.h b/sysdeps/s390/s390-64/tls-macros.h +diff --git glibc-2.17-c758a686/sysdeps/s390/s390-64/tls-macros.h glibc-2.17-c758a686/sysdeps/s390/s390-64/tls-macros.h index be8aa6c..3c59436 100644 ---- a/sysdeps/s390/s390-64/tls-macros.h -+++ b/sysdeps/s390/s390-64/tls-macros.h +--- glibc-2.17-c758a686/sysdeps/s390/s390-64/tls-macros.h ++++ glibc-2.17-c758a686/sysdeps/s390/s390-64/tls-macros.h @@ -8,12 +8,13 @@ #ifdef PIC diff --git a/SOURCES/glibc-rh1025612.patch b/SOURCES/glibc-rh1025612.patch index bec4acd..93ab27d 100644 --- a/SOURCES/glibc-rh1025612.patch +++ b/SOURCES/glibc-rh1025612.patch @@ -10,10 +10,10 @@ Date: Fri Oct 25 10:22:12 2013 +0530 called with AF_INET6. The AF_UNSPEC case was fixed as CVE-2013-1914, but the AF_INET6 case went undetected back then. -diff --git a/sysdeps/posix/getaddrinfo.c b/sysdeps/posix/getaddrinfo.c +diff --git glibc-2.17-c758a686/sysdeps/posix/getaddrinfo.c glibc-2.17-c758a686/sysdeps/posix/getaddrinfo.c index e6ce4cf..8ff74b4 100644 ---- a/sysdeps/posix/getaddrinfo.c -+++ b/sysdeps/posix/getaddrinfo.c +--- glibc-2.17-c758a686/sysdeps/posix/getaddrinfo.c ++++ glibc-2.17-c758a686/sysdeps/posix/getaddrinfo.c @@ -197,7 +197,22 @@ gaih_inet_serv (const char *servicename, const struct gaih_typeproto *tp, &rc, &herrno, NULL, &localcanon)); \ if (rc != ERANGE || herrno != NETDB_INTERNAL) \ diff --git a/SOURCES/glibc-rh1025934.patch b/SOURCES/glibc-rh1025934.patch index ac6b481..a89696a 100644 --- a/SOURCES/glibc-rh1025934.patch +++ b/SOURCES/glibc-rh1025934.patch @@ -1,7 +1,7 @@ -diff --git a/nscd/selinux.c b/nscd/selinux.c +diff --git glibc-2.17-c758a686/nscd/selinux.c glibc-2.17-c758a686/nscd/selinux.c index 0866c44..ba55b04 100644 ---- a/nscd/selinux.c -+++ b/nscd/selinux.c +--- glibc-2.17-c758a686/nscd/selinux.c ++++ glibc-2.17-c758a686/nscd/selinux.c @@ -44,35 +44,31 @@ /* Global variable to tell if the kernel has SELinux support. */ int selinux_enabled; diff --git a/SOURCES/glibc-rh1028652.patch b/SOURCES/glibc-rh1028652.patch index 5b484da..0717f71 100644 --- a/SOURCES/glibc-rh1028652.patch +++ b/SOURCES/glibc-rh1028652.patch @@ -34,11 +34,11 @@ # # * sysdeps/unix/sysv/linux/powerpc/bits/sigstack.h: New file. # -diff --git a/sysdeps/unix/sysv/linux/powerpc/bits/sigstack.h b/sysdeps/unix/sysv/linux/powerpc/bits/sigstack.h +diff --git glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/bits/sigstack.h glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/bits/sigstack.h new file mode 100644 index 0000000..33be9e8 --- /dev/null -+++ b/sysdeps/unix/sysv/linux/powerpc/bits/sigstack.h ++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/bits/sigstack.h @@ -0,0 +1,54 @@ +/* sigstack, sigaltstack definitions. + Copyright (C) 1998-2013 Free Software Foundation, Inc. diff --git a/SOURCES/glibc-rh1032435.patch b/SOURCES/glibc-rh1032435.patch index dad4891..694bec2 100644 --- a/SOURCES/glibc-rh1032435.patch +++ b/SOURCES/glibc-rh1032435.patch @@ -17,11 +17,30 @@ Date: Wed Oct 30 16:13:37 2013 +0530 wrap around fgets that calls it multiple times with int sizes if necessary. -diff --git a/nss/nss_files/files-XXX.c b/nss/nss_files/files-XXX.c -index 082d1ea..b62208c 100644 ---- a/nss/nss_files/files-XXX.c +(The previous commit fixes upstream bug 16071.) + +commit ac60763eac3d43b7234dd21286ad3ec3f17957fc +Author: Andreas Schwab +Date: Mon Jun 23 10:24:45 2014 +0200 + + Don't ignore too long lines in nss_files (BZ #17079) + +commit e07aabba73ea62e7dfa0512507c92efb851fbdbe +Author: Florian Weimer +Date: Tue Sep 22 13:20:18 2015 +0200 + + Add test case for bug 18287 + +commit 90fa42a1d7b78de0d75f7e3af362275b2abe807f +Author: Florian Weimer +Date: Tue Sep 22 13:40:17 2015 +0200 + + Test in commit e07aabba73ea62e7dfa0512507c92efb851fbdbe is for bug 17079 + +diff -u b/nss/nss_files/files-XXX.c b/nss/nss_files/files-XXX.c +--- b/nss/nss_files/files-XXX.c +++ b/nss/nss_files/files-XXX.c -@@ -179,8 +179,51 @@ CONCAT(_nss_files_end,ENTNAME) (void) +@@ -179,8 +179,53 @@ return NSS_STATUS_SUCCESS; } @@ -45,10 +64,12 @@ index 082d1ea..b62208c 100644 + { + int curlen = ((remaining_len > (size_t) INT_MAX) ? INT_MAX + : remaining_len); -+ char *p = fgets_unlocked (curbuf, curlen, stream); + ++ /* Terminate the line so that we can test for overflow. */ + ((unsigned char *) curbuf)[curlen - 1] = 0xff; + ++ char *p = fgets_unlocked (curbuf, curlen, stream); ++ + /* EOF or read error. */ + if (p == NULL) + return gcr_error; @@ -74,7 +95,7 @@ index 082d1ea..b62208c 100644 static enum nss_status internal_getent (struct STRUCTURE *result, char *buffer, size_t buflen, int *errnop H_ERRNO_PROTO -@@ -188,7 +231,7 @@ internal_getent (struct STRUCTURE *result, +@@ -188,7 +233,7 @@ { char *p; struct parser_data *data = (void *) buffer; @@ -83,7 +104,7 @@ index 082d1ea..b62208c 100644 int parse_result; if (buflen < sizeof *data + 2) -@@ -200,17 +243,16 @@ internal_getent (struct STRUCTURE *result, +@@ -200,17 +245,16 @@ do { @@ -105,7 +126,7 @@ index 082d1ea..b62208c 100644 { /* The line is too long. Give the user the opportunity to enlarge the buffer. */ -@@ -219,7 +261,8 @@ internal_getent (struct STRUCTURE *result, +@@ -219,7 +263,8 @@ return NSS_STATUS_TRYAGAIN; } @@ -115,3 +136,255 @@ index 082d1ea..b62208c 100644 while (isspace (*p)) ++p; } + +diff a/nss/bug17079.c b/nss/bug17079.c +--- /dev/null ++++ b/nss/bug17079.c +@@ -0,0 +1,236 @@ ++/* Test for bug 17079: heap overflow in NSS with small buffers. ++ Copyright (C) 2015 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 ++ . */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++ ++/* Check if two passwd structs contain the same data. */ ++static bool ++equal (const struct passwd *a, const struct passwd *b) ++{ ++ return strcmp (a->pw_name, b->pw_name) == 0 ++ && strcmp (a->pw_passwd, b->pw_passwd) == 0 ++ && a->pw_uid == b->pw_uid ++ && a->pw_gid == b->pw_gid ++ && strcmp (a->pw_gecos, b->pw_gecos) == 0 ++ && strcmp (a->pw_dir, b->pw_dir) == 0 ++ && strcmp (a->pw_shell, b->pw_shell) == 0; ++} ++ ++enum { MAX_TEST_ITEMS = 10 }; ++static struct passwd test_items[MAX_TEST_ITEMS]; ++static int test_count; ++ ++/* Initialize test_items and test_count above, with data from the ++ passwd database. */ ++static bool ++init_test_items (void) ++{ ++ setpwent (); ++ do ++ { ++ struct passwd *pwd = getpwent (); ++ if (pwd == NULL) ++ break; ++ struct passwd *target = test_items + test_count; ++ target->pw_name = strdup (pwd->pw_name); ++ target->pw_passwd = strdup (pwd->pw_passwd); ++ target->pw_uid = pwd->pw_uid; ++ target->pw_gid = pwd->pw_gid; ++ target->pw_gecos = strdup (pwd->pw_gecos); ++ target->pw_dir = strdup (pwd->pw_dir); ++ target->pw_shell = strdup (pwd->pw_shell); ++ } ++ while (++test_count < MAX_TEST_ITEMS); ++ endpwent (); ++ ++ /* Filter out those test items which cannot be looked up by name or ++ UID. */ ++ bool found = false; ++ for (int i = 0; i < test_count; ++i) ++ { ++ struct passwd *pwd1 = getpwnam (test_items[i].pw_name); ++ struct passwd *pwd2 = getpwuid (test_items[i].pw_uid); ++ if (pwd1 == NULL || !equal (pwd1, test_items + i) ++ || pwd2 == NULL || !equal (pwd2, test_items + i)) ++ test_items[i].pw_name = NULL; ++ else ++ found = true; ++ } ++ ++ if (!found) ++ puts ("error: no accounts found which can be looked up by name and UID."); ++ return found; ++} ++ ++/* Set to true if an error is encountered. */ ++static bool errors; ++ ++/* Return true if the padding has not been tampered with. */ ++static bool ++check_padding (char *buffer, size_t size, char pad) ++{ ++ char *end = buffer + size; ++ while (buffer < end) ++ { ++ if (*buffer != pad) ++ return false; ++ ++buffer; ++ } ++ return true; ++} ++ ++/* Test one buffer size and padding combination. */ ++static void ++test_one (const struct passwd *item, size_t buffer_size, ++ char pad, size_t padding_size) ++{ ++ char *buffer = malloc (buffer_size + padding_size); ++ if (buffer == NULL) ++ { ++ puts ("error: malloc failure"); ++ errors = true; ++ return; ++ } ++ ++ struct passwd pwd; ++ struct passwd *result; ++ int ret; ++ ++ /* Test getpwname_r. */ ++ memset (buffer, pad, buffer_size + padding_size); ++ pwd = (struct passwd) {}; ++ ret = getpwnam_r (item->pw_name, &pwd, buffer, buffer_size, &result); ++ if (!check_padding (buffer + buffer_size, padding_size, pad)) ++ { ++ printf ("error: padding change: " ++ "name \"%s\", buffer size %zu, padding size %zu, pad 0x%02x\n", ++ item->pw_name, buffer_size, padding_size, (unsigned char) pad); ++ errors = true; ++ } ++ if (ret == 0) ++ { ++ if (result == NULL) ++ { ++ printf ("error: no data: name \"%s\", buffer size %zu\n", ++ item->pw_name, buffer_size); ++ errors = true; ++ } ++ else if (!equal (item, result)) ++ { ++ printf ("error: lookup mismatch: name \"%s\", buffer size %zu\n", ++ item->pw_name, buffer_size); ++ errors = true; ++ } ++ } ++ else if (ret != ERANGE) ++ { ++ errno = ret; ++ printf ("error: lookup failure for name \"%s\": %m (%d)\n", ++ item->pw_name, ret); ++ errors = true; ++ } ++ ++ /* Test getpwuid_r. */ ++ memset (buffer, pad, buffer_size + padding_size); ++ pwd = (struct passwd) {}; ++ ret = getpwuid_r (item->pw_uid, &pwd, buffer, buffer_size, &result); ++ if (!check_padding (buffer + buffer_size, padding_size, pad)) ++ { ++ printf ("error: padding change: " ++ "UID %ld, buffer size %zu, padding size %zu, pad 0x%02x\n", ++ (long) item->pw_uid, buffer_size, padding_size, ++ (unsigned char) pad); ++ errors = true; ++ } ++ if (ret == 0) ++ { ++ if (result == NULL) ++ { ++ printf ("error: no data: UID %ld, buffer size %zu\n", ++ (long) item->pw_uid, buffer_size); ++ errors = true; ++ } ++ else if (!equal (item, result)) ++ { ++ printf ("error: lookup mismatch: UID %ld, buffer size %zu\n", ++ (long) item->pw_uid, buffer_size); ++ errors = true; ++ } ++ } ++ else if (ret != ERANGE) ++ { ++ errno = ret; ++ printf ("error: lookup failure for UID \"%ld\": %m (%d)\n", ++ (long) item->pw_uid, ret); ++ errors = true; ++ } ++ ++ free (buffer); ++} ++ ++/* Test one buffer size with different paddings. */ ++static void ++test_buffer_size (size_t buffer_size) ++{ ++ for (int i = 0; i < test_count; ++i) ++ for (size_t padding_size = 0; padding_size < 3; ++padding_size) ++ { ++ test_one (test_items + i, buffer_size, '\0', padding_size); ++ if (padding_size > 0) ++ { ++ test_one (test_items + i, buffer_size, ':', padding_size); ++ test_one (test_items + i, buffer_size, '\n', padding_size); ++ test_one (test_items + i, buffer_size, '\xff', padding_size); ++ test_one (test_items + i, buffer_size, '@', padding_size); ++ } ++ } ++} ++ ++int ++do_test (void) ++{ ++ if (!init_test_items ()) ++ return 1; ++ printf ("info: %d test items\n", test_count); ++ ++ for (size_t buffer_size = 0; buffer_size <= 65; ++buffer_size) ++ test_buffer_size (buffer_size); ++ for (size_t buffer_size = 64 + 4; buffer_size < 256; buffer_size += 4) ++ test_buffer_size (buffer_size); ++ test_buffer_size (255); ++ test_buffer_size (257); ++ for (size_t buffer_size = 256; buffer_size < 512; buffer_size += 8) ++ test_buffer_size (buffer_size); ++ test_buffer_size (511); ++ test_buffer_size (513); ++ test_buffer_size (1024); ++ test_buffer_size (2048); ++ ++ if (errors) ++ return 1; ++ else ++ return 0; ++} ++ ++#define TEST_FUNCTION do_test () ++#include "../test-skeleton.c" +diff a/nss/Makefile b/nss/Makefile +--- a/nss/Makefile ++++ b/nss/Makefile +@@ -39,6 +39,6 @@ + extra-objs += $(makedb-modules:=.o) + +-tests = test-netdb tst-nss-test1 ++tests = test-netdb tst-nss-test1 bug17079 + xtests = bug-erange + + include ../Makeconfig diff --git a/SOURCES/glibc-rh1039496.patch b/SOURCES/glibc-rh1039496.patch index f4dae4d..1243bbb 100644 --- a/SOURCES/glibc-rh1039496.patch +++ b/SOURCES/glibc-rh1039496.patch @@ -1,6 +1,6 @@ -diff -urN a/libio/tst-widetext.input b/libio/tst-widetext.input ---- a/libio/tst-widetext.input 2012-12-24 22:02:13.000000000 -0500 -+++ b/libio/tst-widetext.input 2013-12-11 09:48:30.760084849 -0500 +diff -urNglibc-2.17-c758a686/libio/tst-widetext.inputglibc-2.17-c758a686/libio/tst-widetext.input +--- glibc-2.17-c758a686/libio/tst-widetext.input 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/libio/tst-widetext.input 2013-12-11 09:48:30.760084849 -0500 @@ -126,7 +126,7 @@ ઀◌ઁ◌ંઃ઄અઆઇઈઉઊઋઌઍ઎એઐઑ઒ઓઔકખગઘઙચછજઝઞટઠડઢણતથદધન઩પફબભમયર઱લળ઴વશષસહ઺઻◌઼ઽાિ ી◌ુ◌ૂ◌ૃ◌ૄ◌ૅ૆◌ે◌ૈૉ૊ોૌ◌્૎૏ૐ૑૒૓૔૕૖૗૘૙૚૛૜૝૞૟ૠૡૢૣ૤૥૦૧૨૩૪૫૬૭૮૯૰૱૲૳૴૵૶૷૸ૹૺૻૼ૽૾૿ @@ -10,9 +10,9 @@ diff -urN a/libio/tst-widetext.input b/libio/tst-widetext.input ଀◌ଁଂଃ଄ଅଆଇଈଉଊଋଌ଍଎ଏଐ଑଒ଓଔକଖଗଘଙଚଛଜଝଞଟଠଡଢଣତଥଦଧନ଩ପଫବଭମଯର଱ଲଳ଴ଵଶଷସହ଺଻◌଼ଽା◌ି ୀ◌ୁ◌ୂ◌ୃୄ୅୆େୈ୉୊ୋୌ◌୍୎୏୐୑୒୓୔୕◌ୖୗ୘୙୚୛ଡ଼ଢ଼୞ୟୠୡୢୣ୤୥୦୧୨୩୪୫୬୭୮୯୰ୱ୲୳୴୵୶୷୸୹୺୻୼୽୾୿ -diff -urN a/locale/iso-639.def b/locale/iso-639.def ---- a/locale/iso-639.def 2012-12-24 22:02:13.000000000 -0500 -+++ b/locale/iso-639.def 2013-12-11 09:58:58.414959856 -0500 +diff -urNglibc-2.17-c758a686/locale/iso-639.defglibc-2.17-c758a686/locale/iso-639.def +--- glibc-2.17-c758a686/locale/iso-639.def 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/locale/iso-639.def 2013-12-11 09:58:58.414959856 -0500 @@ -181,7 +181,7 @@ DEFINE_LANGUAGE_CODE ("Greek, Modern (1453-)", el, ell, gre) DEFINE_LANGUAGE_CODE ("Guarani", gn, grn, grn) @@ -61,9 +61,9 @@ diff -urN a/locale/iso-639.def b/locale/iso-639.def DEFINE_LANGUAGE_CODE3 ("Votic", vot, vot) DEFINE_LANGUAGE_CODE3 ("Wakashan languages", wak, wak) DEFINE_LANGUAGE_CODE3 ("Walser", wae, wae) -diff -urN a/localedata/locales/or_IN b/localedata/locales/or_IN ---- a/localedata/locales/or_IN 2012-12-24 22:02:13.000000000 -0500 -+++ b/localedata/locales/or_IN 2013-12-11 09:52:26.932931534 -0500 +diff -urNglibc-2.17-c758a686/localedata/locales/or_INglibc-2.17-c758a686/localedata/locales/or_IN +--- glibc-2.17-c758a686/localedata/locales/or_IN 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/localedata/locales/or_IN 2013-12-11 09:52:26.932931534 -0500 @@ -1,19 +1,19 @@ comment_char % escape_char / diff --git a/SOURCES/glibc-rh1039970.patch b/SOURCES/glibc-rh1039970.patch index 7286804..1898fa5 100644 --- a/SOURCES/glibc-rh1039970.patch +++ b/SOURCES/glibc-rh1039970.patch @@ -1,6 +1,6 @@ -diff -pruN glibc-2.18-488-gd674f0e/nscd/netgroupcache.c glibc-2.18-488-gd674f0e.patched/nscd/netgroupcache.c ---- glibc-2.18-488-gd674f0e/nscd/netgroupcache.c 2013-12-03 20:41:12.000000000 -0500 -+++ glibc-2.18-488-gd674f0e.patched/nscd/netgroupcache.c 2013-12-19 08:36:52.253000000 -0500 +diff -pruN glibc-2.17-c758a686/nscd/netgroupcache.c glibc-2.17-c758a686/nscd/netgroupcache.c +--- glibc-2.17-c758a686/nscd/netgroupcache.c 2013-12-03 20:41:12.000000000 -0500 ++++ glibc-2.17-c758a686/nscd/netgroupcache.c 2013-12-19 08:36:52.253000000 -0500 @@ -65,6 +65,55 @@ struct dataset char strdata[0]; }; diff --git a/SOURCES/glibc-rh1046199.patch b/SOURCES/glibc-rh1046199.patch index 46d9c01..64505c5 100644 --- a/SOURCES/glibc-rh1046199.patch +++ b/SOURCES/glibc-rh1046199.patch @@ -1,6 +1,6 @@ -diff -pruN glibc-2.18-488-gd674f0e/nscd/netgroupcache.c glibc-2.18-488-gd674f0e.patched/nscd/netgroupcache.c ---- glibc-2.18-488-gd674f0e/nscd/netgroupcache.c 2013-12-20 04:38:40.432000000 -0500 -+++ glibc-2.18-488-gd674f0e.patched/nscd/netgroupcache.c 2013-12-20 04:37:29.945000000 -0500 +diff -pruN glibc-2.17-c758a686/nscd/netgroupcache.c glibc-2.17-c758a686/nscd/netgroupcache.c +--- glibc-2.17-c758a686/nscd/netgroupcache.c 2013-12-20 04:38:40.432000000 -0500 ++++ glibc-2.17-c758a686/nscd/netgroupcache.c 2013-12-20 04:37:29.945000000 -0500 @@ -204,9 +204,10 @@ addgetnetgrentX (struct database_dyn *db int e; status = getfct.f (&data, buffer + buffilled, diff --git a/SOURCES/glibc-rh1047983.patch b/SOURCES/glibc-rh1047983.patch index 695da21..a5877cd 100644 --- a/SOURCES/glibc-rh1047983.patch +++ b/SOURCES/glibc-rh1047983.patch @@ -10,10 +10,10 @@ Date: Thu Nov 28 17:18:12 2013 +0530 _nss_files_gethostbyname2_r and then returns result.h_name as the canonical name. -diff --git a/nss/Versions b/nss/Versions +diff --git glibc-2.17-c758a686/nss/Versions glibc-2.17-c758a686/nss/Versions index d13d570..f8ababc 100644 ---- a/nss/Versions -+++ b/nss/Versions +--- glibc-2.17-c758a686/nss/Versions ++++ glibc-2.17-c758a686/nss/Versions @@ -40,6 +40,7 @@ libnss_files { _nss_files_endhostent; _nss_files_gethostbyaddr_r; @@ -22,10 +22,10 @@ index d13d570..f8ababc 100644 _nss_files_gethostbyname4_r; _nss_files_gethostbyname_r; _nss_files_gethostent_r; -diff --git a/nss/nss_files/files-hosts.c b/nss/nss_files/files-hosts.c +diff --git glibc-2.17-c758a686/nss/nss_files/files-hosts.c glibc-2.17-c758a686/nss/nss_files/files-hosts.c index 6db2535..957c9aa 100644 ---- a/nss/nss_files/files-hosts.c -+++ b/nss/nss_files/files-hosts.c +--- glibc-2.17-c758a686/nss/nss_files/files-hosts.c ++++ glibc-2.17-c758a686/nss/nss_files/files-hosts.c @@ -97,262 +97,12 @@ LINE_PARSER STRING_FIELD (result->h_name, isspace, 1); }) diff --git a/SOURCES/glibc-rh1048036.patch b/SOURCES/glibc-rh1048036.patch index 02eddbe..5d8836e 100644 --- a/SOURCES/glibc-rh1048036.patch +++ b/SOURCES/glibc-rh1048036.patch @@ -1,7 +1,7 @@ -diff --git a/libio/wfileops.c b/libio/wfileops.c +diff --git glibc-2.17-c758a686/libio/wfileops.c glibc-2.17-c758a686/libio/wfileops.c index 87d3cdc..877fc1f 100644 ---- a/libio/wfileops.c -+++ b/libio/wfileops.c +--- glibc-2.17-c758a686/libio/wfileops.c ++++ glibc-2.17-c758a686/libio/wfileops.c @@ -715,7 +715,7 @@ _IO_wfile_seekoff (fp, offset, dir, mode) - fp->_wide_data->_IO_write_base) / clen; else diff --git a/SOURCES/glibc-rh1048123.patch b/SOURCES/glibc-rh1048123.patch index 018661e..a90ffaa 100644 --- a/SOURCES/glibc-rh1048123.patch +++ b/SOURCES/glibc-rh1048123.patch @@ -31,10 +31,10 @@ Date: Mon Mar 3 22:51:39 2014 +0530 service is ready and is accepting connections. -diff --git a/nscd/connections.c b/nscd/connections.c +diff --git glibc-2.17-c758a686/nscd/connections.c glibc-2.17-c758a686/nscd/connections.c index f463f45..180ae77 100644 ---- a/nscd/connections.c -+++ b/nscd/connections.c +--- glibc-2.17-c758a686/nscd/connections.c ++++ glibc-2.17-c758a686/nscd/connections.c @@ -649,8 +649,8 @@ cannot create read-only descriptor for \"%s\"; no mmap"), close (fd); } @@ -215,10 +215,10 @@ index f463f45..180ae77 100644 } #if defined HAVE_LIBAUDIT && defined HAVE_LIBCAP -diff --git a/nscd/nscd.c b/nscd/nscd.c +diff --git glibc-2.17-c758a686/nscd/nscd.c glibc-2.17-c758a686/nscd/nscd.c index 63d9d83..5680378 100644 ---- a/nscd/nscd.c -+++ b/nscd/nscd.c +--- glibc-2.17-c758a686/nscd/nscd.c ++++ glibc-2.17-c758a686/nscd/nscd.c @@ -39,6 +39,8 @@ #include #include @@ -390,10 +390,10 @@ index 63d9d83..5680378 100644 + close (parent_fd); + parent_fd = -1; +} -diff --git a/nscd/nscd.h b/nscd/nscd.h +diff --git glibc-2.17-c758a686/nscd/nscd.h glibc-2.17-c758a686/nscd/nscd.h index 972f462..529b3f5 100644 ---- a/nscd/nscd.h -+++ b/nscd/nscd.h +--- glibc-2.17-c758a686/nscd/nscd.h ++++ glibc-2.17-c758a686/nscd/nscd.h @@ -205,6 +205,8 @@ extern gid_t old_gid; /* nscd.c */ extern void termination_handler (int signum) __attribute__ ((__noreturn__)); @@ -403,10 +403,10 @@ index 972f462..529b3f5 100644 /* connections.c */ extern void nscd_init (void); -diff --git a/nscd/selinux.c b/nscd/selinux.c +diff --git glibc-2.17-c758a686/nscd/selinux.c glibc-2.17-c758a686/nscd/selinux.c index e477254..46b0ea9 100644 ---- a/nscd/selinux.c -+++ b/nscd/selinux.c +--- glibc-2.17-c758a686/nscd/selinux.c ++++ glibc-2.17-c758a686/nscd/selinux.c @@ -179,7 +179,7 @@ preserve_capabilities (void) if (prctl (PR_SET_KEEPCAPS, 1) == -1) { @@ -488,8 +488,8 @@ index e477254..46b0ea9 100644 else dbg_log (_("Access Vector Cache (AVC) started")); #ifdef HAVE_LIBAUDIT ---- a/releng/nscd.service 2012-11-06 03:03:19.000000000 +0530 -+++ b/releng/nscd.service 2014-02-28 16:59:51.096630222 +0530 +--- glibc-2.17-c758a686/releng/nscd.service 2012-11-06 03:03:19.000000000 +0530 ++++ glibc-2.17-c758a686/releng/nscd.service 2014-02-28 16:59:51.096630222 +0530 @@ -1,10 +1,13 @@ +# systemd service file for nscd + diff --git a/SOURCES/glibc-rh1063681.patch b/SOURCES/glibc-rh1063681.patch index 429a0a3..c8ad2c2 100644 --- a/SOURCES/glibc-rh1063681.patch +++ b/SOURCES/glibc-rh1063681.patch @@ -1,7 +1,7 @@ -diff --git a/libio/Makefile b/libio/Makefile +diff --git glibc-2.17-c758a686/libio/Makefile glibc-2.17-c758a686/libio/Makefile index 22dbcae..488ee51 100644 ---- a/libio/Makefile -+++ b/libio/Makefile +--- glibc-2.17-c758a686/libio/Makefile ++++ glibc-2.17-c758a686/libio/Makefile @@ -60,7 +60,7 @@ tests = tst_swprintf tst_wprintf tst_swscanf tst_wscanf tst_getwc tst_putwc \ tst-wmemstream1 tst-wmemstream2 \ bug-memstream1 bug-wmemstream1 \ @@ -11,10 +11,10 @@ index 22dbcae..488ee51 100644 ifeq (yes,$(build-shared)) # Add test-fopenloc only if shared library is enabled since it depends on # shared localedata objects. -diff --git a/libio/fileops.c b/libio/fileops.c +diff --git glibc-2.17-c758a686/libio/fileops.c glibc-2.17-c758a686/libio/fileops.c index a3499be..2e7bc8d 100644 ---- a/libio/fileops.c -+++ b/libio/fileops.c +--- glibc-2.17-c758a686/libio/fileops.c ++++ glibc-2.17-c758a686/libio/fileops.c @@ -929,6 +929,93 @@ _IO_file_sync_mmap (_IO_FILE *fp) return 0; } @@ -186,10 +186,10 @@ index a3499be..2e7bc8d 100644 /* If destination is within current buffer, optimize: */ if (fp->_offset != _IO_pos_BAD && fp->_IO_read_base != NULL && !_IO_in_backup (fp)) -diff --git a/libio/iofdopen.c b/libio/iofdopen.c +diff --git glibc-2.17-c758a686/libio/iofdopen.c glibc-2.17-c758a686/libio/iofdopen.c index 066ff19..3f266f7 100644 ---- a/libio/iofdopen.c -+++ b/libio/iofdopen.c +--- glibc-2.17-c758a686/libio/iofdopen.c ++++ glibc-2.17-c758a686/libio/iofdopen.c @@ -141,9 +141,6 @@ _IO_new_fdopen (fd, mode) #ifdef _IO_MTSAFE_IO new_f->fp.file._lock = &new_f->lock; @@ -220,10 +220,10 @@ index 066ff19..3f266f7 100644 new_f->fp.file._flags &= ~_IO_DELETE_DONT_CLOSE; _IO_mask_flags (&new_f->fp.file, read_write, -diff --git a/libio/iofwide.c b/libio/iofwide.c +diff --git glibc-2.17-c758a686/libio/iofwide.c glibc-2.17-c758a686/libio/iofwide.c index 5cff632..64187e4 100644 ---- a/libio/iofwide.c -+++ b/libio/iofwide.c +--- glibc-2.17-c758a686/libio/iofwide.c ++++ glibc-2.17-c758a686/libio/iofwide.c @@ -199,12 +199,6 @@ _IO_fwide (fp, mode) /* From now on use the wide character callback functions. */ @@ -237,10 +237,10 @@ index 5cff632..64187e4 100644 } /* Set the mode now. */ -diff --git a/libio/libioP.h b/libio/libioP.h +diff --git glibc-2.17-c758a686/libio/libioP.h glibc-2.17-c758a686/libio/libioP.h index 4ca723c..8a7b85b 100644 ---- a/libio/libioP.h -+++ b/libio/libioP.h +--- glibc-2.17-c758a686/libio/libioP.h ++++ glibc-2.17-c758a686/libio/libioP.h @@ -397,6 +397,7 @@ extern void _IO_wdoallocbuf (_IO_FILE *) __THROW; libc_hidden_proto (_IO_wdoallocbuf) extern void _IO_unsave_wmarkers (_IO_FILE *) __THROW; @@ -249,11 +249,11 @@ index 4ca723c..8a7b85b 100644 /* Marker-related function. */ -diff --git a/libio/tst-ftell-active-handler.c b/libio/tst-ftell-active-handler.c +diff --git glibc-2.17-c758a686/libio/tst-ftell-active-handler.c glibc-2.17-c758a686/libio/tst-ftell-active-handler.c new file mode 100644 index 0000000..175e904 --- /dev/null -+++ b/libio/tst-ftell-active-handler.c ++++ glibc-2.17-c758a686/libio/tst-ftell-active-handler.c @@ -0,0 +1,384 @@ +/* Verify that ftell returns the correct value at various points before and + after the handler on which it is called becomes active. @@ -639,10 +639,10 @@ index 0000000..175e904 + + return ret; +} -diff --git a/libio/wfileops.c b/libio/wfileops.c +diff --git glibc-2.17-c758a686/libio/wfileops.c glibc-2.17-c758a686/libio/wfileops.c index 9cebe77..8b2e108 100644 ---- a/libio/wfileops.c -+++ b/libio/wfileops.c +--- glibc-2.17-c758a686/libio/wfileops.c ++++ glibc-2.17-c758a686/libio/wfileops.c @@ -596,29 +596,25 @@ done: return 0; } diff --git a/SOURCES/glibc-rh1064066.patch b/SOURCES/glibc-rh1064066.patch new file mode 100644 index 0000000..bdac2bb --- /dev/null +++ b/SOURCES/glibc-rh1064066.patch @@ -0,0 +1,32 @@ +--- /var/lib/mock/glibc-2.17-79.el7/root/builddir/build/BUILD/glibc-2.17-c758a686/math/libm-test.inc 2015-04-06 17:36:33.268209956 -0400 ++++ glibc-2.17-c758a686/math/libm-test.inc 2015-04-07 12:00:03.102360299 -0400 +@@ -521,7 +521,8 @@ + } + + +-static void __attribute__ ((noinline)) ++/* Attributes work around suspected gcc 4.8 bug #1209619. */ ++static void __attribute__ ((noclone, noinline)) + check_float_internal (const char *test_name, FLOAT computed, FLOAT expected, + FLOAT max_ulp, int xfail, int exceptions, + FLOAT *curr_max_error) +@@ -610,7 +611,8 @@ + } + + +-static void __attribute__ ((noinline)) ++/* Attributes work around suspected gcc 4.8 bug #1209619. */ ++static void __attribute__ ((noclone, noinline)) + check_float (const char *test_name, FLOAT computed, FLOAT expected, + FLOAT max_ulp, int xfail, int exceptions) + { +@@ -619,7 +621,8 @@ + } + + +-static void __attribute__ ((noinline)) ++/* Attributes work around suspected gcc 4.8 bug #1209619. */ ++static void __attribute__ ((noclone, noinline)) + check_complex (const char *test_name, __complex__ FLOAT computed, + __complex__ FLOAT expected, + __complex__ FLOAT max_ulp, __complex__ int xfail, diff --git a/SOURCES/glibc-rh1064945.patch b/SOURCES/glibc-rh1064945.patch index 119a8fc..69a5b2a 100644 --- a/SOURCES/glibc-rh1064945.patch +++ b/SOURCES/glibc-rh1064945.patch @@ -14,10 +14,10 @@ Date: Thu Jan 16 06:53:18 2014 -0600 another translation unit might use a different toc pointer thus requiring a PLT call. -diff --git a/sysdeps/unix/sysv/linux/powerpc/gettimeofday.c b/sysdeps/unix/sysv/linux/powerpc/gettimeofday.c +diff --git glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/gettimeofday.c glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/gettimeofday.c index 29a5e08..2085b68 100644 ---- a/sysdeps/unix/sysv/linux/powerpc/gettimeofday.c -+++ b/sysdeps/unix/sysv/linux/powerpc/gettimeofday.c +--- glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/gettimeofday.c ++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/gettimeofday.c @@ -44,8 +44,24 @@ asm (".type __gettimeofday, %gnu_indirect_function"); /* This is doing "libc_hidden_def (__gettimeofday)" but the compiler won't let us do it in C because it doesn't know we're defining __gettimeofday @@ -45,10 +45,10 @@ index 29a5e08..2085b68 100644 #else -diff --git a/sysdeps/unix/sysv/linux/powerpc/time.c b/sysdeps/unix/sysv/linux/powerpc/time.c +diff --git glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/time.c glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/time.c index 089d0b6..023bc02 100644 ---- a/sysdeps/unix/sysv/linux/powerpc/time.c -+++ b/sysdeps/unix/sysv/linux/powerpc/time.c +--- glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/time.c ++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/time.c @@ -54,8 +54,24 @@ asm (".type time, %gnu_indirect_function"); /* This is doing "libc_hidden_def (time)" but the compiler won't * let us do it in C because it doesn't know we're defining time diff --git a/SOURCES/glibc-rh1067755.patch b/SOURCES/glibc-rh1067755.patch index ac0e93f..9aa89d9 100644 --- a/SOURCES/glibc-rh1067755.patch +++ b/SOURCES/glibc-rh1067755.patch @@ -1,7 +1,7 @@ -diff --git a/elf/tst-stackguard1.c b/elf/tst-stackguard1.c +diff --git glibc-2.17-c758a686/elf/tst-stackguard1.c glibc-2.17-c758a686/elf/tst-stackguard1.c index 2b4fd9a..fba60bd 100644 ---- a/elf/tst-stackguard1.c -+++ b/elf/tst-stackguard1.c +--- glibc-2.17-c758a686/elf/tst-stackguard1.c ++++ glibc-2.17-c758a686/elf/tst-stackguard1.c @@ -23,6 +23,7 @@ #include #include @@ -10,10 +10,10 @@ index 2b4fd9a..fba60bd 100644 #include static const char *command; -diff --git a/include/errno.h b/include/errno.h +diff --git glibc-2.17-c758a686/include/errno.h glibc-2.17-c758a686/include/errno.h index 98c6080..f1b93a8 100644 ---- a/include/errno.h -+++ b/include/errno.h +--- glibc-2.17-c758a686/include/errno.h ++++ glibc-2.17-c758a686/include/errno.h @@ -17,7 +17,7 @@ # define errno rtld_errno extern int rtld_errno attribute_hidden; @@ -32,10 +32,10 @@ index 98c6080..f1b93a8 100644 # define __set_errno(val) (errno = (val)) -diff --git a/include/netdb.h b/include/netdb.h +diff --git glibc-2.17-c758a686/include/netdb.h glibc-2.17-c758a686/include/netdb.h index 3f2ae06..8a569ba 100644 ---- a/include/netdb.h -+++ b/include/netdb.h +--- glibc-2.17-c758a686/include/netdb.h ++++ glibc-2.17-c758a686/include/netdb.h @@ -3,18 +3,20 @@ #ifndef _ISOMAC @@ -67,10 +67,10 @@ index 3f2ae06..8a569ba 100644 # define __set_h_errno(x) (h_errno = (x)) libc_hidden_proto (hstrerror) -diff --git a/nptl/tst-cancel14.c b/nptl/tst-cancel14.c +diff --git glibc-2.17-c758a686/nptl/tst-cancel14.c glibc-2.17-c758a686/nptl/tst-cancel14.c index fbaed49..ca9042d 100644 ---- a/nptl/tst-cancel14.c -+++ b/nptl/tst-cancel14.c +--- glibc-2.17-c758a686/nptl/tst-cancel14.c ++++ glibc-2.17-c758a686/nptl/tst-cancel14.c @@ -23,6 +23,7 @@ #include #include @@ -79,10 +79,10 @@ index fbaed49..ca9042d 100644 static pthread_barrier_t bar; -diff --git a/nptl/tst-cancel15.c b/nptl/tst-cancel15.c +diff --git glibc-2.17-c758a686/nptl/tst-cancel15.c glibc-2.17-c758a686/nptl/tst-cancel15.c index 0119cc7..3f320ad 100644 ---- a/nptl/tst-cancel15.c -+++ b/nptl/tst-cancel15.c +--- glibc-2.17-c758a686/nptl/tst-cancel15.c ++++ glibc-2.17-c758a686/nptl/tst-cancel15.c @@ -23,6 +23,7 @@ #include #include @@ -91,10 +91,10 @@ index 0119cc7..3f320ad 100644 static pthread_barrier_t bar; -diff --git a/nptl/tst-mutex9.c b/nptl/tst-mutex9.c +diff --git glibc-2.17-c758a686/nptl/tst-mutex9.c glibc-2.17-c758a686/nptl/tst-mutex9.c index adb3b61..1d689bd 100644 ---- a/nptl/tst-mutex9.c -+++ b/nptl/tst-mutex9.c +--- glibc-2.17-c758a686/nptl/tst-mutex9.c ++++ glibc-2.17-c758a686/nptl/tst-mutex9.c @@ -18,10 +18,13 @@ #include @@ -109,10 +109,10 @@ index adb3b61..1d689bd 100644 #include -diff --git a/nptl/tst-stackguard1.c b/nptl/tst-stackguard1.c +diff --git glibc-2.17-c758a686/nptl/tst-stackguard1.c glibc-2.17-c758a686/nptl/tst-stackguard1.c index f0f707f..57a48ad 100644 ---- a/nptl/tst-stackguard1.c -+++ b/nptl/tst-stackguard1.c +--- glibc-2.17-c758a686/nptl/tst-stackguard1.c ++++ glibc-2.17-c758a686/nptl/tst-stackguard1.c @@ -24,6 +24,7 @@ #include #include diff --git a/SOURCES/glibc-rh1070458.patch b/SOURCES/glibc-rh1070458.patch index 7842271..31b2966 100644 --- a/SOURCES/glibc-rh1070458.patch +++ b/SOURCES/glibc-rh1070458.patch @@ -13,9 +13,9 @@ Date: Fri Jul 26 08:29:17 2013 +0100 -diff -ruNp a/ports/sysdeps/aarch64/machine-gmon.h b/ports/sysdeps/aarch64/machine-gmon.h ---- a/ports/sysdeps/aarch64/machine-gmon.h 2012-12-24 22:02:13.000000000 -0500 -+++ b/ports/sysdeps/aarch64/machine-gmon.h 2014-03-27 12:06:51.361046886 -0400 +diff -ruNp glibc-2.17-c758a686/ports/sysdeps/aarch64/machine-gmon.h glibc-2.17-c758a686/ports/sysdeps/aarch64/machine-gmon.h +--- glibc-2.17-c758a686/ports/sysdeps/aarch64/machine-gmon.h 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/ports/sysdeps/aarch64/machine-gmon.h 2014-03-27 12:06:51.361046886 -0400 @@ -1,5 +1,5 @@ -/* Copyright (C) 2011-2012 Free Software Foundation, Inc. - @@ -55,9 +55,9 @@ diff -ruNp a/ports/sysdeps/aarch64/machine-gmon.h b/ports/sysdeps/aarch64/machin +{ \ + mcount_internal ((u_long) frompc, (u_long) RETURN_ADDRESS (0)); \ +} -diff -ruNp a/ports/sysdeps/aarch64/mcount.c b/ports/sysdeps/aarch64/mcount.c ---- a/ports/sysdeps/aarch64/mcount.c 1969-12-31 19:00:00.000000000 -0500 -+++ b/ports/sysdeps/aarch64/mcount.c 2014-03-27 11:54:54.435418262 -0400 +diff -ruNp glibc-2.17-c758a686/ports/sysdeps/aarch64/mcount.c glibc-2.17-c758a686/ports/sysdeps/aarch64/mcount.c +--- glibc-2.17-c758a686/ports/sysdeps/aarch64/mcount.c 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.17-c758a686/ports/sysdeps/aarch64/mcount.c 2014-03-27 11:54:54.435418262 -0400 @@ -0,0 +1,33 @@ +/* Copyright (C) 2013 Free Software Foundation, Inc. + @@ -92,18 +92,18 @@ diff -ruNp a/ports/sysdeps/aarch64/mcount.c b/ports/sysdeps/aarch64/mcount.c +#else +strong_alias (__mcount, _mcount); +#endif -diff -ruNp a/ports/sysdeps/aarch64/Versions b/ports/sysdeps/aarch64/Versions ---- a/ports/sysdeps/aarch64/Versions 1969-12-31 19:00:00.000000000 -0500 -+++ b/ports/sysdeps/aarch64/Versions 2014-03-27 11:54:54.435418262 -0400 +diff -ruNp glibc-2.17-c758a686/ports/sysdeps/aarch64/Versions glibc-2.17-c758a686/ports/sysdeps/aarch64/Versions +--- glibc-2.17-c758a686/ports/sysdeps/aarch64/Versions 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.17-c758a686/ports/sysdeps/aarch64/Versions 2014-03-27 11:54:54.435418262 -0400 @@ -0,0 +1,5 @@ +libc { + GLIBC_2.18 { + _mcount; + } +} -diff -ruNp a/ports/sysdeps/unix/sysv/linux/aarch64/nptl/libc.abilist b/ports/sysdeps/unix/sysv/linux/aarch64/nptl/libc.abilist ---- a/ports/sysdeps/unix/sysv/linux/aarch64/nptl/libc.abilist 2012-12-24 22:02:13.000000000 -0500 -+++ b/ports/sysdeps/unix/sysv/linux/aarch64/nptl/libc.abilist 2014-03-27 11:54:54.495412015 -0400 +diff -ruNp glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/aarch64/nptl/libc.abilist glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/aarch64/nptl/libc.abilist +--- glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/aarch64/nptl/libc.abilist 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/aarch64/nptl/libc.abilist 2014-03-27 11:54:54.495412015 -0400 @@ -2077,3 +2077,6 @@ GLIBC_2.17 xencrypt F xprt_register F @@ -111,9 +111,9 @@ diff -ruNp a/ports/sysdeps/unix/sysv/linux/aarch64/nptl/libc.abilist b/ports/sys +GLIBC_2.18 + GLIBC_2.18 A + _mcount F -diff -ruNp a/Versions.def b/Versions.def ---- a/Versions.def 2012-12-24 22:02:13.000000000 -0500 -+++ b/Versions.def 2014-03-27 11:54:54.535407851 -0400 +diff -ruNp glibc-2.17-c758a686/Versions.def glibc-2.17-c758a686/Versions.def +--- glibc-2.17-c758a686/Versions.def 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/Versions.def 2014-03-27 11:54:54.535407851 -0400 @@ -34,6 +34,7 @@ libc { GLIBC_2.15 GLIBC_2.16 diff --git a/SOURCES/glibc-rh1070471.patch b/SOURCES/glibc-rh1070471.patch index cd3f329..0e38ad6 100644 --- a/SOURCES/glibc-rh1070471.patch +++ b/SOURCES/glibc-rh1070471.patch @@ -14,9 +14,9 @@ Date: Wed Jan 23 00:42:51 2013 +0000 -diff -ruNp a/bits/wchar.h b/bits/wchar.h ---- a/bits/wchar.h 2012-12-24 22:02:13.000000000 -0500 -+++ b/bits/wchar.h 2014-03-27 14:53:45.940914030 -0400 +diff -ruNp glibc-2.17-c758a686/bits/wchar.h glibc-2.17-c758a686/bits/wchar.h +--- glibc-2.17-c758a686/bits/wchar.h 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/bits/wchar.h 2014-03-27 14:53:45.940914030 -0400 @@ -19,7 +19,31 @@ #ifndef _BITS_WCHAR_H #define _BITS_WCHAR_H 1 diff --git a/SOURCES/glibc-rh1070806.patch b/SOURCES/glibc-rh1070806.patch index 6b3d501..0d896a2 100644 --- a/SOURCES/glibc-rh1070806.patch +++ b/SOURCES/glibc-rh1070806.patch @@ -1,6 +1,6 @@ -diff -urN glibc-2.17-c758a686/config.make.in glibc-2.17-c758a686.mod/config.make.in +diff -urN glibc-2.17-c758a686/config.make.in glibc-2.17-c758a686/config.make.in --- glibc-2.17-c758a686/config.make.in 2014-02-27 10:33:11.466763885 -0500 -+++ glibc-2.17-c758a686.mod/config.make.in 2014-02-27 10:36:44.481320149 -0500 ++++ glibc-2.17-c758a686/config.make.in 2014-02-27 10:36:44.481320149 -0500 @@ -62,6 +62,7 @@ have-as-vis3 = @libc_cv_sparc_as_vis3@ gnu89-inline-CFLAGS = @gnu89_inline@ @@ -9,9 +9,9 @@ diff -urN glibc-2.17-c758a686/config.make.in glibc-2.17-c758a686.mod/config.make have-selinux = @have_selinux@ have-libaudit = @have_libaudit@ have-libcap = @have_libcap@ -diff -urN glibc-2.17-c758a686/configure glibc-2.17-c758a686.mod/configure +diff -urN glibc-2.17-c758a686/configure glibc-2.17-c758a686/configure --- glibc-2.17-c758a686/configure 2014-02-27 10:33:11.561763687 -0500 -+++ glibc-2.17-c758a686.mod/configure 2014-02-27 10:32:28.885852593 -0500 ++++ glibc-2.17-c758a686/configure 2014-02-27 10:32:28.885852593 -0500 @@ -610,6 +610,7 @@ libc_cv_cc_submachine exceptions @@ -48,9 +48,9 @@ diff -urN glibc-2.17-c758a686/configure glibc-2.17-c758a686.mod/configure { $as_echo "$as_me:${as_lineno-$LINENO}: checking for -fgnu89-inline" >&5 $as_echo_n "checking for -fgnu89-inline... " >&6; } if ${libc_cv_gnu89_inline+:} false; then : -diff -urN glibc-2.17-c758a686/configure.in glibc-2.17-c758a686.mod/configure.in +diff -urN glibc-2.17-c758a686/configure.in glibc-2.17-c758a686/configure.in --- glibc-2.17-c758a686/configure.in 2014-02-27 10:33:11.469763878 -0500 -+++ glibc-2.17-c758a686.mod/configure.in 2014-02-27 10:32:09.171893663 -0500 ++++ glibc-2.17-c758a686/configure.in 2014-02-27 10:32:09.171893663 -0500 @@ -1682,6 +1682,13 @@ ]) AC_SUBST(libc_cv_ssp) @@ -65,9 +65,9 @@ diff -urN glibc-2.17-c758a686/configure.in glibc-2.17-c758a686.mod/configure.in AC_CACHE_CHECK(for -fgnu89-inline, libc_cv_gnu89_inline, [dnl cat > conftest.c <_IO_write_ptr - fp->_IO_read_end; } -diff --git a/libio/tst-ftell-append.c b/libio/tst-ftell-append.c +diff --git glibc-2.17-c758a686/libio/tst-ftell-append.c glibc-2.17-c758a686/libio/tst-ftell-append.c new file mode 100644 index 0000000..604dc03 --- /dev/null -+++ b/libio/tst-ftell-append.c ++++ glibc-2.17-c758a686/libio/tst-ftell-append.c @@ -0,0 +1,169 @@ +/* Verify that ftell returns the correct value after a read and a write on a + file opened in a+ mode. @@ -233,10 +233,10 @@ index 0000000..604dc03 + + return ret; +} -diff --git a/libio/wfileops.c b/libio/wfileops.c +diff --git glibc-2.17-c758a686/libio/wfileops.c glibc-2.17-c758a686/libio/wfileops.c index 3199861..f123add 100644 ---- a/libio/wfileops.c -+++ b/libio/wfileops.c +--- glibc-2.17-c758a686/libio/wfileops.c ++++ glibc-2.17-c758a686/libio/wfileops.c @@ -713,9 +713,16 @@ do_ftell_wide (_IO_FILE *fp) offset += outstop - out; } diff --git a/SOURCES/glibc-rh1074410.patch b/SOURCES/glibc-rh1074410.patch index f1303ea..3241ef7 100644 --- a/SOURCES/glibc-rh1074410.patch +++ b/SOURCES/glibc-rh1074410.patch @@ -77,10 +77,10 @@ Date: Mon Mar 10 16:20:01 2014 +0530 up test status with function return status. (do_write_test): Likewise. (do_append_test): Likewise. -diff --git a/libio/fileops.c b/libio/fileops.c +diff --git glibc-2.17-c758a686/libio/fileops.c glibc-2.17-c758a686/libio/fileops.c index 2e7bc8d..cf68dbf 100644 ---- a/libio/fileops.c -+++ b/libio/fileops.c +--- glibc-2.17-c758a686/libio/fileops.c ++++ glibc-2.17-c758a686/libio/fileops.c @@ -232,13 +232,18 @@ _IO_file_open (fp, filename, posix_mode, prot, read_write, is32not64) return NULL; fp->_fileno = fdesc; @@ -224,10 +224,10 @@ index 2e7bc8d..cf68dbf 100644 _IO_off64_t _IO_new_file_seekoff (fp, offset, dir, mode) _IO_FILE *fp; -diff --git a/libio/iofdopen.c b/libio/iofdopen.c +diff --git glibc-2.17-c758a686/libio/iofdopen.c glibc-2.17-c758a686/libio/iofdopen.c index 3f266f7..b36d21d 100644 ---- a/libio/iofdopen.c -+++ b/libio/iofdopen.c +--- glibc-2.17-c758a686/libio/iofdopen.c ++++ glibc-2.17-c758a686/libio/iofdopen.c @@ -59,6 +59,11 @@ _IO_new_fdopen (fd, mode) int i; int use_mmap = 0; @@ -265,10 +265,10 @@ index 3f266f7..b36d21d 100644 return &new_f->fp.file; } libc_hidden_ver (_IO_new_fdopen, _IO_fdopen) -diff --git a/libio/tst-ftell-active-handler.c b/libio/tst-ftell-active-handler.c +diff --git glibc-2.17-c758a686/libio/tst-ftell-active-handler.c glibc-2.17-c758a686/libio/tst-ftell-active-handler.c index 54bfe63..e9dc7b3 100644 ---- a/libio/tst-ftell-active-handler.c -+++ b/libio/tst-ftell-active-handler.c +--- glibc-2.17-c758a686/libio/tst-ftell-active-handler.c ++++ glibc-2.17-c758a686/libio/tst-ftell-active-handler.c @@ -88,6 +88,107 @@ static size_t file_len; typedef int (*fputs_func_t) (const void *data, FILE *fp); fputs_func_t fputs_func; @@ -568,10 +568,10 @@ index 54bfe63..e9dc7b3 100644 return ret; } -diff --git a/libio/wfileops.c b/libio/wfileops.c +diff --git glibc-2.17-c758a686/libio/wfileops.c glibc-2.17-c758a686/libio/wfileops.c index 8b2e108..3199861 100644 ---- a/libio/wfileops.c -+++ b/libio/wfileops.c +--- glibc-2.17-c758a686/libio/wfileops.c ++++ glibc-2.17-c758a686/libio/wfileops.c @@ -597,12 +597,12 @@ done: } diff --git a/SOURCES/glibc-rh1077389-p1.patch b/SOURCES/glibc-rh1077389-p1.patch index 40835b0..3ee3152 100644 --- a/SOURCES/glibc-rh1077389-p1.patch +++ b/SOURCES/glibc-rh1077389-p1.patch @@ -10,9 +10,9 @@ # in some cases. It adds an artificial OPD static entry to such cases # and set its TOC to non 0 to avoid triggering lazy resolutions. # -diff -urN glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/bits/libc-vdso.h glibc-2.17-c758a686.mod/sysdeps/unix/sysv/linux/powerpc/bits/libc-vdso.h +diff -urN glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/bits/libc-vdso.h glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/bits/libc-vdso.h --- glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/bits/libc-vdso.h 2015-01-15 16:05:08.853681325 -0500 -+++ glibc-2.17-c758a686.mod/sysdeps/unix/sysv/linux/powerpc/bits/libc-vdso.h 2015-01-15 16:06:11.451747716 -0500 ++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/bits/libc-vdso.h 2015-01-15 16:06:11.451747716 -0500 @@ -34,12 +34,32 @@ extern void *__vdso_time; @@ -52,9 +52,9 @@ diff -urN glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/bits/libc-vdso.h g #else #define VDSO_IFUNC_RET(value) ((void *) (value)) #endif -diff -urN glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/gettimeofday.c glibc-2.17-c758a686.mod/sysdeps/unix/sysv/linux/powerpc/gettimeofday.c +diff -urN glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/gettimeofday.c glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/gettimeofday.c --- glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/gettimeofday.c 2015-01-15 16:05:08.912679502 -0500 -+++ glibc-2.17-c758a686.mod/sysdeps/unix/sysv/linux/powerpc/gettimeofday.c 2015-01-15 16:06:11.451747716 -0500 ++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/gettimeofday.c 2015-01-15 16:06:11.451747716 -0500 @@ -21,6 +21,7 @@ # include @@ -63,9 +63,9 @@ diff -urN glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/gettimeofday.c gli void *gettimeofday_ifunc (void) __asm__ ("__gettimeofday"); -diff -urN glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/time.c glibc-2.17-c758a686.mod/sysdeps/unix/sysv/linux/powerpc/time.c +diff -urN glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/time.c glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/time.c --- glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/time.c 2015-01-15 16:05:08.912679502 -0500 -+++ glibc-2.17-c758a686.mod/sysdeps/unix/sysv/linux/powerpc/time.c 2015-01-15 16:06:11.451747716 -0500 ++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/time.c 2015-01-15 16:06:11.451747716 -0500 @@ -20,7 +20,9 @@ # include diff --git a/SOURCES/glibc-rh1077389-p2.patch b/SOURCES/glibc-rh1077389-p2.patch index 5e31595..a37893c 100644 --- a/SOURCES/glibc-rh1077389-p2.patch +++ b/SOURCES/glibc-rh1077389-p2.patch @@ -15,9 +15,9 @@ # # It fixes BZ#16431. # -diff -urN glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/gettimeofday.c glibc-2.17-c758a686.mod/sysdeps/unix/sysv/linux/powerpc/gettimeofday.c +diff -urN glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/gettimeofday.c glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/gettimeofday.c --- glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/gettimeofday.c 2015-01-15 16:07:59.167420456 -0500 -+++ glibc-2.17-c758a686.mod/sysdeps/unix/sysv/linux/powerpc/gettimeofday.c 2015-01-15 16:07:41.408969001 -0500 ++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/gettimeofday.c 2015-01-15 16:07:41.408969001 -0500 @@ -34,9 +34,12 @@ void * gettimeofday_ifunc (void) @@ -33,9 +33,9 @@ diff -urN glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/gettimeofday.c gli } asm (".type __gettimeofday, %gnu_indirect_function"); -diff -urN glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/time.c glibc-2.17-c758a686.mod/sysdeps/unix/sysv/linux/powerpc/time.c +diff -urN glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/time.c glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/time.c --- glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/time.c 2015-01-15 16:07:59.168420425 -0500 -+++ glibc-2.17-c758a686.mod/sysdeps/unix/sysv/linux/powerpc/time.c 2015-01-15 16:07:41.408969001 -0500 ++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/time.c 2015-01-15 16:07:41.408969001 -0500 @@ -45,9 +45,12 @@ void * time_ifunc (void) diff --git a/SOURCES/glibc-rh1078225.patch b/SOURCES/glibc-rh1078225.patch index f2eaa16..9743e87 100644 --- a/SOURCES/glibc-rh1078225.patch +++ b/SOURCES/glibc-rh1078225.patch @@ -14,7 +14,7 @@ AAPCS. Index: glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/aarch64/clone.S =================================================================== ---- glibc-2.17-c758a686.orig/ports/sysdeps/unix/sysv/linux/aarch64/clone.S +--- glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/aarch64/clone.S +++ glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/aarch64/clone.S @@ -63,6 +63,7 @@ ENTRY(__clone) mov x8, #SYS_ify(clone) diff --git a/SOURCES/glibc-rh1080766.patch b/SOURCES/glibc-rh1080766.patch index 50b4109..2fffaa8 100644 --- a/SOURCES/glibc-rh1080766.patch +++ b/SOURCES/glibc-rh1080766.patch @@ -28,10 +28,10 @@ Date: Thu Mar 27 07:15:22 2014 +0530 * nscd/netgroupcache.c (addinnetgrX): Succeed if triplet has blank values. -diff --git a/nscd/netgroupcache.c b/nscd/netgroupcache.c +diff --git glibc-2.17-c758a686/nscd/netgroupcache.c glibc-2.17-c758a686/nscd/netgroupcache.c index 5ba1e1f..5d15aa4 100644 ---- a/nscd/netgroupcache.c -+++ b/nscd/netgroupcache.c +--- glibc-2.17-c758a686/nscd/netgroupcache.c ++++ glibc-2.17-c758a686/nscd/netgroupcache.c @@ -560,15 +560,19 @@ addinnetgrX (struct database_dyn *db, int fd, request_header *req, { bool success = true; diff --git a/SOURCES/glibc-rh1083644.patch b/SOURCES/glibc-rh1083644.patch index 60a0ece..14c4acf 100644 --- a/SOURCES/glibc-rh1083644.patch +++ b/SOURCES/glibc-rh1083644.patch @@ -20,10 +20,10 @@ Date: Thu Mar 27 19:48:15 2014 +0530 Fix this by using memmove instead of stpcpy. -diff --git a/nscd/netgroupcache.c b/nscd/netgroupcache.c +diff --git glibc-2.17-c758a686/nscd/netgroupcache.c glibc-2.17-c758a686/nscd/netgroupcache.c index 5d15aa4..820d823 100644 ---- a/nscd/netgroupcache.c -+++ b/nscd/netgroupcache.c +--- glibc-2.17-c758a686/nscd/netgroupcache.c ++++ glibc-2.17-c758a686/nscd/netgroupcache.c @@ -216,6 +216,10 @@ addgetnetgrentX (struct database_dyn *db, int fd, request_header *req, const char *nuser = data.val.triple.user; const char *ndomain = data.val.triple.domain; diff --git a/SOURCES/glibc-rh1083646.patch b/SOURCES/glibc-rh1083646.patch index 2210609..dcc232c 100644 --- a/SOURCES/glibc-rh1083646.patch +++ b/SOURCES/glibc-rh1083646.patch @@ -25,10 +25,10 @@ Date: Wed Apr 30 11:57:09 2014 +0530 the structure and hence preventing a possible data leak into the cache file. -diff --git a/nscd/aicache.c b/nscd/aicache.c +diff --git glibc-2.17-c758a686/nscd/aicache.c glibc-2.17-c758a686/nscd/aicache.c index 98d40a1..d7966bd 100644 ---- a/nscd/aicache.c -+++ b/nscd/aicache.c +--- glibc-2.17-c758a686/nscd/aicache.c ++++ glibc-2.17-c758a686/nscd/aicache.c @@ -383,17 +383,12 @@ addhstaiX (struct database_dyn *db, int fd, request_header *req, cp = family; } @@ -71,10 +71,10 @@ index 98d40a1..d7966bd 100644 /* This is the reply. */ memcpy (&dataset->resp, ¬found, total); -diff --git a/nscd/grpcache.c b/nscd/grpcache.c +diff --git glibc-2.17-c758a686/nscd/grpcache.c glibc-2.17-c758a686/nscd/grpcache.c index b5a33eb..df59fa7 100644 ---- a/nscd/grpcache.c -+++ b/nscd/grpcache.c +--- glibc-2.17-c758a686/nscd/grpcache.c ++++ glibc-2.17-c758a686/nscd/grpcache.c @@ -128,14 +128,10 @@ cache_addgr (struct database_dyn *db, int fd, request_header *req, } else if ((dataset = mempool_alloc (db, sizeof (struct dataset) + req->key_len, 1)) != NULL) @@ -113,10 +113,10 @@ index b5a33eb..df59fa7 100644 dataset->resp.version = NSCD_VERSION; dataset->resp.found = 1; -diff --git a/nscd/hstcache.c b/nscd/hstcache.c +diff --git glibc-2.17-c758a686/nscd/hstcache.c glibc-2.17-c758a686/nscd/hstcache.c index a79b67a..d4f1ad2 100644 ---- a/nscd/hstcache.c -+++ b/nscd/hstcache.c +--- glibc-2.17-c758a686/nscd/hstcache.c ++++ glibc-2.17-c758a686/nscd/hstcache.c @@ -152,15 +152,11 @@ cache_addhst (struct database_dyn *db, int fd, request_header *req, else if ((dataset = mempool_alloc (db, (sizeof (struct dataset) + req->key_len), 1)) != NULL) @@ -158,10 +158,10 @@ index a79b67a..d4f1ad2 100644 dataset->resp.version = NSCD_VERSION; dataset->resp.found = 1; -diff --git a/nscd/initgrcache.c b/nscd/initgrcache.c +diff --git glibc-2.17-c758a686/nscd/initgrcache.c glibc-2.17-c758a686/nscd/initgrcache.c index 1bf9f0d..361319f 100644 ---- a/nscd/initgrcache.c -+++ b/nscd/initgrcache.c +--- glibc-2.17-c758a686/nscd/initgrcache.c ++++ glibc-2.17-c758a686/nscd/initgrcache.c @@ -213,14 +213,10 @@ addinitgroupsX (struct database_dyn *db, int fd, request_header *req, else if ((dataset = mempool_alloc (db, (sizeof (struct dataset) + req->key_len), 1)) != NULL) @@ -200,10 +200,10 @@ index 1bf9f0d..361319f 100644 dataset->resp.version = NSCD_VERSION; dataset->resp.found = 1; -diff --git a/nscd/netgroupcache.c b/nscd/netgroupcache.c +diff --git glibc-2.17-c758a686/nscd/netgroupcache.c glibc-2.17-c758a686/nscd/netgroupcache.c index 820d823..b3d40e9 100644 ---- a/nscd/netgroupcache.c -+++ b/nscd/netgroupcache.c +--- glibc-2.17-c758a686/nscd/netgroupcache.c ++++ glibc-2.17-c758a686/nscd/netgroupcache.c @@ -90,15 +90,9 @@ do_notfound (struct database_dyn *db, int fd, request_header *req, /* If we cannot permanently store the result, so be it. */ if (dataset != NULL) @@ -259,10 +259,10 @@ index 820d823..b3d40e9 100644 dataset->head.timeout = timeout; dataset->resp.version = NSCD_VERSION; -diff --git a/nscd/nscd-client.h b/nscd/nscd-client.h +diff --git glibc-2.17-c758a686/nscd/nscd-client.h glibc-2.17-c758a686/nscd/nscd-client.h index 98f77e7..ee16df6 100644 ---- a/nscd/nscd-client.h -+++ b/nscd/nscd-client.h +--- glibc-2.17-c758a686/nscd/nscd-client.h ++++ glibc-2.17-c758a686/nscd/nscd-client.h @@ -236,6 +236,48 @@ struct datahead } data[0]; }; @@ -312,10 +312,10 @@ index 98f77e7..ee16df6 100644 /* Structure for one hash table entry. */ struct hashentry -diff --git a/nscd/pwdcache.c b/nscd/pwdcache.c +diff --git glibc-2.17-c758a686/nscd/pwdcache.c glibc-2.17-c758a686/nscd/pwdcache.c index fa355c3..41c245b 100644 ---- a/nscd/pwdcache.c -+++ b/nscd/pwdcache.c +--- glibc-2.17-c758a686/nscd/pwdcache.c ++++ glibc-2.17-c758a686/nscd/pwdcache.c @@ -135,14 +135,10 @@ cache_addpw (struct database_dyn *db, int fd, request_header *req, else if ((dataset = mempool_alloc (db, (sizeof (struct dataset) + req->key_len), 1)) != NULL) @@ -354,10 +354,10 @@ index fa355c3..41c245b 100644 dataset->resp.version = NSCD_VERSION; dataset->resp.found = 1; -diff --git a/nscd/servicescache.c b/nscd/servicescache.c +diff --git glibc-2.17-c758a686/nscd/servicescache.c glibc-2.17-c758a686/nscd/servicescache.c index 12ce9b2..95bdcfe 100644 ---- a/nscd/servicescache.c -+++ b/nscd/servicescache.c +--- glibc-2.17-c758a686/nscd/servicescache.c ++++ glibc-2.17-c758a686/nscd/servicescache.c @@ -120,14 +120,10 @@ cache_addserv (struct database_dyn *db, int fd, request_header *req, else if ((dataset = mempool_alloc (db, (sizeof (struct dataset) + req->key_len), 1)) != NULL) diff --git a/SOURCES/glibc-rh1083647.patch b/SOURCES/glibc-rh1083647.patch index 121127e..70d8b27 100644 --- a/SOURCES/glibc-rh1083647.patch +++ b/SOURCES/glibc-rh1083647.patch @@ -11,10 +11,10 @@ Date: Wed Mar 12 17:27:22 2014 +0530 The fix here is to factor in the key length when sending the available buffer and buffer length to the query functions. -diff --git a/nscd/netgroupcache.c b/nscd/netgroupcache.c +diff --git glibc-2.17-c758a686/nscd/netgroupcache.c glibc-2.17-c758a686/nscd/netgroupcache.c index 426d3c5..5ba1e1f 100644 ---- a/nscd/netgroupcache.c -+++ b/nscd/netgroupcache.c +--- glibc-2.17-c758a686/nscd/netgroupcache.c ++++ glibc-2.17-c758a686/nscd/netgroupcache.c @@ -202,7 +202,7 @@ addgetnetgrentX (struct database_dyn *db, int fd, request_header *req, { int e; diff --git a/SOURCES/glibc-rh1084089.patch b/SOURCES/glibc-rh1084089.patch index 2411964..6c4e220 100644 --- a/SOURCES/glibc-rh1084089.patch +++ b/SOURCES/glibc-rh1084089.patch @@ -1,6 +1,6 @@ -diff -pruN a/nptl/sysdeps/unix/sysv/linux/lowlevellock.c b/nptl/sysdeps/unix/sysv/linux/lowlevellock.c ---- a/nptl/sysdeps/unix/sysv/linux/lowlevellock.c 2012-12-25 08:32:13.000000000 +0530 -+++ b/nptl/sysdeps/unix/sysv/linux/lowlevellock.c 2014-09-05 21:50:56.982975803 +0530 +diff -pruN glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/lowlevellock.c glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/lowlevellock.c +--- glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/lowlevellock.c 2012-12-25 08:32:13.000000000 +0530 ++++ glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/lowlevellock.c 2014-09-05 21:50:56.982975803 +0530 @@ -21,11 +21,13 @@ #include #include @@ -23,9 +23,9 @@ diff -pruN a/nptl/sysdeps/unix/sysv/linux/lowlevellock.c b/nptl/sysdeps/unix/sys if (*futex == 2) lll_futex_wait (futex, 2, private); -diff -pruN a/nptl/sysdeps/unix/sysv/linux/powerpc/lowlevellock.h b/nptl/sysdeps/unix/sysv/linux/powerpc/lowlevellock.h ---- a/nptl/sysdeps/unix/sysv/linux/powerpc/lowlevellock.h 2012-12-25 08:32:13.000000000 +0530 -+++ b/nptl/sysdeps/unix/sysv/linux/powerpc/lowlevellock.h 2014-09-05 21:51:58.722483631 +0530 +diff -pruN glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/powerpc/lowlevellock.h glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/powerpc/lowlevellock.h +--- glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/powerpc/lowlevellock.h 2012-12-25 08:32:13.000000000 +0530 ++++ glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/powerpc/lowlevellock.h 2014-09-05 21:51:58.722483631 +0530 @@ -19,6 +19,8 @@ #ifndef _LOWLEVELLOCK_H #define _LOWLEVELLOCK_H 1 @@ -43,9 +43,9 @@ diff -pruN a/nptl/sysdeps/unix/sysv/linux/powerpc/lowlevellock.h b/nptl/sysdeps/ __ret = INTERNAL_SYSCALL (futex, __err, 4, (futexp), \ __lll_private_flag (FUTEX_WAKE, private), \ (nr), 0); \ -diff -pruN a/nptl/sysdeps/unix/sysv/linux/s390/lowlevellock.h b/nptl/sysdeps/unix/sysv/linux/s390/lowlevellock.h ---- a/nptl/sysdeps/unix/sysv/linux/s390/lowlevellock.h 2012-12-25 08:32:13.000000000 +0530 -+++ b/nptl/sysdeps/unix/sysv/linux/s390/lowlevellock.h 2014-09-05 21:51:58.722483631 +0530 +diff -pruN glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/s390/lowlevellock.h glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/s390/lowlevellock.h +--- glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/s390/lowlevellock.h 2012-12-25 08:32:13.000000000 +0530 ++++ glibc-2.17-c758a686/nptl/sysdeps/unix/sysv/linux/s390/lowlevellock.h 2014-09-05 21:51:58.722483631 +0530 @@ -19,6 +19,8 @@ #ifndef _LOWLEVELLOCK_H #define _LOWLEVELLOCK_H 1 diff --git a/SOURCES/glibc-rh1084395.patch b/SOURCES/glibc-rh1084395.patch new file mode 100644 index 0000000..dc7cc7e --- /dev/null +++ b/SOURCES/glibc-rh1084395.patch @@ -0,0 +1,28895 @@ +diff -urN glibc-2.17-c758a686/benchtests/acosh-inputs glibc-2.17-c758a686/benchtests/acosh-inputs +--- glibc-2.17-c758a686/benchtests/acosh-inputs 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.17-c758a686/benchtests/acosh-inputs 2015-06-20 21:22:16.295458166 -0400 +@@ -0,0 +1,303 @@ ++## args: double ++## ret: double ++## includes: math.h ++0x1.6d46e7252da2fp388 ++0x1.c18cc3982093ep775 ++0x1.2e9a406645b9bp609 ++0x1.006d075b935c9p0 ++0x1.4d49f6cda4ceap0 ++0x1.e0ba4580ef871p21 ++0x1.ffab14f637eaap733 ++0x1.f0a22293c4ecbp852 ++0x1.24baf479f025cp0 ++0x1.91bc310a7648ep243 ++0x1.93d4c19692fbfp80 ++0x1.9eb0b40303dcap843 ++0x1.945a20aa092e2p4 ++0x1.ac2677a0ed292p0 ++0x1.64c6a3d5a0867p304 ++0x1.e0d6324c882e9p0 ++0x1.7e0ba7c987b9ep7 ++0x1.3975f02686229p10 ++0x1.cc4916f089070p25 ++0x1.729be339c67b2p0 ++0x1.c64b8297569c4p207 ++0x1.2c1544d816155p340 ++0x1.ad443265c6b4ap845 ++0x1.f53624533eb2cp0 ++0x1.92e4800542f83p108 ++0x1.f873e456e1975p0 ++0x1.84a7b4b80f227p4 ++0x1.46dd43031fe1fp0 ++0x1.e28b805a73a97p0 ++0x1.9e11325b1c3c4p22 ++0x1.5c76b43d66941p15 ++0x1.98109155dd7bfp21 ++0x1.3d88b121650aap8 ++0x1.adff01fab2117p0 ++0x1.5e76d52c7f729p15 ++0x1.0a46e3262c2b8p20 ++0x1.52f9a11ad6e66p0 ++0x1.96f8f26a41c3bp122 ++0x1.161fd6fd320d5p745 ++0x1.c5fb927d2cb09p8 ++0x1.265a61a0bb1d4p0 ++0x1.09a5d681397d0p0 ++0x1.ebef22f6aa8aap0 ++0x1.3ac9b75c613bdp160 ++0x1.b77615a1e2a3ap0 ++0x1.68f9d755d5eadp0 ++0x1.ed2c9188571d9p0 ++0x1.e8f886346b284p15 ++0x1.f65bd2ce4416ap0 ++0x1.4574341b05968p656 ++0x1.5c2cb3414299cp154 ++0x1.c4ea7682d0661p832 ++0x1.b221562a61af2p0 ++0x1.d7f9c739e0b26p561 ++0x1.eb28429726661p423 ++0x1.e7a5f5b2cc9e8p902 ++0x1.9fd093db922f4p0 ++0x1.c1cb5159d4e46p0 ++0x1.a0bed3234b8cdp0 ++0x1.bc8ff7e59e82ep18 ++0x1.de8f25287ff7cp0 ++0x1.a1ab66b8f9098p0 ++0x1.c36c11c290063p20 ++0x1.72e9e736d6e41p0 ++0x1.38b134391f71ep21 ++0x1.a500e5cf1a2cfp246 ++0x1.253da08c9c318p144 ++0x1.f5efb379e3b3fp952 ++0x1.07c767a225a7bp21 ++0x1.f82770adf361dp19 ++0x1.39e42524c048ep894 ++0x1.a4ae84e202a44p0 ++0x1.e17e23b598415p925 ++0x1.08fa931bd21f5p10 ++0x1.b52541759872ep0 ++0x1.91bf33cdb6804p710 ++0x1.5c18505e522d6p0 ++0x1.9fe7c5ca15212p9 ++0x1.62c360b992b13p10 ++0x1.57a000ceee049p800 ++0x1.da296671c3e5cp0 ++0x1.ff43325a40608p0 ++0x1.295d65809666fp111 ++0x1.2781e3f5d0e0fp249 ++0x1.875d5703776fcp0 ++0x1.0f8045a313158p26 ++0x1.bd30a3b638a67p11 ++0x1.0a3184db8d287p0 ++0x1.c6d33006f978ep0 ++0x1.8c6476a610245p0 ++0x1.aa7fc36f3cea9p461 ++0x1.afb5c0c4f933ap6 ++0x1.20b75365bd50fp16 ++0x1.69c8245c09535p19 ++0x1.30dcf0414c561p292 ++0x1.c2323455e5501p0 ++0x1.c2e3d08f78fb2p0 ++0x1.f479457ec8f4fp25 ++0x1.4c1e32e79005dp7 ++0x1.86b9a4aed3300p26 ++0x1.ee654167b045bp0 ++0x1.a339c796ccd9fp0 ++0x1.75f6f32348765p4 ++0x1.6120d7e4e5d9ep498 ++0x1.01c843ae8b440p20 ++0x1.034a67c534113p0 ++0x1.94d6d681be7e6p0 ++0x1.2576745f4cca6p22 ++0x1.813994f759a60p171 ++0x1.0308a4c5b820dp0 ++0x1.d073e0e895907p580 ++0x1.6094d2dc7af3bp0 ++0x1.3348d7ba303bep0 ++0x1.a0830483382afp2 ++0x1.e3558408e36dep0 ++0x1.d55db05590c97p0 ++0x1.95680648261ecp0 ++0x1.d54c401b55bd9p18 ++0x1.584be75027a11p872 ++0x1.594273cdd339dp4 ++0x1.85d9676b1ae49p752 ++0x1.38f122e7f7be0p220 ++0x1.75c3a575deb13p251 ++0x1.2c85f1a74ac0fp0 ++0x1.0dc9e789128acp947 ++0x1.51dbf3461a224p0 ++0x1.61c9644526617p809 ++0x1.89494217ed887p204 ++0x1.2a57014d8c24bp317 ++0x1.c4d527df0d553p762 ++0x1.ad2717638f0adp986 ++0x1.63352752d72c5p847 ++0x1.d124a052e9410p0 ++0x1.373d228ee6061p505 ++0x1.0bbe63d8b48d2p0 ++0x1.0b5115dd5774dp4 ++0x1.f50d62ef77ac6p3 ++0x1.4cb6110ea61e4p1 ++0x1.b056b690aef8ap0 ++0x1.a32cd47340669p2 ++0x1.f917868895288p872 ++0x1.332a86c10c0e1p14 ++0x1.07f7c34023735p881 ++0x1.7935f21efcfadp24 ++0x1.644ad1a392b18p0 ++0x1.f930b772bba49p0 ++0x1.019a86d2e2300p18 ++0x1.a25af297e68fep194 ++0x1.80ab316f210c8p0 ++0x1.f73a3049f9d76p16 ++0x1.8b1a0407ae636p7 ++0x1.9bdf23a917930p2 ++0x1.d139574e3913ep168 ++0x1.caf9468b5f459p0 ++0x1.c3b5f0096df0dp24 ++0x1.d3451096baf1ep0 ++0x1.7bb5671e2bfcap719 ++0x1.64b7e3621a6ddp0 ++0x1.08b544290bb37p0 ++0x1.2b65c78ec87a4p0 ++0x1.993a6363227e2p12 ++0x1.a09d26d2a558fp216 ++0x1.daff104bb08a5p25 ++0x1.7d77308fd73cap655 ++0x1.8946b691ecf5ap10 ++0x1.8ec222d562aa9p25 ++0x1.b7da17cd3268ap0 ++0x1.250500a0b4266p831 ++0x1.8e6f071075758p0 ++0x1.984146d8a6c69p20 ++0x1.558480e0da8bdp15 ++0x1.b6bea5e996fdbp11 ++0x1.f289853c632ddp11 ++0x1.8fbe179f273aap0 ++0x1.6b4382f669e8dp0 ++0x1.a966a17972ca9p601 ++0x1.dbd635362ec6bp6 ++0x1.899e75c43e065p675 ++0x1.f11c07e219bafp7 ++0x1.3ab637a02ed36p0 ++0x1.36b913a68fe70p901 ++0x1.049fe294eb450p0 ++0x1.0547247e7518ap677 ++0x1.9e07054aa7309p743 ++0x1.aff281fbb3a6ap874 ++0x1.6c1b6312efacfp783 ++0x1.a38c639c0df57p243 ++0x1.f07b95fd415ccp9 ++0x1.ca1c23fd6ce37p7 ++0x1.9ed9906a6f029p18 ++0x1.f1a483c62adecp74 ++0x1.617df662bbf02p0 ++0x1.22e1608c31f55p13 ++0x1.d840853d46285p15 ++0x1.023fd69d438dep12 ++0x1.8184a3fcc1ac3p942 ++0x1.25c5071d2dc6ep8 ++0x1.0eec25d2a59ccp27 ++0x1.d55b11ee07cc4p0 ++0x1.175347bf29152p23 ++0x1.546624c66c38bp0 ++0x1.212fc4abebddep723 ++0x1.75f1269063e4dp5 ++0x1.3b51233fed0a5p381 ++0x1.486e24ad660e1p686 ++0x1.7788055510c4dp23 ++0x1.55bf96fcf9458p905 ++0x1.0a5aa2d61be59p0 ++0x1.5da757c1a95c6p895 ++0x1.d596e1ea9dcefp0 ++0x1.e91b460893372p0 ++0x1.d934d6ea17649p728 ++0x1.cd74423b4c4aep15 ++0x1.dc3151a1b4289p0 ++0x1.5799c072442dep0 ++0x1.97ae606371057p22 ++0x1.7369c3195238ap0 ++0x1.43a1d0e6eae29p109 ++0x1.7fd922252a24ep425 ++0x1.bf01d7e826d2cp0 ++0x1.a397b7c711fcfp14 ++0x1.7b40809d9f6b5p0 ++0x1.58098134bf6afp0 ++0x1.567e92bdee806p3 ++0x1.641866cfab5e7p382 ++0x1.11d483657f659p0 ++0x1.f0b1d4cd82236p18 ++0x1.a18365ad84301p6 ++0x1.4f749259eb02dp140 ++0x1.4b1d721633901p747 ++0x1.fa9e9543d1dfbp5 ++0x1.ae33e3ae5e0ecp0 ++0x1.29c444207fa90p0 ++0x1.b55e708600082p19 ++0x1.bb1464c1f136fp0 ++0x1.d36f165b63b8fp880 ++0x1.c1a0d0ee96f75p27 ++0x1.9b1376e7377a3p0 ++0x1.6e88361aa13bbp619 ++0x1.d109f410d341bp822 ++0x1.654255768c727p0 ++0x1.c938959e450d6p0 ++0x1.26fd92ae3e170p356 ++0x1.157c240adb715p982 ++0x1.749735f182597p15 ++0x1.2291e3ab7501cp0 ++0x1.96d320a0153bap383 ++0x1.b569919b79b6fp214 ++0x1.0872c2cff972dp276 ++0x1.bd98342544357p0 ++0x1.853327d0e2f4dp11 ++0x1.23438314fb10bp0 ++0x1.342f35eabf622p707 ++0x1.d19f05a5a1fe4p13 ++0x1.67c566bcf73aap0 ++0x1.2ce065238fb73p27 ++0x1.5219d2e05f184p0 ++0x1.4a163440f7c98p4 ++0x1.d780c4711b212p0 ++0x1.395461c5f96a6p5 ++0x1.21efa25110e19p12 ++0x1.c9ddf4f375933p17 ++0x1.3da0800fe1f5ep0 ++0x1.90f147b3d0164p829 ++0x1.001d955d8a436p344 ++0x1.c6b2115b84675p319 ++0x1.650441a7059bdp554 ++0x1.3a49216bbe75ep0 ++0x1.fdd3c3404c763p750 ++0x1.0b97d555f912cp1 ++0x1.95c32605e6c59p20 ++0x1.6acfa746531b2p0 ++0x1.13f4d3bbd6417p8 ++0x1.ac31b628eaa2cp0 ++0x1.4293b3d3169d2p8 ++0x1.6e8a94f758a02p802 ++0x1.701604374d526p0 ++0x1.bec162f84a16cp13 ++0x1.2015764e98ea6p481 ++0x1.b9d12441e91a7p11 ++0x1.55a4c648ebcc2p378 ++0x1.65b6e4f33cc66p0 ++0x1.b12c01289b0c4p15 ++0x1.ce91f580c5091p228 ++0x1.719ec056f57fep1 ++0x1.0b2c87979b28cp23 ++0x1.218c0592aa7fcp95 ++0x1.ec1e878f29cf8p97 ++0x1.adc8d213f43b1p0 ++0x1.e788f6152fe51p0 ++0x1.a026b0485c0e8p12 ++0x1.f181e3ec38f77p3 ++0x1.dafd9764a705fp13 ++0x1.a292f29dfe6c4p0 ++0x1.661d765a50087p13 ++0x1.f619932e8e376p1010 ++0x1.4a1600b2e95dbp880 ++0x1.f5b95104bb64dp320 ++0x1.a7a935f93958ap22 ++0x1.5fe3a6a58526dp20 +diff -urN glibc-2.17-c758a686/benchtests/acos-inputs glibc-2.17-c758a686/benchtests/acos-inputs +--- glibc-2.17-c758a686/benchtests/acos-inputs 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.17-c758a686/benchtests/acos-inputs 2015-06-20 21:22:16.295458166 -0400 +@@ -0,0 +1,2712 @@ ++## args: double ++## ret: double ++## includes: math.h ++0x1.e9ba80c1b0cc6p-1 ++0x1.0c06540e252bdp-3 ++0x1.eda8e7c0a34bfp-1 ++-0x1.fe8e777376d24p-1 ++0x1.cb1673c92f0c9p-1 ++0x1.e9ec316d0de94p-1 ++0x1.7307e45a9bfb6p-5 ++0x1.c16b847c92f30p-3 ++0x1.cf0d270e371f6p-1 ++0x1.129af5729ef19p-1 ++0x1.bce5d0689ab4ep-1 ++0x1.2952217220937p-1 ++0x1.1c76822aee340p-1 ++0x1.e24a2187c1a7ap-1 ++0x1.f952508426fa4p-1 ++-0x1.e800444223cecp-1 ++0x1.edbc56657e3b4p-1 ++0x1.5bcc935e4afc7p-1 ++-0x1.e008619377db7p-1 ++0x1.e7ca21e5cb233p-1 ++0x1.c426411a0bd0ep-1 ++-0x1.54b193e5a6106p-1 ++0x1.ef45d30d3aaeap-1 ++-0x1.0a7fa1bbcb68ep-18 ++0x1.7b4f05763d852p-1 ++0x1.dbc0233bcbacdp-1 ++-0x1.f9ecd08896017p-1 ++0x1.933a30bb5aecbp-1 ++0x1.d87450bf54160p-2 ++0x1.e74342dc955f8p-1 ++0x1.e46ab59e4b1eep-1 ++0x1.fde01341b468cp-1 ++-0x1.989e4472a3f0cp-1 ++0x1.e098a4166e777p-1 ++0x1.566335c979611p-1 ++0x1.596d3268f925ap-1 ++0x1.219017042f1fep-1 ++0x1.ecc867fb960bfp-1 ++0x1.b60655bef4f13p-3 ++0x1.f4a57127c7a0cp-1 ++-0x1.f62ee5fe0cadfp-1 ++0x1.3cd7211d9ad3dp-1 ++0x1.9df0943df0ed7p-1 ++0x1.ea161524e7d47p-1 ++0x1.e55a50493b1a9p-1 ++0x1.ec8561690ba28p-1 ++0x1.f16282757d76ap-1 ++0x1.51e1f7c96d12bp-1 ++-0x1.9e34b40c77bdbp-1 ++0x1.1703345163fc4p-1 ++0x1.4bc66758655fap-1 ++0x1.b153d53781d7dp-1 ++-0x1.f9ad04c73d758p-6 ++0x1.ee83a64fcc712p-1 ++-0x1.26b3228cfdb15p-1 ++0x1.a2c1325da062fp-1 ++0x1.eacf918428269p-1 ++0x1.210c161c12427p-1 ++0x1.8f4653c521ef3p-1 ++-0x1.3d666235ebc4dp-1 ++0x1.fbf321159facbp-1 ++0x1.fb0ae69837b58p-1 ++0x1.e7add59a28c21p-1 ++-0x1.b3931490e5c15p-22 ++-0x1.62bb903865b73p-7 ++0x1.d8d4c3d683cd2p-1 ++-0x1.f414e43e31308p-1 ++0x1.e85ef4b7677afp-1 ++0x1.8e5c2284c58ebp-1 ++0x1.350fc6069df8ap-1 ++0x1.b156a051f0bd8p-1 ++-0x1.cd2350b2a476cp-3 ++0x1.f2cd66a92c33ap-1 ++-0x1.e9d4a5abc7463p-1 ++0x1.edf3474fdf1bfp-1 ++0x1.ded3e00b45be7p-1 ++0x1.ecca5018f3375p-1 ++-0x1.f784a20ae007ep-1 ++0x1.79cd244068e29p-3 ++0x1.0520d4698e9c4p-1 ++0x1.df7633193349fp-1 ++0x1.eeacc7895ee01p-1 ++-0x1.cbddd66bebde8p-1 ++0x1.eaaab5eed4d48p-1 ++-0x1.b786c6d51b98dp-1 ++-0x1.61c366c7c79fap-3 ++0x1.f6f55566f3c9dp-1 ++-0x1.8455d26a48743p-1 ++-0x1.f027619f4ec1cp-1 ++0x1.4de6d77cd7b97p-2 ++-0x1.2d45e43d1b629p-1 ++0x1.dd061720e456ap-1 ++0x1.3bfb31bd7ed4ep-3 ++0x1.f35563c6fc9e1p-1 ++-0x1.da4995d5cee72p-1 ++0x1.a96983d9102b9p-1 ++0x1.e004440ae8f05p-1 ++0x1.e53b304fb4d06p-3 ++-0x1.f03185a1019d1p-1 ++0x1.8676b01d07ce0p-1 ++0x1.ea1916d533f0dp-1 ++0x1.03a04519c4e1fp-1 ++-0x1.e8ac5756ef915p-1 ++0x1.4d6bf1a203446p-4 ++0x1.d981a70cd845bp-1 ++0x1.1c125719eaaf8p-3 ++0x1.e85fb3990f27ap-1 ++0x1.e8e035a26d083p-1 ++0x1.cbfe848a09c42p-3 ++-0x1.e06e527c5ae19p-14 ++-0x1.bbd103472cef1p-25 ++-0x1.feed81508a469p-1 ++-0x1.dab671cd03097p-2 ++0x1.ea30578b17269p-1 ++0x1.6d0684ce3aa60p-8 ++0x1.66d50185eedb5p-2 ++0x1.e74243adbcc15p-1 ++-0x1.f64db1b1939aap-1 ++-0x1.ebd6465bc4b63p-1 ++0x1.e006e50dea620p-3 ++-0x1.c2fcf77c4861dp-1 ++-0x1.e632b5939513cp-1 ++-0x1.9ab8b4c3cb0b4p-1 ++-0x1.3a3bc41b1b0fcp-2 ++0x1.3372c7d8d3206p-25 ++-0x1.fd74373268dbbp-1 ++0x1.f4e100915be05p-1 ++0x1.9bc0232dfa0efp-1 ++-0x1.cc03e1478de39p-4 ++0x1.e93d0775eb299p-1 ++-0x1.a2bb4749faabep-3 ++-0x1.f052a40d8e48bp-1 ++0x1.c07334b1aac33p-26 ++-0x1.13463673ea539p-3 ++0x1.d66e5598d3262p-25 ++0x1.0dae423f0189ep-2 ++0x1.df1a0195dfca4p-1 ++-0x1.598e9260d11fdp-1 ++0x1.67c773c2070cep-1 ++-0x1.ed1f510c9ce11p-1 ++0x1.dae297d5d3bafp-2 ++-0x1.39af35b44da1fp-2 ++-0x1.c679d76fc2b15p-3 ++0x1.88f507621e546p-2 ++0x1.f702c7007d0f8p-1 ++0x1.f2ef13107c805p-1 ++0x1.e4bcf61e9db8ep-1 ++0x1.3bbb12f88beeap-1 ++-0x1.fdb1502db4889p-1 ++0x1.3318578e20bc0p-1 ++0x1.e9de7563a7493p-1 ++0x1.6188f44707072p-1 ++0x1.f8903254e120cp-1 ++-0x1.f38db4b985d52p-1 ++-0x1.cbccf0e19cc7fp-3 ++-0x1.be12773f273cdp-10 ++-0x1.2b3e149bb0426p-2 ++0x1.ad69976c033a1p-1 ++0x1.edd13194f87aep-1 ++-0x1.18a974fd7bbebp-1 ++0x1.9f1fc231a2241p-1 ++0x1.10e56678c706ap-25 ++-0x1.da0f94397e1efp-1 ++-0x1.76c026d8ec2b4p-1 ++0x1.0a089692fa9d6p-1 ++-0x1.da1ff0b273cd7p-3 ++-0x1.f97015d611b73p-1 ++0x1.dbe9c72d38923p-1 ++0x1.bad6c26512dbcp-1 ++-0x1.fb6fb5159af3ep-1 ++-0x1.9198b69ff20eep-3 ++-0x1.fe0c97242979ap-1 ++0x1.2287403404baep-1 ++-0x1.f3f5449170a5dp-1 ++0x1.f3a6840c57d33p-1 ++-0x1.03c0045400546p-1 ++0x1.f838e0db37795p-1 ++-0x1.7accc66f1a867p-1 ++0x1.e82562eb8444fp-1 ++0x1.df27b76e86704p-1 ++0x1.f4da573b55ec2p-1 ++0x1.efe5a6e5fbe8bp-1 ++0x1.0659847830f85p-1 ++0x1.e32184673d6a3p-1 ++-0x1.fea5968e2edf9p-1 ++0x1.466c21bdb53d6p-1 ++0x1.e7078679d9affp-1 ++0x1.befbe4ecbe8cbp-1 ++-0x1.e2d534c706c26p-18 ++0x1.32616231a62c1p-26 ++0x1.54edc38ae367fp-1 ++-0x1.3007019386da4p-5 ++-0x1.a336f67af7129p-1 ++-0x1.8c2257c536d60p-2 ++-0x1.84d896f47ecd4p-1 ++0x1.977af609a6d12p-18 ++0x1.e932a72cac166p-2 ++0x1.2945179c842bap-1 ++0x1.4a5182138dbd3p-3 ++0x1.dbe2458d35539p-1 ++0x1.1f1092dd29f91p-1 ++0x1.dc693710eb9b2p-1 ++0x1.ecb8b2274a503p-1 ++0x1.412eb424708fap-1 ++0x1.93ca610ea7b0cp-1 ++0x1.563fa238b86bfp-3 ++0x1.6cc3c369c6079p-1 ++0x1.f783b429dc0f3p-1 ++0x1.9b875417727f6p-1 ++-0x1.a03c44361af74p-1 ++0x1.f577461815545p-1 ++-0x1.1b83d2880ad3bp-1 ++-0x1.2850a5ece60c7p-22 ++0x1.03ce907b337a2p-7 ++0x1.e13907a8a623bp-1 ++0x1.ea3a84b97d192p-1 ++-0x1.a41072eb8d471p-1 ++0x1.eb4c15b45d01ep-1 ++-0x1.101d32f8c74c8p-1 ++0x1.0193b3f4d9074p-3 ++-0x1.537154d5f6ae7p-3 ++0x1.bfaf90a91ac01p-1 ++-0x1.0c10917ddebb8p-1 ++-0x1.8eadf732729dcp-21 ++0x1.e86b603c02c7fp-1 ++-0x1.e1d732a3d845ep-1 ++0x1.f11cd0a6f6f03p-13 ++0x1.8d26805424934p-3 ++0x1.f145109d6bdccp-1 ++0x1.c543a6761e121p-1 ++-0x1.c25a322cf34eap-2 ++-0x1.865940819f5fcp-1 ++0x1.dc04807986da6p-1 ++0x1.ed429667932c9p-1 ++-0x1.76fd636ed6498p-2 ++-0x1.e53ac26588b25p-1 ++-0x1.8f5d4684f487ap-1 ++0x1.e09a34d1ff29bp-1 ++-0x1.fa9d102a95505p-1 ++0x1.1b05e56138440p-3 ++0x1.1bc9a7f1d79eap-3 ++-0x1.6811368ab0abbp-1 ++0x1.ed98e0214a336p-1 ++0x1.e7e686da575a0p-1 ++-0x1.965f75ff798a9p-1 ++0x1.80eaa23a91ec2p-1 ++-0x1.d36fb043f6300p-5 ++0x1.7018a38a05ffdp-2 ++0x1.fae070244fb19p-1 ++0x1.d0dd401b30198p-1 ++0x1.42f142dadfa1dp-1 ++0x1.ec68818823d1dp-1 ++0x1.85f3e7bec93a0p-1 ++0x1.af29d1ff6c1dap-2 ++0x1.35c4a6805cca0p-1 ++0x1.df0b063501081p-1 ++0x1.5bcd000b70207p-2 ++0x1.a24de48ee748dp-1 ++-0x1.6a318265b0ce0p-1 ++0x1.c534f40a7def8p-3 ++-0x1.9f4e543169174p-1 ++0x1.f2de70648aed5p-1 ++0x1.fe8ab52a90cb0p-1 ++-0x1.f680253c19250p-1 ++-0x1.fc63569b7f833p-1 ++-0x1.6b2935d76744bp-1 ++0x1.ea5f006b8edcep-1 ++-0x1.5342e394b5397p-1 ++0x1.ec4706c41bd83p-16 ++-0x1.b7a5b13013786p-3 ++0x1.efc8b1d13cab4p-1 ++0x1.f524140aa4f9fp-1 ++-0x1.8d59b2246d1b5p-2 ++-0x1.e10a8025fd5c2p-1 ++0x1.ffe555d68b776p-1 ++0x1.5ccb0133fca6ep-2 ++0x1.47b60350a0542p-1 ++0x1.f3d4414a57242p-1 ++-0x1.4c94d139f13e8p-1 ++-0x1.f598238e275f3p-1 ++0x1.818fb41d76b85p-1 ++-0x1.fa14d2d9c0775p-11 ++0x1.f16ec2400aebap-1 ++-0x1.eac587507894dp-1 ++0x1.f20e64bfc7419p-1 ++-0x1.85ce9765938ccp-3 ++0x1.92bff695a5d90p-1 ++-0x1.8d0a2047280efp-2 ++-0x1.2559e3d4e777dp-22 ++0x1.e8390104997a7p-1 ++0x1.e99044f21a5c8p-1 ++-0x1.ea12258aac145p-1 ++0x1.f68a246001b3cp-1 ++0x1.db5b870d933e5p-1 ++0x1.a140f339c5bdep-20 ++0x1.8193402b5c8ecp-1 ++-0x1.04d5676a38199p-12 ++0x1.a455655209ff8p-1 ++-0x1.e63ba4f3d8c3ep-1 ++-0x1.6a28d15928650p-1 ++-0x1.64b6d0a25c33dp-9 ++0x1.46915799cfaccp-1 ++-0x1.fbd157a2c23b1p-3 ++0x1.ffa3663aba6d5p-1 ++0x1.411d129126d0dp-1 ++0x1.7063d30f52d4dp-1 ++0x1.8201c2f453059p-1 ++-0x1.f27a071cddd3bp-15 ++0x1.7aca32522bbf5p-6 ++0x1.c9846775a72c1p-3 ++0x1.6d082285276a9p-15 ++0x1.c6a6b4f8f837ep-24 ++0x1.ee27e42a2b26bp-1 ++0x1.e191c47dea938p-1 ++0x1.44b0e7864ee92p-2 ++0x1.9c4882b7b62cap-1 ++0x1.20b6f0f17af05p-3 ++0x1.0301e36c00af6p-1 ++0x1.dfe705d59ecb0p-1 ++-0x1.dbead5cf594d7p-1 ++0x1.f12b06bbb4e7bp-3 ++0x1.efe8c7612f386p-1 ++-0x1.eb9e2463b8a3ap-1 ++-0x1.faf13348b1a37p-1 ++0x1.cd50167950c5ep-1 ++0x1.dba5c79d7a05ep-1 ++-0x1.a334d05fa6dd2p-1 ++0x1.8cb1a630bb9c2p-1 ++-0x1.9681e2cf54b70p-1 ++0x1.39aca667fcf3fp-1 ++-0x1.e8bd029d083e4p-2 ++-0x1.50e857e4f8090p-1 ++0x1.dc16134a07952p-1 ++0x1.2c4bb22847712p-1 ++0x1.e7b0645e8a0abp-9 ++-0x1.8fc066ee56befp-11 ++0x1.edbf80f8c492cp-1 ++0x1.e3d6a1c24d10cp-1 ++-0x1.fbd4f63a7219dp-1 ++0x1.f6fd10b1bdf09p-3 ++-0x1.6530f1b557057p-1 ++0x1.b88262a6e1331p-1 ++-0x1.eb0e3015adc06p-1 ++-0x1.26cfc26e19c43p-3 ++0x1.59bc70a355e7fp-2 ++0x1.5fee801ec378cp-1 ++0x1.154984a08fb2ap-1 ++-0x1.75a356a8a9292p-5 ++0x1.ea9314dc90613p-1 ++0x1.ea2107288cf84p-1 ++-0x1.ebe7414198207p-1 ++0x1.65aee12e3ceffp-1 ++-0x1.51ba6636b9f2fp-15 ++-0x1.c626d4507f69ap-1 ++-0x1.e2e3f55bb23a1p-1 ++0x1.98b000eb73a71p-1 ++0x1.43af03a6b9b8dp-3 ++-0x1.7f2ab3a80ac43p-1 ++0x1.d9d2a5d6d0097p-1 ++0x1.e3f984fc9c133p-1 ++-0x1.afeb916e3177fp-21 ++0x1.4e04b4277b006p-1 ++0x1.efe0107fb5684p-1 ++-0x1.4515b4c2b21dap-1 ++0x1.11a6b0c515920p-1 ++0x1.6164a6618d12ep-21 ++0x1.dae745520e0c5p-1 ++-0x1.dd2d72e85c929p-1 ++0x1.6d9ef5d5611fbp-1 ++-0x1.f0f797fed0a55p-1 ++0x1.2eab0154ef308p-1 ++0x1.ed1fd3af0b556p-1 ++-0x1.e71b754c98246p-2 ++-0x1.2590214dd2a24p-3 ++0x1.fdd1961109848p-1 ++0x1.7eb1071ff2770p-1 ++-0x1.15bd45916de1ep-2 ++-0x1.44d715ad68f89p-1 ++-0x1.7641422787614p-1 ++0x1.eefe328d3d881p-1 ++-0x1.eca8704b551c7p-1 ++0x1.2ee67226d5529p-1 ++0x1.e8ac53c1395d3p-1 ++-0x1.64646108e67cbp-1 ++0x1.db91c36140425p-1 ++0x1.4605c5134237bp-1 ++0x1.f903e462cc94dp-1 ++-0x1.73f4c75c9d5f2p-1 ++-0x1.dac8a6d776479p-1 ++-0x1.2b4492bd73b64p-15 ++-0x1.373103fbf2dbbp-26 ++0x1.851581e8ee5f8p-8 ++0x1.ebca3047b32cfp-1 ++-0x1.07c16329a6368p-1 ++0x1.fccc50d54ff1fp-1 ++0x1.fe9de2486d607p-1 ++0x1.ef48b46c9b643p-1 ++0x1.e8ef618c8024bp-1 ++0x1.993fe684e622bp-1 ++0x1.460b45e598a8cp-12 ++-0x1.d9e786749e8b9p-3 ++-0x1.559071a09ac62p-1 ++0x1.ef7432ff2df38p-1 ++0x1.e45a36a5fb72fp-3 ++0x1.b3d5275cfb554p-1 ++-0x1.98e8e522e4a82p-23 ++-0x1.02aed44057b67p-2 ++0x1.2197f1f7c6e26p-1 ++0x1.0837b5e1cec38p-1 ++-0x1.ca8a4237c9e0cp-17 ++0x1.6006c4b0268aap-1 ++-0x1.7208a0ee99588p-18 ++0x1.b4b1e471a5f5fp-26 ++0x1.8fe1f13a9702cp-1 ++0x1.f02b227033d9ap-1 ++0x1.d97ec10440781p-1 ++0x1.f76fb1e91d5b2p-1 ++0x1.deb247936f19fp-1 ++0x1.8af0f66d4b0dcp-12 ++-0x1.b64be0350cfd6p-1 ++-0x1.f932f26d539d5p-1 ++0x1.e82a219e74d13p-1 ++-0x1.7e09139513a33p-26 ++0x1.18f8069a74b77p-1 ++0x1.dc6726bfa7475p-1 ++0x1.08c813e4436a5p-2 ++-0x1.d8320749306c8p-16 ++0x1.9472944ec390dp-1 ++-0x1.a99987154cea1p-1 ++0x1.c882368b557a4p-1 ++-0x1.1aa794570d691p-3 ++0x1.5c77249e4aea0p-1 ++0x1.eb9813be6a2b6p-1 ++0x1.f431a44ef4d40p-1 ++0x1.eea5d7d2221dap-1 ++0x1.2c6291d7f2ad7p-2 ++0x1.ac443697d70fdp-1 ++0x1.e20ca7c2912a5p-1 ++0x1.7ab1d7104d182p-18 ++0x1.339513d5d0ee8p-1 ++0x1.f589b5ee62b16p-1 ++-0x1.fad8f2a47e9f4p-1 ++-0x1.1dd663fac6b4fp-1 ++-0x1.0f9652222f8e9p-1 ++0x1.f35714209b7bdp-1 ++0x1.6834569b7a1fap-1 ++0x1.00dd565cc9ccfp-15 ++0x1.65da25ab2220cp-1 ++0x1.d84fa7357d48fp-1 ++-0x1.c51a11571e3e9p-1 ++0x1.f381b3df02583p-1 ++0x1.fbf8c33676a44p-1 ++0x1.82bc413c6aff0p-1 ++0x1.0dca9008fbcebp-2 ++0x1.235506540c7b9p-1 ++-0x1.3e3c739c48dc4p-1 ++-0x1.f73153b059fbap-1 ++0x1.cc56d349d03bap-2 ++-0x1.53099013f8190p-2 ++0x1.e53de61c37f3ap-1 ++0x1.a6a246bf1a535p-22 ++0x1.91d3b66fca3a2p-1 ++0x1.0f5d16ce3edabp-12 ++-0x1.9a7b92e12b5f7p-1 ++-0x1.76ca124cf6f47p-3 ++-0x1.c41b9411e2424p-1 ++-0x1.34c885f2eb328p-1 ++0x1.ec1e45f6f7b9dp-1 ++0x1.0a4775720ed55p-1 ++-0x1.31efb599b0c90p-1 ++0x1.edbe60062d7a3p-1 ++0x1.2319304ed36b5p-1 ++-0x1.cb6aa416f444fp-4 ++0x1.504f676650b1ep-1 ++0x1.3d1aa4401c058p-3 ++-0x1.f60c37def0ad1p-1 ++0x1.f9792648513f5p-1 ++0x1.94a7e574d0288p-1 ++0x1.94f7926ce6fbcp-18 ++-0x1.f6fad097104e4p-1 ++0x1.3088005339ad3p-1 ++0x1.f03355e0191c2p-1 ++0x1.dcd3d17610280p-1 ++0x1.e05d2667abb1fp-1 ++0x1.e82525f9fbf01p-1 ++-0x1.de3ca0ef987b7p-1 ++0x1.f59943ba80acep-1 ++-0x1.e960c36a66790p-1 ++0x1.9d26903f5cd50p-10 ++-0x1.89bec5921086fp-1 ++-0x1.f4e8b5ec98f6cp-20 ++-0x1.711982a677be4p-3 ++0x1.f46112d3fe843p-1 ++0x1.083e13f8fffefp-1 ++-0x1.baf382671db8ap-1 ++0x1.e0d881ff65497p-1 ++-0x1.45bc320aa4dfep-2 ++0x1.40e3e60b110dcp-1 ++-0x1.f4e3046089560p-1 ++-0x1.ea56c46279081p-1 ++0x1.e9e48261cb26ep-1 ++0x1.4d48f2887cd66p-2 ++0x1.e51d745ef2138p-1 ++0x1.ae3d476739166p-1 ++-0x1.3b19c402e1ab5p-1 ++0x1.93db32ee991c6p-1 ++0x1.159cd3c2eac06p-2 ++0x1.f2196713b8de3p-3 ++0x1.c3c4d2e87e40cp-5 ++0x1.546b31afe7b81p-3 ++0x1.1cd7423631f45p-23 ++-0x1.f98921eb79da8p-1 ++0x1.da4473bb667adp-1 ++0x1.f6d1c21979168p-1 ++-0x1.f83452138ebc1p-1 ++-0x1.77e2149e4a15bp-1 ++-0x1.e374023473851p-1 ++0x1.6135557835b0ep-1 ++0x1.116497cc82db6p-1 ++-0x1.d604e43246f1ap-1 ++0x1.e03ba16e3b2d0p-1 ++-0x1.fbcc51c3d0adap-1 ++-0x1.230833754cbadp-1 ++-0x1.e859b3f551706p-1 ++0x1.8ed6352b2279fp-1 ++0x1.e833c05936a7ep-1 ++-0x1.f45f124fb19f4p-1 ++-0x1.bcc7e5fa33d67p-1 ++0x1.cb5bf39c4168fp-1 ++0x1.d913109c549a2p-6 ++-0x1.5df3a69b09a81p-3 ++0x1.e92f739ce65adp-1 ++0x1.eddff4fa793e3p-1 ++0x1.fd0d826c5a1d9p-1 ++0x1.f01142b6404c5p-2 ++0x1.ed3e7235fb716p-1 ++-0x1.3f08a31b67052p-6 ++0x1.6c6bd2dd525cdp-1 ++0x1.e42d42ade6dd4p-2 ++-0x1.7c4f407d91487p-8 ++-0x1.1441528bd2bc9p-8 ++0x1.e5db61dfac951p-1 ++-0x1.cf52b5c3c6b19p-1 ++0x1.e83f57fd71bfcp-1 ++0x1.ae8f91695d74cp-1 ++0x1.545021fa9de9cp-1 ++-0x1.45c9266ea4970p-1 ++0x1.eafea77c551aep-1 ++0x1.eba4171524f40p-1 ++-0x1.425187f18c762p-18 ++-0x1.485fe6e78b76fp-1 ++-0x1.db6f1755478ccp-1 ++0x1.f8e25686998acp-1 ++0x1.ccbba7e740751p-1 ++0x1.7816a0d6522cep-1 ++-0x1.0cad003c37274p-22 ++-0x1.4249d37181745p-3 ++-0x1.1aea32c571f90p-2 ++0x1.eff2c75d80ec9p-1 ++0x1.dedbb5aa065c5p-1 ++0x1.022c15ed03102p-2 ++0x1.e28cc0a25217ep-1 ++-0x1.e75507711de7bp-1 ++0x1.6994d6b07313bp-1 ++-0x1.93938552d7672p-3 ++0x1.e9f062935639ep-1 ++0x1.efc9111829a30p-1 ++0x1.e82d352bd52d4p-1 ++0x1.8aefc30a2949bp-1 ++0x1.e829e785fe6bcp-1 ++0x1.906de67167cd7p-1 ++0x1.3cf7801ab3ddcp-1 ++-0x1.d674412d314f7p-1 ++0x1.b8f3652b4e782p-8 ++0x1.0797f77b05b64p-1 ++0x1.fa845330ec5ebp-1 ++-0x1.513a3093d637fp-1 ++-0x1.a0ae922b44732p-1 ++0x1.eb5b41b522564p-1 ++0x1.e9e54719a6384p-1 ++0x1.dc6a025cdf557p-1 ++0x1.8e2720ee32c68p-1 ++-0x1.08a965eef1feep-1 ++-0x1.fa6306dd46e3fp-1 ++0x1.155615f73dc49p-1 ++-0x1.ad5ce2c9a061dp-2 ++0x1.3a6b650c8bc49p-1 ++0x1.1d1f86d1e1e30p-1 ++0x1.cc1b051550465p-1 ++-0x1.eb9871c6f4d8dp-11 ++-0x1.9da0d78b9cbe4p-2 ++0x1.e6cb460ebeeebp-1 ++-0x1.ebcbb7d352b98p-1 ++0x1.f10602c31c4ffp-1 ++0x1.f83d00511f1a6p-1 ++0x1.e70ef18e894dcp-1 ++0x1.f42747759511dp-1 ++-0x1.e210555e48210p-1 ++0x1.e8be424104e58p-1 ++0x1.e269c29bcef60p-1 ++0x1.f85ef0fd21f0bp-1 ++0x1.937141f2672e0p-1 ++0x1.38ec61bd517ccp-1 ++-0x1.d6e9722dc24fcp-1 ++0x1.f8d1b326b2ed1p-1 ++0x1.d86da58fba185p-1 ++0x1.65efb1356114ap-3 ++0x1.f72791c9cf436p-1 ++0x1.0ae4753a5c894p-13 ++0x1.f7415347bb40bp-1 ++0x1.dc65a4f6e740cp-1 ++0x1.d88607a3797e0p-1 ++0x1.eed61776e402fp-1 ++0x1.ee0df44fb77d0p-1 ++-0x1.f450159e992b8p-1 ++0x1.e29cb14cdbcd0p-1 ++0x1.f653a3375d51dp-1 ++-0x1.f57f5552ab569p-1 ++0x1.6480d3d0c5efep-20 ++0x1.38e266cf4e67bp-23 ++0x1.d51cd22b5b6cap-1 ++0x1.dc3de7d2fc8d2p-1 ++-0x1.312a5566cde3fp-1 ++-0x1.fab1d3aa238acp-1 ++-0x1.95bac47704824p-3 ++-0x1.891b43164f852p-2 ++-0x1.80e9f033f4793p-2 ++0x1.df255385153fbp-1 ++0x1.de67748161291p-1 ++-0x1.777e66869b5a2p-2 ++0x1.95b610da4b767p-1 ++-0x1.0eaeb02390875p-24 ++0x1.ed4d9348c4329p-1 ++-0x1.96df34af5a088p-21 ++0x1.f2d162c70d8b5p-1 ++-0x1.deb665e66d761p-1 ++-0x1.0f044763f2eaap-3 ++-0x1.9c3784de626cbp-3 ++0x1.ad40b341217cep-1 ++0x1.a3d8456656f09p-1 ++-0x1.30688704ba934p-13 ++-0x1.f3cf5294a6a88p-1 ++0x1.e906911183a95p-1 ++0x1.d875b2a4cfad9p-1 ++0x1.e9ecd5820a5eap-1 ++-0x1.948a52ed5c31bp-5 ++0x1.f9c6e1a503f35p-1 ++-0x1.ec4f82e92c41cp-1 ++-0x1.2ee365574b66ap-6 ++-0x1.cf7594c4759eep-19 ++-0x1.a0d5f18128988p-2 ++-0x1.806c918e71aeep-1 ++0x1.df5d715846162p-1 ++0x1.f67f859e5cfe0p-1 ++0x1.ecc2b558d729fp-1 ++0x1.ff9fd0805bf30p-2 ++0x1.432fe2eead4f4p-1 ++-0x1.8366e3d1a2b7cp-1 ++0x1.e3f070eec2596p-1 ++0x1.30ba2715f8514p-1 ++0x1.e977633ddb6c8p-1 ++0x1.ecfff5d1ed4fcp-1 ++0x1.6e88143883032p-1 ++-0x1.e95fa37e7e7bbp-1 ++-0x1.b83c53c09f546p-1 ++0x1.517d53ed1b833p-1 ++0x1.db8f51d5f71aep-1 ++-0x1.1678154436606p-2 ++-0x1.fc21417ad3694p-1 ++0x1.1c843518d2e94p-25 ++0x1.e8eee13ebc573p-1 ++0x1.fee6721632c37p-23 ++-0x1.f6a87247c9154p-1 ++0x1.fe6af4fb98692p-1 ++0x1.e7c390a9bbc3dp-2 ++-0x1.e0f877f179d56p-1 ++0x1.d96bf428df776p-1 ++0x1.fc1c23962674cp-1 ++0x1.b198a6962238ep-1 ++0x1.033e6517daa6fp-5 ++-0x1.2d2db09cc6e86p-21 ++-0x1.1ed1f46145a42p-1 ++-0x1.aceee1f163bb0p-1 ++0x1.e775b65834bfap-1 ++0x1.b59893a929786p-1 ++-0x1.0e4bb0b067b5bp-1 ++-0x1.ff1285390535cp-1 ++-0x1.f8d0963809a50p-1 ++-0x1.e5a865ab089bcp-1 ++0x1.c6d112328b280p-1 ++0x1.f013574be1027p-1 ++-0x1.e0a691caa2943p-1 ++0x1.2506d6a72e424p-15 ++0x1.0e385386801e9p-1 ++-0x1.2c8ac0b1cee68p-6 ++-0x1.e44cf154f7837p-3 ++-0x1.9c7c24975ad82p-1 ++0x1.0d8d44f6a38b9p-1 ++-0x1.fb5c33ee7ffa5p-2 ++0x1.4ce97693eab63p-1 ++0x1.2d57b32c61adep-1 ++-0x1.ddc8c1bd6b2f6p-1 ++-0x1.60a8174ee182cp-2 ++-0x1.fe3ab0326a9ebp-1 ++0x1.c99672ad8233dp-1 ++-0x1.a05f0442a1f89p-11 ++0x1.f4efa58696ba2p-1 ++0x1.e8f0874ac9593p-1 ++0x1.697a477d1fbd3p-2 ++0x1.66b7a3a5f4bbcp-2 ++0x1.ec3a1130d87e6p-1 ++-0x1.5faae7d3bcf38p-1 ++0x1.be54761e95348p-1 ++0x1.d053b71612732p-1 ++0x1.f13a35b68c59ap-1 ++-0x1.ffd2875be2cf2p-1 ++0x1.e62df4c494b61p-1 ++-0x1.3471231cca442p-6 ++-0x1.a7b9e784d9434p-16 ++0x1.ece3f29820bdfp-1 ++0x1.ef6b47f54b2d8p-1 ++-0x1.df2c8655fc70dp-1 ++0x1.eda0969bec905p-1 ++0x1.488f14cfb8987p-1 ++0x1.feb910bbdd186p-1 ++-0x1.ed55067dcc2e0p-2 ++0x1.dee9b5b493f34p-1 ++0x1.37f0201120141p-2 ++0x1.bcf1c52c54526p-1 ++0x1.e2e2e4afd49aep-1 ++-0x1.a828f2fd070e9p-1 ++0x1.0995c67dde325p-2 ++-0x1.b9cee2442f243p-11 ++0x1.b5ffd6affbe68p-1 ++-0x1.898db08ff9e7ep-3 ++-0x1.eea7123455743p-1 ++0x1.e22364d8d2ffbp-25 ++0x1.9bc512637b567p-1 ++0x1.908f41ab382c6p-1 ++0x1.daa6242404908p-3 ++0x1.354d96ce0c1f1p-3 ++0x1.e4909407d6b04p-1 ++-0x1.ae60e50c81658p-1 ++0x1.d83d9616cffd1p-1 ++0x1.68d57679fbad0p-1 ++0x1.ee2a61e036810p-1 ++0x1.ff2523154e342p-1 ++0x1.e80a234204ccep-1 ++0x1.ee12e03c07731p-3 ++-0x1.f53bb6a0244b9p-1 ++0x1.a7d1d4d25fc9bp-15 ++-0x1.0d5e226bae52dp-3 ++-0x1.f7553430f26b9p-1 ++0x1.561a2200e4797p-1 ++0x1.dda171643a8f8p-3 ++-0x1.e9a0822672116p-1 ++0x1.9c8ad39c801dep-1 ++0x1.50fe36a2e907bp-1 ++-0x1.f5cb55c5f89b0p-1 ++0x1.e55b90ffc4db3p-1 ++-0x1.f580e64339dfbp-1 ++-0x1.c786d16c31b03p-1 ++0x1.ab3d818097c47p-1 ++0x1.f628956df2bddp-1 ++0x1.3c1983a14fe08p-1 ++0x1.ea6977319eac4p-26 ++-0x1.a2b2a3cf330a0p-2 ++0x1.e06d66507bd76p-1 ++0x1.ed4aa34d83d9dp-1 ++0x1.adbf4089e4bf0p-1 ++0x1.169462af69653p-1 ++0x1.7cdae69e34be4p-23 ++-0x1.f476a5d67b80dp-3 ++0x1.e4f9a4e8edcabp-1 ++0x1.fcb451b72ca3ap-1 ++0x1.bbee334a41744p-2 ++-0x1.e669334dbdbb2p-1 ++0x1.e1ef409647a27p-3 ++0x1.e2f3d0f200912p-1 ++-0x1.0ee0376cb5980p-1 ++-0x1.cd90d53a85604p-24 ++0x1.da2ee339cc169p-1 ++-0x1.91bee2eec93ebp-1 ++-0x1.db27252020025p-3 ++-0x1.ac0763a2833a8p-1 ++0x1.ed7de7964d7b7p-1 ++0x1.387816b7132c2p-15 ++0x1.bde1b11fb418ep-14 ++-0x1.f4b0e44a782a9p-1 ++0x1.c85742cc49d4ep-1 ++-0x1.2ae4206794c97p-2 ++0x1.e8ede2eca6ebcp-1 ++0x1.e83ec2bd612adp-1 ++0x1.cec725af1011dp-1 ++-0x1.f3f110dc11f36p-3 ++-0x1.82c441472b814p-1 ++0x1.12aee0aad581cp-1 ++0x1.d843d56f7661dp-1 ++-0x1.0fa9100cde2b7p-1 ++0x1.fbb577823c6b2p-1 ++-0x1.e7e0f30c7c41bp-1 ++0x1.ead455b35dcfcp-1 ++-0x1.af50723be988fp-1 ++-0x1.c6df54f302009p-2 ++-0x1.f69220aac2bb2p-1 ++0x1.db2795c5314edp-1 ++0x1.f0e804039007cp-1 ++0x1.16e3c0bc73e90p-1 ++0x1.56f925b7342efp-2 ++0x1.2b1a40efca711p-1 ++-0x1.c95572af1befbp-1 ++-0x1.ea363656402fcp-1 ++0x1.9fcea6314eb53p-3 ++0x1.c384447b8f44dp-2 ++0x1.d9cb8501968aep-1 ++0x1.d213669b363a3p-1 ++0x1.dbbce7d0130a1p-1 ++0x1.ef1b07c170256p-1 ++0x1.e5d87723e3720p-1 ++-0x1.dc9450089dc1dp-1 ++-0x1.a400e154e4d4ep-22 ++0x1.f0b8639dae8c0p-1 ++-0x1.c0d7a6d0e58c3p-22 ++0x1.ebe277900a6d5p-1 ++0x1.ddc883853f7b1p-1 ++-0x1.f26d718326d24p-1 ++0x1.b444f4ecea2d4p-1 ++0x1.db5285f43880ap-1 ++0x1.ec2a704fa7ba7p-1 ++0x1.d9d38554f4ae7p-1 ++0x1.40a287e0245c7p-1 ++-0x1.bb5997a01dc09p-1 ++0x1.dbfe825428361p-1 ++0x1.eab9e61d0bb13p-1 ++0x1.dbf8477b40f85p-1 ++0x1.5977a5e9562d5p-2 ++-0x1.6d6582d27a94ep-3 ++0x1.ef98c62116f6bp-1 ++0x1.b195e01c1649fp-1 ++0x1.ed47e34ba7118p-1 ++-0x1.2e1b55053587cp-1 ++0x1.f46e72b797c76p-1 ++0x1.e58d17977d4c7p-1 ++-0x1.78044314faf55p-12 ++0x1.e67de4828d079p-1 ++-0x1.f72481a2b0f3ap-1 ++0x1.ef6de28920541p-1 ++0x1.81a907ff59256p-1 ++0x1.121bf667b781ap-1 ++0x1.e41ba30cd763ap-1 ++0x1.1e76d67046217p-1 ++-0x1.1250820739879p-1 ++-0x1.d15f33646b553p-2 ++0x1.e90c01d074c50p-1 ++-0x1.dc98c564661f8p-2 ++0x1.aab3b79abd652p-22 ++-0x1.12c3e674c7017p-3 ++0x1.207186d6329bap-23 ++-0x1.e9de504c45574p-1 ++-0x1.87494270ac164p-1 ++-0x1.e88cd321ec1dap-1 ++-0x1.9317565e1a195p-19 ++-0x1.350c40dd7d78ep-1 ++0x1.75b8a20113b5ap-3 ++0x1.ae0882e067102p-3 ++-0x1.313bb034e4980p-1 ++0x1.944cd3352094fp-1 ++0x1.e845447d64568p-1 ++0x1.fe614045bdde4p-5 ++0x1.c23a220bff5cfp-5 ++0x1.e4e1454ecf85dp-1 ++-0x1.fcf1e7da10e5ep-1 ++0x1.ee9f80c3fe210p-1 ++-0x1.dae080dc56bf7p-1 ++0x1.f8b43563a02aep-1 ++-0x1.debb0319481e9p-1 ++-0x1.f1d9c2f758defp-1 ++0x1.deb7334be5d7ep-1 ++0x1.e24ac198b2950p-1 ++-0x1.4b4613f445564p-13 ++-0x1.faf37271307aep-1 ++0x1.6a02646fd3199p-1 ++-0x1.e520507f83ff0p-1 ++0x1.974227fac5c71p-1 ++0x1.fe97f4454153cp-1 ++0x1.64cc47f51d1ebp-1 ++0x1.e0aeb2661bc7ep-1 ++0x1.865c7062df26ep-1 ++0x1.2b9d94fd96933p-1 ++0x1.dc43445d9d6c0p-1 ++-0x1.0bcd5161b4780p-1 ++0x1.e8eba118b0a26p-1 ++0x1.c838228508974p-1 ++-0x1.712d5001098d3p-14 ++0x1.eaafe5872fba9p-1 ++0x1.badc0660a7f51p-1 ++0x1.e66ca4a1fdcf4p-1 ++-0x1.ed40630f17ef4p-19 ++-0x1.eab7a154b753bp-1 ++0x1.8610d1e8e6c64p-3 ++-0x1.fd61a56639941p-1 ++0x1.26cb23fb114cep-3 ++-0x1.bf3de5d1277c8p-3 ++0x1.eda2c028553a7p-1 ++0x1.e0be233591f18p-1 ++0x1.fa64112d9b7bdp-1 ++-0x1.f5e2246ae2dd4p-1 ++-0x1.57b0e23b39e09p-1 ++0x1.d97671e65ea90p-1 ++-0x1.e6be223004611p-1 ++0x1.d56357592f5acp-2 ++0x1.6475907a120e3p-1 ++-0x1.f47e6381c6551p-1 ++-0x1.f2b9635cc6607p-1 ++-0x1.5277123e133e3p-1 ++0x1.47e5a403ff975p-15 ++-0x1.3b47975249d03p-1 ++-0x1.2d4395c82f1adp-2 ++0x1.1450373bbdbf4p-1 ++-0x1.f3f605106ccd2p-1 ++0x1.e4fb505afc536p-1 ++-0x1.c45f37ee28f93p-1 ++-0x1.ea50f192e21edp-1 ++0x1.eb0711bcb2188p-1 ++0x1.b7a016b696338p-1 ++0x1.623046e714274p-3 ++0x1.43e5923d7c3c7p-1 ++0x1.2fa122f6646a9p-1 ++0x1.f4f6b5de34b5ep-23 ++0x1.f469264200881p-1 ++0x1.655d872a08e7bp-1 ++-0x1.efbc035d5241cp-1 ++0x1.eecee67cb7c37p-1 ++0x1.ef23215f6de12p-1 ++-0x1.9157d3c02c3b2p-1 ++0x1.c15691eeda91ap-3 ++0x1.f39d271893c42p-1 ++-0x1.e4f743d28a786p-1 ++-0x1.e3439360d1751p-2 ++-0x1.e307d799961afp-1 ++0x1.e25a6469a523ep-1 ++0x1.f220a525222a6p-1 ++-0x1.e47060fdcc071p-1 ++0x1.36f464d433610p-1 ++0x1.d2182142a2d5cp-1 ++0x1.eeae3359ec957p-1 ++0x1.9af5d2ec8ebd9p-1 ++0x1.e11a171b22e03p-1 ++0x1.b610305edff4ep-19 ++0x1.ed7ab363b3447p-1 ++-0x1.e41a54d8498d1p-1 ++0x1.51de25b587b24p-1 ++-0x1.c0e965c3967f1p-24 ++-0x1.c773d52b04af3p-3 ++0x1.d986851c611b7p-1 ++0x1.c82c83eaf14c7p-3 ++0x1.f7cc714398d27p-1 ++0x1.cb56a41743a82p-1 ++-0x1.c101b1037e3f5p-1 ++0x1.70704180d156ap-1 ++0x1.f2d9a4e18b93ep-1 ++-0x1.70f794d622807p-3 ++0x1.ea0c748947c48p-1 ++-0x1.a1436628d7964p-2 ++0x1.e577a48f03d8cp-1 ++0x1.fb333192c3fd8p-1 ++-0x1.849bb070f27dcp-3 ++0x1.ef97766ebf4d8p-1 ++0x1.bba5845fd0c44p-1 ++0x1.cc35e07310ee9p-1 ++0x1.bbf8c7bb9c20fp-1 ++0x1.e52107bcb90ccp-1 ++-0x1.53078258ff064p-6 ++-0x1.1d3673a2a8700p-8 ++0x1.eb3ae6f949eb2p-1 ++-0x1.8a2f305b13ed1p-2 ++-0x1.30fbb21b54296p-12 ++-0x1.448976b9db4f3p-4 ++-0x1.fba6c7b54d231p-1 ++-0x1.1f9010499bc15p-19 ++0x1.bf8d6212e3c0dp-1 ++-0x1.c3658532b752dp-17 ++-0x1.e40de71a02d0dp-1 ++-0x1.c7ef32e8414f7p-3 ++0x1.ecf661eaa759fp-1 ++0x1.5030f4f39c66fp-1 ++-0x1.a724314a500bcp-2 ++0x1.9999d51105133p-1 ++0x1.d9f6e4d727d70p-1 ++0x1.ed1fc550f095ap-1 ++0x1.503b14d81b366p-1 ++0x1.34b7d05a78c28p-1 ++-0x1.2cba67b857796p-1 ++-0x1.d77251ee3df8ap-1 ++0x1.59f032ff510d6p-2 ++0x1.4f88d744710e7p-1 ++0x1.d9e8209b73ea1p-1 ++-0x1.ffb86378c6e93p-1 ++0x1.ea73f543c07f7p-1 ++-0x1.87a6e44eaf473p-14 ++0x1.8db074f7cba71p-1 ++0x1.38b80586e18e2p-5 ++0x1.f8be8469e0f90p-1 ++0x1.821ca4290f63bp-1 ++-0x1.0dd78014ef1a2p-3 ++-0x1.149aa666c3c46p-2 ++0x1.eeb59431123bfp-1 ++-0x1.c253e67cccb47p-23 ++-0x1.1721b193cb808p-1 ++-0x1.f29d328022c9bp-1 ++0x1.dd6ca355705abp-1 ++0x1.d7e5a3e80c978p-1 ++-0x1.ff693303d6a1bp-1 ++-0x1.9792d040f6098p-1 ++0x1.e1bf0284f90b9p-15 ++-0x1.f841c459354cfp-1 ++-0x1.ea326681d6327p-1 ++0x1.ec41879c45965p-1 ++0x1.fa2d97e552ed9p-1 ++0x1.5522431c3f1d5p-1 ++0x1.f52c75ff3d843p-3 ++0x1.df7ff289d597ep-1 ++0x1.89e6d140f4474p-1 ++-0x1.f5e8400a879eep-1 ++0x1.d0ee108472a16p-1 ++0x1.22c9e3d23737bp-2 ++-0x1.f180d30e2ee8fp-1 ++0x1.dc4355da08d39p-1 ++0x1.83cc96505115ep-1 ++0x1.df1a927ae2d49p-1 ++0x1.f7cb87ac643cbp-24 ++-0x1.b5b5e40f69460p-1 ++0x1.b768756962650p-1 ++0x1.385d044ddae6ep-1 ++-0x1.20b4a1a53c3d5p-1 ++0x1.7a97a05587a0dp-1 ++0x1.f298d21034624p-17 ++0x1.0f4422ec03b3ap-1 ++0x1.8c67965cd0051p-1 ++0x1.cee130d0b5a2bp-3 ++0x1.3dc4e295f1f30p-1 ++0x1.808b2220ea364p-1 ++-0x1.fd05a69ce67b4p-22 ++0x1.c6af341fa003ap-1 ++0x1.ecd747e9c09c1p-1 ++-0x1.551e1792426dap-1 ++-0x1.fdc4b78598f6dp-1 ++0x1.e705a3952cb55p-1 ++-0x1.e302b444c2d4ap-1 ++0x1.6079b20e499ddp-1 ++0x1.9deca443255dap-1 ++0x1.6c4eb3d0781b2p-1 ++0x1.ea66d20e1b503p-1 ++0x1.eaed6246abfe5p-1 ++0x1.e9b823bbcfc07p-1 ++-0x1.ce30a300a911ap-3 ++0x1.a87ec3c5f01d2p-2 ++0x1.bb25e46a7f518p-1 ++0x1.edf7166512c36p-1 ++-0x1.efe7a1f38e957p-14 ++0x1.ea9ef4d1cf987p-1 ++0x1.8eba239546037p-13 ++0x1.4e7173f8c3108p-25 ++0x1.e87141103b5edp-1 ++0x1.fe1db59696078p-1 ++0x1.f81a9367f49ecp-1 ++-0x1.1c8ca3340ee9ep-2 ++0x1.f4be90d6a08a2p-1 ++0x1.a57e54c302ffcp-1 ++0x1.3f689114ae747p-1 ++0x1.ba3652b8cb6e8p-25 ++0x1.d83d808a7f332p-1 ++0x1.dfd2264b6c472p-1 ++-0x1.e800e2c46ef54p-1 ++0x1.df8f111ae2866p-1 ++-0x1.6d6c5532e2cd9p-21 ++-0x1.1e2c81ace6c11p-22 ++0x1.e953222af7df2p-1 ++0x1.e925616ce5429p-1 ++-0x1.b26906bfadf37p-1 ++0x1.dbe1f423f0122p-1 ++0x1.8610709c83c3ep-5 ++-0x1.e659010e4489dp-7 ++-0x1.e69494ce3841fp-20 ++0x1.d8ff513fd08dfp-1 ++-0x1.fe6e319c28462p-1 ++-0x1.9d64d47733225p-3 ++0x1.c32282721051fp-2 ++0x1.eb3df7f6d191dp-1 ++0x1.8a44534c5fa47p-1 ++-0x1.4f6d93821061bp-2 ++-0x1.f52714fc5d094p-1 ++0x1.9de7e1e0dc8cbp-1 ++0x1.eeed020905613p-1 ++0x1.ec28d5dadfc7dp-2 ++0x1.aa36c26dcd467p-1 ++-0x1.8e87e6677fbfbp-2 ++0x1.ff84d1966abbdp-1 ++-0x1.f63e406386a93p-1 ++-0x1.f6203420a49e8p-1 ++-0x1.a48a93694dd80p-1 ++-0x1.61a7645eb7ec4p-1 ++0x1.e090c1a2c9b9fp-1 ++0x1.9b45d32c1533ap-1 ++-0x1.b11a761584f00p-1 ++0x1.9ad421a6de914p-1 ++0x1.79dbd61da7b2fp-3 ++-0x1.fc26a4aba22d2p-1 ++0x1.64105318b86d4p-1 ++-0x1.e9789541ac5d2p-1 ++0x1.fd9ec29f78db6p-1 ++-0x1.f14366570d3b6p-1 ++0x1.4b13d01bf21b3p-1 ++-0x1.f4eaf42e7ec78p-1 ++-0x1.339060228fa99p-5 ++-0x1.e744b298a1822p-1 ++0x1.deb6d20e46c2dp-1 ++0x1.292d24ec19bafp-3 ++-0x1.1e8a967a738a4p-1 ++0x1.dc10c61f240a2p-1 ++0x1.de2966eee1343p-1 ++0x1.e19d91e1c7907p-1 ++0x1.79c3b49ea70d1p-1 ++0x1.16e6f6035c12cp-2 ++0x1.decaf4a1bae55p-1 ++0x1.ab70f734c29e0p-1 ++-0x1.efe2c7ae66583p-1 ++-0x1.8bbb01f526908p-1 ++-0x1.aaac637a729e4p-21 ++-0x1.d8db236a8dc8dp-9 ++0x1.e36122ce4d0a1p-1 ++0x1.ea4005dd159f9p-1 ++0x1.b6a77767d4c9dp-1 ++0x1.e40c047e086a2p-1 ++-0x1.5dba61bbcf1dep-1 ++0x1.e5bc071b94585p-1 ++-0x1.f9215050b4d45p-1 ++0x1.fdafc34a31724p-1 ++0x1.869e353529f40p-1 ++-0x1.e2eda692286a9p-1 ++0x1.31642078c9c6dp-2 ++0x1.97e501e8fe7cfp-1 ++0x1.eb18e737043a5p-1 ++-0x1.e18a12334f770p-1 ++-0x1.d507b06c3df31p-18 ++-0x1.d0ec3013892e4p-3 ++-0x1.26c875185533dp-15 ++0x1.efbe6148f56fdp-1 ++0x1.c16d712b4bb1fp-3 ++0x1.8b04c70b3ddcap-1 ++-0x1.ab136560e555dp-22 ++0x1.f7af22a6b572dp-1 ++-0x1.d85926848cf29p-1 ++-0x1.ec59c307396f8p-1 ++0x1.e83fc488dacd6p-1 ++0x1.de8b34bf410c9p-1 ++-0x1.0d4466176e9fcp-1 ++0x1.29c0d4ecd2366p-2 ++-0x1.7c821349cb30fp-23 ++-0x1.f21cf62567c8ap-1 ++0x1.9475e0bee269cp-1 ++-0x1.360155ce19621p-1 ++-0x1.ab61b161880c5p-3 ++-0x1.687a92d61065ap-16 ++0x1.a07a83ec307b4p-3 ++-0x1.ced6825d25e04p-1 ++-0x1.3fd4120c4bf01p-3 ++-0x1.98615085cae70p-1 ++-0x1.565f25ad39799p-1 ++0x1.ff04d61b0df50p-1 ++0x1.3b887244ca6ebp-1 ++-0x1.faf3f337442b8p-1 ++0x1.c2857627f9c6ap-1 ++0x1.414391eae82a7p-2 ++0x1.ed4c041a3ead6p-1 ++-0x1.7720c11df55fep-3 ++-0x1.20dd07160306ap-3 ++0x1.eb79153ce9fddp-1 ++-0x1.0b7c366b28640p-1 ++0x1.0c37b2dba00aep-19 ++0x1.df2997df1e98ap-1 ++-0x1.db81e304bef8ep-2 ++0x1.d061109803210p-1 ++-0x1.f29f3377fe46bp-1 ++-0x1.9d69119b79677p-17 ++-0x1.fe18e3a9ee189p-1 ++-0x1.2ba7052c8bd80p-1 ++0x1.e241853578931p-1 ++-0x1.fb0854c5d75f0p-1 ++0x1.ee3cd20ce4f5ap-1 ++0x1.ee40d08bb49e3p-1 ++-0x1.cc9fa732730b4p-1 ++0x1.070692620b71cp-1 ++0x1.e0d2859d0d97dp-1 ++-0x1.82f763fdb686ep-1 ++-0x1.763cb2cf0a32dp-3 ++0x1.e43b37d8f0ddfp-1 ++0x1.a3880141b2dd3p-3 ++0x1.3befe215a78c6p-1 ++0x1.9d6604d4efeddp-2 ++0x1.b5a3d7eddda00p-1 ++0x1.cc7993074c20bp-1 ++0x1.aac5e5dc62767p-24 ++0x1.bed3226c9cf5ap-2 ++-0x1.efd3965c7e5acp-1 ++0x1.fe2aa46b77528p-1 ++0x1.e098e320da0bap-1 ++0x1.67e7248b818b3p-3 ++-0x1.6ad6002662fadp-2 ++0x1.decaa3bcdaa08p-1 ++-0x1.d58d16202023dp-10 ++0x1.ff00b5fcb622fp-1 ++0x1.32ef66d1351e1p-1 ++-0x1.f16585e5f84ebp-1 ++0x1.1f8845720550bp-3 ++-0x1.597ae70396752p-24 ++0x1.29d207dd78ad9p-3 ++-0x1.c50354e1919fdp-1 ++-0x1.f33b17f4530b4p-1 ++-0x1.01ede4cf1745cp-1 ++0x1.ca3f36b0aa65cp-1 ++0x1.40e9902e7c79ap-3 ++-0x1.59f3c5b673712p-1 ++0x1.916dc64eee2aap-1 ++-0x1.ef8c343a179b1p-1 ++-0x1.4a43014a489a2p-18 ++0x1.ea9994a3eea40p-1 ++0x1.7c24d44e7ad13p-1 ++0x1.f81f66a100c06p-1 ++-0x1.e7cb21c3e16e5p-1 ++-0x1.660cf02b53207p-1 ++0x1.9d1775b1ea06fp-2 ++-0x1.fb6e3107f4ab7p-1 ++0x1.ec9ed646b54a4p-1 ++0x1.eb877429ca44ep-1 ++0x1.57f90558e0cd2p-1 ++0x1.ee6127d9b9cd3p-1 ++0x1.eeace5528bcaep-1 ++0x1.abfa31533bf17p-1 ++0x1.af6d31714c4fap-3 ++0x1.1b88e568085eep-3 ++0x1.27d0012eda11fp-1 ++0x1.e4c3a00a353dcp-1 ++-0x1.a4d2513d6da08p-3 ++0x1.eac9041cf24d0p-1 ++0x1.eba880a52b2a0p-1 ++0x1.fc9815cf6cf07p-1 ++0x1.e9306397ac8d9p-1 ++0x1.b43cd65692d19p-1 ++0x1.ffed705f1a4ecp-22 ++-0x1.758b46be117efp-23 ++0x1.32f4b633ba0e9p-1 ++0x1.ebf364bf44defp-1 ++0x1.eb2c318fe1fd1p-1 ++-0x1.c4f6f0a35fd4cp-1 ++0x1.f94de7e900a23p-1 ++0x1.e040d6464605fp-1 ++-0x1.219fc52102aa7p-1 ++-0x1.453271b5e1e0cp-1 ++0x1.269653d6653a0p-10 ++0x1.a48e700ea9b1fp-1 ++-0x1.f41ec1c712c7fp-1 ++0x1.c96de70665e99p-2 ++0x1.ff20b67f593dcp-1 ++0x1.e13e27d7f0352p-1 ++0x1.e81bf743c0369p-1 ++0x1.c50ba323bc984p-5 ++0x1.2109349c356f8p-2 ++-0x1.8bdbe0b9e2d2bp-10 ++0x1.f668a1d8022d9p-1 ++-0x1.3e06e4a0baeedp-1 ++0x1.fb63f1e25d668p-1 ++-0x1.b8e1e27336860p-1 ++-0x1.f2700673bb386p-1 ++-0x1.b2daa6e18bec1p-1 ++0x1.8e8b67f0920cap-3 ++0x1.fdeba0a282ee5p-1 ++0x1.ed9061cac7a5fp-1 ++0x1.e697822f3ef41p-2 ++-0x1.a073961b21017p-3 ++0x1.eae16553c8c57p-1 ++-0x1.ef11308a723a0p-3 ++0x1.4db6f0d5fc8b1p-1 ++0x1.9db7a4e909c22p-1 ++0x1.d963f3e2377acp-1 ++-0x1.f4b2a27475355p-1 ++0x1.5ceea7934431fp-1 ++0x1.e006175a5233bp-1 ++0x1.db398369c7f83p-1 ++-0x1.6da6930d66d07p-1 ++0x1.6cc7155575699p-2 ++0x1.8958a513b1a3dp-16 ++0x1.e4d423f8e48d5p-1 ++0x1.f61e572c416f1p-1 ++-0x1.dce6b232fc21ep-1 ++-0x1.f76ac4a2a56ebp-1 ++-0x1.effa02c2a5b57p-1 ++-0x1.3277074adeefap-2 ++-0x1.f820b07829307p-1 ++-0x1.9ce743a0e44b1p-22 ++0x1.5a60c5b18ae7ep-1 ++-0x1.627064608ff5ep-1 ++-0x1.f18541418b0c8p-1 ++0x1.df5a362b58df6p-1 ++0x1.5a1c12189882bp-1 ++0x1.042eb250936bep-1 ++-0x1.1cb73699e8924p-1 ++0x1.bd81501f6c6dbp-1 ++0x1.ea461047bbbaap-1 ++-0x1.987e70cb208c9p-1 ++0x1.ebb7b667c93a9p-1 ++-0x1.e64087ec5398bp-1 ++-0x1.da4060f493507p-10 ++0x1.edf6c4bdb283ap-1 ++0x1.e56aa246ff0e4p-2 ++-0x1.5ee2870e9e6e3p-1 ++0x1.890c70d8e4854p-15 ++-0x1.9d713407fd722p-1 ++0x1.d81051269ec58p-1 ++-0x1.21a6c4b3b5c44p-1 ++-0x1.ff1743cc5a35ap-1 ++-0x1.bdd804759a629p-1 ++0x1.ecabd624ed76bp-1 ++0x1.f4fc4755c5257p-20 ++0x1.ef9f51187fe83p-1 ++-0x1.bcfe530a93051p-3 ++-0x1.04437668e59f9p-22 ++0x1.f9deb62170ec6p-1 ++-0x1.f95ff4e30111cp-1 ++0x1.b9bcd47a04014p-1 ++0x1.e986346f71ee7p-1 ++0x1.e870a1536e60dp-1 ++-0x1.f45142b039fd9p-1 ++-0x1.f9a361114e127p-1 ++0x1.a39e45adb3fcbp-1 ++0x1.eedee6a9faf61p-1 ++-0x1.2d7dd63289e16p-3 ++-0x1.ea1224bded243p-1 ++-0x1.4bdd4503c4c63p-1 ++0x1.6c88456adc480p-3 ++0x1.e2b3a4b24383cp-1 ++0x1.e5fc97f64aecbp-1 ++-0x1.1b6bb0f6cd48dp-1 ++-0x1.b303858a80ca8p-1 ++0x1.e7ab923c42554p-1 ++0x1.0a9275a4041e2p-1 ++-0x1.f8c00391024e6p-1 ++0x1.e35757a76e130p-1 ++0x1.e79240313e889p-1 ++0x1.65b7c5e770a90p-1 ++-0x1.c932d35cb0882p-1 ++0x1.6bdae68159ee5p-2 ++-0x1.a10396bb69be7p-1 ++0x1.385d508691b4ap-1 ++-0x1.879d741b2c118p-23 ++0x1.44ecc2c03843ap-1 ++-0x1.ff8f3716b5256p-3 ++-0x1.595040318030ep-3 ++-0x1.bcfdf5e4c6970p-1 ++0x1.0f3c92514126ep-1 ++0x1.3dc123067ed3fp-1 ++-0x1.ecbe16bf69bfbp-1 ++0x1.9ee9220c8f948p-2 ++0x1.dda1a2c40b3a6p-1 ++0x1.c24c85e28024fp-1 ++0x1.28b060d622339p-1 ++0x1.ef1b944c9f858p-1 ++-0x1.f476a1ba386d0p-1 ++0x1.83edf16dfff50p-1 ++0x1.e7ee358e79562p-1 ++0x1.e31ec6e0b4fc4p-1 ++0x1.dd98613b70372p-1 ++0x1.da5505c9b5082p-1 ++0x1.24f756f5e8490p-22 ++0x1.2c5d704de00e2p-3 ++0x1.e8faf051d09cbp-1 ++-0x1.ff78b2a719f69p-1 ++0x1.db133789d06a7p-1 ++0x1.66c0e08344febp-1 ++0x1.406506bfcfb11p-1 ++-0x1.55ac10a3a8641p-3 ++0x1.fce4f63c2836bp-11 ++0x1.a49c5484fe1ecp-1 ++0x1.ec7bc658a8951p-1 ++0x1.e84b3736a7b34p-1 ++0x1.ac8f6552a58dep-1 ++0x1.f42ee4d7dac9dp-1 ++0x1.3951052bb8e1fp-1 ++0x1.bec8b0e3edbb6p-1 ++0x1.33855463baf99p-1 ++-0x1.177641b2f5da9p-2 ++0x1.df40141a3b57dp-1 ++0x1.e92b22c10a9ddp-1 ++-0x1.f0bf840efa02bp-1 ++0x1.19a5c7f4ac19ap-1 ++-0x1.f06581e9738c7p-22 ++0x1.fa84d6fc1bfb4p-1 ++-0x1.ff5cc72dade88p-1 ++0x1.e0942271d057fp-1 ++0x1.02338781af33bp-3 ++0x1.696c8704c0adep-1 ++-0x1.f1687635d3527p-1 ++0x1.8fd781a156526p-1 ++0x1.fe1874b71dffap-1 ++0x1.8651325797215p-3 ++0x1.bc3c71925e5b6p-1 ++-0x1.1e9543b9189ebp-4 ++0x1.e4e8c2f4a4892p-1 ++0x1.9cec761d69c12p-1 ++0x1.b823a13640780p-1 ++0x1.1340e0318b586p-1 ++0x1.ecea93cc4e282p-1 ++0x1.381af30c8bbacp-3 ++0x1.269575fbaa2a4p-1 ++-0x1.806dd0823096dp-1 ++-0x1.e052374d36a4bp-1 ++0x1.fea3254b1eafap-3 ++0x1.2d5970ca26f6cp-1 ++-0x1.f4dea4866c50bp-1 ++0x1.f69344c9b9904p-1 ++-0x1.a3903178cc914p-1 ++0x1.ef5191f3a5593p-1 ++0x1.f5f3548da6996p-1 ++-0x1.f643440d6b06cp-1 ++-0x1.f002c7269a37ep-1 ++-0x1.fa75252a58e2dp-1 ++0x1.d9f9e3d739f44p-1 ++0x1.634732e2952fap-10 ++0x1.f218003f765f8p-1 ++0x1.606f8100c1742p-2 ++-0x1.e755f3286db4ap-1 ++0x1.a51346ad161ffp-1 ++-0x1.fb568187a36cdp-1 ++-0x1.e9fb506e00816p-1 ++0x1.ef4ba09903242p-1 ++0x1.decac67825caep-1 ++0x1.e87f025e48684p-1 ++0x1.e3f8778ca9756p-1 ++0x1.def1462172dfbp-1 ++0x1.311253501f3f2p-3 ++0x1.b47cd28626b01p-1 ++0x1.ea01327b06539p-1 ++0x1.f29325d22a5b5p-1 ++-0x1.63cce0ecc9f3fp-2 ++-0x1.cbec261c8745fp-2 ++0x1.839f62344ed35p-1 ++0x1.db5e820db1f0dp-1 ++0x1.eb10463897a41p-1 ++-0x1.01a9b60073fd1p-2 ++0x1.820c4727f0297p-1 ++0x1.defe9157b25b9p-1 ++0x1.95acf5bfa2f77p-3 ++-0x1.f829a7cd489c0p-1 ++-0x1.f78f2515a0c93p-1 ++0x1.e40934a3f3e57p-1 ++-0x1.fb0a94ad8c18dp-1 ++-0x1.8f0b53139648dp-20 ++0x1.d801c522cfcf4p-1 ++0x1.d91a30bb3e15dp-1 ++0x1.e41a80baf531bp-1 ++0x1.e96113c21b2e6p-1 ++0x1.cbb5955832906p-1 ++-0x1.faaf461b00258p-1 ++0x1.2c7b264df7e18p-2 ++0x1.cdf68750f625fp-1 ++-0x1.ab062115542b8p-2 ++0x1.cd73a32168810p-2 ++-0x1.f3f1411a81959p-1 ++0x1.57c7a2ace0a72p-1 ++0x1.efb2212f852c5p-1 ++0x1.8e0f47ea636f7p-1 ++0x1.ea6d312855164p-1 ++0x1.31a3e53d9d779p-1 ++0x1.bc55404efb12dp-19 ++-0x1.b6f9a6276a135p-1 ++-0x1.c3e361caeb9f1p-1 ++-0x1.e0eca0ecd7cb7p-1 ++0x1.f847f61015d15p-1 ++0x1.ed36e1f48a48ap-1 ++0x1.f41ca43bda5ffp-1 ++-0x1.ad50f432557fap-1 ++-0x1.114fa24a19444p-2 ++0x1.36def65bab425p-1 ++0x1.fe05623afcc36p-1 ++-0x1.ef66a308f97d2p-1 ++0x1.8d4b844dd2993p-1 ++-0x1.d6cff1d46ff9bp-9 ++-0x1.ee29a33d89217p-1 ++-0x1.f132f2992494fp-1 ++-0x1.de7153b5aad60p-3 ++0x1.d915353edaa25p-1 ++0x1.ea64823156f61p-1 ++0x1.4d3ba3c4d2e24p-1 ++0x1.ba92542786897p-1 ++-0x1.fffed63ad096dp-1 ++0x1.e97f8083149abp-1 ++0x1.b79ba1d3be769p-1 ++-0x1.eab325c5fbbe8p-1 ++-0x1.c3e3470150bafp-1 ++0x1.e3b610f2a9a12p-1 ++0x1.091a864ba6574p-3 ++-0x1.462ed634d347cp-2 ++0x1.ed90006d31696p-1 ++-0x1.c62a454b8d40bp-1 ++0x1.371a12446cb76p-2 ++0x1.eb63b3e34705ep-1 ++0x1.edf750cfdec5ap-1 ++-0x1.308fe73061dc7p-1 ++-0x1.ee05e10877512p-1 ++-0x1.d67e0577a6507p-1 ++-0x1.ed2eb7554cecap-2 ++0x1.dca2a028e0226p-1 ++0x1.d30c963d41488p-1 ++0x1.7530e7c8620bfp-1 ++0x1.d417a562c0d61p-1 ++0x1.e20e43f399e37p-1 ++0x1.ea15f4adca008p-1 ++-0x1.f3b7c47cb6dc6p-1 ++-0x1.154f81f240248p-7 ++-0x1.151356f0736d8p-1 ++0x1.f6ee472b8805fp-1 ++0x1.92518330d7f45p-1 ++-0x1.dc476211ce07dp-1 ++0x1.e848464011e2bp-1 ++-0x1.46a8919520b17p-1 ++-0x1.77fe90512eacfp-1 ++-0x1.9acbd0bea7745p-2 ++-0x1.443961a482f0fp-2 ++0x1.dc9150d6da395p-1 ++0x1.8f0b30b8722ebp-11 ++-0x1.ec2db037a82dcp-1 ++0x1.e3e7f06de29f4p-1 ++-0x1.f321806888b14p-1 ++0x1.bcc2d238d4ddbp-25 ++-0x1.b5d02551d5671p-10 ++0x1.5b65c47382c9ap-3 ++-0x1.fcbdd2b050f64p-1 ++0x1.ea5c13904e3b2p-1 ++0x1.ef36a448b7555p-1 ++0x1.dfdfd6c700acfp-1 ++0x1.4236c13576e0ep-2 ++0x1.8df8a16525f39p-3 ++0x1.e0ad97d2cf238p-1 ++-0x1.38f0542ca311ap-1 ++0x1.d87891d37859cp-1 ++0x1.e10e138b446a6p-1 ++0x1.0f92764f7b2e4p-1 ++0x1.aade166075ea0p-1 ++-0x1.902df59995e2fp-15 ++0x1.de7c758e0561ep-1 ++-0x1.bbcb739c535d8p-3 ++0x1.750fa027faf9ep-1 ++0x1.af8d62c66fb2cp-1 ++0x1.ea9ec240b76fap-1 ++0x1.ef92f02323e66p-1 ++0x1.410642b877d0fp-1 ++0x1.ecec322ab031cp-1 ++0x1.88a7042cf26e3p-1 ++0x1.d91c147875780p-1 ++-0x1.891bb78017f41p-3 ++0x1.ecbf764fb7f74p-1 ++0x1.8ae814193f661p-1 ++-0x1.9ab562e85a368p-1 ++0x1.eafad3737c504p-1 ++0x1.f172b00025f8dp-1 ++0x1.9625e4660a46ep-1 ++0x1.ff2847663862cp-23 ++-0x1.f876845608312p-1 ++0x1.f988f6376ddcep-1 ++-0x1.32096643967c8p-24 ++0x1.862f469d3b6b5p-1 ++0x1.e409002dbe096p-1 ++0x1.ebae12a190827p-1 ++-0x1.c73c104933177p-3 ++-0x1.e67b111d9643ap-1 ++0x1.e14005d42553cp-1 ++0x1.6bcdd5585b74ep-1 ++0x1.d01df07e10013p-1 ++-0x1.aa01a6ca96ca1p-1 ++0x1.9adaa0b3675d2p-1 ++0x1.abf414448c2c7p-1 ++0x1.e5c940ebf6cffp-1 ++0x1.5cf30257670ddp-1 ++-0x1.c572d1625cc9ap-1 ++0x1.c46f07973a003p-1 ++-0x1.e9edf7eef925cp-1 ++0x1.e2db71253b231p-1 ++-0x1.f18a81c759b6ep-1 ++-0x1.0484943b8972bp-14 ++0x1.e8ba541de4c3dp-1 ++0x1.e86031182f48ap-1 ++0x1.edf485b87d989p-1 ++0x1.ed7b63e2ae6e5p-1 ++0x1.441ba0eeee084p-1 ++-0x1.f157124313805p-7 ++-0x1.592b96408f745p-15 ++-0x1.aa9f35bb8710cp-3 ++0x1.dd79933eb4823p-1 ++0x1.8105f3b2d415bp-1 ++0x1.e959042778f64p-1 ++0x1.eb1923875839bp-1 ++0x1.f0f3621f3d303p-1 ++-0x1.fb9d116c1740ap-15 ++0x1.ee3e232a76cbdp-1 ++0x1.a720e17021d30p-1 ++0x1.4496d3d77e50dp-3 ++0x1.29b2708c3a747p-1 ++0x1.49f6619c13dd0p-2 ++0x1.01593434a17a8p-2 ++0x1.0c56546e3c83ep-2 ++-0x1.fd7591cf4e231p-1 ++0x1.f28e37cddaa63p-1 ++-0x1.21c025a637570p-2 ++0x1.e47fc5993f6c7p-1 ++0x1.85a2015249f9ap-1 ++0x1.ccac70b0bde88p-1 ++-0x1.b0c634676faacp-4 ++-0x1.f91d34193e0cap-1 ++0x1.ea81015237620p-1 ++0x1.e0f6a48d7e9c9p-1 ++0x1.fae08655a51a3p-1 ++0x1.4f28f1201b762p-3 ++0x1.e8e030f4ea7e4p-1 ++0x1.e1db95f200e1bp-1 ++0x1.f425e3cced4c7p-3 ++0x1.bdc8679163915p-18 ++0x1.febcf6c28536ap-1 ++0x1.92f204914b1bap-1 ++0x1.ecd8933b172edp-1 ++0x1.f0bb0482d6c17p-1 ++-0x1.1011a24690b17p-1 ++0x1.6597b5c278c94p-1 ++0x1.c03a92b120e58p-1 ++-0x1.0eed14bd5c463p-1 ++0x1.e84d0157c4875p-1 ++0x1.e0fa54716960fp-1 ++-0x1.e70102ffd26f4p-2 ++-0x1.a5029085d091bp-1 ++-0x1.ff504589e4c56p-1 ++0x1.cd7171df2e295p-3 ++-0x1.c2e6249c7296ap-21 ++0x1.96c5c059d54afp-1 ++-0x1.e6f51087203f2p-9 ++-0x1.515e3214390b1p-2 ++-0x1.e0a141c4f0b16p-1 ++0x1.eb7451be325a0p-1 ++0x1.e0d083fcb5089p-1 ++-0x1.fee190f2fc2b8p-2 ++0x1.fe9b45e910698p-1 ++0x1.a1bb4745dadf5p-1 ++-0x1.f652e1fdb6a40p-1 ++0x1.ddcf1291a5226p-1 ++-0x1.43cbc08a959f6p-3 ++0x1.dbf877fb563dcp-3 ++0x1.ca0a70766ed38p-1 ++-0x1.fb8063fd22722p-1 ++-0x1.fa4ed780ebffap-1 ++0x1.ef75b5fbc2038p-1 ++0x1.d8fad2d484f9cp-1 ++0x1.eb8ca278a8b79p-1 ++0x1.0fde2500275a5p-2 ++0x1.e71ef4f74efa5p-1 ++0x1.df0c61f2a0f01p-1 ++-0x1.bb5c7578b90a7p-1 ++-0x1.2e84858cbd9e2p-1 ++0x1.096bd4970cd0dp-22 ++-0x1.f41217509723dp-1 ++-0x1.32d10136b1f12p-1 ++0x1.4c6af75e75c32p-1 ++0x1.3fe9d75c1f312p-1 ++0x1.9ef980d30524ap-1 ++0x1.828b0390e301ap-3 ++0x1.f62692b289857p-1 ++0x1.5cb4743cbb81ep-13 ++0x1.ef86868247137p-1 ++-0x1.da44b5b4e6c6fp-1 ++0x1.dbcd94da0d8b8p-1 ++0x1.ec9c878cfb5f0p-1 ++-0x1.5f64a17e9500dp-2 ++0x1.5c75e768472b4p-2 ++-0x1.a787c4bfd3b9dp-1 ++-0x1.cca7367cafebcp-1 ++-0x1.11bc51c1a6b71p-1 ++-0x1.f6df90b887fc3p-1 ++0x1.7a9fb439b7a47p-1 ++0x1.e33c401410e8dp-1 ++0x1.fb4ee1a050156p-1 ++0x1.e89fb349c715bp-9 ++0x1.9b1db0483a855p-20 ++0x1.a913b3a187ee1p-17 ++-0x1.ef7701b74636cp-1 ++0x1.828184fbbeaa0p-2 ++0x1.f4d8e628050abp-1 ++0x1.133d81d6ae23cp-3 ++0x1.f013f7c35659bp-1 ++0x1.efd682aa7da6dp-1 ++0x1.f1dc00f5ef3a9p-1 ++0x1.96072389d627dp-1 ++0x1.ea1691abf195ep-1 ++-0x1.cca2538d384bap-5 ++0x1.e92007ba8df2ap-1 ++-0x1.e141a1fc347e7p-1 ++0x1.ed08437e94ea2p-1 ++0x1.4445e5b18f130p-1 ++0x1.f66bb10cf125cp-1 ++0x1.704f576926a3ep-1 ++-0x1.1e2b763ff1c1bp-16 ++0x1.a257b5f59a887p-1 ++0x1.ee0771d865c59p-1 ++0x1.debf16684ec06p-1 ++0x1.dbdf762ec9500p-1 ++0x1.e60b71ca4175bp-1 ++0x1.30f9a5a27b4a8p-1 ++-0x1.f34ff26c85784p-1 ++-0x1.d1b2d7ceae413p-1 ++0x1.fdcf071e072d3p-1 ++-0x1.a3f255af4ee16p-1 ++-0x1.ea5db637383c4p-20 ++0x1.e23fd346a1c24p-1 ++0x1.398d4660919b3p-1 ++-0x1.2341b61c4a232p-6 ++0x1.e7ddc42b3a4a8p-1 ++-0x1.ff0942c4470a9p-1 ++0x1.fa0f0780123aap-1 ++-0x1.56f2e58d53fc9p-1 ++0x1.37fd262f2ef5ap-1 ++0x1.e9de764260ee7p-1 ++0x1.3b0da25eac967p-18 ++0x1.e4394344a153bp-1 ++0x1.ee5d6207f7775p-1 ++0x1.e1241012fada1p-1 ++0x1.e2e61171c55e6p-1 ++-0x1.fa0e3517f47f8p-1 ++0x1.e811955ba544ap-1 ++0x1.4003e18e34c12p-23 ++0x1.f4f195748771bp-1 ++-0x1.ef0f34f9f356fp-1 ++0x1.391e008ea4619p-3 ++-0x1.bb0300053577dp-2 ++0x1.612ec16edaa00p-1 ++-0x1.53edf5aa8e452p-1 ++0x1.267ce71264f70p-1 ++-0x1.b0c102e4ded61p-1 ++0x1.b7b2671933257p-1 ++0x1.ea53f7e49d1fep-1 ++-0x1.ea6bc6967c364p-1 ++0x1.95d8a522476fap-1 ++0x1.f99470c182bf6p-1 ++-0x1.ef0df4884c963p-3 ++0x1.e6157493cd764p-1 ++-0x1.12b6e5b410e7fp-1 ++0x1.f67435d502e6dp-1 ++-0x1.f4ec823b0125dp-1 ++-0x1.f638561f1eccbp-1 ++-0x1.b967b16c72982p-21 ++-0x1.842b3414ac978p-1 ++0x1.ef15c079cf311p-1 ++0x1.1d6fb030321d5p-2 ++0x1.ea147124ef4abp-1 ++0x1.e342f70874ef2p-1 ++0x1.e7afc67c34250p-1 ++0x1.19db65ff74336p-1 ++0x1.df80158c55f1bp-1 ++0x1.542a0182909a7p-1 ++0x1.057365e07e692p-2 ++-0x1.fb0d257f569cdp-1 ++-0x1.de3c10fe462f9p-1 ++-0x1.ecf8e686be7cep-1 ++0x1.55e863f86981dp-1 ++-0x1.eb05376e22db1p-1 ++-0x1.e83e578b67404p-1 ++0x1.1d7bf26bcd34ep-2 ++-0x1.ec5af0c2ccbc9p-1 ++0x1.ddd3d27a5b4aep-1 ++-0x1.eaf4048fe077cp-1 ++0x1.00801354b719ap-21 ++0x1.3e3a6224576bap-3 ++0x1.ed89f7096981cp-1 ++-0x1.daf4c6895a475p-2 ++-0x1.27b5065556c47p-1 ++-0x1.62e816a332a1ep-1 ++0x1.c38e7517dd45fp-12 ++0x1.915a220e086dfp-1 ++0x1.dd5754e2b6f70p-1 ++0x1.d84720817bef5p-1 ++-0x1.04b965445d524p-1 ++-0x1.e882f75e4f37fp-1 ++0x1.d8e1258d3e967p-1 ++-0x1.f4ad6308371a8p-1 ++0x1.0924a114faa3bp-1 ++-0x1.ee8ea3f68169fp-1 ++-0x1.db6440c16c293p-1 ++0x1.a260a5cf0493bp-1 ++0x1.ead6a5782d24dp-1 ++0x1.e049c5ecc67fcp-1 ++-0x1.480570f907c0ap-25 ++-0x1.e6a7c54bbfa5ap-1 ++0x1.fe6ad355328e4p-1 ++0x1.e2d7666a25355p-1 ++0x1.eec3b242762cep-1 ++0x1.c85773ca329d7p-1 ++-0x1.f163118d145f0p-1 ++-0x1.f79036a3f4459p-1 ++-0x1.204f96baed60dp-3 ++0x1.f9dc71e534411p-1 ++0x1.67b372a69cd0bp-3 ++0x1.eaa614d2c63c8p-1 ++0x1.bb01a3a90cd08p-3 ++-0x1.0bc192dba3daep-1 ++0x1.a7184731a11b4p-1 ++-0x1.bfb485fa7f5f4p-16 ++-0x1.3688a0346cbf4p-2 ++-0x1.f153e2327fc20p-1 ++0x1.658b516343b5ap-1 ++0x1.edd205a535cf6p-1 ++0x1.e2e360aa13064p-1 ++-0x1.c24710eb7be22p-3 ++0x1.041a67e3e8f28p-1 ++-0x1.eb8aa64a05087p-1 ++0x1.e30cf7c07f903p-1 ++-0x1.b9c3a3088d677p-1 ++0x1.713eb1ab5e4c9p-1 ++-0x1.6ad805c841fcap-1 ++-0x1.f885a3f0e8ba8p-1 ++0x1.f46dc196d78d6p-1 ++0x1.fc84242c90e1fp-1 ++-0x1.03cb72be8da0fp-1 ++0x1.876157be34442p-1 ++0x1.df7a00f91ede0p-1 ++-0x1.7aadc22f765e8p-1 ++0x1.c49f353c0eea6p-2 ++-0x1.6942e78790b68p-1 ++0x1.f09820d53213dp-1 ++0x1.f0d7d51f16eafp-1 ++0x1.dd09f317d4844p-1 ++0x1.c37884de423eep-2 ++-0x1.d888e3c9b6736p-2 ++-0x1.0f9db3fc68bccp-5 ++0x1.b6a6c3eebea0cp-1 ++0x1.45f1f16329902p-1 ++0x1.ea8ca34a12e96p-1 ++0x1.e301b33695f69p-1 ++0x1.68a5b3e8dc41fp-1 ++-0x1.31ff6639336e0p-1 ++0x1.5a9b126abc66ap-1 ++0x1.1973b36468d97p-1 ++0x1.efe1f56bd3534p-1 ++0x1.e5ab36d2f2409p-1 ++-0x1.45d6537260c70p-3 ++-0x1.56f5410b90154p-15 ++-0x1.7d8cb3c9cb5d8p-1 ++0x1.c96a64375fd43p-1 ++0x1.deb991e8ad26ep-1 ++0x1.f2cdb2dedca59p-1 ++-0x1.aca5d6e0cebc8p-1 ++0x1.eb42940a8517bp-1 ++0x1.ae1b403368423p-1 ++0x1.ade411f3da571p-1 ++0x1.3e1116e4de263p-1 ++0x1.8973c30a0bb9cp-1 ++-0x1.156c062335d7dp-1 ++-0x1.9acbe0ee1240fp-3 ++0x1.ec00c6a3e141ep-1 ++0x1.dc4b32a234a23p-1 ++0x1.e6c20026a69cfp-1 ++-0x1.8fa041d702f22p-3 ++0x1.c5f6f61e0882cp-1 ++0x1.ca32d645bd50ap-1 ++-0x1.eebfe7785b810p-1 ++0x1.d855e4e635750p-23 ++-0x1.c4f8e0df2acbdp-3 ++-0x1.7f7681cf8b0a8p-2 ++0x1.834e43d519f57p-20 ++-0x1.e6c711f8a07a2p-1 ++0x1.37e074e9bd23fp-3 ++0x1.e07616c72f309p-1 ++0x1.eb6786e4bb963p-1 ++0x1.19099015cd289p-1 ++0x1.e1a391292b6e3p-1 ++0x1.e2db651834387p-13 ++-0x1.fe98b265f6c23p-1 ++0x1.e2bfd7dc71f91p-1 ++0x1.ee47140384e38p-1 ++-0x1.001567470f803p-2 ++0x1.05bdf1d57b74ap-3 ++-0x1.9f9bb738e7354p-2 ++-0x1.e2b5a72fffc26p-1 ++0x1.e33c52a03a341p-1 ++0x1.c210e6a7521b4p-1 ++-0x1.89280419666a0p-3 ++0x1.ef4386066c43ap-1 ++0x1.617cf4e80da72p-2 ++0x1.ca67862290507p-1 ++0x1.d2db6598cfaf0p-1 ++0x1.4c52d70f696f4p-3 ++0x1.fd31e495b8cd4p-1 ++0x1.97d8c7b4c9114p-1 ++-0x1.f0fc72689286ep-1 ++0x1.93a7216be0c5dp-2 ++0x1.d3115794c28e9p-1 ++0x1.e285e72ab6c83p-1 ++0x1.e318d24b8b39ep-1 ++-0x1.eef6d32a0b85fp-1 ++0x1.8d1c623935f00p-2 ++0x1.69f611e882192p-3 ++-0x1.815743a3562efp-1 ++-0x1.eb08c0c39511ep-1 ++0x1.c59db4bbac95fp-1 ++0x1.7d0722deb44afp-1 ++-0x1.8315d64e9546ep-1 ++0x1.9dd1600231fb9p-1 ++0x1.e2e2e02cfc885p-1 ++-0x1.10e173bc56bedp-1 ++-0x1.fef5368baa990p-1 ++-0x1.ffa8a2b9fe667p-2 ++0x1.dffc77beb4240p-1 ++0x1.eeb121fd09f87p-1 ++-0x1.e90be055f4bc5p-1 ++-0x1.f41e016289c7cp-1 ++0x1.af5152f1a61dap-26 ++-0x1.fd48f58baaff1p-1 ++-0x1.4b0f8437f1bc3p-1 ++0x1.d4cc178e13728p-1 ++0x1.ce7265a719e49p-1 ++0x1.e9eff57262b39p-1 ++-0x1.f13f718045fb6p-1 ++0x1.e6bb77d8971e1p-1 ++0x1.b551834380757p-1 ++0x1.da0f873b6aa41p-1 ++0x1.f142b0d6cd227p-1 ++0x1.e9ab41fff09b7p-1 ++0x1.942ed2f7475d2p-2 ++-0x1.bb5fe6c2388bcp-20 ++-0x1.a2e262533502fp-4 ++0x1.dd9583ec5db42p-1 ++0x1.90fad5e8a6031p-1 ++-0x1.0373e4dddeb2ap-2 ++0x1.fd2901f3c9671p-1 ++-0x1.b260a79be9a1bp-6 ++-0x1.984e45ef80148p-1 ++0x1.5356962ebfc1cp-1 ++0x1.571e352fdd0f0p-2 ++0x1.f89e41aa2fad5p-1 ++-0x1.e6a1f419a0176p-1 ++0x1.e2d58615983eap-1 ++0x1.ded7b522b64c3p-1 ++0x1.db41972b5b7e1p-1 ++0x1.1b0912987dcf2p-3 ++0x1.e1d26340eb5b3p-1 ++0x1.209d16e918bdfp-1 ++0x1.9d1bd742b6cd9p-1 ++0x1.d8ce209dfe849p-1 ++-0x1.d12fc215483dfp-9 ++-0x1.a4c0d4697fa72p-1 ++0x1.617954103f059p-2 ++0x1.3137f5baf9af4p-1 ++-0x1.507947ccbeeb1p-1 ++0x1.b292e4143ab7fp-1 ++0x1.d82640b61d4f4p-1 ++-0x1.5fe5b15734ccdp-16 ++0x1.f2d0e2931043bp-1 ++0x1.2fd917731a612p-22 ++0x1.f48e103407199p-2 ++0x1.7e2db343d2518p-6 ++0x1.49aec36586d2dp-1 ++-0x1.06ef250e87d2dp-9 ++-0x1.dce7e25ee3f06p-1 ++-0x1.f9667561ea716p-1 ++0x1.ef305027835abp-1 ++0x1.fda044b85c0c4p-1 ++0x1.e184b71badf21p-1 ++-0x1.8f7ec3e278b93p-3 ++0x1.f09ed78d95c96p-1 ++0x1.db5114278e29ap-1 ++-0x1.a56dd3341013ep-3 ++0x1.dc3843f1a56fep-1 ++0x1.2038f78b9bcc0p-2 ++-0x1.acd041b591f89p-1 ++0x1.e739901525d14p-1 ++0x1.e6ab002c0fd58p-1 ++0x1.ea88c7564fe3cp-1 ++0x1.fc9c210385ec5p-1 ++0x1.300c178b2707bp-2 ++0x1.64adc3a6fd19ap-1 ++-0x1.fd26d46627291p-1 ++-0x1.50b1823ecd041p-1 ++-0x1.0460742bc8cdbp-1 ++0x1.ee1d52dfb4db7p-1 ++-0x1.f8df26ac867ecp-1 ++-0x1.101697bd3de35p-3 ++-0x1.f08df75686ba5p-1 ++-0x1.ace67097f9affp-2 ++0x1.e8d044bdd2df4p-1 ++0x1.f567c745b44b1p-1 ++-0x1.293da15462edcp-3 ++-0x1.ff6a619be98e6p-1 ++0x1.870715d5a6b13p-3 ++-0x1.0c6132d48b23ap-1 ++0x1.bfcac730c5b46p-20 ++-0x1.eede64d01dd85p-1 ++0x1.4a0014931f1a7p-1 ++0x1.c04bc2fc8d9a7p-1 ++0x1.2ab9e2f378d0ap-3 ++0x1.5fd3677becabcp-2 ++-0x1.28cef33a72793p-1 ++-0x1.b17535ce5f5e3p-1 ++0x1.126fb704975d2p-2 ++0x1.f5e136218d473p-1 ++0x1.922b42c5e0ed7p-19 ++0x1.ace8606018cd4p-1 ++0x1.2b74811bfc23dp-2 ++-0x1.ef2a370ffe51ep-1 ++0x1.f9f6a148adee0p-1 ++0x1.f4021476db864p-1 ++0x1.95f375fe34bb5p-23 ++0x1.eca2876cca9d0p-1 ++0x1.d7351318c57d6p-20 ++-0x1.c5b4f73fa50c8p-25 ++-0x1.c94d46e4a466ap-1 ++0x1.901222b3eb03fp-1 ++-0x1.f2f094f1075f9p-1 ++-0x1.f86a7137c57dcp-1 ++-0x1.8e3c37a819136p-3 ++0x1.4ec1702690f49p-1 ++0x1.7af330368dd58p-11 ++0x1.84a1865b3e5f0p-1 ++-0x1.e4e0305c7b1bbp-1 ++0x1.ff49a7d7f6d62p-3 ++0x1.f2bad6b8e3ad9p-1 ++0x1.ff22f34c30d58p-1 ++0x1.eff9a7f819fecp-1 ++0x1.c32c91193429cp-13 ++0x1.5d40255ad5479p-2 ++-0x1.841801a2f578cp-1 ++-0x1.dbd584ff2c565p-1 ++0x1.a291c450afde5p-1 ++0x1.eae6f79c5a22bp-1 ++0x1.e6a5815c8e911p-1 ++0x1.effbb6d1ea58dp-1 ++-0x1.7b2d0222d18edp-1 ++-0x1.629942502fa18p-2 ++0x1.4d83c5fd055fap-1 ++0x1.878e4270d439cp-1 ++0x1.e9d9730db6039p-1 ++-0x1.1e06e6cea4258p-2 ++0x1.f65ff39e90426p-1 ++-0x1.cdb98479835c6p-9 ++0x1.d768f6851ecbcp-1 ++0x1.f69e2232d6a42p-1 ++0x1.ec53932232948p-1 ++0x1.f67aa7a0b8826p-1 ++-0x1.fabca4ba5ef23p-1 ++0x1.ee69c2e52baf8p-1 ++0x1.26f0054eb2e0ep-2 ++0x1.0713f52f5375ep-2 ++-0x1.cbe100e36ed62p-1 ++-0x1.40a8260114e62p-1 ++0x1.f3063795bb159p-1 ++0x1.c716b64d97f72p-1 ++0x1.8981a41813d96p-3 ++0x1.d7c1209925c7ap-1 ++-0x1.ff581104611a1p-1 ++0x1.0c85d2b6d6e9dp-1 ++-0x1.8e8714dc38c74p-20 ++-0x1.b03cb5319aa16p-1 ++0x1.d72834d33b477p-1 ++-0x1.f01b11376becdp-1 ++-0x1.415a16a005c76p-20 ++-0x1.fe90e5f9be415p-1 ++0x1.dde612d789020p-1 ++0x1.d9f3738b76c1fp-1 ++0x1.db5327bba31b5p-1 ++0x1.adc4400d2246cp-22 ++-0x1.ff88333427dbap-1 ++0x1.eb26276420df2p-1 ++-0x1.b6c7247c84ca1p-2 ++0x1.e02a848a05a70p-1 ++0x1.043b03cb8172fp-3 ++-0x1.33d676f26127ep-3 ++-0x1.7608255d04435p-3 ++0x1.04f80268e9ce1p-1 ++0x1.464bc0a199508p-1 ++0x1.29ef60c6d1649p-2 ++0x1.ee97e455401a2p-1 ++-0x1.fd9ed1b43f715p-1 ++0x1.eb715394fd91dp-1 ++0x1.d7233283a8bd9p-3 ++-0x1.1df410fa478c5p-1 ++0x1.d594f6ab26103p-3 ++0x1.a08f83fd80dc8p-1 ++-0x1.de90b76d413e4p-3 ++-0x1.6084126e687f0p-8 ++-0x1.ff9375ff924dap-1 ++0x1.eaef2277ad27bp-1 ++-0x1.567a6656d28acp-1 ++0x1.db239524e4064p-1 ++0x1.ea15917f3ccbdp-1 ++-0x1.aecd11f1ad305p-1 ++-0x1.3f3391d575ab0p-1 ++0x1.2065b112d45b7p-1 ++0x1.eefeb58f716edp-1 ++-0x1.752456499480ap-2 ++0x1.f628431ac8afbp-1 ++-0x1.d4f5807797fcdp-3 ++0x1.52b317a0f2bb4p-2 ++-0x1.36be46b7fbb08p-2 ++0x1.e57282515307ap-1 ++0x1.8cb3963d2de1dp-1 ++0x1.f86d8777ff85dp-1 ++0x1.dbec93d39559cp-1 ++0x1.ef15079437d86p-1 ++0x1.9912915e0e9d2p-1 ++0x1.eddfa64b338bcp-1 ++-0x1.05d235555bca1p-1 ++-0x1.fb398088adb40p-1 ++-0x1.8529e4f0cd31ap-6 ++-0x1.daf8854d3e5e7p-1 ++0x1.562e8760fd24dp-1 ++-0x1.2bb627405320cp-3 ++-0x1.dbbe424b49782p-1 ++0x1.db7c6724b9b5cp-1 ++-0x1.86c5e771c6e89p-1 ++0x1.eb6cc05b2299fp-1 ++0x1.cbdfe416b513ap-16 ++0x1.e80bd7a912478p-1 ++0x1.e20654791ee42p-1 ++0x1.e7c99604f72c5p-13 ++0x1.e384454b782e3p-1 ++-0x1.2f821736b5783p-1 ++0x1.ec2dc7a3f7b9ap-1 ++-0x1.f58cb69431ff8p-1 ++0x1.291eb281d5031p-2 ++-0x1.22d8d0d689c58p-2 ++0x1.edae94523b924p-1 ++-0x1.dc31f75dbd8bap-1 ++-0x1.f41750df779c1p-1 ++0x1.1dbe97dccb13ap-24 ++0x1.fb352364b9b84p-1 ++-0x1.2f5617c2cdd47p-1 ++0x1.69d035f7a7ee7p-8 ++0x1.72e2e6f704395p-8 ++0x1.f86e40ec67bd7p-1 ++-0x1.d74544791ed55p-3 ++0x1.ee79c2eaca96bp-1 ++-0x1.97f484b97f423p-1 ++0x1.ecca71ea821fbp-1 ++0x1.cb2254385c652p-1 ++-0x1.e83561b46f5e8p-1 ++0x1.bd9f3198d30dep-25 ++0x1.e9e7b30a7666fp-1 ++0x1.b768a1d09af67p-3 ++0x1.0345e3f133efep-2 ++0x1.b45fb3fc48819p-1 ++0x1.426bd7fd10932p-1 ++-0x1.57e6c01243fa0p-1 ++0x1.1f4821c5d7096p-1 ++-0x1.de19b73619e5dp-1 ++0x1.53cb05c92ecbfp-1 ++0x1.90754146fad63p-1 ++0x1.4973979c27e9cp-2 ++0x1.ae33e7c0fbf30p-4 ++0x1.e032e42a2040ep-1 ++-0x1.ea40a3cab079fp-1 ++-0x1.6907e6c0916a9p-1 ++-0x1.1c59c6555ce1ep-3 ++-0x1.12fce6ee5e120p-3 ++0x1.747724780a0a7p-1 ++-0x1.3c6f734ef61e6p-1 ++0x1.dcd584c6d27cbp-1 ++-0x1.c27d81c83efabp-1 ++0x1.d990c3dac50c1p-20 ++0x1.a3c463d5b6e67p-1 ++-0x1.0820a1102e865p-1 ++-0x1.ab2a1549ea8ebp-3 ++0x1.dcde36cbc878bp-1 ++-0x1.42374083a3e0fp-4 ++0x1.ef0c857a36fa3p-1 ++0x1.e9e3a68ecccb7p-1 ++0x1.7f05d2127fea2p-1 ++0x1.e87935312ca1ap-1 ++-0x1.eb7110ff0f66ap-1 ++-0x1.c15fb366cfcf9p-1 ++0x1.f08de63d6483ep-1 ++-0x1.c72931d050543p-6 ++0x1.1cb62361bff83p-2 ++0x1.22db1186e6583p-10 ++0x1.e862d28475fb9p-1 ++-0x1.727515872cde2p-25 ++0x1.1a80e5cb79b32p-14 ++-0x1.c48fc05bc06adp-1 ++0x1.ef6a04b724d4ap-1 ++-0x1.70ba1780348d9p-1 ++0x1.e68fd1d34efdcp-1 ++-0x1.edbeb6d147be3p-1 ++-0x1.ffb8054bd5bb2p-1 ++-0x1.205784cd6e44ap-1 ++0x1.b9eea1cf61152p-8 ++0x1.ead9f4facbad9p-1 ++0x1.41f1177f3aa4dp-3 ++0x1.1cb3c7898c6c5p-21 ++0x1.3b9562043baf3p-2 ++0x1.9a03f093bbf71p-1 ++0x1.22d245b843dc6p-1 ++0x1.fe6b7655a7c27p-1 ++-0x1.f53d46b53474cp-1 ++0x1.edc8174da0475p-1 ++0x1.453ef06515377p-1 ++-0x1.cf39e3a140966p-3 ++0x1.b3870738c9a7fp-1 ++0x1.c03ff7b9aa3ccp-1 ++0x1.d88de462de411p-1 ++0x1.907531b1ec30bp-1 ++0x1.e807c59e08986p-1 ++0x1.d01ee7e80196dp-1 ++0x1.eb29729cac7d4p-1 ++-0x1.9b6ff25e8b37bp-1 ++0x1.06cb55e19f50bp-1 ++-0x1.c969c47d61594p-2 ++0x1.2f8fd229e5a28p-1 ++0x1.ec5d65428be39p-1 ++0x1.e3f1f13dd3842p-1 ++-0x1.6fdf45f0448e4p-1 ++0x1.c693d3e0c3d93p-1 ++0x1.ec2b351c3d553p-1 ++-0x1.023bb65902175p-2 ++-0x1.e41b13bb1ae98p-1 ++0x1.ed5233df8f1b0p-1 ++0x1.d3745523a5b72p-3 ++0x1.b11183467f9f4p-1 ++0x1.f96977e343f28p-1 ++0x1.647e07d72c3ccp-1 ++-0x1.dd7b40d163147p-1 ++0x1.a955c3158f95ap-3 ++0x1.ddbbe2e244b52p-1 ++-0x1.dd9476201ab1ep-1 ++-0x1.c173b1455120cp-10 ++-0x1.4849770c21219p-1 ++-0x1.e9c224c0132f3p-1 ++-0x1.9c7115f5fa7edp-23 ++-0x1.ededb18a270f5p-1 ++-0x1.dc41f5d54e145p-1 ++0x1.f260631aa28c5p-1 ++0x1.dd80538515b09p-1 ++0x1.e45ea178c9b30p-1 ++0x1.d98ee1fe8fa72p-1 ++0x1.ec3b7502ba31bp-1 ++0x1.9202f7b61b23cp-1 ++-0x1.e90160c48172dp-1 ++0x1.029cb182129c5p-1 ++-0x1.ecf921278c665p-1 ++0x1.f1df6352de955p-19 ++0x1.e820a1d008c40p-1 ++0x1.cf1bc071e7b1dp-13 ++-0x1.a7f9c47f84b4bp-11 ++-0x1.91d2b301a130ep-6 ++0x1.eb7e233b26b9cp-1 ++0x1.5285126c10af6p-11 ++-0x1.413ff2f91c7e0p-1 ++-0x1.909622a8afce0p-9 ++0x1.91f83092eaa5bp-1 ++0x1.e9f0072632510p-1 ++-0x1.4291a2d3c6a6ep-1 ++-0x1.91a7814a1afe7p-2 ++-0x1.f2e5c1ddfca4dp-1 ++0x1.4ed7f0ccb3beap-1 ++-0x1.56758387f3eb7p-1 ++0x1.0817c57f66fd7p-1 ++0x1.92ba54b90cb1fp-1 ++0x1.8393d0a315e11p-1 ++-0x1.ebf5435363845p-1 ++-0x1.182971e71f1c4p-25 ++0x1.30bad35036ebep-1 ++0x1.e6a7c48aae965p-1 ++0x1.5c09f0643688cp-1 ++0x1.bdb701415b22ap-1 ++-0x1.80b045165e5bep-1 ++0x1.ec2a609f9c95bp-1 ++0x1.fdf1358d71fa7p-1 ++0x1.f38ae51ef650dp-1 ++0x1.c3b5220ba05abp-2 ++0x1.64e7b7d518cdap-16 ++0x1.e3172710f85acp-1 ++0x1.c3d957db61cd0p-16 ++-0x1.76789202c62c6p-10 ++0x1.b9314508fdd23p-1 ++0x1.fbc7e244da846p-1 ++-0x1.feea04702b990p-1 ++0x1.c77664b2ebec3p-1 ++0x1.eb18f40a3c0a1p-1 ++0x1.f3d57719d5a66p-1 ++0x1.a1b9e5f02c25fp-1 ++0x1.d9db75669d2e1p-1 ++0x1.85d832f631a51p-2 ++0x1.9485a38e25cb3p-1 ++-0x1.1afd8636d88a6p-4 ++0x1.05798672f5ea3p-2 ++0x1.ffe9232e1641fp-1 ++0x1.f578d77058051p-1 ++0x1.32f086b72fc47p-3 ++-0x1.f80cc6c503e0bp-1 ++0x1.f28b64ae14d36p-1 ++0x1.db3f10c932ea3p-1 ++-0x1.fcdff69481c76p-1 ++0x1.b0b1822e2d791p-1 ++0x1.e47cf5ea94794p-1 ++-0x1.edbb01a598c24p-1 ++-0x1.f2d2c4f587093p-1 ++0x1.d810f191b7661p-1 ++0x1.f93393613674ap-1 ++0x1.be82e4ac9bddbp-1 ++-0x1.0579e7d148859p-8 ++-0x1.c7f3c1fdcabf4p-3 ++0x1.efad546ed467cp-1 ++0x1.fd6a251b4821ep-1 ++0x1.0315f5c097414p-3 ++-0x1.7db404e004dd9p-1 ++-0x1.fdabb5f507142p-1 ++0x1.c64fd560d1b67p-2 ++0x1.ca0d01c21706dp-1 ++0x1.e45216887ff71p-1 ++0x1.df2ec764ef6adp-1 ++-0x1.8e65606bed199p-3 ++0x1.dbc053fc0855cp-1 ++0x1.6b8ba297a525cp-1 ++-0x1.00882585a29eep-1 ++0x1.d353f591637b8p-1 ++-0x1.79f546d33544bp-3 ++0x1.efa4e409fde87p-1 ++0x1.ee1163afd0a03p-1 ++-0x1.fad96389524bfp-1 ++0x1.e85bb560bc75dp-1 ++-0x1.f069332e76f6dp-1 ++-0x1.6fb4348faf5c4p-3 ++-0x1.ce9367ceb44dap-9 ++-0x1.f0a930040729ap-1 ++-0x1.505075bc12d92p-16 ++0x1.947d6278f2ca8p-1 ++-0x1.f086970443d28p-1 ++0x1.d025216b99be2p-5 ++0x1.dcfa56e705532p-1 ++-0x1.f30504c59eceep-1 ++0x1.dd52d7e19870ap-1 ++0x1.02ddf0359bf9fp-1 ++-0x1.4f4065a22973ap-23 ++0x1.f40f75a7770a1p-1 ++0x1.59ae8671b31e8p-26 ++-0x1.536450991d17cp-2 ++-0x1.ae0193af9d6a2p-3 ++-0x1.27ba2598fa425p-1 ++-0x1.77f897e89fff8p-5 ++0x1.eff8918d7a81cp-1 ++0x1.e8f05228d4ca1p-1 ++-0x1.7c509777a588ep-1 ++0x1.2176d0b801649p-3 ++-0x1.e69f374a699d8p-1 ++-0x1.bed374f104cadp-3 ++0x1.f3a922a74a827p-1 ++0x1.762275548f202p-1 ++-0x1.f566226c407c7p-1 ++0x1.4cdae1fead7dbp-1 ++-0x1.eb4487592a9adp-1 ++0x1.edeeb5688f291p-1 ++0x1.e99891b04ddafp-1 ++0x1.f86cf3b9e83a7p-1 ++0x1.c3f7a686c78b0p-2 ++-0x1.6150a09268c74p-1 ++-0x1.dcee02e875157p-1 ++0x1.eb1bf69818892p-1 ++-0x1.e5a480f554f3dp-16 ++0x1.84afb5f1ed3adp-1 ++-0x1.df31c5eae509fp-3 ++0x1.ff99528e27db8p-1 ++-0x1.e1a5a6243d05dp-3 ++-0x1.85fce11104791p-21 ++-0x1.fb51005dfdc02p-1 ++0x1.dcb463175cfcep-2 ++0x1.82519454bb349p-1 ++-0x1.fdcdf349a6f25p-1 ++0x1.602547dc6ecefp-24 ++0x1.bec560986a04ap-1 ++0x1.2011857db1424p-26 ++0x1.e1eec570b4a79p-1 ++-0x1.e77cb3d6aba48p-1 ++-0x1.8836556db32e5p-11 ++-0x1.e73505baf1ce0p-1 ++-0x1.e9d165420d859p-1 ++-0x1.ea73d35821c98p-1 ++-0x1.fc7083dcfce44p-1 ++0x1.4eaa72b0ad80bp-3 ++0x1.ee9b055b272f4p-1 ++-0x1.fc77850c869d8p-1 ++0x1.df2253bc59523p-23 ++0x1.ea0197e40cc09p-1 ++-0x1.e12937d9b5de6p-1 ++0x1.b78007f752b47p-1 ++-0x1.caf0a20a2e374p-3 ++0x1.403b25eaecdebp-3 ++-0x1.f09981083beb5p-1 ++0x1.1dfac77800264p-1 ++-0x1.f968b772c835fp-1 ++0x1.4183f2511d03ep-1 ++0x1.14fe334ed4841p-13 ++-0x1.ef68700ccd1ddp-1 ++0x1.495424a43a336p-1 ++0x1.f9f556f848f73p-1 ++0x1.e700764aa6a73p-1 ++0x1.c65e964229e7ap-1 ++-0x1.e91f7469d5670p-1 ++0x1.8d72537de0726p-1 ++0x1.d77df54bf42f3p-3 ++-0x1.e3f4e3f7cff28p-1 ++-0x1.980ec5ab0c67bp-1 ++0x1.82b481c2cab01p-1 ++0x1.e92fc79dc3af8p-1 ++-0x1.84edb030c6673p-1 ++0x1.134ed3adb9b89p-1 ++-0x1.5b0384147576ap-1 ++0x1.ec38f12ad09b0p-1 ++-0x1.9d3d5705b61bfp-1 ++0x1.e9a5111dca87fp-1 ++0x1.5ec077d61d074p-1 ++-0x1.8bb177f1b45d0p-1 ++0x1.026085634ea4fp-1 ++0x1.5dece01fa73aap-1 ++-0x1.f282f0325a811p-1 ++0x1.4e17a4a822867p-2 ++0x1.b710142936fc4p-1 ++-0x1.ea74f086de3c2p-1 ++-0x1.b5bb322363d88p-1 ++0x1.e01382ce9664ap-1 ++0x1.ec9d46fe101abp-1 ++0x1.e080f6a0dd5a1p-17 ++-0x1.dc4d67b50cadcp-1 ++0x1.bb0924c1b5c65p-1 ++-0x1.e4d98477aac5ep-4 ++0x1.ed52a73ea36ddp-1 ++0x1.d20927aa97a9bp-3 ++0x1.b1865059b9e39p-1 ++-0x1.b0caf4d4e58fap-22 ++0x1.f1a1076fec8e1p-13 ++0x1.6c6f93492c70fp-3 ++0x1.adf6648fd1042p-1 ++0x1.eff466a400727p-1 ++0x1.8e77870756612p-4 ++0x1.e4c511850f25dp-1 ++0x1.cced71fd52d9ap-1 ++0x1.ebb466b23c3bep-2 ++0x1.6669639648fa3p-1 ++0x1.7302146a6f168p-8 ++0x1.350056b6cb901p-2 ++-0x1.eede45da2f03ap-2 ++0x1.ac0623cd70a73p-1 ++0x1.87b2d4dcffaf9p-1 ++0x1.edaf06121f8e1p-1 ++0x1.e825a4e96f86cp-1 ++0x1.168a051460dc0p-1 ++0x1.eaa75704957d3p-1 ++-0x1.e142463188648p-1 ++0x1.d81356fe7e9b0p-1 ++0x1.e99b85f839547p-1 ++-0x1.f1296188d7fd8p-1 ++-0x1.a3b6f7aed0ad8p-1 ++0x1.6b0c23fcd3f91p-3 ++0x1.dab904f709a95p-1 ++-0x1.841256a82781ep-1 ++0x1.d26af3ab7517ep-1 ++0x1.e325a078e329bp-1 ++0x1.8aa5a22125090p-1 ++-0x1.b0fb607111e72p-3 ++0x1.e45197e7efcdbp-1 ++0x1.d9c6b1b971945p-1 ++-0x1.5fb6e7f514f55p-16 ++0x1.fa1f54af3ad94p-1 ++0x1.e8e045abf094fp-1 ++-0x1.5b9f05ea1adb3p-3 ++0x1.eee721d6726d1p-1 ++0x1.f1df37430f58ap-1 ++0x1.e58f617f2d384p-1 ++0x1.eb68943e2deb4p-1 ++0x1.dba9c1307a5c6p-1 ++-0x1.edb676b500699p-1 ++0x1.cb6e21730fca5p-8 ++-0x1.a314d11caa5dfp-1 ++-0x1.58d865bce598fp-22 ++-0x1.9da4077805769p-1 ++0x1.bca24367daca5p-3 ++0x1.408035d6251e7p-2 ++0x1.8e30509588bc3p-1 ++0x1.dac374698d877p-1 ++0x1.dc95570330076p-1 ++0x1.ed72961c6499fp-1 ++0x1.e267d33665809p-1 ++-0x1.1fd1b6af697a5p-1 ++0x1.b199976061c55p-1 ++0x1.640c203fbc506p-1 ++0x1.e67287d997f06p-2 ++-0x1.e8092359ccf4ap-1 ++0x1.479fe3a388580p-3 ++-0x1.1c9d850480123p-1 ++0x1.f6b3e32b9007ep-1 ++0x1.ee40207bb6d7ap-1 ++-0x1.3e0fd5ef49ea8p-1 ++0x1.48352432fcd1ep-5 ++-0x1.488b1538a5682p-2 ++0x1.70fc57b129bcfp-18 ++-0x1.ee0460d9eea8dp-1 ++0x1.262c4237b3aa2p-4 ++0x1.24f1f0887a167p-1 ++0x1.bc7813a548ecbp-1 ++0x1.dd3682e648173p-1 ++0x1.1a8247328b1eep-3 ++-0x1.461fb55f0c643p-1 ++0x1.e89a03c027e50p-1 ++-0x1.6445d488fb56fp-1 ++-0x1.f30720b9f9272p-1 ++0x1.10fef55d9e170p-1 ++-0x1.7e6e516a67284p-2 ++0x1.803b652c34127p-4 ++0x1.23e746d6a07b5p-1 ++-0x1.9b0893a2dbf31p-1 ++0x1.df6b52d932cacp-1 ++0x1.eba142e0d30f9p-1 ++0x1.e207a62a59fcfp-1 ++-0x1.f59ff5ac905bep-1 ++-0x1.2252f1f145275p-1 ++0x1.e99bb7a320afdp-1 ++0x1.528a81b8c8b43p-25 ++0x1.66e7a5c93cffdp-9 ++0x1.d8a270540bc22p-1 ++-0x1.8d0303f6f1f62p-3 ++-0x1.032112989c73fp-1 ++0x1.edd9f404d15d9p-1 ++-0x1.d8e2928b59a29p-1 ++0x1.e9fbd325bdd05p-1 ++-0x1.f6c115f45ea83p-1 ++0x1.9dbc024e5215bp-1 ++0x1.ea052157d8d3dp-1 ++0x1.e97b1034a0d7cp-1 ++-0x1.3868c3fb4119cp-3 ++-0x1.6547c3be6a0acp-3 ++-0x1.f0f7210f0ebc5p-1 ++0x1.dbd1b3d836677p-1 ++-0x1.87ba7548c0c70p-1 ++0x1.f32ba685b010ap-2 ++-0x1.5707a4571ae80p-19 ++-0x1.190106b7f25c8p-3 ++0x1.b1b2b37a33650p-6 ++0x1.b7da5623c2a54p-1 ++0x1.a12f204462a9dp-1 ++-0x1.8e33904e6f50ep-3 ++0x1.bac7d494af41dp-1 ++-0x1.5bd7769cc02b9p-6 ++0x1.e2549512a7f87p-1 ++0x1.a34fb7f76f669p-1 ++-0x1.fc4f82b958521p-3 ++0x1.f03885d69275dp-1 ++0x1.93c937306bc8dp-1 ++0x1.ef66f0124ea6fp-1 ++0x1.8683e2fd856ebp-1 ++-0x1.00e2e49d1662bp-1 ++-0x1.240eb5bacc34ap-15 ++0x1.f782b34dadcd6p-1 ++0x1.685494fdc570dp-16 ++0x1.f6f324645f159p-2 ++0x1.f1fc5526b9729p-1 ++0x1.941db204468a9p-1 ++-0x1.fb8797543c4b1p-1 ++-0x1.f19ce1482169bp-1 ++-0x1.e83cf6df11013p-1 ++0x1.ec0474051022dp-1 ++0x1.9b0074ea40e80p-1 ++-0x1.b110618fb5339p-1 ++0x1.e310d4b197c1dp-1 ++0x1.3e4a143f9f023p-1 ++-0x1.c3dc834396667p-24 ++0x1.72d485fe0970ap-2 ++-0x1.4792b4bea367fp-3 ++-0x1.fb6f90001c47fp-1 ++-0x1.563f503456ca4p-6 ++0x1.f49c77ef6eec4p-1 ++-0x1.f3f604ec44843p-1 ++0x1.e5b073ba13507p-1 ++0x1.dfcd37b56a082p-1 ++-0x1.ec7c15c1bc9b7p-1 ++-0x1.f3e33346bb4dfp-1 ++-0x1.70bea3753575bp-1 ++0x1.0ad654e7bcdb2p-1 ++0x1.d84772ae3d0c8p-1 ++0x1.db9382f54f801p-1 ++-0x1.3a0d506141a45p-5 ++0x1.decef09b22fd6p-1 ++0x1.e990941dd115ap-1 ++-0x1.4ac55461df70ep-1 ++0x1.caba758c29af2p-1 ++0x1.e8b807c00d6bcp-1 ++0x1.fadb16bea03d0p-1 ++0x1.7b8f62c69b8a2p-13 ++0x1.db1814c6b7c5cp-1 ++0x1.d8a437361ed5ep-1 ++0x1.f044936247105p-1 ++-0x1.f29923dbc3facp-1 ++0x1.ede3135347315p-1 ++0x1.ecb6a131593d5p-1 ++0x1.69be27f5085c2p-2 ++0x1.d87e91b7e07b7p-1 ++0x1.3e1573b76d74cp-13 ++-0x1.7110638b16bc4p-1 ++-0x1.2b60914429455p-2 ++-0x1.45e0c3984738ap-3 ++0x1.042141ca2ed6cp-18 ++0x1.384f45b294648p-1 ++0x1.feba34573e769p-1 ++-0x1.ea047532c3043p-1 ++0x1.fbe731d9f7db8p-1 ++0x1.b7b916674f33fp-1 ++0x1.fb43d2c826ee8p-1 ++0x1.df7c8777dba5ap-1 ++0x1.ed5ea12bfef39p-1 ++-0x1.638ad761f476ap-1 ++0x1.fc4bf5179e5d6p-1 ++0x1.e3b6708ecfee8p-1 ++0x1.dbce065bbf8a3p-1 ++0x1.7ce703c2bf2a6p-1 ++-0x1.ea19b32b1c2dfp-1 ++-0x1.fa1886281c79bp-1 ++0x1.40057632df635p-3 ++0x1.be3342c4dacb3p-1 ++0x1.e20274fe208a9p-1 ++-0x1.e15a87fb65354p-1 ++0x1.f9c7e2ecd680bp-13 ++0x1.e3c93361c3a97p-1 ++0x1.f0aa055bc4ec5p-1 ++0x1.1d7f011b0caa7p-1 ++0x1.27ef5716d9743p-1 ++0x1.0109b001e0b16p-1 ++0x1.06fcb4f915884p-1 ++0x1.d912e662c11fdp-1 ++0x1.f459c0e5d6307p-1 ++0x1.33b182a9dd437p-7 ++0x1.f050a642bbd28p-1 ++0x1.67dd05510a128p-1 ++0x1.f508c0df81a84p-1 ++0x1.dc24f6d5d88e9p-1 ++-0x1.1de410116c6abp-3 ++-0x1.ce8021cd33ff0p-20 ++-0x1.df8e14d8335ccp-1 ++-0x1.d944534af1d02p-1 ++-0x1.7a7641865ee08p-1 ++0x1.0a79566e358dcp-2 ++0x1.e1ddb24870183p-1 ++0x1.0be5106302396p-1 ++0x1.e84a706f6d265p-1 ++-0x1.fb54f05a586f3p-1 ++0x1.d7f7810bbad7cp-1 ++-0x1.e911418959876p-1 ++-0x1.eef2e7388b0b8p-1 ++-0x1.096cd55dea973p-2 ++0x1.e3edc46730656p-1 ++0x1.1f999553c9965p-1 ++0x1.53bff03662b79p-1 ++0x1.cc4591ffd8c8fp-1 ++0x1.32edf494b513fp-1 ++0x1.f92963d71b0a5p-1 ++0x1.ca73a41b238a2p-1 ++0x1.a08fc5e1724bfp-1 ++0x1.3e603689d203ap-1 ++-0x1.995221a7cd650p-1 ++0x1.dee8b256137cdp-1 ++-0x1.053fb553b89f8p-1 ++-0x1.496161b184764p-1 ++0x1.eb38128f82439p-1 ++-0x1.f613a094bcd5bp-1 ++0x1.d97577265ac94p-1 ++0x1.b2613742a87f2p-1 ++-0x1.9ae634697f924p-2 ++-0x1.fc2075806621dp-1 ++0x1.e0a975f696bc8p-2 ++0x1.f6f6b7b5834b8p-1 ++-0x1.fe1f228d0b462p-1 ++0x1.f70a91841af44p-1 ++0x1.e2f9c07852f70p-1 ++0x1.7273722e70f48p-2 ++0x1.db9c019d4ecbbp-11 ++-0x1.59ab151c1482cp-1 ++-0x1.c2a3b1d7f7890p-1 ++0x1.e700830d53942p-1 ++0x1.6324a18a48715p-1 ++-0x1.f8d06493cf734p-1 ++0x1.f80b9422bce4ap-6 ++-0x1.23b475322f69dp-9 ++0x1.25489233b69fep-3 ++0x1.a305e63ca5b92p-1 ++-0x1.ff6614d7db93dp-1 ++0x1.52b3468ba247fp-19 ++0x1.f631f6454296ap-1 ++-0x1.0ccec227b1aa8p-1 ++0x1.1c0a50f58ee7ep-1 ++0x1.eb1881275a5fap-1 ++0x1.e5a3c6b686c17p-1 ++-0x1.5abd34f01cc55p-25 ++# acos multiple precision fallback. ++# Implemented in __cos32 in sysdeps/ieee754/dbl-64/sincos32.c ++## name: slow ++0x1.91744378d312fp-25 ++0x1.e31933dfcae5ep-6 ++0x1.560a94c69898dp-28 ++0x1.4ede34c4c5b9cp-39 ++-0x1.b5caf13967673p-28 ++-0x1.d242039676722p-32 +diff -urN glibc-2.17-c758a686/benchtests/asinh-inputs glibc-2.17-c758a686/benchtests/asinh-inputs +--- glibc-2.17-c758a686/benchtests/asinh-inputs 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.17-c758a686/benchtests/asinh-inputs 2015-06-20 21:22:16.295458166 -0400 +@@ -0,0 +1,303 @@ ++## args: double ++## ret: double ++## includes: math.h ++0x1.408fb643484cep-11 ++0x1.f0763423f1d52p-23 ++-0x1.681573418e494p4 ++-0x1.87cc25833f74bp16 ++-0x1.ad3df5eb7db54p24 ++0x1.90f147b3d0164p829 ++-0x1.60b1066c6712ep71 ++-0x1.5997c27aac9ccp332 ++-0x1.2cb3142c669a0p15 ++-0x1.ec882168157e6p191 ++0x1.43a1d0e6eae29p109 ++-0x1.2b43c388e1857p672 ++0x1.f11c07e219bafp7 ++0x1.f5efb379e3b3fp952 ++-0x1.405cf322b684cp-13 ++-0x1.fa64c4090d337p43 ++0x1.a98724f016a93p-13 ++-0x1.5743f3604a7fbp10 ++0x1.042971d37879bp-17 ++0x1.d4cda5814c00fp-2 ++0x1.ec1e878f29cf8p97 ++-0x1.6a4cd37896c5fp-24 ++0x1.da85d34b19160p-10 ++0x1.c068c277d171fp-17 ++-0x1.b3e2d1ead4160p-1 ++-0x1.ac8a62deb27c3p521 ++-0x1.e28e32ce20a25p-1 ++-0x1.e70635022c5fdp315 ++0x1.984146d8a6c69p20 ++-0x1.67cf155405aadp747 ++-0x1.a852444a7de0ep-23 ++0x1.92e4800542f83p108 ++-0x1.564ba0e9ad540p-7 ++0x1.c36c11c290063p20 ++0x1.4723d5459434cp-26 ++-0x1.43c1535cd024bp-11 ++0x1.6d46e7252da2fp388 ++0x1.756f2685e9ca9p-26 ++-0x1.72268726f4141p22 ++0x1.558480e0da8bdp15 ++0x1.ef0970332ed6fp-3 ++0x1.2015764e98ea6p481 ++-0x1.3a0f66a229b60p871 ++-0x1.c833f28187420p-25 ++-0x1.a0ea74513cffbp778 ++-0x1.d2dde734625d1p13 ++-0x1.996507c01ea97p25 ++0x1.d36f165b63b8fp880 ++0x1.445234d59e32bp-2 ++0x1.cd74423b4c4aep15 ++-0x1.c0b6631621425p-1 ++0x1.a2e0f00779702p-25 ++-0x1.fcf5c0266c2f2p-22 ++-0x1.af38a56120728p-21 ++-0x1.9ec217ea497dap1 ++0x1.57a000ceee049p800 ++0x1.6c1b6312efacfp783 ++0x1.afb5c0c4f933ap6 ++-0x1.f9267499e3327p16 ++-0x1.9b5ba5b496ae5p10 ++0x1.3975f02686229p10 ++0x1.36b913a68fe70p901 ++0x1.8946b691ecf5ap10 ++-0x1.efbb62a588bccp24 ++0x1.f3de8628048d9p-8 ++0x1.8ec222d562aa9p25 ++-0x1.ac03e6a0d863cp22 ++-0x1.6d9d94c1e0b6fp23 ++0x1.9807337060f87p-10 ++0x1.0f8045a313158p26 ++0x1.fe8cd64528951p-16 ++-0x1.51c184460cfafp-26 ++-0x1.74b0f442763c7p20 ++-0x1.d30da53c93e10p18 ++0x1.749735f182597p15 ++0x1.253da08c9c318p144 ++-0x1.2714417156ae3p693 ++-0x1.189320570f30bp26 ++-0x1.a2e120ac12626p756 ++0x1.ce724582eabcfp-24 ++0x1.30dcf0414c561p292 ++-0x1.1a1790d8a72d1p452 ++0x1.3242254b631b3p-26 ++-0x1.b5890305f1b78p11 ++0x1.019a86d2e2300p18 ++0x1.0e9cc39a3bff8p-14 ++0x1.bc8ff7e59e82ep18 ++-0x1.235a45afa3842p25 ++0x1.0b2c87979b28cp23 ++0x1.c717951ecf869p-9 ++0x1.daff104bb08a5p25 ++-0x1.b14b119b47d4ep5 ++0x1.6e8a94f758a02p802 ++0x1.7788055510c4dp23 ++0x1.6120d7e4e5d9ep498 ++0x1.1154e15c2c284p-24 ++0x1.eb28429726661p423 ++-0x1.b9faa23669003p9 ++-0x1.a615746664b00p339 ++-0x1.835384e92d59cp56 ++0x1.1fb4b0fe36aacp-3 ++-0x1.e440c3183f046p-19 ++-0x1.1e714012cae50p22 ++-0x1.1821b0014d9cep-16 ++-0x1.5de4c1e0a1bfep-24 ++-0x1.c1e5c78840e91p25 ++0x1.f0b1d4cd82236p18 ++-0x1.450ff3ad26e5bp984 ++0x1.23438314fb10bp0 ++-0x1.82be43e413126p14 ++-0x1.5c70206fd22f7p628 ++0x1.7e213160ec541p-15 ++0x1.5487358228cedp-14 ++0x1.4a163440f7c98p4 ++0x1.ad443265c6b4ap845 ++-0x1.732c509382338p-2 ++0x1.929ba224e2240p-17 ++0x1.a026b0485c0e8p12 ++-0x1.fa4e77f1b2343p-12 ++-0x1.3a2ac1c73ae50p5 ++0x1.0c4a80d41a2f7p-20 ++-0x1.1c57b37023dcep150 ++-0x1.2c1b509030e5dp26 ++-0x1.c7cdd089827cdp-26 ++0x1.3d88b121650aap8 ++-0x1.1583f2a9d2d5dp618 ++0x1.295d65809666fp111 ++-0x1.3dc8c1a73f146p-3 ++-0x1.4dc715a6ae290p999 ++-0x1.3808360307701p464 ++-0x1.adf4158880f7bp2 ++-0x1.3913104f0eea6p-16 ++0x1.8c91558dbd886p-2 ++-0x1.d67f73ef2736ap11 ++0x1.218c0592aa7fcp95 ++0x1.4c1e32e79005dp7 ++0x1.395461c5f96a6p5 ++-0x1.a311a7fbb5afap-12 ++0x1.f07b95fd415ccp9 ++-0x1.08745233a4ce8p-13 ++0x1.38f122e7f7be0p220 ++0x1.8c9c967e8e99ap-5 ++-0x1.3353e4fc6b002p987 ++0x1.945a20aa092e2p4 ++0x1.a7a935f93958ap22 ++-0x1.946865aa1c43cp-20 ++0x1.001d955d8a436p344 ++-0x1.5146c4a1225eep-22 ++0x1.ffab14f637eaap733 ++-0x1.3d50819d9de92p-8 ++0x1.84a7b4b80f227p4 ++0x1.73af93193478dp-6 ++0x1.3ac9b75c613bdp160 ++0x1.dafd9764a705fp13 ++0x1.91bc310a7648ep243 ++-0x1.531fa4a4bac3ap713 ++0x1.95c32605e6c59p20 ++-0x1.012141d71b636p-2 ++-0x1.eb4540a49b927p20 ++0x1.9c4716594b306p-24 ++-0x1.242df1aa8bf7ep642 ++-0x1.2d1fc7cf19d2ap-27 ++0x1.161fd6fd320d5p745 ++-0x1.3aaa34f975620p811 ++0x1.9e11325b1c3c4p22 ++-0x1.a838b07a6641ap5 ++0x1.8b1a0407ae636p7 ++-0x1.eb717004808e1p469 ++-0x1.d166757807df4p-6 ++0x1.2a57014d8c24bp317 ++-0x1.5ea093bc15910p468 ++-0x1.2545b7ec8b35fp-3 ++-0x1.e47ca00d1f14ep929 ++0x1.af09542db1b29p-18 ++-0x1.8d4bc4f005536p6 ++-0x1.8d564435d4d3fp-9 ++0x1.993a6363227e2p12 ++0x1.bec162f84a16cp13 ++0x1.f0a22293c4ecbp852 ++0x1.9eb0b40303dcap843 ++-0x1.0cdae1dc93ed0p22 ++0x1.21efa25110e19p12 ++-0x1.cf1531a43c397p144 ++-0x1.a043f6a911bdep-16 ++0x1.816c4063e718ap-15 ++0x1.e23b95950e47dp-21 ++0x1.a0830483382afp2 ++-0x1.52e49239a95d4p957 ++0x1.f73a3049f9d76p16 ++-0x1.1304063a4fbe5p316 ++0x1.f5b95104bb64dp320 ++0x1.661d765a50087p13 ++0x1.7bb5671e2bfcap719 ++0x1.3e14e736580b3p-20 ++-0x1.11340035e5609p-25 ++0x1.c4d527df0d553p762 ++-0x1.731bc7cf3026ap7 ++-0x1.079c1776f403fp965 ++0x1.e6879000598aep-28 ++-0x1.d3bee1e831937p25 ++0x1.c3b5f0096df0dp24 ++0x1.667d70b10ce7ep-6 ++0x1.c780d2406b7d1p-26 ++-0x1.df8fd3fe95d12p27 ++0x1.89494217ed887p204 ++-0x1.ea94d70c825d3p764 ++-0x1.04366739a80cbp11 ++0x1.75f1269063e4dp5 ++0x1.0a46e3262c2b8p20 ++-0x1.92c337d25b414p-4 ++0x1.5c2cb3414299cp154 ++0x1.07f7c34023735p881 ++0x1.c64b8297569c4p207 ++0x1.13f4d3bbd6417p8 ++0x1.bde9c42ffd9ecp-15 ++0x1.9e07054aa7309p743 ++-0x1.dd8c11c0073a4p-16 ++-0x1.e04d9283ac8d4p20 ++-0x1.c0f2e29b30840p10 ++0x1.55a4c648ebcc2p378 ++-0x1.7b0c92c6d8687p658 ++-0x1.ed8bb5ef46109p24 ++0x1.5cc2904baa4d2p-18 ++-0x1.b688c6944fa1dp-3 ++-0x1.2330768204f78p754 ++0x1.650441a7059bdp554 ++-0x1.0d1c66b57d36bp493 ++-0x1.54e35714807acp368 ++-0x1.6165d7bebf894p776 ++0x1.7e0ba7c987b9ep7 ++0x1.d139574e3913ep168 ++-0x1.40cc4145ea64ep19 ++0x1.0db7e5339af44p-8 ++-0x1.87410240fe22cp-9 ++-0x1.d0f46605d4a27p18 ++0x1.d1e8b19cca04dp-19 ++0x1.979981827668ap-21 ++0x1.2576745f4cca6p22 ++-0x1.1f02e2c0c288dp14 ++-0x1.77bab17202acap-13 ++0x1.25c5071d2dc6ep8 ++-0x1.306185b351fdap26 ++-0x1.ad6e853661ee0p587 ++0x1.f389b34d6b10fp-13 ++0x1.08fa931bd21f5p10 ++-0x1.b65bf00b921e8p-24 ++-0x1.cbb5f173385aep82 ++0x1.a32cd47340669p2 ++-0x1.a83fd05f605e6p-25 ++0x1.8184a3fcc1ac3p942 ++0x1.61c9644526617p809 ++0x1.b12c01289b0c4p15 ++-0x1.16a4a50f1192bp-17 ++-0x1.5658b26bd2888p-9 ++-0x1.8c5563528e33bp-14 ++-0x1.fd7e32bd8a9adp-23 ++-0x1.1106a6a425747p-18 ++0x1.98109155dd7bfp21 ++0x1.dbd635362ec6bp6 ++0x1.4a1600b2e95dbp880 ++-0x1.2fd6819d3d81cp361 ++-0x1.28f5b629029b5p12 ++0x1.64c6a3d5a0867p304 ++0x1.97ae606371057p22 ++-0x1.d61a76409f8f9p-25 ++0x1.a4c67223582ffp-27 ++0x1.b569919b79b6fp214 ++0x1.1bf0416ef51a4p-28 ++-0x1.1b9502079e873p-25 ++-0x1.a94006dd19303p355 ++-0x1.78bd67abffa91p20 ++0x1.96d320a0153bap383 ++0x1.f82770adf361dp19 ++0x1.ee0725a2dbe84p-28 ++0x1.93d4c19692fbfp80 ++0x1.d69c251aa0003p-3 ++-0x1.36c310f2a5894p-26 ++-0x1.7bbce527b5784p19 ++0x1.5a90f2032fb5ap-14 ++-0x1.194fe079c05eep1002 ++0x1.2e9a406645b9bp609 ++-0x1.c566e4a419660p-14 ++0x1.f917868895288p872 ++0x1.a966a17972ca9p601 ++-0x1.6d5eb4970b882p-20 ++0x1.c1a0d0ee96f75p27 ++0x1.958fd1185d839p-24 ++-0x1.c738b5fffeeb2p4 ++0x1.91bf33cdb6804p710 ++-0x1.66e0a7e4034dbp224 ++-0x1.dd6e42f5992c4p667 ++-0x1.6e17000848200p951 ++-0x1.f625958e05264p-1 ++-0x1.63e025fbcdcacp442 ++0x1.c5fb927d2cb09p8 ++-0x1.d7e514672b2ddp987 ++0x1.0eec25d2a59ccp27 ++0x1.342f35eabf622p707 ++-0x1.6ffad140301c8p609 ++-0x1.5b10b0ca4ea9dp-21 +diff -urN glibc-2.17-c758a686/benchtests/asin-inputs glibc-2.17-c758a686/benchtests/asin-inputs +--- glibc-2.17-c758a686/benchtests/asin-inputs 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.17-c758a686/benchtests/asin-inputs 2015-06-20 21:22:16.296458135 -0400 +@@ -0,0 +1,2511 @@ ++## args: double ++## ret: double ++## includes: math.h ++0x1.350fc6069df8ap-1 ++-0x1.eee2112c4876bp-1 ++-0x1.236b62ec50852p-1 ++0x1.edc5c63489e51p-1 ++-0x1.fd62800520adfp-1 ++0x1.d475f0f7403afp-1 ++0x1.e90832724b53cp-1 ++0x1.f609c0391a573p-14 ++-0x1.feea04702b990p-1 ++0x1.e8d6535b0d1c2p-1 ++-0x1.9c7115f5fa7edp-23 ++0x1.08d826c7ee854p-1 ++0x1.e8e045abf094fp-1 ++-0x1.5278029b07e33p-3 ++-0x1.ea9383079d41fp-1 ++-0x1.f4e3046089560p-1 ++-0x1.fb398088adb40p-1 ++-0x1.3e3c739c48dc4p-1 ++0x1.7817337fddb7bp-3 ++0x1.7dd391d9fc392p-3 ++0x1.41afe6440736cp-1 ++0x1.bfb881b8085a3p-1 ++-0x1.e6707556b55cdp-1 ++0x1.db3e67625fe65p-1 ++-0x1.1bbd53433ed31p-1 ++0x1.6188f44707072p-1 ++-0x1.75a356a8a9292p-5 ++-0x1.ddb0166dd02a0p-1 ++0x1.e50b5048cb701p-1 ++-0x1.f8ad822c7b0e3p-1 ++0x1.9800b2fed7f04p-1 ++0x1.b1dc245081b6cp-1 ++-0x1.f72481a2b0f3ap-1 ++0x1.597d37e0d6f70p-21 ++0x1.ef40e79b3e65ap-1 ++-0x1.5ba123fb3ff91p-1 ++0x1.45bfc165da8f7p-1 ++0x1.ccac70b0bde88p-1 ++-0x1.f41a414f7827cp-1 ++0x1.9b875417727f6p-1 ++-0x1.c62a454b8d40bp-1 ++-0x1.e0a141c4f0b16p-1 ++0x1.4264601195208p-2 ++-0x1.46119179eb783p-1 ++-0x1.dfc3024659454p-1 ++-0x1.e14ee796afcc8p-1 ++-0x1.e99e96ab82107p-1 ++0x1.e234b67ec84f9p-1 ++0x1.d53303c005425p-16 ++0x1.ed5b0764a14a2p-1 ++0x1.b5e0c3ea9c8e9p-1 ++-0x1.db7d6214c24c6p-1 ++0x1.85d832f631a51p-2 ++-0x1.0be2d5dd39df0p-2 ++-0x1.9ba4068536d4ep-1 ++0x1.e3b6708ecfee8p-1 ++0x1.f81a9367f49ecp-1 ++-0x1.e4347223f7a7bp-1 ++0x1.a8d8b60a820e6p-2 ++-0x1.ec157180be1bdp-1 ++-0x1.eb95b087e8c43p-1 ++-0x1.6bdd166779c0bp-1 ++0x1.8bb3345d66b47p-1 ++-0x1.e02f643898ecap-1 ++-0x1.ab494400a4aabp-1 ++-0x1.01f7d442b79e4p-3 ++0x1.ea5ab67fbbf14p-1 ++0x1.f603237a71369p-3 ++0x1.f4a57127c7a0cp-1 ++0x1.69a0a717bd007p-2 ++-0x1.64fb05d3406f4p-1 ++-0x1.a6a73323151a3p-1 ++-0x1.22fcf3cc1a298p-1 ++-0x1.d166868f2b02fp-3 ++0x1.350857bbe150fp-3 ++0x1.ea03400cda450p-1 ++0x1.934551bfdd4f7p-1 ++0x1.a1bf13ff7e529p-1 ++0x1.40e3e60b110dcp-1 ++0x1.ebf2d1787c1b0p-1 ++0x1.bf44e6858ccc2p-1 ++0x1.efb2212f852c5p-1 ++0x1.e4bcf61e9db8ep-1 ++-0x1.f67e4278236dbp-1 ++0x1.72e2e6f704395p-8 ++0x1.eb18e737043a5p-1 ++0x1.c11e3263f847dp-19 ++0x1.6c8dc764c7ce3p-1 ++0x1.3a30f3a82e677p-2 ++0x1.5d3554f6157efp-3 ++0x1.d7e135698a916p-16 ++-0x1.9a0b900abb552p-1 ++-0x1.db02f20dbc26bp-13 ++0x1.dbf69357aebd4p-1 ++0x1.1c15c1b6076dbp-1 ++-0x1.98e8e522e4a82p-23 ++-0x1.60da4694b88e1p-1 ++-0x1.e82085e53dbf0p-1 ++-0x1.0cce4159c974dp-1 ++-0x1.edebc49f4f3bcp-1 ++-0x1.d5d0b54aec8f3p-3 ++-0x1.b6c7247c84ca1p-2 ++0x1.566d76162c4a2p-1 ++0x1.1f8126af6a5eep-1 ++-0x1.4042c01dfeb13p-1 ++0x1.3745936ce6406p-2 ++0x1.e845447d64568p-1 ++0x1.e9e5d6a4f999ep-1 ++-0x1.881fb480c1717p-2 ++-0x1.632ec650a0086p-1 ++0x1.ea79105af3018p-1 ++-0x1.e87f8637d44ffp-1 ++0x1.2038f78b9bcc0p-2 ++0x1.888731b818bb9p-1 ++0x1.247cb5abaf830p-1 ++0x1.71d2a5d08bb38p-3 ++-0x1.30f5d4f0d5da3p-1 ++0x1.e8eee13ebc573p-1 ++0x1.35a443a6ef606p-22 ++0x1.1f4110dbc1d7cp-1 ++0x1.ab85b5da29994p-1 ++-0x1.080f952236c35p-1 ++-0x1.2b5b02e6cc1b2p-3 ++0x1.ac830678d8c8ep-4 ++0x1.0ba5029d5c201p-1 ++-0x1.2b3e149bb0426p-2 ++0x1.eaa744fd96fbap-1 ++-0x1.ebf5435363845p-1 ++-0x1.f47ea66f3af8ap-19 ++0x1.e9c7d49d082bfp-1 ++0x1.ea64823156f61p-1 ++0x1.ea9222fcef492p-1 ++-0x1.38ca90ff41214p-3 ++0x1.98b000eb73a71p-1 ++-0x1.3fb91174bf8cep-1 ++0x1.6831750c7d576p-8 ++-0x1.e6c711f8a07a2p-1 ++-0x1.e10a8025fd5c2p-1 ++0x1.df7c8777dba5ap-1 ++-0x1.6c92c2bf14b20p-11 ++0x1.c2b9937c51413p-10 ++0x1.ed9a717edd7eap-1 ++0x1.26cb23fb114cep-3 ++0x1.a1dd30e8d133ap-1 ++-0x1.596e3118407aap-1 ++-0x1.815f557e4dd72p-1 ++0x1.91d3b66fca3a2p-1 ++0x1.aee2069bb58c2p-1 ++0x1.410da160d3759p-6 ++-0x1.efd3965c7e5acp-1 ++0x1.ebcc105c3c99dp-1 ++0x1.f9c7e2ecd680bp-13 ++-0x1.0d0876f871020p-1 ++-0x1.1cb73699e8924p-1 ++-0x1.f33b17f4530b4p-1 ++-0x1.cd90d53a85604p-24 ++-0x1.e7b7065c2a56bp-1 ++0x1.4325b7a1b9323p-2 ++-0x1.3007019386da4p-5 ++-0x1.2afe01c77967ap-13 ++-0x1.dd2f071cce027p-1 ++0x1.79dbd61da7b2fp-3 ++0x1.90a0030825b71p-1 ++-0x1.3b898257384cap-1 ++-0x1.5c13731da33bap-2 ++-0x1.df2c8655fc70dp-1 ++0x1.1dbe97dccb13ap-24 ++-0x1.fad96389524bfp-1 ++0x1.ddccc6b661857p-2 ++-0x1.fb6fb5159af3ep-1 ++0x1.d94283b31661cp-1 ++-0x1.a08b373392dc9p-1 ++0x1.bb7ec42dcb619p-2 ++-0x1.f450159e992b8p-1 ++0x1.6959f4fae20f8p-24 ++0x1.36f464d433610p-1 ++-0x1.c2cc227b47f2bp-1 ++-0x1.3eb9f3e9ab4fep-1 ++0x1.655d872a08e7bp-1 ++0x1.426bd7fd10932p-1 ++-0x1.bd54d6b8bf754p-25 ++-0x1.ca48c150acb42p-1 ++0x1.fba5275cb7d91p-1 ++-0x1.de01b625f1851p-3 ++0x1.ed715043085c5p-1 ++-0x1.e4bed6f91c84bp-1 ++-0x1.0c6132d48b23ap-1 ++-0x1.8740844edfccfp-1 ++-0x1.f5ea24dfceaccp-1 ++-0x1.4e1ea0cb718b9p-10 ++-0x1.e2e3f55bb23a1p-1 ++-0x1.ef8592238558ap-1 ++0x1.ba09c237c2a98p-1 ++-0x1.1c02e1ae8e614p-3 ++-0x1.e3480667a3c1dp-1 ++0x1.e098e320da0bap-1 ++-0x1.020e63d1fb6b3p-10 ++0x1.156314d8b8b9ep-1 ++-0x1.a6d562a0b9b68p-1 ++-0x1.a556923b876e4p-1 ++-0x1.005624a6a1606p-2 ++-0x1.4515b4c2b21dap-1 ++-0x1.00882585a29eep-1 ++-0x1.4e97477367b64p-1 ++0x1.e56aa246ff0e4p-2 ++0x1.f69774c91b3a3p-1 ++-0x1.edbeb6d147be3p-1 ++-0x1.d044d435326e6p-1 ++0x1.9dd6d688e8b6ap-1 ++0x1.8832042b08d37p-1 ++-0x1.e755f3286db4ap-1 ++-0x1.7741b1eae9cc5p-1 ++-0x1.ec4f82e92c41cp-1 ++0x1.c470754b52d70p-3 ++-0x1.cdf6e43174ac0p-3 ++0x1.b54d76dc019edp-1 ++0x1.de1511c382622p-1 ++-0x1.1b6bb0f6cd48dp-1 ++0x1.f8f3a7b3d26dbp-10 ++-0x1.e8a697e00810dp-1 ++0x1.029cb182129c5p-1 ++-0x1.82fb23737c09ap-1 ++-0x1.ba3f8283bda3cp-1 ++0x1.32ef66d1351e1p-1 ++-0x1.ff0942c4470a9p-1 ++0x1.e861824f0b0c5p-1 ++0x1.0ad654e7bcdb2p-1 ++0x1.94bf67e731b1dp-21 ++-0x1.ce92262e12415p-3 ++-0x1.b11a761584f00p-1 ++-0x1.ee0375698a186p-1 ++0x1.72968114620fbp-3 ++0x1.38a8e30dd439dp-2 ++0x1.ef7a104666151p-1 ++0x1.1b8030b9ef132p-1 ++0x1.e52ab2d0668d7p-1 ++-0x1.00e2e49d1662bp-1 ++0x1.7aa0818bb671bp-23 ++-0x1.ecf921278c665p-1 ++0x1.e53b304fb4d06p-3 ++0x1.3748859f74cebp-1 ++-0x1.e96cd6cb3a5dap-1 ++-0x1.eadbe1b00f3bap-1 ++0x1.34b8b20a231ebp-1 ++-0x1.a133128a2cac6p-1 ++0x1.f0ffe198f98f8p-3 ++-0x1.a978c66c2b77ep-21 ++0x1.e0afd4eddd684p-1 ++-0x1.eb3b238d0737ap-1 ++-0x1.e514d20443604p-1 ++-0x1.9d64d47733225p-3 ++-0x1.e589d06cb88d4p-1 ++-0x1.360155ce19621p-1 ++0x1.db3d40b252ac3p-1 ++0x1.1fbe750678f55p-1 ++0x1.033e6517daa6fp-5 ++-0x1.ed55067dcc2e0p-2 ++0x1.df2253bc59523p-23 ++-0x1.879d741b2c118p-23 ++0x1.b47fc608b2e66p-1 ++0x1.d74ca166c7f3bp-1 ++0x1.f5f1256f888b1p-1 ++-0x1.e06af0ec49382p-14 ++-0x1.e97461cc47dabp-1 ++-0x1.e6fe5447590afp-1 ++-0x1.e86c3331f93a8p-1 ++-0x1.aacae317ef936p-1 ++0x1.b41644690944cp-1 ++-0x1.8209c34d990bap-1 ++0x1.712d01d18f1acp-1 ++0x1.ed0c5662218c3p-1 ++0x1.90d8e69b9ce07p-1 ++-0x1.a7b9e784d9434p-16 ++0x1.f91c375372b6fp-1 ++-0x1.bf83e21f654b3p-1 ++-0x1.e38cc36ff8c63p-1 ++-0x1.842b3414ac978p-1 ++0x1.161e221d66041p-2 ++-0x1.e9a1529dfa710p-1 ++0x1.164f53c3dbd36p-1 ++-0x1.e2a192784167ap-1 ++0x1.d2f31136d5558p-1 ++-0x1.0cad003c37274p-22 ++-0x1.e402a7e83b556p-1 ++0x1.d0ee108472a16p-1 ++-0x1.0eb530c4ce24ap-13 ++-0x1.ef29f4bd04e93p-1 ++0x1.dc65a4f6e740cp-1 ++-0x1.97d975a6ad4f1p-1 ++-0x1.b427d0ab69502p-2 ++-0x1.f84bc3e23afa0p-1 ++-0x1.eada1177b2a78p-1 ++0x1.f9f556f848f73p-1 ++0x1.5da9b1ed0a67dp-2 ++-0x1.b09c16fdb0e04p-1 ++0x1.8099017d801c4p-1 ++-0x1.86a880766a1c9p-1 ++-0x1.303886d1999d3p-2 ++-0x1.3b32d4601049dp-2 ++0x1.9af5d2ec8ebd9p-1 ++0x1.7b7961500158ap-3 ++-0x1.850fc657a7c8dp-1 ++-0x1.679055ba9585fp-2 ++-0x1.a334d05fa6dd2p-1 ++0x1.54edc38ae367fp-1 ++-0x1.149aa666c3c46p-2 ++0x1.db29728be3d13p-1 ++0x1.ef2d366fb9622p-1 ++0x1.85d2c6d29e956p-1 ++0x1.6cc7155575699p-2 ++-0x1.070fb3b78d7bap-13 ++0x1.b996c3cc0af1dp-1 ++-0x1.ecd953aeda13ap-1 ++0x1.4b4da5a783ab2p-1 ++-0x1.da0f94397e1efp-1 ++-0x1.eebfe7785b810p-1 ++0x1.bbbd81413465ap-2 ++-0x1.db37b245824d8p-2 ++0x1.b18707b322819p-6 ++-0x1.63aaf1836f8f5p-4 ++-0x1.73b5c0ef358ffp-1 ++-0x1.f3f5449170a5dp-1 ++0x1.679742e395bb2p-3 ++0x1.0f5d16ce3edabp-12 ++0x1.6868a3065fa6ap-1 ++0x1.e09861e83936cp-1 ++0x1.426c2703c1edbp-2 ++-0x1.784ef6124eac0p-10 ++0x1.f4da573b55ec2p-1 ++-0x1.1250820739879p-1 ++-0x1.926f219c2ebc7p-1 ++-0x1.b03cb5319aa16p-1 ++-0x1.432597af65dc0p-1 ++0x1.f2ef13107c805p-1 ++-0x1.debb0319481e9p-1 ++-0x1.e6c9b767c2e47p-1 ++-0x1.1cfef6b1b5391p-3 ++0x1.a3495200a739dp-1 ++0x1.bb7d031207cbcp-1 ++-0x1.a1e1472875de1p-1 ++-0x1.fef5368baa990p-1 ++-0x1.ffa8a2b9fe667p-2 ++-0x1.db17773676353p-1 ++-0x1.7744f61c58e3dp-2 ++0x1.94efe0d3de07ep-2 ++0x1.d28cd2f0b7253p-1 ++0x1.71ec10c132d7dp-1 ++0x1.eec3c508f7debp-1 ++-0x1.84c3358f28de2p-1 ++-0x1.e88bb44ebcca7p-1 ++0x1.c8dfe2e844f26p-1 ++-0x1.5764f1562f46cp-1 ++0x1.dd7fc52e06795p-1 ++0x1.ead0e0dd735c1p-2 ++-0x1.d9c472df196e8p-1 ++0x1.47397541dfafap-1 ++-0x1.efe2c7ae66583p-1 ++0x1.f39bc1d029169p-1 ++0x1.388e371209c65p-1 ++-0x1.cf7594c4759eep-19 ++0x1.93ba85eda890cp-2 ++0x1.ef7e57c04e5e5p-21 ++0x1.3a13625122b61p-1 ++0x1.f03355e0191c2p-1 ++-0x1.eaa0b7cbc4b05p-1 ++0x1.dc64653df1bc8p-1 ++-0x1.da0274b24d4e5p-1 ++0x1.1ef635c892de4p-1 ++0x1.7985928fa8ea5p-2 ++0x1.e8af54cc7a4a1p-1 ++-0x1.4ecfd3add4ca1p-1 ++0x1.edae154f725f1p-1 ++-0x1.f841c459354cfp-1 ++0x1.640c203fbc506p-1 ++0x1.e1334385061fbp-1 ++-0x1.e4af910db6fb1p-1 ++0x1.eef8e75eeff24p-1 ++0x1.52b3468ba247fp-19 ++-0x1.c3007317cdb73p-1 ++0x1.793397c5de6cfp-1 ++-0x1.56f0f40ef4f93p-5 ++0x1.7137163d0b95cp-26 ++0x1.d97632e6c0216p-1 ++-0x1.58f200ed16778p-1 ++-0x1.e333144686ce6p-1 ++0x1.ecfff5d1ed4fcp-1 ++-0x1.bbcb739c535d8p-3 ++-0x1.b83b54ffc1ce3p-1 ++-0x1.c5b4f73fa50c8p-25 ++-0x1.f0dcf6647d4a6p-17 ++-0x1.e2a0b2142f471p-1 ++-0x1.6811368ab0abbp-1 ++-0x1.dc98c564661f8p-2 ++-0x1.51a64736cca11p-1 ++0x1.a87ec3c5f01d2p-2 ++-0x1.13c43714b5577p-4 ++0x1.ecb79537e7c0bp-1 ++0x1.8ad66704aa830p-1 ++0x1.8b81a17344821p-3 ++0x1.fbea24d5ecac7p-1 ++-0x1.d5b456504afabp-1 ++-0x1.68a3377a06206p-1 ++-0x1.e52744bcbb1bfp-2 ++0x1.968042aade389p-1 ++0x1.e02467b79461bp-22 ++-0x1.effa02c2a5b57p-1 ++0x1.6148d164ff733p-3 ++0x1.a257b5f59a887p-1 ++-0x1.ecd6e096725c1p-1 ++0x1.4dcd868b1c423p-1 ++0x1.b518559ba2afep-1 ++-0x1.fd36e5f6ae177p-17 ++0x1.7ab1d7104d182p-18 ++-0x1.a0b161ecebb24p-24 ++0x1.eaef2277ad27bp-1 ++0x1.5537a12ead14fp-1 ++-0x1.a353d51793c9ep-1 ++0x1.d974c464f7ce7p-1 ++-0x1.e9d4a5abc7463p-1 ++0x1.8dfc202611058p-8 ++0x1.49c49777c6afcp-1 ++0x1.f8be91c860c1ep-1 ++-0x1.744184b2f352fp-3 ++0x1.4f7741d4eac81p-1 ++0x1.fbcca55ea9e6ap-1 ++-0x1.e859d3e460e92p-1 ++0x1.5d39a31f530ddp-3 ++-0x1.99da728aaed87p-1 ++-0x1.c773d52b04af3p-3 ++-0x1.27fc667b6fe57p-2 ++-0x1.ee4664ab8f311p-1 ++-0x1.240eb5bacc34ap-15 ++0x1.aab10790e80c0p-1 ++-0x1.1c32437314611p-1 ++-0x1.e3aae42688852p-1 ++-0x1.2b97b6959b92ap-1 ++-0x1.124df14d190d5p-22 ++0x1.d29df3ade00f8p-21 ++-0x1.e70102ffd26f4p-2 ++0x1.c9846775a72c1p-3 ++0x1.2ee67226d5529p-1 ++-0x1.d84381008f610p-1 ++0x1.fae6228180a55p-1 ++-0x1.d1cb30475aba6p-1 ++0x1.475825caac544p-3 ++0x1.e2d180d75310fp-1 ++0x1.8860226237168p-1 ++-0x1.bdb8f33f2142bp-6 ++-0x1.aecd11f1ad305p-1 ++-0x1.50e857e4f8090p-1 ++0x1.09a7b4c454c6ap-1 ++0x1.33a1b5c1f5142p-2 ++-0x1.d473c0c10260ap-1 ++-0x1.e6bcc76ef1341p-8 ++0x1.e9a025b19d4e7p-1 ++-0x1.e61c564b19c20p-1 ++0x1.b1c890371859cp-1 ++-0x1.e9de02e7fa0f7p-1 ++0x1.8eae41c2d6d3bp-1 ++-0x1.a043635f96fd5p-1 ++-0x1.18077176e1632p-24 ++0x1.7063d30f52d4dp-1 ++0x1.e82d46287af59p-1 ++0x1.e77a63eb49c28p-1 ++-0x1.2e923371f4df7p-1 ++0x1.32f392b11aa13p-2 ++0x1.cf48a104a230ap-1 ++-0x1.ffb8054bd5bb2p-1 ++0x1.d961a7444a368p-1 ++-0x1.2908136966a6ep-1 ++-0x1.e8e5f46caed20p-1 ++-0x1.cca7367cafebcp-1 ++0x1.8a7d3113e9871p-1 ++-0x1.9c20d073da00dp-1 ++0x1.685602f47ee38p-17 ++0x1.dbe65032e6aafp-1 ++0x1.e39cc443d68bep-1 ++0x1.ef75b5fbc2038p-1 ++0x1.6fd3f20dabcdep-3 ++0x1.ef2e5742cbc3bp-1 ++-0x1.a139a4f96363fp-1 ++-0x1.f936e3257b29bp-1 ++-0x1.e83e578b67404p-1 ++0x1.809f14efba3abp-1 ++0x1.ef0cc05585683p-1 ++-0x1.e0ab6532e03e6p-1 ++0x1.e825a4e96f86cp-1 ++0x1.944c53b6fcba2p-24 ++-0x1.eef7764fb6703p-1 ++0x1.dbd546810ad04p-1 ++-0x1.ed82202786af0p-1 ++-0x1.e744b298a1822p-1 ++-0x1.f66403b0db0f6p-1 ++0x1.b823a13640780p-1 ++-0x1.8fd743dba9526p-1 ++-0x1.6ad6002662fadp-2 ++0x1.af29d1ff6c1dap-2 ++0x1.a40a30c84d9d2p-1 ++-0x1.eef1466de9bbcp-1 ++-0x1.ea451649dac69p-1 ++-0x1.be12773f273cdp-10 ++-0x1.2ea1f2cfba778p-22 ++-0x1.ed2eb7554cecap-2 ++0x1.5604a6ebad5aap-3 ++-0x1.dcb4e5d23da48p-1 ++-0x1.e0e2d4e18e11fp-1 ++0x1.7cbf026e8d176p-1 ++-0x1.e92df6fb8cb14p-1 ++-0x1.e0f877f179d56p-1 ++-0x1.0460742bc8cdbp-1 ++0x1.f9c6e1a503f35p-1 ++-0x1.de3ca0ef987b7p-1 ++0x1.ee2a61e036810p-1 ++0x1.eb29729cac7d4p-1 ++-0x1.dc41f5d54e145p-1 ++-0x1.ee27548fb036dp-1 ++0x1.8676b01d07ce0p-1 ++-0x1.9eb434f5e23dfp-10 ++0x1.95688374a65cep-1 ++0x1.d8b331ab26940p-1 ++-0x1.ec5af0c2ccbc9p-1 ++0x1.bca24367daca5p-3 ++0x1.4c5f30d4e8c83p-1 ++-0x1.990c52576b03bp-1 ++0x1.279527d6f3123p-2 ++0x1.e7d10654db7cfp-1 ++0x1.afabd749d11aap-1 ++-0x1.e54870e856fc8p-1 ++-0x1.a9b6e450b1736p-3 ++-0x1.e4b0c74cbee31p-1 ++-0x1.77a9538ce58c8p-10 ++0x1.aab3b79abd652p-22 ++0x1.efdfd56aee773p-1 ++0x1.1dfac77800264p-1 ++-0x1.f5e7d3b5fa6b2p-1 ++0x1.569077a89293cp-9 ++-0x1.f086970443d28p-1 ++-0x1.1e2b763ff1c1bp-16 ++0x1.fa84d6fc1bfb4p-1 ++0x1.fbf321159facbp-1 ++-0x1.56f5410b90154p-15 ++0x1.ec2962b60792cp-1 ++0x1.82723136c1041p-1 ++0x1.66ec3602d5c0ep-2 ++0x1.6006c4b0268aap-1 ++0x1.db8e205953140p-1 ++-0x1.6f4ec45af7480p-1 ++0x1.713b02f6a04eap-26 ++-0x1.63b1454647238p-1 ++-0x1.f2d2c4f587093p-1 ++0x1.dbec93d39559cp-1 ++0x1.f59e8219eeb3dp-2 ++-0x1.973c3291c4d50p-1 ++0x1.30a10510388bap-1 ++0x1.f1f61783e79d0p-23 ++-0x1.c101b1037e3f5p-1 ++0x1.d257940a5137fp-3 ++-0x1.f470523c426b8p-1 ++0x1.0c37b2dba00aep-19 ++-0x1.ebcbb7d352b98p-1 ++-0x1.f45c0719f0ef0p-3 ++-0x1.9fa667856a81ep-1 ++-0x1.3706e59f06a0cp-1 ++0x1.e87165a85bf00p-1 ++0x1.d9f9e3d739f44p-1 ++-0x1.e26fb2a17aaa7p-1 ++0x1.0be6a11da1596p-1 ++0x1.f8d1b326b2ed1p-1 ++-0x1.ee19b06500228p-1 ++-0x1.e40de71a02d0dp-1 ++0x1.98bc15dbd69bcp-1 ++-0x1.eb16f70b61cccp-1 ++0x1.93a7216be0c5dp-2 ++-0x1.8bdbe0b9e2d2bp-10 ++0x1.ff0fa32b3accap-1 ++0x1.e7b000c9475a2p-1 ++0x1.e4c7b30bac6b0p-1 ++0x1.e82ba33a4ce9dp-1 ++0x1.db41972b5b7e1p-1 ++0x1.e2fab75688c77p-1 ++-0x1.d674412d314f7p-1 ++-0x1.a05a64a3c376cp-16 ++0x1.d57127f394c23p-1 ++-0x1.8bb3428cca392p-1 ++0x1.66540667f4775p-3 ++0x1.df8192132032ep-1 ++0x1.16be46faa5fd0p-1 ++-0x1.8f5d4684f487ap-1 ++-0x1.515e3214390b1p-2 ++-0x1.e9c224c0132f3p-1 ++-0x1.4792b4bea367fp-3 ++0x1.f683c622269b9p-1 ++-0x1.fd61a56639941p-1 ++-0x1.edb8f5b456c1ep-1 ++-0x1.1227a7cbdc567p-1 ++-0x1.daf8854d3e5e7p-1 ++0x1.aee25650abb06p-1 ++-0x1.513f8376de706p-1 ++-0x1.a96f12a5be2cdp-1 ++0x1.ec7da7eb5220ep-1 ++0x1.a010e6eeba432p-1 ++-0x1.e73721ebf9720p-1 ++0x1.d827e42f715f6p-1 ++0x1.53cad6d41476cp-2 ++-0x1.5921d3708a0c3p-1 ++-0x1.c05b22303587cp-1 ++-0x1.97f484b97f423p-1 ++-0x1.2b4492bd73b64p-15 ++-0x1.eb0e768cad7c1p-1 ++-0x1.fe0c97242979ap-1 ++-0x1.ec354776dd3bbp-1 ++0x1.cf0d270e371f6p-1 ++0x1.66e7a5c93cffdp-9 ++0x1.fd0d826c5a1d9p-1 ++0x1.afbca363725d1p-1 ++-0x1.d77251ee3df8ap-1 ++0x1.1692a2cdd5549p-3 ++0x1.6e88143883032p-1 ++-0x1.f41ec1c712c7fp-1 ++-0x1.a6386135c889ap-1 ++0x1.de45269a5dce2p-1 ++0x1.c6a6b4f8f837ep-24 ++0x1.33d06466c6b9bp-1 ++-0x1.860fd51abe700p-1 ++0x1.fbd696b6938a5p-3 ++-0x1.e83e45de922aep-1 ++0x1.ec4e74a3a5175p-1 ++-0x1.7a9f95d8c3a13p-1 ++0x1.3cd2b0e0024b4p-2 ++0x1.c5b6f70209b78p-5 ++0x1.e5b073ba13507p-1 ++0x1.c5914768121eap-1 ++0x1.9e87f2c6f8986p-1 ++-0x1.835ef3aca7e57p-1 ++-0x1.dc7de37754abap-1 ++-0x1.8635367864672p-1 ++0x1.d6fcd19613123p-1 ++0x1.713322dda040ap-26 ++0x1.b301916b3e546p-1 ++-0x1.5907373541318p-1 ++0x1.b67804eb47f52p-1 ++-0x1.01d6c56bc4577p-1 ++-0x1.268026d7131f6p-1 ++-0x1.8a2f305b13ed1p-2 ++-0x1.b110618fb5339p-1 ++0x1.1e2ec7a7b3ffbp-1 ++-0x1.eeac0378d3c2dp-1 ++-0x1.a8d514f3e4860p-18 ++-0x1.3c73f2a282f70p-1 ++0x1.4b69664a697c8p-1 ++-0x1.5ac3218682dafp-9 ++0x1.d9d2a5d6d0097p-1 ++0x1.ea88c7564fe3cp-1 ++-0x1.01b182a357b89p-1 ++0x1.ef3d33758c65cp-1 ++0x1.755957a759d6bp-1 ++0x1.dc5b74cf50867p-1 ++-0x1.173f6772617c0p-21 ++0x1.edbf80f8c492cp-1 ++0x1.d53f03f943012p-1 ++0x1.8a3cb07f33bafp-3 ++0x1.03af809e77795p-2 ++-0x1.eaeaa63245741p-1 ++-0x1.f97c70509940cp-2 ++0x1.da0741692c059p-1 ++0x1.ade411f3da571p-1 ++-0x1.b2a12164a95c7p-3 ++-0x1.8fa041d702f22p-3 ++-0x1.97f1b066c701bp-3 ++0x1.b707763754484p-3 ++0x1.e499e4e2ad8e9p-1 ++0x1.311253501f3f2p-3 ++0x1.259d37e26150cp-1 ++-0x1.dfb6e365f91ecp-1 ++-0x1.aa22065b8f2c3p-1 ++-0x1.da1ff0b273cd7p-3 ++0x1.be2cb0d8c5b44p-1 ++-0x1.3439a53555121p-2 ++-0x1.e210555e48210p-1 ++-0x1.d85926848cf29p-1 ++-0x1.e9a0822672116p-1 ++-0x1.aa5ad517117bep-2 ++-0x1.8f0b53139648dp-20 ++-0x1.f86a7137c57dcp-1 ++0x1.bb51b4278652ep-3 ++0x1.0e4d9562788afp-1 ++0x1.7ce703c2bf2a6p-1 ++-0x1.059cc53835908p-10 ++0x1.89b894e0e9e37p-1 ++0x1.9d6604d4efeddp-2 ++0x1.aa6bf1e6b5ff3p-1 ++0x1.d053b71612732p-1 ++0x1.c58290a57b35bp-2 ++-0x1.e79c23c2f87cbp-1 ++-0x1.ef28737769e8cp-1 ++0x1.e1bf0284f90b9p-15 ++0x1.b8c1328d43f30p-1 ++0x1.ff61460c87dbbp-1 ++-0x1.ea06f3c18052fp-1 ++-0x1.929a25bc4e316p-1 ++-0x1.462ed634d347cp-2 ++-0x1.f89887250e6fcp-1 ++-0x1.bc99a3c89c1e3p-22 ++0x1.5c75e768472b4p-2 ++0x1.8f6fa012e2770p-1 ++0x1.f7af22a6b572dp-1 ++-0x1.3f54f252e3acdp-2 ++-0x1.ed3fa609dbee7p-1 ++0x1.dfbca7880638fp-1 ++0x1.3e1116e4de263p-1 ++0x1.dc6a025cdf557p-1 ++-0x1.8bfbe75d98041p-1 ++0x1.e9e2b495fa2c1p-1 ++-0x1.2642422821515p-1 ++0x1.edfca7dddb0f9p-1 ++-0x1.ee8ea3f68169fp-1 ++0x1.ad17b2686c65fp-1 ++-0x1.c4f6f0a35fd4cp-1 ++-0x1.ef6f43ea3e075p-1 ++0x1.4f28f1201b762p-3 ++-0x1.ef68700ccd1ddp-1 ++-0x1.d63ec71b1db72p-1 ++0x1.eece451c9800bp-1 ++-0x1.e374023473851p-1 ++-0x1.dae080dc56bf7p-1 ++-0x1.f41933cd4db1ep-1 ++0x1.8df8a16525f39p-3 ++0x1.f5c64629537c0p-3 ++-0x1.74e212eb04e5ap-1 ++-0x1.c78c50a1f0152p-1 ++0x1.ec1a10580c98bp-1 ++0x1.aadfa2e96b6e0p-3 ++0x1.9c1383ae4954fp-1 ++0x1.dfb2223aa208cp-1 ++-0x1.cfffa4412b604p-3 ++0x1.cee130d0b5a2bp-3 ++-0x1.e307d799961afp-1 ++0x1.fe1874b71dffap-1 ++-0x1.f0dd20e110586p-1 ++-0x1.e6f124bc80f9bp-3 ++0x1.a84f50096564fp-1 ++-0x1.eb54d7123b641p-1 ++0x1.dde4d0a43d6ccp-1 ++0x1.460c714b7fc02p-1 ++-0x1.eb14401a251dfp-1 ++-0x1.6d6c5532e2cd9p-21 ++-0x1.b0c634676faacp-4 ++-0x1.ab062115542b8p-2 ++-0x1.12c3e674c7017p-3 ++0x1.f2f2a467a4711p-1 ++-0x1.b410a265bf2edp-1 ++-0x1.e142463188648p-1 ++-0x1.1e06e6cea4258p-2 ++0x1.60e380d477367p-2 ++0x1.ecabd7e786fccp-1 ++-0x1.ea047532c3043p-1 ++-0x1.e64087ec5398bp-1 ++-0x1.8192b282dc78ap-3 ++0x1.bc3be459c0118p-2 ++0x1.e848464011e2bp-1 ++-0x1.1635a3dbd5aaep-3 ++-0x1.f027619f4ec1cp-1 ++-0x1.cc5b228bab092p-2 ++-0x1.54c7045181291p-1 ++-0x1.d878651499cdcp-1 ++-0x1.2c92931e89713p-1 ++0x1.eea2d2cca4e34p-1 ++0x1.5cb4743cbb81ep-13 ++0x1.4e17a4a822867p-2 ++-0x1.dbb357be5deebp-1 ++0x1.e59516797b352p-1 ++0x1.db51b6a627095p-1 ++-0x1.60c746f7d0703p-1 ++-0x1.ea37c48f25f9dp-1 ++-0x1.7ac0566338086p-2 ++-0x1.baf382671db8ap-1 ++-0x1.27b5065556c47p-1 ++0x1.dc8714f787413p-1 ++-0x1.51c9858d1404ap-1 ++-0x1.72de44d96ac46p-26 ++0x1.f425e3cced4c7p-3 ++-0x1.687a92d61065ap-16 ++0x1.f524140aa4f9fp-1 ++-0x1.e23a916eb0f6cp-13 ++-0x1.d99af531c1d7dp-1 ++0x1.33fc239565e36p-15 ++-0x1.77fe57818f84dp-8 ++0x1.e2f6076e57cc4p-1 ++-0x1.e97d25cf4a4c9p-1 ++-0x1.ced6825d25e04p-1 ++-0x1.e6a1f419a0176p-1 ++0x1.a8ad7301a9c3bp-20 ++-0x1.c6256777394b3p-1 ++-0x1.15deb4ca612fep-2 ++-0x1.1fd1b6af697a5p-1 ++-0x1.e9ad92c7a5f42p-1 ++-0x1.ee43843342288p-1 ++-0x1.3c312578414bdp-3 ++0x1.ec27f19113a4dp-1 ++-0x1.9ccbd7e827a55p-3 ++0x1.efe3727b0e23ap-1 ++-0x1.acfd7757af602p-1 ++-0x1.841256a82781ep-1 ++-0x1.dea3e5358e22ep-1 ++0x1.7a5d14b31d63cp-1 ++0x1.b45264dd5b6ccp-1 ++0x1.a955c3158f95ap-3 ++0x1.5a2a14a8001cap-1 ++0x1.d80407959de45p-1 ++-0x1.e63ba4f3d8c3ep-1 ++0x1.83edf16dfff50p-1 ++0x1.b747536ef6e0ap-2 ++-0x1.db91b03d5de78p-1 ++-0x1.04e9366e2d6bdp-1 ++0x1.868a14adc5d9ap-2 ++0x1.e004440ae8f05p-1 ++0x1.b892e7a52e191p-1 ++-0x1.a31672a711e3bp-3 ++0x1.f1a246788caa4p-1 ++0x1.2712839082804p-1 ++-0x1.e15a87fb65354p-1 ++0x1.c8b2f2a807b30p-1 ++-0x1.4604a175e993ap-24 ++0x1.ebfed39cc2c8bp-1 ++0x1.46b9055c4ca9fp-1 ++0x1.306ca7dee4864p-2 ++-0x1.54b193e5a6106p-1 ++0x1.d915353edaa25p-1 ++-0x1.559071a09ac62p-1 ++-0x1.dfd05503dd9c9p-1 ++0x1.6372147e80a9bp-2 ++0x1.1d6c4659b2302p-15 ++-0x1.51678029a9639p-1 ++-0x1.93c504552cc8ap-1 ++0x1.500db1270ff22p-1 ++-0x1.a84a143781395p-2 ++-0x1.e0eef33df7060p-1 ++0x1.a5b9342b2a503p-1 ++-0x1.7e31e007182c1p-23 ++-0x1.cbe100e36ed62p-1 ++-0x1.e91f7469d5670p-1 ++0x1.eb0711bcb2188p-1 ++-0x1.d9e340faf4907p-1 ++-0x1.d3eaf468140d5p-1 ++-0x1.f046a692dfbe5p-1 ++0x1.eef541125402cp-1 ++0x1.164721f247577p-1 ++-0x1.948565494d763p-2 ++-0x1.88826288be33dp-13 ++0x1.e66022a174720p-1 ++-0x1.74bb306267089p-1 ++0x1.0e806680dde9bp-19 ++-0x1.36bf209f8d75ap-1 ++-0x1.fdb1502db4889p-1 ++-0x1.dc58a3a509822p-3 ++-0x1.ff1285390535cp-1 ++0x1.e697822f3ef41p-2 ++0x1.f0b895823caf7p-1 ++0x1.ee8a003f19352p-1 ++0x1.86cef6dc903e7p-1 ++-0x1.b06d1232385aep-1 ++0x1.f7415347bb40bp-1 ++-0x1.1849f3c6d3a7fp-24 ++0x1.d8bb0536d10cbp-1 ++-0x1.7134b61c665cap-26 ++-0x1.63c4664215f4dp-1 ++-0x1.4af2b05df7423p-3 ++-0x1.ec83e4b62417bp-1 ++-0x1.ea94d7a68205ap-1 ++-0x1.758b46be117efp-23 ++-0x1.e67b111d9643ap-1 ++0x1.c7fba1185bbb7p-1 ++0x1.3ee093dfa7bc7p-9 ++0x1.761e6712c456dp-1 ++-0x1.4147f16c16ab0p-1 ++0x1.a19ce52b4f906p-1 ++-0x1.480570f907c0ap-25 ++0x1.9b1db0483a855p-20 ++0x1.e1ef409647a27p-3 ++0x1.4c8792308f4c7p-3 ++0x1.11dc218d362eap-3 ++-0x1.ee64f1975f7e6p-1 ++-0x1.2693204eaf09bp-1 ++0x1.834e43d519f57p-20 ++-0x1.f321806888b14p-1 ++-0x1.912d845baba7cp-1 ++0x1.f0d7d51f16eafp-1 ++-0x1.98615085cae70p-1 ++-0x1.3254856940809p-1 ++0x1.f5e36613814c9p-1 ++0x1.f43be6f8db5a1p-2 ++-0x1.d999f12e66f25p-1 ++0x1.795a0759e9a8dp-1 ++-0x1.731ba13d1957bp-26 ++0x1.df2806ba55640p-1 ++0x1.93b6b433d212dp-8 ++-0x1.de2d26a9b9821p-1 ++-0x1.c253e67cccb47p-23 ++0x1.d896e2d45c8e1p-1 ++-0x1.e9d165420d859p-1 ++-0x1.7ed393dd2a80ep-3 ++-0x1.72e6237bb4f8dp-1 ++-0x1.77dcd46971c3fp-1 ++-0x1.0f7294284d3d2p-1 ++-0x1.ee0460d9eea8dp-1 ++0x1.f593219765d24p-1 ++0x1.ef4575e02694ep-1 ++-0x1.88ed60dd3430cp-1 ++0x1.e83fc488dacd6p-1 ++-0x1.f6b1f794f743fp-1 ++-0x1.f6fad097104e4p-1 ++0x1.f578d77058051p-1 ++-0x1.ead825875d99ap-1 ++0x1.e47714a63f73ap-1 ++-0x1.faf0f514a94b4p-1 ++0x1.67c2f0fa8047bp-1 ++0x1.eafad3737c504p-1 ++0x1.dd79933eb4823p-1 ++-0x1.d8e09754f9b03p-1 ++-0x1.622a31c8a4a1dp-1 ++-0x1.c3658532b752dp-17 ++0x1.4653f0b895ddep-1 ++0x1.4b7f774a00827p-1 ++0x1.5671004a1fee4p-1 ++0x1.ed1eb4107075cp-1 ++-0x1.e91e34b9e7e08p-1 ++-0x1.40a8260114e62p-1 ++0x1.fcd51406408b5p-1 ++-0x1.b41136108fbfcp-3 ++-0x1.ea510117fd3ecp-1 ++0x1.9875d57574880p-1 ++0x1.8e6821b32b65bp-1 ++0x1.7b7895c4df3f3p-3 ++-0x1.0f9652222f8e9p-1 ++-0x1.e20bc23074b3bp-1 ++0x1.71c19505b627cp-1 ++-0x1.50acd256c1190p-9 ++-0x1.f88e41f893405p-1 ++0x1.04c507eebef8dp-2 ++-0x1.088452ad3c759p-1 ++0x1.087d627cadb98p-10 ++0x1.9dd3f239428bep-1 ++-0x1.ac5f04341a72fp-1 ++-0x1.df87628ca53cfp-1 ++0x1.d963f3e2377acp-1 ++-0x1.bc583247a7cb5p-3 ++-0x1.19bbe7224c70bp-1 ++0x1.e51196492219ap-1 ++0x1.f8be8469e0f90p-1 ++-0x1.9d7b07a7045cfp-1 ++0x1.7f288239bc808p-6 ++-0x1.f06ed4e303e99p-1 ++-0x1.edb676b500699p-1 ++-0x1.11c8041a56a40p-1 ++-0x1.8fa0020067b9ap-1 ++-0x1.e38a3096c29f9p-1 ++0x1.8bd9a2320c1eap-3 ++0x1.ec3a1130d87e6p-1 ++-0x1.f041e6d4d3221p-1 ++-0x1.ec3ed491bab06p-1 ++-0x1.e82ed1f92fb3dp-1 ++0x1.d97577265ac94p-1 ++0x1.e0dc4301d27ffp-1 ++-0x1.3c6f734ef61e6p-1 ++0x1.d481020b94331p-1 ++-0x1.084e305313b99p-17 ++-0x1.e379862ec0fddp-1 ++0x1.c59db4bbac95fp-1 ++-0x1.d65bd11324f1bp-1 ++-0x1.c59a52083041ep-3 ++-0x1.f7db5704a4985p-1 ++-0x1.e962d3ae18889p-2 ++-0x1.53c9205e774e8p-1 ++-0x1.e911418959876p-1 ++-0x1.eede64d01dd85p-1 ++-0x1.567a6656d28acp-1 ++-0x1.e6aa85d031c63p-1 ++-0x1.eb05376e22db1p-1 ++-0x1.7f6913662676cp-1 ++-0x1.495606dbbbe93p-7 ++-0x1.ec3000dc4aabap-1 ++0x1.ec4706c41bd83p-16 ++-0x1.e6a7c54bbfa5ap-1 ++-0x1.7a7641865ee08p-1 ++0x1.b53be3ce487cbp-1 ++0x1.40e9902e7c79ap-3 ++-0x1.eb3282a56efc8p-1 ++-0x1.dc476211ce07dp-1 ++0x1.fbb577823c6b2p-1 ++0x1.db89870b0b16dp-1 ++-0x1.efa8f6daf9d6ep-1 ++0x1.decb623f19c20p-1 ++0x1.34c3170fae6e6p-1 ++-0x1.eb66f41c573b3p-1 ++-0x1.42fa605e3ab02p-18 ++0x1.62f563b214a71p-1 ++-0x1.ebfe83dfbd7bfp-1 ++-0x1.d8320749306c8p-16 ++0x1.096bd4970cd0dp-22 ++-0x1.34db46c5d25f9p-1 ++-0x1.e584302e3a118p-1 ++0x1.279d83bbed431p-3 ++0x1.e267d33665809p-1 ++0x1.e7dfa379e70a6p-7 ++-0x1.db6095b37c495p-1 ++0x1.e8fc0548a8effp-1 ++0x1.df80158c55f1bp-1 ++0x1.085252cff6318p-2 ++0x1.e8b2a51a22aedp-1 ++-0x1.6c2551b909220p-1 ++-0x1.6b160460a6dafp-1 ++-0x1.ab45345443095p-1 ++-0x1.6deca2af052c9p-3 ++0x1.837e7496593b3p-1 ++-0x1.bf1280b399b44p-3 ++-0x1.846896e4714edp-1 ++0x1.a87ef4867a7b7p-20 ++-0x1.ebcf01f1f9c05p-1 ++0x1.ee9f7221b6d23p-1 ++0x1.f218003f765f8p-1 ++-0x1.dee46627c2030p-1 ++0x1.eff7e643f253bp-1 ++-0x1.3e07f3ef0c1aep-3 ++-0x1.7c2b31f076e73p-11 ++-0x1.806c918e71aeep-1 ++0x1.0db187d31341cp-2 ++0x1.8a44534c5fa47p-1 ++-0x1.dbd3606da38ebp-1 ++0x1.4c41a22828d0ap-1 ++-0x1.9eb9358ded573p-3 ++0x1.e080f6a0dd5a1p-17 ++-0x1.edc7b0c6d7c61p-1 ++0x1.1672e0cfb0ae6p-1 ++0x1.bcc2d238d4ddbp-25 ++0x1.ef15079437d86p-1 ++-0x1.e8c624ef9c950p-1 ++0x1.8543e62f380d5p-3 ++0x1.fef15658b7b3dp-17 ++0x1.fdaef64e92ad5p-1 ++-0x1.ed9495fb211ccp-1 ++0x1.66b7a3a5f4bbcp-2 ++-0x1.e4b4d29f62b3ep-1 ++-0x1.af4687b7a9dd1p-1 ++-0x1.1b8575ec2f1bcp-3 ++0x1.719ad2699f7f4p-1 ++-0x1.2ae4206794c97p-2 ++-0x1.f697d28a52766p-1 ++-0x1.4de5a4d1044b1p-1 ++-0x1.e859b3f551706p-1 ++-0x1.995221a7cd650p-1 ++0x1.5b44a5441ff42p-1 ++0x1.b40b1223b8731p-1 ++0x1.f41ca43bda5ffp-1 ++-0x1.d64953db536f6p-1 ++0x1.f237a08dabbebp-8 ++0x1.2ab9e2f378d0ap-3 ++0x1.748f13fdb7757p-1 ++-0x1.85fce11104791p-21 ++0x1.e8fb12ed42b85p-1 ++-0x1.b9be13f0400a5p-3 ++0x1.5cf593bcc75fap-1 ++0x1.e62c06763ca98p-1 ++-0x1.ef83347913d46p-1 ++0x1.8cd87241429ddp-1 ++0x1.ed52a73ea36ddp-1 ++0x1.eb1fb7b4361a5p-1 ++0x1.659040150dccep-1 ++-0x1.e84f02088580bp-1 ++-0x1.31efb599b0c90p-1 ++-0x1.3d71f7cc5cbb8p-14 ++-0x1.a7947303093c0p-2 ++0x1.d9d164d5dd4b4p-1 ++-0x1.a6a84397e3686p-1 ++-0x1.dbfc05a512685p-1 ++-0x1.5b0384147576ap-1 ++0x1.24925361ccdf7p-1 ++-0x1.ff78b2a719f69p-1 ++0x1.ed23979169478p-1 ++-0x1.aca5d6e0cebc8p-1 ++-0x1.ef3d97ca40548p-1 ++0x1.b18ed204df0bep-1 ++-0x1.8bb177f1b45d0p-1 ++0x1.eea5d7d2221dap-1 ++0x1.7f86226cc352bp-7 ++-0x1.e8690599a1b6bp-1 ++0x1.c62b97c2b228ap-3 ++-0x1.a1283741d2ae6p-2 ++-0x1.36bf72bd2813ep-1 ++0x1.02ff0102590a7p-1 ++0x1.81aef093e519fp-1 ++-0x1.e5788391286c7p-1 ++-0x1.373103fbf2dbbp-26 ++0x1.34e2d1a2d3f9bp-6 ++-0x1.f8d06493cf734p-1 ++-0x1.c24710eb7be22p-3 ++0x1.d2db6598cfaf0p-1 ++-0x1.da7e74a47298fp-1 ++-0x1.9af47030895e7p-12 ++-0x1.891952e265231p-1 ++-0x1.092645a64f8d3p-20 ++0x1.4f75862316ad1p-25 ++-0x1.fe90e5f9be415p-1 ++0x1.fb4ee1a050156p-1 ++-0x1.ec39744c1f0c8p-1 ++0x1.ba15c60d9db6fp-1 ++-0x1.87a6e44eaf473p-14 ++-0x1.346b35da45de2p-1 ++0x1.8db9c701a763cp-25 ++-0x1.db34b430e32a8p-2 ++-0x1.629942502fa18p-2 ++-0x1.e413c088c0673p-1 ++-0x1.1f6e31af5699fp-1 ++-0x1.ed7495c0fc882p-1 ++0x1.abee977c43f44p-1 ++-0x1.66cc97e31eaf9p-1 ++-0x1.e215564a14206p-1 ++-0x1.2c8ac0b1cee68p-6 ++0x1.d44c706157084p-1 ++0x1.60e11610c7ee0p-1 ++-0x1.30bba0afa8fb3p-1 ++0x1.bee52516c6958p-2 ++0x1.704ea3b5ecd74p-1 ++0x1.9e8346c8dd9e3p-1 ++-0x1.8d20a7a73971bp-1 ++-0x1.fee190f2fc2b8p-2 ++0x1.2412133b85638p-1 ++0x1.e12c42ed2cf35p-1 ++0x1.ab2c11f181602p-1 ++-0x1.3792d18b82986p-2 ++0x1.8201c2f453059p-1 ++-0x1.a787c4bfd3b9dp-1 ++-0x1.21cfc16c9dd00p-15 ++-0x1.fe18e3a9ee189p-1 ++-0x1.e0a0474a78619p-2 ++-0x1.f2b9635cc6607p-1 ++-0x1.ead0a07de749ep-1 ++-0x1.51be7174fb83ep-1 ++0x1.ce044606c1030p-1 ++-0x1.7ea081641e5c0p-1 ++-0x1.a3b065b4875e9p-1 ++-0x1.dfdae0cbe44cdp-1 ++-0x1.ed7ef264fedb8p-1 ++-0x1.ef5091c5626a8p-1 ++-0x1.dc56039dc4ef6p-1 ++-0x1.495862db7188cp-18 ++0x1.f702c7007d0f8p-1 ++0x1.af0a752686e3dp-3 ++0x1.e30a96a56e0a2p-1 ++-0x1.9e27251b3702fp-13 ++0x1.d09934bc80099p-1 ++0x1.0e94e36bb88f6p-2 ++0x1.e6ddf06e94dd2p-1 ++-0x1.07c16329a6368p-1 ++-0x1.ba2ae6c81ef86p-19 ++-0x1.0c0a94e27bcffp-1 ++0x1.dd58042e78413p-1 ++-0x1.e659010e4489dp-7 ++0x1.0214d6e90f72ap-1 ++-0x1.cf4586cf33876p-2 ++-0x1.b70207125cf48p-1 ++-0x1.df4870eb61dfap-2 ++-0x1.f57f5552ab569p-1 ++0x1.dfcf57952b0f5p-1 ++-0x1.e8c51781e0f5ap-1 ++-0x1.e482f48b7b06fp-1 ++0x1.ebaf12ac1ca9ep-1 ++0x1.e737501a3ae33p-2 ++0x1.ecd747e9c09c1p-1 ++0x1.e862d221950bfp-1 ++-0x1.11bc51c1a6b71p-1 ++-0x1.8b32c03c1f3fep-1 ++-0x1.45d6537260c70p-3 ++-0x1.eab7a154b753bp-1 ++0x1.dc3de7d2fc8d2p-1 ++0x1.ebba47c789bf9p-1 ++0x1.e9ecf3956d1f2p-1 ++-0x1.b9b423bd8562fp-16 ++0x1.ea80b59543ec4p-1 ++-0x1.4c94d139f13e8p-1 ++-0x1.6e83b5a2a8fe5p-19 ++0x1.e543336eb0ac0p-1 ++0x1.e1ebe4a9d8a89p-1 ++0x1.ed72033a5db2ap-1 ++-0x1.e266b288cfc87p-1 ++0x1.027c5616cc343p-1 ++-0x1.e35a95def4819p-1 ++-0x1.413b8018c5b35p-1 ++0x1.25c3a3e3119f1p-1 ++0x1.29429685f155dp-1 ++-0x1.daec27668718ap-1 ++0x1.066c27f6a6cfep-1 ++-0x1.ece86688b8215p-1 ++0x1.e7fb31fd3c964p-1 ++-0x1.7208a0ee99588p-18 ++0x1.e55e406d573cap-1 ++0x1.e8af41ef26febp-1 ++0x1.371c35f823ee3p-1 ++0x1.d17522ea5e064p-1 ++-0x1.7accc66f1a867p-1 ++0x1.1b88e568085eep-3 ++0x1.efa964a3049c3p-1 ++0x1.0ae4753a5c894p-13 ++-0x1.e5dc4522b9124p-1 ++-0x1.eea0521dad0ebp-4 ++0x1.852e91bce0883p-1 ++-0x1.dd70c04d30a3ap-1 ++-0x1.10e344fda4288p-3 ++0x1.f8ed93cccdd32p-1 ++-0x1.9b2a127bc4877p-1 ++-0x1.3ae99644caf6fp-2 ++0x1.2011857db1424p-26 ++-0x1.e901933e634b8p-1 ++0x1.c426411a0bd0ep-1 ++0x1.a5edb0220c08ep-1 ++-0x1.effdf2686cde6p-1 ++0x1.c32c91193429cp-13 ++-0x1.51f3b17d298a4p-1 ++-0x1.7f189788a9871p-1 ++-0x1.6df8f3b40a7d7p-20 ++-0x1.cc9fa732730b4p-1 ++-0x1.e800e2c46ef54p-1 ++-0x1.0036b44e98fb9p-1 ++0x1.545021fa9de9cp-1 ++-0x1.dbd584ff2c565p-1 ++0x1.f4ea010d09590p-1 ++0x1.0838d097bf35fp-2 ++-0x1.a1da024b0b5d7p-8 ++0x1.e8d72663b3bb6p-1 ++0x1.bd21611d957b4p-1 ++-0x1.e632b5939513cp-1 ++0x1.ef5182ea9b9f9p-1 ++0x1.1f999553c9965p-1 ++-0x1.b47b81b50fe30p-2 ++-0x1.ec1d2221cef9fp-1 ++-0x1.ff88333427dbap-1 ++-0x1.f9b0f160d4715p-1 ++0x1.000f60ec89995p-2 ++0x1.03ce907b337a2p-7 ++-0x1.a63a42293fa26p-3 ++0x1.292904fec9be4p-1 ++0x1.820c4727f0297p-1 ++-0x1.ee77e35aa0adep-1 ++-0x1.ecc08254e2ca3p-2 ++0x1.f5e2939c7c8abp-1 ++0x1.fe103302da0f0p-1 ++-0x1.ee18039175978p-1 ++-0x1.d7c305801dc47p-6 ++-0x1.f7bb55bddabc2p-1 ++-0x1.f3f604ec44843p-1 ++-0x1.6fbae21dcab06p-1 ++-0x1.f613a094bcd5bp-1 ++-0x1.9b44300f94ca8p-1 ++0x1.ebb413b8af6a7p-1 ++0x1.8ff5319a0c60fp-1 ++0x1.21f49780f87b2p-1 ++0x1.edc3445e3d359p-2 ++0x1.be0ce0e44a018p-3 ++-0x1.ee9ef2f6c17b3p-2 ++-0x1.c27d81c83efabp-1 ++0x1.ac8f6552a58dep-1 ++0x1.711ce469b9c2cp-8 ++0x1.fa3c9399c63afp-1 ++-0x1.432c76363edb9p-2 ++0x1.ea3e827115c9dp-1 ++-0x1.ea73d35821c98p-1 ++0x1.bf34426cf512cp-1 ++-0x1.1445f5830a831p-21 ++-0x1.ee29a33d89217p-1 ++0x1.8ccbb1dcc318bp-1 ++0x1.25b4539e355fdp-1 ++0x1.d9f2a66cb195ap-1 ++0x1.1d3cb7d6c6a5ap-1 ++0x1.b1b470d44d8e1p-1 ++0x1.a8b3a413894e6p-10 ++0x1.e85bb560bc75dp-1 ++0x1.5f70e6661a987p-3 ++-0x1.e607b65d13651p-1 ++-0x1.7133562954a55p-26 ++0x1.e8d044bdd2df4p-1 ++-0x1.6d61c0b3f3e7ap-1 ++0x1.b036d56c1ea88p-1 ++0x1.db9765d455c4cp-1 ++-0x1.d67e0577a6507p-1 ++0x1.1149b4f4323d5p-1 ++-0x1.61dc625616ea4p-1 ++0x1.e7e686da575a0p-1 ++0x1.1f8845720550bp-3 ++0x1.181681ffa6887p-1 ++-0x1.f9a361114e127p-1 ++-0x1.2daf678a502f3p-1 ++0x1.e9d467bd4f063p-1 ++0x1.6bdae68159ee5p-2 ++0x1.31f72092e0a01p-3 ++-0x1.0257216dc5462p-1 ++0x1.a3eba171994e9p-1 ++-0x1.76ca124cf6f47p-3 ++0x1.edaef15ec1849p-23 ++-0x1.55ac10a3a8641p-3 ++-0x1.c41062b424a37p-1 ++-0x1.d92890d75b595p-1 ++0x1.dcfb53f8d12a7p-1 ++-0x1.e282c640ea6f9p-1 ++0x1.d213669b363a3p-1 ++-0x1.e38275a589425p-1 ++-0x1.8ae0d1a8a37fbp-1 ++0x1.2e4ef4f93f824p-1 ++-0x1.e41b13bb1ae98p-1 ++0x1.086eb6e0f5f9bp-1 ++-0x1.e5a480f554f3dp-16 ++0x1.247007cd3459dp-9 ++0x1.126fb704975d2p-2 ++0x1.ead2c179b0748p-1 ++0x1.e2a9b69b414cfp-1 ++0x1.dd5754e2b6f70p-1 ++-0x1.aa3c46accda7bp-1 ++-0x1.eac543bc70794p-1 ++-0x1.3e5ed5df8f9b3p-3 ++0x1.c87902a9dc843p-2 ++-0x1.7488404424d8fp-1 ++0x1.0a0993e0464fep-1 ++0x1.ec89e597c1fb8p-1 ++0x1.ff68c644002e1p-1 ++-0x1.57e6c01243fa0p-1 ++0x1.e6e2b58850fbcp-1 ++-0x1.ee92e612cb066p-1 ++0x1.e3f070eec2596p-1 ++0x1.a3a1677955b56p-1 ++-0x1.bcc7e5fa33d67p-1 ++0x1.594fe3ac79583p-1 ++0x1.50ec000b8e4acp-3 ++-0x1.f9295717cfd6fp-1 ++0x1.ef55f3c40b195p-1 ++-0x1.fb0bc0bcae0e5p-1 ++0x1.ef1e83db4a781p-1 ++-0x1.e24192e4c76d5p-1 ++-0x1.b008d5aeca3d0p-1 ++0x1.e8f7b7904e38ap-1 ++-0x1.ee3126a0a120bp-1 ++-0x1.261cb76f274a4p-1 ++-0x1.e693d2d796ecap-3 ++-0x1.ddbba60a316aap-1 ++-0x1.f79761f4b586fp-10 ++-0x1.ea326681d6327p-1 ++-0x1.30688704ba934p-13 ++-0x1.e7cb21c3e16e5p-1 ++0x1.587605ae10952p-1 ++-0x1.e19505b39f2c0p-1 ++-0x1.e18a12334f770p-1 ++-0x1.0837757b9d39dp-2 ++0x1.d5a6b0de0792ap-3 ++0x1.f99470c182bf6p-1 ++0x1.ed070744db724p-1 ++-0x1.73b2737edc5c7p-26 ++0x1.b936968f91883p-3 ++-0x1.ea40a3cab079fp-1 ++0x1.38e266cf4e67bp-23 ++0x1.eef1a663ee7c0p-1 ++-0x1.b714f5eded91ep-1 ++0x1.dbc6676e6b672p-1 ++0x1.eb6416d4263a2p-1 ++-0x1.cd5f86a8d0aa0p-1 ++0x1.6f9df5f49001bp-2 ++-0x1.6c0f802e7de00p-1 ++-0x1.171c4382a49b5p-1 ++-0x1.6b40229004e64p-1 ++-0x1.9b6996025da1cp-1 ++-0x1.efbc035d5241cp-1 ++-0x1.8d6cd1d2f1d24p-2 ++0x1.387816b7132c2p-15 ++-0x1.222651699e523p-1 ++0x1.3b2d21d75094ap-2 ++0x1.e81bf743c0369p-1 ++0x1.ee2044b7efb74p-1 ++-0x1.ff5cc72dade88p-1 ++-0x1.c932d35cb0882p-1 ++-0x1.e12937d9b5de6p-1 ++-0x1.bb5fe6c2388bcp-20 ++0x1.e2f9c07852f70p-1 ++0x1.389e508c2d4a1p-3 ++0x1.4e0e70421f589p-3 ++0x1.cc1262f95c14cp-1 ++0x1.fc9c210385ec5p-1 ++0x1.9984459a46260p-1 ++0x1.e4e8c2f4a4892p-1 ++0x1.e37f56ad5d374p-1 ++-0x1.d604e43246f1ap-1 ++0x1.dd2cb52e3f946p-1 ++-0x1.ad5ce2c9a061dp-2 ++-0x1.e304f24cdfffbp-1 ++0x1.06c562663d3d5p-1 ++-0x1.80d703d704546p-1 ++0x1.24f756f5e8490p-22 ++0x1.ef88e7a892892p-1 ++-0x1.8acf064a612ebp-11 ++0x1.f85ef0fd21f0bp-1 ++-0x1.f2d7b573896eep-1 ++-0x1.c41b9411e2424p-1 ++-0x1.0eed14bd5c463p-1 ++-0x1.ecf8e686be7cep-1 ++-0x1.965f75ff798a9p-1 ++0x1.6411e12b18fc4p-1 ++-0x1.11af90316a631p-9 ++-0x1.da5f66b16e89ep-1 ++0x1.085d72e4cc8a6p-1 ++-0x1.dd2c9123047c4p-1 ++0x1.ead1c7993f167p-2 ++0x1.d9b8b3488e2c9p-1 ++0x1.e3ba8654faf94p-1 ++0x1.b12e97910d2fbp-3 ++0x1.8ca403a109b30p-3 ++-0x1.e5f2937058787p-1 ++0x1.1a16c20b59c20p-8 ++-0x1.11098610b5ed6p-16 ++0x1.892e670d4f005p-1 ++-0x1.2648b2df313ccp-1 ++-0x1.dfc21746825a5p-1 ++-0x1.4f866516769a4p-1 ++-0x1.e913c2d94e14ep-12 ++0x1.50e5c3abd6b3ep-1 ++0x1.ddb931972f706p-1 ++0x1.66d50185eedb5p-2 ++0x1.178457d5f3122p-1 ++0x1.0a089692fa9d6p-1 ++0x1.53e8b3a99a9ffp-21 ++0x1.faccb45f4e2f8p-3 ++0x1.0fba936e6a028p-2 ++-0x1.b6f9a6276a135p-1 ++0x1.67cbb33515663p-6 ++0x1.3ac2c7ff47442p-1 ++0x1.fd2901f3c9671p-1 ++0x1.a95ba191e3d37p-20 ++0x1.ecfdc74673b2ep-1 ++0x1.e33344b0b2b7dp-1 ++0x1.d6b6c30ea8c56p-2 ++-0x1.3e18951be4c2ap-10 ++0x1.06544747d23b7p-1 ++-0x1.6530f1b557057p-1 ++-0x1.e141a1fc347e7p-1 ++-0x1.c209253da05dfp-1 ++-0x1.5abd34f01cc55p-25 ++0x1.da55f059b4805p-1 ++0x1.b15ad1f0f8186p-1 ++-0x1.e2f6324aebb6cp-1 ++0x1.e6cf20c6b3bd3p-1 ++-0x1.d9f586a99ac1dp-1 ++-0x1.ea5db6c802980p-1 ++-0x1.eef205ef8bf9cp-1 ++-0x1.e77cb3d6aba48p-1 ++-0x1.efb0238767d34p-1 ++0x1.eac576f6fcc93p-1 ++-0x1.9d69119b79677p-17 ++0x1.95acf5bfa2f77p-3 ++-0x1.551e1792426dap-1 ++-0x1.dbe0e257f280cp-1 ++-0x1.f69220aac2bb2p-1 ++0x1.57b2160efdbf5p-2 ++0x1.e58de281a1a07p-1 ++0x1.084020b03e4d2p-6 ++0x1.d87e91b7e07b7p-1 ++-0x1.99cda400ce3b7p-2 ++-0x1.e362932c8c92fp-1 ++-0x1.da4995d5cee72p-1 ++0x1.87b2d4dcffaf9p-1 ++0x1.3ea5128eaaf2dp-1 ++-0x1.5faae7d3bcf38p-1 ++0x1.3aec5799bb1d9p-19 ++-0x1.ec3797b899976p-1 ++0x1.8aefc30a2949bp-1 ++0x1.bd62a0a521e27p-2 ++-0x1.ab7df36836c3fp-1 ++0x1.91ab544ac879fp-2 ++0x1.f80f9015de12ep-1 ++0x1.aa572325d6916p-1 ++0x1.efb673b18111ap-1 ++-0x1.dbb4625b1b6d4p-1 ++0x1.ddbbe2e244b52p-1 ++-0x1.f79ea4af0ff39p-1 ++-0x1.c16b5501eff50p-1 ++0x1.ea4315c9c663fp-1 ++0x1.ade22053744afp-1 ++-0x1.e4b1a6febdb21p-1 ++0x1.ec9464048b26cp-1 ++0x1.e3c1e7f51cf59p-3 ++-0x1.dc8fa6420fb87p-1 ++-0x1.f052a40d8e48bp-1 ++0x1.cb7bf6c1858f8p-17 ++0x1.e4fbf10139e0ap-1 ++-0x1.df2192fe7f98dp-1 ++-0x1.062da16c62ccep-1 ++0x1.0dca9008fbcebp-2 ++-0x1.0fd4c304627a5p-11 ++-0x1.f7ad343c1ffafp-1 ++-0x1.3de2247c0ac76p-1 ++0x1.a8f991857abcfp-3 ++0x1.b42d56efb9226p-1 ++0x1.410fc200873e5p-1 ++0x1.b2a8837671aa6p-1 ++0x1.adf61664fadc1p-1 ++-0x1.858b722a5427bp-1 ++-0x1.e20ac139c6d90p-1 ++0x1.ec4a72202abfbp-1 ++-0x1.bf067665f434dp-3 ++0x1.b78865ebf7179p-1 ++-0x1.0634566d8abcep-1 ++-0x1.e6a6172392825p-3 ++-0x1.e6fc2655bf4fep-1 ++-0x1.e543e6d75248fp-1 ++-0x1.e88fc53e3e4b0p-1 ++-0x1.eb40e4f889a53p-1 ++0x1.e79ef6eba9adbp-3 ++-0x1.96df34af5a088p-21 ++0x1.65efb1356114ap-3 ++-0x1.8d4e57db12a07p-3 ++-0x1.5d616093177aap-1 ++0x1.df0754bc48a37p-1 ++0x1.d025216b99be2p-5 ++0x1.e739901525d14p-1 ++0x1.e8d122ec89b8ap-1 ++0x1.e8c93262e04f1p-1 ++0x1.ffd00163380e1p-1 ++0x1.95d3428efb513p-1 ++0x1.ea9674065a5c0p-1 ++0x1.44b2453851f94p-1 ++0x1.f42ee4d7dac9dp-1 ++-0x1.e976c2fccc26ap-1 ++-0x1.27ba2598fa425p-1 ++-0x1.817945ade05b6p-1 ++-0x1.6d6582d27a94ep-3 ++0x1.ea59d39e18322p-1 ++0x1.2c7d24a2d4e9dp-2 ++0x1.f44e04251a793p-1 ++-0x1.3778036172b36p-2 ++0x1.eed61776e402fp-1 ++-0x1.799ba18a53c8bp-1 ++-0x1.6fb4348faf5c4p-3 ++0x1.ddc2869dc18a5p-1 ++-0x1.e343665d40ccap-1 ++-0x1.3f73605325ab0p-3 ++-0x1.3ba0f05c1755fp-1 ++0x1.ed92048ac9d47p-1 ++-0x1.e1a5a6243d05dp-3 ++0x1.e4fd73980b5e1p-1 ++0x1.33b9002a95e7ep-2 ++0x1.ecba4619d36bcp-1 ++0x1.6a7a22a449e86p-1 ++-0x1.a2bb4749faabep-3 ++0x1.8248f68a7e1ffp-1 ++-0x1.e21ad7da85c70p-1 ++-0x1.dd8e86ce2c248p-1 ++0x1.5d40255ad5479p-2 ++0x1.a5fa20bad74b8p-1 ++-0x1.f99406b4197a3p-1 ++0x1.d2f1b785de5d5p-1 ++-0x1.e2d534c706c26p-18 ++0x1.aeb5736c743fbp-2 ++0x1.dfc7324805273p-1 ++-0x1.2d2db09cc6e86p-21 ++0x1.edae94523b924p-1 ++-0x1.dc31f75dbd8bap-1 ++-0x1.dce536216941cp-1 ++0x1.a96985facec4bp-1 ++-0x1.e5ce57ae15fa4p-1 ++-0x1.dbd6a23f8b933p-1 ++0x1.8d6b062af3681p-2 ++-0x1.2590214dd2a24p-3 ++0x1.d0f7e414c0f7bp-1 ++0x1.eec205a0f3bfcp-1 ++-0x1.5cf1a0c8c1ccdp-2 ++0x1.ca9b05da55e1dp-3 ++0x1.e7078679d9affp-1 ++-0x1.dee200a7c99b0p-1 ++-0x1.aea74698a65c1p-3 ++-0x1.eef2e7388b0b8p-1 ++0x1.9475e0bee269cp-1 ++0x1.e8ede2eca6ebcp-1 ++-0x1.3a3f5430a9d73p-1 ++-0x1.da99616adbb35p-1 ++0x1.40a287e0245c7p-1 ++-0x1.db6f1755478ccp-1 ++0x1.4b37359e5a442p-1 ++-0x1.fabca4ba5ef23p-1 ++0x1.bdb701415b22ap-1 ++0x1.ece78508bb8c1p-1 ++0x1.4a0d37fdc5a79p-16 ++0x1.d81ca025d90bcp-1 ++0x1.eacf140a099a8p-1 ++0x1.ec31331b47ad9p-1 ++0x1.ffd881703db66p-1 ++-0x1.2f5617c2cdd47p-1 ++-0x1.de2e87858ebd7p-1 ++-0x1.3fc366eb32e48p-1 ++0x1.da5505c9b5082p-1 ++-0x1.c13e200d12a13p-1 ++-0x1.eb29615918644p-1 ++-0x1.530e61ff0420fp-21 ++-0x1.e904b6785c98cp-1 ++0x1.dd8612e5b6eb4p-1 ++-0x1.339060228fa99p-5 ++-0x1.3b19c402e1ab5p-1 ++-0x1.3af4f28b24131p-1 ++0x1.fdcf071e072d3p-1 ++0x1.a02143cfecad9p-1 ++-0x1.a33832573766ep-8 ++0x1.f013574be1027p-1 ++0x1.6bbb23e29bd56p-2 ++0x1.c2e0b4f123c1dp-19 ++0x1.0bd860a759addp-1 ++-0x1.ea778377c1e47p-1 ++-0x1.e415749cde067p-1 ++-0x1.f0a930040729ap-1 ++0x1.f0e804039007cp-1 ++-0x1.dc12b607e76dap-1 ++-0x1.3a0d506141a45p-5 ++-0x1.bc3fa1c91bbc5p-2 ++-0x1.61f91720d48f9p-2 ++-0x1.b682b0abe4889p-2 ++0x1.e2ecf4b017e0dp-1 ++0x1.161d419e7dff1p-3 ++-0x1.daf7532488e10p-1 ++-0x1.c80936da67635p-1 ++-0x1.f79a56103c6bcp-1 ++-0x1.ea6bc6967c364p-1 ++0x1.eb55c5889afdap-1 ++0x1.31373491f9fd9p-1 ++0x1.80eaa23a91ec2p-1 ++-0x1.fd9ed1b43f715p-1 ++-0x1.02c3e70019c89p-1 ++0x1.daa6242404908p-3 ++0x1.e8a1b27cb8dd3p-1 ++0x1.caa1a29c0a137p-3 ++0x1.e925463516258p-1 ++0x1.dfb4b65646ab3p-1 ++-0x1.4c1900363e38bp-3 ++-0x1.ea072277e9de6p-1 ++0x1.eb1bf69818892p-1 ++-0x1.c7891601871cfp-1 ++-0x1.e9c811e32475fp-1 ++0x1.09ffc56919a5dp-8 ++-0x1.1afd8636d88a6p-4 ++-0x1.d5faa18bb319cp-24 ++-0x1.5a73f23f4d005p-3 ++-0x1.f12a419b4a7e1p-1 ++-0x1.f3f813fc62e9ap-1 ++0x1.882457f6307dfp-3 ++0x1.cc79d0b17437bp-3 ++0x1.f849007c8fc5bp-1 ++-0x1.582d615ec34e3p-1 ++0x1.406506bfcfb11p-1 ++0x1.b6a6c3eebea0cp-1 ++-0x1.e88b2722a8806p-1 ++0x1.31b3642d568c4p-2 ++-0x1.b5ca91453fe3fp-1 ++0x1.3137f5baf9af4p-1 ++-0x1.ebd6465bc4b63p-1 ++-0x1.a49977d4938ccp-1 ++0x1.e71ef4f74efa5p-1 ++-0x1.7992140ccce3ep-3 ++0x1.e2d9f4354faf7p-1 ++-0x1.a282a4f738fe1p-2 ++-0x1.864a6783972d3p-1 ++0x1.ba4587f6ddfafp-1 ++-0x1.b9dc1365a48d6p-1 ++0x1.9b24d0442a8bdp-1 ++0x1.de51365f22198p-10 ++0x1.4b5e2197433cdp-2 ++0x1.be54761e95348p-1 ++-0x1.fb51005dfdc02p-1 ++-0x1.fa7fb41bdf4ecp-1 ++-0x1.da30d147aa840p-1 ++0x1.a0b8a727a25c6p-1 ++0x1.f298d21034624p-17 ++0x1.e9cfa7a7fd217p-1 ++-0x1.f4e8b5ec98f6cp-20 ++0x1.7302146a6f168p-8 ++0x1.5799928b1b254p-1 ++0x1.d704c60ab009dp-1 ++-0x1.9681e2cf54b70p-1 ++-0x1.e48e4276acf60p-1 ++-0x1.edd8a455629a7p-1 ++-0x1.f37d96501f78bp-3 ++-0x1.b7a5b13013786p-3 ++-0x1.e960c36a66790p-1 ++0x1.b63de6d713d58p-1 ++0x1.e47cf5ea94794p-1 ++0x1.ff99528e27db8p-1 ++0x1.6c20d6e995703p-20 ++0x1.dd82403aa55b3p-1 ++-0x1.bdf2b69afaaa0p-19 ++0x1.debfb38f72c41p-1 ++-0x1.caf0a20a2e374p-3 ++-0x1.c786d16c31b03p-1 ++-0x1.be5512ecf8b31p-2 ++0x1.eb74f08f7bea6p-1 ++0x1.41f8565f967afp-1 ++-0x1.df40e5c3806e3p-1 ++0x1.915a220e086dfp-1 ++-0x1.eab325c5fbbe8p-1 ++-0x1.811ee0ee26a13p-5 ++-0x1.deea07f1077cdp-1 ++-0x1.a4b6326d457f6p-21 ++0x1.29b2708c3a747p-1 ++0x1.c0d8d07a22f7fp-3 ++-0x1.56bf84f095b88p-2 ++0x1.d8e426b246e44p-1 ++-0x1.621014d0872dcp-1 ++0x1.7307e45a9bfb6p-5 ++0x1.dde4a27afa00ap-7 ++0x1.dbce065bbf8a3p-1 ++0x1.e1207083bb09fp-1 ++0x1.1daa53018212fp-1 ++-0x1.496161b184764p-1 ++0x1.be4077f0a12bep-23 ++-0x1.ba4832d143c1ap-1 ++0x1.eae16553c8c57p-1 ++-0x1.dcd236d0485fbp-1 ++-0x1.e2b5a72fffc26p-1 ++0x1.eb42940a8517bp-1 ++-0x1.e06e527c5ae19p-14 ++0x1.ae15b592e3128p-1 ++-0x1.ca92520c405e5p-2 ++0x1.7db9b3fa53090p-1 ++0x1.64105318b86d4p-1 ++-0x1.ed5ce02997ae3p-1 ++-0x1.30fbb21b54296p-12 ++0x1.bc360678ba681p-7 ++0x1.e5d335374c24cp-1 ++-0x1.e0749468e2cc8p-1 ++-0x1.ee3570ed32c54p-2 ++-0x1.3a8df06a429efp-2 ++-0x1.ce3772c129db8p-13 ++0x1.15ba83dfe3904p-3 ++0x1.08f5e344993d5p-1 ++-0x1.ed8e061bb76b0p-3 ++0x1.f8ffe57a8dde1p-1 ++0x1.e66a85eaf4ee0p-1 ++-0x1.fea40127cc2f2p-1 ++0x1.f2aab1284b4b0p-1 ++-0x1.cc03e1478de39p-4 ++-0x1.e912d49635d92p-1 ++-0x1.f1687635d3527p-1 ++-0x1.627064608ff5ep-1 ++-0x1.eb5a8287935edp-1 ++-0x1.1857a62740addp-1 ++0x1.5b65c47382c9ap-3 ++0x1.ecb1a4e85bbefp-1 ++-0x1.a7fea62a8476fp-3 ++0x1.ccdc351ffc956p-19 ++0x1.f8d674c4fbe5fp-3 ++-0x1.fa49b4283ce9ap-1 ++-0x1.ed8ea55dfb46cp-1 ++0x1.c552618b4fd1ap-1 ++-0x1.b9fbf215a6137p-3 ++0x1.edea1355a361cp-1 ++0x1.ba92542786897p-1 ++-0x1.a7307747e4eedp-1 ++-0x1.41cb43cc57a37p-1 ++0x1.ffe9232e1641fp-1 ++0x1.556ed63589177p-12 ++-0x1.cd6f16bc335c9p-1 ++-0x1.f2b6338523771p-2 ++0x1.db2795c5314edp-1 ++-0x1.de2267c10bed6p-1 ++0x1.ea9e158ead810p-1 ++0x1.bec560986a04ap-1 ++0x1.ef3db6de27565p-1 ++-0x1.3393b6059cb76p-23 ++0x1.b980f402882acp-3 ++-0x1.e259b369989a0p-14 ++-0x1.ff6ac3ef8dac8p-1 ++0x1.7e5081826dfc6p-1 ++-0x1.0c6c55fecc746p-1 ++0x1.ef97766ebf4d8p-1 ++-0x1.ddae26391e016p-1 ++0x1.fc6cf6ab5b808p-1 ++0x1.dc2b369f4fb97p-1 ++0x1.3e0cd4bcc78f9p-2 ++-0x1.0e4bb0b067b5bp-1 ++0x1.b79ba1d3be769p-1 ++-0x1.ea50436bfcdb0p-1 ++-0x1.fa0d71fd79cc3p-1 ++0x1.3dc4e295f1f30p-1 ++-0x1.703d419656c71p-1 ++-0x1.fa7f5390f9fbcp-1 ++-0x1.e70a30da2cfa1p-1 ++-0x1.fdabb5f507142p-1 ++0x1.f64dc541cc1fap-1 ++0x1.eb319784bca19p-1 ++-0x1.f3bc56a59b92fp-1 ++-0x1.b8a0d2c98b8e0p-1 ++0x1.425107976f0d2p-20 ++0x1.4ad290cb36082p-3 ++-0x1.b5bb322363d88p-1 ++-0x1.e7ce322063c1ep-1 ++-0x1.c48fc05bc06adp-1 ++-0x1.e74004feba25dp-1 ++0x1.19099015cd289p-1 ++0x1.9df0943df0ed7p-1 ++-0x1.a337f087e6047p-1 ++-0x1.7d8cb3c9cb5d8p-1 ++0x1.11a6b0c515920p-1 ++0x1.c693d3e0c3d93p-1 ++0x1.f141608e6aec1p-1 ++0x1.a9bde0091b760p-1 ++0x1.c93a76be71d45p-1 ++0x1.d7597098112a3p-1 ++0x1.edf6c4bdb283ap-1 ++-0x1.205784cd6e44ap-1 ++-0x1.a0d5f18128988p-2 ++-0x1.e40666614e59fp-25 ++0x1.121bf667b781ap-1 ++-0x1.668da74298814p-7 ++-0x1.616fc1a66c4d6p-1 ++-0x1.ee112212f8aa0p-1 ++-0x1.ed6ef73d531a4p-1 ++-0x1.c15fb366cfcf9p-1 ++-0x1.efffe322b6ac1p-1 ++0x1.96c5c059d54afp-1 ++0x1.e4e1454ecf85dp-1 ++0x1.db2913c8fc219p-1 ++-0x1.7f66a643bfb7ep-1 ++-0x1.27f944d4ad8d6p-1 ++-0x1.6426726aee6cfp-1 ++0x1.d9c0506986f5ap-1 ++-0x1.eeaad7939baecp-1 ++0x1.bd5a077c9fc90p-1 ++-0x1.38a69239f073cp-1 ++-0x1.f932f26d539d5p-1 ++-0x1.b260a79be9a1bp-6 ++0x1.ef9f51187fe83p-1 ++-0x1.dce6b232fc21ep-1 ++0x1.ee14f4ba14235p-1 ++0x1.eb85a30d4a2e5p-1 ++0x1.b11031019577cp-2 ++0x1.b58be17f9d847p-2 ++-0x1.d9cbe370eb0ecp-1 ++-0x1.d517b3ce2b655p-1 ++-0x1.ec41e5fb51583p-1 ++0x1.8df301a855975p-25 ++-0x1.e889435c34b7dp-19 ++-0x1.134640672cf7ap-2 ++0x1.49ae67009c731p-3 ++0x1.e80a234204ccep-1 ++-0x1.eb9c151577abap-1 ++0x1.f0b6320c75315p-1 ++0x1.b8ccb51a3d918p-1 ++-0x1.98e3649200763p-1 ++-0x1.dbe723ecfc7f0p-1 ++-0x1.db9dd79228607p-1 ++-0x1.dcb17195a4c60p-1 ++0x1.dce077ee88b26p-1 ++0x1.c85742cc49d4ep-1 ++-0x1.815743a3562efp-1 ++-0x1.dc9450089dc1dp-1 ++0x1.5e56a1bca2c1ep-1 ++-0x1.5e48b383d64fbp-1 ++-0x1.de4c64b5bc273p-1 ++-0x1.f2700673bb386p-1 ++-0x1.c1301186b73c3p-18 ++-0x1.b17535ce5f5e3p-1 ++0x1.400e032ed6125p-3 ++-0x1.128c733eb080ap-1 ++-0x1.9cf7f3c30c74fp-1 ++0x1.dc24f6d5d88e9p-1 ++0x1.f78a43cc77de0p-1 ++0x1.543a72675a6aap-1 ++-0x1.45dd4628eecd9p-24 ++0x1.fffd225b95d9fp-1 ++-0x1.363de4b85c86dp-3 ++-0x1.db6440c16c293p-1 ++-0x1.e09c81e7a33a5p-1 ++-0x1.af90f6124102cp-1 ++0x1.b4106515dc5c5p-2 ++-0x1.daa2769ff6e50p-2 ++0x1.002e426741e10p-2 ++-0x1.ee228647b7dbap-1 ++-0x1.22ec95cf2a12dp-1 ++-0x1.e93e916c943dbp-1 ++-0x1.14b932254ccd8p-9 ++-0x1.909622a8afce0p-9 ++-0x1.b5b5e40f69460p-1 ++-0x1.0b42e197effbap-1 ++0x1.3bdc443663478p-1 ++0x1.fb7b75d00f267p-1 ++-0x1.f06581e9738c7p-22 ++0x1.bcb3805a8b0acp-1 ++-0x1.9b6ff25e8b37bp-1 ++0x1.f9cb94e42bc3dp-1 ++0x1.ecd805ed64887p-1 ++-0x1.a65c4560a2138p-2 ++-0x1.56dff1b743c85p-1 ++0x1.e5298138fd89cp-1 ++-0x1.156c062335d7dp-1 ++0x1.df59064910717p-1 ++0x1.af0516501c6d6p-1 ++0x1.d2dbb56e8dd5fp-3 ++0x1.d0b523fc1ceb1p-1 ++0x1.bcf543a18c01fp-1 ++-0x1.709413363b142p-26 ++-0x1.f8c00391024e6p-1 ++0x1.5aa701b2476b0p-1 ++0x1.44865784caf4ap-8 ++0x1.e998073d61296p-1 ++0x1.8eb830a476bb7p-1 ++0x1.ff036620f55bbp-1 ++-0x1.f64585ccfeb6dp-1 ++0x1.ae9611b635f6ep-1 ++-0x1.24d9e5b7dfc26p-12 ++0x1.9a25d27526795p-1 ++-0x1.ec0cf6bf16995p-1 ++-0x1.5f64a17e9500dp-2 ++-0x1.ef0f34f9f356fp-1 ++0x1.974b13f3e4673p-5 ++0x1.09de90f53b65ep-1 ++-0x1.e1b0771809c44p-1 ++-0x1.0b7c366b28640p-1 ++-0x1.4e93f479a0cc6p-1 ++0x1.cd2b95c2df3d4p-1 ++0x1.dd556108d9ee4p-1 ++0x1.d9c6a408e180ap-1 ++-0x1.852ba5ea09204p-2 ++-0x1.6a318265b0ce0p-1 ++0x1.8187a65639248p-3 ++0x1.bed3226c9cf5ap-2 ++-0x1.bf96c5540152cp-1 ++-0x1.1c9d850480123p-1 ++0x1.d8a65092223e5p-1 ++0x1.52c841c5f3d66p-1 ++0x1.0498d6413da66p-1 ++0x1.dac374698d877p-1 ++-0x1.fc1bd618e87e8p-2 ++0x1.ebe4c1cec3060p-1 ++0x1.983b20ca0cd67p-1 ++0x1.ec96e031167b4p-1 ++0x1.ea4ee28054fa3p-1 ++0x1.edae74719dd10p-1 ++-0x1.6162424ab4689p-1 ++0x1.d9e3a0d3c4a69p-1 ++0x1.f8cc86f846007p-19 ++-0x1.f48764fc3cc92p-1 ++0x1.ec5d65428be39p-1 ++0x1.ebbdc16a6c83cp-1 ++0x1.f4021476db864p-1 ++-0x1.e537b490c8ebbp-1 ++0x1.1a8247328b1eep-3 ++0x1.ded3e00b45be7p-1 ++-0x1.12fce6ee5e120p-3 ++0x1.e8faf051d09cbp-1 ++0x1.67c444811ab4dp-3 ++-0x1.20b4a1a53c3d5p-1 ++0x1.71a901abd5ee1p-3 ++0x1.32e467615008ep-22 ++-0x1.ea1224bded243p-1 ++0x1.de9582df5c7f5p-1 ++-0x1.b8e1e27336860p-1 ++0x1.ec8561690ba28p-1 ++-0x1.daee03fa90d5cp-1 ++-0x1.3a3bc41b1b0fcp-2 ++0x1.e38b32f89a15fp-1 ++0x1.2a7a67c6a7f5fp-1 ++0x1.ad2e378f343e2p-14 ++-0x1.755da68905d10p-1 ++0x1.79c3b49ea70d1p-1 ++-0x1.8a29b0ff7fef3p-3 ++0x1.e6e791aad1f3ap-1 ++0x1.67b372a69cd0bp-3 ++0x1.f3d57719d5a66p-1 ++0x1.c96a64375fd43p-1 ++-0x1.eb6f12c7214f3p-1 ++0x1.7c2a71b780eadp-1 ++-0x1.ebcbf2f5b7eb8p-1 ++0x1.9c2ac06be1e36p-1 ++0x1.47b60350a0542p-1 ++-0x1.e81352ef49d80p-1 ++0x1.e2fde24e7441dp-1 ++-0x1.cfc297f098209p-1 ++-0x1.9f3a958bc4d8dp-9 ++-0x1.ebed30f465969p-1 ++0x1.851581e8ee5f8p-8 ++0x1.b29d24839a5c2p-1 ++-0x1.d996e18e1756fp-1 ++-0x1.e945641fd4421p-1 ++-0x1.7567a1368f83dp-20 ++0x1.eda764a20b53bp-1 ++-0x1.d90ed36b67dd1p-1 ++-0x1.1721b193cb808p-1 ++-0x1.1aa794570d691p-3 ++-0x1.486275b31eff1p-1 ++-0x1.7932031d98446p-3 ++0x1.082044740fb11p-1 ++-0x1.bc5005352d983p-1 ++-0x1.9e34b40c77bdbp-1 ++0x1.f8960738dba77p-3 ++0x1.0d8d44f6a38b9p-1 ++-0x1.ef2a370ffe51ep-1 ++-0x1.885af3b2b9117p-1 ++0x1.ab5dd30d3b0d9p-1 ++0x1.658572e828c0dp-3 ++0x1.00801354b719ap-21 ++0x1.ead7729f447e2p-1 ++0x1.73fe964bcb9b8p-26 ++-0x1.eb9e2463b8a3ap-1 ++0x1.dcc7f49496bbbp-1 ++0x1.e322464ccedbcp-1 ++-0x1.f3f1411a81959p-1 ++-0x1.b806d3a207c7fp-2 ++-0x1.9e3cf02520c9bp-1 ++-0x1.a3903178cc914p-1 ++-0x1.9157d3c02c3b2p-1 ++-0x1.a828f2fd070e9p-1 ++-0x1.dfe122ce59486p-1 ++-0x1.e0c5f12e4aee9p-1 ++-0x1.096d23efa8b4cp-1 ++-0x1.eeb2b02957428p-1 ++0x1.9bd135009e628p-1 ++0x1.dcfa56e705532p-1 ++-0x1.dcc733e36743ap-1 ++-0x1.f13ac5b2f066dp-1 ++-0x1.ee5a97d9a8b48p-1 ++-0x1.2421b26321192p-3 ++0x1.4bdfb654355fap-1 ++0x1.e9ab41fff09b7p-1 ++0x1.6c39f77452a13p-2 ++0x1.f2d9a4e18b93ep-1 ++0x1.f588f66b070a4p-1 ++0x1.c0b604407eb47p-1 ++0x1.907b33485084dp-1 ++0x1.e58d17977d4c7p-1 ++-0x1.e9c1b44e07fecp-1 ++0x1.5978b562d5348p-2 ++0x1.f69e2232d6a42p-1 ++-0x1.ea1b37e291f39p-1 ++0x1.a9c704aff0411p-1 ++0x1.0f4422ec03b3ap-1 ++0x1.0c01d7eb6c807p-1 ++-0x1.e24961f09bb8fp-1 ++-0x1.6ad805c841fcap-1 ++-0x1.f30f95a858a13p-1 ++-0x1.7509a50c46facp-13 ++0x1.0a4725eca19ecp-1 ++0x1.f041143af7d9cp-2 ++0x1.c39ee2c592617p-3 ++-0x1.b389464f1c401p-1 ++-0x1.eeb6a2abaa396p-1 ++-0x1.26b3228cfdb15p-1 ++-0x1.f7553430f26b9p-1 ++-0x1.fbb1f12faf4e4p-1 ++0x1.97b404be9b207p-3 ++-0x1.6b2935d76744bp-1 ++0x1.ee2bd4e26496ap-1 ++0x1.69d035f7a7ee7p-8 ++-0x1.5adfd2a30ceadp-1 ++0x1.81131610d528cp-2 ++0x1.81f87126313b8p-1 ++-0x1.7cb4d0d3ae749p-1 ++0x1.00a5000f3784dp-1 ++-0x1.ec020225e8d1ap-1 ++-0x1.dcfbc732dc4ccp-1 ++-0x1.f54ad24e2bdd7p-2 ++0x1.eb4c931e3f233p-1 ++0x1.ef6013aa5bd6dp-1 ++-0x1.ec4fc7eb42446p-1 ++-0x1.963eb08b090e2p-1 ++0x1.eb5787014c22cp-1 ++-0x1.c474572d53337p-1 ++-0x1.7e09139513a33p-26 ++-0x1.f9340275d9995p-1 ++-0x1.edcf16351be04p-1 ++-0x1.7d78a4e9dc91bp-1 ++-0x1.1e30752523e09p-2 ++0x1.dc4b32a234a23p-1 ++-0x1.edbb01a598c24p-1 ++0x1.6367c4f49a449p-1 ++0x1.eb1db52a22a45p-1 ++0x1.e8eba118b0a26p-1 ++-0x1.ce8021cd33ff0p-20 ++0x1.f988f6376ddcep-1 ++0x1.eabac25c2fc1ep-2 ++-0x1.e132c034f9071p-1 ++0x1.bda2b45f18ea7p-2 ++-0x1.eeab70c49e827p-1 ++0x1.d85d41c05db82p-1 ++0x1.e4003425db812p-16 ++-0x1.753ca74c55212p-3 ++0x1.98ee323f505cep-1 ++0x1.e95be276dd667p-1 ++0x1.2287403404baep-1 ++0x1.0ed8c38a3bdcep-2 ++0x1.c82792be9bbadp-1 ++-0x1.38a9d3998d79ap-1 ++0x1.e805f6d3a6c5dp-1 ++-0x1.32ebc7c55a58ep-1 ++-0x1.048b622297845p-13 ++-0x1.efb5c6983ac39p-1 ++-0x1.415a16a005c76p-20 ++-0x1.eb8aa64a05087p-1 ++0x1.a18684e94695ap-14 ++0x1.de2666acb5762p-1 ++0x1.0a79566e358dcp-2 ++-0x1.f282f0325a811p-1 ++-0x1.3f08a31b67052p-6 ++0x1.3a747651ea759p-1 ++0x1.8c22845eca245p-2 ++0x1.c1aed42df3035p-3 ++-0x1.a01057abedfe5p-1 ++-0x1.eb57d2b4d4247p-1 ++0x1.27a880bdbfcbfp-1 ++0x1.d51cd22b5b6cap-1 ++0x1.c96de70665e99p-2 ++-0x1.afeb916e3177fp-21 ++0x1.8e00d6126d657p-2 ++0x1.799d63f173a45p-1 ++-0x1.cd29463be0ee8p-1 ++-0x1.4f47a58e04b54p-1 ++0x1.ea2f35262d1a7p-1 ++-0x1.279997c5505d9p-1 ++0x1.fbe731d9f7db8p-1 ++-0x1.60d116a6cc97fp-1 ++0x1.e9d9730db6039p-1 ++-0x1.78fc83b456074p-2 ++-0x1.03c0045400546p-1 ++-0x1.f29f3377fe46bp-1 ++-0x1.33d676f26127ep-3 ++-0x1.efdd474021500p-1 ++-0x1.bab9f2ecd85b4p-6 ++0x1.c628a3529714fp-3 ++0x1.e36ae1b514d1bp-1 ++-0x1.db1e13827a88ap-1 ++0x1.dbf1b775cf9d2p-1 ++0x1.57a975b3f7f83p-2 ++0x1.1deb94df7dd48p-2 ++-0x1.8f4e44c99669ap-1 ++0x1.4ed720c5a163ap-1 ++-0x1.db81e304bef8ep-2 ++0x1.de5485ca4d9dfp-1 ++0x1.db26f3b39fe6bp-1 ++0x1.6c88456adc480p-3 ++0x1.c5a8961391ccfp-1 ++-0x1.b78ea5581fef3p-24 ++-0x1.6547c3be6a0acp-3 ++0x1.e19d1283e35b5p-1 ++0x1.e80e54a58d337p-1 ++-0x1.449b6754bba00p-11 ++0x1.e41026d50deabp-1 ++-0x1.1844f685c97cap-1 ++0x1.efa0e345c59b0p-1 ++0x1.3121f641ffbd3p-10 ++0x1.edb070c60119ap-1 ++0x1.a52c94e4dfaa9p-23 ++0x1.e5fc97f64aecbp-1 ++-0x1.f652e1fdb6a40p-1 ++-0x1.fc21417ad3694p-1 ++0x1.750fa027faf9ep-1 ++-0x1.9260f684b0d63p-3 ++0x1.e896c4a4401bcp-1 ++-0x1.7e6e516a67284p-2 ++0x1.8c32f1a45f352p-3 ++0x1.366796f5b5a00p-1 ++-0x1.763cb2cf0a32dp-3 ++-0x1.ad50f432557fap-1 ++0x1.f220a525222a6p-1 ++-0x1.e2d4f63884af4p-3 ++0x1.7796f74179cbap-1 ++-0x1.cd55d3c51d8fep-1 ++-0x1.e221669031d28p-1 ++-0x1.eeffa2c5a9c49p-1 ++0x1.ecf741dda7320p-1 ++0x1.a2a1569ae5d32p-1 ++-0x1.e680d5195362ep-1 ++-0x1.f83452138ebc1p-1 ++0x1.30e2369a99e1bp-3 ++-0x1.1a18425ff66a7p-1 ++0x1.eb7451be325a0p-1 ++-0x1.cd4ba71c2a541p-1 ++-0x1.dc4f109832464p-1 ++-0x1.eb97e24e4691ap-21 ++0x1.718a40fa573d8p-3 ++0x1.df0c61f2a0f01p-1 ++-0x1.ab0051b1239f5p-1 ++0x1.070692620b71cp-1 ++-0x1.b3cea41f5ebbfp-22 ++0x1.fa09813a0f08cp-1 ++-0x1.0e9b76f265fe9p-3 ++-0x1.dceb234e0d00cp-1 ++-0x1.8836556db32e5p-11 ++0x1.47d5509f852b6p-2 ++0x1.bb4174dfebc1ep-1 ++0x1.83be00af14ad6p-10 ++-0x1.9a44d54a49874p-1 ++-0x1.903962db8447ep-1 ++-0x1.ac0763a2833a8p-1 ++-0x1.c09d42b039fa3p-1 ++0x1.e2fec0234b979p-1 ++-0x1.e3f2b40c3e54cp-2 ++0x1.dd6694410bcf0p-1 ++-0x1.032c51b1d2105p-1 ++-0x1.d80bd4a4cf64ap-1 ++0x1.f89e41aa2fad5p-1 ++-0x1.daf4c6895a475p-2 ++-0x1.0579e7d148859p-8 ++0x1.e318d24b8b39ep-1 ++-0x1.91d2b301a130ep-6 ++-0x1.d8d40797b1ffap-1 ++-0x1.3ee1c1db473d2p-2 ++-0x1.45ebc3d70bdd6p-24 ++-0x1.6a73670891036p-1 ++-0x1.dd2d72e85c929p-1 ++-0x1.c572d1625cc9ap-1 ++-0x1.9007645684de8p-1 ++-0x1.982b1646a3406p-2 ++-0x1.e8dee29e55a00p-1 ++-0x1.867e95cfae0a8p-1 ++-0x1.57b0e23b39e09p-1 ++0x1.04807172fbb6fp-1 ++-0x1.70bea3753575bp-1 ++-0x1.cc28a3c0fb5ffp-3 ++-0x1.0663157daee85p-3 ++0x1.d83d9616cffd1p-1 ++0x1.d56357592f5acp-2 ++0x1.e006175a5233bp-1 ++0x1.ded7b522b64c3p-1 ++0x1.f11a872f5d26ep-1 ++-0x1.e3a22384a6de8p-1 ++-0x1.e8316413e3ebdp-1 ++-0x1.0da5059829177p-2 ++0x1.f67aa7a0b8826p-1 ++0x1.eb8604ab96d0bp-1 ++-0x1.c1ccb6174f89dp-1 ++-0x1.834806f8654c9p-1 ++-0x1.ef7701b74636cp-1 ++-0x1.e6fc661a4e39bp-1 ++0x1.dd3682e648173p-1 ++-0x1.7e27e712723ddp-1 ++0x1.e12486db8dca7p-6 ++-0x1.a7f9c47f84b4bp-11 ++0x1.e5dd42f5422e1p-1 ++-0x1.7f1a6320cfa79p-1 ++0x1.eb14a509edab1p-1 ++-0x1.b39b65fdaaaf4p-2 ++0x1.edf1a44e79d77p-1 ++-0x1.16c4316ff435cp-12 ++-0x1.eb0e3015adc06p-1 ++0x1.cf1bc071e7b1dp-13 ++-0x1.dacfb650325cfp-1 ++-0x1.3868c3fb4119cp-3 ++-0x1.c2a3b1d7f7890p-1 ++-0x1.e64092b0d86f7p-1 ++-0x1.53ca0177e6f37p-1 ++-0x1.4ea952cfb8453p-25 ++-0x1.e84792001e697p-1 ++0x1.ef23215f6de12p-1 ++-0x1.2152c36f9028dp-1 ++0x1.9a5905b3dd7bep-1 ++0x1.db5e820db1f0dp-1 ++0x1.2dd320b0909e6p-3 ++-0x1.027577673d37dp-1 ++0x1.e4909407d6b04p-1 ++0x1.527324f607a26p-17 ++-0x1.ed9414384d45ep-1 ++-0x1.7c4f407d91487p-8 ++-0x1.eb3f971bcf807p-1 ++0x1.d0dc12f7b7649p-18 ++0x1.4dcbd35bad403p-1 ++0x1.15ad81b482de6p-1 ++0x1.e8f0874ac9593p-1 ++-0x1.cec574569cb1bp-1 ++0x1.ebb2d275b5529p-1 ++-0x1.035e76eeac96dp-21 ++0x1.eb1e73025e051p-1 ++0x1.82b481c2cab01p-1 ++0x1.f4d8e628050abp-1 ++-0x1.4bc9841532205p-1 ++-0x1.a03cd248fa8dbp-3 ++-0x1.34a3238e9e3b0p-14 ++-0x1.442444137aebep-1 ++-0x1.17d6571c1eb38p-9 ++-0x1.ed8e345382564p-1 ++-0x1.8f2122c52c06bp-1 ++-0x1.2e84858cbd9e2p-1 ++0x1.ed5ea12bfef39p-1 ++0x1.e255d16fe29c9p-1 ++-0x1.e7c0a4791e7d1p-1 ++0x1.ea9ef4d1cf987p-1 ++0x1.bf8761b110b5bp-1 ++-0x1.d8ffa13349771p-1 ++-0x1.0dd222acc160ap-1 ++0x1.828184fbbeaa0p-2 ++-0x1.ff5bd6a9242abp-1 ++0x1.d91a30bb3e15dp-1 ++0x1.c38e7517dd45fp-12 ++-0x1.0caa231ede96dp-3 ++0x1.bf75f1da5b9f4p-3 ++0x1.07c4f43f44017p-1 ++0x1.d97165152ffeep-1 ++0x1.f565d33b8ac0fp-1 ++-0x1.9e2736ae6b655p-13 ++-0x1.12528787f6e56p-1 ++0x1.1b0912987dcf2p-3 ++-0x1.59f3c5b673712p-1 ++-0x1.bde56690f6eccp-1 ++0x1.d28502cfb2092p-5 ++0x1.ddc5738e8f925p-1 ++-0x1.7b2d0222d18edp-1 ++0x1.495424a43a336p-1 ++-0x1.bbee92a22bc1dp-1 ++-0x1.e8092359ccf4ap-1 ++0x1.d986b716394bap-1 ++-0x1.348db24936e14p-1 ++-0x1.2c3e37771fce2p-1 ++0x1.813c34a44eb1ap-14 ++-0x1.dfcb1799d0b1ep-1 ++-0x1.148f93639ab8ap-1 ++0x1.e9d8e507b6b7dp-1 ++0x1.adc4400d2246cp-22 ++-0x1.f9941587a0f90p-1 ++-0x1.0763c2612613cp-8 ++-0x1.ec59c307396f8p-1 ++0x1.f8e25686998acp-1 ++-0x1.d1b2d7ceae413p-1 ++-0x1.15af64d6bc1c9p-17 ++-0x1.4f4065a22973ap-23 ++-0x1.eb6ea004c88a2p-1 ++-0x1.b2daa6e18bec1p-1 ++-0x1.f95c5323bece4p-2 ++0x1.e1d682232cc70p-1 ++0x1.ecec70e666347p-1 ++-0x1.d0e1b0d47cce6p-1 ++-0x1.ef7c05da00ccbp-1 ++0x1.8f83f2b021978p-1 ++-0x1.18204301e710fp-3 ++0x1.eac881dd6e573p-1 ++0x1.46f83671cca25p-1 ++0x1.e30cf7c07f903p-1 ++-0x1.eba9678c3f1c2p-1 ++0x1.e64eb73adb2c1p-1 ++0x1.bd81501f6c6dbp-1 ++0x1.6c6bd2dd525cdp-1 ++0x1.205b7320c006cp-4 ++0x1.ff04d61b0df50p-1 ++-0x1.eeff51ab9dd14p-1 ++-0x1.948a52ed5c31bp-5 ++-0x1.e1c5c6487033bp-1 ++-0x1.e217c080561c1p-1 ++-0x1.3248c214e0d26p-3 ++0x1.ed0872a63647dp-1 ++0x1.e851875a532ddp-1 ++0x1.e7ab52befacc0p-1 ++-0x1.259fe08399b90p-3 ++-0x1.ededb18a270f5p-1 ++0x1.70704180d156ap-1 ++0x1.9f8db14d87da8p-1 ++0x1.e86395d65171ap-1 ++-0x1.b845d7262e0bap-3 ++0x1.4183f2511d03ep-1 ++0x1.61a7f6c5ef7d1p-22 ++-0x1.0bf534b51583ap-2 ++-0x1.ebfb153952f46p-1 ++-0x1.f432a5c40b5aep-1 ++0x1.de1315467998fp-1 ++0x1.043b03cb8172fp-3 ++0x1.ef435338a09fbp-1 ++-0x1.e3682482abf80p-2 ++0x1.8cb1a630bb9c2p-1 ++0x1.2118379e034c2p-19 ++0x1.f7d1a7b4d3511p-2 ++-0x1.befed649c5772p-1 ++-0x1.ea5613210aa70p-1 ++-0x1.5b9f05ea1adb3p-3 ++0x1.da3dc7fb7e865p-1 ++-0x1.56f2e58d53fc9p-1 ++-0x1.a4c0d4697fa72p-1 ++-0x1.4fe86735879b5p-25 ++-0x1.dbe9a120dc24dp-1 ++0x1.7e1f516ae8558p-1 ++-0x1.0ccec227b1aa8p-1 ++0x1.5a21f14dfa7b0p-1 ++-0x1.98c8e5b444e4dp-1 ++-0x1.a390457106bfbp-1 ++0x1.7834478f6c2ccp-1 ++-0x1.d355d23d9f129p-1 ++-0x1.dfbdc0246898dp-1 ++0x1.0de5e5de3ee03p-23 ++-0x1.48701720e6bd6p-3 ++0x1.da1b02240fa23p-1 ++-0x1.ff76554d1cd62p-1 ++0x1.5cf30257670ddp-1 ++0x1.f37672c4384dap-1 ++-0x1.20811778def78p-14 ++-0x1.ea363656402fcp-1 ++0x1.ef8c5245acfe3p-1 ++-0x1.d9bcb4e8d3e79p-1 ++-0x1.1372f51c095bep-1 ++-0x1.e6d7e64d3a2a2p-1 ++0x1.8d887665a4aa4p-12 ++-0x1.543b1625c6f47p-3 ++0x1.e2cfd418793d3p-1 ++0x1.e2365579a754ep-1 ++-0x1.806dd0823096dp-1 ++0x1.057365e07e692p-2 ++0x1.e13e27d7f0352p-1 ++-0x1.e170f02eef343p-1 ++-0x1.8a8b96c57e126p-1 ++0x1.300c178b2707bp-2 ++0x1.84277430fd97ep-2 ++0x1.ebace7e63c155p-1 ++0x1.7e2db343d2518p-6 ++-0x1.f53d46b53474cp-1 ++0x1.c0e313323e560p-14 ++-0x1.445786093a311p-1 ++-0x1.a073961b21017p-3 ++0x1.eb2c92dd8595ap-1 ++-0x1.dfd9b023c2058p-1 ++-0x1.9cc0608e5c256p-3 ++-0x1.1e8a967a738a4p-1 ++0x1.df31c544e9d67p-1 ++0x1.d2fad1936930ep-1 ++0x1.d8d4c3d683cd2p-1 ++0x1.e8712202731adp-1 ++-0x1.ea4834441eb39p-1 ++0x1.eda472e60d745p-1 ++0x1.e25ac2048fb9ap-1 ++0x1.4a70d01fd57a4p-1 ++-0x1.1c3704a91d838p-1 ++-0x1.df8e14d8335ccp-1 ++-0x1.e95d04451bcd5p-1 ++-0x1.ea74f086de3c2p-1 ++0x1.dda9e26e84162p-1 ++0x1.74f4f4a9a7630p-1 ++-0x1.bb4fb52218d17p-1 ++0x1.4f6f80226f31ap-1 ++-0x1.684814485308cp-3 ++0x1.7fc4e1d16dcf5p-1 ++-0x1.fe6bd006411a7p-1 ++-0x1.e0f5e654664e4p-1 ++0x1.4dd366975a5b3p-2 ++0x1.d94e10f7f2ec8p-1 ++0x1.d8c8d21926f4cp-1 ++0x1.571e352fdd0f0p-2 ++0x1.ea0f558903c1ap-1 ++0x1.f6c9d5f09ac9ep-2 ++0x1.a3c463d5b6e67p-1 ++0x1.48352432fcd1ep-5 ++0x1.bda1811e8c6b1p-14 ++-0x1.ee04d3c3f2263p-1 ++0x1.e58f617f2d384p-1 ++0x1.8e41e2bcbf28ep-3 ++0x1.191df1d6a15d8p-1 ++0x1.b0c6938c36b0ap-1 ++-0x1.d944534af1d02p-1 ++0x1.31642078c9c6dp-2 ++-0x1.841801a2f578cp-1 ++0x1.ebbb1323e8b84p-1 ++0x1.e12481b18bc72p-1 ++0x1.fa64112d9b7bdp-1 ++0x1.682c32ff96a0fp-1 ++0x1.31dd87a025af2p-1 ++0x1.df5f54d95cc0dp-1 ++0x1.4b9ce3268e639p-2 ++0x1.c206d0139362fp-1 ++0x1.e3a8a24e59ea9p-13 ++0x1.dfd890e7db3d1p-9 ++-0x1.bb5997a01dc09p-1 ++-0x1.9da2876b31f04p-1 ++-0x1.205fe30c96672p-1 ++0x1.fa4b1032a01ecp-1 ++0x1.e2db71253b231p-1 ++-0x1.5cd7b6880daedp-3 ++-0x1.dd712109d9432p-1 ++-0x1.f4c2f4098a73bp-3 ++-0x1.df4df687c5149p-1 ++0x1.a7184731a11b4p-1 ++-0x1.b717a69cb0326p-1 ++0x1.eedaa2dbb184cp-1 ++-0x1.fb6f90001c47fp-1 ++-0x1.4141539f32f56p-1 ++-0x1.9da4077805769p-1 ++-0x1.ab8c92a8ec751p-1 ++-0x1.fb9d60929751ep-1 ++-0x1.e1f9e6fd5632ap-1 ++-0x1.ef20c3a53e72fp-1 ++0x1.3a55c400f2026p-1 ++0x1.bc55404efb12dp-19 ++0x1.82c2a5d140048p-2 ++0x1.f613e22df463bp-1 ++0x1.2c6291d7f2ad7p-2 ++0x1.2319304ed36b5p-1 ++0x1.ef526669efbebp-1 ++-0x1.b3dec74769b6fp-1 ++-0x1.7fa021510350ep-1 ++-0x1.c22a90b77021ap-24 ++-0x1.e89606e911505p-1 ++-0x1.ee05e10877512p-1 ++-0x1.a748b03895981p-1 ++0x1.db4745b9604cdp-1 ++0x1.0eab126351bb9p-3 ++0x1.2b74811bfc23dp-2 ++-0x1.425187f18c762p-18 ++0x1.afbbc6e1f9f84p-1 ++-0x1.e8ac5756ef915p-1 ++-0x1.0f9400d75348bp-16 ++0x1.916dc64eee2aap-1 ++# asin multiple precision fallback path ++# Implemented in __sin32 in sysdeps/ieee754/dbl-64/sincos32.c ++## name: slow ++0x1.c88b2415431cbp-23 ++0x1.84a360ccf288dp-20 ++0x1.7eff5496b7ed2p-21 ++0x1.4360a7a7b5c14p-23 ++0x1.71374498ed714p-26 +diff -urN glibc-2.17-c758a686/benchtests/atanh-inputs glibc-2.17-c758a686/benchtests/atanh-inputs +--- glibc-2.17-c758a686/benchtests/atanh-inputs 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.17-c758a686/benchtests/atanh-inputs 2015-06-20 21:22:16.296458135 -0400 +@@ -0,0 +1,203 @@ ++## args: double ++## ret: double ++## includes: math.h ++0x1.5a2730bacd94ap-1 ++-0x1.b57eb40fc048ep-21 ++-0x1.c0b185fb450e2p-17 ++-0x1.bd6e1642bb727p-1 ++-0x1.4cfdd35756bc5p-10 ++0x1.aadb5767b3ae4p-1 ++0x1.827ab42a1416dp-1 ++0x1.6d4e56dd0ff53p-14 ++0x1.667d8313f78d2p-1 ++0x1.672230c640ef3p-1 ++-0x1.35ec261f6be52p-19 ++0x1.9cf3279d8ff3ep-21 ++-0x1.a60896128036fp-1 ++0x1.ad5067d5aa573p-1 ++-0x1.8a4421ee0d23ap-1 ++0x1.aba153a252f9bp-14 ++-0x1.2498611880effp-1 ++-0x1.aa2c423f024dep-26 ++-0x1.43d972a3632b8p-1 ++0x1.12d690cf283ebp-25 ++-0x1.eec6a3a873b98p-1 ++-0x1.987b43a58457ap-21 ++0x1.96a646ec9ba90p-11 ++0x1.b961f358d8f43p-3 ++-0x1.51d594fababdep-1 ++-0x1.72a777e07e732p-8 ++-0x1.21fcd11e4d773p-1 ++-0x1.094ea21018a32p-1 ++-0x1.79ea722d33e33p-9 ++0x1.c63fc48261538p-5 ++0x1.b1c0b7e618a20p-3 ++-0x1.9957f1ba37225p-19 ++-0x1.ecc6037c6538ap-21 ++0x1.7e0bc46e556bcp-1 ++0x1.4e7cd59b97811p-22 ++-0x1.6b2773f7bf9c1p-27 ++0x1.db9e07d2c1d81p-1 ++0x1.293835cf8c06bp-1 ++0x1.f59e8473488f7p-1 ++0x1.094c253414b65p-22 ++-0x1.922cb3b58f124p-3 ++0x1.8a9b4773d8067p-1 ++0x1.59e1848e51b3fp-1 ++-0x1.77eb61d6b55b3p-1 ++0x1.63e245bf37393p-1 ++-0x1.8adb670e973d8p-1 ++-0x1.c34f8232a8efap-1 ++0x1.83f2e5bd4e680p-25 ++-0x1.6b8d336fb28b2p-1 ++-0x1.f50ce1076f808p-23 ++0x1.ceb5a49139809p-19 ++-0x1.3d0616e8d067dp-11 ++-0x1.5ff057a79950ap-1 ++0x1.263f96335fa00p-25 ++0x1.5d5fa0d6d5003p-9 ++-0x1.5070a3937a84bp-7 ++-0x1.299707cfa0a5ap-5 ++-0x1.64f623f5a4713p-3 ++0x1.2bc994ee38c37p-3 ++-0x1.e27d9435b978ap-1 ++0x1.8092d58d5c790p-21 ++-0x1.9c31372efb7c2p-25 ++-0x1.b3e4409bf591ap-11 ++-0x1.fc9e4603f0a42p-16 ++0x1.7d4f167842e1ep-1 ++0x1.d220d2dea0517p-25 ++-0x1.f327d6a043438p-9 ++0x1.0fbf54939b136p-16 ++-0x1.9d4c17b3aa3e3p-18 ++-0x1.6ab736c8be0aep-5 ++0x1.ecff81aec235cp-1 ++-0x1.102122d6bf984p-1 ++-0x1.44a7f0d39a7cbp-18 ++0x1.369d17b6b92d9p-1 ++0x1.2c1ec48113977p-1 ++0x1.b2a4a2cd6ddbfp-1 ++0x1.1aa8449c2cce7p-18 ++-0x1.2083e1015b457p-1 ++-0x1.1589761b30c7bp-1 ++0x1.e3c782bba8f90p-1 ++-0x1.e08b0317d404dp-1 ++0x1.290f1622d1939p-8 ++0x1.7edf2261fcf95p-1 ++-0x1.521241688012fp-2 ++-0x1.0307d4e8caa52p-18 ++-0x1.ccb366715602cp-1 ++-0x1.95aa45bfdf88bp-1 ++0x1.83b6d2241735cp-13 ++0x1.4977776659f91p-21 ++0x1.265e670e3a504p-1 ++0x1.857de2b5f1f7cp-1 ++-0x1.6e69d509bec68p-24 ++0x1.d4f0109417b1ap-1 ++0x1.9ab2842033f1fp-15 ++-0x1.17d9b0f3c22a2p-1 ++0x1.75a321c41a6b0p-1 ++0x1.53a5d3faa91ffp-1 ++-0x1.618c00bcdbb72p-1 ++0x1.e99bd19956904p-1 ++-0x1.89c34195ab10dp-21 ++-0x1.82b1234ed4accp-21 ++0x1.6b0486d8d09fbp-1 ++-0x1.4259822aefa37p-1 ++-0x1.ecfff733e7bb3p-2 ++-0x1.90eac37875516p-1 ++-0x1.ba38b666e3abap-6 ++0x1.1ebbb6284200ap-22 ++0x1.6c2ee1790a8b6p-1 ++-0x1.0c2d8105dd990p-1 ++-0x1.6d7264d3662ffp-1 ++-0x1.43fe90e13fc36p-4 ++0x1.46eb6152db91dp-10 ++0x1.e4e26333b349ep-4 ++-0x1.96ef543f5383cp-1 ++0x1.47dca56a5b223p-1 ++0x1.08ea668aed516p-4 ++0x1.ef8f3428ca661p-6 ++0x1.5b2b8480c515fp-10 ++-0x1.2762d191e5fa5p-1 ++0x1.508d56e0f5ca9p-1 ++-0x1.2f616558f0888p-24 ++0x1.0260d42d27c09p-11 ++-0x1.0988f69b99e16p-1 ++-0x1.d35697fcfb7b6p-14 ++0x1.ffaf01135dec7p-1 ++0x1.0afa01afd6afep-1 ++0x1.c7cbb635b5af3p-6 ++-0x1.23eb629a0abe4p-1 ++-0x1.b87e61aeac49bp-1 ++0x1.1646f4a28d191p-18 ++0x1.4cd3a045b9783p-1 ++-0x1.5c7a8599ffe9ap-14 ++-0x1.9457a34399b4ap-1 ++0x1.a154f6f6548e8p-1 ++0x1.ba8ad1105bb80p-6 ++0x1.af9176505fbeep-1 ++-0x1.430563677bff8p-8 ++0x1.a2a2d2a0778c3p-1 ++0x1.df4c731f44b97p-1 ++-0x1.d049e60c0ecd3p-23 ++-0x1.325e341d79998p-1 ++0x1.3da4954669e1fp-27 ++-0x1.88d501c9b4a1bp-8 ++0x1.f41c064c0c9bdp-1 ++-0x1.2e7715356184dp-16 ++-0x1.ab8a55eb84adfp-1 ++-0x1.b5e7918f752d5p-1 ++-0x1.c958c1faf2e05p-12 ++-0x1.0a0b95fda6377p-1 ++0x1.b05f4635c8e79p-1 ++0x1.a216642c8c3c6p-8 ++0x1.3049c686e99b7p-27 ++0x1.e5ea44ec320c1p-1 ++-0x1.884175facb7a0p-5 ++0x1.45aa62e647503p-13 ++-0x1.634bc7ff5c615p-1 ++0x1.b68125750b075p-9 ++-0x1.97abf0534746cp-15 ++0x1.f687e58a3b36ap-5 ++-0x1.1040e1ed1d1e7p-25 ++-0x1.6ba8e7fc4221fp-10 ++0x1.16e38001e0edbp-1 ++0x1.df2ad20740b3dp-26 ++-0x1.8e1172ae8c333p-1 ++-0x1.b22640bb7e540p-19 ++-0x1.fa5552ca0ed82p-13 ++-0x1.e8ad873f75a2dp-1 ++0x1.c91491a1a5938p-26 ++-0x1.4ec4473b27d56p-1 ++0x1.5f1862dba68cbp-1 ++-0x1.dce0e6290bc85p-1 ++0x1.fa68d22f5773bp-1 ++-0x1.919486a495542p-1 ++0x1.d303d564c000fp-1 ++-0x1.afff55716fe0bp-23 ++0x1.28b7d3631da7ap-16 ++0x1.9ca493208bbdep-1 ++-0x1.542a05a6b369fp-1 ++-0x1.f7e79460fc57ep-7 ++0x1.bb029019558b5p-15 ++0x1.bba002729f3d6p-1 ++0x1.1ada3533fa957p-1 ++-0x1.896d956b5743fp-21 ++-0x1.3a30147e08f69p-1 ++0x1.25644490a1259p-14 ++-0x1.4ef3744b5e468p-4 ++0x1.04dac7a84b2d7p-1 ++0x1.d46464683c4f8p-1 ++0x1.9c4674b85fc58p-9 ++-0x1.da6bd2cb0a530p-1 ++-0x1.eb2076f05f6f8p-1 ++0x1.4aeba21a72c73p-11 ++0x1.af7910337420fp-6 ++0x1.04ad609a3e62bp-1 ++0x1.eafe16a4433afp-1 ++0x1.1c65e51ff0cacp-1 ++-0x1.4eb61140c3e34p-1 ++-0x1.693d851f3cfeep-10 ++0x1.254d73366914dp-2 ++-0x1.ff34f15f5e3e6p-3 +diff -urN glibc-2.17-c758a686/benchtests/atan-inputs glibc-2.17-c758a686/benchtests/atan-inputs +--- glibc-2.17-c758a686/benchtests/atan-inputs 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.17-c758a686/benchtests/atan-inputs 2015-06-20 21:22:16.296458135 -0400 +@@ -0,0 +1,809 @@ ++## args: double ++## ret: double ++## includes: math.h ++0x1.642175414a222p-3 ++0x1.32f96343ff094p47 ++0x1.63961340f55e3p-4 ++-0x1.404c80c42d2d7p3 ++0x1.ff0297a7f4cf9p-4 ++-0x1.3514d0a630343p2 ++-0x1.9cd792d24de9cp-13 ++0x1.48de0536fa639p-26 ++0x1.df679233e616cp3 ++-0x1.3672036e3b5dbp46 ++-0x1.a6af31fe26a67p1 ++-0x1.601447d82000cp-23 ++0x1.6978a3d8cdd0cp34 ++-0x1.bcf7074f6ad00p-20 ++0x1.4560113d34322p1 ++-0x1.88e3f71039a4bp-4 ++0x1.016652052d70ep6 ++0x1.4eeee5387c40fp-11 ++0x1.1a93e2edc9a70p-1 ++0x1.2a86a6b000b1bp19 ++0x1.b550a52791570p19 ++0x1.4f55e0fd66533p6 ++0x1.179893d68a175p0 ++0x1.c587a48440d49p18 ++0x1.c4d736b34755ep41 ++-0x1.0b00d1e309baap15 ++0x1.d3ddd7a4105b8p-17 ++0x1.907795ee90c71p1 ++0x1.1c0ee51bf3fbbp-26 ++0x1.6e21857f657b5p-3 ++0x1.522870681be34p0 ++-0x1.47fc357b48019p2 ++-0x1.fc80d2478d003p44 ++0x1.6b6af109c6d11p-2 ++-0x1.557b744e3f2b2p-2 ++-0x1.c0bd72f9dcc6fp-3 ++-0x1.5dad543b37a02p2 ++-0x1.d95b35b36eadep38 ++0x1.645042fa42207p-2 ++-0x1.139444200b144p1 ++-0x1.28a691f56455fp-24 ++0x1.d97ff36594800p-2 ++-0x1.c46e817205691p-1 ++0x1.189121c162006p-21 ++0x1.b22526da1b4b3p-25 ++0x1.89097738a1f84p23 ++-0x1.3de8b3a71241ep-4 ++0x1.d539d73aa3a6bp4 ++0x1.9f3aa3d8be109p-8 ++-0x1.28df31604ae5fp-2 ++-0x1.a5ba03c7f21c6p39 ++-0x1.0aa65539c9639p44 ++-0x1.596756edc8d29p-1 ++0x1.bf89523d6d9a8p18 ++0x1.245712c9030a1p-9 ++-0x1.e70de078fe520p-3 ++0x1.0a6a653edc9c8p-1 ++0x1.cc69116b071cdp-2 ++0x1.2f24c0cf8fcb2p-16 ++0x1.ed2ac30efc4e7p41 ++-0x1.db4970624d850p-4 ++-0x1.bb1260bff835cp-4 ++0x1.d685f1157cf4ap-4 ++-0x1.27241256d29b8p1 ++0x1.ec5380eff6d2ap-3 ++-0x1.fd7d8132290bep-1 ++0x1.228426a24d54dp-17 ++0x1.2ea847880a2cdp39 ++-0x1.89a5c5d485ab4p3 ++-0x1.fbd930c90d22cp3 ++-0x1.86674787bedeap3 ++0x1.ab27809f97987p1 ++0x1.c17c653258848p2 ++0x1.a3f615b4aa2afp-4 ++-0x1.e8bff4a769203p46 ++0x1.2fbb90ef75a25p-4 ++0x1.d9d246c3e5da7p10 ++0x1.1adf65737ce63p2 ++-0x1.4bbf56383d2c4p-20 ++0x1.1bc9009943672p2 ++-0x1.84cd8442450bcp24 ++-0x1.05cbc2307bc60p0 ++0x1.b18fc1de83969p-2 ++-0x1.a63bf1a32c82cp-26 ++0x1.08e7e57369c93p4 ++0x1.97e8f20d0a9f8p33 ++0x1.1358340c23f9dp-13 ++-0x1.f3a987156a953p-15 ++0x1.cc4fe36fcebc5p-3 ++0x1.d858d5bee5222p-2 ++0x1.8911076ba1dfep-5 ++0x1.5ab4754566467p1 ++0x1.854547561eabbp1 ++-0x1.830ce306fc8c4p-13 ++0x1.b181a4ed4c25ep-19 ++0x1.f77112499c880p30 ++-0x1.5124040e757ddp43 ++0x1.751c061e72f3dp-1 ++0x1.b88d87c4c86b2p-8 ++0x1.52c5b76c6ef89p-10 ++0x1.e89130ee99ce5p-4 ++0x1.2a2ed7a0b1956p-1 ++-0x1.47b533d254eb8p3 ++0x1.b4d0b69a8f4a8p-24 ++0x1.8316a4af1bf68p-18 ++-0x1.9e1ef1ccdd020p15 ++-0x1.88bde5f29b2d9p3 ++-0x1.365034bff4761p0 ++0x1.7e40940c2d5adp-17 ++-0x1.2c37625bfd76dp-18 ++0x1.707642d37610fp0 ++-0x1.afd1d0135cf31p3 ++-0x1.4b0d1755bbf42p-11 ++0x1.c4ed75b07c727p0 ++-0x1.5e2db71616c7ap1 ++0x1.050223b1cd624p3 ++-0x1.3b3db4aa80820p-10 ++0x1.5ccb8047d5d1ap12 ++0x1.175282b52f29cp0 ++0x1.aabc424c47eafp9 ++-0x1.1a90445a04e18p0 ++0x1.3da941dc72acdp2 ++0x1.501726cf3e259p-12 ++-0x1.1b3006e74e325p4 ++-0x1.ad42977bf9a2bp-1 ++0x1.73d0e25d9335ap-3 ++0x1.0a514560b1915p-4 ++0x1.9b955619c595bp-3 ++0x1.c1bde2d25803bp-2 ++-0x1.c9c450db85015p-24 ++-0x1.b93f27a390fc9p-3 ++0x1.394074cfa62d3p1 ++0x1.815072f52a2e6p0 ++0x1.1e52d6ee6069fp-1 ++0x1.1f90737198ea5p-19 ++0x1.13341218923f7p-23 ++0x1.348b0774c87ffp2 ++0x1.d2580731da42cp2 ++0x1.87b5a06e57762p-5 ++0x1.b40fd58aea62ap0 ++0x1.9cd365175d628p28 ++-0x1.4094703aac68bp-24 ++0x1.56af03795574fp21 ++-0x1.e189800006571p-26 ++-0x1.9dfb51f7b789cp47 ++0x1.9bc2e73963ca7p11 ++0x1.b5a1c0632322cp0 ++0x1.205e5539779c2p51 ++-0x1.6c47a5b0217f6p2 ++0x1.791cd37782384p-2 ++0x1.231d31372c140p1 ++0x1.91e2d31efbcaap-3 ++0x1.34fa969626571p30 ++-0x1.6bc04360963b5p-11 ++0x1.8add0065da1d5p-4 ++-0x1.d346e1877a7fdp-2 ++-0x1.725697ff5c03dp1 ++0x1.a8e2a686fd172p-1 ++-0x1.8bd725c48f410p3 ++-0x1.3b0537b22c0bbp-1 ++-0x1.2c0db2781aad0p28 ++0x1.4c6a110727b7fp-16 ++0x1.b8d171996cbe1p0 ++0x1.e6c6d70c497a0p19 ++-0x1.15a9f10771286p2 ++-0x1.c30f24893d7a3p-3 ++-0x1.d73aa26a08a23p38 ++-0x1.58b7549a93d13p-4 ++0x1.169012651035fp1 ++0x1.197ee4c04ae17p25 ++0x1.3fba00276eae3p1 ++0x1.941d03c4bf6a6p-4 ++0x1.7f21c64e2abb7p-2 ++0x1.7581d56332d79p0 ++0x1.971980a7e2435p27 ++-0x1.e44690996dde4p-8 ++-0x1.3133113da7775p-20 ++0x1.31d201884c815p30 ++0x1.1f46672b184b2p-20 ++-0x1.bbbc31b0259d6p7 ++-0x1.ff6f625bf7eadp-1 ++-0x1.3dd6a5e841573p-1 ++-0x1.294b2242985c5p-5 ++0x1.80c6d17d3b82ep41 ++0x1.66a703915eafdp-4 ++0x1.c16431985801dp28 ++-0x1.66cc363cc169cp-13 ++-0x1.445ac6d7de615p29 ++-0x1.78d803eac6a4fp-17 ++0x1.7d17f2f5981bdp-4 ++-0x1.be3452bcdc974p28 ++0x1.83dff4dfc4757p42 ++0x1.451781735f844p14 ++-0x1.4dab41db1c970p3 ++0x1.3373037f37040p2 ++0x1.20f7623057a1cp-4 ++0x1.b74c37f7006cfp36 ++0x1.6d17f13894ea6p-8 ++-0x1.9084f58ffff58p1 ++-0x1.c57ef7f9833e1p-3 ++-0x1.943ce31bfd282p-26 ++-0x1.75a42576fe1cdp1 ++0x1.ff0257a993250p2 ++-0x1.63ef308e427d4p0 ++0x1.de26003f5ba7ep16 ++0x1.15333549fa76fp29 ++0x1.66bfb50c269e7p0 ++0x1.a49604cc4d7f9p-4 ++-0x1.15003315471d9p-4 ++-0x1.38bed20a51ff5p-9 ++0x1.7d97f5b7805ddp-19 ++-0x1.7a3244a0e1b3ep-2 ++0x1.ed0681d4ee226p50 ++-0x1.15a691a22afc6p-4 ++-0x1.d2c15149a171cp48 ++-0x1.d395408686509p1 ++0x1.d121d5a063487p-27 ++-0x1.159dc08e6bae4p-18 ++0x1.835914ed4ac69p46 ++-0x1.f45bc1593e631p-2 ++-0x1.abaf42742e1aep0 ++0x1.f67cc57a82279p22 ++-0x1.3cdc56ba8ad80p0 ++-0x1.5a8f042e5c06dp-4 ++0x1.306774727b9c8p-5 ++-0x1.0f21118d78a86p1 ++-0x1.abbcc62ae1185p-17 ++-0x1.ff75940794858p3 ++-0x1.6048b6174f2dap-3 ++-0x1.84f4968e9a1a0p3 ++-0x1.ecc9025c45c61p-9 ++0x1.d9cd03dc0d910p-18 ++0x1.cd846319c00c5p-3 ++0x1.6366066bd94a6p3 ++-0x1.8ebc74865b7b3p1 ++-0x1.b87c63e47576cp-3 ++0x1.c45cb0d4685f5p-3 ++-0x1.e702b4a6029fcp35 ++0x1.fc6300b9b675ap3 ++-0x1.3f43a795e244ep0 ++-0x1.f1cd009ef1604p3 ++-0x1.d2fbd2cc79418p11 ++0x1.907fd4f15d9d3p-10 ++0x1.a371220d3cd1ep43 ++0x1.df8544d34e26dp26 ++0x1.acb3279e8da17p-18 ++0x1.b1ea21e59afd9p-4 ++-0x1.e0dff1828b454p-4 ++0x1.ef38b267b4663p39 ++-0x1.baba241cd2232p-13 ++0x1.4fe7c7cd05a69p46 ++-0x1.988073a34d2c8p29 ++0x1.7599e0ac9a522p-8 ++0x1.251b26c85badap52 ++-0x1.a27c560a7da35p0 ++-0x1.f091c7c2304a2p17 ++-0x1.d0e1114b97abfp-13 ++0x1.33ee35cf8c72ap1 ++-0x1.e714e1fed73c4p-2 ++0x1.1292e4e843885p-3 ++-0x1.03fcc540c9867p22 ++0x1.a53c8268c5213p-2 ++-0x1.f16e3196353c0p-20 ++0x1.e88a97bf39b0cp14 ++0x1.4f00111aae17fp13 ++-0x1.388bf2c171982p-1 ++0x1.0f70b2319de14p-3 ++0x1.e95a75a9609e3p-1 ++-0x1.1047552b4d153p2 ++0x1.091e73082965cp0 ++0x1.2560a7de1090ep-26 ++0x1.b7fde3097d182p-20 ++0x1.c7f115eabfdedp-4 ++-0x1.e99523e282a43p40 ++-0x1.960706b024814p-3 ++0x1.6ca4d098808a9p41 ++-0x1.782a50dd85179p50 ++-0x1.26e3c42a5f2d2p1 ++0x1.ca282036f2b8cp-10 ++0x1.87d031409e3e4p-17 ++0x1.a80f97461a0f4p-3 ++0x1.66ed5379b1601p45 ++-0x1.081bb51f6296ep21 ++-0x1.a51801c3b0ab4p-3 ++-0x1.f9af91b1e0eacp-4 ++0x1.f59650108c48fp1 ++0x1.085c309bbe310p0 ++-0x1.b9fea5e346036p1 ++-0x1.453542b905ad4p24 ++-0x1.e66c14b55c117p1 ++-0x1.90a6830407ac7p40 ++0x1.9bc93234caf93p26 ++0x1.4b94104f5f41ap-3 ++-0x1.c7b564e75a382p50 ++-0x1.c2b250afb59e8p13 ++-0x1.bfb283faeefbfp2 ++-0x1.173235dbdbca5p-10 ++-0x1.ac62c7b5e878bp-4 ++-0x1.c2a9461c28ecdp-17 ++0x1.1e1bf4bfee9b2p1 ++-0x1.c6a1a78876ab6p0 ++-0x1.e6fb5111565c8p3 ++-0x1.8932b58866bcfp-19 ++0x1.6407a070f3a3fp12 ++0x1.87a1b1adaed03p-4 ++0x1.e5ebf4ac465b1p-4 ++-0x1.f8d5e0b5c2957p20 ++0x1.42836589a8c0dp31 ++-0x1.d1ad755010ed1p-4 ++0x1.3d1f16896735ep-1 ++0x1.fdaba0fd40c7cp31 ++0x1.3311135efe06dp-3 ++0x1.b5dc02c3070d2p-2 ++-0x1.04d741eec5058p-23 ++0x1.a80bc579c9a9bp3 ++0x1.4766230792559p1 ++-0x1.a5cbe4d7cc609p-3 ++-0x1.ba1d23d80c32fp-11 ++-0x1.daaf8434d9034p-13 ++-0x1.c65d358dac3fep-11 ++-0x1.3f4da10042b42p2 ++0x1.262fa4579b063p-7 ++0x1.914e60ffdbed8p-4 ++-0x1.efac261144868p-9 ++0x1.ce397251fa408p-4 ++0x1.be05d28ca250ap-11 ++-0x1.7479b7fa984ddp-3 ++-0x1.ac20c42062d2fp2 ++0x1.9a487118946dap-4 ++0x1.2a124744f9fa4p47 ++0x1.b1981261f9020p-1 ++0x1.fbf7179ce5846p-2 ++0x1.22fbd75358604p-23 ++0x1.b1b2a4bcce5acp34 ++0x1.84e62689c678dp-19 ++-0x1.0b3bf5d136f5fp-25 ++0x1.f93ce18d93227p-15 ++0x1.bbd3b6a42bc58p-22 ++-0x1.47b315f8194ebp27 ++-0x1.827896462fb0cp-18 ++0x1.2947c23116c19p-2 ++0x1.3466e4652adedp1 ++-0x1.23c2a01c6daddp-11 ++-0x1.5831b4a29e94ep-2 ++0x1.4a7fb41fb32ccp-24 ++0x1.77544628d33f4p2 ++0x1.40a5220c05f84p43 ++-0x1.859503fac777cp-1 ++0x1.629111fdc02f9p49 ++0x1.f72960081155dp-24 ++0x1.100cb00f41850p0 ++-0x1.1280f391f830bp8 ++-0x1.2e93552200855p1 ++-0x1.4621063cd9ecdp-12 ++0x1.1c4111533addep-25 ++-0x1.569560309d6bbp-22 ++-0x1.7a8124168d622p3 ++0x1.17fba47954943p-4 ++0x1.0672546df1e40p-4 ++0x1.3157a7fbb3b2ap2 ++0x1.a82f370a40ce4p2 ++-0x1.a8fac6ce90f3cp1 ++0x1.0f28d09b57a07p0 ++0x1.da30a55a75636p2 ++-0x1.4a8a0783b2ccdp-3 ++-0x1.79e674173ab88p-1 ++0x1.c89b61641fceep31 ++-0x1.0f8107e6388fbp3 ++-0x1.f720f120f5f1fp-22 ++0x1.144b44598ac02p-4 ++-0x1.ceb152c076922p-3 ++-0x1.4b12e43d683a4p0 ++0x1.c0ae8156c4455p-3 ++0x1.85c10724ee68cp-3 ++0x1.3c4635592b9ffp-3 ++-0x1.d59892bee5390p-4 ++-0x1.cd1280ceab8c4p-3 ++0x1.b622b71aa922bp8 ++-0x1.2795c18e21649p-15 ++-0x1.639d32c619c4bp-19 ++-0x1.e8f917ef054dfp-8 ++0x1.c9eca4e44a7b1p1 ++0x1.be86276e10fa9p3 ++0x1.750cd40dd63b8p-24 ++-0x1.033ab125bb64ep-18 ++-0x1.9679b2912fcecp-4 ++0x1.f7b3a1afd048dp-23 ++-0x1.9f2863bcb1fd6p1 ++0x1.c7fed1051dcb2p4 ++0x1.c23ec470a9239p-7 ++-0x1.1e5006f62ba49p1 ++-0x1.0d9f216fea290p3 ++0x1.bd8340ad169bap46 ++0x1.dac8831aa29d9p3 ++0x1.7c191598763c2p1 ++-0x1.121aa313ac95bp33 ++-0x1.b0996534e93cep-2 ++-0x1.6c8353699c9c6p-1 ++-0x1.5df8208f06792p3 ++-0x1.4657113ffa73fp28 ++0x1.48a901159abe7p0 ++0x1.70e4b3448f927p50 ++-0x1.e120d621edccap-4 ++-0x1.4f2900d44caa5p1 ++-0x1.848165627b209p-5 ++-0x1.4cd082b565a11p-16 ++-0x1.d9d2d7967af18p-1 ++-0x1.222be1230bd8dp0 ++-0x1.361e6586e20d9p16 ++-0x1.3ddd364c29946p-19 ++0x1.3ee601f53dafap-18 ++0x1.e37ab68eb3013p45 ++-0x1.0b8a978bd97b9p2 ++-0x1.9589707e8a6ddp-20 ++0x1.b7ca368b81375p-4 ++0x1.2a7b114a80983p0 ++-0x1.8c0fd1048891ep-4 ++0x1.c32454b620d43p-26 ++0x1.853192a0e3bbbp-14 ++0x1.172b96d182f82p-2 ++0x1.4156741896c30p-3 ++-0x1.dd08573a1dc08p-3 ++-0x1.f112f2dfd0c38p23 ++0x1.f07ef18d186acp-9 ++0x1.b0b643dc8187bp-2 ++0x1.edf9044a400ccp-26 ++-0x1.420ee09a253bbp-16 ++-0x1.ce5f43fa6c0e8p0 ++-0x1.b49ed6fe33c01p-2 ++0x1.bc1e67b736d93p27 ++0x1.18f252a5a70f2p-1 ++0x1.3bd3528a6b5c3p-25 ++0x1.042f039297e45p0 ++0x1.890e26c77777ap2 ++0x1.ec331761880b9p39 ++-0x1.12aec65364402p2 ++-0x1.b09600801c6c9p7 ++0x1.4c14331304537p36 ++-0x1.366b32ae15936p-9 ++-0x1.d04011bd2f923p-27 ++-0x1.bb73e632734cap51 ++-0x1.22df928d0db2bp14 ++-0x1.84d2c65e8a597p-4 ++-0x1.248ce4d82f9e1p-3 ++-0x1.a89a16ab8fc98p41 ++-0x1.22061604a7bbep-1 ++-0x1.9b7790ad6cfcap37 ++0x1.e146126a58363p-20 ++0x1.8bf9d0bee4587p-6 ++-0x1.74eec1eb48a38p18 ++-0x1.1eca65e42c0e2p-24 ++-0x1.5f6e27219b443p5 ++-0x1.95f64657f34b0p1 ++-0x1.ad0923f0c8747p-14 ++-0x1.71b7472c93381p2 ++-0x1.e88ec0fa2b8e2p40 ++0x1.0efad07b1325cp-2 ++-0x1.d614b725644c2p-11 ++-0x1.87f104d664989p-4 ++0x1.db8bf75a3dabcp25 ++0x1.18a07441e9358p-3 ++0x1.c52552071ba9dp2 ++0x1.4eee532e1cf42p-2 ++-0x1.acd7a7d0cb2d2p49 ++-0x1.efdbb63ba4cd9p3 ++-0x1.c0dbd4011e3dbp14 ++0x1.a8b9053cd4ae7p-26 ++0x1.950f208f9f314p-3 ++0x1.62bc1534e8779p1 ++0x1.ec8712224e21dp5 ++-0x1.dcf2f55094df3p-4 ++-0x1.13a10025de14cp1 ++-0x1.275ce549521b9p-1 ++-0x1.2d3995ba1b17bp-5 ++-0x1.a76630717c0c6p3 ++-0x1.b2ec655611d3ep38 ++-0x1.9bd4a62004f97p-20 ++-0x1.49dcb6df53770p1 ++-0x1.2b34c0811030cp-3 ++0x1.99ee70ec910aap-21 ++0x1.35b201aa1e70bp-3 ++-0x1.92a3000ee8dd4p-2 ++-0x1.d69d60b48249fp3 ++0x1.eee73555cf4d5p-3 ++-0x1.07de748dacd3ap12 ++-0x1.a8ea7383f8f09p8 ++-0x1.eca3120c1f7cep1 ++-0x1.8b4b26d9f4eabp51 ++0x1.167433f50737ep-23 ++0x1.585657c46c25ap-20 ++0x1.0e0447b473e54p2 ++0x1.b28d209b03f59p-4 ++0x1.9a8d34b2b2855p-25 ++0x1.948ac6afc0f37p3 ++-0x1.563cf374c073fp-4 ++0x1.fa49e687bce32p42 ++0x1.c42c2624133c2p48 ++-0x1.001e573a69113p2 ++-0x1.4dfb17453411bp-3 ++-0x1.d9b9b553ab45fp23 ++0x1.55496452db316p3 ++-0x1.8420d7f1ac33ep3 ++-0x1.ac7cd42b0f63ep2 ++0x1.ce2970c35394cp2 ++-0x1.de2ce25feb1e3p-16 ++0x1.4fe2152fd9407p-2 ++0x1.4d4233d0400d2p1 ++0x1.f4c640fdd48b2p-10 ++0x1.1512c1316465ap37 ++0x1.b584b29dc1d4bp22 ++-0x1.695e973f8db94p-1 ++0x1.7373d677b7679p24 ++0x1.f899a57b746b9p-22 ++-0x1.f5ad761b38217p0 ++0x1.daf950a02a029p1 ++0x1.a9c47461369bcp-7 ++0x1.a66902e961fe5p-2 ++-0x1.f6bc5292eadcep2 ++-0x1.0377673b5656cp20 ++-0x1.269297562701dp-4 ++0x1.13d1e1e922a15p3 ++-0x1.ddf1d5cfbfb4dp-20 ++0x1.6c21328fa2eacp0 ++0x1.953fe3186fbacp0 ++-0x1.2ed5d49aee19cp-15 ++-0x1.d3e9f10d61fa8p-4 ++0x1.5315517278bffp-4 ++-0x1.aeeb36df95b57p26 ++0x1.9f55b3bd1d398p2 ++0x1.894151536709bp3 ++-0x1.93a3d5c645e3fp22 ++-0x1.37803538f3548p43 ++-0x1.d5dde10bc588fp-23 ++0x1.f145117569f10p4 ++-0x1.ca23009d83541p0 ++-0x1.fc4063d4a4afep23 ++-0x1.ec88c7edb5ae2p-6 ++-0x1.2d5973fcaa823p-21 ++0x1.437a141589287p2 ++-0x1.9104e694ef44ap-2 ++-0x1.b70572032d576p-7 ++0x1.d10452e3eae69p2 ++0x1.2874b443d01bcp0 ++0x1.fa66d12189a72p20 ++-0x1.303e443c556d3p46 ++0x1.4b5d557e8fe56p44 ++0x1.602bb4e791b87p-20 ++-0x1.158f81cbcb150p-3 ++-0x1.36a3939175212p3 ++-0x1.826092fe525c4p-19 ++-0x1.a72da4879bcb1p-26 ++0x1.839626b74c51ap-1 ++-0x1.bd2da6527d628p5 ++0x1.3257e0dc99c46p-23 ++-0x1.b3ebe0c2317c6p3 ++0x1.1164968b6d3d2p-4 ++0x1.bd5404092a649p30 ++-0x1.dd0e00246fdf1p-3 ++-0x1.4167e56920aa2p6 ++-0x1.b035570fa59c8p-1 ++0x1.7853f4cf90bbcp15 ++0x1.bc20a74a4c2dbp-18 ++0x1.0e3ee3d24bf54p3 ++-0x1.95aab56378e9cp45 ++-0x1.4930a7aa51e8dp1 ++0x1.ea77407c9a5f1p-1 ++0x1.4fac93644de62p-3 ++0x1.a2ed87cc0f417p43 ++0x1.14d2d0a33df56p2 ++-0x1.3473f6f77b6c5p11 ++0x1.b647101dc4177p3 ++-0x1.4e0b92acc66bfp23 ++0x1.2a3797d36ee30p-4 ++0x1.ce10973c013ebp-14 ++0x1.b6cef57406772p2 ++-0x1.326762c9ea656p-22 ++0x1.56473079b28aap24 ++-0x1.46f3d42d9a8dap-11 ++-0x1.6d4e52e373151p-7 ++0x1.622a0570fc4abp11 ++-0x1.7e0bb32e21466p-6 ++0x1.55a1a3d809d3ep1 ++-0x1.d7492480e11f5p32 ++0x1.835730d6b3ef6p-18 ++0x1.2d9cf79f070e8p-9 ++-0x1.6cee95c1d9445p26 ++0x1.45c58441f2822p-3 ++0x1.2f01d75200b30p21 ++-0x1.014c5172af434p0 ++0x1.9d96552d416d8p3 ++0x1.f878a3fc8f55fp-3 ++0x1.1206f1aa29231p1 ++0x1.998bc480cbf5dp-3 ++0x1.2160c0ab74e78p41 ++0x1.66cce4923857ap-6 ++-0x1.47bf27bfba3adp-3 ++-0x1.88b9442658583p-13 ++0x1.baf0076743831p2 ++-0x1.d7a664adbb965p-22 ++0x1.8bfbf37ef0c90p22 ++-0x1.a2b137086be2cp9 ++0x1.b8fa2667197acp29 ++0x1.2e9ee649d720ap-2 ++0x1.fd42f19ae5dfdp-15 ++0x1.b4c7c70a22018p38 ++0x1.6fee027ca714ap-18 ++0x1.b986a428fdeebp-9 ++-0x1.f63c6744cafc4p-7 ++-0x1.860b9508a01c2p-4 ++0x1.c9dbe26d13605p-7 ++-0x1.e5af65a0da055p-4 ++0x1.2f48357a95e60p-3 ++0x1.afac3209945f4p-11 ++0x1.e24230fc8430fp-1 ++0x1.555f1605043d9p40 ++-0x1.42c7b6d8c6b89p-4 ++0x1.f5e416fab1768p24 ++0x1.4379506da570ep10 ++-0x1.c38b2527d3a6ap0 ++-0x1.ecf007e1a6728p-3 ++0x1.636eb2220b2c2p-18 ++0x1.7609e702937b8p2 ++0x1.2db5d31780fa5p3 ++-0x1.221c240b15183p-3 ++0x1.084b249033af8p-19 ++-0x1.69c8f54230d4cp2 ++-0x1.5458a621ac511p0 ++0x1.c8b53281fbad0p-15 ++0x1.0c8ac2d6bf8cep-22 ++-0x1.28b804bea1e7fp3 ++0x1.919d64a75bf39p-9 ++0x1.4c0b078f754a4p-1 ++-0x1.dd7405983ab97p-20 ++0x1.ba2103a39b033p19 ++-0x1.b21fc106586d2p0 ++0x1.eacb558bbd5dap1 ++-0x1.058304cdc51f1p-2 ++-0x1.e530d67d5c413p15 ++0x1.9efc141496268p-21 ++0x1.9e43436405397p-2 ++0x1.d6c5d5f5dcc9fp-22 ++0x1.2f0540658e814p1 ++0x1.89ea31cb96062p1 ++0x1.c9d690079576dp-7 ++0x1.9b1ef5b23f047p-2 ++-0x1.c1e61429c45fbp43 ++0x1.248b34f22e7e1p-26 ++0x1.0dc2918fd3196p-15 ++0x1.a17a2260c8d58p18 ++-0x1.a088140ade389p19 ++0x1.8b92c2168e33fp40 ++0x1.69ab67a22bbbcp0 ++-0x1.343232b010a37p-17 ++-0x1.0c4932248f574p0 ++-0x1.2bdc378a38991p-2 ++0x1.2d563370110dap-12 ++0x1.a27134171f37dp-4 ++0x1.fa63324eb71a3p26 ++0x1.6f50c55b7950ep-21 ++-0x1.0486e73eca0d8p45 ++-0x1.fa20f7947f447p-3 ++0x1.0439c6fe1a62ep2 ++0x1.4e5d366349911p2 ++0x1.985933b0a27d6p-2 ++0x1.bf592781e0417p-4 ++0x1.bd39f070daca3p-4 ++0x1.0130b7296f20dp0 ++-0x1.299cc68ec2149p2 ++-0x1.6d9fc7a6e0946p0 ++0x1.b42110fb94ad0p31 ++0x1.b59970f83df8ep1 ++0x1.c4083529ddeb8p38 ++0x1.ac3bb44cafe59p1 ++0x1.6d66733b81b71p-11 ++0x1.20beb78f7ceeep-16 ++0x1.d285f704a02d5p-4 ++0x1.bf37a3dc305b1p37 ++-0x1.8852a20307706p1 ++0x1.8129a11b33c67p31 ++0x1.1b31565ac4d26p38 ++0x1.efe3d79df1a25p0 ++-0x1.df4fc61097087p34 ++-0x1.801e6310f70c4p1 ++0x1.de7fc178da718p1 ++0x1.82cd96b74c33bp-3 ++0x1.14ce177c73acbp2 ++-0x1.b8bfa6f20bf6cp-4 ++0x1.04ff06087395bp-9 ++-0x1.8327b171d58abp-4 ++-0x1.8cabe7b5327bap-3 ++-0x1.82c492035cf5bp24 ++-0x1.d85a267d87555p-24 ++-0x1.efdc44b7fb121p24 ++0x1.ea99c6cf2fd74p-17 ++0x1.3fb6671f607b1p1 ++0x1.97dce09249de2p-3 ++-0x1.9dc4f0331f52cp43 ++0x1.ea7d727d27334p41 ++-0x1.ec9d516a85c75p-25 ++-0x1.bb2176abaedd1p-3 ++-0x1.71eeb273dd3adp-15 ++-0x1.7be385146ccdep25 ++0x1.c1f987ad8af62p-6 ++0x1.2159279f1c89ap2 ++-0x1.4805b43babc89p-17 ++-0x1.c16834d0d845ap-20 ++0x1.c52f537caeb0ep10 ++0x1.14d5e5a6c66f8p52 ++0x1.2f929423ad32fp0 ++0x1.e9ce62b513428p-4 ++-0x1.8a14f3724eb37p32 ++0x1.64013151734fdp3 ++-0x1.9090f39f49889p23 ++0x1.be6b47a137a52p-12 ++0x1.59a42749fd7c3p1 ++0x1.8603f544b0976p-15 ++-0x1.4d2ba3dfaeb93p-2 ++-0x1.7d770619d5bc3p12 ++0x1.edfb87aaee9b1p1 ++-0x1.f23d94e870be7p-4 ++-0x1.21500514f25d3p41 ++0x1.cb8712f937eedp-15 ++0x1.fb47c7a69d8a4p-24 ++0x1.f1c904cd2e471p-12 ++-0x1.31e6e3b7073f8p0 ++-0x1.facd32a72c5a8p2 ++-0x1.9823a41a9780ap-3 ++0x1.3db1f5e2a9a51p51 ++0x1.6344057f1cca6p-1 ++-0x1.8be6128041ebfp-13 ++0x1.6f07c272d7fe9p38 ++-0x1.fd48060bf89bfp-5 ++-0x1.82eb1727ca16ep-2 ++0x1.26e0a24f2ec11p-18 ++-0x1.74a1c0cb9d677p-14 ++-0x1.bb0c36f1bb121p0 ++-0x1.56a4873461187p1 ++-0x1.d01e65e325d8dp2 ++-0x1.5250308bc28a5p36 ++-0x1.83c6f31f2de0fp-24 ++-0x1.41ae76e29ab40p1 ++-0x1.d738a56bac094p1 ++0x1.1a5247926ba82p-14 ++0x1.d703938b24ac4p-22 ++-0x1.cc5566621df4fp-4 ++-0x1.4144e3f175873p-4 ++0x1.a41e208bd59c2p-4 ++-0x1.8588a53e4e022p8 ++0x1.cf4331e97df52p-27 ++-0x1.d70843f5b2a7bp-8 ++-0x1.b1a912cdf744ep-3 ++0x1.ad44072bba2efp-15 ++-0x1.735cf794885b0p25 ++-0x1.94d98257a7443p-4 ++-0x1.61dac14e8c1f2p1 ++0x1.f71585bdc20e7p-20 ++-0x1.3338f2e1ebed7p-2 ++-0x1.044ab29dd3fd8p-1 ++0x1.b230868e79405p-25 ++0x1.c3539439a1ce3p15 ++-0x1.2998d58d65498p-4 ++0x1.7273d75dd90f5p0 ++-0x1.6214d3e6a209fp32 ++-0x1.3b2aa66ea6fd8p-3 ++-0x1.6cc910ca7817ap-4 ++-0x1.1194f4be56f5bp28 ++-0x1.6dc3114d423c9p2 ++-0x1.b447e098a3c6fp18 ++-0x1.705865523468cp15 ++-0x1.8e6752f060479p38 ++-0x1.ebe665ab9b23ap3 ++0x1.df6ee1073afd0p32 ++-0x1.35ce11e0f4a42p5 ++0x1.7c26f0a48edd9p-3 ++0x1.af1996c678e0dp28 ++0x1.c4ea4704b4de2p2 ++0x1.697b37d6b070dp19 ++0x1.49fa574ba1eccp52 ++-0x1.695ee7cc1ce8ep48 ++-0x1.169c757dd823dp-23 ++0x1.207273ac379a1p-4 ++0x1.7c2dc5c85d916p23 ++0x1.fe02e67c4ccbfp-24 ++0x1.accc401e13286p49 ++-0x1.af3426c709c78p-18 ++-0x1.ab2ca07faba33p-4 ++0x1.aeaaf4f90a9c1p-4 ++-0x1.84f781f4efe2cp-9 ++-0x1.d885871aa2240p-9 ++-0x1.a618720ac58c4p-22 ++-0x1.9b995257a7ee5p-6 ++-0x1.f68b46a30839ep-18 ++0x1.e1443653f9257p3 ++0x1.ce1a94d5c772cp-22 ++0x1.b24255d0a3ce2p38 ++0x1.2eaa6690d786ep2 ++0x1.b5bb45a608da6p0 ++-0x1.ead7509b0d69ep26 ++0x1.86fa30e0b406ep3 ++-0x1.acd451c3cb8b6p49 ++# atan slow path with 144bit precision ++# Implemented in sysdeps/ieee754/dbl-64/mpatan.c ++## name: 144bits ++0x1.000000c5cba87p0 ++0x1.000001883003bp0 ++0x1.00000dfb2b675p0 +diff -urN glibc-2.17-c758a686/benchtests/bench-bcopy.c glibc-2.17-c758a686/benchtests/bench-bcopy.c +--- glibc-2.17-c758a686/benchtests/bench-bcopy.c 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.17-c758a686/benchtests/bench-bcopy.c 2015-06-20 21:22:16.296458135 -0400 +@@ -0,0 +1,20 @@ ++/* Measure bcopy functions. ++ Copyright (C) 2013 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 ++ . */ ++ ++#define TEST_BCOPY ++#include "bench-memmove.c" +diff -urN glibc-2.17-c758a686/benchtests/bench-bzero.c glibc-2.17-c758a686/benchtests/bench-bzero.c +--- glibc-2.17-c758a686/benchtests/bench-bzero.c 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.17-c758a686/benchtests/bench-bzero.c 2015-06-20 21:22:16.296458135 -0400 +@@ -0,0 +1,19 @@ ++/* Measure bzero functions. ++ Copyright (C) 2013 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 ++ . */ ++#define TEST_BZERO ++#include "bench-memset.c" +diff -urN glibc-2.17-c758a686/benchtests/bench-malloc-thread.c glibc-2.17-c758a686/benchtests/bench-malloc-thread.c +--- glibc-2.17-c758a686/benchtests/bench-malloc-thread.c 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.17-c758a686/benchtests/bench-malloc-thread.c 2015-06-20 21:22:16.297458105 -0400 +@@ -0,0 +1,302 @@ ++/* Benchmark malloc and free functions. ++ Copyright (C) 2013-2015 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 ++ . */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++#include ++ ++#include "bench-timing.h" ++#include "json-lib.h" ++ ++/* Benchmark duration in seconds. */ ++#define BENCHMARK_DURATION 60 ++#define RAND_SEED 88 ++ ++#ifndef NUM_THREADS ++# define NUM_THREADS 1 ++#endif ++ ++/* Maximum memory that can be allocated at any one time is: ++ ++ NUM_THREADS * WORKING_SET_SIZE * MAX_ALLOCATION_SIZE ++ ++ However due to the distribution of the random block sizes ++ the typical amount allocated will be much smaller. */ ++#define WORKING_SET_SIZE 1024 ++ ++#define MIN_ALLOCATION_SIZE 4 ++#define MAX_ALLOCATION_SIZE 32768 ++ ++/* Get a random block size with an inverse square distribution. */ ++static unsigned int ++get_block_size (unsigned int rand_data) ++{ ++ /* Inverse square. */ ++ const float exponent = -2; ++ /* Minimum value of distribution. */ ++ const float dist_min = MIN_ALLOCATION_SIZE; ++ /* Maximum value of distribution. */ ++ const float dist_max = MAX_ALLOCATION_SIZE; ++ ++ float min_pow = powf (dist_min, exponent + 1); ++ float max_pow = powf (dist_max, exponent + 1); ++ ++ float r = (float) rand_data / RAND_MAX; ++ ++ return (unsigned int) powf ((max_pow - min_pow) * r + min_pow, ++ 1 / (exponent + 1)); ++} ++ ++#define NUM_BLOCK_SIZES 8000 ++#define NUM_OFFSETS ((WORKING_SET_SIZE) * 4) ++ ++static unsigned int random_block_sizes[NUM_BLOCK_SIZES]; ++static unsigned int random_offsets[NUM_OFFSETS]; ++ ++static void ++init_random_values (void) ++{ ++ for (size_t i = 0; i < NUM_BLOCK_SIZES; i++) ++ random_block_sizes[i] = get_block_size (rand ()); ++ ++ for (size_t i = 0; i < NUM_OFFSETS; i++) ++ random_offsets[i] = rand () % WORKING_SET_SIZE; ++} ++ ++static unsigned int ++get_random_block_size (unsigned int *state) ++{ ++ unsigned int idx = *state; ++ ++ if (idx >= NUM_BLOCK_SIZES - 1) ++ idx = 0; ++ else ++ idx++; ++ ++ *state = idx; ++ ++ return random_block_sizes[idx]; ++} ++ ++static unsigned int ++get_random_offset (unsigned int *state) ++{ ++ unsigned int idx = *state; ++ ++ if (idx >= NUM_OFFSETS - 1) ++ idx = 0; ++ else ++ idx++; ++ ++ *state = idx; ++ ++ return random_offsets[idx]; ++} ++ ++static volatile bool timeout; ++ ++static void ++alarm_handler (int signum) ++{ ++ timeout = true; ++} ++ ++/* Allocate and free blocks in a random order. */ ++static size_t ++malloc_benchmark_loop (void **ptr_arr) ++{ ++ unsigned int offset_state = 0, block_state = 0; ++ size_t iters = 0; ++ ++ while (!timeout) ++ { ++ unsigned int next_idx = get_random_offset (&offset_state); ++ unsigned int next_block = get_random_block_size (&block_state); ++ ++ free (ptr_arr[next_idx]); ++ ++ ptr_arr[next_idx] = malloc (next_block); ++ ++ iters++; ++ } ++ ++ return iters; ++} ++ ++struct thread_args ++{ ++ size_t iters; ++ void **working_set; ++ timing_t elapsed; ++}; ++ ++static void * ++benchmark_thread (void *arg) ++{ ++ struct thread_args *args = (struct thread_args *) arg; ++ size_t iters; ++ void *thread_set = args->working_set; ++ timing_t start, stop; ++ ++ TIMING_NOW (start); ++ iters = malloc_benchmark_loop (thread_set); ++ TIMING_NOW (stop); ++ ++ TIMING_DIFF (args->elapsed, start, stop); ++ args->iters = iters; ++ ++ return NULL; ++} ++ ++static timing_t ++do_benchmark (size_t num_threads, size_t *iters) ++{ ++ timing_t elapsed = 0; ++ ++ if (num_threads == 1) ++ { ++ timing_t start, stop; ++ void *working_set[WORKING_SET_SIZE]; ++ ++ memset (working_set, 0, sizeof (working_set)); ++ ++ TIMING_NOW (start); ++ *iters = malloc_benchmark_loop (working_set); ++ TIMING_NOW (stop); ++ ++ TIMING_DIFF (elapsed, start, stop); ++ } ++ else ++ { ++ struct thread_args args[num_threads]; ++ void *working_set[num_threads][WORKING_SET_SIZE]; ++ pthread_t threads[num_threads]; ++ ++ memset (working_set, 0, sizeof (working_set)); ++ ++ *iters = 0; ++ ++ for (size_t i = 0; i < num_threads; i++) ++ { ++ args[i].working_set = working_set[i]; ++ pthread_create(&threads[i], NULL, benchmark_thread, &args[i]); ++ } ++ ++ for (size_t i = 0; i < num_threads; i++) ++ { ++ pthread_join(threads[i], NULL); ++ TIMING_ACCUM (elapsed, args[i].elapsed); ++ *iters += args[i].iters; ++ } ++ } ++ return elapsed; ++} ++ ++static void usage(const char *name) ++{ ++ fprintf (stderr, "%s: \n", name); ++ exit (1); ++} ++ ++int ++main (int argc, char **argv) ++{ ++ timing_t cur; ++ size_t iters = 0, num_threads = 1; ++ unsigned long res; ++ json_ctx_t json_ctx; ++ double d_total_s, d_total_i; ++ struct sigaction act; ++ ++ if (argc == 1) ++ num_threads = 1; ++ else if (argc == 2) ++ { ++ long ret; ++ ++ errno = 0; ++ ret = strtol(argv[1], NULL, 10); ++ ++ if (errno || ret == 0) ++ usage(argv[0]); ++ ++ num_threads = ret; ++ } ++ else ++ usage(argv[0]); ++ ++ init_random_values (); ++ ++ json_init (&json_ctx, 0, stdout); ++ ++ json_document_begin (&json_ctx); ++ ++ json_attr_string (&json_ctx, "timing_type", TIMING_TYPE); ++ ++ json_attr_object_begin (&json_ctx, "functions"); ++ ++ json_attr_object_begin (&json_ctx, "malloc"); ++ ++ json_attr_object_begin (&json_ctx, ""); ++ ++ TIMING_INIT (res); ++ ++ (void) res; ++ ++ memset (&act, 0, sizeof (act)); ++ act.sa_handler = &alarm_handler; ++ ++ sigaction (SIGALRM, &act, NULL); ++ ++ alarm (BENCHMARK_DURATION); ++ ++ cur = do_benchmark (num_threads, &iters); ++ ++ struct rusage usage; ++ getrusage(RUSAGE_SELF, &usage); ++ ++ d_total_s = cur; ++ d_total_i = iters; ++ ++ json_attr_double (&json_ctx, "duration", d_total_s); ++ json_attr_double (&json_ctx, "iterations", d_total_i); ++ json_attr_double (&json_ctx, "time_per_iteration", d_total_s / d_total_i); ++ json_attr_double (&json_ctx, "max_rss", usage.ru_maxrss); ++ ++ json_attr_double (&json_ctx, "threads", num_threads); ++ json_attr_double (&json_ctx, "min_size", MIN_ALLOCATION_SIZE); ++ json_attr_double (&json_ctx, "max_size", MAX_ALLOCATION_SIZE); ++ json_attr_double (&json_ctx, "random_seed", RAND_SEED); ++ ++ json_attr_object_end (&json_ctx); ++ ++ json_attr_object_end (&json_ctx); ++ ++ json_attr_object_end (&json_ctx); ++ ++ json_document_end (&json_ctx); ++ ++ return 0; ++} +diff -urN glibc-2.17-c758a686/benchtests/bench-memccpy.c glibc-2.17-c758a686/benchtests/bench-memccpy.c +--- glibc-2.17-c758a686/benchtests/bench-memccpy.c 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.17-c758a686/benchtests/bench-memccpy.c 2015-06-20 21:22:16.297458105 -0400 +@@ -0,0 +1,163 @@ ++/* Measure memccpy functions. ++ Copyright (C) 2013 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 ++ . */ ++ ++#define TEST_MAIN ++#define TEST_NAME "memccpy" ++#include "bench-string.h" ++ ++void *simple_memccpy (void *, const void *, int, size_t); ++void *stupid_memccpy (void *, const void *, int, size_t); ++ ++IMPL (stupid_memccpy, 0) ++IMPL (simple_memccpy, 0) ++IMPL (memccpy, 1) ++ ++void * ++simple_memccpy (void *dst, const void *src, int c, size_t n) ++{ ++ const char *s = src; ++ char *d = dst; ++ ++ while (n-- > 0) ++ if ((*d++ = *s++) == (char) c) ++ return d; ++ ++ return NULL; ++} ++ ++void * ++stupid_memccpy (void *dst, const void *src, int c, size_t n) ++{ ++ void *p = memchr (src, c, n); ++ ++ if (p != NULL) ++ return mempcpy (dst, src, p - src + 1); ++ ++ memcpy (dst, src, n); ++ return NULL; ++} ++ ++typedef void *(*proto_t) (void *, const void *, int c, size_t); ++ ++static void ++do_one_test (impl_t *impl, void *dst, const void *src, int c, size_t len, ++ size_t n) ++{ ++ void *expect = len > n ? NULL : (char *) dst + len; ++ size_t i, iters = INNER_LOOP_ITERS; ++ timing_t start, stop, cur; ++ ++ if (CALL (impl, dst, src, c, n) != expect) ++ { ++ error (0, 0, "Wrong result in function %s %p %p", impl->name, ++ CALL (impl, dst, src, c, n), expect); ++ ret = 1; ++ return; ++ } ++ ++ if (memcmp (dst, src, len > n ? n : len) != 0) ++ { ++ error (0, 0, "Wrong result in function %s", impl->name); ++ ret = 1; ++ return; ++ } ++ ++ TIMING_NOW (start); ++ for (i = 0; i < iters; ++i) ++ { ++ CALL (impl, dst, src, c, n); ++ } ++ TIMING_NOW (stop); ++ ++ TIMING_DIFF (cur, start, stop); ++ ++ TIMING_PRINT_MEAN ((double) cur, (double) iters); ++} ++ ++static void ++do_test (size_t align1, size_t align2, int c, size_t len, size_t n, ++ int max_char) ++{ ++ size_t i; ++ char *s1, *s2; ++ ++ align1 &= 7; ++ if (align1 + len >= page_size) ++ return; ++ ++ align2 &= 7; ++ if (align2 + len >= page_size) ++ return; ++ ++ s1 = (char *) (buf1 + align1); ++ s2 = (char *) (buf2 + align2); ++ ++ for (i = 0; i < len - 1; ++i) ++ { ++ s1[i] = 32 + 23 * i % (max_char - 32); ++ if (s1[i] == (char) c) ++ --s1[i]; ++ } ++ s1[len - 1] = c; ++ for (i = len; i + align1 < page_size && i < len + 64; ++i) ++ s1[i] = 32 + 32 * i % (max_char - 32); ++ ++ printf ("Length %4zd, n %4zd, char %d, alignment %2zd/%2zd:", len, n, c, align1, align2); ++ ++ FOR_EACH_IMPL (impl, 0) ++ do_one_test (impl, s2, s1, c, len, n); ++ ++ putchar ('\n'); ++} ++ ++int ++test_main (void) ++{ ++ size_t i; ++ ++ test_init (); ++ ++ printf ("%28s", ""); ++ FOR_EACH_IMPL (impl, 0) ++ printf ("\t%s", impl->name); ++ putchar ('\n'); ++ ++ for (i = 1; i < 8; ++i) ++ { ++ do_test (i, i, 12, 16, 16, 127); ++ do_test (i, i, 23, 16, 16, 255); ++ do_test (i, 2 * i, 28, 16, 16, 127); ++ do_test (2 * i, i, 31, 16, 16, 255); ++ do_test (8 - i, 2 * i, 1, 1 << i, 2 << i, 127); ++ do_test (2 * i, 8 - i, 17, 2 << i, 1 << i, 127); ++ do_test (8 - i, 2 * i, 0, 1 << i, 2 << i, 255); ++ do_test (2 * i, 8 - i, i, 2 << i, 1 << i, 255); ++ } ++ ++ for (i = 1; i < 8; ++i) ++ { ++ do_test (0, 0, i, 4 << i, 8 << i, 127); ++ do_test (0, 0, i, 16 << i, 8 << i, 127); ++ do_test (8 - i, 2 * i, i, 4 << i, 8 << i, 127); ++ do_test (8 - i, 2 * i, i, 16 << i, 8 << i, 127); ++ } ++ ++ return ret; ++} ++ ++#include "../test-skeleton.c" +diff -urN glibc-2.17-c758a686/benchtests/bench-memchr.c glibc-2.17-c758a686/benchtests/bench-memchr.c +--- glibc-2.17-c758a686/benchtests/bench-memchr.c 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.17-c758a686/benchtests/bench-memchr.c 2015-06-20 21:22:16.297458105 -0400 +@@ -0,0 +1,133 @@ ++/* Measure memchr functions. ++ Copyright (C) 2013 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 ++ . */ ++ ++#ifndef USE_AS_MEMRCHR ++# define TEST_MAIN ++# define TEST_NAME "memchr" ++# include "bench-string.h" ++ ++typedef char *(*proto_t) (const char *, int, size_t); ++char *simple_memchr (const char *, int, size_t); ++ ++IMPL (simple_memchr, 0) ++IMPL (memchr, 1) ++ ++char * ++simple_memchr (const char *s, int c, size_t n) ++{ ++ while (n--) ++ if (*s++ == (char) c) ++ return (char *) s - 1; ++ return NULL; ++} ++#endif ++ ++static void ++do_one_test (impl_t *impl, const char *s, int c, size_t n, char *exp_res) ++{ ++ char *res = CALL (impl, s, c, n); ++ size_t i, iters = INNER_LOOP_ITERS; ++ timing_t start, stop, cur; ++ ++ if (res != exp_res) ++ { ++ error (0, 0, "Wrong result in function %s %p %p", impl->name, ++ res, exp_res); ++ ret = 1; ++ return; ++ } ++ ++ TIMING_NOW (start); ++ for (i = 0; i < iters; ++i) ++ { ++ CALL (impl, s, c, n); ++ } ++ TIMING_NOW (stop); ++ ++ TIMING_DIFF (cur, start, stop); ++ ++ TIMING_PRINT_MEAN ((double) cur, (double) iters); ++} ++ ++static void ++do_test (size_t align, size_t pos, size_t len, int seek_char) ++{ ++ size_t i; ++ char *result; ++ ++ align &= 7; ++ if (align + len >= page_size) ++ return; ++ ++ for (i = 0; i < len; ++i) ++ { ++ buf1[align + i] = 1 + 23 * i % 127; ++ if (buf1[align + i] == seek_char) ++ buf1[align + i] = seek_char + 1; ++ } ++ buf1[align + len] = 0; ++ ++ if (pos < len) ++ { ++ buf1[align + pos] = seek_char; ++ buf1[align + len] = -seek_char; ++ result = (char *) (buf1 + align + pos); ++ } ++ else ++ { ++ result = NULL; ++ buf1[align + len] = seek_char; ++ } ++ ++ printf ("Length %4zd, alignment %2zd:", pos, align); ++ ++ FOR_EACH_IMPL (impl, 0) ++ do_one_test (impl, (char *) (buf1 + align), seek_char, len, result); ++ ++ putchar ('\n'); ++} ++ ++int ++test_main (void) ++{ ++ size_t i; ++ ++ test_init (); ++ ++ printf ("%20s", ""); ++ FOR_EACH_IMPL (impl, 0) ++ printf ("\t%s", impl->name); ++ putchar ('\n'); ++ ++ for (i = 1; i < 8; ++i) ++ { ++ do_test (0, 16 << i, 2048, 23); ++ do_test (i, 64, 256, 23); ++ do_test (0, 16 << i, 2048, 0); ++ do_test (i, 64, 256, 0); ++ } ++ for (i = 1; i < 32; ++i) ++ { ++ do_test (0, i, i + 1, 23); ++ do_test (0, i, i + 1, 0); ++ } ++ ++ return ret; ++} ++ ++#include "../test-skeleton.c" +diff -urN glibc-2.17-c758a686/benchtests/bench-memcmp.c glibc-2.17-c758a686/benchtests/bench-memcmp.c +--- glibc-2.17-c758a686/benchtests/bench-memcmp.c 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.17-c758a686/benchtests/bench-memcmp.c 2015-06-20 21:22:16.297458105 -0400 +@@ -0,0 +1,177 @@ ++/* Measure memcmp functions. ++ Copyright (C) 2013 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 ++ . */ ++ ++#define TEST_MAIN ++#ifdef WIDE ++# define TEST_NAME "wmemcmp" ++#else ++# define TEST_NAME "memcmp" ++#endif ++#include "bench-string.h" ++#ifdef WIDE ++# include ++# include ++ ++# define MEMCMP wmemcmp ++# define MEMCPY wmemcpy ++# define SIMPLE_MEMCMP simple_wmemcmp ++# define CHAR wchar_t ++# define UCHAR wchar_t ++# define CHARBYTES 4 ++# define CHAR__MIN WCHAR_MIN ++# define CHAR__MAX WCHAR_MAX ++int ++simple_wmemcmp (const wchar_t *s1, const wchar_t *s2, size_t n) ++{ ++ int ret = 0; ++ /* Warning! ++ wmemcmp has to use SIGNED comparison for elements. ++ memcmp has to use UNSIGNED comparison for elemnts. ++ */ ++ while (n-- && (ret = *s1 < *s2 ? -1 : *s1 == *s2 ? 0 : 1) == 0) {s1++; s2++;} ++ return ret; ++} ++#else ++# include ++ ++# define MEMCMP memcmp ++# define MEMCPY memcpy ++# define SIMPLE_MEMCMP simple_memcmp ++# define CHAR char ++# define MAX_CHAR 255 ++# define UCHAR unsigned char ++# define CHARBYTES 1 ++# define CHAR__MIN CHAR_MIN ++# define CHAR__MAX CHAR_MAX ++ ++int ++simple_memcmp (const char *s1, const char *s2, size_t n) ++{ ++ int ret = 0; ++ ++ while (n-- && (ret = *(unsigned char *) s1++ - *(unsigned char *) s2++) == 0); ++ return ret; ++} ++#endif ++ ++typedef int (*proto_t) (const CHAR *, const CHAR *, size_t); ++ ++IMPL (SIMPLE_MEMCMP, 0) ++IMPL (MEMCMP, 1) ++ ++static void ++do_one_test (impl_t *impl, const CHAR *s1, const CHAR *s2, size_t len, ++ int exp_result) ++{ ++ size_t i, iters = INNER_LOOP_ITERS; ++ timing_t start, stop, cur; ++ ++ TIMING_NOW (start); ++ for (i = 0; i < iters; ++i) ++ { ++ CALL (impl, s1, s2, len); ++ } ++ TIMING_NOW (stop); ++ ++ TIMING_DIFF (cur, start, stop); ++ ++ TIMING_PRINT_MEAN ((double) cur, (double) iters); ++} ++ ++static void ++do_test (size_t align1, size_t align2, size_t len, int exp_result) ++{ ++ size_t i; ++ CHAR *s1, *s2; ++ ++ if (len == 0) ++ return; ++ ++ align1 &= 63; ++ if (align1 + (len + 1) * CHARBYTES >= page_size) ++ return; ++ ++ align2 &= 63; ++ if (align2 + (len + 1) * CHARBYTES >= page_size) ++ return; ++ ++ s1 = (CHAR *) (buf1 + align1); ++ s2 = (CHAR *) (buf2 + align2); ++ ++ for (i = 0; i < len; i++) ++ s1[i] = s2[i] = 1 + (23 << ((CHARBYTES - 1) * 8)) * i % CHAR__MAX; ++ ++ s1[len] = align1; ++ s2[len] = align2; ++ s2[len - 1] -= exp_result; ++ ++ printf ("Length %4zd, alignment %2zd/%2zd:", len, align1, align2); ++ ++ FOR_EACH_IMPL (impl, 0) ++ do_one_test (impl, s1, s2, len, exp_result); ++ ++ putchar ('\n'); ++} ++ ++int ++test_main (void) ++{ ++ size_t i; ++ ++ test_init (); ++ ++ printf ("%23s", ""); ++ FOR_EACH_IMPL (impl, 0) ++ printf ("\t%s", impl->name); ++ putchar ('\n'); ++ ++ for (i = 1; i < 16; ++i) ++ { ++ do_test (i * CHARBYTES, i * CHARBYTES, i, 0); ++ do_test (i * CHARBYTES, i * CHARBYTES, i, 1); ++ do_test (i * CHARBYTES, i * CHARBYTES, i, -1); ++ } ++ ++ for (i = 0; i < 16; ++i) ++ { ++ do_test (0, 0, i, 0); ++ do_test (0, 0, i, 1); ++ do_test (0, 0, i, -1); ++ } ++ ++ for (i = 1; i < 10; ++i) ++ { ++ do_test (0, 0, 2 << i, 0); ++ do_test (0, 0, 2 << i, 1); ++ do_test (0, 0, 2 << i, -1); ++ do_test (0, 0, 16 << i, 0); ++ do_test ((8 - i) * CHARBYTES, (2 * i) * CHARBYTES, 16 << i, 0); ++ do_test (0, 0, 16 << i, 1); ++ do_test (0, 0, 16 << i, -1); ++ } ++ ++ for (i = 1; i < 8; ++i) ++ { ++ do_test (i * CHARBYTES, 2 * (i * CHARBYTES), 8 << i, 0); ++ do_test (i * CHARBYTES, 2 * (i * CHARBYTES), 8 << i, 1); ++ do_test (i * CHARBYTES, 2 * (i * CHARBYTES), 8 << i, -1); ++ } ++ ++ return ret; ++} ++#include "../test-skeleton.c" +diff -urN glibc-2.17-c758a686/benchtests/bench-memcpy.c glibc-2.17-c758a686/benchtests/bench-memcpy.c +--- glibc-2.17-c758a686/benchtests/bench-memcpy.c 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.17-c758a686/benchtests/bench-memcpy.c 2015-06-20 21:22:16.297458105 -0400 +@@ -0,0 +1,157 @@ ++/* Measure memcpy functions. ++ Copyright (C) 2013 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 ++ . */ ++ ++#ifndef MEMCPY_RESULT ++# define MEMCPY_RESULT(dst, len) dst ++# define MIN_PAGE_SIZE 131072 ++# define TEST_MAIN ++# define TEST_NAME "memcpy" ++# include "bench-string.h" ++ ++char *simple_memcpy (char *, const char *, size_t); ++char *builtin_memcpy (char *, const char *, size_t); ++ ++IMPL (simple_memcpy, 0) ++IMPL (builtin_memcpy, 0) ++IMPL (memcpy, 1) ++ ++char * ++simple_memcpy (char *dst, const char *src, size_t n) ++{ ++ char *ret = dst; ++ while (n--) ++ *dst++ = *src++; ++ return ret; ++} ++ ++char * ++builtin_memcpy (char *dst, const char *src, size_t n) ++{ ++ return __builtin_memcpy (dst, src, n); ++} ++#endif ++ ++typedef char *(*proto_t) (char *, const char *, size_t); ++ ++static void ++do_one_test (impl_t *impl, char *dst, const char *src, ++ size_t len) ++{ ++ size_t i, iters = INNER_LOOP_ITERS; ++ timing_t start, stop, cur; ++ ++ if (CALL (impl, dst, src, len) != MEMCPY_RESULT (dst, len)) ++ { ++ error (0, 0, "Wrong result in function %s %p %p", impl->name, ++ CALL (impl, dst, src, len), MEMCPY_RESULT (dst, len)); ++ ret = 1; ++ return; ++ } ++ ++ if (memcmp (dst, src, len) != 0) ++ { ++ error (0, 0, "Wrong result in function %s dst \"%s\" src \"%s\"", ++ impl->name, dst, src); ++ ret = 1; ++ return; ++ } ++ ++ TIMING_NOW (start); ++ for (i = 0; i < iters; ++i) ++ { ++ CALL (impl, dst, src, len); ++ } ++ TIMING_NOW (stop); ++ ++ TIMING_DIFF (cur, start, stop); ++ ++ TIMING_PRINT_MEAN ((double) cur, (double) iters); ++} ++ ++static void ++do_test (size_t align1, size_t align2, size_t len) ++{ ++ size_t i, j; ++ char *s1, *s2; ++ ++ align1 &= 63; ++ if (align1 + len >= page_size) ++ return; ++ ++ align2 &= 63; ++ if (align2 + len >= page_size) ++ return; ++ ++ s1 = (char *) (buf1 + align1); ++ s2 = (char *) (buf2 + align2); ++ ++ for (i = 0, j = 1; i < len; i++, j += 23) ++ s1[i] = j; ++ ++ printf ("Length %4zd, alignment %2zd/%2zd:", len, align1, align2); ++ ++ FOR_EACH_IMPL (impl, 0) ++ do_one_test (impl, s2, s1, len); ++ ++ putchar ('\n'); ++} ++ ++int ++test_main (void) ++{ ++ size_t i; ++ ++ test_init (); ++ ++ printf ("%23s", ""); ++ FOR_EACH_IMPL (impl, 0) ++ printf ("\t%s", impl->name); ++ putchar ('\n'); ++ ++ for (i = 0; i < 18; ++i) ++ { ++ do_test (0, 0, 1 << i); ++ do_test (i, 0, 1 << i); ++ do_test (0, i, 1 << i); ++ do_test (i, i, 1 << i); ++ } ++ ++ for (i = 0; i < 32; ++i) ++ { ++ do_test (0, 0, i); ++ do_test (i, 0, i); ++ do_test (0, i, i); ++ do_test (i, i, i); ++ } ++ ++ for (i = 3; i < 32; ++i) ++ { ++ if ((i & (i - 1)) == 0) ++ continue; ++ do_test (0, 0, 16 * i); ++ do_test (i, 0, 16 * i); ++ do_test (0, i, 16 * i); ++ do_test (i, i, 16 * i); ++ } ++ ++ do_test (0, 0, getpagesize ()); ++ ++ return ret; ++} ++ ++#include "../test-skeleton.c" +diff -urN glibc-2.17-c758a686/benchtests/bench-memmem.c glibc-2.17-c758a686/benchtests/bench-memmem.c +--- glibc-2.17-c758a686/benchtests/bench-memmem.c 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.17-c758a686/benchtests/bench-memmem.c 2015-06-20 21:22:16.297458105 -0400 +@@ -0,0 +1,164 @@ ++/* Measure memmem functions. ++ Copyright (C) 2013-2015 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 ++ . */ ++ ++#define TEST_MAIN ++#define TEST_NAME "memmem" ++#define BUF1PAGES 20 ++#define ITERATIONS 500 ++#include "bench-string.h" ++ ++typedef char *(*proto_t) (const void *, size_t, const void *, size_t); ++void *simple_memmem (const void *, size_t, const void *, size_t); ++ ++IMPL (simple_memmem, 0) ++IMPL (memmem, 1) ++ ++void * ++simple_memmem (const void *haystack, size_t haystack_len, const void *needle, ++ size_t needle_len) ++{ ++ const char *begin; ++ const char *const last_possible ++ = (const char *) haystack + haystack_len - needle_len; ++ ++ if (needle_len == 0) ++ /* The first occurrence of the empty string is deemed to occur at ++ the beginning of the string. */ ++ return (void *) haystack; ++ ++ /* Sanity check, otherwise the loop might search through the whole ++ memory. */ ++ if (__glibc_unlikely (haystack_len < needle_len)) ++ return NULL; ++ ++ for (begin = (const char *) haystack; begin <= last_possible; ++begin) ++ if (begin[0] == ((const char *) needle)[0] && ++ !memcmp ((const void *) &begin[1], ++ (const void *) ((const char *) needle + 1), ++ needle_len - 1)) ++ return (void *) begin; ++ ++ return NULL; ++} ++ ++static void ++do_one_test (impl_t *impl, const void *haystack, size_t haystack_len, ++ const void *needle, size_t needle_len, const void *expected) ++{ ++ size_t i, iters = INNER_LOOP_ITERS; ++ timing_t start, stop, cur; ++ ++ TIMING_NOW (start); ++ for (i = 0; i < iters; ++i) ++ { ++ CALL (impl, haystack, haystack_len, needle, needle_len); ++ } ++ TIMING_NOW (stop); ++ ++ TIMING_DIFF (cur, start, stop); ++ ++ TIMING_PRINT_MEAN ((double) cur, (double) iters); ++} ++ ++static void ++do_test (const char *str, size_t len, size_t idx) ++{ ++ char tmpbuf[len]; ++ ++ memcpy (tmpbuf, buf1 + idx, len); ++ memcpy (buf1 + idx, str, len); ++ ++ printf ("String %s, offset %zd:", str, idx); ++ ++ FOR_EACH_IMPL (impl, 0) ++ do_one_test (impl, buf1, BUF1PAGES * page_size, str, len, buf1 + idx); ++ ++ memcpy (buf1 + idx, tmpbuf, len); ++ ++ putchar ('\n'); ++} ++ ++static void ++do_random_tests (void) ++{ ++ for (size_t n = 0; n < ITERATIONS; ++n) ++ { ++ char tmpbuf[32]; ++ ++ size_t shift = random () % 11; ++ size_t rel = random () % ((2 << (shift + 1)) * 64); ++ size_t idx = MIN ((2 << shift) * 64 + rel, BUF1PAGES * page_size - 2); ++ size_t len = random () % (sizeof (tmpbuf) - 1) + 1; ++ len = MIN (len, BUF1PAGES * page_size - idx - 1); ++ memcpy (tmpbuf, buf1 + idx, len); ++ for (size_t i = random () % len / 2 + 1; i > 0; --i) ++ { ++ size_t off = random () % len; ++ char ch = '0' + random () % 10; ++ ++ buf1[idx + off] = ch; ++ } ++ ++ printf ("String %.*s, offset %zd:", (int) len, buf1 + idx, idx); ++ ++ FOR_EACH_IMPL (impl, 0) ++ do_one_test (impl, buf1, BUF1PAGES * page_size, buf1 + idx, len, ++ buf1 + idx); ++ ++ putchar ('\n'); ++ ++ memcpy (buf1 + idx, tmpbuf, len); ++ } ++} ++ ++static const char *const strs[] = ++ { ++ "00000", "00112233", "0123456789", "0000111100001111", ++ "00000111110000022222", "012345678901234567890", ++ "abc0", "aaaa0", "abcabc0" ++ }; ++ ++ ++int ++test_main (void) ++{ ++ size_t i; ++ ++ test_init (); ++ ++ printf ("%23s", ""); ++ FOR_EACH_IMPL (impl, 0) ++ printf ("\t%s", impl->name); ++ putchar ('\n'); ++ ++ for (i = 0; i < BUF1PAGES * page_size; ++i) ++ buf1[i] = 60 + random () % 32; ++ ++ for (i = 0; i < sizeof (strs) / sizeof (strs[0]); ++i) ++ for (size_t j = 0; j < 120; j += 7) ++ { ++ size_t len = strlen (strs[i]); ++ ++ do_test (strs[i], len, j); ++ } ++ ++ do_random_tests (); ++ return ret; ++} ++ ++#include "../test-skeleton.c" +diff -urN glibc-2.17-c758a686/benchtests/bench-memmove.c glibc-2.17-c758a686/benchtests/bench-memmove.c +--- glibc-2.17-c758a686/benchtests/bench-memmove.c 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.17-c758a686/benchtests/bench-memmove.c 2015-06-20 21:22:16.297458105 -0400 +@@ -0,0 +1,182 @@ ++/* Measure memmove functions. ++ Copyright (C) 2013 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 ++ . */ ++ ++#define TEST_MAIN ++#ifdef TEST_BCOPY ++# define TEST_NAME "bcopy" ++#else ++# define TEST_NAME "memmove" ++#endif ++#include "bench-string.h" ++ ++char *simple_memmove (char *, const char *, size_t); ++ ++#ifdef TEST_BCOPY ++typedef void (*proto_t) (const char *, char *, size_t); ++void simple_bcopy (const char *, char *, size_t); ++ ++IMPL (simple_bcopy, 0) ++IMPL (bcopy, 1) ++ ++void ++simple_bcopy (const char *src, char *dst, size_t n) ++{ ++ simple_memmove (dst, src, n); ++} ++#else ++typedef char *(*proto_t) (char *, const char *, size_t); ++ ++IMPL (simple_memmove, 0) ++IMPL (memmove, 1) ++#endif ++ ++char * ++inhibit_loop_to_libcall ++simple_memmove (char *dst, const char *src, size_t n) ++{ ++ char *ret = dst; ++ if (src < dst) ++ { ++ dst += n; ++ src += n; ++ while (n--) ++ *--dst = *--src; ++ } ++ else ++ while (n--) ++ *dst++ = *src++; ++ return ret; ++} ++ ++static void ++do_one_test (impl_t *impl, char *dst, char *src, const char *orig_src, ++ size_t len) ++{ ++ size_t i, iters = INNER_LOOP_ITERS; ++ timing_t start, stop, cur; ++ ++ memcpy (src, orig_src, len); ++#ifdef TEST_BCOPY ++ CALL (impl, src, dst, len); ++#else ++ char *res; ++ ++ res = CALL (impl, dst, src, len); ++ if (res != dst) ++ { ++ error (0, 0, "Wrong result in function %s %p %p", impl->name, ++ res, dst); ++ ret = 1; ++ return; ++ } ++#endif ++ ++ if (memcmp (dst, orig_src, len) != 0) ++ { ++ error (0, 0, "Wrong result in function %s dst \"%s\" src \"%s\"", ++ impl->name, dst, src); ++ ret = 1; ++ return; ++ } ++ ++ TIMING_NOW (start); ++ for (i = 0; i < iters; ++i) ++ { ++#ifdef TEST_BCOPY ++ CALL (impl, src, dst, len); ++#else ++ CALL (impl, dst, src, len); ++#endif ++ } ++ TIMING_NOW (stop); ++ ++ TIMING_DIFF (cur, start, stop); ++ ++ TIMING_PRINT_MEAN ((double) cur, (double) iters); ++} ++ ++static void ++do_test (size_t align1, size_t align2, size_t len) ++{ ++ size_t i, j; ++ char *s1, *s2; ++ ++ align1 &= 63; ++ if (align1 + len >= page_size) ++ return; ++ ++ align2 &= 63; ++ if (align2 + len >= page_size) ++ return; ++ ++ s1 = (char *) (buf1 + align1); ++ s2 = (char *) (buf2 + align2); ++ ++ for (i = 0, j = 1; i < len; i++, j += 23) ++ s1[i] = j; ++ ++ printf ("Length %4zd, alignment %2zd/%2zd:", len, align1, align2); ++ ++ FOR_EACH_IMPL (impl, 0) ++ do_one_test (impl, s2, (char *) (buf2 + align1), s1, len); ++ ++ putchar ('\n'); ++} ++ ++int ++test_main (void) ++{ ++ size_t i; ++ ++ test_init (); ++ ++ printf ("%23s", ""); ++ FOR_EACH_IMPL (impl, 0) ++ printf ("\t%s", impl->name); ++ putchar ('\n'); ++ ++ for (i = 0; i < 14; ++i) ++ { ++ do_test (0, 32, 1 << i); ++ do_test (32, 0, 1 << i); ++ do_test (0, i, 1 << i); ++ do_test (i, 0, 1 << i); ++ } ++ ++ for (i = 0; i < 32; ++i) ++ { ++ do_test (0, 32, i); ++ do_test (32, 0, i); ++ do_test (0, i, i); ++ do_test (i, 0, i); ++ } ++ ++ for (i = 3; i < 32; ++i) ++ { ++ if ((i & (i - 1)) == 0) ++ continue; ++ do_test (0, 32, 16 * i); ++ do_test (32, 0, 16 * i); ++ do_test (0, i, 16 * i); ++ do_test (i, 0, 16 * i); ++ } ++ ++ return ret; ++} ++ ++#include "../test-skeleton.c" +diff -urN glibc-2.17-c758a686/benchtests/bench-mempcpy.c glibc-2.17-c758a686/benchtests/bench-mempcpy.c +--- glibc-2.17-c758a686/benchtests/bench-mempcpy.c 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.17-c758a686/benchtests/bench-mempcpy.c 2015-06-20 21:22:16.297458105 -0400 +@@ -0,0 +1,37 @@ ++/* Measure mempcpy functions. ++ Copyright (C) 2013 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 ++ . */ ++ ++#define MEMCPY_RESULT(dst, len) (dst) + (len) ++#define TEST_MAIN ++#define TEST_NAME "mempcpy" ++#include "bench-string.h" ++ ++char *simple_mempcpy (char *, const char *, size_t); ++ ++IMPL (simple_mempcpy, 0) ++IMPL (mempcpy, 1) ++ ++char * ++simple_mempcpy (char *dst, const char *src, size_t n) ++{ ++ while (n--) ++ *dst++ = *src++; ++ return dst; ++} ++ ++#include "bench-memcpy.c" +diff -urN glibc-2.17-c758a686/benchtests/bench-memrchr.c glibc-2.17-c758a686/benchtests/bench-memrchr.c +--- glibc-2.17-c758a686/benchtests/bench-memrchr.c 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.17-c758a686/benchtests/bench-memrchr.c 2015-06-20 21:22:16.297458105 -0400 +@@ -0,0 +1,40 @@ ++/* Measure memrchr functions. ++ Copyright (C) 2013 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 ++ . */ ++ ++#define TEST_MAIN ++#define TEST_NAME "memrchr" ++#include "bench-string.h" ++ ++typedef char *(*proto_t) (const char *, int, size_t); ++char *simple_memrchr (const char *, int, size_t); ++ ++IMPL (simple_memrchr, 0) ++IMPL (memrchr, 1) ++ ++char * ++simple_memrchr (const char *s, int c, size_t n) ++{ ++ s = s + n; ++ while (n--) ++ if (*--s == (char) c) ++ return (char *) s; ++ return NULL; ++} ++ ++#define USE_AS_MEMRCHR ++#include "bench-memchr.c" +diff -urN glibc-2.17-c758a686/benchtests/bench-memset.c glibc-2.17-c758a686/benchtests/bench-memset.c +--- glibc-2.17-c758a686/benchtests/bench-memset.c 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.17-c758a686/benchtests/bench-memset.c 2015-06-20 21:22:16.297458105 -0400 +@@ -0,0 +1,167 @@ ++/* Measure memset functions. ++ Copyright (C) 2013-2015 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 ++ . */ ++ ++#define TEST_MAIN ++#ifdef TEST_BZERO ++# define TEST_NAME "bzero" ++#else ++# define TEST_NAME "memset" ++#endif ++#define MIN_PAGE_SIZE 131072 ++#include "bench-string.h" ++ ++char *simple_memset (char *, int, size_t); ++ ++#ifdef TEST_BZERO ++typedef void (*proto_t) (char *, size_t); ++void simple_bzero (char *, size_t); ++void builtin_bzero (char *, size_t); ++ ++IMPL (simple_bzero, 0) ++IMPL (builtin_bzero, 0) ++IMPL (bzero, 1) ++ ++void ++simple_bzero (char *s, size_t n) ++{ ++ simple_memset (s, 0, n); ++} ++ ++void ++builtin_bzero (char *s, size_t n) ++{ ++ __builtin_bzero (s, n); ++} ++#else ++typedef char *(*proto_t) (char *, int, size_t); ++char *builtin_memset (char *, int, size_t); ++ ++IMPL (simple_memset, 0) ++IMPL (builtin_memset, 0) ++IMPL (memset, 1) ++ ++char * ++builtin_memset (char *s, int c, size_t n) ++{ ++ return __builtin_memset (s, c, n); ++} ++#endif ++ ++char * ++inhibit_loop_to_libcall ++simple_memset (char *s, int c, size_t n) ++{ ++ char *r = s, *end = s + n; ++ while (r < end) ++ *r++ = c; ++ return s; ++} ++ ++static void ++do_one_test (impl_t *impl, char *s, int c __attribute ((unused)), size_t n) ++{ ++ size_t i, iters = INNER_LOOP_ITERS; ++ timing_t start, stop, cur; ++ char tstbuf[n]; ++#ifdef TEST_BZERO ++ simple_bzero (tstbuf, n); ++ CALL (impl, s, n); ++ if (memcmp (s, tstbuf, n) != 0) ++#else ++ char *res = CALL (impl, s, c, n); ++ if (res != s ++ || simple_memset (tstbuf, c, n) != tstbuf ++ || memcmp (s, tstbuf, n) != 0) ++#endif ++ { ++ error (0, 0, "Wrong result in function %s", impl->name); ++ ret = 1; ++ return; ++ } ++ ++ TIMING_NOW (start); ++ for (i = 0; i < iters; ++i) ++ { ++#ifdef TEST_BZERO ++ CALL (impl, s, n); ++#else ++ CALL (impl, s, c, n); ++#endif ++ } ++ TIMING_NOW (stop); ++ ++ TIMING_DIFF (cur, start, stop); ++ ++ TIMING_PRINT_MEAN ((double) cur, (double) iters); ++} ++ ++static void ++do_test (size_t align, int c, size_t len) ++{ ++ align &= 7; ++ if (align + len > page_size) ++ return; ++ ++ printf ("Length %4zd, alignment %2zd, c %2d:", len, align, c); ++ ++ FOR_EACH_IMPL (impl, 0) ++ do_one_test (impl, (char *) buf1 + align, c, len); ++ ++ putchar ('\n'); ++} ++ ++int ++test_main (void) ++{ ++ size_t i; ++ int c = 0; ++ ++ test_init (); ++ ++ printf ("%24s", ""); ++ FOR_EACH_IMPL (impl, 0) ++ printf ("\t%s", impl->name); ++ putchar ('\n'); ++ ++#ifndef TEST_BZERO ++ for (c = -65; c <= 130; c += 65) ++#endif ++ { ++ for (i = 0; i < 18; ++i) ++ do_test (0, c, 1 << i); ++ for (i = 1; i < 32; ++i) ++ { ++ do_test (i, c, i); ++ if (i & (i - 1)) ++ do_test (0, c, i); ++ } ++ for (i = 32; i < 512; i+=32) ++ { ++ do_test (0, c, i); ++ do_test (i, c, i); ++ } ++ do_test (1, c, 14); ++ do_test (3, c, 1024); ++ do_test (4, c, 64); ++ do_test (2, c, 25); ++ } ++ ++ return ret; ++} ++ ++#include "../test-skeleton.c" +diff -urN glibc-2.17-c758a686/benchtests/bench-rawmemchr.c glibc-2.17-c758a686/benchtests/bench-rawmemchr.c +--- glibc-2.17-c758a686/benchtests/bench-rawmemchr.c 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.17-c758a686/benchtests/bench-rawmemchr.c 2015-06-20 21:22:16.297458105 -0400 +@@ -0,0 +1,126 @@ ++/* Measure memchr functions. ++ Copyright (C) 2013 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 ++ . */ ++ ++#include ++ ++#define TEST_MAIN ++#define TEST_NAME "rawmemchr" ++#include "bench-string.h" ++ ++typedef char *(*proto_t) (const char *, int); ++char *simple_rawmemchr (const char *, int); ++ ++IMPL (simple_rawmemchr, 0) ++IMPL (rawmemchr, 1) ++ ++char * ++simple_rawmemchr (const char *s, int c) ++{ ++ while (1) ++ if (*s++ == (char) c) ++ return (char *) s - 1; ++ return NULL; ++} ++ ++static void ++do_one_test (impl_t *impl, const char *s, int c, char *exp_res) ++{ ++ size_t i, iters = INNER_LOOP_ITERS; ++ timing_t start, stop, cur; ++ char *res = CALL (impl, s, c); ++ if (res != exp_res) ++ { ++ error (0, 0, "Wrong result in function %s %p %p", impl->name, ++ res, exp_res); ++ ret = 1; ++ return; ++ } ++ ++ TIMING_NOW (start); ++ for (i = 0; i < iters; ++i) ++ { ++ CALL (impl, s, c); ++ } ++ TIMING_NOW (stop); ++ ++ TIMING_DIFF (cur, start, stop); ++ ++ TIMING_PRINT_MEAN ((double) cur, (double) iters); ++} ++ ++static void ++do_test (size_t align, size_t pos, size_t len, int seek_char) ++{ ++ size_t i; ++ char *result; ++ ++ align &= 7; ++ if (align + len >= page_size) ++ return; ++ ++ for (i = 0; i < len; ++i) ++ { ++ buf1[align + i] = 1 + 23 * i % 127; ++ if (buf1[align + i] == seek_char) ++ buf1[align + i] = seek_char + 1; ++ } ++ buf1[align + len] = 0; ++ ++ assert (pos < len); ++ ++ buf1[align + pos] = seek_char; ++ buf1[align + len] = -seek_char; ++ result = (char *) (buf1 + align + pos); ++ ++ printf ("Length %4zd, alignment %2zd:", pos, align); ++ ++ FOR_EACH_IMPL (impl, 0) ++ do_one_test (impl, (char *) (buf1 + align), seek_char, result); ++ ++ putchar ('\n'); ++} ++ ++int ++test_main (void) ++{ ++ size_t i; ++ ++ test_init (); ++ ++ printf ("%20s", ""); ++ FOR_EACH_IMPL (impl, 0) ++ printf ("\t%s", impl->name); ++ putchar ('\n'); ++ ++ for (i = 1; i < 7; ++i) ++ { ++ do_test (0, 16 << i, 2048, 23); ++ do_test (i, 64, 256, 23); ++ do_test (0, 16 << i, 2048, 0); ++ do_test (i, 64, 256, 0); ++ } ++ for (i = 1; i < 32; ++i) ++ { ++ do_test (0, i, i + 1, 23); ++ do_test (0, i, i + 1, 0); ++ } ++ ++ return ret; ++} ++ ++#include "../test-skeleton.c" +diff -urN glibc-2.17-c758a686/benchtests/bench-skeleton.c glibc-2.17-c758a686/benchtests/bench-skeleton.c +--- glibc-2.17-c758a686/benchtests/bench-skeleton.c 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.17-c758a686/benchtests/bench-skeleton.c 2015-06-20 21:22:16.298458075 -0400 +@@ -0,0 +1,154 @@ ++/* Skeleton for benchmark programs. ++ Copyright (C) 2013 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 ++ . */ ++ ++#include ++#include ++#include ++#include ++#include ++#include ++#include "bench-timing.h" ++#include "json-lib.h" ++ ++volatile unsigned int dontoptimize = 0; ++ ++void ++startup (void) ++{ ++ /* This loop should cause CPU to switch to maximal freqency. ++ This makes subsequent measurement more accurate. We need a side effect ++ to prevent the loop being deleted by compiler. ++ This should be enough to cause CPU to speed up and it is simpler than ++ running loop for constant time. This is used when user does not have root ++ access to set a constant freqency. */ ++ for (int k = 0; k < 10000000; k++) ++ dontoptimize += 23 * dontoptimize + 2; ++} ++ ++#define TIMESPEC_AFTER(a, b) \ ++ (((a).tv_sec == (b).tv_sec) ? \ ++ ((a).tv_nsec > (b).tv_nsec) : \ ++ ((a).tv_sec > (b).tv_sec)) ++int ++main (int argc, char **argv) ++{ ++ unsigned long i, k; ++ struct timespec runtime; ++ timing_t start, end; ++ bool detailed = false; ++ json_ctx_t json_ctx; ++ ++ if (argc == 2 && !strcmp (argv[1], "-d")) ++ detailed = true; ++ ++ startup(); ++ ++ memset (&runtime, 0, sizeof (runtime)); ++ ++ unsigned long iters, res; ++ ++#ifdef BENCH_INIT ++ BENCH_INIT (); ++#endif ++ TIMING_INIT (res); ++ ++ iters = 1000 * res; ++ ++ json_init (&json_ctx, 2, stdout); ++ ++ /* Begin function. */ ++ json_attr_object_begin (&json_ctx, FUNCNAME); ++ ++ for (int v = 0; v < NUM_VARIANTS; v++) ++ { ++ /* Run for approximately DURATION seconds. */ ++ clock_gettime (CLOCK_MONOTONIC_RAW, &runtime); ++ runtime.tv_sec += DURATION; ++ ++ double d_total_i = 0; ++ timing_t total = 0, max = 0, min = 0x7fffffffffffffff; ++ int64_t c = 0; ++ while (1) ++ { ++ for (i = 0; i < NUM_SAMPLES (v); i++) ++ { ++ uint64_t cur; ++ TIMING_NOW (start); ++ for (k = 0; k < iters; k++) ++ BENCH_FUNC (v, i); ++ TIMING_NOW (end); ++ ++ TIMING_DIFF (cur, start, end); ++ ++ if (cur > max) ++ max = cur; ++ ++ if (cur < min) ++ min = cur; ++ ++ TIMING_ACCUM (total, cur); ++ /* Accumulate timings for the value. In the end we will divide ++ by the total iterations. */ ++ RESULT_ACCUM (cur, v, i, c * iters, (c + 1) * iters); ++ ++ d_total_i += iters; ++ } ++ c++; ++ struct timespec curtime; ++ ++ memset (&curtime, 0, sizeof (curtime)); ++ clock_gettime (CLOCK_MONOTONIC_RAW, &curtime); ++ if (TIMESPEC_AFTER (curtime, runtime)) ++ goto done; ++ } ++ ++ double d_total_s; ++ double d_iters; ++ ++ done: ++ d_total_s = total; ++ d_iters = iters; ++ ++ /* Begin variant. */ ++ json_attr_object_begin (&json_ctx, VARIANT (v)); ++ ++ json_attr_double (&json_ctx, "duration", d_total_s); ++ json_attr_double (&json_ctx, "iterations", d_total_i); ++ json_attr_double (&json_ctx, "max", max / d_iters); ++ json_attr_double (&json_ctx, "min", min / d_iters); ++ json_attr_double (&json_ctx, "mean", d_total_s / d_total_i); ++ ++ if (detailed) ++ { ++ json_array_begin (&json_ctx, "timings"); ++ ++ for (int i = 0; i < NUM_SAMPLES (v); i++) ++ json_element_double (&json_ctx, RESULT (v, i)); ++ ++ json_array_end (&json_ctx); ++ } ++ ++ /* End variant. */ ++ json_attr_object_end (&json_ctx); ++ } ++ ++ /* End function. */ ++ json_attr_object_end (&json_ctx); ++ ++ return 0; ++} +diff -urN glibc-2.17-c758a686/benchtests/bench-stpcpy.c glibc-2.17-c758a686/benchtests/bench-stpcpy.c +--- glibc-2.17-c758a686/benchtests/bench-stpcpy.c 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.17-c758a686/benchtests/bench-stpcpy.c 2015-06-20 21:22:16.298458075 -0400 +@@ -0,0 +1,36 @@ ++/* Measure stpcpy functions. ++ Copyright (C) 2013 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 ++ . */ ++ ++#define STRCPY_RESULT(dst, len) ((dst) + (len)) ++#define TEST_MAIN ++#define TEST_NAME "stpcpy" ++#include "bench-string.h" ++ ++char *simple_stpcpy (char *, const char *); ++ ++IMPL (simple_stpcpy, 0) ++IMPL (stpcpy, 1) ++ ++char * ++simple_stpcpy (char *dst, const char *src) ++{ ++ while ((*dst++ = *src++) != '\0'); ++ return dst - 1; ++} ++ ++#include "bench-strcpy.c" +diff -urN glibc-2.17-c758a686/benchtests/bench-stpcpy_chk.c glibc-2.17-c758a686/benchtests/bench-stpcpy_chk.c +--- glibc-2.17-c758a686/benchtests/bench-stpcpy_chk.c 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.17-c758a686/benchtests/bench-stpcpy_chk.c 2015-06-20 21:22:16.298458075 -0400 +@@ -0,0 +1,45 @@ ++/* Measure stpcpy checking functions. ++ Copyright (C) 2013 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 ++ . */ ++ ++#define STRCPY_RESULT(dst, len) ((dst) + (len)) ++#define TEST_MAIN ++#define TEST_NAME "stpcpy_chk" ++#include "bench-string.h" ++ ++extern void __attribute__ ((noreturn)) __chk_fail (void); ++char *simple_stpcpy_chk (char *, const char *, size_t); ++extern char *normal_stpcpy (char *, const char *, size_t) ++ __asm ("stpcpy"); ++extern char *__stpcpy_chk (char *, const char *, size_t); ++ ++IMPL (simple_stpcpy_chk, 0) ++IMPL (normal_stpcpy, 1) ++IMPL (__stpcpy_chk, 2) ++ ++char * ++simple_stpcpy_chk (char *dst, const char *src, size_t len) ++{ ++ if (! len) ++ __chk_fail (); ++ while ((*dst++ = *src++) != '\0') ++ if (--len == 0) ++ __chk_fail (); ++ return dst - 1; ++} ++ ++#include "bench-strcpy_chk.c" +diff -urN glibc-2.17-c758a686/benchtests/bench-stpncpy.c glibc-2.17-c758a686/benchtests/bench-stpncpy.c +--- glibc-2.17-c758a686/benchtests/bench-stpncpy.c 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.17-c758a686/benchtests/bench-stpncpy.c 2015-06-20 21:22:16.298458075 -0400 +@@ -0,0 +1,59 @@ ++/* Measure stpncpy functions. ++ Copyright (C) 2013 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 ++ . */ ++ ++#define STRNCPY_RESULT(dst, len, n) ((dst) + ((len) > (n) ? (n) : (len))) ++#define TEST_MAIN ++#define TEST_NAME "stpncpy" ++#include "bench-string.h" ++ ++char *simple_stpncpy (char *, const char *, size_t); ++char *stupid_stpncpy (char *, const char *, size_t); ++ ++IMPL (stupid_stpncpy, 0) ++IMPL (simple_stpncpy, 0) ++IMPL (stpncpy, 1) ++ ++char * ++simple_stpncpy (char *dst, const char *src, size_t n) ++{ ++ while (n--) ++ if ((*dst++ = *src++) == '\0') ++ { ++ size_t i; ++ ++ for (i = 0; i < n; ++i) ++ dst[i] = '\0'; ++ return dst - 1; ++ } ++ return dst; ++} ++ ++char * ++stupid_stpncpy (char *dst, const char *src, size_t n) ++{ ++ size_t nc = strnlen (src, n); ++ size_t i; ++ ++ for (i = 0; i < nc; ++i) ++ dst[i] = src[i]; ++ for (; i < n; ++i) ++ dst[i] = '\0'; ++ return dst + nc; ++} ++ ++#include "bench-strncpy.c" +diff -urN glibc-2.17-c758a686/benchtests/bench-strcasecmp.c glibc-2.17-c758a686/benchtests/bench-strcasecmp.c +--- glibc-2.17-c758a686/benchtests/bench-strcasecmp.c 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.17-c758a686/benchtests/bench-strcasecmp.c 2015-06-20 21:22:16.298458075 -0400 +@@ -0,0 +1,176 @@ ++/* Measure strcasecmp functions. ++ Copyright (C) 2013 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 ++ . */ ++ ++#include ++#define TEST_MAIN ++#define TEST_NAME "strcasecmp" ++#include "bench-string.h" ++ ++typedef int (*proto_t) (const char *, const char *); ++static int simple_strcasecmp (const char *, const char *); ++static int stupid_strcasecmp (const char *, const char *); ++ ++IMPL (stupid_strcasecmp, 0) ++IMPL (simple_strcasecmp, 0) ++IMPL (strcasecmp, 1) ++ ++static int ++simple_strcasecmp (const char *s1, const char *s2) ++{ ++ int ret; ++ ++ while ((ret = ((unsigned char) tolower (*s1) ++ - (unsigned char) tolower (*s2))) == 0 ++ && *s1++) ++ ++s2; ++ return ret; ++} ++ ++static int ++stupid_strcasecmp (const char *s1, const char *s2) ++{ ++ size_t ns1 = strlen (s1) + 1, ns2 = strlen (s2) + 1; ++ size_t n = ns1 < ns2 ? ns1 : ns2; ++ int ret = 0; ++ ++ while (n--) ++ { ++ if ((ret = ((unsigned char) tolower (*s1) ++ - (unsigned char) tolower (*s2))) != 0) ++ break; ++ ++s1; ++ ++s2; ++ } ++ return ret; ++} ++ ++static void ++do_one_test (impl_t *impl, const char *s1, const char *s2, int exp_result) ++{ ++ size_t i, iters = INNER_LOOP_ITERS; ++ timing_t start, stop, cur; ++ int result = CALL (impl, s1, s2); ++ if ((exp_result == 0 && result != 0) ++ || (exp_result < 0 && result >= 0) ++ || (exp_result > 0 && result <= 0)) ++ { ++ error (0, 0, "Wrong result in function %s %d %d", impl->name, ++ result, exp_result); ++ ret = 1; ++ return; ++ } ++ ++ TIMING_NOW (start); ++ for (i = 0; i < iters; ++i) ++ { ++ CALL (impl, s1, s2); ++ } ++ TIMING_NOW (stop); ++ ++ TIMING_DIFF (cur, start, stop); ++ ++ TIMING_PRINT_MEAN ((double) cur, (double) iters); ++} ++ ++static void ++do_test (size_t align1, size_t align2, size_t len, int max_char, ++ int exp_result) ++{ ++ size_t i; ++ char *s1, *s2; ++ ++ if (len == 0) ++ return; ++ ++ align1 &= 7; ++ if (align1 + len + 1 >= page_size) ++ return; ++ ++ align2 &= 7; ++ if (align2 + len + 1 >= page_size) ++ return; ++ ++ s1 = (char *) (buf1 + align1); ++ s2 = (char *) (buf2 + align2); ++ ++ for (i = 0; i < len; i++) ++ { ++ s1[i] = toupper (1 + 23 * i % max_char); ++ s2[i] = tolower (s1[i]); ++ } ++ ++ s1[len] = s2[len] = 0; ++ s1[len + 1] = 23; ++ s2[len + 1] = 24 + exp_result; ++ if ((s2[len - 1] == 'z' && exp_result == -1) ++ || (s2[len - 1] == 'a' && exp_result == 1)) ++ s1[len - 1] += exp_result; ++ else ++ s2[len - 1] -= exp_result; ++ ++ printf ("Length %4zd, alignment %2zd/%2zd:", len, align1, align2); ++ ++ FOR_EACH_IMPL (impl, 0) ++ do_one_test (impl, s1, s2, exp_result); ++ ++ putchar ('\n'); ++} ++ ++int ++test_main (void) ++{ ++ size_t i; ++ ++ test_init (); ++ ++ printf ("%23s", ""); ++ FOR_EACH_IMPL (impl, 0) ++ printf ("\t%s", impl->name); ++ putchar ('\n'); ++ ++ for (i = 1; i < 16; ++i) ++ { ++ do_test (i, i, i, 127, 0); ++ do_test (i, i, i, 127, 1); ++ do_test (i, i, i, 127, -1); ++ } ++ ++ for (i = 1; i < 10; ++i) ++ { ++ do_test (0, 0, 2 << i, 127, 0); ++ do_test (0, 0, 2 << i, 254, 0); ++ do_test (0, 0, 2 << i, 127, 1); ++ do_test (0, 0, 2 << i, 254, 1); ++ do_test (0, 0, 2 << i, 127, -1); ++ do_test (0, 0, 2 << i, 254, -1); ++ } ++ ++ for (i = 1; i < 8; ++i) ++ { ++ do_test (i, 2 * i, 8 << i, 127, 0); ++ do_test (2 * i, i, 8 << i, 254, 0); ++ do_test (i, 2 * i, 8 << i, 127, 1); ++ do_test (2 * i, i, 8 << i, 254, 1); ++ do_test (i, 2 * i, 8 << i, 127, -1); ++ do_test (2 * i, i, 8 << i, 254, -1); ++ } ++ ++ return ret; ++} ++ ++#include "../test-skeleton.c" +diff -urN glibc-2.17-c758a686/benchtests/bench-strcasestr.c glibc-2.17-c758a686/benchtests/bench-strcasestr.c +--- glibc-2.17-c758a686/benchtests/bench-strcasestr.c 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.17-c758a686/benchtests/bench-strcasestr.c 2015-06-20 21:22:16.298458075 -0400 +@@ -0,0 +1,180 @@ ++/* Measure strcasestr functions. ++ Copyright (C) 2013 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 ++ . */ ++ ++#define TEST_MAIN ++#define TEST_NAME "strcasestr" ++#include "bench-string.h" ++ ++ ++#define STRCASESTR simple_strcasestr ++#define NO_ALIAS ++#define __strncasecmp strncasecmp ++#include "../string/strcasestr.c" ++ ++ ++static char * ++stupid_strcasestr (const char *s1, const char *s2) ++{ ++ ssize_t s1len = strlen (s1); ++ ssize_t s2len = strlen (s2); ++ ++ if (s2len > s1len) ++ return NULL; ++ ++ for (ssize_t i = 0; i <= s1len - s2len; ++i) ++ { ++ size_t j; ++ for (j = 0; j < s2len; ++j) ++ if (tolower (s1[i + j]) != tolower (s2[j])) ++ break; ++ if (j == s2len) ++ return (char *) s1 + i; ++ } ++ ++ return NULL; ++} ++ ++ ++typedef char *(*proto_t) (const char *, const char *); ++ ++IMPL (stupid_strcasestr, 0) ++IMPL (simple_strcasestr, 0) ++IMPL (strcasestr, 1) ++ ++ ++static void ++do_one_test (impl_t *impl, const char *s1, const char *s2, char *exp_result) ++{ ++ size_t i, iters = INNER_LOOP_ITERS; ++ timing_t start, stop, cur; ++ ++ TIMING_NOW (start); ++ for (i = 0; i < iters; ++i) ++ { ++ CALL (impl, s1, s2); ++ } ++ TIMING_NOW (stop); ++ ++ TIMING_DIFF (cur, start, stop); ++ ++ TIMING_PRINT_MEAN ((double) cur, (double) iters); ++} ++ ++ ++static void ++do_test (size_t align1, size_t align2, size_t len1, size_t len2, ++ int fail) ++{ ++ char *s1 = (char *) (buf1 + align1); ++ char *s2 = (char *) (buf2 + align2); ++ ++ static const char d[] = "1234567890abcxyz"; ++#define dl (sizeof (d) - 1) ++ char *ss2 = s2; ++ for (size_t l = len2; l > 0; l = l > dl ? l - dl : 0) ++ { ++ size_t t = l > dl ? dl : l; ++ ss2 = mempcpy (ss2, d, t); ++ } ++ s2[len2] = '\0'; ++ ++ if (fail) ++ { ++ char *ss1 = s1; ++ for (size_t l = len1; l > 0; l = l > dl ? l - dl : 0) ++ { ++ size_t t = l > dl ? dl : l; ++ memcpy (ss1, d, t); ++ ++ss1[len2 > 7 ? 7 : len2 - 1]; ++ ss1 += t; ++ } ++ } ++ else ++ { ++ memset (s1, '0', len1); ++ for (size_t i = 0; i < len2; ++i) ++ s1[len1 - len2 + i] = toupper (s2[i]); ++ } ++ s1[len1] = '\0'; ++ ++ printf ("Length %4zd/%zd, alignment %2zd/%2zd, %s:", ++ len1, len2, align1, align2, fail ? "fail" : "found"); ++ ++ FOR_EACH_IMPL (impl, 0) ++ do_one_test (impl, s1, s2, fail ? NULL : s1 + len1 - len2); ++ ++ putchar ('\n'); ++} ++ ++static int ++test_main (void) ++{ ++ test_init (); ++ ++ printf ("%23s", ""); ++ FOR_EACH_IMPL (impl, 0) ++ printf ("\t%s", impl->name); ++ putchar ('\n'); ++ ++ for (size_t klen = 2; klen < 32; ++klen) ++ for (size_t hlen = 2 * klen; hlen < 16 * klen; hlen += klen) ++ { ++ do_test (0, 0, hlen, klen, 0); ++ do_test (0, 0, hlen, klen, 1); ++ do_test (0, 3, hlen, klen, 0); ++ do_test (0, 3, hlen, klen, 1); ++ do_test (0, 9, hlen, klen, 0); ++ do_test (0, 9, hlen, klen, 1); ++ do_test (0, 15, hlen, klen, 0); ++ do_test (0, 15, hlen, klen, 1); ++ ++ do_test (3, 0, hlen, klen, 0); ++ do_test (3, 0, hlen, klen, 1); ++ do_test (3, 3, hlen, klen, 0); ++ do_test (3, 3, hlen, klen, 1); ++ do_test (3, 9, hlen, klen, 0); ++ do_test (3, 9, hlen, klen, 1); ++ do_test (3, 15, hlen, klen, 0); ++ do_test (3, 15, hlen, klen, 1); ++ ++ do_test (9, 0, hlen, klen, 0); ++ do_test (9, 0, hlen, klen, 1); ++ do_test (9, 3, hlen, klen, 0); ++ do_test (9, 3, hlen, klen, 1); ++ do_test (9, 9, hlen, klen, 0); ++ do_test (9, 9, hlen, klen, 1); ++ do_test (9, 15, hlen, klen, 0); ++ do_test (9, 15, hlen, klen, 1); ++ ++ do_test (15, 0, hlen, klen, 0); ++ do_test (15, 0, hlen, klen, 1); ++ do_test (15, 3, hlen, klen, 0); ++ do_test (15, 3, hlen, klen, 1); ++ do_test (15, 9, hlen, klen, 0); ++ do_test (15, 9, hlen, klen, 1); ++ do_test (15, 15, hlen, klen, 0); ++ do_test (15, 15, hlen, klen, 1); ++ } ++ ++ do_test (0, 0, page_size - 1, 16, 0); ++ do_test (0, 0, page_size - 1, 16, 1); ++ ++ return ret; ++} ++ ++#include "../test-skeleton.c" +diff -urN glibc-2.17-c758a686/benchtests/bench-strcat.c glibc-2.17-c758a686/benchtests/bench-strcat.c +--- glibc-2.17-c758a686/benchtests/bench-strcat.c 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.17-c758a686/benchtests/bench-strcat.c 2015-06-20 21:22:16.298458075 -0400 +@@ -0,0 +1,148 @@ ++/* Measure strcat functions. ++ Copyright (C) 2013 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 ++ . */ ++ ++#define TEST_MAIN ++#define TEST_NAME "strcat" ++#include "bench-string.h" ++ ++typedef char *(*proto_t) (char *, const char *); ++char *simple_strcat (char *, const char *); ++ ++IMPL (simple_strcat, 0) ++IMPL (strcat, 1) ++ ++char * ++simple_strcat (char *dst, const char *src) ++{ ++ char *ret = dst; ++ while (*dst++ != '\0'); ++ --dst; ++ while ((*dst++ = *src++) != '\0'); ++ return ret; ++} ++ ++static void ++do_one_test (impl_t *impl, char *dst, const char *src) ++{ ++ size_t k = strlen (dst), i, iters = INNER_LOOP_ITERS; ++ timing_t start, stop, cur; ++ ++ if (CALL (impl, dst, src) != dst) ++ { ++ error (0, 0, "Wrong result in function %s %p %p", impl->name, ++ CALL (impl, dst, src), dst); ++ ret = 1; ++ return; ++ } ++ ++ if (strcmp (dst + k, src) != 0) ++ { ++ error (0, 0, "Wrong result in function %s dst \"%s\" src \"%s\"", ++ impl->name, dst, src); ++ ret = 1; ++ return; ++ } ++ ++ TIMING_NOW (start); ++ for (i = 0; i < iters; ++i) ++ { ++ dst[k] = '\0'; ++ CALL (impl, dst, src); ++ } ++ TIMING_NOW (stop); ++ ++ TIMING_DIFF (cur, start, stop); ++ ++ TIMING_PRINT_MEAN ((double) cur, (double) iters); ++} ++ ++static void ++do_test (size_t align1, size_t align2, size_t len1, size_t len2, int max_char) ++{ ++ size_t i; ++ char *s1, *s2; ++ ++ align1 &= 7; ++ if (align1 + len1 >= page_size) ++ return; ++ ++ align2 &= 7; ++ if (align2 + len1 + len2 >= page_size) ++ return; ++ ++ s1 = (char *) (buf1 + align1); ++ s2 = (char *) (buf2 + align2); ++ ++ for (i = 0; i < len1; ++i) ++ s1[i] = 32 + 23 * i % (max_char - 32); ++ s1[len1] = '\0'; ++ ++ for (i = 0; i < len2; i++) ++ s2[i] = 32 + 23 * i % (max_char - 32); ++ ++ printf ("Length %4zd/%4zd, alignment %2zd/%2zd:", len1, len2, align1, align2); ++ ++ FOR_EACH_IMPL (impl, 0) ++ { ++ s2[len2] = '\0'; ++ do_one_test (impl, s2, s1); ++ } ++ ++ putchar ('\n'); ++} ++ ++int ++test_main (void) ++{ ++ size_t i; ++ ++ test_init (); ++ ++ printf ("%28s", ""); ++ FOR_EACH_IMPL (impl, 0) ++ printf ("\t%s", impl->name); ++ putchar ('\n'); ++ ++ for (i = 0; i < 16; ++i) ++ { ++ do_test (0, 0, i, i, 127); ++ do_test (0, 0, i, i, 255); ++ do_test (0, i, i, i, 127); ++ do_test (i, 0, i, i, 255); ++ } ++ ++ for (i = 1; i < 8; ++i) ++ { ++ do_test (0, 0, 8 << i, 8 << i, 127); ++ do_test (8 - i, 2 * i, 8 << i, 8 << i, 127); ++ do_test (0, 0, 8 << i, 2 << i, 127); ++ do_test (8 - i, 2 * i, 8 << i, 2 << i, 127); ++ } ++ ++ for (i = 1; i < 8; ++i) ++ { ++ do_test (i, 2 * i, 8 << i, 1, 127); ++ do_test (2 * i, i, 8 << i, 1, 255); ++ do_test (i, i, 8 << i, 10, 127); ++ do_test (i, i, 8 << i, 10, 255); ++ } ++ ++ return ret; ++} ++ ++#include "../test-skeleton.c" +diff -urN glibc-2.17-c758a686/benchtests/bench-strchr.c glibc-2.17-c758a686/benchtests/bench-strchr.c +--- glibc-2.17-c758a686/benchtests/bench-strchr.c 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.17-c758a686/benchtests/bench-strchr.c 2015-06-20 21:22:16.298458075 -0400 +@@ -0,0 +1,200 @@ ++/* Measure STRCHR functions. ++ Copyright (C) 2013 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 ++ . */ ++ ++#define TEST_MAIN ++#ifndef WIDE ++# ifdef USE_FOR_STRCHRNUL ++# define TEST_NAME "strchrnul" ++# else ++# define TEST_NAME "strchr" ++# endif ++#else ++# define TEST_NAME "wcschr" ++#endif ++#include "bench-string.h" ++ ++#ifndef WIDE ++# ifdef USE_FOR_STRCHRNUL ++# define STRCHR strchrnul ++# define stupid_STRCHR stupid_STRCHRNUL ++# define simple_STRCHR simple_STRCHRNUL ++# else ++# define STRCHR strchr ++# endif ++# define STRLEN strlen ++# define CHAR char ++# define BIG_CHAR CHAR_MAX ++# define MIDDLE_CHAR 127 ++# define SMALL_CHAR 23 ++# define UCHAR unsigned char ++#else ++# include ++# define STRCHR wcschr ++# define STRLEN wcslen ++# define CHAR wchar_t ++# define BIG_CHAR WCHAR_MAX ++# define MIDDLE_CHAR 1121 ++# define SMALL_CHAR 851 ++# define UCHAR wchar_t ++#endif ++ ++#ifdef USE_FOR_STRCHRNUL ++# define NULLRET(endptr) endptr ++#else ++# define NULLRET(endptr) NULL ++#endif ++ ++ ++typedef CHAR *(*proto_t) (const CHAR *, int); ++ ++CHAR * ++simple_STRCHR (const CHAR *s, int c) ++{ ++ for (; *s != (CHAR) c; ++s) ++ if (*s == '\0') ++ return NULLRET ((CHAR *) s); ++ return (CHAR *) s; ++} ++ ++CHAR * ++stupid_STRCHR (const CHAR *s, int c) ++{ ++ size_t n = STRLEN (s) + 1; ++ ++ while (n--) ++ if (*s++ == (CHAR) c) ++ return (CHAR *) s - 1; ++ return NULLRET ((CHAR *) s - 1); ++} ++ ++IMPL (stupid_STRCHR, 0) ++IMPL (simple_STRCHR, 0) ++IMPL (STRCHR, 1) ++ ++static void ++do_one_test (impl_t *impl, const CHAR *s, int c, const CHAR *exp_res) ++{ ++ size_t i, iters = INNER_LOOP_ITERS; ++ timing_t start, stop, cur; ++ ++ TIMING_NOW (start); ++ for (i = 0; i < iters; ++i) ++ { ++ CALL (impl, s, c); ++ } ++ TIMING_NOW (stop); ++ ++ TIMING_DIFF (cur, start, stop); ++ ++ TIMING_PRINT_MEAN ((double) cur, (double) iters); ++} ++ ++static void ++do_test (size_t align, size_t pos, size_t len, int seek_char, int max_char) ++/* For wcschr: align here means align not in bytes, ++ but in wchar_ts, in bytes it will equal to align * (sizeof (wchar_t)) ++ len for wcschr here isn't in bytes but it's number of wchar_t symbols. */ ++{ ++ size_t i; ++ CHAR *result; ++ CHAR *buf = (CHAR *) buf1; ++ align &= 15; ++ if ((align + len) * sizeof (CHAR) >= page_size) ++ return; ++ ++ for (i = 0; i < len; ++i) ++ { ++ buf[align + i] = 32 + 23 * i % max_char; ++ if (buf[align + i] == seek_char) ++ buf[align + i] = seek_char + 1; ++ else if (buf[align + i] == 0) ++ buf[align + i] = 1; ++ } ++ buf[align + len] = 0; ++ ++ if (pos < len) ++ { ++ buf[align + pos] = seek_char; ++ result = buf + align + pos; ++ } ++ else if (seek_char == 0) ++ result = buf + align + len; ++ else ++ result = NULLRET (buf + align + len); ++ ++ printf ("Length %4zd, alignment in bytes %2zd:", ++ pos, align * sizeof (CHAR)); ++ ++ FOR_EACH_IMPL (impl, 0) ++ do_one_test (impl, buf + align, seek_char, result); ++ ++ putchar ('\n'); ++} ++ ++int ++test_main (void) ++{ ++ size_t i; ++ ++ test_init (); ++ ++ printf ("%20s", ""); ++ FOR_EACH_IMPL (impl, 0) ++ printf ("\t%s", impl->name); ++ putchar ('\n'); ++ ++ for (i = 1; i < 8; ++i) ++ { ++ do_test (0, 16 << i, 2048, SMALL_CHAR, MIDDLE_CHAR); ++ do_test (i, 16 << i, 2048, SMALL_CHAR, MIDDLE_CHAR); ++ } ++ ++ for (i = 1; i < 8; ++i) ++ { ++ do_test (i, 64, 256, SMALL_CHAR, MIDDLE_CHAR); ++ do_test (i, 64, 256, SMALL_CHAR, BIG_CHAR); ++ } ++ ++ for (i = 0; i < 32; ++i) ++ { ++ do_test (0, i, i + 1, SMALL_CHAR, MIDDLE_CHAR); ++ do_test (0, i, i + 1, SMALL_CHAR, BIG_CHAR); ++ } ++ ++ for (i = 1; i < 8; ++i) ++ { ++ do_test (0, 16 << i, 2048, 0, MIDDLE_CHAR); ++ do_test (i, 16 << i, 2048, 0, MIDDLE_CHAR); ++ } ++ ++ for (i = 1; i < 8; ++i) ++ { ++ do_test (i, 64, 256, 0, MIDDLE_CHAR); ++ do_test (i, 64, 256, 0, BIG_CHAR); ++ } ++ ++ for (i = 0; i < 32; ++i) ++ { ++ do_test (0, i, i + 1, 0, MIDDLE_CHAR); ++ do_test (0, i, i + 1, 0, BIG_CHAR); ++ } ++ ++ return ret; ++} ++ ++#include "../test-skeleton.c" +diff -urN glibc-2.17-c758a686/benchtests/bench-strchrnul.c glibc-2.17-c758a686/benchtests/bench-strchrnul.c +--- glibc-2.17-c758a686/benchtests/bench-strchrnul.c 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.17-c758a686/benchtests/bench-strchrnul.c 2015-06-20 21:22:16.298458075 -0400 +@@ -0,0 +1,20 @@ ++/* Measure strchrnul function. ++ Copyright (C) 2013 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 ++ . */ ++ ++#define USE_FOR_STRCHRNUL 1 ++#include "bench-strchr.c" +diff -urN glibc-2.17-c758a686/benchtests/bench-strcmp.c glibc-2.17-c758a686/benchtests/bench-strcmp.c +--- glibc-2.17-c758a686/benchtests/bench-strcmp.c 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.17-c758a686/benchtests/bench-strcmp.c 2015-06-20 21:22:16.298458075 -0400 +@@ -0,0 +1,241 @@ ++/* Measure strcmp and wcscmp functions. ++ Copyright (C) 2013 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 ++ . */ ++ ++#define TEST_MAIN ++#ifdef WIDE ++# define TEST_NAME "wcscmp" ++#else ++# define TEST_NAME "strcmp" ++#endif ++#include "bench-string.h" ++ ++#ifdef WIDE ++# include ++ ++# define L(str) L##str ++# define STRCMP wcscmp ++# define STRCPY wcscpy ++# define STRLEN wcslen ++# define MEMCPY wmemcpy ++# define SIMPLE_STRCMP simple_wcscmp ++# define STUPID_STRCMP stupid_wcscmp ++# define CHAR wchar_t ++# define UCHAR wchar_t ++# define CHARBYTES 4 ++# define CHARBYTESLOG 2 ++# define CHARALIGN __alignof__ (CHAR) ++# define MIDCHAR 0x7fffffff ++# define LARGECHAR 0xfffffffe ++# define CHAR__MAX WCHAR_MAX ++# define CHAR__MIN WCHAR_MIN ++ ++/* Wcscmp uses signed semantics for comparison, not unsigned */ ++/* Avoid using substraction since possible overflow */ ++ ++int ++simple_wcscmp (const wchar_t *s1, const wchar_t *s2) ++{ ++ wchar_t c1, c2; ++ do ++ { ++ c1 = *s1++; ++ c2 = *s2++; ++ if (c2 == L'\0') ++ return c1 - c2; ++ } ++ while (c1 == c2); ++ ++ return c1 < c2 ? -1 : 1; ++} ++ ++int ++stupid_wcscmp (const wchar_t *s1, const wchar_t *s2) ++{ ++ size_t ns1 = wcslen (s1) + 1; ++ size_t ns2 = wcslen (s2) + 1; ++ size_t n = ns1 < ns2 ? ns1 : ns2; ++ int ret = 0; ++ ++ wchar_t c1, c2; ++ ++ while (n--) { ++ c1 = *s1++; ++ c2 = *s2++; ++ if ((ret = c1 < c2 ? -1 : c1 == c2 ? 0 : 1) != 0) ++ break; ++ } ++ return ret; ++} ++ ++#else ++# include ++ ++# define L(str) str ++# define STRCMP strcmp ++# define STRCPY strcpy ++# define STRLEN strlen ++# define MEMCPY memcpy ++# define SIMPLE_STRCMP simple_strcmp ++# define STUPID_STRCMP stupid_strcmp ++# define CHAR char ++# define UCHAR unsigned char ++# define CHARBYTES 1 ++# define CHARBYTESLOG 0 ++# define CHARALIGN 1 ++# define MIDCHAR 0x7f ++# define LARGECHAR 0xfe ++# define CHAR__MAX CHAR_MAX ++# define CHAR__MIN CHAR_MIN ++ ++/* Strcmp uses unsigned semantics for comparison. */ ++int ++simple_strcmp (const char *s1, const char *s2) ++{ ++ int ret; ++ ++ while ((ret = *(unsigned char *) s1 - *(unsigned char*) s2++) == 0 && *s1++); ++ return ret; ++} ++ ++int ++stupid_strcmp (const char *s1, const char *s2) ++{ ++ size_t ns1 = strlen (s1) + 1; ++ size_t ns2 = strlen (s2) + 1; ++ size_t n = ns1 < ns2 ? ns1 : ns2; ++ int ret = 0; ++ ++ while (n--) ++ if ((ret = *(unsigned char *) s1++ - *(unsigned char *) s2++) != 0) ++ break; ++ return ret; ++} ++#endif ++ ++typedef int (*proto_t) (const CHAR *, const CHAR *); ++ ++IMPL (STUPID_STRCMP, 1) ++IMPL (SIMPLE_STRCMP, 1) ++IMPL (STRCMP, 1) ++ ++static void ++do_one_test (impl_t *impl, ++ const CHAR *s1, const CHAR *s2, ++ int exp_result) ++{ ++ size_t i, iters = INNER_LOOP_ITERS; ++ timing_t start, stop, cur; ++ ++ TIMING_NOW (start); ++ for (i = 0; i < iters; ++i) ++ { ++ CALL (impl, s1, s2); ++ } ++ TIMING_NOW (stop); ++ ++ TIMING_DIFF (cur, start, stop); ++ ++ TIMING_PRINT_MEAN ((double) cur, (double) iters); ++} ++ ++static void ++do_test (size_t align1, size_t align2, size_t len, int max_char, ++ int exp_result) ++{ ++ size_t i; ++ ++ CHAR *s1, *s2; ++ ++ if (len == 0) ++ return; ++ ++ align1 &= 63; ++ if (align1 + (len + 1) * CHARBYTES >= page_size) ++ return; ++ ++ align2 &= 63; ++ if (align2 + (len + 1) * CHARBYTES >= page_size) ++ return; ++ ++ /* Put them close to the end of page. */ ++ i = align1 + CHARBYTES * (len + 2); ++ s1 = (CHAR *) (buf1 + ((page_size - i) / 16 * 16) + align1); ++ i = align2 + CHARBYTES * (len + 2); ++ s2 = (CHAR *) (buf2 + ((page_size - i) / 16 * 16) + align2); ++ ++ for (i = 0; i < len; i++) ++ s1[i] = s2[i] = 1 + (23 << ((CHARBYTES - 1) * 8)) * i % max_char; ++ ++ s1[len] = s2[len] = 0; ++ s1[len + 1] = 23; ++ s2[len + 1] = 24 + exp_result; ++ s2[len - 1] -= exp_result; ++ ++ printf ("Length %4zd, alignment %2zd/%2zd:", len, align1, align2); ++ ++ FOR_EACH_IMPL (impl, 0) ++ do_one_test (impl, s1, s2, exp_result); ++ ++ putchar ('\n'); ++} ++ ++int ++test_main (void) ++{ ++ size_t i; ++ ++ test_init (); ++ ++ printf ("%23s", ""); ++ FOR_EACH_IMPL (impl, 0) ++ printf ("\t%s", impl->name); ++ putchar ('\n'); ++ ++ for (i = 1; i < 32; ++i) ++ { ++ do_test (CHARBYTES * i, CHARBYTES * i, i, MIDCHAR, 0); ++ do_test (CHARBYTES * i, CHARBYTES * i, i, MIDCHAR, 1); ++ do_test (CHARBYTES * i, CHARBYTES * i, i, MIDCHAR, -1); ++ } ++ ++ for (i = 1; i < 10 + CHARBYTESLOG; ++i) ++ { ++ do_test (0, 0, 2 << i, MIDCHAR, 0); ++ do_test (0, 0, 2 << i, LARGECHAR, 0); ++ do_test (0, 0, 2 << i, MIDCHAR, 1); ++ do_test (0, 0, 2 << i, LARGECHAR, 1); ++ do_test (0, 0, 2 << i, MIDCHAR, -1); ++ do_test (0, 0, 2 << i, LARGECHAR, -1); ++ do_test (0, CHARBYTES * i, 2 << i, MIDCHAR, 1); ++ do_test (CHARBYTES * i, CHARBYTES * (i + 1), 2 << i, LARGECHAR, 1); ++ } ++ ++ for (i = 1; i < 8; ++i) ++ { ++ do_test (CHARBYTES * i, 2 * CHARBYTES * i, 8 << i, MIDCHAR, 0); ++ do_test (2 * CHARBYTES * i, CHARBYTES * i, 8 << i, LARGECHAR, 0); ++ do_test (CHARBYTES * i, 2 * CHARBYTES * i, 8 << i, MIDCHAR, 1); ++ do_test (2 * CHARBYTES * i, CHARBYTES * i, 8 << i, LARGECHAR, 1); ++ do_test (CHARBYTES * i, 2 * CHARBYTES * i, 8 << i, MIDCHAR, -1); ++ do_test (2 * CHARBYTES * i, CHARBYTES * i, 8 << i, LARGECHAR, -1); ++ } ++ ++ return ret; ++} ++ ++#include "../test-skeleton.c" +diff -urN glibc-2.17-c758a686/benchtests/bench-strcpy.c glibc-2.17-c758a686/benchtests/bench-strcpy.c +--- glibc-2.17-c758a686/benchtests/bench-strcpy.c 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.17-c758a686/benchtests/bench-strcpy.c 2015-06-20 21:22:16.298458075 -0400 +@@ -0,0 +1,193 @@ ++/* Measure strcpy functions. ++ Copyright (C) 2013-2015 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 ++ . */ ++ ++#ifdef WIDE ++# include ++# define CHAR wchar_t ++# define UCHAR wchar_t ++# define sfmt "ls" ++# define BIG_CHAR WCHAR_MAX ++# define SMALL_CHAR 1273 ++# define STRCMP wcscmp ++# define MEMCMP wmemcmp ++# define MEMSET wmemset ++#else ++# define CHAR char ++# define UCHAR unsigned char ++# define sfmt "s" ++# define BIG_CHAR CHAR_MAX ++# define SMALL_CHAR 127 ++# define STRCMP strcmp ++# define MEMCMP memcmp ++# define MEMSET memset ++#endif ++ ++#ifndef STRCPY_RESULT ++# define STRCPY_RESULT(dst, len) dst ++# define TEST_MAIN ++# ifndef WIDE ++# define TEST_NAME "strcpy" ++# else ++# define TEST_NAME "wcscpy" ++# endif ++# include "bench-string.h" ++# ifndef WIDE ++# define SIMPLE_STRCPY simple_strcpy ++# define STRCPY strcpy ++# else ++# define SIMPLE_STRCPY simple_wcscpy ++# define STRCPY wcscpy ++# endif ++ ++CHAR *SIMPLE_STRCPY (CHAR *, const CHAR *); ++ ++IMPL (SIMPLE_STRCPY, 0) ++IMPL (STRCPY, 1) ++ ++CHAR * ++SIMPLE_STRCPY (CHAR *dst, const CHAR *src) ++{ ++ CHAR *ret = dst; ++ while ((*dst++ = *src++) != '\0'); ++ return ret; ++} ++#endif ++ ++typedef CHAR *(*proto_t) (CHAR *, const CHAR *); ++ ++static void ++do_one_test (impl_t *impl, CHAR *dst, const CHAR *src, ++ size_t len __attribute__((unused))) ++{ ++ size_t i, iters = INNER_LOOP_ITERS; ++ timing_t start, stop, cur; ++ ++ if (CALL (impl, dst, src) != STRCPY_RESULT (dst, len)) ++ { ++ error (0, 0, "Wrong result in function %s %p %p", impl->name, ++ CALL (impl, dst, src), STRCPY_RESULT (dst, len)); ++ ret = 1; ++ return; ++ } ++ ++ if (STRCMP (dst, src) != 0) ++ { ++ error (0, 0, ++ "Wrong result in function %s dst \"%" sfmt "\" src \"%" sfmt "\"", ++ impl->name, dst, src); ++ ret = 1; ++ return; ++ } ++ ++ TIMING_NOW (start); ++ for (i = 0; i < iters; ++i) ++ { ++ CALL (impl, dst, src); ++ } ++ TIMING_NOW (stop); ++ ++ TIMING_DIFF (cur, start, stop); ++ ++ TIMING_PRINT_MEAN ((double) cur, (double) iters); ++} ++ ++static void ++do_test (size_t align1, size_t align2, size_t len, int max_char) ++{ ++ size_t i; ++ CHAR *s1, *s2; ++/* For wcscpy: align1 and align2 here mean alignment not in bytes, ++ but in wchar_ts, in bytes it will equal to align * (sizeof (wchar_t)) ++ len for wcschr here isn't in bytes but it's number of wchar_t symbols. */ ++ align1 &= 7; ++ if ((align1 + len) * sizeof(CHAR) >= page_size) ++ return; ++ ++ align2 &= 7; ++ if ((align2 + len) * sizeof(CHAR) >= page_size) ++ return; ++ ++ s1 = (CHAR *) (buf1) + align1; ++ s2 = (CHAR *) (buf2) + align2; ++ ++ for (i = 0; i < len; i++) ++ s1[i] = 32 + 23 * i % (max_char - 32); ++ s1[len] = 0; ++ ++ printf ("Length %4zd, alignments in bytes %2zd/%2zd:", len, align1 * sizeof(CHAR), align2 * sizeof(CHAR)); ++ ++ FOR_EACH_IMPL (impl, 0) ++ do_one_test (impl, s2, s1, len); ++ ++ putchar ('\n'); ++} ++ ++int ++test_main (void) ++{ ++ size_t i; ++ ++ test_init (); ++ ++ printf ("%23s", ""); ++ FOR_EACH_IMPL (impl, 0) ++ printf ("\t%s", impl->name); ++ putchar ('\n'); ++ ++ for (i = 0; i < 16; ++i) ++ { ++ do_test (0, 0, i, SMALL_CHAR); ++ do_test (0, 0, i, BIG_CHAR); ++ do_test (0, i, i, SMALL_CHAR); ++ do_test (i, 0, i, BIG_CHAR); ++ } ++ ++ for (i = 1; i < 8; ++i) ++ { ++ do_test (0, 0, 8 << i, SMALL_CHAR); ++ do_test (8 - i, 2 * i, 8 << i, SMALL_CHAR); ++ } ++ ++ for (i = 1; i < 8; ++i) ++ { ++ do_test (i, 2 * i, 8 << i, SMALL_CHAR); ++ do_test (2 * i, i, 8 << i, BIG_CHAR); ++ do_test (i, i, 8 << i, SMALL_CHAR); ++ do_test (i, i, 8 << i, BIG_CHAR); ++ } ++ ++ for (i = 16; i <= 512; i+=4) ++ { ++ do_test (0, 4, i, SMALL_CHAR); ++ do_test (4, 0, i, BIG_CHAR); ++ do_test (4, 4, i, SMALL_CHAR); ++ do_test (2, 2, i, BIG_CHAR); ++ do_test (2, 6, i, SMALL_CHAR); ++ do_test (6, 2, i, BIG_CHAR); ++ do_test (1, 7, i, SMALL_CHAR); ++ do_test (7, 1, i, BIG_CHAR); ++ do_test (3, 4, i, SMALL_CHAR); ++ do_test (4, 3, i, BIG_CHAR); ++ do_test (5, 7, i, SMALL_CHAR); ++ do_test (7, 5, i, SMALL_CHAR); ++ } ++ ++ return ret; ++} ++ ++#include "../test-skeleton.c" +diff -urN glibc-2.17-c758a686/benchtests/bench-strcpy_chk.c glibc-2.17-c758a686/benchtests/bench-strcpy_chk.c +--- glibc-2.17-c758a686/benchtests/bench-strcpy_chk.c 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.17-c758a686/benchtests/bench-strcpy_chk.c 2015-06-20 21:22:16.298458075 -0400 +@@ -0,0 +1,243 @@ ++/* Measure __strcpy_chk functions. ++ Copyright (C) 2013-2015 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 ++ . */ ++ ++#ifndef STRCPY_RESULT ++# define STRCPY_RESULT(dst, len) dst ++# define TEST_MAIN ++# define TEST_NAME "strcpy_chk" ++# include "bench-string.h" ++ ++/* This test case implicitly tests the availability of the __chk_fail ++ symbol, which is part of the public ABI and may be used ++ externally. */ ++extern void __attribute__ ((noreturn)) __chk_fail (void); ++char *simple_strcpy_chk (char *, const char *, size_t); ++extern char *normal_strcpy (char *, const char *, size_t) ++ __asm ("strcpy"); ++extern char *__strcpy_chk (char *, const char *, size_t); ++ ++IMPL (simple_strcpy_chk, 0) ++IMPL (normal_strcpy, 1) ++IMPL (__strcpy_chk, 2) ++ ++char * ++simple_strcpy_chk (char *dst, const char *src, size_t len) ++{ ++ char *ret = dst; ++ if (! len) ++ __chk_fail (); ++ while ((*dst++ = *src++) != '\0') ++ if (--len == 0) ++ __chk_fail (); ++ return ret; ++} ++#endif ++ ++#include ++#include ++#include ++#include ++ ++static int test_main (void); ++#include "../test-skeleton.c" ++ ++volatile int chk_fail_ok; ++jmp_buf chk_fail_buf; ++ ++static void ++handler (int sig) ++{ ++ if (chk_fail_ok) ++ { ++ chk_fail_ok = 0; ++ longjmp (chk_fail_buf, 1); ++ } ++ else ++ _exit (127); ++} ++ ++typedef char *(*proto_t) (char *, const char *, size_t); ++ ++static void ++do_one_test (impl_t *impl, char *dst, const char *src, ++ size_t len, size_t dlen) ++{ ++ char *res; ++ size_t i, iters = INNER_LOOP_ITERS; ++ timing_t start, stop, cur; ++ ++ if (dlen <= len) ++ { ++ if (impl->test == 1) ++ return; ++ ++ chk_fail_ok = 1; ++ if (setjmp (chk_fail_buf) == 0) ++ { ++ res = CALL (impl, dst, src, dlen); ++ printf ("*** Function %s (%zd; %zd) did not __chk_fail\n", ++ impl->name, len, dlen); ++ chk_fail_ok = 0; ++ ret = 1; ++ } ++ return; ++ } ++ else ++ res = CALL (impl, dst, src, dlen); ++ ++ if (res != STRCPY_RESULT (dst, len)) ++ { ++ printf ("Wrong result in function %s %p %p\n", impl->name, ++ res, STRCPY_RESULT (dst, len)); ++ ret = 1; ++ return; ++ } ++ ++ if (strcmp (dst, src) != 0) ++ { ++ printf ("Wrong result in function %s dst \"%s\" src \"%s\"\n", ++ impl->name, dst, src); ++ ret = 1; ++ return; ++ } ++ ++ TIMING_NOW (start); ++ for (i = 0; i < iters; ++i) ++ { ++ CALL (impl, dst, src, dlen); ++ } ++ TIMING_NOW (stop); ++ ++ TIMING_DIFF (cur, start, stop); ++ ++ TIMING_PRINT_MEAN ((double) cur, (double) iters); ++} ++ ++static void ++do_test (size_t align1, size_t align2, size_t len, size_t dlen, int max_char) ++{ ++ size_t i; ++ char *s1, *s2; ++ ++ align1 &= 7; ++ if (align1 + len >= page_size) ++ return; ++ ++ align2 &= 7; ++ if (align2 + len >= page_size) ++ return; ++ ++ s1 = (char *) buf1 + align1; ++ s2 = (char *) buf2 + align2; ++ ++ for (i = 0; i < len; i++) ++ s1[i] = 32 + 23 * i % (max_char - 32); ++ s1[len] = 0; ++ ++ if (dlen > len) ++ printf ("Length %4zd, alignment %2zd/%2zd:", len, align1, align2); ++ ++ FOR_EACH_IMPL (impl, 0) ++ do_one_test (impl, s2, s1, len, dlen); ++ ++ if (dlen > len) ++ putchar ('\n'); ++} ++ ++static int ++test_main (void) ++{ ++ size_t i; ++ ++ set_fortify_handler (handler); ++ ++ test_init (); ++ ++ printf ("%23s", ""); ++ FOR_EACH_IMPL (impl, 0) ++ printf ("\t%s", impl->name); ++ putchar ('\n'); ++ ++ for (i = 0; i < 16; ++i) ++ { ++ do_test (0, 0, i, i + 1, 127); ++ do_test (0, 0, i, i + 1, 255); ++ do_test (0, i, i, i + 1, 127); ++ do_test (i, 0, i, i + 1, 255); ++ } ++ ++ for (i = 1; i < 8; ++i) ++ { ++ do_test (0, 0, 8 << i, (8 << i) + 1, 127); ++ do_test (8 - i, 2 * i, (8 << i), (8 << i) + 1, 127); ++ } ++ ++ for (i = 1; i < 8; ++i) ++ { ++ do_test (i, 2 * i, (8 << i), (8 << i) + 1, 127); ++ do_test (2 * i, i, (8 << i), (8 << i) + 1, 255); ++ do_test (i, i, (8 << i), (8 << i) + 1, 127); ++ do_test (i, i, (8 << i), (8 << i) + 1, 255); ++ } ++ ++ for (i = 0; i < 16; ++i) ++ { ++ do_test (0, 0, i, i + 256, 127); ++ do_test (0, 0, i, i + 256, 255); ++ do_test (0, i, i, i + 256, 127); ++ do_test (i, 0, i, i + 256, 255); ++ } ++ ++ for (i = 1; i < 8; ++i) ++ { ++ do_test (0, 0, 8 << i, (8 << i) + 256, 127); ++ do_test (8 - i, 2 * i, (8 << i), (8 << i) + 256, 127); ++ } ++ ++ for (i = 1; i < 8; ++i) ++ { ++ do_test (i, 2 * i, (8 << i), (8 << i) + 256, 127); ++ do_test (2 * i, i, (8 << i), (8 << i) + 256, 255); ++ do_test (i, i, (8 << i), (8 << i) + 256, 127); ++ do_test (i, i, (8 << i), (8 << i) + 256, 255); ++ } ++ ++ for (i = 0; i < 16; ++i) ++ { ++ do_test (0, 0, i, i, 127); ++ do_test (0, 0, i, i + 2, 255); ++ do_test (0, i, i, i + 3, 127); ++ do_test (i, 0, i, i + 4, 255); ++ } ++ ++ for (i = 1; i < 8; ++i) ++ { ++ do_test (0, 0, 8 << i, (8 << i) - 15, 127); ++ do_test (8 - i, 2 * i, (8 << i), (8 << i) + 5, 127); ++ } ++ ++ for (i = 1; i < 8; ++i) ++ { ++ do_test (i, 2 * i, (8 << i), (8 << i) + i, 127); ++ do_test (2 * i, i, (8 << i), (8 << i) + (i - 1), 255); ++ do_test (i, i, (8 << i), (8 << i) + i + 2, 127); ++ do_test (i, i, (8 << i), (8 << i) + i + 3, 255); ++ } ++ ++ return 0; ++} +diff -urN glibc-2.17-c758a686/benchtests/bench-strcspn.c glibc-2.17-c758a686/benchtests/bench-strcspn.c +--- glibc-2.17-c758a686/benchtests/bench-strcspn.c 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.17-c758a686/benchtests/bench-strcspn.c 2015-06-20 21:22:16.298458075 -0400 +@@ -0,0 +1,59 @@ ++/* Measure strcspn functions. ++ Copyright (C) 2013 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 ++ . */ ++ ++#define STRPBRK_RESULT(s, pos) (pos) ++#define RES_TYPE size_t ++#define TEST_MAIN ++#define TEST_NAME "strcspn" ++#include "bench-string.h" ++ ++typedef size_t (*proto_t) (const char *, const char *); ++size_t simple_strcspn (const char *, const char *); ++size_t stupid_strcspn (const char *, const char *); ++ ++IMPL (stupid_strcspn, 0) ++IMPL (simple_strcspn, 0) ++IMPL (strcspn, 1) ++ ++size_t ++simple_strcspn (const char *s, const char *rej) ++{ ++ const char *r, *str = s; ++ char c; ++ ++ while ((c = *s++) != '\0') ++ for (r = rej; *r != '\0'; ++r) ++ if (*r == c) ++ return s - str - 1; ++ return s - str - 1; ++} ++ ++size_t ++stupid_strcspn (const char *s, const char *rej) ++{ ++ size_t ns = strlen (s), nrej = strlen (rej); ++ size_t i, j; ++ ++ for (i = 0; i < ns; ++i) ++ for (j = 0; j < nrej; ++j) ++ if (s[i] == rej[j]) ++ return i; ++ return i; ++} ++ ++#include "bench-strpbrk.c" +diff -urN glibc-2.17-c758a686/benchtests/bench-string.h glibc-2.17-c758a686/benchtests/bench-string.h +--- glibc-2.17-c758a686/benchtests/bench-string.h 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.17-c758a686/benchtests/bench-string.h 2015-06-20 21:22:16.299458044 -0400 +@@ -0,0 +1,201 @@ ++/* Measure string and memory functions. ++ Copyright (C) 2013-2015 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 ++ . */ ++ ++#include ++ ++typedef struct ++{ ++ const char *name; ++ void (*fn) (void); ++ long test; ++} impl_t; ++extern impl_t __start_impls[], __stop_impls[]; ++ ++#define IMPL(name, test) \ ++ impl_t tst_ ## name \ ++ __attribute__ ((section ("impls"), aligned (sizeof (void *)))) \ ++ = { __STRING (name), (void (*) (void))name, test }; ++ ++#ifdef TEST_MAIN ++ ++# ifndef _GNU_SOURCE ++# define _GNU_SOURCE ++# endif ++ ++# undef __USE_STRING_INLINES ++ ++# include ++# include ++# include ++# include ++# include ++# include ++# include ++# include ++# include ++# include ++# include ++# define GL(x) _##x ++# define GLRO(x) _##x ++# include "bench-timing.h" ++ ++ ++# define TEST_FUNCTION test_main () ++# define TIMEOUT (4 * 60) ++# define OPT_ITERATIONS 10000 ++# define OPT_RANDOM 10001 ++# define OPT_SEED 10002 ++ ++# define INNER_LOOP_ITERS 64 ++ ++unsigned char *buf1, *buf2; ++int ret, do_srandom; ++unsigned int seed; ++size_t page_size; ++ ++# ifndef ITERATIONS ++size_t iterations = 100000; ++# define ITERATIONS_OPTIONS \ ++ { "iterations", required_argument, NULL, OPT_ITERATIONS }, ++# define ITERATIONS_PROCESS \ ++ case OPT_ITERATIONS: \ ++ iterations = strtoul (optarg, NULL, 0); \ ++ break; ++# define ITERATIONS iterations ++# else ++# define ITERATIONS_OPTIONS ++# define ITERATIONS_PROCESS ++# endif ++ ++# define CMDLINE_OPTIONS ITERATIONS_OPTIONS \ ++ { "random", no_argument, NULL, OPT_RANDOM }, \ ++ { "seed", required_argument, NULL, OPT_SEED }, ++# define CMDLINE_PROCESS ITERATIONS_PROCESS \ ++ case OPT_RANDOM: \ ++ { \ ++ int fdr = open ("/dev/urandom", O_RDONLY); \ ++ \ ++ if (fdr < 0 || read (fdr, &seed, sizeof(seed)) != sizeof (seed)) \ ++ seed = time (NULL); \ ++ if (fdr >= 0) \ ++ close (fdr); \ ++ do_srandom = 1; \ ++ break; \ ++ } \ ++ \ ++ case OPT_SEED: \ ++ seed = strtoul (optarg, NULL, 0); \ ++ do_srandom = 1; \ ++ break; ++ ++# define CALL(impl, ...) \ ++ (* (proto_t) (impl)->fn) (__VA_ARGS__) ++ ++# ifdef TEST_NAME ++/* Increase size of FUNC_LIST if assert is triggered at run-time. */ ++static struct libc_ifunc_impl func_list[32]; ++static int func_count; ++static int impl_count = -1; ++static impl_t *impl_array; ++ ++# define FOR_EACH_IMPL(impl, notall) \ ++ impl_t *impl; \ ++ int count; \ ++ if (impl_count == -1) \ ++ { \ ++ impl_count = 0; \ ++ if (func_count != 0) \ ++ { \ ++ int f; \ ++ impl_t *skip = NULL, *a; \ ++ for (impl = __start_impls; impl < __stop_impls; ++impl) \ ++ if (strcmp (impl->name, TEST_NAME) == 0) \ ++ skip = impl; \ ++ else \ ++ impl_count++; \ ++ a = impl_array = malloc ((impl_count + func_count) * \ ++ sizeof (impl_t)); \ ++ for (impl = __start_impls; impl < __stop_impls; ++impl) \ ++ if (impl != skip) \ ++ *a++ = *impl; \ ++ for (f = 0; f < func_count; f++) \ ++ if (func_list[f].usable) \ ++ { \ ++ a->name = func_list[f].name; \ ++ a->fn = func_list[f].fn; \ ++ a->test = 1; \ ++ a++; \ ++ } \ ++ impl_count = a - impl_array; \ ++ } \ ++ else \ ++ { \ ++ impl_count = __stop_impls - __start_impls; \ ++ impl_array = __start_impls; \ ++ } \ ++ } \ ++ impl = impl_array; \ ++ for (count = 0; count < impl_count; ++count, ++impl) \ ++ if (!notall || impl->test) ++# else /* !TEST_NAME */ ++# define FOR_EACH_IMPL(impl, notall) \ ++ for (impl_t *impl = __start_impls; impl < __stop_impls; ++impl) \ ++ if (!notall || impl->test) ++# endif /* !TEST_NAME */ ++ ++# ifndef BUF1PAGES ++# define BUF1PAGES 1 ++# endif ++ ++static void ++test_init (void) ++{ ++# ifdef TEST_NAME ++ func_count = __libc_ifunc_impl_list (TEST_NAME, func_list, ++ (sizeof func_list ++ / sizeof func_list[0])); ++# endif ++ ++ page_size = 2 * getpagesize (); ++# ifdef MIN_PAGE_SIZE ++ if (page_size < MIN_PAGE_SIZE) ++ page_size = MIN_PAGE_SIZE; ++# endif ++ buf1 = mmap (0, (BUF1PAGES + 1) * page_size, PROT_READ | PROT_WRITE, ++ MAP_PRIVATE | MAP_ANON, -1, 0); ++ if (buf1 == MAP_FAILED) ++ error (EXIT_FAILURE, errno, "mmap failed"); ++ if (mprotect (buf1 + BUF1PAGES * page_size, page_size, PROT_NONE)) ++ error (EXIT_FAILURE, errno, "mprotect failed"); ++ buf2 = mmap (0, 2 * page_size, PROT_READ | PROT_WRITE, ++ MAP_PRIVATE | MAP_ANON, -1, 0); ++ if (buf2 == MAP_FAILED) ++ error (EXIT_FAILURE, errno, "mmap failed"); ++ if (mprotect (buf2 + page_size, page_size, PROT_NONE)) ++ error (EXIT_FAILURE, errno, "mprotect failed"); ++ if (do_srandom) ++ { ++ printf ("Setting seed to 0x%x\n", seed); ++ srandom (seed); ++ } ++ ++ memset (buf1, 0xa5, BUF1PAGES * page_size); ++ memset (buf2, 0x5a, page_size); ++} ++ ++#endif /* TEST_MAIN */ +diff -urN glibc-2.17-c758a686/benchtests/bench-strlen.c glibc-2.17-c758a686/benchtests/bench-strlen.c +--- glibc-2.17-c758a686/benchtests/bench-strlen.c 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.17-c758a686/benchtests/bench-strlen.c 2015-06-20 21:22:16.299458044 -0400 +@@ -0,0 +1,142 @@ ++/* Measure STRLEN functions. ++ Copyright (C) 2013 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 ++ . */ ++ ++#define TEST_MAIN ++#ifndef WIDE ++# define TEST_NAME "strlen" ++#else ++# define TEST_NAME "wcslen" ++#endif ++#include "bench-string.h" ++ ++#ifndef WIDE ++# define STRLEN strlen ++# define CHAR char ++# define MAX_CHAR CHAR_MAX ++#else ++# include ++# define STRLEN wcslen ++# define CHAR wchar_t ++# define MAX_CHAR WCHAR_MAX ++#endif ++ ++typedef size_t (*proto_t) (const CHAR *); ++ ++size_t ++simple_STRLEN (const CHAR *s) ++{ ++ const CHAR *p; ++ ++ for (p = s; *p; ++p); ++ return p - s; ++} ++ ++#ifndef WIDE ++size_t ++builtin_strlen (const CHAR *p) ++{ ++ return __builtin_strlen (p); ++} ++IMPL (builtin_strlen, 0) ++#endif ++ ++IMPL (simple_STRLEN, 0) ++IMPL (STRLEN, 1) ++ ++ ++static void ++do_one_test (impl_t *impl, const CHAR *s, size_t exp_len) ++{ ++ size_t len = CALL (impl, s), i, iters = INNER_LOOP_ITERS; ++ timing_t start, stop, cur; ++ ++ if (len != exp_len) ++ { ++ error (0, 0, "Wrong result in function %s %zd %zd", impl->name, ++ len, exp_len); ++ ret = 1; ++ return; ++ } ++ ++ TIMING_NOW (start); ++ for (i = 0; i < iters; ++i) ++ { ++ CALL (impl, s); ++ } ++ TIMING_NOW (stop); ++ ++ TIMING_DIFF (cur, start, stop); ++ ++ TIMING_PRINT_MEAN ((double) cur, (double) iters); ++} ++ ++static void ++do_test (size_t align, size_t len) ++{ ++ size_t i; ++ ++ align &= 63; ++ if (align + sizeof(CHAR) * len >= page_size) ++ return; ++ ++ CHAR *buf = (CHAR *) (buf1); ++ ++ for (i = 0; i < len; ++i) ++ buf[align + i] = 1 + 11111 * i % MAX_CHAR; ++ buf[align + len] = 0; ++ ++ printf ("Length %4zd, alignment %2zd:", len, align); ++ ++ FOR_EACH_IMPL (impl, 0) ++ do_one_test (impl, (CHAR *) (buf + align), len); ++ ++ putchar ('\n'); ++} ++ ++int ++test_main (void) ++{ ++ size_t i; ++ ++ test_init (); ++ ++ printf ("%20s", ""); ++ FOR_EACH_IMPL (impl, 0) ++ printf ("\t%s", impl->name); ++ putchar ('\n'); ++ ++ /* Checking with only 4 * N alignments for wcslen, other alignments are wrong for wchar_t type arrays*/ ++ ++ for (i = 1; i < 8; ++i) ++ { ++ do_test (sizeof(CHAR) * i, i); ++ do_test (0, i); ++ } ++ ++ for (i = 2; i <= 12; ++i) ++ { ++ do_test (0, 1 << i); ++ do_test (sizeof(CHAR) * 7, 1 << i); ++ do_test (sizeof(CHAR) * i, 1 << i); ++ do_test (sizeof(CHAR) * i, (size_t)((1 << i) / 1.5)); ++ } ++ ++ return ret; ++} ++ ++#include "../test-skeleton.c" +diff -urN glibc-2.17-c758a686/benchtests/bench-strncasecmp.c glibc-2.17-c758a686/benchtests/bench-strncasecmp.c +--- glibc-2.17-c758a686/benchtests/bench-strncasecmp.c 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.17-c758a686/benchtests/bench-strncasecmp.c 2015-06-20 21:22:16.299458044 -0400 +@@ -0,0 +1,207 @@ ++/* Measure strncasecmp functions. ++ Copyright (C) 2013 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 ++ . */ ++ ++#include ++#define TEST_MAIN ++#define TEST_NAME "strncasecmp" ++#include "bench-string.h" ++ ++typedef int (*proto_t) (const char *, const char *, size_t); ++static int simple_strncasecmp (const char *, const char *, size_t); ++static int stupid_strncasecmp (const char *, const char *, size_t); ++ ++IMPL (stupid_strncasecmp, 0) ++IMPL (simple_strncasecmp, 0) ++IMPL (strncasecmp, 1) ++ ++static int ++simple_strncasecmp (const char *s1, const char *s2, size_t n) ++{ ++ int ret; ++ ++ if (n == 0) ++ return 0; ++ ++ while ((ret = ((unsigned char) tolower (*s1) ++ - (unsigned char) tolower (*s2))) == 0 ++ && *s1++) ++ { ++ if (--n == 0) ++ return 0; ++ ++s2; ++ } ++ return ret; ++} ++ ++static int ++stupid_strncasecmp (const char *s1, const char *s2, size_t max) ++{ ++ size_t ns1 = strlen (s1) + 1; ++ size_t ns2 = strlen (s2) + 1; ++ size_t n = ns1 < ns2 ? ns1 : ns2; ++ if (n > max) ++ n = max; ++ int ret = 0; ++ ++ while (n--) ++ { ++ if ((ret = ((unsigned char) tolower (*s1) ++ - (unsigned char) tolower (*s2))) != 0) ++ break; ++ ++s1; ++ ++s2; ++ } ++ return ret; ++} ++ ++static void ++do_one_test (impl_t *impl, const char *s1, const char *s2, size_t n, ++ int exp_result) ++{ ++ size_t i, iters = INNER_LOOP_ITERS; ++ timing_t start, stop, cur; ++ ++ TIMING_NOW (start); ++ for (i = 0; i < iters; ++i) ++ { ++ CALL (impl, s1, s2, n); ++ } ++ TIMING_NOW (stop); ++ ++ TIMING_DIFF (cur, start, stop); ++ ++ TIMING_PRINT_MEAN ((double) cur, (double) iters); ++} ++ ++static void ++do_test (size_t align1, size_t align2, size_t n, size_t len, int max_char, ++ int exp_result) ++{ ++ size_t i; ++ char *s1, *s2; ++ ++ if (len == 0) ++ return; ++ ++ align1 &= 7; ++ if (align1 + len + 1 >= page_size) ++ return; ++ ++ align2 &= 7; ++ if (align2 + len + 1 >= page_size) ++ return; ++ ++ s1 = (char *) (buf1 + align1); ++ s2 = (char *) (buf2 + align2); ++ ++ for (i = 0; i < len; i++) ++ { ++ s1[i] = toupper (1 + 23 * i % max_char); ++ s2[i] = tolower (s1[i]); ++ } ++ ++ s1[len] = s2[len] = 0; ++ s1[len + 1] = 23; ++ s2[len + 1] = 24 + exp_result; ++ if ((s2[len - 1] == 'z' && exp_result == -1) ++ || (s2[len - 1] == 'a' && exp_result == 1)) ++ s1[len - 1] += exp_result; ++ else ++ s2[len - 1] -= exp_result; ++ ++ printf ("Length %4zd, alignment %2zd/%2zd:", len, align1, align2); ++ ++ FOR_EACH_IMPL (impl, 0) ++ do_one_test (impl, s1, s2, n, exp_result); ++ ++ putchar ('\n'); ++} ++ ++int ++test_main (void) ++{ ++ size_t i; ++ ++ test_init (); ++ ++ printf ("%23s", ""); ++ FOR_EACH_IMPL (impl, 0) ++ printf ("\t%s", impl->name); ++ putchar ('\n'); ++ ++ for (i = 1; i < 16; ++i) ++ { ++ do_test (i, i, i - 1, i, 127, 0); ++ ++ do_test (i, i, i, i, 127, 0); ++ do_test (i, i, i, i, 127, 1); ++ do_test (i, i, i, i, 127, -1); ++ ++ do_test (i, i, i + 1, i, 127, 0); ++ do_test (i, i, i + 1, i, 127, 1); ++ do_test (i, i, i + 1, i, 127, -1); ++ } ++ ++ for (i = 1; i < 10; ++i) ++ { ++ do_test (0, 0, (2 << i) - 1, 2 << i, 127, 0); ++ do_test (0, 0, 2 << i, 2 << i, 254, 0); ++ do_test (0, 0, (2 << i) + 1, 2 << i, 127, 0); ++ ++ do_test (0, 0, (2 << i) + 1, 2 << i, 254, 0); ++ ++ do_test (0, 0, 2 << i, 2 << i, 127, 1); ++ do_test (0, 0, (2 << i) + 10, 2 << i, 127, 1); ++ ++ do_test (0, 0, 2 << i, 2 << i, 254, 1); ++ do_test (0, 0, (2 << i) + 10, 2 << i, 254, 1); ++ ++ do_test (0, 0, 2 << i, 2 << i, 127, -1); ++ do_test (0, 0, (2 << i) + 10, 2 << i, 127, -1); ++ ++ do_test (0, 0, 2 << i, 2 << i, 254, -1); ++ do_test (0, 0, (2 << i) + 10, 2 << i, 254, -1); ++ } ++ ++ for (i = 1; i < 8; ++i) ++ { ++ do_test (i, 2 * i, (8 << i) - 1, 8 << i, 127, 0); ++ do_test (i, 2 * i, 8 << i, 8 << i, 127, 0); ++ do_test (i, 2 * i, (8 << i) + 100, 8 << i, 127, 0); ++ ++ do_test (2 * i, i, (8 << i) - 1, 8 << i, 254, 0); ++ do_test (2 * i, i, 8 << i, 8 << i, 254, 0); ++ do_test (2 * i, i, (8 << i) + 100, 8 << i, 254, 0); ++ ++ do_test (i, 2 * i, 8 << i, 8 << i, 127, 1); ++ do_test (i, 2 * i, (8 << i) + 100, 8 << i, 127, 1); ++ ++ do_test (2 * i, i, 8 << i, 8 << i, 254, 1); ++ do_test (2 * i, i, (8 << i) + 100, 8 << i, 254, 1); ++ ++ do_test (i, 2 * i, 8 << i, 8 << i, 127, -1); ++ do_test (i, 2 * i, (8 << i) + 100, 8 << i, 127, -1); ++ ++ do_test (2 * i, i, 8 << i, 8 << i, 254, -1); ++ do_test (2 * i, i, (8 << i) + 100, 8 << i, 254, -1); ++ } ++ ++ return ret; ++} ++ ++#include "../test-skeleton.c" +diff -urN glibc-2.17-c758a686/benchtests/bench-strncat.c glibc-2.17-c758a686/benchtests/bench-strncat.c +--- glibc-2.17-c758a686/benchtests/bench-strncat.c 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.17-c758a686/benchtests/bench-strncat.c 2015-06-20 21:22:16.299458044 -0400 +@@ -0,0 +1,162 @@ ++/* Measure strncat functions. ++ Copyright (C) 2013 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 ++ . */ ++ ++#define TEST_MAIN ++#define TEST_NAME "strncat" ++#include "bench-string.h" ++ ++typedef char *(*proto_t) (char *, const char *, size_t); ++char *stupid_strncat (char *, const char *, size_t); ++char *simple_strncat (char *, const char *, size_t); ++ ++IMPL (stupid_strncat, 0) ++IMPL (strncat, 2) ++ ++char * ++stupid_strncat (char *dst, const char *src, size_t n) ++{ ++ char *ret = dst; ++ while (*dst++ != '\0'); ++ --dst; ++ while (n--) ++ if ( (*dst++ = *src++) == '\0') ++ return ret; ++ *dst = '\0'; ++ return ret; ++} ++ ++static void ++do_one_test (impl_t *impl, char *dst, const char *src, size_t n) ++{ ++ size_t k = strlen (dst), i, iters = INNER_LOOP_ITERS; ++ timing_t start, stop, cur; ++ ++ if (CALL (impl, dst, src, n) != dst) ++ { ++ error (0, 0, "Wrong result in function %s %p != %p", impl->name, ++ CALL (impl, dst, src, n), dst); ++ ret = 1; ++ return; ++ } ++ ++ size_t len = strlen (src); ++ if (memcmp (dst + k, src, len + 1 > n ? n : len + 1) != 0) ++ { ++ error (0, 0, "Incorrect cancatination in function %s", ++ impl->name); ++ ret = 1; ++ return; ++ } ++ if (n < len && dst[k + n] != '\0') ++ { ++ error (0, 0, "There is no zero in the end of output string in %s", ++ impl->name); ++ ret = 1; ++ return; ++ } ++ ++ TIMING_NOW (start); ++ for (i = 0; i < iters; ++i) ++ { ++ dst[k] = '\0'; ++ CALL (impl, dst, src, n); ++ } ++ TIMING_NOW (stop); ++ ++ TIMING_DIFF (cur, start, stop); ++ ++ TIMING_PRINT_MEAN ((double) cur, (double) iters); ++} ++ ++static void ++do_test (size_t align1, size_t align2, size_t len1, size_t len2, ++ size_t n, int max_char) ++{ ++ size_t i; ++ char *s1, *s2; ++ ++ align1 &= 7; ++ if (align1 + len1 >= page_size) ++ return; ++ if (align1 + n > page_size) ++ return; ++ align2 &= 7; ++ if (align2 + len1 + len2 >= page_size) ++ return; ++ if (align2 + len1 + n > page_size) ++ return; ++ s1 = (char *) (buf1 + align1); ++ s2 = (char *) (buf2 + align2); ++ ++ for (i = 0; i < len1; ++i) ++ s1[i] = 32 + 23 * i % (max_char - 32); ++ s1[len1] = '\0'; ++ ++ for (i = 0; i < len2; i++) ++ s2[i] = 32 + 23 * i % (max_char - 32); ++ ++ printf ("Length %4zd/%4zd, alignment %2zd/%2zd, N %4zd:", ++ len1, len2, align1, align2, n); ++ ++ FOR_EACH_IMPL (impl, 0) ++ { ++ s2[len2] = '\0'; ++ do_one_test (impl, s2, s1, n); ++ } ++ ++ putchar ('\n'); ++} ++ ++int ++main (void) ++{ ++ size_t i, n; ++ ++ test_init (); ++ ++ printf ("%28s", ""); ++ FOR_EACH_IMPL (impl, 0) ++ printf ("\t%s", impl->name); ++ putchar ('\n'); ++ ++ for (n = 2; n <= 2048; n*=4) ++ { ++ do_test (0, 2, 2, 2, n, 127); ++ do_test (0, 0, 4, 4, n, 127); ++ do_test (4, 0, 4, 4, n, 255); ++ do_test (0, 0, 8, 8, n, 127); ++ do_test (0, 8, 8, 8, n, 127); ++ ++ for (i = 1; i < 8; ++i) ++ { ++ do_test (0, 0, 8 << i, 8 << i, n, 127); ++ do_test (8 - i, 2 * i, 8 << i, 8 << i, n, 127); ++ do_test (0, 0, 8 << i, 2 << i, n, 127); ++ do_test (8 - i, 2 * i, 8 << i, 2 << i, n, 127); ++ } ++ ++ for (i = 1; i < 8; ++i) ++ { ++ do_test (i, 2 * i, 8 << i, 1, n, 127); ++ do_test (2 * i, i, 8 << i, 1, n, 255); ++ do_test (i, i, 8 << i, 10, n, 127); ++ } ++ } ++ ++ return ret; ++} +diff -urN glibc-2.17-c758a686/benchtests/bench-strncmp.c glibc-2.17-c758a686/benchtests/bench-strncmp.c +--- glibc-2.17-c758a686/benchtests/bench-strncmp.c 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.17-c758a686/benchtests/bench-strncmp.c 2015-06-20 21:22:16.299458044 -0400 +@@ -0,0 +1,239 @@ ++/* Measure strncmp functions. ++ Copyright (C) 2013 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 ++ . */ ++ ++#define TEST_MAIN ++#define TEST_NAME "strncmp" ++#include "bench-string.h" ++ ++typedef int (*proto_t) (const char *, const char *, size_t); ++int simple_strncmp (const char *, const char *, size_t); ++int stupid_strncmp (const char *, const char *, size_t); ++ ++IMPL (stupid_strncmp, 0) ++IMPL (simple_strncmp, 0) ++IMPL (strncmp, 1) ++ ++int ++simple_strncmp (const char *s1, const char *s2, size_t n) ++{ ++ int ret = 0; ++ ++ while (n-- && (ret = *(unsigned char *) s1 - * (unsigned char *) s2++) == 0 ++ && *s1++); ++ return ret; ++} ++ ++int ++stupid_strncmp (const char *s1, const char *s2, size_t n) ++{ ++ size_t ns1 = strnlen (s1, n) + 1, ns2 = strnlen (s2, n) + 1; ++ int ret = 0; ++ ++ n = ns1 < n ? ns1 : n; ++ n = ns2 < n ? ns2 : n; ++ while (n-- && (ret = *(unsigned char *) s1++ - * (unsigned char *) s2++) == 0); ++ return ret; ++} ++ ++static void ++do_one_test (impl_t *impl, const char *s1, const char *s2, size_t n, ++ int exp_result) ++{ ++ size_t i, iters = INNER_LOOP_ITERS; ++ timing_t start, stop, cur; ++ ++ TIMING_NOW (start); ++ for (i = 0; i < iters; ++i) ++ { ++ CALL (impl, s1, s2, n); ++ } ++ TIMING_NOW (stop); ++ ++ TIMING_DIFF (cur, start, stop); ++ ++ TIMING_PRINT_MEAN ((double) cur, (double) iters); ++} ++ ++static void ++do_test_limit (size_t align1, size_t align2, size_t len, size_t n, int max_char, ++ int exp_result) ++{ ++ size_t i, align_n; ++ char *s1, *s2; ++ ++ if (n == 0) ++ { ++ s1 = (char*)(buf1 + page_size); ++ s2 = (char*)(buf2 + page_size); ++ printf ("Length %4zd/%4zd:", len, n); ++ ++ FOR_EACH_IMPL (impl, 0) ++ do_one_test (impl, s1, s2, n, 0); ++ ++ putchar ('\n'); ++ ++ return; ++ } ++ ++ align1 &= 15; ++ align2 &= 15; ++ align_n = (page_size - n) & 15; ++ ++ s1 = (char*)(buf1 + page_size - n); ++ s2 = (char*)(buf2 + page_size - n); ++ ++ if (align1 < align_n) ++ s1 -= (align_n - align1); ++ ++ if (align2 < align_n) ++ s2 -= (align_n - align2); ++ ++ for (i = 0; i < n; i++) ++ s1[i] = s2[i] = 1 + 23 * i % max_char; ++ ++ if (len < n) ++ { ++ s1[len] = 0; ++ s2[len] = 0; ++ if (exp_result < 0) ++ s2[len] = 32; ++ else if (exp_result > 0) ++ s1[len] = 64; ++ } ++ ++ printf ("Length %4zd/%4zd, alignment %2zd/%2zd:", len, n, align1, align2); ++ ++ FOR_EACH_IMPL (impl, 0) ++ do_one_test (impl, s1, s2, n, exp_result); ++ ++ putchar ('\n'); ++} ++ ++static void ++do_test (size_t align1, size_t align2, size_t len, size_t n, int max_char, ++ int exp_result) ++{ ++ size_t i; ++ char *s1, *s2; ++ ++ if (n == 0) ++ return; ++ ++ align1 &= 7; ++ if (align1 + n + 1 >= page_size) ++ return; ++ ++ align2 &= 7; ++ if (align2 + n + 1 >= page_size) ++ return; ++ ++ s1 = (char*)(buf1 + align1); ++ s2 = (char*)(buf2 + align2); ++ ++ for (i = 0; i < n; i++) ++ s1[i] = s2[i] = 1 + 23 * i % max_char; ++ ++ s1[n] = 24 + exp_result; ++ s2[n] = 23; ++ s1[len] = 0; ++ s2[len] = 0; ++ if (exp_result < 0) ++ s2[len] = 32; ++ else if (exp_result > 0) ++ s1[len] = 64; ++ if (len >= n) ++ s2[n - 1] -= exp_result; ++ ++ printf ("Length %4zd/%4zd, alignment %2zd/%2zd:", len, n, align1, align2); ++ ++ FOR_EACH_IMPL (impl, 0) ++ do_one_test (impl, (char*)s1, (char*)s2, n, exp_result); ++ ++ putchar ('\n'); ++} ++ ++int ++test_main (void) ++{ ++ size_t i; ++ ++ test_init (); ++ ++ printf ("%23s", ""); ++ FOR_EACH_IMPL (impl, 0) ++ printf ("\t%s", impl->name); ++ putchar ('\n'); ++ ++ for (i =0; i < 16; ++i) ++ { ++ do_test (0, 0, 8, i, 127, 0); ++ do_test (0, 0, 8, i, 127, -1); ++ do_test (0, 0, 8, i, 127, 1); ++ do_test (i, i, 8, i, 127, 0); ++ do_test (i, i, 8, i, 127, 1); ++ do_test (i, i, 8, i, 127, -1); ++ do_test (i, 2 * i, 8, i, 127, 0); ++ do_test (2 * i, i, 8, i, 127, 1); ++ do_test (i, 3 * i, 8, i, 127, -1); ++ do_test (0, 0, 8, i, 255, 0); ++ do_test (0, 0, 8, i, 255, -1); ++ do_test (0, 0, 8, i, 255, 1); ++ do_test (i, i, 8, i, 255, 0); ++ do_test (i, i, 8, i, 255, 1); ++ do_test (i, i, 8, i, 255, -1); ++ do_test (i, 2 * i, 8, i, 255, 0); ++ do_test (2 * i, i, 8, i, 255, 1); ++ do_test (i, 3 * i, 8, i, 255, -1); ++ } ++ ++ for (i = 1; i < 8; ++i) ++ { ++ do_test (0, 0, 8 << i, 16 << i, 127, 0); ++ do_test (0, 0, 8 << i, 16 << i, 127, 1); ++ do_test (0, 0, 8 << i, 16 << i, 127, -1); ++ do_test (0, 0, 8 << i, 16 << i, 255, 0); ++ do_test (0, 0, 8 << i, 16 << i, 255, 1); ++ do_test (0, 0, 8 << i, 16 << i, 255, -1); ++ do_test (8 - i, 2 * i, 8 << i, 16 << i, 127, 0); ++ do_test (8 - i, 2 * i, 8 << i, 16 << i, 127, 1); ++ do_test (2 * i, i, 8 << i, 16 << i, 255, 0); ++ do_test (2 * i, i, 8 << i, 16 << i, 255, 1); ++ } ++ ++ do_test_limit (0, 0, 0, 0, 127, 0); ++ do_test_limit (4, 0, 21, 20, 127, 0); ++ do_test_limit (0, 4, 21, 20, 127, 0); ++ do_test_limit (8, 0, 25, 24, 127, 0); ++ do_test_limit (0, 8, 25, 24, 127, 0); ++ ++ for (i = 0; i < 8; ++i) ++ { ++ do_test_limit (0, 0, 17 - i, 16 - i, 127, 0); ++ do_test_limit (0, 0, 17 - i, 16 - i, 255, 0); ++ do_test_limit (0, 0, 15 - i, 16 - i, 127, 0); ++ do_test_limit (0, 0, 15 - i, 16 - i, 127, 1); ++ do_test_limit (0, 0, 15 - i, 16 - i, 127, -1); ++ do_test_limit (0, 0, 15 - i, 16 - i, 255, 0); ++ do_test_limit (0, 0, 15 - i, 16 - i, 255, 1); ++ do_test_limit (0, 0, 15 - i, 16 - i, 255, -1); ++ } ++ ++ return ret; ++} ++ ++#include "../test-skeleton.c" +diff -urN glibc-2.17-c758a686/benchtests/bench-strncpy.c glibc-2.17-c758a686/benchtests/bench-strncpy.c +--- glibc-2.17-c758a686/benchtests/bench-strncpy.c 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.17-c758a686/benchtests/bench-strncpy.c 2015-06-20 21:22:16.299458044 -0400 +@@ -0,0 +1,174 @@ ++/* Measure strncpy functions. ++ Copyright (C) 2013 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 ++ . */ ++ ++#ifndef STRNCPY_RESULT ++# define STRNCPY_RESULT(dst, len, n) dst ++# define TEST_MAIN ++# define TEST_NAME "strncpy" ++# include "bench-string.h" ++ ++char *simple_strncpy (char *, const char *, size_t); ++char *stupid_strncpy (char *, const char *, size_t); ++ ++IMPL (stupid_strncpy, 0) ++IMPL (simple_strncpy, 0) ++IMPL (strncpy, 1) ++ ++char * ++simple_strncpy (char *dst, const char *src, size_t n) ++{ ++ char *ret = dst; ++ while (n--) ++ if ((*dst++ = *src++) == '\0') ++ { ++ while (n--) ++ *dst++ = '\0'; ++ return ret; ++ } ++ return ret; ++} ++ ++char * ++stupid_strncpy (char *dst, const char *src, size_t n) ++{ ++ size_t nc = strnlen (src, n); ++ size_t i; ++ ++ for (i = 0; i < nc; ++i) ++ dst[i] = src[i]; ++ for (; i < n; ++i) ++ dst[i] = '\0'; ++ return dst; ++} ++#endif ++ ++typedef char *(*proto_t) (char *, const char *, size_t); ++ ++static void ++do_one_test (impl_t *impl, char *dst, const char *src, size_t len, size_t n) ++{ ++ size_t i, iters = INNER_LOOP_ITERS; ++ timing_t start, stop, cur; ++ ++ if (CALL (impl, dst, src, n) != STRNCPY_RESULT (dst, len, n)) ++ { ++ error (0, 0, "Wrong result in function %s %p %p", impl->name, ++ CALL (impl, dst, src, n), dst); ++ ret = 1; ++ return; ++ } ++ ++ if (memcmp (dst, src, len > n ? n : len) != 0) ++ { ++ error (0, 0, "Wrong result in function %s", impl->name); ++ ret = 1; ++ return; ++ } ++ ++ if (n > len) ++ { ++ size_t i; ++ ++ for (i = len; i < n; ++i) ++ if (dst [i] != '\0') ++ { ++ error (0, 0, "Wrong result in function %s", impl->name); ++ ret = 1; ++ return; ++ } ++ } ++ ++ TIMING_NOW (start); ++ for (i = 0; i < iters; ++i) ++ { ++ CALL (impl, dst, src, n); ++ } ++ TIMING_NOW (stop); ++ ++ TIMING_DIFF (cur, start, stop); ++ ++ TIMING_PRINT_MEAN ((double) cur, (double) iters); ++} ++ ++static void ++do_test (size_t align1, size_t align2, size_t len, size_t n, int max_char) ++{ ++ size_t i; ++ char *s1, *s2; ++ ++ align1 &= 7; ++ if (align1 + len >= page_size) ++ return; ++ ++ align2 &= 7; ++ if (align2 + len >= page_size) ++ return; ++ ++ s1 = (char *) (buf1 + align1); ++ s2 = (char *) (buf2 + align2); ++ ++ for (i = 0; i < len; ++i) ++ s1[i] = 32 + 23 * i % (max_char - 32); ++ s1[len] = 0; ++ for (i = len + 1; i + align1 < page_size && i < len + 64; ++i) ++ s1[i] = 32 + 32 * i % (max_char - 32); ++ ++ printf ("Length %4zd, n %4zd, alignment %2zd/%2zd:", len, n, align1, align2); ++ ++ FOR_EACH_IMPL (impl, 0) ++ do_one_test (impl, s2, s1, len, n); ++ ++ putchar ('\n'); ++} ++ ++int ++test_main (void) ++{ ++ size_t i; ++ ++ test_init (); ++ ++ printf ("%28s", ""); ++ FOR_EACH_IMPL (impl, 0) ++ printf ("\t%s", impl->name); ++ putchar ('\n'); ++ ++ for (i = 1; i < 8; ++i) ++ { ++ do_test (i, i, 16, 16, 127); ++ do_test (i, i, 16, 16, 255); ++ do_test (i, 2 * i, 16, 16, 127); ++ do_test (2 * i, i, 16, 16, 255); ++ do_test (8 - i, 2 * i, 1 << i, 2 << i, 127); ++ do_test (2 * i, 8 - i, 2 << i, 1 << i, 127); ++ do_test (8 - i, 2 * i, 1 << i, 2 << i, 255); ++ do_test (2 * i, 8 - i, 2 << i, 1 << i, 255); ++ } ++ ++ for (i = 1; i < 8; ++i) ++ { ++ do_test (0, 0, 4 << i, 8 << i, 127); ++ do_test (0, 0, 16 << i, 8 << i, 127); ++ do_test (8 - i, 2 * i, 4 << i, 8 << i, 127); ++ do_test (8 - i, 2 * i, 16 << i, 8 << i, 127); ++ } ++ ++ return ret; ++} ++ ++#include "../test-skeleton.c" +diff -urN glibc-2.17-c758a686/benchtests/bench-strnlen.c glibc-2.17-c758a686/benchtests/bench-strnlen.c +--- glibc-2.17-c758a686/benchtests/bench-strnlen.c 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.17-c758a686/benchtests/bench-strnlen.c 2015-06-20 21:22:16.299458044 -0400 +@@ -0,0 +1,132 @@ ++/* Measure strlen functions. ++ Copyright (C) 2013 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 ++ . */ ++ ++#define TEST_MAIN ++#define TEST_NAME "strnlen" ++#include "bench-string.h" ++ ++typedef size_t (*proto_t) (const char *, size_t); ++size_t simple_strnlen (const char *, size_t); ++ ++IMPL (simple_strnlen, 0) ++IMPL (strnlen, 1) ++ ++size_t ++simple_strnlen (const char *s, size_t maxlen) ++{ ++ size_t i; ++ ++ for (i = 0; i < maxlen && s[i]; ++i); ++ return i; ++} ++ ++static void ++do_one_test (impl_t *impl, const char *s, size_t maxlen, size_t exp_len) ++{ ++ size_t len = CALL (impl, s, maxlen), i, iters = INNER_LOOP_ITERS; ++ timing_t start, stop, cur; ++ ++ if (len != exp_len) ++ { ++ error (0, 0, "Wrong result in function %s %zd %zd", impl->name, ++ len, exp_len); ++ ret = 1; ++ return; ++ } ++ ++ TIMING_NOW (start); ++ for (i = 0; i < iters; ++i) ++ { ++ CALL (impl, s, maxlen); ++ } ++ TIMING_NOW (stop); ++ ++ TIMING_DIFF (cur, start, stop); ++ ++ TIMING_PRINT_MEAN ((double) cur, (double) iters); ++} ++ ++static void ++do_test (size_t align, size_t len, size_t maxlen, int max_char) ++{ ++ size_t i; ++ ++ align &= 7; ++ if (align + len >= page_size) ++ return; ++ ++ for (i = 0; i < len; ++i) ++ buf1[align + i] = 1 + 7 * i % max_char; ++ buf1[align + len] = 0; ++ ++ printf ("Length %4zd, alignment %2zd:", len, align); ++ ++ FOR_EACH_IMPL (impl, 0) ++ do_one_test (impl, (char *) (buf1 + align), maxlen, MIN (len, maxlen)); ++ ++ putchar ('\n'); ++} ++ ++int ++test_main (void) ++{ ++ size_t i; ++ ++ test_init (); ++ ++ printf ("%20s", ""); ++ FOR_EACH_IMPL (impl, 0) ++ printf ("\t%s", impl->name); ++ putchar ('\n'); ++ ++ for (i = 1; i < 8; ++i) ++ { ++ do_test (0, i, i - 1, 127); ++ do_test (0, i, i, 127); ++ do_test (0, i, i + 1, 127); ++ } ++ ++ for (i = 1; i < 8; ++i) ++ { ++ do_test (i, i, i - 1, 127); ++ do_test (i, i, i, 127); ++ do_test (i, i, i + 1, 127); ++ } ++ ++ for (i = 2; i <= 10; ++i) ++ { ++ do_test (0, 1 << i, 5000, 127); ++ do_test (1, 1 << i, 5000, 127); ++ } ++ ++ for (i = 1; i < 8; ++i) ++ do_test (0, i, 5000, 255); ++ ++ for (i = 1; i < 8; ++i) ++ do_test (i, i, 5000, 255); ++ ++ for (i = 2; i <= 10; ++i) ++ { ++ do_test (0, 1 << i, 5000, 255); ++ do_test (1, 1 << i, 5000, 255); ++ } ++ ++ return ret; ++} ++ ++#include "../test-skeleton.c" +diff -urN glibc-2.17-c758a686/benchtests/bench-strpbrk.c glibc-2.17-c758a686/benchtests/bench-strpbrk.c +--- glibc-2.17-c758a686/benchtests/bench-strpbrk.c 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.17-c758a686/benchtests/bench-strpbrk.c 2015-06-20 21:22:16.299458044 -0400 +@@ -0,0 +1,176 @@ ++/* Measure strpbrk functions. ++ Copyright (C) 2013 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 ++ . */ ++ ++#ifndef STRPBRK_RESULT ++# define STRPBRK_RESULT(s, pos) ((s)[(pos)] ? (s) + (pos) : NULL) ++# define RES_TYPE char * ++# define TEST_MAIN ++# define TEST_NAME "strpbrk" ++# include "bench-string.h" ++ ++typedef char *(*proto_t) (const char *, const char *); ++char *simple_strpbrk (const char *, const char *); ++char *stupid_strpbrk (const char *, const char *); ++ ++IMPL (stupid_strpbrk, 0) ++IMPL (simple_strpbrk, 0) ++IMPL (strpbrk, 1) ++ ++char * ++simple_strpbrk (const char *s, const char *rej) ++{ ++ const char *r; ++ char c; ++ ++ while ((c = *s++) != '\0') ++ for (r = rej; *r != '\0'; ++r) ++ if (*r == c) ++ return (char *) s - 1; ++ return NULL; ++} ++ ++char * ++stupid_strpbrk (const char *s, const char *rej) ++{ ++ size_t ns = strlen (s), nrej = strlen (rej); ++ size_t i, j; ++ ++ for (i = 0; i < ns; ++i) ++ for (j = 0; j < nrej; ++j) ++ if (s[i] == rej[j]) ++ return (char *) s + i; ++ return NULL; ++} ++#endif ++ ++static void ++do_one_test (impl_t *impl, const char *s, const char *rej, RES_TYPE exp_res) ++{ ++ RES_TYPE res = CALL (impl, s, rej); ++ size_t i, iters = INNER_LOOP_ITERS; ++ timing_t start, stop, cur; ++ ++ if (res != exp_res) ++ { ++ error (0, 0, "Wrong result in function %s %p %p", impl->name, ++ (void *) res, (void *) exp_res); ++ ret = 1; ++ return; ++ } ++ ++ TIMING_NOW (start); ++ for (i = 0; i < iters; ++i) ++ { ++ CALL (impl, s, rej); ++ } ++ TIMING_NOW (stop); ++ ++ TIMING_DIFF (cur, start, stop); ++ ++ TIMING_PRINT_MEAN ((double) cur, (double) iters); ++} ++ ++static void ++do_test (size_t align, size_t pos, size_t len) ++{ ++ size_t i; ++ int c; ++ RES_TYPE result; ++ char *rej, *s; ++ ++ align &= 7; ++ if (align + pos + 10 >= page_size || len > 240) ++ return; ++ ++ rej = (char *) (buf2 + (random () & 255)); ++ s = (char *) (buf1 + align); ++ ++ for (i = 0; i < len; ++i) ++ { ++ rej[i] = random () & 255; ++ if (!rej[i]) ++ rej[i] = random () & 255; ++ if (!rej[i]) ++ rej[i] = 1 + (random () & 127); ++ } ++ rej[len] = '\0'; ++ for (c = 1; c <= 255; ++c) ++ if (strchr (rej, c) == NULL) ++ break; ++ ++ for (i = 0; i < pos; ++i) ++ { ++ s[i] = random () & 255; ++ if (strchr (rej, s[i])) ++ { ++ s[i] = random () & 255; ++ if (strchr (rej, s[i])) ++ s[i] = c; ++ } ++ } ++ s[pos] = rej[random () % (len + 1)]; ++ if (s[pos]) ++ { ++ for (i = pos + 1; i < pos + 10; ++i) ++ s[i] = random () & 255; ++ s[i] = '\0'; ++ } ++ result = STRPBRK_RESULT (s, pos); ++ ++ printf ("Length %4zd, alignment %2zd, rej len %2zd:", pos, align, len); ++ ++ FOR_EACH_IMPL (impl, 0) ++ do_one_test (impl, s, rej, result); ++ ++ putchar ('\n'); ++} ++ ++int ++test_main (void) ++{ ++ size_t i; ++ ++ test_init (); ++ ++ printf ("%32s", ""); ++ FOR_EACH_IMPL (impl, 0) ++ printf ("\t%s", impl->name); ++ putchar ('\n'); ++ ++ for (i = 0; i < 32; ++i) ++ { ++ do_test (0, 512, i); ++ do_test (i, 512, i); ++ } ++ ++ for (i = 1; i < 8; ++i) ++ { ++ do_test (0, 16 << i, 4); ++ do_test (i, 16 << i, 4); ++ } ++ ++ for (i = 1; i < 8; ++i) ++ do_test (i, 64, 10); ++ ++ for (i = 0; i < 64; ++i) ++ do_test (0, i, 6); ++ ++ return ret; ++} ++ ++#include "../test-skeleton.c" +diff -urN glibc-2.17-c758a686/benchtests/bench-strrchr.c glibc-2.17-c758a686/benchtests/bench-strrchr.c +--- glibc-2.17-c758a686/benchtests/bench-strrchr.c 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.17-c758a686/benchtests/bench-strrchr.c 2015-06-20 21:22:16.299458044 -0400 +@@ -0,0 +1,184 @@ ++/* Measure STRCHR functions. ++ Copyright (C) 2013 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 ++ . */ ++ ++#define TEST_MAIN ++#ifdef WIDE ++# define TEST_NAME "wcsrchr" ++#else ++# define TEST_NAME "strrchr" ++#endif ++#include "bench-string.h" ++ ++#ifdef WIDE ++# include ++# define SIMPLE_STRRCHR simple_wcsrchr ++# define STRRCHR wcsrchr ++# define CHAR wchar_t ++# define UCHAR wchar_t ++# define BIG_CHAR WCHAR_MAX ++# define SMALL_CHAR 1273 ++#else ++# define SIMPLE_STRRCHR simple_strrchr ++# define STRRCHR strrchr ++# define CHAR char ++# define UCHAR unsigned char ++# define BIG_CHAR CHAR_MAX ++# define SMALL_CHAR 127 ++#endif ++ ++typedef CHAR *(*proto_t) (const CHAR *, int); ++CHAR *SIMPLE_STRRCHR (const CHAR *, int); ++ ++IMPL (SIMPLE_STRRCHR, 0) ++IMPL (STRRCHR, 1) ++ ++CHAR * ++SIMPLE_STRRCHR (const CHAR *s, int c) ++{ ++ const CHAR *ret = NULL; ++ ++ for (; *s != '\0'; ++s) ++ if (*s == (CHAR) c) ++ ret = s; ++ ++ return (CHAR *) (c == '\0' ? s : ret); ++} ++ ++static void ++do_one_test (impl_t *impl, const CHAR *s, int c, CHAR *exp_res) ++{ ++ CHAR *res = CALL (impl, s, c); ++ size_t i, iters = INNER_LOOP_ITERS; ++ timing_t start, stop, cur; ++ ++ if (res != exp_res) ++ { ++ error (0, 0, "Wrong result in function %s %p %p", impl->name, ++ res, exp_res); ++ ret = 1; ++ return; ++ } ++ ++ TIMING_NOW (start); ++ for (i = 0; i < iters; ++i) ++ { ++ CALL (impl, s, c); ++ } ++ TIMING_NOW (stop); ++ ++ TIMING_DIFF (cur, start, stop); ++ ++ TIMING_PRINT_MEAN ((double) cur, (double) iters); ++} ++ ++static void ++do_test (size_t align, size_t pos, size_t len, int seek_char, int max_char) ++/* For wcsrchr: align here means align not in bytes, ++ but in wchar_ts, in bytes it will equal to align * (sizeof (wchar_t)) ++ len for wcschr here isn't in bytes but it's number of wchar_t symbols. */ ++{ ++ size_t i; ++ CHAR *result; ++ CHAR *buf = (CHAR *) buf1; ++ ++ align &= 7; ++ if ((align + len) * sizeof (CHAR) >= page_size) ++ return; ++ ++ for (i = 0; i < len; ++i) ++ { ++ buf[align + i] = (random () * random ()) & max_char; ++ if (!buf[align + i]) ++ buf[align + i] = (random () * random ()) & max_char; ++ if (!buf[align + i]) ++ buf[align + i] = 1; ++ if ((i > pos || pos >= len) && buf[align + i] == seek_char) ++ buf[align + i] = seek_char + 10 + (random () & 15); ++ } ++ buf[align + len] = 0; ++ ++ if (pos < len) ++ { ++ buf[align + pos] = seek_char; ++ result = (CHAR *) (buf + align + pos); ++ } ++ else if (seek_char == 0) ++ result = (CHAR *) (buf + align + len); ++ else ++ result = NULL; ++ ++ printf ("Length %4zd, alignment in bytes %2zd:", len, align * sizeof (CHAR)); ++ ++ FOR_EACH_IMPL (impl, 0) ++ do_one_test (impl, (CHAR *) (buf + align), seek_char, result); ++ ++ putchar ('\n'); ++} ++ ++int ++test_main (void) ++{ ++ size_t i; ++ ++ test_init (); ++ ++ printf ("%20s", ""); ++ FOR_EACH_IMPL (impl, 0) ++ printf ("\t%s", impl->name); ++ putchar ('\n'); ++ ++ for (i = 1; i < 8; ++i) ++ { ++ do_test (0, 16 << i, 2048, 23, SMALL_CHAR); ++ do_test (i, 16 << i, 2048, 23, SMALL_CHAR); ++ } ++ ++ for (i = 1; i < 8; ++i) ++ { ++ do_test (i, 64, 256, 23, SMALL_CHAR); ++ do_test (i, 64, 256, 23, BIG_CHAR); ++ } ++ ++ for (i = 0; i < 32; ++i) ++ { ++ do_test (0, i, i + 1, 23, SMALL_CHAR); ++ do_test (0, i, i + 1, 23, BIG_CHAR); ++ } ++ ++ for (i = 1; i < 8; ++i) ++ { ++ do_test (0, 16 << i, 2048, 0, SMALL_CHAR); ++ do_test (i, 16 << i, 2048, 0, SMALL_CHAR); ++ } ++ ++ for (i = 1; i < 8; ++i) ++ { ++ do_test (i, 64, 256, 0, SMALL_CHAR); ++ do_test (i, 64, 256, 0, BIG_CHAR); ++ } ++ ++ for (i = 0; i < 32; ++i) ++ { ++ do_test (0, i, i + 1, 0, SMALL_CHAR); ++ do_test (0, i, i + 1, 0, BIG_CHAR); ++ } ++ ++ return ret; ++} ++ ++#include "../test-skeleton.c" +diff -urN glibc-2.17-c758a686/benchtests/bench-strsep.c glibc-2.17-c758a686/benchtests/bench-strsep.c +--- glibc-2.17-c758a686/benchtests/bench-strsep.c 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.17-c758a686/benchtests/bench-strsep.c 2015-06-20 21:22:16.299458044 -0400 +@@ -0,0 +1,174 @@ ++/* Measure strsep functions. ++ Copyright (C) 2013 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 ++ . */ ++ ++#define TEST_MAIN ++#define TEST_NAME "strsep" ++#include "bench-string.h" ++ ++char * ++simple_strsep (char **s1, char *s2) ++{ ++ char *begin; ++ char *s; ++ size_t j = 0; ++ ++ begin = *s1; ++ s = begin; ++ if (begin == NULL) ++ return NULL; ++ ssize_t s2len = strlen (s2); ++ while (*s) ++ { ++ for (j = 0; j < s2len; j++) ++ { ++ if (*s == s2[j]) ++ { ++ s[0] = '\0'; ++ *s1 = s + 1; ++ return begin; ++ } ++ } ++ s++; ++ } ++ *s1 = NULL; ++ return begin; ++} ++ ++typedef char *(*proto_t) (const char **, const char *); ++ ++IMPL (simple_strsep, 0) ++IMPL (strsep, 1) ++ ++static void ++do_one_test (impl_t * impl, const char *s1, const char *s2) ++{ ++ size_t i, iters = INNER_LOOP_ITERS; ++ timing_t start, stop, cur; ++ ++ TIMING_NOW (start); ++ for (i = 0; i < iters; ++i) ++ { ++ CALL (impl, &s1, s2); ++ } ++ TIMING_NOW (stop); ++ ++ TIMING_DIFF (cur, start, stop); ++ ++ TIMING_PRINT_MEAN ((double) cur, (double) iters); ++} ++ ++static void ++do_test (size_t align1, size_t align2, size_t len1, size_t len2, int fail) ++{ ++ char *s2 = (char *) (buf2 + align2); ++ static const char d[] = "1234567890abcdef"; ++#define dl (sizeof (d) - 1) ++ char *ss2 = s2; ++ for (size_t l = len2; l > 0; l = l > dl ? l - dl : 0) ++ { ++ size_t t = l > dl ? dl : l; ++ ss2 = mempcpy (ss2, d, t); ++ } ++ s2[len2] = '\0'; ++ ++ printf ("Length %4zd/%zd, alignment %2zd/%2zd, %s:", ++ len1, len2, align1, align2, fail ? "fail" : "found"); ++ ++ FOR_EACH_IMPL (impl, 0) ++ { ++ char *s1 = (char *) (buf1 + align1); ++ if (fail) ++ { ++ char *ss1 = s1; ++ for (size_t l = len1; l > 0; l = l > dl ? l - dl : 0) ++ { ++ size_t t = l > dl ? dl : l; ++ memcpy (ss1, d, t); ++ ++ss1[len2 > 7 ? 7 : len2 - 1]; ++ ss1 += t; ++ } ++ } ++ else ++ { ++ memset (s1, '0', len1); ++ memcpy (s1 + (len1 - len2) - 2, s2, len2); ++ if ((len1 / len2) > 4) ++ memcpy (s1 + (len1 - len2) - (3 * len2), s2, len2); ++ } ++ s1[len1] = '\0'; ++ do_one_test (impl, s1, s2); ++ } ++ putchar ('\n'); ++} ++ ++static int ++test_main (void) ++{ ++ test_init (); ++ ++ printf ("%23s", ""); ++ FOR_EACH_IMPL (impl, 0) ++ printf ("\t%s", impl->name); ++ putchar ('\n'); ++ ++ for (size_t klen = 2; klen < 32; ++klen) ++ for (size_t hlen = 2 * klen; hlen < 16 * klen; hlen += klen) ++ { ++ do_test (0, 0, hlen, klen, 0); ++ do_test (0, 0, hlen, klen, 1); ++ do_test (0, 3, hlen, klen, 0); ++ do_test (0, 3, hlen, klen, 1); ++ do_test (0, 9, hlen, klen, 0); ++ do_test (0, 9, hlen, klen, 1); ++ do_test (0, 15, hlen, klen, 0); ++ do_test (0, 15, hlen, klen, 1); ++ ++ do_test (3, 0, hlen, klen, 0); ++ do_test (3, 0, hlen, klen, 1); ++ do_test (3, 3, hlen, klen, 0); ++ do_test (3, 3, hlen, klen, 1); ++ do_test (3, 9, hlen, klen, 0); ++ do_test (3, 9, hlen, klen, 1); ++ do_test (3, 15, hlen, klen, 0); ++ do_test (3, 15, hlen, klen, 1); ++ ++ do_test (9, 0, hlen, klen, 0); ++ do_test (9, 0, hlen, klen, 1); ++ do_test (9, 3, hlen, klen, 0); ++ do_test (9, 3, hlen, klen, 1); ++ do_test (9, 9, hlen, klen, 0); ++ do_test (9, 9, hlen, klen, 1); ++ do_test (9, 15, hlen, klen, 0); ++ do_test (9, 15, hlen, klen, 1); ++ ++ do_test (15, 0, hlen, klen, 0); ++ do_test (15, 0, hlen, klen, 1); ++ do_test (15, 3, hlen, klen, 0); ++ do_test (15, 3, hlen, klen, 1); ++ do_test (15, 9, hlen, klen, 0); ++ do_test (15, 9, hlen, klen, 1); ++ do_test (15, 15, hlen, klen, 0); ++ do_test (15, 15, hlen, klen, 1); ++ } ++ do_test (0, 0, page_size - 1, 16, 0); ++ do_test (0, 0, page_size - 1, 16, 1); ++ ++ return ret; ++} ++ ++#include "../test-skeleton.c" +diff -urN glibc-2.17-c758a686/benchtests/bench-strspn.c glibc-2.17-c758a686/benchtests/bench-strspn.c +--- glibc-2.17-c758a686/benchtests/bench-strspn.c 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.17-c758a686/benchtests/bench-strspn.c 2015-06-20 21:22:16.299458044 -0400 +@@ -0,0 +1,167 @@ ++/* Measure strspn functions. ++ Copyright (C) 2013 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 ++ . */ ++ ++#define TEST_MAIN ++#define TEST_NAME "strspn" ++#include "bench-string.h" ++ ++typedef size_t (*proto_t) (const char *, const char *); ++size_t simple_strspn (const char *, const char *); ++size_t stupid_strspn (const char *, const char *); ++ ++IMPL (stupid_strspn, 0) ++IMPL (simple_strspn, 0) ++IMPL (strspn, 1) ++ ++size_t ++simple_strspn (const char *s, const char *acc) ++{ ++ const char *r, *str = s; ++ char c; ++ ++ while ((c = *s++) != '\0') ++ { ++ for (r = acc; *r != '\0'; ++r) ++ if (*r == c) ++ break; ++ if (*r == '\0') ++ return s - str - 1; ++ } ++ return s - str - 1; ++} ++ ++size_t ++stupid_strspn (const char *s, const char *acc) ++{ ++ size_t ns = strlen (s), nacc = strlen (acc); ++ size_t i, j; ++ ++ for (i = 0; i < ns; ++i) ++ { ++ for (j = 0; j < nacc; ++j) ++ if (s[i] == acc[j]) ++ break; ++ if (j == nacc) ++ return i; ++ } ++ return i; ++} ++ ++static void ++do_one_test (impl_t *impl, const char *s, const char *acc, size_t exp_res) ++{ ++ size_t res = CALL (impl, s, acc), i, iters = INNER_LOOP_ITERS; ++ timing_t start, stop, cur; ++ ++ if (res != exp_res) ++ { ++ error (0, 0, "Wrong result in function %s %p %p", impl->name, ++ (void *) res, (void *) exp_res); ++ ret = 1; ++ return; ++ } ++ ++ TIMING_NOW (start); ++ for (i = 0; i < iters; ++i) ++ { ++ CALL (impl, s, acc); ++ } ++ TIMING_NOW (stop); ++ ++ TIMING_DIFF (cur, start, stop); ++ ++ TIMING_PRINT_MEAN ((double) cur, (double) iters); ++} ++ ++static void ++do_test (size_t align, size_t pos, size_t len) ++{ ++ size_t i; ++ char *acc, *s; ++ ++ align &= 7; ++ if (align + pos + 10 >= page_size || len > 240 || ! len) ++ return; ++ ++ acc = (char *) (buf2 + (random () & 255)); ++ s = (char *) (buf1 + align); ++ ++ for (i = 0; i < len; ++i) ++ { ++ acc[i] = random () & 255; ++ if (!acc[i]) ++ acc[i] = random () & 255; ++ if (!acc[i]) ++ acc[i] = 1 + (random () & 127); ++ } ++ acc[len] = '\0'; ++ ++ for (i = 0; i < pos; ++i) ++ s[i] = acc[random () % len]; ++ s[pos] = random () & 255; ++ if (strchr (acc, s[pos])) ++ s[pos] = '\0'; ++ else ++ { ++ for (i = pos + 1; i < pos + 10; ++i) ++ s[i] = random () & 255; ++ s[i] = '\0'; ++ } ++ ++ printf ("Length %4zd, alignment %2zd, acc len %2zd:", pos, align, len); ++ ++ FOR_EACH_IMPL (impl, 0) ++ do_one_test (impl, s, acc, pos); ++ ++ putchar ('\n'); ++} ++ ++int ++test_main (void) ++{ ++ size_t i; ++ ++ test_init (); ++ ++ printf ("%32s", ""); ++ FOR_EACH_IMPL (impl, 0) ++ printf ("\t%s", impl->name); ++ putchar ('\n'); ++ ++ for (i = 0; i < 32; ++i) ++ { ++ do_test (0, 512, i); ++ do_test (i, 512, i); ++ } ++ ++ for (i = 1; i < 8; ++i) ++ { ++ do_test (0, 16 << i, 4); ++ do_test (i, 16 << i, 4); ++ } ++ ++ for (i = 1; i < 8; ++i) ++ do_test (i, 64, 10); ++ ++ for (i = 0; i < 64; ++i) ++ do_test (0, i, 6); ++ ++ return ret; ++} ++ ++#include "../test-skeleton.c" +diff -urN glibc-2.17-c758a686/benchtests/bench-strstr.c glibc-2.17-c758a686/benchtests/bench-strstr.c +--- glibc-2.17-c758a686/benchtests/bench-strstr.c 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.17-c758a686/benchtests/bench-strstr.c 2015-06-20 21:22:16.300458014 -0400 +@@ -0,0 +1,177 @@ ++/* Measure strstr functions. ++ Copyright (C) 2013 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 ++ . */ ++ ++#define TEST_MAIN ++#define TEST_NAME "strstr" ++#include "bench-string.h" ++ ++ ++#define STRSTR simple_strstr ++#include "../string/strstr.c" ++ ++ ++static char * ++stupid_strstr (const char *s1, const char *s2) ++{ ++ ssize_t s1len = strlen (s1); ++ ssize_t s2len = strlen (s2); ++ ++ if (s2len > s1len) ++ return NULL; ++ ++ for (ssize_t i = 0; i <= s1len - s2len; ++i) ++ { ++ size_t j; ++ for (j = 0; j < s2len; ++j) ++ if (s1[i + j] != s2[j]) ++ break; ++ if (j == s2len) ++ return (char *) s1 + i; ++ } ++ ++ return NULL; ++} ++ ++ ++typedef char *(*proto_t) (const char *, const char *); ++ ++IMPL (stupid_strstr, 0) ++IMPL (simple_strstr, 0) ++IMPL (strstr, 1) ++ ++ ++static void ++do_one_test (impl_t *impl, const char *s1, const char *s2, char *exp_result) ++{ ++ size_t i, iters = INNER_LOOP_ITERS; ++ timing_t start, stop, cur; ++ ++ TIMING_NOW (start); ++ for (i = 0; i < iters; ++i) ++ { ++ CALL (impl, s1, s2); ++ } ++ TIMING_NOW (stop); ++ ++ TIMING_DIFF (cur, start, stop); ++ ++ TIMING_PRINT_MEAN ((double) cur, (double) iters); ++} ++ ++ ++static void ++do_test (size_t align1, size_t align2, size_t len1, size_t len2, ++ int fail) ++{ ++ char *s1 = (char *) (buf1 + align1); ++ char *s2 = (char *) (buf2 + align2); ++ ++ static const char d[] = "1234567890abcdef"; ++#define dl (sizeof (d) - 1) ++ char *ss2 = s2; ++ for (size_t l = len2; l > 0; l = l > dl ? l - dl : 0) ++ { ++ size_t t = l > dl ? dl : l; ++ ss2 = mempcpy (ss2, d, t); ++ } ++ s2[len2] = '\0'; ++ ++ if (fail) ++ { ++ char *ss1 = s1; ++ for (size_t l = len1; l > 0; l = l > dl ? l - dl : 0) ++ { ++ size_t t = l > dl ? dl : l; ++ memcpy (ss1, d, t); ++ ++ss1[len2 > 7 ? 7 : len2 - 1]; ++ ss1 += t; ++ } ++ } ++ else ++ { ++ memset (s1, '0', len1); ++ memcpy (s1 + len1 - len2, s2, len2); ++ } ++ s1[len1] = '\0'; ++ ++ printf ("Length %4zd/%zd, alignment %2zd/%2zd, %s:", ++ len1, len2, align1, align2, fail ? "fail" : "found"); ++ ++ FOR_EACH_IMPL (impl, 0) ++ do_one_test (impl, s1, s2, fail ? NULL : s1 + len1 - len2); ++ ++ putchar ('\n'); ++} ++ ++static int ++test_main (void) ++{ ++ test_init (); ++ ++ printf ("%23s", ""); ++ FOR_EACH_IMPL (impl, 0) ++ printf ("\t%s", impl->name); ++ putchar ('\n'); ++ ++ for (size_t klen = 2; klen < 32; ++klen) ++ for (size_t hlen = 2 * klen; hlen < 16 * klen; hlen += klen) ++ { ++ do_test (0, 0, hlen, klen, 0); ++ do_test (0, 0, hlen, klen, 1); ++ do_test (0, 3, hlen, klen, 0); ++ do_test (0, 3, hlen, klen, 1); ++ do_test (0, 9, hlen, klen, 0); ++ do_test (0, 9, hlen, klen, 1); ++ do_test (0, 15, hlen, klen, 0); ++ do_test (0, 15, hlen, klen, 1); ++ ++ do_test (3, 0, hlen, klen, 0); ++ do_test (3, 0, hlen, klen, 1); ++ do_test (3, 3, hlen, klen, 0); ++ do_test (3, 3, hlen, klen, 1); ++ do_test (3, 9, hlen, klen, 0); ++ do_test (3, 9, hlen, klen, 1); ++ do_test (3, 15, hlen, klen, 0); ++ do_test (3, 15, hlen, klen, 1); ++ ++ do_test (9, 0, hlen, klen, 0); ++ do_test (9, 0, hlen, klen, 1); ++ do_test (9, 3, hlen, klen, 0); ++ do_test (9, 3, hlen, klen, 1); ++ do_test (9, 9, hlen, klen, 0); ++ do_test (9, 9, hlen, klen, 1); ++ do_test (9, 15, hlen, klen, 0); ++ do_test (9, 15, hlen, klen, 1); ++ ++ do_test (15, 0, hlen, klen, 0); ++ do_test (15, 0, hlen, klen, 1); ++ do_test (15, 3, hlen, klen, 0); ++ do_test (15, 3, hlen, klen, 1); ++ do_test (15, 9, hlen, klen, 0); ++ do_test (15, 9, hlen, klen, 1); ++ do_test (15, 15, hlen, klen, 0); ++ do_test (15, 15, hlen, klen, 1); ++ } ++ ++ do_test (0, 0, page_size - 1, 16, 0); ++ do_test (0, 0, page_size - 1, 16, 1); ++ ++ return ret; ++} ++ ++#include "../test-skeleton.c" +diff -urN glibc-2.17-c758a686/benchtests/bench-strtod.c glibc-2.17-c758a686/benchtests/bench-strtod.c +--- glibc-2.17-c758a686/benchtests/bench-strtod.c 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.17-c758a686/benchtests/bench-strtod.c 2015-06-20 21:22:16.300458014 -0400 +@@ -0,0 +1,120 @@ ++/* Measure strtod implementation. ++ Copyright (C) 2013 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 ++ . */ ++ ++#define TEST_MAIN ++#define TEST_NAME "strtod" ++ ++#include ++#include ++#include "bench-timing.h" ++ ++#undef INNER_LOOP_ITERS ++#define INNER_LOOP_ITERS 65536 ++ ++static const char *inputs[] = ++{ ++ "1e308", ++ "100000000e300", ++ "0x1p1023", ++ "0x1000p1011", ++ "0x1p1020", ++ "0x0.00001p1040" "1e-307", ++ "0.000001e-301", ++ "0.0000001e-300", ++ "0.00000001e-299", ++ "1000000e-313", ++ "10000000e-314", ++ "100000000e-315", ++ "0x1p-1021", ++ "0x1000p-1033", ++ "0x10000p-1037", ++ "0x0.001p-1009", ++ "0x0.0001p-1005", ++ "12.345", ++ "12.345e19", ++ "-.1e+9", ++ ".125", ++ "1e20", ++ "0e-19", ++ "4\00012", ++ "5.9e-76", ++ "0x1.4p+3", ++ "0xAp0", ++ "0x0Ap0", ++ "0x0A", ++ "0xA0", ++ "0x0.A0p8", ++ "0x0.50p9", ++ "0x0.28p10", ++ "0x0.14p11", ++ "0x0.0A0p12", ++ "0x0.050p13", ++ "0x0.028p14", ++ "0x0.014p15", ++ "0x00.00A0p16", ++ "0x00.0050p17", ++ "0x00.0028p18", ++ "0x00.0014p19", ++ "0x1p-1023", ++ "0x0.8p-1022", ++ "Inf", ++ "-Inf", ++ "+InFiNiTy", ++ "0x80000Ap-23", ++ "1e-324", ++ "0x100000000000008p0", ++ "0x100000000000008.p0", ++ "0x100000000000008.00p0", ++ "0x10000000000000800p0", ++ "0x10000000000000801p0", ++ NULL ++}; ++ ++int ++do_bench (void) ++{ ++ const size_t iters = INNER_LOOP_ITERS; ++ timing_t res __attribute__ ((unused)); ++ ++ TIMING_INIT (res); ++ ++ for (size_t i = 0; inputs[i] != NULL; ++i) ++ { ++ char *ep; ++ timing_t start, stop, cur; ++ ++ printf ("Input %-24s:", inputs[i]); ++ TIMING_NOW (start); ++ for (size_t j = 0; j < iters; ++j) ++ strtod (inputs[i], &ep); ++ TIMING_NOW (stop); ++ ++ TIMING_DIFF (cur, start, stop); ++ TIMING_PRINT_MEAN ((double) cur, (double) iters); ++ putchar ('\n'); ++ } ++ ++ return 0; ++} ++ ++#define TEST_FUNCTION do_bench () ++ ++/* On slower platforms this test needs more than the default 2 seconds. */ ++#define TIMEOUT 10 ++ ++#include "../test-skeleton.c" +diff -urN glibc-2.17-c758a686/benchtests/bench-strtok.c glibc-2.17-c758a686/benchtests/bench-strtok.c +--- glibc-2.17-c758a686/benchtests/bench-strtok.c 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.17-c758a686/benchtests/bench-strtok.c 2015-06-20 21:22:16.300458014 -0400 +@@ -0,0 +1,152 @@ ++/* Measure strtok functions. ++ Copyright (C) 2013 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 ++ . */ ++ ++#define TEST_MAIN ++#define TEST_NAME "strtok" ++#include "bench-string.h" ++ ++#define STRTOK strtok_string ++#include ++ ++ ++typedef char *(*proto_t) (const char *, const char *); ++ ++IMPL (strtok_string, 0) ++IMPL (strtok, 1) ++ ++static void ++do_one_test (impl_t * impl, const char *s1, const char *s2) ++{ ++ size_t i, iters = INNER_LOOP_ITERS; ++ timing_t start, stop, cur; ++ TIMING_NOW (start); ++ for (i = 0; i < iters; ++i) ++ { ++ CALL (impl, s1, s2); ++ CALL (impl, NULL, s2); ++ CALL (impl, NULL, s2); ++ } ++ TIMING_NOW (stop); ++ ++ TIMING_DIFF (cur, start, stop); ++ ++ TIMING_PRINT_MEAN ((double) cur, (double) iters); ++ ++} ++ ++ ++static void ++do_test (size_t align1, size_t align2, size_t len1, size_t len2, int fail) ++{ ++ char *s2 = (char *) (buf2 + align2); ++ static const char d[] = "1234567890abcdef"; ++#define dl (sizeof (d) - 1) ++ char *ss2 = s2; ++ for (size_t l = len2; l > 0; l = l > dl ? l - dl : 0) ++ { ++ size_t t = l > dl ? dl : l; ++ ss2 = mempcpy (ss2, d, t); ++ } ++ s2[len2] = '\0'; ++ ++ printf ("Length %4zd/%zd, alignment %2zd/%2zd, %s:", ++ len1, len2, align1, align2, fail ? "fail" : "found"); ++ ++ FOR_EACH_IMPL (impl, 0) ++ { ++ char *s1 = (char *) (buf1 + align1); ++ if (fail) ++ { ++ char *ss1 = s1; ++ for (size_t l = len1; l > 0; l = l > dl ? l - dl : 0) ++ { ++ size_t t = l > dl ? dl : l; ++ memcpy (ss1, d, t); ++ ++ss1[len2 > 7 ? 7 : len2 - 1]; ++ ss1 += t; ++ } ++ } ++ else ++ { ++ memset (s1, '0', len1); ++ memcpy (s1 + (len1 - len2) - 2, s2, len2); ++ if ((len1 / len2) > 4) ++ memcpy (s1 + (len1 - len2) - (3 * len2), s2, len2); ++ } ++ s1[len1] = '\0'; ++ do_one_test (impl, s1, s2); ++ } ++ putchar ('\n'); ++} ++ ++static int ++test_main (void) ++{ ++ test_init (); ++ ++ printf ("%23s", ""); ++ FOR_EACH_IMPL (impl, 0) ++ printf ("\t%s", impl->name); ++ putchar ('\n'); ++ ++ for (size_t klen = 2; klen < 32; ++klen) ++ for (size_t hlen = 2 * klen; hlen < 16 * klen; hlen += klen) ++ { ++ do_test (0, 0, hlen, klen, 0); ++ do_test (0, 0, hlen, klen, 1); ++ do_test (0, 3, hlen, klen, 0); ++ do_test (0, 3, hlen, klen, 1); ++ do_test (0, 9, hlen, klen, 0); ++ do_test (0, 9, hlen, klen, 1); ++ do_test (0, 15, hlen, klen, 0); ++ do_test (0, 15, hlen, klen, 1); ++ ++ do_test (3, 0, hlen, klen, 0); ++ do_test (3, 0, hlen, klen, 1); ++ do_test (3, 3, hlen, klen, 0); ++ do_test (3, 3, hlen, klen, 1); ++ do_test (3, 9, hlen, klen, 0); ++ do_test (3, 9, hlen, klen, 1); ++ do_test (3, 15, hlen, klen, 0); ++ do_test (3, 15, hlen, klen, 1); ++ ++ do_test (9, 0, hlen, klen, 0); ++ do_test (9, 0, hlen, klen, 1); ++ do_test (9, 3, hlen, klen, 0); ++ do_test (9, 3, hlen, klen, 1); ++ do_test (9, 9, hlen, klen, 0); ++ do_test (9, 9, hlen, klen, 1); ++ do_test (9, 15, hlen, klen, 0); ++ do_test (9, 15, hlen, klen, 1); ++ ++ do_test (15, 0, hlen, klen, 0); ++ do_test (15, 0, hlen, klen, 1); ++ do_test (15, 3, hlen, klen, 0); ++ do_test (15, 3, hlen, klen, 1); ++ do_test (15, 9, hlen, klen, 0); ++ do_test (15, 9, hlen, klen, 1); ++ do_test (15, 15, hlen, klen, 0); ++ do_test (15, 15, hlen, klen, 1); ++ } ++ do_test (0, 0, page_size - 1, 16, 0); ++ do_test (0, 0, page_size - 1, 16, 1); ++ ++ return ret; ++} ++ ++#include "../test-skeleton.c" +diff -urN glibc-2.17-c758a686/benchtests/bench-timing.h glibc-2.17-c758a686/benchtests/bench-timing.h +--- glibc-2.17-c758a686/benchtests/bench-timing.h 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.17-c758a686/benchtests/bench-timing.h 2015-06-20 21:22:16.300458014 -0400 +@@ -0,0 +1,64 @@ ++/* Define timing macros. ++ Copyright (C) 2013 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 ++ . */ ++ ++#include ++#include ++ ++#if HP_TIMING_AVAIL && !defined USE_CLOCK_GETTIME ++# define GL(x) _##x ++# define GLRO(x) _##x ++typedef hp_timing_t timing_t; ++ ++# define TIMING_TYPE "hp_timing" ++ ++# define TIMING_INIT(res) ({ (res) = 1; }) ++ ++# define TIMING_NOW(var) HP_TIMING_NOW (var) ++# define TIMING_DIFF(diff, start, end) HP_TIMING_DIFF ((diff), (start), (end)) ++# define TIMING_ACCUM(sum, diff) HP_TIMING_ACCUM_NT ((sum), (diff)) ++ ++#else ++ ++#include ++typedef uint64_t timing_t; ++ ++# define TIMING_TYPE "clock_gettime" ++ ++/* Measure the resolution of the clock so we can scale the number of ++ benchmark iterations by this value. */ ++# define TIMING_INIT(res) \ ++({ \ ++ struct timespec start; \ ++ clock_getres (CLOCK_PROCESS_CPUTIME_ID, &start); \ ++ (res) = start.tv_nsec; \ ++}) ++ ++# define TIMING_NOW(var) \ ++({ \ ++ struct timespec tv; \ ++ clock_gettime (CLOCK_PROCESS_CPUTIME_ID, &tv); \ ++ (var) = (uint64_t) (tv.tv_nsec + (uint64_t) 1000000000 * tv.tv_sec); \ ++}) ++ ++# define TIMING_DIFF(diff, start, end) (diff) = (end) - (start) ++# define TIMING_ACCUM(sum, diff) (sum) += (diff) ++ ++#endif ++ ++#define TIMING_PRINT_MEAN(d_total_s, d_iters) \ ++ printf ("\t%g", (d_total_s) / (d_iters)) +diff -urN glibc-2.17-c758a686/benchtests/bench-timing-type.c glibc-2.17-c758a686/benchtests/bench-timing-type.c +--- glibc-2.17-c758a686/benchtests/bench-timing-type.c 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.17-c758a686/benchtests/bench-timing-type.c 2015-06-20 21:22:16.300458014 -0400 +@@ -0,0 +1,27 @@ ++/* Print out the timing type used by the benchmark run. ++ Copyright (C) 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 ++ . */ ++ ++#include "bench-timing.h" ++#include ++ ++int ++main (int argc, char **argv) ++{ ++ puts (TIMING_TYPE); ++ return 0; ++} +diff -urN glibc-2.17-c758a686/benchtests/cosh-inputs glibc-2.17-c758a686/benchtests/cosh-inputs +--- glibc-2.17-c758a686/benchtests/cosh-inputs 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.17-c758a686/benchtests/cosh-inputs 2015-06-20 21:22:16.300458014 -0400 +@@ -0,0 +1,403 @@ ++## args: double ++## ret: double ++## includes: math.h ++-0x1.630fb3c419c60p9 ++0x1.631844f7a96d0p9 ++-0x1.f56fa7db86bf4p5 ++-0x1.631675fa3bc04p9 ++0x1.1946f04588844p-371 ++-0x1.62fac5eb878c6p9 ++0x1.c2f1e6340f9acp-1 ++0x1.38d5f6796e1c6p-172 ++0x1.652cb53670db0p6 ++0x1.bab6037e306ecp4 ++-0x1.d6cc6557b9fe1p-224 ++0x1.2a4a35f11dc8bp-1 ++0x1.7acdf3096f467p-2 ++0x1.62ea1202d9816p9 ++-0x1.ab3a9254e8794p5 ++-0x1.7581c71bf2925p3 ++0x1.6335078d8f6f1p9 ++-0x1.562ea1c51f0f0p7 ++-0x1.5ad3171705e85p2 ++-0x1.a28481bf5abc7p6 ++-0x1.07f19394102cap-155 ++0x1.714f115ded7edp-395 ++-0x1.e3b4e57228498p-226 ++0x1.62ecb5c679f45p9 ++0x1.f5ef70c4d6fe3p-947 ++0x1.07c7d5461c4c1p2 ++0x1.230e2092aaa0ep5 ++0x1.62edf5f8ef2d6p9 ++0x1.633c66e5307e9p9 ++-0x1.ca74063b21508p1 ++-0x1.4517c5d83e40fp-1 ++-0x1.3d480025e3245p7 ++0x1.6307c4b105e8bp9 ++0x1.dac293f73d850p5 ++0x1.ddc3c42ec39bap6 ++0x1.df804326360d0p4 ++-0x1.a729d2ed077a7p8 ++0x1.62e6b6e528603p9 ++0x1.630252d0050e1p9 ++-0x1.d9e2923618018p-312 ++-0x1.da7d05daf1653p-360 ++0x1.632b742e1d0c9p9 ++-0x1.62fdf19fea01cp9 ++0x1.6328531b0a130p9 ++0x1.626da3cbd279bp-65 ++0x1.632cc11415f53p9 ++0x1.99320680205a9p-799 ++-0x1.3a7903b952ff1p-83 ++-0x1.895200d5fefb6p-119 ++-0x1.c26a3720198fcp2 ++-0x1.9fa0e43bb03e6p-2 ++0x1.62e6378477ec7p9 ++-0x1.5a5f3792646e9p-860 ++0x1.1080911dae7d0p-1013 ++0x1.6304f3ed14c82p9 ++0x1.6337149eda940p9 ++0x1.62ec21c319df7p9 ++-0x1.239ff60f28877p6 ++0x1.dec232d4b4a3fp-2 ++-0x1.6655b35bcb861p-951 ++0x1.6322f270f7ff5p9 ++0x1.62e67590a0733p9 ++-0x1.3bd6d2de5b059p-627 ++-0x1.4d2140c9727ddp8 ++0x1.6316835c7cf05p9 ++-0x1.150951ee1275fp0 ++-0x1.8c4344a80043fp-2 ++-0x1.633196bcef4aap9 ++0x1.af57d51a27e27p-747 ++-0x1.7f4191bd896cbp-2 ++-0x1.88703361b4ad5p3 ++0x1.24aa7790e8d36p2 ++-0x1.62faa7a46d17bp9 ++-0x1.9a47f1cda4652p3 ++-0x1.6315b48bf51f2p9 ++-0x1.141d54326d8a1p7 ++0x1.23ffc38155c52p-233 ++-0x1.57b2662e0cbc1p2 ++-0x1.1929f6abc031bp8 ++-0x1.590710edec44dp-817 ++0x1.94c7749a2b80cp-457 ++-0x1.87d6401ddca88p-676 ++-0x1.81cfd513f4ab9p-623 ++-0x1.69fad03b43d66p-700 ++0x1.79300023a52c8p0 ++-0x1.ba2396d33e90cp8 ++-0x1.63057386325ebp9 ++-0x1.728176d7c18f0p-24 ++-0x1.c69e923a07adcp6 ++-0x1.e07082cab8c82p-573 ++0x1.632b31037059ap9 ++-0x1.6336976d5e8adp9 ++0x1.b6cf07dd00ddep-140 ++-0x1.633c1105ee490p9 ++-0x1.1284f1b6941f8p1 ++-0x1.6c8b7360c8e61p0 ++0x1.6d20f44123714p7 ++0x1.cc4af059aa66ap8 ++-0x1.8a2a250959686p-57 ++0x1.f02ac609a5cc1p-87 ++-0x1.a754215ca985dp-2 ++0x1.2825d1de625c8p6 ++0x1.3c1dd34b185a1p6 ++0x1.5486c13874548p-359 ++-0x1.6c62d6c0af55fp6 ++0x1.5947c680bd235p1 ++-0x1.d1ecf009b1e3ap8 ++0x1.d6c6f6b983d6cp7 ++-0x1.d3c651d1da802p0 ++0x1.248074c8c7fd2p1 ++0x1.630c71268199ap9 ++0x1.22379013a9834p-349 ++0x1.6387b36f3b875p8 ++-0x1.632dc46b7230cp9 ++-0x1.216292f12973ap-436 ++0x1.0223b02b8d96bp-459 ++0x1.4512d30165887p1 ++0x1.2762305f5efcbp0 ++-0x1.8982d0e78510bp-802 ++0x1.8713c2f7dd25ap-6 ++0x1.f690a6c3716cbp-3 ++0x1.afe4e13938837p-689 ++0x1.62ff7470df95dp9 ++-0x1.66b997e7d1793p3 ++0x1.aa64953830f35p-1 ++-0x1.05cbb323669c8p7 ++0x1.df98b1662cf01p8 ++-0x1.84acb4c33fff9p1 ++-0x1.75d6f3839dffbp2 ++0x1.6302c49c75ac4p9 ++0x1.54c5f63777d5ap0 ++-0x1.5329b46ad494ep8 ++0x1.62f1d7dc4e8bfp9 ++0x1.5e2af7dfe1034p9 ++0x1.46b0f34a60c14p-276 ++0x1.6302b7464cd16p9 ++0x1.6acba1328de25p-2 ++0x1.214126ebc9ba2p0 ++-0x1.c6abd4778861bp3 ++0x1.62ee439267fe4p9 ++-0x1.019e020b2eed3p-918 ++0x1.67c174b511e76p-194 ++-0x1.a61b930d87e17p-197 ++0x1.6326673bf0ee0p9 ++0x1.62fb546601bb5p9 ++-0x1.630397a6b37e0p9 ++-0x1.487513da26b06p5 ++-0x1.026fa5d7b42fcp-1 ++0x1.a585d6604b0b1p-686 ++0x1.f9dfc189a7a8dp-2 ++-0x1.68c8d3ca045f0p0 ++0x1.0de7b0af3eca8p-424 ++0x1.9bceb245013d8p-1 ++-0x1.b47a67fa0f535p-238 ++0x1.31a6458858034p7 ++-0x1.0baf3575dd3b1p-968 ++0x1.5d07807c20bb9p1 ++0x1.eb7555bb47463p5 ++0x1.6300e31dc8554p9 ++0x1.56bd211140702p-963 ++-0x1.62fc3361285d3p9 ++0x1.6329f34ef70a1p9 ++0x1.3b63d61257d13p4 ++0x1.861950f440148p-1 ++0x1.a37ad4ec1d969p-346 ++-0x1.632b611f08364p9 ++-0x1.52594428d68c5p1 ++-0x1.6323360b63d60p9 ++-0x1.cbeb65785a18cp3 ++-0x1.35d973c1b14fbp1 ++-0x1.dd4d80673e7d0p-159 ++0x1.1610c328054c1p-749 ++0x1.d69ba47595c68p3 ++-0x1.21c707e50660dp4 ++-0x1.0608868eedbc7p-439 ++0x1.633cd176d9771p9 ++-0x1.fb2f329c0bb96p6 ++0x1.b7ed468fb04f9p-2 ++-0x1.23f9c5b9b41c5p6 ++-0x1.9629f1520f28bp-230 ++-0x1.6303c0b5329e9p9 ++0x1.0738a10cb2383p6 ++0x1.6949236f0fb13p0 ++0x1.9356878778911p4 ++0x1.6318527f69db0p9 ++-0x1.915ff68d55569p5 ++-0x1.3c0e136ebb1d3p8 ++0x1.21c663cb76efbp-712 ++0x1.631510cd8cc49p9 ++-0x1.8a9232ce1ce75p-685 ++-0x1.62e9313aabeb2p9 ++-0x1.160a431da0f5ep-1 ++-0x1.50420407b4980p-540 ++0x1.3db012d4e554dp5 ++0x1.07fe346846679p2 ++0x1.e7b8c3d24cd12p-603 ++0x1.6e9e4075373bbp-2 ++0x1.99e534ba6b8c9p1 ++-0x1.ac4ea356f7e7ap-1 ++0x1.26d654fd77e51p-126 ++0x1.630a6325d4276p9 ++0x1.63018139cc344p9 ++0x1.62f446bf431b8p9 ++-0x1.62fa736043269p9 ++0x1.62f6f6ca932f5p9 ++-0x1.db3ff2317460fp-401 ++0x1.182092617c182p-902 ++-0x1.633510495d169p9 ++0x1.07f565702a6dbp-1 ++-0x1.62f3821bac3f3p9 ++-0x1.de739010d6091p7 ++-0x1.f6a97309476d8p6 ++-0x1.92e537f3ea327p-2 ++0x1.630181fc28954p9 ++-0x1.baead70b0c2bap4 ++0x1.6329675608d9fp9 ++0x1.631ca21fe1f5ap9 ++0x1.12e5e651f43bep0 ++0x1.5c1404cdf4b6dp-653 ++-0x1.6327e1c51ff78p9 ++-0x1.8b5c643c1f677p-1 ++0x1.f017e3196ac82p3 ++-0x1.320c539d2690cp8 ++0x1.3232266740c50p1 ++-0x1.9fb7342efeec0p-903 ++0x1.65f6b5e818e38p2 ++0x1.f608f27517700p-132 ++-0x1.6701731068abfp-476 ++0x1.62f873b46c417p9 ++-0x1.10ab76257be04p-134 ++-0x1.71aa41f376409p3 ++0x1.aa3c546601d68p6 ++0x1.330af2c1875b4p-584 ++0x1.467a936424936p8 ++0x1.402ca060e1497p8 ++0x1.8195955afb315p7 ++0x1.e422c06fda329p-252 ++-0x1.9725c1ddcc807p5 ++-0x1.0a669663e4824p1 ++0x1.da54851488f44p-650 ++-0x1.2bf936af0bb54p4 ++0x1.c7b7361a9d625p5 ++0x1.fbafe37560e23p0 ++0x1.32a202fb0895dp7 ++0x1.8507b472339c2p3 ++-0x1.b0498135f2cf1p-40 ++-0x1.34b9e14e1af56p5 ++-0x1.6316075c46ee9p9 ++-0x1.d96f3088164d1p-771 ++0x1.64ec801c7fc0cp1 ++-0x1.6330b03f5aa48p9 ++0x1.8752740d1aff0p2 ++-0x1.b276e5fc0915ap8 ++0x1.3fcdd73dbc27ep-603 ++-0x1.09774517f3944p7 ++-0x1.6319f733c541fp9 ++-0x1.7019f600db82cp7 ++-0x1.6317b78869f21p9 ++0x1.903ff6c315937p-2 ++0x1.fcd75555d1bf5p2 ++0x1.a552c2076a2c0p4 ++0x1.92c1858903f0ap-668 ++-0x1.c91a744e3a0b7p-1 ++-0x1.596c614756426p-305 ++-0x1.cc5644d829eacp-167 ++-0x1.bc96e1aaf042bp0 ++0x1.6337b63365473p9 ++-0x1.ca384346f16a9p8 ++0x1.465d81dad540ep7 ++0x1.632396c691df1p9 ++-0x1.5695b6e7fcd02p6 ++-0x1.f9a446420cdc7p3 ++0x1.f0ad831c3abb4p-46 ++-0x1.ce3bf20083050p8 ++0x1.0b72226f94781p3 ++0x1.2f75110873a31p8 ++0x1.3877f0875dea2p5 ++0x1.632045a8a7ef9p9 ++0x1.62f1877c1501ep9 ++0x1.6310e758dfd28p9 ++0x1.630e01d39d028p9 ++0x1.62f23680e783cp9 ++0x1.83f8e51d82968p6 ++0x1.7e0aa46083883p-2 ++0x1.00e73296682cap7 ++0x1.e333e66e5016ep-1 ++0x1.62f9213f8bc1fp9 ++-0x1.1043c4ca951fbp-23 ++-0x1.231e514c403e4p2 ++0x1.493644a3cb32cp9 ++0x1.6303738c05d04p9 ++0x1.6336a46b6c9bap9 ++0x1.9d2f87fc603f4p5 ++-0x1.633a822e16e6fp9 ++-0x1.62f55568a253dp9 ++-0x1.1262a6a8b160cp-166 ++0x1.ee36b15df2fc4p7 ++-0x1.761b008109568p-95 ++-0x1.62eff1edf3d60p9 ++0x1.aeceb373ec08dp5 ++0x1.1f00608d6c2abp-663 ++0x1.691f4114ddb68p1 ++0x1.3e57e666e2e04p3 ++-0x1.d897a0d2877f2p3 ++-0x1.2cd5b784df531p-548 ++0x1.dde5178b689c3p5 ++-0x1.9a5ff5ea279f8p6 ++0x1.434c61151b76bp-266 ++-0x1.ebd04328781a7p-781 ++-0x1.a7a0d286d7cc0p0 ++-0x1.7cd5764bf11ffp7 ++-0x1.632432d0e9e8fp9 ++-0x1.62e861c33ae29p9 ++0x1.fe89236cc6a12p-1 ++-0x1.daa2368bfcef6p-410 ++-0x1.a69a66dbd2ea1p8 ++0x1.91b5b4560bceap3 ++-0x1.0d2823f9d0f72p3 ++-0x1.630ef52917607p9 ++-0x1.2a2bb2e417439p6 ++0x1.cfd2c4878fd4ep6 ++-0x1.e6ef0724cf5d8p-2 ++-0x1.d3e823224ebe4p8 ++-0x1.79d546d7ccac5p-130 ++-0x1.632752aab262cp9 ++-0x1.98df07527c0bbp8 ++0x1.6312d35913b55p9 ++0x1.600ef62445c5ep4 ++-0x1.62e93642f1118p9 ++0x1.d0378703154bap3 ++-0x1.a3c9c5aedad89p-819 ++0x1.9150c46f64e72p-59 ++-0x1.631537abd1539p9 ++0x1.4eb503a5e519cp6 ++-0x1.c276053dd303bp-733 ++-0x1.f9d4144b54ba6p1 ++0x1.d0d367337f7f6p1 ++0x1.2b2582d457cd0p6 ++-0x1.8c1a422a7d8b8p4 ++-0x1.633754b36f51ap9 ++-0x1.62f596dff99e7p9 ++0x1.d63fe6b5c7c89p7 ++-0x1.6300b68646dc7p9 ++-0x1.630544284f262p9 ++-0x1.2a94d776d7790p3 ++0x1.33e954a4d5c5fp-916 ++0x1.25e337d99f414p-965 ++-0x1.06277554e7c06p-460 ++0x1.883ee57d70e7dp-31 ++0x1.bb0de68e6b79bp-2 ++0x1.62f667f0092adp9 ++-0x1.496ec324e967fp5 ++-0x1.9d6b07d830151p-355 ++0x1.666da5675e27fp1 ++-0x1.f7cdd2a74fc06p1 ++-0x1.2cdd0674e4abfp7 ++-0x1.0d6877109150dp-846 ++-0x1.cf43b2546254bp-1 ++0x1.0078e7f84d8d8p6 ++0x1.62ef2138efd07p9 ++0x1.b6e1c50cdb9d1p-553 ++0x1.90eb01a683bc0p-2 ++0x1.ea80c14d17262p4 ++0x1.e3928304b1b20p7 ++-0x1.5fc8a731a1822p-692 ++-0x1.1de0320fc0737p9 ++-0x1.b07147eb43dd0p4 ++0x1.62fa155e6e26ep9 ++0x1.213554dad3888p9 ++-0x1.66e894b6d218cp6 ++-0x1.7b67d6318a255p7 ++-0x1.1b005777a51cdp7 ++0x1.62e9f2b4a0744p9 ++0x1.d181a480e6c92p-478 ++-0x1.fe14d1c964b0dp-493 ++-0x1.6632749cd8f5fp-320 ++0x1.d038a32d61933p8 ++0x1.632a66cd5c94bp9 ++0x1.631f833e694f8p9 ++0x1.e111c646e8043p-139 ++-0x1.631ec3cf4a7b9p9 ++0x1.6311f75346d75p9 ++-0x1.c6d344d145206p5 ++0x1.ad42672f6fed7p0 ++-0x1.f4d3f0d1b85eep7 ++0x1.d35412055367bp7 ++-0x1.8e94d1fb70dcep2 ++0x1.04c9f0425e693p2 ++-0x1.b0bb57c60b6a0p5 ++0x1.73d4f770b54e0p5 ++0x1.bcb6129b5ff2bp8 ++-0x1.c82390742c1b2p-832 ++-0x1.bed2624f0b283p3 ++-0x1.62fbd7e6a4400p9 ++0x1.262d57250d7cfp-656 ++-0x1.1ebe27d65ffa7p6 ++0x1.7ab2a69e414b6p1 ++0x1.579870e61406fp2 ++0x1.baaef71d93bc9p-22 ++-0x1.6321d7d010e1ap9 +diff -urN glibc-2.17-c758a686/benchtests/cos-inputs glibc-2.17-c758a686/benchtests/cos-inputs +--- glibc-2.17-c758a686/benchtests/cos-inputs 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.17-c758a686/benchtests/cos-inputs 2015-06-20 21:22:16.301457983 -0400 +@@ -0,0 +1,2411 @@ ++## args: double ++## ret: double ++## includes: math.h ++-0x1.5500006d24c56p657 ++-0x1.74eb14d50ab58p838 ++0x1.b6e5537112339p2 ++-0x1.5320f43535558p30 ++0x1.a5d743be1ed81p19 ++-0x1.e44a771e82dd8p325 ++-0x1.37c07097b1e0bp19 ++0x1.b6da163b3a193p-8 ++0x1.9c1d26a5a4d15p19 ++0x1.24fb45187e1cfp25 ++-0x1.8a7204656d1c5p17 ++-0x1.a59a742066c34p34 ++0x1.8907a5632a248p35 ++-0x1.e481d625714fbp0 ++-0x1.ef80132f1ffafp-12 ++-0x1.e9da155008608p671 ++0x1.7a6085f1f7a0bp24 ++0x1.2d6d6713a3cb3p9 ++-0x1.109665062930bp0 ++-0x1.65ded44238895p20 ++-0x1.4debb5bad15c9p411 ++-0x1.b6c131e9e2a95p414 ++-0x1.896a57dbdc990p0 ++0x1.345f96c1b84cbp46 ++-0x1.e54805da72fa3p-24 ++-0x1.d54bf16b395bcp23 ++-0x1.47f9c5e27f6f3p707 ++-0x1.b8a5440ee9fd7p9 ++0x1.5ff3170744344p-18 ++0x1.266593131001bp1020 ++0x1.42e0f5708b4d1p23 ++-0x1.6279c65ab2acap3 ++-0x1.e5ef0437f662ap15 ++-0x1.0750602edf46ap562 ++0x1.249941e897f8dp44 ++0x1.436c067c4c00cp26 ++-0x1.4334507e7a73bp-5 ++-0x1.5f99b4d006698p25 ++0x1.11697571c9c99p502 ++0x1.253f915648fd2p46 ++-0x1.2ecfb6fd18ffcp332 ++-0x1.2b6e350fc35dap25 ++-0x1.a26f8116b1f53p195 ++-0x1.491d341c65181p-7 ++0x1.3c13e14118343p38 ++-0x1.a6a105deff5e0p5 ++-0x1.fbe7761b1e8d2p18 ++0x1.6709c7306f030p26 ++-0x1.adbf8321968d5p112 ++0x1.d9a53349d7df5p624 ++0x1.5454e1450ae1cp463 ++-0x1.5e0c04637d573p724 ++0x1.7951c309d6e27p850 ++0x1.285dc7fdae1ccp26 ++-0x1.c8c2c6e7107dcp40 ++-0x1.b5afc39812d5cp73 ++-0x1.dbf7863f7522dp-9 ++0x1.6ac6347189089p36 ++0x1.27b04425488afp31 ++0x1.cf38e00daa5afp370 ++0x1.303432a81f7e0p189 ++-0x1.8c05308efd7dbp0 ++-0x1.249b044f1f591p-1 ++-0x1.bf68624ae32d8p315 ++0x1.66c281dc83c31p327 ++-0x1.486c663f75760p2 ++-0x1.feab128c4d050p878 ++0x1.f2db6323e2bc8p47 ++0x1.aba1300582abfp-1 ++-0x1.70b692602f649p28 ++0x1.63bbd511e2d1cp1019 ++-0x1.ad48262c26df0p-23 ++0x1.e7a7573e40d0dp1 ++0x1.5081452ccba88p449 ++-0x1.0198677d57aaap19 ++0x1.78cc5057c8ea8p319 ++-0x1.fbf866574db56p1 ++-0x1.13cf375475387p0 ++0x1.9e05552a6ebdbp5 ++0x1.fe8ec1124c5b2p17 ++0x1.801683636a380p854 ++0x1.bed635dab7cc3p10 ++0x1.29d4d1734709ap23 ++-0x1.692a2422044fbp14 ++-0x1.5a8db25d26e70p0 ++0x1.65e3870f3c860p309 ++0x1.3caf03947f677p1 ++0x1.0a60b6ecb0107p22 ++0x1.8cbcc6715593ep30 ++0x1.faa85328a30d0p858 ++-0x1.700da718a4a31p0 ++0x1.59c2127ae8e32p20 ++0x1.a5e3214dc3d15p647 ++-0x1.1db30365f086dp1 ++-0x1.0399c3c28453ap0 ++-0x1.dd8f835681c23p1017 ++0x1.2751c6b1cde31p478 ++-0x1.b881719d9f6bdp-16 ++0x1.22f885319d1b5p-20 ++0x1.e5d4d0d25845ap-23 ++0x1.0045944e09121p37 ++0x1.3fa8c311b4a60p38 ++0x1.e55e21efd912dp46 ++0x1.6d5f5310aea1bp646 ++-0x1.d3570603de208p23 ++0x1.3365358de2fe1p161 ++-0x1.629526ed15f02p26 ++-0x1.e62dc4d44fab1p40 ++0x1.e1f9c02374c6dp24 ++-0x1.90a100664e089p-21 ++0x1.8dafd569a76b4p26 ++-0x1.406e919853bcfp694 ++0x1.931d703570765p711 ++-0x1.6973e3885a11ep0 ++0x1.9e6a122e9eb4ap8 ++0x1.35a7e5d0935fdp222 ++-0x1.2d6c2408f3370p667 ++0x1.e08e82243180fp0 ++-0x1.ec6237ba9b765p906 ++-0x1.f01e76edc5f71p0 ++-0x1.5cbd54e60a98ep-1 ++0x1.9e0250bdd8df6p426 ++0x1.d78115ab10587p107 ++-0x1.2d739249672fbp17 ++0x1.fedb779d35b35p41 ++-0x1.8f0c6774e24acp889 ++0x1.0244d1b6b4fe3p31 ++-0x1.c2bfd0a931704p3 ++-0x1.1cf0950e0a018p15 ++-0x1.ec54b3a8ffc12p24 ++-0x1.88c5a3114de94p492 ++-0x1.30b5d5aec851cp940 ++-0x1.5b9bc4ee38a1bp-24 ++0x1.3341961dfc2ddp659 ++-0x1.c78046362a6a5p3 ++0x1.2d6e122696618p750 ++-0x1.4730d67c27d89p-3 ++-0x1.e6f9821fd5f72p21 ++-0x1.dc9c33c3b4affp11 ++0x1.f0390127af37bp1 ++0x1.a105328b91461p904 ++0x1.ca3296a765ee9p29 ++0x1.9ed025781f734p-8 ++-0x1.38b913b9a8502p54 ++0x1.80cf557137b99p40 ++-0x1.ef48673d98d25p20 ++0x1.e98c94063264ep314 ++-0x1.98cf55855bf23p0 ++0x1.a20040bbc9705p24 ++-0x1.bbaa1373a6b04p-13 ++0x1.3a05a58adde58p-26 ++0x1.c286149c7e9f5p470 ++-0x1.6b81753989e5ap25 ++0x1.25b0b093ed7f8p2 ++-0x1.0fa8f1bcd9638p467 ++-0x1.58a1939b34f60p25 ++0x1.dbd641b5c98edp117 ++0x1.1fb4562dd42aap-16 ++0x1.14e3242e58954p0 ++0x1.d3a2230b9e01ep897 ++-0x1.53b4b1f9012a0p497 ++-0x1.024f21758b27ep0 ++-0x1.c507e0d80c18bp388 ++0x1.7a51e62e9bbf7p489 ++-0x1.964e538ed6a85p29 ++0x1.273937c7e6db5p315 ++0x1.d1cd90de0d573p1 ++0x1.d879906814a5cp-24 ++0x1.9c0153b0ede21p46 ++-0x1.956a15502cadcp-23 ++0x1.445f06629acb9p24 ++-0x1.01310510ba8afp37 ++-0x1.3fe9d1eac62fbp773 ++-0x1.25ab5749018d2p611 ++-0x1.80cfc67e14b4fp26 ++0x1.7ecf27b07b148p23 ++0x1.43101294381abp26 ++0x1.6c2761f81b901p-23 ++0x1.ba9fe7138c3cep112 ++-0x1.21d97415b6ba7p15 ++-0x1.6e0e76aaf7d3ep-7 ++0x1.776856675164ep4 ++0x1.e6da629a8c493p-19 ++-0x1.08d20753e957dp657 ++0x1.3e58548ada7d0p-14 ++-0x1.c101c29c2ca2bp671 ++0x1.f81ae7d44a371p151 ++0x1.ceebb1e9b0ac5p25 ++0x1.1efb100681836p1 ++0x1.8af3458dfddf7p13 ++-0x1.2568259ec877fp15 ++0x1.63c373ca8604cp-19 ++0x1.bc2476e5f6203p26 ++0x1.d21a939613119p14 ++0x1.7a7d113ec8249p0 ++-0x1.1cc05529e617cp4 ++0x1.78fad183e2167p6 ++-0x1.9416a783a4e38p25 ++-0x1.51e6d29257863p47 ++-0x1.382e97b6481f3p45 ++0x1.17fc047aebf99p10 ++0x1.40c8b1a325f9bp33 ++0x1.d5bbf4c199cbap29 ++-0x1.df5752482cfe6p-20 ++-0x1.12c1f684ae960p14 ++0x1.2a8757492a1acp29 ++-0x1.891c334662682p16 ++0x1.8d82378077273p6 ++0x1.166da45911fe3p154 ++-0x1.202fe7e0931ecp25 ++0x1.f671a5c525c60p25 ++-0x1.a16666f2d0d73p0 ++0x1.341e9765a7c3dp26 ++-0x1.1e626406b087dp-21 ++-0x1.790a818b2e25cp26 ++-0x1.b42b75a1c17cep11 ++0x1.57a50372893aap129 ++0x1.c9f2355b4664ap6 ++-0x1.670df37270a5dp47 ++0x1.8e63d0b3e0c9ap533 ++-0x1.8c842353144b7p0 ++0x1.14bfe1e6692bfp3 ++-0x1.8daca557ecbc8p0 ++0x1.0f66604e1cae6p1 ++0x1.6b4b447033d3cp17 ++-0x1.34fbd3e9490bfp343 ++0x1.9a8b8523a35d1p0 ++-0x1.bacaa7bb3931cp709 ++-0x1.6ce3907ecd3eap27 ++-0x1.6329f65be40dfp388 ++0x1.9f4407a6b30dbp-4 ++-0x1.c64231dff1ff8p-1 ++-0x1.f9d481e9d8a98p21 ++-0x1.3150861950cb4p7 ++0x1.709e700648c1dp3 ++0x1.0248a23a58372p-11 ++-0x1.ca6a851aa0470p12 ++0x1.b24d336cb3971p0 ++0x1.2ad5a72281833p24 ++-0x1.4043b11fad8b6p-24 ++-0x1.e73a03bba587cp0 ++0x1.46cfe1fec14f8p40 ++-0x1.7dfd30173d85cp39 ++-0x1.628c71e6500b1p0 ++-0x1.7e77e7b456aebp16 ++0x1.1df3c34e26e48p21 ++0x1.1ac7a39becc9fp29 ++0x1.1515d5cb1c51cp1 ++-0x1.67cab45949d3bp22 ++0x1.e4e286c86c45fp-16 ++-0x1.8cd97769969d7p483 ++0x1.ce30758136824p27 ++0x1.95b154a54a24cp37 ++0x1.acffd079cb0c5p412 ++-0x1.411c8332662bfp0 ++-0x1.7bc4041696bdbp1 ++0x1.c4ab9624d294fp445 ++-0x1.d1fcb4363c5bep-20 ++-0x1.bea1604dd499dp23 ++0x1.a108a042c4592p1 ++-0x1.04fb706aa9341p17 ++0x1.6a7111c6128c2p20 ++0x1.193151e0fd7c5p-10 ++-0x1.4b06317e471c3p119 ++0x1.cecb95b038037p792 ++-0x1.a561975e1d17ap44 ++-0x1.a8c170e426f1fp1 ++-0x1.53be42cd2bdebp7 ++-0x1.7ccd663e6d70fp-25 ++-0x1.182736e3f62e0p466 ++0x1.ac67800768ebcp12 ++-0x1.09a9d58fea51ap7 ++-0x1.75fc03701c53ep13 ++-0x1.3d9615a1f4a5dp-23 ++0x1.0e7e11092806bp343 ++-0x1.348fe488f91eep46 ++-0x1.1fad639f2da7bp8 ++-0x1.40aae476e0ed5p662 ++0x1.9f70f2da0cc95p132 ++-0x1.da5486badb181p-1 ++-0x1.3b3f076f46893p-9 ++-0x1.0b5187929e913p22 ++0x1.781ca4f1df000p0 ++0x1.6ceb8227b17f8p0 ++-0x1.5445a1397c2f2p751 ++0x1.5418512e0a8a1p8 ++-0x1.533876ccfba74p477 ++0x1.3396d7a19dc51p644 ++0x1.3cdb768fc6e00p-17 ++-0x1.1810260402476p2 ++-0x1.e2815264307f0p21 ++0x1.fb7b8378ba7b1p3 ++-0x1.7bc8c6f28c24bp0 ++-0x1.de5186502e418p-3 ++0x1.cc6417710e32dp9 ++-0x1.b74806ec02f90p-3 ++0x1.7b297737f89a6p0 ++-0x1.e7bf0149253d7p0 ++-0x1.691d818b4a914p-27 ++0x1.ffcfb3b604abep25 ++-0x1.0fd1f4204dd47p26 ++-0x1.349960924dd94p25 ++0x1.330097fdd7ff0p15 ++0x1.bb7555f93a67cp0 ++-0x1.e8d0023eb9798p-15 ++0x1.457db3a13df89p23 ++-0x1.d439a114e34d3p43 ++-0x1.33a971d3908ffp1 ++-0x1.8074051196a9fp35 ++-0x1.36caa6f4f6150p20 ++-0x1.e5047468eb004p36 ++-0x1.e2c677eef9254p479 ++0x1.043ad02a44c86p18 ++0x1.a762226b8977fp6 ++-0x1.d1eff1baa8a00p915 ++0x1.73f354e9bec57p0 ++-0x1.5e04c7be5d65ap26 ++0x1.32e6133ae3ba2p973 ++-0x1.130bb36a9180dp0 ++-0x1.0f8635fd75c96p-25 ++0x1.ac6c73500f7f1p977 ++0x1.5f47f080916d2p747 ++-0x1.7c13d0ffb2d1bp0 ++0x1.8cc7a6557936fp0 ++-0x1.3d20c6693cf4dp963 ++0x1.2252e753aae06p32 ++0x1.6102c79abd114p776 ++-0x1.ea41c6f9badc0p22 ++-0x1.4566d3374234ap942 ++0x1.48c290edccc4dp4 ++-0x1.5eb5d6958df05p41 ++0x1.3097218c10affp24 ++-0x1.5f51d4fbc2a24p866 ++-0x1.d961e32aa4458p24 ++0x1.2bd1132581a0bp17 ++0x1.31bf077fdc502p-13 ++0x1.dbc9d0ecfecffp958 ++-0x1.d9474275f8dbbp37 ++-0x1.7f9391c99c32cp38 ++-0x1.b22c9445db1a7p613 ++0x1.cf566724b6a87p-10 ++0x1.850211bd3bb55p93 ++-0x1.9ac2c530689d4p0 ++-0x1.be62f5b130b8dp0 ++0x1.032d004bc7a43p692 ++0x1.322f5733ea1fbp0 ++0x1.bed011520ae63p195 ++-0x1.441d84290be35p763 ++-0x1.444960b6d3e89p180 ++-0x1.ec5922981de7ap37 ++-0x1.75d2e1678af63p343 ++-0x1.10eba74970e62p11 ++0x1.62e1e19894307p10 ++0x1.e97543610b789p164 ++-0x1.eda7b7f647b42p15 ++-0x1.fe0c2274f3185p-4 ++-0x1.c0bce3cb049e5p33 ++0x1.aa0523e5fa5d6p0 ++0x1.213f833485611p5 ++0x1.599313c2534f2p-22 ++0x1.1ae571e1bc724p5 ++-0x1.c24055d80a5f8p-11 ++-0x1.a12e65804366bp46 ++0x1.76dc549f2274ap741 ++-0x1.03d390d8997e4p26 ++-0x1.1b36c4cf581c8p841 ++-0x1.56ae7518949d6p36 ++0x1.d86b40100783bp47 ++-0x1.56d0c378ca190p1 ++-0x1.da917388c2c69p830 ++-0x1.fd3906fa866c4p-1 ++0x1.fcc2828b80e39p24 ++0x1.927092bfc1613p62 ++0x1.364ce530c3b8bp14 ++-0x1.a5dd07a7a1b6bp-3 ++-0x1.7039c188c446ep372 ++0x1.ecc00543c4179p34 ++0x1.70a557bff1d19p43 ++0x1.053ac4631eb6ep42 ++-0x1.6e93c69519311p684 ++0x1.fddc610f652bfp25 ++0x1.5d23c14e5347cp10 ++0x1.28b57726066c6p21 ++-0x1.e34b009469f8bp26 ++0x1.8ec3a1532803ep25 ++0x1.2334b34f842cap73 ++0x1.a3f9461f83fc7p44 ++-0x1.bdb5217da4e12p-24 ++-0x1.87ce777fef3e9p0 ++0x1.b994e0f9d64e4p-1 ++-0x1.f051e48eb0a27p-1 ++-0x1.71fc03a2c0dc4p37 ++0x1.d4a7259ec9671p182 ++0x1.af2936d3b5356p18 ++0x1.b19b2069e1487p741 ++0x1.0c4f54d908dbbp842 ++0x1.9633b6cc8f95fp31 ++-0x1.f7f0b10fc7abbp-12 ++0x1.7dcef7488ef54p42 ++0x1.71d9a29951d30p979 ++0x1.9eecb676902eap12 ++-0x1.197a371161a1ap-6 ++-0x1.970b549202f75p15 ++-0x1.5673b2bc3c890p7 ++-0x1.0be9a65ae3299p45 ++0x1.64c4365cb4456p9 ++-0x1.6cc886298a2a6p209 ++-0x1.e3a8a52c483c1p1007 ++-0x1.82ab5565c6bf7p595 ++0x1.8aea2679ef0aap-13 ++-0x1.b37ea43570d83p697 ++-0x1.f5f545093efa8p10 ++0x1.133a54b78232bp-24 ++0x1.b401802bf603fp253 ++0x1.975cf4fe7de01p-13 ++0x1.dfffb229e4a31p33 ++-0x1.d728e796c4c59p46 ++0x1.dbce063607663p-9 ++-0x1.dcfdf7d58b834p32 ++0x1.05a416fb1e983p-20 ++-0x1.b64004211a42ep8 ++0x1.be8fe6328bdc8p503 ++0x1.a7a376a6bfebbp0 ++-0x1.3ade54ae52634p-6 ++-0x1.85b2e43641c2bp6 ++0x1.cf97d457a0958p-1 ++-0x1.f6ec45c2a3b4ap-2 ++0x1.cbcf649cc02d7p19 ++0x1.1e1317c82a6a9p21 ++0x1.a5bca61a82ec3p46 ++-0x1.fc551214a234ap33 ++-0x1.72ac7403760e3p0 ++0x1.bb03d7536d4ccp698 ++-0x1.af4ec32e9fce3p71 ++-0x1.c778f2c7ac74dp17 ++0x1.86c4360709304p1 ++0x1.028015715c76bp0 ++0x1.bfb74117c6ff9p33 ++-0x1.3feed1dd39ce9p40 ++0x1.f14981f4a8d29p16 ++-0x1.b525b5d886fd7p7 ++-0x1.abf156a96afc7p923 ++-0x1.9c1ed568f3cb9p16 ++0x1.7c041208761a6p0 ++0x1.3886e66f106abp151 ++0x1.839cb78b2b4abp30 ++0x1.9a5742c86fb7ep20 ++0x1.91ef725e99f72p592 ++0x1.d36ce6c1fd001p24 ++0x1.e750762ade5ffp0 ++0x1.e92b20a39491ep379 ++-0x1.32e291ee286c8p33 ++0x1.5b7642273a0eep40 ++-0x1.5ea1b0ccd8f28p98 ++0x1.2b80736f4a9d0p9 ++-0x1.2b42618941bb9p395 ++-0x1.7d0ad22761616p26 ++-0x1.7762272cba5e3p25 ++0x1.58954232affb6p25 ++-0x1.34ad53c58a47fp23 ++0x1.8975855985d19p501 ++-0x1.d1f4d79c31380p566 ++-0x1.a32851cc2be65p390 ++0x1.916815589e4b1p0 ++-0x1.5b8b64c9f96a2p30 ++-0x1.d058606fb9e48p15 ++0x1.262a7428526b9p1 ++0x1.96f7c5b3e3919p0 ++-0x1.f5a3a1fc53c6fp1 ++-0x1.30a2d4c407270p46 ++-0x1.6178648438383p19 ++0x1.af13d500f7cc9p30 ++0x1.b9e6172f71258p-6 ++0x1.e27fc1f8aa119p21 ++-0x1.bd9da3d73cd01p6 ++0x1.921da05fc12eap26 ++-0x1.6902454fef7ffp-10 ++0x1.584fc276a6b2bp4 ++0x1.c4b586982c7fep20 ++0x1.942c82ac0f530p4 ++0x1.c1f2b55b51948p4 ++0x1.c34ec3fccc805p5 ++-0x1.a34d9538665cep-15 ++-0x1.8ec031fad3fa4p466 ++-0x1.2f68a72835eefp45 ++0x1.d87c03eaaa1bfp12 ++-0x1.4dad353827827p7 ++-0x1.a61fa78ccb76dp8 ++0x1.f02425994e790p-1 ++0x1.7872164950239p44 ++-0x1.448fa3fa91514p0 ++-0x1.356365717ef4fp3 ++-0x1.27996239e2d4ap25 ++0x1.bfe2746ef36fbp168 ++-0x1.b1a050e0ed3fep16 ++-0x1.657e858ddef02p932 ++0x1.7b7466e89a978p0 ++-0x1.94e103a446f68p185 ++0x1.b0f5135086da8p39 ++0x1.9fa8e6d1aa67ep39 ++-0x1.565ac73db7728p76 ++-0x1.597aa2da93d2ap-14 ++-0x1.79d053e42f35cp0 ++-0x1.e756a7899b592p566 ++0x1.cc02d40dd176fp3 ++0x1.5853f727a0382p931 ++0x1.7f9ff133dd7fcp7 ++-0x1.54eae1e948c26p13 ++0x1.f463812c9625ep194 ++0x1.4200608051042p26 ++0x1.acb924d665d6ep25 ++-0x1.ee69c20fc82d7p25 ++0x1.b62ca2d803314p-17 ++0x1.99ad868f85696p323 ++-0x1.1fc20334bb246p25 ++-0x1.85488755819b0p25 ++0x1.91bae5f4012f6p0 ++-0x1.878693a7343c8p192 ++0x1.a7e580acde1afp634 ++-0x1.5c9f455bb898ep0 ++0x1.717d31fc4eecap15 ++0x1.43716097fef0ep16 ++-0x1.a9073787b0452p15 ++-0x1.2fea30a1d7acbp0 ++-0x1.d46bc3926e9b0p382 ++0x1.307b62ea850b3p0 ++-0x1.17732119c2eedp507 ++-0x1.0508c4bc0aa93p-9 ++-0x1.ff22636c40955p-4 ++0x1.3819811e7b876p10 ++0x1.b46c414c3d879p-24 ++0x1.86ce2688839fep13 ++0x1.f6f5e13195f14p-6 ++-0x1.86a78458de8a7p26 ++0x1.7c3c148fa8c8fp33 ++-0x1.fd9c067d42344p25 ++-0x1.b93722d8573eap717 ++0x1.78daf3e05d2dep999 ++-0x1.1759c00e1539cp26 ++0x1.9cdc12562cdd8p0 ++0x1.0bbb00fcd3fcap-24 ++-0x1.2db1a21b9553cp26 ++-0x1.8cac849c4c14cp-14 ++0x1.20e652e2b31e5p-10 ++0x1.b871e12ae1a1cp523 ++0x1.e06945e6b136bp-1 ++-0x1.8b8870eefb9b2p6 ++-0x1.b692c7b8371d6p24 ++-0x1.90c2846a01900p31 ++0x1.9cd6c3cdf6af2p901 ++-0x1.1a9d210cc532fp23 ++-0x1.334ff5833e6c7p32 ++0x1.32b22205b182ap26 ++0x1.b63623cddd9a3p355 ++-0x1.003b72665acecp-5 ++-0x1.a39c1457f6db7p0 ++0x1.47209333843c4p4 ++-0x1.52f9a306b7dbcp-11 ++-0x1.4cdef0e2215dap22 ++-0x1.8504b5f49eaf5p538 ++-0x1.749866e19666bp28 ++-0x1.d770a34b092aep23 ++0x1.8f64b6b7d5992p16 ++-0x1.89bff2ce038f9p4 ++-0x1.6ba252e9fb2b1p5 ++0x1.4af34179805a3p0 ++0x1.5089668042774p9 ++-0x1.448240d8f0474p-19 ++-0x1.72c886f82bcb8p0 ++0x1.0960b155ba27ep814 ++-0x1.a13513169019ap24 ++-0x1.575773fdcb9fdp30 ++0x1.82fd844618c3bp0 ++-0x1.d64c423ea7fa5p-25 ++0x1.8b29a1a6c049bp5 ++-0x1.e6b4610657578p7 ++-0x1.401257d46dbd8p7 ++-0x1.9fff55074713dp0 ++-0x1.c95e85b6e7218p1 ++-0x1.4651a74f2b3d3p615 ++0x1.a9e7c5c808ecbp-26 ++-0x1.9ba7158986b2bp46 ++-0x1.5c655039f3748p24 ++0x1.b3b0b23e6a1d2p30 ++0x1.7295033ed096ep26 ++-0x1.4d7931d25197fp12 ++0x1.968f207ccf926p25 ++-0x1.93d7b0b7b7859p419 ++-0x1.e5f0c57320518p17 ++-0x1.a17e305c0d250p2 ++-0x1.541eb51e65168p932 ++-0x1.36367707fd0d7p28 ++-0x1.9ed6914905c92p-25 ++0x1.3c46e4b5f0410p10 ++0x1.629ba311169efp10 ++0x1.b790745db6677p999 ++0x1.08ebf45d987edp547 ++-0x1.d8c5051fe47d4p-1 ++0x1.94738125e02b5p907 ++0x1.aa0ce7ffd5ea7p9 ++-0x1.bed4e59348203p806 ++-0x1.41f0976d7f84cp21 ++0x1.6c848429f2c56p924 ++0x1.dcaed6b16da0ep800 ++0x1.adb6d492b974bp1 ++0x1.5a3ab5ecb42b9p22 ++0x1.0992e56329420p540 ++-0x1.b45d52586efc0p27 ++-0x1.b513872f9e108p8 ++-0x1.61b56231fa37cp522 ++-0x1.f38fb1bdbc53dp-11 ++-0x1.b70f1554498d9p49 ++0x1.75b9409a5eff5p28 ++-0x1.01efc62c97c1cp-19 ++0x1.27b536506d0cbp31 ++-0x1.d125456feb4c1p23 ++-0x1.19edb0407ceaap9 ++-0x1.15c9c7f0c69d9p16 ++-0x1.c32963b133dd2p45 ++0x1.6fa8f2041aba3p13 ++0x1.6a15556ab5bf1p-27 ++-0x1.375b96248e95ap629 ++-0x1.fd70c62ca1cc4p20 ++0x1.f53dc1f7f194dp40 ++0x1.1a33e660a7ed3p-22 ++-0x1.94bc6555a7c85p818 ++0x1.419555793d713p74 ++0x1.dd482322ed590p714 ++0x1.fb7ff0dcc63bfp-10 ++-0x1.af039600c8f91p24 ++0x1.767755fe16937p15 ++0x1.c2e47788f82c0p-20 ++0x1.de0757a27a2a0p990 ++0x1.fc40504c8efc7p274 ++0x1.56f37190581d9p15 ++-0x1.6a00039c1ded9p-27 ++0x1.385920f5fb50bp-17 ++-0x1.2ee5a2d829252p266 ++0x1.3511772922eb5p14 ++0x1.d77d763b7eec1p983 ++-0x1.3cb083116259cp9 ++0x1.e91ba1e8e7175p9 ++-0x1.a6b130fb1911bp848 ++0x1.a586d7a33557ep35 ++-0x1.592d642efd386p36 ++-0x1.48a3d6fe9d98fp18 ++0x1.304a33a14b6f1p0 ++-0x1.fd5d90db5e04ap21 ++0x1.f58fc63af014fp-2 ++-0x1.544891c6a1929p-7 ++-0x1.889fd1ca54008p18 ++0x1.cfe531a280790p25 ++0x1.720db29d32cb3p582 ++0x1.d0fdb1492e856p5 ++-0x1.d56587d8858a8p9 ++0x1.a97c6235bbdcfp0 ++-0x1.4dce63f19060fp217 ++-0x1.8a9771ecb1855p0 ++-0x1.023f571ba1300p33 ++0x1.598c20141d1f8p24 ++-0x1.115037892f8bfp25 ++0x1.e354332ab1ca7p346 ++0x1.0d27f1e52cfa3p102 ++-0x1.90e2e2c9434d0p47 ++-0x1.320164348c448p834 ++-0x1.ae1856db3911ep4 ++0x1.856b70cf9eae4p-21 ++-0x1.cdee4539c3a1cp16 ++-0x1.d00240ecaa28ep25 ++0x1.7265d25cb9ab5p0 ++-0x1.644f30279ec2ep16 ++0x1.44df430f5990ap6 ++-0x1.ac22a7e22ec86p4 ++-0x1.414fc579fa14ap15 ++0x1.6f74f627319b6p548 ++0x1.8849e2ffee284p42 ++-0x1.7cea50d8c8b5fp417 ++-0x1.986f67d38b434p0 ++-0x1.7e4044f0e0c65p-4 ++-0x1.b43eb556b532bp485 ++0x1.e2f103744c2fap-4 ++0x1.88ff52ba9330bp615 ++0x1.15db777586675p-9 ++0x1.ffbf701645e70p-1 ++0x1.8896a6f755077p34 ++-0x1.f0eb53cb17860p573 ++0x1.dc88960657275p28 ++-0x1.6af3872d10978p26 ++-0x1.db51518cc915ep9 ++-0x1.f1f4f230cbea7p14 ++-0x1.567352d25a29fp22 ++-0x1.6f6a60e8d7141p954 ++0x1.386626ca69274p23 ++0x1.30bc15e924ff3p26 ++-0x1.c601867be84dap676 ++-0x1.8c5cf7ac29180p941 ++0x1.9754c36e6ca27p-7 ++-0x1.d9167485813bcp4 ++0x1.8a9eb61165392p40 ++-0x1.df3b769ec4c96p-1 ++-0x1.aafc6751f5386p253 ++-0x1.b072707cc49e5p29 ++-0x1.b562e7eada4c3p45 ++0x1.1154b5e420252p20 ++-0x1.937f02df19998p0 ++-0x1.804dc53bf9844p933 ++-0x1.0267e6c4ce393p1 ++0x1.f2c7f1e6e1534p197 ++-0x1.55f2356cd0abap972 ++-0x1.eebc90d7dec4bp177 ++-0x1.650c65a8a6542p21 ++0x1.9826f11e25813p344 ++-0x1.3e070089db4e1p703 ++0x1.d88a20b249b8dp1005 ++0x1.44563581a1019p1 ++-0x1.b66482abc4601p29 ++0x1.829554468c236p12 ++-0x1.7f2f11a4e65b1p-17 ++0x1.c04c2222afa22p30 ++0x1.4dd7900e1a08dp9 ++-0x1.66bb03d2fbf4ap9 ++0x1.1752710b1f584p-3 ++-0x1.055de27bd3b43p21 ++-0x1.177c652007c06p1 ++-0x1.c4d410fc991ccp25 ++0x1.a53887384e01cp813 ++-0x1.7d36f1b5ee4b7p46 ++-0x1.8a3f57ff7521fp0 ++-0x1.2fcfb59864120p2 ++0x1.63bf91d1f143bp26 ++-0x1.1bc1e358d198ep56 ++-0x1.9adb13c70e083p396 ++-0x1.4e9ae34467457p-3 ++0x1.628da3632dc72p1003 ++-0x1.a01d83e08cfb9p-21 ++0x1.9854a0ff4c3c3p-9 ++-0x1.1894e1cc4b5c0p26 ++-0x1.b605c795c2cd5p45 ++-0x1.28016505a4ab7p19 ++-0x1.9c4a66c7f24a4p-24 ++0x1.26f715e1d2ef7p452 ++0x1.b66ee1e12b4ecp47 ++-0x1.fb7db206b4875p22 ++-0x1.a221962184559p15 ++-0x1.4315f238ebbbfp25 ++-0x1.44b0927e3dcb5p5 ++-0x1.6022167aa76c9p960 ++0x1.1259e16e64f7dp29 ++0x1.da683184db9ccp13 ++0x1.5e07800f8606ep21 ++0x1.30c430b6d2d47p394 ++-0x1.398662e38c15ap-26 ++-0x1.04edf4ca12198p3 ++0x1.a4d145fb27f2bp465 ++0x1.30bda21f3afa6p15 ++0x1.0ebb86cb6163fp927 ++0x1.01bca68bab9e1p-6 ++0x1.5dcff2791e7e2p-23 ++-0x1.7477f426ff684p0 ++-0x1.992ad047940bfp0 ++0x1.70c0d7fa4a49bp189 ++-0x1.9318a5d65755dp0 ++-0x1.91b161e6af6acp0 ++0x1.a51cf75f7df96p14 ++0x1.cad757aac0da3p25 ++-0x1.47af44137a0c3p940 ++-0x1.d3da77b5e1989p-5 ++-0x1.3173656fb06fap26 ++-0x1.9964b375b39cbp0 ++-0x1.500c76e1f87e0p18 ++-0x1.dcfa37b54ad38p18 ++-0x1.bcad45697b430p16 ++-0x1.7a8be3382c9a5p31 ++0x1.4a3a85b1486b2p0 ++-0x1.ccd230880d201p17 ++-0x1.c74536f317306p873 ++0x1.1f59624634972p826 ++-0x1.1e977673ce6f6p0 ++0x1.f9ed278dfc568p0 ++0x1.b5a1814d13bc2p23 ++-0x1.ef62a02276044p285 ++0x1.718856c9a1082p26 ++0x1.f7e3b2d10b444p4 ++-0x1.c41dc5c3b92f0p581 ++-0x1.2ce447adba33ep5 ++-0x1.6a15768a53241p29 ++0x1.cd9ba3f5a9474p938 ++-0x1.e753a161f7e24p104 ++-0x1.68b5a5b58c840p-11 ++0x1.267bc533526ecp23 ++-0x1.5ead471bb5306p22 ++-0x1.3618e2e425fdep23 ++-0x1.41b337f5c5f44p9 ++-0x1.6437239c568dfp243 ++-0x1.5f41d0fc227d0p-27 ++-0x1.6a89673ac0a5fp0 ++-0x1.4e2923e9941a7p-8 ++0x1.9700e4b914258p0 ++-0x1.de0e43654118ep659 ++-0x1.9f16a2675e209p-12 ++0x1.0eccb10931828p30 ++-0x1.a6d1862e5ab17p0 ++0x1.d6a1b57219403p18 ++-0x1.25c22185ff5fdp808 ++0x1.1e04b2fdb62a6p-18 ++0x1.a82b630c08134p0 ++0x1.18cb459f47a4ap31 ++0x1.77e887170bc28p0 ++-0x1.2b99174c675c6p847 ++0x1.9ddd3290f738dp9 ++0x1.4042e241ce62bp38 ++0x1.7ba716eb70543p35 ++-0x1.fb6b36a908fc7p157 ++-0x1.e5c7a7899d8dfp0 ++0x1.d222d21ce6da7p34 ++0x1.b87b679527a2ep14 ++-0x1.9abaa5ec33759p0 ++-0x1.37793205a45aap678 ++0x1.028c812928615p38 ++-0x1.feaab4fec9522p35 ++-0x1.b013e711ad8e0p-1 ++-0x1.33de92c99a948p526 ++0x1.752f25454e1bfp-25 ++-0x1.5559104e2af4ap42 ++-0x1.a569120980616p732 ++0x1.231e95b5db287p6 ++-0x1.48714153b9d5bp485 ++0x1.5f3cd25ed07ccp14 ++-0x1.3661771e7c25ep413 ++-0x1.8ee636d9e84dap21 ++-0x1.a599810bec6c0p19 ++0x1.0f3b961f24967p1 ++-0x1.1ed78232bd0ebp966 ++-0x1.7ca333893a545p9 ++-0x1.9b66327d0cb13p20 ++0x1.414327ade9b80p36 ++-0x1.c451b34ce3a1bp229 ++-0x1.ab62b00de54ebp906 ++-0x1.3b3791fe60796p28 ++-0x1.173ee0b983fd2p26 ++0x1.8f2ec3e1de32fp26 ++0x1.51bcd5ff9710ep353 ++0x1.ebaf95aef2672p1018 ++-0x1.751cd519e4a6dp0 ++-0x1.934f442067e49p0 ++-0x1.10e3913276d32p13 ++-0x1.f6b2a6a750390p24 ++-0x1.ae5b2603c4837p25 ++0x1.651942861820ap12 ++-0x1.7751460cb1104p27 ++-0x1.fe38f6d1c1756p23 ++-0x1.b17a57a6c2225p4 ++0x1.22e2f677963f1p35 ++-0x1.c406818f13a49p18 ++-0x1.f97e8481e23f1p-22 ++0x1.5cba77f17a861p37 ++-0x1.f476733bebfbbp-6 ++0x1.8258b766dee50p19 ++0x1.157fe5ff5048fp24 ++-0x1.d325f6274ab68p-12 ++-0x1.fddf647bdbeccp13 ++-0x1.c0ee32a9428dbp5 ++0x1.859d472c2aacap31 ++0x1.4880b54af8cf8p997 ++-0x1.b538b5c254d41p18 ++-0x1.677ac5634507dp21 ++0x1.815a103ec2700p95 ++0x1.32d130c393addp-21 ++-0x1.9ad38426fb1d4p14 ++-0x1.d809c40a02a12p-9 ++0x1.22da530cb9f27p14 ++0x1.cb2077ae707b1p6 ++0x1.32fcf058b7cc1p-25 ++0x1.e2e535f4c34a9p14 ++0x1.11f25046cd068p44 ++-0x1.418de55c6ae70p26 ++-0x1.aad2d3f89507fp530 ++-0x1.f88f75721f852p19 ++-0x1.f1d5a5aa4a842p-1 ++-0x1.3d902309ccfaep285 ++0x1.81c1606ce67d2p-9 ++-0x1.923fc4debf6e8p653 ++-0x1.6f31b3345c4d1p27 ++-0x1.c844d70062456p209 ++-0x1.97b2e18f6c883p0 ++0x1.f85c655d1c235p47 ++-0x1.4ba763d3c0937p20 ++-0x1.97e2e38237ddfp991 ++0x1.3701d45e325fap-15 ++-0x1.fceb0021c01aep-16 ++0x1.3929b7bbecc6fp19 ++-0x1.03c5042796010p938 ++0x1.e6a2b1ce3c89cp5 ++-0x1.8462c75fc795dp0 ++0x1.91a9b66ac4b2bp-2 ++0x1.a9adb0a7e864dp13 ++0x1.a222963d65a5fp18 ++0x1.fb3f11b5edae9p19 ++0x1.d279f26eb8775p-23 ++0x1.843003a410f87p585 ++-0x1.3781e023929a1p12 ++0x1.2f9ea3013e0c3p20 ++-0x1.65fb7629d55f9p618 ++0x1.5420d77378e62p1 ++-0x1.2c9cb0653355fp18 ++0x1.e5fec6e9b62cfp887 ++-0x1.04671129ac1b4p1 ++-0x1.8e99f30cb98e2p11 ++-0x1.80c376dbeab92p3 ++0x1.5d03e053a3f66p-13 ++0x1.6a609415d4822p3 ++0x1.4b0c946ec7a18p10 ++-0x1.6ce16241882f4p1008 ++-0x1.9ca3b5624a1f7p1 ++0x1.adeb34123b9a7p783 ++0x1.657df688fca05p4 ++0x1.7ec760fb6453ep971 ++-0x1.00bd533686e8ap8 ++0x1.ddc5b4c3146fap8 ++-0x1.dabfe4e152cc1p5 ++-0x1.9a83878c11a1bp195 ++-0x1.136c90eb454fdp38 ++-0x1.b129d413e2968p17 ++-0x1.bb21f5afd3c12p17 ++0x1.aeebb6948401fp25 ++-0x1.d10366f45a92ap5 ++0x1.66a9f0a63563fp19 ++0x1.8faa7348340a6p0 ++-0x1.5770156e64fe3p46 ++-0x1.0729f6a9d0fcdp5 ++-0x1.98c0e5d74567cp14 ++0x1.ba55a5ebf7965p36 ++0x1.1d6121dab3ef9p111 ++0x1.fa14c03e032b3p938 ++0x1.9c853700c2470p145 ++0x1.6a17454e5a6d1p-27 ++-0x1.1788b486450c5p1 ++0x1.edb9e180065b6p24 ++0x1.7b14f0a7c6c73p18 ++-0x1.40b0e4d7ee3b2p15 ++0x1.8711c71648cfcp16 ++-0x1.3e46a54242738p11 ++0x1.87dbb061d7c81p1 ++-0x1.6c23a559a0b0bp33 ++0x1.eedc82db40e8fp535 ++0x1.6e44b32d58e96p26 ++0x1.2ce240a6fb9e0p0 ++-0x1.8aa3e3dafbd1cp82 ++-0x1.be96c2479bfb8p6 ++-0x1.827e97ba4a30cp-19 ++-0x1.df8f04c1be1a0p8 ++0x1.9177448bb2b38p31 ++0x1.1048a637ba992p316 ++-0x1.3c865406d78e5p25 ++0x1.0bce74034850ap9 ++0x1.72cc021c86b4ap847 ++-0x1.935a854cd1476p-26 ++-0x1.c209c22dded2ap46 ++-0x1.bfa07289be7dfp-14 ++-0x1.9180653f54946p-18 ++-0x1.c135d03366185p15 ++-0x1.b40e326cb48f5p0 ++-0x1.c675728b6bb2dp1013 ++0x1.19da179d6babdp725 ++0x1.978d06c2067edp17 ++-0x1.cdb5141b33586p645 ++-0x1.9773558b653ecp25 ++0x1.3b567232f3129p632 ++-0x1.786a8125b5258p104 ++-0x1.5ed511cf3e2a8p11 ++-0x1.3f2b56cc2b7c4p806 ++-0x1.9c1a73744e1f5p34 ++-0x1.3c4627661ba9bp42 ++0x1.6fee415f36b1bp24 ++-0x1.f37db348601b2p47 ++0x1.48d277f108c4dp26 ++0x1.664a14b032392p-4 ++0x1.b50335690a9cep403 ++-0x1.327550e6d7fc6p307 ++0x1.6d0f1274d1dbdp541 ++0x1.1c10d39266f66p29 ++-0x1.5a7b45e2f574bp519 ++0x1.0ea38771f6368p22 ++-0x1.34aa02c4c29a6p276 ++-0x1.f3e1a33c418cep-25 ++0x1.30ede40680d9bp632 ++-0x1.030c57ef82307p854 ++-0x1.1f71476c9daf5p8 ++-0x1.dd4640ef11f44p-1 ++0x1.29f9e4b905d41p20 ++-0x1.c33d15648e005p23 ++0x1.6fb53008a6b5ep8 ++-0x1.19f050cc3775ap41 ++-0x1.141935fe4ebddp37 ++-0x1.06c48202a2cbdp0 ++0x1.e9a6e18ebee69p15 ++0x1.2967e001ffd42p22 ++-0x1.8c9c860e895d3p0 ++0x1.68db63ee856a6p16 ++0x1.39e5c24814662p-26 ++0x1.7766a41257495p0 ++-0x1.5e9c33d60ff5fp25 ++0x1.522da4c04faf8p8 ++-0x1.dba0a5618fbf4p34 ++-0x1.c0d3761bbcf56p-1 ++0x1.17a5f7795ad55p40 ++0x1.55f1834a06b07p704 ++0x1.3e78a1243c4fcp26 ++0x1.659c33e8bdffcp43 ++-0x1.f24077bc9318bp661 ++-0x1.ab7d700809e49p782 ++0x1.40584524cb947p0 ++0x1.997c3124d8d86p0 ++0x1.6498074e6f48ap18 ++-0x1.3cc550fa2907bp-16 ++-0x1.3c5527246d6e0p22 ++0x1.a9ca27fe5c9fap22 ++-0x1.28bbb66ee75c7p-24 ++0x1.3feb704d719c4p33 ++0x1.a85103490c12fp0 ++0x1.23edf714f214cp12 ++-0x1.f89114f814a26p10 ++-0x1.8b4005ac68fe8p40 ++0x1.d0c2c73a140f4p18 ++0x1.f12744da61839p938 ++-0x1.4972e012e3bf3p13 ++-0x1.5f6516206cdfcp36 ++-0x1.78f5a5f3d9d8ep13 ++0x1.abdad6b9b65ffp11 ++-0x1.628061c2a64c3p13 ++-0x1.36f50079f514cp26 ++-0x1.26cff62e0a07fp16 ++-0x1.3396e025b96fbp1 ++-0x1.de90b2fae57c1p994 ++0x1.8e5f7741ef5e3p923 ++0x1.9328e3f117564p152 ++-0x1.846ea1da5dc69p615 ++-0x1.4ef3442b14b4dp8 ++-0x1.930c272b3b81dp0 ++0x1.9937743f54e33p-6 ++0x1.64fbc187d66ddp38 ++0x1.653842167c192p12 ++-0x1.99a6209d27f46p10 ++0x1.8ccf525e85a45p25 ++-0x1.0e66241e41d8ep14 ++0x1.740b47e3b8ba6p354 ++-0x1.be957129fb4d2p30 ++0x1.e735d2e16e62dp16 ++0x1.e06c66d10af7ep2 ++-0x1.70c843db3c498p24 ++-0x1.356eb6baad693p592 ++0x1.ac5906747d463p22 ++-0x1.4c81404800155p-18 ++0x1.c24ba6d35df27p-1 ++-0x1.df3b814baebc5p-7 ++-0x1.4fbe7514e3468p4 ++-0x1.71a020b06860bp35 ++-0x1.7ea9145079ffdp0 ++-0x1.43f857a537751p8 ++-0x1.5be44475bd43cp12 ++0x1.55b1d5d904e1ep-24 ++-0x1.abd0b159d0c99p5 ++0x1.7dad06b80c10cp25 ++0x1.7b5dc3d6f8d01p0 ++0x1.1afd7477d74e6p24 ++-0x1.68b33313d93cap20 ++0x1.d68ef5c08f978p46 ++-0x1.256832b9bea68p-23 ++0x1.86deb6e0c31c7p24 ++-0x1.009863c410effp29 ++0x1.dec46182fd6afp25 ++-0x1.7cb163ac511e3p14 ++0x1.354831ca22ed5p19 ++0x1.3047707ea0defp-8 ++0x1.2c09254310224p1 ++-0x1.3d3c872e8b875p0 ++0x1.3fd2c5814d3c4p8 ++-0x1.9b7303763a412p555 ++-0x1.0e34256cf4983p12 ++-0x1.23e1a4d5f82aap22 ++-0x1.515492c6d3c3dp45 ++0x1.7007916be678cp-2 ++-0x1.569787a433b8bp814 ++-0x1.ec3d210f868dep-1 ++-0x1.6b75355e1f926p5 ++-0x1.625c03a0df70ap22 ++0x1.966563060d94ep40 ++-0x1.ba81f6776bb22p37 ++0x1.6cf5927b93cfcp-5 ++0x1.70cbc6b62c369p483 ++0x1.9e8c70de208cap19 ++-0x1.9f463097a5d99p11 ++-0x1.58c534ba51fb4p40 ++0x1.4f8b82099edeep26 ++0x1.d09bf7ba88cb7p24 ++-0x1.6c7af75665821p13 ++0x1.6e97b1ae6f120p17 ++-0x1.7bdcf42df8f3dp148 ++-0x1.2ee1e501c5c44p8 ++-0x1.c07117e66c01fp3 ++-0x1.b6624589e86f8p39 ++-0x1.3d3b360fdb23dp7 ++-0x1.2582b11ecc116p336 ++0x1.7481a321f5256p31 ++-0x1.222ab3691571ep19 ++-0x1.1e419246f958dp1 ++0x1.ab51c6feeab27p23 ++-0x1.7250449530cacp12 ++0x1.163fa61f55b34p4 ++0x1.8191c3fab648bp26 ++0x1.e574e641e9953p36 ++0x1.bcb7d57a8be21p19 ++-0x1.cdbdf1f04e27dp713 ++0x1.619bf59c7d8c9p-2 ++0x1.efd0252da4206p9 ++0x1.37a88102e8fb0p484 ++0x1.cc89f0ea997bfp-22 ++0x1.8dedf0760d306p629 ++-0x1.a13e8382b5f97p0 ++-0x1.a82aa369fc6ecp430 ++-0x1.beffb6d4defb8p-22 ++0x1.f1a644b10c6d9p7 ++0x1.9dfa508a997e0p7 ++0x1.0daa03637d98ap162 ++-0x1.b8c876b5e4a9dp0 ++0x1.ff125371e1bc4p-1 ++-0x1.949833005771cp0 ++0x1.c0c55430f9cbdp3 ++-0x1.714f570923bd4p926 ++-0x1.ab5b85f19aa66p0 ++-0x1.65c85390b2408p781 ++0x1.ec07655eaaf47p38 ++-0x1.e544715929a02p494 ++0x1.7ed0279df0f77p-17 ++0x1.6fb3a12754691p36 ++-0x1.41ab405178a11p142 ++-0x1.db6871f3c584dp0 ++-0x1.c0d186c2b6b34p25 ++-0x1.186545efdec01p15 ++-0x1.e4dd47a4fe36cp12 ++-0x1.2be85575eb960p9 ++-0x1.7514576624239p636 ++0x1.ca44724938996p20 ++0x1.c00ea79ff62a3p15 ++0x1.e4b5b4ced3371p18 ++-0x1.e802b666b8b3bp576 ++-0x1.0f58d230a2735p37 ++0x1.20b346f87c5fap5 ++0x1.0f1be20502191p13 ++0x1.d5b9262dfe8cep16 ++0x1.1c8e4596c422dp25 ++-0x1.3046a7fbcb787p28 ++0x1.c936670321b1bp624 ++-0x1.3b7c709a4d739p25 ++-0x1.3ad3b52b7a8bbp6 ++-0x1.9c77c3ed0da77p534 ++-0x1.b430a641670b4p9 ++0x1.bb4e427cf8f00p5 ++-0x1.bdd570ddd9f21p498 ++-0x1.5fffb06dce6d9p0 ++-0x1.31b725a7f4c50p-1 ++-0x1.4a5e165da5c90p257 ++-0x1.7a9d706ea21aap632 ++-0x1.c13902aa3b501p-16 ++-0x1.34378127441dep16 ++0x1.1899667507aa0p8 ++0x1.b2199455cf381p17 ++-0x1.4c1941a32328ap13 ++0x1.18f575bcb47d3p15 ++0x1.24c4f7f41c27fp17 ++-0x1.778b636eb24aap31 ++0x1.c76120a96993dp19 ++0x1.0900d47dafcf3p702 ++-0x1.89c9464bb2574p0 ++0x1.8504779144b5dp0 ++-0x1.726f662aba5b1p20 ++-0x1.1c5ca2fd655c3p26 ++0x1.b5b0544ca94dbp910 ++0x1.c9930669c935ep-18 ++-0x1.fa0ed41cc58c8p37 ++-0x1.6b60a27346578p-27 ++0x1.5219873f67d7cp12 ++-0x1.7a2c7684be1c6p0 ++-0x1.613492313ae4ap7 ++0x1.806334d1e4496p711 ++-0x1.88e563a4c9a58p7 ++0x1.33c076dccc763p13 ++0x1.11ed850120464p839 ++-0x1.75ea967c17be9p495 ++-0x1.ba72f7be7c7ccp14 ++0x1.7589e0d04c4b8p189 ++0x1.8417412710306p3 ++-0x1.cade31e811061p437 ++-0x1.974b573315304p-24 ++-0x1.ac42144bfc176p24 ++-0x1.7bed32fc75c59p11 ++-0x1.4825d5ba1f52bp13 ++-0x1.c3bbd693a499dp6 ++0x1.38c470d825bc5p3 ++0x1.4ed3556f8eb84p411 ++-0x1.a632636e736fep4 ++0x1.211be5b96be3ep-22 ++-0x1.8cdba14cb1ed8p12 ++-0x1.9a7b35414dc4dp16 ++-0x1.d5d9a0afa77cfp634 ++0x1.c34cb68989b32p17 ++-0x1.84ba041f02caap0 ++0x1.61a51738c63e5p18 ++-0x1.3f37a3e362c12p-5 ++-0x1.b0166656ecf80p20 ++0x1.45f4822152389p13 ++-0x1.ac54855cc74bfp25 ++0x1.b9ddc53febefap453 ++0x1.cfc301950d687p1015 ++0x1.1cb21718dca32p23 ++-0x1.232350a52c4f7p983 ++0x1.d6e6a10d548e5p23 ++0x1.977056a2668eap292 ++-0x1.ffc1c328d34b1p3 ++0x1.91d0e100810d6p-9 ++-0x1.3e0756498d337p1 ++-0x1.b68aa43ff9110p45 ++0x1.a53200b957e9dp-6 ++-0x1.c39415555077fp-6 ++-0x1.aef7328553c7cp0 ++0x1.f2059429fcdd8p23 ++0x1.8a50e7c0eec78p17 ++-0x1.c21e6658d1fe7p-1 ++0x1.9ce192ed63b28p23 ++0x1.da1012047ba28p41 ++-0x1.b09f87dd277f2p10 ++0x1.e58ab4f8ef73fp22 ++0x1.9672675520b23p0 ++0x1.010b17f807152p45 ++-0x1.92d967fe78b7dp831 ++-0x1.a71196fb66603p303 ++-0x1.2786d24ce59c8p-20 ++-0x1.ad6e7205f5d75p150 ++-0x1.6c9037f2ec353p44 ++-0x1.800ee1d7cd409p914 ++-0x1.cac7e495263ffp605 ++-0x1.d6a7e7ccedfefp796 ++-0x1.1ee981d337986p-9 ++0x1.bbb3427565a92p474 ++-0x1.c42631df1cefap44 ++-0x1.e04a92f8f896bp-1 ++0x1.d2a2e5778cc7ep899 ++-0x1.bc30d7beea737p986 ++-0x1.7ede11aa7d47fp18 ++-0x1.489a02a167b04p32 ++-0x1.9257b27ecc0d6p6 ++0x1.12ab65c6d3b81p46 ++0x1.d50d624f63097p24 ++0x1.e88f961d0afddp23 ++-0x1.1f8fd098fdee0p-14 ++-0x1.5c8862170e148p-16 ++-0x1.abd9759e682c6p4 ++-0x1.f1ac241ecfa70p-16 ++-0x1.bf27001863e98p558 ++-0x1.c3a843ee1f309p15 ++-0x1.5458e7f6ecfeap22 ++0x1.af31467613f65p0 ++0x1.665d563797d5ap13 ++0x1.f305a29da24c2p4 ++-0x1.4062318aed418p12 ++0x1.7b7721549420bp0 ++-0x1.ed9ce71907bf6p15 ++-0x1.95a9a284af0c1p843 ++-0x1.0f46820718da8p16 ++0x1.305e23b30adf3p859 ++0x1.3c1fb3275314dp15 ++0x1.e58eb396e0188p31 ++-0x1.7c43c46f53c30p8 ++0x1.4cd3202666397p-6 ++-0x1.ca6216ef28d3ep784 ++-0x1.7435667810fd5p-20 ++-0x1.adf8179db7d4dp23 ++-0x1.dc08b58090270p28 ++0x1.d1f4356f2e4a6p27 ++0x1.eb1f447c6659cp13 ++0x1.f2d524e96e3f9p523 ++0x1.1ca5d135f4a81p5 ++-0x1.b7cd435089283p499 ++0x1.9b3f745c109c0p25 ++-0x1.aebc724bc9f13p917 ++-0x1.0cba50c3750c5p922 ++0x1.5f59539f3c424p8 ++-0x1.08889270ebac4p549 ++0x1.d6d2815236c18p37 ++-0x1.f53a4227c3cbbp10 ++0x1.8d29342fe90aap22 ++-0x1.491bf16e3b738p36 ++0x1.8fb153cddee3cp34 ++0x1.cad7f140e42e8p1020 ++0x1.0ae2e6fd71d2cp30 ++-0x1.e84ee3f73d212p-1 ++-0x1.7231326f8e61fp650 ++0x1.ac0311909abe5p966 ++0x1.d5f7e441a9096p411 ++-0x1.75e293eb1043dp24 ++0x1.7be84683271cep572 ++0x1.5f8ff3c680e11p36 ++0x1.cf03874ee3db3p334 ++-0x1.58c8c1e8be2edp632 ++-0x1.baee66c1245c4p9 ++0x1.8ced030bb09e6p108 ++-0x1.fda225f8ecb2dp368 ++0x1.63d8c15566bc3p-1 ++0x1.9bbd74b01b538p2 ++-0x1.16ed44021834bp12 ++-0x1.0235450de863ap29 ++0x1.9428b5952ead7p23 ++0x1.a512872ac8875p0 ++-0x1.8f7e94f6ce64ep-24 ++0x1.9d9de34f631a6p0 ++0x1.02ee55a75cb5dp-3 ++-0x1.0b6532e2c6919p-24 ++0x1.9caaa1946b56dp0 ++-0x1.efc845be18280p258 ++-0x1.4177b13af435cp16 ++0x1.564ad7ff494fep20 ++-0x1.21e081ad2d02cp312 ++-0x1.a4da0315686e9p0 ++0x1.663bb46627e4bp40 ++0x1.618f84e86d1aep22 ++0x1.4dedf383d4291p888 ++-0x1.bb9d0678f7888p3 ++0x1.5319a1e934edap186 ++0x1.1c0897fc41663p10 ++0x1.8b6dd26fc7f0cp21 ++-0x1.342a0316bd81bp20 ++-0x1.ca34766b88f7bp553 ++0x1.8a65224d8b44fp188 ++-0x1.3637e3eee59b1p-24 ++0x1.549801faaed00p14 ++-0x1.a08912a6fa581p39 ++-0x1.06bd137276b59p226 ++0x1.4368a18959df2p17 ++-0x1.b4bca5db9d268p-1 ++0x1.394126b0c3cf8p3 ++-0x1.8654666821399p831 ++-0x1.f79af4f836b2cp21 ++0x1.9942b024fb0d3p0 ++-0x1.1ebad7277d725p-12 ++-0x1.fedb203dad286p19 ++-0x1.40a4d27a54422p29 ++-0x1.a27013a6b5db3p-16 ++-0x1.eca7e4e273765p951 ++-0x1.dedf0543ecdcfp12 ++0x1.7b7ec1819cff0p24 ++0x1.064b131f15337p24 ++-0x1.a5f5949b9f801p9 ++0x1.a3bcf0c3c2f0cp184 ++-0x1.83b94461ba34ap-6 ++-0x1.5992353ea24efp17 ++-0x1.194a036ff1ae4p43 ++0x1.e0d7d07382e99p42 ++0x1.8ad3f033a34f7p31 ++-0x1.c9fdd72e0cce7p8 ++0x1.ac66c27ae4518p-14 ++0x1.1aad20c97ef2bp-24 ++0x1.c687a7e1b3bb2p771 ++0x1.02ce270f74c87p-10 ++0x1.1562759c45e83p-2 ++-0x1.5bf0b43affc94p40 ++-0x1.eb88d184013f1p25 ++-0x1.bcd3d71c4a84dp15 ++-0x1.feb5845a4017ep2 ++-0x1.6e1c807e05452p36 ++0x1.450494828da68p25 ++0x1.7fe6d347bc643p75 ++-0x1.1b70f1ea5a1a4p23 ++-0x1.2171070c39370p460 ++0x1.c0bfd441a9070p172 ++-0x1.dff6d1ed042eap155 ++0x1.1064c4ba80b64p916 ++-0x1.ef5113553c112p310 ++0x1.8dcbe38231eafp-11 ++0x1.48d1a6fc900a2p519 ++-0x1.bce42351af42dp20 ++0x1.a169a56cb6b12p-13 ++-0x1.750fd2fdd73d5p-25 ++0x1.b92933b734341p24 ++0x1.a50cf516689b3p19 ++0x1.5de0c597781e3p17 ++0x1.bd70b0b71c3e5p351 ++0x1.eacc7731e857cp495 ++0x1.a3fb42a165580p22 ++-0x1.8f76c56e255b4p-14 ++-0x1.9fbdb32a35c6cp141 ++0x1.c3c477621a74bp378 ++-0x1.8c380783af50ap2 ++-0x1.a05d50261fe1fp5 ++0x1.e088235d1a76dp25 ++0x1.5011713801c4dp5 ++0x1.264d4420ae3abp15 ++-0x1.d2ac4569a1c6ap785 ++0x1.0411b74a91529p199 ++-0x1.4657b01035e58p26 ++-0x1.d25ad603e04e0p23 ++-0x1.0bfd05a085350p26 ++-0x1.974fb15d3aa9bp10 ++-0x1.06b730454c09ap1 ++0x1.20a7a61fe0c14p23 ++0x1.2a3e5568a88d1p-15 ++0x1.478f810da74a7p34 ++0x1.13486653f1c89p0 ++0x1.37e3105c65d09p2 ++0x1.d8db173b39e12p685 ++0x1.f33e80726ece4p-1 ++-0x1.27e633778cc62p-9 ++0x1.f4af54734e49ep36 ++0x1.94e76082b3cfep20 ++0x1.bf1ca6e0f5864p23 ++-0x1.901a9197545a8p0 ++0x1.132c37fab90d3p-16 ++0x1.83d2770599e1cp470 ++0x1.2091760b362aap-5 ++0x1.04e4c158364eap250 ++-0x1.c44196bcbc78ep23 ++-0x1.7698c2d4504ecp0 ++0x1.74db0716d3237p857 ++0x1.86c78536631bcp0 ++-0x1.28dad63946e6bp21 ++0x1.3fb691eee1a19p24 ++-0x1.3a048091bbb1cp21 ++-0x1.fc9b13357eec8p14 ++-0x1.11f6d7b366483p-4 ++-0x1.1d2690d2fc3c9p13 ++-0x1.b404c2560d76ep34 ++0x1.f7ed62a6e49d8p18 ++0x1.7245829fb1c45p500 ++-0x1.27b61792a550dp581 ++-0x1.e51cb307c265cp20 ++0x1.f12564eb04cecp0 ++0x1.fb9b7593d9ae8p843 ++0x1.94abf50c1ae27p26 ++-0x1.bb7a62f317dccp221 ++-0x1.659ae30b4af07p674 ++0x1.eeda462ccc67cp9 ++-0x1.d6ec454444ad5p30 ++0x1.edc3b03486bc9p-1 ++0x1.8c359325387c4p169 ++0x1.a46ec36418dfbp0 ++-0x1.668df7872660ap231 ++-0x1.7a3f30b53dbbdp20 ++-0x1.186542f9de11ap13 ++-0x1.ac3103ff8d0dep956 ++-0x1.1701e1f4b7a28p45 ++-0x1.a77534a41661bp26 ++-0x1.805b83ca4a983p741 ++0x1.9b8e34cafe7d1p237 ++-0x1.7d6591476c813p11 ++0x1.2564573a6270ep10 ++-0x1.34d5721bd9e2fp205 ++-0x1.2d24c4f0d1402p21 ++0x1.3975d02ae228ap26 ++-0x1.c520231d589a8p12 ++0x1.841ed75a75d69p0 ++-0x1.6c6be6fa5913ep39 ++0x1.c44db37db2cafp267 ++0x1.92d8e08dcc638p24 ++0x1.87c7a090d5ce1p-16 ++0x1.3130f2cb35283p773 ++0x1.87fc94babfa17p14 ++-0x1.35d156f2365eap663 ++0x1.7f0c71af5cf7fp-2 ++0x1.c1171538bad68p509 ++-0x1.6d8c4522af157p8 ++0x1.6923c7c62dd28p43 ++-0x1.cc29d0dd1d0a8p7 ++0x1.b35e40c13ab28p12 ++-0x1.9771f23aa28b8p2 ++0x1.fc625426d9743p-1 ++0x1.f2eac0a3b585bp18 ++0x1.1bf6e59ca97eap-26 ++-0x1.1a5641181130dp574 ++0x1.c65aa7a45b0efp25 ++0x1.db74347a72291p23 ++0x1.82abe2590802fp0 ++-0x1.021815669b26cp643 ++-0x1.4b5f153d3a4a7p37 ++-0x1.3ffba4bbd1cf6p15 ++-0x1.06b1963b06e9fp75 ++0x1.1f230613bbeacp18 ++0x1.65da91ad037c7p25 ++0x1.efbe10dba52b5p690 ++0x1.dc82d7dbf1ef2p4 ++-0x1.a78d8512d1313p5 ++-0x1.87f2d6caba40cp20 ++0x1.6e4bb6102226ap500 ++0x1.a88fe25344e53p45 ++-0x1.cf03e69d00b76p16 ++-0x1.a69333452a9c5p12 ++0x1.dd2e13a94b242p6 ++-0x1.ce73036c98611p23 ++0x1.91e9d1ac14305p10 ++-0x1.68e6a230c0c32p26 ++-0x1.167d022857473p12 ++-0x1.c4d8a56a3c59fp21 ++0x1.76fd938c01180p0 ++-0x1.9f3023d3fe5cfp-9 ++-0x1.25c1b071f9f0ep744 ++0x1.d3a0d06d79bd8p447 ++-0x1.205561bc373c0p70 ++-0x1.bb14c219cf119p39 ++0x1.3fc332e6a45d1p1001 ++0x1.a94ac5e537ddcp31 ++-0x1.455b03fb1f252p19 ++-0x1.398ff64a119b4p164 ++0x1.a6d3422953772p7 ++0x1.e4f53738724b7p35 ++-0x1.e3c923a871c32p20 ++0x1.3f7a33b9f877cp625 ++-0x1.b08cd29c8af3cp41 ++0x1.41e0545a9fd41p44 ++-0x1.37adf744bfbf4p781 ++-0x1.f9b3e0086091dp-9 ++0x1.c7cd625a6ffd9p27 ++0x1.44dac65c6e037p527 ++-0x1.b465f6c0968a6p0 ++0x1.145960c880918p400 ++0x1.bdda37840188cp16 ++0x1.31f306f18f6bbp3 ++0x1.4e51a42a59d1dp465 ++-0x1.84b5b6411630dp-9 ++0x1.b91e57055ad75p9 ++0x1.4873658bb25a1p27 ++-0x1.f03661c52ba71p15 ++-0x1.eacd674476419p5 ++0x1.aaae40a57b08ap41 ++-0x1.549d609dbc23ep7 ++0x1.b9b6227653d8dp4 ++-0x1.1bded0f0b7680p561 ++-0x1.e92355003abc3p-20 ++0x1.dad677e6137b5p29 ++-0x1.e196a69741820p21 ++-0x1.635324c3f6b71p45 ++-0x1.0e1687acad9b8p823 ++0x1.a1d7a6774c9a9p0 ++0x1.cbca47ac9b582p11 ++-0x1.acda422c4bea7p-7 ++0x1.621f73a497a57p-16 ++-0x1.b8c9242605781p864 ++-0x1.db3792a5149fbp0 ++0x1.8862c65ee2160p-17 ++0x1.d6dd16228de1fp-10 ++-0x1.b88502e85c4e6p3 ++-0x1.c1a4c6ca9cb90p23 ++-0x1.cc1cf066e7a33p25 ++-0x1.b5e1749178cf6p744 ++0x1.dfc7054b12578p12 ++-0x1.29ec85df3a58cp334 ++-0x1.85b8b0c95dbd5p13 ++0x1.7257e1349b295p33 ++0x1.9d85520001790p129 ++-0x1.793fe72cc8c1bp215 ++0x1.739df4f1e7750p25 ++-0x1.a98cd0bd8bf08p22 ++0x1.cd8da092fb8dap89 ++0x1.8c16c534ebb2bp-11 ++-0x1.abb2c2ad80b34p14 ++0x1.2de7338716d92p-18 ++0x1.9211d060f4465p-3 ++-0x1.72fc35651040dp0 ++0x1.2a26d2667b91cp29 ++-0x1.f4b0d40e31bbcp19 ++0x1.fbbe40d2d31c3p25 ++-0x1.9f4c04b486a5ep19 ++-0x1.45193205aa9c4p164 ++-0x1.37a8b60e2d5cep6 ++-0x1.3988f220e6441p-26 ++0x1.493d31fd3c02ap82 ++0x1.2b3340bd6f2a1p39 ++-0x1.54cbb04f2304ap-1 ++0x1.926940fdef273p38 ++-0x1.45ea2765ca2dfp24 ++-0x1.ed0821bb849eep479 ++0x1.4fba868adf04bp16 ++-0x1.e9d417e0bc17cp0 ++-0x1.f4f965b3faf30p17 ++0x1.7d7f77efe5d3fp23 ++0x1.50cfc50c2f640p24 ++-0x1.cf1df3c5ffe17p46 ++0x1.f936b6dca473cp211 ++-0x1.8a1406e6ee482p11 ++0x1.463197698d0d5p101 ++0x1.2409659b805cep7 ++-0x1.3b3d65813a051p191 ++0x1.06ce059e85ca0p0 ++0x1.b60c06f9f5398p6 ++0x1.d60fe7ff7c31cp12 ++-0x1.07b0f652e0470p5 ++-0x1.4580b6d0afe76p50 ++0x1.e21807ed764cep-18 ++0x1.fdc865ca4cd63p-1 ++-0x1.c499a71b0ca05p269 ++0x1.0d75e2b8a7955p160 ++0x1.6a04420a71954p-27 ++0x1.763e053587862p7 ++-0x1.39ef5367547b0p5 ++-0x1.2b2e67b7a8bcfp24 ++0x1.86f6e7b54f573p2 ++0x1.c2b6e3acd3d96p35 ++-0x1.e97ef093600a2p11 ++-0x1.c572f3826cf29p980 ++0x1.796b642ff617cp-3 ++0x1.601b631f840c9p-14 ++-0x1.8eba049870e51p902 ++-0x1.3b17c1c67a109p25 ++0x1.d305139f10a36p17 ++0x1.ec817466d70a7p0 ++-0x1.1265c21b2d99fp245 ++0x1.d1fe37e14bb77p-1 ++-0x1.f178f690d9f42p6 ++0x1.40e3362b70ed9p481 ++-0x1.6a04a793aaf0fp-12 ++-0x1.8245c6bdd8165p16 ++-0x1.7264a53f935a8p10 ++-0x1.13fba79ae44ccp18 ++-0x1.eb9557cea7ac8p0 ++-0x1.8ec847721bf13p26 ++0x1.74d974321f101p-12 ++-0x1.bb1c86a8ca6a4p35 ++-0x1.0c4b1052754aep459 ++0x1.067f874c51947p15 ++-0x1.9cdeb085dbf66p-25 ++0x1.e03a470b607f6p32 ++0x1.3f70e0d5faf68p782 ++-0x1.0d7ac25499901p39 ++-0x1.d0c8711803183p-4 ++0x1.dddfb43ab15dbp49 ++0x1.80dc4549bc143p-2 ++-0x1.8432c6e6dbcb8p46 ++-0x1.e7a2c04ccff8ep46 ++-0x1.453a2503dad3bp-26 ++0x1.3bf04538c0bcfp706 ++0x1.b909a6eac3c92p21 ++-0x1.7a6db4a0188cap9 ++-0x1.1d3e80b32c07ep-11 ++-0x1.43fbf1bf87d6ap978 ++-0x1.d24c3457d0d3cp15 ++0x1.106e24eadb4efp207 ++-0x1.291f20d923034p-15 ++0x1.910ca4ab8908dp12 ++-0x1.8f25f39b6831dp-23 ++-0x1.eb0a55dd34df9p25 ++-0x1.6aa47787b6253p834 ++-0x1.7574d59d3717bp41 ++-0x1.cf28f24daf9f0p234 ++0x1.7760660a714d0p0 ++-0x1.a38422219ffe8p25 ++0x1.52d2453a853c0p47 ++0x1.905551119e9e1p930 ++-0x1.5f7e4096319e3p844 ++0x1.9c7951ed1ddf7p11 ++0x1.a16287317c9fcp879 ++-0x1.0804647cb4089p-1 ++0x1.a886323cf0d4ap512 ++0x1.1ff6b66d5ebe7p41 ++0x1.4ab1627ed8fe0p12 ++-0x1.a32a8757fb5eep542 ++0x1.5f89860e18209p24 ++0x1.7dcfd293f582ap-8 ++-0x1.13f813514eaafp591 ++-0x1.e5e046e81a4a0p315 ++0x1.f4b365dbf8bf5p874 ++0x1.c8a4e5e39c9c2p1018 ++0x1.fa6c62b3010cep649 ++0x1.c2de84df7c3e5p934 ++0x1.af51a42607dc8p-18 ++0x1.88a3d1f1000cfp874 ++-0x1.7a4744d42926cp0 ++0x1.aa8de5d123c00p-1 ++-0x1.5255469b0b1a0p21 ++-0x1.ddce133b21c51p426 ++-0x1.324320eae37c5p23 ++0x1.ae4c1209db983p-5 ++-0x1.b856a600fbd98p38 ++0x1.6f4d04c321f75p21 ++0x1.01475416807a5p9 ++0x1.9d38235f415fdp-13 ++0x1.206ec06d9ab68p-10 ++0x1.bb75b35deec78p33 ++-0x1.1696b22d64f95p113 ++0x1.c1df8560b5cbdp18 ++0x1.52a872c448619p39 ++-0x1.1ef841f17fc34p85 ++-0x1.f133c2e3045d9p-2 ++-0x1.129596a5af08ap-7 ++-0x1.c93715d49ac3ap41 ++0x1.603ac7f2c733dp10 ++-0x1.d3fbb47476501p143 ++-0x1.8cacb5e52c001p26 ++-0x1.a3c87118d19b3p33 ++0x1.222aa2db4190ap25 ++-0x1.5409a38a92aa7p872 ++0x1.38cf32c6b7d09p-9 ++0x1.a4ec535aa90d5p25 ++-0x1.42daf51bf5934p839 ++-0x1.316b8421f5fd1p-15 ++0x1.b1f814b0326e5p697 ++0x1.a9ffc120ca209p668 ++0x1.d058e125f023fp790 ++-0x1.5112b5102f58ep137 ++-0x1.4202328599a61p29 ++0x1.da41b5d447aa6p454 ++-0x1.ef77a65167e5cp24 ++-0x1.0e6276669fc5bp32 ++0x1.b0a6d77eb6c83p-4 ++0x1.1a345788bd44dp546 ++0x1.41f4053900144p-19 ++0x1.057f512cc3bc7p14 ++0x1.6e8b02db1ffd6p105 ++0x1.7ce35635e252ap0 ++-0x1.b96b40b776baep24 ++0x1.ff4ab03720fa9p-4 ++-0x1.adf7c2f3f7875p14 ++0x1.e870529e21dcfp17 ++0x1.d63b208262928p25 ++-0x1.3891962477405p7 ++-0x1.437ff414d0fa9p19 ++-0x1.291a550edea92p5 ++0x1.9ec093b7eb3b2p375 ++-0x1.8ed4f1b3bafe7p626 ++-0x1.b41a54850cf23p712 ++-0x1.a6bc42ea33f9fp767 ++-0x1.2d9bb56ea445ap35 ++-0x1.aece85e37b54ap0 ++0x1.246751c26d13bp296 ++0x1.f2e7f697a2d1fp29 ++0x1.6c37a490520bcp26 ++-0x1.ff8603bbcf498p2 ++0x1.362023b6cd6b2p31 ++0x1.cf2d87e53206ap0 ++0x1.8fe7a627af176p9 ++0x1.8a1ba043b40b9p6 ++-0x1.8615b0b70103fp0 ++0x1.7db401923e93dp923 ++0x1.6f54e4a864f17p0 ++-0x1.86c5665be0ef3p43 ++0x1.6b5066bfcc388p26 ++0x1.20d1f69be6b86p3 ++-0x1.d177e68f841d5p-1 ++0x1.fc49110300d0dp-2 ++-0x1.bd5bb6e1c5f43p-1 ++-0x1.139a94e47ca10p-9 ++-0x1.ac36349c2d3e8p6 ++0x1.7698522ba5c25p216 ++-0x1.62a700634c519p228 ++0x1.dc4a17d8c584ep-13 ++-0x1.052aa2ae959adp25 ++0x1.d6adb0d709d68p17 ++-0x1.0c4c506cc6c2bp79 ++0x1.7977c290c1798p0 ++-0x1.684b477bd74e1p39 ++0x1.bae964ed32d31p-2 ++-0x1.aa5d80bdd8324p24 ++0x1.b8ba85fbfb8adp21 ++0x1.e4eb26b6aaa01p20 ++-0x1.ec2a365168686p41 ++0x1.28dcc3ac950f9p173 ++-0x1.906e052eb7470p-20 ++-0x1.707e251ce768ap440 ++-0x1.821b023683ae3p37 ++-0x1.4db457ffe8a62p742 ++0x1.0670c3d7576b1p8 ++-0x1.f44a632b6a2d4p2 ++-0x1.b75b407bea318p-1 ++0x1.507f63e62851ep-25 ++0x1.bd10460d75116p15 ++0x1.fc3ba353f04b8p13 ++-0x1.2af436412167ap34 ++0x1.8e58408a0b161p30 ++-0x1.cb1884deacccap677 ++0x1.112e30c8147d8p288 ++-0x1.03a724eaa0da3p14 ++-0x1.58a7a7304d337p4 ++-0x1.d3d8600450d2fp46 ++0x1.6784927c4db75p3 ++0x1.925e011c2be99p-19 ++0x1.ebfaf6c6dfd75p-1 ++-0x1.0730625f34e2cp622 ++-0x1.0c78f6f77f4a0p16 ++0x1.4e7226251590fp34 ++0x1.c2d2c2bcfe176p45 ++0x1.92a40269de752p262 ++-0x1.6b17d4e0e4095p47 ++-0x1.b35df39dbe7bap23 ++-0x1.2433941ea6c1dp181 ++-0x1.156bc71aaf929p26 ++-0x1.c0a2337b73d37p-25 ++0x1.c4a1144dd5788p47 ++0x1.61d1b135895c0p26 ++0x1.defc76272ee65p473 ++0x1.d28a2698c470dp0 ++0x1.94f6142bed738p0 ++-0x1.7f782459fa34fp18 ++-0x1.a68016b127852p46 ++-0x1.8c8512f7601a6p559 ++-0x1.296f002678629p0 ++-0x1.6713546c2b7dcp24 ++0x1.5820400b8ca32p-17 ++-0x1.986947ed54745p28 ++0x1.5589220a8d908p2 ++-0x1.bb73c7db6c6b5p18 ++0x1.57545758dc374p1020 ++0x1.3c61573e1df6cp860 ++0x1.b5ba913c8b04ap43 ++0x1.152d60fff636ap25 ++0x1.9dfde0143fc3bp664 ++0x1.8002f4ae0cd26p546 ++-0x1.5555972687f97p44 ++0x1.d4cd0108a77b8p-22 ++0x1.d605a75200cfdp799 ++0x1.8f1ed35661061p13 ++-0x1.aa357490e4b15p16 ++0x1.c616b347d6c7cp47 ++-0x1.5c1bb32908a9dp37 ++0x1.3e63c3071d00ep10 ++0x1.f6a851a65eb40p16 ++-0x1.09293376e5ff7p3 ++-0x1.d28c834a48febp-1 ++0x1.5d1f711534ffap8 ++-0x1.ab58768a06b4fp0 ++-0x1.c305e4720570cp1 ++-0x1.fd01f697e68f3p6 ++0x1.20aa374d16fa9p-7 ++-0x1.640d51133a28dp7 ++-0x1.4cbd82a906116p-20 ++0x1.e728b313e9290p20 ++0x1.2f00b66b200eep2 ++0x1.e70cd0870834dp22 ++-0x1.424f62131a07dp440 ++-0x1.8ffdb1a359d44p8 ++-0x1.d14c66613a0afp47 ++-0x1.bb9dc4d8f0b60p23 ++0x1.8cfc42cbf93fep21 ++-0x1.bff987c5b24f7p40 ++0x1.acb444767500cp404 ++-0x1.e3a3278c0889cp615 ++-0x1.c7c03410ee559p1 ++0x1.1aeb262f169afp9 ++-0x1.c00d57ef36176p16 ++-0x1.54b5c337ab8c7p26 ++-0x1.fca5308d5a5f0p-1 ++-0x1.ee65a575ad332p6 ++-0x1.73d3b5be2d412p4 ++0x1.994532de92cc3p288 ++-0x1.7b3b402cd684ap672 ++-0x1.5581914c736a3p26 ++0x1.8691a1510a8ddp26 ++0x1.439e202ffc78ap31 ++-0x1.00f1f1c0a534dp5 ++-0x1.e787a060a1beap-1 ++-0x1.a40b4564248ddp33 ++0x1.9db0f66a7c69ap758 ++-0x1.29df95676f2f3p29 ++-0x1.c1e2a39fad4f9p30 ++-0x1.2398052cf9970p5 ++0x1.9584270d98e8ap34 ++-0x1.9c3a8363c08d6p-9 ++-0x1.c3ae6326607b1p0 ++0x1.0e33e435785a9p24 ++0x1.3e1547010b972p30 ++-0x1.00e45198f46adp12 ++0x1.cab9d2d70a0ecp176 ++0x1.3cad136952e75p0 ++-0x1.b690f763014a7p-1 ++0x1.5d5f04e7e601ap840 ++0x1.687d04cf256e2p17 ++0x1.fef58250afa5ap733 ++0x1.bf55465c8726dp10 ++-0x1.879cf61bde347p0 ++0x1.41fa061534bfbp1000 ++-0x1.3547166ae0563p18 ++-0x1.29b792c792304p0 ++0x1.44f0c244630e4p4 ++0x1.b44fa2fd3ba45p-10 ++-0x1.ee70d4ee2a313p20 ++0x1.e09a910e6fec6p47 ++0x1.df08c242a0825p41 ++0x1.1b9f438519594p25 ++-0x1.009e65b886832p23 ++-0x1.b211e177c4878p-25 ++0x1.cf4f511036953p-22 ++-0x1.a331a056fd10dp15 ++0x1.78b95045b3821p20 ++0x1.9741d0c92a811p19 ++0x1.0799369efbf5ep23 ++-0x1.aa78545af6518p25 ++0x1.a4f3e0e422feep826 ++-0x1.67f8d1c373dd4p871 ++-0x1.e4d67454ffbcbp11 ++-0x1.c55dd363dd674p3 ++0x1.6402e3d9defaap15 ++0x1.8b5f257d1ec68p-16 ++0x1.af29726910ee4p42 ++0x1.99bc46ffb746dp0 ++-0x1.a1375601023eep810 ++0x1.85c587e566703p737 ++-0x1.f7c1e1a4d0636p-4 ++0x1.969d9183c03dbp558 ++0x1.f049b22399098p34 ++0x1.943ec10617417p5 ++-0x1.e2dd46c8c4c7ap353 ++0x1.fda825f2618b4p4 ++0x1.be0c71a4be7fap24 ++0x1.253fc5016e602p26 ++-0x1.f40770706a468p19 ++0x1.a93453e7eedafp544 ++0x1.4cbf20bbaffe4p0 ++0x1.8523e43195d20p0 ++0x1.ef3fe0d51ca0ap869 ++-0x1.7bfd906b4bc4cp0 ++-0x1.eb85c2e781ca5p834 ++-0x1.c72973927a11bp11 ++-0x1.07bc71bed30b3p39 ++0x1.ca2691e190f22p-24 ++0x1.cb48f51c1417ep44 ++-0x1.567c86970707bp44 ++-0x1.1328459387024p19 ++0x1.8dbca5e6ae26bp-20 ++-0x1.0ea782b471c95p7 ++0x1.885d949bd233ep25 ++0x1.5706b40d7d8d3p-11 ++-0x1.99ffd54628c49p0 ++0x1.4dd434ac6f7e8p150 ++0x1.e33c777463aa2p25 ++-0x1.f7ee12177cdddp285 ++-0x1.13f2e7648aeb4p8 ++-0x1.bb3e114af14ffp386 ++0x1.0ea653cfc5144p86 ++-0x1.97afd730cab3ap0 ++-0x1.1b4a96ad1229ep44 ++0x1.e6b573ec87b1bp172 ++0x1.2f0542b4e0611p533 ++-0x1.b95a733cdd7ddp20 ++-0x1.d47cf66eebb8ep-15 ++0x1.78f0b5f53a39cp33 ++-0x1.8c35d7a87e6fep18 ++-0x1.5273b2382ccd0p15 ++0x1.286441ca5714dp-20 ++0x1.136ee1c73224fp872 ++-0x1.96c0235d8d55cp24 ++-0x1.732f95c827773p35 ++0x1.667404de0f089p374 ++-0x1.2c5137dddd70ep38 ++-0x1.7ac64352f8731p311 ++-0x1.375d526b9499bp10 ++-0x1.608744f90585bp46 ++-0x1.b152d1cd9d10bp11 ++0x1.ac15612e56ca9p23 ++-0x1.1e20923124ba0p18 ++-0x1.976ff6fbebe0cp483 ++0x1.19c89663c0f50p1 ++-0x1.5d4732b848227p0 ++0x1.bce080a10af4ep71 ++0x1.4b5181670d98ep1 ++-0x1.88ef56cab1b8bp0 ++-0x1.124bc48a15e4ep560 ++0x1.16aa8030446c5p1 ++0x1.ea3d708440531p-5 ++0x1.9a933630408d3p0 ++0x1.25c992f62ef85p21 ++-0x1.892203bbd6e79p787 ++-0x1.b69e12ed65962p-12 ++-0x1.213bc173722c7p858 ++0x1.9ec5648d542b0p0 ++0x1.e49be4cdb62fep9 ++-0x1.b51b42ddbf7d6p656 ++-0x1.d98793002d34ap0 ++0x1.8365b15d3d1c8p17 ++0x1.512fb18d70d75p39 ++-0x1.6de981933ee82p136 ++-0x1.985c12bed07e0p13 ++-0x1.a5fbc7fc45b3ap-1 ++-0x1.8710f55f8c2d7p-24 ++-0x1.e21315a4ae92cp40 ++-0x1.b9e2943771bf3p0 ++0x1.da6de76a482d9p458 ++0x1.5599148b4cf81p7 ++0x1.d71ea41f64e8ap776 ++0x1.89d6b23942ee9p0 ++0x1.9fd7d5273c695p21 ++0x1.817ca791272d0p1021 ++-0x1.3452f5175f006p-2 ++0x1.f3af654e608f2p13 ++0x1.1d0a0528d7bdep21 ++0x1.2c2aa710a863fp924 ++-0x1.77b2852f5e175p8 ++0x1.9f48d30a1e11bp47 ++-0x1.54f600b66c2fep12 ++0x1.56b3a59e3e2f4p751 ++-0x1.641b67eda77fdp23 ++-0x1.62d64749736ebp-5 ++0x1.a481622af3746p911 ++-0x1.96cec2f358260p24 ++-0x1.f82d54d558421p19 ++0x1.5c4330323eb8bp34 ++-0x1.9f86b23c7fe1fp17 ++0x1.5994062e8e0f1p22 ++-0x1.b33505561d1cap905 ++-0x1.ccdf732c7d20bp680 ++-0x1.d6a84378ac8b9p23 ++-0x1.a877d1dcede4fp4 ++0x1.9c4fb2b271fa0p-17 ++-0x1.edb1d145f200ep836 ++-0x1.f9a466fe6d9c0p36 ++-0x1.e07ab7c21cb33p-5 ++-0x1.1c05b681bc11bp12 ++-0x1.dfea704995e47p0 ++0x1.3ec9e0020df9bp261 ++-0x1.2de113c0c0abcp840 ++0x1.d523551d1301bp301 ++0x1.d57ff49633b0ap16 ++-0x1.60e00540a4916p43 ++-0x1.ae7cd0ead2707p-21 ++0x1.59c5a3da56943p646 ++0x1.a0f1e02dc546fp0 ++-0x1.90c74581ad4c2p804 ++-0x1.3df5a6745c7b4p279 ++0x1.b1dbd7c284f4ap0 ++-0x1.53a8236e11ad5p613 ++0x1.d01ae4b6ec723p5 ++-0x1.4f07c42ad516ep38 ++-0x1.3f42955e43c60p164 ++-0x1.cef08022a889fp-22 ++-0x1.a104038d6d3aep-11 ++0x1.6ab276053bf58p64 ++-0x1.fa13e25fded10p682 ++0x1.1346116d1b13ep-24 ++-0x1.5cc635b87a547p7 ++-0x1.1c6e458e45611p918 ++0x1.4da2b3a7d743fp588 ++-0x1.5867132e9910dp-6 ++-0x1.866e226885b36p3 ++-0x1.e4af96c89ac8dp7 ++-0x1.32c417258beabp1 ++0x1.ec6d23817ac87p136 ++0x1.4c42234c4cb83p26 ++0x1.627095699f9f2p21 ++0x1.29d5932425be5p19 ++-0x1.59c3a61405350p997 ++0x1.0e0152a02da15p-11 ++-0x1.cbd9001dbd84dp-23 ++0x1.395d53fa21924p970 ++-0x1.21ea97d900ce4p-18 ++-0x1.3857250897e85p18 ++0x1.23e571394fd82p-12 ++-0x1.957af33a560cep-26 ++0x1.7a62d3a97c082p-20 ++0x1.219ec6b246176p5 ++0x1.6a0b96bc3a98ep-27 ++-0x1.b3c5f05c06d11p48 ++0x1.acb0a26d67df5p-10 ++0x1.ce255615d9492p812 ++-0x1.977ad219e6c61p0 ++0x1.de2041abcf313p10 ++-0x1.b942620b8acfep4 ++0x1.a66fb3fbc1f3cp5 ++0x1.35a9b2e6488d6p26 ++-0x1.c36cc56721b05p198 ++-0x1.b9edf7dff3578p-1 ++-0x1.ffbad564ba12ep16 ++0x1.50e3f66a70bd1p485 ++-0x1.a6e547a36e5a4p465 ++0x1.54e875c76edc9p0 ++-0x1.7333a63971418p341 ++0x1.c39a24f08faebp18 ++-0x1.850e4447fd121p3 ++0x1.69b2d631a085bp42 ++0x1.7d5f03a544ce5p647 ++-0x1.54b9f0c3790dap369 ++0x1.b5db54f60d7fcp3 ++0x1.bfede6bcbdab5p14 ++0x1.c49ed00de612fp3 ++0x1.fdd5778773204p20 ++-0x1.ea24548478072p-20 ++-0x1.bbafb75c3ff50p30 ++-0x1.9b0e77b958919p841 ++-0x1.ad3172fd06e85p2 ++0x1.2d24d32d0d341p203 ++0x1.7c2480162bf05p42 ++0x1.e028339f344a0p3 ++-0x1.5dd47591cf023p11 ++-0x1.a20940b9cb5b8p693 ++0x1.d9eef5eef22a0p-16 ++-0x1.f0f51635acaf5p873 ++-0x1.c4353793f8e09p954 ++-0x1.3df5f51c831ccp17 ++0x1.e5b497ae4cae6p23 ++0x1.43162012fdb57p-10 ++-0x1.ba6782c6cca02p394 ++-0x1.1f4d15ce5c886p976 ++0x1.afa4370e97c87p44 ++-0x1.4b72433cea7f4p34 ++-0x1.01d1a13ce3762p-1 ++0x1.4a5b4081f8482p599 ++-0x1.e5b132f5337d4p30 ++0x1.4812553307bb4p25 ++-0x1.2d6ce79efbffap26 ++-0x1.102777593c0e7p425 ++-0x1.d6cf8795449a2p9 ++0x1.0c80d756d5c0bp-19 ++-0x1.9950064153b61p25 ++-0x1.8e3d83d000c70p30 ++-0x1.462b54d1612b6p38 ++-0x1.4c6a67184b714p2 ++-0x1.0e4572028b0bcp7 ++0x1.3e6a630eef30fp822 ++0x1.a291d6c857b9bp19 ++-0x1.0e87122715084p23 ++-0x1.ab4990691ca4fp891 ++-0x1.7675c774d88f1p26 ++-0x1.76d935c0d01acp957 ++-0x1.f86d4487dc29ep39 ++-0x1.2ab3d736f572ap-1 ++0x1.846c74b34d14bp0 ++0x1.a789a2d158e61p3 ++-0x1.82c2e4943b305p7 ++-0x1.4668a4a069757p184 ++-0x1.4bc1d2b00fc7ap14 ++-0x1.a544825f32188p12 ++-0x1.e2f896a71d084p40 ++-0x1.d4f317c77cf8dp34 ++0x1.2fcfb6146b469p18 ++-0x1.fc0ef70d94a57p992 ++-0x1.8bc622e9b81a9p332 ++0x1.ab3d255d05066p0 ++0x1.032294d998d40p895 ++0x1.597286cff2ddcp-9 ++-0x1.448590f2dfdf1p13 ++-0x1.ec7a74fefbef8p30 ++-0x1.fec72598e90e7p698 ++-0x1.739c7600c2aa3p0 ++-0x1.1532224ccff07p604 ++-0x1.adb0720f88c1cp671 ++-0x1.0f5c60e6cdf52p918 ++-0x1.cd43b383af967p12 ++-0x1.412293a10f35bp12 ++0x1.637192a10a8c0p35 ++-0x1.1310d6c648b59p25 ++0x1.d8c161c67b50ap28 ++0x1.c64b8175f853ap3 ++0x1.db34f69efdf5ep20 ++0x1.308bc4c848b55p65 ++0x1.9bde77693f64ep0 ++0x1.df5fb02f5fb43p41 ++0x1.511f0030d8e62p12 ++-0x1.623861243cc06p9 ++-0x1.f5db61e5469b9p8 ++0x1.5b6cb194d89edp18 ++-0x1.12c0876a1b15ep18 ++-0x1.939f8667ccc46p-8 ++-0x1.56cdd13279359p25 ++0x1.91eb17eaeb8c4p11 ++-0x1.5e31156143a7dp37 ++-0x1.46ba04e866f63p7 ++0x1.dbfed0411bc7fp538 ++0x1.f69893a985cc9p17 ++-0x1.11278358c2510p141 ++0x1.6c07667947649p10 ++0x1.1b5c9235ff249p852 ++-0x1.1e9e57d76a9a9p37 ++-0x1.388491cbdac70p17 ++-0x1.c2eea2091b3f8p-1 ++-0x1.cd087524966a7p25 ++0x1.f6adc5d4459cap600 ++-0x1.f57ff5b713a99p3 ++0x1.f2d9b467e8ee0p-8 ++-0x1.ee0bd3710bef0p-14 ++0x1.a61cc024a420cp-24 ++0x1.e902f4b561c63p3 ++0x1.9955d0ecba68cp-21 ++0x1.60eb50fec72a7p-20 ++-0x1.09f0677aee265p1005 ++-0x1.8812968970db4p721 ++0x1.8dcc40b01b324p112 ++-0x1.3a90164a6fb2dp26 ++0x1.3802f5cdcda63p6 ++0x1.e21a052adc0d0p0 ++0x1.a948854deaa16p-11 ++-0x1.274d4065edf3cp25 ++-0x1.9193532bbe2c9p16 ++-0x1.2e26e362aa597p472 ++0x1.550114f8cd6b0p16 ++-0x1.1c39a294dfb51p946 ++-0x1.1ac3f37ca8f9ep6 ++-0x1.d0cfd15066c8dp673 ++0x1.1b1f153f16bbdp29 ++0x1.56b9b46a42022p12 ++-0x1.89e4012cc6deap0 ++-0x1.d6fb928514d12p1004 ++-0x1.a136f5a490ae4p664 ++0x1.36932245e98cbp26 ++0x1.b1fb46c217a41p277 ++0x1.7b54923209cb7p587 ++0x1.caaf81b413ec0p608 ++0x1.ab5a96a090df8p6 ++-0x1.630330ace2d7cp41 ++0x1.ee7e47e57812bp-4 ++0x1.4351e41d03816p21 ++-0x1.aafe0659a5c58p11 ++0x1.2748836e9b331p41 ++0x1.fe7b979d71d95p598 ++-0x1.48c5920336400p-7 ++-0x1.b223b4be25585p382 ++0x1.a94e62298c7a1p45 ++-0x1.5217e3915a0e8p11 ++-0x1.2e65032ba771fp-9 ++0x1.6a3d4382141ebp-6 ++0x1.468a9481d74e4p169 ++0x1.b3bf676408855p20 ++0x1.ee41d72d85a88p23 ++0x1.0f1525458e264p557 ++0x1.a601a30301754p-22 ++-0x1.71d595d59b86cp566 ++-0x1.62e7f03cb1f31p12 ++-0x1.73f5402ab4e19p-8 ++-0x1.72c1f709ea5c2p13 ++-0x1.3919a5ad625dcp-4 ++0x1.fd017587ee830p310 ++0x1.b7518131b5253p0 ++-0x1.f348906bc1126p-6 ++-0x1.fc7ac7285a79ap0 ++-0x1.59f1d57e68057p17 ++0x1.bdd572c2631e7p19 ++0x1.bdf7f6ea49a0dp300 ++-0x1.8c4877c037477p29 ++-0x1.5da7b5197c995p15 ++0x1.67de61ebfcad3p107 ++-0x1.9096f72642477p323 ++0x1.e5fc51f35ab90p15 ++0x1.9f7bf6c845f55p0 ++0x1.6a59935f352f0p23 ++0x1.1f7b41c8d8513p20 ++-0x1.86d8339a09175p637 ++-0x1.3fa5c32fca635p6 ++0x1.23faf483fef1ep-18 ++-0x1.408f70d527f00p40 ++-0x1.9440f7b969c8ap209 ++-0x1.4e380016a4d6cp987 ++0x1.a20616e878c04p1023 ++0x1.2a9f54471780ap3 ++0x1.75dbe2c1ec783p-23 ++0x1.67c2221fc3804p23 ++0x1.bcdeb6f3c5549p30 ++-0x1.bb12215c52f92p779 ++0x1.8ffeb3898d1c8p-19 ++0x1.1fb8b50205437p2 ++-0x1.5a4a653146e40p32 ++-0x1.0c6b30ada1b09p23 ++-0x1.8b5c231e30042p0 ++0x1.1f16455d89ad8p882 ++-0x1.513c3208d3047p6 ++-0x1.cee964e33c448p30 ++0x1.af44434d9c9c6p0 ++-0x1.0276334fd570bp-15 ++0x1.5dedf26999173p0 ++-0x1.1b2e4780cd70fp417 ++0x1.534237e205b0ap8 ++-0x1.29c1563c96376p41 ++0x1.8a3457a805380p776 ++-0x1.47fc55d109066p332 ++0x1.793aa09de6e04p1006 ++-0x1.bf3fb2020504fp896 ++-0x1.7366b3b52b79ap-3 ++-0x1.b95a21c326d4fp754 ++-0x1.8f992737bdb7dp526 ++0x1.e0f1212c81cf0p21 ++-0x1.5299f2819f9dep19 ++0x1.ae0255b511d01p4 ++0x1.8fc2a4bf7afe8p261 ++-0x1.91f2f0444f31ap634 ++-0x1.a8ad341b55868p7 ++-0x1.b33f97a647507p4 ++-0x1.ac58d36c99905p0 ++0x1.717660662d7f4p618 ++0x1.747371ab298bap14 ++0x1.d500a4ff90ba3p9 ++-0x1.c49132a3807d3p18 ++0x1.775041f5adf79p40 ++0x1.d196f39ecbbfdp-15 ++-0x1.955a20c2e98a8p10 ++-0x1.eb44149e132e3p20 ++-0x1.91fc970666340p-10 ++-0x1.8cbd518d4e97ap9 ++0x1.446762982f5a5p30 ++-0x1.243fd3db30072p7 ++0x1.7f9b147083efep863 ++0x1.02e06605707fcp11 ++-0x1.f943c41c8d938p36 ++-0x1.66297706f7c14p727 ++-0x1.6b59c16db566cp26 ++0x1.5d48f15c59f58p452 ++-0x1.e8f5230318f79p-1 ++0x1.31fad3c41d123p34 ++-0x1.6757e2c0a08a7p11 ++0x1.7f07e07a0a269p288 ++# cos slow path at 768 bits ++# Implemented in sysdeps/ieee754/dbl-64/sincos32.c ++## name: 768bits ++0x1.000000cf4a2a2p0 ++0x1.0000010b239a9p0 ++0x1.00000162a932bp0 ++0x1.000002d452a10p0 ++0x1.000005bc7d86dp0 ++0x1.47c453f752654p637 ++0x1.b27df119d2861p78 ++0x1.b073672e47988p835 ++0x1.f2f5607cc76e1p157 ++-0x1.3c7b45a1446e9p349 ++0x1.544a364a05b26p228 ++0x1.157fa0b2ffd20p164 ++-0x1.f4ba7359080d6p172 ++-0x1.7698941fce366p651 ++-0x1.9875603af20dbp433 ++-0x1.b00f872fa6260p918 ++0x1.468e65e8e3656p661 ++-0x1.6cbd47b10d74bp464 ++-0x1.2c2c62a2f067ap197 ++-0x1.8e3db452cbb07p810 ++0x1.8446c34a2644cp277 ++-0x1.b0f6f1b8db81ap179 ++0x1.93b574629bf16p748 ++0x1.b6b6e0a06cb05p344 ++-0x1.7cbc2702fbd97p922 ++-0x1.887a36760f072p336 ++0x1.17b9c169b2efep714 ++-0x1.e947b36ae0940p794 ++-0x1.d70d15a2338b8p884 ++0x1.0a98017bf55bep935 ++-0x1.bc07c6c7cc03bp538 ++-0x1.c42d477462280p949 ++-0x1.9c6dc4908a248p536 ++0x1.37a0d35e7fd14p74 ++-0x1.9c9cf14390543p64 ++0x1.7c0a43fe4ef89p409 ++-0x1.cc1fa7c639575p65 ++0x1.df36548f960eep769 ++-0x1.d3f102775834fp176 ++-0x1.0a6bf05ba56c4p713 ++-0x1.4775c1ce2834ep903 ++-0x1.7ade6237217c2p272 ++-0x1.35ebc7dee67bep898 ++0x1.26ded2ecd7486p728 ++0x1.90c6535aa78d1p591 ++-0x1.dd85c54160392p296 ++-0x1.1ee7b2598c033p904 ++0x1.28de547f9a6a7p156 ++0x1.bb7ff11e74372p775 ++0x1.bb4da1ff7cd43p113 ++0x1.52f2e13f3ddcfp430 ++0x1.7aa0c44aa3950p964 ++0x1.33ffd1540eeaap899 ++-0x1.a8c7f7947c6efp453 ++-0x1.3a8f54a1dfe1cp193 ++0x1.fedb8178dbabap386 ++0x1.b53776fb33667p290 ++-0x1.1dbc12b1b9e1ep632 ++0x1.ed4db1eaa237cp454 ++-0x1.e43334d044861p32 ++0x1.db66f595e3e93p165 ++0x1.6c6af169f717ap165 ++0x1.d14cf2d2b8875p589 ++-0x1.1661f59554000p419 ++0x1.f76c50b4e5bd1p276 ++-0x1.b00253e803df0p175 ++-0x1.8ec0a6121e3b6p8 ++0x1.5e1195ad8957fp899 ++0x1.ec89e4f11ac8fp433 ++-0x1.1d38a4ee578e9p339 ++0x1.4377875dce8fdp326 ++0x1.ee58a172d118cp745 ++0x1.ff0232a89efd3p913 ++-0x1.a6c9c19756962p883 ++0x1.dbb6b6a957161p710 ++0x1.12fd57b2e5ebbp83 ++0x1.e9e364fad4bcbp329 ++0x1.cbe8b375ad172p953 ++-0x1.08a4b728fde64p598 ++0x1.60f510ee233d5p828 ++0x1.ba51673480a49p100 ++-0x1.b04114708e216p378 ++-0x1.9fd7b6bc2ce33p61 ++0x1.c32ea014657c0p820 ++0x1.1d3621e24b581p110 ++-0x1.4139a7fc5b5dep135 ++-0x1.2399c1ea2ea2fp729 ++0x1.aa2a835f87dbcp650 ++0x1.948dc5cd26e75p371 ++-0x1.a5a520d06d146p940 ++-0x1.191a55bfe7786p1013 ++-0x1.a46e0156a6bf3p525 ++-0x1.91fd2519f735bp372 ++0x1.1a78a3d726d73p617 ++0x1.428c901b2d569p906 ++-0x1.9f415555f701bp238 ++0x1.a7e133e2c9f01p315 ++0x1.e565b67830fabp1009 ++-0x1.9e88b6ff1a777p31 ++0x1.8ec4d30c1daebp710 ++-0x1.5c35d25455dabp540 ++-0x1.5957f35326911p855 ++0x1.5e8414f558911p832 ++0x1.fadce712c669ap551 ++-0x1.7b0554f4a1530p340 +diff -urN glibc-2.17-c758a686/benchtests/exp2-inputs glibc-2.17-c758a686/benchtests/exp2-inputs +--- glibc-2.17-c758a686/benchtests/exp2-inputs 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.17-c758a686/benchtests/exp2-inputs 2015-06-20 21:22:16.301457983 -0400 +@@ -0,0 +1,105 @@ ++## args: double ++## ret: double ++## includes: math.h ++-0x1.8235e0aa4aab1p814 ++0x1.0e1220dfad80dp1006 ++-0x1.e6a710eed0706p919 ++0x1.11def1bbe9bc3p-471 ++0x1.05e9b1fc591d9p-1007 ++0x1.a58906c628b46p984 ++0x1.772627fce1208p-256 ++-0x1.461c146b65f2cp-62 ++-0x1.6cf046992fa9ep-876 ++-0x1.eaca47d76382cp-413 ++0x1.5056d0027ca2bp-634 ++0x1.1be8235cf2515p-300 ++0x1.f667e36bb79d2p913 ++0x1.b9ae233039c9cp-721 ++0x1.b70ec546dac57p589 ++-0x1.3ef895a695202p-318 ++-0x1.e73d755c17ecap-901 ++-0x1.f0a09005d2fdcp-52 ++0x1.77520292c8ea7p786 ++0x1.e5c0a38dccd6fp-510 ++-0x1.21dd1410a13fdp469 ++-0x1.f1ea1752b167cp-855 ++0x1.149395c6b1dfcp237 ++-0x1.22cfe4ceb2a85p244 ++0x1.061a75f02c856p-417 ++-0x1.04aaf4e1a4962p-645 ++-0x1.b962f2c49c11ap169 ++0x1.6074818509343p-151 ++-0x1.6b9946b997353p350 ++-0x1.6b8631635d607p-328 ++0x1.6893162dc2973p923 ++-0x1.0a1c40492986dp-371 ++-0x1.23ae72061594ap-113 ++0x1.d73d84becb49dp-816 ++0x1.545894ebc8944p-487 ++-0x1.c006c29733c62p325 ++-0x1.745dc305eeb06p-994 ++0x1.6cdeb63076b54p420 ++0x1.c8f137c690673p906 ++-0x1.170ab5609f77cp205 ++-0x1.0b11b685a3349p-46 ++0x1.7f68672b92eb1p-622 ++0x1.66d431dee4bfdp-333 ++-0x1.e43304b22a96dp228 ++0x1.58ac069095de9p-419 ++-0x1.3fcaa6e1f1ac3p654 ++-0x1.437ed00080554p-88 ++0x1.717ad5a379c50p531 ++0x1.9688d6a6dd841p127 ++-0x1.189c3732f9ac8p505 ++-0x1.8c5da688a249ep871 ++0x1.808015df2809ep-647 ++0x1.54ccb260c52f6p183 ++0x1.ec1574f23f1b5p757 ++-0x1.2de0222e50454p-176 ++-0x1.dc5715d5ac4f3p-882 ++0x1.6fa963199b1fbp389 ++-0x1.0a143338c0ff3p149 ++0x1.c278a3ec4071cp240 ++0x1.7bdb071d7e6ffp-360 ++-0x1.e9b7a0af460ddp-809 ++0x1.d069e62cf695bp535 ++0x1.0f7ba1b172a18p-887 ++-0x1.96af5166829b7p399 ++-0x1.8f70240823cdbp-65 ++-0x1.fcd2d5a63a217p-971 ++-0x1.089241ad467f2p-247 ++-0x1.3fa3940d58aa8p1022 ++-0x1.aff1c0aec4e7dp814 ++-0x1.6bad319cfc3bcp-378 ++0x1.9c8956c66ba36p-579 ++-0x1.6d9393f52ee3fp411 ++0x1.e529d23501328p926 ++0x1.3ec71520af29cp690 ++0x1.787576a795b83p194 ++-0x1.ef38147d2dc40p107 ++-0x1.22a125ccbb1b2p-308 ++0x1.5f5c074be0351p-928 ++-0x1.377ed64bec482p390 ++-0x1.09eae6f62d4b8p-41 ++0x1.9f3fd03635c92p-104 ++0x1.cb7d07d13c9efp599 ++0x1.49e8154de36a7p538 ++-0x1.d68343fe573bfp-736 ++-0x1.4beba6b79ba1ep-811 ++0x1.927774a125013p221 ++-0x1.e4a1e48c33931p-152 ++-0x1.b8a3123361eb5p641 ++-0x1.909ea08b262f3p960 ++0x1.0d1b30600d5b0p822 ++-0x1.392420cf4ce19p-690 ++-0x1.f9e1f71c0f3a2p-349 ++-0x1.75600638cbf0ep-527 ++-0x1.788911851a5abp-193 ++-0x1.2ab1045fa9103p-471 ++-0x1.d9c7f1a19cefdp-44 ++0x1.ef5a66b13a5f8p171 ++0x1.261c24ba6cdfbp539 ++0x1.641945dc01d29p-620 ++0x1.5c190276797a1p935 ++-0x1.ea76b6a8a9d4ap-656 ++0x1.41a117e9931f0p-169 +diff -urN glibc-2.17-c758a686/benchtests/exp-inputs glibc-2.17-c758a686/benchtests/exp-inputs +--- glibc-2.17-c758a686/benchtests/exp-inputs 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.17-c758a686/benchtests/exp-inputs 2015-06-20 21:22:16.301457983 -0400 +@@ -0,0 +1,589 @@ ++## args: double ++## ret: double ++## includes: math.h ++0x1.6200315ce81efp9 ++0x1.0000000031579p0 ++0x1.000000009b551p0 ++0x1.000000067ace6p0 ++0x1.6200315ad0fc0p9 ++0x1.0000000000060p0 ++0x1.00000004237a7p0 ++0x1.6200315ad0fb2p9 ++0x1.0000000054ac1p0 ++0x1.6200315c98bcdp9 ++0x1.0000000002d96p0 ++0x1.0000000000038p256 ++0x1.6200315ad0fafp9 ++0x1.6200315d680ecp9 ++0x1.0000000000042p0 ++0x1.0000000000048p256 ++0x1.6200315ad0fbcp9 ++0x1.000000000000dp256 ++0x1.000000000001ep256 ++0x1.0000000000015p256 ++0x1.0000000000018p-256 ++0x1.000000000002ep0 ++0x1.000000000004ep-256 ++0x1.000000000001dp-256 ++0x1.6200315ad0fb4p9 ++0x1.00000002ca5f8p0 ++0x1.0000000000017p256 ++0x1.0000000000022p0 ++0x1.0000000000059p256 ++0x1.0000000000028p0 ++0x1.6200315ad0fa7p9 ++0x1.000000048059cp0 ++0x1.0000000000023p256 ++0x1.000000000003ap-256 ++0x1.0000000000022p-256 ++0x1.6200315f211bep9 ++0x1.000000000002ep-256 ++0x1.0000000000041p256 ++0x1.0000000000042p-256 ++0x1.6200315ad0fcfp9 ++0x1.6200315ad0fd7p9 ++0x1.000000004bd6fp0 ++0x1.000000000000dp-256 ++0x1.6200315ad0fb7p9 ++0x1.000000000001fp0 ++0x1.0000000000024p-256 ++0x1.0000000000058p256 ++0x1.6200315ad0fc5p9 ++0x1.620030025fbe9p9 ++0x1.000000000003dp-256 ++0x1.000000000003fp-256 ++0x1.0000000000009p256 ++0x1.00000005c7304p0 ++0x1.0000000000045p-256 ++0x1.0000000000011p-256 ++0x1.0000000000033p-256 ++0x1.0000000000036p256 ++0x1.0000000000059p-256 ++0x1.0000000000001p-256 ++0x1.0000000000052p-256 ++0x1.000000045baafp0 ++0x1.0000000000032p0 ++0x1.00000004a5089p0 ++0x1.00000005edb68p0 ++0x1.6200315ad0fd1p9 ++0x1.0000000080d5bp0 ++0x1.0000000000038p0 ++0x1.6200315ad0fdbp9 ++0x1.000000000005fp256 ++0x1.0000000291b1ep0 ++0x1.6200315af4bedp9 ++0x1.0000000000031p-256 ++0x1.6200315aea99bp9 ++0x1.00000005ab569p0 ++0x1.6200315d47b24p9 ++0x1.6200315ad0fd9p9 ++0x1.000000000003bp256 ++0x1.6200315d31eb9p9 ++0x1.000000059a297p0 ++0x1.0000000000011p256 ++0x1.0000000000021p-256 ++0x1.0000000000041p-256 ++0x1.0000000000049p0 ++0x1.00000006857afp0 ++0x1.6200315ceb300p9 ++0x1.000000000003bp-256 ++0x1.6200315bcaec3p9 ++0x1.0000000000018p256 ++0x1.00000002f3b77p0 ++0x1.6200315ad0fb5p9 ++0x1.0000000000027p-256 ++0x1.000000054447dp0 ++0x1.6200315e84846p9 ++0x1.0000000172fefp0 ++0x1.00000001c8808p0 ++0x1.0000000000003p256 ++0x1.000000000003ep-256 ++0x1.00000002ed36ep0 ++0x1.000000000002ap0 ++0x1.00000002ae08bp0 ++0x1.000000000005dp-256 ++0x1.0000000000063p256 ++0x1.000000000003ep0 ++0x1.0000000000037p256 ++0x1.6200315ad0fb6p9 ++0x1.000000000005ep0 ++0x1.000000000002ap256 ++0x1.0000000000056p256 ++0x1.0000000266056p0 ++0x1.6200315ad0fdap9 ++0x1.000000000002dp0 ++0x1.000000000004cp0 ++0x1.6200315ad0fb8p9 ++0x1.0000000000039p0 ++0x1.000000000002ap-256 ++0x1.6200315ad0fa5p9 ++0x1.0000000000035p256 ++0x1.000000000005ep256 ++0x1.000000000004cp-256 ++0x1.0000000000039p256 ++0x1.000000055574fp0 ++0x1.0000000000033p256 ++0x1.6200315ad0fc2p9 ++0x1.62003001fc398p9 ++0x1.000000000004ap-256 ++0x1.000000000001ap256 ++0x1.000000005d813p0 ++0x1.6200315ad0fe4p9 ++0x1.0000000000030p-256 ++0x1.0000000000020p-256 ++0x1.0000000066565p0 ++0x1.0000000000029p-256 ++0x1.6200315ad0fc7p9 ++0x1.000000049e880p0 ++0x1.0000000609903p0 ++0x1.00000005e309fp0 ++0x1.0000000000013p256 ++0x1.0000000000026p0 ++0x1.000000000002dp-256 ++0x1.6200315ad0fbdp9 ++0x1.000000000000fp256 ++0x1.00000001a9d52p0 ++0x1.000000000002cp256 ++0x1.0000000479d93p0 ++0x1.0000000000016p256 ++0x1.00000001d7d63p0 ++0x1.6200315bd5b13p9 ++0x1.00000001097e9p0 ++0x1.0000000000030p0 ++0x1.6200315d37392p9 ++0x1.6200315ad0fe0p9 ++0x1.6200315ba6119p9 ++0x1.000000000003ep256 ++0x1.00000000e87eap0 ++0x1.0000000000002p256 ++0x1.00000006501c2p0 ++0x1.000000000004bp256 ++0x1.620030022b98ap9 ++0x1.000000000003fp0 ++0x1.00000002d0e01p0 ++0x1.00000001f6819p0 ++0x1.0000000000020p256 ++0x1.0000000000021p0 ++0x1.000000000005cp256 ++0x1.6200315ad0faep9 ++0x1.6200315c61515p9 ++0x1.0000000000008p256 ++0x1.0000000000056p-256 ++0x1.00000004f2923p0 ++0x1.000000000001ep0 ++0x1.0000000000028p256 ++0x1.000000000004fp256 ++0x1.000000000002cp-256 ++0x1.0000000000025p0 ++0x1.6200315e1215ap9 ++0x1.6200315ad0fb3p9 ++0x1.6200315e921dap9 ++0x1.6200315ad0fd6p9 ++0x1.0000000000049p256 ++0x1.000000000004dp256 ++0x1.0000000000042p256 ++0x1.0000000000051p0 ++0x1.6200315d83129p9 ++0x1.0000000690278p0 ++0x1.0000000000036p0 ++0x1.0000000000026p256 ++0x1.000000000005fp-256 ++0x1.000000000000cp256 ++0x1.0000000000007p256 ++0x1.000000050a3fep0 ++0x1.000000000001fp-256 ++0x1.000000000002ep256 ++0x1.000000000004ep256 ++0x1.6200315f00e77p9 ++0x1.6200315ad0fd2p9 ++0x1.6200315d4ee5bp9 ++0x1.00000004552a6p0 ++0x1.6200315ad0fe3p9 ++0x1.000000003a2cbp0 ++0x1.6200315ad0fdfp9 ++0x1.00000002b4894p0 ++0x1.0000000000022p256 ++0x1.000000023a58ep0 ++0x1.6200315ad0fd8p9 ++0x1.0000000000029p256 ++0x1.6200315efe051p9 ++0x1.0000000205d74p0 ++0x1.0000000000045p256 ++0x1.6200315ad0fb0p9 ++0x1.6200315d77cc5p9 ++0x1.000000065ac8bp0 ++0x1.0000000000037p0 ++0x1.6200315ad0fbfp9 ++0x1.6200315dacc95p9 ++0x1.000000000002fp-256 ++0x1.000000000000ep256 ++0x1.00000006bf05cp0 ++0x1.0000000000051p256 ++0x1.0000000000062p0 ++0x1.0000000000031p256 ++0x1.6200315be943dp9 ++0x1.000000000005bp0 ++0x1.0000000000045p0 ++0x1.6200315e08505p9 ++0x1.000000000001bp256 ++0x1.0000000000005p256 ++0x1.000000000005dp256 ++0x1.6200315ad0fc9p9 ++0x1.6200315e97676p9 ++0x1.0000000000024p0 ++0x1.0000000000003p-256 ++0x1.6200315ad0fd4p9 ++0x1.6200315ee2c3bp9 ++0x1.0000000000020p0 ++0x1.6200315ad0fdcp9 ++0x1.0000000000053p-256 ++0x1.000000000004bp-256 ++0x1.6200315cafb6ep9 ++0x1.000000000003ap256 ++0x1.0000000000013p-256 ++0x1.0000000000060p256 ++0x1.6200315ad0fd3p9 ++0x1.0000000000009p-256 ++0x1.000000000005cp-256 ++0x1.00000000acff5p0 ++0x1.000000000004dp0 ++0x1.0000000000050p256 ++0x1.6200315e34fc6p9 ++0x1.0000000000044p-256 ++0x1.000000000002dp256 ++0x1.0000000000062p256 ++0x1.6200315bf4442p9 ++0x1.6200315ad0fabp9 ++0x1.000000000003cp0 ++0x1.0000000000019p256 ++0x1.000000000000cp-256 ++0x1.000000000000bp-256 ++0x1.0000000000063p0 ++0x1.000000000003cp256 ++0x1.0000000000061p-256 ++0x1.6200315ad0fb1p9 ++0x1.00000006456f9p0 ++0x1.6200315ad0fb9p9 ++0x1.6200315ad0fccp9 ++0x1.6200315ad0fd5p9 ++0x1.6200315ad0fd0p9 ++0x1.0000000353687p0 ++0x1.6200315ad0facp9 ++0x1.000000000005bp256 ++0x1.6200315e8bb51p9 ++0x1.6200315d73094p9 ++0x1.000000027bdbap0 ++0x1.000000006f2b7p0 ++0x1.0000000000057p0 ++0x1.0000000298327p0 ++0x1.000000019a7f7p0 ++0x1.6200315b7b9ddp9 ++0x1.000000041cf9ep0 ++0x1.0000000000040p256 ++0x1.0000000000059p0 ++0x1.6200315ad0fe2p9 ++0x1.0000000000056p0 ++0x1.0000000000034p-256 ++0x1.6200315cf49aep9 ++0x1.0000000000017p-256 ++0x1.000000000bae8p0 ++0x1.6200315ad0fc1p9 ++0x1.00000004c336dp0 ++0x1.0000000000032p256 ++0x1.6200315ae9fb5p9 ++0x1.000000000004cp256 ++0x1.0000000000057p-256 ++0x1.0000000000035p-256 ++0x1.6200315d4d455p9 ++42 ++0x1.6200315ad0fa8p9 ++0x1.00000002502f2p0 ++0x1.6200315ad0fa3p9 ++0x1.000000000005dp0 ++0x1.0000000000012p-256 ++0x1.0000000000006p256 ++0x1.0000000000028p-256 ++0x1.0000000000044p256 ++0x1.000000000004ap0 ++0x1.00000000927ffp0 ++0x1.0000000000044p0 ++0x1.00000006f8909p0 ++0x1.6200315ad0fc8p9 ++0x1.0000000000061p0 ++0x1.000000012a7e8p0 ++0x1.000000000000fp-256 ++0x1.6200315b6f0a0p9 ++0x1.00000001b92adp0 ++0x1.000000000005ep-256 ++0x1.6200315d436fep9 ++0x1.000000004301dp0 ++0x1.0000000000023p0 ++0x1.000000000005ap0 ++0x1.6200315e7189ap9 ++0x1.0000000000033p0 ++0x1.6200315c19f20p9 ++0x1.0000000000040p-256 ++0x1.0000000000031p0 ++0x1.0000000000027p0 ++0x1.6200315d1dfeap9 ++0x1.0000000588fc5p0 ++0x1.000000015ad42p0 ++0x1.6200300248616p9 ++0x1.0000000000021p256 ++0x1.6200315ad0fcap9 ++0x1.6200315ad0fbbp9 ++0x1.6200315ad0fbep9 ++0x1.0000000000052p0 ++0x1.0000000000016p-256 ++0x1.0000000000005p-256 ++0x1.0000000000046p256 ++0x1.000000000003cp-256 ++0x1.0000000000054p0 ++0x1.000000034ce7ep0 ++0x1.0000000000050p-256 ++0x1.000000000002fp256 ++0x1.6200315f2a44bp9 ++0x1.6200315ad0fa2p9 ++0x1.6200315f53addp9 ++0x1.0000000000043p256 ++0x1.000000000002bp0 ++0x1.6200315b9a51fp9 ++0x1.62003002148e6p9 ++0x1.0000000000039p-256 ++0x1.0000000000023p-256 ++0x1.00000006d45eep0 ++0x1.000000000002cp0 ++0x1.0000000000055p256 ++0x1.000000000000ap256 ++0x1.0000000000010p-256 ++0x1.0000000000047p-256 ++0x1.000000000002fp0 ++0x1.0000000000001p256 ++0x1.000000040ff8cp0 ++0x1.0000000121a96p0 ++0x1.6200315c8b9bcp9 ++0x1.000000000001cp-256 ++0x1.0000000000063p-256 ++0x1.0000000000006p-256 ++0x1.000000000001ap-256 ++0x1.6200300247b12p9 ++0x1.0000000000046p0 ++0x1.0000000000036p-256 ++0x1.00000004bcb64p0 ++0x1.0000000000032p-256 ++0x1.0000000000057p256 ++0x1.6200315e03518p9 ++0x1.00000005331abp0 ++0x1.000000000001ep-256 ++0x1.6200315f76ad3p9 ++0x1.000000000004dp-256 ++0x1.000000000003bp0 ++0x1.00000005b6032p0 ++0x1.0000000000007p-256 ++0x1.6200315ad0fc4p9 ++0x1.0000000000051p-256 ++0x1.000000000005cp0 ++0x1.6200315ad0fc6p9 ++0x1.0000000100a97p0 ++0x1.0000000000040p0 ++0x1.000000000004fp0 ++0x1.000000000003dp0 ++0x1.0000000000027p256 ++0x1.0000000000000p-256 ++0x1.6200315b10d8dp9 ++0x1.0000000000060p-256 ++0x1.6200315ad0fcdp9 ++0x1.6200315ad0fa4p9 ++0x1.6200315d07f8ep9 ++0x1.000000000001bp-256 ++0x1.0000000000041p0 ++0x1.6200315ad0fe1p9 ++0x1.0000000000053p0 ++0x1.00000003168edp0 ++0x1.0000000000000p256 ++0x1.0000000000002p-256 ++0x1.6200315bd4cecp9 ++0x1.0000000000047p256 ++0x1.6200315b2b8adp9 ++0x1.000000000002bp256 ++0x1.0000000000055p-256 ++0x1.000000000004ap256 ++0x1.00000006c9b25p0 ++0x1.0000000000054p-256 ++0x1.0000000000047p0 ++0x1.6200315d8ee5dp9 ++0x1.6200315b74b4cp9 ++0x1.000000000005ap256 ++0x1.0000000000043p-256 ++0x1.0000000000055p0 ++0x1.0000000000019p-256 ++0x1.000000031d0f6p0 ++0x1.00000006ede40p0 ++0x1.00000002152cfp0 ++0x1.6200315f61210p9 ++0x1.6200315ad0fadp9 ++0x1.000000044ea9dp0 ++0x1.0000000000050p0 ++0x1.0000000000024p256 ++0x1.000000022b033p0 ++0x1.0000000000043p0 ++0x1.000000000001fp256 ++0x1.0000000000034p0 ++0x1.0000000000025p-256 ++0x1.0000000000034p256 ++0x1.000000000001dp0 ++0x1.000000000005ap-256 ++0x1.6200315ad0fddp9 ++0x1.0000000577cf3p0 ++0x1.000000051b6d0p0 ++0x1.00000006143ccp0 ++0x1.0000000000010p256 ++0x1.000000061ee95p0 ++0x1.6200315c3eed5p9 ++0x1.00000000dfa98p0 ++0x1.0000000000049p-256 ++0x1.0000000000052p256 ++0x1.0000000000053p256 ++0x1.000000000005bp-256 ++0x1.000000000000ep-256 ++0x1.6200315e8ca3cp9 ++0x1.6200315ad0faap9 ++0x1.0000000142a95p0 ++0x1.6200315ad0fcep9 ++0x1.6200315ad0fcbp9 ++0x1.6200315ef86c6p9 ++0x1.0000000000026p-256 ++0x1.6200315ed1587p9 ++0x1.000000067021dp0 ++0x1.00000001e72bep0 ++0x1.6200315ad0fbap9 ++0x1.00000000d6d46p0 ++0x1.0000000000058p0 ++0x1.00000000a42a3p0 ++0x1.6200315b50c42p9 ++0x1.6200315c4ee10p9 ++0x1.0000000416795p0 ++0x1.0000000000014p-256 ++0x1.0000000000037p-256 ++0x1.6200315ad0fa6p9 ++0x1.0000000000004p-256 ++0x1.0000000000054p256 ++0x1.000000018254ap0 ++0x1.6200315dc2365p9 ++0x1.0000000000015p-256 ++0x1.000000000004fp-256 ++0x1.0000000665754p0 ++0x1.0000000000046p-256 ++0x1.6200315b2ba38p9 ++0x1.000000000002bp-256 ++0x1.6200315ba202ep9 ++0x1.0000000000008p-256 ++0x1.0000000359e90p0 ++0x1.00000004dae48p0 ++0x1.000000000001cp256 ++0x1.0000000000062p-256 ++0x1.0000000000048p0 ++0x1.000000000003fp256 ++0x1.6200315bcd48bp9 ++0x1.6200315ad0fa9p9 ++0x1.0000000000030p256 ++0x1.6200315d64448p9 ++0x1.0000000089aadp0 ++0x1.6200315f0aa29p9 ++0x1.00000005d1dcdp0 ++0x1.6200315ad0fdep9 ++0x1.0000000000061p256 ++0x1.0000000000058p-256 ++0x1.0000000000012p256 ++0x1.000000000005fp0 ++0x1.000000000003ap0 ++0x1.000000000000bp256 ++0x1.000000000004bp0 ++0x1.0000000000038p-256 ++0x1.0000000000029p0 ++0x1.0000000000025p256 ++0x1.000000000001dp256 ++0x1.0000000000004p256 ++0x1.6200315e2240ep9 ++0x1.6200315ad0fc3p9 ++0x1.6200315b2bbc3p9 ++0x1.0000000000014p256 ++0x1.0000000078009p0 ++0x1.000000000003dp256 ++0x1.6200315db488fp9 ++0x1.000000000000ap-256 ++0x1.000000000004ep0 ++0x1.0000000000035p0 ++0x1.0000000000048p-256 ++# Slow path with computation in 144 bit precision. ++# Implemented in: sysdeps/ieee754/dbl-64/mpexp.c ++## name: 144bits ++0x1.0000000002d96p0 ++0x1.000000000bae8p0 ++0x1.0000000031579p0 ++0x1.000000003a2cbp0 ++0x1.000000004301dp0 ++0x1.000000004bd6fp0 ++0x1.0000000054ac1p0 ++0x1.000000005d813p0 ++0x1.00000005ab569p0 ++0x1.00000005b6032p0 ++0x1.00000005c7304p0 ++0x1.00000005d1dcdp0 ++0x1.00000005e309fp0 ++0x1.00000005edb68p0 ++0x1.0000000609903p0 ++0x1.00000006143ccp0 ++0x1.000000061ee95p0 ++0x1.00000006456f9p0 ++0x1.00000006501c2p0 ++0x1.000000065ac8bp0 ++0x1.0000000665754p0 ++0x1.000000067021dp0 ++0x1.000000067ace6p0 ++0x1.00000006857afp0 ++0x1.0000000690278p0 ++0x1.00000006bf05cp0 ++0x1.00000006c9b25p0 ++0x1.00000006d45eep0 ++0x1.00000006ede40p0 ++0x1.00000006f8909p0 ++0x1.62003000076d2p9 ++0x1.6200300017e2cp9 ++0x1.6200300023ffbp9 ++0x1.620030002b135p9 ++0x1.6200300030a8bp9 ++0x1.620030003123fp9 ++0x1.62003000652b3p9 ++0x1.620030007bf4ap9 ++0x1.6200300081a79p9 ++0x1.6200300090289p9 ++0x1.620030009dcbbp9 ++0x1.62003000c07cep9 ++0x1.62003000ee5dbp9 ++0x1.62003000fa646p9 ++0x1.62003000fe2cap9 ++0x1.6200300125996p9 ++0x1.6200300130865p9 ++0x1.6200300133673p9 ++0x1.6200300136fdfp9 ++0x1.6200300150360p9 ++0x1.620030016c416p9 ++0x1.6200315ee2c3bp9 ++0x1.6200315ef86c6p9 ++0x1.6200315efe051p9 ++0x1.6200315f00e77p9 ++0x1.6200315f0aa29p9 ++0x1.6200315f211bep9 ++0x1.6200315f2a44bp9 ++0x1.6200315f53addp9 ++0x1.6200315f61210p9 ++0x1.6200315f76ad3p9 ++# Slowest path with computation in 768 bit precision. ++# Implemented in: sysdeps/ieee754/dbl-64/mpexp.c ++## name: 768bits ++708.00096423260981737257679924368858 ++0x1.00000027f5496p0 ++0x1.0000015853da7p0 ++0x1.0000098e5e007p0 ++0x1.0000099a1ac59p0 +diff -urN glibc-2.17-c758a686/benchtests/ffs-inputs glibc-2.17-c758a686/benchtests/ffs-inputs +--- glibc-2.17-c758a686/benchtests/ffs-inputs 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.17-c758a686/benchtests/ffs-inputs 2015-06-20 21:22:16.301457983 -0400 +@@ -0,0 +1,103 @@ ++## args: int ++## ret: int ++## includes: strings.h ++0x33ed4 ++0x2b ++0xba3f6965 ++0x4 ++0x927e0ceb ++0x7 ++0x0 ++0x3418b ++0x318c ++0x19a7402 ++0x699d4586 ++0x392e4 ++0x66 ++0x7fc86 ++0x13d ++0x2aa7a61 ++0x29d ++0x1d729b2 ++0x13a ++0x7 ++0x11b958 ++0x3a6a23 ++0x1b0d749 ++0x1f12ecb ++0x21 ++0x285a ++0x24702 ++0x88799 ++0x10b ++0x5 ++0x572739 ++0x12f0 ++0xa36c89 ++0x1 ++0x1f58 ++0x33743ce8 ++0xbefe ++0x7 ++0x3 ++0xdc ++0x1713e ++0x8d28 ++0xbb0ef6d ++0x3c7 ++0x2 ++0xd0e53fcc ++0x2e2 ++0x762 ++0xf ++0x35 ++0x2fc6e7a ++0x105 ++0x58e3 ++0x3 ++0x16aa ++0x7b1b38 ++0x0 ++0x2b ++0x99538d ++0xb3234 ++0x322 ++0x806bd ++0xd73 ++0x503a ++0x7d ++0xb88bb919 ++0x4f5 ++0x1f757c4f ++0xc37e5 ++0xd9e519 ++0xf0a ++0xe9f1e8d ++0x4664 ++0x4 ++0x1 ++0x1 ++0x0 ++0x1ee25 ++0x75a24 ++0x73c57b0 ++0x300e9 ++0x9 ++0x5b ++0x6d25 ++0x38bf436e ++0xf4724994 ++0x2b ++0xb8a5de ++0x4a ++0x281da ++0x905db8 ++0x3d606 ++0x6c200855 ++0x21 ++0x354e0dfa ++0x2 ++0x1 ++0xf8297c3 ++0x2fed30 ++0xd4ab7 +diff -urN glibc-2.17-c758a686/benchtests/ffsll-inputs glibc-2.17-c758a686/benchtests/ffsll-inputs +--- glibc-2.17-c758a686/benchtests/ffsll-inputs 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.17-c758a686/benchtests/ffsll-inputs 2015-06-20 21:22:16.301457983 -0400 +@@ -0,0 +1,103 @@ ++## args: long long ++## ret: int ++## includes: string.h ++0xedada05aba9463 ++0x7c4e52bbc75241 ++0x16ab7ad ++0x20ec623a4ccdb ++0x1e24e9ed059d ++0x3acf ++0x6eb28fbb803a274 ++0xc1 ++0x25fc2148c092529f ++0x1d10ba752e5 ++0x322bd878b3 ++0x26fa11b70e20 ++0x30cd6a05a17ca14b ++0x1591d3a2d0cc7 ++0x8119d76e910c1a ++0x2b24d878fee314 ++0x1c ++0x3022a3955 ++0xedc7b7b6a818 ++0x40 ++0xf28 ++0xa2ecb ++0x56a7e4211a2ca38 ++0x6a0ee2316382 ++0x634 ++0x58 ++0x4fad66fb43f5 ++0x1f004b76 ++0x7 ++0x6ff84575bb70af ++0x5d5b4e ++0xaa614b130 ++0x15504 ++0x1a2e2e7e ++0x54b0f28b383cc ++0x6 ++0x2a2a3440b7 ++0x158a132dc0c20836 ++0x77aa8e9c91c43b1 ++0x33f526901fc08594 ++0x7bf156c ++0xb458b5e ++0x6289fcb44 ++0x4d84973bbd8c00 ++0x2e8c2de648 ++0x150fab ++0x16ebb7bae02934 ++0x485285b6065272 ++0xfdde0b16299 ++0x747d3c940cb ++0x1bdb379 ++0xfcb26a ++0x20b90cc92bbef ++0x46 ++0xf0e681aaec28b2d5 ++0x10c738cf1109 ++0x8509bef69993908 ++0x3332 ++0x219167d ++0x7eb19c6f88f ++0x32a1b4ead441e65 ++0xdc93 ++0x327a7e6676802312 ++0xcc7296c957 ++0xb0b20c47c6b500a ++0x55d614072f1 ++0x3c8e4 ++0x1a ++0x5809b7ae ++0x2 ++0x1525 ++0x13 ++0x6e ++0x1b ++0x7c58cf ++0x2f5347197bcf6 ++0x516a0d576e2c3 ++0x4f3cf315 ++0x3c16a7531f3a1 ++0xa929f8 ++0x1ce88e5 ++0x6ab464e92bc3 ++0x3ff39bb2 ++0xea9921 ++0xb3009 ++0x39b037793bef0da0 ++0x5d ++0x39a9989019c92 ++0x108bae ++0x239c1c ++0x1851dc9178f4 ++0x1fc6f70 ++0x38 ++0xa8f606a147 ++0x30dac66b ++0x76d377c20b0e836 ++0x2425 ++0x4e5a82884 ++0x7a1f128a894728 ++0xb5f0af24e3f7347 +diff -urN glibc-2.17-c758a686/benchtests/json-lib.c glibc-2.17-c758a686/benchtests/json-lib.c +--- glibc-2.17-c758a686/benchtests/json-lib.c 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.17-c758a686/benchtests/json-lib.c 2015-06-20 21:22:16.301457983 -0400 +@@ -0,0 +1,178 @@ ++/* Simple library for printing JSON data. ++ Copyright (C) 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 ++ . */ ++ ++#include ++ ++#include "json-lib.h" ++ ++void ++json_init (json_ctx_t *ctx, unsigned int indent_level, FILE *fp) ++{ ++ ctx->indent_level = indent_level; ++ ctx->fp = fp; ++ ctx->first_element = true; ++} ++ ++static void ++do_indent (json_ctx_t *ctx) ++{ ++ char indent_buf[ctx->indent_level + 1]; ++ ++ memset (indent_buf, ' ', ctx->indent_level + 1); ++ indent_buf[ctx->indent_level] = '\0'; ++ ++ fputs (indent_buf, ctx->fp); ++} ++ ++void ++json_document_begin (json_ctx_t *ctx) ++{ ++ do_indent (ctx); ++ ++ fputs ("{\n", ctx->fp); ++ ++ ctx->indent_level++; ++ ctx->first_element = true; ++} ++ ++void ++json_document_end (json_ctx_t *ctx) ++{ ++ ctx->indent_level--; ++ ++ do_indent (ctx); ++ ++ fputs ("\n}", ctx->fp); ++} ++ ++void ++json_attr_object_begin (json_ctx_t *ctx, const char *name) ++{ ++ if (!ctx->first_element) ++ fprintf (ctx->fp, ",\n"); ++ ++ do_indent (ctx); ++ ++ fprintf (ctx->fp, "\"%s\": {\n", name); ++ ++ ctx->indent_level++; ++ ctx->first_element = true; ++} ++ ++void ++json_attr_object_end (json_ctx_t *ctx) ++{ ++ ctx->indent_level--; ++ ctx->first_element = false; ++ ++ fputs ("\n", ctx->fp); ++ ++ do_indent (ctx); ++ ++ fputs ("}", ctx->fp); ++} ++ ++void ++json_attr_string (json_ctx_t *ctx, const char *name, const char *s) ++{ ++ if (!ctx->first_element) ++ fprintf (ctx->fp, ",\n"); ++ else ++ ctx->first_element = false; ++ ++ do_indent (ctx); ++ ++ fprintf (ctx->fp, "\"%s\": \"%s\"", name, s); ++} ++ ++void ++json_attr_double (json_ctx_t *ctx, const char *name, double d) ++{ ++ if (!ctx->first_element) ++ fprintf (ctx->fp, ",\n"); ++ else ++ ctx->first_element = false; ++ ++ do_indent (ctx); ++ ++ fprintf (ctx->fp, "\"%s\": %g", name, d); ++} ++ ++void ++json_array_begin (json_ctx_t *ctx, const char *name) ++{ ++ if (!ctx->first_element) ++ fprintf (ctx->fp, ",\n"); ++ ++ do_indent (ctx); ++ ++ fprintf (ctx->fp, "\"%s\": [", name); ++ ++ ctx->indent_level++; ++ ctx->first_element = true; ++} ++ ++void ++json_array_end (json_ctx_t *ctx) ++{ ++ ctx->indent_level--; ++ ctx->first_element = false; ++ ++ fputs ("]", ctx->fp); ++} ++ ++void ++json_element_double (json_ctx_t *ctx, double d) ++{ ++ if (!ctx->first_element) ++ fprintf (ctx->fp, ", %g", d); ++ else ++ { ++ fprintf (ctx->fp, "%g", d); ++ ctx->first_element = false; ++ } ++} ++ ++void ++json_element_object_begin (json_ctx_t *ctx) ++{ ++ if (!ctx->first_element) ++ fprintf (ctx->fp, ","); ++ ++ fputs ("\n", ctx->fp); ++ ++ do_indent (ctx); ++ ++ fputs ("{\n", ctx->fp); ++ ++ ctx->indent_level++; ++ ctx->first_element = true; ++} ++ ++void ++json_element_object_end (json_ctx_t *ctx) ++{ ++ ctx->indent_level--; ++ ctx->first_element = false; ++ ++ fputs ("\n", ctx->fp); ++ ++ do_indent (ctx); ++ ++ fputs ("}", ctx->fp); ++} +diff -urN glibc-2.17-c758a686/benchtests/json-lib.h glibc-2.17-c758a686/benchtests/json-lib.h +--- glibc-2.17-c758a686/benchtests/json-lib.h 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.17-c758a686/benchtests/json-lib.h 2015-06-20 21:22:16.301457983 -0400 +@@ -0,0 +1,47 @@ ++/* Simple library for printing JSON data. ++ Copyright (C) 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 ++ . */ ++ ++#ifndef __JSON_LIB_H__ ++#define __JSON_LIB_H__ ++ ++#include ++#include ++ ++struct json_ctx ++{ ++ FILE *fp; ++ unsigned int indent_level; ++ bool first_element; ++}; ++ ++typedef struct json_ctx json_ctx_t; ++ ++void json_init (json_ctx_t *ctx, unsigned int indent_level, FILE *fp); ++void json_document_begin (json_ctx_t *ctx); ++void json_document_end (json_ctx_t *ctx); ++void json_attr_object_begin (json_ctx_t *ctx, const char *name); ++void json_attr_object_end (json_ctx_t *ctx); ++void json_attr_string (json_ctx_t *ctx, const char *name, const char *s); ++void json_attr_double (json_ctx_t *ctx, const char *name, double d); ++void json_array_begin (json_ctx_t *ctx, const char *name); ++void json_array_end (json_ctx_t *ctx); ++void json_element_double (json_ctx_t *ctx, double d); ++void json_element_object_begin (json_ctx_t *ctx); ++void json_element_object_end (json_ctx_t *ctx); ++ ++#endif +diff -urN glibc-2.17-c758a686/benchtests/log2-inputs glibc-2.17-c758a686/benchtests/log2-inputs +--- glibc-2.17-c758a686/benchtests/log2-inputs 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.17-c758a686/benchtests/log2-inputs 2015-06-20 21:22:16.301457983 -0400 +@@ -0,0 +1,203 @@ ++## args: double ++## ret: double ++## includes: math.h ++0x1.fe80b73f2f763p-485 ++0x1.63fbf19a1a79ap-572 ++0x1.63fb4717f36abp-594 ++0x1.6a75240c62b59p-162 ++0x1.43ad207275c97p-830 ++0x1.1c24c26efbca5p-673 ++0x1.c37f23c54205ap655 ++0x1.fdc0e348d5bbbp722 ++0x1.0e2e51e9645a9p503 ++0x1.3291a6e483d75p-941 ++0x1.6b4f9118d9ddfp329 ++0x1.618e84faa68d1p-696 ++0x1.7f8a7417686dbp577 ++0x1.3fc6a169fc1a2p662 ++0x1.6631142da8476p-11 ++0x1.67cc768721f6ep159 ++0x1.7439b48fb7f01p-744 ++0x1.17cad4e754e3fp-833 ++0x1.6ca873e653646p35 ++0x1.6283941b425d9p-322 ++0x1.38de764542fc9p-939 ++0x1.6a5706bcca88ep318 ++0x1.8b9e71efccf99p-671 ++0x1.61d7a07ca117fp-246 ++0x1.66707402ed87fp468 ++0x1.650ff2faef0c4p-185 ++0x1.6afe3332695d8p-382 ++0x1.5c05817f1aec0p861 ++0x1.61bb62e0a68cdp625 ++0x1.678e93ded24cep-614 ++0x1.d2b6e60469afdp-753 ++0x1.abb9a6eed73b2p-731 ++0x1.21a4014034f31p-718 ++0x1.bdbe3237b3785p779 ++0x1.0f115229b9a52p-437 ++0x1.6154e26a722b2p388 ++0x1.64e982a82df60p346 ++0x1.61bdc663af57bp799 ++0x1.091f7362aa8bfp-871 ++0x1.e35153cac25b3p873 ++0x1.6402b62fbebf7p-329 ++0x1.680d413ef3777p775 ++0x1.8620d183bd0a7p-670 ++0x1.e0e017206206ep-129 ++0x1.66d9419f2852cp-526 ++0x1.5a07e14aa7e55p-888 ++0x1.b91ed57fdd3f2p1017 ++0x1.7c58838087ef5p519 ++0x1.2d0676720fb21p-145 ++0x1.64bcd3d675a60p-390 ++0x1.6204f6b121d0dp255 ++0x1.6af30218cdccfp-955 ++0x1.dcf3f2c2809e1p-821 ++0x1.6269366dd0672p436 ++0x1.dd117726eefe5p93 ++0x1.65de442c50bedp-28 ++0x1.10c8b6ab1a5f0p-313 ++0x1.6855f7474d2eep828 ++0x1.6659b0863e8d0p-545 ++0x1.7a80b6736105cp-566 ++0x1.3ff7a01b0590cp560 ++0x1.6559f386d6ca3p-696 ++0x1.68e96369693cep812 ++0x1.8d29a4b500b0dp537 ++0x1.65b347d411765p826 ++0x1.669080c6f3a8bp-121 ++0x1.faabb750c7baep548 ++0x1.670f72a6f1cd1p834 ++0x1.6b75063adb10dp396 ++0x1.f030420faed63p-788 ++0x1.a20214aeefbe0p186 ++0x1.8b3af704f3526p449 ++0x1.6663a7e181023p-643 ++0x1.e1f6d671b95f6p978 ++0x1.6aea24ab9c956p84 ++0x1.6318c0bc48f9bp-996 ++0x1.6603e22b2d2d1p-257 ++0x1.6b59906a87ddfp-896 ++0x1.665307aea1415p-153 ++0x1.6d9be19aca354p-887 ++0x1.640977cfbd7dep-564 ++0x1.1c6de3bf6f82ep909 ++0x1.24c452230e994p705 ++0x1.6b2c473cd0623p-626 ++0x1.beab17bff5e9ap-708 ++0x1.680445b6d430bp465 ++0x1.454de219171f0p158 ++0x1.6818a49dfb38dp20 ++0x1.15cb95403d2a4p622 ++0x1.1338a5210da9ap-78 ++0x1.651fc5045320ep-861 ++0x1.657ed41aace5bp-2 ++0x1.ff563189469ffp-44 ++0x1.62c811ba1d5e4p1 ++0x1.61f23108289f9p-422 ++0x1.168066765d078p875 ++0x1.a671a61b114a2p124 ++0x1.4471a372f703ep252 ++0x1.623ae599ffa3fp98 ++0x1.531085de4958bp441 ++0x1.4d6172de45534p-911 ++0x1.e5dcc2b3d23acp-437 ++0x1.67cac1dccdfcdp985 ++0x1.0ac1a5608baf9p-896 ++0x1.654cd778b1e36p837 ++0x1.929004c882902p-552 ++0x1.594a8c88348b0p-970 ++0x1.dc7f4509ddfd6p-832 ++0x1.d49846a313b79p998 ++0x1.6314b3a5ac85bp1018 ++0x1.d1d1325f66b7ep-763 ++0x1.6592a24f64047p403 ++0x1.bd47a2a1cc99fp-486 ++0x1.644266dda9ad2p778 ++0x1.6b2e821002783p26 ++0x1.69936648ba64ap-143 ++0x1.61d2a2a99f470p-970 ++0x1.6599c252868bap-840 ++0x1.3590b2e6af870p56 ++0x1.6b8311b9abc91p-961 ++0x1.29d1a705c6a3bp-660 ++0x1.6815d5d44778ap945 ++0x1.6ae36036fcee1p153 ++0x1.2034b640f0f4ap-3 ++0x1.84fec67d11992p85 ++0x1.1fa1a74c0af59p-478 ++0x1.64de9092a8789p-784 ++0x1.701bf3e5b0120p243 ++0x1.63ac048ca107bp-666 ++0x1.0095c464cfc5ap58 ++0x1.5f2d0041e5db2p362 ++0x1.62fa34a5c1bcap-412 ++0x1.cacf042abda4fp-54 ++0x1.647a95ef487b3p224 ++0x1.f8c2353681cbep905 ++0x1.67bfe67714076p366 ++0x1.6779865baf78fp-291 ++0x1.9395b1beca360p361 ++0x1.6521449e5ffe2p-671 ++0x1.667567cd5db59p-293 ++0x1.511df0b72a30bp30 ++0x1.65f8251162417p642 ++0x1.d0a0825ffb10cp210 ++0x1.63f2f5ba5415ap-716 ++0x1.65681206c6030p-580 ++0x1.5254d49bacf90p-849 ++0x1.49dd92d7cf7fep-208 ++0x1.688f565603c25p473 ++0x1.6439333b5f705p-589 ++0x1.663922acbdbb0p208 ++0x1.5a2631eb8325cp490 ++0x1.6171d410fcbbfp683 ++0x1.6ae4d6f8f091ep511 ++0x1.ae8ff53250e31p-1012 ++0x1.f182e535fab45p-332 ++0x1.653f84e9e8c3fp-34 ++0x1.99a737ac5cdadp328 ++0x1.301bb0b8607cbp232 ++0x1.706fa3fcd1d85p337 ++0x1.b650863c8ead0p227 ++0x1.64b9045b2d59dp740 ++0x1.681c66eda34d4p-113 ++0x1.f881050ae3a0cp-51 ++0x1.08bb778ebc5b6p-28 ++0x1.815fe4e6e4b72p100 ++0x1.691b6172a5798p-576 ++0x1.684f74d76367cp1010 ++0x1.64d044c4779d2p-207 ++0x1.690c021b1ae97p454 ++0x1.9d0ec359f67d5p77 ++0x1.43686724be426p774 ++0x1.678821f848886p-43 ++0x1.17abd1fcb3d3bp532 ++0x1.616ee4093684fp-43 ++0x1.631ec6e8ef9a7p264 ++0x1.63aa97d7de121p795 ++0x1.b172e7750d144p841 ++0x1.6836107e18e77p-826 ++0x1.65957572dedc3p-339 ++0x1.66b8d2cad9382p301 ++0x1.c8f410709f858p-761 ++0x1.6a2093c2b009dp-1013 ++0x1.b97a45fb7dad5p660 ++0x1.8150734f7fc95p40 ++0x1.6ab8a053c9089p-246 ++0x1.6b81e74a6293ep-813 ++0x1.251a74cf150acp779 ++0x1.44cf3370a55eap703 ++0x1.32e2e35cc77f3p-4 ++0x1.c0c6049562d13p-997 ++0x1.a050f54285fb8p-397 ++0x1.68ada319f3033p748 ++0x1.b2f37264e0acbp753 ++0x1.617614c5ecea7p137 ++0x1.b01c803ac06b1p559 ++0x1.4a19f60ad4238p-223 ++0x1.6314648785495p-40 ++0x1.6936664ef255fp943 ++0x1.6208f15a6484fp464 ++0x1.6b1244514989ep-886 +diff -urN glibc-2.17-c758a686/benchtests/log-inputs glibc-2.17-c758a686/benchtests/log-inputs +--- glibc-2.17-c758a686/benchtests/log-inputs 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.17-c758a686/benchtests/log-inputs 2015-06-20 21:22:16.301457983 -0400 +@@ -0,0 +1,295 @@ ++## args: double ++## ret: double ++## includes: math.h ++0x1.0c5e3365a2d95p0 ++0x1.037414ff63ab9p0 ++0x1.fc9366fa4c3a0p-1 ++0x1.f710159a37ab9p-1 ++0x1.5576e114e4f7cp-961 ++0x1.9d3382c6679b7p-1 ++0x1.f9e37774c7510p-1 ++0x1.058622e63af9dp0 ++0x1.fa62a3b5d47b5p-1 ++0x1.01fb737f14c41p250 ++0x1.fc7952a4bde83p-1 ++0x1.b68a54ad54fb4p-320 ++0x1.b8978216476a5p837 ++0x1.345bf2c9c6238p-638 ++0x1.580da4a80849ap197 ++0x1.fb0f43269facap-1 ++0x1.065f47ccd6b6cp0 ++0x1.db1317a87c872p-928 ++0x1.f563a1330ee1bp-1 ++0x1.8352661de852dp-1 ++0x1.887750a7ad5d0p315 ++0x1.385ed12583117p674 ++0x1.ff610285e1e46p-1 ++0x1.02e063a2777f0p-254 ++0x1.6b0f9482349a9p-489 ++0x1.f0413135a3a88p430 ++0x1.1ec910ecf9419p2 ++0x1.caab24b23bfdap-1 ++0x1.42d83712a1fabp-995 ++0x1.01d4b06dc2ce1p-2 ++0x1.c10a94cb4f93dp2 ++0x1.071a5441b3cabp0 ++0x1.04e8940083142p504 ++0x1.5083603bf110cp-660 ++0x1.f5312171625f3p-1 ++0x1.f15370065e66dp-1 ++0x1.f4de71c3efa90p-1 ++0x1.072a679084c2ep0 ++0x1.f89d125e68705p-1 ++0x1.31a5450e17b4fp10 ++0x1.036d1462f82d5p-1 ++0x1.54f131208767bp0 ++0x1.016fc65a58dd9p0 ++0x1.24b2c009625bfp-512 ++0x1.2898b1cc9ddc8p-1 ++0x1.0270851f17bb1p-241 ++0x1.eb1f03c6aa4d3p38 ++0x1.d29a93f1faf4fp964 ++0x1.d31de19a4e829p140 ++0x1.f8d260eeb5cefp-1 ++0x1.f259a4bc8f770p-1 ++0x1.8b9016448c4ccp-105 ++0x1.240f40168110bp-253 ++0x1.06fb26943be9bp0 ++0x1.9bae861967209p87 ++0x1.51fcc64d69563p-48 ++0x1.f4ff2413b004bp-1 ++0x1.387d65055d963p4 ++0x1.1c5705c916859p929 ++0x1.073be54be8356p0 ++0x1.544871c917766p-1 ++0x1.398536e090d37p-79 ++0x1.f34707ce261e5p-1 ++0x1.2e5792109f59bp593 ++0x1.075bd0ce07ef0p0 ++0x1.0ef545b2e5627p0 ++0x1.b2aa170bed688p-919 ++0x1.e341461098908p984 ++0x1.eacd43dea8eb2p-1 ++0x1.18c2a0ab6598bp265 ++0x1.219df5338fbc1p482 ++0x1.a9a0d4ceb201dp2 ++0x1.c0a6467baf54dp-23 ++0x1.0b499489342c1p361 ++0x1.f7c1f18cae6f4p-42 ++0x1.d8dea4350fb7fp627 ++0x1.0541421affe22p0 ++0x1.574bd3c94bdc9p-528 ++0x1.9aa814150ab62p-1 ++0x1.cab9532515b30p10 ++0x1.01e446e6b365ep0 ++0x1.04ef17a8014c7p0 ++0x1.fd91b3dc4e166p-98 ++0x1.9e879318176aap-448 ++0x1.605e9760da702p457 ++0x1.3e1d3541f8a73p131 ++0x1.ce2a303076cbap-9 ++0x1.f72021eaea3b7p-547 ++0x1.3384548e90a6dp222 ++0x1.0215143216bbap0 ++0x1.f546109b8e222p-1 ++0x1.b828c4971379dp779 ++0x1.0465440f18b39p0 ++0x1.00a302042eb49p0 ++0x1.9914e6bc2d08dp-637 ++0x1.aa8176fc83146p3 ++0x1.0dc041c8c9084p788 ++0x1.c17f14032741cp157 ++0x1.f8c3355f2c74fp-1 ++0x1.c0c373cb8d3abp-568 ++0x1.ffb897f081c1cp-1 ++0x1.7da4d5c6ecca5p666 ++0x1.1f8dd20fc3029p-196 ++0x1.f39d30de8b00cp-1 ++0x1.5710417d88db0p526 ++0x1.f552e4572e2e0p-1 ++0x1.ce97f507ac81ep-196 ++0x1.fe0b407a35cf9p-1 ++0x1.ffba3091bc8d9p-1 ++0x1.f79207f982a95p907 ++0x1.f3bc85de399b1p-1 ++0x1.f6a9075959280p-1 ++0x1.9971a0d49cffcp0 ++0x1.fdd4d11db35dcp-1 ++0x1.9f453762d3790p-708 ++0x1.d1122424ad397p717 ++0x1.fd71a20e66628p-1 ++0x1.007c20fefd661p0 ++0x1.0137d702a29bdp0 ++0x1.93e9047c983bfp-16 ++0x1.10cdf415042b5p0 ++0x1.fe6d8639abca0p-1 ++0x1.f7278572f6b66p-1 ++0x1.0673e76436ebcp550 ++0x1.f34833c8c70bcp-1 ++0x1.1b530128cc02dp8 ++0x1.ae48a5851e7a3p-236 ++0x1.98bdb6dff9d19p74 ++0x1.fbfd85f14418ep-1 ++0x1.070dd2780fcdap22 ++0x1.07a8f5726ae12p0 ++0x1.9a2ac2db753f8p-892 ++0x1.1461250716450p57 ++0x1.3b5be316bc364p-3 ++0x1.a2143693816d1p862 ++0x1.9418a18831f94p-502 ++0x1.ea8306738954cp993 ++0x1.fff14533df4f3p-1 ++0x1.0693706ddc70cp1 ++0x1.59e3947bce39dp-4 ++0x1.fa64a24c3030ap-1 ++0x1.044ce02e484e6p0 ++0x1.a272b5bdc397ep327 ++0x1.1c4577fcbe052p4 ++0x1.00ede267fbd99p0 ++0x1.028e26e56b7dfp0 ++0x1.005cf758f0dd7p635 ++0x1.bca6110bd6b05p46 ++0x1.11e7148e3f7e4p137 ++0x1.616e31d9c78afp898 ++0x1.f2eff0abf8fa1p-1 ++0x1.fd2275eabbc55p-1 ++0x1.e8f5a410e1a82p-1 ++0x1.7124e6de4fec6p342 ++0x1.95b03344f67d4p74 ++0x1.fb46137fbdd00p-1 ++0x1.78f9961f0c11bp936 ++0x1.2d3230575fa1dp-23 ++0x1.5cd631b404c9dp564 ++0x1.6a7645d7bc818p-901 ++0x1.1daca63403190p-160 ++0x1.64b4929d7185dp7 ++0x1.f95a819a0c75ep-1 ++0x1.fa2a9599f61c2p-1 ++0x1.f68b82c96e845p-1 ++0x1.b5c634c9a19f0p-551 ++0x1.706c63689c814p917 ++0x1.fa1134f93ff1bp0 ++0x1.b8e642ca65132p12 ++0x1.fdb645fc3558fp-1 ++0x1.9909b15771ca6p2 ++0x1.f4f6132242443p-1 ++0x1.c02b65da31a5cp-9 ++0x1.8b40c0afd5a42p679 ++0x1.1d9f80f2849ebp1015 ++0x1.3426c343358d6p608 ++0x1.f634874d073bep-1 ++0x1.016ab0aff9b7dp0 ++0x1.f1f34486c65e2p-1 ++0x1.022e8230e4320p0 ++0x1.fbe0104a4b316p-1 ++0x1.55323737c4d7bp-69 ++0x1.fa3d13e0efecep-1 ++0x1.2a7e11b35214bp281 ++0x1.9a2c33af22120p-1 ++0x1.986983a9d6f51p-1 ++0x1.f2f723416775fp-1 ++0x1.5d8565304a570p2 ++0x1.f3999057087ebp-1 ++0x1.fff027a147cc4p-1 ++0x1.f369333fdcaa7p-1 ++0x1.15ee471de5adcp-537 ++0x1.faa9f49088862p-1 ++0x1.0138239c244bcp0 ++0x1.8c28955e4efb3p-1 ++0x1.c3db66d450094p-916 ++0x1.dc4b70539f21cp-390 ++0x1.f7a363909f425p501 ++0x1.fb86b76e851a5p-1 ++0x1.010290232f8fcp-97 ++0x1.650a4595be763p510 ++0x1.fbd7a36081ccdp-1 ++0x1.073f0084dc154p0 ++0x1.fb7951f83410dp868 ++0x1.0404d08738d62p0 ++0x1.f1d895b2a5fdap-1 ++0x1.55472046b4703p351 ++0x1.f63882efa2ec0p-1 ++0x1.f367c590b00e1p-1 ++0x1.5251b7177fe50p501 ++0x1.49f2a03e6057ap-140 ++0x1.d5a68682d9946p-1 ++0x1.fcdd65a9229b0p-1 ++0x1.98bea1a0d0fbep681 ++0x1.260d06b5edc4bp-336 ++0x1.f5d520240b30ap-1 ++0x1.f8715777db2f7p-1 ++0x1.b3b0b64c86e27p-1 ++0x1.ae637316fa604p2 ++0x1.79919761b73adp43 ++0x1.bd55c268d4f40p-1 ++0x1.c81103f744ee1p4 ++0x1.deeeb24db6f46p-1 ++0x1.1056a7ba848e4p566 ++0x1.b167817c24607p-513 ++0x1.95d245973230bp798 ++0x1.04d551a6da2dcp-921 ++0x1.df2572264569fp92 ++0x1.fb105105409c1p-1 ++0x1.277ce2d7a1945p20 ++0x1.fc93d4234f18bp-1 ++0x1.be9f65acd2fa6p-911 ++0x1.0548c4cb78cd1p400 ++0x1.794c300f69a14p688 ++0x1.7dda15569e759p731 ++0x1.fdc9d6a00fb8ep-1 ++0x1.faae623a143f1p-1 ++0x1.8128373a5b95ep-608 ++0x1.c2e13445f6ca7p316 ++0x1.01d3a3dd89524p0 ++0x1.aee2578e3f114p-1 ++0x1.863ff7799e878p-266 ++0x1.ea8897550748bp-262 ++0x1.0652f24fd5820p0 ++0x1.56114467afa90p1 ++0x1.01b4561c918a5p0 ++0x1.21cd64b06baebp339 ++0x1.3d6384a8fd1b3p-35 ++0x1.01af659ea1389p0 ++0x1.fa8ed0ab15042p-724 ++0x1.47c1f4babad96p785 ++0x1.fc47829fd7bdfp-1 ++0x1.f3d2241382331p-1 ++0x1.0a0897e048564p0 ++0x1.957ab3f18f8e3p-446 ++0x1.5aad466994dacp506 ++0x1.fba8a2b4ab119p-1 ++0x1.003c906ab1a79p0 ++0x1.7039f057a155fp-678 ++0x1.f85964e37aae8p-1 ++0x1.53e2e0469deecp-711 ++0x1.f0cb530a2bf7dp658 ++0x1.af8d471733d1dp-1022 ++0x1.a684e3b3af12dp-239 ++0x1.fd26d7fa466b5p1 ++0x1.ebd3605467082p163 ++0x1.e29567ed6afecp-11 ++0x1.073757004a5a1p0 ++0x1.022334168530bp0 ++0x1.d4a6e162f4ceap575 ++0x1.00dbb330a556fp0 ++0x1.276b872c49045p0 ++0x1.51e835ab51aafp-7 ++0x1.e3c106b648377p-184 ++0x1.5a46f2460d290p-46 ++0x1.199a05d85e80dp-258 ++0x1.cde614a60f60ap-1 ++0x1.50f3a79e68493p-152 ++0x1.2c9af562aa58dp0 ++0x1.f695411839d24p-1 ++0x1.e53e5125bcdffp413 ++0x1.03e4c3218f178p0 ++0x1.d66213dc2e585p-820 ++0x1.ff5b9106a784ep-1 ++0x1.4d4990f481852p-15 ++0x1.39a5976ee7210p-879 ++0x1.f5e4d494092e7p-1 ++0x1.2bb040585ffdep-28 ++0x1.f707b3cd873d2p-1 ++0x1.fc1a353ea30eap-1 ++0x1.fc44366f2d5c7p-1 ++0x1.f9fb832b4f54fp-1 +diff -urN glibc-2.17-c758a686/benchtests/Makefile glibc-2.17-c758a686/benchtests/Makefile +--- glibc-2.17-c758a686/benchtests/Makefile 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.17-c758a686/benchtests/Makefile 2015-06-20 21:22:16.301457983 -0400 +@@ -0,0 +1,164 @@ ++# Copyright (C) 2013-2015 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 ++# . ++ ++ ++# Makefile for benchmark tests. The only useful target here is `bench`. ++# Add benchmark functions in alphabetical order. ++ ++# Run python scripts with $(PYTHON). ++PYTHON := python ++ ++subdir := benchtests ++ ++include ../Makeconfig ++bench-math := acos acosh asin asinh atan atanh cos cosh exp exp2 ffs ffsll \ ++ log log2 modf pow rint sin sincos sinh sqrt tan tanh ++ ++bench-pthread := pthread_once ++ ++bench := $(bench-math) $(bench-pthread) ++ ++# String function benchmarks. ++string-bench := bcopy bzero memccpy memchr memcmp memcpy memmem memmove \ ++ mempcpy memset rawmemchr stpcpy stpncpy strcasecmp strcasestr \ ++ strcat strchr strchrnul strcmp strcpy strcspn strlen \ ++ strncasecmp strncat strncmp strncpy strnlen strpbrk strrchr \ ++ strspn strstr strcpy_chk stpcpy_chk memrchr strsep strtok ++string-bench-all := $(string-bench) ++ ++stdlib-bench := strtod ++ ++benchset := $(string-bench-all) $(stdlib-bench) ++ ++CFLAGS-bench-ffs.c += -fno-builtin ++CFLAGS-bench-ffsll.c += -fno-builtin ++ ++bench-malloc := malloc-thread ++ ++$(addprefix $(objpfx)bench-,$(bench-math)): $(libm) ++$(addprefix $(objpfx)bench-,$(bench-pthread)): $(shared-thread-library) ++$(objpfx)bench-malloc-thread: $(shared-thread-library) ++ ++ ++ ++# Rules to build and execute the benchmarks. Do not put any benchmark ++# parameters beyond this point. ++ ++# We don't want the benchmark programs to run in parallel since that could ++# affect their performance. ++.NOTPARALLEL: ++ ++include ../Rules ++ ++binaries-bench := $(addprefix $(objpfx)bench-,$(bench)) ++binaries-benchset := $(addprefix $(objpfx)bench-,$(benchset)) ++binaries-bench-malloc := $(addprefix $(objpfx)bench-,$(bench-malloc)) ++ ++# The default duration: 10 seconds. ++ifndef BENCH_DURATION ++BENCH_DURATION := 10 ++endif ++ ++CPPFLAGS-nonlib += -DDURATION=$(BENCH_DURATION) ++ ++# Use clock_gettime to measure performance of functions. The default is to use ++# HP_TIMING if it is available. ++ifdef USE_CLOCK_GETTIME ++CPPFLAGS-nonlib += -DUSE_CLOCK_GETTIME ++endif ++ ++DETAILED_OPT := ++ ++ifdef DETAILED ++DETAILED_OPT := -d ++endif ++ ++# This makes sure CPPFLAGS-nonlib and CFLAGS-nonlib are passed ++# for all these modules. ++cpp-srcs-left := $(binaries-benchset:=.c) $(binaries-bench:=.c) \ ++ $(binaries-bench-malloc:=.c) ++lib := nonlib ++include $(patsubst %,$(..)cppflags-iterator.mk,$(cpp-srcs-left)) ++ ++extra-objs += json-lib.o ++ ++bench-deps := bench-skeleton.c bench-timing.h Makefile ++ ++run-bench = $(test-wrapper-env) \ ++ $(run-program-env) \ ++ $($*-ENV) $(rtld-prefix) $${run} ++ ++timing-type := $(objpfx)bench-timing-type ++ ++bench-clean: ++ rm -f $(binaries-bench) $(addsuffix .o,$(binaries-bench)) ++ rm -f $(binaries-benchset) $(addsuffix .o,$(binaries-benchset)) ++ rm -f $(binaries-bench-malloc) $(addsuffix .o,$(binaries-bench-malloc)) ++ rm -f $(timing-type) $(addsuffix .o,$(timing-type)) ++ ++bench: $(timing-type) bench-set bench-func bench-malloc ++ ++bench-set: $(binaries-benchset) ++ for run in $^; do \ ++ echo "Running $${run}"; \ ++ $(run-bench) > $${run}.out; \ ++ done ++ ++bench-malloc: $(binaries-bench-malloc) ++ run=$(objpfx)bench-malloc-thread; \ ++ for thr in 1 8 16 32; do \ ++ echo "Running $${run} $${thr}"; \ ++ $(run-bench) $${thr} > $${run}-$${thr}.out; \ ++ done ++ ++# Build and execute the benchmark functions. This target generates JSON ++# formatted bench.out. Each of the programs produce independent JSON output, ++# so one could even execute them individually and process it using any JSON ++# capable language or tool. ++bench-func: $(binaries-bench) ++ { timing_type=$$($(timing-type)); \ ++ echo "{\"timing_type\": \"$${timing_type}\","; \ ++ echo " \"functions\": {"; \ ++ for run in $^; do \ ++ if ! [ "x$${run}" = "x$<" ]; then \ ++ echo ","; \ ++ fi; \ ++ echo "Running $${run}" >&2; \ ++ $(run-bench) $(DETAILED_OPT); \ ++ done; \ ++ echo; \ ++ echo " }"; \ ++ echo "}"; } > $(objpfx)bench.out-tmp; \ ++ if [ -f $(objpfx)bench.out ]; then \ ++ mv -f $(objpfx)bench.out $(objpfx)bench.out.old; \ ++ fi; \ ++ mv -f $(objpfx)bench.out-tmp $(objpfx)bench.out ++ $(PYTHON) scripts/validate_benchout.py $(objpfx)bench.out \ ++ scripts/benchout.schema.json ++ ++$(timing-type) $(binaries-bench) $(binaries-benchset) \ ++ $(binaries-bench-malloc): %: %.o $(objpfx)json-lib.o \ ++ $(sort $(filter $(common-objpfx)lib%,$(link-libc))) \ ++ $(addprefix $(csu-objpfx),start.o) $(+preinit) $(+postinit) ++ $(+link) ++ ++$(objpfx)bench-%.c: %-inputs $(bench-deps) ++ { if [ -n "$($*-INCLUDE)" ]; then \ ++ cat $($*-INCLUDE); \ ++ fi; \ ++ $(PYTHON) scripts/bench.py $(patsubst %-inputs,%,$<); } > $@-tmp ++ mv -f $@-tmp $@ +diff -urN glibc-2.17-c758a686/benchtests/modf-inputs glibc-2.17-c758a686/benchtests/modf-inputs +--- glibc-2.17-c758a686/benchtests/modf-inputs 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.17-c758a686/benchtests/modf-inputs 2015-06-20 21:22:16.301457983 -0400 +@@ -0,0 +1,4 @@ ++## includes: math.h ++## args: double: ++42.0 ++-42.0 +diff -urN glibc-2.17-c758a686/pow-inputs glibc-2.17-c758a686/benchtests/pow-inputs +--- glibc-2.17-c758a686/benchtests/pow-inputs 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.17-c758a686/benchtests/pow-inputs 2015-06-20 21:22:16.302457953 -0400 +@@ -0,0 +1,511 @@ ++## args: double:double ++## ret: double ++## includes: math.h ++42.0, 42.0 ++-0x1.086f771a2b37bp696, 0x1.592b453fe869fp-81 ++0x1.19eb12518e61bp-217, 0x1.c87753325f271p59 ++0x1.5c68b7b390060p-869, -0x1.0000000000000p-64 ++0x1.d96cb2cd196ebp3, 0x1.0000000000000p-64 ++-0x1.f7cb93ee0ba9bp-238, 0x1.b7f046c622df6p691 ++0x1.5cf5307b64e94p-233, 0x1.4499d7e88a731p124 ++0x1.58bc610fde155p756, -0x1.0000000000000p-64 ++0x1.11e4c61e2489ep9, 0x1.f3ddd0aadf9e9p94 ++0x1.064765103f18ap-245, 0x1.a413811779c11p89 ++-0x1.a26e540b1b5e0p77, 0x1.5987a1b0f6368p897 ++0x1.465db461ffd24p681, -0x1.0000000000000p-64 ++-0x1.b986d646b93b4p-100, -0x1.936ff2a7c8adep-420 ++0x1.af0d371d0a43dp-197, 0x1.f185f2aba0958p217 ++0x1.13ce451492820p115, -0x1.1598c3d54c625p81 ++0x1.d5ec14b6de205p-604, -0x1.0000000000000p-64 ++0x1.cf8ad6a495d19p-100, 0x1.8d2563e08105dp7 ++0x1.1a7d3100f9ef4p-636, -0x1.0000000000000p-64 ++-0x1.6dd9a7d0122f5p421, 0x1.199895f013a09p49 ++0x1.b892e5125d7d1p-345, 0x1.0000000000000p-64 ++0x1.5dfa7063ce092p996, 0x1.0000000000000p-64 ++0x1.9e7d74cdbf190p512, -0x1.3d1b5206e8127p237 ++0x1.b941e202e240dp-325, -0x1.0000000000000p-64 ++-0x1.fbe85766fae96p-463, 0x1.91c903c89b075p85 ++0x1.eab5553bcdfbap-957, 0x1.ab0a06811189cp90 ++0x1.4c2c90f483a09p917, -0x1.0000000000000p-64 ++0x1.014bc72248db8p439, -0x1.e1bef116ca6d9p112 ++-0x1.6733d0746880bp-316, 0x1.8a34e6c887c39p-107 ++-0x1.5a9b05cc4e1c4p461, -0x1.88d2560562b17p-798 ++0x1.9690663e74e47p967, -0x1.0000000000000p-64 ++-0x1.125986687c812p-159, -0x1.bd3236342d0f4p550 ++0x1.3d6422e5177bep-951, 0x1.3878a292f55d9p226 ++-0x1.9922669366d2dp590, -0x1.ae14d63976e00p-684 ++0x1.d838c66e05cc9p256, 0x1.0000000000000p-64 ++0x1.c319328022c2cp890, -0x1.4a627098d6e49p170 ++0x1.0deee25028507p461, 0x1.310f343ce0281p94 ++0x1.279923dac3d31p147, 0x1.0000000000000p-64 ++0x1.e27fe364ee0b4p963, -0x1.107d33f004629p245 ++-0x1.8160e4b7efcecp833, -0x1.9612560bf9302p-472 ++-0x1.7814633c7452bp-821, -0x1.d36af1ef2c42fp636 ++0x1.bac865bccd66ep113, -0x1.454be507db267p19 ++0x1.c75b53051ead0p-931, -0x1.0000000000000p-64 ++-0x1.cab4e5935aeaep318, -0x1.6794550b87520p-257 ++0x1.088056b5fbc0dp-459, 0x1.0000000000000p-64 ++0x1.1f8eb28937183p748, -0x1.b2a940cf17bc0p217 ++0x1.ba85352faba13p-796, -0x1.0000000000000p-64 ++0x1.1d3984c620975p460, 0x1.0000000000000p-64 ++0x1.37acd13a9ea78p1019, 0x1.0000000000000p-64 ++0x1.0e9d041b054d3p-411, 0x1.0000000000000p-64 ++0x1.a156c095ec992p102, -0x1.46f561fd1fda9p98 ++-0x1.273ca2d449455p471, -0x1.fa6c92046c475p-860 ++-0x1.7b475167ae88ep-116, -0x1.eba627003ccc5p-339 ++0x1.2996c344cf7dcp-564, 0x1.21df51e88e157p161 ++-0x1.7d29f253d3e79p636, -0x1.8e30a1ba55f7fp77 ++0x1.99ffe6fb747bep1003, -0x1.8b1047a0ed3b3p67 ++0x1.248c46b353471p251, -0x1.3aa8631084564p8 ++-0x1.500c56dfd8fa0p-869, 0x1.819212336e2afp-523 ++0x1.012185cb5e155p-672, 0x1.dcbc907d906f0p203 ++0x1.964221fe0b0c5p-260, -0x1.0000000000000p-64 ++-0x1.172f10899cbcep669, 0x1.e4e656fea6c19p663 ++0x1.e356e63b681dep989, -0x1.dd9d772868663p41 ++0x1.ccd0118265376p287, -0x1.22ae0058250b6p184 ++0x1.3de177d6762ebp742, -0x1.ebc180d571e12p58 ++0x1.04caa30a223c6p-294, 0x1.0000000000000p-64 ++-0x1.e0ffa63b800fcp-938, 0x1.0a2c229973ed9p149 ++0x1.e0ffa63b800fcp-938, 0x1.0a2c229973ed9p149 ++0x1.d43815bff9e7dp-685, 0x1.825755f8cae4bp168 ++0x1.fe3b21bec8806p456, 0x1.0000000000000p-64 ++0x1.b26d766ab1f27p-162, 0x1.184f242e49092p249 ++-0x1.1c70d750f61abp-899, 0x1.e3f3e7ec803dap759 ++0x1.220fe763e4353p897, 0x1.6a6f650adecc0p141 ++0x1.d6f7716723825p-58, 0x1.0000000000000p-64 ++0x1.2b0242282c767p308, 0x1.c9dd84f859214p104 ++0x1.7d0ee4b3bb946p-563, -0x1.9d1683c6f5c5ap226 ++-0x1.8547b5d202937p967, -0x1.14e58570b43a5p-765 ++-0x1.568636c53d51fp-638, 0x1.164257f3ab632p-455 ++0x1.6d7936f1f5553p-435, 0x1.8f26767f92ccbp147 ++0x1.7c18551f15775p147, -0x1.0000000000000p-64 ++-0x1.f2ac8209992fbp-965, 0x1.5faaf4ec0340cp-236 ++-0x1.f57620fa5afd6p-69, -0x1.096166fce916ep-683 ++-0x1.5054f3c0b1320p-215, 0x1.8c01c0a19db1bp-285 ++0x1.e41e64f79a6a9p404, 0x1.0000000000000p-64 ++0x1.71fc41e25fe85p-413, 0x1.4acb80e80f0b2p214 ++0x1.fbf477dec9138p-661, 0x1.0000000000000p-64 ++0x1.7575c7cd67604p498, 0x1.0000000000000p-64 ++-0x1.f4dd41d434b62p-205, -0x1.981f66551fd64p805 ++0x1.76ac564847250p-870, -0x1.0000000000000p-64 ++0x1.bb0e222493e31p-632, 0x1.16ad202a7c871p27 ++-0x1.079a76db55d95p-974, -0x1.19d4717967203p-409 ++0x1.68a7c79597132p-227, 0x1.6c3871ff9ad60p195 ++0x1.4961c76e0940cp271, -0x1.0000000000000p-64 ++0x1.04cf75ca8337cp-273, -0x1.0000000000000p-64 ++0x1.4fffe4a25f260p152, -0x1.a0e3a7e58a0d3p149 ++0x1.c125c40bb88b6p-281, 0x1.bedf8672d605fp215 ++0x1.bcd59440339b5p67, -0x1.d225c2cc02d3bp60 ++0x1.670e80ab2399bp-841, 0x1.887061c29e4afp131 ++0x1.7c6ef76479beep839, -0x1.0f72a2967e041p98 ++0x1.272f8550905f7p-961, 0x1.21a6d4787c14cp190 ++0x1.0a33d4e39655cp-424, 0x1.4dafa3da87794p162 ++0x1.a34e21945e568p-641, 0x1.3a0a05d61f5e4p119 ++-0x1.b57493dffe1c3p68, -0x1.8e19843fbbd1ep515 ++0x1.a8ce11ea61121p248, -0x1.7b2376aa515e8p115 ++-0x1.5feca3ddab161p-509, 0x1.3e0c341715e1cp217 ++0x1.6695a0cf6063fp-689, 0x1.1852d463ea98ep37 ++0x1.9367127039f77p-293, 0x1.adbe75323caaap47 ++0x1.6ad5c2f704166p-336, -0x1.9bf7b7271daefp100 ++0x1.6791a1f6e89bap-845, 0x1.07e4c362cf895p92 ++-0x1.20d7f6086ddb2p143, 0x1.687a7454403f4p337 ++-0x1.9bd727a165453p-810, 0x1.742fe1f2bf2dbp-551 ++0x1.40c3b16a0dba0p438, -0x1.67a872ec62dadp90 ++0x1.5e0ab0f983abfp629, -0x1.0000000000000p-64 ++0x1.c929a231173cfp844, -0x1.f25c7501c8144p116 ++-0x1.410ad6057e935p204, 0x1.bdb5a3d649e74p-928 ++0x1.9f222254cab3fp-817, -0x1.0000000000000p-64 ++0x1.7f7d22b44403fp1007, -0x1.2299d752e308dp177 ++0x1.41f824f624f36p511, -0x1.0000000000000p-64 ++0x1.9fbb158e5d5dfp-525, 0x1.f803767193e3fp31 ++-0x1.e6a1216cab6d4p-260, 0x1.100d3600b5996p935 ++-0x1.dd23855d0cc3ep1003, 0x1.3411e38397aaep-158 ++-0x1.3a9e0585f7979p-827, -0x1.db64725e35a3cp-259 ++0x1.ce93a02ba2924p866, 0x1.0000000000000p-64 ++0x1.445bf157156d4p-100, 0x1.0000000000000p-64 ++-0x1.ba1ca38fc92ebp-848, -0x1.9270247b4b009p-609 ++-0x1.5ac2b6a0c0476p-172, -0x1.595d419d9babdp-399 ++-0x1.94f2b24fd7b65p839, -0x1.a42b466df80e1p519 ++0x1.bf66704c603f1p-859, 0x1.430eb110359f6p-63 ++0x1.e9ccb07667b5fp-435, 0x1.e7cec7c8e2138p229 ++-0x1.bcd59440339b5p67, -0x1.d225c2cc02d3bp60 ++0x1.a5e7c0a9c79d2p-503, -0x1.0000000000000p-64 ++0x1.91aa125544e6ep681, -0x1.0000000000000p-64 ++0x1.5371f5af7cd6ep-628, 0x1.078a57c0c5e30p147 ++-0x1.2890a668b0252p-207, 0x1.ec956130d1ea0p411 ++0x1.70f496a3b1319p-183, 0x1.9f04e4dd9dee0p159 ++-0x1.ab4c0689a295cp375, 0x1.ec1627c9f2374p-617 ++-0x1.390d459924f44p-348, -0x1.8e36a55756005p481 ++0x1.c1b483579742ap101, 0x1.a05a357f2d54fp236 ++0x1.d0a84005691b7p763, -0x1.68f840a20c734p60 ++0x1.f32d34d1fffd4p-40, 0x1.fc09869af26f1p131 ++-0x1.e693e5dbee2e0p207, 0x1.2301f18cd9d27p817 ++0x1.1f72a3d4f7881p-764, 0x1.4617565381163p177 ++-0x1.7f69c3aee139ep-648, 0x1.1f42e1d53ae48p597 ++-0x1.adc7f1f9fdc02p38, -0x1.a07af4087ad66p1011 ++-0x1.923d01b1c3960p-276, 0x1.2c6710910e47ap889 ++0x1.6b60a2accafe3p977, -0x1.78f4404c514b7p170 ++-0x1.0a2a3540be5a3p302, 0x1.3259b15ad5075p-333 ++-0x1.11e4c61e2489ep9, 0x1.f3ddd0aadf9e9p94 ++0x1.e02943925b096p-651, 0x1.3e5010a3be270p137 ++0x1.9887e07a7b4bdp-835, -0x1.0000000000000p-64 ++0x1.fb9fd6c57d283p-969, -0x1.eb21f1c75479dp195 ++0x1.55fb70ae2db62p-910, 0x1.b77402b5190d5p10 ++-0x1.38b1775c225eep723, 0x1.7595a59a7ba8dp901 ++0x1.fbdc30f777a6ap649, -0x1.ea19f696739e0p183 ++0x1.c2b5309403401p760, -0x1.0000000000000p-64 ++-0x1.3d6de154feafep496, -0x1.9763760be8c9dp-161 ++0x1.1c0a33e2b3719p-116, -0x1.0000000000000p-64 ++0x1.06b1024b8b4bap471, -0x1.cd9f24d503076p59 ++-0x1.6d0d67d7d2ad2p627, 0x1.35c77413a4d2fp190 ++-0x1.881467b6c56d5p-194, -0x1.465995072de7cp707 ++0x1.1147d4d59a3a5p-952, -0x1.0000000000000p-64 ++-0x1.c319328022c2cp890, -0x1.4a627098d6e49p170 ++0x1.993864ddbc05dp562, 0x1.0000000000000p-64 ++0x1.f9abd78250a64p633, -0x1.f104e2772f8cep141 ++-0x1.4d87f27b51978p-916, 0x1.073e35dc85a96p-1003 ++0x1.1e8e0347dd99bp278, 0x1.0000000000000p-64 ++0x1.7fbfc71fde6edp891, -0x1.0000000000000p-64 ++-0x1.ae86836ca4d83p659, -0x1.5153616fefc6ap-61 ++0x1.0452d237e1de7p-518, 0x1.296675c74320cp87 ++0x1.12fc06ee54ac1p615, -0x1.0000000000000p-64 ++0x1.887c234a8cc63p-708, 0x1.ae5fb57f66c84p175 ++0x1.4978c021c25cbp-130, -0x1.115a65f48b23cp80 ++-0x1.a1e733c9fd87fp552, 0x1.cef7045a6012ap811 ++0x1.f98611b7c6a51p538, -0x1.0000000000000p-64 ++-0x1.858f201dffc93p26, 0x1.6a110485981d4p-285 ++0x1.84297333218cep712, 0x1.497396c926ddfp73 ++0x1.12c3e319b6a54p-783, 0x1.0000000000000p-64 ++-0x1.8ee011da43d65p-879, 0x1.7b6cf1473438ep670 ++-0x1.4978c021c25cbp-130, -0x1.115a65f48b23cp80 ++0x1.f057a19099427p-736, 0x1.0000000000000p-64 ++0x1.407a2417c0b48p413, -0x1.90cbb0161a8c6p12 ++0x1.04f492d848a39p-816, 0x1.ec7fb651e4df9p225 ++-0x1.5290f79114db5p-971, -0x1.feede687f8cf3p-101 ++0x1.fb0cc227fae39p-669, 0x1.924f06f662685p143 ++-0x1.7d10c2a023848p734, -0x1.86a912207d0c3p757 ++-0x1.5ebd0337bf9f3p945, 0x1.cb53f1b618ab5p465 ++0x1.cef8d3cce5e81p531, -0x1.0000000000000p-64 ++0x1.cdc7962fdc900p51, 0x1.0000000000000p-64 ++-0x1.04f492d848a39p-816, 0x1.ec7fb651e4df9p225 ++-0x1.23221091a234fp828, -0x1.b08e262c8eca5p972 ++0x1.bc16f113ad6ebp-101, 0x1.7c8311241b744p169 ++0x1.e1c163876ccdcp843, -0x1.0000000000000p-64 ++0x1.3daea5a429d79p-639, 0x1.0000000000000p-64 ++0x1.e99204b546e58p215, -0x1.0000000000000p-64 ++-0x1.950493326e8b2p679, 0x1.fdc874cefc875p-615 ++0x1.016dd4fb0abd2p853, -0x1.c82dd72b4ab44p102 ++0x1.d0f6737fbcdbbp-353, 0x1.081a8002b8e53p211 ++0x1.f1d1f5c67bb5ap-321, 0x1.d64ec22c49552p176 ++-0x1.8a60721e2686ap880, -0x1.936f75de69956p-750 ++0x1.8368e4ed700bbp-57, 0x1.0000000000000p-64 ++-0x1.7c5d037e915cep538, -0x1.aa30914f141e5p-886 ++-0x1.9ff485cb26fa7p227, 0x1.82c1703140ceep465 ++-0x1.bc56157fec778p-542, -0x1.898e228074677p-385 ++0x1.eb16d56eb1d78p-224, 0x1.393ef32f107adp205 ++-0x1.10bf71d60a4d1p-524, 0x1.335ac0ca90f62p1004 ++0x1.392bc7ade8723p528, -0x1.50ea12907473fp21 ++0x1.a26d44e3b408fp-896, 0x1.beda15a2a2799p129 ++0x1.6d0d67d7d2ad2p627, 0x1.35c77413a4d2fp190 ++-0x1.47a744db0c087p689, -0x1.0445309d5d5bdp-205 ++0x1.0d3c074692057p781, -0x1.885716d3dcfbap146 ++0x1.5feca3ddab161p-509, 0x1.3e0c341715e1cp217 ++0x1.001af5dcc9beep589, 0x1.0000000000000p-64 ++0x1.0b0f700297c73p388, 0x1.0000000000000p-64 ++-0x1.4591e2de659a7p796, 0x1.4ab1a273f0697p736 ++0x1.1e68964b6cc85p6, -0x1.d50762f9e9ce4p59 ++0x1.40a7f08b7509dp-373, 0x1.6784b7c373049p207 ++0x1.c43b310d38279p-924, 0x1.d4b5d23a0b96dp239 ++0x1.421436f55761ep-12, 0x1.320481b0055a7p227 ++-0x1.135fa0f337e6ep856, -0x1.ed172226e05edp335 ++-0x1.d0a84005691b7p763, -0x1.68f840a20c734p60 ++-0x1.6153c39025700p908, -0x1.87eff6801054cp257 ++0x1.ad64258a1c8aep201, -0x1.eb202553cc800p129 ++0x1.09a810c8ff945p866, -0x1.0000000000000p-64 ++0x1.d14433f742c09p-360, 0x1.f4ff819b628ddp21 ++0x1.0c04a59d1fa4fp562, 0x1.66b354392a531p134 ++-0x1.84297333218cep712, 0x1.497396c926ddfp73 ++-0x1.fb9fd6c57d283p-969, -0x1.eb21f1c75479dp195 ++0x1.dd87e7279e72bp748, -0x1.0000000000000p-64 ++0x1.e494b3d72a143p612, -0x1.3b94e6aa337a0p-57 ++0x1.4a6b277bdabe4p-613, -0x1.0000000000000p-64 ++0x1.aa78012aaa9c7p338, 0x1.0000000000000p-64 ++-0x1.ab74577adade9p149, -0x1.2057c78ee21ccp31 ++0x1.3974c5e1e2049p105, -0x1.d3dbb0fb0baf1p54 ++0x1.c83bb023360a9p879, -0x1.0c6922624c625p97 ++-0x1.e21c0605b5f2bp-634, 0x1.f28232c2ebba3p-74 ++0x1.e61ed69f4f3e5p558, -0x1.0ee6a03187e13p128 ++0x1.d32cb4d190af4p-556, -0x1.0000000000000p-64 ++0x1.97a202fe3d99bp812, -0x1.12eba5e07e17fp131 ++0x1.5cbf140578025p750, -0x1.0000000000000p-64 ++0x1.8754d2c071fd1p-796, -0x1.0000000000000p-64 ++-0x1.c24a21659e391p874, 0x1.8fca31719d26fp-203 ++0x1.db5587ed33e3dp-392, -0x1.0000000000000p-64 ++0x1.59b6e3bd2734fp959, -0x1.0000000000000p-64 ++-0x1.2f68f32a5979ep367, 0x1.d77b92aecf0f8p-414 ++0x1.73e621f69389dp222, -0x1.1235366e0a84bp216 ++0x1.076b75274a516p-7, -0x1.0000000000000p-64 ++0x1.2505e4b701385p-178, -0x1.0000000000000p-64 ++0x1.ae0c974a70a8fp607, 0x1.0000000000000p-64 ++0x1.b2c344636c704p595, -0x1.9d1b879d64e7dp213 ++-0x1.a6f695e9d29eep-629, 0x1.dad8811e62691p422 ++0x1.e5aca4566a08ap234, -0x1.645ed34f63b48p65 ++0x1.67faa10de96c9p-929, 0x1.0000000000000p-64 ++0x1.503a50f3f36c9p-313, 0x1.a1b537c589279p212 ++-0x1.e62711b5b18aap-336, 0x1.176d22b7c6703p-81 ++-0x1.78e6d2fb3c6c8p-802, -0x1.4354b70f8d56ap-407 ++-0x1.a9b890e6a309bp-974, -0x1.fc73521e05c84p446 ++0x1.605c070891e95p751, -0x1.00e8a0f55071cp255 ++-0x1.8e249352e8ed4p-690, -0x1.d751a5bb2c420p-254 ++0x1.67246027c2465p584, 0x1.3aaa16d492946p178 ++0x1.c53735a56d1edp610, -0x1.630662efaf0c6p60 ++0x1.d54a131bae182p142, -0x1.a313606a0459dp220 ++0x1.38afe5f1ed5b4p-779, 0x1.0000000000000p-64 ++0x1.f2aa76462ad42p-982, 0x1.0000000000000p-64 ++0x1.e188a166c06b6p45, 0x1.0000000000000p-64 ++0x1.fbe85766fae96p-463, 0x1.91c903c89b075p85 ++0x1.3342d36ecf081p28, -0x1.0000000000000p-64 ++0x1.c2b0a036a1828p719, 0x1.0000000000000p-64 ++0x1.ba7f308dc60ddp517, -0x1.b38d014638da6p246 ++-0x1.075aa7ba85f42p624, -0x1.a357d32f45a61p-867 ++0x1.1fbb4362bf313p995, 0x1.d039c2c0e18bfp-6 ++-0x1.150426e803137p622, -0x1.9bafe2efa3e89p39 ++-0x1.3f2456d5cba52p116, 0x1.fa9ec45f18306p-389 ++0x1.8e58945bd1087p-701, 0x1.0000000000000p-64 ++-0x1.ab0ef29932d78p111, 0x1.4313d75c1df97p658 ++0x1.ee3e13dd00d34p1016, 0x1.d6b3d3b9034c1p85 ++-0x1.7f0bd006c0d62p-324, 0x1.8210646a5ccddp871 ++-0x1.c004d2256a5b8p402, -0x1.a01df480fdcb7p98 ++-0x1.3717c2e75f865p-749, -0x1.628ab47e4b9c7p-879 ++-0x1.dfb414ca1e89fp780, -0x1.b1a6d17b59340p927 ++0x1.2bb340a5c99b8p772, -0x1.4cb4a208cd38ap49 ++0x1.983d90ffcdc95p-131, 0x1.294857e7a5d9dp66 ++0x1.0789a00a3ff0fp-950, -0x1.0000000000000p-64 ++0x1.6816c6cd93ea9p112, 0x1.985412f1ac3d6p104 ++0x1.3c0e604f8974bp-226, 0x1.0000000000000p-64 ++0x1.07acb29e12fc1p687, -0x1.edff80d6b306fp107 ++0x1.22c1d3b2c0e45p135, -0x1.9a5dc703e46dbp204 ++0x1.ede956a719d56p248, -0x1.80e8e672e144fp156 ++-0x1.ff6263662c8fbp-263, 0x1.cf3867b2bac05p652 ++0x1.f01e46c129d76p-5, 0x1.00d113cf96023p137 ++0x1.45cf928146851p636, 0x1.26b1c5666d711p131 ++-0x1.768376c2f7584p563, 0x1.017143ae97b27p545 ++-0x1.1f72a3d4f7881p-764, 0x1.4617565381163p177 ++0x1.dd9431675dbb5p-114, 0x1.0000000000000p-64 ++-0x1.64cc1762105b7p-569, -0x1.2d69b27570067p840 ++0x1.bd1077dadd530p235, 0x1.0000000000000p-64 ++0x1.0aa166c2b93bdp488, -0x1.48d03430453b8p213 ++-0x1.b513845f09747p-331, -0x1.d04e154527b26p685 ++0x1.5c97b3a12df62p696, -0x1.e160e008f7d3ap89 ++0x1.8eec91bde3d69p-376, -0x1.0000000000000p-64 ++0x1.7d29f253d3e79p636, -0x1.8e30a1ba55f7fp77 ++0x1.c004d2256a5b8p402, -0x1.a01df480fdcb7p98 ++0x1.52b9d41aaa1e9p-589, -0x1.292cb15f1459dp46 ++-0x1.ea9ca6fa0919ep-279, -0x1.601e44b6a588cp40 ++# pow slow path at 240 bits ++# Implemented in sysdeps/ieee754/dbl-64/slowpow.c ++## name: 240bits ++0x1.01fcd33493ea3p596, -0x1.724bd4e887783p-14 ++0x1.032ff59ab34fdp-540, -0x1.61e3632080b87p-24 ++0x1.045c337b80f53p304, 0x1.dc3404c30fa69p-56 ++0x1.0681338469475p-294, -0x1.3562210f27dfap-51 ++0x1.0b55c01eab2a6p-447, -0x1.cd7162fecd483p-48 ++0x1.0b74d4b709002p-811, -0x1.0af1478682e96p-50 ++0x1.0e4d10f3aabc8p664, 0x1.e2bde3471eaa1p-55 ++0x1.110607de11aa5p120, 0x1.dcec269cfd865p-47 ++0x1.132aa4cc6f38bp-751, 0x1.366ca7979d9bbp-8 ++0x1.138ae6f5a6dadp-680, 0x1.890a0755fce7ap-40 ++0x1.1b7b95bdc6400p467, 0x1.ec36f5f75ce4cp-8 ++0x1.1c20e7f14086cp-788, 0x1.f22967f8b5d7cp-48 ++0x1.278262637b59cp446, -0x1.1aab83169f61cp-10 ++0x1.2936f2eb01500p-234, -0x1.aa25c56c7a42ap-51 ++0x1.2991068d7df8dp-895, -0x1.e22e0335a6813p-19 ++0x1.2a4320a5a4e06p342, 0x1.a60de202d0f39p0 ++0x1.2baa57016f98bp445, -0x1.19b39156d7af6p-42 ++0x1.3003b731560f2p189, -0x1.d03a35d7809bbp-6 ++0x1.3098f631b79b3p322, 0x1.936cf77d12901p-58 ++0x1.329f9083895d6p-470, 0x1.c4e0407eac9e1p-60 ++0x1.32e62120a48dep-373, 0x1.8c03970ea6143p-15 ++0x1.3b69741c89827p-951, 0x1.d7e2d50ab916bp-13 ++0x1.46d346d411a30p-451, -0x1.5bed1300261dcp-37 ++0x1.48d0870fc99a7p-691, -0x1.4f6541a43b8cdp-5 ++0x1.49ae5141ea416p-825, 0x1.cfc4b51dbe592p-24 ++0x1.4d1fb5a2a4d73p738, -0x1.d2a54658b1df9p-50 ++0x1.4ddb12f9500cbp962, 0x1.48bc1158eb70ap-15 ++0x1.4f51d32b02376p758, 0x1.11d1409aaea9fp-27 ++0x1.54f723dd63e3bp605, 0x1.6c02f2514de2ap-23 ++0x1.5529070b8d631p-489, 0x1.1c3dd76010b92p-37 ++0x1.569bf17eb40dfp217, -0x1.8cb97627ae884p-31 ++0x1.5e2892c719a5ap817, 0x1.f0e3d4b66e9c0p-11 ++0x1.619a049c49284p329, -0x1.0bc7b3735d182p-12 ++0x1.62e6745b17235p344, 0x1.86dcb0cd4e584p-39 ++0x1.6532120398cb6p374, -0x1.dd57d385dde4ap-56 ++0x1.6ab9873394341p712, 0x1.6cec233df7f19p-59 ++0x1.6d7c56b0ec1f9p723, -0x1.864ae3aa72d4ap-11 ++0x1.6decf38117b3ap-629, 0x1.e1c8b1eaebfbbp-27 ++0x1.6f57771705979p518, -0x1.44fbe6fcf4182p-24 ++0x1.6f57b14f5f248p880, 0x1.e2554493e7f0cp-2 ++0x1.6fee9735004b7p-71, 0x1.8eaf1527d88bep-48 ++0x1.7190e00c6cae0p-495, 0x1.705594f79ee43p-33 ++0x1.7238a1904c29cp40, 0x1.d454673e675eep-30 ++0x1.76aa529cae2a7p-457, -0x1.0652207d202acp-45 ++0x1.78e630a117b59p-105, 0x1.ecb1a67d5b9dcp-32 ++0x1.7d0976b552b5bp-316, -0x1.9c52a2a02f146p1 ++0x1.80a10162f3c9ep-462, 0x1.af6ef1f1d004ep-54 ++0x1.8794943d6e34bp-745, -0x1.0c7df064d51e9p-10 ++0x1.8a3d749288cbcp-469, 0x1.a9bf9202d914fp-46 ++0x1.8da421e64749bp-540, -0x1.494a81df89b6bp-26 ++0x1.8e05154795810p247, 0x1.3c04802f44ddcp-47 ++0x1.91b9d616c0878p-313, 0x1.a3c9263d26b2ap-30 ++0x1.95e973a94d414p-229, 0x1.d83d8244e6566p-28 ++0x1.9a3217b4fb0e5p-990, 0x1.82853149b1e30p-42 ++0x1.9e2556775fc02p-377, -0x1.a6ec93193a127p-38 ++0x1.9e83d7b0c831fp-906, 0x1.6a3485e3e4fe8p-21 ++0x1.a51cf0f0f49f7p751, 0x1.07b941a3af664p-12 ++0x1.a883c2cef7802p-432, 0x1.b5ee3711a8260p-34 ++0x1.aca70602f90f3p205, -0x1.a40d85c2b0ddap-55 ++0x1.b118069c4e0f8p133, 0x1.85ed946b41169p0 ++0x1.b1ada0a8ca383p-699, 0x1.ddfec76f67c1fp-37 ++0x1.b236b6872f638p419, 0x1.fa8f6525758b6p-5 ++0x1.b2413258b83b1p892, -0x1.bcea65c80772bp-12 ++0x1.b51563dac9885p-571, 0x1.7a1e16e485fdcp-30 ++0x1.b5e4833e40f76p-445, 0x1.44e23325bcc3fp-22 ++0x1.b6a2168ec3212p-674, -0x1.35bda0265f18bp-30 ++0x1.b8dd676727fa1p124, 0x1.3605e6ec76006p-29 ++0x1.b95437f961192p-500, 0x1.9276767f94721p-10 ++0x1.bb6647f65218ap741, -0x1.b9dd250927a8ap-6 ++0x1.bffdf0efb5c4ep-703, 0x1.85fac77188c01p-9 ++0x1.c0345583020c9p236, 0x1.de31b044cb918p-37 ++0x1.c4b9163604b90p548, 0x1.0a51f116977d3p-17 ++0x1.c66ec323be811p-726, -0x1.8829c716f5ddbp-24 ++0x1.c69da72348031p-390, 0x1.109f77bb4a2a2p-37 ++0x1.c712558c00177p-883, -0x1.9cf047e60fa38p-8 ++0x1.c74df6d64da29p-154, -0x1.bdba55e26ef07p2 ++0x1.c75fa2c065d1dp731, 0x1.fa827749d723cp-21 ++0x1.c8f5b7f54aa5fp-998, 0x1.59fa40e2d7a95p-10 ++0x1.c957e3768f0c2p-102, 0x1.0047f59669535p-5 ++0x1.ce0615637c099p-737, 0x1.b1795333136d6p-59 ++0x1.d1a7872210098p245, -0x1.afd8c410a1918p-16 ++0x1.d39ee7b8cae5ep722, 0x1.639a1575eb95cp-56 ++0x1.d4b4276a02096p-5, -0x1.7ff8354a6ba9cp-21 ++0x1.d500d1daf1bfcp-352, 0x1.e4c7243104fa7p-34 ++0x1.d684c68e86321p-661, -0x1.11305765580a9p-13 ++0x1.db08f6fcae9f5p-637, -0x1.a8cba163bd1dep-21 ++0x1.db09e6535414dp809, -0x1.0b10e70ed8d88p-48 ++0x1.e50573d07ecc0p41, 0x1.19ec44b6d99e6p-58 ++0x1.e59505ef043e0p926, -0x1.3201c7a1e8882p-62 ++0x1.e6b9b28e678a4p546, 0x1.70e042daa89e7p-30 ++0x1.e9a4e6bbbf235p-851, -0x1.1d70f7b787412p-21 ++0x1.ea68a16e4b7c9p-733, -0x1.ee7f337779825p-34 ++0x1.f0e76025ece1cp642, -0x1.bdc0d0d7020d5p-57 ++0x1.f1bcb1d70f84bp-568, 0x1.98c5d3b11e934p-21 ++0x1.f568146a8c658p240, 0x1.4def9749a6a7ep-44 ++0x1.f75bd43867225p-454, 0x1.34b1e5cb0df40p-16 ++0x1.fae7a09d10f34p955, -0x1.f7f8439082552p-31 ++0x1.fae913d4f952ep-809, -0x1.4b649402fce63p-6 ++0x1.fe6d725408f24p484, -0x1.25f4f6441d2e4p-12 ++0x1.ff6393f9150ccp-718, 0x1.a0cb50a9bf2f3p-31 ++# pow slowest path at 768 bits ++# Implemented in sysdeps/ieee754/dbl-64/slowpow.c ++## name: 768bits ++1.0000000000000020, 1.5 ++0x1.006777b4b61dep843, -0x1.67e3145491872p-1 ++0x1.0477a5cfb1972p-402, 0x1.8742e7a1ce99dp-1 ++0x1.0827a160ab475p-239, 0x1.fcae51d2d997dp-1 ++0x1.083723672b1a4p-204, 0x1.baddc57f1404cp-2 ++0x1.0b39f4b2f5c4fp-546, 0x1.7d02a31183f36p-1 ++0x1.0e2d62ea9d078p-68, 0x1.8afb43919ece2p3 ++0x1.0fedd1fd9bdc5p-1011, 0x1.c0ce64b178832p-6 ++0x1.10b984764821ep724, -0x1.36e872083e630p-4 ++0x1.12424342d99bbp686, -0x1.f8d4e18b1b309p-5 ++0x1.1335f40a059c7p1014, -0x1.5818e19224448p-2 ++0x1.14185484cbdb2p-780, 0x1.23f8d7d596280p-4 ++0x1.14f5b49e12b8fp-751, 0x1.522c717bca3eap0 ++0x1.15fe345b21e2bp399, -0x1.0a09061cd1de9p-1 ++0x1.17c3e75436530p104, -0x1.ef30d09c541e9p0 ++0x1.1e5296bbfeea7p747, -0x1.f68df5996bfedp-1 ++0x1.1efdd081a8d35p-90, 0x1.7c7d10d98a3c9p-1 ++0x1.203101f62452ap317, -0x1.3be834bfd34fap-1 ++0x1.29cb8617add92p968, -0x1.9cbe73f892a16p-6 ++0x1.2d75353d5df74p719, -0x1.e2f317d7b2c01p-1 ++0x1.2f08247664913p592, -0x1.35ab9793384a5p-2 ++0x1.2ff58217e86d7p725, -0x1.2c98b6be067ccp-2 ++0x1.3113614c8b9e1p159, -0x1.fc2f4279c8cbep-1 ++0x1.3115402118c24p134, -0x1.d435f65f0eefcp1 ++0x1.32e5a1ba96cdap52, -0x1.f7d8248930c17p-1 ++0x1.346f712d4c234p78, -0x1.830235fa4eb2cp3 ++0x1.35ea84ad8b4fap742, -0x1.728dd1bc7d70cp-3 ++0x1.36b91497c147ep579, -0x1.b7e7b0d1ad44dp-2 ++0x1.3752c6b5da9e6p351, -0x1.2a00f003acdd1p-1 ++0x1.3bccb31761b21p-193, 0x1.bdd7b5da189c8p1 ++0x1.42c0b561c10bep-850, 0x1.dcdee5de63ebcp-3 ++0x1.4520f56ca1422p-471, 0x1.348c312c9f319p-1 ++0x1.46e7406c8e11ep546, -0x1.876f67bed28c4p0 ++0x1.4ba3f35d2f4afp-333, 0x1.6e39f0895a072p-3 ++0x1.4cb3303ab8786p-838, 0x1.fe88a032de46ap-1 ++0x1.4d61505a36a60p234, -0x1.45c3e271db1fep1 ++0x1.4fcff0e946b1ep909, -0x1.90fa07de4eea5p-1 ++0x1.5172c6b32f2aep293, -0x1.fb0fa58fc74abp-2 ++0x1.51e4b4afeb58ap-2, 0x1.f184d702a5f4bp3 ++0x1.5212b31c06068p306, -0x1.e8e5c1b09f30dp-2 ++0x1.55c7413fbdd0cp-168, 0x1.68687102fa0b8p-3 ++0x1.5975f5580b29cp361, -0x1.cda627a0b0899p-3 ++0x1.5b3d77ff20607p-694, 0x1.95877099718f5p-4 ++0x1.5b85e6f45d26fp763, -0x1.b727a35d92656p-4 ++0x1.5c83b2d038766p-984, 0x1.4232c330c81b9p-1 ++0x1.5ec6e7e275af2p773, -0x1.8da470ca7dd62p-1 ++0x1.60b0e6123149bp-743, 0x1.25a696ab5fc09p-4 ++0x1.6567f1ab52caap-769, 0x1.ff57c1e78cc81p-3 ++0x1.689cb423d7ec7p95, -0x1.71d3f5a46c36fp-2 ++0x1.69e2a022e3db6p-672, 0x1.209f77b27f146p-1 ++0x1.6a6bb05202fd0p-621, 0x1.bc1f316194126p-5 ++0x1.72b181bf25fd7p303, -0x1.629be448db4f7p1 ++0x1.7667d46544feap887, -0x1.e92ef7681c985p-3 ++0x1.776f45edc5aa6p967, -0x1.8b34366de0584p-3 ++0x1.77d4e3169e8fdp889, -0x1.7159c5a0e440ep-4 ++0x1.792c56f01b25ep-474, 0x1.45237144dc76dp-2 ++0x1.7c4d814b67ce3p-30, 0x1.32f4217aa69bfp2 ++0x1.7fec1487cd8c2p-790, 0x1.373ec1a13952fp-4 ++0x1.8280e15921e7bp-544, 0x1.17f4d1f294f23p-2 ++0x1.8be4858d98288p395, -0x1.8ecf7076c1cadp-3 ++0x1.8c1a3651b2a3cp251, -0x1.fe464693b592fp-1 ++0x1.95b8339b15437p-805, 0x1.c590d48f70e09p-4 ++0x1.9ea712eab015cp643, -0x1.9f9a2005cd04dp-2 ++0x1.9ec010ebb0fb4p966, -0x1.322de55e2f27dp-3 ++0x1.a055b4cacfb90p692, -0x1.45a6d0302680bp-4 ++0x1.a2541721f7549p508, -0x1.46b5008fed93ap0 ++0x1.aa4ea2a62e6d3p146, -0x1.4948a7f0b9447p-2 ++0x1.aeab6627bd7fep-883, 0x1.e334b6e331bcfp-4 ++0x1.afc9062dd5d6cp285, -0x1.704640b7e8a60p0 ++0x1.b2e0e5768b8a4p700, -0x1.e3cc63841415cp-1 ++0x1.b44dd7483ff8fp762, -0x1.376275f0c7542p0 ++0x1.b461c649ef81fp-297, 0x1.757d3606ad420p-2 ++0x1.b47177acf880bp162, -0x1.dbc2c7336fcdcp-3 ++0x1.b5d597a5647bep312, -0x1.0d87f0669fd98p-3 ++0x1.b5f5f6894898fp824, -0x1.aeec9752febccp-2 ++0x1.b78b84a583db6p711, -0x1.443983558960ap-1 ++0x1.ba15f474f95a7p250, -0x1.9d46c49adf4ecp1 ++0x1.ba6e74fdcaafap685, -0x1.c69a403d3e719p-3 ++0x1.c14ed18d4eb53p652, -0x1.231bb32f82a5fp-1 ++0x1.c44727ecf4620p-965, 0x1.c61391aad6567p-6 ++0x1.c492c6882ec27p-423, 0x1.6bb9123ab40fdp-1 ++0x1.c525d219db143p-681, 0x1.5e10738bb6aefp-5 ++0x1.ca9510663b619p878, -0x1.8966f1a726428p-2 ++0x1.d2d4d70d57384p-769, 0x1.eec5e348f3c65p-5 ++0x1.d3275243b3fd2p-203, 0x1.a56f87acf7afbp1 ++0x1.d5d3022665384p-509, 0x1.d4f984b477a34p-5 ++0x1.dabf72e2c886fp642, -0x1.e930d581ea0c3p-3 ++0x1.daffa04064cf7p799, -0x1.b944c271f477bp-1 ++0x1.db25c4ae37695p710, -0x1.ff84b0c08defdp-3 ++0x1.dc06652f06a70p-689, 0x1.f2eb368dd304ap-3 ++0x1.e09726def851ap-784, 0x1.8d62918b2f6a5p-5 ++0x1.e1561576de8f5p-470, 0x1.983137f5396b2p-2 ++0x1.e5e4c7891da9bp-871, 0x1.5775130263654p-5 ++0x1.eca182884f17fp-295, 0x1.af55d3375f461p-3 ++0x1.f1c172bc4f401p-360, 0x1.f40476496c282p-4 ++0x1.f244722a51df2p548, -0x1.20f7a2f2fc3e8p-2 ++0x1.f422f159f235bp126, -0x1.339620de97b69p1 ++0x1.f43463d9cef16p-845, 0x1.2c364792462fep-3 ++0x1.f8b79758182dap-884, 0x1.ed6174093fca4p-6 ++0x1.fa5c677254961p133, -0x1.c91962524971ep-1 ++0x1.ff0544adacb78p649, -0x1.6c17c3a7210e2p-1 +diff -urN glibc-2.17-c758a686/benchtests/pthread_once-inputs glibc-2.17-c758a686/benchtests/pthread_once-inputs +--- glibc-2.17-c758a686/benchtests/pthread_once-inputs 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.17-c758a686/benchtests/pthread_once-inputs 2015-06-20 21:22:16.302457953 -0400 +@@ -0,0 +1,9 @@ ++# This tests the common-case scenario for pthread_once. ++# We have a single thread that runs a no-op initialization once and then ++# repeatedly runs checks of the initialization (i.e., an acquire load and ++# conditional jump) in a tight loop. ++# scripts/bench.py doesn't handle function pointers, so we just use void *: ++## args: pthread_once_t *:void * ++## includes: pthread.h ++## include-sources: pthread_once-source.c ++&once, once_handler +diff -urN glibc-2.17-c758a686/pthread_once-source.c glibc-2.17-c758a686/benchtests/pthread_once-source.c +--- glibc-2.17-c758a686/benchtests/pthread_once-source.c 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.17-c758a686/benchtests/pthread_once-source.c 2015-06-20 21:22:16.302457953 -0400 +@@ -0,0 +1,25 @@ ++/* Measure pthread_once best-case latency (i.e., when already initialized. ++ ++ Copyright (C) 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 ++ . */ ++ ++static pthread_once_t once = PTHREAD_ONCE_INIT; ++ ++static void ++once_handler (void) ++{ ++} +diff -urN glibc-2.17-c758a686/benchtests/README glibc-2.17-c758a686/benchtests/README +--- glibc-2.17-c758a686/benchtests/README 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.17-c758a686/benchtests/README 2015-06-20 21:22:16.302457953 -0400 +@@ -0,0 +1,99 @@ ++Using the glibc microbenchmark suite ++==================================== ++ ++The glibc microbenchmark suite automatically generates code for specified ++functions, builds and calls them repeatedly for given inputs to give some ++basic performance properties of the function. ++ ++Running the benchmark: ++===================== ++ ++The benchmark needs python 2.7 or later in addition to the ++dependencies required to build the GNU C Library. One may run the ++benchmark by invoking make as follows: ++ ++ $ make bench ++ ++This runs each function for 10 seconds and appends its output to ++benchtests/bench.out. To ensure that the tests are rebuilt, one could run: ++ ++ $ make bench-clean ++ ++The duration of each test can be configured setting the BENCH_DURATION variable ++in the call to make. One should run `make bench-clean' before changing ++BENCH_DURATION. ++ ++ $ make BENCH_DURATION=1 bench ++ ++The benchmark suite does function call measurements using architecture-specific ++high precision timing instructions whenever available. When such support is ++not available, it uses clock_gettime (CLOCK_PROCESS_CPUTIME_ID). One can force ++the benchmark to use clock_gettime by invoking make as follows: ++ ++ $ make USE_CLOCK_GETTIME=1 bench ++ ++Again, one must run `make bench-clean' before changing the measurement method. ++ ++Adding a function to benchtests: ++=============================== ++ ++If the name of the function is `foo', then the following procedure should allow ++one to add `foo' to the bench tests: ++ ++- Append the function name to the bench variable in the Makefile. ++ ++- Make a file called `foo-inputs` to provide the definition and input for the ++ function. The file should have some directives telling the parser script ++ about the function and then one input per line. Directives are lines that ++ have a special meaning for the parser and they begin with two hashes '##'. ++ The following directives are recognized: ++ ++ - args: This should be assigned a colon separated list of types of the input ++ arguments. This directive may be skipped if the function does not take any ++ inputs. One may identify output arguments by nesting them in <>. The ++ generator will create variables to get outputs from the calling function. ++ - ret: This should be assigned the type that the function returns. This ++ directive may be skipped if the function does not return a value. ++ - includes: This should be assigned a comma-separated list of headers that ++ need to be included to provide declarations for the function and types it ++ may need (specifically, this includes using "#include
"). ++ - include-sources: This should be assigned a comma-separated list of source ++ files that need to be included to provide definitions of global variables ++ and functions (specifically, this includes using "#include "source"). ++ See pthread_once-inputs and pthreads_once-source.c for an example of how ++ to use this to benchmark a function that needs state across several calls. ++ - init: Name of an initializer function to call to initialize the benchtest. ++ - name: See following section for instructions on how to use this directive. ++ ++ Lines beginning with a single hash '#' are treated as comments. See ++ pow-inputs for an example of an input file. ++ ++Multiple execution units per function: ++===================================== ++ ++Some functions have distinct performance characteristics for different input ++domains and it may be necessary to measure those separately. For example, some ++math functions perform computations at different levels of precision (64-bit vs ++240-bit vs 768-bit) and mixing them does not give a very useful picture of the ++performance of these functions. One could separate inputs for these domains in ++the same file by using the `name' directive that looks something like this: ++ ++ ##name: 240bit ++ ++See the pow-inputs file for an example of what such a partitioned input file ++would look like. ++ ++Benchmark Sets: ++============== ++ ++In addition to standard benchmarking of functions, one may also generate ++custom outputs for a set of functions. This is currently used by string ++function benchmarks where the aim is to compare performance between ++implementations at various alignments and for various sizes. ++ ++To add a benchset for `foo': ++ ++- Add `foo' to the benchset variable. ++- Write your bench-foo.c that prints out the measurements to stdout. ++- On execution, a bench-foo.out is created in $(objpfx) with the contents of ++ stdout. +diff -urN glibc-2.17-c758a686/rint-inputs glibc-2.17-c758a686/benchtests/rint-inputs +--- glibc-2.17-c758a686/benchtests/rint-inputs 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.17-c758a686/benchtests/rint-inputs 2015-06-20 21:22:16.302457953 -0400 +@@ -0,0 +1,7 @@ ++## args: double ++## ret: double ++## includes: math.h ++78.5 ++-78.5 ++4503599627370497.0 ++-4503599627370497.0 +diff -urN glibc-2.17-c758a686/benchtests/scripts/benchout.schema.json glibc-2.17-c758a686/benchtests/scripts/benchout.schema.json +--- glibc-2.17-c758a686/benchtests/scripts/benchout.schema.json 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.17-c758a686/benchtests/scripts/benchout.schema.json 2015-06-20 21:22:16.302457953 -0400 +@@ -0,0 +1,42 @@ ++{ ++ "title": "benchmark", ++ "type": "object", ++ "properties": { ++ "timing-type": { ++ "type": "string" ++ }, ++ "functions": { ++ "title": "Associative array of functions", ++ "type": "object", ++ "patternProperties": { ++ "^[_a-zA-Z][_a-zA-Z0-9]+$": { ++ "title": "Function names", ++ "type": "object", ++ "patternProperties": { ++ "^[_a-zA-Z0-9]*$": { ++ "title": "Function variants", ++ "type": "object", ++ "properties": { ++ "duration": {"type": "number"}, ++ "iterations": {"type": "number"}, ++ "max": {"type": "number"}, ++ "min": {"type": "number"}, ++ "mean": {"type": "number"}, ++ "timings": { ++ "type": "array", ++ "items": {"type": "number"} ++ } ++ }, ++ "required": ["duration", "iterations", "max", "min", "mean"], ++ "additionalProperties": false ++ } ++ }, ++ "additionalProperties": false ++ } ++ }, ++ "minProperties": 1 ++ } ++ }, ++ "required": ["timing-type", "functions"], ++ "additionalProperties": false ++} +diff -urN glibc-2.17-c758a686/benchtests/scripts/bench.py glibc-2.17-c758a686/benchtests/scripts/bench.py +--- glibc-2.17-c758a686/benchtests/scripts/bench.py 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.17-c758a686/benchtests/scripts/bench.py 2015-06-20 21:22:16.302457953 -0400 +@@ -0,0 +1,308 @@ ++#!/usr/bin/python ++# Copyright (C) 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 ++# . ++ ++"""Benchmark program generator script ++ ++This script takes a function name as input and generates a program using ++an input file located in the benchtests directory. The name of the ++input file should be of the form foo-inputs where 'foo' is the name of ++the function. ++""" ++ ++from __future__ import print_function ++import sys ++import os ++import itertools ++ ++# Macro definitions for functions that take no arguments. For functions ++# that take arguments, the STRUCT_TEMPLATE, ARGS_TEMPLATE and ++# VARIANTS_TEMPLATE are used instead. ++DEFINES_TEMPLATE = ''' ++#define CALL_BENCH_FUNC(v, i) %(func)s () ++#define NUM_VARIANTS (1) ++#define NUM_SAMPLES(v) (1) ++#define VARIANT(v) FUNCNAME "()" ++''' ++ ++# Structures to store arguments for the function call. A function may ++# have its inputs partitioned to represent distinct performance ++# characteristics or distinct flavors of the function. Each such ++# variant is represented by the _VARIANT structure. The ARGS structure ++# represents a single set of arguments. ++STRUCT_TEMPLATE = ''' ++#define CALL_BENCH_FUNC(v, i) %(func)s (%(func_args)s) ++ ++struct args ++{ ++%(args)s ++ double timing; ++}; ++ ++struct _variants ++{ ++ const char *name; ++ int count; ++ struct args *in; ++}; ++''' ++ ++# The actual input arguments. ++ARGS_TEMPLATE = ''' ++struct args in%(argnum)d[%(num_args)d] = { ++%(args)s ++}; ++''' ++ ++# The actual variants, along with macros defined to access the variants. ++VARIANTS_TEMPLATE = ''' ++struct _variants variants[%(num_variants)d] = { ++%(variants)s ++}; ++ ++#define NUM_VARIANTS %(num_variants)d ++#define NUM_SAMPLES(i) (variants[i].count) ++#define VARIANT(i) (variants[i].name) ++''' ++ ++# Epilogue for the generated source file. ++EPILOGUE = ''' ++#define RESULT(__v, __i) (variants[(__v)].in[(__i)].timing) ++#define RESULT_ACCUM(r, v, i, old, new) \\ ++ ((RESULT ((v), (i))) = (RESULT ((v), (i)) * (old) + (r)) / ((new) + 1)) ++#define BENCH_FUNC(i, j) ({%(getret)s CALL_BENCH_FUNC (i, j);}) ++#define FUNCNAME "%(func)s" ++#include "bench-skeleton.c"''' ++ ++ ++def gen_source(func, directives, all_vals): ++ """Generate source for the function ++ ++ Generate the C source for the function from the values and ++ directives. ++ ++ Args: ++ func: The function name ++ directives: A dictionary of directives applicable to this function ++ all_vals: A dictionary input values ++ """ ++ # The includes go in first. ++ for header in directives['includes']: ++ print('#include <%s>' % header) ++ ++ for header in directives['include-sources']: ++ print('#include "%s"' % header) ++ ++ # Print macros. This branches out to a separate routine if ++ # the function takes arguments. ++ if not directives['args']: ++ print(DEFINES_TEMPLATE % {'func': func}) ++ outargs = [] ++ else: ++ outargs = _print_arg_data(func, directives, all_vals) ++ ++ # Print the output variable definitions if necessary. ++ for out in outargs: ++ print(out) ++ ++ # If we have a return value from the function, make sure it is ++ # assigned to prevent the compiler from optimizing out the ++ # call. ++ if directives['ret']: ++ print('static %s volatile ret;' % directives['ret']) ++ getret = 'ret = ' ++ else: ++ getret = '' ++ ++ # Test initialization. ++ if directives['init']: ++ print('#define BENCH_INIT %s' % directives['init']) ++ ++ print(EPILOGUE % {'getret': getret, 'func': func}) ++ ++ ++def _print_arg_data(func, directives, all_vals): ++ """Print argument data ++ ++ This is a helper function for gen_source that prints structure and ++ values for arguments and their variants and returns output arguments ++ if any are found. ++ ++ Args: ++ func: Function name ++ directives: A dictionary of directives applicable to this function ++ all_vals: A dictionary input values ++ ++ Returns: ++ Returns a list of definitions for function arguments that act as ++ output parameters. ++ """ ++ # First, all of the definitions. We process writing of ++ # CALL_BENCH_FUNC, struct args and also the output arguments ++ # together in a single traversal of the arguments list. ++ func_args = [] ++ arg_struct = [] ++ outargs = [] ++ ++ for arg, i in zip(directives['args'], itertools.count()): ++ if arg[0] == '<' and arg[-1] == '>': ++ pos = arg.rfind('*') ++ if pos == -1: ++ die('Output argument must be a pointer type') ++ ++ outargs.append('static %s out%d;' % (arg[1:pos], i)) ++ func_args.append(' &out%d' % i) ++ else: ++ arg_struct.append(' %s volatile arg%d;' % (arg, i)) ++ func_args.append('variants[v].in[i].arg%d' % i) ++ ++ print(STRUCT_TEMPLATE % {'args' : '\n'.join(arg_struct), 'func': func, ++ 'func_args': ', '.join(func_args)}) ++ ++ # Now print the values. ++ variants = [] ++ for (k, vals), i in zip(all_vals.items(), itertools.count()): ++ out = [' {%s, 0},' % v for v in vals] ++ ++ # Members for the variants structure list that we will ++ # print later. ++ variants.append(' {"%s", %d, in%d},' % (k, len(vals), i)) ++ print(ARGS_TEMPLATE % {'argnum': i, 'num_args': len(vals), ++ 'args': '\n'.join(out)}) ++ ++ # Print the variants and the last set of macros. ++ print(VARIANTS_TEMPLATE % {'num_variants': len(all_vals), ++ 'variants': '\n'.join(variants)}) ++ return outargs ++ ++ ++def _process_directive(d_name, d_val): ++ """Process a directive. ++ ++ Evaluate the directive name and value passed and return the ++ processed value. This is a helper function for parse_file. ++ ++ Args: ++ d_name: Name of the directive ++ d_val: The string value to process ++ ++ Returns: ++ The processed value, which may be the string as it is or an object ++ that describes the directive. ++ """ ++ # Process the directive values if necessary. name and ret don't ++ # need any processing. ++ if d_name.startswith('include'): ++ d_val = d_val.split(',') ++ elif d_name == 'args': ++ d_val = d_val.split(':') ++ ++ # Return the values. ++ return d_val ++ ++ ++def parse_file(func): ++ """Parse an input file ++ ++ Given a function name, open and parse an input file for the function ++ and get the necessary parameters for the generated code and the list ++ of inputs. ++ ++ Args: ++ func: The function name ++ ++ Returns: ++ A tuple of two elements, one a dictionary of directives and the ++ other a dictionary of all input values. ++ """ ++ all_vals = {} ++ # Valid directives. ++ directives = { ++ 'name': '', ++ 'args': [], ++ 'includes': [], ++ 'include-sources': [], ++ 'ret': '', ++ 'init': '' ++ } ++ ++ try: ++ with open('%s-inputs' % func) as f: ++ for line in f: ++ # Look for directives and parse it if found. ++ if line.startswith('##'): ++ try: ++ d_name, d_val = line[2:].split(':', 1) ++ d_name = d_name.strip() ++ d_val = d_val.strip() ++ directives[d_name] = _process_directive(d_name, d_val) ++ except (IndexError, KeyError): ++ die('Invalid directive: %s' % line[2:]) ++ ++ # Skip blank lines and comments. ++ line = line.split('#', 1)[0].rstrip() ++ if not line: ++ continue ++ ++ # Otherwise, we're an input. Add to the appropriate ++ # input set. ++ cur_name = directives['name'] ++ all_vals.setdefault(cur_name, []) ++ all_vals[cur_name].append(line) ++ except IOError as ex: ++ die("Failed to open input file (%s): %s" % (ex.filename, ex.strerror)) ++ ++ return directives, all_vals ++ ++ ++def die(msg): ++ """Exit with an error ++ ++ Prints an error message to the standard error stream and exits with ++ a non-zero status. ++ ++ Args: ++ msg: The error message to print to standard error ++ """ ++ print('%s\n' % msg, file=sys.stderr) ++ sys.exit(os.EX_DATAERR) ++ ++ ++def main(args): ++ """Main function ++ ++ Use the first command line argument as function name and parse its ++ input file to generate C source that calls the function repeatedly ++ for the input. ++ ++ Args: ++ args: The command line arguments with the program name dropped ++ ++ Returns: ++ os.EX_USAGE on error and os.EX_OK on success. ++ """ ++ if len(args) != 1: ++ print('Usage: %s ' % sys.argv[0]) ++ return os.EX_USAGE ++ ++ directives, all_vals = parse_file(args[0]) ++ gen_source(args[0], directives, all_vals) ++ return os.EX_OK ++ ++ ++if __name__ == '__main__': ++ sys.exit(main(sys.argv[1:])) +diff -urN glibc-2.17-c758a686/benchtests/scripts/validate_benchout.py glibc-2.17-c758a686/benchtests/scripts/validate_benchout.py +--- glibc-2.17-c758a686/benchtests/scripts/validate_benchout.py 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.17-c758a686/benchtests/scripts/validate_benchout.py 2015-06-20 21:22:16.302457953 -0400 +@@ -0,0 +1,85 @@ ++#!/usr/bin/python ++# Copyright (C) 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 ++# . ++"""Benchmark output validator ++ ++Given a benchmark output file in json format and a benchmark schema file, ++validate the output against the schema. ++""" ++ ++from __future__ import print_function ++import json ++import sys ++import os ++ ++try: ++ import jsonschema ++except ImportError: ++ print('Could not find jsonschema module. Output not validated.') ++ # Return success because we don't want the bench target to fail just ++ # because the jsonschema module was not found. ++ sys.exit(os.EX_OK) ++ ++ ++def validate_bench(benchfile, schemafile): ++ """Validate benchmark file ++ ++ Validate a benchmark output file against a JSON schema. ++ ++ Args: ++ benchfile: The file name of the bench.out file. ++ schemafile: The file name of the JSON schema file to validate ++ bench.out against. ++ ++ Exceptions: ++ jsonschema.ValidationError: When bench.out is not valid ++ jsonschema.SchemaError: When the JSON schema is not valid ++ IOError: If any of the files are not found. ++ """ ++ with open(benchfile, 'r') as bfile: ++ with open(schemafile, 'r') as sfile: ++ bench = json.load(bfile) ++ schema = json.load(sfile) ++ jsonschema.validate(bench, schema) ++ ++ # If we reach here, we're all good. ++ print("Benchmark output in %s is valid." % benchfile) ++ ++ ++def main(args): ++ """Main entry point ++ ++ Args: ++ args: The command line arguments to the program ++ ++ Returns: ++ 0 on success or a non-zero failure code ++ ++ Exceptions: ++ Exceptions thrown by validate_bench ++ """ ++ if len(args) != 2: ++ print("Usage: %s " % sys.argv[0], ++ file=sys.stderr) ++ return os.EX_USAGE ++ ++ validate_bench(args[0], args[1]) ++ return os.EX_OK ++ ++ ++if __name__ == '__main__': ++ sys.exit(main(sys.argv[1:])) +diff -urN glibc-2.17-c758a686/benchtests/sincos-inputs glibc-2.17-c758a686/benchtests/sincos-inputs +--- glibc-2.17-c758a686/benchtests/sincos-inputs 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.17-c758a686/benchtests/sincos-inputs 2015-06-20 21:22:16.302457953 -0400 +@@ -0,0 +1,27 @@ ++## includes: math.h ++## args: double:: ++0.9 ++2.3 ++3.7 ++3.9 ++4.0 ++4.7 ++5.9 ++0x1.000000cf4a2a1p0 ++0x1.0000010b239a8p0 ++0x1.00000162a932ap0 ++0x1.000002d452a11p0 ++0x1.000005bc7d86cp0 ++## name: 768bits ++0.93340582292648832662962377071381 ++2.3328432680770916363144351635128 ++3.7439477503636453548097051680088 ++3.9225160069792437411706487182528 ++4.0711651639931289992091478779912 ++4.7858438478542097982426639646292 ++5.9840767662578002727968851104379 ++0x1.000000cf4a2a2p0 ++0x1.0000010b239a9p0 ++0x1.00000162a932bp0 ++0x1.000002d452a10p0 ++0x1.000005bc7d86dp0 +diff -urN glibc-2.17-c758a686/benchtests/sinh-inputs glibc-2.17-c758a686/benchtests/sinh-inputs +--- glibc-2.17-c758a686/benchtests/sinh-inputs 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.17-c758a686/benchtests/sinh-inputs 2015-06-20 21:22:16.302457953 -0400 +@@ -0,0 +1,303 @@ ++## args: double ++## ret: double ++## includes: math.h ++0x1.bcb6129b5ff2bp8 ++-0x1.63057386325ebp9 ++0x1.62f1d7dc4e8bfp9 ++0x1.d038a32d61933p8 ++-0x1.e471c1bac1ce4p-7 ++0x1.a552c2076a2c0p4 ++0x1.ea80c14d17262p4 ++0x1.62e67590a0733p9 ++0x1.62edf5f8ef2d6p9 ++-0x1.23f9c5b9b41c5p6 ++-0x1.62fac5eb878c6p9 ++0x1.3e57e666e2e04p3 ++0x1.bab6037e306ecp4 ++0x1.aeceb373ec08dp5 ++0x1.62ff7470df95dp9 ++-0x1.6c62d6c0af55fp6 ++-0x1.633c1105ee490p9 ++-0x1.c6d344d145206p5 ++0x1.50fc32aba8311p-15 ++-0x1.62eff1edf3d60p9 ++-0x1.7019f600db82cp7 ++-0x1.ecea83f0b3977p-4 ++0x1.6302c49c75ac4p9 ++-0x1.1929f6abc031bp8 ++-0x1.c6abd4778861bp3 ++0x1.df98b1662cf01p8 ++-0x1.0a9950e69a9dep-23 ++0x1.62f873b46c417p9 ++-0x1.6300b68646dc7p9 ++-0x1.465a556d29a85p-7 ++0x1.63018139cc344p9 ++0x1.62f23680e783cp9 ++-0x1.0469009da6a29p-16 ++0x1.baaef71d93bc9p-22 ++0x1.62f446bf431b8p9 ++0x1.62ecb5c679f45p9 ++0x1.632045a8a7ef9p9 ++-0x1.66e894b6d218cp6 ++0x1.62ee439267fe4p9 ++-0x1.632432d0e9e8fp9 ++0x1.5d07807c20bb9p1 ++0x1.aa3c546601d68p6 ++-0x1.2cdd0674e4abfp7 ++0x1.62e9f2b4a0744p9 ++0x1.631844f7a96d0p9 ++-0x1.2bf936af0bb54p4 ++-0x1.848c54c9d08a5p-13 ++-0x1.a38c970185777p-6 ++0x1.b1d18499dc98dp-27 ++0x1.02c7030513fd7p-15 ++-0x1.bdcec5aecd2eep-17 ++0x1.633c66e5307e9p9 ++0x1.6061d09a4b532p-10 ++0x1.eb7555bb47463p5 ++-0x1.6327e1c51ff78p9 ++-0x1.316943f542202p-26 ++0x1.6e54069de0b49p-9 ++0x1.bd8310798ec44p-8 ++0x1.cc4af059aa66ap8 ++-0x1.9a5ff5ea279f8p6 ++-0x1.9725c1ddcc807p5 ++-0x1.6317b78869f21p9 ++0x1.9d2f87fc603f4p5 ++0x1.213554dad3888p9 ++0x1.6302b7464cd16p9 ++0x1.493644a3cb32cp9 ++0x1.62f1877c1501ep9 ++-0x1.6315b48bf51f2p9 ++0x1.633cd176d9771p9 ++0x1.6328531b0a130p9 ++0x1.6304f3ed14c82p9 ++-0x1.62e9313aabeb2p9 ++-0x1.c1b3f715f7ad9p-6 ++-0x1.c43692f7b838cp-24 ++-0x1.6323360b63d60p9 ++-0x1.562ea1c51f0f0p7 ++0x1.600ef62445c5ep4 ++-0x1.7f4191bd896cbp-2 ++-0x1.f4d3f0d1b85eep7 ++-0x1.62fc3361285d3p9 ++0x1.3395d7ec1a5dbp-18 ++-0x1.3ccc114df227ap-23 ++-0x1.5bb910de6973fp-24 ++0x1.83f8e51d82968p6 ++-0x1.a729d2ed077a7p8 ++-0x1.1b005777a51cdp7 ++-0x1.62fa736043269p9 ++0x1.97df8447ce884p-22 ++-0x1.09774517f3944p7 ++-0x1.d042739a998a6p-27 ++0x1.8a1a0335512a5p-23 ++0x1.632396c691df1p9 ++0x1.0f45b5a6c79f5p-21 ++-0x1.0d68a2dbd6a04p-2 ++-0x1.239ff60f28877p6 ++0x1.632b742e1d0c9p9 ++0x1.ee36b15df2fc4p7 ++0x1.7e02f6f960a46p-18 ++0x1.f1a48503e33b1p-22 ++-0x1.6319f733c541fp9 ++-0x1.5f2434426cd39p-16 ++0x1.630c71268199ap9 ++-0x1.4d2140c9727ddp8 ++0x1.8713c2f7dd25ap-6 ++0x1.69bb815d57e03p-22 ++-0x1.633a822e16e6fp9 ++0x1.62f667f0092adp9 ++-0x1.ba2396d33e90cp8 ++-0x1.62fdf19fea01cp9 ++0x1.8195955afb315p7 ++0x1.6337149eda940p9 ++-0x1.633754b36f51ap9 ++0x1.9356878778911p4 ++0x1.6318527f69db0p9 ++-0x1.ee0742d151b97p-18 ++-0x1.88703361b4ad5p3 ++-0x1.631675fa3bc04p9 ++-0x1.f2bd954cf1c51p-27 ++-0x1.d897a0d2877f2p3 ++-0x1.630fb3c419c60p9 ++-0x1.62e861c33ae29p9 ++-0x1.84acb4c33fff9p1 ++-0x1.378b42b89d79dp-22 ++0x1.2825d1de625c8p6 ++0x1.631f833e694f8p9 ++-0x1.36853687b4e6dp-20 ++0x1.9b9a335db58d1p-21 ++0x1.e3928304b1b20p7 ++0x1.6316835c7cf05p9 ++0x1.6303738c05d04p9 ++-0x1.3c0e136ebb1d3p8 ++0x1.96cf3250cc987p-8 ++0x1.652cb53670db0p6 ++0x1.6440639342e8ep-4 ++0x1.4512d30165887p1 ++0x1.6337b63365473p9 ++0x1.449ee05b6ff3ep-12 ++-0x1.d1ecf009b1e3ap8 ++-0x1.be8e1102ed7f3p-12 ++0x1.62fa155e6e26ep9 ++-0x1.de739010d6091p7 ++-0x1.8c1a422a7d8b8p4 ++0x1.465d81dad540ep7 ++0x1.3db012d4e554dp5 ++-0x1.5329b46ad494ep8 ++-0x1.5695b6e7fcd02p6 ++0x1.6300e31dc8554p9 ++0x1.630252d0050e1p9 ++0x1.8d80571cb3337p-11 ++-0x1.62e93642f1118p9 ++-0x1.fb2f329c0bb96p6 ++0x1.9d18d4dc71c0bp-15 ++0x1.6311f75346d75p9 ++-0x1.7498c57682670p-9 ++0x1.f690a6c3716cbp-3 ++0x1.d63fe6b5c7c89p7 ++-0x1.a2388127452f0p-19 ++0x1.0738a10cb2383p6 ++-0x1.ca36b52292e65p-3 ++0x1.62ea1202d9816p9 ++0x1.1e4701aec3142p-22 ++0x1.6322f270f7ff5p9 ++0x1.62e6b6e528603p9 ++0x1.54c5f63777d5ap0 ++-0x1.02a544984fd67p-5 ++-0x1.ab3a9254e8794p5 ++-0x1.6321d7d010e1ap9 ++0x1.6335078d8f6f1p9 ++0x1.6336a46b6c9bap9 ++-0x1.630397a6b37e0p9 ++-0x1.baead70b0c2bap4 ++0x1.988527731f959p-20 ++0x1.cfd2c4878fd4ep6 ++-0x1.ce3bf20083050p8 ++-0x1.d3e823224ebe4p8 ++0x1.31a6458858034p7 ++-0x1.62f3821bac3f3p9 ++-0x1.1043c4ca951fbp-23 ++-0x1.074b075fe582ap-6 ++0x1.62f9213f8bc1fp9 ++0x1.415f919197b6cp-26 ++0x1.d6c6f6b983d6cp7 ++-0x1.631537abd1539p9 ++0x1.631ca21fe1f5ap9 ++-0x1.b276e5fc0915ap8 ++0x1.630a6325d4276p9 ++-0x1.3c6721ec5fd14p-11 ++-0x1.6330b03f5aa48p9 ++-0x1.30b15478c1933p-5 ++-0x1.630ef52917607p9 ++0x1.d20df37103516p-21 ++-0x1.a69a66dbd2ea1p8 ++-0x1.c69e923a07adcp6 ++0x1.6a7f505fea5d9p-17 ++-0x1.ca384346f16a9p8 ++0x1.32a202fb0895dp7 ++-0x1.320c539d2690cp8 ++0x1.10c193b381a23p-10 ++-0x1.2a2bb2e417439p6 ++-0x1.d1b6a4e76701bp-10 ++0x1.ba51c02ad2c00p-8 ++0x1.4eb503a5e519cp6 ++0x1.632b31037059ap9 ++-0x1.f03c46b9d44dbp-25 ++0x1.0810152df1887p-4 ++-0x1.f6a97309476d8p6 ++-0x1.f56fa7db86bf4p5 ++0x1.df804326360d0p4 ++-0x1.141d54326d8a1p7 ++0x1.0078e7f84d8d8p6 ++0x1.cef6f7b56f8c2p-19 ++0x1.0d0ce07e697a5p-15 ++0x1.6326673bf0ee0p9 ++0x1.3c1dd34b185a1p6 ++0x1.ddc3c42ec39bap6 ++-0x1.632752aab262cp9 ++0x1.630e01d39d028p9 ++0x1.dac293f73d850p5 ++0x1.631510cd8cc49p9 ++-0x1.028ed1e8dd32dp-17 ++-0x1.b0bb57c60b6a0p5 ++-0x1.783bf33152679p-18 ++0x1.c5d5e473ebbbbp-26 ++-0x1.915ff68d55569p5 ++-0x1.633510495d169p9 ++0x1.6312d35913b55p9 ++0x1.6d20f44123714p7 ++-0x1.6303c0b5329e9p9 ++-0x1.62faa7a46d17bp9 ++-0x1.633196bcef4aap9 ++0x1.6329f34ef70a1p9 ++0x1.3877f0875dea2p5 ++-0x1.413e167d515b4p-8 ++0x1.f017e3196ac82p3 ++0x1.230e2092aaa0ep5 ++-0x1.7b67d6318a255p7 ++0x1.04c9f0425e693p2 ++-0x1.1ebe27d65ffa7p6 ++-0x1.62f596dff99e7p9 ++-0x1.496ec324e967fp5 ++0x1.2f75110873a31p8 ++0x1.62ec21c319df7p9 ++-0x1.487513da26b06p5 ++0x1.6329675608d9fp9 ++-0x1.1de0320fc0737p9 ++0x1.73d4f770b54e0p5 ++0x1.62ef2138efd07p9 ++-0x1.7cd5764bf11ffp7 ++0x1.402ca060e1497p8 ++0x1.632cc11415f53p9 ++-0x1.631ec3cf4a7b9p9 ++-0x1.278e06c2c4ea4p-17 ++-0x1.62f55568a253dp9 ++0x1.6310e758dfd28p9 ++-0x1.3d480025e3245p7 ++-0x1.4517c5d83e40fp-1 ++0x1.6307c4b105e8bp9 ++0x1.630181fc28954p9 ++-0x1.8d2e660962aa3p-9 ++-0x1.98df07527c0bbp8 ++-0x1.a27ee2e3a28adp-10 ++0x1.6387b36f3b875p8 ++-0x1.05cbb323669c8p7 ++-0x1.52594428d68c5p1 ++-0x1.4c9235b765b89p-18 ++0x1.632a66cd5c94bp9 ++-0x1.62fbd7e6a4400p9 ++-0x1.728176d7c18f0p-24 ++0x1.62e6378477ec7p9 ++-0x1.632b611f08364p9 ++-0x1.25a7b6bd7d0d0p-3 ++0x1.00efd61470d55p-10 ++-0x1.6336976d5e8adp9 ++-0x1.359ca2cc9fc70p-12 ++0x1.5e2af7dfe1034p9 ++0x1.62fb546601bb5p9 ++-0x1.630544284f262p9 ++0x1.0b72226f94781p3 ++-0x1.1fb7b0f3e9cecp-22 ++0x1.c7b7361a9d625p5 ++0x1.dde5178b689c3p5 ++-0x1.13d52288f4693p-15 ++0x1.1868b4ff4df0bp-22 ++-0x1.a9369360a2239p-18 ++0x1.d35412055367bp7 ++-0x1.35d973c1b14fbp1 ++-0x1.6316075c46ee9p9 ++0x1.7c96f7ff40e1ep-25 ++0x1.2b2582d457cd0p6 ++-0x1.a28481bf5abc7p6 ++0x1.467a936424936p8 ++0x1.a1ca4036cbf56p-4 ++-0x1.34b9e14e1af56p5 ++0x1.00e73296682cap7 ++-0x1.01f6e4bd76df4p-13 ++-0x1.d84f005ebcd13p-7 ++-0x1.632dc46b7230cp9 ++-0x1.724f81862e781p-25 ++0x1.62f6f6ca932f5p9 ++-0x1.b07147eb43dd0p4 +diff -urN glibc-2.17-c758a686/benchtests/sin-inputs glibc-2.17-c758a686/benchtests/sin-inputs +--- glibc-2.17-c758a686/benchtests/sin-inputs 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.17-c758a686/benchtests/sin-inputs 2015-06-20 21:22:16.303457923 -0400 +@@ -0,0 +1,2913 @@ ++## includes: math.h ++## args: double ++## ret: double ++0x1.4e31719759424p353 ++-0x1.202ae0c324949p20 ++-0x1.0f8c771855528p-8 ++-0x1.339f22dc85e76p22 ++-0x1.904e251c945aap343 ++0x1.e13c5531993aep-2 ++0x1.5b05529d780f3p-24 ++0x1.41e8f0676cd4ep8 ++0x1.411e056bd6bcap-2 ++-0x1.0ca910674bec9p11 ++0x1.0c7df3a6a06b7p0 ++0x1.ef4075c4a3c3bp-11 ++0x1.52224219293bbp791 ++0x1.c227d66030144p3 ++0x1.b2a5d2451fcc7p0 ++-0x1.56a2c78366fcfp19 ++0x1.0e02525c58105p26 ++-0x1.e39c357c7c18bp404 ++-0x1.a4b3865993274p15 ++0x1.871d4238016f0p1 ++0x1.9c0ff32380748p-12 ++0x1.89db74b290234p-4 ++-0x1.46c0d53d48490p40 ++0x1.d2b7221564888p739 ++0x1.1ed4f44792d40p30 ++-0x1.f4cff05c7df9fp24 ++-0x1.130783c5347b2p19 ++0x1.f439e3a751c06p0 ++-0x1.630814d89b60ep23 ++0x1.e641156ac4981p28 ++0x1.b09f366ca1e8dp-1 ++-0x1.5e9a670db3d03p33 ++-0x1.130fb139e93b7p546 ++0x1.138355fdffae2p36 ++-0x1.20908459428fep42 ++0x1.8a1293891effap-2 ++0x1.d3fd23a93e82cp0 ++0x1.9c95c4a9d8f7fp848 ++-0x1.23c7340f1b756p-8 ++-0x1.aa82b642da2d7p304 ++0x1.1d4f233dfb177p26 ++-0x1.b55807b7ef532p-2 ++-0x1.971032fa3d5e8p21 ++0x1.d4e9e5d2cb6eap29 ++0x1.bc051494f7144p23 ++-0x1.661bf799c255fp201 ++0x1.052840edc4f07p24 ++0x1.0551d741e16d9p10 ++-0x1.3c365242efbadp690 ++-0x1.a1bcf06ea66e7p244 ++-0x1.4b20e44b06e11p14 ++0x1.3e5112fb02b33p45 ++-0x1.89cb01f331009p18 ++-0x1.de6db48d64d8ap-1 ++-0x1.d0bce02378eb6p24 ++0x1.3a9b24b4ad685p32 ++-0x1.e0c1554a97eabp136 ++0x1.398670a088410p23 ++0x1.7c2150ddf2a1bp-1 ++0x1.2153d792ddc8bp599 ++-0x1.ed7986b460920p34 ++0x1.6de72477b695fp789 ++0x1.0a1a8631872ccp1 ++-0x1.df4c22cbd016fp14 ++0x1.1b96201522f46p28 ++-0x1.8c8ea54e4ea92p13 ++-0x1.e36b62515b546p725 ++-0x1.62b4633089889p965 ++0x1.e1dcf4a52ec6ap23 ++0x1.3d7fb4750aed3p34 ++-0x1.ede78680f7292p40 ++0x1.96c0917ba637bp959 ++-0x1.e051760806b8bp-2 ++-0x1.e86f230e487d2p-16 ++-0x1.1d3397349ac97p8 ++-0x1.ddf236157546cp743 ++-0x1.70c031efdc4f9p415 ++0x1.233ff3c09d84ap9 ++0x1.3edab4c5f3a26p0 ++0x1.6c93b47873059p436 ++-0x1.3237841f0b0bep237 ++-0x1.8760d1293a1f3p-13 ++-0x1.a18c37bc89a24p1 ++-0x1.3f2766f7d26b6p542 ++-0x1.bec6222bee7a6p-1 ++0x1.f26ce5fd59845p456 ++0x1.5b32c136e1f9dp18 ++-0x1.b7ed411870c8fp6 ++-0x1.72aa75c106ffap42 ++0x1.db2c644144982p915 ++0x1.1415b4c83775bp24 ++-0x1.25a7566e7f67cp10 ++-0x1.9facd2a3d5418p18 ++0x1.78e1e40bdde9cp47 ++-0x1.5c33011915d84p0 ++0x1.ff6852a9c8d2cp22 ++-0x1.cc23573b9a1c2p37 ++-0x1.824f12c733c82p-2 ++-0x1.3cab932de7796p37 ++-0x1.1c4df62e7d177p1 ++0x1.c1b95025989fcp14 ++0x1.832e22eeb5989p-5 ++0x1.452f327db73f8p10 ++-0x1.290d05147591cp1002 ++-0x1.beaa851f05e92p-1 ++0x1.ad58373023277p513 ++0x1.f93821eb50de3p42 ++0x1.1bda02f0f3f9fp1 ++-0x1.38d441441abf9p33 ++-0x1.624000e54a29cp631 ++-0x1.d98c1179cdcb5p22 ++-0x1.c44511ec2f8b4p28 ++-0x1.30ef1448b9e93p-2 ++-0x1.c308f108883c4p333 ++0x1.12e7d2402f07ep7 ++-0x1.e74a96ae3bb5fp132 ++0x1.c31f54a536722p4 ++-0x1.56e14428bc436p-6 ++0x1.edb3a48cb14d9p-1 ++-0x1.f027b77ce5bddp14 ++-0x1.0c53346de6015p40 ++0x1.b19cf55c66693p14 ++-0x1.a19e001e2c6a1p16 ++-0x1.0e2865378e3aep3 ++-0x1.f65794e9df99fp47 ++0x1.e1ee854626d4ep536 ++-0x1.940bd6337c84cp-13 ++-0x1.2cbf8175aa84ap17 ++-0x1.961bc1591e602p3 ++-0x1.87b2b0601d2fap1 ++-0x1.772c74a581f96p751 ++-0x1.59e08127aee39p23 ++0x1.a527c23e0a4e1p0 ++0x1.eb60950795a35p-2 ++-0x1.1e46f002c96a2p-2 ++-0x1.9acc80758e051p8 ++0x1.a45c62bacde78p29 ++-0x1.5d26d76eeb16fp39 ++0x1.326df3a5344d2p18 ++0x1.adc29195a1e2dp15 ++0x1.ff9265140dcf4p89 ++0x1.76b20648c5b8dp19 ++0x1.5ca4265555944p-1 ++-0x1.9cc0e0deeb24bp2 ++-0x1.325eb43fe815fp-11 ++0x1.36bcc00217c62p393 ++0x1.b78b3134ed03ap8 ++-0x1.889c50b50e994p355 ++-0x1.03938396f299ep13 ++0x1.8f76b03720eeep25 ++-0x1.2ff306722b5a0p-20 ++-0x1.9166f7eede8c9p753 ++-0x1.ac96117a61cb3p35 ++-0x1.cf3642f86351ep5 ++-0x1.65ef55c9472d7p28 ++-0x1.d7e391105fa79p978 ++0x1.1c6cd319235fap46 ++-0x1.aa7970ac6beb8p40 ++-0x1.cff1e6c12b98dp27 ++-0x1.d0e054e560649p39 ++0x1.fe0175557d0dap-2 ++0x1.862a0150c14c8p24 ++0x1.ab0df0da7ef0dp0 ++0x1.452292fcc9743p-2 ++0x1.b525530505534p991 ++0x1.80e514cb850ebp14 ++0x1.e83385b509520p673 ++0x1.f73857e61fd2ep36 ++-0x1.c140a422bbc7ap10 ++0x1.6a3836b018674p666 ++0x1.420174d78cfd8p11 ++0x1.34bb45e923e9dp1 ++0x1.b90f228298b54p25 ++-0x1.399605f4445a3p203 ++0x1.c95d15ef0ce1ep-1 ++0x1.6ed1160abd68ep8 ++-0x1.40bbe306fa9b5p46 ++0x1.da8267a8f6494p46 ++0x1.6407626ac4921p3 ++0x1.5635a0a1b6c48p0 ++0x1.a2e9e58ba39c0p31 ++0x1.d4e0d618fbcfap697 ++0x1.973f27485658dp166 ++0x1.d17c3143c6d80p529 ++0x1.d936e70a9f908p16 ++-0x1.0a8ba2bc9bb3ap107 ++0x1.17e910c087095p26 ++0x1.4e23340e98273p991 ++-0x1.5f6a72e7950c9p-1 ++0x1.d29737bd89976p187 ++0x1.a7db27e5bb0fbp33 ++-0x1.dbcf01f3ac92fp19 ++-0x1.40aa778cc7865p-2 ++0x1.f16163407b344p-1 ++-0x1.32b196585adb2p26 ++-0x1.c83eb643cf122p165 ++0x1.291fa0c5f8d40p-4 ++-0x1.7ab62403e1a78p680 ++0x1.68f2830723d8dp-2 ++-0x1.54cf77dd7d83fp11 ++0x1.aee6014383723p16 ++-0x1.39ced0bf900c2p-2 ++-0x1.e3ce76406226fp-25 ++-0x1.7e5623b6bd702p20 ++0x1.478a64a7d9020p369 ++0x1.8888438f4aa60p495 ++0x1.804b902d0663ep-6 ++0x1.74c501d7381dcp0 ++0x1.65c56626b3f5dp20 ++0x1.7ca955c1db56bp-2 ++-0x1.3257f754500c2p6 ++0x1.93b0e2b87951bp807 ++0x1.78c226a06ff9dp881 ++-0x1.2a61e2ec72661p26 ++0x1.515561fe9c724p109 ++0x1.f04611a3f263cp-5 ++0x1.ef0196a9c0554p25 ++0x1.58bb53a309d66p147 ++-0x1.b67d94ed2b039p22 ++-0x1.a08f75ea1519bp-24 ++-0x1.9b14260bb0430p855 ++0x1.018fe4f13cc1ep563 ++-0x1.42f125d031ba6p663 ++0x1.7cdb837d7a326p8 ++-0x1.885d54001463ap0 ++0x1.e315d2bcdedaap0 ++0x1.cbd6f6692bc81p-3 ++0x1.f5be652eb0059p4 ++0x1.260be58c40562p84 ++-0x1.0fe3d67fb0d33p0 ++-0x1.a665d08300b9bp21 ++-0x1.879cf57ffe1b5p18 ++-0x1.8896d5a45e3d5p-2 ++0x1.182964987bd99p15 ++0x1.ae4ed76c12ddcp-1 ++-0x1.2b387213c40c0p10 ++-0x1.190326f5c5c9bp506 ++0x1.fc8ab2a922d40p56 ++0x1.84ba0399b0479p34 ++0x1.196320ea67543p801 ++0x1.c6f8306ba2e53p541 ++0x1.f79d44a0719afp7 ++0x1.8ca3c3000d226p7 ++-0x1.c434b33e05c76p-5 ++0x1.868d10df4adcbp-2 ++0x1.d365237c3ee46p-1 ++-0x1.2f53a0332a1b2p949 ++0x1.23fb93f05a5acp40 ++0x1.7170c1501bd5ap-26 ++0x1.bbb7d3ba1b005p650 ++0x1.41c1575e5df36p6 ++0x1.46d3f4d9169a3p39 ++0x1.c9fa657c758adp16 ++-0x1.c463d1e0760e3p5 ++0x1.0ef4e317bbeb3p45 ++-0x1.6b8f175a47735p1022 ++-0x1.9cbcb495f934fp0 ++0x1.b035202e76644p429 ++0x1.dfea1413ef865p-1 ++0x1.c30c667184d73p4 ++-0x1.6e4350ad76c38p6 ++0x1.11023720f1a27p-17 ++0x1.7d39738644047p5 ++0x1.08e8904336050p26 ++-0x1.a0f4632092bf4p31 ++-0x1.31db61e58f2c6p327 ++-0x1.216362a55985cp21 ++0x1.59afd473ae079p620 ++0x1.a67b229194875p0 ++-0x1.102f35c99abdcp408 ++0x1.7c8930f344010p8 ++-0x1.236814c694776p26 ++-0x1.69695069a7660p-2 ++-0x1.4833d2eb288d6p23 ++-0x1.6253b6dbdbdf0p-2 ++-0x1.cebd11d7b8c60p23 ++-0x1.6e47719d8cbdap23 ++-0x1.bc0e60a3d372cp-24 ++-0x1.aea4a37abf07bp-2 ++0x1.a424422079a3cp0 ++0x1.5f4ad2d1ae141p0 ++0x1.9d1c7329661c5p4 ++0x1.c95da42d6a20ap5 ++-0x1.637d860a40277p911 ++-0x1.777bf17319cfep11 ++-0x1.b8f294e0feb0bp5 ++0x1.f8dab5af1a40fp44 ++-0x1.4e822143a7e22p-6 ++-0x1.30f1a29272a12p0 ++0x1.ec9c45a34f565p548 ++0x1.5b2031d5f55c2p9 ++-0x1.596311decda04p24 ++-0x1.88dea317671eep84 ++0x1.1672932dd9083p-1 ++-0x1.dceba122a6c97p3 ++0x1.2a5880f1f8375p15 ++0x1.db8507740bf47p19 ++0x1.51a6f417b2d0bp-25 ++0x1.17296500d6e03p26 ++-0x1.05a473760addep-1 ++-0x1.95e0b2c256513p20 ++-0x1.150cf2ae9f714p19 ++0x1.f69660154e06fp0 ++-0x1.9aab65d69ac86p25 ++0x1.097f676316fabp8 ++0x1.e60dc42ce17c8p356 ++-0x1.6f236799d0618p18 ++-0x1.ddef96de04f2fp-3 ++-0x1.4f76b349a0943p-25 ++0x1.e41e1113025c6p779 ++0x1.026094b0f4060p17 ++0x1.69b29144b9540p-1 ++-0x1.b55194638c050p34 ++-0x1.b78f56c9abb41p38 ++0x1.eda3e2bbf366bp4 ++-0x1.dd66f0d648089p-2 ++0x1.f70f54c519e03p5 ++0x1.b2ed91264f4b0p736 ++-0x1.7e89b7cbfeef2p790 ++0x1.9ebdd376c6af6p669 ++-0x1.31bcf466a0f71p38 ++-0x1.db600765a5820p880 ++0x1.83720115e49bap19 ++-0x1.72f7158f3031dp485 ++0x1.b493a52c77e8ap262 ++-0x1.61b575ab7671cp-1 ++-0x1.d872154df6929p25 ++-0x1.966b0439fdb8ap949 ++-0x1.48ec6657af67cp-2 ++0x1.b79c505f0f0cap0 ++0x1.8cb2918d277b2p556 ++-0x1.57d9c07b3aff9p-1 ++-0x1.928615736e2c3p0 ++-0x1.89a736dbeb43ep273 ++0x1.78484185770a7p-1 ++-0x1.9716820109e97p82 ++0x1.e772957d51225p36 ++0x1.082be0a48a4ddp23 ++-0x1.fcb8f111481cbp-2 ++0x1.9221f605bd679p8 ++-0x1.4901b4e9ae99fp19 ++-0x1.107b70bf37787p19 ++0x1.116bf43b5a0c9p-1 ++-0x1.aaf0763749048p25 ++0x1.9958546576d59p2 ++0x1.7f1374d7f65b5p13 ++0x1.2b12a66cfcbfcp24 ++-0x1.032e0018d5e31p93 ++-0x1.b47f10ba68386p-22 ++-0x1.3d2b81e149a51p-1 ++-0x1.421ff5c85a241p24 ++0x1.e600548bb210dp-18 ++-0x1.678015108956ep-1 ++-0x1.e02ab7babc6e4p21 ++0x1.209470304e32ap9 ++-0x1.e80132771d75dp0 ++-0x1.a3344487bd369p27 ++0x1.e1eb2267b7fdcp496 ++-0x1.7721478b2d466p14 ++-0x1.9f701607ace6bp32 ++-0x1.3b5b74d34ada7p-12 ++0x1.2477a5441ffd0p9 ++0x1.d66a76c489eb1p3 ++-0x1.5bed268942217p0 ++0x1.2f7b251d454efp3 ++0x1.7e30f5f452228p10 ++0x1.eb98508ea666dp-10 ++0x1.2fcfe5c7591f1p0 ++-0x1.a0ac164173a04p17 ++-0x1.468a06a5522b9p21 ++-0x1.5824c7106d618p16 ++0x1.eb81c45f51ccdp40 ++-0x1.a3e486adaff0ep479 ++0x1.1974e0f299718p592 ++-0x1.e5a1e74789b73p45 ++-0x1.619690cc59a49p807 ++-0x1.aebff5a970e6cp15 ++-0x1.bfffc1c94a5fcp203 ++0x1.c6ca100bb7092p674 ++0x1.b95db5be3c216p-9 ++0x1.1f43a01f3499cp875 ++-0x1.de5737f187a25p6 ++-0x1.b0bb15e917960p24 ++0x1.26c0670524e93p17 ++-0x1.809321a40d4a8p-1 ++0x1.9dcd443d72518p484 ++0x1.6dbde56f8d28fp28 ++0x1.0842a4feb907ap1011 ++0x1.e22643ea2d366p840 ++-0x1.5a6d36e2f784fp0 ++0x1.941a537fbac6bp-19 ++0x1.735171a8af18ep390 ++-0x1.6c21854e6ac4ep-2 ++-0x1.4966b64a86f86p13 ++-0x1.9151a1dcc653ap-2 ++0x1.d39194332f055p-2 ++0x1.3441f2d9046a4p45 ++-0x1.63827188db8d2p27 ++0x1.6638414088a1ep-1 ++-0x1.a6bfc2a427d20p12 ++-0x1.a69f971d4e130p25 ++-0x1.d3300078065d9p46 ++0x1.4f37818518d61p356 ++-0x1.ad6bd45d98764p32 ++-0x1.2fbf90a8a2c99p877 ++-0x1.ff71d39bd81cap22 ++0x1.5fdec455fd1a8p20 ++-0x1.226887072ca0ap377 ++0x1.f72e43d6cf555p951 ++0x1.dc26c361d9df5p2 ++-0x1.0294c7e317c97p24 ++-0x1.7ed5874833105p-1 ++0x1.719536cabadbep803 ++-0x1.ec79d4096ea8fp27 ++0x1.eec6d47320e53p261 ++0x1.a1f7f00ab9ef0p19 ++-0x1.131f85094d6b2p-3 ++-0x1.62fd06cec62e9p920 ++0x1.3ac61495513e6p-10 ++0x1.38a2e3a18c65dp-1 ++0x1.4a7fb2f2fb6e3p-7 ++-0x1.2d23b2b1b0716p467 ++0x1.654b17175f19dp-17 ++-0x1.9e9791bea55b9p12 ++-0x1.1ba351d709f03p-20 ++-0x1.17cf2637f69aep956 ++0x1.e97fa01af0da4p12 ++-0x1.2fc4818397878p805 ++-0x1.cde053fdf18dep33 ++0x1.1e57e7c749fb6p907 ++-0x1.b6423794860bcp-2 ++-0x1.5f6ab21f70061p39 ++-0x1.a8d663f09366ap694 ++-0x1.ec4db28b5e248p-2 ++0x1.56f98549fccb5p7 ++0x1.94cd10662c26cp21 ++0x1.22fce3cdc1d23p258 ++-0x1.c59f864bc9d01p336 ++-0x1.265292b9f7156p26 ++-0x1.f079443577dbbp24 ++-0x1.361ac7035cb65p1 ++-0x1.e74096e5beb90p12 ++-0x1.7230603fa3279p47 ++-0x1.e9cbe08e63864p0 ++-0x1.6ebb6528c0777p27 ++0x1.5c5af7dbb0328p928 ++0x1.fa7c83278e735p19 ++0x1.331b21b0a2c88p2 ++0x1.f56ef59955713p32 ++-0x1.248d826402212p822 ++-0x1.2a96722b314a5p11 ++0x1.ce7975ddf3677p-19 ++-0x1.954ab0cb2f1dfp0 ++-0x1.ee8861dc9cd21p1 ++0x1.b8c9d509b7774p0 ++-0x1.accac3020df12p24 ++-0x1.c0b1048baa584p13 ++-0x1.247b04589de3bp32 ++0x1.7908215d3793ap-22 ++-0x1.8a0a5596f99e3p283 ++-0x1.30e8b0467a611p-14 ++0x1.7688417c5e950p25 ++0x1.071177de1d758p-1 ++-0x1.55a7203e5bb54p-11 ++-0x1.4beda7f02fc58p0 ++-0x1.8e6c752f1efcfp30 ++-0x1.c96c975bef932p31 ++-0x1.8123d67897403p24 ++-0x1.bd6ae1f640868p426 ++0x1.9fecb3cbf41c7p490 ++-0x1.a15bc3ae996e6p8 ++-0x1.05b3619b69842p14 ++-0x1.0442141ed67adp13 ++-0x1.e57d71c2d90aap6 ++-0x1.509d16f50ec01p544 ++-0x1.9010e6a39e0aep831 ++-0x1.e7b93430ad1d5p1 ++-0x1.5f96469e388c6p418 ++-0x1.2d5ed5dc35c75p134 ++0x1.85cd87f4cc346p-2 ++0x1.8b37f442cf6e9p0 ++0x1.9b1ae7a4ae625p0 ++-0x1.53c115a7be97bp38 ++-0x1.ff32d7edcd704p-14 ++-0x1.953fa5f60bd50p8 ++-0x1.f45e927d7ec3fp-1 ++-0x1.45de4402c93edp-1 ++-0x1.8fab8457e4c73p2 ++-0x1.e062920d6e2b6p-2 ++0x1.d85f469b95361p577 ++-0x1.98b8e736546f7p21 ++0x1.baf561d55a741p17 ++0x1.a72bd7daabe8bp105 ++-0x1.1ef7f1c2e5c9bp-18 ++0x1.0435b73182174p18 ++0x1.561e661a58867p-13 ++-0x1.2f150336c7ec0p3 ++0x1.ac91a59fb0bcap3 ++-0x1.078942a38f20cp1 ++-0x1.718d90b3efe95p-1 ++0x1.8dba84562c1a1p-25 ++0x1.9f94a2a92cc63p25 ++0x1.529ab6f344416p15 ++0x1.a005943ddb8eep0 ++0x1.ac93d3c825de4p19 ++-0x1.1140b5380990ep-2 ++-0x1.8ef2408d49792p9 ++-0x1.ca5042b95a883p11 ++0x1.7c287447df731p599 ++-0x1.e15023bd4744cp210 ++0x1.657882484d13fp23 ++0x1.e88f328b258fdp23 ++0x1.855dc0e37b99ap395 ++0x1.598187ea5ae51p33 ++-0x1.637ae365b4384p-1 ++-0x1.1923e00bf8e04p1 ++-0x1.5f4ed07d8a997p16 ++0x1.268767573e897p22 ++0x1.ad3f47ad94f57p227 ++-0x1.05cc81c2d4884p25 ++0x1.bc8e47678920ap0 ++-0x1.f772a716fb113p-22 ++0x1.bcdc73da531a3p-7 ++-0x1.b526f046be5e2p-2 ++-0x1.f888c3eda4f44p92 ++0x1.6f90f7637cce6p924 ++0x1.6ae52307d05c4p18 ++-0x1.40ea87b7fb3a9p2 ++0x1.270c426bb2c09p38 ++0x1.d82674e4cec0cp874 ++0x1.2dc86702ce991p122 ++0x1.e15520525a088p19 ++-0x1.ea28530234be7p17 ++0x1.9ba9b4938d1fep8 ++-0x1.8dcf703e176e2p12 ++-0x1.cc265742b5c6ep0 ++0x1.0065329f84432p554 ++-0x1.161137df0d91bp1 ++0x1.8fb0027634696p0 ++0x1.b9fa22d8a4cfep0 ++-0x1.667ba642c426bp628 ++0x1.6ea694c30205bp27 ++0x1.49f3651093200p822 ++-0x1.79f5a0df3fcebp667 ++-0x1.b53dd3f934f2ep427 ++-0x1.0565b1cf6e355p20 ++-0x1.7ef691c9c2091p-1 ++0x1.2f6062f73a03ap-2 ++0x1.d4f4c36b692b3p3 ++-0x1.945c555415314p3 ++-0x1.e1efa2575c11bp284 ++0x1.daa7f3648ccb3p680 ++-0x1.5ad77206e5e6ap-2 ++0x1.c79a40f6473f6p29 ++0x1.48fcb0b8cc309p73 ++-0x1.c0cb8090ed1dbp-8 ++-0x1.9411631355aa0p2 ++-0x1.4a1e129f65869p234 ++-0x1.7619e7382b57bp-7 ++-0x1.80f5c7807337ep5 ++0x1.e30ba2147b72ap23 ++0x1.faaab405c970ap10 ++-0x1.8db3b01985f05p-17 ++0x1.b155055e2c9bcp-12 ++0x1.7b1531e9dea19p16 ++-0x1.3f4041f462a08p35 ++-0x1.809d32d7edc1cp18 ++-0x1.261472134e23bp-6 ++0x1.9a6785f0bd19bp406 ++0x1.8227140a3e10dp491 ++-0x1.ef5aa000c8afbp845 ++0x1.41c582661c062p2 ++0x1.67fca3ca351fdp-2 ++-0x1.eb4e319782bc5p0 ++0x1.2f2de7f12ed11p0 ++0x1.f5a6b78c7b2e5p4 ++-0x1.1297c67142642p1007 ++-0x1.e1f4a032a77f6p0 ++-0x1.088754e6657a4p1 ++-0x1.75e1d72e80fbap30 ++0x1.78b350a1f00e8p22 ++0x1.271167a076a83p44 ++0x1.e70f437159d71p-2 ++0x1.87e957b57fa84p75 ++-0x1.677a102f413c2p0 ++0x1.8fc497cbb0095p-20 ++-0x1.d25da5b15d323p-1 ++0x1.76e7f1f9d8687p72 ++-0x1.36d924ab23541p25 ++0x1.b6964733ca4b5p1003 ++-0x1.fb16015e8942bp-1 ++-0x1.70a972441252ap981 ++0x1.7e76507a8675bp-17 ++-0x1.1cd0058f54456p122 ++-0x1.c0fb733c7fc31p-3 ++0x1.9eeeb2ae4b3ebp710 ++-0x1.adb9d02c6d361p1 ++-0x1.8043944ab395cp-2 ++-0x1.3929134a7aa22p6 ++-0x1.afef537037707p22 ++0x1.f95dd74ff9bd0p265 ++-0x1.46ee17ceaa71fp-1 ++-0x1.7f6ea716e7feep317 ++-0x1.1e22240f16846p-1 ++-0x1.20a474cb7609fp24 ++0x1.70e043acc61e5p16 ++-0x1.7eefa2d58eb0ep337 ++-0x1.5f0916075f895p25 ++0x1.587ca1f01e2f3p4 ++0x1.ec1f57978ca5fp-3 ++0x1.03b1a7547b5f9p313 ++0x1.b92e15306ee93p-1 ++-0x1.b52f21e5fe14bp-17 ++0x1.0e10b6ab5a214p-8 ++0x1.8c4b96284f26ap24 ++0x1.5f0360b127d60p-1 ++-0x1.9b60e1c781a78p501 ++0x1.20dad3315b635p586 ++0x1.34af961f320dep220 ++-0x1.300e85c202993p41 ++-0x1.4d8eb16113ddap-6 ++-0x1.73d644b4030d5p0 ++-0x1.368a658fa09f8p2 ++0x1.0c89d6b268d24p20 ++0x1.bb1a765ce28fdp47 ++0x1.8f4006e283f2fp13 ++0x1.92eb72301aaadp-20 ++0x1.d3c0d2e0def1cp14 ++-0x1.5bb3b4c71a538p268 ++-0x1.64f9c74e4f02cp409 ++0x1.092eb44978cc3p1 ++-0x1.871aa3260142cp12 ++0x1.b2231204c9adcp14 ++0x1.169a93b39b7c8p-2 ++-0x1.aea221c5784dep439 ++-0x1.bc398053cf866p725 ++0x1.5c55063fa98a0p26 ++-0x1.6d60d14fab3ffp19 ++-0x1.61a907b23322ep26 ++-0x1.3e2aa7e0685c7p28 ++0x1.1870b10038923p-1 ++0x1.3a52b1e143ab8p28 ++0x1.7bb547d4e8b19p18 ++-0x1.1f24978e6140fp507 ++-0x1.a95f874fe9ca8p42 ++0x1.65ecb6f9f87dap0 ++-0x1.71a20409c9197p0 ++0x1.385a123a7bc69p-22 ++-0x1.2f9e350b93eefp0 ++-0x1.1485e2b270712p19 ++0x1.3ac6f562d19b3p-2 ++0x1.6476142969e6cp325 ++-0x1.56463176cb1a3p283 ++0x1.20e5f768ccce0p0 ++0x1.319f01a378b2cp2 ++-0x1.8969458ad3464p-2 ++0x1.b1f7254761461p-2 ++-0x1.6cf2f4320d01fp0 ++-0x1.7906d597ec6d3p806 ++0x1.4efb250a0b393p-20 ++-0x1.6c12c573e5d7dp5 ++0x1.daafd30c1507cp24 ++0x1.9d6185d00050ep996 ++0x1.934ac1f1b9ed3p231 ++-0x1.1a45e56568952p-2 ++0x1.65bfa7b4278fcp16 ++-0x1.1aace0acffbdbp1 ++-0x1.68d463926e0dep-1 ++0x1.b1dab378ca1c2p25 ++-0x1.506cf2a809fddp704 ++0x1.358a15ae4294dp-13 ++-0x1.42c3c05c5826ap390 ++0x1.2fcbf708a00e3p3 ++-0x1.3677e200ab18ap-15 ++0x1.2873c5d55c2cfp-22 ++-0x1.2724526c9752dp-21 ++0x1.8d9b06275b83dp12 ++-0x1.b12f058122586p181 ++0x1.527573274a8d4p8 ++0x1.195f40a45ebb6p0 ++0x1.27e087658825dp-1 ++-0x1.2fa5c194bf350p8 ++0x1.aee9b799e7960p9 ++0x1.e7068384c91e9p19 ++-0x1.9c15b7bbbe8efp786 ++0x1.5e87f540349a7p36 ++0x1.4c6543847dd73p496 ++0x1.c589e3ee9a17ap33 ++0x1.c807c6669378cp-1 ++0x1.3adbb27f40e7ep0 ++0x1.5b0442a02b1cfp23 ++-0x1.4603d2868b08bp-2 ++-0x1.28a4e5eda874ep277 ++-0x1.a25a728b6e591p147 ++-0x1.12e453911f316p808 ++-0x1.e2b24769906d4p32 ++0x1.f884d2ae76492p-1 ++0x1.fda586dbd3223p18 ++-0x1.3f09d311f4081p893 ++0x1.289fb3f9141abp16 ++-0x1.41f333066913dp19 ++0x1.dee9e7bf987c9p976 ++-0x1.32a5b4fa2e6b2p0 ++-0x1.e20aa461c2157p34 ++-0x1.4a66f2ea0a5c0p45 ++-0x1.5ff44343e926dp0 ++-0x1.c88e22ba7c82cp0 ++-0x1.4026b50f54360p0 ++-0x1.7afb6345c0c15p24 ++-0x1.c17db7ae50ae9p8 ++-0x1.120ae360cb67dp11 ++-0x1.4cb780f424d93p13 ++-0x1.27eb05143f027p25 ++-0x1.20c813e3aed73p709 ++-0x1.86d2e433d192fp889 ++0x1.0961e47b86039p0 ++-0x1.8abfe08bbc72cp599 ++-0x1.d6de9255f915fp0 ++0x1.37c9063f4c54fp34 ++0x1.ef29e5cc63bd3p8 ++0x1.b0e307f445021p34 ++-0x1.2dd254b5abc94p5 ++0x1.774825660c90bp-8 ++-0x1.059295ecd45d1p0 ++0x1.4fedc45fad571p26 ++0x1.f40711380db13p7 ++-0x1.b95cb138eca91p35 ++-0x1.51ef12b10b034p-2 ++0x1.ed7034a4ba5fdp26 ++0x1.3407c59c49bd0p0 ++0x1.103160b4631c0p21 ++0x1.e19f639692ac0p261 ++-0x1.9fae70cb2d56cp31 ++0x1.38ee669963b88p21 ++0x1.99cb42f6c9388p355 ++-0x1.bcda7573c7ce4p927 ++-0x1.6291301099b9bp30 ++-0x1.d782c2e2c92bbp15 ++-0x1.784e8037661c5p19 ++0x1.36744643c4a42p36 ++0x1.c381c73ba6b44p5 ++-0x1.8e6584afbb6bap29 ++0x1.60ef319355c1dp478 ++0x1.754fa41b33911p888 ++-0x1.dc27a33bf6306p-18 ++0x1.b33d46d5e22fdp18 ++0x1.2bc62656f694ap827 ++0x1.3d75b544d079fp-2 ++0x1.e054c651bc3dep960 ++0x1.1a72c20a37235p14 ++0x1.aed6f37f159a8p4 ++-0x1.01992507d64dcp11 ++0x1.3b56f71608c5ep0 ++-0x1.d7e042bfb55fcp16 ++-0x1.eb3e0216540efp894 ++-0x1.4fd1c1f7dd5c2p46 ++0x1.02f127955effep0 ++0x1.cdbb710ee6b4bp40 ++0x1.090911a7b9637p-2 ++0x1.d74c64e6dda8dp29 ++-0x1.98a6009907880p158 ++0x1.a5cc91ee0faa7p41 ++0x1.943d06841a6c8p34 ++0x1.8ac7d5e70a232p-2 ++0x1.ba2c04cc3ef8dp3 ++-0x1.b58f95aa564d9p0 ++-0x1.973e5700e6b4bp20 ++0x1.b7a3524725846p0 ++-0x1.128721b885a46p17 ++0x1.bc6b54987973cp19 ++0x1.b4ad251ee68e4p-2 ++-0x1.50fc219493101p842 ++0x1.d58ae142787d9p-1 ++0x1.316d83c961b95p4 ++0x1.34d343338acc5p9 ++-0x1.8045f5444a6b6p24 ++-0x1.839b72308621ep1 ++-0x1.0e7452e31d1a4p17 ++-0x1.24c7e44469182p1 ++0x1.da29e623ef67ep-2 ++-0x1.0dbce3889c2c5p800 ++0x1.3bcca50129997p-2 ++-0x1.6b0ab247362d3p806 ++-0x1.600922864a5cbp12 ++0x1.0389370f595d0p-17 ++0x1.7ccf72e3efcffp23 ++-0x1.cb8b1074ff472p-2 ++0x1.b7a66671d9bc0p557 ++-0x1.c55a54873485dp5 ++-0x1.ed643182b4f8fp-1 ++0x1.3d6fb3a57bc7ap-2 ++-0x1.20776336f7781p1 ++0x1.42b72105c6ed8p612 ++0x1.06a4d6dd3a5c4p-2 ++0x1.830a33db5faf6p0 ++-0x1.bec3309e61a85p25 ++-0x1.cdd4202956c13p9 ++-0x1.456894b0fe5e2p-9 ++-0x1.5e75c7bfd1c26p13 ++0x1.2511840847d4ap1 ++-0x1.311d36a26ce96p25 ++0x1.7b3583c108d12p368 ++0x1.2b3ea65fb3fb0p3 ++0x1.9d531434f54aap1 ++0x1.b097301ac5504p16 ++0x1.8c8b55474e5dbp0 ++-0x1.1e79f18b6a2e0p44 ++0x1.ff9ad1733ab79p-2 ++0x1.475ca4f6bbc44p937 ++-0x1.bf0114ace534bp177 ++-0x1.b91072375d8a4p-2 ++0x1.84fcc3902af81p971 ++-0x1.81eec4a99819fp18 ++-0x1.18a9e42a54f34p0 ++-0x1.4019e136b83dcp-2 ++-0x1.78f283c624525p-2 ++0x1.2701b12d4f844p22 ++0x1.36fc85bbb6070p401 ++0x1.6b35225fd0908p94 ++0x1.e6e2131951debp279 ++-0x1.b82af00e76418p14 ++0x1.be658653e6766p256 ++-0x1.385b70831cafap29 ++0x1.d3f5c24cbc413p-2 ++0x1.f93972d50cfb3p-1 ++0x1.3b7813b2681acp0 ++-0x1.7f27f0e41cc47p24 ++-0x1.eb9b45f3358c3p9 ++-0x1.236842aae5290p1 ++-0x1.69135229dc5c9p4 ++-0x1.a81f93c59e748p11 ++0x1.21ed75692e14fp32 ++0x1.7ce2f7e7f462dp30 ++0x1.f9bfe445d11b5p2 ++-0x1.80d5201176135p10 ++-0x1.6502724d070d2p26 ++-0x1.756325ea0de70p357 ++-0x1.14982063b0f3bp18 ++-0x1.b62bd1473f7b4p683 ++-0x1.cbc8c7e76a18dp22 ++0x1.01ff77285718bp-1 ++0x1.149063aaa5e7fp26 ++0x1.36a8923cacda4p25 ++-0x1.3db72554025e2p10 ++-0x1.445e35540ca90p493 ++0x1.51bf04c8ae132p-25 ++0x1.6f5394c33dd94p5 ++-0x1.1ff746f462c25p-21 ++-0x1.109b702903094p10 ++-0x1.d5c5e7e8246e0p2 ++-0x1.52b9318533d0ep8 ++-0x1.73c380e23710fp11 ++0x1.63a440fa11bbbp230 ++-0x1.5d2961e3f707ap704 ++0x1.8b42849cca6abp1 ++0x1.8bc2e1537e745p10 ++-0x1.406c125032124p701 ++0x1.50850019bb449p-7 ++0x1.7df5d165411e6p-21 ++-0x1.c089e1db09fa1p24 ++0x1.fd15959b89b57p18 ++0x1.722ac54ce4ca6p28 ++0x1.9ed9928e455fep-9 ++-0x1.58698376f1cc9p4 ++-0x1.0cf1601dabfd0p-13 ++-0x1.23afd7ed7fb9dp-1 ++0x1.be965057282e2p112 ++-0x1.696652132ab94p18 ++0x1.77458321cdbd7p549 ++-0x1.417ae73977eeep-22 ++0x1.85abf3e024aacp-12 ++-0x1.b9cc71340e0abp-1 ++-0x1.2f5e246efd99ap1 ++0x1.700f73433df7ep-1 ++0x1.6016960e7dd29p205 ++0x1.fb0380828c4cbp39 ++-0x1.630bb6882ef0cp8 ++0x1.f6646483933acp-1 ++-0x1.aa81e7a2dc38fp614 ++-0x1.0a2d10e978ec2p154 ++-0x1.7df4b33b5344fp5 ++0x1.d702811d5c6abp984 ++-0x1.ec22926e5a82ep-21 ++0x1.34039400fe24cp11 ++-0x1.bd6547ae731d4p0 ++-0x1.ab8f03598b253p-1 ++-0x1.2c2aa517d17b7p152 ++0x1.d5afc263e2f26p7 ++0x1.2f1b33b063f94p0 ++-0x1.45a626aafd49ap45 ++-0x1.a819d0880c43ap8 ++-0x1.6fd166b7cf8a9p28 ++0x1.8f14c6d951680p-2 ++-0x1.f95a164067f69p-6 ++0x1.89b4a08a38cb0p14 ++0x1.a4b996c33a6bdp37 ++0x1.4aeb0322ec440p-1 ++-0x1.a420305ddf0dep20 ++0x1.5b68332d5fe77p189 ++-0x1.6929678422be5p19 ++0x1.dd2126a36ab02p10 ++0x1.98f53759e6cc2p776 ++0x1.c327955ab4d9cp600 ++0x1.c152d36d52060p-1 ++0x1.794e9268cf1f9p-3 ++0x1.0fd9b34cf9e14p0 ++-0x1.f1c2c3f721d38p24 ++-0x1.c2f18449c0b1cp-13 ++0x1.1f6f72691226fp26 ++-0x1.9eba60739e9fdp22 ++0x1.55e6b0539f3bap982 ++-0x1.deaf371270943p6 ++-0x1.9d3ae228b1311p12 ++-0x1.fecfd748896e1p0 ++0x1.fd5a059f9c172p-2 ++0x1.c7a7c29f81427p24 ++0x1.36ca81fa9a1adp684 ++0x1.8c3ff49ca4904p12 ++0x1.1d0d849df4253p1 ++0x1.f52c4094b100fp36 ++0x1.3349a0a047c9ap24 ++0x1.397f1147f1b4ap-7 ++-0x1.c7ea6242b1fa7p12 ++-0x1.01f5933842764p38 ++0x1.81c1a5562ef0dp29 ++-0x1.71a012ad6b2dap-2 ++0x1.4e0114b92be2dp846 ++-0x1.ea54b35d3f7e3p11 ++-0x1.8758771ca14b1p580 ++-0x1.a17a467fd6aadp8 ++0x1.f18514b3d4bc4p0 ++-0x1.acfaf20b2d004p15 ++0x1.5985717523c39p8 ++-0x1.8c04a7df8a0dfp-1 ++-0x1.2f9d510841af2p-1 ++0x1.153361ad245bep11 ++-0x1.85103699de39cp16 ++0x1.2df047f79c291p201 ++-0x1.489e6110776d9p0 ++-0x1.6b8242e1f61e9p-1 ++-0x1.9bb0554427766p995 ++-0x1.5661e39faa45ap14 ++-0x1.6c4da055e41c0p24 ++-0x1.d4e2a3a4090cdp175 ++-0x1.e5e790e8baa1bp-14 ++-0x1.129e75c7aff37p6 ++0x1.5375038c8dd70p27 ++-0x1.c04a313036171p992 ++-0x1.e12566734cc7bp976 ++-0x1.ed8b413aed34dp716 ++0x1.a3e0646c6265dp738 ++0x1.74a4333e87a2bp9 ++0x1.5d02455d1bb3dp15 ++0x1.712c9673a7d13p-26 ++0x1.4840b2e17f6edp1006 ++0x1.2053e5b7f6eedp26 ++-0x1.b5a30398cb230p-14 ++0x1.fe83c131a134dp0 ++-0x1.63f1305740debp8 ++0x1.ff796761e132ep34 ++-0x1.7d193269b00f9p22 ++0x1.94e78186aeac5p25 ++-0x1.278cb595be809p-2 ++0x1.d4ccc2ff780b8p42 ++-0x1.ef8b614873906p0 ++0x1.c8b7f506376c4p33 ++-0x1.97b4b07142435p-2 ++0x1.1efd54bfbe9fbp100 ++0x1.1560d1a87593fp27 ++0x1.5e8c0545cfcf4p26 ++0x1.9c69e6fd6459ep637 ++-0x1.4b25e05d58b46p863 ++-0x1.81ec10a304cf8p774 ++-0x1.1f9604ed5dc18p-1 ++0x1.becfd05c673b6p20 ++0x1.bde267b487883p183 ++-0x1.d917f2a793ddbp5 ++0x1.e85f16573a72dp919 ++-0x1.0cc5657e9b661p1 ++-0x1.446982673e881p9 ++0x1.e84e42461caddp326 ++-0x1.a479565cee358p-2 ++-0x1.2e7db1f9f89dap3 ++-0x1.6807f62188ee4p19 ++-0x1.f9a73671b8d07p1 ++0x1.1beef08374679p0 ++0x1.1dafc2f5778abp25 ++0x1.9250a762e1ba1p20 ++0x1.f9812520917ecp12 ++-0x1.0da0d4531229dp416 ++-0x1.72ff65f41d183p-2 ++-0x1.164d766bf45fep19 ++-0x1.3c7a02cb96b62p-1 ++0x1.3fd9603c15434p-1 ++0x1.6ed333c5adb05p-15 ++-0x1.b35ad0e907efcp23 ++0x1.ee8f5619a8d0cp-1 ++0x1.4523c70e30a5ep45 ++0x1.74f607e52d238p-1 ++-0x1.0fc6108958cecp1 ++0x1.9ccf57ca88ef6p621 ++-0x1.0809650c00191p20 ++0x1.ccf645ad30624p-2 ++0x1.40a22315ce02ap10 ++-0x1.4b4f6440c04d3p0 ++0x1.e846d4c3490f2p593 ++0x1.f92f20b5d8cafp-7 ++0x1.b90bb5fd78cd4p786 ++0x1.16afb2cf4deb8p538 ++-0x1.1aa4248addfffp5 ++-0x1.587286bdceb7cp1 ++-0x1.2ce667139fd6ep26 ++0x1.2fe84506f5385p963 ++0x1.3acb00c272448p-16 ++0x1.e0a3c2d64fee3p719 ++-0x1.b487d227fdec7p-2 ++0x1.faa152bb52391p18 ++-0x1.e79f5357231aep15 ++0x1.c65bb6c53d3dap-23 ++-0x1.ddfa475af1db1p674 ++0x1.d15766ea575b6p754 ++0x1.cc77931bf80adp1 ++-0x1.39d87172d2d3ap955 ++0x1.eee6f4a4110bdp829 ++0x1.a81e612359044p-12 ++-0x1.2876e2ba2738cp-2 ++-0x1.281e96b11431ap20 ++0x1.1679654620215p634 ++-0x1.c19584949678cp0 ++0x1.b8da124791494p-2 ++-0x1.e18f25739b74dp607 ++-0x1.4b5b316466f4ep-1 ++-0x1.c3f2d4a621a5fp12 ++0x1.7ca620f840a2cp828 ++-0x1.e2a1c45179529p-6 ++0x1.03b8346424511p-2 ++0x1.b135621e69725p551 ++0x1.28f6635324af0p1 ++0x1.ce24171b296d6p23 ++0x1.7fca444e86945p24 ++-0x1.de18458a2ee35p699 ++-0x1.10aaf42a372b8p-10 ++0x1.3175567afe205p25 ++0x1.b3ea9658f5c1ep-2 ++0x1.5cdfe0c3508c0p27 ++0x1.718706e31a168p-12 ++0x1.4b2475de57328p581 ++0x1.7e06534da3912p26 ++-0x1.bc4683ab53857p24 ++-0x1.dcbd172495052p-11 ++0x1.953bb577e3442p8 ++0x1.c704b77880f42p960 ++-0x1.e1cdd796bd369p25 ++0x1.c6f0846cfe9e4p-2 ++-0x1.6a35f6969e604p22 ++-0x1.648dc686aa66dp-1 ++-0x1.7362b1dd212ddp198 ++0x1.7311f4cc57a57p-2 ++0x1.437536a391f64p-16 ++0x1.989c90dd19204p34 ++-0x1.8382a5f03a8c2p-10 ++0x1.ef9bf32947b5ap8 ++0x1.4e8642971464ep9 ++-0x1.873e050c19a35p403 ++0x1.3b96e14be3ce6p9 ++-0x1.acdfb08fca270p9 ++0x1.a48c61da23d9ep255 ++-0x1.f23d367e7d312p-1 ++0x1.8657c785cda01p21 ++0x1.b834d785cb551p0 ++0x1.2e9e363624743p-1 ++0x1.d6bc40afd2e5cp1 ++-0x1.b28dd3c03580bp25 ++0x1.464f2654be753p15 ++0x1.0e66174c1a5b8p57 ++0x1.9513603120188p-11 ++0x1.d8f947940be48p462 ++0x1.f555e2ba605b4p15 ++-0x1.39e4b7d1c13c1p2 ++0x1.77b477c4ce082p450 ++0x1.db29e26cbb155p12 ++-0x1.09437624580b4p1 ++-0x1.54e64408c718dp-8 ++0x1.bc6023572bcc5p24 ++-0x1.b434a601701d7p601 ++-0x1.f4b1d689b2dd0p11 ++-0x1.0169d2091a98fp-2 ++0x1.3f8ff3fa74d41p-5 ++-0x1.8c80c2779ce0cp2 ++0x1.868886f5a1110p10 ++0x1.9c4df0b876ebfp-25 ++-0x1.71f585d4559b8p0 ++0x1.8de525de7f0b7p2 ++0x1.4176a6a108549p39 ++-0x1.5f815601d20b9p-2 ++-0x1.a38f23bfc9035p19 ++0x1.c5d840b1da838p-1 ++-0x1.34bd228405e26p24 ++0x1.57512021aabcap26 ++-0x1.bca9f6e287c33p-14 ++0x1.5ac0c1a2f4fafp24 ++-0x1.994ab36e7d723p2 ++-0x1.328d45a5fc470p341 ++-0x1.64af70ee7def2p-4 ++0x1.ee1db2f62022fp0 ++0x1.5f2dd10e6a6ecp-20 ++-0x1.838631f252728p42 ++-0x1.19cf34161b21dp11 ++0x1.9f91840121c5ap-22 ++0x1.9dbe335793b39p41 ++-0x1.839fc42eeae8cp103 ++0x1.eef9e6c8ffb8ap6 ++0x1.8541c004e3180p22 ++-0x1.8c1920d4c1503p85 ++0x1.b218a059a4570p-2 ++-0x1.a58d75620b198p667 ++-0x1.6efd621a14b0cp17 ++-0x1.099e53d938376p14 ++-0x1.18d6e5d70b10fp-1 ++-0x1.5788e732cd976p11 ++0x1.07ef71676445cp34 ++-0x1.ca4487363d2c1p27 ++0x1.dc926279d77cep263 ++0x1.8753049e6d5e1p-24 ++0x1.65f042ee1fc9dp47 ++0x1.bc3453e531abap-1 ++0x1.bcc4873bb393bp6 ++0x1.116535b98ffadp42 ++0x1.de18a3376458ep8 ++0x1.db06306746181p13 ++0x1.84c37202fcf43p1 ++0x1.866395219626bp18 ++-0x1.141071db29322p257 ++-0x1.73ef56ec1f623p950 ++0x1.e4d520d681029p25 ++-0x1.9eeee3bb51702p1 ++0x1.f0d4059310340p11 ++0x1.5183a5f0807cap12 ++0x1.1bfe251a8c4a8p21 ++-0x1.1a87e14b480c2p0 ++-0x1.7edd86bc0ed71p628 ++-0x1.ab66712e5be65p12 ++-0x1.5780654d83cf9p20 ++0x1.0e08e43c171b7p-23 ++-0x1.88da66ec65c0dp324 ++0x1.5c5926ec4f1a2p-2 ++0x1.decdf19a88501p4 ++-0x1.5bb127177c60fp935 ++0x1.7744646704854p0 ++-0x1.cddb237f3dfcdp672 ++-0x1.8c87310c7aa0ep16 ++0x1.1a8aa57389535p-1 ++-0x1.b27e20d250282p26 ++-0x1.facbf497fa225p576 ++0x1.fac832440d064p-1 ++-0x1.228927aeb745fp-2 ++0x1.3cd4a0cdd1361p47 ++-0x1.85c831564ddeap1 ++-0x1.83f066bfc1359p14 ++-0x1.b753f35ab1670p14 ++-0x1.76e0b3655bb28p30 ++0x1.4ef00786f3c9fp27 ++0x1.2621a3ae6c888p2 ++0x1.f0f6471c67c9bp-2 ++-0x1.ad9653d2d06aep-2 ++-0x1.f6717146079e5p22 ++-0x1.27ea06c37db0dp982 ++0x1.567a43608f4dcp8 ++0x1.c2aec319a9eb1p3 ++-0x1.0c9f22529d27dp-3 ++0x1.f675c28973d34p6 ++-0x1.b1ba46b0c8b89p-9 ++-0x1.348066bcb437ap-1 ++-0x1.c1e203c94dc06p19 ++-0x1.bd2d4187954e7p30 ++-0x1.85eb466fe1e41p-13 ++-0x1.2ce2532f3a652p11 ++0x1.ee2be60192dfep-2 ++0x1.7c77736361d2ep619 ++-0x1.9bb2716c8b4e1p21 ++0x1.458cc63edc9ebp16 ++0x1.427fa56cf1226p791 ++-0x1.cd4a90f4529cfp0 ++0x1.5a66116e3a525p585 ++-0x1.a44717a44cee8p9 ++-0x1.89c766e207c5bp47 ++0x1.8497829793fafp-2 ++-0x1.b169742951e02p18 ++-0x1.6f4840b361b11p-23 ++-0x1.caa2b00a5545ap22 ++0x1.158d27d29b47cp25 ++-0x1.c113704bba518p0 ++0x1.ad9bf10cb5ff8p14 ++-0x1.4e0a32305965bp-2 ++0x1.067fe63e938a4p-23 ++0x1.b96914a1b3a21p438 ++0x1.63dfb19a046cep34 ++0x1.db0804f3c7c9ep0 ++-0x1.8410d2e1034b3p0 ++-0x1.d1aaf2398a33dp-2 ++-0x1.bbb454f7f7f07p24 ++-0x1.c9acc42e8d061p19 ++0x1.203d60670cd9fp-8 ++-0x1.767535411c076p-1 ++0x1.60cc4040d39f1p422 ++-0x1.d10600cb8001bp29 ++0x1.b8e581930f94dp-1 ++-0x1.355566120a0b9p1 ++0x1.45b580cae60afp18 ++0x1.d911332e98370p0 ++-0x1.91177292f4cabp8 ++-0x1.418ad2d34bae0p-10 ++0x1.8291b4650a69ep-1 ++-0x1.79d9f4f590c73p24 ++0x1.a6c83045cbf27p20 ++0x1.671f710ecd668p1008 ++0x1.318ea4b002d99p-10 ++0x1.a7b8b355e681ap46 ++-0x1.8f1101e38969cp61 ++0x1.be31961f3aa50p160 ++0x1.0836b413055ffp647 ++-0x1.95d046a1ab722p919 ++0x1.fc127769b2558p421 ++-0x1.fa2d535dfb0ffp0 ++-0x1.19df965ee45d7p653 ++0x1.c409446d99c17p615 ++0x1.259ea3875295cp42 ++0x1.1d90964dac75cp23 ++0x1.2019d5248771cp42 ++-0x1.328307633514ap1 ++0x1.a28317d7099c2p23 ++0x1.ac9cd6e82d051p19 ++-0x1.32f0c45d72d8dp0 ++0x1.76fa3642a2e9ap2 ++-0x1.f5cac7ebb5a18p7 ++0x1.76df575b7cff4p12 ++-0x1.714c26d8c8d24p-26 ++0x1.14a3e3533f825p2 ++-0x1.aca7465e17036p-1 ++-0x1.6ea6365296b7fp37 ++0x1.903ff0fd1d1d1p816 ++-0x1.0acae1b832bffp618 ++0x1.0b9fb4c808dd7p15 ++-0x1.fc968462e80a1p42 ++0x1.971fe623dd7bbp-12 ++0x1.b2c787b5a85fbp10 ++0x1.6af4437902edap-26 ++0x1.eafdf13258e48p22 ++0x1.40dcf08370d64p-16 ++0x1.3c49f4603b25ep158 ++0x1.7d156688d9d5ep203 ++0x1.ea6ec75e3a3f8p14 ++-0x1.39770057684f9p335 ++-0x1.203f737ae7869p-12 ++0x1.820394211c83fp551 ++0x1.2a2466c9759cfp21 ++0x1.d7edd63490c31p-1 ++0x1.da78c7461ca5cp20 ++-0x1.5eada05f63f1ap12 ++0x1.4d0466560feb1p23 ++0x1.f840d32accedbp576 ++0x1.f017d5329baeep34 ++-0x1.28f2e2a8c25a1p6 ++-0x1.3b6705c364a3bp-12 ++-0x1.dce5f1df42de0p0 ++0x1.0d48966683a4ep1 ++-0x1.1c63a7cadb22ap-22 ++-0x1.16ba8367f31fdp156 ++-0x1.8b3e13c7f3a03p21 ++0x1.97fcd0035fe76p23 ++0x1.bec9562483afbp1 ++-0x1.88e6d0eac076bp3 ++0x1.5b15217b8879ep10 ++0x1.aedeb39054577p271 ++0x1.3fb5b2335be6dp-15 ++-0x1.c331a14d8c473p-5 ++-0x1.bfc2a2cb84079p17 ++0x1.3c11d271df1bap24 ++-0x1.13ea25a9e3f6bp108 ++0x1.2e2b40a38617ap-1 ++-0x1.f528b5d80128cp-21 ++0x1.6aadf20c0b366p542 ++-0x1.f50a1346f56cep306 ++0x1.2d5b105aa946fp0 ++0x1.f5a63052565cdp15 ++-0x1.cdc68541a84efp8 ++0x1.bd32141c6c295p25 ++-0x1.4ddb2056462ccp24 ++0x1.7830865a59204p23 ++0x1.468106f7529f8p5 ++-0x1.025cc0f22a1fbp37 ++-0x1.c00d57ad60ac5p0 ++-0x1.2a4135493a5ccp35 ++-0x1.2afa33c25a200p603 ++0x1.74f407f05f616p8 ++0x1.5b8937978050fp21 ++0x1.7a5db0fda57f4p16 ++0x1.4695f2bc976e0p0 ++0x1.f481e2cf35d18p-2 ++0x1.c262e34521fb6p-1 ++0x1.2cbc860c13474p17 ++0x1.64d371b08759ep15 ++0x1.da18e713e4cb9p-5 ++0x1.abc9a6f91a6d6p-8 ++0x1.2df6d29bbc5b5p1012 ++0x1.aa2cb76cdfa0bp0 ++-0x1.5fe9976d6cd0bp12 ++0x1.85f14525bfb00p-1 ++0x1.49b43399b1c42p106 ++-0x1.9cd354c208505p-15 ++-0x1.9d4235a514407p2 ++0x1.ee0a16b3daac7p17 ++0x1.fcc165f31733fp0 ++0x1.e5e150a67c9f2p-4 ++-0x1.75a4c2ba36cecp26 ++0x1.e94cf46939e6cp755 ++-0x1.0b7b352b6c592p-1 ++0x1.d4f714edbb965p21 ++-0x1.e1e8645c60564p747 ++0x1.0a3fd37d282e1p-1 ++0x1.9621f5e7054c9p-2 ++-0x1.c1a72478daa53p867 ++-0x1.985c42bec01c7p0 ++-0x1.1cf386cd14914p8 ++-0x1.5f67a73764c42p614 ++-0x1.522cd68c1bf68p26 ++-0x1.d799532d49d5ap674 ++0x1.46bb22a16728cp5 ++0x1.389933b0164ffp10 ++0x1.a5f50513df15bp99 ++-0x1.be02a2624e3e2p-6 ++0x1.842b00d07b638p18 ++0x1.2411e326586bap-1 ++-0x1.e39ec39ec78acp100 ++-0x1.9a0136520b211p-20 ++0x1.473bd1a29d139p-12 ++0x1.5997d3e7d9cfcp596 ++0x1.c569803b425e1p13 ++-0x1.a38fc2debd07bp914 ++-0x1.e7a0c727b8c85p-13 ++0x1.fec181572dc93p143 ++-0x1.9d59b64a201eep-2 ++0x1.730c81ab84d39p18 ++0x1.0b25801e3ab2dp4 ++0x1.23a5f5c54b7b8p1 ++0x1.322b0576073e0p0 ++-0x1.c1f8e33410fe8p-11 ++0x1.867ef74ad8684p499 ++0x1.364d612cd2496p1 ++-0x1.caec529ba1df2p42 ++-0x1.b99d77d2009bdp0 ++-0x1.4bf4f0d4925c5p909 ++-0x1.79d630227d604p512 ++-0x1.fbbc014403c00p855 ++0x1.32e5e1654b2a2p-1 ++0x1.c94ed499f75c2p25 ++-0x1.805ce3fcfd6cap236 ++-0x1.38c217951cfeap14 ++0x1.d2c6423a89b18p32 ++0x1.fa9fb7906c851p8 ++0x1.6a2e105660a34p460 ++-0x1.3bb4055b92b4bp20 ++0x1.19b7d1cb31d88p5 ++-0x1.b710d75b84f62p30 ++-0x1.abc2246751c8dp-2 ++0x1.a9454155ad3bap5 ++-0x1.8107e221264ecp30 ++0x1.3554a38510ef4p-2 ++-0x1.8c392588b88aap-2 ++0x1.6a61e531ae636p-1 ++0x1.522c04ef79576p-2 ++-0x1.585b113866998p935 ++0x1.6572d38c4566bp324 ++-0x1.01c407a78269bp-2 ++0x1.c667704230cf4p119 ++-0x1.c26e3294a15b7p609 ++0x1.398957506d8ebp0 ++0x1.e0b6730234a2ap12 ++0x1.5f55247076d4cp886 ++0x1.91a7e436c803ap85 ++-0x1.b405442f13b0dp-1 ++-0x1.89197589af46bp12 ++0x1.b689827fcf442p0 ++0x1.e511f183f3761p38 ++0x1.8bbf8044036dap-21 ++0x1.a6f9739fb14bdp715 ++-0x1.e0b26088aa820p260 ++0x1.7ba5e059f9881p23 ++0x1.fe66a754c0fd2p25 ++0x1.6c6a32bf8575ep-1 ++0x1.eaaca56a33a78p-1 ++0x1.9015009c0d6f2p359 ++-0x1.6cb7f41a689d7p511 ++0x1.aacc71d5bacbdp95 ++0x1.29e4c477b18a8p36 ++-0x1.ef83a0fc79d14p-3 ++0x1.32e2c2a316640p21 ++0x1.ec0675ef5c64dp18 ++-0x1.dbfc56a89d5c5p-17 ++-0x1.cbf486a4cadf0p927 ++0x1.07936134292b1p8 ++0x1.b151d4537a8d3p192 ++0x1.67efc2818dc90p323 ++-0x1.9cd295f2ce662p16 ++-0x1.821820585b1efp0 ++-0x1.e5de90be0509ap-6 ++0x1.d26fa3ccb06acp-1 ++0x1.0f26767f7e19ep9 ++0x1.9732e3a149dcfp2 ++-0x1.738c626bee029p22 ++0x1.ebc397d721a35p-10 ++0x1.628a90978e6e9p313 ++-0x1.7e31f7114dea8p15 ++0x1.79cc77a2bab11p10 ++0x1.2983d646690f3p588 ++-0x1.5eafc23db65cbp32 ++0x1.8942a552364e4p-2 ++0x1.e3ccf6eb08b48p25 ++0x1.7880661b82c3cp13 ++-0x1.960bb106193b4p3 ++0x1.512562f1663f3p-9 ++0x1.d73bb4b91b054p-1 ++0x1.da72a35c1109ap0 ++0x1.b7ab22fa83736p844 ++0x1.d13c003e58e8fp-1 ++-0x1.ad34c4a774bafp-2 ++0x1.215ee10881727p787 ++0x1.94e87183d84f5p-2 ++0x1.e67e95b1bfec2p5 ++-0x1.13b3721046567p433 ++-0x1.3496b371b7047p-20 ++0x1.a20233bcdcf1ep478 ++-0x1.8b2493a06a535p-1 ++0x1.a84f74a1a6298p15 ++0x1.20bc40cdba97ep-2 ++0x1.d77ea17713c46p99 ++-0x1.6206e0239f1adp43 ++-0x1.d3e2555f60ea3p-1 ++0x1.aac214994c1dap-23 ++0x1.b16e41716b9a4p1012 ++-0x1.bff49465bba1fp-5 ++0x1.3922b5075dd33p-23 ++-0x1.826d62aa4fc16p1 ++0x1.c787f3022d540p17 ++0x1.0e8f744f79d08p8 ++0x1.8224508569db1p4 ++0x1.3551056491610p39 ++-0x1.d97a27aa772f1p24 ++-0x1.080464f37e4f9p-1 ++-0x1.ef7ec170b1cc7p-14 ++-0x1.56a34672be8a3p0 ++0x1.568ce0836dad1p0 ++0x1.68e4d1349211cp0 ++-0x1.cdd5647152dccp0 ++-0x1.df937407c9261p-2 ++0x1.dbedf324f26c8p42 ++0x1.e61e938251d5bp-26 ++0x1.27aa70e4f9180p10 ++-0x1.2beb30d17d09fp11 ++0x1.fc2f613c865cfp612 ++-0x1.18a437c0c0337p989 ++0x1.497f7636bc81ep5 ++0x1.eefc152fee26ap-1 ++0x1.e01e636b8c0e8p13 ++0x1.641203e8ff6c4p10 ++0x1.7cd5f6dc77b45p-1 ++-0x1.a8c463d05a384p-18 ++-0x1.939935c60bc6dp32 ++-0x1.112004f389f0bp26 ++-0x1.e3dd8706dbb77p-2 ++-0x1.06660332f032dp0 ++-0x1.2df664008c6b8p946 ++-0x1.db05f1c0a68afp-2 ++-0x1.c148b6e43e444p8 ++-0x1.5de1353d73697p4 ++0x1.66fdf2d6b465bp9 ++-0x1.62c167e6e4b10p23 ++0x1.9eaa3110cddb2p86 ++0x1.88c261dc17162p11 ++0x1.1309b29673b81p-2 ++-0x1.2bb1f6b417cb9p30 ++0x1.087814c0ec7fap624 ++-0x1.e0c945389d582p8 ++0x1.7943a676a5441p24 ++-0x1.320c04ceb42ffp-21 ++0x1.d909361bb3862p45 ++0x1.3b65434a04806p23 ++-0x1.afd001facc7b1p-2 ++0x1.0b19c619a640ep-10 ++0x1.0957e03dfef54p38 ++0x1.24e94466217eap-8 ++0x1.63119435659e9p0 ++0x1.3f3e90058cdf8p32 ++0x1.9c5120fa60573p-20 ++0x1.4582f3a60e340p46 ++-0x1.909e3202d81a4p4 ++-0x1.0437d4ebf5610p-9 ++0x1.6539d39ccc38ap568 ++-0x1.41a5b0bbfb9bcp6 ++0x1.7e8bb37871e1cp19 ++-0x1.ad8ad1bbd74e5p18 ++0x1.de4de49f18b51p25 ++0x1.826ba7055be5dp0 ++-0x1.ef63f73ede073p13 ++0x1.3beb24857264ap-16 ++-0x1.6f4b015987fdfp13 ++-0x1.a1c3d13b1c1efp38 ++0x1.e54744ab0b987p-18 ++-0x1.30d3903b0fef8p0 ++0x1.221cb2580e640p-2 ++-0x1.3686a2b46f392p20 ++-0x1.953a23666db27p23 ++-0x1.0e27f512156c1p41 ++0x1.8aeac1aea8951p507 ++0x1.859272081065cp24 ++-0x1.1421f542a190ap22 ++-0x1.13f9b5260c5c6p1 ++0x1.26e7e7db18108p-1 ++-0x1.5c5fa31066b6fp24 ++-0x1.f561528837944p47 ++-0x1.296430993cfacp6 ++-0x1.2d27a23459f85p12 ++-0x1.532a550f8785ap8 ++-0x1.97da24484f8b4p1002 ++-0x1.6dd96318f0afdp-20 ++0x1.c22a23981d826p880 ++-0x1.bb6595d952b59p-9 ++0x1.9d303417d2283p-8 ++0x1.2fad41ad10377p3 ++0x1.0fa034dfdbfacp97 ++0x1.ac9f668620937p201 ++-0x1.0926c03aab751p431 ++-0x1.1122f714c565bp-24 ++0x1.85b8127865850p194 ++-0x1.70a2c17f946dcp41 ++-0x1.41fda46167f73p23 ++-0x1.25ad23c987dc1p11 ++-0x1.8b7901317fc7dp-14 ++0x1.3a39378fff8f4p7 ++-0x1.27d681a249f5cp30 ++0x1.cb79b21c83a00p65 ++0x1.6682c62f9ee17p544 ++0x1.9722e5ad48a83p0 ++-0x1.6877c6503e926p-11 ++0x1.60bdc18e9615ap38 ++0x1.71209215d4d4dp166 ++0x1.3b3083c9e79aep29 ++0x1.226c15a2738fbp20 ++-0x1.850e61bf2adc0p46 ++0x1.cf59c1a465033p4 ++-0x1.f28f75a1e366ap-2 ++-0x1.ddfe107392c51p752 ++0x1.ad9a867a0f388p7 ++0x1.c190d52d7d990p-2 ++0x1.40f39083588dcp0 ++-0x1.72a507fb05048p23 ++-0x1.cb11020748b01p915 ++0x1.1af08708ba5cap15 ++-0x1.627c101f73406p530 ++0x1.689206a8915abp318 ++-0x1.cb6761b5dea79p634 ++0x1.c2e0d162c326cp404 ++-0x1.718305de4f896p17 ++-0x1.e93fc085fd701p-2 ++0x1.11ece54e13460p5 ++0x1.8727425cf3cd8p24 ++-0x1.b42da698277c1p45 ++-0x1.6596f74580a61p749 ++0x1.5527e4a40304ap13 ++0x1.e44661960fc6ep861 ++-0x1.f172b70a99607p-1 ++-0x1.0551459f69b31p1 ++0x1.fe53e03d64618p-23 ++-0x1.32fa65f2e7445p-18 ++0x1.d186c41b4314ep15 ++0x1.554651879adf5p21 ++0x1.11ffd2256e002p-2 ++0x1.af32d40afb747p25 ++0x1.7f07047f01402p46 ++-0x1.7d6eb6b631adep325 ++0x1.368db60e46f81p0 ++-0x1.7dff648d5243bp2 ++-0x1.8c2ec01e5fedcp0 ++0x1.2a285014439ffp25 ++0x1.97d7a7e9d1488p267 ++-0x1.aa7e802105b2bp3 ++0x1.71f44577ef0e0p30 ++-0x1.c348a7a1cf0cap-5 ++-0x1.e3c124e128e3cp513 ++0x1.6382e3388fe7ep0 ++-0x1.535d11123ca67p-1 ++0x1.cb8544daa77adp232 ++0x1.c711c1bebf09bp-2 ++-0x1.5af6028fa5346p944 ++-0x1.96048340a5514p22 ++0x1.f72ff33637c6bp22 ++0x1.19acb5b9c1f96p849 ++0x1.2812a646b9299p-1 ++0x1.75f772acd0271p614 ++-0x1.182e332b82935p951 ++-0x1.20dda567e407ap389 ++-0x1.aabc54e09bf9fp5 ++0x1.e6b50061378a4p40 ++0x1.2f68852bc70d7p0 ++-0x1.823b97f7229a4p-15 ++0x1.c4e326b2e2dbfp21 ++0x1.7e4f6774b8a2ep-1 ++0x1.1ab614657417dp98 ++0x1.f3e634c32e8b7p3 ++0x1.e9e836b498598p-9 ++-0x1.1c64235980810p10 ++-0x1.aafc1207ad818p-2 ++0x1.9f3d233a5c111p-5 ++0x1.7999c2260403cp31 ++-0x1.f30211be994f6p24 ++-0x1.0c43722a9bbbep-6 ++0x1.930ee35921be4p-1 ++-0x1.5d6213b5f1254p22 ++-0x1.7d22615123c54p1 ++0x1.83b3112e046efp46 ++0x1.f41974f304112p603 ++-0x1.3a66e15aa8fe4p20 ++0x1.a13001aba9f6bp852 ++0x1.412aa2c7532c4p-14 ++-0x1.c81352e8264c2p23 ++-0x1.591d02625a9b5p22 ++-0x1.c41166b01542dp20 ++-0x1.5131d3c932102p2 ++0x1.3e0812627d769p0 ++-0x1.42230381aec5ep24 ++-0x1.f2b3323fb84d7p10 ++0x1.eb6774d11a107p309 ++0x1.66bfe7efc9981p413 ++0x1.7393b483ef4c9p18 ++0x1.1c23a0ccf4a1fp5 ++0x1.f726a29f3c7b0p-1 ++0x1.56a6c4b8f4c03p0 ++-0x1.d81fc1be44ccap0 ++0x1.acb2a2c71b283p0 ++-0x1.fc027711d2a95p42 ++0x1.fc337688991dap0 ++0x1.199a1661ea960p13 ++-0x1.3b86d2611c320p27 ++-0x1.61c2d21282edfp26 ++-0x1.64e50317eefc2p785 ++0x1.def315b3fe290p780 ++0x1.cf1e17c160022p-18 ++-0x1.38eda7d8530bep24 ++-0x1.808c94ffe4d91p-1 ++0x1.4610f3e719abep7 ++-0x1.1e9381dc4ec70p-11 ++0x1.43cba0bf131a0p13 ++-0x1.dc42b575ed4d3p1013 ++-0x1.6ed8149cc7bc6p-1 ++0x1.4a60f7c0d69e4p13 ++-0x1.538585ddb4696p23 ++-0x1.0864d6a255b66p19 ++0x1.fbb200de88ab3p20 ++0x1.0121e4f96ae33p19 ++0x1.d249f66c94efap-26 ++0x1.f22cd10757b66p-17 ++-0x1.dc648333c448cp28 ++-0x1.bd93661102aabp6 ++0x1.111ac7383f502p24 ++-0x1.2b702455abc46p3 ++-0x1.0a6586568a0d4p0 ++-0x1.66ac624962909p45 ++0x1.28169042cc3a5p12 ++0x1.f66474e488ef9p22 ++-0x1.9537062a41765p14 ++0x1.c121e1e9723f6p-20 ++-0x1.9f26e345e6c69p45 ++-0x1.c04f565228f00p23 ++-0x1.3f2a165966b01p14 ++0x1.e49031acb773fp4 ++0x1.45d4862b31a5dp14 ++0x1.d3f8a349399cdp651 ++-0x1.95bf4422cf479p21 ++-0x1.5e80e7683c406p38 ++0x1.cf9e839f22581p-13 ++-0x1.bcbd040073ae7p42 ++0x1.0dbf80c846440p1 ++0x1.b967a548e9278p25 ++-0x1.09f7d6e2794a9p36 ++0x1.f52b73cf4435bp957 ++-0x1.7bc586cbd1a46p12 ++0x1.ec2ca0ba0169fp956 ++0x1.7b4ec7011ab15p-14 ++0x1.9590d2642b855p2 ++-0x1.1792b47e89a3ep-2 ++0x1.096e8355c6a33p387 ++-0x1.0309a65ffc7d0p389 ++0x1.bbe450a514bbbp23 ++-0x1.c2a0c154c1ea8p22 ++0x1.8c8840b2a87e4p-1 ++0x1.bc053744b4d71p525 ++-0x1.0bad1023cf416p26 ++0x1.6c74f2f70249fp-2 ++-0x1.df29e2bbca95ep-20 ++0x1.541ef0a6c96dap25 ++0x1.228634785edb5p959 ++-0x1.2e5246cb79ea9p-2 ++-0x1.e27d61cf42df9p-1 ++0x1.92d2218c0d244p-3 ++-0x1.28dab0f8375dbp19 ++-0x1.6a69c59ed57f1p24 ++0x1.bc5c338bdaad2p9 ++0x1.1b86b1509d103p-2 ++0x1.96f70720b437fp-1 ++0x1.ec2dd7a3ff01bp11 ++0x1.6d674707f674dp24 ++0x1.8ccc84df77093p467 ++-0x1.fce2734699b46p131 ++0x1.78c0233339f48p-24 ++-0x1.10d36236e14f4p-22 ++0x1.0e5087309073ap0 ++-0x1.964d52d42dd8bp184 ++0x1.ae23e780b9411p-21 ++-0x1.54204161ed466p836 ++-0x1.954a4649af744p41 ++0x1.bdbbb7d31f152p-1 ++-0x1.56e0943fe5998p-22 ++-0x1.36a8e4332551dp927 ++0x1.020b52f89937ap23 ++0x1.d7a20332bdd63p11 ++0x1.3b0dd5979b6adp-2 ++0x1.c0e8434f16674p-10 ++0x1.87e7f538c365dp25 ++0x1.d3e821a1bc5a8p7 ++-0x1.96b7d456e788bp25 ++-0x1.3ad9e1e70f896p943 ++0x1.53ee76bc80972p-3 ++0x1.96fa10c429e87p-9 ++-0x1.8056956d2cfadp24 ++0x1.c741b2b122791p6 ++0x1.ba3a96c89b1b3p166 ++-0x1.83990344b014bp766 ++-0x1.3e571252648bap15 ++-0x1.3bb1972c795a9p9 ++0x1.adb4d3351c887p43 ++-0x1.ff802660bf9a5p0 ++0x1.6e469006517f7p47 ++-0x1.900d500fb6d49p26 ++-0x1.c76ab659c3834p25 ++0x1.e521b219c20dbp-7 ++0x1.921a034787ed3p10 ++0x1.e995010c15b21p8 ++0x1.8c2b466dd9540p47 ++-0x1.04c05174f23b9p12 ++-0x1.93b6b3adbef7bp392 ++0x1.c56de7617c8d9p-1 ++0x1.5160533d35ef7p19 ++0x1.e130936be6602p-1 ++-0x1.739414d989802p16 ++0x1.31b1d2c632ab2p-1 ++-0x1.c31d635f38768p22 ++0x1.bbb4f5b78c9c5p32 ++-0x1.e445c444330bcp388 ++-0x1.8c4be45fbe950p-1 ++-0x1.837291c50b911p-2 ++0x1.a8e1958326948p22 ++0x1.3489902ffcd05p89 ++0x1.3937a140c8ebdp102 ++0x1.6e18d2c91a6ddp-1 ++-0x1.ca05a2df5e759p-7 ++0x1.2cfef3c22cd0bp130 ++-0x1.4cf717964a9bfp7 ++0x1.54579498874b1p24 ++0x1.c107738f9b691p12 ++0x1.7bff9229e04d2p-2 ++-0x1.d03de2576ff0fp3 ++0x1.5f7b7021a52d5p45 ++-0x1.1942d4250cc59p402 ++-0x1.e0e3e37700163p34 ++0x1.e9b38334f06d3p655 ++-0x1.58ee600866d4ep189 ++0x1.5ef6e7cc455f0p289 ++-0x1.2c28461a00b92p4 ++0x1.10d365a1e8d8ap21 ++0x1.468d92dd56b89p7 ++-0x1.6abfb0ce30badp23 ++-0x1.5f89a14d0efd0p-2 ++0x1.15d3e3cd4669ep539 ++0x1.4713f780aa584p-2 ++0x1.3b21b2c71e99bp26 ++-0x1.48b56671059e1p-11 ++0x1.1bc1d481ce9dbp69 ++-0x1.b1ae27d09baa0p-2 ++0x1.33d7670cbf8a4p8 ++-0x1.6ac4255cad8dfp-8 ++0x1.62dab6f6b3009p34 ++0x1.425c721226be2p442 ++-0x1.275535869b097p9 ++0x1.ecb7c62bea980p0 ++0x1.bbcc660f5e0a8p15 ++-0x1.1f9e74b3579c2p0 ++0x1.fd7275569c113p36 ++0x1.dea7467ccaa26p-2 ++0x1.a791b0a57606ap24 ++-0x1.82cad3f8be955p22 ++-0x1.4157360076d26p-1 ++0x1.c97d10ced4329p0 ++-0x1.932787d6383efp2 ++-0x1.c01812d3d51a9p-2 ++-0x1.1c84d6fec1316p609 ++-0x1.0f01559dc82d6p-25 ++0x1.00f5458920f43p4 ++-0x1.43719306d3215p1 ++0x1.c656d370d0ffbp354 ++0x1.0e11c40e388b9p26 ++-0x1.290134e6aff9cp35 ++0x1.1040550bddeb0p-9 ++0x1.9a7781da48013p4 ++-0x1.0a9e5772e3233p-8 ++-0x1.0d91b0bf21e8ap-1 ++0x1.948055d3de56dp27 ++-0x1.3e88a1b46969ep40 ++0x1.bbcbb014c46c2p10 ++0x1.e9d0279c4b0a1p20 ++-0x1.b6238112f8687p398 ++-0x1.e242654542bebp-11 ++0x1.a762d2287829dp988 ++0x1.9bd01053b4464p8 ++-0x1.f8cd636f4e283p837 ++0x1.aa1c81bd7973bp47 ++0x1.970f71af84cc4p21 ++-0x1.aeb236cb2b17ep431 ++-0x1.93c0e6c9d5101p4 ++0x1.6a8314d7ab46ep14 ++-0x1.dff0340ed9b5fp23 ++-0x1.20d4206297414p0 ++-0x1.bfe4e19c4431ep16 ++-0x1.e364e69ce1acbp-2 ++0x1.da3807b2bef2cp5 ++0x1.7d5bf5fdf17d8p3 ++0x1.403cb40fa6ed7p-2 ++-0x1.e5eb014cd4696p-2 ++-0x1.12c867efadb58p-1 ++-0x1.17b9111cd2dedp47 ++0x1.5fbd06f46a166p20 ++0x1.3fa931008c3ddp12 ++-0x1.671603ed400c7p39 ++-0x1.f3a3f55752ffap381 ++-0x1.06d0b08cc2f3ap19 ++-0x1.20f970c57de9fp405 ++0x1.26bca4618e8c6p450 ++-0x1.e84bc67cbae25p21 ++-0x1.847b219c71e8ap-19 ++0x1.6485a7df487c2p-5 ++0x1.79e9b12eaade0p0 ++-0x1.ea3177ec5e17ap1 ++0x1.9061b7ce1ba79p-11 ++0x1.aabb7153d3d41p0 ++-0x1.cd05349e06fb9p453 ++-0x1.387bd166fd5c6p6 ++-0x1.5b7dc65df367ap16 ++-0x1.f014b7e23834fp0 ++0x1.be4041821c70ap5 ++-0x1.bb11127a3673ep-2 ++-0x1.69b7a36b6d3a1p44 ++-0x1.d182b403ec2d6p435 ++-0x1.fa162577a34bfp356 ++0x1.837c5378cbac9p1 ++0x1.f6aa460693a38p25 ++-0x1.30e5c6ba6d18bp0 ++0x1.f26723819b91ap-1 ++-0x1.a81dc27444846p14 ++0x1.3ec314460be45p-21 ++-0x1.a92ed0de504fdp25 ++0x1.026645ce3b546p5 ++-0x1.d783568871061p-20 ++-0x1.94e5527db2c75p27 ++-0x1.67f7371aa18ffp23 ++0x1.d3c365bbdea80p4 ++-0x1.9e1a5225f6428p211 ++-0x1.258ad3e2c8fa6p28 ++0x1.3136354b964fdp-2 ++-0x1.96d4f40d26403p10 ++0x1.095bd56107f24p5 ++0x1.9fce92abc33f3p19 ++-0x1.ce7553d981cd1p-1 ++-0x1.e601531fa6475p22 ++-0x1.6ab42170809bcp2 ++-0x1.b251d2575cac5p-18 ++-0x1.4c41d161ca889p-20 ++-0x1.1072d2e8dc7acp42 ++-0x1.59f0d7ec9545cp27 ++0x1.60e971fce2225p-1 ++-0x1.cae6a23b7284cp7 ++0x1.65457653e73cep10 ++0x1.e5d2c1b0f8814p-6 ++-0x1.2379c4cafa4c7p2 ++-0x1.a10a970cc1572p1023 ++-0x1.ca2f3652ecb2bp0 ++0x1.eef9a3fc5f760p19 ++-0x1.e34471bd585d3p0 ++0x1.c01c5448e8150p12 ++-0x1.bc8e94cc562d0p-1 ++-0x1.df2934c9a3eb9p-19 ++0x1.932107520d49bp0 ++-0x1.664d64c583dc0p26 ++-0x1.df503401587dep23 ++0x1.ff26b5f73eb26p0 ++0x1.223f61fd260f6p15 ++-0x1.388ca56b6eb09p-9 ++0x1.c843f6cbf0218p0 ++-0x1.5b55b55f69e3dp12 ++-0x1.55d2b6c9ccac1p-17 ++0x1.8fab8647c1b20p25 ++-0x1.c39c1323c517cp26 ++0x1.9b8cb5c150892p567 ++-0x1.075482bdba47ap11 ++-0x1.9eb9c5f4e9bfep-12 ++0x1.9301916eb43c8p-2 ++-0x1.8b05471774a4dp36 ++0x1.0cd1f741bc013p-1 ++-0x1.4dcce7d816178p952 ++0x1.5bb4d5a081463p313 ++-0x1.512e913b3aec4p43 ++-0x1.4363149bdc7b9p13 ++-0x1.363bc2214c09bp1 ++0x1.773a72172fd88p-1 ++0x1.585f6579ec411p13 ++0x1.d5f6f68d24a76p-2 ++0x1.69fd3358c8b0ap-23 ++-0x1.a4b6f1189e5dbp6 ++0x1.0de1b1a9735c3p-2 ++-0x1.dce0808027bddp22 ++0x1.0e7ce079de804p-8 ++0x1.9f5a738b4d6eep-2 ++-0x1.8462d5daae41ap11 ++-0x1.68674675a393bp24 ++-0x1.e10d4227c6195p-2 ++0x1.9efc93f7ae5e0p856 ++0x1.b21722c3599a5p998 ++-0x1.9230777d2e819p2 ++-0x1.234b04e484f07p-1 ++0x1.f0a83169e44f8p21 ++-0x1.551ab52bbf836p10 ++-0x1.954191e744c98p778 ++0x1.2b5df36e4639ap687 ++0x1.6febe142407c9p-1 ++0x1.b0a7d19a8a36bp14 ++-0x1.283335399df8ap582 ++-0x1.ff008550804a8p21 ++-0x1.7b3e67a391ce4p23 ++0x1.1d85929407a6dp24 ++0x1.5da834d23e5a3p447 ++-0x1.4692871c1db20p8 ++-0x1.afc295fcdbcb4p12 ++-0x1.9f23a78c18795p-1 ++0x1.6080b280acfddp17 ++-0x1.2e5266ef4d581p26 ++-0x1.24b7b38d26da1p257 ++-0x1.c53977510263cp4 ++-0x1.fb19403b773a8p-1 ++-0x1.244143543f68cp-9 ++-0x1.de8675a5953d7p-10 ++-0x1.127a02301391cp25 ++-0x1.e81cd0632e8f1p-6 ++-0x1.8f0832d2d654fp23 ++0x1.8d0592c41d57fp-1 ++-0x1.5bb7a2c85295ap829 ++0x1.5d0f05a6628d0p33 ++0x1.0fa8504e8dc88p26 ++0x1.efa587af6be2ep1 ++0x1.0e33b1aa5c9bap7 ++0x1.2910965c221adp24 ++0x1.7117912e9cc38p-19 ++-0x1.14f1f66cce91bp309 ++0x1.253d965df51d6p-2 ++0x1.c129f2121f395p8 ++0x1.725be7dae8d66p19 ++-0x1.93edb5e7fb6cfp5 ++0x1.5018651cc719fp-1 ++-0x1.cb02c64f918bfp46 ++-0x1.f46340a22bb84p21 ++0x1.8f68f646ec9f2p43 ++-0x1.6d9a331135c58p25 ++-0x1.170ac534d5637p44 ++0x1.a4a742eb49b6dp25 ++-0x1.7020056638407p607 ++0x1.48deb525372e9p-1 ++-0x1.33e8601f36771p-1 ++0x1.ec3874c4618a1p96 ++0x1.fc37d39694eb5p39 ++-0x1.ff4071cb454c4p10 ++-0x1.ed9d16ccafc18p730 ++0x1.7745c1d7844b9p-2 ++0x1.577ea4e34c3b6p437 ++-0x1.3207305c1a799p0 ++0x1.0917100431cc1p-21 ++0x1.2c183093fa529p603 ++-0x1.2c5d51ba70531p14 ++0x1.608c1509bfa83p148 ++-0x1.f839c173e805dp14 ++-0x1.98e12705bc31ep995 ++0x1.3a50f5332c5c9p123 ++0x1.a3c53078bbb14p14 ++0x1.7774161aba4aep38 ++0x1.f77d9613e7c1dp-1 ++0x1.087e662e1679bp0 ++-0x1.f6a5441a51460p9 ++-0x1.943ec15bcfd0fp-24 ++0x1.ca08a5623522dp836 ++-0x1.b94390a4ec03bp21 ++0x1.f028210e4643ep86 ++-0x1.a08b00ea57565p0 ++-0x1.d32a26194266ep33 ++0x1.f9c00577e6bdap14 ++0x1.2aa9d7f90174dp-2 ++-0x1.a73675bf09391p24 ++0x1.8e42320f970aap-5 ++-0x1.456e713f4c160p26 ++0x1.0a7c735c32ef7p370 ++-0x1.599d856aa3f83p126 ++-0x1.a2aeb2b04f0a4p-1 ++0x1.1b9611214c8efp38 ++0x1.b79443495fae2p555 ++0x1.bb96e62f437c0p449 ++-0x1.d8628272405eep331 ++0x1.3e7d077075b34p3 ++0x1.f02863b1964cfp-18 ++0x1.bc64148bb2bcbp963 ++-0x1.abbfa06274d7ep-2 ++0x1.4124c7371ae20p-12 ++0x1.01bea1cd85371p-2 ++-0x1.86f4c7d558b23p365 ++-0x1.2d7045098fc2bp6 ++0x1.12cdd38e1f1fcp40 ++-0x1.cf87f031ba281p-1 ++0x1.900f77d2e17b8p-3 ++-0x1.780482ed78ed2p0 ++-0x1.c0b7e330a1569p622 ++0x1.e964c06440769p21 ++-0x1.0575c6582a7e8p219 ++0x1.014cb3689dba2p364 ++0x1.757270c3f8b5ep6 ++0x1.f4b96482cda61p25 ++0x1.b56110293d311p31 ++0x1.c319d66d3a8c0p-15 ++0x1.42d33307c41bdp14 ++0x1.ea5575e42d23ap17 ++-0x1.a6e025cb863c7p0 ++0x1.cc5d70ede499dp27 ++0x1.e359a47239531p0 ++-0x1.d8d93754b2b11p29 ++-0x1.8ca7b5053585fp1000 ++0x1.d9d5310c25ca5p-1 ++0x1.8d9430af4511fp961 ++-0x1.66d8a6638d99bp512 ++0x1.b41ad75a8801bp9 ++-0x1.6a1f971fa26b6p-14 ++0x1.ab5c81ae14fe6p-1 ++0x1.1f8577d10b9c5p971 ++0x1.cdd440ab2d669p9 ++0x1.4951f5844ad5ep4 ++0x1.ec76109115f59p10 ++-0x1.5e9a80ad92f6cp0 ++0x1.a0e386b6ccb40p253 ++-0x1.987135136f652p-15 ++-0x1.4972078157c11p18 ++0x1.71af54cd3edcbp-22 ++0x1.2cb9c16feca61p4 ++-0x1.881612ba1bac0p23 ++-0x1.a1bc462181294p6 ++0x1.59e7f20d1a85ap20 ++0x1.6efbf694bc721p795 ++-0x1.194d02c8696c5p1 ++-0x1.c29f770300210p40 ++-0x1.465474694864dp5 ++-0x1.be79c39a626abp-2 ++0x1.a84f059ce3c46p0 ++0x1.7aa4e54b620c4p8 ++0x1.3da7c7bc6677fp-8 ++0x1.f69225fe61ad2p28 ++-0x1.64de33982551ap-1 ++-0x1.914f65e648df9p27 ++0x1.8a6b04c753621p4 ++0x1.9bbe37ce952f4p151 ++-0x1.dde326d0cc835p989 ++0x1.98c0d3cdf20d3p21 ++-0x1.284c014de6027p-7 ++0x1.88d835cac3b12p0 ++-0x1.b6db809206af5p2 ++-0x1.e565b22e34e93p32 ++0x1.749c6053c4d99p27 ++-0x1.117985fc29082p-3 ++-0x1.4aea6753378aep18 ++0x1.e0dab03922291p582 ++0x1.6215370395220p-11 ++0x1.c6fd922332304p23 ++0x1.634a06577ffe6p14 ++0x1.7a0794ef5f1b2p-17 ++0x1.12abd5b589964p-2 ++-0x1.7dc825820bbc5p-1 ++0x1.8dac9227f7521p19 ++-0x1.152a74beb6671p0 ++0x1.91c8274862218p-1 ++0x1.6b46c437366a9p2 ++0x1.91be1642b829cp-4 ++-0x1.9bbe55e1e875bp0 ++0x1.cf53d39670350p30 ++-0x1.6106a19021fd0p25 ++0x1.b4f8156fc19c5p951 ++0x1.e681709062081p40 ++-0x1.d940928c3f987p2 ++0x1.691480d2f533ap737 ++-0x1.85c093aaae1ecp900 ++-0x1.5affb35c6bf7fp26 ++-0x1.dc84061a932cfp17 ++0x1.ee1e42315879ep25 ++0x1.678d23f005c62p764 ++-0x1.ec9774244565cp535 ++-0x1.9271662cb2093p16 ++-0x1.f83131ca71ccdp-17 ++0x1.ca7930f286682p13 ++0x1.a7255589c90d3p-11 ++0x1.53ac82fd92bd9p14 ++0x1.a47a64b427441p43 ++-0x1.3a1722f39b3dep25 ++-0x1.9f33140b8a810p312 ++0x1.d03d52df1c72bp688 ++-0x1.1c6fc748fa1e5p43 ++0x1.0b3414a9938eep2 ++0x1.dd0da78a5d1d8p633 ++-0x1.4c4580f79db55p36 ++-0x1.92c9b7d98ad52p16 ++0x1.33a582ad335b4p8 ++0x1.8412d4cdc4b13p2 ++-0x1.6d70c0e74843fp-1 ++-0x1.094ee77340bdep25 ++0x1.29f1d2a5785f4p1014 ++-0x1.d15b11be3fe7bp7 ++0x1.58a4143823bb5p291 ++0x1.902405ab3dbd7p-12 ++-0x1.927bb2a52a3a0p22 ++0x1.72dfe5a32fb2bp26 ++-0x1.84fd5529c70e0p-2 ++-0x1.309e3082bb94bp3 ++0x1.1f345701b89f5p1 ++0x1.7dad63072bcb5p20 ++-0x1.ade4901d73471p99 ++-0x1.c22aa72bdcd7cp-24 ++-0x1.f59845faa6563p18 ++-0x1.ad6e102c9bc28p18 ++0x1.0fb34286e7064p0 ++0x1.94a631bd3477bp-13 ++0x1.210a974f1dccfp10 ++-0x1.2e4bb56104384p0 ++-0x1.baefd380be2d4p9 ++0x1.ed1987f86a22ap36 ++0x1.774a94a24ef7fp21 ++-0x1.2df7e52525ce2p23 ++-0x1.b56ff18142c84p244 ++0x1.5cf265da00a46p0 ++0x1.2301239fc121cp8 ++0x1.422ed28d49c39p695 ++0x1.737c10c4444c9p-15 ++0x1.2d1c455042173p729 ++-0x1.7ab92567a3677p47 ++-0x1.a93bc46c3f91cp-1 ++0x1.a84da7b1e13e8p764 ++0x1.01b0716556196p7 ++0x1.9279d0b582281p52 ++0x1.87062189adde4p283 ++0x1.1b0bf0a2108b2p36 ++-0x1.5eb4d47d17207p46 ++-0x1.2d48f70490ef9p41 ++0x1.02a927e62e4ccp229 ++0x1.64ece5d8585f1p-10 ++0x1.f348233a76acap526 ++0x1.18ae26a877ec0p-2 ++0x1.f29784bc68275p47 ++0x1.6001f45f7971bp12 ++0x1.a22b2698b25fap352 ++-0x1.e03a853c027d9p29 ++-0x1.a95c30e27b155p978 ++0x1.54ba70dc907bbp8 ++0x1.2973942fbefc1p-2 ++-0x1.d880a44876022p-2 ++-0x1.5714a530cbfe6p-8 ++-0x1.cafc377dc6968p152 ++-0x1.d75a05f2b42e7p32 ++0x1.457431b89e9fap-1 ++-0x1.1459601867581p0 ++0x1.d012824c3e9bdp-2 ++0x1.cba0151869ee4p-15 ++-0x1.28514551cf3c2p41 ++0x1.1a8f5790ecb1bp-2 ++-0x1.e3ca859ef8af9p-20 ++0x1.61d8824c0577cp17 ++0x1.0dbc60263979ap0 ++0x1.13ae60bcf616cp11 ++0x1.2b64749c50115p1 ++-0x1.d4d6b06398109p6 ++0x1.62482046dcfa3p-10 ++-0x1.144d5089806e4p0 ++-0x1.2a84e1516c3b9p-3 ++0x1.a4a9c383e277ep15 ++-0x1.b6a4a184f369cp14 ++0x1.0934a50d726c4p-2 ++0x1.9fac46d3bac78p-2 ++-0x1.0f3d41801c34ap830 ++-0x1.ddf6e4b3ae58dp14 ++-0x1.f8c654fd8faf6p578 ++-0x1.83e3d444fb99cp9 ++-0x1.29462350fde9fp18 ++0x1.c2d23298201f5p32 ++0x1.38dbe21a97dc9p765 ++0x1.b0ff117ae0c79p4 ++-0x1.936ba48a606fep-8 ++-0x1.5ed053069752fp9 ++0x1.73c4c4bf7d0eep5 ++-0x1.e7005748bed43p-1 ++-0x1.5f9f348eb0d61p-14 ++-0x1.fd0626e287666p-10 ++0x1.272f865f58d3fp1 ++0x1.89aa61b27b617p19 ++0x1.d3c0a3db910c4p703 ++-0x1.28c846d807abfp17 ++-0x1.ff57f267de4afp650 ++0x1.2f37531444d22p-1 ++0x1.295914905d114p-2 ++-0x1.a2cc76af10462p-2 ++-0x1.7e2a733986885p-12 ++-0x1.b026f4918478bp581 ++-0x1.940790b8f17d3p-17 ++0x1.0bea736dfa349p20 ++0x1.4c5ab26cb0893p17 ++0x1.cb8c42b26858cp4 ++-0x1.65eb419220961p8 ++-0x1.49628342f28b6p25 ++-0x1.0b70b20ac9274p-17 ++0x1.22d8177d1ee00p1 ++-0x1.df4a5041f3718p-24 ++-0x1.ad8cf7fdfad7fp-1 ++0x1.a24842645f612p5 ++0x1.36eac1a4ee651p13 ++0x1.f72fc2f8c5b6cp0 ++0x1.60901647c0c3bp18 ++0x1.983594e2c3028p2 ++-0x1.ae2e63b37144dp-2 ++0x1.63d9f29bc831cp3 ++-0x1.3f91157ed1b34p30 ++-0x1.f6a1a206c06cfp791 ++0x1.e5ba950e3dd7dp9 ++0x1.3db5f00ed6a5bp-2 ++-0x1.e758d3fa84fb9p14 ++0x1.26a215493eb73p-1 ++-0x1.9fbdd53b4633ap25 ++0x1.c6bd362b83b42p28 ++0x1.a57c06d6537a5p-3 ++-0x1.4d5ac675483eap-1 ++0x1.1b5483494381dp10 ++-0x1.a5e0731359db6p-17 ++0x1.d3285119915d0p-1 ++-0x1.9be71114e21b1p18 ++-0x1.ea8b7689adf04p125 ++0x1.78fea6e183fbep3 ++0x1.f0cf91eb94836p278 ++-0x1.3306524c34930p191 ++-0x1.4a2f071f69873p17 ++-0x1.ff2122f77561ap-2 ++0x1.511377046730fp229 ++0x1.14d73581dc669p976 ++-0x1.eb7e33dcfee72p35 ++-0x1.f4dbe5a5ff877p6 ++-0x1.d825938e1c238p6 ++0x1.5f0be541c74cap-6 ++0x1.079e24e0494c1p18 ++-0x1.34a8d3f3b42a6p901 ++0x1.34dc83fb0c6e7p-2 ++0x1.cf75150d00db1p0 ++-0x1.f031f0e0356b2p882 ++0x1.6b7973cd0aa93p862 ++-0x1.310095a968ce1p-2 ++-0x1.2866d1eec6cc3p-16 ++0x1.8191b0738f308p613 ++0x1.456f53f700f99p7 ++0x1.62847459e8128p183 ++-0x1.ba63e002b502dp-1 ++-0x1.1fc736191f77ep2 ++0x1.37572263819e5p-2 ++-0x1.7ae3b64ce441bp0 ++0x1.202e1625823d7p11 ++0x1.789183b6d53c2p33 ++-0x1.9f1015a572e03p27 ++0x1.ac19f4c66f202p21 ++0x1.3ffd935b47f14p827 ++-0x1.21ec60724c4d4p-23 ++-0x1.7d92c063e1943p794 ++-0x1.3329c4f9bcf9fp-1 ++-0x1.fb79b1e12f1b9p-1 ++-0x1.b453f204e2828p572 ++-0x1.05e91426fc791p287 ++-0x1.a0aca06187ac4p-2 ++-0x1.944d07402e20dp10 ++0x1.8b84302c454dap-1 ++0x1.57da67e840d07p-2 ++-0x1.5e139699b437cp0 ++-0x1.9611421dfe9a2p2 ++-0x1.dfe0a6790c2a1p15 ++-0x1.8d68a527dc4fep9 ++0x1.75d6920bfd64fp1 ++0x1.6ea3c72a463d9p0 ++0x1.017036841b9aep45 ++-0x1.b24cc456e7eecp11 ++-0x1.8fddc0abaff9ap16 ++-0x1.2415b665f8c99p26 ++0x1.8e6f32ff35e01p12 ++-0x1.e26252412c215p-2 ++0x1.955a700a5a653p-8 ++0x1.0ea7178825459p46 ++0x1.296d37b08b64ep140 ++0x1.166047ebdfbedp977 ++-0x1.4bcc33f01f7a1p36 ++-0x1.98d541beb3ab0p367 ++0x1.d75a350666c4ep36 ++0x1.c04822eb730fcp105 ++0x1.da66e151417f3p296 ++0x1.cb5376938dbe0p20 ++0x1.2bf8f7b48e8f0p15 ++0x1.8258537a3087ap19 ++-0x1.3f6af42d9b4e8p19 ++-0x1.123aa03954350p38 ++-0x1.768367b440c00p2 ++-0x1.406233b0d0f57p1 ++0x1.d8af4507de888p270 ++0x1.1ed46343e62d9p16 ++-0x1.0d2394e306c24p25 ++-0x1.2a47265c02b22p13 ++0x1.67f5d015d7adfp-2 ++0x1.6c7e32a8599bep24 ++0x1.4ff3f3faf1308p-17 ++0x1.6035a2fc3ea56p-2 ++-0x1.e85e0106abbc3p764 ++0x1.86eae4c63027cp-1 ++0x1.c79935bc19ae9p24 ++0x1.a99b811fcf714p-3 ++0x1.dc958723955fap32 ++-0x1.f256339f1d6d3p-1 ++0x1.fb29c0800abbep8 ++0x1.bfad063d46fa8p37 ++0x1.12b4c290f307cp0 ++-0x1.8cd584141bce7p26 ++-0x1.ba60a391b830dp4 ++-0x1.56d524c7c30dap41 ++0x1.6ffee3009fd2bp26 ++0x1.8bb180dc99719p8 ++0x1.6e1fe42f432d5p-10 ++-0x1.37a006c891712p46 ++0x1.2f1c942c39c55p402 ++-0x1.238be2f2d8cf2p863 ++-0x1.2b9d539b3b59ap21 ++0x1.73b8e458a50b9p21 ++-0x1.2768e227b49b5p-2 ++0x1.1516936960c2ep26 ++-0x1.ddde71ae89716p47 ++0x1.cde9e237806c8p332 ++0x1.14df62ffadc86p22 ++-0x1.cef3d59d11bbfp0 ++0x1.147587cc39596p11 ++-0x1.184116faeabd4p6 ++-0x1.52c9054a194efp532 ++0x1.00f111e190f7cp18 ++0x1.d7f525064b7ccp536 ++0x1.0d44e7cc02644p100 ++-0x1.16d8e062f9b27p33 ++-0x1.57b431dc4ddc9p-25 ++0x1.b6ece13eb981ep-18 ++-0x1.ef7cd24e26cddp28 ++-0x1.bedb764df5e91p14 ++-0x1.7a53f5bc491f2p-2 ++-0x1.c75c474186d48p-21 ++-0x1.7948a2340f8ccp27 ++0x1.7f28459c4c5b7p-3 ++0x1.7dba412384bdap24 ++0x1.f1a1763482009p751 ++0x1.e89f662826886p703 ++-0x1.cac75138c3526p13 ++0x1.39e786d2dc05dp9 ++-0x1.c0de8654d9d2cp-23 ++-0x1.b5b83454d5726p24 ++0x1.dfd9b4f326a02p9 ++0x1.5a792494bf6a7p602 ++0x1.c4f9f5fc40745p-1 ++-0x1.dec4154d34035p22 ++-0x1.d20985b372880p13 ++0x1.e08322497ccc7p34 ++-0x1.088f34cbb4570p-3 ++0x1.153a418434cf5p-1 ++0x1.e10de5e9186fep0 ++-0x1.dd6d97c9413f8p14 ++0x1.2386d6bba99b2p22 ++0x1.feb6a2da00daap-2 ++0x1.e1ce1507325e8p33 ++-0x1.282147169eea5p755 ++0x1.bb36d35a952fep-2 ++-0x1.f78ac5d6e92e7p31 ++-0x1.3fbb37d76149cp464 ++0x1.c565b245f458ap-2 ++0x1.63dd7410e99b0p46 ++0x1.374ad2ddaa195p20 ++-0x1.7679872738853p47 ++0x1.9d2e621a95f51p10 ++-0x1.63681742e61f1p160 ++0x1.723377f56685fp25 ++0x1.d4b42063b45aap-10 ++0x1.faa64445b0a9fp5 ++0x1.9f13f08a2c68cp24 ++0x1.5e08863f90e4ep634 ++0x1.3520f14a3d100p12 ++-0x1.6dec1180c4a30p23 ++-0x1.363ad7dd94e15p91 ++0x1.957711c469872p4 ++0x1.6a78174e047cdp283 ++0x1.e9ce64d645dcbp25 ++-0x1.aa5cc3fc79e94p540 ++0x1.313657c5c4981p298 ++0x1.6c129238ecbdbp0 ++0x1.817ff5141d57ep0 ++-0x1.a1a6536a8fe4cp926 ++0x1.bbd8e12bdc612p0 ++0x1.1a0a03f67cd7bp2 ++-0x1.415d0133cd310p2 ++0x1.08b0c1e34b29dp35 ++-0x1.e428432cbb7d5p9 ++-0x1.b9bd67795f0c3p0 ++-0x1.a893152e49e16p5 ++-0x1.e81760a539c99p33 ++-0x1.9d53d5c59a937p38 ++-0x1.cefea277671d9p11 ++0x1.ff43248d63df5p24 ++0x1.593914af16198p-21 ++-0x1.f34910fa15b18p0 ++0x1.58dab48d5e553p0 ++0x1.0a37f2b44bad6p35 ++-0x1.fc5f828ec77eap-15 ++-0x1.6592d152f9b08p472 ++-0x1.85a5754cd7c5bp12 ++-0x1.3c3e25ef48b5ap726 ++0x1.d27767aecb29dp5 ++-0x1.ee967500bcd88p19 ++0x1.be64452b706aap-2 ++0x1.9406e7378ff47p3 ++0x1.ca3c24bcd59c8p25 ++0x1.407c766a773cdp29 ++0x1.26ef70700dfa8p789 ++-0x1.b493b77a34bb6p-21 ++-0x1.2d5334bdb970ap3 ++-0x1.f31ed51dda243p-1 ++-0x1.561677af890b4p-2 ++-0x1.52ad65df5e675p29 ++-0x1.46d5938b70d32p22 ++0x1.bd8b859bdf9eep23 ++0x1.a515f6afc22e2p8 ++0x1.697520652bfd6p-1 ++-0x1.cca3159203943p11 ++0x1.c7a4967c92f5ep21 ++-0x1.e4076083ff124p118 ++0x1.4795b3dc73be5p21 ++0x1.4f5cc76450352p25 ++0x1.5d66d43044e72p-12 ++0x1.6e6e764a0b517p376 ++-0x1.3c2c46d020cafp0 ++-0x1.71878383e54a0p11 ++-0x1.90106128d6098p13 ++-0x1.345da3083c0cap37 ++0x1.1f3a52c232082p1 ++-0x1.b387718274c28p28 ++0x1.c4c15722ddd7dp4 ++-0x1.c67b533fc5d98p18 ++0x1.9ec4236ad4513p0 ++-0x1.262a57b5908ddp581 ++0x1.138ff2f62ed96p924 ++-0x1.2a3377ef850f0p9 ++-0x1.558bc5f67ee33p-14 ++0x1.e888750254606p-22 ++-0x1.f9d0d50d11f2ep37 ++-0x1.777ae766c28a2p29 ++-0x1.09e346e656647p17 ++0x1.eb546416c8f84p293 ++0x1.174e663e83926p36 ++-0x1.ba27457883c9dp-13 ++0x1.0e21179146e72p1 ++-0x1.dc30b5c7227e5p-1 ++0x1.1c5330a65cc14p-23 ++0x1.776655ee11a36p634 ++-0x1.4c06c77fa9d4cp21 ++0x1.0d94e52fa5002p19 ++0x1.7401000fb7cacp24 ++-0x1.d7d3544b26309p0 ++0x1.93c922c6fe31ep-2 ++-0x1.a3a0a3914f51ep-1 ++-0x1.4059b70d2e1ecp24 ++-0x1.8d2e12a9a241dp38 ++0x1.0a7df2e2ab942p296 ++-0x1.8b1a329e5ca50p0 ++-0x1.006b53dc2aef5p1 ++0x1.e69e734d01bbep21 ++-0x1.8586769b7591ap20 ++0x1.e609e60aa3770p804 ++-0x1.f62974bd1fcbfp13 ++0x1.c487460dd09fep7 ++-0x1.301c302e779c3p20 ++0x1.c142e3e9c59afp-1 ++0x1.37b9223a076c1p0 ++0x1.9ed467a1acc4ap7 ++0x1.85f744c68532ap-20 ++0x1.a76c83c5cb5abp9 ++0x1.2e4d91120cf95p743 ++0x1.20a2a661fc64cp6 ++-0x1.de8b904fc74c5p17 ++-0x1.3efab0ae9c967p390 ++-0x1.baaaa4beb4737p-1 ++0x1.c7a8c31fb995dp292 ++0x1.0ac905d847bf4p-1 ++0x1.3e16b224f5c6bp0 ++0x1.f24711f81bd86p-13 ++0x1.278ae68d14b89p25 ++0x1.13031191b1bbbp357 ++-0x1.0ef5a328fd16ep13 ++0x1.725d3352c48d0p-1 ++-0x1.4b4e915a26043p4 ++0x1.14d3f243c8183p21 ++-0x1.0adfb179858e8p-12 ++0x1.2048f1cff6f18p1 ++-0x1.56b496d283959p-2 ++0x1.0ae9d3320c997p1 ++0x1.76b1309a080c2p-1 ++0x1.40edd36c748b1p37 ++0x1.cf356041cb269p20 ++-0x1.2a6e248dc8560p40 ++-0x1.565ee78e2b2e6p-23 ++-0x1.8958f521381a8p1 ++0x1.fd0df44606563p-22 ++-0x1.a9612691423a1p-22 ++-0x1.16bab391b0ce9p13 ++-0x1.0c3ef5c0a4b6ep-13 ++0x1.930b260dda0a5p13 ++0x1.82c01684f4c65p678 ++0x1.2c88b588e9bcap4 ++-0x1.e11bd2ef6de2ep-1 ++0x1.8944d76626ab7p669 ++-0x1.693890da99eb1p708 ++0x1.78b1c579b4d4bp1 ++0x1.745707b19c6c6p-2 ++-0x1.89a741e1dfe7bp23 ++-0x1.d99707ee6300ap8 ++0x1.635006e567dddp168 ++-0x1.37f2423f6167ap0 ++-0x1.736a4513d92c2p-10 ++-0x1.676693b285b0ep584 ++-0x1.8c741522b0a01p15 ++-0x1.34b35744794b8p30 ++-0x1.0d6de0053f3f3p1 ++0x1.e1acd5fefb9f4p551 ++-0x1.288825d0eac71p480 ++0x1.7e1cc30d3316bp25 ++0x1.2b46a2786f662p10 ++-0x1.e35d76793d823p18 ++0x1.b36c0651aa89ap949 ++-0x1.ead715358b740p-1 ++0x1.87c461d4ae342p29 ++-0x1.7582e22ec0fffp682 ++0x1.ccee33c7e403cp-1 ++-0x1.c129832b83460p26 ++-0x1.a73d4529d4d51p-1 ++-0x1.7a9417de1e482p-2 ++-0x1.cfe415b09159fp5 ++0x1.9937b7d8057d3p-25 ++-0x1.1185143f94830p33 ++-0x1.d243651a4c153p41 ++0x1.738c07ff28a5fp33 ++-0x1.8c5de38eee632p1 ++-0x1.c81275f494f57p-1 ++-0x1.9fd4660ed63a1p25 ++0x1.18e380b5f2781p44 ++-0x1.497f37a345aa8p934 ++0x1.0bc797ce995e4p47 ++-0x1.490600f788389p539 ++-0x1.92e3e1c5eb894p4 ++0x1.d6977199168acp335 ++0x1.d06137ede4884p959 ++0x1.b25ac40cef705p432 ++0x1.695eb77a3a499p-1 ++-0x1.7e5900737e9ebp17 ++0x1.639e337b89a9dp238 ++0x1.e967a4713d5a0p43 ++0x1.56f9e4a16d041p346 ++0x1.b90fe0e573bd2p902 ++0x1.8fc2151c3268ap13 ++-0x1.0c5b50a95ef55p-19 ++-0x1.cd09619d8ede1p5 ++0x1.e23a368aeff4bp45 ++0x1.a299d6fc56011p-2 ++-0x1.7946b6c035ce1p6 ++0x1.f0c2d3f3f6809p23 ++-0x1.857651fc6cb0bp22 ++0x1.8b6c9589243edp28 ++0x1.d0063763af7b7p-6 ++0x1.a03a279df3b61p-12 ++-0x1.8f6440dd3a571p15 ++0x1.5702115e3395dp11 ++0x1.753293dcaaa78p0 ++0x1.691ec4d9bd585p165 ++-0x1.b671f3877ed27p0 ++0x1.97af437bbd99bp36 ++0x1.664c00fb70dcap26 ++-0x1.94f1c6757b92ap27 ++0x1.97dd3222f8901p36 ++-0x1.ab2ec50e36b5ap16 ++-0x1.42ab81528cdc5p29 ++0x1.9537a3e475a1bp-1 ++0x1.69ba402842bdfp-2 ++0x1.204fa031269b9p12 ++0x1.acd0117b50401p10 ++-0x1.6f1e24963cba0p24 ++-0x1.3678853a3c342p17 ++-0x1.1c7fc2d0f2645p1 ++-0x1.af8373184d592p-2 ++-0x1.f931f3789237ep3 ++0x1.05b356c5c6808p-10 ++0x1.e49f04420f1a3p0 ++0x1.f535c5c0909a8p198 ++-0x1.82dc21619e2b7p34 ++0x1.479b9359aa14bp35 ++0x1.92d325fbe6eecp11 ++0x1.909ea21f78d00p1 ++0x1.435cd7c1ee887p8 ++-0x1.3a9fc4354363cp44 ++-0x1.00b646dd4b498p10 ++-0x1.11a1e6e51f4f5p115 ++0x1.1a7ac52b21875p-2 ++0x1.e6a8849733aefp-19 ++0x1.6962c39edf43dp25 ++-0x1.ea1d7661b1044p68 ++0x1.0337f102c6521p26 ++-0x1.762915df91144p289 ++0x1.446ae20aa874cp-2 ++0x1.94e331e8c93a0p16 ++-0x1.7c7b439118666p25 ++-0x1.5f8ad60de99e9p6 ++0x1.549137cc746edp-21 ++-0x1.21d9e6074ed97p0 ++-0x1.574861d5d2449p6 ++0x1.331650a915232p11 ++0x1.e646a1f117d41p25 ++0x1.2018d63454393p-2 ++0x1.4cb4c39f91e0dp28 ++-0x1.5dcfb2b00277cp-14 ++0x1.daa065c9d4747p-3 ++-0x1.628af5ece9cb0p-9 ++-0x1.0443e4cad7780p-1 ++-0x1.dedc5001517b5p0 ++-0x1.9605a6741836bp-2 ++-0x1.0eac403d3a375p-8 ++-0x1.907957a46c55dp33 ++-0x1.bdd996400fb39p366 ++0x1.5d60d6c3bc1e3p13 ++-0x1.f684f28967382p-9 ++0x1.d2bc13e424342p0 ++0x1.1306d48e431d2p123 ++0x1.a44ac34907179p254 ++0x1.80a0b504d05cfp46 ++-0x1.c4c130a5a2ab3p4 ++0x1.aa9875a0ad120p42 ++0x1.92f40304c3502p-1 ++-0x1.5a086217bae89p-1 ++-0x1.7f92461fb7863p221 ++0x1.dcaa21c629a7bp20 ++0x1.973c70526c1c4p10 ++-0x1.58f6b3cebb936p0 ++0x1.366af7287b353p26 ++-0x1.a150963ef219bp-13 ++0x1.8dcb25a44c4a5p25 ++-0x1.abb293ca64809p16 ++-0x1.55ce241f8abe8p4 ++0x1.e0113452c0f03p38 ++-0x1.27fc007f4c82bp-1 ++0x1.abcb74a6eeb53p1009 ++0x1.53b0f0bb07b86p14 ++-0x1.54c8141b03f12p36 ++-0x1.0736e6ee73839p30 ++0x1.75f8001aae382p33 ++-0x1.024ad6d77126bp1 ++0x1.57d661a9e1759p778 ++-0x1.28dc4531d726dp-20 ++0x1.34b0271d50e17p1 ++-0x1.13b720a462992p0 ++-0x1.f2dec31d45c7ap0 ++0x1.51ddf26d6dc8fp14 ++0x1.4f8eb36cd79c9p15 ++-0x1.a3eab77c6bc5ap-2 ++0x1.3536c2505e758p24 ++-0x1.a48c91ce6acf6p1 ++-0x1.cfe614d084590p-1 ++-0x1.37c223479d8e5p34 ++0x1.3ab302a5e1187p19 ++-0x1.19bfb39635af3p9 ++0x1.50f1731d7f698p-2 ++-0x1.c5f92281bfc73p35 ++-0x1.f69343f49bb20p13 ++-0x1.82723036a9e57p7 ++0x1.e4ed355b3c00ap-23 ++0x1.7ebd829292355p0 ++0x1.6a20975fc296dp6 ++0x1.814aa1f83ddc5p19 ++-0x1.e9fb42073effdp883 ++0x1.61d877698a956p25 ++0x1.dcc1f7b93cb11p-2 ++0x1.fcbe6062a5d86p-1 ++0x1.b28d50696ad27p44 ++0x1.57bab70bb9f72p-5 ++0x1.f8c9631dd7bebp4 ++-0x1.cd4e077c60321p453 ++0x1.8f7c10d20a751p700 ++-0x1.9e3aa6a16e660p16 ++-0x1.4e1b47763daf8p3 ++-0x1.2039d5a282e43p45 ++0x1.15d7a3ccd36b3p12 ++0x1.b32b804c5c7bbp21 ++0x1.bc2f721362d31p-21 ++-0x1.a77f51d99609ap-2 ++-0x1.78254470e56f2p885 ++0x1.065b616a9cb9ep20 ++0x1.a455362c38b73p17 ++0x1.7cd9012d31cc5p19 ++0x1.f38b658d5c5c8p13 ++0x1.a1d8c7cb3e755p46 ++-0x1.8720419fcf071p861 ++0x1.c9d664de86fa0p11 ++-0x1.3032c7cb3f4f5p20 ++-0x1.4c5cb2dee8a4cp15 ++-0x1.af5bd3377809ep32 ++-0x1.8a3584d35cbb4p3 ++-0x1.5173771549c2cp3 ++0x1.70c313d51072cp6 ++0x1.f6f0b32aae83fp321 ++-0x1.cec9d1bb2b60cp624 ++-0x1.cd421185a053cp-2 ++0x1.7195806a8c89dp23 ++0x1.2ad661d2aa35bp324 ++0x1.72be4126e7236p523 ++0x1.d9a36630b8946p-10 ++0x1.7fa3815765425p19 ++-0x1.70c7d60688adbp-10 ++-0x1.eaa751f3372a5p0 ++0x1.bdeaf5b08c989p-24 ++-0x1.3a9f0155171a9p33 ++0x1.3cdd52c4dc184p0 ++-0x1.1bd7b2d4c4423p-1 ++-0x1.9f5150c2b709ap20 ++-0x1.89d8068abc6f1p842 ++-0x1.ceec2438b810bp21 ++-0x1.a948a503102a9p21 ++-0x1.cf78364f7fc71p27 ++-0x1.08deb24991385p0 ++0x1.70133227579bep-2 ++0x1.6205800dc93f8p0 ++-0x1.4e2a376e6f0e0p721 ++0x1.e30d43adb903bp35 ++0x1.f64210657b93ap12 ++-0x1.28618129a1956p14 ++-0x1.47e9104d7daf9p-1 ++-0x1.a032301a639dcp0 ++0x1.64d8d4817d586p22 ++0x1.bfbe973aefd26p17 ++-0x1.a99ba07350567p196 ++-0x1.8683c572cc281p545 ++0x1.904e746fd5521p26 ++-0x1.1ab434d351229p0 ++0x1.78bb5749ecc74p-24 ++-0x1.5a1f9122af4e0p-1 ++-0x1.0096f76176198p1014 ++-0x1.c374b2142bb05p-23 ++-0x1.14c5717c7ab84p46 ++0x1.304756bf39c0dp26 ++0x1.032157b7ad5b4p12 ++0x1.0167a4376c0c5p404 ++-0x1.2b33e07d94903p815 ++-0x1.0546b04e2f28ep1 ++0x1.4e7a67202b6c7p222 ++-0x1.1569c5f7c9a43p22 ++-0x1.7a4f25a89b8d7p0 ++-0x1.b19b42481db05p7 ++0x1.2fb006b058a81p44 ++0x1.41bb26e7ea591p22 ++0x1.9edc565a8a7ccp750 ++0x1.da4e0046b9d06p9 ++0x1.53b98665e609cp0 ++-0x1.42b700ad8d530p18 ++0x1.1fdfb58958afdp414 ++-0x1.56b4353a278a4p43 ++-0x1.f706a5edd47b4p691 ++0x1.ac72f4f2109fcp59 ++0x1.77e333e16d85dp13 ++0x1.ee51c6871309bp605 ++-0x1.c61080b14654fp0 ++# sin slowest path at 768 bits ++# Implemented in sysdeps/ieee754/dbl-64/sincos32.c ++## name: 768bits ++0.93340582292648832662962377071381 ++2.3328432680770916363144351635128 ++3.7439477503636453548097051680088 ++3.9225160069792437411706487182528 ++4.0711651639931289992091478779912 ++4.7858438478542097982426639646292 ++5.9840767662578002727968851104379 ++-0x1.946913945ef0bp919 ++0x1.1c8780f7a4682p611 ++-0x1.e5baa0e086df7p435 ++0x1.215b6544ccd9dp988 ++-0x1.0400243513f3ep355 ++0x1.af2591e3a6c8dp352 ++-0x1.8469102c2b910p496 ++-0x1.ad614701ebe00p373 ++-0x1.53d895d79f028p79 ++-0x1.c1f47655dbf06p748 ++0x1.955383c0fe4dbp236 ++0x1.fd00b10489e25p1017 ++-0x1.1ac573f72a900p617 ++-0x1.e6c5a2c754d63p668 ++-0x1.c04c06d3c9bb6p169 ++-0x1.6b50c75d0379fp154 ++-0x1.e404e32d17aa6p374 ++-0x1.13f7e64dd059fp981 ++0x1.b83c446cc221fp197 ++-0x1.6884818ec1e2bp34 ++-0x1.efaea6e07ba1ep118 ++-0x1.2f4a042ea2aa5p925 ++-0x1.7f2ce5eec3a1ap435 ++0x1.e099963c33c2ep382 ++-0x1.9e21f646e47e4p72 ++-0x1.1276c444b2602p767 ++-0x1.091891781b177p631 ++0x1.623ba2d6dd62dp940 ++0x1.b41e736053e23p204 ++0x1.0fdab611b5e72p853 ++0x1.e438955b23efap180 ++-0x1.743616457e1abp981 ++0x1.06b554eea34dep70 ++-0x1.83d775bab0aa6p260 ++-0x1.2389541676301p787 ++0x1.ec20d06255fc4p43 ++0x1.f4b9d28ce2dd6p729 ++-0x1.aa5f20f1a2b4ap222 ++0x1.17d374c688e49p844 ++0x1.3adc16a4b2461p173 ++0x1.3b87c3935314ep829 ++-0x1.6c5b05b13f352p661 ++0x1.c76c8671f2d00p207 ++-0x1.a19d949bd5ef8p301 ++-0x1.ff232524cd4f5p699 ++0x1.b23a63ccbf933p429 ++-0x1.260cc706b7092p86 ++-0x1.b4b845158c16fp607 ++-0x1.6b29c047caf4ap1003 ++-0x1.5451e75d6c4e5p93 ++-0x1.1ce9d2b02f8b8p173 ++-0x1.5f9141de74c66p228 ++-0x1.8477c7f84ee2fp795 ++0x1.8c20366e61996p771 ++-0x1.fa14b5d1e2278p929 ++-0x1.7838e2f1f3458p630 ++-0x1.908427a2b2b25p89 ++-0x1.4f35846a0e4f5p906 ++-0x1.6ad7d5bd4f80bp26 ++-0x1.e079761c09377p692 ++0x1.98ac66fb30c7dp342 ++0x1.cfe96007166fdp648 ++0x1.2554008adbf67p470 ++0x1.37c43698bc76cp113 ++0x1.0eb237971695bp629 ++-0x1.dbd26599b0a10p295 ++-0x1.72a877adef21ap763 ++0x1.cb57400936f56p750 ++-0x1.82def1457c813p937 ++0x1.b16f3533cdb98p897 ++0x1.67f3805325585p654 ++-0x1.673ba2ec64800p409 ++-0x1.ce15a75f15e94p464 ++0x1.fa20f59a4d4efp447 ++0x1.4ac8c2d45ccbfp105 ++0x1.a47d934601d32p685 ++0x1.1c4d64b15b946p989 ++-0x1.c8409231e383ap884 ++0x1.1c4ff63867e5ep479 ++-0x1.569bb7635282ep208 ++0x1.27e6e0f904293p386 ++-0x1.8d4e92ca6aaa5p455 ++0x1.0da3b3fbc6164p128 ++-0x1.0808e0778b59fp148 ++0x1.c13a5641139ebp550 ++-0x1.908b307add0ebp662 ++0x1.49eb1291c429ap216 ++0x1.fc58c4ac0478cp86 ++0x1.6a2e33b334902p445 ++0x1.27f611aee303bp387 ++0x1.5ddb515b26a4ap933 ++0x1.437534c005adep412 ++0x1.55de40b98c58bp151 ++-0x1.98d521c355be2p813 ++-0x1.6e04203014222p146 ++0x1.e4d52737fa44fp179 ++-0x1.1e3fa3fb95c37p782 ++-0x1.082555c869c25p980 ++-0x1.1b1e726bdbf7ep429 ++0x1.f475c1183eeb5p844 +diff -urN glibc-2.17-c758a686/benchtests/sqrt-inputs glibc-2.17-c758a686/benchtests/sqrt-inputs +--- glibc-2.17-c758a686/benchtests/sqrt-inputs 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.17-c758a686/benchtests/sqrt-inputs 2015-06-20 21:22:16.303457923 -0400 +@@ -0,0 +1,10 @@ ++## args: double ++## ret: double ++## includes: math.h ++0.25 ++0.75 ++2.0 ++4.0 ++2209.0 ++6642.25 ++15190.5625 +diff -urN glibc-2.17-c758a686/benchtests/tanh-inputs glibc-2.17-c758a686/benchtests/tanh-inputs +--- glibc-2.17-c758a686/benchtests/tanh-inputs 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.17-c758a686/benchtests/tanh-inputs 2015-06-20 21:22:16.303457923 -0400 +@@ -0,0 +1,203 @@ ++## args: double ++## ret: double ++## includes: math.h ++-0x1.79ea722d33e33p-9 ++-0x1.94d4e0c3df9bcp3 ++-0x1.b63e91ff711e0p0 ++-0x1.299707cfa0a5ap-5 ++-0x1.35ec261f6be52p-19 ++-0x1.d139c624e1f41p-49 ++-0x1.ba38b666e3abap-6 ++-0x1.83f902d2c81afp3 ++-0x1.dc37227180c76p-51 ++-0x1.922cb3b58f124p-3 ++0x1.3579562644365p1 ++0x1.3d52b2702b0dap3 ++-0x1.f7e79460fc57ep-7 ++-0x1.3f96b4611fb28p0 ++-0x1.a82265377c4bbp1 ++-0x1.ced121527ff6ap0 ++0x1.e4e26333b349ep-4 ++0x1.8c5fd0ab12b60p-40 ++0x1.c1b891cbc8f77p0 ++-0x1.223b80efcf234p-33 ++0x1.7184670fd30eep-41 ++-0x1.8a4421ee0d23ap-1 ++-0x1.67e981e763866p-41 ++-0x1.368b80b14c57bp1 ++-0x1.66353498bb0efp-39 ++0x1.1aa8449c2cce7p-18 ++-0x1.d70654bb75b1ep-43 ++0x1.c84f96b02d6f2p2 ++-0x1.f327d6a043438p-9 ++0x1.212b318a2bf91p-49 ++0x1.6253304db0fedp3 ++0x1.ca25248faffc4p-32 ++0x1.d502b71784735p2 ++-0x1.5c6891472b6bdp-29 ++-0x1.c05af046daa21p0 ++-0x1.3f35f7d788487p4 ++0x1.f71314c80ac27p1 ++0x1.ffb1e0c514641p2 ++0x1.cad8c2d932d94p-32 ++-0x1.ff34f15f5e3e6p-3 ++0x1.6156d70921443p-53 ++-0x1.4b5a84c95c083p0 ++0x1.c22fd4b9cc811p3 ++0x1.3fa1e66f4df60p2 ++-0x1.90f3f58afd000p-52 ++0x1.0d16c5632879dp1 ++0x1.421a752ee683cp1 ++-0x1.4b25106b6dd56p3 ++0x1.ac89b6ae063b4p0 ++-0x1.f5a005d7de302p1 ++0x1.263f96335fa00p-25 ++-0x1.81c160ff9fde2p2 ++-0x1.4c0a56228350bp4 ++-0x1.2c2e339d063c9p-47 ++-0x1.b57eb40fc048ep-21 ++-0x1.53a807e326e09p-39 ++0x1.535963f5cea8ap-43 ++-0x1.d049e60c0ecd3p-23 ++-0x1.ad3f8713c45ccp1 ++-0x1.b955931acef5cp-35 ++0x1.480e5368b9fb9p-33 ++0x1.9f8f61aff6da0p-54 ++-0x1.80ed544374dd1p2 ++0x1.0a15b06364b72p-42 ++-0x1.2700a6bd0f1cbp3 ++0x1.8257449cfd281p-42 ++-0x1.a96977ae27fb0p1 ++0x1.0fbf54939b136p-16 ++-0x1.68dc338c13b02p0 ++-0x1.08c49666633fcp1 ++0x1.7112c1edd1600p1 ++0x1.45aa62e647503p-13 ++0x1.24318616e191cp1 ++0x1.2712f5e21b96ap-52 ++0x1.cd76975043db0p-32 ++0x1.9ab2842033f1fp-15 ++0x1.9cf3279d8ff3ep-21 ++0x1.dccc3241d912ep-48 ++-0x1.b2a4e543a5268p0 ++-0x1.9802a51e2fa5ap0 ++0x1.3da4954669e1fp-27 ++-0x1.d4670486ae6c5p-50 ++0x1.12d690cf283ebp-25 ++0x1.34763296811bdp-39 ++-0x1.2f5427f0973cdp1 ++-0x1.44a7f0d39a7cbp-18 ++0x1.c954869657fd0p-45 ++0x1.c99220da8d555p3 ++0x1.a067b10753d0cp2 ++-0x1.4cfdd35756bc5p-10 ++0x1.5090825895bd5p-43 ++0x1.bbbc049609e09p-34 ++-0x1.d79730d4df424p1 ++0x1.4aeba21a72c73p-11 ++0x1.72115177d9511p2 ++-0x1.3a4015774746fp3 ++0x1.555713307b9b4p-37 ++0x1.a877a7a5a6963p-46 ++0x1.ba8ad1105bb80p-6 ++0x1.e500b2666c494p0 ++-0x1.7c7801ef98594p1 ++-0x1.89c34195ab10dp-21 ++-0x1.9653b765a54c3p1 ++0x1.cbc5464770c96p1 ++0x1.80dd335890daap-29 ++0x1.a88610813e760p-35 ++0x1.3bf7077dcaeb2p1 ++-0x1.58fc25c99925ep-51 ++0x1.99f184fd14ba6p-37 ++0x1.a5c077f3ec9fbp3 ++0x1.1676a1bd6d7fdp-31 ++-0x1.151f61d509024p0 ++-0x1.82b1234ed4accp-21 ++-0x1.9c78a7464a06ap2 ++0x1.81db55fe7d6a8p0 ++-0x1.403546a25090dp3 ++-0x1.884175facb7a0p-5 ++-0x1.8cd807cf97147p2 ++0x1.28b7d3631da7ap-16 ++-0x1.dbdfc6a3b7a56p3 ++-0x1.93ca444439063p2 ++-0x1.863014637e6b2p-40 ++0x1.6f0606cba779fp-48 ++0x1.e4bb004a92da3p0 ++0x1.4e7cd59b97811p-22 ++0x1.d82513d934824p0 ++0x1.08ea668aed516p-4 ++-0x1.4eb052c08e36ep3 ++-0x1.947540f62626bp-38 ++-0x1.9d4c17b3aa3e3p-18 ++0x1.ffdc334c6a7a3p3 ++-0x1.f01e851ab2990p-45 ++-0x1.040ac02963464p-37 ++0x1.deca67ef259e8p3 ++0x1.7ea616ef23425p-31 ++-0x1.5ad5526a35b13p1 ++-0x1.18477773e1136p2 ++-0x1.da68368e73652p1 ++0x1.d47856d151708p-32 ++-0x1.8dff62e84740bp2 ++0x1.512c92bc3fd5ap-42 ++0x1.0d46e50f3e34bp-38 ++-0x1.f2cba4b66f7aep3 ++-0x1.1bd6063435779p1 ++-0x1.314a92dc0593ap1 ++0x1.78e992e23299dp3 ++0x1.547ba4fcc9d15p1 ++-0x1.10b63582d5e5fp1 ++0x1.2bc994ee38c37p-3 ++-0x1.8edd86fbebfb1p3 ++-0x1.0f5bf4ace5c69p-54 ++0x1.e38d83d2c8025p-43 ++-0x1.9c31372efb7c2p-25 ++-0x1.01ea8256aa697p3 ++0x1.b68125750b075p-9 ++-0x1.49f40645faf47p0 ++-0x1.72a777e07e732p-8 ++0x1.198ea0f0d15eep1 ++-0x1.ecc6037c6538ap-21 ++-0x1.e649c0259ccc7p3 ++0x1.06f1640c8e2a4p0 ++-0x1.693d851f3cfeep-10 ++-0x1.0087454a6db2ep1 ++-0x1.05519085ee41cp-51 ++-0x1.df8af593c9a6dp2 ++-0x1.fa5552ca0ed82p-13 ++0x1.5d5fa0d6d5003p-9 ++0x1.726ff56109b1fp2 ++-0x1.17fe022e20687p2 ++0x1.261da31e2fd34p-35 ++-0x1.55b5028331f05p1 ++-0x1.5b3682390c9a9p2 ++-0x1.2e7715356184dp-16 ++0x1.5be03400eeeb7p0 ++-0x1.b530c329abc95p2 ++0x1.b3c9837089937p-50 ++0x1.9286b5e44023fp3 ++0x1.106137779070bp2 ++0x1.df2ad20740b3dp-26 ++-0x1.1ae7653a10472p4 ++0x1.1cecd7b22c032p4 ++0x1.e16190519649ep-48 ++-0x1.43ad33cd63d71p3 ++0x1.f978d68c76a16p2 ++0x1.340975e58a8a7p2 ++0x1.2ca3d4cef3844p3 ++-0x1.75fb149690f20p0 ++0x1.1c6be31b1d0b9p4 ++0x1.1b54873bb0292p0 ++-0x1.73c327f48e34fp-33 ++0x1.0e0354caf6818p-54 ++-0x1.168b022d669ccp1 ++-0x1.816c547ac8d97p-45 ++-0x1.ee86709f7750bp2 ++-0x1.137d50ed8e775p1 ++0x1.094c253414b65p-22 ++0x1.87a6a3e8c8b4fp-37 ++0x1.9c4674b85fc58p-9 ++0x1.2ba8d7d38efa2p-43 ++0x1.35e7234d9a485p4 +diff -urN glibc-2.17-c758a686/benchtests/tan-inputs glibc-2.17-c758a686/benchtests/tan-inputs +--- glibc-2.17-c758a686/benchtests/tan-inputs 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.17-c758a686/benchtests/tan-inputs 2015-06-20 21:22:16.304457892 -0400 +@@ -0,0 +1,3456 @@ ++## args: double ++## ret: double ++## includes: math.h ++-0x1.8223b3a325943p573 ++0x1.a8a424675610fp845 ++0x1.923370ded0653p554 ++-0x1.759b34bb0cfdbp553 ++-0x1.a390469582e59p924 ++-0x1.cd9252152d901p462 ++-0x1.e2d1d2e34fd97p568 ++-0x1.b59d71a85565ep-15 ++-0x1.be1224d8f2474p629 ++-0x1.327c5786c74fbp559 ++0x1.75e1260927766p519 ++-0x1.d1ae866714e99p662 ++0x1.a086249ef7bb6p159 ++-0x1.008130223996dp463 ++-0x1.f77636d051905p336 ++0x1.dfed4714271cdp574 ++0x1.7204451a9cfdfp372 ++-0x1.31ab43b06eac7p703 ++0x1.4866b5a4dfafdp978 ++-0x1.cf2ba523a76c6p815 ++-0x1.25bc94b7d96b8p604 ++-0x1.b986e7275d085p225 ++-0x1.8d4ed15015b22p740 ++-0x1.58d231c6a5340p390 ++0x1.5f14b443ceb0fp0 ++0x1.40ae43729ddcap969 ++-0x1.d4e9674fd10a8p528 ++0x1.24d8e4308a916p413 ++-0x1.b143609970b27p101 ++0x1.b609b67cc8c6fp974 ++-0x1.8fc291f86553fp171 ++0x1.b24a7238fb771p275 ++-0x1.cde032076fb81p545 ++0x1.bbb5f22a04b44p794 ++0x1.5bdaf73cb6febp803 ++-0x1.58c180ec8edecp408 ++0x1.b5e6345064274p152 ++-0x1.83bd627132077p50 ++-0x1.bb46e4e6e61a0p585 ++0x1.bb9757f54f100p733 ++0x1.c55d070f0ac5fp438 ++0x1.3476a63166a0ep648 ++-0x1.a15f134f42095p828 ++-0x1.32e840e69acadp392 ++-0x1.bf17857e50b11p559 ++0x1.f73021afd46e7p407 ++0x1.9f00e7f88fb55p775 ++0x1.f64fe31245205p510 ++-0x1.857c82089e8dbp933 ++-0x1.e7c0240150699p244 ++0x1.85f1e1ff46b97p607 ++-0x1.8ac482283b408p507 ++0x1.655985eb933b4p332 ++-0x1.6e7ad10117706p577 ++-0x1.9f9b018c5a565p944 ++0x1.e15694711c05bp690 ++0x1.623803fd581a2p555 ++-0x1.58f8b25bde0c0p477 ++-0x1.e019f3e23ca4fp648 ++-0x1.6f1b061695e57p6 ++-0x1.c4e4506f6c270p698 ++-0x1.9249404f2bd69p-12 ++0x1.f6df00b66684ap227 ++-0x1.0a5ff4bbd59fap973 ++-0x1.783723759a83fp66 ++-0x1.f21b84834aef7p246 ++-0x1.8e49927eadea1p587 ++-0x1.eca7d45f5234dp631 ++0x1.41b1c5ef9873cp95 ++0x1.d449a6e011e9ep107 ++-0x1.7caa53d604056p443 ++0x1.7288a5f18c0aep556 ++0x1.8d7ba3b2300e6p183 ++-0x1.1747478ffe5b4p148 ++-0x1.769a84af31c8ap851 ++-0x1.e41b6039c9d89p23 ++-0x1.273bf4a49e223p408 ++-0x1.2d74708a8d553p7 ++-0x1.71a9314bbf5abp11 ++0x1.63c804f1dcb3bp654 ++0x1.a81bb1a86a2f5p368 ++-0x1.bbb1d0d267af6p679 ++0x1.574264e94bcacp646 ++-0x1.1ee57113a55bbp916 ++-0x1.e043311b22e8ap45 ++-0x1.2fd7c5340e069p842 ++-0x1.2faa426020fadp642 ++-0x1.92507362ad808p175 ++-0x1.9318c5c281337p897 ++-0x1.aeada555a018ep178 ++0x1.04d4f6535e33fp367 ++-0x1.e49b378f96eb8p749 ++-0x1.064e801d2dc83p75 ++-0x1.64deb34cefc2fp403 ++0x1.6d2e677f31896p467 ++-0x1.466ac0cf4dd29p746 ++-0x1.609c83df01cf5p137 ++0x1.d960e2cbe66a9p449 ++-0x1.602bd715ecb91p46 ++-0x1.b0af218f7c6a5p629 ++-0x1.21a921acce2fdp22 ++-0x1.f83004121d518p837 ++0x1.4ca7a2fb63bc5p156 ++0x1.191295449db9bp54 ++0x1.c9bd7171fde58p949 ++-0x1.e4162302d0c20p397 ++0x1.077f42760d255p258 ++0x1.a3b173403bf03p644 ++-0x1.c9ff841ec836dp889 ++0x1.acf92502f5b3cp624 ++-0x1.b8c23518af5e3p508 ++-0x1.88e416ff6ad6dp268 ++0x1.6280e7b9872b9p807 ++-0x1.7cd6b732512b1p212 ++-0x1.67ee930f4dcfcp388 ++0x1.64f4659e0b759p93 ++0x1.6cfa374d378c3p788 ++0x1.c1082531b7386p261 ++-0x1.b8d1e18e1c2ccp953 ++-0x1.46d403df71732p268 ++0x1.07f2566a38fafp589 ++-0x1.cb5ed766d06c9p356 ++0x1.64e9c5f032a8bp358 ++-0x1.a81485a8eb7a9p15 ++-0x1.29d6113c439ffp960 ++0x1.46f14425dfb7cp-22 ++-0x1.46d884db8e124p760 ++0x1.b6b2023f59712p442 ++-0x1.f8fea40ac8ffep855 ++-0x1.d363d57ed5fe2p800 ++0x1.385f65d4ccb30p812 ++-0x1.b13d912fc1851p600 ++-0x1.189687400f8b5p930 ++-0x1.3359b450bf3bfp285 ++-0x1.64d114ac159fep767 ++-0x1.9bc8e4afa247fp213 ++0x1.1299f68a1c892p327 ++0x1.8bca15f2a63b3p771 ++0x1.92d6366b40cd5p704 ++-0x1.c7cbe0307540ap1005 ++0x1.d2bfc0eb2f0f9p665 ++0x1.788336461cdf9p887 ++0x1.64c99758893dbp728 ++0x1.364825de23c96p378 ++-0x1.033600f7ce301p531 ++-0x1.34862202e7ecap256 ++0x1.6a6f4552a83b5p949 ++-0x1.a55017d2ab992p179 ++-0x1.a70fc12d64d86p591 ++-0x1.7f00f4d75d44fp563 ++-0x1.58a4c1d691cb1p209 ++0x1.37a2726f0d414p445 ++0x1.b7c3035071ef7p459 ++-0x1.3c5d37b781aecp256 ++0x1.a979508d7bd0dp576 ++0x1.708213f2fd915p528 ++-0x1.2054b2257c924p889 ++-0x1.0446b4b20cd97p573 ++0x1.9cba327cc49c7p207 ++0x1.f14ce310e4517p147 ++-0x1.8e4313d57243bp405 ++0x1.32f131e4e2c5dp-7 ++0x1.7b7d4171a5b89p761 ++-0x1.768b96404272dp319 ++0x1.e389677da758ap725 ++-0x1.f7f1270f6df26p963 ++0x1.97bd878c7b4e3p597 ++-0x1.b35ac52109914p372 ++0x1.86a351193c827p418 ++0x1.c78c9454775e2p325 ++-0x1.f7093192ede9bp819 ++-0x1.8f7823d7fe58fp200 ++-0x1.2068039af64a2p944 ++0x1.95a951ef8e07ap424 ++0x1.98b5776341626p241 ++-0x1.661af6c71f830p275 ++-0x1.bded24148bf8fp265 ++-0x1.da06d35c1e049p352 ++0x1.50c4c103b3adep946 ++-0x1.d89fc3a1a0038p683 ++0x1.e01904f9e518bp65 ++-0x1.904ac477905adp21 ++-0x1.566ae646625edp938 ++0x1.3fec71e5f5cbcp514 ++-0x1.88db248db4dbfp865 ++-0x1.5dc2c3388d7bbp213 ++-0x1.b5ac97796d94cp400 ++-0x1.7bbad1b8269a2p305 ++0x1.2115275214bf2p809 ++-0x1.b6727037ce307p726 ++0x1.983327e1249b5p120 ++-0x1.d10951541ff1fp728 ++-0x1.4f84e0b4a8cd1p28 ++0x1.0dbc3589068fdp241 ++0x1.1e9a9359bb743p399 ++0x1.a923364cdc026p924 ++-0x1.20ab54a355b5ap996 ++-0x1.90c1f77a05003p285 ++-0x1.2772c2d8adf26p15 ++-0x1.d75d54bd7efd8p221 ++0x1.5d0352b2cac14p335 ++0x1.92297454b3ba4p203 ++-0x1.e74193f05cdd7p411 ++0x1.e526b6137b06ep800 ++0x1.e99bb5f69bb23p558 ++-0x1.12fb97edc8ef7p509 ++0x1.93f9f4c363c48p114 ++-0x1.7da8c406ad9edp290 ++-0x1.681230393be1dp694 ++-0x1.c8ec5071ed259p771 ++-0x1.1010810f5ddd5p158 ++0x1.c74a81bf3dfe1p502 ++0x1.1a36b350bffb4p326 ++0x1.9997153de8d50p936 ++-0x1.2a4b83a44adb1p262 ++0x1.143135a73f62dp112 ++-0x1.a9fb66d704d20p924 ++0x1.52ad267e9e691p941 ++-0x1.960237aa0b476p456 ++-0x1.86f60247145c7p1002 ++-0x1.40fc032059f50p822 ++0x1.36e3e02584408p699 ++-0x1.19f154949871bp690 ++0x1.955050762de4dp982 ++0x1.da92c16dc3379p408 ++-0x1.7db2843ebc2e9p106 ++-0x1.5ed053da6629fp251 ++0x1.7a438137d5cf5p379 ++0x1.848bf06d16cb5p742 ++-0x1.10c327274daf3p243 ++0x1.e7d565d867a08p675 ++-0x1.fe4a75adfcf0ep507 ++-0x1.27ffc345d783ap83 ++0x1.7505c7af55362p582 ++0x1.e91a6585b3efep39 ++-0x1.c3f6c7813dc77p258 ++0x1.aa1a94fbb80afp391 ++-0x1.f91010d34d5a1p575 ++-0x1.d1c5e776352f8p81 ++-0x1.42ed75713379fp760 ++-0x1.443db008d07f8p671 ++-0x1.62b031d37d269p872 ++-0x1.e74ca5fa66410p11 ++-0x1.24c032fc2a37cp54 ++0x1.b10d0082d4525p430 ++-0x1.52a7436543c32p449 ++0x1.80de825c86b09p478 ++0x1.aeb2530eace81p186 ++-0x1.069422760f985p379 ++0x1.d254b2b61ba52p468 ++0x1.859f00c1dfdb4p946 ++0x1.b77c51fdbe932p801 ++-0x1.d84b803d9a2a9p653 ++0x1.fdeee09bb33b3p522 ++-0x1.977296b455844p588 ++-0x1.4da2b665db234p110 ++0x1.6e4656ff0b546p687 ++-0x1.427ef58be39fep749 ++0x1.5458b4f78e18bp1020 ++0x1.dbf6b5a443ad8p63 ++0x1.fabc4531c35d3p786 ++0x1.750be012c6154p365 ++0x1.d406b5ad76da9p348 ++-0x1.136ac7e63a7a4p852 ++0x1.f38d97e18ed30p770 ++-0x1.86eb94206ac9bp845 ++-0x1.9fd97758ea039p519 ++0x1.57e104a418329p842 ++-0x1.f47a53b612eedp131 ++-0x1.8c7f907591c6ep317 ++-0x1.7797a7c218b28p683 ++0x1.a65d35c8b88bfp445 ++0x1.e2eb60871eb89p30 ++0x1.569f174caec6bp914 ++-0x1.b83cc28d283bdp-9 ++0x1.4e3625ca8ae68p798 ++-0x1.5b0a1690ba66cp1010 ++-0x1.b964703464db3p516 ++0x1.594d72f510320p234 ++0x1.e0fd20fb450c9p195 ++-0x1.4c71468889a23p828 ++-0x1.b0550500c4f1ap615 ++-0x1.0660b078d6f3ep275 ++0x1.1aea54022a7c9p566 ++0x1.944f35657817bp909 ++-0x1.b918b7742beb2p620 ++0x1.30c8214b4ebd4p1003 ++0x1.b4b1127df81bbp636 ++0x1.499bc35bdb268p230 ++0x1.239303c6019cep75 ++-0x1.2ddf17942d7abp335 ++-0x1.c1cd51bb6ef20p219 ++0x1.317ef522313edp576 ++0x1.6622455a81f5ap165 ++0x1.a7cd35a9a03cfp611 ++0x1.55f8a593d1051p681 ++-0x1.8ac0e40f85b62p207 ++0x1.339c053ef2e4fp974 ++0x1.07bac767e2915p807 ++0x1.0572243093b94p336 ++-0x1.7e6d32d8e9b1fp573 ++0x1.05f97096a8c08p301 ++0x1.a0f3f063dc5c8p319 ++0x1.079d71aaef5c9p133 ++0x1.aae49653bc771p-9 ++-0x1.de13b5b4f8b8bp779 ++0x1.ed07835644d79p859 ++-0x1.86ae6094e5cb8p640 ++0x1.f45d03d3167a8p44 ++-0x1.1c9161ed1811ap657 ++0x1.ba5ae0f7f6255p730 ++0x1.3dc4917e05df6p199 ++-0x1.637eb2e09fc81p-20 ++-0x1.35c8010ca51abp558 ++0x1.46b46213d42d3p263 ++0x1.e82bb7d6f0966p439 ++-0x1.4a5335f72040ep748 ++-0x1.9150364d7a3e8p521 ++0x1.811436d27e101p345 ++0x1.1e6fd3d8c4c47p24 ++-0x1.d3dd14d8c8a72p195 ++0x1.7f6fa7878270ep615 ++0x1.0e23f7c6192b9p883 ++-0x1.64fb914120bf9p181 ++-0x1.5b9b402c6b12dp216 ++-0x1.67072619357dfp556 ++0x1.cb6d523053edcp116 ++0x1.0400b6f327cadp209 ++-0x1.cb1c2559a73a8p538 ++-0x1.0832e6f8f9389p562 ++-0x1.e237659a26998p113 ++-0x1.d390a323282adp250 ++-0x1.2abb75708ac0ep1000 ++0x1.93bcf2432f778p707 ++0x1.bbdbe0f57dba0p780 ++0x1.9ce4a245e8487p56 ++-0x1.f65290202bc33p297 ++0x1.2286377c2a7bep402 ++-0x1.25ba94a2a1b39p23 ++-0x1.7e7034f66b646p226 ++0x1.dfd3921f61b6fp865 ++0x1.8e77026d1dd42p947 ++-0x1.259a210ae8dbbp883 ++-0x1.ff947770042f4p50 ++-0x1.b11b83cbe34a6p138 ++-0x1.ed02f523ba5fap948 ++0x1.fae0c20538cfdp378 ++-0x1.f106f16618a36p390 ++0x1.12f06118a71a6p435 ++0x1.f459e36013ac6p193 ++-0x1.b71e601c8937ep647 ++0x1.741dd54a711bap303 ++-0x1.5fd0806197195p648 ++0x1.c08a364cba1c4p476 ++-0x1.0fae377d13b6bp376 ++-0x1.284b125539b1bp740 ++0x1.1b26509b3d375p643 ++-0x1.b3d3e132b5f3ep409 ++0x1.f5e2c4a09c6f3p579 ++-0x1.27c3958127ffcp568 ++0x1.3d88f5ed5e951p522 ++0x1.9f271783e03d7p573 ++-0x1.e470858d1dc67p587 ++0x1.cb625701aabb5p297 ++-0x1.583541c8ef4a9p519 ++-0x1.cff7a379366fdp449 ++0x1.ff5284d44492bp734 ++-0x1.36bec43199ee1p-24 ++0x1.21c7f78d864fep503 ++0x1.e84e55708a34cp1003 ++-0x1.bc6db2028ef2dp357 ++-0x1.03dc7515aba2fp362 ++0x1.d36d2291f6b57p427 ++-0x1.6b09f585f9193p808 ++-0x1.9c94e5c6b368fp214 ++-0x1.b637e724f9976p589 ++0x1.c782220738d46p18 ++-0x1.55e0e443747ecp298 ++-0x1.ae36671f9deb3p951 ++-0x1.ab18e77da892bp237 ++-0x1.b8214411e595cp533 ++-0x1.905e068e442f4p539 ++-0x1.9dac66939446bp803 ++-0x1.30d441b8ea8f2p401 ++0x1.2023c219ba756p306 ++0x1.9b83c3efed8c5p14 ++-0x1.3f0ef3440cb1ap1000 ++0x1.fe50609963492p823 ++-0x1.b29653a0b816dp53 ++0x1.3cb0a7690e4f5p279 ++-0x1.3bfba620e087ap429 ++-0x1.82e784a2946a4p187 ++-0x1.f2a2a27a31febp659 ++-0x1.1f6e730cbc7f3p330 ++0x1.232570e622955p1006 ++0x1.815d92a977bc4p742 ++-0x1.afefb62db66b2p361 ++-0x1.393f51c4b001fp-21 ++0x1.2e0a56d573c24p551 ++-0x1.85c9e0d20fc03p13 ++-0x1.ddf8e355bc110p27 ++-0x1.c421925083f29p63 ++-0x1.477b658be3782p332 ++-0x1.dfa7e1f25247bp101 ++-0x1.0ef1e0f8a34ebp836 ++-0x1.9736b5b40d3a6p328 ++-0x1.fc2130e5cb2ddp72 ++0x1.cb19b23ae4117p87 ++0x1.5e908222450d6p683 ++0x1.83d3300fda787p465 ++-0x1.1f75315eae92cp312 ++-0x1.4f87c66f9c24bp218 ++-0x1.20a0c7bb5ab06p713 ++-0x1.4379a08c0b472p507 ++-0x1.37c013509290bp25 ++0x1.30733493bc82ap796 ++0x1.451a0144b107fp12 ++0x1.d3b5609052753p696 ++-0x1.baded35e9b11fp215 ++-0x1.9010f587e1588p838 ++0x1.0e02515adc0f5p656 ++-0x1.786204df84f7ap400 ++0x1.cd5976e18d08ap562 ++0x1.a3b8b07edd8a5p695 ++0x1.272c360b4a09cp240 ++0x1.c76272882f071p807 ++-0x1.05a6b23f98b31p854 ++-0x1.309684da428b4p519 ++-0x1.b0b45682b1411p156 ++0x1.16d122510e170p482 ++0x1.d219a347bf3b0p121 ++0x1.76ddc05352dfep610 ++0x1.2f8b83aa236f5p634 ++-0x1.bff5136871c7cp321 ++-0x1.449411e1a1534p786 ++-0x1.6b9964e711a38p523 ++0x1.610080e646a92p572 ++-0x1.5a2035384b325p183 ++0x1.2f15b33162e14p520 ++0x1.5edd45422f82ep694 ++0x1.adc571bdc2896p1021 ++0x1.11ede09781861p818 ++-0x1.384970657fe1cp731 ++-0x1.b93df7e5ba775p747 ++-0x1.80e8650f78da7p617 ++-0x1.ceac833c51ddfp745 ++0x1.6531a38ced12cp46 ++0x1.91fb517112447p535 ++0x1.52a4566db4283p745 ++0x1.dc0275f484b73p935 ++-0x1.a14ae7206183fp724 ++-0x1.b3dcb3a37ca8cp-6 ++-0x1.e79600282da96p149 ++0x1.b8758421e1862p507 ++-0x1.2547846b083e9p-6 ++-0x1.84e3629cbab35p361 ++-0x1.c716339c7bd00p830 ++0x1.d39d1592b1957p616 ++-0x1.c416c32a4efa9p963 ++-0x1.c966d274ac272p421 ++-0x1.39623033efda7p13 ++-0x1.47b562fb33e7ap61 ++-0x1.908e8784678e6p615 ++0x1.90b9900e518b3p163 ++0x1.836e560de08e8p164 ++0x1.772670b0b8d27p226 ++0x1.7fd2e348de960p918 ++-0x1.3cd1201cba22fp198 ++-0x1.a7dbd2320565cp159 ++0x1.ca98f6aef3966p325 ++-0x1.d0c1a2329035bp2 ++-0x1.c0d31445503d7p530 ++0x1.c4b027bbc1746p567 ++0x1.32341565ed07ep159 ++-0x1.8c7b4695abfe2p513 ++-0x1.4578608c13f56p-22 ++0x1.5bab8379ff00cp49 ++0x1.306e7570eda77p869 ++0x1.732110fa64bafp393 ++-0x1.1146f698db29bp160 ++0x1.6885a0cfa919ap211 ++0x1.714b252420ac9p858 ++-0x1.486b66411fe7ap398 ++0x1.18421057ffa6ep237 ++-0x1.e731c4f710eddp197 ++0x1.7cff352552c84p37 ++-0x1.6abf14aa70dacp746 ++-0x1.f29b55bb8fe31p416 ++0x1.a77473515adf8p195 ++-0x1.4922814b5a637p498 ++-0x1.9ce303b95ccc7p511 ++-0x1.fc646726a5f20p951 ++-0x1.21eac2c21fe54p113 ++-0x1.e4e213df08c2ap265 ++-0x1.887dd5a85818ep912 ++-0x1.bbb2171b888c8p103 ++0x1.8b34a46c873c2p501 ++0x1.70e367db79ea0p241 ++0x1.7ce0039ed7da4p808 ++-0x1.c7fc26380f6c6p101 ++0x1.18c360c75aad0p234 ++0x1.fee2f67629486p962 ++0x1.a4d7a588fe8bbp-3 ++0x1.570291341d887p437 ++-0x1.a10e9531b0df8p337 ++-0x1.ca6825fbb4bf7p602 ++-0x1.c8d000ca12af8p113 ++0x1.b74a232faf0c9p-10 ++0x1.1dfd417243258p88 ++0x1.c755e373bd292p806 ++-0x1.3124b71499691p1020 ++0x1.a84680e1992ccp483 ++0x1.c5b2c448b0259p534 ++0x1.c54e340119590p56 ++0x1.42d4e3fc4a7dbp943 ++-0x1.6f81959716f0ep600 ++0x1.38fac2222482ap313 ++0x1.aa4840527639dp-25 ++0x1.9ad706bfe85f3p1020 ++0x1.2f2da18ecac33p825 ++0x1.6ee875bc8e577p747 ++0x1.da3412d07c978p387 ++0x1.cd8e14f3d97dep105 ++0x1.cd6cc00d3cff1p360 ++-0x1.f7bd4156bade4p679 ++0x1.9d89611d9047ep925 ++-0x1.2b41b1691def0p18 ++-0x1.806210fa000dfp258 ++-0x1.2f49e07812d94p116 ++0x1.339605b7fab92p1020 ++-0x1.0c09f7db12243p891 ++-0x1.81a2a42a061d3p903 ++0x1.a791057d419b5p888 ++0x1.581315b6920c6p-21 ++-0x1.c5f64504ae5f4p791 ++0x1.8982e6ced130fp227 ++-0x1.d0db364678c1fp12 ++0x1.43aa32552d958p657 ++0x1.899c234387f3ap633 ++-0x1.41470481079e0p614 ++-0x1.2aa723c52c3c4p920 ++-0x1.bcede1fa49331p512 ++-0x1.f37ac77972cdap-18 ++-0x1.e22c64e877035p779 ++0x1.754480a7b3bf9p898 ++0x1.6ae1a66d4b83dp6 ++-0x1.90c107ffacd38p913 ++0x1.b9381618da422p371 ++0x1.a981920976fa2p680 ++0x1.3a6ec4b57bc2ap15 ++-0x1.28dcc1f6d20bdp108 ++0x1.4326147c15728p335 ++-0x1.2259a0e73e4f4p122 ++-0x1.11cc764de91bbp18 ++0x1.f481816abfcb9p72 ++-0x1.c1d2d049ee85fp-23 ++0x1.61e4d0a08bebdp12 ++0x1.d86ed0f586a17p516 ++0x1.b100560d69d98p432 ++-0x1.50b8331476685p30 ++0x1.9f32c7425b9f6p739 ++-0x1.d89d2066c2887p0 ++-0x1.61ee079dde498p465 ++-0x1.3602968762b9ap32 ++0x1.4c2c9725ac92ep-20 ++-0x1.3a0d7321c02abp108 ++-0x1.b1325468e8fdbp781 ++-0x1.613d634860a5cp756 ++0x1.41f616b0ffe33p752 ++-0x1.61a3765afebf9p788 ++-0x1.538be659aab9ap199 ++0x1.da3661b9d7828p8 ++-0x1.76e835de4916dp-21 ++0x1.83db501e98db6p965 ++0x1.184bd1b938793p927 ++-0x1.6352b0ec9b3bbp851 ++-0x1.e00891c81db9fp966 ++0x1.6d2bc0bc2c25fp29 ++0x1.16f205d5ea0efp341 ++-0x1.222b02360aa21p423 ++-0x1.c43fc00ad0827p175 ++0x1.4a9da6ed14181p96 ++0x1.742f7252b3888p-24 ++0x1.e3a1434f237eap-6 ++0x1.788f015a48ed8p487 ++0x1.fdd0a707a7b24p120 ++0x1.bab124b6990f7p10 ++0x1.c8ffe2cf83b94p755 ++0x1.2372c778a1441p348 ++0x1.612b072d760cbp958 ++0x1.609f218942867p274 ++0x1.0483c3df44e59p24 ++-0x1.6f1a40a16d5e7p406 ++-0x1.784bf15a26f31p173 ++-0x1.7fd4e7bec6056p611 ++-0x1.c478c30401e95p33 ++0x1.0bbaf1e77d127p947 ++-0x1.0e6da7540b809p122 ++-0x1.47a8d09dbc89ap895 ++0x1.bc06021871563p927 ++-0x1.f89bc1de14148p464 ++0x1.98a2f4afe66b7p674 ++0x1.5f0bb5633b7dbp833 ++-0x1.8ce676f64c1f2p25 ++-0x1.4c8a51a1b0cbap555 ++-0x1.8210c69bcd3f0p26 ++-0x1.0b4731be2b020p855 ++0x1.73d857da7baa2p23 ++0x1.01075749d6fc6p689 ++-0x1.112e67981aa71p146 ++0x1.b01dd2c3cacd8p793 ++-0x1.cd5737ff4c257p433 ++-0x1.3e519196e9292p729 ++0x1.5b65b0284bd0dp839 ++-0x1.1c4762b976c53p-10 ++0x1.794245506f756p32 ++-0x1.4e1c35958207bp707 ++0x1.c3913360602d8p800 ++0x1.83f2621884b92p26 ++0x1.c069f020301dcp328 ++0x1.b27b85f417892p184 ++0x1.e004a34aff785p750 ++0x1.29fc70b6808adp70 ++0x1.2ec1a69b905fcp919 ++0x1.df6a235533225p599 ++0x1.438a2370d9eebp231 ++-0x1.dddd767c99337p889 ++0x1.0568d154a2870p18 ++-0x1.3363041710f4ap216 ++-0x1.64eb7482628abp653 ++-0x1.3772b3ab575c6p0 ++-0x1.1bdee549c535bp184 ++0x1.d556148c8ea18p820 ++0x1.6d31247f5cf60p84 ++0x1.aec7658e1d55ep-7 ++-0x1.df40a65c08fd9p16 ++-0x1.359021a96067ep851 ++-0x1.47ef93788827ep585 ++-0x1.d9a6960c12269p688 ++0x1.67a8b27b1b917p158 ++-0x1.d6d2a6399e8d2p292 ++0x1.431a4325d3651p320 ++0x1.b274e747ec490p365 ++0x1.d042571362911p3 ++0x1.3ffff11ae8155p254 ++-0x1.ea8cf38a078e5p25 ++-0x1.da1f81d728183p288 ++-0x1.d2f442f6baea0p3 ++-0x1.1125e418910dbp22 ++0x1.e28ee7f211bc6p608 ++-0x1.c7b590b383ae1p490 ++-0x1.ec07032c9fe8ap417 ++-0x1.2f82b55eebd81p266 ++-0x1.2d0c72c2a6eaap3 ++0x1.7654c41150714p-8 ++-0x1.cb7ba6fe71addp17 ++-0x1.ea76b17ba5274p1 ++-0x1.cee634f158cf0p478 ++0x1.9389c0f24345cp-5 ++0x1.ff0ab7bfdc77ep0 ++-0x1.5a2a9634b735ep118 ++0x1.a99a656f9766fp9 ++0x1.25e6b6c33e77ap760 ++0x1.5c07b3fdfc784p24 ++0x1.659bd21884363p21 ++0x1.a1e2d2a599b2cp-2 ++-0x1.b669c6b9ff4eap954 ++-0x1.227fe1b1d363dp375 ++-0x1.9d8815914355cp23 ++0x1.08f9c73e5d0b1p58 ++0x1.06ebc1e205a69p11 ++-0x1.c475c33c6e4d9p419 ++0x1.26e2f03c3b568p952 ++0x1.142e653198e2ap876 ++0x1.a17610c798c44p385 ++-0x1.5d25b7f4ed01ap784 ++-0x1.553e05b0c2d7fp1 ++0x1.ac28301a1a99dp-5 ++0x1.1e2830cae9f10p585 ++-0x1.89ecf76a7976bp784 ++-0x1.36a6c7f575816p91 ++-0x1.3290c1e3ab0fap439 ++0x1.571f2024af517p407 ++-0x1.9e9f16af2b7f2p-19 ++0x1.547107a4abf1ap556 ++0x1.8d9bb18e74c7fp327 ++0x1.6bf844726431dp79 ++0x1.6882c40a36829p521 ++0x1.5e33a37495769p499 ++0x1.aa1c25076a0c0p54 ++0x1.af11a32c8711cp844 ++0x1.842ef2865faebp19 ++0x1.69ab61853a58ap25 ++0x1.9955a12bf91eap155 ++0x1.e8a7220cbb889p593 ++0x1.c275a73192796p259 ++0x1.f79d74bb2c42ep261 ++-0x1.b80435f49efd4p25 ++-0x1.a3f243a5aba38p960 ++0x1.ab2a83515090ep837 ++-0x1.b93c62ada1c23p12 ++0x1.b042d7b712ce3p608 ++0x1.e173865ea2fbfp711 ++-0x1.c721e58a282efp25 ++0x1.b7dd57c5e569fp171 ++0x1.a148e142f39b9p699 ++0x1.2a5fa6d540fa0p62 ++0x1.34bb57427099cp574 ++0x1.6f2dc0bc39621p500 ++-0x1.0cc9448729503p734 ++-0x1.c234d03687945p494 ++0x1.7bccb6482f77ep4 ++-0x1.8c5e908aa7fb5p831 ++0x1.b1df92d2ec3b8p283 ++0x1.e333354359049p989 ++-0x1.e892b0f07a619p220 ++-0x1.ec44220b9f17ep8 ++0x1.f25a34ac7fbc6p7 ++-0x1.7472b4254d705p367 ++0x1.22e011afd6d0ep345 ++0x1.065d20ae2ee95p117 ++-0x1.6418273399593p831 ++0x1.388612f03819dp40 ++-0x1.dfc0d7643e76fp-6 ++-0x1.7689e01d3ef5fp189 ++0x1.f48a26de3d1a5p673 ++-0x1.3a86439ca37c9p-23 ++-0x1.de0cb3b3a1df8p355 ++0x1.8fca33d3d5d24p550 ++-0x1.5ee022e10d5ecp145 ++0x1.d65386a7e7b24p408 ++0x1.a75471ed7f723p3 ++0x1.84a43795ffed7p-25 ++0x1.270743fc743fdp404 ++0x1.3fdc27ff3d6f6p16 ++0x1.c2ca7781852bdp415 ++0x1.783d81633686dp295 ++0x1.0c62c5098c3c2p-4 ++0x1.abe5e0d2c9c74p9 ++0x1.8763249337c43p522 ++-0x1.354a300bdf2b4p9 ++0x1.77f8512b9b058p494 ++0x1.85e423863bfb1p299 ++-0x1.ff6a529c5f799p582 ++-0x1.af91845aed73dp292 ++0x1.bbe7d76864319p838 ++-0x1.6b92a5b928341p42 ++-0x1.bc96d3fe8ae11p453 ++-0x1.4cf8e5fdb6606p14 ++0x1.d7a286a93d573p552 ++-0x1.1e168326fabfcp619 ++0x1.2b78d4cf920a5p-11 ++-0x1.8b6761d15a192p11 ++0x1.7e41058d14f88p444 ++0x1.4ed112f6fe397p276 ++-0x1.4db517680987fp623 ++-0x1.2224f5210184cp332 ++0x1.bebb126a84646p845 ++-0x1.3890a2fcd6ed1p771 ++-0x1.ff3303971888bp-10 ++-0x1.c088d7303166fp9 ++0x1.3da6a7f5bc078p14 ++0x1.151f505312964p29 ++-0x1.3d0bb60c7b363p104 ++-0x1.6b9a26936754ap496 ++-0x1.9199b437eccc0p127 ++-0x1.aa36d2b9371b7p445 ++-0x1.0b8f350ea5f8cp-22 ++-0x1.f1f4b4b0405cdp-11 ++0x1.3105b5f0ba9bcp-15 ++-0x1.aa88d154a4ddep551 ++-0x1.0f68f1251f868p291 ++-0x1.9f078781f160cp1012 ++-0x1.9cabe23aae521p577 ++-0x1.4dae06e7b4120p16 ++-0x1.e43e623d48c49p-18 ++-0x1.29ccb1801e4c7p77 ++-0x1.6adca332f1fe7p-13 ++0x1.4d98f1ff8002dp-9 ++-0x1.b5a3575f4713fp470 ++-0x1.6374a29768141p237 ++0x1.af58667bcfbf2p127 ++0x1.128ff1d95cbe2p22 ++-0x1.1cd1c2bf75c3dp394 ++-0x1.911146b47e563p965 ++0x1.c9b034c25b038p1003 ++-0x1.f45070caf3082p630 ++0x1.dab7970bc1de9p1 ++0x1.4aea409a375dfp287 ++0x1.59d34792a5525p482 ++-0x1.50cd458fc25dep253 ++-0x1.759d44cd1fd81p269 ++-0x1.04a6060096d96p-3 ++-0x1.604b42f7ccab0p419 ++0x1.c30db3408e834p20 ++0x1.f7d0003cef355p465 ++-0x1.d33647c71ddf6p713 ++0x1.941117709cdfdp23 ++-0x1.8aaa468ff284bp786 ++-0x1.4c6536f0b6777p-16 ++0x1.8c86677fee3afp133 ++-0x1.0b1b35dbd7737p325 ++0x1.de2f93f581a04p12 ++-0x1.5a3ba4b477d56p15 ++0x1.e83645234e293p24 ++-0x1.3fca1310ff561p74 ++-0x1.2aeb7470b2da6p635 ++-0x1.3f3ad4cd76224p25 ++0x1.09752219591d6p-12 ++0x1.bc88b48080aa6p31 ++-0x1.e98923b202a64p20 ++0x1.bf0474f0f41e2p104 ++0x1.a4e9d3f2451a8p3 ++-0x1.3541735027a8bp560 ++-0x1.f73dd55c810dfp23 ++-0x1.505b10dc0eae6p912 ++0x1.3649c1c465dd4p17 ++-0x1.c777e501c8dfcp21 ++-0x1.5701a0b3897a4p11 ++-0x1.c320c380b445cp712 ++-0x1.1b36c09e0a14ep663 ++0x1.f60ea3f1a14cbp561 ++0x1.c6a3005c06a44p-18 ++0x1.af722598ce867p659 ++0x1.d636c36a5d8afp187 ++-0x1.16a3c0a4e81aap-7 ++-0x1.8f3db57790c2ap-19 ++0x1.703ca04fb8f62p-17 ++0x1.f73de47c2fb9ep35 ++0x1.973a34ff90b9dp-18 ++-0x1.d08281fbb5c2cp838 ++-0x1.be0f904e8c33fp342 ++-0x1.e01d440fbebdap-18 ++-0x1.df0f220b1c2acp-15 ++-0x1.bcc990cf09edap-25 ++0x1.8a350004b6021p21 ++0x1.0746671992572p12 ++0x1.bca1f2ae769dap-25 ++0x1.1c0ee394715fap13 ++0x1.bc9a351ecab48p356 ++-0x1.3e4cb5ef07939p17 ++-0x1.f2b664e58004dp1 ++-0x1.f42ee6d0e89ddp19 ++0x1.5f0a34dcee39dp20 ++-0x1.1debc4db7ecf6p20 ++0x1.0fc713f5c5de6p-3 ++-0x1.5d4db109cd5c4p5 ++0x1.73e807d8297f3p-17 ++-0x1.676ce231eda86p861 ++0x1.ebfa67a80676ep-10 ++-0x1.b9f6a30ee6469p-21 ++-0x1.c73277e6727fdp601 ++0x1.74de03b6dea40p159 ++-0x1.2259c59f68e46p-16 ++-0x1.cd68d2e6479f4p-23 ++-0x1.47b7f6102f2c2p10 ++0x1.cf24a2347776cp-27 ++-0x1.b725b137fdd1dp-3 ++-0x1.009047102718cp993 ++0x1.0771b34af6f2fp-8 ++0x1.049d06f739b38p699 ++-0x1.e8c0710c55d89p-17 ++0x1.23b5322648c9dp-12 ++0x1.cf0fe10d20725p2 ++0x1.50052516748d2p0 ++-0x1.afddd01d4ff78p2 ++-0x1.3e0df401f7903p381 ++-0x1.c9fc3321d1d88p8 ++-0x1.8b10a044fbcabp-16 ++-0x1.89260258d6e7bp14 ++0x1.db24554246421p-25 ++-0x1.420505cd0119bp521 ++-0x1.917894697053fp264 ++0x1.4e4bc6a5bd810p-22 ++0x1.613766f0b8925p-21 ++0x1.96bde6095382ap-1 ++0x1.0028d14831ce2p18 ++-0x1.c2174546c88c0p1017 ++0x1.83ec835c217c5p-10 ++0x1.fe32319f71affp913 ++0x1.3fa26558eafebp-9 ++-0x1.170bc0306f9d3p14 ++-0x1.2da6158b9104bp-6 ++0x1.da4016ececc3cp23 ++0x1.4aeb75f4274a8p74 ++0x1.0feda4108c230p-11 ++-0x1.9e9580350379ap975 ++0x1.8c72429a6c6b8p803 ++-0x1.753eb56c15fc4p205 ++-0x1.a8d226aa188ddp10 ++0x1.552f237c39a5cp24 ++-0x1.5101e740c55d2p-2 ++0x1.f83282678cd2bp87 ++0x1.380e51076f80ep17 ++-0x1.4e58c2d312887p1011 ++-0x1.709a10ec34872p-8 ++0x1.c115c4b52dd81p-11 ++0x1.dbf4f68b24b22p175 ++0x1.fdcfc21030c47p13 ++0x1.e3c234340a70cp870 ++-0x1.7ef4c3f9f118ep-17 ++0x1.4d8ec7ddbe0a5p-5 ++-0x1.ca4ae67422cf1p46 ++-0x1.1e79333cf2819p-16 ++0x1.088641b858387p14 ++-0x1.93191290365a6p163 ++0x1.f321d1dd96f4fp756 ++0x1.e771b71cceff9p8 ++-0x1.ae56c771a7cffp18 ++0x1.4ba1448b1d144p408 ++0x1.8439648ab93dep17 ++0x1.65f514736d787p943 ++0x1.fb6472b3bce83p334 ++-0x1.73e6857d4cf54p879 ++-0x1.0cb95433e6b2fp-1 ++-0x1.27ae632085c5ap2 ++0x1.f68fe052bec12p753 ++0x1.a8cc8446b7afcp17 ++-0x1.9e2494726de25p25 ++0x1.d825d64df0641p10 ++-0x1.ba99b6fb023c9p141 ++-0x1.53a8b1ea85f56p11 ++0x1.bfa5e68028b9cp930 ++0x1.feccf31f1a983p-5 ++-0x1.88d3a0062385ap-16 ++0x1.50f3313a7d76cp24 ++0x1.3ba8870e96502p727 ++0x1.fffc900187a9bp761 ++-0x1.683c12d0f5288p-5 ++0x1.89f8430bf5854p895 ++-0x1.dd1c76087e343p-11 ++-0x1.2be8706763f1ep-9 ++0x1.359462ac17cd2p15 ++-0x1.a972c2fa07af1p1 ++-0x1.fce055f5fd92fp397 ++0x1.93d615d9775fdp7 ++-0x1.a734a251665eap-21 ++-0x1.96aec33f91274p3 ++-0x1.d088b0ef518b3p24 ++-0x1.e36ff2227faa0p664 ++-0x1.968c9528f761cp-18 ++-0x1.55feb6226d9c6p-12 ++-0x1.c5fbf2dc0f1d5p374 ++-0x1.30df34bf0f038p-5 ++0x1.75ff2344da2ebp638 ++-0x1.6c95073fd64f5p-3 ++-0x1.80ecb21eaf859p23 ++0x1.a395a3209e01ep24 ++-0x1.08fa41560be83p-17 ++0x1.f5129125f47e1p-24 ++0x1.ea61c1b68dbaep-25 ++0x1.f9980204cad5bp13 ++0x1.ca5571cae9585p300 ++0x1.1457460444b6fp308 ++0x1.f75fc7df35e9bp463 ++-0x1.259877b2c7433p808 ++0x1.4c4fd2558a03dp-2 ++-0x1.77e600a0f8d1ap10 ++0x1.ce0a20f8622dbp782 ++-0x1.163735c430e54p21 ++-0x1.077f533341f7ap-25 ++-0x1.5bbea1334dce3p22 ++0x1.17edb056a1e69p582 ++-0x1.ab2f3216588abp-8 ++0x1.ad5473156bcecp608 ++0x1.495167c77e0b7p1002 ++0x1.ce1fb4d50c2d2p-2 ++0x1.0b6367a2e5b51p-13 ++0x1.4bebf24710022p18 ++0x1.cf035256dea51p-15 ++-0x1.b2d165e3c4438p329 ++-0x1.415066810a6ebp5 ++0x1.231e43a52fc6cp759 ++-0x1.3ad3866e7e5a8p-23 ++-0x1.f5ac52c3f7320p364 ++-0x1.3d01b455ea097p-23 ++0x1.a57f56aa1cc32p9 ++0x1.043250b5cbb79p892 ++0x1.49de321920550p721 ++0x1.c870766bd9d53p80 ++-0x1.c4fd755e743ffp21 ++-0x1.b37d062015770p-2 ++0x1.5022353402118p0 ++-0x1.c896463f5386cp-7 ++0x1.6f2f169391729p-17 ++0x1.bd8476b405432p250 ++0x1.322de42f4c84ap22 ++0x1.c3a2c33bf9e6ap43 ++0x1.9793e2027ca1bp19 ++-0x1.cced16209f116p-5 ++-0x1.535c83351d7dap13 ++0x1.5ab2e7182498ep1 ++0x1.c2aa0412973d9p19 ++0x1.6d5087c15f8b6p8 ++-0x1.cd9e619dfc1f9p272 ++-0x1.a291f0cf8c7f3p491 ++-0x1.7726454f22bc9p16 ++0x1.01d737edff679p-18 ++-0x1.2eee17c89d93ep18 ++0x1.d690a2fbc75ddp17 ++0x1.e477309fee5e9p-5 ++0x1.265176315b6b7p548 ++0x1.d036d3c6d89f6p4 ++-0x1.70e42649dec93p26 ++0x1.685656f96535ap21 ++-0x1.1cfd02fa51fdep-2 ++0x1.75d1455fcfa44p590 ++-0x1.718613f6ca999p645 ++-0x1.b254238b7bab4p472 ++0x1.7afe534d5251bp-9 ++-0x1.b3cdb07891d41p-2 ++-0x1.f956817bbdd80p704 ++0x1.e04a74104462dp14 ++-0x1.d953d153059f4p43 ++0x1.9a4fa2868350dp878 ++0x1.7efdd4f9e156dp671 ++0x1.940ad2c424e0dp69 ++-0x1.4d5ad6e0fa515p-12 ++-0x1.975f1701f1516p10 ++0x1.686ff10e39dcbp-18 ++-0x1.47c80041fd8f7p-6 ++0x1.0bbcf0786c446p-1 ++-0x1.7dc7163623c62p-16 ++0x1.c773a0bde09abp14 ++-0x1.59776427dd29ep22 ++-0x1.c428306233d02p1 ++-0x1.2b34449d61818p18 ++0x1.946545746e430p568 ++0x1.fc5d70b15d6a1p-12 ++-0x1.33c530a2e703ap198 ++0x1.4586c7aaed300p23 ++0x1.4047f3cea71fcp21 ++0x1.d95a0359eb81ep13 ++-0x1.2027133fa9651p-15 ++0x1.4c9c737d289bbp993 ++0x1.29ed82663c830p19 ++0x1.2a2431406668dp964 ++0x1.140c003d7b003p692 ++-0x1.ca47d1c5105abp778 ++-0x1.1e42d4bc3a5bbp621 ++-0x1.c487c6add8db4p104 ++0x1.5240c7e94fca2p346 ++0x1.8a21e49e99f87p739 ++-0x1.ec7a3732512efp665 ++-0x1.e7e0c60c72a8dp666 ++-0x1.4b2df12f55803p16 ++-0x1.1a11950ff7262p253 ++0x1.913010e21977cp22 ++-0x1.557b91af754ddp548 ++-0x1.1a5a85b93333cp0 ++-0x1.152436888890cp10 ++0x1.6242f32a2b3a9p24 ++-0x1.33e4b774b0406p79 ++0x1.4d20507145703p18 ++0x1.805ee638666c7p1001 ++0x1.2088f31deb3dep26 ++-0x1.2136d4a8edf58p369 ++-0x1.a5c002d03e071p350 ++0x1.8e25144772023p619 ++-0x1.49c336247aab8p20 ++0x1.209f141d6a3f0p905 ++-0x1.7df363dd844bbp301 ++-0x1.d8c5a2fad0ddcp843 ++0x1.955904e859e69p-2 ++0x1.b78170f9c0f21p396 ++-0x1.1856132fbf136p-1 ++0x1.daadd2d9a8fb5p366 ++-0x1.904c42e144851p840 ++-0x1.1086823c84588p579 ++-0x1.eee3b28d8e277p18 ++-0x1.601eb2587f407p532 ++-0x1.e77f45947cdeap646 ++0x1.ac9d1257a463dp8 ++-0x1.6022b4ad26dfbp0 ++0x1.35d246dce052dp257 ++-0x1.d87a368873c5ap11 ++0x1.b79c7081c299ep249 ++-0x1.e9b573eed4beep380 ++0x1.87fb012c6dbe8p22 ++0x1.9ff675e52fd5ap10 ++-0x1.e768e1c4dc0c4p336 ++0x1.eadd71dae6ae0p12 ++0x1.8097a2036b3f4p926 ++0x1.88fb542f66420p9 ++0x1.6548027f7a3a1p23 ++-0x1.9830129387949p17 ++0x1.c3d7c15bf28c5p4 ++-0x1.53daf69f10b1dp0 ++-0x1.b90f21ac330e5p21 ++-0x1.9b0a377b76cdep21 ++-0x1.d0a0a05604f38p-1 ++0x1.e3e8b72617fc0p17 ++0x1.ed2f26a4f9de4p19 ++0x1.af91858c30b58p20 ++0x1.4abc00b2bfabfp24 ++0x1.dc67b22b6d111p5 ++-0x1.c247046a455a1p9 ++-0x1.fb41c728f7cbcp14 ++-0x1.891962b6634f3p7 ++-0x1.7cbac2b76a18ep13 ++-0x1.fb101566432dcp25 ++0x1.90448733f0f47p23 ++-0x1.8884367e47700p13 ++-0x1.37d7a4bfa5918p15 ++0x1.778a11c7fccd0p22 ++-0x1.33526112284dbp22 ++0x1.acb6870fb9e6ap21 ++-0x1.5a7ec1b268139p0 ++-0x1.0ea0c6bcbb4cdp17 ++0x1.0eeb153b1d5cep-2 ++0x1.2915060d6792dp19 ++-0x1.f1c193bf9731cp7 ++-0x1.a37b92d1c834bp17 ++0x1.ea6c164f563d3p5 ++-0x1.c1a342aeeff9cp18 ++0x1.341f80345a109p18 ++-0x1.b96f42fb8bf4ep21 ++0x1.ed99773e5e0b2p-3 ++-0x1.1b9c620a22bdcp20 ++-0x1.93a342bce9d83p25 ++-0x1.5647879df4c39p5 ++0x1.1b5a74379d8bcp22 ++-0x1.f65e80bbc64e4p1 ++-0x1.f514118cd579cp14 ++-0x1.d72c805888cd1p20 ++0x1.891fc407363cbp0 ++-0x1.f5f910e2a922ap21 ++0x1.13ab76a6396c5p6 ++-0x1.779c34504754cp7 ++-0x1.0f44243ca88f6p4 ++-0x1.94d8e73e1e8d3p14 ++-0x1.86ae04f21b804p22 ++-0x1.dbaf1624ab130p11 ++-0x1.e2b2534178f87p5 ++-0x1.cd1f04e46ab89p4 ++-0x1.534e73dbf82d9p6 ++0x1.d77307aacf285p16 ++-0x1.d02d057014609p22 ++0x1.63c7f14ec1826p18 ++-0x1.4700d06054318p23 ++-0x1.8c9e77f2c5169p20 ++-0x1.4440d5499645bp13 ++0x1.f830d1530dc5cp6 ++-0x1.3158f1b64b60dp16 ++-0x1.fa3cd6daa1a84p14 ++-0x1.6f453297966cfp2 ++-0x1.b50c62db9fa33p24 ++-0x1.1f01b348e43cfp3 ++0x1.f96f42e962369p15 ++-0x1.d42235ed34040p11 ++0x1.6a97b4ebe527ap25 ++-0x1.069365a978478p19 ++-0x1.301312077210ep5 ++-0x1.079ed7eb88a2cp20 ++0x1.e181d27a14ee9p22 ++-0x1.1a6ef1e1b02b6p1 ++0x1.605322092fdb1p16 ++0x1.28cc961d4d565p1 ++-0x1.0d1b956eefd65p21 ++0x1.136a46db7583dp12 ++-0x1.463a51e655419p3 ++0x1.06b280c58f749p4 ++-0x1.81a8422a0e891p10 ++-0x1.36d660b754afep2 ++-0x1.869b518b7abf6p23 ++-0x1.ca5da55d82232p6 ++0x1.c7b553dac1cd9p7 ++-0x1.5c85b71c923d3p9 ++0x1.cd38e05f93bd8p23 ++-0x1.72322760da308p6 ++0x1.2696c6205df80p-2 ++-0x1.c31466f5abe12p5 ++0x1.53ca818613b56p15 ++-0x1.6d0e32af8c7fap25 ++-0x1.82c493bc254bfp7 ++0x1.29b5476d3c003p-3 ++0x1.545ad52476bedp2 ++0x1.210de622c50fcp13 ++-0x1.4ce9501256fecp7 ++0x1.bec8f2a75761fp-4 ++-0x1.ef455712f7403p24 ++-0x1.05ac51c61d35dp10 ++-0x1.179912e48e4d8p2 ++0x1.8309468cee051p-1 ++0x1.4ba7338d7adb9p-4 ++-0x1.86fb84d7687fbp13 ++-0x1.b440d2dfa7cfdp-3 ++-0x1.f21935fed929cp24 ++0x1.248647fb68621p9 ++-0x1.49cbf71886ed9p-4 ++-0x1.46b18502c494cp6 ++0x1.d60453a7627dcp9 ++0x1.90d72030622a0p-3 ++-0x1.99dc012169112p20 ++0x1.5b1582ba1840ep26 ++-0x1.a2d0e6722064cp10 ++0x1.51d930a0faa1cp-1 ++-0x1.e2f5b411dfbe0p11 ++-0x1.8978d711c2457p-3 ++0x1.9f390111d8e17p-4 ++-0x1.64e526c906dd9p15 ++0x1.3442b50cfed58p17 ++0x1.696de2ba96decp3 ++-0x1.1797a538e22cfp14 ++0x1.6b9a91b6bc0b6p15 ++-0x1.230dd7b9de0efp25 ++-0x1.c570875d25b1cp17 ++-0x1.4e93f3cd23d0ep7 ++0x1.836bf1949fdd9p-1 ++0x1.d55994d3bc6a5p22 ++0x1.34976081e3c93p0 ++0x1.325232301be88p-2 ++-0x1.724d85212c2bep21 ++0x1.f6ea543e490d8p16 ++0x1.9816822b9c9eap5 ++-0x1.2c5942e617f9fp25 ++0x1.9916d5a987c95p4 ++-0x1.9e10b7e75a799p17 ++0x1.cd41449ad1c08p14 ++0x1.bfbd219130397p10 ++-0x1.d299552d58110p20 ++-0x1.10990673db383p24 ++0x1.6860579da3e41p4 ++0x1.57c17718caa8fp16 ++-0x1.d480c713e380cp2 ++-0x1.5ef770cc4fd6fp-2 ++0x1.63fe54f142182p-3 ++-0x1.e57fe1748c166p25 ++0x1.38e472a1b69aep-1 ++-0x1.d7eb84d9725a8p19 ++0x1.979751083fa46p0 ++0x1.af7d8295ca361p0 ++0x1.93d6033938ce4p16 ++0x1.60d5f07b31fe1p23 ++0x1.d345416a2b360p14 ++-0x1.1451d5a8abe28p26 ++-0x1.da4ba1007d69fp7 ++-0x1.5c7583f8bbbb3p22 ++0x1.8c85070cab228p20 ++0x1.bc26967cda999p17 ++0x1.bcfc7238281b7p14 ++-0x1.f936f6a071917p0 ++0x1.c00e11c935746p0 ++0x1.759dc14fe7eb9p10 ++0x1.26c7d5b4b926ep5 ++0x1.c6512134c5122p-3 ++-0x1.9ebe3455ed58fp9 ++-0x1.be4832965373ep17 ++0x1.7f68b772cfc9ep18 ++0x1.baca2181e77dep17 ++-0x1.c2f755dd7a244p19 ++0x1.c4de32af2dd91p18 ++0x1.589f6697070fap22 ++-0x1.4a37b4210f303p8 ++-0x1.4ecfe0a126fb0p5 ++0x1.89dcb692c40e7p10 ++0x1.7d6342e0df42fp21 ++-0x1.0aec35f5f853bp-3 ++-0x1.7f68335d52ca5p10 ++-0x1.84f6e31758356p5 ++0x1.3a5a166d0b827p16 ++-0x1.eba706d2de457p8 ++0x1.489f72add92f9p5 ++-0x1.da6b250d6a545p23 ++-0x1.e50b35770abc5p-4 ++0x1.4b1b40263e386p6 ++-0x1.e6864361f583bp6 ++-0x1.bf8ca4dc53bfcp23 ++0x1.5de1b4a13724fp5 ++-0x1.3ccf14da239a8p16 ++-0x1.2c352220b6d92p19 ++-0x1.7a1a04680b72bp9 ++-0x1.63e577fdaa152p15 ++0x1.8dd7323abf3d4p-2 ++-0x1.7896d1e003d8cp5 ++-0x1.b4a72034750d1p19 ++-0x1.c9752551240f4p0 ++0x1.88c816d89c028p7 ++-0x1.e765347c03b1bp1 ++-0x1.f5a3e6d431f22p10 ++-0x1.bcbd4269b3468p-3 ++0x1.27d5c33a2b9cdp24 ++0x1.c24173c80f8fap-3 ++0x1.e5d8c7f661bdfp12 ++0x1.f248554706676p23 ++0x1.6b9b012dc2faap25 ++-0x1.c53702c39d6b5p10 ++-0x1.ba8441a0e4b94p13 ++0x1.6276f46c87421p23 ++-0x1.cab117d6a7540p2 ++-0x1.696a408d00cd8p22 ++0x1.a85c0033d55eap20 ++-0x1.f1d5338e62f8fp17 ++-0x1.cab73716e3a08p6 ++0x1.7ff7625f9ca6dp23 ++0x1.fee2e4e051542p25 ++-0x1.898ec4cbce2fap13 ++0x1.054c5714bee5bp1 ++-0x1.e769a1325c9b3p18 ++-0x1.00ef90bb0ea31p13 ++0x1.d99cf6f223a12p7 ++-0x1.4802b635a9faep6 ++0x1.5c49e6bca57d7p9 ++0x1.9cfa3500116d8p3 ++0x1.20a380697021fp22 ++-0x1.cc9ee1c701912p-2 ++-0x1.159814f41ffddp12 ++0x1.bcdae38e2096bp19 ++-0x1.a4c564a58485ep0 ++-0x1.b3ccf11be8cb0p3 ++-0x1.2e036784747fdp-4 ++0x1.3178b79bf23d6p15 ++0x1.762022e7db160p3 ++-0x1.19abb2ad29c47p0 ++0x1.702aa52a2b081p2 ++-0x1.3b2f85e3448eap15 ++0x1.fba527184dd2dp0 ++-0x1.0e13b3dc07053p5 ++-0x1.6e3d0266ae8b8p5 ++0x1.5a2d64a6aa882p14 ++-0x1.409c93e21717ap0 ++-0x1.90c8d5e8d4dbbp-1 ++-0x1.c6f751e442d8dp14 ++0x1.ba19007f25633p1 ++-0x1.30f675c6b9d89p10 ++0x1.f5966161ca0f3p19 ++0x1.8f2fb44baebe3p-1 ++0x1.974bc69c68cabp24 ++0x1.c56de726c32d3p0 ++-0x1.10dc876280044p10 ++-0x1.0aae85d11cbc7p3 ++0x1.fc6cb52005104p15 ++0x1.05e5130ff091ap25 ++0x1.e1ba941321d52p1 ++0x1.66c5a13cdadc8p5 ++-0x1.55c8322221dc9p14 ++-0x1.92bdc5556bd73p14 ++0x1.096e742861630p1 ++0x1.2a16e7c69bc3bp4 ++0x1.da44529305931p16 ++-0x1.c2d2d332c16bfp24 ++0x1.20c675f6fe727p5 ++-0x1.d38d6225474d3p23 ++-0x1.481de5e77c136p2 ++0x1.d279c02f61ae3p2 ++-0x1.e7d9573de4581p11 ++0x1.35fe74c080235p-1 ++-0x1.ac005162cad81p12 ++-0x1.13b0a70cb376fp22 ++-0x1.ebb45106c5803p24 ++-0x1.1dc057ac89a8ap3 ++-0x1.b8c0d151742e0p16 ++0x1.970375264e6a1p10 ++0x1.7e866527c9d49p12 ++0x1.c2ddf22b1bccbp1 ++-0x1.ab4174efa2f0ap15 ++-0x1.e253067271c08p2 ++0x1.0d4fb486d614ep1 ++-0x1.abd6e292f5548p17 ++0x1.eda5e7728b075p14 ++0x1.1454a6c45a426p23 ++-0x1.25e591a6a9a8cp0 ++-0x1.7cfbf5669ec46p12 ++-0x1.4679e1cbdf113p8 ++-0x1.ce9af0afc0c65p4 ++0x1.62f4634b7620ep4 ++0x1.62a9b3c2b9823p23 ++-0x1.1769864efbd8dp3 ++0x1.f34715ef52c0fp-4 ++-0x1.8b62623c188c7p8 ++0x1.7975e1f8c7996p-4 ++-0x1.3bb2403639e82p0 ++0x1.b19f02fc16c82p17 ++0x1.570b03b60ea6ap25 ++0x1.7b12645745ec7p25 ++0x1.c49c016ba07efp-3 ++-0x1.9654e0923906cp1 ++0x1.df287182db6fap-1 ++0x1.8082a573c5c90p9 ++0x1.067783759fc7ap1 ++-0x1.0193d3485481bp19 ++-0x1.f21fe48c86139p25 ++0x1.3b79f760c1f6bp6 ++-0x1.dfea72f0a3541p24 ++-0x1.6c0bc68338735p4 ++-0x1.585dc43d90bdcp-4 ++0x1.0b4a74ddaeffbp7 ++-0x1.96334231685ddp-1 ++0x1.f6f5538f88159p3 ++0x1.9b4c653dc6242p-4 ++0x1.8be735e377e26p-1 ++0x1.e11465e6856f1p0 ++-0x1.7198d0b28bc64p-1 ++0x1.dcbed3c85165ap9 ++-0x1.75cf96486fb5fp8 ++0x1.bc5d4762ed95ap18 ++-0x1.b4ab765a2ce10p2 ++0x1.eb8d56eda92c4p6 ++0x1.513d51d6c544ep21 ++-0x1.724cb58ad93ecp-2 ++-0x1.ae2f075a1c1e9p-4 ++0x1.3b27a36ab9d59p18 ++-0x1.3d35f4b149caap20 ++0x1.5d2301f5b984dp10 ++-0x1.b4f9911c7cbd5p5 ++-0x1.3c85c4e8893f2p0 ++0x1.ff16d24d0bd20p-1 ++-0x1.587e438ccd381p17 ++0x1.ef7cf5c296d36p22 ++0x1.e83847d5313bep18 ++0x1.7e01f150d09a5p4 ++0x1.d1c293dd145c8p3 ++-0x1.585e926cd5b1bp-2 ++-0x1.fb42f3ec59b27p3 ++-0x1.59b854f3c58b0p13 ++-0x1.f841b3d82549ap6 ++0x1.4aaa17e78776ap13 ++0x1.be3491ea08398p19 ++-0x1.8157656f77f49p10 ++-0x1.ef5b133a05238p9 ++-0x1.a84b3275b47aep-2 ++0x1.d2d40379eed33p-2 ++-0x1.b38e5132a2518p1 ++0x1.0b583593881eap1 ++0x1.de0c21d2e13f6p2 ++0x1.e57f91ef79d08p21 ++-0x1.35787426e7659p0 ++-0x1.2fc096d91558cp10 ++0x1.ca92d112801e6p-1 ++0x1.c130f673f9d00p3 ++0x1.ab43360e99861p7 ++-0x1.dfc494915cb98p16 ++-0x1.662a1708721aep23 ++-0x1.632a633f7b779p10 ++0x1.900746f103c7bp18 ++-0x1.1725a276c7758p13 ++-0x1.01e616e258a20p10 ++0x1.161df51eb42d5p16 ++-0x1.9116109f57baep-4 ++0x1.0924248619f04p-3 ++-0x1.528a30859b8aap1 ++0x1.3214b1efe1264p11 ++-0x1.279bd7646bb1fp14 ++0x1.9cac25e81f355p5 ++-0x1.c1b4e4b65f4c8p15 ++0x1.b9446219929c9p24 ++0x1.85dbc095a8b7ap15 ++-0x1.71a3c59471916p19 ++0x1.390f94db871c9p3 ++-0x1.667266143481ep-1 ++-0x1.3f41661ad1011p-3 ++0x1.39e7b0627a056p4 ++0x1.4be6257d4db36p1 ++-0x1.42b4f39ad58a8p21 ++-0x1.0ddfc3c773e9cp0 ++0x1.3e0b505a62bfep23 ++0x1.17ae947b55a16p3 ++-0x1.450e033bf3474p3 ++0x1.fc5a706652876p3 ++-0x1.ec85a78011932p-2 ++-0x1.1a2587c2acc7ap19 ++-0x1.0413c7bd307d9p-3 ++-0x1.c14f93438c9c7p24 ++0x1.c23452cc49201p0 ++-0x1.822bd11a73bb1p-4 ++-0x1.50a39655d03a3p19 ++0x1.93da259e63c6bp19 ++0x1.2b38c33777246p0 ++0x1.16ab521fc8f08p-2 ++-0x1.bd2e1426c0b97p9 ++-0x1.3f66f1cab29c2p24 ++-0x1.89542080e7b23p2 ++-0x1.a57e9572fab9ap-4 ++-0x1.ea38e30d4f2e9p-1 ++-0x1.6980315b826ffp21 ++-0x1.5f0ed5102c7e4p23 ++-0x1.bcee5575ad4e3p25 ++-0x1.f9a690462f13fp-4 ++0x1.b19d857513a36p20 ++-0x1.b14a15fcc1146p8 ++0x1.949ce3f3aeaedp13 ++0x1.d8b3403249e60p16 ++0x1.b42cd3bb4ca54p-2 ++0x1.805807a27361bp7 ++0x1.fa5ab42962ce2p24 ++-0x1.390543514c4d6p7 ++-0x1.a786543bad777p8 ++0x1.d38f169be1c02p18 ++0x1.a22dd22ff3ad6p3 ++0x1.5dafb7808dbe5p-4 ++0x1.c9dde4e221c90p-2 ++0x1.ad9804a975e98p7 ++-0x1.6b6343d804919p-4 ++0x1.40efa3258a7e0p-2 ++0x1.4994104561818p15 ++-0x1.202c76ef257b1p10 ++0x1.9dabc7786d2c8p3 ++-0x1.1bcf75d5e6e6ap4 ++-0x1.8802471c77a93p1 ++-0x1.8edc21142d145p2 ++0x1.21c2c22bbc29cp10 ++-0x1.6a6c82b8898ddp4 ++0x1.a3adf1a7b1a13p3 ++0x1.49d3d7c9f2254p13 ++0x1.b79d130f9431dp-1 ++0x1.0d1b7459c7e69p1 ++0x1.ab10c361ca6dep6 ++-0x1.fc0e761dad4fbp3 ++0x1.c45ad1e916b60p-4 ++0x1.077d3554fe489p0 ++0x1.dc36d78d24b31p3 ++0x1.60ae735b6f4b7p0 ++0x1.ee39527f71eb4p15 ++-0x1.6e7213bcc9467p0 ++0x1.431002c64536ep16 ++0x1.e5be6089f8d20p1 ++0x1.5e46b0f01f53dp23 ++0x1.69fff66d50910p0 ++-0x1.a0e9131bb56dbp18 ++0x1.674805aee7412p-1 ++-0x1.dabff64ead53ap0 ++0x1.d4a2274cff182p-1 ++0x1.fb3a27edc048bp1 ++0x1.a82744aaa00eap-4 ++0x1.302d4443c6c04p0 ++-0x1.2dc450ab7367fp-2 ++0x1.3cada637e6251p23 ++-0x1.1ba7f471bf8cep18 ++-0x1.a9a1b0bc1f9f7p1 ++-0x1.21a6435313043p-4 ++-0x1.72f020a7330b1p20 ++-0x1.9d4906d826708p-1 ++-0x1.b78fc5f05bc95p3 ++-0x1.156706eda9f85p4 ++-0x1.59c5832441b87p11 ++-0x1.de49e509aa110p9 ++0x1.e395a4ef1ad69p-2 ++-0x1.085cd295378c4p5 ++0x1.3a3167bb15567p19 ++0x1.f1c1f7a981956p17 ++-0x1.d57eb0ccc1192p24 ++0x1.49c4a7fce174dp12 ++0x1.42a6f5366340bp3 ++0x1.c73946000ef3cp15 ++0x1.31ce910c8f277p-4 ++0x1.0e1e520b20462p7 ++0x1.3c2672f8a2c03p12 ++0x1.0f9a64fdeb055p7 ++0x1.922625557e01ep-1 ++-0x1.abd306314559dp0 ++-0x1.1cdb82c46c748p22 ++0x1.f8b26607a6659p12 ++0x1.e5f5a3659806ep16 ++0x1.8a997615a5e47p4 ++-0x1.9a88b64eed8c5p12 ++-0x1.d685f50d87896p23 ++0x1.817095a80c3b6p-1 ++0x1.6142c7c1265e2p14 ++-0x1.d148003201454p5 ++0x1.2e8a76f17e51dp14 ++0x1.427402f1c86dcp0 ++0x1.9b2d423fdfa51p-4 ++-0x1.86f0c60e56f2ep-2 ++0x1.b32e43a763dc8p-1 ++-0x1.8cff449c1e97dp24 ++-0x1.880110436ba05p-1 ++-0x1.97b7d36271db4p1 ++0x1.f30b30d1aa293p-4 ++0x1.e5ada37f74455p19 ++-0x1.c26e223a61790p22 ++0x1.13a14657deeb3p4 ++-0x1.6478570f08c98p0 ++0x1.ceda65c15f255p11 ++-0x1.f62630fc890a7p22 ++-0x1.7782824757591p24 ++-0x1.98bfd567b54f1p-1 ++0x1.1c6955755acc0p3 ++0x1.65ac87fd01210p4 ++0x1.7bf572a17df2bp-2 ++-0x1.10ba33750f2b8p12 ++0x1.0eb2a5c9e5ab7p11 ++-0x1.a36377f89ac61p9 ++-0x1.1ef0e24d3ae7ep25 ++-0x1.754f03aa6e28dp4 ++0x1.ee53f7fbf6eafp-2 ++0x1.f50fe52b03ffbp2 ++-0x1.638950b33d379p1 ++0x1.3995d5405f180p2 ++-0x1.9d77e47674aa8p8 ++-0x1.32a0f62f354a3p21 ++0x1.26dbc38bc8937p22 ++0x1.3b7b3206286bdp-1 ++-0x1.4ee7f59ce5c39p4 ++-0x1.d6a1e75344b65p13 ++-0x1.d718e5bc70942p10 ++0x1.3f5d423f663fcp13 ++0x1.f01b35c0d9d59p25 ++-0x1.8bcc84208bd5dp-3 ++-0x1.181ad4f3244b1p16 ++0x1.0273210f71286p18 ++0x1.d29bc36a4515dp11 ++0x1.a20d92a1419efp15 ++0x1.2f51d558be78cp16 ++-0x1.5e6b84e9ec483p10 ++-0x1.16a2b6ee1de0cp11 ++-0x1.569474dd1954cp16 ++0x1.fb10a07b26f8fp19 ++0x1.8585c235045a7p5 ++0x1.d3337464c4076p2 ++-0x1.972fd5ff17f98p3 ++-0x1.2ed312782dbfbp17 ++-0x1.efa051135e1aap8 ++-0x1.f710d597fef71p8 ++0x1.aa8dd6f8a9beap9 ++0x1.9f1dc377cf120p2 ++0x1.62c3a7358a4f6p11 ++0x1.34efa6be82f88p14 ++-0x1.184f25cf949f5p0 ++-0x1.3f7491d3e3894p12 ++-0x1.f221e4559b24dp3 ++-0x1.f342571a6ca3ep1 ++-0x1.b50c874b791dcp23 ++-0x1.6b12a335d95e7p-2 ++0x1.73cf16b52cc79p2 ++-0x1.b18fd6ef0fcc4p-4 ++0x1.261c17c736b83p0 ++-0x1.c86005afe1b46p0 ++0x1.0fd231c7aab56p-3 ++0x1.3b66100eade0cp-4 ++0x1.1b62615d4579dp1 ++0x1.cadb62a061c44p24 ++0x1.3ae06343b6bcbp14 ++0x1.f291c2e85d959p-3 ++-0x1.061340896769bp1 ++-0x1.2bd0077f3cf19p-2 ++-0x1.ad7016b69a63fp-4 ++-0x1.e62a635c849dap20 ++-0x1.0b91a74b137c8p13 ++-0x1.90d2306d27347p8 ++0x1.844f36ffbcbf5p7 ++0x1.a43987044698dp3 ++0x1.4b28a54b06fd8p2 ++-0x1.13f7a05c3396fp-1 ++-0x1.a7f08659fdc44p7 ++-0x1.6230f3bb15667p1 ++-0x1.bb4c27fb03a6fp19 ++-0x1.abd3330e2907dp0 ++0x1.a10a926b01f22p20 ++0x1.4ef4737029ef8p20 ++-0x1.4fbc07dc0319fp21 ++0x1.4f5cf32c6f33fp20 ++0x1.9246404054591p0 ++-0x1.6556d1b2edaedp-2 ++-0x1.8609762c8b440p19 ++0x1.f7e69735662a3p25 ++-0x1.e924f3e7030bep15 ++-0x1.9288c5e79cf59p-1 ++-0x1.576322583b5e2p3 ++-0x1.36e724118914dp17 ++0x1.5af0268d084b3p0 ++-0x1.8677c0dacd6e4p3 ++-0x1.5499134382165p4 ++0x1.bbca46c3b4d52p0 ++-0x1.163cb68bf3dccp-1 ++0x1.cef2e67ee56dfp5 ++0x1.f6364662207f1p22 ++-0x1.c2e3f1f65d52dp1 ++-0x1.9d8c95af70b3fp2 ++0x1.a14de64f1781ep1 ++0x1.b20186799badbp14 ++-0x1.399014458c7f0p-3 ++-0x1.0fc4b2f3ed7c7p-4 ++-0x1.eded7159875dep0 ++-0x1.a263c32babe5cp-1 ++0x1.f58cb01f888cap-4 ++-0x1.697672487c482p18 ++0x1.5c460397011dbp-1 ++0x1.07b5c65ec8ad3p15 ++-0x1.4eb6a36be78ecp-4 ++0x1.e310154adf232p-4 ++-0x1.da842458624edp2 ++0x1.35a40221fabbbp3 ++0x1.ffcc323b881e2p-4 ++0x1.ee99c7c780be9p-4 ++-0x1.f901049a4f638p11 ++0x1.d3e7502eab4b6p-3 ++-0x1.253ef59d5b22bp3 ++0x1.059d75fdfb006p1 ++0x1.cbbfe23e9b204p1 ++0x1.d708f03a832c7p-1 ++-0x1.ab75a3d27c91ep-4 ++-0x1.6be4347f71cc1p-4 ++-0x1.e8c9e1c74124ep-2 ++-0x1.0e5f50bd9ab17p0 ++-0x1.057b22cc1ca57p-2 ++-0x1.4214a3145eee7p16 ++-0x1.8ff493b4d0161p3 ++0x1.ff71c54ac0722p1 ++-0x1.cbeb16791916dp2 ++-0x1.dbaa7305da875p2 ++-0x1.9e4ca5923b8f7p5 ++0x1.85a4e1dc18565p4 ++-0x1.66a210312f4fcp3 ++-0x1.60ff74a0b47d6p-4 ++0x1.2262b5f1adeacp-1 ++0x1.4c7db0b6a7422p4 ++0x1.e3e8f16cceb2ep6 ++0x1.ff5074ef37c49p0 ++-0x1.10e6c770bce9bp4 ++0x1.c6a3a0025e5dap22 ++-0x1.0bb1439478f5dp-2 ++-0x1.6fb0156408828p2 ++0x1.b28ff518979b6p1 ++0x1.9f63566d75ba1p0 ++-0x1.cdbd94929acf6p16 ++0x1.f3dd143481244p-4 ++0x1.5769939835a80p-1 ++-0x1.6b4ea312b9249p-2 ++-0x1.a73b84ba8d9a0p-1 ++-0x1.841c832628699p-2 ++0x1.15d930c5d9513p4 ++0x1.41317671877f1p24 ++0x1.c75165ddd78c0p0 ++0x1.693575a9d1138p3 ++-0x1.717b171687985p16 ++-0x1.945b94a09037dp-4 ++0x1.927ee26038e68p2 ++-0x1.f599772ffd90bp19 ++-0x1.5c5b47eaa8583p0 ++0x1.89ecc1f399ce5p2 ++-0x1.9feaa603120d3p-4 ++-0x1.61b0d15368a4cp19 ++-0x1.dd65243b8102ap-3 ++-0x1.d01653391399cp-4 ++0x1.a6fa353616c25p-1 ++-0x1.186f755c9547ap13 ++0x1.8ea3a743322dbp4 ++0x1.01f3d2122c4b1p13 ++-0x1.b43ad29df2703p2 ++-0x1.7ae312c61df29p2 ++0x1.b8bdf3bef563bp11 ++0x1.f8e434e9db303p-3 ++-0x1.f2c9a511ea803p1 ++-0x1.97c2f0e9d43b1p-1 ++-0x1.116c80ce25470p-4 ++-0x1.5a980694bcb2fp-2 ++-0x1.32e545c122be7p17 ++0x1.fa5101a1db44ep1 ++-0x1.acbb05a4fcad6p2 ++0x1.9c7b63462ad27p-1 ++-0x1.0b5fc67ab2279p-3 ++-0x1.db886026a7769p3 ++-0x1.fc0015986ba7dp3 ++0x1.08da532d7c2d8p2 ++0x1.1efed083d86d2p3 ++-0x1.93ddc734949adp-1 ++-0x1.8139b09417df1p5 ++0x1.b19e95af39a66p-4 ++0x1.fa36f74895f3dp-3 ++-0x1.8a50f1b23e664p2 ++0x1.eb65d4abdfdddp24 ++-0x1.5b58c5cf71143p11 ++-0x1.93789271d3e79p1 ++0x1.32d8d3818df7fp-1 ++0x1.a02656baff621p3 ++0x1.456822523692ep-1 ++0x1.9e821342b14aep24 ++-0x1.bacbd3affeb41p1 ++-0x1.5b4543a6420e3p1 ++0x1.94c0e4a504564p20 ++0x1.12189312e1789p3 ++-0x1.5465839d51246p16 ++0x1.212ec63d1fc28p-2 ++0x1.ea2df3e7023d5p-3 ++0x1.de0b83c02018ap3 ++-0x1.8240253b43da4p2 ++0x1.767607eab92e7p0 ++0x1.d9ccb717b987ap0 ++-0x1.98dee08d0a3adp3 ++-0x1.dcfca0020809dp-1 ++0x1.7f869312366ebp22 ++0x1.cd961413f209cp-1 ++-0x1.3221407824fffp2 ++0x1.2ade9658e1126p2 ++0x1.b34083bdc8115p2 ++-0x1.980922c6e082cp-2 ++0x1.799832b5bfa6bp26 ++-0x1.a56c15d91cd8bp-4 ++0x1.44a3a79631f72p-1 ++0x1.dda0957785a67p-3 ++-0x1.c54b66b69cac8p2 ++-0x1.b0cc178214892p0 ++-0x1.c1e5f06ea400fp17 ++-0x1.d29493a595f5ep2 ++0x1.8bdae6ba44b4bp-3 ++0x1.8d26f713baf31p13 ++0x1.8cb220c346946p3 ++0x1.71de257cb436dp3 ++-0x1.a52e1674a0f6dp-2 ++-0x1.418065835e8cfp2 ++-0x1.a4d5d76840286p-4 ++-0x1.3ed0116e38f5ep2 ++-0x1.87c515996b87cp20 ++0x1.35d67495a3d85p13 ++-0x1.430b146120c64p13 ++0x1.ce7d04c15930bp2 ++-0x1.704f325206940p2 ++-0x1.9e18f50e6cf7fp2 ++0x1.5269e51b29116p0 ++0x1.227c74bba7565p4 ++0x1.a81c022b943a6p-1 ++-0x1.a105212679fabp-2 ++0x1.b87ac53cacaf7p18 ++0x1.e71b216138183p17 ++-0x1.1668a6b611528p3 ++-0x1.586af282ee66ap3 ++-0x1.a646106bb9884p1 ++-0x1.781022484b783p2 ++0x1.4c9ab7f28c644p10 ++-0x1.c6dbc36bae35bp-1 ++0x1.55352240eedc3p4 ++0x1.b6f2b21a2eae2p22 ++0x1.9664d29b9e356p3 ++0x1.f3919543276fcp3 ++0x1.7cc834f6358cbp-2 ++0x1.9f07d58ef3ac7p5 ++0x1.9de5b20a4a764p1 ++-0x1.8aea705541631p18 ++-0x1.0952739540b5ap4 ++0x1.2993d67ddc894p0 ++-0x1.cecb056b46a86p3 ++-0x1.585ba625ce37dp4 ++-0x1.2c85b49135c11p6 ++0x1.1b03f53976b8bp2 ++0x1.804b5294eab8bp2 ++-0x1.15f090515ae7ap1 ++-0x1.c40c30eea2397p2 ++-0x1.d222d4cc61156p0 ++0x1.491254db782e2p9 ++0x1.089244b067d20p3 ++0x1.847fe11643736p3 ++0x1.aae600dfbb0d6p0 ++-0x1.c60c05a64e456p2 ++0x1.d3772608146aap16 ++0x1.210261c1bad19p19 ++0x1.7f61635ba6212p1 ++0x1.e03d05d58d78dp1 ++0x1.6fa5277426dffp2 ++0x1.7dd7a003f1fc5p8 ++0x1.d3c3c54fb269bp0 ++0x1.456084e1be432p-1 ++-0x1.9f35500c78f46p-4 ++0x1.b17ad24d5328bp21 ++0x1.45a4a452108b8p3 ++0x1.ee7835a4a15cap2 ++-0x1.5c88834020c4dp4 ++0x1.8195e389f02f0p1 ++-0x1.4d25e7891a5e3p1 ++0x1.a368603b90642p2 ++-0x1.fc1e4287a59a4p2 ++-0x1.087e41d357143p12 ++0x1.ccdb52d850e64p14 ++-0x1.ae95e02bbf2c6p2 ++0x1.d32c40fb7eed5p1 ++0x1.f4be74fc543aep-3 ++-0x1.c549772b73225p-3 ++-0x1.8e5cd0178d9fdp20 ++0x1.c81356a2c080ep-1 ++0x1.ed40040dadbe7p8 ++0x1.9914806c4c867p20 ++-0x1.501a27c66dd4ep21 ++0x1.dad8e19368949p18 ++0x1.4d9500c7ef7d7p0 ++-0x1.dc10c31391064p-4 ++-0x1.fc9d741aa8b78p15 ++0x1.467ff5c092692p6 ++-0x1.57a300f11a56dp10 ++-0x1.3289b70ab408bp-3 ++-0x1.406e2614c2a4ep4 ++-0x1.7320110d87bd1p17 ++0x1.ad9f174b85f67p-4 ++-0x1.6c05d0f81d05ap5 ++0x1.4d9fc757d40a4p2 ++-0x1.900c147490e47p1 ++-0x1.9bf4951c2d822p2 ++-0x1.f57e420cd00b7p3 ++0x1.748fa1fba98f6p-2 ++-0x1.7a48c776cf20ep3 ++0x1.5e1a45452622dp-2 ++0x1.ed24031124eddp-5 ++0x1.e691f37be2dacp3 ++0x1.231531dd30f1dp-2 ++-0x1.564fa0bfd60b1p18 ++-0x1.ac70324dce95dp1 ++0x1.a0d493588e057p23 ++0x1.f98780fb132a7p2 ++0x1.90ebc38d03a87p0 ++0x1.ff96e2f54d04dp24 ++-0x1.bf74b63ca40bbp2 ++0x1.9af727dde69f1p0 ++-0x1.e44071bd7b86bp1 ++-0x1.28d786fdcd052p26 ++0x1.8692e232cdae6p3 ++0x1.9b50469f50d88p-4 ++0x1.3ab662a7c7a65p-1 ++-0x1.d085169ef3012p2 ++0x1.bade31b1d2841p13 ++0x1.264cf12a5f18cp-3 ++0x1.eaf301a2af660p1 ++0x1.e09f42ccc01f3p3 ++0x1.4fef37206f995p20 ++0x1.3e7ff15ec0784p4 ++0x1.6ef7504e7c351p0 ++-0x1.65bfb1e6dffa7p4 ++0x1.034610cc74f21p4 ++-0x1.e7cdf2d5b5d7ap1 ++-0x1.56d207d3b7f15p26 ++0x1.9ade7656cdb52p-4 ++0x1.da34f1f8ba414p-4 ++-0x1.0620a0b7e0120p25 ++0x1.0aa527ccceddep12 ++-0x1.ff9b102c34c06p-1 ++-0x1.680934192f0eep-4 ++0x1.633c770deedcdp4 ++0x1.ac3d562aa3882p23 ++-0x1.fd93150cab59cp13 ++-0x1.2e68b5aeb1933p1 ++0x1.16a1b3634e220p4 ++-0x1.9a3017378b041p2 ++-0x1.9c6406add3380p-1 ++0x1.d28307b34902fp10 ++0x1.a256a6fc28529p0 ++-0x1.fc32d7015c25ap3 ++-0x1.90fe456ab6cd4p-3 ++-0x1.d82302f16ed56p3 ++0x1.e29194bbd8108p-4 ++0x1.ba28875f65f3fp2 ++0x1.aa02215f4279dp3 ++0x1.04b274650ae6dp16 ++0x1.5720460ea9547p4 ++0x1.d3565193466b6p25 ++-0x1.18ab75ac729b0p3 ++0x1.62b49423eac50p13 ++-0x1.5d5f51118764fp4 ++-0x1.0d11554e6379ep-3 ++-0x1.f7b3b55dfdf96p-5 ++0x1.d97d4089c87fdp3 ++-0x1.74dd56532f950p-3 ++0x1.f41ba46bbb346p3 ++0x1.15305286fef88p26 ++-0x1.6c32d3a71f573p20 ++-0x1.65a80408231a7p-2 ++-0x1.ef3b14f8fa244p15 ++-0x1.4060641b877f0p7 ++0x1.bb6e36c2071b4p20 ++-0x1.3a30a6c1a2f5dp3 ++-0x1.74ae12ec6a97bp1 ++0x1.29d196ea1da27p2 ++0x1.bfbfc35e1396cp2 ++-0x1.967993d8f656bp3 ++0x1.7f6f16b033158p15 ++0x1.9e5a06b632d09p2 ++-0x1.de52b7137b48ap-1 ++0x1.42702419de7adp18 ++0x1.87fba15348b74p-4 ++0x1.f1d4d2ed50b91p1 ++-0x1.f58ce2e3bed62p20 ++-0x1.0343179c7f2d3p4 ++0x1.c08e07f343f5fp0 ++0x1.c1bfa71d8698ep2 ++-0x1.3b5384007645cp3 ++-0x1.985c0097100f5p8 ++-0x1.31a462d00219dp14 ++-0x1.a1d1359744ef1p19 ++-0x1.4a50169190a5dp19 ++-0x1.47152657669dcp26 ++0x1.08ae25f622e03p0 ++-0x1.4a3ce79774730p1 ++0x1.4a69800ca5d1ep0 ++0x1.f5fc930d18d8dp4 ++0x1.643412561c61fp-4 ++-0x1.e07966a7404c6p11 ++-0x1.e6fbf6a0a6034p3 ++-0x1.fbd6e37a14101p2 ++-0x1.5a7960250d793p2 ++-0x1.a26cb448f2963p11 ++0x1.d54cc4dab0dc2p0 ++0x1.d49952cff6480p20 ++-0x1.a34ce477fb20bp-3 ++-0x1.9cec55870bb73p14 ++-0x1.cc4e1541cff60p15 ++0x1.17e2f5c7ae2dap0 ++-0x1.de61b653424aep5 ++-0x1.9f6f34286c574p10 ++0x1.d2b86784608d6p-2 ++-0x1.3395902eb25c8p20 ++0x1.69cdb5f2237f6p21 ++-0x1.50aa7555719afp1 ++0x1.450902d00dba0p14 ++-0x1.3581552b644e7p17 ++0x1.0c1ca2229363cp1 ++-0x1.aa0c55ea1366ap-2 ++0x1.935996dd54b32p16 ++0x1.3506f3b2a8c5bp4 ++-0x1.9ef4a31a3a5b3p21 ++0x1.6aed610ee94e6p3 ++0x1.9ec537389a85fp2 ++-0x1.b61b32703965cp0 ++-0x1.47b533489ac3cp14 ++-0x1.7a086173ea69ep-4 ++-0x1.9096e7b165d22p-1 ++-0x1.832a11dca8760p15 ++0x1.b46a101d0d0d8p-1 ++-0x1.754e34245b1d5p2 ++0x1.bd9a871af2cbcp19 ++0x1.91cd45ac60878p6 ++-0x1.f90ce27d3136fp-1 ++0x1.c793155aaf605p-2 ++-0x1.43c3752dba4e3p4 ++0x1.734ff4f414827p0 ++-0x1.5694b43404e9dp1 ++0x1.15ff858370de7p17 ++-0x1.6cb074bf09b29p-1 ++0x1.e15824dff4832p0 ++-0x1.a49b82d01f413p15 ++0x1.4e92a530645fap10 ++-0x1.0fb4501d2b553p8 ++0x1.6722853482a22p2 ++-0x1.e5ff02b36b547p3 ++0x1.8fd106fbca583p1 ++-0x1.cd3b94e6e9646p-2 ++-0x1.67e73006e1cbbp25 ++-0x1.798fe4eef94dap4 ++-0x1.9f845051b854ap0 ++-0x1.1801059eda986p-2 ++-0x1.e43bb3c1ba526p18 ++-0x1.858b7675fe3fep15 ++-0x1.95e2345d5fe0bp4 ++-0x1.3c5416ca090bap19 ++-0x1.495fa628eb2fcp-2 ++-0x1.7ef11453fd131p0 ++0x1.97369592c74a1p20 ++0x1.e538f5fd514c9p-4 ++0x1.3bdd939d79b75p1 ++0x1.51de3650db77cp13 ++0x1.0f1761cd1a600p-4 ++0x1.148233b993d99p2 ++0x1.93cd375850c5ep12 ++0x1.27629514fe508p-1 ++0x1.bb10511526fa8p-2 ++0x1.02fab5f81d1e0p11 ++0x1.59dbf0784024cp1 ++0x1.83fca118a0f13p11 ++0x1.549503148702ep20 ++-0x1.ebc3651a9536ap0 ++-0x1.a174916f8923ap10 ++-0x1.e62893a7af3aap-2 ++-0x1.f566616109d72p7 ++-0x1.6270b6860dc86p4 ++0x1.a88e8569e224ap2 ++-0x1.4f3ae6b9b7d44p15 ++0x1.565a510728736p3 ++0x1.ae5ff3ea9acf8p10 ++-0x1.cdaad52eecbb7p-2 ++0x1.14fe36e4c388fp-4 ++-0x1.b0fac12481c0cp-2 ++0x1.4f9e7648c99dcp24 ++0x1.fff1f1682d85cp23 ++-0x1.4e07d1cba1b3ep22 ++-0x1.aece66271bb23p-3 ++-0x1.480661fd12984p3 ++-0x1.cc42214f97882p9 ++0x1.9f8941c90d141p1 ++-0x1.a7cb21d392653p-4 ++0x1.f45fb2a44f985p21 ++-0x1.73ea53f7b5a83p0 ++0x1.ae0e97a5a226ap2 ++0x1.7116e4f8efeb7p13 ++0x1.b8689636e09d7p1 ++0x1.f87ea145c3eeap4 ++-0x1.7fb3d33c4b6f7p1 ++0x1.816ed7aac792bp-1 ++0x1.d46e75812b0cfp17 ++0x1.a94d05d52e058p-3 ++0x1.857ca451b8d1dp21 ++-0x1.dfe14188b48a1p14 ++0x1.7c5cb7db4b247p-3 ++-0x1.5b00f07b798c2p26 ++0x1.4927153475bd8p3 ++-0x1.659684713be27p-1 ++0x1.4b69e654ab5ecp14 ++0x1.599ca7a34504cp7 ++-0x1.e234942683626p-4 ++0x1.2dc9e2b98afd5p12 ++-0x1.11eff3e09aa18p1 ++0x1.66a8713d0f478p-4 ++0x1.ae07b611b2ed9p25 ++0x1.e5d5673df6e1ep2 ++-0x1.bc9a57d63d9cap-3 ++-0x1.f150f7c1a2718p22 ++0x1.a39e27b64a20ep0 ++-0x1.662a54062851dp4 ++0x1.c17bb0a5e2ee3p-2 ++0x1.2cde97703beb8p3 ++0x1.76c2a0f2dca13p1 ++0x1.44ef2264d458cp13 ++-0x1.39785220a1e11p3 ++0x1.0a9a846a9e8e0p3 ++-0x1.4c66f2ff6cd5fp26 ++-0x1.a3cf306fe7875p2 ++-0x1.f8fad771fd336p-4 ++0x1.56cce173621b0p23 ++-0x1.8b40322bb8a97p1 ++0x1.e9b391467db49p8 ++-0x1.c0b11253299d7p2 ++0x1.ce6213f40c4ddp3 ++0x1.98a4658fa2de2p0 ++-0x1.7714e7503ccfcp1 ++-0x1.e2c751117856dp-3 ++-0x1.116370d84cda0p1 ++-0x1.8a95106b4dd41p1 ++-0x1.83a101240371bp-1 ++0x1.a87241ef9f0afp1 ++-0x1.887e6438b7d77p0 ++-0x1.c51f915cee016p21 ++-0x1.90afb3af83a46p-2 ++-0x1.dd69445e1bce5p7 ++0x1.52ede1630d384p25 ++0x1.e5cb3017006a4p-3 ++0x1.7b37a1ae9bea3p22 ++-0x1.564077be3ff7dp19 ++0x1.0127514e5d65fp-1 ++-0x1.86f6945344917p2 ++-0x1.e27824003e156p-4 ++0x1.20f513644333bp6 ++-0x1.4d48e7c7bd1c2p17 ++0x1.df4f418ae8bcdp0 ++0x1.b530d7eb8c491p14 ++0x1.ae84640c8c195p-3 ++-0x1.99d503f399970p3 ++-0x1.7bac758737ddcp23 ++-0x1.b2e7529718232p5 ++0x1.d99e875cf2a8dp12 ++0x1.ad3fa0d2f24b0p-2 ++0x1.fd0875247597fp17 ++-0x1.d28dd391af036p8 ++-0x1.18c393d58dd4ep10 ++-0x1.7a2a73ac407fep10 ++0x1.885ec3882da73p1 ++-0x1.f4c664113f0d4p1 ++0x1.dc61d2bd58699p-3 ++0x1.50f330caf00fdp9 ++-0x1.2b4c2627a3648p24 ++-0x1.bddb32bea8700p-1 ++0x1.e55ac08bf2b42p0 ++0x1.e75cf1f0cd76ap0 ++-0x1.aeb8e3625b94ap-2 ++0x1.75a741f3c5a9ap-1 ++-0x1.017500e83e2dap7 ++-0x1.935241a43297ep2 ++-0x1.8c08819bbaca3p12 ++0x1.28f7569578c0fp15 ++0x1.9a68f5a0e6cb9p25 ++0x1.e99ce04bdef98p-1 ++-0x1.566b2614bedb3p22 ++-0x1.eb5840a35fdc6p25 ++0x1.75489211def83p19 ++-0x1.832cc5ad826a8p4 ++0x1.746297f53d755p1 ++-0x1.a92422038c33dp23 ++0x1.c94a716ac9472p2 ++-0x1.a780f5b351552p11 ++0x1.39b4a689dc65fp15 ++-0x1.063fd407d19b2p17 ++0x1.6c96851c4c0bbp-3 ++0x1.343a53f0ac710p-1 ++-0x1.78da56a8efd89p-4 ++-0x1.2e08371fa4c1dp1 ++-0x1.9cb170edaa8d6p0 ++-0x1.c47b95e92d85fp5 ++0x1.22d540cd4e25bp0 ++0x1.c0d7f6f009ad8p11 ++-0x1.694c81226c9d5p0 ++0x1.559fe2c8a2cb1p15 ++-0x1.be71b00f82b6dp-4 ++-0x1.949d26f8956a4p0 ++-0x1.e794823d81668p2 ++-0x1.913cc722037aep4 ++-0x1.6c89e06ae49a0p7 ++-0x1.d85ac741cf404p-1 ++0x1.827ce70a4080ep-4 ++0x1.d00906b80e8fep1 ++0x1.a5eb32c312d71p3 ++-0x1.1c82507185876p-4 ++-0x1.2745f53788520p8 ++-0x1.d59f5009d4e5cp2 ++0x1.cc2070bdb8850p18 ++0x1.1720074ab1a4ep1 ++0x1.8cd267087035ep1 ++-0x1.e5066000552e0p1 ++-0x1.894bb7d7746d1p0 ++-0x1.ffc9031f3af42p16 ++-0x1.9867b7cae951ep11 ++0x1.33ffa6ff96953p-4 ++0x1.18b8b52580f2dp-1 ++0x1.8036540909c52p1 ++0x1.cf69072d92af2p9 ++0x1.980aa121c5e65p1 ++0x1.5f89c3f3a61c7p25 ++-0x1.2e09a10012e1fp5 ++-0x1.a585c7402c27ep-2 ++-0x1.485eb3f6d7ecep-3 ++-0x1.f9bd852a74583p10 ++-0x1.3b7f83fbcda42p1 ++-0x1.6591217c65a71p17 ++-0x1.7b21e6ee5ca9cp17 ++-0x1.c979f792dbca7p11 ++-0x1.77bf75c469ac6p0 ++0x1.d16b6275c0f7dp14 ++0x1.4917f41f8b6a2p1 ++-0x1.19cd525e86beap9 ++-0x1.6e5003f71a811p14 ++-0x1.370ab7f9719f2p14 ++0x1.386006d492b82p3 ++0x1.1a58e03059f7cp12 ++0x1.2500012feb2d9p7 ++0x1.4d36d2e22e8d4p5 ++-0x1.f3e1a009ee07cp23 ++0x1.4668d78d78095p12 ++0x1.79aa13307ebf8p3 ++-0x1.c487960e89b2bp2 ++-0x1.06e8a5658fb35p-2 ++0x1.55c7f05a491fdp24 ++-0x1.0523e2d088c7bp11 ++-0x1.f62864f5158c9p19 ++0x1.c49ce5492ee6dp-3 ++0x1.cdb9120e5b67ep17 ++0x1.8f8a5268e820ep-4 ++0x1.6ee1e30d592a4p0 ++-0x1.812844c5cb134p2 ++0x1.6df1755141fd4p24 ++-0x1.728300fa1781fp14 ++0x1.8947c3e79ed66p0 ++-0x1.9844d48620c7fp8 ++0x1.23655019dc226p2 ++0x1.a9e1473cc8a13p12 ++0x1.66305231c4640p7 ++0x1.82af66fe8c503p2 ++-0x1.bc6b01062138ep15 ++-0x1.896955bc6c769p-1 ++-0x1.a9ee65b00a2e8p21 ++0x1.f4c3e6cd69231p-5 ++0x1.9013f5a753f8ep8 ++-0x1.d92d8497ba609p24 ++-0x1.2e2681d1e84bap3 ++0x1.8be4435259a45p7 ++0x1.79c7f5a2e6e62p2 ++0x1.acdbe4eb4b925p22 ++-0x1.35aae23bd5519p3 ++-0x1.733ba7e8564aep20 ++0x1.f77991555ff26p-5 ++-0x1.1c5745f873d55p-3 ++-0x1.1b14e11d332dcp-3 ++-0x1.c731514f4f896p20 ++0x1.a0c5c483ebf17p7 ++-0x1.36b1d13cb2c7ap19 ++-0x1.7a38c0bb685a4p2 ++0x1.6236e4c6b17b5p10 ++-0x1.f2b9767a6798ep1 ++-0x1.3958443bc6781p3 ++0x1.d6f1f3d9224a2p13 ++0x1.81b9f2569be9bp-2 ++-0x1.8f52243d1205fp2 ++0x1.2e2e25cd3e4a7p3 ++0x1.d34c76b790df9p2 ++0x1.7a91752f07156p26 ++-0x1.454b06030e52cp1 ++0x1.2c40025ab0e66p3 ++-0x1.76d66036ed303p18 ++0x1.667592a8df4efp25 ++0x1.415511ec79f5ep1 ++-0x1.7bbb12490183cp26 ++0x1.824ec336555b6p1 ++-0x1.b8dd16e17d94dp-1 ++0x1.7df770031af25p3 ++0x1.7bff02b791614p-3 ++0x1.13f597d144c47p4 ++0x1.81e4962b19a23p0 ++0x1.3900731ded692p13 ++0x1.9ed1c64a3942bp0 ++-0x1.e87ae52969fcdp-4 ++0x1.79bb77cc1f90cp2 ++0x1.14693020af9bfp23 ++0x1.8b61256862012p0 ++0x1.edae80414ab70p3 ++-0x1.93ab70cfa5b06p20 ++0x1.8ba9c535f5d61p1 ++-0x1.805ee155735acp1 ++-0x1.838ec4acbd018p-2 ++0x1.f32f63eb94fabp2 ++0x1.e241b1649d3b8p5 ++-0x1.3253458419677p10 ++0x1.e0df72e4e1543p11 ++0x1.e11d606072ff9p3 ++0x1.86c16681265b6p5 ++0x1.8628f44708c8bp23 ++-0x1.e00f07434fc92p9 ++-0x1.c17540870ee47p3 ++-0x1.9e5bb19dd040bp3 ++-0x1.4b2ae7e7eb36bp7 ++0x1.563c647e67c1cp14 ++0x1.9fd3804bf753ap1 ++-0x1.e01b361851110p5 ++0x1.f4c404c183defp3 ++0x1.91f9d60737e96p3 ++0x1.c2b2e43a35dc2p3 ++-0x1.93d6f51eaa6b7p0 ++0x1.077b77efc4f82p4 ++-0x1.5a77916ce4424p4 ++-0x1.68b4d3263da38p21 ++-0x1.f374766b6ed6ap2 ++-0x1.a9a9833b70761p0 ++0x1.e32a36975f82ep13 ++-0x1.faee82ffb3f86p3 ++0x1.e36e2752045d0p24 ++-0x1.65cd92ab90cd5p3 ++-0x1.2c9e444e88b94p3 ++0x1.f120d034d2381p10 ++-0x1.a9a8f0b3f6514p-4 ++0x1.936706bd2d06ep1 ++0x1.a0c1379968e55p15 ++-0x1.857891fb49f2dp0 ++-0x1.56d056a4a7495p25 ++0x1.903154bd06e72p0 ++0x1.6682d268e3100p4 ++0x1.3193534e62ce4p10 ++-0x1.8436b490e2355p3 ++0x1.c780d229e6f70p1 ++-0x1.c56866de11a8fp3 ++0x1.882d57bffac4ep17 ++0x1.5c9b122b1d7fcp-3 ++0x1.844794defc7edp0 ++0x1.ee2d82135ae68p-4 ++0x1.85279651395efp16 ++-0x1.2cd1153d349f2p19 ++0x1.7b6dd3b4f477ep12 ++-0x1.7288f46a576b0p1 ++-0x1.f8c0e0fc4bb49p2 ++-0x1.183706bd54880p3 ++0x1.ba0d572401eb1p-2 ++0x1.ca518633bac17p7 ++0x1.cd57538cf882cp-3 ++-0x1.8381b568c9479p9 ++0x1.1e9183ce544bcp13 ++0x1.6acba6699c0b9p4 ++-0x1.ec73039e9f0d4p20 ++-0x1.6477f2857b071p-3 ++0x1.e4a176c91821cp9 ++-0x1.8c0b56ccb6472p4 ++0x1.88bb9270ccca0p0 ++0x1.01872043ef4f6p26 ++0x1.a699a703d54f0p2 ++-0x1.4f9480c72527fp11 ++-0x1.f3922598eb070p25 ++0x1.ec1122cf73e00p11 ++0x1.1a5df470f93f2p3 ++0x1.2c4ac04f45ad8p2 ++0x1.420df3f07e2e9p1 ++-0x1.da3007b6e32e6p-3 ++0x1.c58594ba64852p5 ++0x1.97f94564a530ep1 ++-0x1.8f2f3232703fap23 ++-0x1.3aced1c22945fp3 ++-0x1.9fc3b1f2df6bap18 ++-0x1.2f9400213bfacp26 ++-0x1.5a93a1aecd7f8p23 ++0x1.e21fb377f0629p3 ++-0x1.60d2b29133715p2 ++-0x1.b35fd552a06bdp2 ++0x1.f888f3bf0894ap3 ++0x1.6179c63df740ap2 ++-0x1.1b57e16b67305p12 ++0x1.2df7a492a55aap3 ++0x1.f5a8c595b66f3p12 ++0x1.eb9b31a499310p0 ++-0x1.fa29138391d8dp24 ++-0x1.31e9737787955p22 ++-0x1.50bec0d665bd3p4 ++0x1.240336c6f50ecp20 ++-0x1.234332620141dp2 ++-0x1.494922947d1dep13 ++-0x1.4589500e3dc0cp-4 ++-0x1.c5b106e6c98c4p3 ++-0x1.8e5975aebe391p1 ++0x1.4acbd1eca3685p16 ++0x1.3767b5309ae35p25 ++-0x1.ab55b215961b5p19 ++0x1.9bbb7240953bcp6 ++0x1.2a69c6c2ce166p-4 ++0x1.236446d855ea1p26 ++0x1.007d67d2f6ae5p14 ++-0x1.465752c4bba54p4 ++0x1.c2c120ada26efp24 ++0x1.89d8e773ca030p0 ++-0x1.47d112473b7d2p23 ++-0x1.961ec43a6ac1bp0 ++0x1.cb149641f5e31p25 ++-0x1.445105fd4a114p13 ++-0x1.fbecb12a6b027p23 ++-0x1.7d2f532f070e7p24 ++0x1.8623305d4e6b2p12 ++0x1.9d4e770b846b6p20 ++0x1.2e6f72255a4e3p25 ++0x1.217f53ffa3517p18 ++-0x1.114cf59a17da7p22 ++-0x1.9058c29b9c42cp0 ++0x1.8b4964313d448p0 ++-0x1.1324f4ac83d84p17 ++0x1.8cdc938858e1cp1 ++-0x1.8e3ac7bd1d9bap1 ++0x1.91dd306db21b7p3 ++0x1.1dabf17b5d5ecp11 ++-0x1.8c5023b0520fbp17 ++0x1.519133d1a30c1p0 ++-0x1.83f8b0095f08fp11 ++0x1.a2c384402e2dep0 ++-0x1.99604221a841bp-3 ++-0x1.238c553c5b382p11 ++0x1.255263c1e7ea1p-2 ++-0x1.f6abe2ca3fa18p-4 ++-0x1.28b610d704296p2 ++0x1.7fe030dd6870bp21 ++-0x1.9277b3b585daap1 ++0x1.4aba5560a518fp18 ++0x1.d8b2d183392ffp12 ++0x1.606e50d62a689p3 ++-0x1.c9fe06391a2ffp6 ++0x1.33a2c66357454p2 ++-0x1.c14834e7cc6fep20 ++0x1.70fe71d9a61a1p10 ++0x1.9124214c779abp0 ++0x1.36fe96d18bbb1p5 ++0x1.ac0886bed0cbap-3 ++0x1.c394c39ec727ep21 ++0x1.8ede90b9ad083p1 ++-0x1.63f723efeb8aap6 ++-0x1.8006a11624d6fp9 ++-0x1.991dd79a46696p14 ++0x1.624f7005c927ap-3 ++-0x1.5a1bc5448ef00p15 ++-0x1.a1b2d04dd23dbp22 ++0x1.fbdae5e7003fep9 ++0x1.77e2f5191b00ap26 ++0x1.6acd972fb203ep7 ++-0x1.92e403fb5cd1fp1 ++-0x1.bdb8819563c37p3 ++-0x1.978c07f231d8cp-4 ++0x1.d394c0387504bp3 ++0x1.2ad084ae8150fp2 ++0x1.1c84d77148aeep-3 ++0x1.6cdec2610b6e2p9 ++-0x1.ad36f42f1539cp10 ++0x1.6b7736f489b84p23 ++0x1.428d260202acdp-3 ++-0x1.ac7df640f2e9dp-3 ++-0x1.383325e10f339p16 ++-0x1.9072c3baac08ep2 ++-0x1.8d25202dfe5e9p1 ++0x1.56cce34ce0a0fp3 ++-0x1.87e0b26002871p0 ++0x1.e58bf4dbae4e0p8 ++0x1.f721c656141c5p-5 ++0x1.936a122b128a9p3 ++-0x1.9d77a3df09bffp0 ++0x1.fee682c2083b1p-5 ++0x1.0df346c938fa6p20 ++-0x1.79a4807dc1c7cp12 ++0x1.43cb96fb17819p15 ++-0x1.f6cba0b606489p3 ++0x1.279ff1f5aa40ep2 ++-0x1.4a0200fac8a92p13 ++-0x1.5bb4a64995a2fp6 ++-0x1.8cfdf28a87367p1 ++0x1.b33a47d6a5006p12 ++-0x1.2d44128359d7ap3 ++0x1.8e27c5f19370ep1 ++0x1.b172a51df2790p12 ++0x1.9418b67f79674p2 ++-0x1.18472016853adp-4 ++0x1.429a944c7fc15p-3 ++-0x1.848c2357e315bp0 ++0x1.94ffc4b0437b7p-3 ++0x1.0ab3c61460bf1p23 ++0x1.c46df37c82e74p3 ++0x1.ae4073dbb6faap1 ++-0x1.333756903e0d4p2 ++0x1.9897d041ad55ap0 ++-0x1.dc34d00205413p-3 ++0x1.11d895596200dp0 ++0x1.2c40f229821eap3 ++0x1.cdf886a7aa583p1 ++0x1.981c0286db7cep1 ++-0x1.9e091230bd3a4p0 ++0x1.793f34193764dp-4 ++0x1.bb2a40332c042p-3 ++-0x1.f14492192a73fp-4 ++0x1.706253767db02p-1 ++-0x1.89a6c7e27292bp0 ++-0x1.9ecc544fb92bbp0 ++-0x1.929732055c207p3 ++0x1.7446d51c7b42dp-3 ++-0x1.86ed158a74c67p0 ++0x1.514041392ff26p2 ++0x1.82d476bb8edb4p0 ++0x1.7fd9b27331c05p-1 ++0x1.f5b7d49823843p3 ++-0x1.f69264abeafa3p3 ++-0x1.3b9c9235047b1p-3 ++-0x1.618cb26e482adp3 ++-0x1.7ff1014b720ddp2 ++0x1.89c1b5f05dc6ep0 ++0x1.8433102ecaabcp0 ++0x1.1a6f4686b08cbp-4 ++0x1.f6e9f6c4c11d8p2 ++0x1.f420f4826d0ebp3 ++-0x1.07e6c7ee77297p-4 ++-0x1.883073624792fp0 ++-0x1.413bd59318f29p10 ++-0x1.eccdd630f04c1p-5 ++0x1.ca83404a9139bp-4 ++-0x1.2fb1d040fa704p2 ++-0x1.ec2965839cdf8p-4 ++-0x1.980927a49fc8ep0 ++-0x1.8891479510a4cp0 ++-0x1.160f00148547bp4 ++0x1.2c829387de51dp3 ++-0x1.b823d3652d1f6p-4 ++0x1.610211fe18f2cp4 ++-0x1.4814c0233ff45p4 ++-0x1.910a500100124p3 ++-0x1.938eb41b840f3p2 ++0x1.8b3dc18cdc10cp-3 ++0x1.82bbb15b4a321p0 ++-0x1.7ca807b240b48p0 ++-0x1.e41654090b761p-6 ++0x1.2e37b710fc120p2 ++0x1.f6b7940e7b623p3 ++0x1.110c63611fdc6p3 ++0x1.02ee201bcaac4p-1 ++-0x1.15cc478b9585fp-3 ++0x1.eaa6a5dba0880p-3 ++-0x1.5064263da0e06p18 ++0x1.29e4125754701p2 ++-0x1.9877831252381p-4 ++0x1.8f2e232e9ac5dp2 ++0x1.2d80559c80ef0p3 ++-0x1.9254d7b9c8444p0 ++-0x1.f4e9e64183d12p-1 ++-0x1.f4c7a7634e935p3 ++-0x1.9abbe3194229cp0 ++-0x1.9919748132712p0 ++0x1.5f26256acb653p3 ++0x1.5763e1d0c726bp1 ++-0x1.94ff2678d1f72p-3 ++-0x1.a90bb2e15f04ap0 ++0x1.2dd9e546986a5p3 ++-0x1.f740c1ba3020dp2 ++0x1.c64395e34728dp-2 ++0x1.e3d0458eabfd8p1 ++-0x1.ed0765e6ea0f5p-3 ++0x1.dab346294cbdap-4 ++0x1.f61623d7e20b5p3 ++0x1.af9281c09646cp1 ++0x1.1b1e15cd3bcc5p16 ++0x1.06c4c10e6c8dep-4 ++0x1.dd07569c3c3ccp-2 ++-0x1.c15824199f02ep1 ++0x1.5243561208a38p-4 ++-0x1.f416f571790f9p2 ++-0x1.caef3657e7abbp1 ++0x1.83fbe5b4af7dcp0 ++-0x1.8853d6f37a1efp0 ++-0x1.46da6147a1b10p4 ++0x1.302416be4e2a1p2 ++-0x1.f2f8a5dc53cf4p2 ++0x1.6055e6e35bb41p-1 ++0x1.143d145693511p2 ++-0x1.6950a182bf9a2p-4 ++-0x1.8fcc8236972a5p2 ++0x1.e9cb13665b011p14 ++-0x1.f393f56d36bd5p2 ++-0x1.6965240cd8bcap3 ++0x1.941dd006b64ffp2 ++-0x1.f1e3d41258e12p1 ++-0x1.fccf763e37c40p-2 ++-0x1.b796d71e63f83p0 ++-0x1.92b6c5b1be835p3 ++0x1.9ce932c77615dp0 ++-0x1.73fbf1729d68fp2 ++0x1.478eb664414a1p4 ++0x1.56d8470b12ea3p1 ++-0x1.3e8954f72e006p1 ++0x1.f65e065d156a7p3 ++0x1.84664031b46b2p4 ++-0x1.f47a93802ea52p2 ++-0x1.e9592161077e5p-1 ++-0x1.2bd1669992834p3 ++0x1.6e2943a16b8e1p-3 ++-0x1.e7d855d59c297p-4 ++0x1.8f433768a46fdp1 ++-0x1.e515d3f871f61p-4 ++0x1.90af17c3b46a3p1 ++0x1.888852da31b55p0 ++0x1.2b2b219aba250p-4 ++0x1.acd68248a4138p3 ++0x1.2e88f26ed5c10p4 ++-0x1.93d8526e03271p2 ++0x1.326cd7502e35dp3 ++0x1.97cf340cdd0aap1 ++0x1.9bf172a79ddddp1 ++0x1.f762e63f6aa11p3 ++-0x1.a352761c52850p-4 ++-0x1.8ca4b46938898p0 ++0x1.5faf86ccf0263p3 ++-0x1.59de804f2786ep-3 ++-0x1.1411b2e66b984p4 ++0x1.c1744154cb07cp-2 ++-0x1.e470062fd9902p-4 ++0x1.96cdb4f1f7df7p1 ++0x1.23fc15223f81ep2 ++0x1.36a273c93939cp-4 ++-0x1.cc76161ba5551p2 ++0x1.30a473160c957p2 ++-0x1.2b9fd42df7d03p11 ++0x1.96269286b7ffdp1 ++-0x1.26acf7d9c5873p-4 ++0x1.4e9a05aed7b47p-2 ++0x1.8c2310e286165p3 ++0x1.2e7ea55e6bab4p3 ++-0x1.947447e283cf8p0 ++-0x1.5def45dd8c82dp3 ++-0x1.3562b72377e9dp17 ++-0x1.827dc1096f2c7p2 ++-0x1.864d742b9a86ap0 ++0x1.020c84197b2d6p-4 ++-0x1.c2b3209b520f2p3 ++0x1.4d46507b92ebfp1 ++0x1.f7a911dc6f5edp3 ++0x1.546ab7b47b80dp-4 ++-0x1.8e74270390650p0 ++0x1.798ef3689843dp4 ++0x1.e4ed141ca4042p2 ++-0x1.912b60e8b2288p1 ++-0x1.a446f3b0c931fp-3 ++0x1.8a8ca0324e319p1 ++0x1.85f9f17f3303bp-4 ++-0x1.8da4b789837fbp0 ++0x1.e0c1b65e1731fp0 ++0x1.51d9359cbafe5p0 ++-0x1.8c93e53362a95p0 ++0x1.2cb685f56e9c7p3 ++-0x1.24ca32a7d2e7fp-4 ++-0x1.f3a7d55be814ap2 ++-0x1.5f5563552f3dbp1 ++0x1.9651239a8f51cp23 ++0x1.7883f140d86e3p4 ++-0x1.f5d4704cadef3p3 ++-0x1.1a8b81c161806p-4 ++0x1.13a766d95ae15p-3 ++-0x1.788d1565e8c73p0 ++-0x1.5a00b1d8bf722p4 ++-0x1.142ef555a9f1dp2 ++-0x1.9f5fd239129c0p1 ++-0x1.9234030e398e9p0 ++-0x1.de3ee1a88c608p25 ++0x1.98b413f614dd1p1 ++0x1.919893496d760p0 ++0x1.cb4c6209daacdp1 ++0x1.716aa6b3989dep0 ++0x1.388236a8a2105p17 ++0x1.2d8ea65a5418ep3 ++0x1.8d3b6586a1f83p1 ++0x1.2ee22305d240cp2 ++0x1.513c50ad7096ap0 ++0x1.274f61da084fcp21 ++0x1.8e999360ff9bfp2 ++-0x1.634ee01f1e244p3 ++0x1.f56b84f17d59ep3 ++0x1.90cd66c769319p3 ++0x1.948793a745cb3p1 ++-0x1.922cc64d4c613p2 ++0x1.9202f01408a2ep1 ++0x1.647af0f3e78e8p0 ++0x1.92c404a15ff85p3 ++0x1.296510b2025d9p3 ++0x1.8af4d01937e3dp1 ++-0x1.905807696feddp2 ++-0x1.c5e746b866817p3 ++-0x1.74abf60c7458dp11 ++0x1.9fd310b80fc3fp-1 ++-0x1.0088c702d520ep3 ++0x1.99e684301b40dp1 ++0x1.9e40e369cece9p0 ++0x1.9a10f4d7ad560p0 ++-0x1.119517d95be1dp0 ++0x1.6507f65c0a11ap-10 ++-0x1.8d7e97db6ee5dp1 ++0x1.77b3e74ff2733p0 ++-0x1.9142f42793975p2 ++0x1.b08f86307ef40p0 ++-0x1.07f605feceabcp6 ++0x1.847750d22aedap0 ++0x1.da8917abe3345p-1 ++0x1.996981db39a5cp1 ++0x1.84af267337c45p0 ++-0x1.2d1e62cdb58fep3 ++0x1.57eb741c405e9p0 ++-0x1.9306d461c4f0dp1 ++0x1.97511167e78b7p1 ++0x1.a378c189bb9f2p0 ++0x1.9f116139e3045p3 ++0x1.0e56b2d056bd2p1 ++0x1.9022d6b0f776ap2 ++-0x1.9a66b69d283d3p16 ++0x1.93f2d78fa20b8p2 ++-0x1.960097e81f663p1 ++-0x1.f16b11682801ap2 ++0x1.7c5836e306cd7p4 ++0x1.931ce13cf2e8ep3 ++-0x1.9604801aef305p1 ++-0x1.6047b5e1f6282p4 ++0x1.8afcb3ed73526p1 ++0x1.f6f66374ec272p3 ++-0x1.637a71d0dd8cap3 ++-0x1.f503c3e728412p3 ++-0x1.6752748f04736p12 ++0x1.c39482bf49bafp0 ++-0x1.776fc1f105341p1 ++-0x1.1c8c0693eea0ep4 ++0x1.bf500107c5bf8p1 ++-0x1.c8cc1330ebb0fp3 ++-0x1.9fc43100011e3p1 ++-0x1.0218334d9287bp4 ++-0x1.873dc40133dc7p2 ++-0x1.6108e6ac3ce75p2 ++0x1.827f54be95fd2p2 ++-0x1.b3b9c1b2bc85bp1 ++0x1.6a566601abe51p1 ++-0x1.1838e51e22a74p3 ++-0x1.ec20a2f393847p-1 ++0x1.50e3f2decb26bp0 ++0x1.9e5c631aefd23p1 ++0x1.e380f3f3d1435p1 ++0x1.2d2396f6e3d53p21 ++-0x1.d37267e0da8b8p2 ++-0x1.dc488296aade7p-5 ++0x1.46ec674ce2a5dp13 ++0x1.554101eac799cp13 ++0x1.2f3013f5a6c54p8 ++0x1.6f83a66c663f4p4 ++-0x1.2b08f43aab39cp11 ++-0x1.e1e0d1853224dp-1 ++0x1.d771b17516553p6 ++-0x1.887044239cfe8p1 ++-0x1.a1db55509e8a4p1 ++-0x1.bfa480fc2440ep0 ++-0x1.6d6e63cfe5182p16 ++-0x1.fb48863e0822ep0 ++0x1.9f00e03bd225cp2 ++0x1.759ad7d2fd408p-6 ++0x1.127da379773a8p0 ++0x1.f29402cc634ddp2 ++-0x1.9952a78ed61b8p2 ++0x1.97dd5139447c3p1 ++-0x1.a76e765e68c3cp1 ++0x1.8e67566cd5e8ep2 ++0x1.1b03a778e2d96p0 ++0x1.5082b4b12d87dp0 ++-0x1.b7f804e64ad6dp-1 ++-0x1.fd8ec1fbdfc91p-1 ++-0x1.c72146ec63767p0 ++-0x1.535215502bb28p9 ++-0x1.7b86638bd0a8ep4 ++0x1.2ee16587be28ap25 ++0x1.e01b63e9ed441p-5 ++0x1.694304bf328eep8 ++0x1.ad55c78d3654dp3 ++0x1.9eee975660a8ap3 ++-0x1.c8b2561c9f81cp3 ++0x1.8283c7a80a610p0 ++0x1.5b20d2df32431p4 ++0x1.9cd6a2f10b171p1 ++-0x1.420cc50d7cdc2p8 ++-0x1.dd9861944bbb3p3 ++0x1.34a7a7976a495p0 ++-0x1.d583650030438p-6 ++0x1.d460c5cf3f543p0 ++-0x1.d465b0c30b6edp1 ++0x1.3c7da5c7e5924p1 ++0x1.2346875c60507p2 ++0x1.8a7b81be25ee8p2 ++-0x1.397700c5fcc57p2 ++-0x1.69d2e1c810103p14 ++0x1.a85411bd063ccp1 ++-0x1.0e29e1cbda382p1 ++0x1.9a5e601081659p1 ++-0x1.a7889779ffa67p0 ++-0x1.438e04868ccc9p4 ++-0x1.baa5420b07fdap0 ++-0x1.6db8900accb05p19 ++0x1.a8aec73d93c27p3 ++-0x1.77d4072c1ccf2p0 ++-0x1.21f6b21bc817ep2 ++-0x1.f6a2f62a6cb31p2 ++-0x1.fc06459a51fb8p2 ++-0x1.9af657156b1f3p2 ++0x1.506bb4f11e78cp0 ++-0x1.33ebc72ee6932p2 ++0x1.ae86415f42273p2 ++-0x1.9bf4a6fe8e910p1 ++-0x1.e96e9164690fcp21 ++0x1.6947f51227604p2 ++0x1.6013a22a2ddd3p1 ++-0x1.6af96677a90abp4 ++0x1.8afb44943c65ep3 ++0x1.8edc46a59110dp1 ++-0x1.27672769919c5p3 ++-0x1.965194e8561b3p0 ++0x1.3b1025ed73e67p1 ++-0x1.847770922125cp3 ++-0x1.dd5f522fb2873p-5 ++-0x1.5efb85cc876f7p4 ++-0x1.e68de705848ebp-5 ++0x1.7ead02ce67bbcp1 ++0x1.a051e272e6562p1 ++-0x1.86e703217068ep2 ++-0x1.9f42e3ab98d72p1 ++0x1.67ed973022fefp1 ++0x1.2fecd6c002277p9 ++0x1.78c3e7b8861cdp1 ++-0x1.a871661620c12p-6 ++0x1.f44003f7dc467p1 ++-0x1.8de9c11f74395p0 ++-0x1.e819107f5c6e2p3 ++0x1.95cc935ccd8b3p3 ++-0x1.8f4ed509b97e5p0 ++0x1.69451445560b1p1 ++-0x1.95ef447fbd184p3 ++0x1.86f83259b5fd7p0 ++0x1.0477224f543aep4 ++-0x1.84b8700c2e94ap2 ++-0x1.d83170e4e3d42p23 ++-0x1.8f0f6463688c9p3 ++-0x1.627477b68d92cp4 ++0x1.b08cf6f35c65fp1 ++0x1.408dd4780aba4p6 ++0x1.1086512459ff1p9 ++0x1.3909f67380c33p3 ++-0x1.949b71c1a11cep2 ++-0x1.8d1345e55533bp3 ++-0x1.8713c256b3756p2 ++-0x1.dbc685c55e3f5p25 ++0x1.fa1540a9be9a3p3 ++0x1.861632597290fp21 ++0x1.8a92623188bf5p2 ++-0x1.306816f3567cdp3 ++-0x1.46c942568bb98p4 ++-0x1.493192769939fp-5 ++0x1.6c7626b593bc1p15 ++-0x1.de9ae14ed3b14p-5 ++-0x1.9ceab67fd3361p17 ++-0x1.4635c7e723683p14 ++-0x1.f66857bcde805p5 ++0x1.1404718e327a9p5 ++-0x1.8bead04147772p0 ++0x1.67f23030a3b9cp-5 ++-0x1.605b1167aec6bp26 ++0x1.c492b71449ac9p-5 ++-0x1.896c46f57416fp0 ++0x1.f67af48b080f1p4 ++-0x1.2bf7f4c847654p2 ++0x1.d16a349978580p5 ++-0x1.62f916740779cp8 ++0x1.88d1874b175c6p0 ++-0x1.44bb24ced7803p23 ++-0x1.8b3367f4a1c9ap1 ++0x1.f904679db18c3p10 ++0x1.8af0b3bf1bc0ap1 ++0x1.91bd642036dc7p-5 ++0x1.e05700bd746ecp-5 ++0x1.442c71d7052dfp11 ++-0x1.c0860397d57f6p-5 ++0x1.22fa512afd525p15 ++-0x1.17963471d9c22p9 ++0x1.dc53e5919c4e9p-5 ++-0x1.f0ab744dd7c5ap12 ++0x1.6c6b174f1b2ddp25 ++-0x1.c0e8e1d4be4ddp21 ++-0x1.527b6735e78fdp-5 ++-0x1.eb2570edcb498p-6 ++-0x1.827ee5ca4565ep17 ++-0x1.d312763bdbfc9p-5 ++-0x1.1be7c35c5187dp21 ++0x1.bb05e3cf5bed1p8 ++0x1.2b35242e28392p2 ++0x1.2c478726c2eadp3 ++-0x1.f601e4eb21834p-7 ++-0x1.aa9224d5c7b99p12 ++0x1.ee4f61f98712ap25 ++-0x1.f11477e64dd5fp25 ++-0x1.eacea5fdf0447p22 ++0x1.8090172f53488p-5 ++-0x1.874452a514b8ap-5 ++0x1.b09b7525da067p-5 ++-0x1.a4a65761b73e4p19 ++-0x1.3edf87b67bac9p11 ++0x1.40df32ab49b60p16 ++0x1.ad82d260cd27cp12 ++-0x1.79d575123f3d3p4 ++0x1.1a420309f1acfp19 ++-0x1.e3d2815fcea1ap-5 ++0x1.9564275cad6b1p20 ++0x1.b22d964fa5da9p16 ++-0x1.ac6ec099f3767p12 ++-0x1.3a56c36fd71f8p5 ++-0x1.10a2668b9a962p19 ++-0x1.f582e4fb4b9fcp3 ++-0x1.c91490880d0abp9 ++-0x1.ed1516dd4512ap-5 ++-0x1.bd52b3aaf56cbp20 ++-0x1.5f8674c2c25b3p3 ++-0x1.0c0c55ef2b998p20 ++-0x1.d192227536e73p24 ++-0x1.2faaa2ecfe577p24 ++-0x1.b90651cb301d0p-5 ++-0x1.ac3b63b519eadp-5 ++-0x1.2bd446f3ca7f3p2 ++0x1.a430460e6a9b6p12 ++-0x1.b3d576f970023p-5 ++-0x1.a78456f24ad8bp21 ++-0x1.8e6d24c106191p-5 ++-0x1.445ac22c0535bp10 ++0x1.6006b3be58fcdp5 ++0x1.e2c9a30fed3dbp-5 ++0x1.a9c595abf1803p17 ++-0x1.dda6a16942918p5 ++0x1.882b80046b531p-5 ++0x1.e312c4711d211p-5 ++-0x1.ffc9304847f6ep23 ++0x1.e2bdf53a0e7eap-6 ++0x1.aafe55c56b961p4 ++-0x1.a42c00873fe91p19 ++-0x1.6e05225136648p14 ++0x1.8b6d7748a44d0p1 ++-0x1.4f9b15e74489bp24 ++-0x1.d0f83650acd18p10 ++0x1.75d88737c154ep10 ++0x1.fd9f30446da4cp12 ++-0x1.ea0f976d9c95fp8 ++-0x1.2e7ce0068807bp3 ++0x1.408f556f1b433p22 ++-0x1.33dd44ccdcad4p9 ++-0x1.1392b23681ed7p22 ++-0x1.a07451f59178ap0 ++0x1.4be7960b80101p-5 ++-0x1.c35dd7637fabbp3 ++-0x1.14eaf252d4e69p24 ++-0x1.eb5cb6f319984p12 ++-0x1.ff5795cc9e8c9p25 ++0x1.f373c7948157ap2 ++0x1.8b11d503c9621p9 ++-0x1.a6fba484a1e0dp23 ++0x1.185dc1c0b0020p9 ++-0x1.4205d4a32810fp8 ++0x1.ba7665e0e6ca3p-6 ++-0x1.9114139572d64p2 ++0x1.8550d5a435556p6 ++0x1.9217f777d16afp1 ++0x1.523d75d52216bp22 ++0x1.eaf44618ace9cp25 ++-0x1.0ce264ba236dep25 ++-0x1.dd0c66bca284fp4 ++0x1.e133b560a7249p-5 ++0x1.2e73200b72efcp3 ++0x1.31d3f1c22bbefp-5 ++-0x1.160c73ebb453bp9 ++0x1.725517d421c01p23 ++-0x1.b322115912690p8 ++0x1.3123b6c190157p15 ++-0x1.f7c6d4c05900ep2 ++0x1.4199c1016ddbep21 ++-0x1.939ab538fcf52p1 ++-0x1.fe9b67751e8e2p16 ++0x1.8194d6944c477p15 ++0x1.84ddc763e1a66p0 ++-0x1.4e1de2c8b8b84p-5 ++0x1.f2b9c3f27bde1p11 ++-0x1.616ef1dab5092p3 ++0x1.f592e4f2759fep3 ++0x1.4aa7e080f1cdbp11 ++0x1.ce0a91e4edc80p-6 ++0x1.534af4542f502p9 ++0x1.9a5816c8c9b58p-5 ++0x1.71ed06e256291p11 ++0x1.1a3b208fc7a34p17 ++0x1.93a935a59f8c6p2 ++0x1.d0cc856988238p6 ++-0x1.1aba30a4c9984p9 ++-0x1.f8c461cdebee7p21 ++-0x1.899a449c6c3ebp20 ++0x1.363ec045afdeep9 ++0x1.439216bc4453bp8 ++0x1.4447c6df4c7afp17 ++-0x1.9911c1e4c62abp15 ++0x1.e16500b58f801p-6 ++-0x1.b705b75ed89fbp22 ++-0x1.01e46049e5a39p20 ++-0x1.932304c2d6686p-5 ++-0x1.e6d670226ad2ap-6 ++-0x1.bd07e41c8e8bcp18 ++0x1.4a0e422534f2bp-8 ++-0x1.6940b30465840p8 ++0x1.d733705bedd6ep-6 ++0x1.d5cc051d8c218p19 ++-0x1.2c33e54a305f1p3 ++-0x1.e8b8d19effe41p-7 ++-0x1.3251544f616aep10 ++0x1.7695f68f3e6c7p15 ++0x1.8b4f237050232p1 ++0x1.0f3804c1ac573p26 ++0x1.63b6402daf587p25 ++-0x1.ef19b46fc82d1p-5 ++0x1.5b24532eef37bp8 ++0x1.e3cc25433e63dp8 ++-0x1.6adbc65e81bf0p-6 ++0x1.4af2127550ba6p19 ++0x1.0b0534813be5dp10 ++0x1.406e85cef6faep18 ++0x1.3624f311203b4p24 ++0x1.c539d648b5762p4 ++0x1.d33de1b06857cp22 ++0x1.088795083936fp26 ++-0x1.46d32700ac723p13 ++0x1.90cd33bd76f26p3 ++-0x1.bc8b039abda5dp-5 ++0x1.118c66b20ff59p24 ++0x1.86aa4299069edp17 ++-0x1.8c0d566b825bdp6 ++0x1.a2f000766a5dcp-8 ++0x1.f125b5925ecdcp9 ++-0x1.42e27168a01e5p-6 ++0x1.8d07c5da62627p-5 ++-0x1.300382649922bp25 ++-0x1.c6af64d64da9bp21 ++-0x1.dbf9b7e4544d8p-5 ++-0x1.ae66a3b7f8d1ep8 ++-0x1.68cae1e2a98b1p25 ++-0x1.d9d0e40f5b316p18 ++0x1.9240a42e12154p4 ++-0x1.85efc5a65c092p5 ++0x1.c25b32c0f3a22p21 ++-0x1.8ce4e51fc72bcp20 ++0x1.2d88a67e7f4d5p6 ++-0x1.f9fab7bee125dp2 ++0x1.d5ab6667f00aap-5 ++-0x1.8de195b535d34p0 ++0x1.856a236431247p5 ++-0x1.9355b20d3597fp3 ++0x1.c86242004b43bp16 ++-0x1.f075e5ac52efcp7 ++0x1.128a500680aadp22 ++-0x1.e05591544f544p21 ++0x1.93efc221f8e59p2 ++0x1.ab2f462bf74fcp5 ++0x1.c49bd6a3c1818p4 ++0x1.7b8ad50c7bfecp13 ++0x1.fc4e96888c2d1p-6 ++-0x1.58d6c2c5e054cp-5 ++-0x1.2f6ec7a1377e0p14 ++0x1.c58a842a616dbp3 ++0x1.834dd78309187p18 ++-0x1.c3a496c1450d1p-5 ++0x1.f4d2b45c847dfp3 ++0x1.8c356160ce725p1 ++0x1.3142d7811c731p2 ++0x1.93a9516a96a0bp3 ++0x1.a1bee68429794p7 ++0x1.b95dc334a2bc6p8 ++-0x1.19cef672a9a47p-6 ++-0x1.d27957ab51079p-5 ++-0x1.f326d3c218f96p-7 ++-0x1.3663f5c2f7a7ep21 ++0x1.92d2c298efc0ep3 ++0x1.0c0ac140813e9p14 ++0x1.f042d0f375d37p-5 ++-0x1.33d93108cefb4p17 ++0x1.49bb63dc63385p26 ++-0x1.6c4a43fe47766p15 ++0x1.ef7b348d27a11p-5 ++0x1.75c9e12812395p26 ++0x1.646c466065168p13 ++0x1.c6a595a4cf1eep-5 ++0x1.633eb2bb2135cp13 ++0x1.1d6fd48d68d10p16 ++0x1.909086ce4aa7bp19 ++0x1.33e475eaa77c1p6 ++0x1.dd76962579da8p4 ++0x1.2f6ff6e564b1cp2 ++-0x1.250d605076831p-5 ++-0x1.eb5e5279788d8p-5 ++-0x1.8d7a8777145a7p1 ++0x1.987364729a434p19 ++0x1.dabe4125b97b3p-5 ++0x1.b17e331eb6789p6 ++0x1.6db837fb7d483p-5 ++0x1.974bf2de99250p-5 ++0x1.eb7783df9a7d7p24 ++0x1.d4a382fdca607p-5 ++0x1.c819b06815072p-5 ++-0x1.884961789ce26p0 ++-0x1.49abd42b2da4ap11 ++-0x1.c22025eda45c0p-5 ++0x1.1507f3d165044p4 ++0x1.98d962253bc23p0 ++0x1.91d604536b2ddp1 ++-0x1.97e455ad89b74p14 ++-0x1.e048a7162e609p24 ++-0x1.b0f2a035fc460p-5 ++-0x1.dfae87af15a41p-5 ++0x1.5957d3127c4ecp-5 ++-0x1.e19520fdfdde8p18 ++0x1.14bbb5a3d4a9ep-5 ++0x1.40e1e0445bbe9p20 ++0x1.d11a60dfe5ccbp13 ++-0x1.2864a79b70a9fp12 ++-0x1.d586268ab9766p-5 ++0x1.e86f11c2cfc20p-6 ++0x1.44cca2c6d41b2p-6 ++-0x1.96a014873a351p-5 ++-0x1.8d81a234eaeb3p21 ++0x1.3a1533e669917p5 ++0x1.8ba860cf520bep1 ++0x1.4265b33954e48p10 ++-0x1.a249f7fe5c4e5p17 ++-0x1.2e1957e00bdd5p4 ++-0x1.8240d5065f3b6p17 ++0x1.8d74a29263a5ap0 ++0x1.951506f271652p1 ++0x1.e92041ee927e3p-6 ++0x1.ed2dc6dcf4002p-6 ++0x1.2c92337f90e49p2 ++-0x1.683c21e808cdep-5 ++-0x1.9a0b940509413p-6 ++0x1.98f7007ee0945p1 ++0x1.a2320700475bbp-7 ++0x1.bd43201cd4e31p-5 ++-0x1.cc04710864fd6p-5 ++0x1.a21c8714da14ep-5 ++0x1.773693ef8fa14p-5 ++0x1.79803001fe5dap-5 ++-0x1.2c32c75512fe9p2 ++0x1.844f25e75eb2fp0 ++-0x1.95d877a17a280p2 ++0x1.948a43d9d7741p1 ++0x1.971c84f87b377p0 ++0x1.9127e7382bcc8p-5 ++0x1.93fe639e0db3dp0 ++0x1.2f4d04d0c8b60p3 ++-0x1.902934f6cec25p0 ++-0x1.97e5e2e8c9690p0 ++-0x1.2e7f34a41089ap2 ++-0x1.dbf4d63956dabp-5 ++0x1.7de270a1cef9dp-5 ++-0x1.a8cfd796dd749p-5 ++-0x1.867323de7c548p0 ++-0x1.583b54858a854p-5 ++0x1.5a32b5f87c731p-6 ++-0x1.a893c3b3f116dp-5 ++0x1.8dba0559b03f2p-5 ++-0x1.8fddc49a817aap0 ++0x1.8dfc56712ea84p1 ++-0x1.5ec35128245fbp3 ++0x1.2ed721b3e7cf3p2 ++0x1.f6f6b38e4a725p2 ++0x1.8d7636d60e4a2p0 ++0x1.f53e24706a8adp2 ++-0x1.2b8e75888ccddp2 ++0x1.798c20cba7df8p4 ++-0x1.c28770144413dp3 ++0x1.99b0411242349p1 ++-0x1.899d668f66224p0 ++-0x1.9584c477164dfp1 ++0x1.894db4cfedf00p0 ++0x1.478fe109931cbp4 ++0x1.60ecc69ceb31cp3 ++-0x1.2daad0f631f1ap3 ++-0x1.90c0775e5bbd9p3 ++-0x1.9563261499472p1 ++-0x1.8cce8733835a8p1 ++-0x1.8e5bd67aad0bdp1 ++0x1.2f88b005dd5c1p3 ++0x1.2f79b51aa1b2ep3 ++0x1.c5ba9020db5c7p3 ++-0x1.91834694280eap3 ++-0x1.f59d31d57b57cp3 ++0x1.9f12216e6b6e5p0 ++0x1.9094e7026c1ebp3 ++0x1.155cc046ffb5bp4 ++-0x1.848890adc4715p0 ++0x1.90ad119b10f12p2 ++-0x1.8d9a028100e2cp0 ++0x1.c60477c5553dfp3 ++0x1.91b295b42732dp3 ++-0x1.93e8041f128acp3 ++0x1.88cc56d1e4905p0 ++-0x1.925832396eb4ap3 ++0x1.8a73075e37e87p1 ++-0x1.138d60f880517p4 ++-0x1.97cf677cc2b69p1 ++0x1.915aa29d49dbcp1 ++0x1.873b8780d5106p0 ++0x1.94c856a2d7bb6p1 ++-0x1.90628588db51ap3 ++-0x1.8f5770d7d1d70p1 ++0x1.c5579491935bbp3 ++-0x1.78da03f27aa07p4 ++0x1.9209877319a62p1 ++-0x1.2aea80b631733p2 ++0x1.2f75e48cddd2cp3 ++-0x1.5fb7273fcc453p3 ++-0x1.8488702ff0c32p0 ++-0x1.93dda7bee871ep0 ++-0x1.93b653501d3c1p2 ++0x1.9205222724e5bp1 ++0x1.2df4a1196323ep2 ++0x1.6108a416f100ap3 ++-0x1.8db7954424fc7p0 ++0x1.2bb8a1817846fp3 ++-0x1.8abed04ecb123p0 ++0x1.92d5f27ca693fp0 ++-0x1.2a3e75ea2ae07p2 ++-0x1.90fb35edc8d06p0 ++0x1.9a76161e739c7p0 ++# tan slow path at 240 bits ++# Implemented in sysdeps/ieee754/dbl-64/mptan.c ++# Range reduction is done using mp arithmetic. ++## name: 240bits ++0x1.ee5a221c1ec30p750 ++0x1.d0b7237b90954p983 ++0x1.50aee539c99e6p817 ++-0x1.63457438d44aap53 ++-0x1.294211dbd13e4p213 ++-0x1.d71b609ef9723p651 ++0x1.9c3fc4df7e48ep242 ++0x1.ab8b7376e687ep989 ++-0x1.23f9a2342724ap746 ++0x1.119932858dd5ap966 ++0x1.172f40abffae1p573 ++-0x1.f9bb63afd3e82p824 ++0x1.1d49b6073fd25p1018 ++0x1.3825a112069d0p360 ++0x1.8e64d153eac98p839 ++0x1.e87296bff194bp410 ++0x1.607562a57b7cbp149 ++0x1.79bab59092899p902 ++0x1.de5304e52acddp608 ++-0x1.418357b7072b6p987 ++-0x1.b86e0050bf853p732 ++-0x1.a1efd6e7ed2f7p903 ++-0x1.d8f94109ae4a3p874 ++0x1.4f3247a1eea1ep815 ++0x1.bdea912ba38d1p109 ++-0x1.c8df81ba65338p846 ++0x1.fdeb13595a17bp798 ++0x1.767af536202fcp99 ++-0x1.2a30021aae9e6p527 ++-0x1.28dee7f401161p970 ++0x1.4619840d88992p101 ++0x1.6bfc225d005a2p837 ++0x1.1e1af0e150b94p594 ++0x1.bb40b53e0e710p107 ++-0x1.509896c78f606p883 ++0x1.d89291baa92acp34 ++-0x1.3d17f161b743ep327 ++-0x1.39c6a16a6c7c6p264 ++0x1.c76d60078cecfp545 ++-0x1.154493e3be839p980 ++-0x1.b3df5360e6cbfp245 ++-0x1.f0c52280d0aadp653 ++-0x1.d93ce79dfe195p45 ++0x1.88dd7769601fep966 ++0x1.a903f553288eap298 ++0x1.4ecba03f7132fp152 ++-0x1.ee34e7eac85fap992 ++-0x1.010e46c3cd107p876 ++-0x1.b56fd64fe1fbdp323 ++0x1.2c50c6911febep742 ++0x1.740dc6b962c9bp422 ++-0x1.617e2227cbff6p224 ++-0x1.1ad286314c58bp940 ++0x1.ac1745b651b5fp649 ++0x1.fddce309449cfp982 ++0x1.73aa443462592p182 ++0x1.7d2e10f57bf82p306 ++-0x1.93eef4d8c4abep433 ++0x1.3d9bd192c5d05p408 ++0x1.1ba6707e8de9ap833 ++-0x1.c2f6f7c9e74b3p766 ++0x1.404e24bccecfcp457 ++-0x1.7a40f3ff05d01p530 ++-0x1.10de718a052b3p202 ++0x1.406e1464adc55p557 ++0x1.9e19028382754p550 ++0x1.635c94cbc7020p982 ++0x1.984492142a1c0p81 ++0x1.4b64a03a03816p428 ++0x1.247c4191da022p961 ++0x1.c141e714fe35cp908 ++0x1.1b3621a4c2bafp257 ++0x1.53d5e3c854773p294 ++0x1.0747d33080a32p824 ++0x1.1632770278ce8p845 ++-0x1.c782e7d005b27p622 ++0x1.593837dacc255p851 ++-0x1.ec2ff0a8e0bcdp569 ++-0x1.b594936bb511ep82 ++0x1.9b45519d36598p976 ++-0x1.9b8684eaa71c6p944 ++-0x1.a3d743632fed4p395 ++-0x1.b73bd248a7a07p401 ++-0x1.dbc2269986a9dp213 ++0x1.1db1d61aaef59p102 ++0x1.2e8bb0f1ad8e5p797 ++0x1.e883f6710822bp235 ++-0x1.869ff130d5a8ap348 ++0x1.2fa330ffa7b9bp49 ++-0x1.0504a5188eddbp500 ++-0x1.0d0a04316e717p622 ++0x1.e020a6a980593p957 ++0x1.869895a12103dp1011 ++-0x1.a069a71af1389p432 ++-0x1.814d711d1c525p904 ++0x1.3648160c04db0p640 ++-0x1.fafcf58cb570cp724 ++-0x1.00bdd7f58135ep394 ++0x1.e4d721588529ep259 ++-0x1.2b364691f9147p192 ++-0x1.7932c5bb927a9p463 ++0x1.d185a23e7a264p121 ++-0x1.d82395a639e87p578 ++0x1.d19bd28cdb538p1020 ++-0x1.91e123b92a975p528 ++-0x1.f5b921ff6813fp866 ++-0x1.f233e109dede1p346 ++0x1.22b5274acfea5p28 ++-0x1.b12c358527025p560 ++0x1.87f9c3636f7a7p770 ++-0x1.b7cfb4bd9ef9fp559 ++0x1.ab30f4cdb2826p927 ++0x1.3121e66534c09p996 ++0x1.32ff26e56b243p66 ++-0x1.6a3155c7bbc49p381 ++0x1.0629119d19fe7p306 ++0x1.666f07ccc3516p444 ++-0x1.71b82433bfd05p656 ++0x1.787bb435c6119p237 ++-0x1.bb81028d4e92ep822 ++-0x1.f956b52f53507p930 ++-0x1.9f75e34d740f3p394 ++0x1.babfd6b429321p307 ++-0x1.0546727a98f2fp892 ++-0x1.24e7a5b4ab558p36 ++0x1.91b656ffc9015p48 ++0x1.f214d6691dbc8p813 ++-0x1.7508047526de4p708 ++-0x1.6e0884d03f494p595 ++-0x1.abf2f140b46a1p958 ++0x1.cd37e24ae01d2p996 ++0x1.874b5349798ddp791 ++0x1.5db704095417cp479 ++-0x1.385f265e0be6dp529 ++-0x1.77d7f72971477p254 ++0x1.c1d572032a2bcp231 ++0x1.c5f3b1b1e6cb1p985 ++0x1.112e0044fe943p152 ++-0x1.c39e821cde6d0p860 ++0x1.70f7800567a4cp831 ++-0x1.bf2987be14b54p43 ++0x1.005dc191f8155p428 ++0x1.15ae534e6771bp286 ++0x1.c90422cac4067p433 ++0x1.ce9e737328102p189 ++0x1.809d12529d2fcp385 ++0x1.1063e5c391f7dp222 ++0x1.d2ec86f035aecp981 ++-0x1.196f9101def40p684 ++0x1.c63095b4787cbp964 ++-0x1.974c637b88001p971 ++-0x1.1f4ff59ad6375p982 ++-0x1.fd2845fc76df9p832 ++0x1.1e2872f75696dp150 ++0x1.550941834ba74p642 ++0x1.0d163506e72bbp960 ++-0x1.c4ac9745073bap738 ++0x1.8fd3f61e48e52p625 ++-0x1.5f9425e8039f3p636 ++0x1.3e4f37281e892p558 ++0x1.3373f1db8806cp990 ++-0x1.038965f403b17p774 ++-0x1.bd5b377d53669p945 ++-0x1.07b3f085c6733p689 ++0x1.3544b2eed1abfp262 ++0x1.1532c11ac2507p832 ++-0x1.c00c9609102c4p786 ++0x1.ad9637e0c897bp581 ++-0x1.fe4bc0f718a8cp569 ++0x1.0692371444ef5p700 ++0x1.cb4e64433e84cp965 ++-0x1.69d26008baa73p236 ++0x1.62f9711ed5d1ep464 ++0x1.e930d2860dadap435 ++-0x1.909f574e6549cp658 ++0x1.00e4f31691d23p399 ++-0x1.0d5823a83628bp540 ++-0x1.c7b743f92fb3fp569 ++0x1.7dee11c9dafa3p670 ++0x1.529be63463210p939 ++0x1.62bd520c84081p874 ++0x1.c993466a75c4cp61 ++-0x1.33b0260c2549bp495 ++0x1.09e87208ab6ffp625 ++0x1.0ae9e4d036946p291 ++0x1.07d5649391891p165 ++-0x1.bee4e05b04714p586 ++0x1.2b0994ee5f218p167 ++0x1.ebfc830d19d34p992 ++0x1.382612ecb922ap979 ++-0x1.21c82431ac446p1022 ++0x1.6196b60f1c50fp190 ++-0x1.c25ea71d737a2p248 ++0x1.d024774408b26p335 ++-0x1.f5ce472da3a21p644 ++-0x1.81a011e0b6271p851 ++0x1.9cd0227a58f39p939 ++-0x1.8698a10662bffp544 ++0x1.a07c20fa799d8p622 ++-0x1.d126c657c582bp880 ++# tan slowest path at 768 bits ++# Implemented in sysdeps/ieee754/dbl-64/mptan.c ++## name: 768bits ++0x1.dffffffffff1fp-22 ++0x1.810f60836538dp143 ++-0x1.e877a52501e08p134 +diff -urN glibc-2.17-c758a686/debug/test-strcpy_chk.c glibc-2.17-c758a686/debug/test-strcpy_chk.c +--- glibc-2.17-c758a686/debug/test-strcpy_chk.c 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/debug/test-strcpy_chk.c 2015-06-20 21:22:16.304457892 -0400 +@@ -54,6 +54,10 @@ + #include + #include + ++static int test_main (void); ++#define TEST_FUNCTION test_main () ++#include "../test-skeleton.c" ++ + volatile int chk_fail_ok; + jmp_buf chk_fail_buf; + +@@ -110,24 +114,6 @@ + ret = 1; + return; + } +- +- if (HP_TIMING_AVAIL) +- { +- hp_timing_t start __attribute ((unused)); +- hp_timing_t stop __attribute ((unused));; +- hp_timing_t best_time = ~ (hp_timing_t) 0; +- size_t i; +- +- for (i = 0; i < 32; ++i) +- { +- HP_TIMING_NOW (start); +- CALL (impl, dst, src, dlen); +- HP_TIMING_NOW (stop); +- HP_TIMING_BEST (best_time, start, stop); +- } +- +- printf ("\t%zd", (size_t) best_time); +- } + } + + static void +@@ -151,14 +137,8 @@ + s1[i] = 32 + 23 * i % (max_char - 32); + s1[len] = 0; + +- if (HP_TIMING_AVAIL && dlen > len) +- printf ("Length %4zd, alignment %2zd/%2zd:", len, align1, align2); +- + FOR_EACH_IMPL (impl, 0) + do_one_test (impl, s2, s1, len, dlen); +- +- if (HP_TIMING_AVAIL && dlen > len) +- putchar ('\n'); + } + + static void +@@ -290,28 +270,12 @@ + } + } + +-int ++static int + test_main (void) + { + size_t i; + +- struct sigaction sa; +- sa.sa_handler = handler; +- sa.sa_flags = 0; +- sigemptyset (&sa.sa_mask); +- +- sigaction (SIGABRT, &sa, NULL); +- +- /* Avoid all the buffer overflow messages on stderr. */ +- int fd = open (_PATH_DEVNULL, O_WRONLY); +- if (fd == -1) +- close (STDERR_FILENO); +- else +- { +- dup2 (fd, STDERR_FILENO); +- close (fd); +- } +- setenv ("LIBC_FATAL_STDERR_", "1", 1); ++ set_fortify_handler (handler); + + test_init (); + +@@ -389,5 +353,3 @@ + do_random_tests (); + return ret; + } +- +-#include "../test-skeleton.c" +diff -urN glibc-2.17-c758a686/debug/tst-chk1.c glibc-2.17-c758a686/debug/tst-chk1.c +--- glibc-2.17-c758a686/debug/tst-chk1.c 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/debug/tst-chk1.c 2015-06-20 21:22:16.304457892 -0400 +@@ -20,7 +20,6 @@ + #include + #include + #include +-#include + #include + #include + #include +@@ -119,23 +118,7 @@ + static int + do_test (void) + { +- struct sigaction sa; +- sa.sa_handler = handler; +- sa.sa_flags = 0; +- sigemptyset (&sa.sa_mask); +- +- sigaction (SIGABRT, &sa, NULL); +- +- /* Avoid all the buffer overflow messages on stderr. */ +- int fd = open (_PATH_DEVNULL, O_WRONLY); +- if (fd == -1) +- close (STDERR_FILENO); +- else +- { +- dup2 (fd, STDERR_FILENO); +- close (fd); +- } +- setenv ("LIBC_FATAL_STDERR_", "1", 1); ++ set_fortify_handler (handler); + + struct A { char buf1[9]; char buf2[1]; } a; + struct wA { wchar_t buf1[9]; wchar_t buf2[1]; } wa; +@@ -1366,7 +1349,7 @@ + ret = 1; + } + +- fd = posix_openpt (O_RDWR); ++ int fd = posix_openpt (O_RDWR); + if (fd != -1) + { + char enough[1000]; +diff -urN glibc-2.17-c758a686/debug/tst-longjmp_chk.c glibc-2.17-c758a686/debug/tst-longjmp_chk.c +--- glibc-2.17-c758a686/debug/tst-longjmp_chk.c 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/debug/tst-longjmp_chk.c 2015-06-20 21:22:16.305457862 -0400 +@@ -1,3 +1,5 @@ ++/* Basic test to make sure doing a longjmp to a jmpbuf with an invalid sp ++ is caught by the fortification code. */ + #include + #include + #include +@@ -8,6 +10,12 @@ + #include + #include + ++ ++static int do_test(void); ++#define TEST_FUNCTION do_test () ++#include "../test-skeleton.c" ++ ++ + static jmp_buf b; + + +@@ -43,26 +51,10 @@ + } + + +-int +-main (void) ++static int ++do_test (void) + { +- struct sigaction sa; +- sa.sa_handler = handler; +- sa.sa_flags = 0; +- sigemptyset (&sa.sa_mask); +- +- sigaction (SIGABRT, &sa, NULL); +- +- /* Avoid all the buffer overflow messages on stderr. */ +- int fd = open (_PATH_DEVNULL, O_WRONLY); +- if (fd == -1) +- close (STDERR_FILENO); +- else +- { +- dup2 (fd, STDERR_FILENO); +- close (fd); +- } +- setenv ("LIBC_FATAL_STDERR_", "1", 1); ++ set_fortify_handler (handler); + + + expected_to_fail = false; +diff -urN glibc-2.17-c758a686/elf/dl-support.c glibc-2.17-c758a686/elf/dl-support.c +--- glibc-2.17-c758a686/elf/dl-support.c 2015-06-20 23:38:08.194095607 -0400 ++++ glibc-2.17-c758a686/elf/dl-support.c 2015-06-20 22:00:26.531904072 -0400 +@@ -90,12 +90,6 @@ + /* Get architecture specific initializer. */ + #include + +-/* We expect less than a second for relocation. */ +-#ifdef HP_SMALL_TIMING_AVAIL +-# undef HP_TIMING_AVAIL +-# define HP_TIMING_AVAIL HP_SMALL_TIMING_AVAIL +-#endif +- + /* Initial value of the CPU clock. */ + #ifndef HP_TIMING_NONAVAIL + hp_timing_t _dl_cpuclock_offset; +@@ -265,7 +259,7 @@ + internal_function + _dl_non_dynamic_init (void) + { +- if (HP_TIMING_AVAIL) ++ if (HP_SMALL_TIMING_AVAIL) + HP_TIMING_NOW (_dl_cpuclock_offset); + + if (!_dl_pagesize) +diff -urN glibc-2.17-c758a686/elf/rtld.c glibc-2.17-c758a686/elf/rtld.c +--- glibc-2.17-c758a686/elf/rtld.c 2015-06-20 23:38:08.170096325 -0400 ++++ glibc-2.17-c758a686/elf/rtld.c 2015-06-20 22:06:24.194043066 -0400 +@@ -193,12 +193,6 @@ + static struct libname_list _dl_rtld_libname; + static struct libname_list _dl_rtld_libname2; + +-/* We expect less than a second for relocation. */ +-#ifdef HP_SMALL_TIMING_AVAIL +-# undef HP_TIMING_AVAIL +-# define HP_TIMING_AVAIL HP_SMALL_TIMING_AVAIL +-#endif +- + /* Variable for statistics. */ + #ifndef HP_TIMING_NONAVAIL + static hp_timing_t relocate_time; +@@ -268,7 +262,7 @@ + { + ElfW(Addr) start_addr; + +- if (HP_TIMING_AVAIL) ++ if (HP_SMALL_TIMING_AVAIL) + { + /* If it hasn't happen yet record the startup time. */ + if (! HP_TIMING_INLINE) +@@ -277,9 +271,6 @@ + else + start_time = info->start_time; + #endif +- +- /* Initialize the timing functions. */ +- HP_TIMING_DIFF_INIT (); + } + + /* Transfer data about ourselves to the permanent link_map structure. */ +@@ -315,9 +306,7 @@ + + #endif + +-#if HP_TIMING_AVAIL + HP_TIMING_NOW (GL(dl_cpuclock_offset)); +-#endif + + /* Initialize the stack end variable. */ + __libc_stack_end = __builtin_frame_address (0); +@@ -330,7 +319,7 @@ + + #ifndef HP_TIMING_NONAVAIL + hp_timing_t rtld_total_time; +- if (HP_TIMING_AVAIL) ++ if (HP_SMALL_TIMING_AVAIL) + { + hp_timing_t end_time; + +@@ -372,7 +361,7 @@ + #define RESOLVE_MAP(sym, version, flags) (&bootstrap_map) + #include "dynamic-link.h" + +- if (HP_TIMING_INLINE && HP_TIMING_AVAIL) ++ if (HP_TIMING_INLINE && HP_SMALL_TIMING_AVAIL) + #ifdef DONT_USE_BOOTSTRAP_MAP + HP_TIMING_NOW (start_time); + #else +@@ -2720,7 +2709,7 @@ + char *wp; + + /* Total time rtld used. */ +- if (HP_TIMING_AVAIL) ++ if (HP_SMALL_TIMING_AVAIL) + { + HP_TIMING_PRINT (buf, sizeof (buf), *rtld_total_timep); + _dl_debug_printf ("\nruntime linker statistics:\n" +@@ -2788,7 +2777,7 @@ + + #ifndef HP_TIMING_NONAVAIL + /* Time spend while loading the object and the dependencies. */ +- if (HP_TIMING_AVAIL) ++ if (HP_SMALL_TIMING_AVAIL) + { + char pbuf[30]; + HP_TIMING_PRINT (buf, sizeof (buf), load_time); +diff -urN glibc-2.17-c758a686/Makefile.in glibc-2.17-c758a686/Makefile.in +--- glibc-2.17-c758a686/Makefile.in 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/Makefile.in 2015-06-20 21:22:16.305457862 -0400 +@@ -3,7 +3,7 @@ + # Uncomment the line below if you want to do parallel build. + # PARALLELMFLAGS = -j 4 + +-.PHONY: all install ++.PHONY: all install bench + + all .DEFAULT: + $(MAKE) -r PARALLELMFLAGS="$(PARALLELMFLAGS)" -C $(srcdir) objdir=`pwd` $@ +@@ -11,3 +11,6 @@ + install: + LANGUAGE=C LC_ALL=C; export LANGUAGE LC_ALL; \ + $(MAKE) -r PARALLELMFLAGS="$(PARALLELMFLAGS)" -C $(srcdir) objdir=`pwd` $@ ++ ++bench bench-clean: ++ $(MAKE) -C $(srcdir)/benchtests $(PARALLELMFLAGS) objdir=`pwd` $@ +diff -urN glibc-2.17-c758a686/ports/sysdeps/alpha/hp-timing.h glibc-2.17-c758a686/ports/sysdeps/alpha/hp-timing.h +--- glibc-2.17-c758a686/ports/sysdeps/alpha/hp-timing.h 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/ports/sysdeps/alpha/hp-timing.h 2015-06-20 21:44:22.241186366 -0400 +@@ -1,5 +1,5 @@ + /* High precision, low overhead timing functions. Alpha version. +- Copyright (C) 2001 Free Software Foundation, Inc. ++ Copyright (C) 2001-2015 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Richard Henderson , 2001. + +@@ -20,52 +20,6 @@ + #ifndef _HP_TIMING_H + #define _HP_TIMING_H 1 + +-#include +-#include +-#include <_itoa.h> +- +-/* The macros defined here use the timestamp counter in IA-64. They +- provide a very accurate way to measure the time with very little +- overhead. The time values themself have no real meaning, only +- differences are interesting. +- +- The list of macros we need includes the following: +- +- - HP_TIMING_AVAIL: test for availability. +- +- - HP_TIMING_INLINE: this macro is non-zero if the functionality is not +- implemented using function calls but instead uses some inlined code +- which might simply consist of a few assembler instructions. We have to +- know this since we might want to use the macros here in places where we +- cannot make function calls. +- +- - hp_timing_t: This is the type for variables used to store the time +- values. +- +- - HP_TIMING_ZERO: clear `hp_timing_t' object. +- +- - HP_TIMING_NOW: place timestamp for current time in variable given as +- parameter. +- +- - HP_TIMING_DIFF_INIT: do whatever is necessary to be able to use the +- HP_TIMING_DIFF macro. +- +- - HP_TIMING_DIFF: compute difference between two times and store it +- in a third. Source and destination might overlap. +- +- - HP_TIMING_ACCUM: add time difference to another variable. This might +- be a bit more complicated to implement for some platforms as the +- operation should be thread-safe and 64bit arithmetic on 32bit platforms +- is not. +- +- - HP_TIMING_ACCUM_NT: this is the variant for situations where we know +- there are no threads involved. +- +- - HP_TIMING_PRINT: write decimal representation of the timing value into +- the given string. This operation need not be inline even though +- HP_TIMING_INLINE is specified. +-*/ +- + /* We always have the timestamp register, but it's got only a 4 second + range. Use it for ld.so profiling only. */ + #define HP_TIMING_AVAIL (0) +@@ -77,9 +31,6 @@ + /* We use 32 bit values for the times. */ + typedef unsigned int hp_timing_t; + +-/* Set timestamp value to zero. */ +-#define HP_TIMING_ZERO(VAR) (VAR) = (0) +- + /* The "rpcc" instruction returns a 32-bit counting half and a 32-bit + "virtual cycle counter displacement". Subtracting the two gives us + a virtual cycle count. */ +@@ -90,28 +41,6 @@ + (VAR) = (int) (x_) - (int) (x_ >> 32); \ + } while (0) + +-/* ??? Two rpcc instructions can be scheduled simultaneously. */ +-#define HP_TIMING_DIFF_INIT() do { } while (0) +- +-/* It's simple arithmetic for us. */ +-#define HP_TIMING_DIFF(Diff, Start, End) (Diff) = ((End) - (Start)) +- +-/* ??? Don't bother, since we're only used for ld.so. */ +-#define HP_TIMING_ACCUM(Sum, Diff) not implemented +- +-/* No threads, no extra work. */ +-#define HP_TIMING_ACCUM_NT(Sum, Diff) (Sum) += (Diff) +- +-/* Print the time value. */ +-#define HP_TIMING_PRINT(Buf, Len, Val) \ +- do { \ +- char __buf[20]; \ +- char *__cp = _itoa_word (Val, __buf + sizeof (__buf), 10, 0); \ +- int __len = (Len); \ +- char *__dest = (Buf); \ +- while (__len-- > 0 && __cp < __buf + sizeof (__buf)) \ +- *__dest++ = *__cp++; \ +- memcpy (__dest, " clock cycles", MIN (__len, sizeof (" clock cycles"))); \ +- } while (0) ++#include + + #endif /* hp-timing.h */ +diff -urN glibc-2.17-c758a686/ports/sysdeps/ia64/hp-timing.c glibc-2.17-c758a686/ports/sysdeps/ia64/hp-timing.c +--- glibc-2.17-c758a686/ports/sysdeps/ia64/hp-timing.c 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/ports/sysdeps/ia64/hp-timing.c 1969-12-31 19:00:00.000000000 -0500 +@@ -1,23 +0,0 @@ +-/* Support for high precision, low overhead timing functions. IA-64 version. +- Copyright (C) 2001, 2002 Free Software Foundation, Inc. +- This file is part of the GNU C Library. +- Contributed by Ulrich Drepper , 2001. +- +- 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 +- . */ +- +-#include +- +-/* We have to define the variable for the overhead. */ +-hp_timing_t _dl_hp_timing_overhead; +diff -urN glibc-2.17-c758a686/ports/sysdeps/ia64/hp-timing.h glibc-2.17-c758a686/ports/sysdeps/ia64/hp-timing.h +--- glibc-2.17-c758a686/ports/sysdeps/ia64/hp-timing.h 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/ports/sysdeps/ia64/hp-timing.h 2015-06-20 21:44:03.984740754 -0400 +@@ -1,5 +1,5 @@ + /* High precision, low overhead timing functions. IA-64 version. +- Copyright (C) 2001-2012 Free Software Foundation, Inc. ++ Copyright (C) 2001-2015 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , 2001. + +@@ -20,56 +20,9 @@ + #ifndef _HP_TIMING_H + #define _HP_TIMING_H 1 + +-#include +-#include +-#include <_itoa.h> +-#include +- +-/* The macros defined here use the timestamp counter in IA-64. They +- provide a very accurate way to measure the time with very little +- overhead. The time values themself have no real meaning, only +- differences are interesting. +- +- The list of macros we need includes the following: +- +- - HP_TIMING_AVAIL: test for availability. +- +- - HP_TIMING_INLINE: this macro is non-zero if the functionality is not +- implemented using function calls but instead uses some inlined code +- which might simply consist of a few assembler instructions. We have to +- know this since we might want to use the macros here in places where we +- cannot make function calls. +- +- - hp_timing_t: This is the type for variables used to store the time +- values. +- +- - HP_TIMING_ZERO: clear `hp_timing_t' object. +- +- - HP_TIMING_NOW: place timestamp for current time in variable given as +- parameter. +- +- - HP_TIMING_DIFF_INIT: do whatever is necessary to be able to use the +- HP_TIMING_DIFF macro. +- +- - HP_TIMING_DIFF: compute difference between two times and store it +- in a third. Source and destination might overlap. +- +- - HP_TIMING_ACCUM: add time difference to another variable. This might +- be a bit more complicated to implement for some platforms as the +- operation should be thread-safe and 64bit arithmetic on 32bit platforms +- is not. +- +- - HP_TIMING_ACCUM_NT: this is the variant for situations where we know +- there are no threads involved. +- +- - HP_TIMING_PRINT: write decimal representation of the timing value into +- the given string. This operation need not be inline even though +- HP_TIMING_INLINE is specified. +- +-*/ +- + /* We always assume having the timestamp register. */ + #define HP_TIMING_AVAIL (1) ++#define HP_SMALL_TIMING_AVAIL (1) + + /* We indeed have inlined functions. */ + #define HP_TIMING_INLINE (1) +@@ -77,10 +30,6 @@ + /* We use 64bit values for the times. */ + typedef unsigned long int hp_timing_t; + +-/* Set timestamp value to zero. */ +-#define HP_TIMING_ZERO(Var) (Var) = (0) +- +- + /* The Itanium/Merced has a bug where the ar.itc register value read + is not correct in some situations. The solution is to read again. + For now we always do this until we know how to recognize a fixed +@@ -95,53 +44,6 @@ + while (REPEAT_READ (__itc)); \ + Var = __itc; }) + +-/* Use two 'ar.itc' instructions in a row to find out how long it takes. */ +-#define HP_TIMING_DIFF_INIT() \ +- do { \ +- int __cnt = 5; \ +- GLRO(dl_hp_timing_overhead) = ~0ul; \ +- do \ +- { \ +- hp_timing_t __t1, __t2; \ +- HP_TIMING_NOW (__t1); \ +- HP_TIMING_NOW (__t2); \ +- if (__t2 - __t1 < GLRO(dl_hp_timing_overhead)) \ +- GLRO(dl_hp_timing_overhead) = __t2 - __t1; \ +- } \ +- while (--__cnt > 0); \ +- } while (0) +- +-/* It's simple arithmetic for us. */ +-#define HP_TIMING_DIFF(Diff, Start, End) (Diff) = ((End) - (Start)) +- +-/* We have to jump through hoops to get this correctly implemented. */ +-#define HP_TIMING_ACCUM(Sum, Diff) \ +- do { \ +- hp_timing_t __oldval; \ +- hp_timing_t __diff = (Diff) - GLRO(dl_hp_timing_overhead); \ +- hp_timing_t __newval; \ +- do \ +- { \ +- __oldval = (Sum); \ +- __newval = __oldval + __diff; \ +- } \ +- while (! __sync_bool_compare_and_swap (&Sum, __oldvar, __newval)); \ +- } while (0) +- +-/* No threads, no extra work. */ +-#define HP_TIMING_ACCUM_NT(Sum, Diff) (Sum) += (Diff) +- +-/* Print the time value. */ +-#define HP_TIMING_PRINT(Buf, Len, Val) \ +- do { \ +- char __buf[20]; \ +- char *__cp = _itoa_word (Val, __buf + sizeof (__buf), 10, 0); \ +- int __len = (Len); \ +- char *__dest = (Buf); \ +- while (__len-- > 0 && __cp < __buf + sizeof (__buf)) \ +- *__dest++ = *__cp++; \ +- memcpy (__dest, " clock cycles", MIN (__len, \ +- (int) sizeof (" clock cycles"))); \ +- } while (0) ++#include + + #endif /* hp-timing.h */ +diff -urN glibc-2.17-c758a686/ports/sysdeps/ia64/Makefile glibc-2.17-c758a686/ports/sysdeps/ia64/Makefile +--- glibc-2.17-c758a686/ports/sysdeps/ia64/Makefile 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/ports/sysdeps/ia64/Makefile 2015-06-20 22:31:17.725704221 -0400 +@@ -7,8 +7,6 @@ + + ifeq ($(subdir), csu) + CPPFLAGS-start.S = -D__ASSEMBLY__ +-sysdep_routines += hp-timing +-elide-routines.os += hp-timing + + ifeq (yes,$(build-shared)) + # Compatibility +diff -urN glibc-2.17-c758a686/Rules glibc-2.17-c758a686/Rules +--- glibc-2.17-c758a686/Rules 2015-06-20 23:38:08.446088067 -0400 ++++ glibc-2.17-c758a686/Rules 2015-06-20 21:22:16.305457862 -0400 +@@ -83,7 +83,7 @@ + + # This makes all the auxiliary and test programs. + +-.PHONY: others tests ++.PHONY: others tests bench + ifeq ($(multi-arch),no) + tests := $(filter-out $(tests-ifunc), $(tests)) + xtests := $(filter-out $(xtests-ifunc), $(xtests)) +@@ -192,6 +192,7 @@ + $(make-test-out) > $@ + + endif # tests ++ + + .PHONY: distclean realclean subdir_distclean subdir_realclean \ + subdir_clean subdir_mostlyclean subdir_testclean +diff -urN glibc-2.17-c758a686/scripts/pylint glibc-2.17-c758a686/scripts/pylint +--- glibc-2.17-c758a686/scripts/pylint 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.17-c758a686/scripts/pylint 2015-06-20 21:22:16.305457862 -0400 +@@ -0,0 +1,5 @@ ++#!/bin/sh ++# Simple wrapper around the pylint program that uses the pylintrc file to ++# validate the source code in files passed on command line. ++ ++exec pylint --rcfile "${0%/*}/pylintrc" "$@" +diff -urN glibc-2.17-c758a686/scripts/pylintrc glibc-2.17-c758a686/scripts/pylintrc +--- glibc-2.17-c758a686/scripts/pylintrc 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.17-c758a686/scripts/pylintrc 2015-06-20 21:22:16.305457862 -0400 +@@ -0,0 +1,274 @@ ++[MASTER] ++ ++# Specify a configuration file. ++#rcfile= ++ ++# Python code to execute, usually for sys.path manipulation such as ++# pygtk.require(). ++#init-hook= ++ ++# Profiled execution. ++profile=no ++ ++# Add files or directories to the blacklist. They should be base names, not ++# paths. ++ignore=CVS ++ ++# Pickle collected data for later comparisons. ++persistent=yes ++ ++# List of plugins (as comma separated values of python modules names) to load, ++# usually to register additional checkers. ++load-plugins= ++ ++ ++[MESSAGES CONTROL] ++ ++# Enable the message, report, category or checker with the given id(s). You can ++# either give multiple identifier separated by comma (,) or put this option ++# multiple time. See also the "--disable" option for examples. ++#enable= ++ ++# Disable the message, report, category or checker with the given id(s). You ++# can either give multiple identifiers separated by comma (,) or put this ++# option multiple times (only on the command line, not in the configuration ++# file where it should appear only once).You can also use "--disable=all" to ++# disable everything first and then reenable specific checks. For example, if ++# you want to run only the similarities checker, you can use "--disable=all ++# --enable=similarities". If you want to run only the classes checker, but have ++# no Warning level messages displayed, use"--disable=all --enable=classes ++# --disable=W" ++#disable= ++ ++ ++[REPORTS] ++ ++# Set the output format. Available formats are text, parseable, colorized, msvs ++# (visual studio) and html. You can also give a reporter class, eg ++# mypackage.mymodule.MyReporterClass. ++output-format=text ++ ++# Put messages in a separate file for each module / package specified on the ++# command line instead of printing them on stdout. Reports (if any) will be ++# written in a file name "pylint_global.[txt|html]". ++files-output=no ++ ++# Tells whether to display a full report or only the messages ++reports=yes ++ ++# Python expression which should return a note less than 10 (10 is the highest ++# note). You have access to the variables errors warning, statement which ++# respectively contain the number of errors / warnings messages and the total ++# number of statements analyzed. This is used by the global evaluation report ++# (RP0004). ++evaluation=10.0 - ((float(5 * error + warning + refactor + convention) / statement) * 10) ++ ++# Add a comment according to your evaluation note. This is used by the global ++# evaluation report (RP0004). ++comment=no ++ ++# Template used to display messages. This is a python new-style format string ++# used to format the massage information. See doc for all details ++#msg-template= ++ ++ ++[MISCELLANEOUS] ++ ++# List of note tags to take in consideration, separated by a comma. ++notes=FIXME,XXX,TODO ++ ++ ++[SIMILARITIES] ++ ++# Minimum lines number of a similarity. ++min-similarity-lines=4 ++ ++# Ignore comments when computing similarities. ++ignore-comments=yes ++ ++# Ignore docstrings when computing similarities. ++ignore-docstrings=yes ++ ++# Ignore imports when computing similarities. ++ignore-imports=no ++ ++ ++[BASIC] ++ ++# Required attributes for module, separated by a comma ++required-attributes= ++ ++# List of builtins function names that should not be used, separated by a comma ++bad-functions=map,filter,apply,input ++ ++# Regular expression which should only match correct module names ++module-rgx=(([a-z_][a-z0-9_]*)|([A-Z][a-zA-Z0-9]+))$ ++ ++# Regular expression which should only match correct module level names ++const-rgx=(([A-Z_][A-Z0-9_]*)|(__.*__))$ ++ ++# Regular expression which should only match correct class names ++class-rgx=[A-Z_][a-zA-Z0-9]+$ ++ ++# Regular expression which should only match correct function names ++function-rgx=[a-z_][a-z0-9_]{2,30}$ ++ ++# Regular expression which should only match correct method names ++method-rgx=[a-z_][a-z0-9_]{2,30}$ ++ ++# Regular expression which should only match correct instance attribute names ++attr-rgx=[a-z_][a-z0-9_]{2,30}$ ++ ++# Regular expression which should only match correct argument names ++argument-rgx=[a-z_][a-z0-9_]{2,30}$ ++ ++# Regular expression which should only match correct variable names ++variable-rgx=[a-z_][a-z0-9_]{2,30}$ ++ ++# Regular expression which should only match correct attribute names in class ++# bodies ++class-attribute-rgx=([A-Za-z_][A-Za-z0-9_]{2,30}|(__.*__))$ ++ ++# Regular expression which should only match correct list comprehension / ++# generator expression variable names ++inlinevar-rgx=[A-Za-z_][A-Za-z0-9_]*$ ++ ++# Good variable names which should always be accepted, separated by a comma ++# f is a useful name for a file descriptor ++good-names=f,i,j,k,ex,Run,_ ++ ++# Bad variable names which should always be refused, separated by a comma ++bad-names=foo,bar,baz,toto,tutu,tata ++ ++# Regular expression which should only match function or class names that do ++# not require a docstring. ++no-docstring-rgx=__.*__ ++ ++# Minimum line length for functions/classes that require docstrings, shorter ++# ones are exempt. ++docstring-min-length=-1 ++ ++ ++[VARIABLES] ++ ++# Tells whether we should check for unused import in __init__ files. ++init-import=no ++ ++# A regular expression matching the beginning of the name of dummy variables ++# (i.e. not used). ++dummy-variables-rgx=_$|dummy ++ ++# List of additional names supposed to be defined in builtins. Remember that ++# you should avoid to define new builtins when possible. ++additional-builtins= ++ ++ ++[FORMAT] ++ ++# Maximum number of characters on a single line. ++max-line-length=79 ++ ++# Regexp for a line that is allowed to be longer than the limit. ++ignore-long-lines=^\s*(# )??$ ++ ++# Maximum number of lines in a module ++max-module-lines=1000 ++ ++# String used as indentation unit. This is usually " " (4 spaces) or "\t" (1 ++# tab). ++indent-string=' ' ++ ++ ++[TYPECHECK] ++ ++# Tells whether missing members accessed in mixin class should be ignored. A ++# mixin class is detected if its name ends with "mixin" (case insensitive). ++ignore-mixin-members=yes ++ ++# List of classes names for which member attributes should not be checked ++# (useful for classes with attributes dynamically set). ++ignored-classes=SQLObject ++ ++# When zope mode is activated, add a predefined set of Zope acquired attributes ++# to generated-members. ++zope=no ++ ++# List of members which are set dynamically and missed by pylint inference ++# system, and so shouldn't trigger E0201 when accessed. Python regular ++# expressions are accepted. ++generated-members=REQUEST,acl_users,aq_parent ++ ++ ++[CLASSES] ++ ++# List of interface methods to ignore, separated by a comma. This is used for ++# instance to not check methods defines in Zope's Interface base class. ++ignore-iface-methods=isImplementedBy,deferred,extends,names,namesAndDescriptions,queryDescriptionFor,getBases,getDescriptionFor,getDoc,getName,getTaggedValue,getTaggedValueTags,isEqualOrExtendedBy,setTaggedValue,isImplementedByInstancesOf,adaptWith,is_implemented_by ++ ++# List of method names used to declare (i.e. assign) instance attributes. ++defining-attr-methods=__init__,__new__,setUp ++ ++# List of valid names for the first argument in a class method. ++valid-classmethod-first-arg=cls ++ ++# List of valid names for the first argument in a metaclass class method. ++valid-metaclass-classmethod-first-arg=mcs ++ ++ ++[IMPORTS] ++ ++# Deprecated modules which should not be used, separated by a comma ++deprecated-modules=regsub,TERMIOS,Bastion,rexec ++ ++# Create a graph of every (i.e. internal and external) dependencies in the ++# given file (report RP0402 must not be disabled) ++import-graph= ++ ++# Create a graph of external dependencies in the given file (report RP0402 must ++# not be disabled) ++ext-import-graph= ++ ++# Create a graph of internal dependencies in the given file (report RP0402 must ++# not be disabled) ++int-import-graph= ++ ++ ++[DESIGN] ++ ++# Maximum number of arguments for function / method ++max-args=5 ++ ++# Argument names that match this expression will be ignored. Default to name ++# with leading underscore ++ignored-argument-names=_.* ++ ++# Maximum number of locals for function / method body ++max-locals=15 ++ ++# Maximum number of return / yield for function / method body ++max-returns=6 ++ ++# Maximum number of branch for function / method body ++max-branches=12 ++ ++# Maximum number of statements in function / method body ++max-statements=50 ++ ++# Maximum number of parents for a class (see R0901). ++max-parents=7 ++ ++# Maximum number of attributes for a class (see R0902). ++max-attributes=7 ++ ++# Minimum number of public methods for a class (see R0903). ++min-public-methods=2 ++ ++# Maximum number of public methods for a class (see R0904). ++max-public-methods=20 ++ ++ ++[EXCEPTIONS] ++ ++# Exceptions that will emit a warning when being caught. Defaults to ++# "Exception" ++overgeneral-exceptions=Exception +diff -urN glibc-2.17-c758a686/string/strtok.c glibc-2.17-c758a686/string/strtok.c +--- glibc-2.17-c758a686/string/strtok.c 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/string/strtok.c 2015-06-20 21:22:16.305457862 -0400 +@@ -23,6 +23,10 @@ + + #undef strtok + ++#ifndef STRTOK ++# define STRTOK strtok ++#endif ++ + /* Parse S into tokens separated by characters in DELIM. + If S is NULL, the last string strtok() was called with is + used. For example: +@@ -33,9 +37,7 @@ + // s = "abc\0=-def\0" + */ + char * +-strtok (s, delim) +- char *s; +- const char *delim; ++STRTOK (char *s, const char *delim) + { + char *token; + +diff -urN glibc-2.17-c758a686/string/test-memccpy.c glibc-2.17-c758a686/string/test-memccpy.c +--- glibc-2.17-c758a686/string/test-memccpy.c 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/string/test-memccpy.c 2015-06-20 23:36:49.734443244 -0400 +@@ -74,24 +74,6 @@ + ret = 1; + return; + } +- +- if (HP_TIMING_AVAIL) +- { +- hp_timing_t start __attribute__ ((unused)); +- hp_timing_t stop __attribute__ ((unused)); +- hp_timing_t best_time = ~ (hp_timing_t) 0; +- size_t i; +- +- for (i = 0; i < 32; ++i) +- { +- HP_TIMING_NOW (start); +- CALL (impl, dst, src, c, n); +- HP_TIMING_NOW (stop); +- HP_TIMING_BEST (best_time, start, stop); +- } +- +- printf ("\t%zd", (size_t) best_time); +- } + } + + static void +@@ -122,14 +104,8 @@ + for (i = len; i + align1 < page_size && i < len + 64; ++i) + s1[i] = 32 + 32 * i % (max_char - 32); + +- if (HP_TIMING_AVAIL) +- printf ("Length %4zd, n %4zd, char %d, alignment %2zd/%2zd:", len, n, c, align1, align2); +- + FOR_EACH_IMPL (impl, 0) + do_one_test (impl, s2, s1, c, len, n); +- +- if (HP_TIMING_AVAIL) +- putchar ('\n'); + } + + static void +diff -urN glibc-2.17-c758a686/string/test-memchr.c glibc-2.17-c758a686/string/test-memchr.c +--- glibc-2.17-c758a686/string/test-memchr.c 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/string/test-memchr.c 2015-06-20 23:36:49.736443184 -0400 +@@ -47,24 +47,6 @@ + ret = 1; + return; + } +- +- if (HP_TIMING_AVAIL) +- { +- hp_timing_t start __attribute ((unused)); +- hp_timing_t stop __attribute ((unused)); +- hp_timing_t best_time = ~ (hp_timing_t) 0; +- size_t i; +- +- for (i = 0; i < 32; ++i) +- { +- HP_TIMING_NOW (start); +- CALL (impl, s, c, n); +- HP_TIMING_NOW (stop); +- HP_TIMING_BEST (best_time, start, stop); +- } +- +- printf ("\t%zd", (size_t) best_time); +- } + } + + static void +@@ -97,14 +79,8 @@ + buf1[align + len] = seek_char; + } + +- if (HP_TIMING_AVAIL) +- printf ("Length %4zd, alignment %2zd:", pos, align); +- + FOR_EACH_IMPL (impl, 0) + do_one_test (impl, (char *) (buf1 + align), seek_char, len, result); +- +- if (HP_TIMING_AVAIL) +- putchar ('\n'); + } + + static void +diff -urN glibc-2.17-c758a686/string/test-memcmp.c glibc-2.17-c758a686/string/test-memcmp.c +--- glibc-2.17-c758a686/string/test-memcmp.c 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/string/test-memcmp.c 2015-06-20 23:36:49.736443184 -0400 +@@ -100,24 +100,6 @@ + { + if (check_result (impl, s1, s2, len, exp_result) < 0) + return; +- +- if (HP_TIMING_AVAIL) +- { +- hp_timing_t start __attribute ((unused)); +- hp_timing_t stop __attribute ((unused)); +- hp_timing_t best_time = ~ (hp_timing_t) 0; +- size_t i; +- +- for (i = 0; i < 32; ++i) +- { +- HP_TIMING_NOW (start); +- CALL (impl, s1, s2, len); +- HP_TIMING_NOW (stop); +- HP_TIMING_BEST (best_time, start, stop); +- } +- +- printf ("\t%zd", (size_t) best_time); +- } + } + + static void +@@ -147,14 +129,8 @@ + s2[len] = align2; + s2[len - 1] -= exp_result; + +- if (HP_TIMING_AVAIL) +- printf ("Length %4zd, alignment %2zd/%2zd:", len, align1, align2); +- + FOR_EACH_IMPL (impl, 0) + do_one_test (impl, s1, s2, len, exp_result); +- +- if (HP_TIMING_AVAIL) +- putchar ('\n'); + } + + static void +diff -urN glibc-2.17-c758a686/string/test-memcpy.c glibc-2.17-c758a686/string/test-memcpy.c +--- glibc-2.17-c758a686/string/test-memcpy.c 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/string/test-memcpy.c 2015-06-20 23:36:49.736443184 -0400 +@@ -68,24 +68,6 @@ + ret = 1; + return; + } +- +- if (HP_TIMING_AVAIL) +- { +- hp_timing_t start __attribute ((unused)); +- hp_timing_t stop __attribute ((unused)); +- hp_timing_t best_time = ~ (hp_timing_t) 0; +- size_t i; +- +- for (i = 0; i < 32; ++i) +- { +- HP_TIMING_NOW (start); +- CALL (impl, dst, src, len); +- HP_TIMING_NOW (stop); +- HP_TIMING_BEST (best_time, start, stop); +- } +- +- printf ("\t%zd", (size_t) best_time); +- } + } + + static void +@@ -108,14 +90,8 @@ + for (i = 0, j = 1; i < len; i++, j += 23) + s1[i] = j; + +- if (HP_TIMING_AVAIL) +- printf ("Length %4zd, alignment %2zd/%2zd:", len, align1, align2); +- + FOR_EACH_IMPL (impl, 0) + do_one_test (impl, s2, s1, len); +- +- if (HP_TIMING_AVAIL) +- putchar ('\n'); + } + + static void +diff -urN glibc-2.17-c758a686/string/test-memmem.c glibc-2.17-c758a686/string/test-memmem.c +--- glibc-2.17-c758a686/string/test-memmem.c 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/string/test-memmem.c 2015-06-20 23:36:49.736443184 -0400 +@@ -82,24 +82,6 @@ + if (check_result (impl, haystack, haystack_len, needle, needle_len, + expected) < 0) + return; +- +- if (HP_TIMING_AVAIL) +- { +- hp_timing_t start __attribute ((unused)); +- hp_timing_t stop __attribute ((unused)); +- hp_timing_t best_time = ~ (hp_timing_t) 0; +- size_t i; +- +- for (i = 0; i < 32; ++i) +- { +- HP_TIMING_NOW (start); +- CALL (impl, haystack, haystack_len, needle, needle_len); +- HP_TIMING_NOW (stop); +- HP_TIMING_BEST (best_time, start, stop); +- } +- +- printf ("\t%zd", (size_t) best_time); +- } + } + + static void +@@ -110,16 +92,10 @@ + memcpy (tmpbuf, buf1 + idx, len); + memcpy (buf1 + idx, str, len); + +- if (HP_TIMING_AVAIL) +- printf ("String %s, offset %zd:", str, idx); +- + FOR_EACH_IMPL (impl, 0) + do_one_test (impl, buf1, BUF1PAGES * page_size, str, len, buf1 + idx); + + memcpy (buf1 + idx, tmpbuf, len); +- +- if (HP_TIMING_AVAIL) +- putchar ('\n'); + } + + static void +@@ -143,16 +119,10 @@ + buf1[idx + off] = ch; + } + +- if (HP_TIMING_AVAIL) +- printf ("String %.*s, offset %zd:", (int) len, buf1 + idx, idx); +- + FOR_EACH_IMPL (impl, 0) + do_one_test (impl, buf1, BUF1PAGES * page_size, buf1 + idx, len, + buf1 + idx); + +- if (HP_TIMING_AVAIL) +- putchar ('\n'); +- + memcpy (buf1 + idx, tmpbuf, len); + } + } +diff -urN glibc-2.17-c758a686/string/test-memmove.c glibc-2.17-c758a686/string/test-memmove.c +--- glibc-2.17-c758a686/string/test-memmove.c 2015-06-20 23:38:08.186095846 -0400 ++++ glibc-2.17-c758a686/string/test-memmove.c 2015-06-20 23:36:49.737443154 -0400 +@@ -91,28 +91,6 @@ + ret = 1; + return; + } +- +- if (HP_TIMING_AVAIL) +- { +- hp_timing_t start __attribute ((unused)); +- hp_timing_t stop __attribute ((unused)); +- hp_timing_t best_time = ~ (hp_timing_t) 0; +- size_t i; +- +- for (i = 0; i < 32; ++i) +- { +- HP_TIMING_NOW (start); +-#ifdef TEST_BCOPY +- CALL (impl, src, dst, len); +-#else +- CALL (impl, dst, src, len); +-#endif +- HP_TIMING_NOW (stop); +- HP_TIMING_BEST (best_time, start, stop); +- } +- +- printf ("\t%zd", (size_t) best_time); +- } + } + + static void +@@ -135,14 +113,8 @@ + for (i = 0, j = 1; i < len; i++, j += 23) + s1[i] = j; + +- if (HP_TIMING_AVAIL) +- printf ("Length %4zd, alignment %2zd/%2zd:", len, align1, align2); +- + FOR_EACH_IMPL (impl, 0) + do_one_test (impl, s2, (char *) (buf2 + align1), s1, len); +- +- if (HP_TIMING_AVAIL) +- putchar ('\n'); + } + + static void +diff -urN glibc-2.17-c758a686/string/test-memset.c glibc-2.17-c758a686/string/test-memset.c +--- glibc-2.17-c758a686/string/test-memset.c 2015-06-20 23:38:08.186095846 -0400 ++++ glibc-2.17-c758a686/string/test-memset.c 2015-06-20 23:36:49.737443154 -0400 +@@ -92,29 +92,6 @@ + ret = 1; + return; + } +- +- if (HP_TIMING_AVAIL) +- { +- hp_timing_t start __attribute ((unused)); +- hp_timing_t stop __attribute ((unused)); +- hp_timing_t best_time = ~ (hp_timing_t) 0; +- size_t i; +- +- for (i = 0; i < 32; ++i) +- { +- HP_TIMING_NOW (start); +-#ifdef TEST_BZERO +- CALL (impl, s, n); +-#else +- CALL (impl, s, c, n); +-#endif +- +- HP_TIMING_NOW (stop); +- HP_TIMING_BEST (best_time, start, stop); +- } +- +- printf ("\t%zd", (size_t) best_time); +- } + } + + static void +@@ -124,14 +101,8 @@ + if (align + len > page_size) + return; + +- if (HP_TIMING_AVAIL) +- printf ("Length %4zd, alignment %2zd, c %2d:", len, align, c); +- + FOR_EACH_IMPL (impl, 0) + do_one_test (impl, (char *) buf1 + align, c, len); +- +- if (HP_TIMING_AVAIL) +- putchar ('\n'); + } + + #ifndef TEST_BZERO +diff -urN glibc-2.17-c758a686/string/test-rawmemchr.c glibc-2.17-c758a686/string/test-rawmemchr.c +--- glibc-2.17-c758a686/string/test-rawmemchr.c 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/string/test-rawmemchr.c 2015-06-20 23:36:49.737443154 -0400 +@@ -49,24 +49,6 @@ + ret = 1; + return; + } +- +- if (HP_TIMING_AVAIL) +- { +- hp_timing_t start __attribute ((unused)); +- hp_timing_t stop __attribute ((unused)); +- hp_timing_t best_time = ~ (hp_timing_t) 0; +- size_t i; +- +- for (i = 0; i < 32; ++i) +- { +- HP_TIMING_NOW (start); +- CALL (impl, s, c); +- HP_TIMING_NOW (stop); +- HP_TIMING_BEST (best_time, start, stop); +- } +- +- printf ("\t%zd", (size_t) best_time); +- } + } + + static void +@@ -93,14 +75,8 @@ + buf1[align + len] = -seek_char; + result = (char *) (buf1 + align + pos); + +- if (HP_TIMING_AVAIL) +- printf ("Length %4zd, alignment %2zd:", pos, align); +- + FOR_EACH_IMPL (impl, 0) + do_one_test (impl, (char *) (buf1 + align), seek_char, result); +- +- if (HP_TIMING_AVAIL) +- putchar ('\n'); + } + + static void +diff -urN glibc-2.17-c758a686/string/test-strcasecmp.c glibc-2.17-c758a686/string/test-strcasecmp.c +--- glibc-2.17-c758a686/string/test-strcasecmp.c 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/string/test-strcasecmp.c 2015-06-20 23:36:49.737443154 -0400 +@@ -73,24 +73,6 @@ + ret = 1; + return; + } +- +- if (HP_TIMING_AVAIL) +- { +- hp_timing_t start __attribute ((unused)); +- hp_timing_t stop __attribute ((unused)); +- hp_timing_t best_time = ~ (hp_timing_t) 0; +- size_t i; +- +- for (i = 0; i < 32; ++i) +- { +- HP_TIMING_NOW (start); +- CALL (impl, s1, s2); +- HP_TIMING_NOW (stop); +- HP_TIMING_BEST (best_time, start, stop); +- } +- +- printf ("\t%zd", (size_t) best_time); +- } + } + + static void +@@ -129,14 +111,8 @@ + else + s2[len - 1] -= exp_result; + +- if (HP_TIMING_AVAIL) +- printf ("Length %4zd, alignment %2zd/%2zd:", len, align1, align2); +- + FOR_EACH_IMPL (impl, 0) + do_one_test (impl, s1, s2, exp_result); +- +- if (HP_TIMING_AVAIL) +- putchar ('\n'); + } + + static void +diff -urN glibc-2.17-c758a686/string/test-strcasestr.c glibc-2.17-c758a686/string/test-strcasestr.c +--- glibc-2.17-c758a686/string/test-strcasestr.c 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/string/test-strcasestr.c 2015-06-20 23:36:49.737443154 -0400 +@@ -78,24 +78,6 @@ + { + if (check_result (impl, s1, s2, exp_result) < 0) + return; +- +- if (HP_TIMING_AVAIL) +- { +- hp_timing_t start __attribute ((unused)); +- hp_timing_t stop __attribute ((unused)); +- hp_timing_t best_time = ~(hp_timing_t) 0; +- size_t i; +- +- for (i = 0; i < 32; ++i) +- { +- HP_TIMING_NOW (start); +- CALL (impl, s1, s2); +- HP_TIMING_NOW (stop); +- HP_TIMING_BEST (best_time, start, stop); +- } +- +- printf ("\t%zd", (size_t) best_time); +- } + } + + +@@ -135,15 +117,8 @@ + } + s1[len1] = '\0'; + +- if (HP_TIMING_AVAIL) +- printf ("Length %4zd/%zd, alignment %2zd/%2zd, %s:", +- len1, len2, align1, align2, fail ? "fail" : "found"); +- + FOR_EACH_IMPL (impl, 0) + do_one_test (impl, s1, s2, fail ? NULL : s1 + len1 - len2); +- +- if (HP_TIMING_AVAIL) +- putchar ('\n'); + } + + static void +diff -urN glibc-2.17-c758a686/string/test-strcat.c glibc-2.17-c758a686/string/test-strcat.c +--- glibc-2.17-c758a686/string/test-strcat.c 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/string/test-strcat.c 2015-06-20 23:36:49.737443154 -0400 +@@ -56,25 +56,6 @@ + ret = 1; + return; + } +- +- if (HP_TIMING_AVAIL) +- { +- hp_timing_t start __attribute ((unused)); +- hp_timing_t stop __attribute ((unused)); +- hp_timing_t best_time = ~ (hp_timing_t) 0; +- size_t i; +- +- for (i = 0; i < 32; ++i) +- { +- dst[k] = '\0'; +- HP_TIMING_NOW (start); +- CALL (impl, dst, src); +- HP_TIMING_NOW (stop); +- HP_TIMING_BEST (best_time, start, stop); +- } +- +- printf ("\t%zd", (size_t) best_time); +- } + } + + static void +@@ -101,17 +82,11 @@ + for (i = 0; i < len2; i++) + s2[i] = 32 + 23 * i % (max_char - 32); + +- if (HP_TIMING_AVAIL) +- printf ("Length %4zd/%4zd, alignment %2zd/%2zd:", len1, len2, align1, align2); +- + FOR_EACH_IMPL (impl, 0) + { + s2[len2] = '\0'; + do_one_test (impl, s2, s1); + } +- +- if (HP_TIMING_AVAIL) +- putchar ('\n'); + } + + static void +diff -urN glibc-2.17-c758a686/string/test-strchr.c glibc-2.17-c758a686/string/test-strchr.c +--- glibc-2.17-c758a686/string/test-strchr.c 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/string/test-strchr.c 2015-06-20 23:36:49.737443154 -0400 +@@ -107,24 +107,6 @@ + { + if (check_result (impl, s, c, exp_res) < 0) + return; +- +- if (HP_TIMING_AVAIL) +- { +- hp_timing_t start __attribute ((unused)); +- hp_timing_t stop __attribute ((unused)); +- hp_timing_t best_time = ~ (hp_timing_t) 0; +- size_t i; +- +- for (i = 0; i < 32; ++i) +- { +- HP_TIMING_NOW (start); +- CALL (impl, s, c); +- HP_TIMING_NOW (stop); +- HP_TIMING_BEST (best_time, start, stop); +- } +- +- printf ("\t%zd", (size_t) best_time); +- } + } + + static void +@@ -160,15 +142,8 @@ + else + result = NULLRET (buf + align + len); + +- if (HP_TIMING_AVAIL) +- printf ("Length %4zd, alignment in bytes %2zd:", +- pos, align * sizeof (CHAR)); +- + FOR_EACH_IMPL (impl, 0) + do_one_test (impl, buf + align, seek_char, result); +- +- if (HP_TIMING_AVAIL) +- putchar ('\n'); + } + + static void +diff -urN glibc-2.17-c758a686/string/test-strcmp.c glibc-2.17-c758a686/string/test-strcmp.c +--- glibc-2.17-c758a686/string/test-strcmp.c 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/string/test-strcmp.c 2015-06-20 23:36:49.737443154 -0400 +@@ -161,24 +161,6 @@ + { + if (check_result (impl, s1, s2, exp_result) < 0) + return; +- +- if (HP_TIMING_AVAIL) +- { +- hp_timing_t start __attribute ((unused)); +- hp_timing_t stop __attribute ((unused)); +- hp_timing_t best_time = ~ (hp_timing_t) 0; +- size_t i; +- +- for (i = 0; i < 32; ++i) +- { +- HP_TIMING_NOW (start); +- CALL (impl, s1, s2); +- HP_TIMING_NOW (stop); +- HP_TIMING_BEST (best_time, start, stop); +- } +- +- printf ("\t%zd", (size_t) best_time); +- } + } + + static void +@@ -214,14 +196,8 @@ + s2[len + 1] = 24 + exp_result; + s2[len - 1] -= exp_result; + +- if (HP_TIMING_AVAIL) +- printf ("Length %4zd, alignment %2zd/%2zd:", len, align1, align2); +- + FOR_EACH_IMPL (impl, 0) + do_one_test (impl, s1, s2, exp_result); +- +- if (HP_TIMING_AVAIL) +- putchar ('\n'); + } + + static void +diff -urN glibc-2.17-c758a686/string/test-strcpy.c glibc-2.17-c758a686/string/test-strcpy.c +--- glibc-2.17-c758a686/string/test-strcpy.c 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/string/test-strcpy.c 2015-06-20 23:36:49.737443154 -0400 +@@ -92,24 +92,6 @@ + ret = 1; + return; + } +- +- if (HP_TIMING_AVAIL) +- { +- hp_timing_t start __attribute ((unused)); +- hp_timing_t stop __attribute ((unused));; +- hp_timing_t best_time = ~ (hp_timing_t) 0; +- size_t i; +- +- for (i = 0; i < 32; ++i) +- { +- HP_TIMING_NOW (start); +- CALL (impl, dst, src); +- HP_TIMING_NOW (stop); +- HP_TIMING_BEST (best_time, start, stop); +- } +- +- printf ("\t%zd", (size_t) best_time); +- } + } + + static void +@@ -135,14 +117,8 @@ + s1[i] = 32 + 23 * i % (max_char - 32); + s1[len] = 0; + +- if (HP_TIMING_AVAIL) +- printf ("Length %4zd, alignments in bytes %2zd/%2zd:", len, align1 * sizeof(CHAR), align2 * sizeof(CHAR)); +- + FOR_EACH_IMPL (impl, 0) + do_one_test (impl, s2, s1, len); +- +- if (HP_TIMING_AVAIL) +- putchar ('\n'); + } + + static void +diff -urN glibc-2.17-c758a686/string/test-string.h glibc-2.17-c758a686/string/test-string.h +--- glibc-2.17-c758a686/string/test-string.h 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/string/test-string.h 2015-06-20 21:48:02.050511490 -0400 +@@ -1,5 +1,5 @@ + /* Test and measure string and memory functions. +- Copyright (C) 1999-2012 Free Software Foundation, Inc. ++ Copyright (C) 1999-2015 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Written by Jakub Jelinek , 1999. + +@@ -53,7 +53,6 @@ + #include + #define GL(x) _##x + #define GLRO(x) _##x +-#include + + + # define TEST_FUNCTION test_main () +@@ -67,8 +66,6 @@ + unsigned int seed; + size_t page_size; + +-hp_timing_t _dl_hp_timing_overhead; +- + # ifndef ITERATIONS + size_t iterations = 100000; + # define ITERATIONS_OPTIONS \ +@@ -107,7 +104,7 @@ + #define CALL(impl, ...) \ + (* (proto_t) (impl)->fn) (__VA_ARGS__) + +-#if defined TEST_IFUNC && defined TEST_NAME ++#ifdef TEST_NAME + /* Increase size of FUNC_LIST if assert is triggered at run-time. */ + static struct libc_ifunc_impl func_list[32]; + static int func_count; +@@ -159,16 +156,6 @@ + if (!notall || impl->test) + #endif + +-#define HP_TIMING_BEST(best_time, start, end) \ +- do \ +- { \ +- hp_timing_t tmptime; \ +- HP_TIMING_DIFF (tmptime, start + _dl_hp_timing_overhead, end); \ +- if (best_time > tmptime) \ +- best_time = tmptime; \ +- } \ +- while (0) +- + #ifndef BUF1PAGES + # define BUF1PAGES 1 + #endif +@@ -176,7 +163,7 @@ + static void + test_init (void) + { +-#if defined TEST_IFUNC && defined TEST_NAME ++#ifdef TEST_NAME + func_count = __libc_ifunc_impl_list (TEST_NAME, func_list, + (sizeof func_list + / sizeof func_list[0])); +@@ -199,7 +186,6 @@ + error (EXIT_FAILURE, errno, "mmap failed"); + if (mprotect (buf2 + page_size, page_size, PROT_NONE)) + error (EXIT_FAILURE, errno, "mprotect failed"); +- HP_TIMING_DIFF_INIT (); + if (do_srandom) + { + printf ("Setting seed to 0x%x\n", seed); +diff -urN glibc-2.17-c758a686/string/test-strlen.c glibc-2.17-c758a686/string/test-strlen.c +--- glibc-2.17-c758a686/string/test-strlen.c 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/string/test-strlen.c 2015-06-20 23:36:59.693145264 -0400 +@@ -72,24 +72,6 @@ + ret = 1; + return; + } +- +- if (HP_TIMING_AVAIL) +- { +- hp_timing_t start __attribute ((unused)); +- hp_timing_t stop __attribute ((unused)); +- hp_timing_t best_time = ~ (hp_timing_t) 0; +- size_t i; +- +- for (i = 0; i < 32; ++i) +- { +- HP_TIMING_NOW (start); +- CALL (impl, s); +- HP_TIMING_NOW (stop); +- HP_TIMING_BEST (best_time, start, stop); +- } +- +- printf ("\t%zd", (size_t) best_time); +- } + } + + static void +@@ -107,14 +89,8 @@ + buf[align + i] = 1 + 11111 * i % MAX_CHAR; + buf[align + len] = 0; + +- if (HP_TIMING_AVAIL) +- printf ("Length %4zd, alignment %2zd:", len, align); +- + FOR_EACH_IMPL (impl, 0) + do_one_test (impl, (CHAR *) (buf + align), len); +- +- if (HP_TIMING_AVAIL) +- putchar ('\n'); + } + + static void +diff -urN glibc-2.17-c758a686/string/test-strncasecmp.c glibc-2.17-c758a686/string/test-strncasecmp.c +--- glibc-2.17-c758a686/string/test-strncasecmp.c 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/string/test-strncasecmp.c 2015-06-20 23:36:59.694145234 -0400 +@@ -94,24 +94,6 @@ + { + if (check_result (impl, s1, s2, n, exp_result) < 0) + return; +- +- if (HP_TIMING_AVAIL) +- { +- hp_timing_t start __attribute ((unused)); +- hp_timing_t stop __attribute ((unused)); +- hp_timing_t best_time = ~ (hp_timing_t) 0; +- size_t i; +- +- for (i = 0; i < 32; ++i) +- { +- HP_TIMING_NOW (start); +- CALL (impl, s1, s2, n); +- HP_TIMING_NOW (stop); +- HP_TIMING_BEST (best_time, start, stop); +- } +- +- printf ("\t%zd", (size_t) best_time); +- } + } + + static void +@@ -150,14 +132,8 @@ + else + s2[len - 1] -= exp_result; + +- if (HP_TIMING_AVAIL) +- printf ("Length %4zd, alignment %2zd/%2zd:", len, align1, align2); +- + FOR_EACH_IMPL (impl, 0) + do_one_test (impl, s1, s2, n, exp_result); +- +- if (HP_TIMING_AVAIL) +- putchar ('\n'); + } + + static void +diff -urN glibc-2.17-c758a686/string/test-strncat.c glibc-2.17-c758a686/string/test-strncat.c +--- glibc-2.17-c758a686/string/test-strncat.c 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/string/test-strncat.c 2015-06-20 23:36:59.694145234 -0400 +@@ -67,24 +67,6 @@ + ret = 1; + return; + } +- if (HP_TIMING_AVAIL) +- { +- hp_timing_t start __attribute ((unused)); +- hp_timing_t stop __attribute ((unused)); +- hp_timing_t best_time = ~ (hp_timing_t) 0; +- size_t i; +- +- for (i = 0; i < 32; ++i) +- { +- dst[k] = '\0'; +- HP_TIMING_NOW (start); +- CALL (impl, dst, src, n); +- HP_TIMING_NOW (stop); +- HP_TIMING_BEST (best_time, start, stop); +- } +- +- printf ("\t%zd", (size_t) best_time); +- } + } + + static void +@@ -114,18 +96,11 @@ + for (i = 0; i < len2; i++) + s2[i] = 32 + 23 * i % (max_char - 32); + +- if (HP_TIMING_AVAIL) +- printf ("Length %4zd/%4zd, alignment %2zd/%2zd, N %4zd:", +- len1, len2, align1, align2, n); +- + FOR_EACH_IMPL (impl, 0) + { + s2[len2] = '\0'; + do_one_test (impl, s2, s1, n); + } +- +- if (HP_TIMING_AVAIL) +- putchar ('\n'); + } + + static void +diff -urN glibc-2.17-c758a686/string/test-strncmp.c glibc-2.17-c758a686/string/test-strncmp.c +--- glibc-2.17-c758a686/string/test-strncmp.c 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/string/test-strncmp.c 2015-06-20 23:36:59.694145234 -0400 +@@ -75,24 +75,6 @@ + { + if (check_result (impl, s1, s2, n, exp_result) < 0) + return; +- +- if (HP_TIMING_AVAIL) +- { +- hp_timing_t start __attribute ((unused)); +- hp_timing_t stop __attribute ((unused)); +- hp_timing_t best_time = ~ (hp_timing_t) 0; +- size_t i; +- +- for (i = 0; i < 32; ++i) +- { +- HP_TIMING_NOW (start); +- CALL (impl, s1, s2, n); +- HP_TIMING_NOW (stop); +- HP_TIMING_BEST (best_time, start, stop); +- } +- +- printf ("\t%zd", (size_t) best_time); +- } + } + + static void +@@ -106,15 +88,10 @@ + { + s1 = (char*)(buf1 + page_size); + s2 = (char*)(buf2 + page_size); +- if (HP_TIMING_AVAIL) +- printf ("Length %4zd/%4zd:", len, n); + + FOR_EACH_IMPL (impl, 0) + do_one_test (impl, s1, s2, n, 0); + +- if (HP_TIMING_AVAIL) +- putchar ('\n'); +- + return; + } + +@@ -144,14 +121,8 @@ + s1[len] = 64; + } + +- if (HP_TIMING_AVAIL) +- printf ("Length %4zd/%4zd, alignment %2zd/%2zd:", len, n, align1, align2); +- + FOR_EACH_IMPL (impl, 0) + do_one_test (impl, s1, s2, n, exp_result); +- +- if (HP_TIMING_AVAIL) +- putchar ('\n'); + } + + static void +@@ -189,14 +160,8 @@ + if (len >= n) + s2[n - 1] -= exp_result; + +- if (HP_TIMING_AVAIL) +- printf ("Length %4zd/%4zd, alignment %2zd/%2zd:", len, n, align1, align2); +- + FOR_EACH_IMPL (impl, 0) + do_one_test (impl, (char*)s1, (char*)s2, n, exp_result); +- +- if (HP_TIMING_AVAIL) +- putchar ('\n'); + } + + static void +diff -urN glibc-2.17-c758a686/string/test-strncpy.c glibc-2.17-c758a686/string/test-strncpy.c +--- glibc-2.17-c758a686/string/test-strncpy.c 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/string/test-strncpy.c 2015-06-20 23:36:59.695145204 -0400 +@@ -90,24 +90,6 @@ + return; + } + } +- +- if (HP_TIMING_AVAIL) +- { +- hp_timing_t start __attribute__ ((unused)); +- hp_timing_t stop __attribute__ ((unused)); +- hp_timing_t best_time = ~ (hp_timing_t) 0; +- size_t i; +- +- for (i = 0; i < 32; ++i) +- { +- HP_TIMING_NOW (start); +- CALL (impl, dst, src, n); +- HP_TIMING_NOW (stop); +- HP_TIMING_BEST (best_time, start, stop); +- } +- +- printf ("\t%zd", (size_t) best_time); +- } + } + + static void +@@ -133,14 +115,8 @@ + for (i = len + 1; i + align1 < page_size && i < len + 64; ++i) + s1[i] = 32 + 32 * i % (max_char - 32); + +- if (HP_TIMING_AVAIL) +- printf ("Length %4zd, n %4zd, alignment %2zd/%2zd:", len, n, align1, align2); +- + FOR_EACH_IMPL (impl, 0) + do_one_test (impl, s2, s1, len, n); +- +- if (HP_TIMING_AVAIL) +- putchar ('\n'); + } + + static void +diff -urN glibc-2.17-c758a686/string/test-strnlen.c glibc-2.17-c758a686/string/test-strnlen.c +--- glibc-2.17-c758a686/string/test-strnlen.c 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/string/test-strnlen.c 2015-06-20 23:36:59.695145204 -0400 +@@ -47,24 +47,6 @@ + ret = 1; + return; + } +- +- if (HP_TIMING_AVAIL) +- { +- hp_timing_t start __attribute ((unused)); +- hp_timing_t stop __attribute ((unused)); +- hp_timing_t best_time = ~ (hp_timing_t) 0; +- size_t i; +- +- for (i = 0; i < 32; ++i) +- { +- HP_TIMING_NOW (start); +- CALL (impl, s, maxlen); +- HP_TIMING_NOW (stop); +- HP_TIMING_BEST (best_time, start, stop); +- } +- +- printf ("\t%zd", (size_t) best_time); +- } + } + + static void +@@ -80,14 +62,8 @@ + buf1[align + i] = 1 + 7 * i % max_char; + buf1[align + len] = 0; + +- if (HP_TIMING_AVAIL) +- printf ("Length %4zd, alignment %2zd:", len, align); +- + FOR_EACH_IMPL (impl, 0) + do_one_test (impl, (char *) (buf1 + align), maxlen, MIN (len, maxlen)); +- +- if (HP_TIMING_AVAIL) +- putchar ('\n'); + } + + static void +diff -urN glibc-2.17-c758a686/string/test-strpbrk.c glibc-2.17-c758a686/string/test-strpbrk.c +--- glibc-2.17-c758a686/string/test-strpbrk.c 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/string/test-strpbrk.c 2015-06-20 23:36:59.695145204 -0400 +@@ -70,24 +70,6 @@ + ret = 1; + return; + } +- +- if (HP_TIMING_AVAIL) +- { +- hp_timing_t start __attribute ((unused)); +- hp_timing_t stop __attribute ((unused)); +- hp_timing_t best_time = ~ (hp_timing_t) 0; +- size_t i; +- +- for (i = 0; i < 32; ++i) +- { +- HP_TIMING_NOW (start); +- CALL (impl, s, rej); +- HP_TIMING_NOW (stop); +- HP_TIMING_BEST (best_time, start, stop); +- } +- +- printf ("\t%zd", (size_t) best_time); +- } + } + + static void +@@ -137,14 +119,8 @@ + } + result = STRPBRK_RESULT (s, pos); + +- if (HP_TIMING_AVAIL) +- printf ("Length %4zd, alignment %2zd, rej len %2zd:", pos, align, len); +- + FOR_EACH_IMPL (impl, 0) + do_one_test (impl, s, rej, result); +- +- if (HP_TIMING_AVAIL) +- putchar ('\n'); + } + + static void +diff -urN glibc-2.17-c758a686/string/test-strrchr.c glibc-2.17-c758a686/string/test-strrchr.c +--- glibc-2.17-c758a686/string/test-strrchr.c 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/string/test-strrchr.c 2015-06-20 23:36:59.695145204 -0400 +@@ -73,24 +73,6 @@ + ret = 1; + return; + } +- +- if (HP_TIMING_AVAIL) +- { +- hp_timing_t start __attribute ((unused)); +- hp_timing_t stop __attribute ((unused)); +- hp_timing_t best_time = ~ (hp_timing_t) 0; +- size_t i; +- +- for (i = 0; i < 32; ++i) +- { +- HP_TIMING_NOW (start); +- CALL (impl, s, c); +- HP_TIMING_NOW (stop); +- HP_TIMING_BEST (best_time, start, stop); +- } +- +- printf ("\t%zd", (size_t) best_time); +- } + } + + static void +@@ -129,14 +111,8 @@ + else + result = NULL; + +- if (HP_TIMING_AVAIL) +- printf ("Length %4zd, alignment in bytes %2zd:", pos, align * sizeof(CHAR)); +- + FOR_EACH_IMPL (impl, 0) + do_one_test (impl, (CHAR *) (buf + align), seek_char, result); +- +- if (HP_TIMING_AVAIL) +- putchar ('\n'); + } + + static void +diff -urN glibc-2.17-c758a686/string/test-strspn.c glibc-2.17-c758a686/string/test-strspn.c +--- glibc-2.17-c758a686/string/test-strspn.c 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/string/test-strspn.c 2015-06-20 23:36:59.696145174 -0400 +@@ -74,24 +74,6 @@ + ret = 1; + return; + } +- +- if (HP_TIMING_AVAIL) +- { +- hp_timing_t start __attribute ((unused)); +- hp_timing_t stop __attribute ((unused)); +- hp_timing_t best_time = ~ (hp_timing_t) 0; +- size_t i; +- +- for (i = 0; i < 32; ++i) +- { +- HP_TIMING_NOW (start); +- CALL (impl, s, acc); +- HP_TIMING_NOW (stop); +- HP_TIMING_BEST (best_time, start, stop); +- } +- +- printf ("\t%zd", (size_t) best_time); +- } + } + + static void +@@ -129,14 +111,8 @@ + s[i] = '\0'; + } + +- if (HP_TIMING_AVAIL) +- printf ("Length %4zd, alignment %2zd, acc len %2zd:", pos, align, len); +- + FOR_EACH_IMPL (impl, 0) + do_one_test (impl, s, acc, pos); +- +- if (HP_TIMING_AVAIL) +- putchar ('\n'); + } + + static void +diff -urN glibc-2.17-c758a686/string/test-strstr.c glibc-2.17-c758a686/string/test-strstr.c +--- glibc-2.17-c758a686/string/test-strstr.c 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/string/test-strstr.c 2015-06-20 23:36:59.696145174 -0400 +@@ -77,24 +77,6 @@ + { + if (check_result (impl, s1, s2, exp_result) < 0) + return; +- +- if (HP_TIMING_AVAIL) +- { +- hp_timing_t start __attribute ((unused)); +- hp_timing_t stop __attribute ((unused)); +- hp_timing_t best_time = ~(hp_timing_t) 0; +- size_t i; +- +- for (i = 0; i < 32; ++i) +- { +- HP_TIMING_NOW (start); +- CALL (impl, s1, s2); +- HP_TIMING_NOW (stop); +- HP_TIMING_BEST (best_time, start, stop); +- } +- +- printf ("\t%zd", (size_t) best_time); +- } + } + + +@@ -133,15 +115,9 @@ + } + s1[len1] = '\0'; + +- if (HP_TIMING_AVAIL) +- printf ("Length %4zd/%zd, alignment %2zd/%2zd, %s:", +- len1, len2, align1, align2, fail ? "fail" : "found"); +- + FOR_EACH_IMPL (impl, 0) + do_one_test (impl, s1, s2, fail ? NULL : s1 + len1 - len2); + +- if (HP_TIMING_AVAIL) +- putchar ('\n'); + } + + static void +diff -urN glibc-2.17-c758a686/sysdeps/generic/hp-timing-common.h glibc-2.17-c758a686/sysdeps/generic/hp-timing-common.h +--- glibc-2.17-c758a686/sysdeps/generic/hp-timing-common.h 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/generic/hp-timing-common.h 2015-06-20 21:34:49.496580235 -0400 +@@ -0,0 +1,62 @@ ++/* High precision, low overhead timing functions. Generic version. ++ Copyright (C) 1998-2015 Free Software Foundation, Inc. ++ This file is part of the GNU C Library. ++ Contributed by Ulrich Drepper , 1998. ++ ++ 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 ++ . */ ++ ++/* In case a platform supports timers in the hardware the following macros ++ and types must be defined: ++ ++ - HP_TIMING_AVAIL: test for availability. ++ ++ - HP_TIMING_INLINE: this macro is non-zero if the functionality is not ++ implemented using function calls but instead uses some inlined code ++ which might simply consist of a few assembler instructions. We have to ++ know this since we might want to use the macros here in places where we ++ cannot make function calls. ++ ++ - hp_timing_t: This is the type for variables used to store the time ++ values. This type must be integral. ++ ++ - HP_TIMING_NOW: place timestamp for current time in variable given as ++ parameter. ++*/ ++ ++/* The target supports hp-timing. Share the common infrastructure. */ ++ ++#include ++#include ++#include <_itoa.h> ++ ++/* Compute the difference between START and END, storing into DIFF. */ ++#define HP_TIMING_DIFF(Diff, Start, End) ((Diff) = (End) - (Start)) ++ ++/* Accumulate ADD into SUM. No attempt is made to be thread-safe. */ ++#define HP_TIMING_ACCUM_NT(Sum, Diff) ((Sum) += (Diff)) ++ ++/* Write a decimal representation of the timing value into the given string. */ ++#define HP_TIMING_PRINT(Dest, Len, Val) \ ++ do { \ ++ char __buf[20]; \ ++ char *__dest = (Dest); \ ++ size_t __len = (Len); \ ++ char *__cp = _itoa ((Val), __buf + sizeof (__buf), 10, 0); \ ++ size_t __cp_len = MIN (__buf + sizeof (__buf) - __cp, __len); \ ++ memcpy (__dest, __cp, __cp_len); \ ++ memcpy (__dest + __cp_len, " cycles", \ ++ MIN (__len - __cp_len, sizeof (" cycles"))); \ ++ __dest[__len - 1] = '\0'; \ ++ } while (0) +diff -urN glibc-2.17-c758a686/sysdeps/generic/hp-timing.h glibc-2.17-c758a686/sysdeps/generic/hp-timing.h +--- glibc-2.17-c758a686/sysdeps/generic/hp-timing.h 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/generic/hp-timing.h 2015-06-20 21:36:22.190764717 -0400 +@@ -1,5 +1,5 @@ + /* High precision, low overhead timing functions. Generic version. +- Copyright (C) 1998, 2000 Free Software Foundation, Inc. ++ Copyright (C) 1998-2015 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , 1998. + +@@ -20,59 +20,17 @@ + #ifndef _HP_TIMING_H + #define _HP_TIMING_H 1 + +- + /* There are no generic definitions for the times. We could write something + using the `gettimeofday' system call where available but the overhead of +- the system call might be too high. +- +- In case a platform supports timers in the hardware the following macros +- and types must be defined: +- +- - HP_TIMING_AVAIL: test for availability. +- +- - HP_TIMING_INLINE: this macro is non-zero if the functionality is not +- implemented using function calls but instead uses some inlined code +- which might simply consist of a few assembler instructions. We have to +- know this since we might want to use the macros here in places where we +- cannot make function calls. +- +- - hp_timing_t: This is the type for variables used to store the time +- values. +- +- - HP_TIMING_ZERO: clear `hp_timing_t' object. +- +- - HP_TIMING_NOW: place timestamp for current time in variable given as +- parameter. +- +- - HP_TIMING_DIFF_INIT: do whatever is necessary to be able to use the +- HP_TIMING_DIFF macro. +- +- - HP_TIMING_DIFF: compute difference between two times and store it +- in a third. Source and destination might overlap. +- +- - HP_TIMING_ACCUM: add time difference to another variable. This might +- be a bit more complicated to implement for some platforms as the +- operation should be thread-safe and 64bit arithmetic on 32bit platforms +- is not. +- +- - HP_TIMING_ACCUM_NT: this is the variant for situations where we know +- there are no threads involved. +- +- - HP_TIMING_PRINT: write decimal representation of the timing value into +- the given string. This operation need not be inline even though +- HP_TIMING_INLINE is specified. +- +-*/ ++ the system call might be too high. */ + + /* Provide dummy definitions. */ + #define HP_TIMING_AVAIL (0) ++#define HP_SMALL_TIMING_AVAIL (0) + #define HP_TIMING_INLINE (0) + typedef int hp_timing_t; +-#define HP_TIMING_ZERO(Var) + #define HP_TIMING_NOW(var) +-#define HP_TIMING_DIFF_INIT() + #define HP_TIMING_DIFF(Diff, Start, End) +-#define HP_TIMING_ACCUM(Sum, Diff) + #define HP_TIMING_ACCUM_NT(Sum, Diff) + #define HP_TIMING_PRINT(Buf, Len, Val) + +diff -urN glibc-2.17-c758a686/sysdeps/generic/ldsodefs.h glibc-2.17-c758a686/sysdeps/generic/ldsodefs.h +--- glibc-2.17-c758a686/sysdeps/generic/ldsodefs.h 2015-06-20 23:38:08.609083190 -0400 ++++ glibc-2.17-c758a686/sysdeps/generic/ldsodefs.h 2015-06-20 22:07:15.207493957 -0400 +@@ -315,7 +315,7 @@ + /* The object to be initialized first. */ + EXTERN struct link_map *_dl_initfirst; + +-#if HP_TIMING_AVAIL || HP_SMALL_TIMING_AVAIL ++#if HP_SMALL_TIMING_AVAIL + /* Start time on CPU clock. */ + EXTERN hp_timing_t _dl_cpuclock_offset; + #endif +@@ -538,11 +538,6 @@ + /* All search directories defined at startup. */ + EXTERN struct r_search_path_elem *_dl_init_all_dirs; + +-#if HP_TIMING_AVAIL || HP_SMALL_TIMING_AVAIL +- /* Overhead of a high-precision timing measurement. */ +- EXTERN hp_timing_t _dl_hp_timing_overhead; +-#endif +- + #ifdef NEED_DL_SYSINFO + /* Syscall handling improvements. This is very specific to x86. */ + EXTERN uintptr_t _dl_sysinfo; +diff -urN glibc-2.17-c758a686/sysdeps/i386/i686/hp-timing.c glibc-2.17-c758a686/sysdeps/i386/i686/hp-timing.c +--- glibc-2.17-c758a686/sysdeps/i386/i686/hp-timing.c 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/i386/i686/hp-timing.c 1969-12-31 19:00:00.000000000 -0500 +@@ -1,23 +0,0 @@ +-/* Support for high precision, low overhead timing functions. i686 version. +- Copyright (C) 1998, 2002 Free Software Foundation, Inc. +- This file is part of the GNU C Library. +- Contributed by Ulrich Drepper , 1998. +- +- 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 +- . */ +- +-#include +- +-/* We have to define the variable for the overhead. */ +-hp_timing_t _dl_hp_timing_overhead; +diff -urN glibc-2.17-c758a686/sysdeps/i386/i686/hp-timing.h glibc-2.17-c758a686/sysdeps/i386/i686/hp-timing.h +--- glibc-2.17-c758a686/sysdeps/i386/i686/hp-timing.h 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/i386/i686/hp-timing.h 2015-06-20 23:03:58.919192570 -0400 +@@ -1,5 +1,5 @@ + /* High precision, low overhead timing functions. i686 version. +- Copyright (C) 1998, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. ++ Copyright (C) 1998-2015 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , 1998. + +@@ -20,62 +20,9 @@ + #ifndef _HP_TIMING_H + #define _HP_TIMING_H 1 + +-#include +-#include +-#include <_itoa.h> +- +-/* The macros defined here use the timestamp counter in i586 and up versions +- of the x86 processors. They provide a very accurate way to measure the +- time with very little overhead. The time values themself have no real +- meaning, only differences are interesting. +- +- This version is for the i686 processors. The difference to the i586 +- version is that the timerstamp register is unconditionally used. This is +- not the case for the i586 version where we have to perform runtime test +- whether the processor really has this capability. We have to make this +- distinction since the sysdeps/i386/i586 code is supposed to work on all +- platforms while the i686 already contains i686-specific code. +- +- The list of macros we need includes the following: +- +- - HP_TIMING_AVAIL: test for availability. +- +- - HP_TIMING_INLINE: this macro is non-zero if the functionality is not +- implemented using function calls but instead uses some inlined code +- which might simply consist of a few assembler instructions. We have to +- know this since we might want to use the macros here in places where we +- cannot make function calls. +- +- - hp_timing_t: This is the type for variables used to store the time +- values. +- +- - HP_TIMING_ZERO: clear `hp_timing_t' object. +- +- - HP_TIMING_NOW: place timestamp for current time in variable given as +- parameter. +- +- - HP_TIMING_DIFF_INIT: do whatever is necessary to be able to use the +- HP_TIMING_DIFF macro. +- +- - HP_TIMING_DIFF: compute difference between two times and store it +- in a third. Source and destination might overlap. +- +- - HP_TIMING_ACCUM: add time difference to another variable. This might +- be a bit more complicated to implement for some platforms as the +- operation should be thread-safe and 64bit arithmetic on 32bit platforms +- is not. +- +- - HP_TIMING_ACCUM_NT: this is the variant for situations where we know +- there are no threads involved. +- +- - HP_TIMING_PRINT: write decimal representation of the timing value into +- the given string. This operation need not be inline even though +- HP_TIMING_INLINE is specified. +- +-*/ +- + /* We always assume having the timestamp register. */ + #define HP_TIMING_AVAIL (1) ++#define HP_SMALL_TIMING_AVAIL (1) + + /* We indeed have inlined functions. */ + #define HP_TIMING_INLINE (1) +@@ -83,9 +30,6 @@ + /* We use 64bit values for the times. */ + typedef unsigned long long int hp_timing_t; + +-/* Set timestamp value to zero. */ +-#define HP_TIMING_ZERO(Var) (Var) = (0) +- + /* That's quite simple. Use the `rdtsc' instruction. Note that the value + might not be 100% accurate since there might be some more instructions + running in this moment. This could be changed by using a barrier like +@@ -93,64 +37,6 @@ + in accurate clock cycles here so we don't do this. */ + #define HP_TIMING_NOW(Var) __asm__ __volatile__ ("rdtsc" : "=A" (Var)) + +-/* Use two 'rdtsc' instructions in a row to find out how long it takes. */ +-#define HP_TIMING_DIFF_INIT() \ +- do { \ +- if (GLRO(dl_hp_timing_overhead) == 0) \ +- { \ +- int __cnt = 5; \ +- GLRO(dl_hp_timing_overhead) = ~0ull; \ +- do \ +- { \ +- hp_timing_t __t1, __t2; \ +- HP_TIMING_NOW (__t1); \ +- HP_TIMING_NOW (__t2); \ +- if (__t2 - __t1 < GLRO(dl_hp_timing_overhead)) \ +- GLRO(dl_hp_timing_overhead) = __t2 - __t1; \ +- } \ +- while (--__cnt > 0); \ +- } \ +- } while (0) +- +-/* It's simple arithmetic for us. */ +-#define HP_TIMING_DIFF(Diff, Start, End) (Diff) = ((End) - (Start)) +- +-/* We have to jump through hoops to get this correctly implemented. */ +-#define HP_TIMING_ACCUM(Sum, Diff) \ +- do { \ +- int __not_done; \ +- hp_timing_t __oldval = (Sum); \ +- hp_timing_t __diff = (Diff) - GLRO(dl_hp_timing_overhead); \ +- do \ +- { \ +- hp_timing_t __newval = __oldval + __diff; \ +- int __temp0, __temp1; \ +- __asm__ __volatile__ ("xchgl %0, %%ebx\n\t" \ +- "lock; cmpxchg8b %1\n\t" \ +- "sete %%bl\n\t" \ +- "xchgl %0, %%ebx" \ +- : "=SD" (__not_done), "=m" (Sum), \ +- "=A" (__oldval), "=c" (__temp0) \ +- : "m" (Sum), "2" (__oldval), \ +- "3" ((unsigned int) (__newval >> 32)), \ +- "0" ((unsigned int) __newval)); \ +- } \ +- while ((unsigned char) __not_done); \ +- } while (0) +- +-/* No threads, no extra work. */ +-#define HP_TIMING_ACCUM_NT(Sum, Diff) (Sum) += (Diff) +- +-/* Print the time value. */ +-#define HP_TIMING_PRINT(Buf, Len, Val) \ +- do { \ +- char __buf[20]; \ +- char *__cp = _itoa (Val, __buf + sizeof (__buf), 10, 0); \ +- size_t __len = (Len); \ +- char *__dest = (Buf); \ +- while (__len-- > 0 && __cp < __buf + sizeof (__buf)) \ +- *__dest++ = *__cp++; \ +- memcpy (__dest, " clock cycles", MIN (__len, sizeof (" clock cycles"))); \ +- } while (0) ++#include + + #endif /* hp-timing.h */ +diff -urN glibc-2.17-c758a686/sysdeps/i386/i686/Makefile glibc-2.17-c758a686/sysdeps/i386/i686/Makefile +--- glibc-2.17-c758a686/sysdeps/i386/i686/Makefile 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/i386/i686/Makefile 2015-06-20 21:22:16.306457831 -0400 +@@ -1,8 +1,3 @@ +-ifeq ($(subdir),csu) +-sysdep_routines += hp-timing +-elide-routines.os += hp-timing +-endif +- + # So that we can test __m128's alignment + stack-align-test-flags += -msse + +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/hp-timing.h glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/hp-timing.h +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/hp-timing.h 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/hp-timing.h 1969-12-31 19:00:00.000000000 -0500 +@@ -1,81 +0,0 @@ +-/* High precision, low overhead timing functions. Linux/PPC32 version. +- Copyright (C) 2005 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 +- . */ +- +-#ifndef _HP_TIMING_H +-#define _HP_TIMING_H 1 +- +- +-/* There are no generic definitions for the times. We could write something +- using the `gettimeofday' system call where available but the overhead of +- the system call might be too high. +- +- In case a platform supports timers in the hardware the following macros +- and types must be defined: +- +- - HP_TIMING_AVAIL: test for availability. +- +- - HP_TIMING_INLINE: this macro is non-zero if the functionality is not +- implemented using function calls but instead uses some inlined code +- which might simply consist of a few assembler instructions. We have to +- know this since we might want to use the macros here in places where we +- cannot make function calls. +- +- - hp_timing_t: This is the type for variables used to store the time +- values. +- +- - HP_TIMING_ZERO: clear `hp_timing_t' object. +- +- - HP_TIMING_NOW: place timestamp for current time in variable given as +- parameter. +- +- - HP_TIMING_DIFF_INIT: do whatever is necessary to be able to use the +- HP_TIMING_DIFF macro. +- +- - HP_TIMING_DIFF: compute difference between two times and store it +- in a third. Source and destination might overlap. +- +- - HP_TIMING_ACCUM: add time difference to another variable. This might +- be a bit more complicated to implement for some platforms as the +- operation should be thread-safe and 64bit arithmetic on 32bit platforms +- is not. +- +- - HP_TIMING_ACCUM_NT: this is the variant for situations where we know +- there are no threads involved. +- +- - HP_TIMING_PRINT: write decimal representation of the timing value into +- the given string. This operation need not be inline even though +- HP_TIMING_INLINE is specified. +- +-*/ +- +-/* Provide dummy definitions. */ +-#define HP_TIMING_AVAIL (0) +-#define HP_TIMING_INLINE (0) +-typedef unsigned long long int hp_timing_t; +-#define HP_TIMING_ZERO(Var) +-#define HP_TIMING_NOW(var) +-#define HP_TIMING_DIFF_INIT() +-#define HP_TIMING_DIFF(Diff, Start, End) +-#define HP_TIMING_ACCUM(Sum, Diff) +-#define HP_TIMING_ACCUM_NT(Sum, Diff) +-#define HP_TIMING_PRINT(Buf, Len, Val) +- +-/* Since this implementation is not available we tell the user about it. */ +-#define HP_TIMING_NONAVAIL 1 +- +-#endif /* hp-timing.h */ +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/hp-timing.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/hp-timing.c +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/hp-timing.c 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/hp-timing.c 1969-12-31 19:00:00.000000000 -0500 +@@ -1,24 +0,0 @@ +-/* Support for high precision, low overhead timing functions. +- powerpc64 version. +- Copyright (C) 2005, 2008 Free Software Foundation, Inc. +- This file is part of the GNU C Library. +- Contributed by Ulrich Drepper , 1998. +- +- 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 +- . */ +- +-#include +- +-/* We have to define the variable for the overhead. */ +-hp_timing_t _dl_hp_timing_overhead; +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/hp-timing.h glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/hp-timing.h +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/hp-timing.h 2015-06-20 23:38:08.326091657 -0400 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/hp-timing.h 2015-06-20 21:38:56.874066681 -0400 +@@ -1,5 +1,5 @@ + /* High precision, low overhead timing functions. powerpc64 version. +- Copyright (C) 2005, 2008 Free Software Foundation, Inc. ++ Copyright (C) 2005-2015 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , 1998. + +@@ -20,55 +20,9 @@ + #ifndef _HP_TIMING_H + #define _HP_TIMING_H 1 + +-#include +-#include +-#include <_itoa.h> +-#include +- +-/* The macros defined here use the powerpc 64-bit time base register. +- The time base is nominally clocked at 1/8th the CPU clock, but this +- can vary. +- +- The list of macros we need includes the following: +- +- - HP_TIMING_AVAIL: test for availability. +- +- - HP_TIMING_INLINE: this macro is non-zero if the functionality is not +- implemented using function calls but instead uses some inlined code +- which might simply consist of a few assembler instructions. We have to +- know this since we might want to use the macros here in places where we +- cannot make function calls. +- +- - hp_timing_t: This is the type for variables used to store the time +- values. +- +- - HP_TIMING_ZERO: clear `hp_timing_t' object. +- +- - HP_TIMING_NOW: place timestamp for current time in variable given as +- parameter. +- +- - HP_TIMING_DIFF_INIT: do whatever is necessary to be able to use the +- HP_TIMING_DIFF macro. +- +- - HP_TIMING_DIFF: compute difference between two times and store it +- in a third. Source and destination might overlap. +- +- - HP_TIMING_ACCUM: add time difference to another variable. This might +- be a bit more complicated to implement for some platforms as the +- operation should be thread-safe and 64bit arithmetic on 32bit platforms +- is not. +- +- - HP_TIMING_ACCUM_NT: this is the variant for situations where we know +- there are no threads involved. +- +- - HP_TIMING_PRINT: write decimal representation of the timing value into +- the given string. This operation need not be inline even though +- HP_TIMING_INLINE is specified. +- +-*/ +- + /* We always assume having the timestamp register. */ + #define HP_TIMING_AVAIL (1) ++#define HP_SMALL_TIMING_AVAIL (1) + + /* We indeed have inlined functions. */ + #define HP_TIMING_INLINE (1) +@@ -76,13 +30,10 @@ + /* We use 64bit values for the times. */ + typedef unsigned long long int hp_timing_t; + +-/* Set timestamp value to zero. */ +-#define HP_TIMING_ZERO(Var) (Var) = (0) +- + /* That's quite simple. Use the `mftb' instruction. Note that the value + might not be 100% accurate since there might be some more instructions + running in this moment. This could be changed by using a barrier like +- 'lwsync' right before the `mftb' instruciton. But we are not interested ++ 'lwsync' right before the `mftb' instruction. But we are not interested + in accurate clock cycles here so we don't do this. */ + + #define HP_TIMING_NOW(Var) \ +@@ -98,51 +49,6 @@ + Var = ((hp_timing_t) hi << 32) | lo; \ + } while (0) + +- +-/* Use two 'mftb' instructions in a row to find out how long it takes. +- On current POWER4, POWER5, and 970 processors mftb take ~10 cycles. */ +-#define HP_TIMING_DIFF_INIT() \ +- do { \ +- if (GLRO(dl_hp_timing_overhead) == 0) \ +- { \ +- int __cnt = 5; \ +- GLRO(dl_hp_timing_overhead) = ~0ull; \ +- do \ +- { \ +- hp_timing_t __t1, __t2; \ +- HP_TIMING_NOW (__t1); \ +- HP_TIMING_NOW (__t2); \ +- if (__t2 - __t1 < GLRO(dl_hp_timing_overhead)) \ +- GLRO(dl_hp_timing_overhead) = __t2 - __t1; \ +- } \ +- while (--__cnt > 0); \ +- } \ +- } while (0) +- +-/* It's simple arithmetic in 64-bit. */ +-#define HP_TIMING_DIFF(Diff, Start, End) (Diff) = ((End) - (Start)) +- +-/* We need to insure that this add is atomic in threaded environments. We use +- __arch_atomic_exchange_and_add_64 from atomic.h to get thread safety. */ +-#define HP_TIMING_ACCUM(Sum, Diff) \ +- do { \ +- hp_timing_t __diff = (Diff) - GLRO(dl_hp_timing_overhead); \ +- __arch_atomic_exchange_and_add_64 (&(Sum), __diff); \ +- } while (0) +- +-/* No threads, no extra work. */ +-#define HP_TIMING_ACCUM_NT(Sum, Diff) (Sum) += (Diff) +- +-/* Print the time value. */ +-#define HP_TIMING_PRINT(Buf, Len, Val) \ +- do { \ +- char __buf[20]; \ +- char *__cp = _itoa (Val, __buf + sizeof (__buf), 10, 0); \ +- size_t __len = (Len); \ +- char *__dest = (Buf); \ +- while (__len-- > 0 && __cp < __buf + sizeof (__buf)) \ +- *__dest++ = *__cp++; \ +- memcpy (__dest, " ticks", MIN (__len, sizeof (" ticks"))); \ +- } while (0) ++#include + + #endif /* hp-timing.h */ +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/hp-timing.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/hp-timing.c +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/hp-timing.c 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/hp-timing.c 1969-12-31 19:00:00.000000000 -0500 +@@ -1,24 +0,0 @@ +-/* Support for high precision, low overhead timing functions. +- powerpc64 version. +- Copyright (C) 2005 Free Software Foundation, Inc. +- This file is part of the GNU C Library. +- Contributed by Ulrich Drepper , 1998. +- +- 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 +- . */ +- +-#include +- +-/* We have to define the variable for the overhead. */ +-hp_timing_t _dl_hp_timing_overhead; +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/hp-timing.h glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/hp-timing.h +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/hp-timing.h 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/hp-timing.h 2015-06-20 21:42:32.315524442 -0400 +@@ -1,5 +1,5 @@ + /* High precision, low overhead timing functions. powerpc64 version. +- Copyright (C) 2005, 2008 Free Software Foundation, Inc. ++ Copyright (C) 2005-2015 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by Ulrich Drepper , 1998. + +@@ -20,55 +20,9 @@ + #ifndef _HP_TIMING_H + #define _HP_TIMING_H 1 + +-#include +-#include +-#include <_itoa.h> +-#include +- +-/* The macros defined here use the powerpc 64-bit time base register. +- The time base is nominally clocked at 1/8th the CPU clock, but this +- can vary. +- +- The list of macros we need includes the following: +- +- - HP_TIMING_AVAIL: test for availability. +- +- - HP_TIMING_INLINE: this macro is non-zero if the functionality is not +- implemented using function calls but instead uses some inlined code +- which might simply consist of a few assembler instructions. We have to +- know this since we might want to use the macros here in places where we +- cannot make function calls. +- +- - hp_timing_t: This is the type for variables used to store the time +- values. +- +- - HP_TIMING_ZERO: clear `hp_timing_t' object. +- +- - HP_TIMING_NOW: place timestamp for current time in variable given as +- parameter. +- +- - HP_TIMING_DIFF_INIT: do whatever is necessary to be able to use the +- HP_TIMING_DIFF macro. +- +- - HP_TIMING_DIFF: compute difference between two times and store it +- in a third. Source and destination might overlap. +- +- - HP_TIMING_ACCUM: add time difference to another variable. This might +- be a bit more complicated to implement for some platforms as the +- operation should be thread-safe and 64bit arithmetic on 32bit platforms +- is not. +- +- - HP_TIMING_ACCUM_NT: this is the variant for situations where we know +- there are no threads involved. +- +- - HP_TIMING_PRINT: write decimal representation of the timing value into +- the given string. This operation need not be inline even though +- HP_TIMING_INLINE is specified. +- +-*/ +- + /* We always assume having the timestamp register. */ + #define HP_TIMING_AVAIL (1) ++#define HP_SMALL_TIMING_AVAIL (1) + + /* We indeed have inlined functions. */ + #define HP_TIMING_INLINE (1) +@@ -76,13 +30,10 @@ + /* We use 64bit values for the times. */ + typedef unsigned long long int hp_timing_t; + +-/* Set timestamp value to zero. */ +-#define HP_TIMING_ZERO(Var) (Var) = (0) +- + /* That's quite simple. Use the `mftb' instruction. Note that the value + might not be 100% accurate since there might be some more instructions + running in this moment. This could be changed by using a barrier like +- 'lwsync' right before the `mftb' instruciton. But we are not interested ++ 'lwsync' right before the `mftb' instruction. But we are not interested + in accurate clock cycles here so we don't do this. */ + #ifdef _ARCH_PWR4 + #define HP_TIMING_NOW(Var) __asm__ __volatile__ ("mfspr %0,268" : "=r" (Var)) +@@ -90,50 +41,6 @@ + #define HP_TIMING_NOW(Var) __asm__ __volatile__ ("mftb %0" : "=r" (Var)) + #endif + +-/* Use two 'mftb' instructions in a row to find out how long it takes. +- On current POWER4, POWER5, and 970 processors mftb take ~10 cycles. */ +-#define HP_TIMING_DIFF_INIT() \ +- do { \ +- if (GLRO(dl_hp_timing_overhead) == 0) \ +- { \ +- int __cnt = 5; \ +- GLRO(dl_hp_timing_overhead) = ~0ull; \ +- do \ +- { \ +- hp_timing_t __t1, __t2; \ +- HP_TIMING_NOW (__t1); \ +- HP_TIMING_NOW (__t2); \ +- if (__t2 - __t1 < GLRO(dl_hp_timing_overhead)) \ +- GLRO(dl_hp_timing_overhead) = __t2 - __t1; \ +- } \ +- while (--__cnt > 0); \ +- } \ +- } while (0) +- +-/* It's simple arithmetic in 64-bit. */ +-#define HP_TIMING_DIFF(Diff, Start, End) (Diff) = ((End) - (Start)) +- +-/* We need to insure that this add is atomic in threaded environments. We use +- __arch_atomic_exchange_and_add_64 from atomic.h to get thread safety. */ +-#define HP_TIMING_ACCUM(Sum, Diff) \ +- do { \ +- hp_timing_t __diff = (Diff) - GLRO(dl_hp_timing_overhead); \ +- __arch_atomic_exchange_and_add_64 (&(Sum), __diff); \ +- } while (0) +- +-/* No threads, no extra work. */ +-#define HP_TIMING_ACCUM_NT(Sum, Diff) (Sum) += (Diff) +- +-/* Print the time value. */ +-#define HP_TIMING_PRINT(Buf, Len, Val) \ +- do { \ +- char __buf[20]; \ +- char *__cp = _itoa (Val, __buf + sizeof (__buf), 10, 0); \ +- size_t __len = (Len); \ +- char *__dest = (Buf); \ +- while (__len-- > 0 && __cp < __buf + sizeof (__buf)) \ +- *__dest++ = *__cp++; \ +- memcpy (__dest, " ticks", MIN (__len, sizeof (" ticks"))); \ +- } while (0) ++#include + + #endif /* hp-timing.h */ +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/Makefile glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/Makefile +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/Makefile 2015-06-20 23:38:08.082098958 -0400 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/Makefile 2015-06-20 21:22:16.306457831 -0400 +@@ -37,11 +37,6 @@ + + CFLAGS-libc-start.c += -fno-asynchronous-unwind-tables + +-ifeq ($(subdir),csu) +-sysdep_routines += hp-timing +-elide-routines.os += hp-timing +-endif +- + ifeq ($(subdir),elf) + # help gcc inline asm code from dl-machine.h + +cflags += -finline-limit=2000 +diff -urN glibc-2.17-c758a686/sysdeps/sparc/sparc32/sparcv9/hp-timing.c glibc-2.17-c758a686/sysdeps/sparc/sparc32/sparcv9/hp-timing.c +--- glibc-2.17-c758a686/sysdeps/sparc/sparc32/sparcv9/hp-timing.c 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/sparc/sparc32/sparcv9/hp-timing.c 1969-12-31 19:00:00.000000000 -0500 +@@ -1,23 +0,0 @@ +-/* Support for high precision, low overhead timing functions. sparcv9 version. +- Copyright (C) 2001, 2002 Free Software Foundation, Inc. +- This file is part of the GNU C Library. +- Contributed by David S. Miller , 2001. +- +- 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 +- . */ +- +-#include +- +-/* We have to define the variable for the overhead. */ +-hp_timing_t _dl_hp_timing_overhead; +diff -urN glibc-2.17-c758a686/sysdeps/sparc/sparc32/sparcv9/hp-timing.h glibc-2.17-c758a686/sysdeps/sparc/sparc32/sparcv9/hp-timing.h +--- glibc-2.17-c758a686/sysdeps/sparc/sparc32/sparcv9/hp-timing.h 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/sparc/sparc32/sparcv9/hp-timing.h 2015-06-20 21:43:48.754203254 -0400 +@@ -1,5 +1,5 @@ + /* High precision, low overhead timing functions. sparcv9 version. +- Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. ++ Copyright (C) 2001-2015 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by David S. Miller , 2001. + +@@ -20,67 +20,17 @@ + #ifndef _HP_TIMING_H + #define _HP_TIMING_H 1 + +-#include +-#include +-#include <_itoa.h> +- + #define HP_TIMING_AVAIL (1) ++#define HP_SMALL_TIMING_AVAIL (1) + #define HP_TIMING_INLINE (1) + + typedef unsigned long long int hp_timing_t; + +-#define HP_TIMING_ZERO(Var) (Var) = (0) +- + #define HP_TIMING_NOW(Var) \ + __asm__ __volatile__ ("rd %%tick, %L0\n\t" \ + "srlx %L0, 32, %H0" \ + : "=r" (Var)) + +-#define HP_TIMING_DIFF_INIT() \ +- do { \ +- int __cnt = 5; \ +- GLRO(dl_hp_timing_overhead) = ~0ull; \ +- do \ +- { \ +- hp_timing_t __t1, __t2; \ +- HP_TIMING_NOW (__t1); \ +- HP_TIMING_NOW (__t2); \ +- if (__t2 - __t1 < GLRO(dl_hp_timing_overhead)) \ +- GLRO(dl_hp_timing_overhead) = __t2 - __t1; \ +- } \ +- while (--__cnt > 0); \ +- } while (0) +- +-#define HP_TIMING_DIFF(Diff, Start, End) (Diff) = ((End) - (Start)) +- +-#define HP_TIMING_ACCUM(Sum, Diff) \ +-do { \ +- hp_timing_t __diff = (Diff) - GLRO(dl_hp_timing_overhead); \ +- __asm__ __volatile__("srl %L0, 0, %%g1\n\t" \ +- "sllx %H0, 32, %%g6\n\t" \ +- "or %%g1, %%g6, %%g1\n\t" \ +- "1: ldx [%1], %%g5\n\t" \ +- "add %%g5, %%g1, %%g6\n\t" \ +- "casx [%1], %%g5, %%g6\n\t" \ +- "cmp %%g5, %%g6\n\t" \ +- "bne,pn %%xcc, 1b\n\t" \ +- " nop" \ +- : /* no outputs */ \ +- : "r" (__diff), "r" (&(Sum)) \ +- : "memory", "g1", "g5", "g6"); \ +-} while(0) +- +-#define HP_TIMING_ACCUM_NT(Sum, Diff) (Sum) += (Diff) +- +-#define HP_TIMING_PRINT(Buf, Len, Val) \ +- do { \ +- char __buf[20]; \ +- char *__cp = _itoa (Val, __buf + sizeof (__buf), 10, 0); \ +- int __len = (Len); \ +- char *__dest = (Buf); \ +- while (__len-- > 0 && __cp < __buf + sizeof (__buf)) \ +- *__dest++ = *__cp++; \ +- memcpy (__dest, " clock cycles", MIN (__len, sizeof (" clock cycles"))); \ +- } while (0) ++#include + + #endif /* hp-timing.h */ +diff -urN glibc-2.17-c758a686/sysdeps/sparc/sparc32/sparcv9/Makefile glibc-2.17-c758a686/sysdeps/sparc/sparc32/sparcv9/Makefile +--- glibc-2.17-c758a686/sysdeps/sparc/sparc32/sparcv9/Makefile 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/sparc/sparc32/sparcv9/Makefile 2015-06-20 21:22:16.307457801 -0400 +@@ -1,10 +1,5 @@ + sysdep-CFLAGS += -mcpu=ultrasparc -Wa,-Av9a + +-ifeq ($(subdir),csu) +-sysdep_routines += hp-timing +-elide-routines.os += hp-timing +-endif +- + ifeq ($(have-as-vis3),yes) + ASFLAGS-.o += -Wa,-Av9d + ASFLAGS-.os += -Wa,-Av9d +diff -urN glibc-2.17-c758a686/sysdeps/sparc/sparc64/hp-timing.c glibc-2.17-c758a686/sysdeps/sparc/sparc64/hp-timing.c +--- glibc-2.17-c758a686/sysdeps/sparc/sparc64/hp-timing.c 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/sparc/sparc64/hp-timing.c 1969-12-31 19:00:00.000000000 -0500 +@@ -1,23 +0,0 @@ +-/* Support for high precision, low overhead timing functions. sparc64 version. +- Copyright (C) 2001, 2002 Free Software Foundation, Inc. +- This file is part of the GNU C Library. +- Contributed by David S. Miller , 2001. +- +- 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 +- . */ +- +-#include +- +-/* We have to define the variable for the overhead. */ +-hp_timing_t _dl_hp_timing_overhead; +diff -urN glibc-2.17-c758a686/sysdeps/sparc/sparc64/hp-timing.h glibc-2.17-c758a686/sysdeps/sparc/sparc64/hp-timing.h +--- glibc-2.17-c758a686/sysdeps/sparc/sparc64/hp-timing.h 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/sparc/sparc64/hp-timing.h 2015-06-20 21:48:51.809000490 -0400 +@@ -1,5 +1,5 @@ + /* High precision, low overhead timing functions. sparc64 version. +- Copyright (C) 2001, 2002, 2003, 2004 Free Software Foundation, Inc. ++ Copyright (C) 2001-2015 Free Software Foundation, Inc. + This file is part of the GNU C Library. + Contributed by David S. Miller , 2001. + +@@ -20,62 +20,14 @@ + #ifndef _HP_TIMING_H + #define _HP_TIMING_H 1 + +-#include +-#include +-#include <_itoa.h> +- + #define HP_TIMING_AVAIL (1) ++#define HP_SMALL_TIMING_AVAIL (1) + #define HP_TIMING_INLINE (1) + + typedef unsigned long int hp_timing_t; + +-#define HP_TIMING_ZERO(Var) (Var) = (0) +- + #define HP_TIMING_NOW(Var) __asm__ __volatile__ ("rd %%tick, %0" : "=r" (Var)) + +-#define HP_TIMING_DIFF_INIT() \ +- do { \ +- int __cnt = 5; \ +- GLRO(dl_hp_timing_overhead) = ~0ull; \ +- do \ +- { \ +- hp_timing_t __t1, __t2; \ +- HP_TIMING_NOW (__t1); \ +- HP_TIMING_NOW (__t2); \ +- if (__t2 - __t1 < GLRO(dl_hp_timing_overhead)) \ +- GLRO(dl_hp_timing_overhead) = __t2 - __t1; \ +- } \ +- while (--__cnt > 0); \ +- } while (0) +- +-#define HP_TIMING_DIFF(Diff, Start, End) (Diff) = ((End) - (Start)) +- +-#define HP_TIMING_ACCUM(Sum, Diff) \ +-do { \ +- hp_timing_t __diff = (Diff) - GLRO(dl_hp_timing_overhead); \ +- hp_timing_t tmp1, tmp2; \ +- __asm__ __volatile__("1: ldx [%3], %0\n\t" \ +- "add %0, %2, %1\n\t" \ +- "casx [%3], %0, %1\n\t" \ +- "cmp %0, %1\n\t" \ +- "bne,pn %%xcc, 1b\n\t" \ +- " nop" \ +- : "=&r" (tmp1), "=&r" (tmp2) \ +- : "r" (__diff), "r" (&(Sum)) \ +- : "memory", "g1", "g5", "g6"); \ +-} while(0) +- +-#define HP_TIMING_ACCUM_NT(Sum, Diff) (Sum) += (Diff) +- +-#define HP_TIMING_PRINT(Buf, Len, Val) \ +- do { \ +- char __buf[20]; \ +- char *__cp = _itoa (Val, __buf + sizeof (__buf), 10, 0); \ +- int __len = (Len); \ +- char *__dest = (Buf); \ +- while (__len-- > 0 && __cp < __buf + sizeof (__buf)) \ +- *__dest++ = *__cp++; \ +- memcpy (__dest, " clock cycles", MIN (__len, sizeof (" clock cycles"))); \ +- } while (0) ++#include + + #endif /* hp-timing.h */ +diff -urN glibc-2.17-c758a686/sysdeps/sparc/sparc64/Makefile glibc-2.17-c758a686/sysdeps/sparc/sparc64/Makefile +--- glibc-2.17-c758a686/sysdeps/sparc/sparc64/Makefile 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/sparc/sparc64/Makefile 2015-06-20 21:22:16.307457801 -0400 +@@ -1,8 +1,3 @@ +-ifeq ($(subdir),csu) +-sysdep_routines += hp-timing +-elide-routines.os += hp-timing +-endif +- + ifeq ($(subdir),string) + sysdep_routines += align-cpy + endif +diff -urN glibc-2.17-c758a686/sysdeps/x86_64/hp-timing.c glibc-2.17-c758a686/sysdeps/x86_64/hp-timing.c +--- glibc-2.17-c758a686/sysdeps/x86_64/hp-timing.c 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/x86_64/hp-timing.c 1969-12-31 19:00:00.000000000 -0500 +@@ -1,2 +0,0 @@ +-/* We can use the i686 implementation without changes. */ +-#include +diff -urN glibc-2.17-c758a686/sysdeps/x86_64/hp-timing.h glibc-2.17-c758a686/sysdeps/x86_64/hp-timing.h +--- glibc-2.17-c758a686/sysdeps/x86_64/hp-timing.h 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/x86_64/hp-timing.h 2015-06-20 21:43:09.403398207 -0400 +@@ -1,5 +1,5 @@ + /* High precision, low overhead timing functions. x86-64 version. +- Copyright (C) 2002, 2004, 2005 Free Software Foundation, Inc. ++ Copyright (C) 2002-2015 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 +@@ -17,24 +17,24 @@ + . */ + + #ifndef _HP_TIMING_H ++#define _HP_TIMING_H 1 + +-/* We can use some of the i686 implementation without changes. */ +-# include ++/* We always assume having the timestamp register. */ ++#define HP_TIMING_AVAIL (1) ++#define HP_SMALL_TIMING_AVAIL (1) ++ ++/* We indeed have inlined functions. */ ++#define HP_TIMING_INLINE (1) ++ ++/* We use 64bit values for the times. */ ++typedef unsigned long long int hp_timing_t; + + /* The "=A" constraint used in 32-bit mode does not work in 64-bit mode. */ +-# undef HP_TIMING_NOW +-# define HP_TIMING_NOW(Var) \ ++#define HP_TIMING_NOW(Var) \ + ({ unsigned int _hi, _lo; \ + asm volatile ("rdtsc" : "=a" (_lo), "=d" (_hi)); \ + (Var) = ((unsigned long long int) _hi << 32) | _lo; }) + +-/* The funny business for 32-bit mode is not required here. */ +-# undef HP_TIMING_ACCUM +-# define HP_TIMING_ACCUM(Sum, Diff) \ +- do { \ +- hp_timing_t __diff = (Diff) - GLRO(dl_hp_timing_overhead); \ +- __asm__ __volatile__ ("lock; addq %1, %0" \ +- : "=m" (Sum) : "r" (__diff), "m" (Sum)); \ +- } while (0) ++#include + + #endif /* hp-timing.h */ +diff -urN glibc-2.17-c758a686/sysdeps/x86_64/Makefile glibc-2.17-c758a686/sysdeps/x86_64/Makefile +--- glibc-2.17-c758a686/sysdeps/x86_64/Makefile 2015-06-20 23:38:08.530085553 -0400 ++++ glibc-2.17-c758a686/sysdeps/x86_64/Makefile 2015-06-20 21:22:16.307457801 -0400 +@@ -2,8 +2,6 @@ + long-double-fcts = yes + + ifeq ($(subdir),csu) +-sysdep_routines += hp-timing +-elide-routines.os += hp-timing + gen-as-const-headers += link-defines.sym + endif + +diff -urN glibc-2.17-c758a686/test-skeleton.c glibc-2.17-c758a686/test-skeleton.c +--- glibc-2.17-c758a686/test-skeleton.c 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/test-skeleton.c 2015-06-20 21:22:16.307457801 -0400 +@@ -18,8 +18,10 @@ + . */ + + #include ++#include + #include + #include ++#include + #include + #include + #include +@@ -194,6 +196,32 @@ + exit (1); + } + ++/* Set fortification error handler. Used when tests want to verify that bad ++ code is caught by the library. */ ++static void ++__attribute__ ((unused)) ++set_fortify_handler (void (*handler) (int sig)) ++{ ++ struct sigaction sa; ++ ++ sa.sa_handler = handler; ++ sa.sa_flags = 0; ++ sigemptyset (&sa.sa_mask); ++ ++ sigaction (SIGABRT, &sa, NULL); ++ ++ /* Avoid all the buffer overflow messages on stderr. */ ++ int fd = open (_PATH_DEVNULL, O_WRONLY); ++ if (fd == -1) ++ close (STDERR_FILENO); ++ else ++ { ++ dup2 (fd, STDERR_FILENO); ++ close (fd); ++ } ++ setenv ("LIBC_FATAL_STDERR_", "1", 1); ++} ++ + /* We provide the entry point here. */ + int + main (int argc, char *argv[]) diff --git a/SOURCES/glibc-rh1085290.patch b/SOURCES/glibc-rh1085290.patch index 63e10b0..37f3c24 100644 --- a/SOURCES/glibc-rh1085290.patch +++ b/SOURCES/glibc-rh1085290.patch @@ -24,10 +24,10 @@ Date: Thu Mar 27 19:49:51 2014 +0530 netgroup` adds it if the return value from getnetgrent is NULL for either host or user. -diff --git a/inet/getnetgrent_r.c b/inet/getnetgrent_r.c +diff --git glibc-2.17-c758a686/inet/getnetgrent_r.c glibc-2.17-c758a686/inet/getnetgrent_r.c index 62cdfda..f6d064d 100644 ---- a/inet/getnetgrent_r.c -+++ b/inet/getnetgrent_r.c +--- glibc-2.17-c758a686/inet/getnetgrent_r.c ++++ glibc-2.17-c758a686/inet/getnetgrent_r.c @@ -235,6 +235,14 @@ endnetgrent (void) __libc_lock_unlock (lock); } diff --git a/SOURCES/glibc-rh1085313.patch b/SOURCES/glibc-rh1085313.patch index 461d862..648130e 100644 --- a/SOURCES/glibc-rh1085313.patch +++ b/SOURCES/glibc-rh1085313.patch @@ -16,10 +16,10 @@ Date: Wed Sep 10 21:51:50 2014 +0530 * inet/getnetgrent_r.c (__internal_getnetgrent_r): Try next group if the current group is empty. -diff --git a/inet/getnetgrent_r.c b/inet/getnetgrent_r.c +diff --git glibc-2.17-c758a686/inet/getnetgrent_r.c glibc-2.17-c758a686/inet/getnetgrent_r.c index f6d064d..e101537 100644 ---- a/inet/getnetgrent_r.c -+++ b/inet/getnetgrent_r.c +--- glibc-2.17-c758a686/inet/getnetgrent_r.c ++++ glibc-2.17-c758a686/inet/getnetgrent_r.c @@ -297,7 +297,10 @@ __internal_getnetgrent_r (char **hostp, char **userp, char **domainp, { status = DL_CALL_FCT (*fct, (datap, buffer, buflen, &errno)); diff --git a/SOURCES/glibc-rh1098042.patch b/SOURCES/glibc-rh1098042.patch new file mode 100644 index 0000000..efda3ac --- /dev/null +++ b/SOURCES/glibc-rh1098042.patch @@ -0,0 +1,28 @@ +commit cf26a0cb6a0bbaca46a01ddad6662e5e5159a32a +Author: Siddhesh Poyarekar +Date: Thu May 15 12:33:11 2014 +0530 + + Return EAI_AGAIN for AF_UNSPEC when herrno is TRY_AGAIN (BZ #16849) + + getaddrinfo correctly returns EAI_AGAIN for AF_INET and AF_INET6 + queries. For AF_UNSPEC however, an older change + (a682a1bf553b1efe4dbb03207fece5b719cec482) broke the check and due to + that the returned error was EAI_NONAME. + + This patch fixes the check so that a non-authoritative not-found is + returned as EAI_AGAIN to the user instead of EAI_NONAME. + +diff --git glibc-2.17-c758a686/sysdeps/posix/getaddrinfo.c glibc-2.17-c758a686/sysdeps/posix/getaddrinfo.c +index 6258330..8f392b9 100644 +--- glibc-2.17-c758a686/sysdeps/posix/getaddrinfo.c ++++ glibc-2.17-c758a686/sysdeps/posix/getaddrinfo.c +@@ -867,8 +867,7 @@ gaih_inet (const char *name, const struct gaih_service *service, + if (status != NSS_STATUS_TRYAGAIN + || rc != ERANGE || herrno != NETDB_INTERNAL) + { +- if (status == NSS_STATUS_TRYAGAIN +- && herrno == TRY_AGAIN) ++ if (herrno == TRY_AGAIN) + no_data = EAI_AGAIN; + else + no_data = herrno == NO_DATA; diff --git a/SOURCES/glibc-rh1098047.patch b/SOURCES/glibc-rh1098047.patch index 5be5321..b69deb5 100644 --- a/SOURCES/glibc-rh1098047.patch +++ b/SOURCES/glibc-rh1098047.patch @@ -192,9 +192,9 @@ Date: Tue Jul 8 16:40:24 2014 +0530 resolv/res_query.c | 9 +++++---- 2 files changed, 8 insertions(+), 4 deletions(-) -diff -pruN a/resolv/res_query.c b/resolv/res_query.c ---- a/resolv/res_query.c 2012-12-25 08:32:13.000000000 +0530 -+++ b/resolv/res_query.c 2014-09-05 14:28:06.439191017 +0530 +diff -pruN glibc-2.17-c758a686/resolv/res_query.c glibc-2.17-c758a686/resolv/res_query.c +--- glibc-2.17-c758a686/resolv/res_query.c 2012-12-25 08:32:13.000000000 +0530 ++++ glibc-2.17-c758a686/resolv/res_query.c 2014-09-05 14:28:06.439191017 +0530 @@ -378,7 +378,9 @@ __libc_res_nsearch(res_state statp, ret = __libc_res_nquerydomain(statp, name, NULL, class, type, answer, anslen, answerp, @@ -226,9 +226,9 @@ diff -pruN a/resolv/res_query.c b/resolv/res_query.c return (ret); } -diff -pruN a/resolv/res_send.c b/resolv/res_send.c ---- a/resolv/res_send.c 2014-09-05 14:28:30.039337246 +0530 -+++ b/resolv/res_send.c 2014-09-05 14:28:06.439191017 +0530 +diff -pruN glibc-2.17-c758a686/resolv/res_send.c glibc-2.17-c758a686/resolv/res_send.c +--- glibc-2.17-c758a686/resolv/res_send.c 2014-09-05 14:28:30.039337246 +0530 ++++ glibc-2.17-c758a686/resolv/res_send.c 2014-09-05 14:28:06.439191017 +0530 @@ -1343,6 +1343,7 @@ send_dg(res_state statp, (*thisresplenp > *thisanssizp) ? *thisanssizp : *thisresplenp); diff --git a/SOURCES/glibc-rh1103856.patch b/SOURCES/glibc-rh1103856.patch index 8599cf0..d7c7676 100644 --- a/SOURCES/glibc-rh1103856.patch +++ b/SOURCES/glibc-rh1103856.patch @@ -8,9 +8,9 @@ Date: Fri May 30 22:43:52 2014 +0530 allocations on the heap. Display information about number of mappings and total mmapped size to this to complete the picture. -diff -pruN a/malloc/malloc.c b/malloc/malloc.c ---- a/malloc/malloc.c 2014-06-02 07:35:22.573256155 +0530 -+++ b/malloc/malloc.c 2014-06-02 07:34:58.856257177 +0530 +diff -pruN glibc-2.17-c758a686/malloc/malloc.c glibc-2.17-c758a686/malloc/malloc.c +--- glibc-2.17-c758a686/malloc/malloc.c 2014-06-02 07:35:22.573256155 +0530 ++++ glibc-2.17-c758a686/malloc/malloc.c 2014-06-02 07:34:58.856257177 +0530 @@ -6553,12 +6553,14 @@ malloc_info (int options, FILE *fp) fprintf (fp, "\n" diff --git a/SOURCES/glibc-rh1103874.patch b/SOURCES/glibc-rh1103874.patch index 141470d..4dd79df 100644 --- a/SOURCES/glibc-rh1103874.patch +++ b/SOURCES/glibc-rh1103874.patch @@ -1,6 +1,6 @@ -diff -pruN a/nptl/sysdeps/pthread/unwind-forcedunwind.c b/nptl/sysdeps/pthread/unwind-forcedunwind.c ---- a/nptl/sysdeps/pthread/unwind-forcedunwind.c 2010-05-04 16:57:23.000000000 +0530 -+++ b/nptl/sysdeps/pthread/unwind-forcedunwind.c 2014-06-02 23:00:02.901013275 +0530 +diff -pruN glibc-2.17-c758a686/nptl/sysdeps/pthread/unwind-forcedunwind.c glibc-2.17-c758a686/nptl/sysdeps/pthread/unwind-forcedunwind.c +--- glibc-2.17-c758a686/nptl/sysdeps/pthread/unwind-forcedunwind.c 2010-05-04 16:57:23.000000000 +0530 ++++ glibc-2.17-c758a686/nptl/sysdeps/pthread/unwind-forcedunwind.c 2014-06-02 23:00:02.901013275 +0530 @@ -45,8 +45,10 @@ pthread_cancel_init (void) if (__builtin_expect (libgcc_s_handle != NULL, 1)) @@ -90,9 +90,9 @@ diff -pruN a/nptl/sysdeps/pthread/unwind-forcedunwind.c b/nptl/sysdeps/pthread/u _Unwind_Word (*getcfa) (struct _Unwind_Context *) = libgcc_s_getcfa; PTR_DEMANGLE (getcfa); -diff -pruN a/sysdeps/gnu/unwind-resume.c b/sysdeps/gnu/unwind-resume.c ---- a/sysdeps/gnu/unwind-resume.c 2010-05-04 16:57:23.000000000 +0530 -+++ b/sysdeps/gnu/unwind-resume.c 2014-06-02 23:02:26.812007078 +0530 +diff -pruN glibc-2.17-c758a686/sysdeps/gnu/unwind-resume.c glibc-2.17-c758a686/sysdeps/gnu/unwind-resume.c +--- glibc-2.17-c758a686/sysdeps/gnu/unwind-resume.c 2010-05-04 16:57:23.000000000 +0530 ++++ glibc-2.17-c758a686/sysdeps/gnu/unwind-resume.c 2014-06-02 23:02:26.812007078 +0530 @@ -20,8 +20,11 @@ #include #include diff --git a/SOURCES/glibc-rh1120490-int128.patch b/SOURCES/glibc-rh1120490-int128.patch index 00fcc7b..2c539a2 100644 --- a/SOURCES/glibc-rh1120490-int128.patch +++ b/SOURCES/glibc-rh1120490-int128.patch @@ -23,9 +23,9 @@ Date: Fri Apr 25 09:33:41 2014 -0700 with __int128_t. (La_x86_64_retval): Likewise. -diff -urN glibc-2.17-c758a686/sysdeps/x86/bits/link.h glibc-2.17-c758a686.mod/sysdeps/x86/bits/link.h +diff -urN glibc-2.17-c758a686/sysdeps/x86/bits/link.h glibc-2.17-c758a686/sysdeps/x86/bits/link.h --- glibc-2.17-c758a686/sysdeps/x86/bits/link.h 2014-11-05 13:39:09.888988366 -0500 -+++ glibc-2.17-c758a686.mod/sysdeps/x86/bits/link.h 2014-11-05 13:39:52.800863646 -0500 ++++ glibc-2.17-c758a686/sysdeps/x86/bits/link.h 2014-11-05 13:39:52.800863646 -0500 @@ -94,7 +94,7 @@ La_x86_64_xmm lr_xmm[8]; La_x86_64_vector lr_vector[8]; @@ -46,9 +46,9 @@ diff -urN glibc-2.17-c758a686/sysdeps/x86/bits/link.h glibc-2.17-c758a686.mod/sy #endif } La_x86_64_retval; -diff -urN glibc-2.17-c758a686/sysdeps/x86_64/link-defines.sym glibc-2.17-c758a686.mod/sysdeps/x86_64/link-defines.sym +diff -urN glibc-2.17-c758a686/sysdeps/x86_64/link-defines.sym glibc-2.17-c758a686/sysdeps/x86_64/link-defines.sym --- glibc-2.17-c758a686/sysdeps/x86_64/link-defines.sym 2014-11-05 13:39:09.889988363 -0500 -+++ glibc-2.17-c758a686.mod/sysdeps/x86_64/link-defines.sym 2014-11-05 13:39:52.800863646 -0500 ++++ glibc-2.17-c758a686/sysdeps/x86_64/link-defines.sym 2014-11-05 13:39:52.800863646 -0500 @@ -6,7 +6,7 @@ XMM_SIZE sizeof (La_x86_64_xmm) YMM_SIZE sizeof (La_x86_64_ymm) diff --git a/SOURCES/glibc-rh1120490.patch b/SOURCES/glibc-rh1120490.patch index 0e911c8..938938f 100644 --- a/SOURCES/glibc-rh1120490.patch +++ b/SOURCES/glibc-rh1120490.patch @@ -92,10 +92,10 @@ Date: Tue Sep 16 14:08:48 2014 +0530 __extern_always_inline and __extern_inline only for g++-4.3 and newer or a compatible gcc. -diff --git a/libio/stdio.h b/libio/stdio.h +diff --git glibc-2.17-c758a686/libio/stdio.h glibc-2.17-c758a686/libio/stdio.h index d8c0bdb..1f4f837 100644 ---- a/libio/stdio.h -+++ b/libio/stdio.h +--- glibc-2.17-c758a686/libio/stdio.h ++++ glibc-2.17-c758a686/libio/stdio.h @@ -932,7 +932,7 @@ extern void funlockfile (FILE *__stream) __THROW; #ifdef __USE_EXTERN_INLINES # include @@ -105,10 +105,10 @@ index d8c0bdb..1f4f837 100644 # include #endif #ifdef __LDBL_COMPAT -diff --git a/math/bits/math-finite.h b/math/bits/math-finite.h +diff --git glibc-2.17-c758a686/math/bits/math-finite.h glibc-2.17-c758a686/math/bits/math-finite.h index aa755de..0656645 100644 ---- a/math/bits/math-finite.h -+++ b/math/bits/math-finite.h +--- glibc-2.17-c758a686/math/bits/math-finite.h ++++ glibc-2.17-c758a686/math/bits/math-finite.h @@ -251,7 +251,8 @@ extern long double __REDIRECT_NTH (lgammal_r, (long double, int *), # endif #endif @@ -138,10 +138,10 @@ index aa755de..0656645 100644 /* tgamma. */ extern double __gamma_r_finite (double, int *); __extern_always_inline double __NTH (tgamma (double __d)) -diff --git a/misc/sys/cdefs.h b/misc/sys/cdefs.h +diff --git glibc-2.17-c758a686/misc/sys/cdefs.h glibc-2.17-c758a686/misc/sys/cdefs.h index 04db956..01e81ba 100644 ---- a/misc/sys/cdefs.h -+++ b/misc/sys/cdefs.h +--- glibc-2.17-c758a686/misc/sys/cdefs.h ++++ glibc-2.17-c758a686/misc/sys/cdefs.h @@ -131,7 +131,6 @@ /* Fortify support. */ #define __bos(ptr) __builtin_object_size (ptr, __USE_FORTIFY_LEVEL > 1) diff --git a/SOURCES/glibc-rh1125306.patch b/SOURCES/glibc-rh1125306.patch index 4d07f4e..6b19f7f 100644 --- a/SOURCES/glibc-rh1125306.patch +++ b/SOURCES/glibc-rh1125306.patch @@ -4,10 +4,10 @@ Date: Wed May 7 14:08:57 2014 +0200 Fix typo in nscd/selinux.c -diff --git a/nscd/selinux.c b/nscd/selinux.c +diff --git glibc-2.17-c758a686/nscd/selinux.c glibc-2.17-c758a686/nscd/selinux.c index 9a8a5a8..eaed6dd 100644 ---- a/nscd/selinux.c -+++ b/nscd/selinux.c +--- glibc-2.17-c758a686/nscd/selinux.c ++++ glibc-2.17-c758a686/nscd/selinux.c @@ -372,7 +372,7 @@ nscd_request_avc_has_perm (int fd, request_type req) /* Get the security class for nscd. If this fails we will likely be unable to do anything unless avc_deny_unknown is 0. */ diff --git a/SOURCES/glibc-rh1132518-mpx.patch b/SOURCES/glibc-rh1132518-mpx.patch index b240ff1..43997d0 100644 --- a/SOURCES/glibc-rh1132518-mpx.patch +++ b/SOURCES/glibc-rh1132518-mpx.patch @@ -59,9 +59,9 @@ # (_dl_runtime_resolve): Use them. Save and restore Intel MPX # bound registers when calling _dl_fixup. # -diff -urN glibc-2.17-c758a686/config.h.in glibc-2.17-c758a686.mod/config.h.in +diff -urN glibc-2.17-c758a686/config.h.in glibc-2.17-c758a686/config.h.in --- glibc-2.17-c758a686/config.h.in 2014-09-10 23:26:03.467045808 -0400 -+++ glibc-2.17-c758a686.mod/config.h.in 2014-09-10 23:27:41.532851928 -0400 ++++ glibc-2.17-c758a686/config.h.in 2014-09-10 23:27:41.532851928 -0400 @@ -107,6 +107,9 @@ /* Define if assembler supports AVX512. */ #undef HAVE_AVX512_ASM_SUPPORT @@ -72,9 +72,9 @@ diff -urN glibc-2.17-c758a686/config.h.in glibc-2.17-c758a686.mod/config.h.in /* Define if gcc supports FMA4. */ #undef HAVE_FMA4_SUPPORT -diff -urN glibc-2.17-c758a686/sysdeps/x86/bits/link.h glibc-2.17-c758a686.mod/sysdeps/x86/bits/link.h +diff -urN glibc-2.17-c758a686/sysdeps/x86/bits/link.h glibc-2.17-c758a686/sysdeps/x86/bits/link.h --- glibc-2.17-c758a686/sysdeps/x86/bits/link.h 2014-09-10 23:26:03.467045808 -0400 -+++ glibc-2.17-c758a686.mod/sysdeps/x86/bits/link.h 2014-09-10 23:27:41.533851926 -0400 ++++ glibc-2.17-c758a686/sysdeps/x86/bits/link.h 2014-09-10 23:27:41.533851926 -0400 @@ -93,6 +93,9 @@ uint64_t lr_rsp; La_x86_64_xmm lr_xmm[8]; @@ -96,9 +96,9 @@ diff -urN glibc-2.17-c758a686/sysdeps/x86/bits/link.h glibc-2.17-c758a686.mod/sy } La_x86_64_retval; #define La_x32_regs La_x86_64_regs -diff -urN glibc-2.17-c758a686/sysdeps/x86_64/configure glibc-2.17-c758a686.mod/sysdeps/x86_64/configure +diff -urN glibc-2.17-c758a686/sysdeps/x86_64/configure glibc-2.17-c758a686/sysdeps/x86_64/configure --- glibc-2.17-c758a686/sysdeps/x86_64/configure 2014-09-10 23:26:03.573045598 -0400 -+++ glibc-2.17-c758a686.mod/sysdeps/x86_64/configure 2014-09-10 23:27:41.532851928 -0400 ++++ glibc-2.17-c758a686/sysdeps/x86_64/configure 2014-09-10 23:27:41.532851928 -0400 @@ -212,6 +212,33 @@ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_cc_novzeroupper" >&5 $as_echo "$libc_cv_cc_novzeroupper" >&6; } @@ -133,9 +133,9 @@ diff -urN glibc-2.17-c758a686/sysdeps/x86_64/configure glibc-2.17-c758a686.mod/s $as_echo "#define PI_STATIC_AND_HIDDEN 1" >>confdefs.h # work around problem with autoconf and empty lines at the end of files -diff -urN glibc-2.17-c758a686/sysdeps/x86_64/configure.in glibc-2.17-c758a686.mod/sysdeps/x86_64/configure.in +diff -urN glibc-2.17-c758a686/sysdeps/x86_64/configure.in glibc-2.17-c758a686/sysdeps/x86_64/configure.in --- glibc-2.17-c758a686/sysdeps/x86_64/configure.in 2014-09-10 23:26:03.468045806 -0400 -+++ glibc-2.17-c758a686.mod/sysdeps/x86_64/configure.in 2014-09-10 23:27:41.532851928 -0400 ++++ glibc-2.17-c758a686/sysdeps/x86_64/configure.in 2014-09-10 23:27:41.532851928 -0400 @@ -70,6 +70,21 @@ [libc_cv_cc_novzeroupper=no]) ]) @@ -158,9 +158,9 @@ diff -urN glibc-2.17-c758a686/sysdeps/x86_64/configure.in glibc-2.17-c758a686.mo dnl It is always possible to access static and hidden symbols in an dnl position independent way. AC_DEFINE(PI_STATIC_AND_HIDDEN) -diff -urN glibc-2.17-c758a686/sysdeps/x86_64/dl-trampoline.h glibc-2.17-c758a686.mod/sysdeps/x86_64/dl-trampoline.h +diff -urN glibc-2.17-c758a686/sysdeps/x86_64/dl-trampoline.h glibc-2.17-c758a686/sysdeps/x86_64/dl-trampoline.h --- glibc-2.17-c758a686/sysdeps/x86_64/dl-trampoline.h 2014-09-10 23:26:03.468045806 -0400 -+++ glibc-2.17-c758a686.mod/sysdeps/x86_64/dl-trampoline.h 2014-09-10 23:27:41.535851922 -0400 ++++ glibc-2.17-c758a686/sysdeps/x86_64/dl-trampoline.h 2014-09-10 23:27:41.535851922 -0400 @@ -63,6 +63,20 @@ movaps (LR_XMM_OFFSET + XMM_SIZE*6)(%rsp), %xmm6 movaps (LR_XMM_OFFSET + XMM_SIZE*7)(%rsp), %xmm7 @@ -216,9 +216,9 @@ diff -urN glibc-2.17-c758a686/sysdeps/x86_64/dl-trampoline.h glibc-2.17-c758a686 fldt LRV_ST1_OFFSET(%rsp) fldt LRV_ST0_OFFSET(%rsp) -diff -urN glibc-2.17-c758a686/sysdeps/x86_64/dl-trampoline.S glibc-2.17-c758a686.mod/sysdeps/x86_64/dl-trampoline.S +diff -urN glibc-2.17-c758a686/sysdeps/x86_64/dl-trampoline.S glibc-2.17-c758a686/sysdeps/x86_64/dl-trampoline.S --- glibc-2.17-c758a686/sysdeps/x86_64/dl-trampoline.S 2014-09-10 23:26:03.468045806 -0400 -+++ glibc-2.17-c758a686.mod/sysdeps/x86_64/dl-trampoline.S 2014-09-10 23:27:41.534851924 -0400 ++++ glibc-2.17-c758a686/sysdeps/x86_64/dl-trampoline.S 2014-09-10 23:27:41.534851924 -0400 @@ -24,6 +24,30 @@ # error RTLD_SAVESPACE_SSE must be aligned to 32 bytes #endif @@ -355,9 +355,9 @@ diff -urN glibc-2.17-c758a686/sysdeps/x86_64/dl-trampoline.S glibc-2.17-c758a686 # if defined HAVE_AVX_SUPPORT || defined HAVE_AVX512_ASM_SUPPORT .data L(have_avx): -diff -urN glibc-2.17-c758a686/sysdeps/x86_64/link-defines.sym glibc-2.17-c758a686.mod/sysdeps/x86_64/link-defines.sym +diff -urN glibc-2.17-c758a686/sysdeps/x86_64/link-defines.sym glibc-2.17-c758a686/sysdeps/x86_64/link-defines.sym --- glibc-2.17-c758a686/sysdeps/x86_64/link-defines.sym 2014-09-10 23:26:03.468045806 -0400 -+++ glibc-2.17-c758a686.mod/sysdeps/x86_64/link-defines.sym 2014-09-10 23:27:41.535851922 -0400 ++++ glibc-2.17-c758a686/sysdeps/x86_64/link-defines.sym 2014-09-10 23:27:41.535851922 -0400 @@ -6,6 +6,7 @@ XMM_SIZE sizeof (La_x86_64_xmm) YMM_SIZE sizeof (La_x86_64_ymm) diff --git a/SOURCES/glibc-rh1133812-1.patch b/SOURCES/glibc-rh1133812-1.patch index 12b9949..fedf8a9 100644 --- a/SOURCES/glibc-rh1133812-1.patch +++ b/SOURCES/glibc-rh1133812-1.patch @@ -5,10 +5,10 @@ trans_compare, open_translit, __gconv_translit_find): Remove module loading code. -diff --git a/iconv/gconv_trans.c b/iconv/gconv_trans.c +diff --git glibc-2.17-c758a686/iconv/gconv_trans.c glibc-2.17-c758a686/iconv/gconv_trans.c index 1e25854..d71c029 100644 ---- a/iconv/gconv_trans.c -+++ b/iconv/gconv_trans.c +--- glibc-2.17-c758a686/iconv/gconv_trans.c ++++ glibc-2.17-c758a686/iconv/gconv_trans.c @@ -238,181 +238,11 @@ __gconv_transliterate (struct __gconv_step *step, return __GCONV_ILLEGAL_INPUT; } diff --git a/SOURCES/glibc-rh1133812-2.patch b/SOURCES/glibc-rh1133812-2.patch index a82994f..63e3557 100644 --- a/SOURCES/glibc-rh1133812-2.patch +++ b/SOURCES/glibc-rh1133812-2.patch @@ -21,9 +21,9 @@ Date: Wed May 28 14:41:52 2014 +0200 This avoids alloca calls with potentially large arguments. -diff -pruN glibc-2.18/locale/findlocale.c glibc-2.18.patched/locale/findlocale.c ---- glibc-2.18/locale/findlocale.c 2013-08-11 04:22:55.000000000 +0530 -+++ glibc-2.18.patched/locale/findlocale.c 2014-08-26 16:14:50.403253778 +0530 +diff -pruN glibc-2.17-c758a686/locale/findlocale.c glibc-2.17-c758a686/locale/findlocale.c +--- glibc-2.17-c758a686/locale/findlocale.c 2013-08-11 04:22:55.000000000 +0530 ++++ glibc-2.17-c758a686/locale/findlocale.c 2014-08-26 16:14:50.403253778 +0530 @@ -17,6 +17,7 @@ . */ @@ -139,9 +139,9 @@ diff -pruN glibc-2.18/locale/findlocale.c glibc-2.18.patched/locale/findlocale.c /* We really have to load some data. First we try the archive, but only if there was no LOCPATH environment variable specified. */ -diff -pruN glibc-2.18/locale/setlocale.c glibc-2.18.patched/locale/setlocale.c ---- glibc-2.18/locale/setlocale.c 2013-08-11 04:22:55.000000000 +0530 -+++ glibc-2.18.patched/locale/setlocale.c 2014-08-26 16:14:50.401253764 +0530 +diff -pruN glibc-2.17-c758a686/locale/setlocale.c glibc-2.17-c758a686/locale/setlocale.c +--- glibc-2.17-c758a686/locale/setlocale.c 2013-08-11 04:22:55.000000000 +0530 ++++ glibc-2.17-c758a686/locale/setlocale.c 2014-08-26 16:14:50.401253764 +0530 @@ -272,6 +272,8 @@ setlocale (int category, const char *loc of entries of the form `CATEGORY=VALUE'. */ const char *newnames[__LC_LAST]; @@ -185,9 +185,9 @@ diff -pruN glibc-2.18/locale/setlocale.c glibc-2.18.patched/locale/setlocale.c return composite; } -diff -pruN glibc-2.18/localedata/Makefile glibc-2.18.patched/localedata/Makefile ---- glibc-2.18/localedata/Makefile 2014-08-26 16:15:22.656474571 +0530 -+++ glibc-2.18.patched/localedata/Makefile 2014-08-26 16:14:50.403253778 +0530 +diff -pruN glibc-2.17-c758a686/localedata/Makefile glibc-2.17-c758a686/localedata/Makefile +--- glibc-2.17-c758a686/localedata/Makefile 2014-08-26 16:15:22.656474571 +0530 ++++ glibc-2.17-c758a686/localedata/Makefile 2014-08-26 16:14:50.403253778 +0530 @@ -77,7 +77,7 @@ locale_test_suite := tst_iswalnum tst_is tests = $(locale_test_suite) tst-digits tst-setlocale bug-iconv-trans \ @@ -197,9 +197,9 @@ diff -pruN glibc-2.18/localedata/Makefile glibc-2.18.patched/localedata/Makefile ifeq (yes,$(build-shared)) ifneq (no,$(PERL)) tests: $(objpfx)mtrace-tst-leaks -diff -pruN glibc-2.18/localedata/tst-setlocale3.c glibc-2.18.patched/localedata/tst-setlocale3.c ---- glibc-2.18/localedata/tst-setlocale3.c 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.18.patched/localedata/tst-setlocale3.c 2014-08-26 16:14:50.403253778 +0530 +diff -pruN glibc-2.17-c758a686/localedata/tst-setlocale3.c glibc-2.17-c758a686/localedata/tst-setlocale3.c +--- glibc-2.17-c758a686/localedata/tst-setlocale3.c 1970-01-01 05:30:00.000000000 +0530 ++++ glibc-2.17-c758a686/localedata/tst-setlocale3.c 2014-08-26 16:14:50.403253778 +0530 @@ -0,0 +1,203 @@ +/* Regression test for setlocale invalid environment variable handling. + Copyright (C) 2014 Free Software Foundation, Inc. @@ -404,9 +404,9 @@ diff -pruN glibc-2.18/localedata/tst-setlocale3.c glibc-2.18.patched/localedata/ + +#define TEST_FUNCTION do_test () +#include "../test-skeleton.c" -diff -pruN glibc-2.18/manual/locale.texi glibc-2.18.patched/manual/locale.texi ---- glibc-2.18/manual/locale.texi 2013-08-11 04:22:55.000000000 +0530 -+++ glibc-2.18.patched/manual/locale.texi 2014-08-26 16:14:50.404253785 +0530 +diff -pruN glibc-2.17-c758a686/manual/locale.texi glibc-2.17-c758a686/manual/locale.texi +--- glibc-2.17-c758a686/manual/locale.texi 2013-08-11 04:22:55.000000000 +0530 ++++ glibc-2.17-c758a686/manual/locale.texi 2014-08-26 16:14:50.404253785 +0530 @@ -29,6 +29,7 @@ will follow the conventions preferred by * Setting the Locale:: How a program specifies the locale with library functions. diff --git a/SOURCES/glibc-rh1133812-3.patch b/SOURCES/glibc-rh1133812-3.patch index 9ae2546..c94a5ff 100644 --- a/SOURCES/glibc-rh1133812-3.patch +++ b/SOURCES/glibc-rh1133812-3.patch @@ -186,10 +186,10 @@ Date: Wed Jun 4 23:37:25 2014 +0000 (bug-setlocale1-static-ENV): Likewise. (tst-setlocale2-ENV): Likewise. -diff --git a/Rules b/Rules +diff --git glibc-2.17-c758a686/Rules glibc-2.17-c758a686/Rules index feb304d..9f1a445 100644 ---- a/Rules -+++ b/Rules +--- glibc-2.17-c758a686/Rules ++++ glibc-2.17-c758a686/Rules @@ -191,7 +191,8 @@ ifneq "$(strip $(tests) $(xtests) $(test-srcs))" "" # from the test programs and whatever input files are present. @@ -200,10 +200,10 @@ index feb304d..9f1a445 100644 $($*-ENV) $(host-built-program-cmd) $($*-ARGS) $(objpfx)%-bp.out: %.input $(objpfx)%-bp $(make-test-out) > $@ < $(word 1,$^) -diff --git a/debug/Makefile b/debug/Makefile +diff --git glibc-2.17-c758a686/debug/Makefile glibc-2.17-c758a686/debug/Makefile index b599a22..c284c51 100644 ---- a/debug/Makefile -+++ b/debug/Makefile +--- glibc-2.17-c758a686/debug/Makefile ++++ glibc-2.17-c758a686/debug/Makefile @@ -109,18 +109,6 @@ CFLAGS-tst-lfschk3.c = -Wno-format CFLAGS-tst-lfschk4.cc = -Wno-format CFLAGS-tst-lfschk5.cc = -Wno-format @@ -223,10 +223,10 @@ index b599a22..c284c51 100644 LDLIBS-tst-chk4 = -lstdc++ LDLIBS-tst-chk5 = -lstdc++ LDLIBS-tst-chk6 = -lstdc++ -diff --git a/iconvdata/Makefile b/iconvdata/Makefile +diff --git glibc-2.17-c758a686/iconvdata/Makefile glibc-2.17-c758a686/iconvdata/Makefile index 074d330..d98b6bd 100644 ---- a/iconvdata/Makefile -+++ b/iconvdata/Makefile +--- glibc-2.17-c758a686/iconvdata/Makefile ++++ glibc-2.17-c758a686/iconvdata/Makefile @@ -73,9 +73,6 @@ tests += bug-iconv3 endif @@ -237,10 +237,10 @@ index 074d330..d98b6bd 100644 endif # No code here is in libc.so. -diff --git a/intl/Makefile b/intl/Makefile +diff --git glibc-2.17-c758a686/intl/Makefile glibc-2.17-c758a686/intl/Makefile index f11449d..10051f6 100644 ---- a/intl/Makefile -+++ b/intl/Makefile +--- glibc-2.17-c758a686/intl/Makefile ++++ glibc-2.17-c758a686/intl/Makefile @@ -118,11 +118,6 @@ CFLAGS-tst-gettext4.c = -DOBJPFX=\"$(objpfx)\" CFLAGS-tst-gettext5.c = -DOBJPFX=\"$(objpfx)\" CFLAGS-tst-gettext6.c = -DOBJPFX=\"$(objpfx)\" @@ -253,10 +253,10 @@ index f11449d..10051f6 100644 ifeq ($(have-thread-library),yes) ifeq (yes,$(build-shared)) $(addprefix $(objpfx),$(multithread-test-srcs)): $(shared-thread-library) -diff --git a/libio/Makefile b/libio/Makefile +diff --git glibc-2.17-c758a686/libio/Makefile glibc-2.17-c758a686/libio/Makefile index b324ccc..4552360 100644 ---- a/libio/Makefile -+++ b/libio/Makefile +--- glibc-2.17-c758a686/libio/Makefile ++++ glibc-2.17-c758a686/libio/Makefile @@ -148,17 +148,8 @@ CFLAGS-tst_putwc.c = -DOBJPFX=\"$(objpfx)\" tst_wprintf2-ARGS = "Some Text" @@ -277,10 +277,10 @@ index b324ccc..4552360 100644 generated = tst-fopenloc.mtrace tst-fopenloc.check -diff --git a/localedata/Makefile b/localedata/Makefile +diff --git glibc-2.17-c758a686/localedata/Makefile glibc-2.17-c758a686/localedata/Makefile index d7ab445..20da00c 100644 ---- a/localedata/Makefile -+++ b/localedata/Makefile +--- glibc-2.17-c758a686/localedata/Makefile ++++ glibc-2.17-c758a686/localedata/Makefile @@ -215,79 +215,13 @@ $(addprefix --prefix=,$(install_root)) $$locale; \ echo ' done'; \ @@ -363,10 +363,10 @@ index d7ab445..20da00c 100644 $(objdir)/iconvdata/gconv-modules: $(MAKE) -C ../iconvdata subdir=iconvdata $@ -diff --git a/posix/Makefile b/posix/Makefile +diff --git glibc-2.17-c758a686/posix/Makefile glibc-2.17-c758a686/posix/Makefile index 328c2c5..3d75971 100644 ---- a/posix/Makefile -+++ b/posix/Makefile +--- glibc-2.17-c758a686/posix/Makefile ++++ glibc-2.17-c758a686/posix/Makefile @@ -203,27 +203,7 @@ tst-dir-ARGS = `pwd` `cd $(common-objdir)/$(subdir); pwd` `cd $(common-objdir); tst-chmod-ARGS = $(objdir) tst-vfork3-ARGS = --test-dir=$(objpfx) @@ -395,10 +395,10 @@ index 328c2c5..3d75971 100644 tst-pcre-ARGS = PCRE.tests tst-boost-ARGS = BOOST.tests bug-glob1-ARGS = "$(objpfx)" -diff --git a/stdio-common/Makefile b/stdio-common/Makefile +diff --git glibc-2.17-c758a686/stdio-common/Makefile glibc-2.17-c758a686/stdio-common/Makefile index f179eab..5f8e534 100644 ---- a/stdio-common/Makefile -+++ b/stdio-common/Makefile +--- glibc-2.17-c758a686/stdio-common/Makefile ++++ glibc-2.17-c758a686/stdio-common/Makefile @@ -118,13 +118,6 @@ CFLAGS-scanf17.c = -I../libio -I../stdlib -I../wcsmbs -I../time -I../string \ # We know the test has a format string problem. @@ -413,10 +413,10 @@ index f179eab..5f8e534 100644 CPPFLAGS += $(libio-mtsafe) -diff --git a/stdlib/Makefile b/stdlib/Makefile +diff --git glibc-2.17-c758a686/stdlib/Makefile glibc-2.17-c758a686/stdlib/Makefile index d7a562f..0fdf7cc 100644 ---- a/stdlib/Makefile -+++ b/stdlib/Makefile +--- glibc-2.17-c758a686/stdlib/Makefile ++++ glibc-2.17-c758a686/stdlib/Makefile @@ -123,11 +123,6 @@ include ../Rules # Testdir has to be named stdlib and needs to be writable test-canon-ARGS = --test-dir=${common-objpfx}stdlib @@ -429,10 +429,10 @@ index d7a562f..0fdf7cc 100644 bug-fmtmsg1-ENV = SEV_LEVEL=foo,11,newsev # Run a test on the header files we use. -diff --git a/string/Makefile b/string/Makefile +diff --git glibc-2.17-c758a686/string/Makefile glibc-2.17-c758a686/string/Makefile index 5a76872..70b9c19 100644 ---- a/string/Makefile -+++ b/string/Makefile +--- glibc-2.17-c758a686/string/Makefile ++++ glibc-2.17-c758a686/string/Makefile @@ -67,9 +67,6 @@ include ../Rules tester-ENV = LANGUAGE=C inl-tester-ENV = LANGUAGE=C @@ -443,10 +443,10 @@ index 5a76872..70b9c19 100644 CFLAGS-inl-tester.c = -fno-builtin CFLAGS-noinl-tester.c = -fno-builtin CFLAGS-tst-strlen.c = -fno-builtin -diff --git a/time/Makefile b/time/Makefile +diff --git glibc-2.17-c758a686/time/Makefile glibc-2.17-c758a686/time/Makefile index b7f3dba..a07c041 100644 ---- a/time/Makefile -+++ b/time/Makefile +--- glibc-2.17-c758a686/time/Makefile ++++ glibc-2.17-c758a686/time/Makefile @@ -55,7 +55,4 @@ CFLAGS-test_time.c = -Wno-format tst-getdate-ENV= DATEMSK=datemsk TZDIR=${common-objpfx}timezone/testdata test_time-ARGS= EST5EDT CST @@ -455,10 +455,10 @@ index b7f3dba..a07c041 100644 -tst-ftime_l-ENV = LOCPATH=${common-objpfx}localedata - bug-getdate1-ARGS = ${objpfx}bug-getdate1-fmt -diff --git a/wcsmbs/Makefile b/wcsmbs/Makefile +diff --git glibc-2.17-c758a686/wcsmbs/Makefile glibc-2.17-c758a686/wcsmbs/Makefile index 197ca7d..42843a6 100644 ---- a/wcsmbs/Makefile -+++ b/wcsmbs/Makefile +--- glibc-2.17-c758a686/wcsmbs/Makefile ++++ glibc-2.17-c758a686/wcsmbs/Makefile @@ -80,10 +80,3 @@ CPPFLAGS += $(libio-mtsafe) # We need to find the default version of strtold_l in stdlib. diff --git a/SOURCES/glibc-rh1138520.patch b/SOURCES/glibc-rh1138520.patch index affbe96..1ddb051 100644 --- a/SOURCES/glibc-rh1138520.patch +++ b/SOURCES/glibc-rh1138520.patch @@ -52,9 +52,9 @@ Date: Thu Jan 16 10:20:22 2014 +0530 Thanks Brad Hubbard for his help with debugging the problem. -diff -pruN glibc-2.12-2-gc4ccff1/nscd/netgroupcache.c glibc-2.12-2-gc4ccff1.patched/nscd/netgroupcache.c ---- glibc-2.12-2-gc4ccff1/nscd/netgroupcache.c 2014-04-09 12:13:58.618582111 +0530 -+++ glibc-2.12-2-gc4ccff1.patched/nscd/netgroupcache.c 2014-04-09 12:07:21.486598665 +0530 +diff -pruN glibc-2.17-c758a686/nscd/netgroupcache.c glibc-2.17-c758a686/nscd/netgroupcache.c +--- glibc-2.17-c758a686/nscd/netgroupcache.c 2014-04-09 12:13:58.618582111 +0530 ++++ glibc-2.17-c758a686/nscd/netgroupcache.c 2014-04-09 12:07:21.486598665 +0530 @@ -93,7 +93,6 @@ addgetnetgrentX (struct database_dyn *db size_t buffilled = sizeof (*dataset); char *buffer = NULL; diff --git a/SOURCES/glibc-rh1140272-avx512.patch b/SOURCES/glibc-rh1140272-avx512.patch index aa41415..5905e7b 100644 --- a/SOURCES/glibc-rh1140272-avx512.patch +++ b/SOURCES/glibc-rh1140272-avx512.patch @@ -62,9 +62,9 @@ # https://sourceware.org/ml/libc-alpha/2014-09/msg00228.html # To extend zmm register checking. # -diff -urN glibc-2.17-c758a686/config.h.in glibc-2.17-c758a686.mod-mpx/config.h.in +diff -urN glibc-2.17-c758a686/config.h.in glibc-2.17-c758a686/config.h.in --- glibc-2.17-c758a686/config.h.in 2014-09-10 23:11:14.605787816 -0400 -+++ glibc-2.17-c758a686.mod-mpx/config.h.in 2014-09-10 23:16:36.331167056 -0400 ++++ glibc-2.17-c758a686/config.h.in 2014-09-10 23:16:36.331167056 -0400 @@ -101,6 +101,12 @@ /* Define if gcc supports VEX encoding. */ #undef HAVE_SSE2AVX_SUPPORT @@ -78,9 +78,9 @@ diff -urN glibc-2.17-c758a686/config.h.in glibc-2.17-c758a686.mod-mpx/config.h.i /* Define if gcc supports FMA4. */ #undef HAVE_FMA4_SUPPORT -diff -urN glibc-2.17-c758a686/sysdeps/x86/bits/link.h glibc-2.17-c758a686.mod-mpx/sysdeps/x86/bits/link.h +diff -urN glibc-2.17-c758a686/sysdeps/x86/bits/link.h glibc-2.17-c758a686/sysdeps/x86/bits/link.h --- glibc-2.17-c758a686/sysdeps/x86/bits/link.h 2012-12-24 22:02:13.000000000 -0500 -+++ glibc-2.17-c758a686.mod-mpx/sysdeps/x86/bits/link.h 2014-09-10 23:16:36.331167056 -0400 ++++ glibc-2.17-c758a686/sysdeps/x86/bits/link.h 2014-09-10 23:16:36.331167056 -0400 @@ -66,6 +66,8 @@ typedef float La_x86_64_xmm __attribute__ ((__vector_size__ (16))); typedef float La_x86_64_ymm @@ -98,9 +98,9 @@ diff -urN glibc-2.17-c758a686/sysdeps/x86/bits/link.h glibc-2.17-c758a686.mod-mp # endif La_x86_64_xmm xmm[4]; } La_x86_64_vector __attribute__ ((__aligned__ (16))); -diff -urN glibc-2.17-c758a686/sysdeps/x86_64/configure glibc-2.17-c758a686.mod-mpx/sysdeps/x86_64/configure +diff -urN glibc-2.17-c758a686/sysdeps/x86_64/configure glibc-2.17-c758a686/sysdeps/x86_64/configure --- glibc-2.17-c758a686/sysdeps/x86_64/configure 2014-09-10 23:11:15.000787061 -0400 -+++ glibc-2.17-c758a686.mod-mpx/sysdeps/x86_64/configure 2014-09-10 23:16:36.338167042 -0400 ++++ glibc-2.17-c758a686/sysdeps/x86_64/configure 2014-09-10 23:16:36.338167042 -0400 @@ -91,6 +91,59 @@ fi @@ -161,9 +161,9 @@ diff -urN glibc-2.17-c758a686/sysdeps/x86_64/configure glibc-2.17-c758a686.mod-m { $as_echo "$as_me:${as_lineno-$LINENO}: checking for AVX encoding of SSE instructions" >&5 $as_echo_n "checking for AVX encoding of SSE instructions... " >&6; } if ${libc_cv_cc_sse2avx+:} false; then : -diff -urN glibc-2.17-c758a686/sysdeps/x86_64/configure.in glibc-2.17-c758a686.mod-mpx/sysdeps/x86_64/configure.in +diff -urN glibc-2.17-c758a686/sysdeps/x86_64/configure.in glibc-2.17-c758a686/sysdeps/x86_64/configure.in --- glibc-2.17-c758a686/sysdeps/x86_64/configure.in 2012-12-24 22:02:13.000000000 -0500 -+++ glibc-2.17-c758a686.mod-mpx/sysdeps/x86_64/configure.in 2014-09-10 23:16:36.338167042 -0400 ++++ glibc-2.17-c758a686/sysdeps/x86_64/configure.in 2014-09-10 23:16:36.338167042 -0400 @@ -21,6 +21,30 @@ AC_DEFINE(HAVE_AVX_SUPPORT) fi @@ -195,233 +195,9 @@ diff -urN glibc-2.17-c758a686/sysdeps/x86_64/configure.in glibc-2.17-c758a686.mo dnl Check if -msse2avx works. AC_CACHE_CHECK(for AVX encoding of SSE instructions, libc_cv_cc_sse2avx, [dnl LIBC_TRY_CC_OPTION([-msse2avx], -diff -urN glibc-2.17-c758a686/sysdeps/x86_64/configure.in.orig glibc-2.17-c758a686.mod-mpx/sysdeps/x86_64/configure.in.orig ---- glibc-2.17-c758a686/sysdeps/x86_64/configure.in.orig 1969-12-31 19:00:00.000000000 -0500 -+++ glibc-2.17-c758a686.mod-mpx/sysdeps/x86_64/configure.in.orig 2014-09-10 23:16:28.418182701 -0400 -@@ -0,0 +1,52 @@ -+GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory. -+# Local configure fragment for sysdeps/x86_64. -+ -+AC_CHECK_HEADER([cpuid.h], , -+ [AC_MSG_ERROR([gcc must provide the header])], -+ [/* No default includes. */]) -+ -+dnl Check if -msse4 works. -+AC_CACHE_CHECK(for SSE4 support, libc_cv_cc_sse4, [dnl -+LIBC_TRY_CC_OPTION([-msse4], [libc_cv_cc_sse4=yes], [libc_cv_cc_sse4=no]) -+]) -+if test $libc_cv_cc_sse4 = yes; then -+ AC_DEFINE(HAVE_SSE4_SUPPORT) -+fi -+ -+dnl Check if -mavx works. -+AC_CACHE_CHECK(for AVX support, libc_cv_cc_avx, [dnl -+LIBC_TRY_CC_OPTION([-mavx], [libc_cv_cc_avx=yes], [libc_cv_cc_avx=no]) -+]) -+if test $libc_cv_cc_avx = yes; then -+ AC_DEFINE(HAVE_AVX_SUPPORT) -+fi -+ -+dnl Check if -msse2avx works. -+AC_CACHE_CHECK(for AVX encoding of SSE instructions, libc_cv_cc_sse2avx, [dnl -+LIBC_TRY_CC_OPTION([-msse2avx], -+ [libc_cv_cc_sse2avx=yes], -+ [libc_cv_cc_sse2avx=no]) -+]) -+if test $libc_cv_cc_sse2avx = yes; then -+ AC_DEFINE(HAVE_SSE2AVX_SUPPORT) -+fi -+ -+dnl Check if -mfma4 works. -+AC_CACHE_CHECK(for FMA4 support, libc_cv_cc_fma4, [dnl -+LIBC_TRY_CC_OPTION([-mfma4], [libc_cv_cc_fma4=yes], [libc_cv_cc_fma4=no]) -+]) -+if test $libc_cv_cc_fma4 = yes; then -+ AC_DEFINE(HAVE_FMA4_SUPPORT) -+fi -+ -+dnl Check if -mno-vzeroupper works. -+AC_CACHE_CHECK(for -mno-vzeroupper support, libc_cv_cc_novzeroupper, [dnl -+LIBC_TRY_CC_OPTION([-mno-vzeroupper], -+ [libc_cv_cc_novzeroupper=yes], -+ [libc_cv_cc_novzeroupper=no]) -+]) -+ -+dnl It is always possible to access static and hidden symbols in an -+dnl position independent way. -+AC_DEFINE(PI_STATIC_AND_HIDDEN) -+# work around problem with autoconf and empty lines at the end of files -diff -urN glibc-2.17-c758a686/sysdeps/x86_64/configure.orig glibc-2.17-c758a686.mod-mpx/sysdeps/x86_64/configure.orig ---- glibc-2.17-c758a686/sysdeps/x86_64/configure.orig 1969-12-31 19:00:00.000000000 -0500 -+++ glibc-2.17-c758a686.mod-mpx/sysdeps/x86_64/configure.orig 2014-09-10 23:16:28.419182699 -0400 -@@ -0,0 +1,164 @@ -+ -+# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES -+# ------------------------------------------------------- -+# Tests whether HEADER exists and can be compiled using the include files in -+# INCLUDES, setting the cache variable VAR accordingly. -+ac_fn_c_check_header_compile () -+{ -+ as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack -+ { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 -+$as_echo_n "checking for $2... " >&6; } -+if eval \${$3+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ cat confdefs.h - <<_ACEOF >conftest.$ac_ext -+/* end confdefs.h. */ -+$4 -+#include <$2> -+_ACEOF -+if ac_fn_c_try_compile "$LINENO"; then : -+ eval "$3=yes" -+else -+ eval "$3=no" -+fi -+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext -+fi -+eval ac_res=\$$3 -+ { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 -+$as_echo "$ac_res" >&6; } -+ eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno -+ -+} # ac_fn_c_check_header_compile -+# This file is generated from configure.in by Autoconf. DO NOT EDIT! -+ # Local configure fragment for sysdeps/x86_64. -+ -+ -+ac_fn_c_check_header_compile "$LINENO" "cpuid.h" "ac_cv_header_cpuid_h" "/* No default includes. */ -+" -+if test "x$ac_cv_header_cpuid_h" = xyes; then : -+ -+else -+ as_fn_error $? "gcc must provide the header" "$LINENO" 5 -+fi -+ -+ -+ -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for SSE4 support" >&5 -+$as_echo_n "checking for SSE4 support... " >&6; } -+if ${libc_cv_cc_sse4+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ if { ac_try='${CC-cc} -msse4 -xc /dev/null -S -o /dev/null' -+ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 -+ test $ac_status = 0; }; }; then : -+ libc_cv_cc_sse4=yes -+else -+ libc_cv_cc_sse4=no -+fi -+ -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_cc_sse4" >&5 -+$as_echo "$libc_cv_cc_sse4" >&6; } -+if test $libc_cv_cc_sse4 = yes; then -+ $as_echo "#define HAVE_SSE4_SUPPORT 1" >>confdefs.h -+ -+fi -+ -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for AVX support" >&5 -+$as_echo_n "checking for AVX support... " >&6; } -+if ${libc_cv_cc_avx+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ if { ac_try='${CC-cc} -mavx -xc /dev/null -S -o /dev/null' -+ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 -+ test $ac_status = 0; }; }; then : -+ libc_cv_cc_avx=yes -+else -+ libc_cv_cc_avx=no -+fi -+ -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_cc_avx" >&5 -+$as_echo "$libc_cv_cc_avx" >&6; } -+if test $libc_cv_cc_avx = yes; then -+ $as_echo "#define HAVE_AVX_SUPPORT 1" >>confdefs.h -+ -+fi -+ -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for AVX encoding of SSE instructions" >&5 -+$as_echo_n "checking for AVX encoding of SSE instructions... " >&6; } -+if ${libc_cv_cc_sse2avx+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ if { ac_try='${CC-cc} -msse2avx -xc /dev/null -S -o /dev/null' -+ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 -+ test $ac_status = 0; }; }; then : -+ libc_cv_cc_sse2avx=yes -+else -+ libc_cv_cc_sse2avx=no -+fi -+ -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_cc_sse2avx" >&5 -+$as_echo "$libc_cv_cc_sse2avx" >&6; } -+if test $libc_cv_cc_sse2avx = yes; then -+ $as_echo "#define HAVE_SSE2AVX_SUPPORT 1" >>confdefs.h -+ -+fi -+ -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for FMA4 support" >&5 -+$as_echo_n "checking for FMA4 support... " >&6; } -+if ${libc_cv_cc_fma4+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ if { ac_try='${CC-cc} -mfma4 -xc /dev/null -S -o /dev/null' -+ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 -+ test $ac_status = 0; }; }; then : -+ libc_cv_cc_fma4=yes -+else -+ libc_cv_cc_fma4=no -+fi -+ -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_cc_fma4" >&5 -+$as_echo "$libc_cv_cc_fma4" >&6; } -+if test $libc_cv_cc_fma4 = yes; then -+ $as_echo "#define HAVE_FMA4_SUPPORT 1" >>confdefs.h -+ -+fi -+ -+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for -mno-vzeroupper support" >&5 -+$as_echo_n "checking for -mno-vzeroupper support... " >&6; } -+if ${libc_cv_cc_novzeroupper+:} false; then : -+ $as_echo_n "(cached) " >&6 -+else -+ if { ac_try='${CC-cc} -mno-vzeroupper -xc /dev/null -S -o /dev/null' -+ { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 -+ (eval $ac_try) 2>&5 -+ ac_status=$? -+ $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 -+ test $ac_status = 0; }; }; then : -+ libc_cv_cc_novzeroupper=yes -+else -+ libc_cv_cc_novzeroupper=no -+fi -+ -+fi -+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $libc_cv_cc_novzeroupper" >&5 -+$as_echo "$libc_cv_cc_novzeroupper" >&6; } -+ -+$as_echo "#define PI_STATIC_AND_HIDDEN 1" >>confdefs.h -+ -+# work around problem with autoconf and empty lines at the end of files -diff -urN glibc-2.17-c758a686/sysdeps/x86_64/dl-trampoline.h glibc-2.17-c758a686.mod-mpx/sysdeps/x86_64/dl-trampoline.h +diff -urN glibc-2.17-c758a686/sysdeps/x86_64/dl-trampoline.h glibc-2.17-c758a686/sysdeps/x86_64/dl-trampoline.h --- glibc-2.17-c758a686/sysdeps/x86_64/dl-trampoline.h 2012-12-24 22:02:13.000000000 -0500 -+++ glibc-2.17-c758a686.mod-mpx/sysdeps/x86_64/dl-trampoline.h 2014-09-10 23:16:36.334167050 -0400 ++++ glibc-2.17-c758a686/sysdeps/x86_64/dl-trampoline.h 2014-09-10 23:16:36.334167050 -0400 @@ -19,14 +19,14 @@ #ifdef RESTORE_AVX @@ -544,9 +320,9 @@ diff -urN glibc-2.17-c758a686/sysdeps/x86_64/dl-trampoline.h glibc-2.17-c758a686 1: #endif -diff -urN glibc-2.17-c758a686/sysdeps/x86_64/dl-trampoline.S glibc-2.17-c758a686.mod-mpx/sysdeps/x86_64/dl-trampoline.S +diff -urN glibc-2.17-c758a686/sysdeps/x86_64/dl-trampoline.S glibc-2.17-c758a686/sysdeps/x86_64/dl-trampoline.S --- glibc-2.17-c758a686/sysdeps/x86_64/dl-trampoline.S 2012-12-24 22:02:13.000000000 -0500 -+++ glibc-2.17-c758a686.mod-mpx/sysdeps/x86_64/dl-trampoline.S 2014-09-10 23:16:36.334167050 -0400 ++++ glibc-2.17-c758a686/sysdeps/x86_64/dl-trampoline.S 2014-09-10 23:16:36.334167050 -0400 @@ -96,7 +96,7 @@ /* Actively align the La_x86_64_regs structure. */ @@ -750,9 +526,9 @@ diff -urN glibc-2.17-c758a686/sysdeps/x86_64/dl-trampoline.S glibc-2.17-c758a686 L(no_avx6): # endif movdqa %fs:RTLD_SAVESPACE_SSE+0*XMM_SIZE, %xmm0 -diff -urN glibc-2.17-c758a686/sysdeps/x86_64/link-defines.sym glibc-2.17-c758a686.mod-mpx/sysdeps/x86_64/link-defines.sym +diff -urN glibc-2.17-c758a686/sysdeps/x86_64/link-defines.sym glibc-2.17-c758a686/sysdeps/x86_64/link-defines.sym --- glibc-2.17-c758a686/sysdeps/x86_64/link-defines.sym 2012-12-24 22:02:13.000000000 -0500 -+++ glibc-2.17-c758a686.mod-mpx/sysdeps/x86_64/link-defines.sym 2014-09-10 23:16:36.335167048 -0400 ++++ glibc-2.17-c758a686/sysdeps/x86_64/link-defines.sym 2014-09-10 23:16:36.335167048 -0400 @@ -4,6 +4,8 @@ -- VECTOR_SIZE sizeof (La_x86_64_vector) @@ -762,9 +538,9 @@ diff -urN glibc-2.17-c758a686/sysdeps/x86_64/link-defines.sym glibc-2.17-c758a68 LR_SIZE sizeof (struct La_x86_64_regs) LR_RDX_OFFSET offsetof (struct La_x86_64_regs, lr_rdx) -diff -urN glibc-2.17-c758a686/sysdeps/x86_64/Makefile glibc-2.17-c758a686.mod-mpx/sysdeps/x86_64/Makefile +diff -urN glibc-2.17-c758a686/sysdeps/x86_64/Makefile glibc-2.17-c758a686/sysdeps/x86_64/Makefile --- glibc-2.17-c758a686/sysdeps/x86_64/Makefile 2012-12-24 22:02:13.000000000 -0500 -+++ glibc-2.17-c758a686.mod-mpx/sysdeps/x86_64/Makefile 2014-09-10 23:22:04.269518711 -0400 ++++ glibc-2.17-c758a686/sysdeps/x86_64/Makefile 2014-09-10 23:22:04.269518711 -0400 @@ -37,6 +37,20 @@ $(objpfx)tst-quad1pie: $(objpfx)tst-quadmod1pie.o @@ -786,57 +562,9 @@ diff -urN glibc-2.17-c758a686/sysdeps/x86_64/Makefile glibc-2.17-c758a686.mod-mp endif ifeq ($(subdir),csu) -diff -urN glibc-2.17-c758a686/sysdeps/x86_64/Makefile.orig glibc-2.17-c758a686.mod-mpx/sysdeps/x86_64/Makefile.orig ---- glibc-2.17-c758a686/sysdeps/x86_64/Makefile.orig 1969-12-31 19:00:00.000000000 -0500 -+++ glibc-2.17-c758a686.mod-mpx/sysdeps/x86_64/Makefile.orig 2014-09-10 23:16:36.332167054 -0400 -@@ -0,0 +1,44 @@ -+# The i387 `long double' is a distinct type we support. -+long-double-fcts = yes -+ -+ifeq ($(subdir),csu) -+sysdep_routines += hp-timing -+elide-routines.os += hp-timing -+gen-as-const-headers += link-defines.sym -+endif -+ -+ifeq ($(subdir),gmon) -+sysdep_routines += _mcount -+endif -+ -+ifeq ($(subdir),malloc) -+tests += tst-mallocalign1 -+endif -+ -+ifeq ($(subdir),string) -+sysdep_routines += cacheinfo strcasecmp_l-nonascii strncase_l-nonascii -+gen-as-const-headers += locale-defines.sym -+endif -+ -+ifeq ($(subdir),elf) -+sysdep-dl-routines += tlsdesc dl-tlsdesc -+sysdep_routines += tlsdesc dl-tlsdesc -+sysdep-rtld-routines += tlsdesc dl-tlsdesc -+ -+tests += tst-quad1 tst-quad2 -+modules-names += tst-quadmod1 tst-quadmod2 -+ -+$(objpfx)tst-quad1: $(objpfx)tst-quadmod1.so -+$(objpfx)tst-quad2: $(objpfx)tst-quadmod2.so -+ -+quad-pie-test += tst-quad1pie tst-quad2pie -+tests += $(quad-pie-test) -+tests-pie += $(quad-pie-test) -+ -+$(objpfx)tst-quad1pie: $(objpfx)tst-quadmod1pie.o -+$(objpfx)tst-quad2pie: $(objpfx)tst-quadmod2pie.o -+endif -+ -+ifeq ($(subdir),csu) -+gen-as-const-headers += tlsdesc.sym -+endif -diff -urN glibc-2.17-c758a686/sysdeps/x86_64/tst-audit10.c glibc-2.17-c758a686.mod-mpx/sysdeps/x86_64/tst-audit10.c +diff -urN glibc-2.17-c758a686/sysdeps/x86_64/tst-audit10.c glibc-2.17-c758a686/sysdeps/x86_64/tst-audit10.c --- glibc-2.17-c758a686/sysdeps/x86_64/tst-audit10.c 1969-12-31 19:00:00.000000000 -0500 -+++ glibc-2.17-c758a686.mod-mpx/sysdeps/x86_64/tst-audit10.c 2014-09-10 23:16:36.335167048 -0400 ++++ glibc-2.17-c758a686/sysdeps/x86_64/tst-audit10.c 2014-09-10 23:16:36.335167048 -0400 @@ -0,0 +1,70 @@ +/* Copyright (C) 2012-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. @@ -908,9 +636,9 @@ diff -urN glibc-2.17-c758a686/sysdeps/x86_64/tst-audit10.c glibc-2.17-c758a686.m + return 0; +} +#endif -diff -urN glibc-2.17-c758a686/sysdeps/x86_64/tst-auditmod10a.c glibc-2.17-c758a686.mod-mpx/sysdeps/x86_64/tst-auditmod10a.c +diff -urN glibc-2.17-c758a686/sysdeps/x86_64/tst-auditmod10a.c glibc-2.17-c758a686/sysdeps/x86_64/tst-auditmod10a.c --- glibc-2.17-c758a686/sysdeps/x86_64/tst-auditmod10a.c 1969-12-31 19:00:00.000000000 -0500 -+++ glibc-2.17-c758a686.mod-mpx/sysdeps/x86_64/tst-auditmod10a.c 2014-09-10 23:16:36.335167048 -0400 ++++ glibc-2.17-c758a686/sysdeps/x86_64/tst-auditmod10a.c 2014-09-10 23:16:36.335167048 -0400 @@ -0,0 +1,65 @@ +/* Copyright (C) 2012-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. @@ -977,9 +705,9 @@ diff -urN glibc-2.17-c758a686/sysdeps/x86_64/tst-auditmod10a.c glibc-2.17-c758a6 + return _mm512_setzero_si512 (); +} +#endif -diff -urN glibc-2.17-c758a686/sysdeps/x86_64/tst-auditmod10b.c glibc-2.17-c758a686.mod-mpx/sysdeps/x86_64/tst-auditmod10b.c +diff -urN glibc-2.17-c758a686/sysdeps/x86_64/tst-auditmod10b.c glibc-2.17-c758a686/sysdeps/x86_64/tst-auditmod10b.c --- glibc-2.17-c758a686/sysdeps/x86_64/tst-auditmod10b.c 1969-12-31 19:00:00.000000000 -0500 -+++ glibc-2.17-c758a686.mod-mpx/sysdeps/x86_64/tst-auditmod10b.c 2014-09-10 23:16:36.336167046 -0400 ++++ glibc-2.17-c758a686/sysdeps/x86_64/tst-auditmod10b.c 2014-09-10 23:16:36.336167046 -0400 @@ -0,0 +1,219 @@ +/* Copyright (C) 2012-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. @@ -1200,9 +928,9 @@ diff -urN glibc-2.17-c758a686/sysdeps/x86_64/tst-auditmod10b.c glibc-2.17-c758a6 + + return 0; +} -diff -urN glibc-2.17-c758a686/sysdeps/x86/Makefile glibc-2.17-c758a686.mod/sysdeps/x86/Makefile +diff -urN glibc-2.17-c758a686/sysdeps/x86/Makefile glibc-2.17-c758a686/sysdeps/x86/Makefile --- glibc-2.17-c758a686/sysdeps/x86/Makefile 2012-12-24 22:02:13.000000000 -0500 -+++ glibc-2.17-c758a686.mod/sysdeps/x86/Makefile 2014-09-11 16:06:03.121319867 -0400 ++++ glibc-2.17-c758a686/sysdeps/x86/Makefile 2014-09-11 16:06:03.121319867 -0400 @@ -2,8 +2,8 @@ CFLAGS-.os += $(if $(filter $(@F),$(patsubst %,%.os,$(all-rtld-routines))),\ -mno-sse -mno-mmx) @@ -1214,9 +942,9 @@ diff -urN glibc-2.17-c758a686/sysdeps/x86/Makefile glibc-2.17-c758a686.mod/sysde @echo "Checking ld.so for SSE register use. This will take a few seconds..." $(SHELL) $< $(objpfx) '$(NM)' '$(OBJDUMP)' '$(READELF)' > $@ endif -diff -urN glibc-2.17-c758a686/sysdeps/x86/tst-xmmymm.sh glibc-2.17-c758a686.mod/sysdeps/x86/tst-xmmymm.sh +diff -urN glibc-2.17-c758a686/sysdeps/x86/tst-xmmymm.sh glibc-2.17-c758a686/sysdeps/x86/tst-xmmymm.sh --- glibc-2.17-c758a686/sysdeps/x86/tst-xmmymm.sh 2012-12-24 22:02:13.000000000 -0500 -+++ glibc-2.17-c758a686.mod/sysdeps/x86/tst-xmmymm.sh 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/x86/tst-xmmymm.sh 1969-12-31 19:00:00.000000000 -0500 @@ -1,103 +0,0 @@ -#! /bin/bash -# Make sure no code in ld.so uses xmm/ymm registers on x86-64. @@ -1321,9 +1049,9 @@ diff -urN glibc-2.17-c758a686/sysdeps/x86/tst-xmmymm.sh glibc-2.17-c758a686.mod/ - -rm "$tmp" -exit $result -diff -urN glibc-2.17-c758a686/sysdeps/x86/tst-xmmymmzmm.sh glibc-2.17-c758a686.mod/sysdeps/x86/tst-xmmymmzmm.sh +diff -urN glibc-2.17-c758a686/sysdeps/x86/tst-xmmymmzmm.sh glibc-2.17-c758a686/sysdeps/x86/tst-xmmymmzmm.sh --- glibc-2.17-c758a686/sysdeps/x86/tst-xmmymmzmm.sh 1969-12-31 19:00:00.000000000 -0500 -+++ glibc-2.17-c758a686.mod/sysdeps/x86/tst-xmmymmzmm.sh 2014-09-11 16:05:10.073426623 -0400 ++++ glibc-2.17-c758a686/sysdeps/x86/tst-xmmymmzmm.sh 2014-09-11 16:05:10.073426623 -0400 @@ -0,0 +1,103 @@ +#! /bin/bash +# Make sure no code in ld.so uses xmm/ymm/zmm registers on x86-64. diff --git a/SOURCES/glibc-rh1140474.patch b/SOURCES/glibc-rh1140474.patch index 11815b4..c3ce5cd 100644 --- a/SOURCES/glibc-rh1140474.patch +++ b/SOURCES/glibc-rh1140474.patch @@ -7,10 +7,10 @@ Date: Wed Sep 3 19:45:43 2014 +0200 These changes are based on the fix for BZ #14134 in commit 6e230d11837f3ae7b375ea69d7905f0d18eb79e5. -diff --git a/iconvdata/Makefile b/iconvdata/Makefile +diff --git glibc-2.17-c758a686/iconvdata/Makefile glibc-2.17-c758a686/iconvdata/Makefile index 0a410a1..b6327d6 100644 ---- a/iconvdata/Makefile -+++ b/iconvdata/Makefile +--- glibc-2.17-c758a686/iconvdata/Makefile ++++ glibc-2.17-c758a686/iconvdata/Makefile @@ -297,6 +297,7 @@ $(objpfx)tst-iconv7.out: $(objpfx)gconv-modules \ $(objpfx)iconv-test.out: run-iconv-test.sh $(objpfx)gconv-modules \ $(addprefix $(objpfx),$(modules.so)) \ @@ -19,10 +19,10 @@ index 0a410a1..b6327d6 100644 $(SHELL) $< $(common-objdir) '$(test-wrapper)' > $@ $(objpfx)tst-tables.out: tst-tables.sh $(objpfx)gconv-modules \ -diff --git a/iconvdata/ibm1364.c b/iconvdata/ibm1364.c +diff --git glibc-2.17-c758a686/iconvdata/ibm1364.c glibc-2.17-c758a686/iconvdata/ibm1364.c index 0b5484f..cf80993 100644 ---- a/iconvdata/ibm1364.c -+++ b/iconvdata/ibm1364.c +--- glibc-2.17-c758a686/iconvdata/ibm1364.c ++++ glibc-2.17-c758a686/iconvdata/ibm1364.c @@ -221,7 +221,8 @@ enum ++rp2; \ \ @@ -33,10 +33,10 @@ index 0b5484f..cf80993 100644 || (res = DB_TO_UCS4[ch + rp2->idx], \ __builtin_expect (res, L'\1') == L'\0' && ch != '\0')) \ { \ -diff --git a/iconvdata/ibm932.c b/iconvdata/ibm932.c +diff --git glibc-2.17-c758a686/iconvdata/ibm932.c glibc-2.17-c758a686/iconvdata/ibm932.c index f5dca59..aa69d65 100644 ---- a/iconvdata/ibm932.c -+++ b/iconvdata/ibm932.c +--- glibc-2.17-c758a686/iconvdata/ibm932.c ++++ glibc-2.17-c758a686/iconvdata/ibm932.c @@ -74,11 +74,12 @@ } \ \ @@ -52,10 +52,10 @@ index f5dca59..aa69d65 100644 || (res = __ibm932db_to_ucs4[ch + rp2->idx], \ __builtin_expect (res, '\1') == 0 && ch !=0)) \ { \ -diff --git a/iconvdata/ibm933.c b/iconvdata/ibm933.c +diff --git glibc-2.17-c758a686/iconvdata/ibm933.c glibc-2.17-c758a686/iconvdata/ibm933.c index f46dfb5..461fb5e 100644 ---- a/iconvdata/ibm933.c -+++ b/iconvdata/ibm933.c +--- glibc-2.17-c758a686/iconvdata/ibm933.c ++++ glibc-2.17-c758a686/iconvdata/ibm933.c @@ -162,7 +162,7 @@ enum while (ch > rp2->end) \ ++rp2; \ @@ -65,10 +65,10 @@ index f46dfb5..461fb5e 100644 || __builtin_expect (ch < rp2->start, 0) \ || (res = __ibm933db_to_ucs4[ch + rp2->idx], \ __builtin_expect (res, L'\1') == L'\0' && ch != '\0')) \ -diff --git a/iconvdata/ibm935.c b/iconvdata/ibm935.c +diff --git glibc-2.17-c758a686/iconvdata/ibm935.c glibc-2.17-c758a686/iconvdata/ibm935.c index a8e4e6c..132d816 100644 ---- a/iconvdata/ibm935.c -+++ b/iconvdata/ibm935.c +--- glibc-2.17-c758a686/iconvdata/ibm935.c ++++ glibc-2.17-c758a686/iconvdata/ibm935.c @@ -162,7 +162,7 @@ enum while (ch > rp2->end) \ ++rp2; \ @@ -78,10 +78,10 @@ index a8e4e6c..132d816 100644 || __builtin_expect (ch < rp2->start, 0) \ || (res = __ibm935db_to_ucs4[ch + rp2->idx], \ __builtin_expect (res, L'\1') == L'\0' && ch != '\0')) \ -diff --git a/iconvdata/ibm937.c b/iconvdata/ibm937.c +diff --git glibc-2.17-c758a686/iconvdata/ibm937.c glibc-2.17-c758a686/iconvdata/ibm937.c index 239be61..69b154d 100644 ---- a/iconvdata/ibm937.c -+++ b/iconvdata/ibm937.c +--- glibc-2.17-c758a686/iconvdata/ibm937.c ++++ glibc-2.17-c758a686/iconvdata/ibm937.c @@ -162,7 +162,7 @@ enum while (ch > rp2->end) \ ++rp2; \ @@ -91,10 +91,10 @@ index 239be61..69b154d 100644 || __builtin_expect (ch < rp2->start, 0) \ || (res = __ibm937db_to_ucs4[ch + rp2->idx], \ __builtin_expect (res, L'\1') == L'\0' && ch != '\0')) \ -diff --git a/iconvdata/ibm939.c b/iconvdata/ibm939.c +diff --git glibc-2.17-c758a686/iconvdata/ibm939.c glibc-2.17-c758a686/iconvdata/ibm939.c index 5d0db36..9936e2c 100644 ---- a/iconvdata/ibm939.c -+++ b/iconvdata/ibm939.c +--- glibc-2.17-c758a686/iconvdata/ibm939.c ++++ glibc-2.17-c758a686/iconvdata/ibm939.c @@ -162,7 +162,7 @@ enum while (ch > rp2->end) \ ++rp2; \ @@ -104,10 +104,10 @@ index 5d0db36..9936e2c 100644 || __builtin_expect (ch < rp2->start, 0) \ || (res = __ibm939db_to_ucs4[ch + rp2->idx], \ __builtin_expect (res, L'\1') == L'\0' && ch != '\0')) \ -diff --git a/iconvdata/ibm943.c b/iconvdata/ibm943.c +diff --git glibc-2.17-c758a686/iconvdata/ibm943.c glibc-2.17-c758a686/iconvdata/ibm943.c index be0c14f..c5d5742 100644 ---- a/iconvdata/ibm943.c -+++ b/iconvdata/ibm943.c +--- glibc-2.17-c758a686/iconvdata/ibm943.c ++++ glibc-2.17-c758a686/iconvdata/ibm943.c @@ -75,11 +75,12 @@ } \ \ @@ -123,10 +123,10 @@ index be0c14f..c5d5742 100644 || (res = __ibm943db_to_ucs4[ch + rp2->idx], \ __builtin_expect (res, '\1') == 0 && ch !=0)) \ { \ -diff --git a/iconvdata/run-iconv-test.sh b/iconvdata/run-iconv-test.sh +diff --git glibc-2.17-c758a686/iconvdata/run-iconv-test.sh glibc-2.17-c758a686/iconvdata/run-iconv-test.sh index c98c929..5dfb69f 100755 ---- a/iconvdata/run-iconv-test.sh -+++ b/iconvdata/run-iconv-test.sh +--- glibc-2.17-c758a686/iconvdata/run-iconv-test.sh ++++ glibc-2.17-c758a686/iconvdata/run-iconv-test.sh @@ -184,6 +184,24 @@ while read utf8 from filename; do done < TESTS2 diff --git a/SOURCES/glibc-rh1144133.patch b/SOURCES/glibc-rh1144133.patch new file mode 100644 index 0000000..abefdf7 --- /dev/null +++ b/SOURCES/glibc-rh1144133.patch @@ -0,0 +1,55 @@ +commit 62058ce612ed3459501b4c4332e268edfe977f59 +Author: Carlos O'Donell +Date: Mon Sep 29 13:14:21 2014 -0400 + + Correctly size profiling reloc table (bug 17411) + + During auditing or profiling modes the dynamic loader + builds a cache of the relocated PLT entries in order + to reuse them when called again through the same PLT + entry. This way the PLT entry is never completed and + the call into the resolver always results in profiling + or auditing code running. + + The problem is that the PLT relocation cache size + is not computed correctly. The size of the cache + should be "Size of a relocation result structure" + x "Number of PLT-related relocations". Instead the + code erroneously computes "Size of a relocation + result" x "Number of bytes worth of PLT-related + relocations". I can only assume this was a mistake + in the understanding of the value of DT_PLTRELSZ + which is the number of bytes of PLT-related relocs. + We do have a DT_RELACOUNT entry, which is a count + for dynamic relative relocs, but we have no + DT_PLTRELCOUNT and thus we need to compute it. + + This patch corrects the computation of the size of the + relocation table used by the glibc profiling code. + + For more details see: + https://sourceware.org/ml/libc-alpha/2014-09/msg00513.html + + [BZ #17411] + * elf/dl-reloc.c (_dl_relocate_object): Allocate correct amount for + l_reloc_result. + +diff --git glibc-2.17-c758a686/elf/dl-reloc.c glibc-2.17-c758a686/elf/dl-reloc.c +index d2c6dac..97a7119 100644 +--- glibc-2.17-c758a686/elf/dl-reloc.c ++++ glibc-2.17-c758a686/elf/dl-reloc.c +@@ -279,8 +279,12 @@ _dl_relocate_object (struct link_map *l, struct r_scope_elem *scope[], + l->l_name); + } + +- l->l_reloc_result = calloc (sizeof (l->l_reloc_result[0]), +- l->l_info[DT_PLTRELSZ]->d_un.d_val); ++ size_t sizeofrel = l->l_info[DT_PLTREL]->d_un.d_val == DT_RELA ++ ? sizeof (ElfW(Rela)) ++ : sizeof (ElfW(Rel)); ++ size_t relcount = l->l_info[DT_PLTRELSZ]->d_un.d_val / sizeofrel; ++ l->l_reloc_result = calloc (sizeof (l->l_reloc_result[0]), relcount); ++ + if (l->l_reloc_result == NULL) + { + errstring = N_("\ diff --git a/SOURCES/glibc-rh1150282.patch b/SOURCES/glibc-rh1150282.patch new file mode 100644 index 0000000..4970cf8 --- /dev/null +++ b/SOURCES/glibc-rh1150282.patch @@ -0,0 +1,499 @@ +--- glibc-2.17-c758a686/sysdeps/x86_64/multiarch/ifunc-impl-list.c 2012-12-24 20:02:13.000000000 -0700 ++++ glibc-2.17-c758a686/sysdeps/x86_64/multiarch/ifunc-impl-list.c 2015-04-20 09:04:11.826569951 -0600 +@@ -212,6 +212,8 @@ + + /* Support sysdeps/x86_64/multiarch/strstr-c.c. */ + IFUNC_IMPL (i, name, strstr, ++ IFUNC_IMPL_ADD (array, i, strstr, use_unaligned_strstr (), ++ __strstr_sse2_unaligned) + IFUNC_IMPL_ADD (array, i, strstr, HAS_SSE4_2, __strstr_sse42) + IFUNC_IMPL_ADD (array, i, strstr, 1, __strstr_sse2)) + +--- glibc-2.17-c758a686/sysdeps/x86_64/multiarch/init-arch.h 2012-12-24 20:02:13.000000000 -0700 ++++ glibc-2.17-c758a686/sysdeps/x86_64/multiarch/init-arch.h 2015-04-20 12:15:17.984742925 -0600 +@@ -63,6 +63,34 @@ + #else /* __ASSEMBLER__ */ + + # include ++# include ++# include ++# include ++ ++/* Ugly hack to make it possible to select a strstr and strcasestr ++ implementation that avoids using the stack for 16-byte aligned ++ SSE temporaries. Doing so makes it possible to call the functions ++ with a stack that's not 16-byte aligned as can happen, for example, ++ as a result of compiling the functions' callers with the GCC ++ -mpreferred-stack-boubdary=2 or =3 option, or with the ICC ++ -falign-stack=assume-4-byte option. See rhbz 1150282 for details. ++ ++ The ifunc selector uses the unaligned version by default if this ++ file exists and is accessible. */ ++# define ENABLE_STRSTR_UNALIGNED_PATHNAME \ ++ "/etc/sysconfig/64bit_strstr_via_64bit_strstr_sse2_unaligned" ++ ++static bool __attribute__ ((unused)) ++use_unaligned_strstr (void) ++{ ++ struct stat unaligned_strstr_etc_sysconfig_file; ++ ++ /* TLS may not have been set up yet, so avoid using stat since it tries to ++ set errno. */ ++ return INTERNAL_SYSCALL (stat, , 2, ++ ENABLE_STRSTR_UNALIGNED_PATHNAME, ++ &unaligned_strstr_etc_sysconfig_file) == 0; ++} + + enum + { +--- glibc-2.17-c758a686/sysdeps/x86_64/multiarch/Makefile 2012-12-24 20:02:13.000000000 -0700 ++++ glibc-2.17-c758a686/sysdeps/x86_64/multiarch/Makefile 2015-04-20 09:04:11.854569626 -0600 +@@ -17,7 +17,7 @@ + strcat-sse2-unaligned strncat-sse2-unaligned \ + strcat-ssse3 strncat-ssse3 strlen-sse2-pminub \ + strnlen-sse2-no-bsf strrchr-sse2-no-bsf strchr-sse2-no-bsf \ +- memcmp-ssse3 ++ memcmp-ssse3 strstr-sse2-unaligned + ifeq (yes,$(config-cflags-sse4)) + sysdep_routines += strcspn-c strpbrk-c strspn-c strstr-c strcasestr-c varshift + CFLAGS-varshift.c += -msse4 +--- glibc-2.17-c758a686/sysdeps/x86_64/multiarch/strcasestr-c.c 2012-12-24 20:02:13.000000000 -0700 ++++ glibc-2.17-c758a686/sysdeps/x86_64/multiarch/strcasestr-c.c 2015-04-20 09:04:11.861569545 -0600 +@@ -12,7 +12,8 @@ + + #if 1 + libc_ifunc (__strcasestr, +- HAS_SSE4_2 ? __strcasestr_sse42 : __strcasestr_sse2); ++ HAS_SSE4_2 && !use_unaligned_strstr () ? __strcasestr_sse42 : ++ __strcasestr_sse2); + #else + libc_ifunc (__strcasestr, + 0 ? __strcasestr_sse42 : __strcasestr_sse2); +--- glibc-2.17-c758a686/sysdeps/x86_64/multiarch/strstr-c.c 2012-12-24 20:02:13.000000000 -0700 ++++ glibc-2.17-c758a686/sysdeps/x86_64/multiarch/strstr-c.c 2015-04-20 09:04:11.866569487 -0600 +@@ -34,6 +34,7 @@ + #include "string/strstr.c" + + extern __typeof (__redirect_strstr) __strstr_sse42 attribute_hidden; ++extern __typeof (__redirect_strstr) __strstr_sse2_unaligned attribute_hidden; + extern __typeof (__redirect_strstr) __strstr_sse2 attribute_hidden; + + #include "init-arch.h" +@@ -41,7 +42,9 @@ + /* Avoid DWARF definition DIE on ifunc symbol so that GDB can handle + ifunc symbol properly. */ + extern __typeof (__redirect_strstr) __libc_strstr; +-libc_ifunc (__libc_strstr, HAS_SSE4_2 ? __strstr_sse42 : __strstr_sse2) ++libc_ifunc (__libc_strstr, HAS_SSE4_2 ? (use_unaligned_strstr () ? ++ __strstr_sse2_unaligned : ++ __strstr_sse42) : __strstr_sse2) + + #undef strstr + strong_alias (__libc_strstr, strstr) +--- glibc-2.17-c758a686/sysdeps/x86_64/multiarch/strstr-sse2-unaligned.S 1969-12-31 17:00:00.000000000 -0700 ++++ glibc-2.17-c758a686/sysdeps/x86_64/multiarch/strstr-sse2-unaligned.S 2015-04-20 09:04:11.866569487 -0600 +@@ -0,0 +1,374 @@ ++/* strstr with unaligned loads ++ Copyright (C) 2009-2015 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 ++ . */ ++ ++#include ++ ++ENTRY(__strstr_sse2_unaligned) ++ movzbl (%rsi), %eax ++ testb %al, %al ++ je L(empty) ++ movzbl 1(%rsi), %edx ++ testb %dl, %dl ++ je L(strchr) ++ movd %eax, %xmm1 ++ movd %edx, %xmm2 ++ movq %rdi, %rax ++ andl $4095, %eax ++ punpcklbw %xmm1, %xmm1 ++ cmpq $4031, %rax ++ punpcklbw %xmm2, %xmm2 ++ punpcklwd %xmm1, %xmm1 ++ punpcklwd %xmm2, %xmm2 ++ pshufd $0, %xmm1, %xmm1 ++ pshufd $0, %xmm2, %xmm2 ++ ja L(cross_page) ++ movdqu (%rdi), %xmm3 ++ pxor %xmm5, %xmm5 ++ movdqu 1(%rdi), %xmm4 ++ movdqa %xmm3, %xmm6 ++ pcmpeqb %xmm1, %xmm3 ++ pcmpeqb %xmm2, %xmm4 ++ movdqu 16(%rdi), %xmm0 ++ pcmpeqb %xmm5, %xmm6 ++ pminub %xmm4, %xmm3 ++ movdqa %xmm3, %xmm4 ++ movdqu 17(%rdi), %xmm3 ++ pcmpeqb %xmm0, %xmm5 ++ pcmpeqb %xmm2, %xmm3 ++ por %xmm6, %xmm4 ++ pcmpeqb %xmm1, %xmm0 ++ pminub %xmm3, %xmm0 ++ por %xmm5, %xmm0 ++ pmovmskb %xmm4, %r8d ++ pmovmskb %xmm0, %eax ++ salq $16, %rax ++ orq %rax, %r8 ++ je L(next_32_bytes) ++L(next_pair_index): ++ bsf %r8, %rax ++ addq %rdi, %rax ++ cmpb $0, (%rax) ++ je L(zero1) ++ movzbl 2(%rsi), %edx ++ testb %dl, %dl ++ je L(found1) ++ cmpb 2(%rax), %dl ++ jne L(next_pair) ++ xorl %edx, %edx ++ jmp L(pair_loop_start) ++ ++ .p2align 4 ++L(strchr): ++ movzbl %al, %esi ++ jmp __strchr_sse2 ++ ++ .p2align 4 ++L(pair_loop): ++ addq $1, %rdx ++ cmpb 2(%rax,%rdx), %cl ++ jne L(next_pair) ++L(pair_loop_start): ++ movzbl 3(%rsi,%rdx), %ecx ++ testb %cl, %cl ++ jne L(pair_loop) ++L(found1): ++ ret ++L(zero1): ++ xorl %eax, %eax ++ ret ++ ++ .p2align 4 ++L(next_pair): ++ leaq -1(%r8), %rax ++ andq %rax, %r8 ++ jne L(next_pair_index) ++ ++ .p2align 4 ++L(next_32_bytes): ++ movdqu 32(%rdi), %xmm3 ++ pxor %xmm5, %xmm5 ++ movdqu 33(%rdi), %xmm4 ++ movdqa %xmm3, %xmm6 ++ pcmpeqb %xmm1, %xmm3 ++ pcmpeqb %xmm2, %xmm4 ++ movdqu 48(%rdi), %xmm0 ++ pcmpeqb %xmm5, %xmm6 ++ pminub %xmm4, %xmm3 ++ movdqa %xmm3, %xmm4 ++ movdqu 49(%rdi), %xmm3 ++ pcmpeqb %xmm0, %xmm5 ++ pcmpeqb %xmm2, %xmm3 ++ por %xmm6, %xmm4 ++ pcmpeqb %xmm1, %xmm0 ++ pminub %xmm3, %xmm0 ++ por %xmm5, %xmm0 ++ pmovmskb %xmm4, %eax ++ salq $32, %rax ++ pmovmskb %xmm0, %r8d ++ salq $48, %r8 ++ orq %rax, %r8 ++ je L(loop_header) ++L(next_pair2_index): ++ bsfq %r8, %rax ++ addq %rdi, %rax ++ cmpb $0, (%rax) ++ je L(zero2) ++ movzbl 2(%rsi), %edx ++ testb %dl, %dl ++ je L(found2) ++ cmpb 2(%rax), %dl ++ jne L(next_pair2) ++ xorl %edx, %edx ++ jmp L(pair_loop2_start) ++ ++ .p2align 4 ++L(pair_loop2): ++ addq $1, %rdx ++ cmpb 2(%rax,%rdx), %cl ++ jne L(next_pair2) ++L(pair_loop2_start): ++ movzbl 3(%rsi,%rdx), %ecx ++ testb %cl, %cl ++ jne L(pair_loop2) ++L(found2): ++ ret ++ L(zero2): ++ xorl %eax, %eax ++ ret ++L(empty): ++ mov %rdi, %rax ++ ret ++ ++ .p2align 4 ++L(next_pair2): ++ leaq -1(%r8), %rax ++ andq %rax, %r8 ++ jne L(next_pair2_index) ++L(loop_header): ++ movq $-512, %r11 ++ movq %rdi, %r9 ++ ++ pxor %xmm7, %xmm7 ++ andq $-64, %rdi ++ ++ .p2align 4 ++L(loop): ++ movdqa 64(%rdi), %xmm3 ++ movdqu 63(%rdi), %xmm6 ++ movdqa %xmm3, %xmm0 ++ pxor %xmm2, %xmm3 ++ pxor %xmm1, %xmm6 ++ movdqa 80(%rdi), %xmm10 ++ por %xmm3, %xmm6 ++ pminub %xmm10, %xmm0 ++ movdqu 79(%rdi), %xmm3 ++ pxor %xmm2, %xmm10 ++ pxor %xmm1, %xmm3 ++ movdqa 96(%rdi), %xmm9 ++ por %xmm10, %xmm3 ++ pminub %xmm9, %xmm0 ++ pxor %xmm2, %xmm9 ++ movdqa 112(%rdi), %xmm8 ++ addq $64, %rdi ++ pminub %xmm6, %xmm3 ++ movdqu 31(%rdi), %xmm4 ++ pminub %xmm8, %xmm0 ++ pxor %xmm2, %xmm8 ++ pxor %xmm1, %xmm4 ++ por %xmm9, %xmm4 ++ pminub %xmm4, %xmm3 ++ movdqu 47(%rdi), %xmm5 ++ pxor %xmm1, %xmm5 ++ por %xmm8, %xmm5 ++ pminub %xmm5, %xmm3 ++ pminub %xmm3, %xmm0 ++ pcmpeqb %xmm7, %xmm0 ++ pmovmskb %xmm0, %eax ++ testl %eax, %eax ++ je L(loop) ++ pminub (%rdi), %xmm6 ++ pminub 32(%rdi),%xmm4 ++ pminub 48(%rdi),%xmm5 ++ pcmpeqb %xmm7, %xmm6 ++ pcmpeqb %xmm7, %xmm5 ++ pmovmskb %xmm6, %edx ++ movdqa 16(%rdi), %xmm8 ++ pcmpeqb %xmm7, %xmm4 ++ movdqu 15(%rdi), %xmm0 ++ pmovmskb %xmm5, %r8d ++ movdqa %xmm8, %xmm3 ++ pmovmskb %xmm4, %ecx ++ pcmpeqb %xmm1,%xmm0 ++ pcmpeqb %xmm2,%xmm3 ++ salq $32, %rcx ++ pcmpeqb %xmm7,%xmm8 ++ salq $48, %r8 ++ pminub %xmm0,%xmm3 ++ orq %rcx, %rdx ++ por %xmm3,%xmm8 ++ orq %rdx, %r8 ++ pmovmskb %xmm8, %eax ++ salq $16, %rax ++ orq %rax, %r8 ++ je L(loop) ++L(next_pair_index3): ++ bsfq %r8, %rcx ++ addq %rdi, %rcx ++ cmpb $0, (%rcx) ++ je L(zero) ++ xorl %eax, %eax ++ movzbl 2(%rsi), %edx ++ testb %dl, %dl ++ je L(success3) ++ cmpb 1(%rcx), %dl ++ jne L(next_pair3) ++ jmp L(pair_loop_start3) ++ ++ .p2align 4 ++L(pair_loop3): ++ addq $1, %rax ++ cmpb 1(%rcx,%rax), %dl ++ jne L(next_pair3) ++L(pair_loop_start3): ++ movzbl 3(%rsi,%rax), %edx ++ testb %dl, %dl ++ jne L(pair_loop3) ++L(success3): ++ lea -1(%rcx), %rax ++ ret ++ ++ .p2align 4 ++L(next_pair3): ++ addq %rax, %r11 ++ movq %rdi, %rax ++ subq %r9, %rax ++ cmpq %r11, %rax ++ jl L(switch_strstr) ++ leaq -1(%r8), %rax ++ andq %rax, %r8 ++ jne L(next_pair_index3) ++ jmp L(loop) ++ ++ .p2align 4 ++L(switch_strstr): ++ movq %rdi, %rdi ++ jmp __strstr_sse2 ++ ++ .p2align 4 ++L(cross_page): ++ ++ movq %rdi, %rax ++ pxor %xmm0, %xmm0 ++ andq $-64, %rax ++ movdqa (%rax), %xmm3 ++ movdqu -1(%rax), %xmm4 ++ movdqa %xmm3, %xmm8 ++ movdqa 16(%rax), %xmm5 ++ pcmpeqb %xmm1, %xmm4 ++ pcmpeqb %xmm0, %xmm8 ++ pcmpeqb %xmm2, %xmm3 ++ movdqa %xmm5, %xmm7 ++ pminub %xmm4, %xmm3 ++ movdqu 15(%rax), %xmm4 ++ pcmpeqb %xmm0, %xmm7 ++ por %xmm3, %xmm8 ++ movdqa %xmm5, %xmm3 ++ movdqa 32(%rax), %xmm5 ++ pcmpeqb %xmm1, %xmm4 ++ pcmpeqb %xmm2, %xmm3 ++ movdqa %xmm5, %xmm6 ++ pmovmskb %xmm8, %ecx ++ pminub %xmm4, %xmm3 ++ movdqu 31(%rax), %xmm4 ++ por %xmm3, %xmm7 ++ movdqa %xmm5, %xmm3 ++ pcmpeqb %xmm0, %xmm6 ++ movdqa 48(%rax), %xmm5 ++ pcmpeqb %xmm1, %xmm4 ++ pmovmskb %xmm7, %r8d ++ pcmpeqb %xmm2, %xmm3 ++ pcmpeqb %xmm5, %xmm0 ++ pminub %xmm4, %xmm3 ++ movdqu 47(%rax), %xmm4 ++ por %xmm3, %xmm6 ++ movdqa %xmm5, %xmm3 ++ salq $16, %r8 ++ pcmpeqb %xmm1, %xmm4 ++ pcmpeqb %xmm2, %xmm3 ++ pmovmskb %xmm6, %r10d ++ pminub %xmm4, %xmm3 ++ por %xmm3, %xmm0 ++ salq $32, %r10 ++ orq %r10, %r8 ++ orq %rcx, %r8 ++ movl %edi, %ecx ++ pmovmskb %xmm0, %edx ++ subl %eax, %ecx ++ salq $48, %rdx ++ orq %rdx, %r8 ++ shrq %cl, %r8 ++ je L(loop_header) ++L(next_pair_index4): ++ bsfq %r8, %rax ++ addq %rdi, %rax ++ cmpb $0, (%rax) ++ je L(zero) ++ ++ cmpq %rax,%rdi ++ je L(next_pair4) ++ ++ movzbl 2(%rsi), %edx ++ testb %dl, %dl ++ je L(found3) ++ cmpb 1(%rax), %dl ++ jne L(next_pair4) ++ xorl %edx, %edx ++ jmp L(pair_loop_start4) ++ ++ .p2align 4 ++L(pair_loop4): ++ addq $1, %rdx ++ cmpb 1(%rax,%rdx), %cl ++ jne L(next_pair4) ++L(pair_loop_start4): ++ movzbl 3(%rsi,%rdx), %ecx ++ testb %cl, %cl ++ jne L(pair_loop4) ++L(found3): ++ subq $1, %rax ++ ret ++ ++ .p2align 4 ++L(next_pair4): ++ leaq -1(%r8), %rax ++ andq %rax, %r8 ++ jne L(next_pair_index4) ++ jmp L(loop_header) ++ ++ .p2align 4 ++L(found): ++ rep ++ ret ++ ++ .p2align 4 ++L(zero): ++ xorl %eax, %eax ++ ret ++ ++ ++END(__strstr_sse2_unaligned) +--- glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/strstr-c.c 2012-12-24 20:02:13.000000000 -0700 ++++ glibc-2.17-c758a686/sysdeps/i386/i686/multiarch/strstr-c.c 2015-04-20 09:04:11.876569371 -0600 +@@ -1,8 +1,6 @@ + /* Multiple versions of strstr + All versions must be listed in ifunc-impl-list.c. */ + +-#include "init-arch.h" +- + #define STRSTR __strstr_ia32 + #if defined SHARED && defined DO_VERSIONING && !defined NO_HIDDEN + #undef libc_hidden_builtin_def +@@ -17,13 +15,17 @@ + + #include "string/strstr.c" + ++#include "init-arch.h" ++ + extern __typeof (__redirect_strstr) __strstr_sse42 attribute_hidden; + extern __typeof (__redirect_strstr) __strstr_ia32 attribute_hidden; + + /* Avoid DWARF definition DIE on ifunc symbol so that GDB can handle + ifunc symbol properly. */ + extern __typeof (__redirect_strstr) __libc_strstr; +-libc_ifunc (__libc_strstr, HAS_SSE4_2 ? __strstr_sse42 : __strstr_ia32) ++libc_ifunc (__libc_strstr, ++ HAS_SSE4_2 && !use_unaligned_strstr () ? ++ __strstr_sse42 : __strstr_ia32) + + #undef strstr + strong_alias (__libc_strstr, strstr) diff --git a/SOURCES/glibc-rh1156331.patch b/SOURCES/glibc-rh1156331.patch index 4ea2762..bf4833a 100644 --- a/SOURCES/glibc-rh1156331.patch +++ b/SOURCES/glibc-rh1156331.patch @@ -28,10 +28,10 @@ Date: Tue Nov 25 21:15:16 2014 +0530 test case. (do_one_test): Call it. -diff --git a/libio/fileops.c b/libio/fileops.c +diff --git glibc-2.17-c758a686/libio/fileops.c glibc-2.17-c758a686/libio/fileops.c index e0d7b76..1fc5719 100644 ---- a/libio/fileops.c -+++ b/libio/fileops.c +--- glibc-2.17-c758a686/libio/fileops.c ++++ glibc-2.17-c758a686/libio/fileops.c @@ -943,15 +943,14 @@ do_ftell (_IO_FILE *fp) yet. */ if (fp->_IO_buf_base != NULL) @@ -59,10 +59,10 @@ index e0d7b76..1fc5719 100644 offset -= fp->_IO_read_end - fp->_IO_read_ptr; /* We don't trust _IO_read_end to represent the current file offset when writing in append mode because the value would have to be shifted to -diff --git a/libio/tst-ftell-active-handler.c b/libio/tst-ftell-active-handler.c +diff --git glibc-2.17-c758a686/libio/tst-ftell-active-handler.c glibc-2.17-c758a686/libio/tst-ftell-active-handler.c index e9dc7b3..9f23c55 100644 ---- a/libio/tst-ftell-active-handler.c -+++ b/libio/tst-ftell-active-handler.c +--- glibc-2.17-c758a686/libio/tst-ftell-active-handler.c ++++ glibc-2.17-c758a686/libio/tst-ftell-active-handler.c @@ -88,6 +88,95 @@ static size_t file_len; typedef int (*fputs_func_t) (const void *data, FILE *fp); fputs_func_t fputs_func; @@ -167,10 +167,10 @@ index e9dc7b3..9f23c55 100644 return ret; } -diff --git a/libio/wfileops.c b/libio/wfileops.c +diff --git glibc-2.17-c758a686/libio/wfileops.c glibc-2.17-c758a686/libio/wfileops.c index 6a088b1..71281c1 100644 ---- a/libio/wfileops.c -+++ b/libio/wfileops.c +--- glibc-2.17-c758a686/libio/wfileops.c ++++ glibc-2.17-c758a686/libio/wfileops.c @@ -626,16 +626,15 @@ do_ftell_wide (_IO_FILE *fp) const wchar_t *wide_read_base; const wchar_t *wide_read_ptr; diff --git a/SOURCES/glibc-rh1159169.patch b/SOURCES/glibc-rh1159169.patch new file mode 100644 index 0000000..7c1453d --- /dev/null +++ b/SOURCES/glibc-rh1159169.patch @@ -0,0 +1,42 @@ +commit ed6b0fe710b631b99ed9fc28cefedfe69a16dc55 +Author: Brad Hubbard +Date: Wed Mar 18 14:51:26 2015 +0530 + + Use calloc to allocate xports (BZ #17542) + + If xports is NULL in xprt_register we malloc it but if sock > + _rpc_dtablesize() that memory does not get initialised and may in theory + contain any value. Later we make a conditional jump in svc_getreq_common + based on the uninitialised memory and this caused a general protection + fault in rpc.statd on an older version of glibc but this code has not + changed since that version. + + Following is the valgrind warning. + + ==26802== Conditional jump or move depends on uninitialised value(s) + ==26802== at 0x5343A25: svc_getreq_common (in /lib64/libc-2.5.so) + ==26802== by 0x534357B: svc_getreqset (in /lib64/libc-2.5.so) + ==26802== by 0x10DE1F: ??? (in /sbin/rpc.statd) + ==26802== by 0x10D0EF: main (in /sbin/rpc.statd) + ==26802== Uninitialised value was created by a heap allocation + ==26802== at 0x4C2210C: malloc (vg_replace_malloc.c:195) + ==26802== by 0x53438BE: xprt_register (in /lib64/libc-2.5.so) + ==26802== by 0x53450DF: svcudp_bufcreate (in /lib64/libc-2.5.so) + ==26802== by 0x10FE32: ??? (in /sbin/rpc.statd) + ==26802== by 0x10D13E: main (in /sbin/rpc.statd) + +diff --git glibc-2.17-c758a686/sunrpc/svc.c glibc-2.17-c758a686/sunrpc/svc.c +index 8c4e8a5..c6ccf10 100644 +--- glibc-2.17-c758a686/sunrpc/svc.c ++++ glibc-2.17-c758a686/sunrpc/svc.c +@@ -97,8 +97,8 @@ xprt_register (SVCXPRT *xprt) + + if (xports == NULL) + { +- xports = (SVCXPRT **) malloc (_rpc_dtablesize () * sizeof (SVCXPRT *)); +- if (xports == NULL) /* Don�t add handle */ ++ xports = (SVCXPRT **) calloc (_rpc_dtablesize (), sizeof (SVCXPRT *)); ++ if (xports == NULL) /* Don't add handle */ + return; + } + diff --git a/SOURCES/glibc-rh1161666.patch b/SOURCES/glibc-rh1161666.patch index fff468d..797e97c 100644 --- a/SOURCES/glibc-rh1161666.patch +++ b/SOURCES/glibc-rh1161666.patch @@ -1,7 +1,7 @@ -diff --git a/sysdeps/s390/s390-32/dl-machine.h b/sysdeps/s390/s390-32/dl-machine.h +diff --git glibc-2.17-c758a686/sysdeps/s390/s390-32/dl-machine.h glibc-2.17-c758a686/sysdeps/s390/s390-32/dl-machine.h index c56185c..79f8ef9 100644 ---- a/sysdeps/s390/s390-32/dl-machine.h -+++ b/sysdeps/s390/s390-32/dl-machine.h +--- glibc-2.17-c758a686/sysdeps/s390/s390-32/dl-machine.h ++++ glibc-2.17-c758a686/sysdeps/s390/s390-32/dl-machine.h @@ -166,18 +166,49 @@ _dl_start_user:\n\ # See if we were run as a command with the executable file\n\ # name as an extra leading argument.\n\ @@ -77,11 +77,11 @@ index c56185c..79f8ef9 100644 # Jump to the user's entry point (saved in %r8).\n\ br %r8\n\ .Llit:\n\ -diff --git a/sysdeps/s390/s390-32/dl-sysdep.h b/sysdeps/s390/s390-32/dl-sysdep.h +diff --git glibc-2.17-c758a686/sysdeps/s390/s390-32/dl-sysdep.h glibc-2.17-c758a686/sysdeps/s390/s390-32/dl-sysdep.h new file mode 100644 index 0000000..b992778 --- /dev/null -+++ b/sysdeps/s390/s390-32/dl-sysdep.h ++++ glibc-2.17-c758a686/sysdeps/s390/s390-32/dl-sysdep.h @@ -0,0 +1,23 @@ +/* System-specific settings for dynamic linker code. S/390 version. + Copyright (C) 2014 Free Software Foundation, Inc. diff --git a/SOURCES/glibc-rh1162847-p1.patch b/SOURCES/glibc-rh1162847-p1.patch index d4c740a..eab2afe 100644 --- a/SOURCES/glibc-rh1162847-p1.patch +++ b/SOURCES/glibc-rh1162847-p1.patch @@ -9,9 +9,9 @@ # Correct handling of unaligned relocs for little-endian. # * sysdeps/powerpc/powerpc64/dl-machine.h (elf_machine_rela): Likewise. # -diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/dl-machine.c glibc-2.17-c758a686.mod/sysdeps/powerpc/powerpc32/dl-machine.c +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/dl-machine.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/dl-machine.c --- glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/dl-machine.c 2012-12-24 22:02:13.000000000 -0500 -+++ glibc-2.17-c758a686.mod/sysdeps/powerpc/powerpc32/dl-machine.c 2014-11-11 18:51:36.140570654 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/dl-machine.c 2014-11-11 18:51:36.140570654 -0500 @@ -423,6 +423,12 @@ Elf32_Addr const finaladdr, int rinfo) @@ -47,9 +47,9 @@ diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/dl-machine.c glibc-2.17- break; case R_PPC_ADDR16_LO: -diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/dl-machine.h glibc-2.17-c758a686.mod/sysdeps/powerpc/powerpc64/dl-machine.h +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/dl-machine.h glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/dl-machine.h --- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/dl-machine.h 2012-12-24 22:02:13.000000000 -0500 -+++ glibc-2.17-c758a686.mod/sysdeps/powerpc/powerpc64/dl-machine.h 2014-11-11 18:51:36.141570651 -0500 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/dl-machine.h 2014-11-11 18:51:36.141570651 -0500 @@ -561,6 +561,12 @@ Elf64_Addr *const reloc_addr = reloc_addr_arg; const int r_type = ELF64_R_TYPE (reloc->r_info); diff --git a/SOURCES/glibc-rh1162847-p2.patch b/SOURCES/glibc-rh1162847-p2.patch index 9192278..9c67ab6 100644 --- a/SOURCES/glibc-rh1162847-p2.patch +++ b/SOURCES/glibc-rh1162847-p2.patch @@ -9,10 +9,10 @@ # Use stdint types in rather than __attribute__((mode())). # * sysdeps/powerpc/powerpc64/dl-machine.h (elf_machine_rela): Likewise. # -diff --git a/sysdeps/powerpc/powerpc32/dl-machine.c b/sysdeps/powerpc/powerpc32/dl-machine.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/dl-machine.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/dl-machine.c index f81899a..aba3618 100644 ---- a/sysdeps/powerpc/powerpc32/dl-machine.c -+++ b/sysdeps/powerpc/powerpc32/dl-machine.c +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/dl-machine.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/dl-machine.c @@ -418,8 +418,8 @@ __process_machine_rela (struct link_map *map, { union unaligned @@ -24,10 +24,10 @@ index f81899a..aba3618 100644 } __attribute__((__packed__)); switch (rinfo) -diff --git a/sysdeps/powerpc/powerpc64/dl-machine.h b/sysdeps/powerpc/powerpc64/dl-machine.h +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/dl-machine.h glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/dl-machine.h index b69a1ce..18cf157 100644 ---- a/sysdeps/powerpc/powerpc64/dl-machine.h -+++ b/sysdeps/powerpc/powerpc64/dl-machine.h +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/dl-machine.h ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/dl-machine.h @@ -563,10 +563,10 @@ elf_machine_rela (struct link_map *map, const Elf64_Sym *const refsym = sym; union unaligned diff --git a/SOURCES/glibc-rh1162895-1.patch b/SOURCES/glibc-rh1162895-1.patch new file mode 100644 index 0000000..12594d7 --- /dev/null +++ b/SOURCES/glibc-rh1162895-1.patch @@ -0,0 +1,23 @@ +commit f6c44d475104e931bab2b4ffa499961088de673c +Author: Alan Modra +Date: Mon Jul 14 21:14:50 2014 +0930 + + Correct DT_PPC64_NUM + + [BZ #17153] + * elf/elf.h (DT_PPC64_NUM): Correct value. + * NEWS: Add to fixed bug list. + +diff --git glibc-2.17-c758a686/elf/elf.h glibc-2.17-c758a686/elf/elf.h +index 40e87b2..78815e8 100644 +--- glibc-2.17-c758a686/elf/elf.h ++++ glibc-2.17-c758a686/elf/elf.h +@@ -2283,7 +2283,7 @@ typedef Elf32_Addr Elf32_Conflict; + #define DT_PPC64_OPD (DT_LOPROC + 1) + #define DT_PPC64_OPDSZ (DT_LOPROC + 2) + #define DT_PPC64_OPT (DT_LOPROC + 3) +-#define DT_PPC64_NUM 3 ++#define DT_PPC64_NUM 4 + + /* PowerPC64 specific values for the DT_PPC64_OPT Dyn entry. */ + #define PPC64_OPT_TLS 1 diff --git a/SOURCES/glibc-rh1162895-2.patch b/SOURCES/glibc-rh1162895-2.patch new file mode 100644 index 0000000..0844319 --- /dev/null +++ b/SOURCES/glibc-rh1162895-2.patch @@ -0,0 +1,200 @@ +commit aa5f0ff11ad2cc85277c64cf65c723a9664e1149 +Author: Alan Modra +Date: Wed Apr 16 19:33:32 2014 +0930 + + Correct IBM long double frexpl. + + Besides fixing the bugzilla, this also fixes corner-cases where the high + and low double differ greatly in magnitude, and handles a denormal + input without resorting to a fp rescale. + + [BZ #16740] + [BZ #16619] + * sysdeps/ieee754/ldbl-128ibm/s_frexpl.c (__frexpl): Rewrite. + * math/libm-test.inc (frexp_test_data): Add tests. + +diff --git glibc-2.17-c758a686/math/libm-test.inc glibc-2.17-c758a686/math/libm-test.inc +index 5e6789f..a4bf0b8 100644 +--- glibc-2.17-c758a686/math/libm-test.inc ++++ glibc-2.17-c758a686/math/libm-test.inc +@@ -5691,6 +5691,15 @@ frexp_test (void) + TEST_fI_f1 (frexp, 12.8L, 0.8L, 4); + TEST_fI_f1 (frexp, -27.34L, -0.854375L, 5); + ++#if defined TEST_LDOUBLE && LDBL_MANT_DIG >= 106 ++ TEST_fI_f1 (frexp, 1.0L-0x1p-106L, 1.0L-0x1p-106L, 0), ++ TEST_fI_f1 (frexp, 1.0L, 0.5L, 1), ++ TEST_fI_f1 (frexp, 1.0L+0x1p-105L, 0.5L+0x1p-106L, 1), ++ TEST_fI_f1 (frexp, -1.0L+0x1p-106L, -1.0L+0x1p-106L, 0), ++ TEST_fI_f1 (frexp, -1.0L, -0.5L, 1), ++ TEST_fI_f1 (frexp, -1.0L-0x1p-105L, -0.5L-0x1p-106L, 1), ++#endif ++ + END (frexp); + } + +--- glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_frexpl.c 2015-06-16 15:37:44.293960271 -0400 ++++ glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_frexpl.c 2015-06-16 13:53:25.578700428 -0400 +@@ -31,57 +31,115 @@ + #include + #include + +-static const long double +-two107 = 162259276829213363391578010288128.0; /* 0x4670000000000000, 0 */ +- + long double __frexpl(long double x, int *eptr) + { +- uint64_t hx, lx, ix, ixl; +- int64_t explo; +- double xhi, xlo; +- +- ldbl_unpack (x, &xhi, &xlo); +- EXTRACT_WORDS64 (hx, xhi); +- EXTRACT_WORDS64 (lx, xlo); +- ixl = 0x7fffffffffffffffULL&lx; +- ix = 0x7fffffffffffffffULL&hx; +- *eptr = 0; +- if(ix>=0x7ff0000000000000ULL||ix==0) return x; /* 0,inf,nan */ +- if (ix<0x0010000000000000ULL) { /* subnormal */ +- x *= two107; +- xhi = ldbl_high (x); +- EXTRACT_WORDS64 (hx, xhi); +- ix = hx&0x7fffffffffffffffULL; +- *eptr = -107; ++ uint64_t hx, lx, ix, ixl; ++ int64_t explo, expon; ++ double xhi, xlo; ++ ++ ldbl_unpack (x, &xhi, &xlo); ++ EXTRACT_WORDS64 (hx, xhi); ++ EXTRACT_WORDS64 (lx, xlo); ++ ixl = 0x7fffffffffffffffULL & lx; ++ ix = 0x7fffffffffffffffULL & hx; ++ expon = 0; ++ if (ix >= 0x7ff0000000000000ULL || ix == 0) ++ { ++ /* 0,inf,nan. */ ++ *eptr = expon; ++ return x; ++ } ++ expon = ix >> 52; ++ if (expon == 0) ++ { ++ /* Denormal high double, the low double must be 0.0. */ ++ int cnt; ++ ++ /* Normalize. */ ++ if (sizeof (ix) == sizeof (long)) ++ cnt = __builtin_clzl (ix); ++ else if ((ix >> 32) != 0) ++ cnt = __builtin_clzl ((long) (ix >> 32)); ++ else ++ cnt = __builtin_clzl ((long) ix) + 32; ++ cnt = cnt - 12; ++ expon -= cnt; ++ ix <<= cnt + 1; ++ } ++ expon -= 1022; ++ ix &= 0x000fffffffffffffULL; ++ hx &= 0x8000000000000000ULL; ++ hx |= (1022LL << 52) | ix; ++ ++ if (ixl != 0) ++ { ++ /* If the high double is an exact power of two and the low ++ double has the opposite sign, then the exponent calculated ++ from the high double is one too big. */ ++ if (ix == 0 ++ && (int64_t) (hx ^ lx) < 0) ++ { ++ hx += 1LL << 52; ++ expon -= 1; ++ } ++ ++ explo = ixl >> 52; ++ if (explo == 0) ++ { ++ /* The low double started out as a denormal. Normalize its ++ mantissa and adjust the exponent. */ ++ int cnt; ++ ++ if (sizeof (ixl) == sizeof (long)) ++ cnt = __builtin_clzl (ixl); ++ else if ((ixl >> 32) != 0) ++ cnt = __builtin_clzl ((long) (ixl >> 32)); ++ else ++ cnt = __builtin_clzl ((long) ixl) + 32; ++ cnt = cnt - 12; ++ explo -= cnt; ++ ixl <<= cnt + 1; ++ } ++ ++ /* With variable precision we can't assume much about the ++ magnitude of the returned low double. It may even be a ++ denormal. */ ++ explo -= expon; ++ ixl &= 0x000fffffffffffffULL; ++ lx &= 0x8000000000000000ULL; ++ if (explo <= 0) ++ { ++ /* Handle denormal low double. */ ++ if (explo > -52) ++ { ++ ixl |= 1LL << 52; ++ ixl >>= 1 - explo; ++ } ++ else ++ { ++ ixl = 0; ++ lx = 0; ++ if ((hx & 0x7ff0000000000000ULL) == (1023LL << 52)) ++ { ++ /* Oops, the adjustment we made above for values a ++ little smaller than powers of two turned out to ++ be wrong since the returned low double will be ++ zero. This can happen if the input was ++ something weird like 0x1p1000 - 0x1p-1000. */ ++ hx -= 1LL << 52; ++ expon += 1; ++ } ++ } ++ explo = 0; + } +- *eptr += (ix>>52)-1022; ++ lx |= (explo << 52) | ixl; ++ } + +- if (ixl != 0ULL) { +- explo = (ixl>>52) - (ix>>52) + 0x3fe; +- if ((ixl&0x7ff0000000000000ULL) == 0LL) { +- /* the lower double is a denormal so we need to correct its +- mantissa and perhaps its exponent. */ +- int cnt; +- +- if (sizeof (ixl) == sizeof (long)) +- cnt = __builtin_clzl (ixl); +- else if ((ixl >> 32) != 0) +- cnt = __builtin_clzl ((long) (ixl >> 32)); +- else +- cnt = __builtin_clzl ((long) ixl) + 32; +- cnt = cnt - 12; +- lx = (lx&0x8000000000000000ULL) | ((explo-cnt)<<52) +- | ((ixl<<(cnt+1))&0x000fffffffffffffULL); +- } else +- lx = (lx&0x800fffffffffffffULL) | (explo<<52); +- } else +- lx = 0ULL; +- +- hx = (hx&0x800fffffffffffffULL) | 0x3fe0000000000000ULL; +- INSERT_WORDS64 (xhi, hx); +- INSERT_WORDS64 (xlo, lx); +- x = ldbl_pack (xhi, xlo); +- return x; ++ INSERT_WORDS64 (xhi, hx); ++ INSERT_WORDS64 (xlo, lx); ++ x = ldbl_pack (xhi, xlo); ++ *eptr = expon; ++ return x; + } + #ifdef IS_IN_libm + long_double_symbol (libm, __frexpl, frexpl); diff --git a/SOURCES/glibc-rh1162895-3.patch b/SOURCES/glibc-rh1162895-3.patch new file mode 100644 index 0000000..e9bfbfa --- /dev/null +++ b/SOURCES/glibc-rh1162895-3.patch @@ -0,0 +1,123 @@ +commit b0abbc21034f0e5edc49023d8fda0616173faf17 +Author: Alan Modra +Date: Wed Apr 2 13:46:19 2014 +1030 + + Correct IBM long double nextafterl. + + Fix for values near a power of two, and some tidies. + + [BZ #16739] + * sysdeps/ieee754/ldbl-128ibm/s_nextafterl.c (__nextafterl): Correct + output when value is near a power of two. Use int64_t for lx and + remove casts. Use decimal rather than hex exponent constants. + Don't use long double multiplication when double will suffice. + * math/libm-test.inc (nextafter_test_data): Add tests. + * NEWS: Add 16739 and 16786 to bug list. + +diff --git glibc-2.17-c758a686/math/libm-test.inc glibc-2.17-c758a686/math/libm-test.inc +index 19194f6..967b679 100644 +--- glibc-2.17-c758a686/math/libm-test.inc ++++ glibc-2.17-c758a686/math/libm-test.inc +@@ -8199,6 +8208,14 @@ pow_test (void) + #if defined TEST_DOUBLE || defined TEST_LDOUBLE + TEST_ff_f (pow, -7.49321e+133, -9.80818e+16, 0, UNDERFLOW_EXCEPTION); + #endif ++#if defined TEST_LDOUBLE && LDBL_MANT_DIG == 106 ++ TEST_ff_f (nextafter, 1.0L, -10.0L, 1.0L-0x1p-106L, NO_EXCEPTION), ++ TEST_ff_f (nextafter, 1.0L, 10.0L, 1.0L+0x1p-105L, NO_EXCEPTION), ++ TEST_ff_f (nextafter, 1.0L-0x1p-106L, 10.0L, 1.0L, NO_EXCEPTION), ++ TEST_ff_f (nextafter, -1.0L, -10.0L, -1.0L-0x1p-105L, NO_EXCEPTION), ++ TEST_ff_f (nextafter, -1.0L, 10.0L, -1.0L+0x1p-106L, NO_EXCEPTION), ++ TEST_ff_f (nextafter, -1.0L+0x1p-106L, -10.0L, -1.0L, NO_EXCEPTION), ++#endif + + TEST_ff_f (pow, -1.0, -0xffffff, -1.0); + TEST_ff_f (pow, -1.0, -0x1fffffe, 1.0); +diff --git glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_nextafterl.c glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_nextafterl.c +index 30b1540..bf57cb8 100644 +--- glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_nextafterl.c ++++ glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_nextafterl.c +@@ -30,8 +30,7 @@ static char rcsid[] = "$NetBSD: $"; + + long double __nextafterl(long double x, long double y) + { +- int64_t hx,hy,ihx,ihy; +- uint64_t lx; ++ int64_t hx, hy, ihx, ihy, lx; + double xhi, xlo, yhi; + + ldbl_unpack (x, &xhi, &xlo); +@@ -79,19 +78,28 @@ long double __nextafterl(long double x, long double y) + u = math_opt_barrier (x); + x -= __LDBL_DENORM_MIN__; + if (ihx < 0x0360000000000000LL +- || (hx > 0 && (int64_t) lx <= 0) +- || (hx < 0 && (int64_t) lx > 1)) { ++ || (hx > 0 && lx <= 0) ++ || (hx < 0 && lx > 1)) { + u = u * u; + math_force_eval (u); /* raise underflow flag */ + } + return x; + } +- if (ihx < 0x06a0000000000000LL) { /* ulp will denormal */ +- INSERT_WORDS64 (yhi, hx & (0x7ffLL<<52)); +- u = yhi; +- u *= 0x1.0000000000000p-105L; ++ /* If the high double is an exact power of two and the low ++ double is the opposite sign, then 1ulp is one less than ++ what we might determine from the high double. Similarly ++ if X is an exact power of two, and positive, because ++ making it a little smaller will result in the exponent ++ decreasing by one and normalisation of the mantissa. */ ++ if ((hx & 0x000fffffffffffffLL) == 0 ++ && ((lx != 0 && (hx ^ lx) < 0) ++ || (lx == 0 && hx >= 0))) ++ ihx -= 1LL << 52; ++ if (ihx < (106LL << 52)) { /* ulp will denormal */ ++ INSERT_WORDS64 (yhi, ihx & (0x7ffLL<<52)); ++ u = yhi * 0x1p-105; + } else { +- INSERT_WORDS64 (yhi, (hx & (0x7ffLL<<52))-(0x069LL<<52)); ++ INSERT_WORDS64 (yhi, (ihx & (0x7ffLL<<52))-(105LL<<52)); + u = yhi; + } + return x - u; +@@ -109,8 +117,8 @@ long double __nextafterl(long double x, long double y) + u = math_opt_barrier (x); + x += __LDBL_DENORM_MIN__; + if (ihx < 0x0360000000000000LL +- || (hx > 0 && (int64_t) lx < 0 && lx != 0x8000000000000001LL) +- || (hx < 0 && (int64_t) lx >= 0)) { ++ || (hx > 0 && lx < 0 && lx != 0x8000000000000001LL) ++ || (hx < 0 && lx >= 0)) { + u = u * u; + math_force_eval (u); /* raise underflow flag */ + } +@@ -118,12 +126,21 @@ long double __nextafterl(long double x, long double y) + x = -0.0L; + return x; + } +- if (ihx < 0x06a0000000000000LL) { /* ulp will denormal */ +- INSERT_WORDS64 (yhi, hx & (0x7ffLL<<52)); +- u = yhi; +- u *= 0x1.0000000000000p-105L; ++ /* If the high double is an exact power of two and the low ++ double is the opposite sign, then 1ulp is one less than ++ what we might determine from the high double. Similarly ++ if X is an exact power of two, and negative, because ++ making it a little larger will result in the exponent ++ decreasing by one and normalisation of the mantissa. */ ++ if ((hx & 0x000fffffffffffffLL) == 0 ++ && ((lx != 0 && (hx ^ lx) < 0) ++ || (lx == 0 && hx < 0))) ++ ihx -= 1LL << 52; ++ if (ihx < (106LL << 52)) { /* ulp will denormal */ ++ INSERT_WORDS64 (yhi, ihx & (0x7ffLL<<52)); ++ u = yhi * 0x1p-105; + } else { +- INSERT_WORDS64 (yhi, (hx & (0x7ffLL<<52))-(0x069LL<<52)); ++ INSERT_WORDS64 (yhi, (ihx & (0x7ffLL<<52))-(105LL<<52)); + u = yhi; + } + return x + u; diff --git a/SOURCES/glibc-rh1165192.patch b/SOURCES/glibc-rh1165192.patch index 41e2591..488ac49 100644 --- a/SOURCES/glibc-rh1165192.patch +++ b/SOURCES/glibc-rh1165192.patch @@ -16,8 +16,8 @@ diff -up glibc-2.17-c758a686/nss/Makefile.rh1165192 glibc-2.17-c758a686/nss/Make makedb-modules = xmalloc hash-string extra-objs += $(makedb-modules:=.o) --tests = test-netdb tst-nss-test1 -+tests = test-netdb tst-nss-test1 tst-nss-getpwent +-tests = test-netdb tst-nss-test1 bug17079 ++tests = test-netdb tst-nss-test1 bug17079 tst-nss-getpwent xtests = bug-erange include ../Makeconfig diff --git a/SOURCES/glibc-rh1165212.patch b/SOURCES/glibc-rh1165212.patch new file mode 100644 index 0000000..104c456 --- /dev/null +++ b/SOURCES/glibc-rh1165212.patch @@ -0,0 +1,328 @@ +# +# This is a special patch for rhel-6 to fix recursive dlopen. +# It is likely the upstream patch will always be too risky for +# rhel-6 and will involve reorganizing the way in which recursive +# dlopen is allowed to operate and how the _r_debug and stap +# points are used by gdb for the recursive case. +# +# This fix changes the internal API to duplicate the ldconfig +# cache data. This means that at any point the cache can be +# unmapped without any consequences. The caller is responsible +# fore freeing the returned string. +# +# A regression test is added to verify the assertion for _r_debug +# is no longer triggered due to the recursive dlopen. The test to +# verify the fix in _dl_load_cache_lookup is not automated and +# has to be run by hand. +# +# The original version of this patch was based on the first version +# of the upstream patch posted here: +# https://sourceware.org/ml/libc-alpha/2014-12/msg00446.html +# The current version has been modified to reflect the changes +# made in the revision of the patch committed to trunk after +# being posted for review here: +# https://sourceware.org/ml/libc-alpha/2014-12/msg00483.html + +--- glibc-2.17-c758a686/dlfcn/Makefile 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/dlfcn/Makefile 2015-06-22 12:44:41.000000000 -0400 +@@ -35,12 +35,12 @@ endif + ifeq (yes,$(build-shared)) + tests = glrefmain failtest tst-dladdr default errmsg1 tstcxaatexit \ + bug-dlopen1 bug-dlsym1 tst-dlinfo bug-atexit1 bug-atexit2 \ +- bug-atexit3 tstatexit ++ bug-atexit3 tstatexit tst-rec-dlopen + endif + modules-names = glreflib1 glreflib2 glreflib3 failtestmod defaultmod1 \ + defaultmod2 errmsg1mod modatexit modcxaatexit \ + bug-dlsym1-lib1 bug-dlsym1-lib2 bug-atexit1-lib \ +- bug-atexit2-lib bug-atexit3-lib ++ bug-atexit2-lib bug-atexit3-lib moddummy1 moddummy2 + + failtestmod.so-no-z-defs = yes + glreflib2.so-no-z-defs = yes +@@ -122,6 +122,8 @@ LDLIBS-bug-atexit3-lib.so = -lstdc++ -lg + $(objpfx)bug-atexit3: $(libdl) + $(objpfx)bug-atexit3.out: $(objpfx)bug-atexit3-lib.so + ++$(objpfx)tst-rec-dlopen: $(libdl) ++$(objpfx)tst-rec-dlopen.out: $(objpfx)moddummy1.so $(objpfx)moddummy2.so + + # Depend on libc.so so a DT_NEEDED is generated in the shared objects. + # This ensures they will load libc.so for needed symbols if loaded by +--- glibc-2.17-c758a686/elf/dl-cache.c 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/elf/dl-cache.c 2015-06-22 12:44:39.000000000 -0400 +@@ -174,9 +174,12 @@ _dl_cache_libcmp (const char *p1, const + + + /* Look up NAME in ld.so.cache and return the file name stored there, +- or null if none is found. */ +- +-const char * ++ or null if none is found. ++ The caller is responsible for freeing the returned string. The ld.so.cache ++ may be unmapped at any time by a completing recursive dlopen and ++ this function must take care that it does not return references to ++ any data in the mapping. */ ++char * + internal_function + _dl_load_cache_lookup (const char *name) + { +@@ -289,7 +292,17 @@ _dl_load_cache_lookup (const char *name) + && best != NULL) + _dl_debug_printf (" trying file=%s\n", best); + +- return best; ++ if (best == NULL) ++ return NULL; ++ ++ /* The double copy is *required* since malloc may be interposed ++ and call dlopen itself whose completion would unmap the data ++ we are accessing. Therefore we must make the copy of the ++ mapping data without using malloc. */ ++ char *temp; ++ temp = alloca (strlen (best) + 1); ++ strcpy (temp, best); ++ return strdup (temp); + } + + #ifndef MAP_COPY +--- glibc-2.17-c758a686/elf/dl-load.c 2015-06-22 12:41:10.748836414 -0400 ++++ glibc-2.17-c758a686/elf/dl-load.c 2015-06-22 12:44:39.000000000 -0400 +@@ -2232,7 +2232,7 @@ _dl_map_object (struct link_map *loader, + { + /* Check the list of libraries in the file /etc/ld.so.cache, + for compatibility with Linux's ldconfig program. */ +- const char *cached = _dl_load_cache_lookup (name); ++ char *cached = _dl_load_cache_lookup (name); + + if (cached != NULL) + { +@@ -2262,6 +2262,7 @@ _dl_map_object (struct link_map *loader, + if (memcmp (cached, dirp, system_dirs_len[cnt]) == 0) + { + /* The prefix matches. Don't use the entry. */ ++ free (cached); + cached = NULL; + break; + } +@@ -2278,14 +2279,9 @@ _dl_map_object (struct link_map *loader, + &fb, loader ?: GL(dl_ns)[nsid]._ns_loaded, + LA_SER_CONFIG, &found_other_class, false); + if (__builtin_expect (fd != -1, 1)) +- { +- realname = local_strdup (cached); +- if (realname == NULL) +- { +- __close (fd); +- fd = -1; +- } +- } ++ realname = cached; ++ else ++ free (cached); + } + } + } +--- glibc-2.17-c758a686/elf/dl-open.c 2015-06-22 12:41:16.348913620 -0400 ++++ glibc-2.17-c758a686/elf/dl-open.c 2015-06-22 12:44:40.000000000 -0400 +@@ -221,7 +221,11 @@ dl_open_worker (void *a) + } + } + +- assert (_dl_debug_initialize (0, args->nsid)->r_state == RT_CONSISTENT); ++ /* One might be tempted to assert that we are RT_CONSISTENT at this point, but that ++ may not be true if this is a recursive call to dlopen. ++ TODO: Fix all of the debug state so we end up at RT_CONSISTENT only when the last ++ recursive dlopen completes. */ ++ _dl_debug_initialize (0, args->nsid); + + /* Load the named object. */ + struct link_map *new; +--- glibc-2.17-c758a686/sysdeps/generic/ldsodefs.h 2015-06-22 12:41:16.328913344 -0400 ++++ glibc-2.17-c758a686/sysdeps/generic/ldsodefs.h 2015-06-22 12:44:41.000000000 -0400 +@@ -895,8 +895,8 @@ + internal_function; + + /* Look up NAME in ld.so.cache and return the file name stored there, +- or null if none is found. */ +-extern const char *_dl_load_cache_lookup (const char *name) ++ or null if none is found. Caller must free returned string. */ ++extern char *_dl_load_cache_lookup (const char *name) + internal_function; + + /* If the system does not support MAP_COPY we cannot leave the file open +--- glibc-2.17-c758a686/dlfcn/tst-rec-dlopen.c 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.17-c758a686/dlfcn/tst-rec-dlopen.c 2015-06-22 12:44:41.000000000 -0400 +@@ -0,0 +1,143 @@ ++/* Test recursive dlopen using malloc hooks. ++ Copyright (C) 2015 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 ++ . */ ++ ++#include ++#include ++#include ++#include ++ ++#define DSO "moddummy1.so" ++#define FUNC "dummy1" ++ ++#define DSO1 "moddummy2.so" ++#define FUNC1 "dummy2" ++ ++/* Result of the called function. */ ++int func_result; ++ ++/* Prototype for my hook. */ ++void *custom_malloc_hook (size_t, const void *); ++ ++/* Pointer to old malloc hooks. */ ++void *(*old_malloc_hook) (size_t, const void *); ++ ++/* Call function func_name in DSO dso_name via dlopen. */ ++void ++call_func (const char *dso_name, const char *func_name) ++{ ++ int ret; ++ void *dso; ++ int (*func) (void); ++ char *err; ++ ++ /* Open the DSO. */ ++ dso = dlopen (dso_name, RTLD_NOW|RTLD_GLOBAL); ++ if (dso == NULL) ++ { ++ err = dlerror (); ++ fprintf (stderr, "%s\n", err); ++ exit (1); ++ } ++ /* Clear any errors. */ ++ dlerror (); ++ ++ /* Lookup func. */ ++ *(void **) (&func) = dlsym (dso, func_name); ++ if (func == NULL) ++ { ++ err = dlerror (); ++ if (err != NULL) ++ { ++ fprintf (stderr, "%s\n", err); ++ exit (1); ++ } ++ } ++ /* Call func. */ ++ func_result = (*func) (); ++ ++ /* Close the library and look for errors too. */ ++ ret = dlclose (dso); ++ if (ret != 0) ++ { ++ err = dlerror (); ++ fprintf (stderr, "%s\n", err); ++ exit (1); ++ } ++ ++} ++ ++/* Empty hook that does nothing. */ ++void * ++custom_malloc_hook (size_t size, const void *caller) ++{ ++ void *result; ++ /* Restore old hooks. */ ++ __malloc_hook = old_malloc_hook; ++ /* First call a function in another library via dlopen. */ ++ call_func (DSO1, FUNC1); ++ /* Called recursively. */ ++ result = malloc (size); ++ /* Restore new hooks. */ ++ __malloc_hook = custom_malloc_hook; ++ return result; ++} ++ ++static int ++do_test (void) ++{ ++ /* Save old hook. */ ++ old_malloc_hook = __malloc_hook; ++ /* Install new hook. */ ++ __malloc_hook = custom_malloc_hook; ++ ++ /* Bug 17702 fixes two things: ++ * A recursive dlopen unmapping the ld.so.cache. ++ * An assertion that _r_debug is RT_CONSISTENT at entry to dlopen. ++ We can only test the latter. Testing the former requires modifying ++ ld.so.conf to cache the dummy libraries, then running ldconfig, ++ then run the test. If you do all of that (and glibc's test ++ infrastructure doesn't support that yet) then the test will ++ SEGFAULT without the fix. If you don't do that, then the test ++ will abort because of the assert described in detail below. */ ++ call_func (DSO, FUNC); ++ ++ /* Restore old hook. */ ++ __malloc_hook = old_malloc_hook; ++ ++ /* The function dummy2() is called by the malloc hook. Check to ++ see that it was called. This ensures the second recursive ++ dlopen happened and we called the function in that library. ++ Before the fix you either get a SIGSEGV when accessing mmap'd ++ ld.so.cache data or an assertion failure about _r_debug not ++ beint RT_CONSISTENT. We don't test for the SIGSEGV since it ++ would require finding moddummy1 or moddummy2 in the cache and ++ we don't have any infrastructure to test that, but the _r_debug ++ assertion triggers. */ ++ printf ("Returned result is %d\n", func_result); ++ if (func_result <= 0) ++ { ++ printf ("FAIL: Function call_func() not called.\n"); ++ exit (1); ++ } ++ ++ printf ("PASS: Function call_func() called more than once.\n"); ++ return 0; ++} ++ ++#define TEST_FUNCTION do_test () ++#include "../test-skeleton.c" +--- glibc-2.17-c758a686/dlfcn/moddummy1.c 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.17-c758a686/dlfcn/moddummy1.c 2015-06-22 12:44:41.000000000 -0400 +@@ -0,0 +1,10 @@ ++/* Provide a dummy DSO for tst-rec-dlopen to use. */ ++#include ++#include ++ ++int ++dummy1 (void) ++{ ++ printf ("Called dummy1()\n"); ++ return 1; ++} +--- glibc-2.17-c758a686/dlfcn/moddummy2.c 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.17-c758a686/dlfcn/moddummy2.c 2015-06-22 12:44:41.000000000 -0400 +@@ -0,0 +1,13 @@ ++/* Provide a dummy DSO for tst-rec-dlopen to use. */ ++#include ++#include ++ ++int ++dummy2 (void) ++{ ++ printf ("Called dummy2()\n"); ++ /* If the outer dlopen is not dummy1 (becuase of some error) ++ then tst-rec-dlopen will see a value of -1 as the returned ++ result and fail. */ ++ return -1; ++} diff --git a/SOURCES/glibc-rh1170118-CVE-2014-7817.patch b/SOURCES/glibc-rh1170118-CVE-2014-7817.patch index 1accbf3..8515473 100644 --- a/SOURCES/glibc-rh1170118-CVE-2014-7817.patch +++ b/SOURCES/glibc-rh1170118-CVE-2014-7817.patch @@ -30,10 +30,10 @@ # # Tested on x86_64 with no regressions. # -diff --git a/posix/wordexp-test.c b/posix/wordexp-test.c +diff --git glibc-2.17-c758a686/posix/wordexp-test.c glibc-2.17-c758a686/posix/wordexp-test.c index 4957006..bdd65e4 100644 ---- a/posix/wordexp-test.c -+++ b/posix/wordexp-test.c +--- glibc-2.17-c758a686/posix/wordexp-test.c ++++ glibc-2.17-c758a686/posix/wordexp-test.c @@ -27,6 +27,25 @@ #define IFS " \n\t" @@ -113,10 +113,10 @@ index 4957006..bdd65e4 100644 if (tc->flags & WRDE_DOOFFS) start_offs = sav_we.we_offs; -diff --git a/posix/wordexp.c b/posix/wordexp.c +diff --git glibc-2.17-c758a686/posix/wordexp.c glibc-2.17-c758a686/posix/wordexp.c index b6b65dd..26f3a26 100644 ---- a/posix/wordexp.c -+++ b/posix/wordexp.c +--- glibc-2.17-c758a686/posix/wordexp.c ++++ glibc-2.17-c758a686/posix/wordexp.c @@ -893,6 +893,10 @@ exec_comm (char *comm, char **word, size_t *word_length, size_t *max_length, pid_t pid; int noexec = 0; diff --git a/SOURCES/glibc-rh1173238.patch b/SOURCES/glibc-rh1173238.patch new file mode 100644 index 0000000..8e45327 --- /dev/null +++ b/SOURCES/glibc-rh1173238.patch @@ -0,0 +1,378 @@ +diff -u --new-file glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/librtkaio-le.abilist glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/librtkaio-le.abilist +--- glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/librtkaio-le.abilist 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/librtkaio-le.abilist 2015-04-28 19:44:03.038050864 -0400 +@@ -0,0 +1,41 @@ ++GLIBC_2.17 ++ GLIBC_2.17 A ++ aio_cancel F ++ aio_cancel64 F ++ aio_error F ++ aio_error64 F ++ aio_fsync F ++ aio_fsync64 F ++ aio_init F ++ aio_read F ++ aio_read64 F ++ aio_return F ++ aio_return64 F ++ aio_suspend F ++ aio_suspend64 F ++ aio_write F ++ aio_write64 F ++ clock_getcpuclockid F ++ clock_getres F ++ clock_gettime F ++ clock_nanosleep F ++ clock_settime F ++ lio_listio F ++ lio_listio64 F ++ mq_close F ++ mq_getattr F ++ mq_notify F ++ mq_open F ++ mq_receive F ++ mq_send F ++ mq_setattr F ++ mq_timedreceive F ++ mq_timedsend F ++ mq_unlink F ++ shm_open F ++ shm_unlink F ++ timer_create F ++ timer_delete F ++ timer_getoverrun F ++ timer_gettime F ++ timer_settime F +diff -ru --new-file glibc-2.17-c758a686/sysdeps/unix/sysv/linux/i386/nptl/librtkaio.abilist glibc-2.17-c758a686/sysdeps/unix/sysv/linux/i386/nptl/librtkaio.abilist +--- glibc-2.17-c758a686/sysdeps/unix/sysv/linux/i386/nptl/librtkaio.abilist 1969-12-31 17:00:00.000000000 -0700 ++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/i386/nptl/librtkaio.abilist 2015-04-23 17:51:48.159155741 -0600 +@@ -0,0 +1,49 @@ ++GLIBC_2.1 ++ GLIBC_2.1 A ++ aio_cancel F ++ aio_cancel64 F ++ aio_error F ++ aio_error64 F ++ aio_fsync F ++ aio_fsync64 F ++ aio_init F ++ aio_read F ++ aio_read64 F ++ aio_return F ++ aio_return64 F ++ aio_suspend F ++ aio_suspend64 F ++ aio_write F ++ aio_write64 F ++ lio_listio F ++ lio_listio64 F ++GLIBC_2.2 ++ GLIBC_2.2 A ++ clock_getcpuclockid F ++ clock_getres F ++ clock_gettime F ++ clock_nanosleep F ++ clock_settime F ++ shm_open F ++ shm_unlink F ++ timer_create F ++ timer_delete F ++ timer_getoverrun F ++ timer_gettime F ++ timer_settime F ++GLIBC_2.3.4 ++ GLIBC_2.3.4 A ++ mq_close F ++ mq_getattr F ++ mq_notify F ++ mq_open F ++ mq_receive F ++ mq_send F ++ mq_setattr F ++ mq_timedreceive F ++ mq_timedsend F ++ mq_unlink F ++GLIBC_2.4 ++ GLIBC_2.4 A ++ lio_listio F ++ lio_listio64 F +diff -ru --new-file glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/nptl/librtkaio.abilist glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/nptl/librtkaio.abilist +--- glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/nptl/librtkaio.abilist 1969-12-31 17:00:00.000000000 -0700 ++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/nptl/librtkaio.abilist 2015-04-23 17:50:38.059113789 -0600 +@@ -0,0 +1,49 @@ ++GLIBC_2.1 ++ GLIBC_2.1 A ++ aio_cancel F ++ aio_cancel64 F ++ aio_error F ++ aio_error64 F ++ aio_fsync F ++ aio_fsync64 F ++ aio_init F ++ aio_read F ++ aio_read64 F ++ aio_return F ++ aio_return64 F ++ aio_suspend F ++ aio_suspend64 F ++ aio_write F ++ aio_write64 F ++ lio_listio F ++ lio_listio64 F ++GLIBC_2.2 ++ GLIBC_2.2 A ++ clock_getcpuclockid F ++ clock_getres F ++ clock_gettime F ++ clock_nanosleep F ++ clock_settime F ++ shm_open F ++ shm_unlink F ++ timer_create F ++ timer_delete F ++ timer_getoverrun F ++ timer_gettime F ++ timer_settime F ++GLIBC_2.3.4 ++ GLIBC_2.3.4 A ++ mq_close F ++ mq_getattr F ++ mq_notify F ++ mq_open F ++ mq_receive F ++ mq_send F ++ mq_setattr F ++ mq_timedreceive F ++ mq_timedsend F ++ mq_unlink F ++GLIBC_2.4 ++ GLIBC_2.4 A ++ lio_listio F ++ lio_listio64 F +diff -ru --new-file glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/librtkaio.abilist glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/librtkaio.abilist +--- glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/librtkaio.abilist 1969-12-31 17:00:00.000000000 -0700 ++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/nptl/librtkaio.abilist 2015-04-23 21:19:41.204953576 -0600 +@@ -0,0 +1,54 @@ ++GLIBC_2.3 ++ GLIBC_2.3 A ++ aio_cancel F ++ aio_cancel64 F ++ aio_error F ++ aio_error64 F ++ aio_fsync F ++ aio_fsync64 F ++ aio_init F ++ aio_read F ++ aio_read64 F ++ aio_return F ++ aio_return64 F ++ aio_suspend F ++ aio_suspend64 F ++ aio_write F ++ aio_write64 F ++ clock_getcpuclockid F ++ clock_getres F ++ clock_gettime F ++ clock_nanosleep F ++ clock_settime F ++ lio_listio F ++ lio_listio64 F ++ shm_open F ++ shm_unlink F ++ timer_create F ++ timer_delete F ++ timer_getoverrun F ++ timer_gettime F ++ timer_settime F ++GLIBC_2.3.3 ++ GLIBC_2.3.3 A ++ timer_create F ++ timer_delete F ++ timer_getoverrun F ++ timer_gettime F ++ timer_settime F ++GLIBC_2.3.4 ++ GLIBC_2.3.4 A ++ mq_close F ++ mq_getattr F ++ mq_notify F ++ mq_open F ++ mq_receive F ++ mq_send F ++ mq_setattr F ++ mq_timedreceive F ++ mq_timedsend F ++ mq_unlink F ++GLIBC_2.4 ++ GLIBC_2.4 A ++ lio_listio F ++ lio_listio64 F +diff -ru --new-file glibc-2.17-c758a686/sysdeps/unix/sysv/linux/s390/s390-32/nptl/librtkaio.abilist glibc-2.17-c758a686/sysdeps/unix/sysv/linux/s390/s390-32/nptl/librtkaio.abilist +--- glibc-2.17-c758a686/sysdeps/unix/sysv/linux/s390/s390-32/nptl/librtkaio.abilist 1969-12-31 17:00:00.000000000 -0700 ++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/s390/s390-32/nptl/librtkaio.abilist 2015-04-23 17:50:54.671886744 -0600 +@@ -0,0 +1,49 @@ ++GLIBC_2.1 ++ GLIBC_2.1 A ++ aio_cancel F ++ aio_cancel64 F ++ aio_error F ++ aio_error64 F ++ aio_fsync F ++ aio_fsync64 F ++ aio_init F ++ aio_read F ++ aio_read64 F ++ aio_return F ++ aio_return64 F ++ aio_suspend F ++ aio_suspend64 F ++ aio_write F ++ aio_write64 F ++ lio_listio F ++ lio_listio64 F ++GLIBC_2.2 ++ GLIBC_2.2 A ++ clock_getcpuclockid F ++ clock_getres F ++ clock_gettime F ++ clock_nanosleep F ++ clock_settime F ++ shm_open F ++ shm_unlink F ++ timer_create F ++ timer_delete F ++ timer_getoverrun F ++ timer_gettime F ++ timer_settime F ++GLIBC_2.3.4 ++ GLIBC_2.3.4 A ++ mq_close F ++ mq_getattr F ++ mq_notify F ++ mq_open F ++ mq_receive F ++ mq_send F ++ mq_setattr F ++ mq_timedreceive F ++ mq_timedsend F ++ mq_unlink F ++GLIBC_2.4 ++ GLIBC_2.4 A ++ lio_listio F ++ lio_listio64 F +diff -ru --new-file glibc-2.17-c758a686/sysdeps/unix/sysv/linux/s390/s390-64/nptl/librtkaio.abilist glibc-2.17-c758a686/sysdeps/unix/sysv/linux/s390/s390-64/nptl/librtkaio.abilist +--- glibc-2.17-c758a686/sysdeps/unix/sysv/linux/s390/s390-64/nptl/librtkaio.abilist 1969-12-31 17:00:00.000000000 -0700 ++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/s390/s390-64/nptl/librtkaio.abilist 2015-04-23 17:52:01.366975232 -0600 +@@ -0,0 +1,54 @@ ++GLIBC_2.2 ++ GLIBC_2.2 A ++ aio_cancel F ++ aio_cancel64 F ++ aio_error F ++ aio_error64 F ++ aio_fsync F ++ aio_fsync64 F ++ aio_init F ++ aio_read F ++ aio_read64 F ++ aio_return F ++ aio_return64 F ++ aio_suspend F ++ aio_suspend64 F ++ aio_write F ++ aio_write64 F ++ clock_getcpuclockid F ++ clock_getres F ++ clock_gettime F ++ clock_nanosleep F ++ clock_settime F ++ lio_listio F ++ lio_listio64 F ++ shm_open F ++ shm_unlink F ++ timer_create F ++ timer_delete F ++ timer_getoverrun F ++ timer_gettime F ++ timer_settime F ++GLIBC_2.3.3 ++ GLIBC_2.3.3 A ++ timer_create F ++ timer_delete F ++ timer_getoverrun F ++ timer_gettime F ++ timer_settime F ++GLIBC_2.3.4 ++ GLIBC_2.3.4 A ++ mq_close F ++ mq_getattr F ++ mq_notify F ++ mq_open F ++ mq_receive F ++ mq_send F ++ mq_setattr F ++ mq_timedreceive F ++ mq_timedsend F ++ mq_unlink F ++GLIBC_2.4 ++ GLIBC_2.4 A ++ lio_listio F ++ lio_listio64 F +diff -ru --new-file glibc-2.17-c758a686/sysdeps/unix/sysv/linux/x86_64/64/nptl/librtkaio.abilist glibc-2.17-c758a686/sysdeps/unix/sysv/linux/x86_64/64/nptl/librtkaio.abilist +--- glibc-2.17-c758a686/sysdeps/unix/sysv/linux/x86_64/64/nptl/librtkaio.abilist 1969-12-31 17:00:00.000000000 -0700 ++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/x86_64/64/nptl/librtkaio.abilist 2015-04-23 17:51:12.091648671 -0600 +@@ -0,0 +1,54 @@ ++GLIBC_2.2.5 ++ GLIBC_2.2.5 A ++ aio_cancel F ++ aio_cancel64 F ++ aio_error F ++ aio_error64 F ++ aio_fsync F ++ aio_fsync64 F ++ aio_init F ++ aio_read F ++ aio_read64 F ++ aio_return F ++ aio_return64 F ++ aio_suspend F ++ aio_suspend64 F ++ aio_write F ++ aio_write64 F ++ clock_getcpuclockid F ++ clock_getres F ++ clock_gettime F ++ clock_nanosleep F ++ clock_settime F ++ lio_listio F ++ lio_listio64 F ++ shm_open F ++ shm_unlink F ++ timer_create F ++ timer_delete F ++ timer_getoverrun F ++ timer_gettime F ++ timer_settime F ++GLIBC_2.3.3 ++ GLIBC_2.3.3 A ++ timer_create F ++ timer_delete F ++ timer_getoverrun F ++ timer_gettime F ++ timer_settime F ++GLIBC_2.3.4 ++ GLIBC_2.3.4 A ++ mq_close F ++ mq_getattr F ++ mq_notify F ++ mq_open F ++ mq_receive F ++ mq_send F ++ mq_setattr F ++ mq_timedreceive F ++ mq_timedsend F ++ mq_unlink F ++GLIBC_2.4 ++ GLIBC_2.4 A ++ lio_listio F ++ lio_listio64 F diff --git a/SOURCES/glibc-rh1173537.patch b/SOURCES/glibc-rh1173537.patch new file mode 100644 index 0000000..bedde38 --- /dev/null +++ b/SOURCES/glibc-rh1173537.patch @@ -0,0 +1,65 @@ +commit c3ec475c5dd16499aa040908e11d382c3ded9692 +Author: Siddhesh Poyarekar +Date: Mon May 26 11:40:08 2014 +0530 + + Use NSS_STATUS_TRYAGAIN to indicate insufficient buffer (BZ #16878) + + The netgroups nss modules in the glibc tree use NSS_STATUS_UNAVAIL + (with errno as ERANGE) when the supplied buffer does not have + sufficient space for the result. This is wrong, because the canonical + way to indicate insufficient buffer is to set the errno to ERANGE and + the status to NSS_STATUS_TRYAGAIN, as is used by all other modules. + + This fixes nscd behaviour when the nss_ldap module returns + NSS_STATUS_TRYAGAIN to indicate that a netgroup entry is too long to + fit into the supplied buffer. + +diff --git glibc-2.17-c758a686/nscd/netgroupcache.c glibc-2.17-c758a686/nscd/netgroupcache.c +index b3d40e9..edab174 100644 +--- glibc-2.17-c758a686/nscd/netgroupcache.c ++++ glibc-2.17-c758a686/nscd/netgroupcache.c +@@ -197,11 +197,6 @@ addgetnetgrentX (struct database_dyn *db, int fd, request_header *req, + int e; + status = getfct.f (&data, buffer + buffilled, + buflen - buffilled - req->key_len, &e); +- if (status == NSS_STATUS_RETURN +- || status == NSS_STATUS_NOTFOUND) +- /* This was either the last one for this group or the +- group was empty. Look at next group if available. */ +- break; + if (status == NSS_STATUS_SUCCESS) + { + if (data.type == triple_val) +@@ -320,11 +315,18 @@ addgetnetgrentX (struct database_dyn *db, int fd, request_header *req, + } + } + } +- else if (status == NSS_STATUS_UNAVAIL && e == ERANGE) ++ else if (status == NSS_STATUS_TRYAGAIN && e == ERANGE) + { + buflen *= 2; + buffer = xrealloc (buffer, buflen); + } ++ else if (status == NSS_STATUS_RETURN ++ || status == NSS_STATUS_NOTFOUND ++ || status == NSS_STATUS_UNAVAIL) ++ /* This was either the last one for this group or the ++ group was empty or the NSS module had an internal ++ failure. Look at next group if available. */ ++ break; + } + + enum nss_status (*endfct) (struct __netgrent *); +diff --git glibc-2.17-c758a686/nss/nss_files/files-netgrp.c glibc-2.17-c758a686/nss/nss_files/files-netgrp.c +index 34eae4c..bc0b367 100644 +--- glibc-2.17-c758a686/nss/nss_files/files-netgrp.c ++++ glibc-2.17-c758a686/nss/nss_files/files-netgrp.c +@@ -252,7 +252,7 @@ _nss_netgroup_parseline (char **cursor, struct __netgrent *result, + if (cp - host > buflen) + { + *errnop = ERANGE; +- status = NSS_STATUS_UNAVAIL; ++ status = NSS_STATUS_TRYAGAIN; + } + else + { diff --git a/SOURCES/glibc-rh1176906.patch b/SOURCES/glibc-rh1176906.patch new file mode 100644 index 0000000..e6afde1 --- /dev/null +++ b/SOURCES/glibc-rh1176906.patch @@ -0,0 +1,22 @@ +commit 7d81e8d6db95c112c297930a8f2f9617c305529a +Author: Florian Weimer +Date: Tue Dec 23 16:16:32 2014 +0100 + + iconvdata/run-iconv-test.sh: Actually test iconv modules + + Arjun Shankar noticed that this test case was not testing anything + because iconv was invoked without the required arguments. + +diff --git glibc-2.17-c758a686/iconvdata/run-iconv-test.sh glibc-2.17-c758a686/iconvdata/run-iconv-test.sh +index 5dfb69f..1d0bf52 100755 +--- glibc-2.17-c758a686/iconvdata/run-iconv-test.sh ++++ glibc-2.17-c758a686/iconvdata/run-iconv-test.sh +@@ -189,7 +189,7 @@ printf '\016\377\377\377\377\377\377\377' > $temp1 + for from in $iconv_modules ; do + echo $ac_n "test decoder $from $ac_c" + PROG=`eval echo $ICONV` +- if $PROG < $temp1 >/dev/null 2>&1 ; then ++ if $PROG -f $from -t UTF8 < $temp1 >/dev/null 2>&1 ; then + : # fall through + else + status=$? diff --git a/SOURCES/glibc-rh1183456.patch b/SOURCES/glibc-rh1183456.patch new file mode 100644 index 0000000..021ec3b --- /dev/null +++ b/SOURCES/glibc-rh1183456.patch @@ -0,0 +1,40 @@ +commit 3cb26316b45b23dc5cfecbafdc489b28c3a52029 +Author: Siddhesh Poyarekar +Date: Thu Jan 29 10:30:09 2015 +0530 + + Initialize nscd stats data [BZ #17892] + + The padding bytes in the statsdata struct are not initialized, due to + which valgrind throws a warning: + + ==11384== Memcheck, a memory error detector + ==11384== Copyright (C) 2002-2012, and GNU GPL'd, by Julian Seward et al. + ==11384== Using Valgrind-3.8.1 and LibVEX; rerun with -h for copyright info + ==11384== Command: nscd -d + ==11384== + Fri 25 Apr 2014 10:34:53 AM CEST - 11384: handle_request: request received (Version = 2) from PID 11396 + Fri 25 Apr 2014 10:34:53 AM CEST - 11384: GETSTAT + ==11384== Thread 6: + ==11384== Syscall param socketcall.sendto(msg) points to uninitialised byte(s) + ==11384== at 0x4E4ACDC: send (in /lib64/libpthread-2.12.so) + ==11384== by 0x11AF6B: send_stats (in /usr/sbin/nscd) + ==11384== by 0x112F75: nscd_run_worker (in /usr/sbin/nscd) + ==11384== by 0x4E439D0: start_thread (in /lib64/libpthread-2.12.so) + ==11384== by 0x599AB6C: clone (in /lib64/libc-2.12.so) + ==11384== Address 0x15708395 is on thread 6's stack + + Fix the warning by initializing the structure. + +diff --git glibc-2.17-c758a686/nscd/nscd_stat.c glibc-2.17-c758a686/nscd/nscd_stat.c +index 0f1f3c0..7aaa21b 100644 +--- glibc-2.17-c758a686/nscd/nscd_stat.c ++++ glibc-2.17-c758a686/nscd/nscd_stat.c +@@ -94,6 +94,8 @@ send_stats (int fd, struct database_dyn dbs[lastdb]) + struct statdata data; + int cnt; + ++ memset (&data, 0, sizeof (data)); ++ + memcpy (data.version, compilation, sizeof (compilation)); + data.debug_level = debug_level; + data.runtime = time (NULL) - start_time; diff --git a/SOURCES/glibc-rh1183545.patch b/SOURCES/glibc-rh1183545.patch index ad7a679..a9ec106 100644 --- a/SOURCES/glibc-rh1183545.patch +++ b/SOURCES/glibc-rh1183545.patch @@ -4,24 +4,24 @@ Date: Mon Jan 21 17:41:28 2013 +0100 Fix parsing of numeric hosts in gethostbyname_r -diff --git a/nss/Makefile b/nss/Makefile +diff --git glibc-2.17-c758a686/nss/Makefile glibc-2.17-c758a686/nss/Makefile index 449a258..553eafa 100644 ---- a/nss/Makefile -+++ b/nss/Makefile +--- glibc-2.17-c758a686/nss/Makefile ++++ glibc-2.17-c758a686/nss/Makefile @@ -37,7 +37,8 @@ install-bin := getent makedb makedb-modules = xmalloc hash-string extra-objs += $(makedb-modules:=.o) --tests = test-netdb tst-nss-test1 tst-nss-getpwent -+tests = test-netdb tst-nss-test1 tst-nss-getpwent \ +-tests = test-netdb tst-nss-test1 bug17079 tst-nss-getpwent ++tests = test-netdb tst-nss-test1 bug17079 tst-nss-getpwent \ + test-digits-dots xtests = bug-erange include ../Makeconfig -diff --git a/nss/digits_dots.c b/nss/digits_dots.c +diff --git glibc-2.17-c758a686/nss/digits_dots.c glibc-2.17-c758a686/nss/digits_dots.c index 2b86295..e007ef4 100644 ---- a/nss/digits_dots.c -+++ b/nss/digits_dots.c +--- glibc-2.17-c758a686/nss/digits_dots.c ++++ glibc-2.17-c758a686/nss/digits_dots.c @@ -46,7 +46,10 @@ __nss_hostname_digits_dots (const char *name, struct hostent *resbuf, { if (h_errnop) @@ -164,10 +164,10 @@ index 2b86295..e007ef4 100644 *result = NULL; goto done; } -diff --git a/nss/getXXbyYY_r.c b/nss/getXXbyYY_r.c +diff --git glibc-2.17-c758a686/nss/getXXbyYY_r.c glibc-2.17-c758a686/nss/getXXbyYY_r.c index 1067744..44d00f4 100644 ---- a/nss/getXXbyYY_r.c -+++ b/nss/getXXbyYY_r.c +--- glibc-2.17-c758a686/nss/getXXbyYY_r.c ++++ glibc-2.17-c758a686/nss/getXXbyYY_r.c @@ -179,6 +179,9 @@ INTERNAL (REENTRANT_NAME) (ADD_PARAMS, LOOKUP_TYPE *resbuf, char *buffer, case -1: return errno; @@ -187,11 +187,11 @@ index 1067744..44d00f4 100644 else if (status != NSS_STATUS_SUCCESS && !any_service) /* We were not able to use any service. */ *h_errnop = NO_RECOVERY; -diff --git a/nss/test-digits-dots.c b/nss/test-digits-dots.c +diff --git glibc-2.17-c758a686/nss/test-digits-dots.c glibc-2.17-c758a686/nss/test-digits-dots.c new file mode 100644 index 0000000..1efa344 --- /dev/null -+++ b/nss/test-digits-dots.c ++++ glibc-2.17-c758a686/nss/test-digits-dots.c @@ -0,0 +1,38 @@ +/* Copyright (C) 2013 Free Software Foundation, Inc. + This file is part of the GNU C Library. diff --git a/SOURCES/glibc-rh1186491.patch b/SOURCES/glibc-rh1186491.patch new file mode 100644 index 0000000..cba9121 --- /dev/null +++ b/SOURCES/glibc-rh1186491.patch @@ -0,0 +1,29 @@ +--- glibc-2.17-c758a686/math/libm-test.inc 2015-01-22 10:53:11.015331338 -0500 ++++ glibc-2.17-c758a686/math/libm-test.inc 2015-01-26 16:46:24.631769811 -0500 +@@ -521,7 +521,7 @@ + } + + +-static void ++static void __attribute__ ((noinline)) + check_float_internal (const char *test_name, FLOAT computed, FLOAT expected, + FLOAT max_ulp, int xfail, int exceptions, + FLOAT *curr_max_error) +@@ -610,7 +610,7 @@ + } + + +-static void ++static void __attribute__ ((noinline)) + check_float (const char *test_name, FLOAT computed, FLOAT expected, + FLOAT max_ulp, int xfail, int exceptions) + { +@@ -619,7 +619,7 @@ + } + + +-static void ++static void __attribute__ ((noinline)) + check_complex (const char *test_name, __complex__ FLOAT computed, + __complex__ FLOAT expected, + __complex__ FLOAT max_ulp, __complex__ int xfail, diff --git a/SOURCES/glibc-rh1186620.patch b/SOURCES/glibc-rh1186620.patch new file mode 100644 index 0000000..ef8f580 --- /dev/null +++ b/SOURCES/glibc-rh1186620.patch @@ -0,0 +1,95 @@ +commit 3e3002ffead0526d088c353f97475400367087da +Author: Siddhesh Poyarekar +Date: Tue Feb 24 12:57:26 2015 +0530 + + Skip logging for DNSSEC responses [BZ 14841] + + DNSSEC defines a number of response types that one me expect when the + DO bit is set. We don't process any of them, but since we do allow + setting the DO bit, skip them without logging an error since it is + only a nuisance. + + Tested on x86_64. + + [BZ #14841] + * resolv/gethnamaddr.c (getanswer): Skip logging if + RES_USE_DNSSEC is set. + * resolv/nss_dns/dns-host.c (getanswer_r): Likewise. + +diff --git glibc-2.17-c758a686/resolv/gethnamaddr.c glibc-2.17-c758a686/resolv/gethnamaddr.c +index a861a84..7fd0e49 100644 +--- glibc-2.17-c758a686/resolv/gethnamaddr.c ++++ glibc-2.17-c758a686/resolv/gethnamaddr.c +@@ -331,23 +331,18 @@ getanswer (const querybuf *answer, int anslen, const char *qname, int qtype) + buflen -= n; + continue; + } +- if ((type == T_SIG) || (type == T_KEY) || (type == T_NXT)) { +- /* We don't support DNSSEC yet. For now, ignore +- * the record and send a low priority message +- * to syslog. +- */ +- syslog(LOG_DEBUG|LOG_AUTH, +- "gethostby*.getanswer: asked for \"%s %s %s\", got type \"%s\"", +- qname, p_class(C_IN), p_type(qtype), +- p_type(type)); +- cp += n; +- continue; +- } + if (type != qtype) { +- syslog(LOG_NOTICE|LOG_AUTH, ++ /* Log a low priority message if we get an unexpected ++ * record, but skip it if we are using DNSSEC since it ++ * uses many different types in responses that do not ++ * match QTYPE. ++ */ ++ if ((_res.options & RES_USE_DNSSEC) == 0) { ++ syslog(LOG_NOTICE|LOG_AUTH, + "gethostby*.getanswer: asked for \"%s %s %s\", got type \"%s\"", +- qname, p_class(C_IN), p_type(qtype), +- p_type(type)); ++ qname, p_class(C_IN), p_type(qtype), ++ p_type(type)); ++ } + cp += n; + continue; /* XXX - had_error++ ? */ + } +diff --git glibc-2.17-c758a686/resolv/nss_dns/dns-host.c glibc-2.17-c758a686/resolv/nss_dns/dns-host.c +index f715ab0..b16b0dd 100644 +--- glibc-2.17-c758a686/resolv/nss_dns/dns-host.c ++++ glibc-2.17-c758a686/resolv/nss_dns/dns-host.c +@@ -820,26 +820,19 @@ getanswer_r (const querybuf *answer, int anslen, const char *qname, int qtype, + linebuflen -= n; + continue; + } +- if (__builtin_expect (type == T_SIG, 0) +- || __builtin_expect (type == T_KEY, 0) +- || __builtin_expect (type == T_NXT, 0)) +- { +- /* We don't support DNSSEC yet. For now, ignore the record +- and send a low priority message to syslog. */ +- syslog (LOG_DEBUG | LOG_AUTH, +- "gethostby*.getanswer: asked for \"%s %s %s\", got type \"%s\"", +- qname, p_class (C_IN), p_type(qtype), p_type (type)); +- cp += n; +- continue; +- } + + if (type == T_A && qtype == T_AAAA && map) + have_to_map = 1; + else if (__builtin_expect (type != qtype, 0)) + { +- syslog (LOG_NOTICE | LOG_AUTH, +- "gethostby*.getanswer: asked for \"%s %s %s\", got type \"%s\"", +- qname, p_class (C_IN), p_type (qtype), p_type (type)); ++ /* Log a low priority message if we get an unexpected record, but ++ skip it if we are using DNSSEC since it uses many different types ++ in responses that do not match QTYPE. */ ++ if ((_res.options & RES_USE_DNSSEC) == 0) ++ syslog (LOG_NOTICE | LOG_AUTH, ++ "gethostby*.getanswer: asked for \"%s %s %s\", " ++ "got type \"%s\"", ++ qname, p_class (C_IN), p_type (qtype), p_type (type)); + cp += n; + continue; /* XXX - had_error++ ? */ + } diff --git a/SOURCES/glibc-rh1188235.patch b/SOURCES/glibc-rh1188235.patch new file mode 100644 index 0000000..9435bc8 --- /dev/null +++ b/SOURCES/glibc-rh1188235.patch @@ -0,0 +1,89 @@ +commit 5bd80bfe9ca0d955bfbbc002781bc7b01b6bcb06 +Author: Paul Pluzhnikov +Date: Fri Feb 6 00:30:42 2015 -0500 + + CVE-2015-1472: wscanf allocates too little memory + + BZ #16618 + + Under certain conditions wscanf can allocate too little memory for the + to-be-scanned arguments and overflow the allocated buffer. The + implementation now correctly computes the required buffer size when + using malloc. + + A regression test was added to tst-sscanf. + +--- glibc-2.17-c758a686/stdio-common/vfscanf.c 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/stdio-common/vfscanf.c 2015-05-28 14:01:58.512816390 -0400 +@@ -272,9 +272,10 @@ + if (__builtin_expect (wpsize == wpmax, 0)) \ + { \ + CHAR_T *old = wp; \ +- size_t newsize = (UCHAR_MAX + 1 > 2 * wpmax \ +- ? UCHAR_MAX + 1 : 2 * wpmax); \ +- if (use_malloc || !__libc_use_alloca (newsize)) \ ++ bool fits = __glibc_likely (wpmax <= SIZE_MAX / sizeof (CHAR_T) / 2); \ ++ size_t wpneed = MAX (UCHAR_MAX + 1, 2 * wpmax); \ ++ size_t newsize = fits ? wpneed * sizeof (CHAR_T) : SIZE_MAX; \ ++ if (!__libc_use_alloca (newsize)) \ + { \ + wp = realloc (use_malloc ? wp : NULL, newsize); \ + if (wp == NULL) \ +@@ -286,14 +287,13 @@ + } \ + if (! use_malloc) \ + MEMCPY (wp, old, wpsize); \ +- wpmax = newsize; \ ++ wpmax = wpneed; \ + use_malloc = true; \ + } \ + else \ + { \ + size_t s = wpmax * sizeof (CHAR_T); \ +- wp = (CHAR_T *) extend_alloca (wp, s, \ +- newsize * sizeof (CHAR_T)); \ ++ wp = (CHAR_T *) extend_alloca (wp, s, newsize); \ + wpmax = s / sizeof (CHAR_T); \ + if (old != NULL) \ + MEMCPY (wp, old, wpsize); \ +--- glibc-2.17-c758a686/stdio-common/tst-sscanf.c 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/stdio-common/tst-sscanf.c 2015-06-03 13:56:10.883924259 -0400 +@@ -196,5 +196,38 @@ + } + } + ++ /* BZ #16618 ++ The test will segfault during SSCANF if the buffer overflow ++ is not fixed. The size of `s` is such that it forces the use ++ of malloc internally and this triggers the incorrect computation. ++ Thus the value for SIZE is arbitrariy high enough that malloc ++ is used. */ ++ { ++#define SIZE 131072 ++ CHAR *s = malloc ((SIZE + 1) * sizeof (*s)); ++ if (s == NULL) ++ abort (); ++ for (size_t i = 0; i < SIZE; i++) ++ s[i] = L('0'); ++ s[SIZE] = L('\0'); ++ int i = 42; ++ /* Scan multi-digit zero into `i`. */ ++ if (SSCANF (s, L("%d"), &i) != 1) ++ { ++ printf ("FAIL: bug16618: SSCANF did not read one input item.\n"); ++ result = 1; ++ } ++ if (i != 0) ++ { ++ printf ("FAIL: bug16618: Value of `i` was not zero as expected.\n"); ++ result = 1; ++ } ++ free (s); ++ if (result != 1) ++ printf ("PASS: bug16618: Did not crash.\n"); ++#undef SIZE ++ } ++ ++ + return result; + } diff --git a/SOURCES/glibc-rh1189278-1.patch b/SOURCES/glibc-rh1189278-1.patch new file mode 100644 index 0000000..b0e6bc5 --- /dev/null +++ b/SOURCES/glibc-rh1189278-1.patch @@ -0,0 +1,57 @@ +# +# In rhel-6.x the Makerules are not entirely as mature as they are +# in glibc 2.21 (from which the example link-libc-args is taken from). +# In rhel-6.x the applications are not built like their counterpart +# real applications, and because of that compiling DSOs that use TLS +# will fail with undefined references to __tls_get_addr which resides +# in ld.so and is never included in the link. This patch enhances +# only the build-module and build-module-asneeded targets to include +# a more fully and correct link line as the compiler driver would use +# when constructing an application or DSO. We do not adjust the link +# lines used to build lib* targets. +# +diff -urN glibc-2.17-c758a686/Makerules glibc-2.17-c758a686/Makerules +--- glibc-2.17-c758a686/Makerules 2015-02-18 19:53:00.000000000 -0500 ++++ glibc-2.17-c758a686/Makerules 2015-02-18 20:08:33.299000028 -0500 +@@ -437,6 +437,25 @@ + load-map-file = $(map-file:%=-Wl,--version-script=%) + endif + ++# Compiler arguments to use to link a shared object with libc and ++# ld.so. This is intended to be as similar as possible to a default ++# link with an installed libc. ++link-libc-args = -Wl,--start-group \ ++ $(libc-for-link) \ ++ $(common-objpfx)libc_nonshared.a \ ++ $(as-needed) $(elf-objpfx)ld.so $(no-as-needed) \ ++ -Wl,--end-group ++ ++# The corresponding shared libc to use. This may be modified for a ++# particular target. ++libc-for-link = $(common-objpfx)libc.so ++ ++# The corresponding dependencies. As these are used in dependencies, ++# not just commands, they cannot use target-specific variables so need ++# to name both possible libc.so objects. ++link-libc-deps = $(common-objpfx)libc.so $(common-objpfx)linkobj/libc.so \ ++ $(common-objpfx)libc_nonshared.a $(elf-objpfx)ld.so ++ + # Pattern rule to build a shared object from an archive of PIC objects. + # This must come after the installation rules so Make doesn't try to + # build shared libraries in place from the installed *_pic.a files. +@@ -518,12 +537,13 @@ + # not for shared objects + define build-module + $(build-module-helper) -o $@ $(shlib-lds-flags) \ +- $(csu-objpfx)abi-note.o $(build-module-objlist) ++ $(csu-objpfx)abi-note.o $(build-module-objlist) $(link-libc-args) + endef + define build-module-asneeded + $(build-module-helper) -o $@ $(shlib-lds-flags) \ + $(csu-objpfx)abi-note.o \ +- -Wl,--as-needed $(build-module-objlist) -Wl,--no-as-needed ++ -Wl,--as-needed $(build-module-objlist) -Wl,--no-as-needed \ ++ $(link-libc-args) + endef + + build-module-helper-objlist = \ diff --git a/SOURCES/glibc-rh1189278.patch b/SOURCES/glibc-rh1189278.patch new file mode 100644 index 0000000..86c7f4d --- /dev/null +++ b/SOURCES/glibc-rh1189278.patch @@ -0,0 +1,407 @@ +# +# Based on this upstream commit: +# +# commit d8dd00805b8f3a011735d7a407097fb1c408d867 +# Author: H.J. Lu +# Date: Fri Nov 28 07:54:07 2014 -0800 +# +# Resize DTV if the current DTV isn't big enough +# +# This patch changes _dl_allocate_tls_init to resize DTV if the current DTV +# isn't big enough. Tested on X86-64, x32 and ia32. +# +# [BZ #13862] +# * elf/dl-tls.c: Include . +# (oom): Remove #ifdef SHARED/#endif. +# (_dl_static_dtv, _dl_initial_dtv): Moved before ... +# (_dl_resize_dtv): This. Extracted from _dl_update_slotinfo. +# (_dl_allocate_tls_init): Resize DTV if the current DTV isn't +# big enough. +# (_dl_update_slotinfo): Call _dl_resize_dtv to resize DTV. +# * nptl/Makefile (tests): Add tst-stack4. +# (modules-names): Add tst-stack4mod. +# ($(objpfx)tst-stack4): New. +# (tst-stack4mod.sos): Likewise. +# ($(objpfx)tst-stack4.out): Likewise. +# ($(tst-stack4mod.sos)): Likewise. +# (clean): Likewise. +# * nptl/tst-stack4.c: New file. +# * nptl/tst-stack4mod.c: Likewise. +# +diff -urN glibc-2.17-c758a686/elf/dl-tls.c glibc-2.17-c758a686/elf/dl-tls.c +--- glibc-2.17-c758a686/elf/dl-tls.c 2015-02-18 14:15:28.078461873 -0500 ++++ glibc-2.17-c758a686/elf/dl-tls.c 2015-02-18 14:38:37.630374771 -0500 +@@ -24,6 +24,7 @@ + #include + #include + #include ++#include + + #include + #include +@@ -35,14 +36,12 @@ + + + /* Out-of-memory handler. */ +-#ifdef SHARED + static void + __attribute__ ((__noreturn__)) + oom (void) + { + _dl_fatal_printf ("cannot allocate memory for thread-local data: ABORT\n"); + } +-#endif + + + size_t +@@ -392,6 +391,52 @@ + return result; + } + ++static dtv_t * ++_dl_resize_dtv (dtv_t *dtv) ++{ ++ /* Resize the dtv. */ ++ dtv_t *newp; ++ /* Load GL(dl_tls_max_dtv_idx) atomically since it may be written to by ++ other threads concurrently. -- We don't have the required atomic ++ infrastructure to load dl_tls_max_dtv_idx atomically, but on all the ++ architectures we care about it should load atomically. If this had ++ an atomic_load_acquire we would still be missing the releases for ++ the writes. */ ++ size_t newsize = GL(dl_tls_max_dtv_idx) + DTV_SURPLUS; ++ size_t oldsize = dtv[-1].counter; ++ ++#if SHARED ++ if (dtv == GL(dl_initial_dtv)) ++ { ++ /* This is the initial dtv that was either statically allocated in ++ __libc_setup_tls or allocated during rtld startup using the ++ dl-minimal.c malloc instead of the real malloc. We can't free ++ it, we have to abandon the old storage. */ ++ ++ newp = malloc ((2 + newsize) * sizeof (dtv_t)); ++ if (newp == NULL) ++ oom (); ++ memcpy (newp, &dtv[-1], (2 + oldsize) * sizeof (dtv_t)); ++ } ++ else ++#endif ++ { ++ newp = realloc (&dtv[-1], ++ (2 + newsize) * sizeof (dtv_t)); ++ if (newp == NULL) ++ oom (); ++ } ++ ++ newp[0].counter = newsize; ++ ++ /* Clear the newly allocated part. */ ++ memset (newp + 2 + oldsize, '\0', ++ (newsize - oldsize) * sizeof (dtv_t)); ++ ++ /* Return the generation counter. */ ++ return &newp[1]; ++} ++ + + void * + internal_function +@@ -406,6 +451,16 @@ + size_t total = 0; + size_t maxgen = 0; + ++ /* Check if the current dtv is big enough. */ ++ if (dtv[-1].counter < GL(dl_tls_max_dtv_idx)) ++ { ++ /* Resize the dtv. */ ++ dtv = _dl_resize_dtv (dtv); ++ ++ /* Install this new dtv in the thread data structures. */ ++ INSTALL_DTV (result, &dtv[-1]); ++ } ++ + /* We have to prepare the dtv for all currently loaded modules using + TLS. For those which are dynamically loaded we add the values + indicating deferred allocation. */ +@@ -637,41 +692,10 @@ + assert (total + cnt == modid); + if (dtv[-1].counter < modid) + { +- /* Reallocate the dtv. */ +- dtv_t *newp; +- size_t newsize = GL(dl_tls_max_dtv_idx) + DTV_SURPLUS; +- size_t oldsize = dtv[-1].counter; +- +- assert (map->l_tls_modid <= newsize); +- +- if (dtv == GL(dl_initial_dtv)) +- { +- /* This is the initial dtv that was allocated +- during rtld startup using the dl-minimal.c +- malloc instead of the real malloc. We can't +- free it, we have to abandon the old storage. */ +- +- newp = malloc ((2 + newsize) * sizeof (dtv_t)); +- if (newp == NULL) +- oom (); +- memcpy (newp, &dtv[-1], (2 + oldsize) * sizeof (dtv_t)); +- } +- else +- { +- newp = realloc (&dtv[-1], +- (2 + newsize) * sizeof (dtv_t)); +- if (newp == NULL) +- oom (); +- } +- +- newp[0].counter = newsize; +- +- /* Clear the newly allocated part. */ +- memset (newp + 2 + oldsize, '\0', +- (newsize - oldsize) * sizeof (dtv_t)); ++ /* Resize the dtv. */ ++ dtv = _dl_resize_dtv (dtv); + +- /* Point dtv to the generation counter. */ +- dtv = &newp[1]; ++ assert (modid <= dtv[-1].counter); + + /* Install this new dtv in the thread data + structures. */ +diff -urN glibc-2.17-c758a686/nptl/Makefile glibc-2.17-c758a686/nptl/Makefile +--- glibc-2.17-c758a686/nptl/Makefile 2015-02-18 14:15:28.073462028 -0500 ++++ glibc-2.17-c758a686/nptl/Makefile 2015-02-18 14:15:49.817786667 -0500 +@@ -251,7 +251,7 @@ + tst-exec1 tst-exec2 tst-exec3 tst-exec4 \ + tst-exit1 tst-exit2 tst-exit3 \ + tst-stdio1 tst-stdio2 \ +- tst-stack1 tst-stack2 tst-stack3 tst-pthread-getattr \ ++ tst-stack1 tst-stack2 tst-stack3 tst-stack4 tst-pthread-getattr \ + tst-unload \ + tst-dlsym1 \ + tst-sysconf \ +@@ -297,7 +297,7 @@ + + modules-names = tst-atfork2mod tst-tls3mod tst-tls4moda tst-tls4modb \ + tst-tls5mod tst-tls5moda tst-tls5modb tst-tls5modc \ +- tst-tls5modd tst-tls5mode tst-tls5modf \ ++ tst-tls5modd tst-tls5mode tst-tls5modf tst-stack4mod \ + tst-_res1mod1 tst-_res1mod2 tst-execstack-mod tst-fini1mod + extra-test-objs += $(addsuffix .os,$(strip $(modules-names))) tst-cleanup4aux.o + test-extras += $(modules-names) tst-cleanup4aux +@@ -459,6 +459,19 @@ + $(common-objpfx)malloc/mtrace $(objpfx)tst-stack3.mtrace > $@ + generated += tst-stack3-mem tst-stack3.mtrace + ++$(objpfx)tst-stack4: $(libdl) $(shared-thread-library) ++tst-stack4mod.sos=$(shell for i in 0 1 2 3 4 5 6 7 8 9 10 \ ++ 11 12 13 14 15 16 17 18 19; do \ ++ for j in 0 1 2 3 4 5 6 7 8 9 10 \ ++ 11 12 13 14 15 16 17 18 19; do \ ++ echo $(objpfx)tst-stack4mod-$$i-$$j.so; \ ++ done; done) ++$(objpfx)tst-stack4.out: $(tst-stack4mod.sos) ++$(tst-stack4mod.sos): $(objpfx)tst-stack4mod.so ++ cp -f $< $@ ++clean: ++ rm -f $(tst-stack4mod.sos) ++ + $(objpfx)tst-cleanup4: $(objpfx)tst-cleanup4aux.o $(shared-thread-library) + $(objpfx)tst-cleanupx4: $(objpfx)tst-cleanup4aux.o $(shared-thread-library) + +diff -urN glibc-2.17-c758a686/nptl/tst-stack4.c glibc-2.17-c758a686/nptl/tst-stack4.c +--- glibc-2.17-c758a686/nptl/tst-stack4.c 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.17-c758a686/nptl/tst-stack4.c 2015-02-18 14:15:49.817786667 -0500 +@@ -0,0 +1,159 @@ ++/* Test DTV size oveflow when pthread_create reuses old DTV and TLS is ++ used by dlopened shared object. ++ Copyright (C) 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 ++ . */ ++ ++#include ++#include ++#include ++#include ++#include ++ ++/* The choices of thread count, and file counts are arbitary. ++ The point is simply to run enough threads that an exiting ++ thread has it's stack reused by another thread at the same ++ time as new libraries have been loaded. */ ++#define DSO_SHARED_FILES 20 ++#define DSO_OPEN_THREADS 20 ++#define DSO_EXEC_THREADS 2 ++ ++/* Used to make sure that only one thread is calling dlopen and dlclose ++ at a time. */ ++pthread_mutex_t g_lock; ++ ++typedef void (*function) (void); ++ ++void * ++dso_invoke(void *dso_fun) ++{ ++ function *fun_vec = (function *) dso_fun; ++ int dso; ++ ++ for (dso = 0; dso < DSO_SHARED_FILES; dso++) ++ (*fun_vec[dso]) (); ++ ++ pthread_exit (NULL); ++} ++ ++void * ++dso_process (void * p) ++{ ++ void *handle[DSO_SHARED_FILES]; ++ function fun_vec[DSO_SHARED_FILES]; ++ char dso_path[DSO_SHARED_FILES][100]; ++ int dso; ++ uintptr_t t = (uintptr_t) p; ++ ++ /* Open DSOs and get a function. */ ++ for (dso = 0; dso < DSO_SHARED_FILES; dso++) ++ { ++ sprintf (dso_path[dso], "tst-stack4mod-%i-%i.so", t, dso); ++ ++ pthread_mutex_lock (&g_lock); ++ ++ handle[dso] = dlopen (dso_path[dso], RTLD_NOW); ++ assert (handle[dso]); ++ ++ fun_vec[dso] = (function) dlsym (handle[dso], "function"); ++ assert (fun_vec[dso]); ++ ++ pthread_mutex_unlock (&g_lock); ++ } ++ ++ /* Spawn workers. */ ++ pthread_t thread[DSO_EXEC_THREADS]; ++ int i, ret; ++ uintptr_t result = 0; ++ for (i = 0; i < DSO_EXEC_THREADS; i++) ++ { ++ pthread_mutex_lock (&g_lock); ++ ret = pthread_create (&thread[i], NULL, dso_invoke, (void *) fun_vec); ++ if (ret != 0) ++ { ++ printf ("pthread_create failed: %d\n", ret); ++ result = 1; ++ } ++ pthread_mutex_unlock (&g_lock); ++ } ++ ++ if (!result) ++ for (i = 0; i < DSO_EXEC_THREADS; i++) ++ { ++ ret = pthread_join (thread[i], NULL); ++ if (ret != 0) ++ { ++ printf ("pthread_join failed: %d\n", ret); ++ result = 1; ++ } ++ } ++ ++ /* Close all DSOs. */ ++ for (dso = 0; dso < DSO_SHARED_FILES; dso++) ++ { ++ pthread_mutex_lock (&g_lock); ++ dlclose (handle[dso]); ++ pthread_mutex_unlock (&g_lock); ++ } ++ ++ /* Exit. */ ++ pthread_exit ((void *) result); ++} ++ ++static int ++do_test (void) ++{ ++ pthread_t thread[DSO_OPEN_THREADS]; ++ int i,j; ++ int ret; ++ int result = 0; ++ ++ pthread_mutex_init (&g_lock, NULL); ++ ++ /* 100 is arbitrary here and is known to trigger PR 13862. */ ++ for (j = 0; j < 100; j++) ++ { ++ for (i = 0; i < DSO_OPEN_THREADS; i++) ++ { ++ ret = pthread_create (&thread[i], NULL, dso_process, ++ (void *) (uintptr_t) i); ++ if (ret != 0) ++ { ++ printf ("pthread_create failed: %d\n", ret); ++ result = 1; ++ } ++ } ++ ++ if (result) ++ break; ++ ++ for (i = 0; i < DSO_OPEN_THREADS; i++) ++ { ++ ret = pthread_join (thread[i], NULL); ++ if (ret != 0) ++ { ++ printf ("pthread_join failed: %d\n", ret); ++ result = 1; ++ } ++ } ++ } ++ ++ return result; ++} ++ ++#define TEST_FUNCTION do_test () ++#define TIMEOUT 100 ++#include "../test-skeleton.c" +diff -urN glibc-2.17-c758a686/nptl/tst-stack4mod.c glibc-2.17-c758a686/nptl/tst-stack4mod.c +--- glibc-2.17-c758a686/nptl/tst-stack4mod.c 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.17-c758a686/nptl/tst-stack4mod.c 2015-02-18 14:15:49.817786667 -0500 +@@ -0,0 +1,28 @@ ++/* This tests DTV usage with TLS in dlopened shared object. ++ Copyright (C) 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 ++ . */ ++ ++/* 256 is arbitrary here and is known to trigger PR 13862. */ ++__thread int var[256] attribute_hidden = {0}; ++ ++void ++function (void) ++{ ++ int i; ++ for (i = 0; i < sizeof (var) / sizeof (int); i++) ++ var[i] = i; ++} diff --git a/SOURCES/glibc-rh1193797.patch b/SOURCES/glibc-rh1193797.patch new file mode 100644 index 0000000..1827403 --- /dev/null +++ b/SOURCES/glibc-rh1193797.patch @@ -0,0 +1,798 @@ +--- glibc-2.17-c758a686/nscd/cache.c 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/nscd/cache.c 2015-05-13 13:45:57.259958374 -0400 +@@ -272,28 +272,38 @@ + while (runp != NULL) + { + #ifdef HAVE_INOTIFY +- if (runp->inotify_descr == -1) ++ if (runp->inotify_descr[TRACED_FILE] == -1) + #endif + { + struct stat64 st; + + if (stat64 (runp->fname, &st) < 0) + { ++ /* Print a diagnostic that the traced file was missing. ++ We must not disable tracing since the file might return ++ shortly and we want to reload it at the next pruning. ++ Disabling tracing here would go against the configuration ++ as specified by the user via check-files. */ + char buf[128]; +- /* We cannot stat() the file, disable file checking if the +- file does not exist. */ +- dbg_log (_("cannot stat() file `%s': %s"), ++ dbg_log (_("checking for monitored file `%s': %s"), + runp->fname, strerror_r (errno, buf, sizeof (buf))); +- if (errno == ENOENT) +- table->check_file = 0; + } + else + { +- if (st.st_mtime != table->file_mtime) ++ /* This must be `!=` to catch cases where users turn the ++ clocks back and we still want to detect any time difference ++ in mtime. */ ++ if (st.st_mtime != runp->mtime) + { +- /* The file changed. Invalidate all entries. */ ++ dbg_log (_("monitored file `%s` changed (mtime)"), ++ runp->fname); ++ /* The file changed. Invalidate all entries. */ + now = LONG_MAX; +- table->file_mtime = st.st_mtime; ++ runp->mtime = st.st_mtime; ++#ifdef HAVE_INOTIFY ++ /* Attempt to install a watch on the file. */ ++ install_watches (runp); ++#endif + } + } + } +--- glibc-2.17-c758a686/nscd/connections.c 2015-05-12 15:03:02.870274443 -0400 ++++ glibc-2.17-c758a686/nscd/connections.c 2015-05-13 13:45:57.259958374 -0400 +@@ -974,6 +974,44 @@ + finish_drop_privileges (); + } + ++#ifdef HAVE_INOTIFY ++#define TRACED_FILE_MASK (IN_DELETE_SELF | IN_CLOSE_WRITE | IN_MOVE_SELF) ++#define TRACED_DIR_MASK (IN_DELETE_SELF | IN_CREATE | IN_MOVED_TO | IN_MOVE_SELF) ++void ++install_watches (struct traced_file *finfo) ++{ ++ /* Use inotify support if we have it. */ ++ if (finfo->inotify_descr[TRACED_FILE] < 0) ++ finfo->inotify_descr[TRACED_FILE] = inotify_add_watch (inotify_fd, ++ finfo->fname, ++ TRACED_FILE_MASK); ++ if (finfo->inotify_descr[TRACED_FILE] < 0) ++ { ++ dbg_log (_("disabled inotify-based monitoring for file `%s': %s"), ++ finfo->fname, strerror (errno)); ++ return; ++ } ++ dbg_log (_("monitoring file `%s` (%d)"), ++ finfo->fname, finfo->inotify_descr[TRACED_FILE]); ++ /* Additionally listen for events in the file's parent directory. ++ We do this because the file to be watched might be ++ deleted and then added back again. When it is added back again ++ we must re-add the watch. We must also cover IN_MOVED_TO to ++ detect a file being moved into the directory. */ ++ if (finfo->inotify_descr[TRACED_DIR] < 0) ++ finfo->inotify_descr[TRACED_DIR] = inotify_add_watch (inotify_fd, ++ finfo->dname, ++ TRACED_DIR_MASK); ++ if (finfo->inotify_descr[TRACED_DIR] < 0) ++ { ++ dbg_log (_("disabled inotify-based monitoring for directory `%s': %s"), ++ finfo->fname, strerror (errno)); ++ return; ++ } ++ dbg_log (_("monitoring directory `%s` (%d)"), ++ finfo->dname, finfo->inotify_descr[TRACED_DIR]); ++} ++#endif + + void + register_traced_file (size_t dbidx, struct traced_file *finfo) +@@ -982,30 +1020,24 @@ + return; + + if (__builtin_expect (debug_level > 0, 0)) +- dbg_log (_("register trace file %s for database %s"), +- finfo->fname, dbnames[dbidx]); ++ dbg_log (_("monitoring file `%s' for database `%s' (%d)"), ++ finfo->fname, dbnames[dbidx], ++ finfo->inotify_descr[TRACED_DIR]); + + #ifdef HAVE_INOTIFY +- if (inotify_fd < 0 +- || (finfo->inotify_descr = inotify_add_watch (inotify_fd, finfo->fname, +- IN_DELETE_SELF +- | IN_MODIFY)) < 0) ++ install_watches (finfo); + #endif +- { +- /* We need the modification date of the file. */ +- struct stat64 st; +- +- if (stat64 (finfo->fname, &st) < 0) +- { +- /* We cannot stat() the file, disable file checking. */ +- dbg_log (_("cannot stat() file `%s': %s"), +- finfo->fname, strerror (errno)); +- return; +- } + +- finfo->inotify_descr = -1; +- finfo->mtime = st.st_mtime; ++ struct stat64 st; ++ if (stat64 (finfo->fname, &st) < 0) ++ { ++ /* We cannot stat() the file. Set mtime to zero and try again later. */ ++ dbg_log (_("stat failed for file `%s'; will try again later: %s"), ++ finfo->fname, strerror (errno)); ++ finfo->mtime = 0; + } ++ else ++ finfo->mtime = st.st_mtime; + + /* Queue up the file name. */ + finfo->next = dbs[dbidx].traced_files; +@@ -1030,20 +1062,27 @@ + for (number = pwddb; number < lastdb; ++number) + if (strcmp (key, dbnames[number]) == 0) + { +- if (number == hstdb) ++ struct traced_file *runp = dbs[number].traced_files; ++ while (runp != NULL) + { +- struct traced_file *runp = dbs[hstdb].traced_files; +- while (runp != NULL) +- if (runp->call_res_init) +- { +- res_init (); +- break; +- } +- else +- runp = runp->next; ++ /* Make sure we reload from file when checking mtime. */ ++ runp->mtime = 0; ++#ifdef HAVE_INOTIFY ++ /* During an invalidation we try to reload the traced ++ file watches. This allows the user to re-sync if ++ inotify events were lost. Similar to what we do during ++ pruning. */ ++ install_watches (runp); ++#endif ++ if (runp->call_res_init) ++ { ++ res_init (); ++ break; ++ } ++ runp = runp->next; + } + break; +- } ++ } + + if (number == lastdb) + { +@@ -1871,6 +1910,234 @@ + static time_t *starttime; + + ++#ifdef HAVE_INOTIFY ++/* Inotify event for changed file. */ ++union __inev ++{ ++ struct inotify_event i; ++# ifndef PATH_MAX ++# define PATH_MAX 1024 ++# endif ++ char buf[sizeof (struct inotify_event) + PATH_MAX]; ++}; ++ ++/* Returns 0 if the file is there otherwise -1. */ ++int ++check_file (struct traced_file *finfo) ++{ ++ struct stat64 st; ++ /* We could check mtime and if different re-add ++ the watches, and invalidate the database, but we ++ don't because we are called from inotify_check_files ++ which should be doing that work. If sufficient inotify ++ events were lost then the next pruning or invalidation ++ will do the stat and mtime check. We don't do it here to ++ keep the logic simple. */ ++ if (stat64 (finfo->fname, &st) < 0) ++ return -1; ++ return 0; ++} ++ ++/* Process the inotify event in INEV. If the event matches any of the files ++ registered with a database then mark that database as requiring its cache ++ to be cleared. We indicate the cache needs clearing by setting ++ TO_CLEAR[DBCNT] to true for the matching database. */ ++static void ++inotify_check_files (bool *to_clear, union __inev *inev) ++{ ++ /* Check which of the files changed. */ ++ for (size_t dbcnt = 0; dbcnt < lastdb; ++dbcnt) ++ { ++ struct traced_file *finfo = dbs[dbcnt].traced_files; ++ ++ while (finfo != NULL) ++ { ++ /* The configuration file was moved or deleted. ++ We stop watching it at that point, and reinitialize. */ ++ if (finfo->inotify_descr[TRACED_FILE] == inev->i.wd ++ && ((inev->i.mask & IN_MOVE_SELF) ++ || (inev->i.mask & IN_DELETE_SELF) ++ || (inev->i.mask & IN_IGNORED))) ++ { ++ int ret; ++ bool moved = (inev->i.mask & IN_MOVE_SELF) != 0; ++ ++ if (check_file (finfo) == 0) ++ { ++ dbg_log (_("ignored inotify event for `%s` (file exists)"), ++ finfo->fname); ++ return; ++ } ++ ++ dbg_log (_("monitored file `%s` was %s, removing watch"), ++ finfo->fname, moved ? "moved" : "deleted"); ++ /* File was moved out, remove the watch. Watches are ++ automatically removed when the file is deleted. */ ++ if (moved) ++ { ++ ret = inotify_rm_watch (inotify_fd, inev->i.wd); ++ if (ret < 0) ++ dbg_log (_("failed to remove file watch `%s`: %s"), ++ finfo->fname, strerror (errno)); ++ } ++ finfo->inotify_descr[TRACED_FILE] = -1; ++ to_clear[dbcnt] = true; ++ if (finfo->call_res_init) ++ res_init (); ++ return; ++ } ++ /* The configuration file was open for writing and has just closed. ++ We reset the cache and reinitialize. */ ++ if (finfo->inotify_descr[TRACED_FILE] == inev->i.wd ++ && inev->i.mask & IN_CLOSE_WRITE) ++ { ++ /* Mark cache as needing to be cleared and reinitialize. */ ++ dbg_log (_("monitored file `%s` was written to"), finfo->fname); ++ to_clear[dbcnt] = true; ++ if (finfo->call_res_init) ++ res_init (); ++ return; ++ } ++ /* The parent directory was moved or deleted. We trigger one last ++ invalidation. At the next pruning or invalidation we may add ++ this watch back if the file is present again. */ ++ if (finfo->inotify_descr[TRACED_DIR] == inev->i.wd ++ && ((inev->i.mask & IN_DELETE_SELF) ++ || (inev->i.mask & IN_MOVE_SELF) ++ || (inev->i.mask & IN_IGNORED))) ++ { ++ bool moved = (inev->i.mask & IN_MOVE_SELF) != 0; ++ /* The directory watch may have already been removed ++ but we don't know so we just remove it again and ++ ignore the error. Then we remove the file watch. ++ Note: watches are automatically removed for deleted ++ files. */ ++ if (moved) ++ inotify_rm_watch (inotify_fd, inev->i.wd); ++ if (finfo->inotify_descr[TRACED_FILE] != -1) ++ { ++ dbg_log (_("monitored parent directory `%s` was %s, removing watch on `%s`"), ++ finfo->dname, moved ? "moved" : "deleted", finfo->fname); ++ if (inotify_rm_watch (inotify_fd, finfo->inotify_descr[TRACED_FILE]) < 0) ++ dbg_log (_("failed to remove file watch `%s`: %s"), ++ finfo->dname, strerror (errno)); ++ } ++ finfo->inotify_descr[TRACED_FILE] = -1; ++ finfo->inotify_descr[TRACED_DIR] = -1; ++ to_clear[dbcnt] = true; ++ if (finfo->call_res_init) ++ res_init (); ++ /* Continue to the next entry since this might be the ++ parent directory for multiple registered files and ++ we want to remove watches for all registered files. */ ++ continue; ++ } ++ /* The parent directory had a create or moved to event. */ ++ if (finfo->inotify_descr[TRACED_DIR] == inev->i.wd ++ && ((inev->i.mask & IN_MOVED_TO) ++ || (inev->i.mask & IN_CREATE)) ++ && strcmp (inev->i.name, finfo->sfname) == 0) ++ { ++ /* We detected a directory change. We look for the creation ++ of the file we are tracking or the move of the same file ++ into the directory. */ ++ int ret; ++ dbg_log (_("monitored file `%s` was %s, adding watch"), ++ finfo->fname, ++ inev->i.mask & IN_CREATE ? "created" : "moved into place"); ++ /* File was moved in or created. Regenerate the watch. */ ++ if (finfo->inotify_descr[TRACED_FILE] != -1) ++ inotify_rm_watch (inotify_fd, ++ finfo->inotify_descr[TRACED_FILE]); ++ ++ ret = inotify_add_watch (inotify_fd, ++ finfo->fname, ++ TRACED_FILE_MASK); ++ if (ret < 0) ++ dbg_log (_("failed to add file watch `%s`: %s"), ++ finfo->fname, strerror (errno)); ++ ++ finfo->inotify_descr[TRACED_FILE] = ret; ++ ++ /* The file is new or moved so mark cache as needing to ++ be cleared and reinitialize. */ ++ to_clear[dbcnt] = true; ++ if (finfo->call_res_init) ++ res_init (); ++ ++ /* Done re-adding the watch. Don't return, we may still ++ have other files in this same directory, same watch ++ descriptor, and need to process them. */ ++ } ++ /* Other events are ignored, and we move on to the next file. */ ++ finfo = finfo->next; ++ } ++ } ++} ++ ++/* If an entry in the array of booleans TO_CLEAR is TRUE then clear the cache ++ for the associated database, otherwise do nothing. The TO_CLEAR array must ++ have LASTDB entries. */ ++static inline void ++clear_db_cache (bool *to_clear) ++{ ++ for (size_t dbcnt = 0; dbcnt < lastdb; ++dbcnt) ++ if (to_clear[dbcnt]) ++ { ++ pthread_mutex_lock (&dbs[dbcnt].prune_lock); ++ dbs[dbcnt].clear_cache = 1; ++ pthread_mutex_unlock (&dbs[dbcnt].prune_lock); ++ pthread_cond_signal (&dbs[dbcnt].prune_cond); ++ } ++} ++ ++int ++handle_inotify_events (void) ++{ ++ bool to_clear[lastdb] = { false, }; ++ union __inev inev; ++ ++ /* Read all inotify events for files registered via ++ register_traced_file(). */ ++ while (1) ++ { ++ /* Potentially read multiple events into buf. */ ++ ssize_t nb = TEMP_FAILURE_RETRY (read (inotify_fd, ++ &inev.buf, ++ sizeof (inev))); ++ if (nb < (ssize_t) sizeof (struct inotify_event)) ++ { ++ /* Not even 1 event. */ ++ if (__glibc_unlikely (nb == -1 && errno != EAGAIN)) ++ return -1; ++ /* Done reading events that are ready. */ ++ break; ++ } ++ /* Process all events. The normal inotify interface delivers ++ complete events on a read and never a partial event. */ ++ char *eptr = &inev.buf[0]; ++ ssize_t count; ++ while (1) ++ { ++ /* Check which of the files changed. */ ++ inotify_check_files (to_clear, &inev); ++ count = sizeof (struct inotify_event) + inev.i.len; ++ eptr += count; ++ nb -= count; ++ if (nb >= (ssize_t) sizeof (struct inotify_event)) ++ memcpy (&inev, eptr, nb); ++ else ++ break; ++ } ++ continue; ++ } ++ /* Actually perform the cache clearing. */ ++ clear_db_cache (to_clear); ++ return 0; ++} ++ ++#endif ++ + static void + __attribute__ ((__noreturn__)) + main_loop_poll (void) +@@ -1975,72 +2242,21 @@ + { + if (conns[1].revents != 0) + { +- bool to_clear[lastdb] = { false, }; +- union +- { +-# ifndef PATH_MAX +-# define PATH_MAX 1024 +-# endif +- struct inotify_event i; +- char buf[sizeof (struct inotify_event) + PATH_MAX]; +- } inev; +- +- while (1) +- { +- ssize_t nb = TEMP_FAILURE_RETRY (read (inotify_fd, &inev, +- sizeof (inev))); +- if (nb < (ssize_t) sizeof (struct inotify_event)) +- { +- if (__builtin_expect (nb == -1 && errno != EAGAIN, +- 0)) +- { +- /* Something went wrong when reading the inotify +- data. Better disable inotify. */ +- dbg_log (_("\ +-disabled inotify after read error %d"), +- errno); +- conns[1].fd = -1; +- firstfree = 1; +- if (nused == 2) +- nused = 1; +- close (inotify_fd); +- inotify_fd = -1; +- } +- break; +- } +- +- /* Check which of the files changed. */ +- for (size_t dbcnt = 0; dbcnt < lastdb; ++dbcnt) +- { +- struct traced_file *finfo = dbs[dbcnt].traced_files; +- +- while (finfo != NULL) +- { +- if (finfo->inotify_descr == inev.i.wd) +- { +- to_clear[dbcnt] = true; +- if (finfo->call_res_init) +- res_init (); +- goto next; +- } +- +- finfo = finfo->next; +- } +- } +- next:; +- } +- +- /* Actually perform the cache clearing. */ +- for (size_t dbcnt = 0; dbcnt < lastdb; ++dbcnt) +- if (to_clear[dbcnt]) +- { +- pthread_mutex_lock (&dbs[dbcnt].prune_lock); +- dbs[dbcnt].clear_cache = 1; +- pthread_mutex_unlock (&dbs[dbcnt].prune_lock); +- pthread_cond_signal (&dbs[dbcnt].prune_cond); +- } +- +- --n; ++ int ret; ++ ret = handle_inotify_events (); ++ if (ret == -1) ++ { ++ /* Something went wrong when reading the inotify ++ data. Better disable inotify. */ ++ dbg_log (_("disabled inotify-based monitoring after read error %d"), errno); ++ conns[1].fd = -1; ++ firstfree = 1; ++ if (nused == 2) ++ nused = 1; ++ close (inotify_fd); ++ inotify_fd = -1; ++ } ++ --n; + } + + first = 2; +@@ -2207,64 +2423,18 @@ + # ifdef HAVE_INOTIFY + else if (revs[cnt].data.fd == inotify_fd) + { +- bool to_clear[lastdb] = { false, }; +- union +- { +- struct inotify_event i; +- char buf[sizeof (struct inotify_event) + PATH_MAX]; +- } inev; +- +- while (1) ++ int ret; ++ ret = handle_inotify_events (); ++ if (ret == -1) + { +- ssize_t nb = TEMP_FAILURE_RETRY (read (inotify_fd, &inev, +- sizeof (inev))); +- if (nb < (ssize_t) sizeof (struct inotify_event)) +- { +- if (__builtin_expect (nb == -1 && errno != EAGAIN, 0)) +- { +- /* Something went wrong when reading the inotify +- data. Better disable inotify. */ +- dbg_log (_("disabled inotify after read error %d"), +- errno); +- (void) epoll_ctl (efd, EPOLL_CTL_DEL, inotify_fd, +- NULL); +- close (inotify_fd); +- inotify_fd = -1; +- } +- break; +- } +- +- /* Check which of the files changed. */ +- for (size_t dbcnt = 0; dbcnt < lastdb; ++dbcnt) +- { +- struct traced_file *finfo = dbs[dbcnt].traced_files; +- +- while (finfo != NULL) +- { +- if (finfo->inotify_descr == inev.i.wd) +- { +- to_clear[dbcnt] = true; +- if (finfo->call_res_init) +- res_init (); +- goto next; +- } +- +- finfo = finfo->next; +- } +- } +- next:; +- } +- +- /* Actually perform the cache clearing. */ +- for (size_t dbcnt = 0; dbcnt < lastdb; ++dbcnt) +- if (to_clear[dbcnt]) +- { +- pthread_mutex_lock (&dbs[dbcnt].prune_lock); +- dbs[dbcnt].clear_cache = 1; +- pthread_mutex_unlock (&dbs[dbcnt].prune_lock); +- pthread_cond_signal (&dbs[dbcnt].prune_cond); +- } +- } ++ /* Something went wrong when reading the inotify ++ data. Better disable inotify. */ ++ dbg_log (_("disabled inotify-based monitoring after read error %d"), errno); ++ close (inotify_fd); ++ inotify_fd = -1; ++ break; ++ } ++ } + # endif + # ifdef HAVE_NETLINK + else if (revs[cnt].data.fd == nl_status_fd) +@@ -2300,7 +2470,9 @@ + no reply in too long of a time. */ + time_t laststart = now - ACCEPT_TIMEOUT; + assert (starttime[sock] == 0); ++# ifdef HAVE_INOTIFY + assert (inotify_fd == -1 || starttime[inotify_fd] == 0); ++# endif + assert (nl_status_fd == -1 || starttime[nl_status_fd] == 0); + for (int cnt = highest; cnt > STDERR_FILENO; --cnt) + if (starttime[cnt] != 0 && starttime[cnt] < laststart) +--- glibc-2.17-c758a686/nscd/nscd.h 2015-05-12 15:03:02.870274443 -0400 ++++ glibc-2.17-c758a686/nscd/nscd.h 2015-05-13 13:45:57.259958374 -0400 +@@ -61,17 +61,67 @@ + 80% of the thread stack size. */ + #define MAX_STACK_USE ((8 * NSCD_THREAD_STACKSIZE) / 10) + +- +-/* Registered filename used to fill database. */ ++/* Records the file registered per database that when changed ++ or modified requires invalidating the database. */ + struct traced_file + { ++ /* Tracks the last modified time of the traced file. */ + time_t mtime; ++ /* Support multiple registered files per database. */ + struct traced_file *next; + int call_res_init; +- int inotify_descr; ++ /* Requires Inotify support to do anything useful. */ ++#define TRACED_FILE 0 ++#define TRACED_DIR 1 ++ int inotify_descr[2]; ++# ifndef PATH_MAX ++# define PATH_MAX 1024 ++# endif ++ /* The parent directory is used to scan for creation/deletion. */ ++ char dname[PATH_MAX]; ++ /* Just the name of the file with no directory component. */ ++ char *sfname; ++ /* The full-path name of the registered file. */ + char fname[]; + }; + ++/* Initialize a `struct traced_file`. As input we need the name ++ of the file, and if invalidation requires calling res_init. ++ If CRINIT is 1 then res_init will be called after invalidation ++ or if the traced file is changed in any way, otherwise it will ++ not. */ ++static inline void ++init_traced_file(struct traced_file *file, const char *fname, int crinit) ++{ ++ char *dname; ++ file->mtime = 0; ++ file->inotify_descr[TRACED_FILE] = -1; ++ file->inotify_descr[TRACED_DIR] = -1; ++ strcpy (file->fname, fname); ++ /* Compute the parent directory name and store a copy. The copy makes ++ it much faster to add/remove watches while nscd is running instead ++ of computing this over and over again in a temp buffer. */ ++ file->dname[0] = '\0'; ++ dname = strrchr (fname, '/'); ++ if (dname != NULL) ++ { ++ size_t len = (size_t)(dname - fname); ++ if (len > sizeof (file->dname)) ++ abort (); ++ strncpy (file->dname, file->fname, len); ++ file->dname[len] = '\0'; ++ } ++ /* The basename is the name just after the last forward slash. */ ++ file->sfname = &dname[1]; ++ file->call_res_init = crinit; ++} ++ ++#define define_traced_file(id, filename) \ ++static union \ ++{ \ ++ struct traced_file file; \ ++ char buf[sizeof (struct traced_file) + sizeof (filename)]; \ ++} id##_traced_file; + + /* Structure describing dynamic part of one database. */ + struct database_dyn +@@ -90,7 +140,6 @@ + int propagate; + struct traced_file *traced_files; + const char *db_filename; +- time_t file_mtime; + size_t suggested_module; + size_t max_db_size; + +@@ -216,6 +265,9 @@ + /* connections.c */ + extern void nscd_init (void); + extern void register_traced_file (size_t dbidx, struct traced_file *finfo); ++#ifdef HAVE_INOTIFY ++extern void install_watches (struct traced_file *finfo); ++#endif + extern void close_sockets (void); + extern void start_threads (void) __attribute__ ((__noreturn__)); + +--- glibc-2.17-c758a686/nss/nss_db/db-init.c 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/nss/nss_db/db-init.c 2015-05-13 13:45:57.269958504 -0400 +@@ -22,35 +22,25 @@ + #include + #include + +-static union +-{ +- struct traced_file file; +- char buf[sizeof (struct traced_file) + sizeof (_PATH_VARDB "passwd.db")]; +-} pwd_traced_file; +- +-static union +-{ +- struct traced_file file; +- char buf[sizeof (struct traced_file) + sizeof (_PATH_VARDB "group.db")]; +-} grp_traced_file; ++#define PWD_FILENAME (_PATH_VARDB "passwd.db") ++define_traced_file (pwd, PWD_FILENAME); + +-static union +-{ +- struct traced_file file; +- char buf[sizeof (struct traced_file) + sizeof (_PATH_VARDB "services.db")]; +-} serv_traced_file; ++#define GRP_FILENAME (_PATH_VARDB "group.db") ++define_traced_file (grp, GRP_FILENAME); + ++#define SERV_FILENAME (_PATH_VARDB "services.db") ++define_traced_file (serv, SERV_FILENAME); + + void + _nss_db_init (void (*cb) (size_t, struct traced_file *)) + { +- strcpy (pwd_traced_file.file.fname,_PATH_VARDB "passwd.db"); ++ init_traced_file (&pwd_traced_file.file, PWD_FILENAME, 0); + cb (pwddb, &pwd_traced_file.file); + +- strcpy (grp_traced_file.file.fname, _PATH_VARDB "group.db"); ++ init_traced_file (&grp_traced_file.file, GRP_FILENAME, 0); + cb (grpdb, &grp_traced_file.file); + +- strcpy (serv_traced_file.file.fname, _PATH_VARDB "services.db"); ++ init_traced_file (&serv_traced_file.file, SERV_FILENAME, 0); + cb (servdb, &serv_traced_file.file); + } + +--- glibc-2.17-c758a686/nss/nss_files/files-init.c 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/nss/nss_files/files-init.c 2015-05-13 13:45:57.269958504 -0400 +@@ -18,43 +18,46 @@ + + #ifdef USE_NSCD + ++#include + #include + ++#define PWD_FILENAME "/etc/passwd" ++define_traced_file (pwd, PWD_FILENAME); + +-#define TF(id, filename, ...) \ +-static union \ +-{ \ +- struct traced_file file; \ +- char buf[sizeof (struct traced_file) + sizeof (filename)]; \ +-} id##_traced_file = \ +- { \ +- .file = \ +- { \ +- .fname = filename, ## __VA_ARGS__ \ +- } \ +- } +- +-TF (pwd, "/etc/passwd"); +-TF (grp, "/etc/group"); +-TF (hst, "/etc/hosts"); +-TF (resolv, "/etc/resolv.conf", .call_res_init = 1); +-TF (serv, "/etc/services"); +-TF (netgr, "/etc/netgroup"); +- +- ++#define GRP_FILENAME "/etc/group" ++define_traced_file (grp, GRP_FILENAME); ++ ++#define HST_FILENAME "/etc/hosts" ++define_traced_file (hst, HST_FILENAME); ++ ++#define RESOLV_FILENAME "/etc/resolv.conf" ++define_traced_file (resolv, RESOLV_FILENAME); ++ ++#define SERV_FILENAME "/etc/services" ++define_traced_file (serv, SERV_FILENAME); ++ ++#define NETGR_FILENAME "/etc/netgroup" ++define_traced_file (netgr, NETGR_FILENAME); ++ + void + _nss_files_init (void (*cb) (size_t, struct traced_file *)) + { ++ init_traced_file (&pwd_traced_file.file, PWD_FILENAME, 0); + cb (pwddb, &pwd_traced_file.file); + ++ init_traced_file (&grp_traced_file.file, GRP_FILENAME, 0); + cb (grpdb, &grp_traced_file.file); + ++ init_traced_file (&hst_traced_file.file, HST_FILENAME, 0); + cb (hstdb, &hst_traced_file.file); + ++ init_traced_file (&resolv_traced_file.file, RESOLV_FILENAME, 1); + cb (hstdb, &resolv_traced_file.file); + ++ init_traced_file (&serv_traced_file.file, SERV_FILENAME, 0); + cb (servdb, &serv_traced_file.file); +- ++ ++ init_traced_file (&netgr_traced_file.file, NETGR_FILENAME, 0); + cb (netgrdb, &netgr_traced_file.file); + } + diff --git a/SOURCES/glibc-rh1194143.patch b/SOURCES/glibc-rh1194143.patch new file mode 100644 index 0000000..a5f2e1d --- /dev/null +++ b/SOURCES/glibc-rh1194143.patch @@ -0,0 +1,18 @@ +commit f9d2d03254a58d92635a311a42253eeed5a40a47 +Author: Andreas Schwab +Date: Mon May 26 18:01:31 2014 +0200 + + Fix invalid file descriptor reuse while sending DNS query (BZ #15946) + +diff --git glibc-2.17-c758a686/resolv/res_send.c glibc-2.17-c758a686/resolv/res_send.c +index 3273d55..af42b8a 100644 +--- glibc-2.17-c758a686/resolv/res_send.c ++++ glibc-2.17-c758a686/resolv/res_send.c +@@ -1410,6 +1410,7 @@ send_dg(res_state statp, + retval = reopen (statp, terrno, ns); + if (retval <= 0) + return retval; ++ pfd[0].fd = EXT(statp).nssocks[ns]; + } + } + goto wait; diff --git a/SOURCES/glibc-rh1195762.patch b/SOURCES/glibc-rh1195762.patch new file mode 100644 index 0000000..be26b8a --- /dev/null +++ b/SOURCES/glibc-rh1195762.patch @@ -0,0 +1,33 @@ +commit bdf1ff052a8e23d637f2c838fa5642d78fcedc33 +Author: Paul Pluzhnikov +Date: Sun Feb 22 12:01:47 2015 -0800 + + Fix BZ #17269 -- _IO_wstr_overflow integer overflow + +diff --git a/libio/wstrops.c b/libio/wstrops.c +index 43d847d..3993579 100644 +--- a/libio/wstrops.c ++++ b/libio/wstrops.c +@@ -95,8 +95,11 @@ _IO_wstr_overflow (fp, c) + wchar_t *old_buf = fp->_wide_data->_IO_buf_base; + size_t old_wblen = _IO_wblen (fp); + _IO_size_t new_size = 2 * old_wblen + 100; +- if (new_size < old_wblen) ++ ++ if (__glibc_unlikely (new_size < old_wblen) ++ || __glibc_unlikely (new_size > SIZE_MAX / sizeof (wchar_t))) + return EOF; ++ + new_buf + = (wchar_t *) (*((_IO_strfile *) fp)->_s._allocate_buffer) (new_size + * sizeof (wchar_t)); +@@ -186,6 +189,9 @@ enlarge_userbuf (_IO_FILE *fp, _IO_off64_t offset, int reading) + return 1; + + _IO_size_t newsize = offset + 100; ++ if (__glibc_unlikely (newsize > SIZE_MAX / sizeof (wchar_t))) ++ return 1; ++ + wchar_t *oldbuf = wd->_IO_buf_base; + wchar_t *newbuf + = (wchar_t *) (*((_IO_strfile *) fp)->_s._allocate_buffer) (newsize diff --git a/SOURCES/glibc-rh1197730-1.patch b/SOURCES/glibc-rh1197730-1.patch new file mode 100644 index 0000000..1f4997d --- /dev/null +++ b/SOURCES/glibc-rh1197730-1.patch @@ -0,0 +1,104 @@ +commit b3a9f56ba59c3d8eadd3135a1c25c37a63151450 +Author: Andreas Schwab +Date: Wed Jun 18 11:58:45 2014 +0200 + + Don't read past end of pattern in fnmatch (BZ #17062) + +diff --git glibc-2.17-c758a686/posix/fnmatch_loop.c glibc-2.17-c758a686/posix/fnmatch_loop.c +index f79d051..544769b 100644 +--- glibc-2.17-c758a686/posix/fnmatch_loop.c ++++ glibc-2.17-c758a686/posix/fnmatch_loop.c +@@ -899,11 +899,8 @@ FCT (pattern, string, string_end, no_leading_period, flags, ends, alloca_used) + + matched: + /* Skip the rest of the [...] that already matched. */ +- do ++ while ((c = *p++) != L (']')) + { +- ignore_next: +- c = *p++; +- + if (c == L('\0')) + /* [... (unterminated) loses. */ + return FNM_NOMATCH; +@@ -931,12 +928,11 @@ FCT (pattern, string, string_end, no_leading_period, flags, ends, alloca_used) + + if (c < L('a') || c >= L('z')) + { +- p = startp; +- goto ignore_next; ++ p = startp - 2; ++ break; + } + } + p += 2; +- c = *p++; + } + else if (c == L('[') && *p == L('=')) + { +@@ -947,7 +943,6 @@ FCT (pattern, string, string_end, no_leading_period, flags, ends, alloca_used) + if (c != L('=') || p[1] != L(']')) + return FNM_NOMATCH; + p += 2; +- c = *p++; + } + else if (c == L('[') && *p == L('.')) + { +@@ -962,10 +957,8 @@ FCT (pattern, string, string_end, no_leading_period, flags, ends, alloca_used) + break; + } + p += 2; +- c = *p++; + } + } +- while (c != L(']')); + if (not) + return FNM_NOMATCH; + } +diff --git glibc-2.17-c758a686/posix/tst-fnmatch3.c glibc-2.17-c758a686/posix/tst-fnmatch3.c +new file mode 100644 +index 0000000..2a83c1b +--- /dev/null ++++ glibc-2.17-c758a686/posix/tst-fnmatch3.c +@@ -0,0 +1,30 @@ ++/* Test for fnmatch not reading past the end of the pattern. ++ Copyright (C) 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 ++ . */ ++ ++#include ++ ++int ++do_test (void) ++{ ++ const char *pattern = "[[:alpha:]'[:alpha:]\0]"; ++ ++ return fnmatch (pattern, "a", 0) != FNM_NOMATCH; ++} ++ ++#define TEST_FUNCTION do_test () ++#include "../test-skeleton.c" +--- glibc-2.17-c758a686/posix/Makefile 2015-05-15 16:00:01.000000000 -0400 ++++ glibc-2.17-c758a686/posix/Makefile 2015-05-29 18:34:07.507240952 -0400 +@@ -87,7 +87,7 @@ + tst-getaddrinfo3 tst-fnmatch2 tst-cpucount tst-cpuset \ + bug-getopt1 bug-getopt2 bug-getopt3 bug-getopt4 \ + bug-getopt5 tst-getopt_long1 bug-regex34 \ +- tst-pathconf ++ tst-pathconf tst-fnmatch3 + xtests := bug-ga2 + ifeq (yes,$(build-shared)) + test-srcs := globtest diff --git a/SOURCES/glibc-rh1197730-2.patch b/SOURCES/glibc-rh1197730-2.patch new file mode 100644 index 0000000..88af8cd --- /dev/null +++ b/SOURCES/glibc-rh1197730-2.patch @@ -0,0 +1,46 @@ +commit 4a28f4d55a6cc33474c0792fe93b5942d81bf185 +Author: Andreas Schwab +Date: Thu Feb 26 14:55:24 2015 +0100 + + Fix read past end of pattern in fnmatch (bug 18032) + +diff --git glibc-2.17-c758a686/posix/fnmatch_loop.c glibc-2.17-c758a686/posix/fnmatch_loop.c +index c0cb2fc..72c5d8f 100644 +--- glibc-2.17-c758a686/posix/fnmatch_loop.c ++++ glibc-2.17-c758a686/posix/fnmatch_loop.c +@@ -945,14 +945,13 @@ FCT (pattern, string, string_end, no_leading_period, flags, ends, alloca_used) + } + else if (c == L('[') && *p == L('.')) + { +- ++p; + while (1) + { + c = *++p; +- if (c == '\0') ++ if (c == L('\0')) + return FNM_NOMATCH; + +- if (*p == L('.') && p[1] == L(']')) ++ if (c == L('.') && p[1] == L(']')) + break; + } + p += 2; +diff --git glibc-2.17-c758a686/posix/tst-fnmatch3.c glibc-2.17-c758a686/posix/tst-fnmatch3.c +index d27a557..75bc00a 100644 +--- glibc-2.17-c758a686/posix/tst-fnmatch3.c ++++ glibc-2.17-c758a686/posix/tst-fnmatch3.c +@@ -21,9 +21,11 @@ + int + do_test (void) + { +- const char *pattern = "[[:alpha:]'[:alpha:]\0]"; +- +- return fnmatch (pattern, "a", 0) != FNM_NOMATCH; ++ if (fnmatch ("[[:alpha:]'[:alpha:]\0]", "a", 0) != FNM_NOMATCH) ++ return 1; ++ if (fnmatch ("[a[.\0.]]", "a", 0) != FNM_NOMATCH) ++ return 1; ++ return 0; + } + + #define TEST_FUNCTION do_test () diff --git a/SOURCES/glibc-rh1197730-3.patch b/SOURCES/glibc-rh1197730-3.patch new file mode 100644 index 0000000..c92d299 --- /dev/null +++ b/SOURCES/glibc-rh1197730-3.patch @@ -0,0 +1,62 @@ +commit c2c6d39fab901c97c18fa3a3a3658d9dc3f7df61 +Author: Paul Pluzhnikov +Date: Mon Mar 2 13:34:22 2015 -0800 + + Fix BZ 18036 buffer overflow (read past end of buffer) in internal_fnmatch + +--- glibc-2.17-c758a686/posix/fnmatch_loop.c ++++ glibc-2.17-c758a686/posix/fnmatch_loop.c +@@ -1036,7 +1036,12 @@ END (const CHAR *pattern) + } + else if ((*p == L('?') || *p == L('*') || *p == L('+') || *p == L('@') + || *p == L('!')) && p[1] == L('(')) +- p = END (p + 1); ++ { ++ p = END (p + 1); ++ if (*p == L('\0')) ++ /* This is an invalid pattern. */ ++ return pattern; ++ } + else if (*p == L(')')) + break; + +diff --git glibc-2.17-c758a686/posix/tst-fnmatch3.c glibc-2.17-c758a686/posix/tst-fnmatch3.c +index 75bc00a..fdf9934 100644 +--- glibc-2.17-c758a686/posix/tst-fnmatch3.c ++++ glibc-2.17-c758a686/posix/tst-fnmatch3.c +@@ -17,6 +17,26 @@ + . */ + + #include ++#include ++#include ++#include ++ ++int ++do_bz18036 (void) ++{ ++ const char p[] = "**(!()"; ++ const int pagesize = getpagesize (); ++ ++ char *pattern = mmap (0, 2 * pagesize, PROT_READ|PROT_WRITE, ++ MAP_PRIVATE|MAP_ANONYMOUS, -1, 0); ++ if (pattern == MAP_FAILED) return 1; ++ ++ mprotect (pattern + pagesize, pagesize, PROT_NONE); ++ memset (pattern, ' ', pagesize); ++ strcpy (pattern, p); ++ ++ return fnmatch (pattern, p, FNM_EXTMATCH); ++} + + int + do_test (void) +@@ -25,7 +45,7 @@ do_test (void) + return 1; + if (fnmatch ("[a[.\0.]]", "a", 0) != FNM_NOMATCH) + return 1; +- return 0; ++ return do_bz18036 (); + } + + #define TEST_FUNCTION do_test () diff --git a/SOURCES/glibc-rh1199525.patch b/SOURCES/glibc-rh1199525.patch new file mode 100644 index 0000000..8af91ca --- /dev/null +++ b/SOURCES/glibc-rh1199525.patch @@ -0,0 +1,20 @@ +commit 2959eda9272a033863c271aff62095abd01bd4e3 +Author: Arjun Shankar +Date: Tue Apr 21 14:06:31 2015 +0200 + + CVE-2015-1781: resolv/nss_dns/dns-host.c buffer overflow [BZ#18287] + +diff --git glibc-2.17-c758a686/resolv/nss_dns/dns-host.c glibc-2.17-c758a686/resolv/nss_dns/dns-host.c +index b16b0dd..d8c5579 100644 +--- glibc-2.17-c758a686/resolv/nss_dns/dns-host.c ++++ glibc-2.17-c758a686/resolv/nss_dns/dns-host.c +@@ -613,7 +613,8 @@ + int have_to_map = 0; + uintptr_t pad = -(uintptr_t) buffer % __alignof__ (struct host_data); + buffer += pad; +- if (__builtin_expect (buflen < sizeof (struct host_data) + pad, 0)) ++ buflen = buflen > pad ? buflen - pad : 0; ++ if (__builtin_expect (buflen < sizeof (struct host_data), 0)) + { + /* The buffer is too small. */ + too_small: diff --git a/SOURCES/glibc-rh1202952.patch b/SOURCES/glibc-rh1202952.patch new file mode 100644 index 0000000..fc41f3b --- /dev/null +++ b/SOURCES/glibc-rh1202952.patch @@ -0,0 +1,636 @@ +# +# commit f8aeae347377f3dfa8cbadde057adf1827fb1d44 +# Author: Alexandre Oliva +# Date: Tue Mar 17 01:14:11 2015 -0300 +# +# Fix DTV race, assert, DTV_SURPLUS Static TLS limit, and nptl_db garbage +# +# for ChangeLog +# +# [BZ #17090] +# [BZ #17620] +# [BZ #17621] +# [BZ #17628] +# * NEWS: Update. +# * elf/dl-tls.c (_dl_update_slotinfo): Clean up outdated DTV +# entries with Static TLS too. Skip entries past the end of the +# allocated DTV, from Alan Modra. +# (tls_get_addr_tail): Update to glibc_likely/unlikely. Move +# Static TLS DTV entry set up from... +# (_dl_allocate_tls_init): ... here (fix modid assertion), ... +# * elf/dl-reloc.c (_dl_nothread_init_static_tls): ... here... +# * nptl/allocatestack.c (init_one_static_tls): ... and here... +# * elf/dlopen.c (dl_open_worker): Drop l_tls_modid upper bound +# for Static TLS. +# * elf/tlsdeschtab.h (map_generation): Return size_t. Check +# that the slot we find is associated with the given map before +# using its generation count. +# * nptl_db/db_info.c: Include ldsodefs.h. +# (rtld_global, dtv_slotinfo_list, dtv_slotinfo): New typedefs. +# * nptl_db/structs.def (DB_RTLD_VARIABLE): New macro. +# (DB_MAIN_VARIABLE, DB_RTLD_GLOBAL_FIELD): Likewise. +# (link_map::l_tls_offset): New struct field. +# (dtv_t::counter): Likewise. +# (rtld_global): New struct. +# (_rtld_global): New rtld variable. +# (dl_tls_dtv_slotinfo_list): New rtld global field. +# (dtv_slotinfo_list): New struct. +# (dtv_slotinfo): Likewise. +# * nptl_db/td_symbol_list.c: Drop gnu/lib-names.h include. +# (td_lookup): Rename to... +# (td_mod_lookup): ... this. Use new mod parameter instead of +# LIBPTHREAD_SO. +# * nptl_db/td_thr_tlsbase.c: Include link.h. +# (dtv_slotinfo_list, dtv_slotinfo): New functions. +# (td_thr_tlsbase): Check DTV generation. Compute Static TLS +# addresses even if the DTV is out of date or missing them. +# * nptl_db/fetch-value.c (_td_locate_field): Do not refuse to +# index zero-length arrays. +# * nptl_db/thread_dbP.h: Include gnu/lib-names.h. +# (td_lookup): Make it a macro implemented in terms of... +# (td_mod_lookup): ... this declaration. +# * nptl_db/db-symbols.awk (DB_RTLD_VARIABLE): Override. +# (DB_MAIN_VARIABLE): Likewise. +# +diff -urN glibc-2.17-c758a686/elf/dl-open.c glibc-2.17-c758a686/elf/dl-open.c +--- glibc-2.17-c758a686/elf/dl-open.c 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/elf/dl-open.c 2015-03-17 14:39:47.746505786 -0400 +@@ -535,17 +535,7 @@ + && imap->l_tls_blocksize > 0) + { + /* For static TLS we have to allocate the memory here and +- now. This includes allocating memory in the DTV. But we +- cannot change any DTV other than our own. So, if we +- cannot guarantee that there is room in the DTV we don't +- even try it and fail the load. +- +- XXX We could track the minimum DTV slots allocated in +- all threads. */ +- if (! RTLD_SINGLE_THREAD_P && imap->l_tls_modid > DTV_SURPLUS) +- _dl_signal_error (0, "dlopen", NULL, N_("\ +-cannot load any more object with static TLS")); +- ++ now, but we can delay updating the DTV. */ + imap->l_need_tls_init = 0; + #ifdef SHARED + /* Update the slot information data for at least the +diff -urN glibc-2.17-c758a686/elf/dl-reloc.c glibc-2.17-c758a686/elf/dl-reloc.c +--- glibc-2.17-c758a686/elf/dl-reloc.c 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/elf/dl-reloc.c 2015-03-17 14:39:47.747505754 -0400 +@@ -136,12 +136,6 @@ + # error "Either TLS_TCB_AT_TP or TLS_DTV_AT_TP must be defined" + #endif + +- /* Fill in the DTV slot so that a later LD/GD access will find it. */ +- dtv_t *dtv = THREAD_DTV (); +- assert (map->l_tls_modid <= dtv[-1].counter); +- dtv[map->l_tls_modid].pointer.val = dest; +- dtv[map->l_tls_modid].pointer.is_static = true; +- + /* Initialize the memory. */ + memset (__mempcpy (dest, map->l_tls_initimage, map->l_tls_initimage_size), + '\0', map->l_tls_blocksize - map->l_tls_initimage_size); +diff -urN glibc-2.17-c758a686/elf/dl-tls.c glibc-2.17-c758a686/elf/dl-tls.c +--- glibc-2.17-c758a686/elf/dl-tls.c 2015-03-17 14:39:31.335019227 -0400 ++++ glibc-2.17-c758a686/elf/dl-tls.c 2015-03-17 14:42:48.443852579 -0400 +@@ -432,17 +432,14 @@ + assert (listp->slotinfo[cnt].gen <= GL(dl_tls_generation)); + maxgen = MAX (maxgen, listp->slotinfo[cnt].gen); + ++ dtv[map->l_tls_modid].pointer.val = TLS_DTV_UNALLOCATED; ++ dtv[map->l_tls_modid].pointer.is_static = false; ++ + if (map->l_tls_offset == NO_TLS_OFFSET + || map->l_tls_offset == FORCED_DYNAMIC_TLS_OFFSET) +- { +- /* For dynamically loaded modules we simply store +- the value indicating deferred allocation. */ +- dtv[map->l_tls_modid].pointer.val = TLS_DTV_UNALLOCATED; +- dtv[map->l_tls_modid].pointer.is_static = false; +- continue; +- } ++ continue; + +- assert (map->l_tls_modid == cnt); ++ assert (map->l_tls_modid == total + cnt); + assert (map->l_tls_blocksize >= map->l_tls_initimage_size); + #if TLS_TCB_AT_TP + assert ((size_t) map->l_tls_offset >= map->l_tls_blocksize); +@@ -454,8 +451,6 @@ + #endif + + /* Copy the initialization image and clear the BSS part. */ +- dtv[map->l_tls_modid].pointer.val = dest; +- dtv[map->l_tls_modid].pointer.is_static = true; + memset (__mempcpy (dest, map->l_tls_initimage, + map->l_tls_initimage_size), '\0', + map->l_tls_blocksize - map->l_tls_initimage_size); +@@ -623,13 +618,16 @@ + struct link_map *map = listp->slotinfo[cnt].map; + if (map == NULL) + { +- /* If this modid was used at some point the memory +- might still be allocated. */ +- if (! dtv[total + cnt].pointer.is_static +- && dtv[total + cnt].pointer.val != TLS_DTV_UNALLOCATED) ++ if (dtv[-1].counter >= total + cnt) + { +- free (dtv[total + cnt].pointer.val); ++ /* If this modid was used at some point the memory ++ might still be allocated. */ ++ if (! dtv[total + cnt].pointer.is_static ++ && (dtv[total + cnt].pointer.val ++ != TLS_DTV_UNALLOCATED)) ++ free (dtv[total + cnt].pointer.val); + dtv[total + cnt].pointer.val = TLS_DTV_UNALLOCATED; ++ dtv[total + cnt].pointer.is_static = false; + } + + continue; +@@ -693,10 +691,8 @@ + memalign and not malloc. */ + free (dtv[modid].pointer.val); + +- /* This module is loaded dynamically- We defer memory +- allocation. */ +- dtv[modid].pointer.is_static = false; + dtv[modid].pointer.val = TLS_DTV_UNALLOCATED; ++ dtv[modid].pointer.is_static = false; + + if (modid == req_modid) + the_map = map; +@@ -734,13 +730,12 @@ + the_map = listp->slotinfo[idx].map; + } + +- again: + /* Make sure that, if a dlopen running in parallel forces the + variable into static storage, we'll wait until the address in the + static TLS block is set up, and use that. If we're undecided + yet, make sure we make the decision holding the lock as well. */ +- if (__builtin_expect (the_map->l_tls_offset +- != FORCED_DYNAMIC_TLS_OFFSET, 0)) ++ if (__glibc_unlikely (the_map->l_tls_offset ++ != FORCED_DYNAMIC_TLS_OFFSET)) + { + __rtld_lock_lock_recursive (GL(dl_load_lock)); + if (__builtin_expect (the_map->l_tls_offset == NO_TLS_OFFSET, 1)) +@@ -748,22 +743,28 @@ + the_map->l_tls_offset = FORCED_DYNAMIC_TLS_OFFSET; + __rtld_lock_unlock_recursive (GL(dl_load_lock)); + } +- else ++ else if (__glibc_likely (the_map->l_tls_offset ++ != FORCED_DYNAMIC_TLS_OFFSET)) + { ++#if TLS_TCB_AT_TP ++ void *p = (char *) THREAD_SELF - the_map->l_tls_offset; ++#elif TLS_DTV_AT_TP ++ void *p = (char *) THREAD_SELF + the_map->l_tls_offset + TLS_PRE_TCB_SIZE; ++#else ++# error "Either TLS_TCB_AT_TP or TLS_DTV_AT_TP must be defined" ++#endif + __rtld_lock_unlock_recursive (GL(dl_load_lock)); +- if (__builtin_expect (the_map->l_tls_offset +- != FORCED_DYNAMIC_TLS_OFFSET, 1)) +- { +- void *p = dtv[GET_ADDR_MODULE].pointer.val; +- if (__builtin_expect (p == TLS_DTV_UNALLOCATED, 0)) +- goto again; ++ dtv[GET_ADDR_MODULE].pointer.is_static = true; ++ dtv[GET_ADDR_MODULE].pointer.val = p; + +- return (char *) p + GET_ADDR_OFFSET; +- } ++ return (char *) p + GET_ADDR_OFFSET; + } ++ else ++ __rtld_lock_unlock_recursive (GL(dl_load_lock)); ++ + } + void *p = dtv[GET_ADDR_MODULE].pointer.val = allocate_and_init (the_map); +- dtv[GET_ADDR_MODULE].pointer.is_static = false; ++ assert (!dtv[GET_ADDR_MODULE].pointer.is_static); + + return (char *) p + GET_ADDR_OFFSET; + } +diff -urN glibc-2.17-c758a686/elf/tlsdeschtab.h glibc-2.17-c758a686/elf/tlsdeschtab.h +--- glibc-2.17-c758a686/elf/tlsdeschtab.h 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/elf/tlsdeschtab.h 2015-03-17 14:39:47.747505754 -0400 +@@ -42,7 +42,7 @@ + return tdp->tlsinfo.ti_offset == tdq->tlsinfo.ti_offset; + } + +-inline static int ++inline static size_t + map_generation (struct link_map *map) + { + size_t idx = map->l_tls_modid; +@@ -58,7 +58,7 @@ + we can assume that, if the generation count is zero, we + still haven't determined the generation count for this + module. */ +- if (listp->slotinfo[idx].gen) ++ if (listp->slotinfo[idx].map == map && listp->slotinfo[idx].gen) + return listp->slotinfo[idx].gen; + else + break; +diff -urN glibc-2.17-c758a686/nptl/allocatestack.c glibc-2.17-c758a686/nptl/allocatestack.c +--- glibc-2.17-c758a686/nptl/allocatestack.c 2015-03-17 14:39:31.342019008 -0400 ++++ glibc-2.17-c758a686/nptl/allocatestack.c 2015-03-17 14:39:47.747505754 -0400 +@@ -1157,7 +1157,6 @@ + static inline void __attribute__((always_inline)) + init_one_static_tls (struct pthread *curp, struct link_map *map) + { +- dtv_t *dtv = GET_DTV (TLS_TPADJ (curp)); + # if TLS_TCB_AT_TP + void *dest = (char *) curp - map->l_tls_offset; + # elif TLS_DTV_AT_TP +@@ -1166,11 +1165,9 @@ + # error "Either TLS_TCB_AT_TP or TLS_DTV_AT_TP must be defined" + # endif + +- /* Fill in the DTV slot so that a later LD/GD access will find it. */ +- dtv[map->l_tls_modid].pointer.val = dest; +- dtv[map->l_tls_modid].pointer.is_static = true; +- +- /* Initialize the memory. */ ++ /* We cannot delay the initialization of the Static TLS area, since ++ it can be accessed with LE or IE, but since the DTV is only used ++ by GD and LD, we can delay its update to avoid a race. */ + memset (__mempcpy (dest, map->l_tls_initimage, map->l_tls_initimage_size), + '\0', map->l_tls_blocksize - map->l_tls_initimage_size); + } +diff -urN glibc-2.17-c758a686/nptl_db/db_info.c glibc-2.17-c758a686/nptl_db/db_info.c +--- glibc-2.17-c758a686/nptl_db/db_info.c 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/nptl_db/db_info.c 2015-03-17 14:39:47.747505754 -0400 +@@ -20,6 +20,7 @@ + + #include "thread_dbP.h" + #include ++#include + + typedef struct pthread pthread; + typedef struct pthread_key_struct pthread_key_struct; +@@ -36,6 +37,9 @@ + } dtv; + + typedef struct link_map link_map; ++typedef struct rtld_global rtld_global; ++typedef struct dtv_slotinfo_list dtv_slotinfo_list; ++typedef struct dtv_slotinfo dtv_slotinfo; + + /* Actually static in nptl/init.c, but we only need it for typeof. */ + extern bool __nptl_initial_report_events; +diff -urN glibc-2.17-c758a686/nptl_db/db-symbols.awk glibc-2.17-c758a686/nptl_db/db-symbols.awk +--- glibc-2.17-c758a686/nptl_db/db-symbols.awk 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/nptl_db/db-symbols.awk 2015-03-17 14:39:47.747505754 -0400 +@@ -2,6 +2,8 @@ + # we've just built. It checks for all the symbols used in td_symbol_list. + + BEGIN { ++%define DB_RTLD_VARIABLE(name) /* Nothing. */ ++%define DB_MAIN_VARIABLE(name) /* Nothing. */ + %define DB_LOOKUP_NAME(idx, name) required[STRINGIFY (name)] = 1; + %define DB_LOOKUP_NAME_TH_UNIQUE(idx, name) th_unique[STRINGIFY (name)] = 1; + %include "db-symbols.h" +diff -urN glibc-2.17-c758a686/nptl_db/fetch-value.c glibc-2.17-c758a686/nptl_db/fetch-value.c +--- glibc-2.17-c758a686/nptl_db/fetch-value.c 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/nptl_db/fetch-value.c 2015-03-17 14:39:47.747505754 -0400 +@@ -68,7 +68,8 @@ + } + } + +- if (idx != 0 && idx - (psaddr_t) 0 > DB_DESC_NELEM (desc)) ++ if (idx != 0 && DB_DESC_NELEM (desc) != 0 ++ && idx - (psaddr_t) 0 > DB_DESC_NELEM (desc)) + /* This is an internal indicator to callers with nonzero IDX + that the IDX value is too big. */ + return TD_NOAPLIC; +diff -urN glibc-2.17-c758a686/nptl_db/structs.def glibc-2.17-c758a686/nptl_db/structs.def +--- glibc-2.17-c758a686/nptl_db/structs.def 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/nptl_db/structs.def 2015-03-17 14:44:29.779682236 -0400 +@@ -22,6 +22,28 @@ + # define STRUCTS_DEF_DEFAULTS 1 + #endif + ++#ifndef DB_RTLD_VARIABLE ++# define DB_RTLD_VARIABLE(name) DB_VARIABLE (name) ++#endif ++ ++#ifndef DB_MAIN_VARIABLE ++# define DB_MAIN_VARIABLE(name) DB_VARIABLE (name) ++#endif ++ ++#ifndef DB_RTLD_GLOBAL_FIELD ++# if !defined IS_IN_libpthread ++# define DB_RTLD_GLOBAL_FIELD(field) \ ++ DB_STRUCT_FIELD (rtld_global, _##field) \ ++ DB_MAIN_VARIABLE (_##field) ++# elif defined SHARED ++# define DB_RTLD_GLOBAL_FIELD(field) \ ++ DB_STRUCT_FIELD (rtld_global, _##field) ++# else ++# define DB_RTLD_GLOBAL_FIELD(field) \ ++ DB_MAIN_VARIABLE (_##field) ++# endif ++#endif /* DB_RTLD_GLOBAL_FIELD */ ++ + DB_STRUCT (pthread) + DB_STRUCT_FIELD (pthread, list) + DB_STRUCT_FIELD (pthread, report_events) +@@ -70,14 +92,31 @@ + DB_STRUCT_ARRAY_FIELD (pthread_key_data_level2, data) + + DB_STRUCT_FIELD (link_map, l_tls_modid) ++DB_STRUCT_FIELD (link_map, l_tls_offset) + + DB_STRUCT_ARRAY_FIELD (dtv, dtv) + #define pointer_val pointer.val /* Field of anonymous struct in dtv_t. */ + DB_STRUCT_FIELD (dtv_t, pointer_val) ++DB_STRUCT_FIELD (dtv_t, counter) + #if !defined IS_IN_libpthread || TLS_TCB_AT_TP + DB_STRUCT_FIELD (pthread, dtvp) + #endif + ++#if !(defined IS_IN_libpthread && !defined SHARED) ++DB_STRUCT (rtld_global) ++DB_RTLD_VARIABLE (_rtld_global) ++#endif ++DB_RTLD_GLOBAL_FIELD (dl_tls_dtv_slotinfo_list) ++ ++DB_STRUCT (dtv_slotinfo_list) ++DB_STRUCT_FIELD (dtv_slotinfo_list, len) ++DB_STRUCT_FIELD (dtv_slotinfo_list, next) ++DB_STRUCT_ARRAY_FIELD (dtv_slotinfo_list, slotinfo) ++ ++DB_STRUCT (dtv_slotinfo) ++DB_STRUCT_FIELD (dtv_slotinfo, gen) ++DB_STRUCT_FIELD (dtv_slotinfo, map) ++ + #ifdef STRUCTS_DEF_DEFAULTS + # undef DB_STRUCT_ARRAY_FIELD + # undef DB_ARRAY_VARIABLE +diff -urN glibc-2.17-c758a686/nptl_db/td_symbol_list.c glibc-2.17-c758a686/nptl_db/td_symbol_list.c +--- glibc-2.17-c758a686/nptl_db/td_symbol_list.c 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/nptl_db/td_symbol_list.c 2015-03-17 14:39:47.747505754 -0400 +@@ -18,7 +18,6 @@ + . */ + + #include +-#include + #include "thread_dbP.h" + + static const char *symbol_list_arr[] = +@@ -41,12 +40,12 @@ + + + ps_err_e +-td_lookup (struct ps_prochandle *ps, int idx, psaddr_t *sym_addr) ++td_mod_lookup (struct ps_prochandle *ps, const char *mod, ++ int idx, psaddr_t *sym_addr) + { + ps_err_e result; + assert (idx >= 0 && idx < SYM_NUM_MESSAGES); +- result = ps_pglobal_lookup (ps, LIBPTHREAD_SO, symbol_list_arr[idx], +- sym_addr); ++ result = ps_pglobal_lookup (ps, mod, symbol_list_arr[idx], sym_addr); + + #ifdef HAVE_ASM_GLOBAL_DOT_NAME + /* For PowerPC, 64-bit uses dot symbols but 32-bit does not. +diff -urN glibc-2.17-c758a686/nptl_db/td_thr_tlsbase.c glibc-2.17-c758a686/nptl_db/td_thr_tlsbase.c +--- glibc-2.17-c758a686/nptl_db/td_thr_tlsbase.c 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/nptl_db/td_thr_tlsbase.c 2015-03-17 14:39:47.748505723 -0400 +@@ -17,14 +17,118 @@ + . */ + + #include "thread_dbP.h" ++#include + ++/* Get the DTV slotinfo list head entry from the dynamic loader state ++ into *LISTHEAD. */ ++static td_err_e ++dtv_slotinfo_list (td_thragent_t *ta, ++ psaddr_t *listhead) ++{ ++ td_err_e err; ++ psaddr_t head; ++ ++ if (ta->ta_addr__rtld_global == 0 ++ && td_mod_lookup (ta->ph, LD_SO, SYM__rtld_global, ++ &ta->ta_addr__rtld_global) != PS_OK) ++ ta->ta_addr__rtld_global = (void*)-1; ++ ++ if (ta->ta_addr__rtld_global != (void*)-1) ++ { ++ err = DB_GET_FIELD (head, ta, ta->ta_addr__rtld_global, ++ rtld_global, _dl_tls_dtv_slotinfo_list, 0); ++ if (err != TD_OK) ++ return err; ++ } ++ else ++ { ++ if (ta->ta_addr__dl_tls_dtv_slotinfo_list == 0 ++ && td_mod_lookup (ta->ph, NULL, SYM__dl_tls_dtv_slotinfo_list, ++ &ta->ta_addr__dl_tls_dtv_slotinfo_list) != PS_OK) ++ return TD_ERR; ++ ++ err = _td_fetch_value (ta, ta->ta_var__dl_tls_dtv_slotinfo_list, ++ SYM_DESC__dl_tls_dtv_slotinfo_list, ++ 0, ta->ta_addr__dl_tls_dtv_slotinfo_list, &head); ++ if (err != TD_OK) ++ return err; ++ } ++ ++ *listhead = head; ++ return TD_OK; ++} ++ ++/* Get the address of the DTV slotinfo entry for MODID into ++ *DTVSLOTINFO. */ ++static td_err_e ++dtv_slotinfo (td_thragent_t *ta, ++ unsigned long int modid, ++ psaddr_t *dtvslotinfo) ++{ ++ td_err_e err; ++ psaddr_t slot, temp; ++ size_t slbase = 0; ++ ++ err = dtv_slotinfo_list (ta, &slot); ++ if (err != TD_OK) ++ return err; ++ ++ while (slot) ++ { ++ /* Get the number of entries in this list entry's array. */ ++ err = DB_GET_FIELD (temp, ta, slot, dtv_slotinfo_list, len, 0); ++ if (err != TD_OK) ++ return err; ++ size_t len = (uintptr_t)temp; ++ ++ /* Did we find the list entry for modid? */ ++ if (modid < slbase + len) ++ break; ++ ++ /* We didn't, so get the next list entry. */ ++ slbase += len; ++ err = DB_GET_FIELD (temp, ta, slot, dtv_slotinfo_list, ++ next, 0); ++ if (err != TD_OK) ++ return err; ++ slot = temp; ++ } ++ ++ /* We reached the end of the list and found nothing. */ ++ if (!slot) ++ return TD_ERR; ++ ++ /* Take the slotinfo for modid from the list entry. */ ++ err = DB_GET_FIELD_ADDRESS (temp, ta, slot, dtv_slotinfo_list, ++ slotinfo, modid - slbase); ++ if (err != TD_OK) ++ return err; ++ slot = temp; ++ ++ *dtvslotinfo = slot; ++ return TD_OK; ++} ++ ++/* Return in *BASE the base address of the TLS block for MODID within ++ TH. ++ ++ It should return success and yield the correct pointer in any ++ circumstance where the TLS block for the module and thread ++ requested has already been initialized. ++ ++ It should fail with TD_TLSDEFER only when the thread could not ++ possibly have observed any values in that TLS block. That way, the ++ debugger can fall back to showing initial values from the PT_TLS ++ segment (and refusing attempts to mutate) for the TD_TLSDEFER case, ++ and never fail to make the values the program will actually see ++ available to the user of the debugger. */ + td_err_e + td_thr_tlsbase (const td_thrhandle_t *th, + unsigned long int modid, + psaddr_t *base) + { + td_err_e err; +- psaddr_t dtv, dtvslot, dtvptr; ++ psaddr_t dtv, dtvslot, dtvptr, temp; + + if (modid < 1) + return TD_NOTLS; +@@ -50,11 +154,75 @@ + return TD_TLSDEFER; + } + ++ err = dtv_slotinfo (th->th_ta_p, modid, &temp); ++ if (err != TD_OK) ++ return err; ++ ++ psaddr_t slot; ++ err = DB_GET_STRUCT (slot, th->th_ta_p, temp, dtv_slotinfo); ++ if (err != TD_OK) ++ return err; ++ ++ /* Take the link_map from the slotinfo. */ ++ psaddr_t map; ++ err = DB_GET_FIELD_LOCAL (map, th->th_ta_p, slot, dtv_slotinfo, map, 0); ++ if (err != TD_OK) ++ return err; ++ if (!map) ++ return TD_ERR; ++ ++ /* Ok, the modid is good, now find out what DTV generation it ++ requires. */ ++ err = DB_GET_FIELD_LOCAL (temp, th->th_ta_p, slot, dtv_slotinfo, gen, 0); ++ if (err != TD_OK) ++ return err; ++ size_t modgen = (uintptr_t)temp; ++ + /* Get the DTV pointer from the thread descriptor. */ + err = DB_GET_FIELD (dtv, th->th_ta_p, pd, pthread, dtvp, 0); + if (err != TD_OK) + return err; + ++ psaddr_t dtvgenloc; ++ /* Get the DTV generation count at dtv[0].counter. */ ++ err = DB_GET_FIELD_ADDRESS (dtvgenloc, th->th_ta_p, dtv, dtv, dtv, 0); ++ if (err != TD_OK) ++ return err; ++ err = DB_GET_FIELD (temp, th->th_ta_p, dtvgenloc, dtv_t, counter, 0); ++ if (err != TD_OK) ++ return err; ++ size_t dtvgen = (uintptr_t)temp; ++ ++ /* Is the DTV current enough? */ ++ if (dtvgen < modgen) ++ { ++ try_static_tls: ++ /* If the module uses Static TLS, we're still good. */ ++ err = DB_GET_FIELD (temp, th->th_ta_p, map, link_map, l_tls_offset, 0); ++ if (err != TD_OK) ++ return err; ++ ptrdiff_t tlsoff = (uintptr_t)temp; ++ ++ if (tlsoff != FORCED_DYNAMIC_TLS_OFFSET ++ && tlsoff != NO_TLS_OFFSET) ++ { ++ psaddr_t tp = pd; ++ ++#if TLS_TCB_AT_TP ++ dtvptr = tp - tlsoff; ++#elif TLS_DTV_AT_TP ++ dtvptr = tp + tlsoff + TLS_PRE_TCB_SIZE; ++#else ++# error "Either TLS_TCB_AT_TP or TLS_DTV_AT_TP must be defined" ++#endif ++ ++ *base = dtvptr; ++ return TD_OK; ++ } ++ ++ return TD_TLSDEFER; ++ } ++ + /* Find the corresponding entry in the DTV. */ + err = DB_GET_FIELD_ADDRESS (dtvslot, th->th_ta_p, dtv, dtv, dtv, modid); + if (err != TD_OK) +@@ -68,7 +236,7 @@ + /* It could be that the memory for this module is not allocated for + the given thread. */ + if ((uintptr_t) dtvptr & 1) +- return TD_TLSDEFER; ++ goto try_static_tls; + + *base = dtvptr; + return TD_OK; +diff -urN glibc-2.17-c758a686/nptl_db/thread_dbP.h glibc-2.17-c758a686/nptl_db/thread_dbP.h +--- glibc-2.17-c758a686/nptl_db/thread_dbP.h 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/nptl_db/thread_dbP.h 2015-03-17 14:39:47.748505723 -0400 +@@ -29,6 +29,7 @@ + #include "thread_db.h" + #include "../nptl/pthreadP.h" /* This is for *_BITMASK only. */ + #include ++#include + + /* Indeces for the symbol names. */ + enum +@@ -139,11 +140,11 @@ + } + + +-/* Internal wrapper around ps_pglobal_lookup. */ +-extern ps_err_e td_lookup (struct ps_prochandle *ps, +- int idx, psaddr_t *sym_addr) attribute_hidden; +- +- ++/* Internal wrappers around ps_pglobal_lookup. */ ++extern ps_err_e td_mod_lookup (struct ps_prochandle *ps, const char *modname, ++ int idx, psaddr_t *sym_addr) attribute_hidden; ++#define td_lookup(ps, idx, sym_addr) \ ++ td_mod_lookup ((ps), LIBPTHREAD_SO, (idx), (sym_addr)) + + + /* Store in psaddr_t VAR the address of inferior's symbol NAME. */ diff --git a/SOURCES/glibc-rh1207032.patch b/SOURCES/glibc-rh1207032.patch new file mode 100644 index 0000000..09a5c78 --- /dev/null +++ b/SOURCES/glibc-rh1207032.patch @@ -0,0 +1,601 @@ +commit fff94fa2245612191123a8015eac94eb04f001e2 +Author: Siddhesh Poyarekar +Date: Tue May 19 06:40:37 2015 +0530 + + Avoid deadlock in malloc on backtrace (BZ #16159) + + When the malloc subsystem detects some kind of memory corruption, + depending on the configuration it prints the error, a backtrace, a + memory map and then aborts the process. In this process, the + backtrace() call may result in a call to malloc, resulting in + various kinds of problematic behavior. + + In one case, the malloc it calls may detect a corruption and call + backtrace again, and a stack overflow may result due to the infinite + recursion. In another case, the malloc it calls may deadlock on an + arena lock with the malloc (or free, realloc, etc.) that detected the + corruption. In yet another case, if the program is linked with + pthreads, backtrace may do a pthread_once initialization, which + deadlocks on itself. + + In all these cases, the program exit is not as intended. This is + avoidable by marking the arena that malloc detected a corruption on, + as unusable. The following patch does that. Features of this patch + are as follows: + + - A flag is added to the mstate struct of the arena to indicate if the + arena is corrupt. + + - The flag is checked whenever malloc functions try to get a lock on + an arena. If the arena is unusable, a NULL is returned, causing the + malloc to use mmap or try the next arena. + + - malloc_printerr sets the corrupt flag on the arena when it detects a + corruption + + - free does not concern itself with the flag at all. It is not + important since the backtrace workflow does not need free. A free + in a parallel thread may cause another corruption, but that's not + new + + - The flag check and set are not atomic and may race. This is fine + since we don't care about contention during the flag check. We want + to make sure that the malloc call in the backtrace does not trip on + itself and all that action happens in the same thread and not across + threads. + + I verified that the test case does not show any regressions due to + this patch. I also ran the malloc benchmarks and found an + insignificant difference in timings (< 2%). + +diff -pruN glibc-2.17-c758a686/malloc/arena.c glibc-2.17-c758a686/malloc/arena.c +--- glibc-2.17-c758a686/malloc/arena.c 2015-05-28 13:32:17.544433238 +0530 ++++ glibc-2.17-c758a686/malloc/arena.c 2015-05-28 15:29:02.605120231 +0530 +@@ -119,7 +119,7 @@ int __malloc_initialized = -1; + + #ifdef PER_THREAD + # define arena_lock(ptr, size) do { \ +- if(ptr) \ ++ if(ptr && !arena_is_corrupt (ptr)) \ + (void)mutex_lock(&ptr->mutex); \ + else \ + ptr = arena_get2(ptr, (size), NULL); \ +@@ -808,7 +808,7 @@ reused_arena (mstate avoid_arena) + result = next_to_use; + do + { +- if (!mutex_trylock(&result->mutex)) ++ if (!arena_is_corrupt (result) && !mutex_trylock(&result->mutex)) + goto out; + + result = result->next; +@@ -820,7 +820,21 @@ reused_arena (mstate avoid_arena) + if (result == avoid_arena) + result = result->next; + +- /* No arena available. Wait for the next in line. */ ++ /* Make sure that the arena we get is not corrupted. */ ++ mstate begin = result; ++ while (arena_is_corrupt (result) || result == avoid_arena) ++ { ++ result = result->next; ++ if (result == begin) ++ break; ++ } ++ ++ /* We could not find any arena that was either not corrupted or not the one ++ we wanted to avoid. */ ++ if (result == begin || result == avoid_arena) ++ return NULL; ++ ++ /* No arena available without contention. Wait for the next in line. */ + LIBC_PROBE (memory_arena_reuse_wait, 3, &result->mutex, result, avoid_arena); + (void)mutex_lock(&result->mutex); + +diff -pruN glibc-2.17-c758a686/malloc/hooks.c glibc-2.17-c758a686/malloc/hooks.c +--- glibc-2.17-c758a686/malloc/hooks.c 2015-05-28 13:32:17.379431450 +0530 ++++ glibc-2.17-c758a686/malloc/hooks.c 2015-05-28 15:31:14.132551554 +0530 +@@ -109,7 +109,8 @@ malloc_check_get_size(mchunkptr p) + size -= c) { + if(c<=0 || size<(c+2*SIZE_SZ)) { + malloc_printerr(check_action, "malloc_check_get_size: memory corruption", +- chunk2mem(p)); ++ chunk2mem(p), ++ chunk_is_mmapped (p) ? NULL : arena_for_chunk (p)); + return 0; + } + } +@@ -221,7 +222,8 @@ top_check(void) + return 0; + + mutex_unlock(&main_arena); +- malloc_printerr (check_action, "malloc: top chunk is corrupt", t); ++ malloc_printerr (check_action, "malloc: top chunk is corrupt", t, ++ &main_arena); + mutex_lock(&main_arena); + + /* Try to set up a new top chunk. */ +@@ -276,7 +278,8 @@ free_check(void* mem, const void *caller + if(!p) { + (void)mutex_unlock(&main_arena.mutex); + +- malloc_printerr(check_action, "free(): invalid pointer", mem); ++ malloc_printerr(check_action, "free(): invalid pointer", mem, ++ &main_arena); + return; + } + if (chunk_is_mmapped(p)) { +@@ -308,7 +311,8 @@ realloc_check(void* oldmem, size_t bytes + const mchunkptr oldp = mem2chunk_check(oldmem, &magic_p); + (void)mutex_unlock(&main_arena.mutex); + if(!oldp) { +- malloc_printerr(check_action, "realloc(): invalid pointer", oldmem); ++ malloc_printerr(check_action, "realloc(): invalid pointer", oldmem, ++ &main_arena); + return malloc_check(bytes, NULL); + } + const INTERNAL_SIZE_T oldsize = chunksize(oldp); +diff -pruN glibc-2.17-c758a686/malloc/Makefile glibc-2.17-c758a686/malloc/Makefile +--- glibc-2.17-c758a686/malloc/Makefile 2012-12-25 08:32:13.000000000 +0530 ++++ glibc-2.17-c758a686/malloc/Makefile 2015-05-28 13:34:11.967673754 +0530 +@@ -25,7 +25,8 @@ all: + dist-headers := malloc.h + headers := $(dist-headers) obstack.h mcheck.h + tests := mallocbug tst-malloc tst-valloc tst-calloc tst-obstack \ +- tst-mallocstate tst-mcheck tst-mallocfork tst-trim1 tst-malloc-usable ++ tst-mallocstate tst-mcheck tst-mallocfork tst-trim1 \ ++ tst-malloc-usable tst-malloc-backtrace + test-srcs = tst-mtrace + + routines = malloc morecore mcheck mtrace obstack +@@ -40,6 +41,9 @@ extra-libs-others = $(extra-libs) + libmemusage-routines = memusage + libmemusage-inhibit-o = $(filter-out .os,$(object-suffixes)) + ++$(objpfx)tst-malloc-backtrace: $(common-objpfx)nptl/libpthread.so \ ++ $(common-objpfx)nptl/libpthread_nonshared.a ++ + # These should be removed by `make clean'. + extra-objs = mcheck-init.o libmcheck.a + +diff -pruN glibc-2.17-c758a686/malloc/malloc.c glibc-2.17-c758a686/malloc/malloc.c +--- glibc-2.17-c758a686/malloc/malloc.c 2015-05-28 13:32:17.848436534 +0530 ++++ glibc-2.17-c758a686/malloc/malloc.c 2015-05-28 15:53:16.694991702 +0530 +@@ -1060,7 +1060,7 @@ static void* _int_realloc(mstate, mchun + static void* _int_memalign(mstate, size_t, size_t); + static void* _int_valloc(mstate, size_t); + static void* _int_pvalloc(mstate, size_t); +-static void malloc_printerr(int action, const char *str, void *ptr); ++static void malloc_printerr(int action, const char *str, void *ptr, mstate av); + + static void* internal_function mem2mem_check(void *p, size_t sz); + static int internal_function top_check(void); +@@ -1430,7 +1430,8 @@ typedef struct malloc_chunk* mbinptr; + BK = P->bk; \ + if (__builtin_expect (FD->bk != P || BK->fd != P, 0)) { \ + mutex_unlock(&(AV)->mutex); \ +- malloc_printerr (check_action, "corrupted double-linked list", P); \ ++ malloc_printerr (check_action, "corrupted double-linked list", P, \ ++ AV); \ + mutex_lock(&(AV)->mutex); \ + } else { \ + FD->bk = BK; \ +@@ -1670,6 +1671,15 @@ typedef struct malloc_chunk* mfastbinptr + #define set_noncontiguous(M) ((M)->flags |= NONCONTIGUOUS_BIT) + #define set_contiguous(M) ((M)->flags &= ~NONCONTIGUOUS_BIT) + ++/* ARENA_CORRUPTION_BIT is set if a memory corruption was detected on the ++ arena. Such an arena is no longer used to allocate chunks. Chunks ++ allocated in that arena before detecting corruption are not freed. */ ++ ++#define ARENA_CORRUPTION_BIT (4U) ++ ++#define arena_is_corrupt(A) (((A)->flags & ARENA_CORRUPTION_BIT)) ++#define set_arena_corrupt(A) ((A)->flags |= ARENA_CORRUPTION_BIT) ++ + /* + Set value of max_fast. + Use impossibly small value if 0. +@@ -2281,8 +2291,9 @@ static void* sysmalloc(INTERNAL_SIZE_T n + rather than expanding top. + */ + +- if ((unsigned long)(nb) >= (unsigned long)(mp_.mmap_threshold) && +- (mp_.n_mmaps < mp_.n_mmaps_max)) { ++ if (av == NULL ++ || ((unsigned long) (nb) >= (unsigned long) (mp_.mmap_threshold) ++ && (mp_.n_mmaps < mp_.n_mmaps_max))) { + + char* mm; /* return value from mmap call*/ + +@@ -2354,6 +2365,10 @@ static void* sysmalloc(INTERNAL_SIZE_T n + } + } + ++ /* There are no usable arenas and mmap also failed. */ ++ if (av == NULL) ++ return 0; ++ + /* Record incoming configuration of top */ + + old_top = av->top; +@@ -2519,7 +2534,7 @@ static void* sysmalloc(INTERNAL_SIZE_T n + else if (contiguous(av) && old_size && brk < old_end) { + /* Oops! Someone else killed our space.. Can't touch anything. */ + mutex_unlock(&av->mutex); +- malloc_printerr (3, "break adjusted to free malloc space", brk); ++ malloc_printerr (3, "break adjusted to free malloc space", brk, av); + mutex_lock(&av->mutex); + } + +@@ -2793,7 +2808,7 @@ munmap_chunk(mchunkptr p) + if (__builtin_expect (((block | total_size) & (GLRO(dl_pagesize) - 1)) != 0, 0)) + { + malloc_printerr (check_action, "munmap_chunk(): invalid pointer", +- chunk2mem (p)); ++ chunk2mem (p), NULL); + return; + } + +@@ -2861,21 +2876,20 @@ __libc_malloc(size_t bytes) + if (__builtin_expect (hook != NULL, 0)) + return (*hook)(bytes, RETURN_ADDRESS (0)); + +- arena_lookup(ar_ptr); ++ arena_get(ar_ptr, bytes); + +- arena_lock(ar_ptr, bytes); +- if(!ar_ptr) +- return 0; + victim = _int_malloc(ar_ptr, bytes); +- if(!victim) { ++ /* Retry with another arena only if we were able to find a usable arena ++ before. */ ++ if (!victim && ar_ptr != NULL) { + LIBC_PROBE (memory_malloc_retry, 1, bytes); + ar_ptr = arena_get_retry(ar_ptr, bytes); +- if (__builtin_expect(ar_ptr != NULL, 1)) { +- victim = _int_malloc(ar_ptr, bytes); +- (void)mutex_unlock(&ar_ptr->mutex); +- } +- } else ++ victim = _int_malloc (ar_ptr, bytes); ++ } ++ ++ if (ar_ptr != NULL) + (void)mutex_unlock(&ar_ptr->mutex); ++ + assert(!victim || chunk_is_mmapped(mem2chunk(victim)) || + ar_ptr == arena_for_chunk(mem2chunk(victim))); + return victim; +@@ -2946,6 +2960,11 @@ __libc_realloc(void* oldmem, size_t byte + /* its size */ + const INTERNAL_SIZE_T oldsize = chunksize(oldp); + ++ if (chunk_is_mmapped (oldp)) ++ ar_ptr = NULL; ++ else ++ ar_ptr = arena_for_chunk (oldp); ++ + /* Little security check which won't hurt performance: the + allocator never wrapps around at the end of the address space. + Therefore we can exclude some size values which might appear +@@ -2953,7 +2972,8 @@ __libc_realloc(void* oldmem, size_t byte + if (__builtin_expect ((uintptr_t) oldp > (uintptr_t) -oldsize, 0) + || __builtin_expect (misaligned_chunk (oldp), 0)) + { +- malloc_printerr (check_action, "realloc(): invalid pointer", oldmem); ++ malloc_printerr (check_action, "realloc(): invalid pointer", oldmem, ++ ar_ptr); + return NULL; + } + +@@ -2977,7 +2997,6 @@ __libc_realloc(void* oldmem, size_t byte + return newmem; + } + +- ar_ptr = arena_for_chunk(oldp); + #if THREAD_STATS + if(!mutex_trylock(&ar_ptr->mutex)) + ++(ar_ptr->stat_lock_direct); +@@ -3043,18 +3062,17 @@ __libc_memalign(size_t alignment, size_t + } + + arena_get(ar_ptr, bytes + alignment + MINSIZE); +- if(!ar_ptr) +- return 0; ++ + p = _int_memalign(ar_ptr, alignment, bytes); +- if(!p) { ++ if(!p && ar_ptr != NULL) { + LIBC_PROBE (memory_memalign_retry, 2, bytes, alignment); + ar_ptr = arena_get_retry (ar_ptr, bytes); +- if (__builtin_expect(ar_ptr != NULL, 1)) { +- p = _int_memalign(ar_ptr, alignment, bytes); +- (void)mutex_unlock(&ar_ptr->mutex); +- } +- } else ++ p = _int_memalign (ar_ptr, alignment, bytes); ++ } ++ ++ if (ar_ptr != NULL) + (void)mutex_unlock(&ar_ptr->mutex); ++ + assert(!p || chunk_is_mmapped(mem2chunk(p)) || + ar_ptr == arena_for_chunk(mem2chunk(p))); + return p; +@@ -3088,18 +3106,16 @@ __libc_valloc(size_t bytes) + return (*hook)(pagesz, bytes, RETURN_ADDRESS (0)); + + arena_get(ar_ptr, bytes + pagesz + MINSIZE); +- if(!ar_ptr) +- return 0; + p = _int_valloc(ar_ptr, bytes); +- if(!p) { ++ if(!p && ar_ptr != NULL) { + LIBC_PROBE (memory_valloc_retry, 1, bytes); + ar_ptr = arena_get_retry (ar_ptr, bytes); +- if (__builtin_expect(ar_ptr != NULL, 1)) { +- p = _int_memalign(ar_ptr, pagesz, bytes); +- (void)mutex_unlock(&ar_ptr->mutex); +- } +- } else ++ p = _int_memalign(ar_ptr, pagesz, bytes); ++ } ++ ++ if (ar_ptr != NULL) + (void)mutex_unlock (&ar_ptr->mutex); ++ + assert(!p || chunk_is_mmapped(mem2chunk(p)) || + ar_ptr == arena_for_chunk(mem2chunk(p))); + +@@ -3134,15 +3150,15 @@ __libc_pvalloc(size_t bytes) + + arena_get(ar_ptr, bytes + 2*pagesz + MINSIZE); + p = _int_pvalloc(ar_ptr, bytes); +- if(!p) { ++ if(!p && ar_ptr != NULL) { + LIBC_PROBE (memory_pvalloc_retry, 1, bytes); + ar_ptr = arena_get_retry (ar_ptr, bytes + 2*pagesz + MINSIZE); +- if (__builtin_expect(ar_ptr != NULL, 1)) { +- p = _int_memalign(ar_ptr, pagesz, rounded_bytes); +- (void)mutex_unlock(&ar_ptr->mutex); +- } +- } else ++ p = _int_memalign(ar_ptr, pagesz, rounded_bytes); ++ } ++ ++ if (ar_ptr != NULL) + (void)mutex_unlock(&ar_ptr->mutex); ++ + assert(!p || chunk_is_mmapped(mem2chunk(p)) || + ar_ptr == arena_for_chunk(mem2chunk(p))); + +@@ -3184,43 +3200,48 @@ __libc_calloc(size_t n, size_t elem_size + sz = bytes; + + arena_get(av, sz); +- if(!av) +- return 0; ++ if(av) ++ { + +- /* Check if we hand out the top chunk, in which case there may be no +- need to clear. */ ++ /* Check if we hand out the top chunk, in which case there may be no ++ need to clear. */ + #if MORECORE_CLEARS +- oldtop = top(av); +- oldtopsize = chunksize(top(av)); +-#if MORECORE_CLEARS < 2 +- /* Only newly allocated memory is guaranteed to be cleared. */ +- if (av == &main_arena && +- oldtopsize < mp_.sbrk_base + av->max_system_mem - (char *)oldtop) +- oldtopsize = (mp_.sbrk_base + av->max_system_mem - (char *)oldtop); ++ oldtop = top(av); ++ oldtopsize = chunksize(top(av)); ++# if MORECORE_CLEARS < 2 ++ /* Only newly allocated memory is guaranteed to be cleared. */ ++ if (av == &main_arena && ++ oldtopsize < mp_.sbrk_base + av->max_system_mem - (char *)oldtop) ++ oldtopsize = (mp_.sbrk_base + av->max_system_mem - (char *)oldtop); ++# endif ++ if (av != &main_arena) ++ { ++ heap_info *heap = heap_for_ptr (oldtop); ++ if (oldtopsize < ((char *) heap + heap->mprotect_size - ++ (char *) oldtop)) ++ oldtopsize = (char *) heap + heap->mprotect_size - (char *) oldtop; ++ } + #endif +- if (av != &main_arena) +- { +- heap_info *heap = heap_for_ptr (oldtop); +- if (oldtopsize < (char *) heap + heap->mprotect_size - (char *) oldtop) +- oldtopsize = (char *) heap + heap->mprotect_size - (char *) oldtop; + } +-#endif + mem = _int_malloc(av, sz); + + + assert(!mem || chunk_is_mmapped(mem2chunk(mem)) || + av == arena_for_chunk(mem2chunk(mem))); + +- if (mem == 0) { ++ if (mem == 0 && av != NULL) { + LIBC_PROBE (memory_calloc_retry, 1, sz); + av = arena_get_retry (av, sz); +- if (__builtin_expect(av != NULL, 1)) { +- mem = _int_malloc(av, sz); +- (void)mutex_unlock(&av->mutex); +- } +- if (mem == 0) return 0; +- } else ++ mem = _int_malloc(av, sz); ++ } ++ ++ if (av != NULL) + (void)mutex_unlock(&av->mutex); ++ ++ /* Allocation failed even after a retry. */ ++ if (mem == 0) ++ return 0; ++ + p = mem2chunk(mem); + + /* Two optional cases in which clearing not necessary */ +@@ -3310,6 +3331,16 @@ _int_malloc(mstate av, size_t bytes) + + checked_request2size(bytes, nb); + ++ /* There are no usable arenas. Fall back to sysmalloc to get a chunk from ++ mmap. */ ++ if (__glibc_unlikely (av == NULL)) ++ { ++ void *p = sysmalloc (nb, av); ++ if (p != NULL) ++ alloc_perturb (p, bytes); ++ return p; ++ } ++ + /* + If the size qualifies as a fastbin, first check corresponding bin. + This code is safe to execute even if av is not yet initialized, so we +@@ -3334,7 +3365,7 @@ _int_malloc(mstate av, size_t bytes) + errstr = "malloc(): memory corruption (fast)"; + errout: + mutex_unlock(&av->mutex); +- malloc_printerr (check_action, errstr, chunk2mem (victim)); ++ malloc_printerr (check_action, errstr, chunk2mem (victim), av); + mutex_lock(&av->mutex); + return NULL; + } +@@ -3421,9 +3452,9 @@ _int_malloc(mstate av, size_t bytes) + if (__builtin_expect (victim->size <= 2 * SIZE_SZ, 0) + || __builtin_expect (victim->size > av->system_mem, 0)) + { +- void *p = chunk2mem(victim); + mutex_unlock(&av->mutex); +- malloc_printerr (check_action, "malloc(): memory corruption", p); ++ malloc_printerr (check_action, "malloc(): memory corruption", ++ chunk2mem (victim), av); + mutex_lock(&av->mutex); + } + size = chunksize(victim); +@@ -3801,7 +3832,7 @@ _int_free(mstate av, mchunkptr p, int ha + errout: + if (have_lock || locked) + (void)mutex_unlock(&av->mutex); +- malloc_printerr (check_action, errstr, chunk2mem(p)); ++ malloc_printerr (check_action, errstr, chunk2mem(p), av); + if (have_lock) + mutex_lock(&av->mutex); + return; +@@ -4196,7 +4227,7 @@ _int_realloc(mstate av, mchunkptr oldp, + errstr = "realloc(): invalid old size"; + errout: + mutex_unlock(&av->mutex); +- malloc_printerr (check_action, errstr, chunk2mem(oldp)); ++ malloc_printerr (check_action, errstr, chunk2mem(oldp), av); + mutex_lock(&av->mutex); + return NULL; + } +@@ -4467,7 +4467,7 @@ static void* + _int_valloc(mstate av, size_t bytes) + { + /* Ensure initialization/consolidation */ +- if (have_fastchunks(av)) malloc_consolidate(av); ++ if (av && have_fastchunks(av)) malloc_consolidate(av); + return _int_memalign(av, GLRO(dl_pagesize), bytes); + } + +@@ -4482,7 +4482,7 @@ _int_pvalloc(mstate av, size_t bytes) + size_t pagesz; + + /* Ensure initialization/consolidation */ +- if (have_fastchunks(av)) malloc_consolidate(av); ++ if (av && have_fastchunks(av)) malloc_consolidate(av); + pagesz = GLRO(dl_pagesize); + return _int_memalign(av, pagesz, (bytes + pagesz - 1) & ~(pagesz - 1)); + } +@@ -4463,6 +4494,10 @@ _int_pvalloc(mstate av, size_t bytes) + + static int mtrim(mstate av, size_t pad) + { ++ /* Don't touch corrupt arenas. */ ++ if (arena_is_corrupt (av)) ++ return 0; ++ + /* Ensure initialization/consolidation */ + malloc_consolidate (av); + +@@ -4956,8 +4991,14 @@ libc_hidden_def (__libc_mallopt) + extern char **__libc_argv attribute_hidden; + + static void +-malloc_printerr(int action, const char *str, void *ptr) ++malloc_printerr(int action, const char *str, void *ptr, mstate ar_ptr) + { ++ /* Avoid using this arena in future. We do not attempt to synchronize this ++ with anything else because we minimally want to ensure that __libc_message ++ gets its resources safely without stumbling on the current corruption. */ ++ if (ar_ptr) ++ set_arena_corrupt (ar_ptr); ++ + if ((action & 5) == 5) + __libc_message (action & 2, "%s\n", str); + else if (action & 1) +diff -pruN glibc-2.17-c758a686/malloc/tst-malloc-backtrace.c glibc-2.17-c758a686/malloc/tst-malloc-backtrace.c +--- glibc-2.17-c758a686/malloc/tst-malloc-backtrace.c 1970-01-01 05:30:00.000000000 +0530 ++++ glibc-2.17-c758a686/malloc/tst-malloc-backtrace.c 2015-05-28 15:54:10.135577633 +0530 +@@ -0,0 +1,50 @@ ++/* Verify that backtrace does not deadlock on itself on memory corruption. ++ Copyright (C) 2015 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 ++ . */ ++ ++ ++#include ++ ++#define SIZE 4096 ++ ++/* Wrap free with a function to prevent gcc from optimizing it out. */ ++static void ++__attribute__((noinline)) ++call_free (void *ptr) ++{ ++ free (ptr); ++ *(size_t *)(ptr - sizeof (size_t)) = 1; ++} ++ ++int ++do_test (void) ++{ ++ void *ptr1 = malloc (SIZE); ++ void *ptr2 = malloc (SIZE); ++ ++ call_free (ptr1); ++ ptr1 = malloc (SIZE); ++ ++ /* Not reached. The return statement is to put ptr2 into use so that gcc ++ doesn't optimize out that malloc call. */ ++ return (ptr1 == ptr2); ++} ++ ++#define TEST_FUNCTION do_test () ++#define EXPECTED_SIGNAL SIGABRT ++ ++#include "../test-skeleton.c" diff --git a/SOURCES/glibc-rh1216246.patch b/SOURCES/glibc-rh1216246.patch new file mode 100644 index 0000000..ad64b2d --- /dev/null +++ b/SOURCES/glibc-rh1216246.patch @@ -0,0 +1,65 @@ +# +# Posted upstream 2015-06-18: +# https://www.sourceware.org/ml/libc-alpha/2015-06/msg00629.html +# +diff --git glibc-2.17-c758a686/inet/rcmd.c glibc-2.17-c758a686/inet/rcmd.c +index 98b3735..91623b0 100644 +--- glibc-2.17-c758a686/inet/rcmd.c ++++ glibc-2.17-c758a686/inet/rcmd.c +@@ -809,29 +809,38 @@ __validuser2_sa(hostf, ra, ralen, luser, ruser, rhost) + *p = '\0'; /* terminate username (+host?) */ + + /* buf -> host(?) ; user -> username(?) */ ++ if (*buf == '\0') ++ break; ++ if (*user == '\0') ++ user = luser; ++ ++ /* First check the user part. This is an optimization, since ++ one should always check the host first in order to detect ++ negative host checks (which we check for later). */ ++ ucheck = __icheckuser (user, ruser); ++ ++ /* Either we found the user, or we didn't and this is a ++ negative host check. We must do the negative host lookup ++ in order to preserve the semantics of stopping on this line ++ before processing others. */ ++ if (ucheck != 0 || *buf == '-') { ++ ++ /* Next check host part */ ++ hcheck = __checkhost_sa (ra, ralen, buf, rhost); ++ ++ /* Negative '-host user(?)' match? */ ++ if (hcheck < 0) ++ break; + +- /* First check host part */ +- hcheck = __checkhost_sa (ra, ralen, buf, rhost); +- +- if (hcheck < 0) +- break; +- +- if (hcheck) { +- /* Then check user part */ +- if (! (*user)) +- user = luser; +- +- ucheck = __icheckuser (user, ruser); +- +- /* Positive 'host user' match? */ +- if (ucheck > 0) { ++ /* Positive 'host user' match? */ ++ if (hcheck > 0 && ucheck > 0) { + retval = 0; + break; + } + +- /* Negative 'host -user' match? */ +- if (ucheck < 0) +- break; ++ /* Negative 'host -user' match? */ ++ if (hcheck > 0 && ucheck < 0) ++ break; + + /* Neither, go on looking for match */ + } diff --git a/SOURCES/glibc-rh1219891.patch b/SOURCES/glibc-rh1219891.patch new file mode 100644 index 0000000..8e1d986 --- /dev/null +++ b/SOURCES/glibc-rh1219891.patch @@ -0,0 +1,117 @@ +commit e83d72988d89378e7c70a1b7ba0b450a699ea70a +Author: David S. Miller +Date: Wed Jan 9 23:04:32 2013 -0800 + + Sync netinet/tcp.h with upstream Linux kernel. + + [BZ# 15003] + * sysdeps/gnu/netinet/tcp.h (TCP_COOKIE_TRANSACTIONS, + TCP_THIN_LINEAR_TIMEOUTS, TCP_THIN_DUPACK, TCP_USER_TIMEOUT, + TCP_REPAIR, TCP_REPAIR_QUEUE, TCP_QUEUE_SEQ, TCP_REPAIR_OPTIONS, + TCP_FASTOPEN): Define. + (tcp_repair_opt): New structure. + (TCP_NO_QUEUE, TCP_RECV_QUEUE, TCP_SEND_QUEUE, TCP_QUEUES_NR): New + enum values. + (TCP_COOKIE_MIN, TCP_COOKIE_MAX, TCP_COOKIE_PAIR_SIZE, + TCP_COOKIE_IN_ALWAYS, TCP_COOKIE_OUT_NEVER, TCP_S_DATA_IN, + TCP_S_DATA_OUT, TCP_MSS_DEFAULT, TCP_MSS_DESIRED): Define. + (tcp_cookie_transactions): New structure. + +diff --git glibc-2.17-c758a686/sysdeps/gnu/netinet/tcp.h glibc-2.17-c758a686/sysdeps/gnu/netinet/tcp.h +index 278fc9d..b62a696 100644 +--- glibc-2.17-c758a686/sysdeps/gnu/netinet/tcp.h ++++ glibc-2.17-c758a686/sysdeps/gnu/netinet/tcp.h +@@ -37,20 +37,29 @@ + /* + * User-settable options (used with setsockopt). + */ +-#define TCP_NODELAY 1 /* Don't delay send to coalesce packets */ +-#define TCP_MAXSEG 2 /* Set maximum segment size */ +-#define TCP_CORK 3 /* Control sending of partial frames */ +-#define TCP_KEEPIDLE 4 /* Start keeplives after this period */ +-#define TCP_KEEPINTVL 5 /* Interval between keepalives */ +-#define TCP_KEEPCNT 6 /* Number of keepalives before death */ +-#define TCP_SYNCNT 7 /* Number of SYN retransmits */ +-#define TCP_LINGER2 8 /* Life time of orphaned FIN-WAIT-2 state */ +-#define TCP_DEFER_ACCEPT 9 /* Wake up listener only when data arrive */ +-#define TCP_WINDOW_CLAMP 10 /* Bound advertised window */ +-#define TCP_INFO 11 /* Information about this connection. */ +-#define TCP_QUICKACK 12 /* Bock/reenable quick ACKs. */ +-#define TCP_CONGESTION 13 /* Congestion control algorithm. */ +-#define TCP_MD5SIG 14 /* TCP MD5 Signature (RFC2385) */ ++#define TCP_NODELAY 1 /* Don't delay send to coalesce packets */ ++#define TCP_MAXSEG 2 /* Set maximum segment size */ ++#define TCP_CORK 3 /* Control sending of partial frames */ ++#define TCP_KEEPIDLE 4 /* Start keeplives after this period */ ++#define TCP_KEEPINTVL 5 /* Interval between keepalives */ ++#define TCP_KEEPCNT 6 /* Number of keepalives before death */ ++#define TCP_SYNCNT 7 /* Number of SYN retransmits */ ++#define TCP_LINGER2 8 /* Life time of orphaned FIN-WAIT-2 state */ ++#define TCP_DEFER_ACCEPT 9 /* Wake up listener only when data arrive */ ++#define TCP_WINDOW_CLAMP 10 /* Bound advertised window */ ++#define TCP_INFO 11 /* Information about this connection. */ ++#define TCP_QUICKACK 12 /* Bock/reenable quick ACKs. */ ++#define TCP_CONGESTION 13 /* Congestion control algorithm. */ ++#define TCP_MD5SIG 14 /* TCP MD5 Signature (RFC2385) */ ++#define TCP_COOKIE_TRANSACTIONS 15 /* TCP Cookie Transactions */ ++#define TCP_THIN_LINEAR_TIMEOUTS 16 /* Use linear timeouts for thin streams*/ ++#define TCP_THIN_DUPACK 17 /* Fast retrans. after 1 dupack */ ++#define TCP_USER_TIMEOUT 18 /* How long for loss retry before timeout */ ++#define TCP_REPAIR 19 /* TCP sock is under repair right now */ ++#define TCP_REPAIR_QUEUE 20 /* Set TCP queue to repair */ ++#define TCP_QUEUE_SEQ 21 /* Set sequence number of repaired queue. */ ++#define TCP_REPAIR_OPTIONS 22 /* Repair TCP connection options */ ++#define TCP_FASTOPEN 23 /* Enable FastOpen on listeners */ + + #ifdef __USE_MISC + # include +@@ -243,6 +252,49 @@ struct tcp_md5sig + u_int8_t tcpm_key[TCP_MD5SIG_MAXKEYLEN]; /* Key (binary). */ + }; + ++/* For socket repair options. */ ++struct tcp_repair_opt ++{ ++ u_int32_t opt_code; ++ u_int32_t opt_val; ++}; ++ ++/* Queue to repair, for TCP_REPAIR_QUEUE. */ ++enum ++{ ++ TCP_NO_QUEUE, ++ TCP_RECV_QUEUE, ++ TCP_SEND_QUEUE, ++ TCP_QUEUES_NR, ++}; ++ ++/* For cookie transactions socket options. */ ++#define TCP_COOKIE_MIN 8 /* 64-bits */ ++#define TCP_COOKIE_MAX 16 /* 128-bits */ ++#define TCP_COOKIE_PAIR_SIZE (2*TCP_COOKIE_MAX) ++ ++/* Flags for both getsockopt and setsockopt */ ++#define TCP_COOKIE_IN_ALWAYS (1 << 0) /* Discard SYN without cookie */ ++#define TCP_COOKIE_OUT_NEVER (1 << 1) /* Prohibit outgoing cookies, ++ * supercedes everything. */ ++ ++/* Flags for getsockopt */ ++#define TCP_S_DATA_IN (1 << 2) /* Was data received? */ ++#define TCP_S_DATA_OUT (1 << 3) /* Was data sent? */ ++ ++#define TCP_MSS_DEFAULT 536U /* IPv4 (RFC1122, RFC2581) */ ++#define TCP_MSS_DESIRED 1220U /* IPv6 (tunneled), EDNS0 (RFC3226) */ ++ ++struct tcp_cookie_transactions ++{ ++ u_int16_t tcpct_flags; ++ u_int8_t __tcpct_pad1; ++ u_int8_t tcpct_cookie_desired; ++ u_int16_t tcpct_s_data_desired; ++ u_int16_t tcpct_used; ++ u_int8_t tcpct_value[TCP_MSS_DEFAULT]; ++}; ++ + #endif /* Misc. */ + + #endif /* netinet/tcp.h */ diff --git a/SOURCES/glibc-rh1227699.patch b/SOURCES/glibc-rh1227699.patch new file mode 100644 index 0000000..1935856 --- /dev/null +++ b/SOURCES/glibc-rh1227699.patch @@ -0,0 +1,33 @@ +# +# This is the original fix for bug 1124987 in Fedora. +# This patch should never go upstream. We are applying it +# in rhel-7.2 as a workaround. +# +# Upstream commit f8aeae347377f3dfa8cbadde057adf1827fb1d44 fixes +# this issue correctly, but reveals other bugs, therefore for now +# this patch is a workaround. +# +diff -urN glibc-2.17-c758a686/sysdeps/generic/ldsodefs.h glibc-2.17-c758a686/sysdeps/generic/ldsodefs.h +--- glibc-2.17-c758a686/sysdeps/generic/ldsodefs.h 2014-08-21 01:00:55.000000000 -0400 ++++ glibc-2.17-c758a686/sysdeps/generic/ldsodefs.h 2014-09-04 19:29:42.929692810 -0400 +@@ -388,8 +388,18 @@ + have to iterate beyond the first element in the slotinfo list. */ + #define TLS_SLOTINFO_SURPLUS (62) + +-/* Number of additional slots in the dtv allocated. */ +-#define DTV_SURPLUS (14) ++/* Number of additional allocated dtv slots. This was initially ++ 14, but problems with python, MESA, and X11's uses of static TLS meant ++ that most distributions were very close to this limit when they loaded ++ dynamically interpreted languages that used graphics. The simplest ++ solution was to roughly double the number of slots. The actual static ++ image space usage was relatively small, for example in MESA you ++ had only two dispatch pointers for a total of 16 bytes. If we hit up ++ against this limit again we should start a campaign with the ++ distributions to coordinate the usage of static TLS. Any user of this ++ resource is effectively coordinating a global resource since this ++ surplus is allocated for each thread at startup. */ ++#define DTV_SURPLUS (32) + + /* Initial dtv of the main thread, not allocated with normal malloc. */ + EXTERN void *_dl_initial_dtv; diff --git a/SOURCES/glibc-rh1234622.patch b/SOURCES/glibc-rh1234622.patch new file mode 100644 index 0000000..1935f41 --- /dev/null +++ b/SOURCES/glibc-rh1234622.patch @@ -0,0 +1,12 @@ +Index: glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/aarch64/nptl/libpthread.abilist +=================================================================== +--- glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/aarch64/nptl/libpthread.abilist ++++ glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/aarch64/nptl/libpthread.abilist +@@ -73,7 +73,6 @@ GLIBC_2.17 + pause F + pread F + pread64 F +- pthread_atfork F + pthread_attr_destroy F + pthread_attr_getaffinity_np F + pthread_attr_getdetachstate F diff --git a/SOURCES/glibc-rh1240796.patch b/SOURCES/glibc-rh1240796.patch new file mode 100644 index 0000000..17b1d36 --- /dev/null +++ b/SOURCES/glibc-rh1240796.patch @@ -0,0 +1,112 @@ +commit d298c41635ce7f2dc7c3eccc842fe3aa754c0c8e +Author: Adhemerval Zanella +Date: Thu May 22 14:48:38 2014 -0500 + + PowerPC: Remove 64 bits instructions in PPC32 code + + This patch replaces the insrdi by insrwi in powerpc32 assembly. + +Index: glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/memset.S +=================================================================== +--- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power4/memset.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/memset.S +@@ -52,7 +52,7 @@ L(_memset): + + /* Align to word boundary. */ + cmplwi cr5, rLEN, 31 +- insrdi rCHR, rCHR, 8, 48 /* Replicate byte to halfword. */ ++ insrwi rCHR, rCHR, 8, 16 /* Replicate byte to halfword. */ + beq+ L(aligned) + mtcrf 0x01, rMEMP0 + subfic rALIGN, rALIGN, 4 +@@ -67,7 +67,7 @@ L(g0): + /* Handle the case of size < 31. */ + L(aligned): + mtcrf 0x01, rLEN +- insrdi rCHR, rCHR, 16, 32 /* Replicate halfword to word. */ ++ insrwi rCHR, rCHR, 16, 0 /* Replicate halfword to word. */ + ble cr5, L(medium) + /* Align to 32-byte boundary. */ + andi. rALIGN, rMEMP, 0x1C +Index: glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power6/memset.S +=================================================================== +--- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power6/memset.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power6/memset.S +@@ -50,7 +50,7 @@ L(_memset): + ble- cr1, L(small) + /* Align to word boundary. */ + cmplwi cr5, rLEN, 31 +- insrdi rCHR, rCHR, 8, 48 /* Replicate byte to halfword. */ ++ insrwi rCHR, rCHR, 8, 16 /* Replicate byte to halfword. */ + beq+ L(aligned) + mtcrf 0x01, rMEMP0 + subfic rALIGN, rALIGN, 4 +@@ -66,7 +66,7 @@ L(g0): + /* Handle the case of size < 31. */ + L(aligned): + mtcrf 0x01, rLEN +- insrdi rCHR, rCHR, 16, 32 /* Replicate halfword to word. */ ++ insrwi rCHR, rCHR, 16, 0 /* Replicate halfword to word. */ + ble cr5, L(medium) + /* Align to 32-byte boundary. */ + andi. rALIGN, rMEMP, 0x1C +Index: glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power7/memset.S +=================================================================== +--- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power7/memset.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power7/memset.S +@@ -37,8 +37,8 @@ L(_memset): + cfi_offset(31,-8) + + /* Replicate byte to word. */ +- insrdi 4,4,8,48 +- insrdi 4,4,16,32 ++ insrwi 4,4,8,16 ++ insrwi 4,4,16,0 + + ble cr6,L(small) /* If length <= 8, use short copy code. */ + +Index: glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power7/rawmemchr.S +=================================================================== +--- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power7/rawmemchr.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power7/rawmemchr.S +@@ -29,8 +29,8 @@ ENTRY (BP_SYM(__rawmemchr)) + clrrwi r8,r3,2 /* Align the address to word boundary. */ + + /* Replicate byte to word. */ +- rldimi r4,r4,8,48 +- rldimi r4,r4,16,32 ++ insrwi r4,r4,8,16 ++ insrwi r4,r4,16,0 + + /* Now r4 has a word of c bytes. */ + +Index: glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power7/strchr.S +=================================================================== +--- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power7/strchr.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power7/strchr.S +@@ -37,8 +37,8 @@ ENTRY (BP_SYM(strchr)) + beq cr7,L(null_match) + + /* Replicate byte to word. */ +- insrdi r4,r4,8,48 +- insrdi r4,r4,16,32 ++ insrwi r4,r4,8,16 ++ insrwi r4,r4,16,0 + + /* Now r4 has a word of c bytes and r0 has + a word of null bytes. */ +Index: glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power7/strchrnul.S +=================================================================== +--- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/power7/strchrnul.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power7/strchrnul.S +@@ -29,8 +29,8 @@ ENTRY (BP_SYM(__strchrnul)) + clrrwi r8,r3,2 /* Align the address to word boundary. */ + + /* Replicate byte to word. */ +- insrdi r4,r4,8,48 +- insrdi r4,r4,16,32 ++ insrwi r4,r4,8,16 ++ insrwi r4,r4,16,0 + + rlwinm r6,r3,3,27,28 /* Calculate padding. */ + lwz r12,0(r8) /* Load word from memory. */ diff --git a/SOURCES/glibc-rh1248208-2.patch b/SOURCES/glibc-rh1248208-2.patch new file mode 100644 index 0000000..ad9f26b --- /dev/null +++ b/SOURCES/glibc-rh1248208-2.patch @@ -0,0 +1,36 @@ +diff -pruN glibc-2.17-c758a686/nptl/tst-join7mod.c glibc-2.17-c758a686.new/nptl/tst-join7mod.c +--- glibc-2.17-c758a686/nptl/tst-join7mod.c 2015-08-13 17:06:56.505685552 +0530 ++++ glibc-2.17-c758a686.new/nptl/tst-join7mod.c 2015-08-14 12:42:10.446315345 +0530 +@@ -18,6 +18,7 @@ + . */ + + #include ++#include + #include + #include + +@@ -27,7 +28,14 @@ static int running = 1; + static void * + test_run (void *p) + { +- while (atomic_load_relaxed (&running)) ++ /* Spin on the value of RUNNING till it is 1. The RHEL-7 version of atomic.h ++ does not yet have an atomic_load. We don't need an acquire/release ++ barrier either since there is no ordering to worry about, but again, ++ atomic.h does not have relaxed atomic operations. */ ++ int oldval; ++ do ++ oldval = atomic_compare_and_exchange_val_acq (&running, 0, 0); ++ while (oldval == 1); + printf ("Test running\n"); + printf ("Test finished\n"); + return NULL; +@@ -48,7 +56,7 @@ do_init (void) + static void __attribute__ ((destructor)) + do_end (void) + { +- atomic_store_relaxed (&running, 0); ++ atomic_exchange_rel (&running, 0); + int ret = pthread_join (th, NULL); + + if (ret != 0) diff --git a/SOURCES/glibc-rh1248208.patch b/SOURCES/glibc-rh1248208.patch new file mode 100644 index 0000000..03e4e17 --- /dev/null +++ b/SOURCES/glibc-rh1248208.patch @@ -0,0 +1,224 @@ +commit e400f3ccd36fe91d432cc7d45b4ccc799dece763 +Author: Siddhesh Poyarekar +Date: Fri Jul 24 19:13:38 2015 +0530 + + Use IE model for static variables in libc.so, libpthread.so and rtld + + The recently introduced TLS variables in the thread-local destructor + implementation (__cxa_thread_atexit_impl) used the default GD access + model, resulting in a call to __tls_get_addr. This causes a deadlock + with recent changes to the way TLS is initialized because DTV + allocations are delayed and hence despite knowing the offset to the + variable inside its TLS block, the thread has to take the global rtld + lock to safely update the TLS offset. + + This causes deadlocks when a thread is instantiated and joined inside + a destructor of a dlopen'd DSO. The correct long term fix is to + somehow not take the lock, but that will need a lot deeper change set + to alter the way in which the big rtld lock is used. + + Instead, this patch just eliminates the call to __tls_get_addr for the + thread-local variables inside libc.so, libpthread.so and rtld by + building all of their units with -mtls-model=initial-exec. + + There were concerns that the static storage for TLS is limited and + hence we should not be using it. Additionally, dynamically loaded + modules may result in libc.so looking for this static storage pretty + late in static binaries. Both concerns are valid when using TLSDESC + since that is where one may attempt to allocate a TLS block from + static storage for even those variables that are not IE. They're not + very strong arguments for the traditional TLS model though, since it + assumes that the static storage would be used sparingly and definitely + not by default. Hence, for now this would only theoretically affect + ARM architectures. + + The impact is hence limited to statically linked binaries that dlopen + modules that in turn load libc.so, all that on arm hardware. It seems + like a small enough impact to justify fixing the larger problem that + currently affects everything everywhere. + + This still does not solve the original problem completely. That is, + it is still possible to deadlock on the big rtld lock with a small + tweak to the test case attached to this patch. That problem is + however not a regression in 2.22 and hence could be tackled as a + separate project. The test case is picked up as is from Alex's patch. + + This change has been tested to verify that it does not cause any + issues on x86_64. + + ChangeLog: + + [BZ #18457] + * nptl/Makefile (tests): New test case tst-join7. + (modules-names): New test case module tst-join7mod. + * nptl/tst-join7.c: New file. + * nptl/tst-join7mod.c: New file. + * Makeconfig (tls-model): Pass -ftls-model=initial-exec for + all translation units in libc.so, libpthread.so and rtld. + +diff --git a/nptl/Makefile b/nptl/Makefile +index 140f063..aaca0a4 100644 +--- a/nptl/Makefile ++++ b/nptl/Makefile +@@ -245,7 +245,7 @@ tests = tst-typesizes \ + tst-basic7 \ + tst-kill1 tst-kill2 tst-kill3 tst-kill4 tst-kill5 tst-kill6 \ + tst-raise1 \ +- tst-join1 tst-join2 tst-join3 tst-join4 tst-join5 tst-join6 \ ++ tst-join1 tst-join2 tst-join3 tst-join4 tst-join5 tst-join6 tst-join7 \ + tst-detach1 \ + tst-eintr1 tst-eintr2 tst-eintr3 tst-eintr4 tst-eintr5 \ + tst-tsd1 tst-tsd2 tst-tsd3 tst-tsd4 tst-tsd5 tst-tsd6 \ +@@ -327,7 +327,8 @@ endif + modules-names = tst-atfork2mod tst-tls3mod tst-tls4moda tst-tls4modb \ + tst-tls5mod tst-tls5moda tst-tls5modb tst-tls5modc \ + tst-tls5modd tst-tls5mode tst-tls5modf tst-stack4mod \ +- tst-_res1mod1 tst-_res1mod2 tst-execstack-mod tst-fini1mod ++ tst-_res1mod1 tst-_res1mod2 tst-execstack-mod tst-fini1mod \ ++ tst-join7mod + extra-test-objs += $(addsuffix .os,$(strip $(modules-names))) tst-cleanup4aux.o + test-extras += $(modules-names) tst-cleanup4aux + test-modules = $(addprefix $(objpfx),$(addsuffix .so,$(modules-names))) +@@ -532,6 +533,11 @@ $(objpfx)tst-tls6.out: tst-tls6.sh $(objpfx)tst-tls5 \ + $(rtld-installed-name) '$(test-wrapper-env)' + endif + ++$(objpfx)tst-join7: $(libdl) $(shared-thread-library) ++$(objpfx)tst-join7.out: $(objpfx)tst-join7mod.so ++$(objpfx)tst-join7mod.so: $(shared-thread-library) ++LDFLAGS-tst-join7mod.so = -Wl,-soname,tst-join7mod.so ++ + $(objpfx)tst-dlsym1: $(libdl) $(shared-thread-library) + + $(objpfx)tst-fini1: $(shared-thread-library) $(objpfx)tst-fini1mod.so +diff --git a/nptl/tst-join7.c b/nptl/tst-join7.c +new file mode 100644 +index 0000000..439d0fc +--- /dev/null ++++ b/nptl/tst-join7.c +@@ -0,0 +1,46 @@ ++/* Verify that TLS access in separate thread in a dlopened library does not ++ deadlock. ++ Copyright (C) 2015 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 ++ . */ ++ ++#include ++ ++/* When one dynamically loads a module, which spawns a thread to perform some ++ activities, it could be possible that TLS storage is accessed for the first ++ time in that thread. This results in an allocation request within the ++ thread, which could result in an attempt to take the rtld load_lock. This ++ is a problem because it would then deadlock with the dlopen (which owns the ++ lock), if the main thread is waiting for the spawned thread to exit. We can ++ at least ensure that this problem does not occur due to accesses within ++ libc.so, by marking TLS variables within libc.so as IE. The problem of an ++ arbitrary variable being accessed and constructed within such a thread still ++ exists but this test case does not verify that. */ ++ ++int ++do_test (void) ++{ ++ void *f = dlopen ("tst-join7mod.so", RTLD_NOW | RTLD_GLOBAL); ++ if (f) ++ dlclose (f); ++ else ++ return 1; ++ ++ return 0; ++} ++ ++#define TEST_FUNCTION do_test () ++#include "../test-skeleton.c" +diff --git a/nptl/tst-join7mod.c b/nptl/tst-join7mod.c +new file mode 100644 +index 0000000..92bb381 +--- /dev/null ++++ b/nptl/tst-join7mod.c +@@ -0,0 +1,61 @@ ++/* Verify that TLS access in separate thread in a dlopened library does not ++ deadlock - the module. ++ Copyright (C) 2015 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 ++ . */ ++ ++#include ++#include ++#include ++ ++static pthread_t th; ++static int running = 1; ++ ++static void * ++test_run (void *p) ++{ ++ while (atomic_load_relaxed (&running)) ++ printf ("Test running\n"); ++ printf ("Test finished\n"); ++ return NULL; ++} ++ ++static void __attribute__ ((constructor)) ++do_init (void) ++{ ++ int ret = pthread_create (&th, NULL, test_run, NULL); ++ ++ if (ret != 0) ++ { ++ printf ("failed to create thread: %s (%d)\n", strerror (ret), ret); ++ exit (1); ++ } ++} ++ ++static void __attribute__ ((destructor)) ++do_end (void) ++{ ++ atomic_store_relaxed (&running, 0); ++ int ret = pthread_join (th, NULL); ++ ++ if (ret != 0) ++ { ++ printf ("pthread_join: %s(%d)\n", strerror (ret), ret); ++ exit (1); ++ } ++ ++ printf ("Thread joined\n"); ++} +diff -pruN a/string/strerror_l.c b/string/strerror_l.c +--- a/string/strerror_l.c ++++ b/string/strerror_l.c +@@ -23,7 +23,7 @@ + #include + + +-static __thread char *last_value; ++static __thread char *last_value attribute_tls_model_ie; + + + static const char * diff --git a/SOURCES/glibc-rh697421.patch b/SOURCES/glibc-rh697421.patch index 961c805..1ee0397 100644 --- a/SOURCES/glibc-rh697421.patch +++ b/SOURCES/glibc-rh697421.patch @@ -1,6 +1,6 @@ -diff -rup a/iconvdata/gconv-modules b/iconvdata/gconv-modules ---- a/iconvdata/gconv-modules 2010-05-04 05:27:23.000000000 -0600 -+++ b/iconvdata/gconv-modules 2012-01-26 10:58:24.181895489 -0700 +diff -rup glibc-2.17-c758a686/iconvdata/gconv-modules glibc-2.17-c758a686/iconvdata/gconv-modules +--- glibc-2.17-c758a686/iconvdata/gconv-modules 2010-05-04 05:27:23.000000000 -0600 ++++ glibc-2.17-c758a686/iconvdata/gconv-modules 2012-01-26 10:58:24.181895489 -0700 @@ -1954,3 +1954,6 @@ alias HPGREEK8// HP-GREEK8// alias OSF10010004// HP-GREEK8// module HP-GREEK8// INTERNAL HP-GREEK8 1 diff --git a/SOURCES/glibc-rh731833-hwcap-2.patch b/SOURCES/glibc-rh731833-hwcap-2.patch index eea600d..7f2d687 100644 --- a/SOURCES/glibc-rh731833-hwcap-2.patch +++ b/SOURCES/glibc-rh731833-hwcap-2.patch @@ -18,10 +18,10 @@ Subject: [PATCH 37/42] PowerPC: Enable POWER8 platform sans hwcap bits. create mode 100644 sysdeps/unix/sysv/linux/powerpc/powerpc32/power8/Implies create mode 100644 sysdeps/unix/sysv/linux/powerpc/powerpc64/power8/Implies -diff --git a/sysdeps/powerpc/dl-procinfo.c b/sysdeps/powerpc/dl-procinfo.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/dl-procinfo.c glibc-2.17-c758a686/sysdeps/powerpc/dl-procinfo.c index 8488799..efab165 100644 ---- a/sysdeps/powerpc/dl-procinfo.c -+++ b/sysdeps/powerpc/dl-procinfo.c +--- glibc-2.17-c758a686/sysdeps/powerpc/dl-procinfo.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/dl-procinfo.c @@ -67,7 +67,7 @@ PROCINFO_CLASS const char _dl_powerpc_cap_flags[25][10] #if !defined PROCINFO_DECL && defined SHARED ._dl_powerpc_platforms @@ -41,10 +41,10 @@ index 8488799..efab165 100644 } #endif #if !defined SHARED || defined PROCINFO_DECL -diff --git a/sysdeps/powerpc/dl-procinfo.h b/sysdeps/powerpc/dl-procinfo.h +diff --git glibc-2.17-c758a686/sysdeps/powerpc/dl-procinfo.h glibc-2.17-c758a686/sysdeps/powerpc/dl-procinfo.h index 6d904ad..0939dcf 100644 ---- a/sysdeps/powerpc/dl-procinfo.h -+++ b/sysdeps/powerpc/dl-procinfo.h +--- glibc-2.17-c758a686/sysdeps/powerpc/dl-procinfo.h ++++ glibc-2.17-c758a686/sysdeps/powerpc/dl-procinfo.h @@ -30,7 +30,7 @@ #define HWCAP_IMPORTANT (PPC_FEATURE_HAS_ALTIVEC \ + PPC_FEATURE_HAS_DFP) @@ -72,35 +72,35 @@ index 6d904ad..0939dcf 100644 default: return -1; } -diff --git a/sysdeps/powerpc/powerpc32/power8/Implies b/sysdeps/powerpc/powerpc32/power8/Implies +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power8/Implies glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power8/Implies new file mode 100644 index 0000000..083f3e9 --- /dev/null -+++ b/sysdeps/powerpc/powerpc32/power8/Implies ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power8/Implies @@ -0,0 +1,2 @@ +powerpc/powerpc32/power7/fpu +powerpc/powerpc32/power7 -diff --git a/sysdeps/powerpc/powerpc64/power8/Implies b/sysdeps/powerpc/powerpc64/power8/Implies +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power8/Implies glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power8/Implies new file mode 100644 index 0000000..9a5e3c7 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/power8/Implies ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power8/Implies @@ -0,0 +1,2 @@ +powerpc/powerpc64/power7/fpu +powerpc/powerpc64/power7 -diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/power8/Implies b/sysdeps/unix/sysv/linux/powerpc/powerpc32/power8/Implies +diff --git glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc32/power8/Implies glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc32/power8/Implies new file mode 100644 index 0000000..066dea2 --- /dev/null -+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/power8/Implies ++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc32/power8/Implies @@ -0,0 +1,2 @@ +powerpc/powerpc32/power8/fpu +powerpc/powerpc32/power8 -diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/power8/Implies b/sysdeps/unix/sysv/linux/powerpc/powerpc64/power8/Implies +diff --git glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/power8/Implies glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/power8/Implies new file mode 100644 index 0000000..fad2505 --- /dev/null -+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/power8/Implies ++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/power8/Implies @@ -0,0 +1,2 @@ +powerpc/powerpc64/power8/fpu +powerpc/powerpc64/power8 diff --git a/SOURCES/glibc-rh731833-hwcap-3.patch b/SOURCES/glibc-rh731833-hwcap-3.patch index 9fab072..14a23fd 100644 --- a/SOURCES/glibc-rh731833-hwcap-3.patch +++ b/SOURCES/glibc-rh731833-hwcap-3.patch @@ -9,10 +9,10 @@ Subject: [PATCH 38/42] Add AT_HWCAP2 as a new auxv_t a_type to elf.h. (cherry elf/elf.h | 5 ++++- 2 files changed, 8 insertions(+), 1 deletion(-) -diff --git a/elf/elf.h b/elf/elf.h +diff --git glibc-2.17-c758a686/elf/elf.h glibc-2.17-c758a686/elf/elf.h index b07e6ad..8686fd5 100644 ---- a/elf/elf.h -+++ b/elf/elf.h +--- glibc-2.17-c758a686/elf/elf.h ++++ glibc-2.17-c758a686/elf/elf.h @@ -987,7 +987,7 @@ typedef struct /* Some more special a_type values describing the hardware. */ diff --git a/SOURCES/glibc-rh731833-hwcap-4.patch b/SOURCES/glibc-rh731833-hwcap-4.patch index 6ae6e7e..59fa715 100644 --- a/SOURCES/glibc-rh731833-hwcap-4.patch +++ b/SOURCES/glibc-rh731833-hwcap-4.patch @@ -22,10 +22,10 @@ Subject: [PATCH 39/42] Add GLRO(dl_hwcap2) for new AT_HWCAP2 auxv_t a_type. sysdeps/unix/sysv/linux/s390/dl-procinfo.h | 6 +++++- 18 files changed, 89 insertions(+), 13 deletions(-) -diff --git a/elf/dl-support.c b/elf/dl-support.c +diff --git glibc-2.17-c758a686/elf/dl-support.c glibc-2.17-c758a686/elf/dl-support.c index 81e7172..05f53ee 100644 ---- a/elf/dl-support.c -+++ b/elf/dl-support.c +--- glibc-2.17-c758a686/elf/dl-support.c ++++ glibc-2.17-c758a686/elf/dl-support.c @@ -129,6 +129,7 @@ ElfW(auxv_t) *_dl_auxv; ElfW(Phdr) *_dl_phdr; size_t _dl_phnum; @@ -44,10 +44,10 @@ index 81e7172..05f53ee 100644 #ifdef NEED_DL_SYSINFO case AT_SYSINFO: GL(dl_sysinfo) = av->a_un.a_val; -diff --git a/elf/dl-sysdep.c b/elf/dl-sysdep.c +diff --git glibc-2.17-c758a686/elf/dl-sysdep.c glibc-2.17-c758a686/elf/dl-sysdep.c index 65a9046..a0d1d04 100644 ---- a/elf/dl-sysdep.c -+++ b/elf/dl-sysdep.c +--- glibc-2.17-c758a686/elf/dl-sysdep.c ++++ glibc-2.17-c758a686/elf/dl-sysdep.c @@ -156,6 +156,9 @@ _dl_sysdep_start (void **start_argptr, case AT_HWCAP: GLRO(dl_hwcap) = (unsigned long int) av->a_un.a_val; @@ -80,10 +80,10 @@ index 65a9046..a0d1d04 100644 continue; } -diff --git a/misc/getauxval.c b/misc/getauxval.c +diff --git glibc-2.17-c758a686/misc/getauxval.c glibc-2.17-c758a686/misc/getauxval.c index bff4560..1c1882b 100644 ---- a/misc/getauxval.c -+++ b/misc/getauxval.c +--- glibc-2.17-c758a686/misc/getauxval.c ++++ glibc-2.17-c758a686/misc/getauxval.c @@ -26,6 +26,8 @@ __getauxval (unsigned long int type) if (type == AT_HWCAP) @@ -93,10 +93,10 @@ index bff4560..1c1882b 100644 for (p = GLRO(dl_auxv); p->a_type != AT_NULL; p++) if (p->a_type == type) -diff --git a/ports/sysdeps/alpha/dl-procinfo.h b/ports/sysdeps/alpha/dl-procinfo.h +diff --git glibc-2.17-c758a686/ports/sysdeps/alpha/dl-procinfo.h glibc-2.17-c758a686/ports/sysdeps/alpha/dl-procinfo.h index 3db0efb..c3b27b4 100644 ---- a/ports/sysdeps/alpha/dl-procinfo.h -+++ b/ports/sysdeps/alpha/dl-procinfo.h +--- glibc-2.17-c758a686/ports/sysdeps/alpha/dl-procinfo.h ++++ glibc-2.17-c758a686/ports/sysdeps/alpha/dl-procinfo.h @@ -51,7 +51,7 @@ _dl_string_platform (const char *str) }; @@ -106,10 +106,10 @@ index 3db0efb..c3b27b4 100644 /* There are no hardware capabilities defined. */ #define _dl_hwcap_string(idx) "" -diff --git a/ports/sysdeps/mips/dl-procinfo.h b/ports/sysdeps/mips/dl-procinfo.h +diff --git glibc-2.17-c758a686/ports/sysdeps/mips/dl-procinfo.h glibc-2.17-c758a686/ports/sysdeps/mips/dl-procinfo.h index d42aea7..8c9f5c2 100644 ---- a/ports/sysdeps/mips/dl-procinfo.h -+++ b/ports/sysdeps/mips/dl-procinfo.h +--- glibc-2.17-c758a686/ports/sysdeps/mips/dl-procinfo.h ++++ glibc-2.17-c758a686/ports/sysdeps/mips/dl-procinfo.h @@ -51,7 +51,7 @@ _dl_string_platform (const char *str) }; @@ -119,10 +119,10 @@ index d42aea7..8c9f5c2 100644 /* There are no hardware capabilities defined. */ #define _dl_hwcap_string(idx) "" -diff --git a/ports/sysdeps/unix/sysv/linux/arm/dl-procinfo.h b/ports/sysdeps/unix/sysv/linux/arm/dl-procinfo.h +diff --git glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/arm/dl-procinfo.h glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/arm/dl-procinfo.h index bea7100..c96297b 100644 ---- a/ports/sysdeps/unix/sysv/linux/arm/dl-procinfo.h -+++ b/ports/sysdeps/unix/sysv/linux/arm/dl-procinfo.h +--- glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/arm/dl-procinfo.h ++++ glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/arm/dl-procinfo.h @@ -31,10 +31,14 @@ static inline int @@ -139,10 +139,10 @@ index bea7100..c96297b 100644 _dl_printf ("AT_HWCAP: "); for (i = 0; i < _DL_HWCAP_COUNT; ++i) -diff --git a/sysdeps/generic/dl-procinfo.h b/sysdeps/generic/dl-procinfo.h +diff --git glibc-2.17-c758a686/sysdeps/generic/dl-procinfo.h glibc-2.17-c758a686/sysdeps/generic/dl-procinfo.h index c2bf914..0345717 100644 ---- a/sysdeps/generic/dl-procinfo.h -+++ b/sysdeps/generic/dl-procinfo.h +--- glibc-2.17-c758a686/sysdeps/generic/dl-procinfo.h ++++ glibc-2.17-c758a686/sysdeps/generic/dl-procinfo.h @@ -21,7 +21,7 @@ #define _DL_PROCINFO_H 1 @@ -152,10 +152,10 @@ index c2bf914..0345717 100644 /* There are no hardware capabilities defined. */ #define _dl_hwcap_string(idx) "" -diff --git a/sysdeps/generic/ldsodefs.h b/sysdeps/generic/ldsodefs.h +diff --git glibc-2.17-c758a686/sysdeps/generic/ldsodefs.h glibc-2.17-c758a686/sysdeps/generic/ldsodefs.h index c667e34..5635d72 100644 ---- a/sysdeps/generic/ldsodefs.h -+++ b/sysdeps/generic/ldsodefs.h +--- glibc-2.17-c758a686/sysdeps/generic/ldsodefs.h ++++ glibc-2.17-c758a686/sysdeps/generic/ldsodefs.h @@ -548,6 +548,10 @@ struct rtld_global_ro EXTERN struct link_map *_dl_sysinfo_map; #endif @@ -167,10 +167,10 @@ index c667e34..5635d72 100644 #ifdef SHARED /* We add a function table to _rtld_global which is then used to call the function instead of going through the PLT. The result -diff --git a/sysdeps/i386/dl-procinfo.h b/sysdeps/i386/dl-procinfo.h +diff --git glibc-2.17-c758a686/sysdeps/i386/dl-procinfo.h glibc-2.17-c758a686/sysdeps/i386/dl-procinfo.h index 6ecaac2..38e902d 100644 ---- a/sysdeps/i386/dl-procinfo.h -+++ b/sysdeps/i386/dl-procinfo.h +--- glibc-2.17-c758a686/sysdeps/i386/dl-procinfo.h ++++ glibc-2.17-c758a686/sysdeps/i386/dl-procinfo.h @@ -61,7 +61,7 @@ enum }; @@ -180,10 +180,10 @@ index 6ecaac2..38e902d 100644 static inline const char * __attribute__ ((unused)) -diff --git a/sysdeps/powerpc/dl-procinfo.h b/sysdeps/powerpc/dl-procinfo.h +diff --git glibc-2.17-c758a686/sysdeps/powerpc/dl-procinfo.h glibc-2.17-c758a686/sysdeps/powerpc/dl-procinfo.h index 0939dcf..7732ed2 100644 ---- a/sysdeps/powerpc/dl-procinfo.h -+++ b/sysdeps/powerpc/dl-procinfo.h +--- glibc-2.17-c758a686/sysdeps/powerpc/dl-procinfo.h ++++ glibc-2.17-c758a686/sysdeps/powerpc/dl-procinfo.h @@ -159,8 +159,12 @@ _dl_string_platform (const char *str) #ifdef IS_IN_rtld static inline int @@ -198,10 +198,10 @@ index 0939dcf..7732ed2 100644 _dl_printf ("AT_HWCAP: "); for (int i = _DL_HWCAP_FIRST; i < _DL_HWCAP_COUNT; ++i) -diff --git a/sysdeps/s390/dl-procinfo.h b/sysdeps/s390/dl-procinfo.h +diff --git glibc-2.17-c758a686/sysdeps/s390/dl-procinfo.h glibc-2.17-c758a686/sysdeps/s390/dl-procinfo.h index 97dcf07..26de043 100644 ---- a/sysdeps/s390/dl-procinfo.h -+++ b/sysdeps/s390/dl-procinfo.h +--- glibc-2.17-c758a686/sysdeps/s390/dl-procinfo.h ++++ glibc-2.17-c758a686/sysdeps/s390/dl-procinfo.h @@ -56,7 +56,7 @@ enum | HWCAP_S390_EIMM | HWCAP_S390_DFP) @@ -211,10 +211,10 @@ index 97dcf07..26de043 100644 static inline const char * __attribute__ ((unused)) -diff --git a/sysdeps/sparc/dl-procinfo.h b/sysdeps/sparc/dl-procinfo.h +diff --git glibc-2.17-c758a686/sysdeps/sparc/dl-procinfo.h glibc-2.17-c758a686/sysdeps/sparc/dl-procinfo.h index 6ae8768..a05d458 100644 ---- a/sysdeps/sparc/dl-procinfo.h -+++ b/sysdeps/sparc/dl-procinfo.h +--- glibc-2.17-c758a686/sysdeps/sparc/dl-procinfo.h ++++ glibc-2.17-c758a686/sysdeps/sparc/dl-procinfo.h @@ -28,10 +28,14 @@ static inline int @@ -231,10 +231,10 @@ index 6ae8768..a05d458 100644 _dl_printf ("AT_HWCAP: "); for (i = 0; i < _DL_HWCAP_COUNT; ++i) -diff --git a/sysdeps/unix/sysv/linux/i386/dl-procinfo.h b/sysdeps/unix/sysv/linux/i386/dl-procinfo.h +diff --git glibc-2.17-c758a686/sysdeps/unix/sysv/linux/i386/dl-procinfo.h glibc-2.17-c758a686/sysdeps/unix/sysv/linux/i386/dl-procinfo.h index 4c61357..23f4501 100644 ---- a/sysdeps/unix/sysv/linux/i386/dl-procinfo.h -+++ b/sysdeps/unix/sysv/linux/i386/dl-procinfo.h +--- glibc-2.17-c758a686/sysdeps/unix/sysv/linux/i386/dl-procinfo.h ++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/i386/dl-procinfo.h @@ -24,12 +24,16 @@ #undef _dl_procinfo static inline int @@ -253,10 +253,10 @@ index 4c61357..23f4501 100644 _dl_printf ("AT_HWCAP: "); for (i = 0; i < _DL_HWCAP_COUNT; ++i) -diff --git a/sysdeps/unix/sysv/linux/s390/dl-procinfo.h b/sysdeps/unix/sysv/linux/s390/dl-procinfo.h +diff --git glibc-2.17-c758a686/sysdeps/unix/sysv/linux/s390/dl-procinfo.h glibc-2.17-c758a686/sysdeps/unix/sysv/linux/s390/dl-procinfo.h index f36ba55..759738e 100644 ---- a/sysdeps/unix/sysv/linux/s390/dl-procinfo.h -+++ b/sysdeps/unix/sysv/linux/s390/dl-procinfo.h +--- glibc-2.17-c758a686/sysdeps/unix/sysv/linux/s390/dl-procinfo.h ++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/s390/dl-procinfo.h @@ -24,12 +24,16 @@ #undef _dl_procinfo static inline int diff --git a/SOURCES/glibc-rh731833-hwcap-5.patch b/SOURCES/glibc-rh731833-hwcap-5.patch index f4ccc64..a65b9b9 100644 --- a/SOURCES/glibc-rh731833-hwcap-5.patch +++ b/SOURCES/glibc-rh731833-hwcap-5.patch @@ -13,10 +13,10 @@ Subject: [PATCH 40/42] PowerPC: Define AT_HWCAP2 bits and AT_HWCAP2 handling sysdeps/powerpc/rtld-global-offsets.sym | 1 + 6 files changed, 86 insertions(+), 23 deletions(-) -diff --git a/sysdeps/powerpc/Makefile b/sysdeps/powerpc/Makefile +diff --git glibc-2.17-c758a686/sysdeps/powerpc/Makefile glibc-2.17-c758a686/sysdeps/powerpc/Makefile index 7442b67..f75e625 100644 ---- a/sysdeps/powerpc/Makefile -+++ b/sysdeps/powerpc/Makefile +--- glibc-2.17-c758a686/sysdeps/powerpc/Makefile ++++ glibc-2.17-c758a686/sysdeps/powerpc/Makefile @@ -17,7 +17,7 @@ endif endif @@ -26,10 +26,10 @@ index 7442b67..f75e625 100644 gen-as-const-headers += rtld-global-offsets.sym # get offset to __locale_struct.__ctype_tolower gen-as-const-headers += locale-defines.sym -diff --git a/sysdeps/powerpc/bits/hwcap.h b/sysdeps/powerpc/bits/hwcap.h +diff --git glibc-2.17-c758a686/sysdeps/powerpc/bits/hwcap.h glibc-2.17-c758a686/sysdeps/powerpc/bits/hwcap.h index 89e7d8b..0c02fc6 100644 ---- a/sysdeps/powerpc/bits/hwcap.h -+++ b/sysdeps/powerpc/bits/hwcap.h +--- glibc-2.17-c758a686/sysdeps/powerpc/bits/hwcap.h ++++ glibc-2.17-c758a686/sysdeps/powerpc/bits/hwcap.h @@ -1,5 +1,5 @@ -/* Defines for bits in AT_HWCAP. - Copyright (C) 2012 Free Software Foundation, Inc. @@ -77,10 +77,10 @@ index 89e7d8b..0c02fc6 100644 +#define PPC_FEATURE2_HAS_EBB 0x10000000 /* Event Base Branching */ +#define PPC_FEATURE2_HAS_ISEL 0x08000000 /* Integer Select */ +#define PPC_FEATURE2_HAS_TAR 0x04000000 /* Target Address Register */ -diff --git a/sysdeps/powerpc/dl-procinfo.c b/sysdeps/powerpc/dl-procinfo.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/dl-procinfo.c glibc-2.17-c758a686/sysdeps/powerpc/dl-procinfo.c index efab165..6cebf99 100644 ---- a/sysdeps/powerpc/dl-procinfo.c -+++ b/sysdeps/powerpc/dl-procinfo.c +--- glibc-2.17-c758a686/sysdeps/powerpc/dl-procinfo.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/dl-procinfo.c @@ -45,7 +45,7 @@ #if !defined PROCINFO_DECL && defined SHARED ._dl_powerpc_cap_flags @@ -105,10 +105,10 @@ index efab165..6cebf99 100644 } #endif #if !defined SHARED || defined PROCINFO_DECL -diff --git a/sysdeps/powerpc/dl-procinfo.h b/sysdeps/powerpc/dl-procinfo.h +diff --git glibc-2.17-c758a686/sysdeps/powerpc/dl-procinfo.h glibc-2.17-c758a686/sysdeps/powerpc/dl-procinfo.h index 7732ed2..dc3b70e 100644 ---- a/sysdeps/powerpc/dl-procinfo.h -+++ b/sysdeps/powerpc/dl-procinfo.h +--- glibc-2.17-c758a686/sysdeps/powerpc/dl-procinfo.h ++++ glibc-2.17-c758a686/sysdeps/powerpc/dl-procinfo.h @@ -20,11 +20,21 @@ #define _DL_PROCINFO_H 1 @@ -179,10 +179,10 @@ index 7732ed2..dc3b70e 100644 return 0; } #endif -diff --git a/sysdeps/powerpc/rtld-global-offsets.sym b/sysdeps/powerpc/rtld-global-offsets.sym +diff --git glibc-2.17-c758a686/sysdeps/powerpc/rtld-global-offsets.sym glibc-2.17-c758a686/sysdeps/powerpc/rtld-global-offsets.sym index ff4e97f..f5ea5a1 100644 ---- a/sysdeps/powerpc/rtld-global-offsets.sym -+++ b/sysdeps/powerpc/rtld-global-offsets.sym +--- glibc-2.17-c758a686/sysdeps/powerpc/rtld-global-offsets.sym ++++ glibc-2.17-c758a686/sysdeps/powerpc/rtld-global-offsets.sym @@ -5,3 +5,4 @@ #define rtld_global_ro_offsetof(mem) offsetof (struct rtld_global_ro, mem) diff --git a/SOURCES/glibc-rh731833-hwcap.patch b/SOURCES/glibc-rh731833-hwcap.patch index 5c5c42d..6bf860b 100644 --- a/SOURCES/glibc-rh731833-hwcap.patch +++ b/SOURCES/glibc-rh731833-hwcap.patch @@ -15,9 +15,9 @@ Subject: [PATCH 34/42] PowerPC: Remove redundant picked from commit d04310f210734448a5b950988d49dcea145df9c1) -diff -pruN glibc-2.17-c758a686/ports/sysdeps/powerpc/dl-procinfo.c glibc-2.17-c758a686.new/ports/sysdeps/powerpc/dl-procinfo.c +diff -pruN glibc-2.17-c758a686/ports/sysdeps/powerpc/dl-procinfo.c glibc-2.17-c758a686/ports/sysdeps/powerpc/dl-procinfo.c --- glibc-2.17-c758a686/ports/sysdeps/powerpc/dl-procinfo.c 2012-12-25 08:32:13.000000000 +0530 -+++ glibc-2.17-c758a686.new/ports/sysdeps/powerpc/dl-procinfo.c 1970-01-01 05:30:00.000000000 +0530 ++++ glibc-2.17-c758a686/ports/sysdeps/powerpc/dl-procinfo.c 1970-01-01 05:30:00.000000000 +0530 @@ -1,96 +0,0 @@ -/* Data for processor capability information. PowerPC version. - Copyright (C) 2005-2012 Free Software Foundation, Inc. @@ -115,9 +115,9 @@ diff -pruN glibc-2.17-c758a686/ports/sysdeps/powerpc/dl-procinfo.c glibc-2.17-c7 - -#undef PROCINFO_DECL -#undef PROCINFO_CLASS -diff -pruN glibc-2.17-c758a686/ports/sysdeps/powerpc/dl-procinfo.h glibc-2.17-c758a686.new/ports/sysdeps/powerpc/dl-procinfo.h +diff -pruN glibc-2.17-c758a686/ports/sysdeps/powerpc/dl-procinfo.h glibc-2.17-c758a686/ports/sysdeps/powerpc/dl-procinfo.h --- glibc-2.17-c758a686/ports/sysdeps/powerpc/dl-procinfo.h 2012-12-25 08:32:13.000000000 +0530 -+++ glibc-2.17-c758a686.new/ports/sysdeps/powerpc/dl-procinfo.h 1970-01-01 05:30:00.000000000 +0530 ++++ glibc-2.17-c758a686/ports/sysdeps/powerpc/dl-procinfo.h 1970-01-01 05:30:00.000000000 +0530 @@ -1,172 +0,0 @@ -/* Processor capability information handling macros. PowerPC version. - Copyright (C) 2005-2012 Free Software Foundation, Inc. @@ -291,9 +291,9 @@ diff -pruN glibc-2.17-c758a686/ports/sysdeps/powerpc/dl-procinfo.h glibc-2.17-c7 -#endif - -#endif /* dl-procinfo.h */ -diff -pruN glibc-2.17-c758a686/sysdeps/powerpc/dl-procinfo.c glibc-2.17-c758a686.new/sysdeps/powerpc/dl-procinfo.c +diff -pruN glibc-2.17-c758a686/sysdeps/powerpc/dl-procinfo.c glibc-2.17-c758a686/sysdeps/powerpc/dl-procinfo.c --- glibc-2.17-c758a686/sysdeps/powerpc/dl-procinfo.c 2012-12-25 08:32:13.000000000 +0530 -+++ glibc-2.17-c758a686.new/sysdeps/powerpc/dl-procinfo.c 2013-08-05 19:10:28.980541623 +0530 ++++ glibc-2.17-c758a686/sysdeps/powerpc/dl-procinfo.c 2013-08-05 19:10:28.980541623 +0530 @@ -13,7 +13,7 @@ Lesser General Public License for more details. @@ -325,9 +325,9 @@ diff -pruN glibc-2.17-c758a686/sysdeps/powerpc/dl-procinfo.c glibc-2.17-c758a686 } #endif #if !defined SHARED || defined PROCINFO_DECL -diff -pruN glibc-2.17-c758a686/sysdeps/powerpc/dl-procinfo.h glibc-2.17-c758a686.new/sysdeps/powerpc/dl-procinfo.h +diff -pruN glibc-2.17-c758a686/sysdeps/powerpc/dl-procinfo.h glibc-2.17-c758a686/sysdeps/powerpc/dl-procinfo.h --- glibc-2.17-c758a686/sysdeps/powerpc/dl-procinfo.h 2012-12-25 08:32:13.000000000 +0530 -+++ glibc-2.17-c758a686.new/sysdeps/powerpc/dl-procinfo.h 2013-08-05 19:10:28.990541622 +0530 ++++ glibc-2.17-c758a686/sysdeps/powerpc/dl-procinfo.h 2013-08-05 19:10:28.990541622 +0530 @@ -13,14 +13,14 @@ Lesser General Public License for more details. diff --git a/SOURCES/glibc-rh731833-libm-2.patch b/SOURCES/glibc-rh731833-libm-2.patch index a4782f3..40c1659 100644 --- a/SOURCES/glibc-rh731833-libm-2.patch +++ b/SOURCES/glibc-rh731833-libm-2.patch @@ -25,22 +25,22 @@ identical copies in powerpc32 and powerpc64. delete mode 100644 sysdeps/powerpc/powerpc64/power4/fpu/Makefile delete mode 100644 sysdeps/powerpc/powerpc64/power4/fpu/mpa.c -diff --git a/sysdeps/powerpc/power4/fpu/Makefile b/sysdeps/powerpc/power4/fpu/Makefile +diff --git glibc-2.17-c758a686/sysdeps/powerpc/power4/fpu/Makefile glibc-2.17-c758a686/sysdeps/powerpc/power4/fpu/Makefile new file mode 100644 index 0000000..f487ed6 --- /dev/null -+++ b/sysdeps/powerpc/power4/fpu/Makefile ++++ glibc-2.17-c758a686/sysdeps/powerpc/power4/fpu/Makefile @@ -0,0 +1,5 @@ +# Makefile fragment for POWER4/5/5+ with FPU. + +ifeq ($(subdir),math) +CFLAGS-mpa.c += --param max-unroll-times=4 -funroll-loops -fpeel-loops +endif -diff --git a/sysdeps/powerpc/power4/fpu/mpa.c b/sysdeps/powerpc/power4/fpu/mpa.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/power4/fpu/mpa.c glibc-2.17-c758a686/sysdeps/powerpc/power4/fpu/mpa.c new file mode 100644 index 0000000..d15680e --- /dev/null -+++ b/sysdeps/powerpc/power4/fpu/mpa.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/power4/fpu/mpa.c @@ -0,0 +1,548 @@ + +/* @@ -590,18 +590,18 @@ index 0000000..d15680e + else {__inv(y,&w,p); __mul(x,&w,z,p);} + return; +} -diff --git a/sysdeps/powerpc/powerpc32/power4/Implies b/sysdeps/powerpc/powerpc32/power4/Implies +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/Implies glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/Implies new file mode 100644 index 0000000..a372141 --- /dev/null -+++ b/sysdeps/powerpc/powerpc32/power4/Implies ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/Implies @@ -0,0 +1,2 @@ +powerpc/power4/fpu +powerpc/power4 -diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/Makefile b/sysdeps/powerpc/powerpc32/power4/fpu/Makefile +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/fpu/Makefile glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/fpu/Makefile deleted file mode 100644 index f487ed6..0000000 ---- a/sysdeps/powerpc/powerpc32/power4/fpu/Makefile +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/fpu/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -# Makefile fragment for POWER4/5/5+ with FPU. @@ -609,10 +609,10 @@ index f487ed6..0000000 -ifeq ($(subdir),math) -CFLAGS-mpa.c += --param max-unroll-times=4 -funroll-loops -fpeel-loops -endif -diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/mpa.c b/sysdeps/powerpc/powerpc32/power4/fpu/mpa.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/fpu/mpa.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/fpu/mpa.c deleted file mode 100644 index d15680e..0000000 ---- a/sysdeps/powerpc/powerpc32/power4/fpu/mpa.c +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/fpu/mpa.c +++ /dev/null @@ -1,548 +0,0 @@ - @@ -1163,18 +1163,18 @@ index d15680e..0000000 - else {__inv(y,&w,p); __mul(x,&w,z,p);} - return; -} -diff --git a/sysdeps/powerpc/powerpc64/power4/Implies b/sysdeps/powerpc/powerpc64/power4/Implies +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power4/Implies glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power4/Implies new file mode 100644 index 0000000..a372141 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/power4/Implies ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power4/Implies @@ -0,0 +1,2 @@ +powerpc/power4/fpu +powerpc/power4 -diff --git a/sysdeps/powerpc/powerpc64/power4/fpu/Makefile b/sysdeps/powerpc/powerpc64/power4/fpu/Makefile +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power4/fpu/Makefile glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power4/fpu/Makefile deleted file mode 100644 index f8bb3ef..0000000 ---- a/sysdeps/powerpc/powerpc64/power4/fpu/Makefile +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power4/fpu/Makefile +++ /dev/null @@ -1,5 +0,0 @@ -# Makefile fragment for POWER4/5/5+ platforms with FPU. @@ -1182,10 +1182,10 @@ index f8bb3ef..0000000 -ifeq ($(subdir),math) -CFLAGS-mpa.c += --param max-unroll-times=4 -funroll-loops -fpeel-loops -endif -diff --git a/sysdeps/powerpc/powerpc64/power4/fpu/mpa.c b/sysdeps/powerpc/powerpc64/power4/fpu/mpa.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power4/fpu/mpa.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power4/fpu/mpa.c deleted file mode 100644 index d15680e..0000000 ---- a/sysdeps/powerpc/powerpc64/power4/fpu/mpa.c +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power4/fpu/mpa.c +++ /dev/null @@ -1,548 +0,0 @@ - diff --git a/SOURCES/glibc-rh731833-libm-3.patch b/SOURCES/glibc-rh731833-libm-3.patch index 64927aa..89fe7a2 100644 --- a/SOURCES/glibc-rh731833-libm-3.patch +++ b/SOURCES/glibc-rh731833-libm-3.patch @@ -14,10 +14,10 @@ math_ldbl, using the definitions from ieee754 math_ldbl.h. 5 files changed, 34 insertions(+), 168 deletions(-) delete mode 100644 sysdeps/unix/sysv/linux/powerpc/Implies -diff --git a/sysdeps/ieee754/ldbl-128ibm/math_ldbl.h b/sysdeps/ieee754/ldbl-128ibm/math_ldbl.h +diff --git glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/math_ldbl.h glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/math_ldbl.h index be9ac71..1cce1fc 100644 ---- a/sysdeps/ieee754/ldbl-128ibm/math_ldbl.h -+++ b/sysdeps/ieee754/ldbl-128ibm/math_ldbl.h +--- glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/math_ldbl.h ++++ glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/math_ldbl.h @@ -125,7 +125,7 @@ ldbl_insert_mantissa (int sign, int exp, int64_t hi64, u_int64_t lo64) /* Handy utility functions to pack/unpack/cononicalize and find the nearbyint of long double implemented as double double. */ @@ -49,20 +49,20 @@ index be9ac71..1cce1fc 100644 /* Convert a finite long double to canonical form. Does not handle +/-Inf properly. */ -diff --git a/sysdeps/powerpc/Implies b/sysdeps/powerpc/Implies +diff --git glibc-2.17-c758a686/sysdeps/powerpc/Implies glibc-2.17-c758a686/sysdeps/powerpc/Implies index 7ccf9a7..78dba95 100644 ---- a/sysdeps/powerpc/Implies -+++ b/sysdeps/powerpc/Implies +--- glibc-2.17-c758a686/sysdeps/powerpc/Implies ++++ glibc-2.17-c758a686/sysdeps/powerpc/Implies @@ -1,4 +1,5 @@ # On PowerPC we use the IBM extended long double format. ieee754/ldbl-128ibm +ieee754/ldbl-opt ieee754/dbl-64 ieee754/flt-32 -diff --git a/sysdeps/powerpc/fpu/math_ldbl.h b/sysdeps/powerpc/fpu/math_ldbl.h +diff --git glibc-2.17-c758a686/sysdeps/powerpc/fpu/math_ldbl.h glibc-2.17-c758a686/sysdeps/powerpc/fpu/math_ldbl.h index 6cd6d0b..36378c0 100644 ---- a/sysdeps/powerpc/fpu/math_ldbl.h -+++ b/sysdeps/powerpc/fpu/math_ldbl.h +--- glibc-2.17-c758a686/sysdeps/powerpc/fpu/math_ldbl.h ++++ glibc-2.17-c758a686/sysdeps/powerpc/fpu/math_ldbl.h @@ -2,132 +2,12 @@ #error "Never use directly; include instead." #endif @@ -254,10 +254,10 @@ index 6cd6d0b..36378c0 100644 - return a; -} +#include -diff --git a/sysdeps/unix/sysv/linux/powerpc/Implies b/sysdeps/unix/sysv/linux/powerpc/Implies +diff --git glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/Implies glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/Implies deleted file mode 100644 index ff27cdb..0000000 ---- a/sysdeps/unix/sysv/linux/powerpc/Implies +--- glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/Implies +++ /dev/null @@ -1,4 +0,0 @@ -# Make sure these routines come before ldbl-opt. diff --git a/SOURCES/glibc-rh731833-libm-4.patch b/SOURCES/glibc-rh731833-libm-4.patch index a5d1497..a513494 100644 --- a/SOURCES/glibc-rh731833-libm-4.patch +++ b/SOURCES/glibc-rh731833-libm-4.patch @@ -15,9 +15,9 @@ Subject: [PATCH 21/42] PowerPC: fix libm ABI issue for llroundl (cherry picked from commit fce14d4e9c6e08ad8c825fe88d8cbdac5c739565) -diff -pruN glibc-2.17-c758a686/sysdeps/powerpc/fpu/s_llround.c glibc-2.17-c758a686.new/sysdeps/powerpc/fpu/s_llround.c +diff -pruN glibc-2.17-c758a686/sysdeps/powerpc/fpu/s_llround.c glibc-2.17-c758a686/sysdeps/powerpc/fpu/s_llround.c --- glibc-2.17-c758a686/sysdeps/powerpc/fpu/s_llround.c 2012-12-25 08:32:13.000000000 +0530 -+++ glibc-2.17-c758a686.new/sysdeps/powerpc/fpu/s_llround.c 2013-08-06 17:45:56.719534470 +0530 ++++ glibc-2.17-c758a686/sysdeps/powerpc/fpu/s_llround.c 2013-08-06 17:45:56.719534470 +0530 @@ -17,6 +17,7 @@ . */ @@ -33,9 +33,9 @@ diff -pruN glibc-2.17-c758a686/sysdeps/powerpc/fpu/s_llround.c glibc-2.17-c758a6 +#if LONG_DOUBLE_COMPAT (libm, GLIBC_2_1) +compat_symbol (libm, __llround, llroundl, GLIBC_2_1); +#endif -diff -pruN glibc-2.17-c758a686/sysdeps/powerpc/fpu/w_sqrt.c glibc-2.17-c758a686.new/sysdeps/powerpc/fpu/w_sqrt.c +diff -pruN glibc-2.17-c758a686/sysdeps/powerpc/fpu/w_sqrt.c glibc-2.17-c758a686/sysdeps/powerpc/fpu/w_sqrt.c --- glibc-2.17-c758a686/sysdeps/powerpc/fpu/w_sqrt.c 2012-12-25 08:32:13.000000000 +0530 -+++ glibc-2.17-c758a686.new/sysdeps/powerpc/fpu/w_sqrt.c 2013-08-06 17:45:53.459534613 +0530 ++++ glibc-2.17-c758a686/sysdeps/powerpc/fpu/w_sqrt.c 2013-08-06 17:45:53.459534613 +0530 @@ -19,6 +19,7 @@ #include #include diff --git a/SOURCES/glibc-rh731833-libm-5.patch b/SOURCES/glibc-rh731833-libm-5.patch index 2a270d9..3b68ecb 100644 --- a/SOURCES/glibc-rh731833-libm-5.patch +++ b/SOURCES/glibc-rh731833-libm-5.patch @@ -21,10 +21,10 @@ commit. sysdeps/powerpc/powerpc64/fpu/s_rintf.S | 6 +++--- 4 files changed, 12 insertions(+), 12 deletions(-) -diff --git a/sysdeps/powerpc/powerpc32/fpu/s_rint.S b/sysdeps/powerpc/powerpc32/fpu/s_rint.S +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/fpu/s_rint.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/fpu/s_rint.S index 0ab9e6c..c28e7f6 100644 ---- a/sysdeps/powerpc/powerpc32/fpu/s_rint.S -+++ b/sysdeps/powerpc/powerpc32/fpu/s_rint.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/fpu/s_rint.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/fpu/s_rint.S @@ -45,14 +45,14 @@ ENTRY (__rint) fsub fp12,fp13,fp13 /* generate 0.0 */ fcmpu cr7,fp0,fp13 /* if (fabs(x) > TWO52) */ @@ -43,10 +43,10 @@ index 0ab9e6c..c28e7f6 100644 fsub fp1,fp1,fp13 /* x-= TWO52; */ fadd fp1,fp1,fp13 /* x+= TWO52; */ fnabs fp1,fp1 /* if (x == 0.0) */ -diff --git a/sysdeps/powerpc/powerpc32/fpu/s_rintf.S b/sysdeps/powerpc/powerpc32/fpu/s_rintf.S +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/fpu/s_rintf.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/fpu/s_rintf.S index ddb47db..69aed9c 100644 ---- a/sysdeps/powerpc/powerpc32/fpu/s_rintf.S -+++ b/sysdeps/powerpc/powerpc32/fpu/s_rintf.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/fpu/s_rintf.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/fpu/s_rintf.S @@ -41,14 +41,14 @@ ENTRY (__rintf) fsubs fp12,fp13,fp13 /* generate 0.0 */ fcmpu cr7,fp0,fp13 /* if (fabs(x) > TWO23) */ @@ -65,10 +65,10 @@ index ddb47db..69aed9c 100644 fsubs fp1,fp1,fp13 /* x-= TWO23; */ fadds fp1,fp1,fp13 /* x+= TWO23; */ fnabs fp1,fp1 /* if (x == 0.0) */ -diff --git a/sysdeps/powerpc/powerpc64/fpu/s_rint.S b/sysdeps/powerpc/powerpc64/fpu/s_rint.S +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/s_rint.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/s_rint.S index db62405..560905a 100644 ---- a/sysdeps/powerpc/powerpc64/fpu/s_rint.S -+++ b/sysdeps/powerpc/powerpc64/fpu/s_rint.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/s_rint.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/s_rint.S @@ -34,14 +34,14 @@ EALIGN (__rint, 4, 0) fsub fp12,fp13,fp13 /* generate 0.0 */ fcmpu cr7,fp0,fp13 /* if (fabs(x) > TWO52) */ @@ -87,10 +87,10 @@ index db62405..560905a 100644 fsub fp1,fp1,fp13 /* x-= TWO52; */ fadd fp1,fp1,fp13 /* x+= TWO52; */ fnabs fp1,fp1 /* if (x == 0.0) */ -diff --git a/sysdeps/powerpc/powerpc64/fpu/s_rintf.S b/sysdeps/powerpc/powerpc64/fpu/s_rintf.S +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/s_rintf.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/s_rintf.S index 248649d..c120d91 100644 ---- a/sysdeps/powerpc/powerpc64/fpu/s_rintf.S -+++ b/sysdeps/powerpc/powerpc64/fpu/s_rintf.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/s_rintf.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/s_rintf.S @@ -30,14 +30,14 @@ EALIGN (__rintf, 4, 0) fsubs fp12,fp13,fp13 /* generate 0.0 */ fcmpu cr7,fp0,fp13 /* if (fabs(x) > TWO23) */ diff --git a/SOURCES/glibc-rh731833-libm-6.patch b/SOURCES/glibc-rh731833-libm-6.patch index 0f98a97..c541328 100644 --- a/SOURCES/glibc-rh731833-libm-6.patch +++ b/SOURCES/glibc-rh731833-libm-6.patch @@ -23,9 +23,9 @@ to power5+ instead of power5 (since only on power5+ round/ceil will be inline to inline assembly). (cherry picked from commit aa630f590c9c7d070a7cdf3a2a88069ad6b63de9) -diff -pruN glibc-2.17-c758a686/sysdeps/powerpc/power5+/fpu/s_modf.c glibc-2.17-c758a686.new/sysdeps/powerpc/power5+/fpu/s_modf.c +diff -pruN glibc-2.17-c758a686/sysdeps/powerpc/power5+/fpu/s_modf.c glibc-2.17-c758a686/sysdeps/powerpc/power5+/fpu/s_modf.c --- glibc-2.17-c758a686/sysdeps/powerpc/power5+/fpu/s_modf.c 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.17-c758a686.new/sysdeps/powerpc/power5+/fpu/s_modf.c 2013-08-06 17:48:57.609526556 +0530 ++++ glibc-2.17-c758a686/sysdeps/powerpc/power5+/fpu/s_modf.c 2013-08-06 17:48:57.609526556 +0530 @@ -0,0 +1,58 @@ +/* Copyright (C) 2013 Free Software Foundation, Inc. + This file is part of the GNU C Library @@ -85,9 +85,9 @@ diff -pruN glibc-2.17-c758a686/sysdeps/powerpc/power5+/fpu/s_modf.c glibc-2.17-c +#elif LONG_DOUBLE_COMPAT(libc, GLIBC_2_0) +compat_symbol (libc, __modf, modfl, GLIBC_2_0); +#endif -diff -pruN glibc-2.17-c758a686/sysdeps/powerpc/power5+/fpu/s_modff.c glibc-2.17-c758a686.new/sysdeps/powerpc/power5+/fpu/s_modff.c +diff -pruN glibc-2.17-c758a686/sysdeps/powerpc/power5+/fpu/s_modff.c glibc-2.17-c758a686/sysdeps/powerpc/power5+/fpu/s_modff.c --- glibc-2.17-c758a686/sysdeps/powerpc/power5+/fpu/s_modff.c 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.17-c758a686.new/sysdeps/powerpc/power5+/fpu/s_modff.c 2013-08-06 17:48:57.609526556 +0530 ++++ glibc-2.17-c758a686/sysdeps/powerpc/power5+/fpu/s_modff.c 2013-08-06 17:48:57.609526556 +0530 @@ -0,0 +1,46 @@ +/* Copyright (C) 2013 Free Software Foundation, Inc. + This file is part of the GNU C Library @@ -135,33 +135,33 @@ diff -pruN glibc-2.17-c758a686/sysdeps/powerpc/power5+/fpu/s_modff.c glibc-2.17- + } +} +weak_alias (__modff, modff) -diff -pruN glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power5/Implies glibc-2.17-c758a686.new/sysdeps/powerpc/powerpc32/power5/Implies +diff -pruN glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power5/Implies glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power5/Implies --- glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power5/Implies 2012-12-25 08:32:13.000000000 +0530 -+++ glibc-2.17-c758a686.new/sysdeps/powerpc/powerpc32/power5/Implies 2013-08-06 17:48:54.266526703 +0530 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power5/Implies 2013-08-06 17:48:54.266526703 +0530 @@ -1,2 +1,4 @@ +powerpc/power5/fpu +powerpc/power5 powerpc/powerpc32/power4/fpu powerpc/powerpc32/power4 -diff -pruN glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power5+/Implies glibc-2.17-c758a686.new/sysdeps/powerpc/powerpc32/power5+/Implies +diff -pruN glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power5+/Implies glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power5+/Implies --- glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power5+/Implies 2012-12-25 08:32:13.000000000 +0530 -+++ glibc-2.17-c758a686.new/sysdeps/powerpc/powerpc32/power5+/Implies 2013-08-06 17:48:57.609526556 +0530 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power5+/Implies 2013-08-06 17:48:57.609526556 +0530 @@ -1,2 +1,4 @@ +powerpc/power5+/fpu +powerpc/power5+ powerpc/powerpc32/power5/fpu powerpc/powerpc32/power5 -diff -pruN glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power5/Implies glibc-2.17-c758a686.new/sysdeps/powerpc/powerpc64/power5/Implies +diff -pruN glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power5/Implies glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power5/Implies --- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power5/Implies 2012-12-25 08:32:13.000000000 +0530 -+++ glibc-2.17-c758a686.new/sysdeps/powerpc/powerpc64/power5/Implies 2013-08-06 17:48:54.266526703 +0530 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power5/Implies 2013-08-06 17:48:54.266526703 +0530 @@ -1,2 +1,4 @@ +powerpc/power5/fpu +powerpc/power5 powerpc/powerpc64/power4/fpu powerpc/powerpc64/power4 -diff -pruN glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power5+/Implies glibc-2.17-c758a686.new/sysdeps/powerpc/powerpc64/power5+/Implies +diff -pruN glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power5+/Implies glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power5+/Implies --- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power5+/Implies 2012-12-25 08:32:13.000000000 +0530 -+++ glibc-2.17-c758a686.new/sysdeps/powerpc/powerpc64/power5+/Implies 2013-08-06 17:48:57.610526556 +0530 ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power5+/Implies 2013-08-06 17:48:57.610526556 +0530 @@ -1,2 +1,4 @@ +powerpc/power5+/fpu +powerpc/power5+ diff --git a/SOURCES/glibc-rh731833-libm-7.patch b/SOURCES/glibc-rh731833-libm-7.patch index 9ac2b7d..e56c20b 100644 --- a/SOURCES/glibc-rh731833-libm-7.patch +++ b/SOURCES/glibc-rh731833-libm-7.patch @@ -12,10 +12,10 @@ Subject: [PATCH 28/42] PowerPC: fix hypot/hypotf check for -INF (cherry sysdeps/powerpc/fpu/e_hypotf.c | 6 +++--- 4 files changed, 14 insertions(+), 7 deletions(-) -diff --git a/sysdeps/powerpc/fpu/e_hypot.c b/sysdeps/powerpc/fpu/e_hypot.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/fpu/e_hypot.c glibc-2.17-c758a686/sysdeps/powerpc/fpu/e_hypot.c index cfadd5c..fc17bea 100644 ---- a/sysdeps/powerpc/fpu/e_hypot.c -+++ b/sysdeps/powerpc/fpu/e_hypot.c +--- glibc-2.17-c758a686/sysdeps/powerpc/fpu/e_hypot.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/fpu/e_hypot.c @@ -52,13 +52,13 @@ static const double pdnum = 2.225073858507201e-308; ieee_double_shape_type gh_u2; \ gh_u1.value = (d1); \ @@ -33,10 +33,10 @@ index cfadd5c..fc17bea 100644 GET_TW0_HIGH_WORD(x, y, hx, hy); \ if (hy > hx) { \ uint32_t ht = hx; hx = hy; hy = ht; \ -diff --git a/sysdeps/powerpc/fpu/e_hypotf.c b/sysdeps/powerpc/fpu/e_hypotf.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/fpu/e_hypotf.c glibc-2.17-c758a686/sysdeps/powerpc/fpu/e_hypotf.c index 92e824d..77c1b17 100644 ---- a/sysdeps/powerpc/fpu/e_hypotf.c -+++ b/sysdeps/powerpc/fpu/e_hypotf.c +--- glibc-2.17-c758a686/sysdeps/powerpc/fpu/e_hypotf.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/fpu/e_hypotf.c @@ -46,13 +46,13 @@ static const float two30 = 1.0737418e09; ieee_float_shape_type gf_u2; \ gf_u1.value = (f1); \ diff --git a/SOURCES/glibc-rh731833-libm.patch b/SOURCES/glibc-rh731833-libm.patch index 4152834..0bd5106 100644 --- a/SOURCES/glibc-rh731833-libm.patch +++ b/SOURCES/glibc-rh731833-libm.patch @@ -9,10 +9,10 @@ Subject: [PATCH 16/42] BZ #15055: Use __ieee754_sqrl in acoshl for sysdeps/ieee754/ldbl-128ibm/e_acoshl.c | 2 +- 3 files changed, 8 insertions(+), 2 deletions(-) -diff --git a/sysdeps/ieee754/ldbl-128ibm/e_acoshl.c b/sysdeps/ieee754/ldbl-128ibm/e_acoshl.c +diff --git glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/e_acoshl.c glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/e_acoshl.c index 117bd0f..abc78a3 100644 ---- a/sysdeps/ieee754/ldbl-128ibm/e_acoshl.c -+++ b/sysdeps/ieee754/ldbl-128ibm/e_acoshl.c +--- glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/e_acoshl.c ++++ glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/e_acoshl.c @@ -52,7 +52,7 @@ __ieee754_acoshl(long double x) return __ieee754_logl(2.0*x-one/(x+__ieee754_sqrtl(t-one))); } else { /* 1 #include "bp-sym.h" @@ -32,10 +32,10 @@ index 4935e64..2e454c0 100644 /* These are the various addresses we require. */ #ifdef PIC .section ".data" -diff --git a/sysdeps/powerpc/powerpc64/start.S b/sysdeps/powerpc/powerpc64/start.S +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/start.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/start.S index d9c92d1..aadaf0f 100644 ---- a/sysdeps/powerpc/powerpc64/start.S -+++ b/sysdeps/powerpc/powerpc64/start.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/start.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/start.S @@ -37,6 +37,13 @@ #include #include "bp-sym.h" diff --git a/SOURCES/glibc-rh731833-misc-3.patch b/SOURCES/glibc-rh731833-misc-3.patch index 7c56f0e..46b03fa 100644 --- a/SOURCES/glibc-rh731833-misc-3.patch +++ b/SOURCES/glibc-rh731833-misc-3.patch @@ -17,10 +17,10 @@ the default non vDSO time on PowerPC to use sysdeps/posix/time.c 5 files changed, 81 insertions(+), 3 deletions(-) create mode 100644 sysdeps/unix/sysv/linux/powerpc/time.c -diff --git a/sysdeps/unix/sysv/linux/powerpc/Versions b/sysdeps/unix/sysv/linux/powerpc/Versions +diff --git glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/Versions glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/Versions index 396a423..289c4fe 100644 ---- a/sysdeps/unix/sysv/linux/powerpc/Versions -+++ b/sysdeps/unix/sysv/linux/powerpc/Versions +--- glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/Versions ++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/Versions @@ -4,5 +4,6 @@ libc { __vdso_clock_gettime; __vdso_clock_getres; @@ -28,10 +28,10 @@ index 396a423..289c4fe 100644 + __vdso_time; } } -diff --git a/sysdeps/unix/sysv/linux/powerpc/bits/libc-vdso.h b/sysdeps/unix/sysv/linux/powerpc/bits/libc-vdso.h +diff --git glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/bits/libc-vdso.h glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/bits/libc-vdso.h index e4ae630..f7f635e 100644 ---- a/sysdeps/unix/sysv/linux/powerpc/bits/libc-vdso.h -+++ b/sysdeps/unix/sysv/linux/powerpc/bits/libc-vdso.h +--- glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/bits/libc-vdso.h ++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/bits/libc-vdso.h @@ -32,14 +32,16 @@ extern void *__vdso_get_tbfreq; extern void *__vdso_getcpu; @@ -51,10 +51,10 @@ index e4ae630..f7f635e 100644 #endif #endif -diff --git a/sysdeps/unix/sysv/linux/powerpc/init-first.c b/sysdeps/unix/sysv/linux/powerpc/init-first.c +diff --git glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/init-first.c glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/init-first.c index 5587e2a..3cefd9b 100644 ---- a/sysdeps/unix/sysv/linux/powerpc/init-first.c -+++ b/sysdeps/unix/sysv/linux/powerpc/init-first.c +--- glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/init-first.c ++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/init-first.c @@ -28,7 +28,7 @@ void *__vdso_clock_gettime; void *__vdso_clock_getres; void *__vdso_get_tbfreq; @@ -73,11 +73,11 @@ index 5587e2a..3cefd9b 100644 } # define VDSO_SETUP _libc_vdso_platform_setup -diff --git a/sysdeps/unix/sysv/linux/powerpc/time.c b/sysdeps/unix/sysv/linux/powerpc/time.c +diff --git glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/time.c glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/time.c new file mode 100644 index 0000000..66b4eb3 --- /dev/null -+++ b/sysdeps/unix/sysv/linux/powerpc/time.c ++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/time.c @@ -0,0 +1,62 @@ +/* time system call for Linux/PowerPC. + Copyright (C) 2013 Free Software Foundation, Inc. diff --git a/SOURCES/glibc-rh731833-misc-4.patch b/SOURCES/glibc-rh731833-misc-4.patch index 68cc484..0d1ca84 100644 --- a/SOURCES/glibc-rh731833-misc-4.patch +++ b/SOURCES/glibc-rh731833-misc-4.patch @@ -16,9 +16,9 @@ This patch add inline functions to change the Program Priority Register from ISA 2.05. (cherry picked from commit d116b7c414c8239b677e341ac517745db689ac2d) -diff -pruN glibc-2.17-c758a686/manual/platform.texi glibc-2.17-c758a686.new/manual/platform.texi +diff -pruN glibc-2.17-c758a686/manual/platform.texi glibc-2.17-c758a686/manual/platform.texi --- glibc-2.17-c758a686/manual/platform.texi 2012-12-25 08:32:13.000000000 +0530 -+++ glibc-2.17-c758a686.new/manual/platform.texi 2013-08-05 19:06:49.523550318 +0530 ++++ glibc-2.17-c758a686/manual/platform.texi 2013-08-05 19:06:49.523550318 +0530 @@ -34,3 +34,48 @@ This frequency is not related to the pro It is also possible that this frequency is not constant. More information is available in @cite{Power ISA 2.06b - Book II - Section 5.2}. @@ -68,9 +68,9 @@ diff -pruN glibc-2.17-c758a686/manual/platform.texi glibc-2.17-c758a686.new/manu +@deftypefun {void} __ppc_set_ppr_med_low (void) +Set the Program Priority Register to medium low value. +@end deftypefun -diff -pruN glibc-2.17-c758a686/sysdeps/powerpc/sys/platform/ppc.h glibc-2.17-c758a686.new/sysdeps/powerpc/sys/platform/ppc.h +diff -pruN glibc-2.17-c758a686/sysdeps/powerpc/sys/platform/ppc.h glibc-2.17-c758a686/sysdeps/powerpc/sys/platform/ppc.h --- glibc-2.17-c758a686/sysdeps/powerpc/sys/platform/ppc.h 2012-12-25 08:32:13.000000000 +0530 -+++ glibc-2.17-c758a686.new/sysdeps/powerpc/sys/platform/ppc.h 2013-08-05 19:06:49.523550318 +0530 ++++ glibc-2.17-c758a686/sysdeps/powerpc/sys/platform/ppc.h 2013-08-05 19:06:49.523550318 +0530 @@ -50,4 +50,66 @@ __ppc_get_timebase (void) #endif } diff --git a/SOURCES/glibc-rh731833-misc-5.patch b/SOURCES/glibc-rh731833-misc-5.patch index 2805dd1..ad46fe5 100644 --- a/SOURCES/glibc-rh731833-misc-5.patch +++ b/SOURCES/glibc-rh731833-misc-5.patch @@ -10,10 +10,10 @@ Branch framework for PowerPC. nptl/sysdeps/powerpc/tls.h | 5 +++++ 2 files changed, 10 insertions(+) -diff --git a/nptl/sysdeps/powerpc/tls.h b/nptl/sysdeps/powerpc/tls.h +diff --git glibc-2.17-c758a686/nptl/sysdeps/powerpc/tls.h glibc-2.17-c758a686/nptl/sysdeps/powerpc/tls.h index 4c09eec..611c773 100644 ---- a/nptl/sysdeps/powerpc/tls.h -+++ b/nptl/sysdeps/powerpc/tls.h +--- glibc-2.17-c758a686/nptl/sysdeps/powerpc/tls.h ++++ glibc-2.17-c758a686/nptl/sysdeps/powerpc/tls.h @@ -61,6 +61,11 @@ typedef union dtv are private. */ typedef struct diff --git a/SOURCES/glibc-rh731833-misc-6.patch b/SOURCES/glibc-rh731833-misc-6.patch index e250e65..02df775 100644 --- a/SOURCES/glibc-rh731833-misc-6.patch +++ b/SOURCES/glibc-rh731833-misc-6.patch @@ -16,10 +16,10 @@ is based on other architecture code. create mode 100644 sysdeps/unix/sysv/linux/powerpc/dl-static.c create mode 100644 sysdeps/unix/sysv/linux/powerpc/ldsodefs.h -diff --git a/sysdeps/unix/sysv/linux/powerpc/Makefile b/sysdeps/unix/sysv/linux/powerpc/Makefile +diff --git glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/Makefile glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/Makefile index 4ff7e84..cf4de97 100644 ---- a/sysdeps/unix/sysv/linux/powerpc/Makefile -+++ b/sysdeps/unix/sysv/linux/powerpc/Makefile +--- glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/Makefile ++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/Makefile @@ -15,6 +15,12 @@ endif ifeq ($(subdir),elf) @@ -33,10 +33,10 @@ index 4ff7e84..cf4de97 100644 endif ifeq ($(subdir),misc) -diff --git a/sysdeps/unix/sysv/linux/powerpc/Versions b/sysdeps/unix/sysv/linux/powerpc/Versions +diff --git glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/Versions glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/Versions index 289c4fe..9b583fb 100644 ---- a/sysdeps/unix/sysv/linux/powerpc/Versions -+++ b/sysdeps/unix/sysv/linux/powerpc/Versions +--- glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/Versions ++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/Versions @@ -1,3 +1,9 @@ +ld { + GLIBC_PRIVATE { @@ -47,11 +47,11 @@ index 289c4fe..9b583fb 100644 libc { GLIBC_PRIVATE { __vdso_get_tbfreq; -diff --git a/sysdeps/unix/sysv/linux/powerpc/dl-static.c b/sysdeps/unix/sysv/linux/powerpc/dl-static.c +diff --git glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/dl-static.c glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/dl-static.c new file mode 100644 index 0000000..8289c61 --- /dev/null -+++ b/sysdeps/unix/sysv/linux/powerpc/dl-static.c ++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/dl-static.c @@ -0,0 +1,84 @@ +/* Variable initialization. PowerPC version. + Copyright (C) 2013 Free Software Foundation, Inc. @@ -137,11 +137,11 @@ index 0000000..8289c61 +} + +#endif -diff --git a/sysdeps/unix/sysv/linux/powerpc/ldsodefs.h b/sysdeps/unix/sysv/linux/powerpc/ldsodefs.h +diff --git glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/ldsodefs.h glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/ldsodefs.h new file mode 100644 index 0000000..fcedf32 --- /dev/null -+++ b/sysdeps/unix/sysv/linux/powerpc/ldsodefs.h ++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/ldsodefs.h @@ -0,0 +1,33 @@ +/* Run-time dynamic linker data structures for loaded ELF shared objects. + PowerPC version. diff --git a/SOURCES/glibc-rh731833-misc.patch b/SOURCES/glibc-rh731833-misc.patch index f8c23e8..d72362d 100644 --- a/SOURCES/glibc-rh731833-misc.patch +++ b/SOURCES/glibc-rh731833-misc.patch @@ -19,10 +19,10 @@ register (or implied pair) is to be used for the return value. sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h | 29 +++++++++++----------- 5 files changed, 55 insertions(+), 29 deletions(-) -diff --git a/sysdeps/unix/sysv/linux/powerpc/get_clockfreq.c b/sysdeps/unix/sysv/linux/powerpc/get_clockfreq.c +diff --git glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/get_clockfreq.c glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/get_clockfreq.c index a863a27..021594c 100644 ---- a/sysdeps/unix/sysv/linux/powerpc/get_clockfreq.c -+++ b/sysdeps/unix/sysv/linux/powerpc/get_clockfreq.c +--- glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/get_clockfreq.c ++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/get_clockfreq.c @@ -41,7 +41,8 @@ __get_clockfreq (void) /* If we can use the vDSO to obtain the timebase even better. */ #ifdef SHARED @@ -33,10 +33,10 @@ index a863a27..021594c 100644 if (INTERNAL_SYSCALL_ERROR_P (timebase_freq, err) && INTERNAL_SYSCALL_ERRNO (timebase_freq, err) == ENOSYS) #endif -diff --git a/sysdeps/unix/sysv/linux/powerpc/init-first.c b/sysdeps/unix/sysv/linux/powerpc/init-first.c +diff --git glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/init-first.c glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/init-first.c index 6bcb7d5..5587e2a 100644 ---- a/sysdeps/unix/sysv/linux/powerpc/init-first.c -+++ b/sysdeps/unix/sysv/linux/powerpc/init-first.c +--- glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/init-first.c ++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/init-first.c @@ -41,7 +41,7 @@ _libc_vdso_platform_setup (void) __vdso_clock_getres = _dl_vdso_vsym ("__kernel_clock_getres", &linux2615); @@ -46,10 +46,10 @@ index 6bcb7d5..5587e2a 100644 __vdso_getcpu = _dl_vdso_vsym ("__kernel_getcpu", &linux2615); } -diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h b/sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h +diff --git glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h index da25c01..fa4116e 100644 ---- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h -+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h +--- glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h ++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h @@ -60,7 +60,8 @@ \ if (__vdso_##name != NULL) \ @@ -129,10 +129,10 @@ index da25c01..fa4116e 100644 __asm__ __volatile__ \ ("sc \n\t" \ "mfcr %0" \ -diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h b/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h +diff --git glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h index 059cf70..b4cdbbb 100644 ---- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h -+++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h +--- glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h ++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h @@ -75,7 +75,8 @@ \ if (__vdso_##name != NULL) \ diff --git a/SOURCES/glibc-rh731833-rtkaio-2.patch b/SOURCES/glibc-rh731833-rtkaio-2.patch index e3f4eca..59c2542 100644 --- a/SOURCES/glibc-rh731833-rtkaio-2.patch +++ b/SOURCES/glibc-rh731833-rtkaio-2.patch @@ -1,6 +1,6 @@ -diff -pruN glibc-2.17-c758a686/rtkaio/sysdeps/unix/sysv/linux/kaio_suspend.c glibc-2.17-c758a686.new/rtkaio/sysdeps/unix/sysv/linux/kaio_suspend.c +diff -pruN glibc-2.17-c758a686/rtkaio/sysdeps/unix/sysv/linux/kaio_suspend.c glibc-2.17-c758a686/rtkaio/sysdeps/unix/sysv/linux/kaio_suspend.c --- glibc-2.17-c758a686/rtkaio/sysdeps/unix/sysv/linux/kaio_suspend.c 2011-10-19 16:34:41.000000000 +0530 -+++ glibc-2.17-c758a686.new/rtkaio/sysdeps/unix/sysv/linux/kaio_suspend.c 2013-08-16 10:22:30.457609558 +0530 ++++ glibc-2.17-c758a686/rtkaio/sysdeps/unix/sysv/linux/kaio_suspend.c 2013-08-16 10:22:30.457609558 +0530 @@ -59,6 +59,7 @@ struct clparam diff --git a/SOURCES/glibc-rh731833-rtkaio.patch b/SOURCES/glibc-rh731833-rtkaio.patch index c4ae52a..b805ee9 100644 --- a/SOURCES/glibc-rh731833-rtkaio.patch +++ b/SOURCES/glibc-rh731833-rtkaio.patch @@ -1,6 +1,6 @@ -diff -pruN glibc-2.17-c758a686/rtkaio/Makefile glibc-2.17-c758a686.new/rtkaio/Makefile +diff -pruN glibc-2.17-c758a686/rtkaio/Makefile glibc-2.17-c758a686/rtkaio/Makefile --- glibc-2.17-c758a686/rtkaio/Makefile 2011-10-19 16:34:41.000000000 +0530 -+++ glibc-2.17-c758a686.new/rtkaio/Makefile 2013-08-13 18:23:21.064888432 +0530 ++++ glibc-2.17-c758a686/rtkaio/Makefile 2013-08-13 18:23:21.064888432 +0530 @@ -55,7 +55,7 @@ extra-libs-others := $(extra-libs) include $(..)Makeconfig diff --git a/SOURCES/glibc-rh731837-00.patch b/SOURCES/glibc-rh731837-00.patch index 0283612..6c31372 100644 --- a/SOURCES/glibc-rh731837-00.patch +++ b/SOURCES/glibc-rh731837-00.patch @@ -60,148 +60,148 @@ sysdeps/unix/sysv/linux/powerpc/powerpc64/power8/Implies delete mode 100644 sysdeps/unix/sysv/linux/powerpc/powerpc64/power6x/Implies delete mode 100644 sysdeps/unix/sysv/linux/powerpc/powerpc64/power7/Implies -diff --git a/sysdeps/powerpc/powerpc64/power4/fpu/Implies b/sysdeps/powerpc/powerpc64/power4/fpu/Implies +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power4/fpu/Implies glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power4/fpu/Implies new file mode 100644 index 0000000..c1f617b --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/power4/fpu/Implies ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power4/fpu/Implies @@ -0,0 +1 @@ +powerpc/powerpc64/fpu -diff --git a/sysdeps/powerpc/powerpc64/power4/fpu/multiarch/Implies b/sysdeps/powerpc/powerpc64/power4/fpu/multiarch/Implies +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power4/fpu/multiarch/Implies glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power4/fpu/multiarch/Implies new file mode 100644 index 0000000..8d6531a --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/power4/fpu/multiarch/Implies ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power4/fpu/multiarch/Implies @@ -0,0 +1 @@ +powerpc/powerpc64/fpu/multiarch -diff --git a/sysdeps/powerpc/powerpc64/power4/multiarch/Implies b/sysdeps/powerpc/powerpc64/power4/multiarch/Implies +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power4/multiarch/Implies glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power4/multiarch/Implies new file mode 100644 index 0000000..30edcf7 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/power4/multiarch/Implies ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power4/multiarch/Implies @@ -0,0 +1 @@ +powerpc/powerpc64/multiarch -diff --git a/sysdeps/powerpc/powerpc64/power5+/fpu/Implies b/sysdeps/powerpc/powerpc64/power5+/fpu/Implies +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power5+/fpu/Implies glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power5+/fpu/Implies new file mode 100644 index 0000000..f00c50f --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/power5+/fpu/Implies ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power5+/fpu/Implies @@ -0,0 +1 @@ +powerpc/powerpc64/power5/fpu -diff --git a/sysdeps/powerpc/powerpc64/power5+/multiarch/Implies b/sysdeps/powerpc/powerpc64/power5+/multiarch/Implies +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power5+/multiarch/Implies glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power5+/multiarch/Implies new file mode 100644 index 0000000..0851b19 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/power5+/multiarch/Implies ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power5+/multiarch/Implies @@ -0,0 +1 @@ +powerpc/powerpc64/power5/multiarch -diff --git a/sysdeps/powerpc/powerpc64/power5/fpu/Implies b/sysdeps/powerpc/powerpc64/power5/fpu/Implies +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power5/fpu/Implies glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power5/fpu/Implies new file mode 100644 index 0000000..558a5fb --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/power5/fpu/Implies ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power5/fpu/Implies @@ -0,0 +1 @@ +powerpc/powerpc64/power4/fpu -diff --git a/sysdeps/powerpc/powerpc64/power5/multiarch/Implies b/sysdeps/powerpc/powerpc64/power5/multiarch/Implies +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power5/multiarch/Implies glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power5/multiarch/Implies new file mode 100644 index 0000000..9a3cbb0 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/power5/multiarch/Implies ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power5/multiarch/Implies @@ -0,0 +1 @@ +powerpc/powerpc64/power4/multiarch -diff --git a/sysdeps/powerpc/powerpc64/power6/fpu/Implies b/sysdeps/powerpc/powerpc64/power6/fpu/Implies +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power6/fpu/Implies glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power6/fpu/Implies new file mode 100644 index 0000000..f09854e --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/power6/fpu/Implies ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power6/fpu/Implies @@ -0,0 +1 @@ +powerpc/powerpc64/power5+/fpu -diff --git a/sysdeps/powerpc/powerpc64/power6/multiarch/Implies b/sysdeps/powerpc/powerpc64/power6/multiarch/Implies +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power6/multiarch/Implies glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power6/multiarch/Implies new file mode 100644 index 0000000..2ebe304 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/power6/multiarch/Implies ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power6/multiarch/Implies @@ -0,0 +1 @@ +powerpc/powerpc64/power5+/multiarch -diff --git a/sysdeps/powerpc/powerpc64/power7/fpu/Implies b/sysdeps/powerpc/powerpc64/power7/fpu/Implies +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power7/fpu/Implies glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power7/fpu/Implies new file mode 100644 index 0000000..30fa176 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/power7/fpu/Implies ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power7/fpu/Implies @@ -0,0 +1 @@ +powerpc/powerpc64/power6/fpu -diff --git a/sysdeps/powerpc/powerpc64/power7/multiarch/Implies b/sysdeps/powerpc/powerpc64/power7/multiarch/Implies +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power7/multiarch/Implies glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power7/multiarch/Implies new file mode 100644 index 0000000..bf5d617 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/power7/multiarch/Implies ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power7/multiarch/Implies @@ -0,0 +1 @@ +powerpc/powerpc64/power6/multiarch -diff --git a/sysdeps/powerpc/powerpc64/power8/fpu/Implies b/sysdeps/powerpc/powerpc64/power8/fpu/Implies +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power8/fpu/Implies glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power8/fpu/Implies new file mode 100644 index 0000000..8447198 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/power8/fpu/Implies ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power8/fpu/Implies @@ -0,0 +1 @@ +powerpc/powerpc64/power7/fpu -diff --git a/sysdeps/powerpc/powerpc64/power8/fpu/multiarch/Implies b/sysdeps/powerpc/powerpc64/power8/fpu/multiarch/Implies +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power8/fpu/multiarch/Implies glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power8/fpu/multiarch/Implies new file mode 100644 index 0000000..7fd86fd --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/power8/fpu/multiarch/Implies ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power8/fpu/multiarch/Implies @@ -0,0 +1 @@ +powerpc/powerpc64/power7/fpu/multiarch -diff --git a/sysdeps/powerpc/powerpc64/power8/multiarch/Implies b/sysdeps/powerpc/powerpc64/power8/multiarch/Implies +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power8/multiarch/Implies glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power8/multiarch/Implies new file mode 100644 index 0000000..1fc7b7c --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/power8/multiarch/Implies ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power8/multiarch/Implies @@ -0,0 +1 @@ +powerpc/powerpc64/power7/multiarch -diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/power4/Implies b/sysdeps/unix/sysv/linux/powerpc/powerpc64/power4/Implies +diff --git glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/power4/Implies glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/power4/Implies deleted file mode 100644 index bedb20b..0000000 ---- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/power4/Implies +--- glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/power4/Implies +++ /dev/null @@ -1,2 +0,0 @@ -powerpc/powerpc64/power4/fpu -powerpc/powerpc64/power4 -diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/power5+/Implies b/sysdeps/unix/sysv/linux/powerpc/powerpc64/power5+/Implies +diff --git glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/power5+/Implies glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/power5+/Implies deleted file mode 100644 index 4c782d4..0000000 ---- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/power5+/Implies +--- glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/power5+/Implies +++ /dev/null @@ -1,2 +0,0 @@ -powerpc/powerpc64/power5+/fpu -powerpc/powerpc64/power5+ -diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/power5/Implies b/sysdeps/unix/sysv/linux/powerpc/powerpc64/power5/Implies +diff --git glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/power5/Implies glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/power5/Implies deleted file mode 100644 index a01a13a..0000000 ---- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/power5/Implies +--- glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/power5/Implies +++ /dev/null @@ -1,2 +0,0 @@ -powerpc/powerpc64/power5/fpu -powerpc/powerpc64/power5 -diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/power6/Implies b/sysdeps/unix/sysv/linux/powerpc/powerpc64/power6/Implies +diff --git glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/power6/Implies glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/power6/Implies deleted file mode 100644 index 9d68f39..0000000 ---- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/power6/Implies +--- glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/power6/Implies +++ /dev/null @@ -1,2 +0,0 @@ -powerpc/powerpc64/power6/fpu -powerpc/powerpc64/power6 -diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/power6x/Implies b/sysdeps/unix/sysv/linux/powerpc/powerpc64/power6x/Implies +diff --git glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/power6x/Implies glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/power6x/Implies deleted file mode 100644 index 9019778..0000000 ---- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/power6x/Implies +--- glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/power6x/Implies +++ /dev/null @@ -1,2 +0,0 @@ -powerpc/powerpc64/power6x/fpu -powerpc/powerpc64/power6x -diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/power7/Implies b/sysdeps/unix/sysv/linux/powerpc/powerpc64/power7/Implies +diff --git glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/power7/Implies glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/power7/Implies deleted file mode 100644 index 9a5e3c7..0000000 ---- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/power7/Implies +--- glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/power7/Implies +++ /dev/null @@ -1,2 +0,0 @@ -powerpc/powerpc64/power7/fpu diff --git a/SOURCES/glibc-rh731837-01.patch b/SOURCES/glibc-rh731837-01.patch index 0d29a89..d7be5d1 100644 --- a/SOURCES/glibc-rh731837-01.patch +++ b/SOURCES/glibc-rh731837-01.patch @@ -36,11 +36,11 @@ of original commit create mode 100644 sysdeps/powerpc/powerpc64/multiarch/memcpy-ppc64.S create mode 100644 sysdeps/powerpc/powerpc64/multiarch/memcpy.c -diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/init-arch.h b/sysdeps/powerpc/powerpc32/power4/multiarch/init-arch.h +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/multiarch/init-arch.h glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/multiarch/init-arch.h new file mode 100644 index 0000000..51a34f2 --- /dev/null -+++ b/sysdeps/powerpc/powerpc32/power4/multiarch/init-arch.h ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/multiarch/init-arch.h @@ -0,0 +1,52 @@ +/* This file is part of the GNU C Library. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -94,21 +94,21 @@ index 0000000..51a34f2 + PPC_FEATURE_POWER4; \ + else if (hwcap & PPC_FEATURE_POWER5) \ + hwcap |= PPC_FEATURE_POWER4; -diff --git a/sysdeps/powerpc/powerpc64/multiarch/Makefile b/sysdeps/powerpc/powerpc64/multiarch/Makefile +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/Makefile glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/Makefile new file mode 100644 index 0000000..638c102 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/multiarch/Makefile ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/Makefile @@ -0,0 +1,4 @@ +ifeq ($(subdir),string) +sysdep_routines += memcpy-power7 memcpy-a2 memcpy-power6 memcpy-cell \ + memcpy-power4 memcpy-ppc64 +endif -diff --git a/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c b/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c new file mode 100644 index 0000000..5090af4 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c @@ -0,0 +1,66 @@ +/* Enumerate available IFUNC implementations of a function. PowerPC64 version. + Copyright (C) 2013 Free Software Foundation, Inc. @@ -176,11 +176,11 @@ index 0000000..5090af4 + + return i; +} -diff --git a/sysdeps/powerpc/powerpc64/multiarch/init-arch.h b/sysdeps/powerpc/powerpc64/multiarch/init-arch.h +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/init-arch.h glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/init-arch.h new file mode 100644 index 0000000..b7d238c --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/multiarch/init-arch.h ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/init-arch.h @@ -0,0 +1,18 @@ +/* This file is part of the GNU C Library. + Copyright (C) 2013 Free Software Foundation, Inc. @@ -200,11 +200,11 @@ index 0000000..b7d238c + . */ + +#include -diff --git a/sysdeps/powerpc/powerpc64/multiarch/memcpy-a2.S b/sysdeps/powerpc/powerpc64/multiarch/memcpy-a2.S +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memcpy-a2.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memcpy-a2.S new file mode 100644 index 0000000..2d5bfa9 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/multiarch/memcpy-a2.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memcpy-a2.S @@ -0,0 +1,39 @@ +/* Optimized memcpy implementation for PowerPC A2. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -245,11 +245,11 @@ index 0000000..2d5bfa9 +#define libc_hidden_builtin_def(name) + +#include -diff --git a/sysdeps/powerpc/powerpc64/multiarch/memcpy-cell.S b/sysdeps/powerpc/powerpc64/multiarch/memcpy-cell.S +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memcpy-cell.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memcpy-cell.S new file mode 100644 index 0000000..92c06be --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/multiarch/memcpy-cell.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memcpy-cell.S @@ -0,0 +1,39 @@ +/* Optimized memcpy implementation for PowerPC/CELL. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -290,11 +290,11 @@ index 0000000..92c06be +#define libc_hidden_builtin_def(name) + +#include -diff --git a/sysdeps/powerpc/powerpc64/multiarch/memcpy-power4.S b/sysdeps/powerpc/powerpc64/multiarch/memcpy-power4.S +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memcpy-power4.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memcpy-power4.S new file mode 100644 index 0000000..eb01d67 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/multiarch/memcpy-power4.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memcpy-power4.S @@ -0,0 +1,39 @@ +/* Optimized memcpy implementation for PowerPC64/POWER4. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -335,11 +335,11 @@ index 0000000..eb01d67 +#define libc_hidden_builtin_def(name) + +#include -diff --git a/sysdeps/powerpc/powerpc64/multiarch/memcpy-power6.S b/sysdeps/powerpc/powerpc64/multiarch/memcpy-power6.S +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memcpy-power6.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memcpy-power6.S new file mode 100644 index 0000000..13b514d --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/multiarch/memcpy-power6.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memcpy-power6.S @@ -0,0 +1,39 @@ +/* Optimized memcpy implementation for PowerPC/POWER6. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -380,11 +380,11 @@ index 0000000..13b514d +#define libc_hidden_builtin_def(name) + +#include -diff --git a/sysdeps/powerpc/powerpc64/multiarch/memcpy-power7.S b/sysdeps/powerpc/powerpc64/multiarch/memcpy-power7.S +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memcpy-power7.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memcpy-power7.S new file mode 100644 index 0000000..2aea73d --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/multiarch/memcpy-power7.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memcpy-power7.S @@ -0,0 +1,39 @@ +/* Optimized memcpy implementation for PowerPC/POWER7. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -425,11 +425,11 @@ index 0000000..2aea73d +#define libc_hidden_builtin_def(name) + +#include -diff --git a/sysdeps/powerpc/powerpc64/multiarch/memcpy-ppc64.S b/sysdeps/powerpc/powerpc64/multiarch/memcpy-ppc64.S +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memcpy-ppc64.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memcpy-ppc64.S new file mode 100644 index 0000000..b828915 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/multiarch/memcpy-ppc64.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memcpy-ppc64.S @@ -0,0 +1,41 @@ +/* Default memcpy implementation for PowerPC64. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -472,11 +472,11 @@ index 0000000..b828915 +#endif + +#include -diff --git a/sysdeps/powerpc/powerpc64/multiarch/memcpy.c b/sysdeps/powerpc/powerpc64/multiarch/memcpy.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memcpy.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memcpy.c new file mode 100644 index 0000000..305e963 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/multiarch/memcpy.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memcpy.c @@ -0,0 +1,55 @@ +/* Multiple versions of memcpy. PowerPC64 version. + Copyright (C) 2013-2014 Free Software Foundation, Inc. diff --git a/SOURCES/glibc-rh731837-02.patch b/SOURCES/glibc-rh731837-02.patch index af2929a..dbcaffb 100644 --- a/SOURCES/glibc-rh731837-02.patch +++ b/SOURCES/glibc-rh731837-02.patch @@ -20,10 +20,10 @@ Date: Fri Dec 13 14:32:31 2013 -0500 create mode 100644 sysdeps/powerpc/powerpc64/multiarch/memcmp-ppc64.c create mode 100644 sysdeps/powerpc/powerpc64/multiarch/memcmp.c -diff --git a/string/memcmp.c b/string/memcmp.c +diff --git glibc-2.17-c758a686/string/memcmp.c glibc-2.17-c758a686/string/memcmp.c index a73cc19..4a3ef58 100644 ---- a/string/memcmp.c -+++ b/string/memcmp.c +--- glibc-2.17-c758a686/string/memcmp.c ++++ glibc-2.17-c758a686/string/memcmp.c @@ -30,6 +30,10 @@ #undef memcmp @@ -44,10 +44,10 @@ index a73cc19..4a3ef58 100644 const __ptr_t s1; const __ptr_t s2; size_t len; -diff --git a/sysdeps/powerpc/powerpc64/multiarch/Makefile b/sysdeps/powerpc/powerpc64/multiarch/Makefile +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/Makefile glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/Makefile index 638c102..c0bc520 100644 ---- a/sysdeps/powerpc/powerpc64/multiarch/Makefile -+++ b/sysdeps/powerpc/powerpc64/multiarch/Makefile +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/Makefile ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/Makefile @@ -1,4 +1,5 @@ ifeq ($(subdir),string) sysdep_routines += memcpy-power7 memcpy-a2 memcpy-power6 memcpy-cell \ @@ -55,10 +55,10 @@ index 638c102..c0bc520 100644 + memcpy-power4 memcpy-ppc64 memcmp-power7 memcmp-power4 \ + memcmp-ppc64 endif -diff --git a/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c b/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c index 5090af4..295ebca 100644 ---- a/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c -+++ b/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c @@ -62,5 +62,13 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array, IFUNC_IMPL_ADD (array, i, memcpy, 1, __memcpy_ppc)) #endif @@ -73,11 +73,11 @@ index 5090af4..295ebca 100644 + return i; } -diff --git a/sysdeps/powerpc/powerpc64/multiarch/memcmp-power4.S b/sysdeps/powerpc/powerpc64/multiarch/memcmp-power4.S +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memcmp-power4.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memcmp-power4.S new file mode 100644 index 0000000..12db42c --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/multiarch/memcmp-power4.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memcmp-power4.S @@ -0,0 +1,41 @@ +/* Optimized memcmp implementation for PowerPC64/POWER4. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -120,11 +120,11 @@ index 0000000..12db42c +#define weak_alias(name,alias) + +#include -diff --git a/sysdeps/powerpc/powerpc64/multiarch/memcmp-power7.S b/sysdeps/powerpc/powerpc64/multiarch/memcmp-power7.S +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memcmp-power7.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memcmp-power7.S new file mode 100644 index 0000000..4898a88 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/multiarch/memcmp-power7.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memcmp-power7.S @@ -0,0 +1,41 @@ +/* Optimized memcmp implementation for PowerPC64/POWER7. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -167,11 +167,11 @@ index 0000000..4898a88 +#define weak_alias(name,alias) + +#include -diff --git a/sysdeps/powerpc/powerpc64/multiarch/memcmp-ppc64.c b/sysdeps/powerpc/powerpc64/multiarch/memcmp-ppc64.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memcmp-ppc64.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memcmp-ppc64.c new file mode 100644 index 0000000..1a39d4a --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/multiarch/memcmp-ppc64.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memcmp-ppc64.c @@ -0,0 +1,33 @@ +/* Copyright (C) 2013-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. @@ -206,11 +206,11 @@ index 0000000..1a39d4a +extern __typeof (memcmp) __memcmp_ppc attribute_hidden; + +#include -diff --git a/sysdeps/powerpc/powerpc64/multiarch/memcmp.c b/sysdeps/powerpc/powerpc64/multiarch/memcmp.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memcmp.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memcmp.c new file mode 100644 index 0000000..af90f0a --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/multiarch/memcmp.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memcmp.c @@ -0,0 +1,39 @@ +/* Multiple versions of memcmp. PowerPC64 version. + Copyright (C) 2013-2014 Free Software Foundation, Inc. diff --git a/SOURCES/glibc-rh731837-03.patch b/SOURCES/glibc-rh731837-03.patch index d51f8a1..946cff6 100644 --- a/SOURCES/glibc-rh731837-03.patch +++ b/SOURCES/glibc-rh731837-03.patch @@ -36,10 +36,10 @@ Date: Fri Dec 13 14:33:16 2013 -0500 create mode 100644 sysdeps/powerpc/powerpc64/multiarch/memset.c create mode 100644 sysdeps/powerpc/powerpc64/multiarch/rtld-memset.c -diff --git a/sysdeps/powerpc/powerpc64/memset.S b/sysdeps/powerpc/powerpc64/memset.S +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/memset.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/memset.S index d02af98..fd5d4e5 100644 ---- a/sysdeps/powerpc/powerpc64/memset.S -+++ b/sysdeps/powerpc/powerpc64/memset.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/memset.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/memset.S @@ -265,6 +265,7 @@ L(medium_28t): END_GEN_TB (BP_SYM (memset),TB_TOCLESS) libc_hidden_builtin_def (memset) @@ -53,10 +53,10 @@ index d02af98..fd5d4e5 100644 weak_alias (BP_SYM (__bzero), BP_SYM (bzero)) +#endif -diff --git a/sysdeps/powerpc/powerpc64/multiarch/Makefile b/sysdeps/powerpc/powerpc64/multiarch/Makefile +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/Makefile glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/Makefile index c0bc520..424d2cd 100644 ---- a/sysdeps/powerpc/powerpc64/multiarch/Makefile -+++ b/sysdeps/powerpc/powerpc64/multiarch/Makefile +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/Makefile ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/Makefile @@ -1,5 +1,6 @@ ifeq ($(subdir),string) sysdep_routines += memcpy-power7 memcpy-a2 memcpy-power6 memcpy-cell \ @@ -65,11 +65,11 @@ index c0bc520..424d2cd 100644 + memcmp-ppc64 memset-power7 memset-power6 memset-power4 \ + memset-ppc64 bzero-power4 bzero-power6 bzero-power7 endif -diff --git a/sysdeps/powerpc/powerpc64/multiarch/bzero-power4.S b/sysdeps/powerpc/powerpc64/multiarch/bzero-power4.S +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/bzero-power4.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/bzero-power4.S new file mode 100644 index 0000000..72b75ac --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/multiarch/bzero-power4.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/bzero-power4.S @@ -0,0 +1,26 @@ +/* Optimized bzero implementation for PowerPC64/POWER4. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -97,11 +97,11 @@ index 0000000..72b75ac + li r4,0 + b __memset_power4 +END_GEN_TB (__bzero_power4,TB_TOCLESS) -diff --git a/sysdeps/powerpc/powerpc64/multiarch/bzero-power6.S b/sysdeps/powerpc/powerpc64/multiarch/bzero-power6.S +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/bzero-power6.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/bzero-power6.S new file mode 100644 index 0000000..d0917c5 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/multiarch/bzero-power6.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/bzero-power6.S @@ -0,0 +1,26 @@ +/* Optimized bzero implementation for PowerPC64/POWER6. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -129,11 +129,11 @@ index 0000000..d0917c5 + li r4,0 + b __memset_power6 +END_GEN_TB (__bzero_power6,TB_TOCLESS) -diff --git a/sysdeps/powerpc/powerpc64/multiarch/bzero-power7.S b/sysdeps/powerpc/powerpc64/multiarch/bzero-power7.S +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/bzero-power7.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/bzero-power7.S new file mode 100644 index 0000000..0ec285a --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/multiarch/bzero-power7.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/bzero-power7.S @@ -0,0 +1,26 @@ +/* Optimized bzero implementation for PowerPC64/POWER7. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -161,11 +161,11 @@ index 0000000..0ec285a + li r4,0 + b __memset_power7 +END_GEN_TB (__bzero_power7,TB_TOCLESS) -diff --git a/sysdeps/powerpc/powerpc64/multiarch/bzero.c b/sysdeps/powerpc/powerpc64/multiarch/bzero.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/bzero.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/bzero.c new file mode 100644 index 0000000..ed83541 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/multiarch/bzero.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/bzero.c @@ -0,0 +1,40 @@ +/* Multiple versions of bzero. PowerPC64 version. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -207,10 +207,10 @@ index 0000000..ed83541 + +weak_alias (__bzero, bzero) +#endif -diff --git a/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c b/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c index 295ebca..11e7063 100644 ---- a/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c -+++ b/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c @@ -60,6 +60,16 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array, IFUNC_IMPL_ADD (array, i, memcpy, hwcap & PPC_FEATURE_POWER4, __memcpy_power4) @@ -244,11 +244,11 @@ index 295ebca..11e7063 100644 + return i; } -diff --git a/sysdeps/powerpc/powerpc64/multiarch/memset-power4.S b/sysdeps/powerpc/powerpc64/multiarch/memset-power4.S +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memset-power4.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memset-power4.S new file mode 100644 index 0000000..9074b95 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/multiarch/memset-power4.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memset-power4.S @@ -0,0 +1,40 @@ +/* Optimized memset implementation for PowerPC64/POWER4. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -290,11 +290,11 @@ index 0000000..9074b95 + +#define NO_BZERO_IMPL +#include -diff --git a/sysdeps/powerpc/powerpc64/multiarch/memset-power6.S b/sysdeps/powerpc/powerpc64/multiarch/memset-power6.S +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memset-power6.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memset-power6.S new file mode 100644 index 0000000..70688b5 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/multiarch/memset-power6.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memset-power6.S @@ -0,0 +1,40 @@ +/* Optimized memset implementation for PowerPC64/POWER6. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -336,11 +336,11 @@ index 0000000..70688b5 + +#define NO_BZERO_IMPL +#include -diff --git a/sysdeps/powerpc/powerpc64/multiarch/memset-power7.S b/sysdeps/powerpc/powerpc64/multiarch/memset-power7.S +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memset-power7.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memset-power7.S new file mode 100644 index 0000000..ab226c5 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/multiarch/memset-power7.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memset-power7.S @@ -0,0 +1,40 @@ +/* Optimized memset implementation for PowerPC64/POWER7. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -382,11 +382,11 @@ index 0000000..ab226c5 + +#define NO_BZERO_IMPL +#include -diff --git a/sysdeps/powerpc/powerpc64/multiarch/memset-ppc64.S b/sysdeps/powerpc/powerpc64/multiarch/memset-ppc64.S +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memset-ppc64.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memset-ppc64.S new file mode 100644 index 0000000..dc5549c --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/multiarch/memset-ppc64.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memset-ppc64.S @@ -0,0 +1,55 @@ +/* Default memset/bzero implementation for PowerPC64. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -443,11 +443,11 @@ index 0000000..dc5549c +#define NO_BZERO_IMPL + +#include -diff --git a/sysdeps/powerpc/powerpc64/multiarch/memset.c b/sysdeps/powerpc/powerpc64/multiarch/memset.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memset.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memset.c new file mode 100644 index 0000000..aa2ae70 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/multiarch/memset.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memset.c @@ -0,0 +1,50 @@ +/* Multiple versions of memset. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -499,11 +499,11 @@ index 0000000..aa2ae70 +strong_alias (__libc_memset, memset); +libc_hidden_ver (__libc_memset, memset); +#endif -diff --git a/sysdeps/powerpc/powerpc64/multiarch/rtld-memset.c b/sysdeps/powerpc/powerpc64/multiarch/rtld-memset.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/rtld-memset.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/rtld-memset.c new file mode 100644 index 0000000..8eac85b --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/multiarch/rtld-memset.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/rtld-memset.c @@ -0,0 +1,18 @@ +/* Copyright (C) 2013-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. @@ -523,10 +523,10 @@ index 0000000..8eac85b + . */ + +#include -diff --git a/sysdeps/powerpc/powerpc64/power4/memset.S b/sysdeps/powerpc/powerpc64/power4/memset.S +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power4/memset.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power4/memset.S index c86a68a..c077ae7 100644 ---- a/sysdeps/powerpc/powerpc64/power4/memset.S -+++ b/sysdeps/powerpc/powerpc64/power4/memset.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power4/memset.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power4/memset.S @@ -253,6 +253,7 @@ L(medium_28t): END_GEN_TB (BP_SYM (memset),TB_TOCLESS) libc_hidden_builtin_def (memset) @@ -540,10 +540,10 @@ index c86a68a..c077ae7 100644 weak_alias (BP_SYM (__bzero), BP_SYM (bzero)) +#endif -diff --git a/sysdeps/powerpc/powerpc64/power6/memset.S b/sysdeps/powerpc/powerpc64/power6/memset.S +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power6/memset.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power6/memset.S index 930ecce..967642a3 100644 ---- a/sysdeps/powerpc/powerpc64/power6/memset.S -+++ b/sysdeps/powerpc/powerpc64/power6/memset.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power6/memset.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power6/memset.S @@ -397,6 +397,7 @@ L(medium_28t): END_GEN_TB (BP_SYM (memset),TB_TOCLESS) libc_hidden_builtin_def (memset) @@ -557,10 +557,10 @@ index 930ecce..967642a3 100644 weak_alias (BP_SYM (__bzero), BP_SYM (bzero)) +#endif -diff --git a/sysdeps/powerpc/powerpc64/power7/memset.S b/sysdeps/powerpc/powerpc64/power7/memset.S +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power7/memset.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power7/memset.S index 5970fbe..2716656 100644 ---- a/sysdeps/powerpc/powerpc64/power7/memset.S -+++ b/sysdeps/powerpc/powerpc64/power7/memset.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power7/memset.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power7/memset.S @@ -385,6 +385,7 @@ L(small): END_GEN_TB (BP_SYM (memset),TB_TOCLESS) libc_hidden_builtin_def (memset) diff --git a/SOURCES/glibc-rh731837-04.patch b/SOURCES/glibc-rh731837-04.patch index 1b6ef9a..2aa3ba9 100644 --- a/SOURCES/glibc-rh731837-04.patch +++ b/SOURCES/glibc-rh731837-04.patch @@ -23,10 +23,10 @@ string/mempcpy.c apart from original commit. create mode 100644 sysdeps/powerpc/powerpc64/multiarch/mempcpy-ppc64.c create mode 100644 sysdeps/powerpc/powerpc64/multiarch/mempcpy.c -diff --git a/string/mempcpy.c b/string/mempcpy.c +diff --git glibc-2.17-c758a686/string/mempcpy.c glibc-2.17-c758a686/string/mempcpy.c index 2a542e3..7509c24 100644 ---- a/string/mempcpy.c -+++ b/string/mempcpy.c +--- glibc-2.17-c758a686/string/mempcpy.c ++++ glibc-2.17-c758a686/string/mempcpy.c @@ -26,11 +26,12 @@ #undef mempcpy #undef __mempcpy @@ -44,11 +44,11 @@ index 2a542e3..7509c24 100644 { unsigned long int dstp = (long int) dstpp; unsigned long int srcp = (long int) srcpp; -diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/mempcpy-ppc32.c b/sysdeps/powerpc/powerpc32/power4/multiarch/mempcpy-ppc32.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/multiarch/mempcpy-ppc32.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/multiarch/mempcpy-ppc32.c new file mode 100644 index 0000000..8dc77e9 --- /dev/null -+++ b/sysdeps/powerpc/powerpc32/power4/multiarch/mempcpy-ppc32.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/multiarch/mempcpy-ppc32.c @@ -0,0 +1,32 @@ +/* PowerPC32 default implementation of mempcpy. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -82,10 +82,10 @@ index 0000000..8dc77e9 +#endif + +#include -diff --git a/sysdeps/powerpc/powerpc64/multiarch/Makefile b/sysdeps/powerpc/powerpc64/multiarch/Makefile +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/Makefile glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/Makefile index 424d2cd..22560e8 100644 ---- a/sysdeps/powerpc/powerpc64/multiarch/Makefile -+++ b/sysdeps/powerpc/powerpc64/multiarch/Makefile +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/Makefile ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/Makefile @@ -2,5 +2,6 @@ ifeq ($(subdir),string) sysdep_routines += memcpy-power7 memcpy-a2 memcpy-power6 memcpy-cell \ memcpy-power4 memcpy-ppc64 memcmp-power7 memcmp-power4 \ @@ -94,10 +94,10 @@ index 424d2cd..22560e8 100644 + memset-ppc64 bzero-power4 bzero-power6 bzero-power7 \ + mempcpy-power7 mempcpy-ppc64 endif -diff --git a/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c b/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c index 11e7063..c72c229 100644 ---- a/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c -+++ b/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c @@ -90,5 +90,13 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array, __bzero_power4) IFUNC_IMPL_ADD (array, i, bzero, 1, __bzero_ppc)) @@ -112,11 +112,11 @@ index 11e7063..c72c229 100644 + return i; } -diff --git a/sysdeps/powerpc/powerpc64/multiarch/mempcpy-power7.S b/sysdeps/powerpc/powerpc64/multiarch/mempcpy-power7.S +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/mempcpy-power7.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/mempcpy-power7.S new file mode 100644 index 0000000..6a79847 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/multiarch/mempcpy-power7.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/mempcpy-power7.S @@ -0,0 +1,41 @@ +/* Optimized mempcpy implementation for PowerPC/POWER7. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -159,11 +159,11 @@ index 0000000..6a79847 +#define weak_alias(name, alias) + +#include -diff --git a/sysdeps/powerpc/powerpc64/multiarch/mempcpy-ppc64.c b/sysdeps/powerpc/powerpc64/multiarch/mempcpy-ppc64.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/mempcpy-ppc64.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/mempcpy-ppc64.c new file mode 100644 index 0000000..78260bb --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/multiarch/mempcpy-ppc64.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/mempcpy-ppc64.c @@ -0,0 +1,19 @@ +/* PowerPC64 default implementation of mempcpy. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -184,11 +184,11 @@ index 0000000..78260bb + . */ + +#include -diff --git a/sysdeps/powerpc/powerpc64/multiarch/mempcpy.c b/sysdeps/powerpc/powerpc64/multiarch/mempcpy.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/mempcpy.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/mempcpy.c new file mode 100644 index 0000000..38fbcc3 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/multiarch/mempcpy.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/mempcpy.c @@ -0,0 +1,38 @@ +/* Multiple versions of mempcpy. + Copyright (C) 2013-2014 Free Software Foundation, Inc. diff --git a/SOURCES/glibc-rh731837-05.patch b/SOURCES/glibc-rh731837-05.patch index 9421fa9..5ce6fbf 100644 --- a/SOURCES/glibc-rh731837-05.patch +++ b/SOURCES/glibc-rh731837-05.patch @@ -24,10 +24,10 @@ original commit create mode 100644 sysdeps/powerpc/powerpc64/multiarch/memchr-ppc64.c create mode 100644 sysdeps/powerpc/powerpc64/multiarch/memchr.c -diff --git a/string/memchr.c b/string/memchr.c +diff --git glibc-2.17-c758a686/string/memchr.c glibc-2.17-c758a686/string/memchr.c index 22637cf..822c0a4 100644 ---- a/string/memchr.c -+++ b/string/memchr.c +--- glibc-2.17-c758a686/string/memchr.c ++++ glibc-2.17-c758a686/string/memchr.c @@ -56,9 +56,13 @@ #undef memchr #undef __memchr @@ -43,11 +43,11 @@ index 22637cf..822c0a4 100644 const __ptr_t s; int c_in; size_t n; -diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/memchr-ppc32.c b/sysdeps/powerpc/powerpc32/power4/multiarch/memchr-ppc32.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/multiarch/memchr-ppc32.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/multiarch/memchr-ppc32.c new file mode 100644 index 0000000..43c5652 --- /dev/null -+++ b/sysdeps/powerpc/powerpc32/power4/multiarch/memchr-ppc32.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/multiarch/memchr-ppc32.c @@ -0,0 +1,34 @@ +/* PowerPC32 default implementation of memchr. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -83,10 +83,10 @@ index 0000000..43c5652 +extern __typeof (memchr) __memchr_ppc attribute_hidden; + +#include -diff --git a/sysdeps/powerpc/powerpc64/multiarch/Makefile b/sysdeps/powerpc/powerpc64/multiarch/Makefile +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/Makefile glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/Makefile index 22560e8..b2815e7 100644 ---- a/sysdeps/powerpc/powerpc64/multiarch/Makefile -+++ b/sysdeps/powerpc/powerpc64/multiarch/Makefile +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/Makefile ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/Makefile @@ -3,5 +3,5 @@ sysdep_routines += memcpy-power7 memcpy-a2 memcpy-power6 memcpy-cell \ memcpy-power4 memcpy-ppc64 memcmp-power7 memcmp-power4 \ memcmp-ppc64 memset-power7 memset-power6 memset-power4 \ @@ -94,10 +94,10 @@ index 22560e8..b2815e7 100644 - mempcpy-power7 mempcpy-ppc64 + mempcpy-power7 mempcpy-ppc64 memchr-power7 memchr-ppc64 endif -diff --git a/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c b/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c index c72c229..663e294 100644 ---- a/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c -+++ b/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c @@ -98,5 +98,13 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array, IFUNC_IMPL_ADD (array, i, mempcpy, 1, __mempcpy_ppc)) @@ -112,11 +112,11 @@ index c72c229..663e294 100644 + return i; } -diff --git a/sysdeps/powerpc/powerpc64/multiarch/memchr-power7.S b/sysdeps/powerpc/powerpc64/multiarch/memchr-power7.S +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memchr-power7.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memchr-power7.S new file mode 100644 index 0000000..b1b4ec7 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/multiarch/memchr-power7.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memchr-power7.S @@ -0,0 +1,40 @@ +/* Optimized memchr implementation for PowerPC64/POWER7. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -158,11 +158,11 @@ index 0000000..b1b4ec7 +#define weak_alias(name,alias) + +#include -diff --git a/sysdeps/powerpc/powerpc64/multiarch/memchr-ppc64.c b/sysdeps/powerpc/powerpc64/multiarch/memchr-ppc64.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memchr-ppc64.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memchr-ppc64.c new file mode 100644 index 0000000..9e2a711 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/multiarch/memchr-ppc64.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memchr-ppc64.c @@ -0,0 +1,19 @@ +/* PowerPC64 default implementation of memchr. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -183,11 +183,11 @@ index 0000000..9e2a711 + . */ + +#include -diff --git a/sysdeps/powerpc/powerpc64/multiarch/memchr.c b/sysdeps/powerpc/powerpc64/multiarch/memchr.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memchr.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memchr.c new file mode 100644 index 0000000..ca0f714 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/multiarch/memchr.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memchr.c @@ -0,0 +1,38 @@ +/* Multiple versions of memchr. + Copyright (C) 2013-2014 Free Software Foundation, Inc. diff --git a/SOURCES/glibc-rh731837-06.patch b/SOURCES/glibc-rh731837-06.patch index 60f46fc..51bc94e 100644 --- a/SOURCES/glibc-rh731837-06.patch +++ b/SOURCES/glibc-rh731837-06.patch @@ -22,11 +22,11 @@ apart from original commit create mode 100644 sysdeps/powerpc/powerpc64/multiarch/memrchr-ppc64.c create mode 100644 sysdeps/powerpc/powerpc64/multiarch/memrchr.c -diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/memrchr-ppc32.c b/sysdeps/powerpc/powerpc32/power4/multiarch/memrchr-ppc32.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/multiarch/memrchr-ppc32.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/multiarch/memrchr-ppc32.c new file mode 100644 index 0000000..c30e7d6 --- /dev/null -+++ b/sysdeps/powerpc/powerpc32/power4/multiarch/memrchr-ppc32.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/multiarch/memrchr-ppc32.c @@ -0,0 +1,25 @@ +/* PowerPC32 default implementation of memrchr. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -53,10 +53,10 @@ index 0000000..c30e7d6 +#endif + +#include -diff --git a/sysdeps/powerpc/powerpc64/multiarch/Makefile b/sysdeps/powerpc/powerpc64/multiarch/Makefile +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/Makefile glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/Makefile index b2815e7..db765f2 100644 ---- a/sysdeps/powerpc/powerpc64/multiarch/Makefile -+++ b/sysdeps/powerpc/powerpc64/multiarch/Makefile +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/Makefile ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/Makefile @@ -3,5 +3,6 @@ sysdep_routines += memcpy-power7 memcpy-a2 memcpy-power6 memcpy-cell \ memcpy-power4 memcpy-ppc64 memcmp-power7 memcmp-power4 \ memcmp-ppc64 memset-power7 memset-power6 memset-power4 \ @@ -65,10 +65,10 @@ index b2815e7..db765f2 100644 + mempcpy-power7 mempcpy-ppc64 memchr-power7 memchr-ppc64 \ + memrchr-power7 memrchr-ppc64 endif -diff --git a/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c b/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c index 663e294..a0700dc 100644 ---- a/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c -+++ b/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c @@ -106,5 +106,13 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array, IFUNC_IMPL_ADD (array, i, memchr, 1, __memchr_ppc)) @@ -83,11 +83,11 @@ index 663e294..a0700dc 100644 + return i; } -diff --git a/sysdeps/powerpc/powerpc64/multiarch/memrchr-power7.S b/sysdeps/powerpc/powerpc64/multiarch/memrchr-power7.S +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memrchr-power7.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memrchr-power7.S new file mode 100644 index 0000000..42ee8e2 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/multiarch/memrchr-power7.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memrchr-power7.S @@ -0,0 +1,40 @@ +/* Optimized memrchr implementation for PowerPC64/POWER7. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -129,11 +129,11 @@ index 0000000..42ee8e2 +#define weak_alias(name,alias) + +#include -diff --git a/sysdeps/powerpc/powerpc64/multiarch/memrchr-ppc64.c b/sysdeps/powerpc/powerpc64/multiarch/memrchr-ppc64.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memrchr-ppc64.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memrchr-ppc64.c new file mode 100644 index 0000000..c2ee4be --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/multiarch/memrchr-ppc64.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memrchr-ppc64.c @@ -0,0 +1,19 @@ +/* PowerPC64 default implementation of memrchr. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -154,11 +154,11 @@ index 0000000..c2ee4be + . */ + +#include -diff --git a/sysdeps/powerpc/powerpc64/multiarch/memrchr.c b/sysdeps/powerpc/powerpc64/multiarch/memrchr.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memrchr.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memrchr.c new file mode 100644 index 0000000..610a957 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/multiarch/memrchr.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memrchr.c @@ -0,0 +1,37 @@ +/* Multiple versions of memrchr. + Copyright (C) 2013-2014 Free Software Foundation, Inc. diff --git a/SOURCES/glibc-rh731837-07.patch b/SOURCES/glibc-rh731837-07.patch index 8775fb4..6c5d8c6 100644 --- a/SOURCES/glibc-rh731837-07.patch +++ b/SOURCES/glibc-rh731837-07.patch @@ -23,10 +23,10 @@ string/rawmemchr.c apart from original commit. create mode 100644 sysdeps/powerpc/powerpc64/multiarch/rawmemchr-ppc64.c create mode 100644 sysdeps/powerpc/powerpc64/multiarch/rawmemchr.c -diff --git a/string/rawmemchr.c b/string/rawmemchr.c +diff --git glibc-2.17-c758a686/string/rawmemchr.c glibc-2.17-c758a686/string/rawmemchr.c index 90e8c7c..0e4f192 100644 ---- a/string/rawmemchr.c -+++ b/string/rawmemchr.c +--- glibc-2.17-c758a686/string/rawmemchr.c ++++ glibc-2.17-c758a686/string/rawmemchr.c @@ -47,10 +47,13 @@ #undef memchr @@ -42,11 +42,11 @@ index 90e8c7c..0e4f192 100644 const __ptr_t s; int c_in; { -diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/rawmemchr-ppc32.c b/sysdeps/powerpc/powerpc32/power4/multiarch/rawmemchr-ppc32.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/multiarch/rawmemchr-ppc32.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/multiarch/rawmemchr-ppc32.c new file mode 100644 index 0000000..2e8abaa --- /dev/null -+++ b/sysdeps/powerpc/powerpc32/power4/multiarch/rawmemchr-ppc32.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/multiarch/rawmemchr-ppc32.c @@ -0,0 +1,32 @@ +/* PowerPC32 default implementation of rawmemchr. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -80,10 +80,10 @@ index 0000000..2e8abaa +extern __typeof (rawmemchr) __rawmemchr_ppc attribute_hidden; + +#include -diff --git a/sysdeps/powerpc/powerpc64/multiarch/Makefile b/sysdeps/powerpc/powerpc64/multiarch/Makefile +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/Makefile glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/Makefile index db765f2..695112c 100644 ---- a/sysdeps/powerpc/powerpc64/multiarch/Makefile -+++ b/sysdeps/powerpc/powerpc64/multiarch/Makefile +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/Makefile ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/Makefile @@ -4,5 +4,6 @@ sysdep_routines += memcpy-power7 memcpy-a2 memcpy-power6 memcpy-cell \ memcmp-ppc64 memset-power7 memset-power6 memset-power4 \ memset-ppc64 bzero-power4 bzero-power6 bzero-power7 \ @@ -92,10 +92,10 @@ index db765f2..695112c 100644 + memrchr-power7 memrchr-ppc64 rawmemchr-power7 \ + rawmemchr-ppc64 endif -diff --git a/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c b/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c index a0700dc..5b15c3f 100644 ---- a/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c -+++ b/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c @@ -114,5 +114,13 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array, IFUNC_IMPL_ADD (array, i, memrchr, 1, __memrchr_ppc)) @@ -110,11 +110,11 @@ index a0700dc..5b15c3f 100644 + return i; } -diff --git a/sysdeps/powerpc/powerpc64/multiarch/rawmemchr-power7.S b/sysdeps/powerpc/powerpc64/multiarch/rawmemchr-power7.S +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/rawmemchr-power7.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/rawmemchr-power7.S new file mode 100644 index 0000000..24ae3bf --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/multiarch/rawmemchr-power7.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/rawmemchr-power7.S @@ -0,0 +1,35 @@ +/* Optimized rawmemchr implementation for PowerPC64/POWER7. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -151,11 +151,11 @@ index 0000000..24ae3bf + END_2(__rawmemchr_power7) + +#include -diff --git a/sysdeps/powerpc/powerpc64/multiarch/rawmemchr-ppc64.c b/sysdeps/powerpc/powerpc64/multiarch/rawmemchr-ppc64.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/rawmemchr-ppc64.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/rawmemchr-ppc64.c new file mode 100644 index 0000000..0f2f202 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/multiarch/rawmemchr-ppc64.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/rawmemchr-ppc64.c @@ -0,0 +1,19 @@ +/* PowerPC64 default implementation of rawmemchr. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -176,11 +176,11 @@ index 0000000..0f2f202 + . */ + +#include -diff --git a/sysdeps/powerpc/powerpc64/multiarch/rawmemchr.c b/sysdeps/powerpc/powerpc64/multiarch/rawmemchr.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/rawmemchr.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/rawmemchr.c new file mode 100644 index 0000000..3f53cd5 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/multiarch/rawmemchr.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/rawmemchr.c @@ -0,0 +1,37 @@ +/* Multiple versions of rawmemchr. + Copyright (C) 2013-2014 Free Software Foundation, Inc. diff --git a/SOURCES/glibc-rh731837-08.patch b/SOURCES/glibc-rh731837-08.patch index 4b7e405..b942e1c 100644 --- a/SOURCES/glibc-rh731837-08.patch +++ b/SOURCES/glibc-rh731837-08.patch @@ -17,10 +17,10 @@ Date: Fri Dec 13 14:38:17 2013 -0500 create mode 100644 sysdeps/powerpc/powerpc64/multiarch/strlen-ppc64.S create mode 100644 sysdeps/powerpc/powerpc64/multiarch/strlen.c -diff --git a/sysdeps/powerpc/powerpc64/multiarch/Makefile b/sysdeps/powerpc/powerpc64/multiarch/Makefile +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/Makefile glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/Makefile index 695112c..9da7be1 100644 ---- a/sysdeps/powerpc/powerpc64/multiarch/Makefile -+++ b/sysdeps/powerpc/powerpc64/multiarch/Makefile +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/Makefile ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/Makefile @@ -5,5 +5,5 @@ sysdep_routines += memcpy-power7 memcpy-a2 memcpy-power6 memcpy-cell \ memset-ppc64 bzero-power4 bzero-power6 bzero-power7 \ mempcpy-power7 mempcpy-ppc64 memchr-power7 memchr-ppc64 \ @@ -28,10 +28,10 @@ index 695112c..9da7be1 100644 - rawmemchr-ppc64 + rawmemchr-ppc64 strlen-power7 strlen-ppc64 endif -diff --git a/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c b/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c index 5b15c3f..bdc908b 100644 ---- a/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c -+++ b/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c @@ -70,6 +70,13 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array, IFUNC_IMPL_ADD (array, i, memset, hwcap & PPC_FEATURE_POWER4, __memset_power4) @@ -46,11 +46,11 @@ index 5b15c3f..bdc908b 100644 #endif /* Support sysdeps/powerpc/powerpc64/multiarch/memcmp.c. */ -diff --git a/sysdeps/powerpc/powerpc64/multiarch/strlen-power7.S b/sysdeps/powerpc/powerpc64/multiarch/strlen-power7.S +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strlen-power7.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strlen-power7.S new file mode 100644 index 0000000..a38521d --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/multiarch/strlen-power7.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strlen-power7.S @@ -0,0 +1,38 @@ +/* Optimized strlen implementation for POWER7. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -90,11 +90,11 @@ index 0000000..a38521d +#define libc_hidden_builtin_def(name) + +#include -diff --git a/sysdeps/powerpc/powerpc64/multiarch/strlen-ppc64.S b/sysdeps/powerpc/powerpc64/multiarch/strlen-ppc64.S +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strlen-ppc64.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strlen-ppc64.S new file mode 100644 index 0000000..b463b3a --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/multiarch/strlen-ppc64.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strlen-ppc64.S @@ -0,0 +1,40 @@ +/* Default strlen implementation for PowerPC64. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -136,11 +136,11 @@ index 0000000..b463b3a +#endif + +#include -diff --git a/sysdeps/powerpc/powerpc64/multiarch/strlen.c b/sysdeps/powerpc/powerpc64/multiarch/strlen.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strlen.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strlen.c new file mode 100644 index 0000000..d2c26e9 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/multiarch/strlen.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strlen.c @@ -0,0 +1,41 @@ +/* Multiple versions of strlen. PowerPC64 version. + Copyright (C) 2013-2014 Free Software Foundation, Inc. diff --git a/SOURCES/glibc-rh731837-09.patch b/SOURCES/glibc-rh731837-09.patch index b1d8590..d1a08b5 100644 --- a/SOURCES/glibc-rh731837-09.patch +++ b/SOURCES/glibc-rh731837-09.patch @@ -22,11 +22,11 @@ apart from original commit. create mode 100644 sysdeps/powerpc/powerpc64/multiarch/strnlen-ppc64.c create mode 100644 sysdeps/powerpc/powerpc64/multiarch/strnlen.c -diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/strnlen-ppc32.c b/sysdeps/powerpc/powerpc32/power4/multiarch/strnlen-ppc32.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/multiarch/strnlen-ppc32.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/multiarch/strnlen-ppc32.c new file mode 100644 index 0000000..676d837 --- /dev/null -+++ b/sysdeps/powerpc/powerpc32/power4/multiarch/strnlen-ppc32.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/multiarch/strnlen-ppc32.c @@ -0,0 +1,26 @@ +/* Default strnlen implementation for PowerPC32. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -54,10 +54,10 @@ index 0000000..676d837 +#endif + +#include -diff --git a/sysdeps/powerpc/powerpc64/multiarch/Makefile b/sysdeps/powerpc/powerpc64/multiarch/Makefile +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/Makefile glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/Makefile index 9da7be1..3285fd7 100644 ---- a/sysdeps/powerpc/powerpc64/multiarch/Makefile -+++ b/sysdeps/powerpc/powerpc64/multiarch/Makefile +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/Makefile ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/Makefile @@ -5,5 +5,6 @@ sysdep_routines += memcpy-power7 memcpy-a2 memcpy-power6 memcpy-cell \ memset-ppc64 bzero-power4 bzero-power6 bzero-power7 \ mempcpy-power7 mempcpy-ppc64 memchr-power7 memchr-ppc64 \ @@ -66,10 +66,10 @@ index 9da7be1..3285fd7 100644 + rawmemchr-ppc64 strlen-power7 strlen-ppc64 strnlen-power7 \ + strnlen-ppc64 endif -diff --git a/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c b/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c index bdc908b..c9125b8 100644 ---- a/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c -+++ b/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c @@ -129,5 +129,12 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array, IFUNC_IMPL_ADD (array, i, rawmemchr, 1, __rawmemchr_ppc)) @@ -83,11 +83,11 @@ index bdc908b..c9125b8 100644 + return i; } -diff --git a/sysdeps/powerpc/powerpc64/multiarch/strnlen-power7.S b/sysdeps/powerpc/powerpc64/multiarch/strnlen-power7.S +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strnlen-power7.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strnlen-power7.S new file mode 100644 index 0000000..909aae8 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/multiarch/strnlen-power7.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strnlen-power7.S @@ -0,0 +1,40 @@ +/* Optimized strnlen version for POWER7. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -129,11 +129,11 @@ index 0000000..909aae8 +#define weak_alias(name, alias) + +#include -diff --git a/sysdeps/powerpc/powerpc64/multiarch/strnlen-ppc64.c b/sysdeps/powerpc/powerpc64/multiarch/strnlen-ppc64.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strnlen-ppc64.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strnlen-ppc64.c new file mode 100644 index 0000000..9d23994 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/multiarch/strnlen-ppc64.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strnlen-ppc64.c @@ -0,0 +1,18 @@ +/* Copyright (C) 2013-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. @@ -153,11 +153,11 @@ index 0000000..9d23994 + . */ + +#include -diff --git a/sysdeps/powerpc/powerpc64/multiarch/strnlen.c b/sysdeps/powerpc/powerpc64/multiarch/strnlen.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strnlen.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strnlen.c new file mode 100644 index 0000000..3926031 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/multiarch/strnlen.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strnlen.c @@ -0,0 +1,36 @@ +/* Multiple versions of strnlen. + Copyright (C) 2013-2014 Free Software Foundation, Inc. diff --git a/SOURCES/glibc-rh731837-10.patch b/SOURCES/glibc-rh731837-10.patch index a92b39c..ac20398 100644 --- a/SOURCES/glibc-rh731837-10.patch +++ b/SOURCES/glibc-rh731837-10.patch @@ -19,10 +19,10 @@ Date: Fri Dec 13 14:39:51 2013 -0500 create mode 100644 sysdeps/powerpc/powerpc64/multiarch/strcasecmp_l-power7.S create mode 100644 sysdeps/powerpc/powerpc64/multiarch/strcasecmp_l.c -diff --git a/sysdeps/powerpc/powerpc64/multiarch/Makefile b/sysdeps/powerpc/powerpc64/multiarch/Makefile +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/Makefile glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/Makefile index 3285fd7..5e172da 100644 ---- a/sysdeps/powerpc/powerpc64/multiarch/Makefile -+++ b/sysdeps/powerpc/powerpc64/multiarch/Makefile +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/Makefile ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/Makefile @@ -6,5 +6,5 @@ sysdep_routines += memcpy-power7 memcpy-a2 memcpy-power6 memcpy-cell \ mempcpy-power7 mempcpy-ppc64 memchr-power7 memchr-ppc64 \ memrchr-power7 memrchr-ppc64 rawmemchr-power7 \ @@ -30,10 +30,10 @@ index 3285fd7..5e172da 100644 - strnlen-ppc64 + strnlen-ppc64 strcasecmp-power7 strcasecmp_l-power7 endif -diff --git a/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c b/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c index c9125b8..ba78d97 100644 ---- a/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c -+++ b/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c @@ -136,5 +136,20 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array, IFUNC_IMPL_ADD (array, i, strnlen, 1, __strnlen_ppc)) @@ -55,11 +55,11 @@ index c9125b8..ba78d97 100644 + return i; } -diff --git a/sysdeps/powerpc/powerpc64/multiarch/strcasecmp-power7.S b/sysdeps/powerpc/powerpc64/multiarch/strcasecmp-power7.S +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strcasecmp-power7.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strcasecmp-power7.S new file mode 100644 index 0000000..9714f88 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/multiarch/strcasecmp-power7.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strcasecmp-power7.S @@ -0,0 +1,41 @@ +/* Optimized strcasecmp implementation foOWER7. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -102,11 +102,11 @@ index 0000000..9714f88 +#define libc_hidden_builtin_def(name) + +#include -diff --git a/sysdeps/powerpc/powerpc64/multiarch/strcasecmp.c b/sysdeps/powerpc/powerpc64/multiarch/strcasecmp.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strcasecmp.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strcasecmp.c new file mode 100644 index 0000000..7f02a25 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/multiarch/strcasecmp.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strcasecmp.c @@ -0,0 +1,40 @@ +/* Multiple versions of strcasecmp. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -148,11 +148,11 @@ index 0000000..7f02a25 + +weak_alias (__libc_strcasecmp, strcasecmp) +#endif -diff --git a/sysdeps/powerpc/powerpc64/multiarch/strcasecmp_l-power7.S b/sysdeps/powerpc/powerpc64/multiarch/strcasecmp_l-power7.S +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strcasecmp_l-power7.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strcasecmp_l-power7.S new file mode 100644 index 0000000..117e464 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/multiarch/strcasecmp_l-power7.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strcasecmp_l-power7.S @@ -0,0 +1,43 @@ +/* Optimized strcasecmp_l implementation for POWER7. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -197,11 +197,11 @@ index 0000000..117e464 +#define USE_IN_EXTENDED_LOCALE_MODEL + +#include -diff --git a/sysdeps/powerpc/powerpc64/multiarch/strcasecmp_l.c b/sysdeps/powerpc/powerpc64/multiarch/strcasecmp_l.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strcasecmp_l.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strcasecmp_l.c new file mode 100644 index 0000000..a3374c3 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/multiarch/strcasecmp_l.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strcasecmp_l.c @@ -0,0 +1,40 @@ +/* Multiple versions of strcasecmp_l. + Copyright (C) 2013-2014 Free Software Foundation, Inc. diff --git a/SOURCES/glibc-rh731837-11.patch b/SOURCES/glibc-rh731837-11.patch index 6083f0c..15e2c17 100644 --- a/SOURCES/glibc-rh731837-11.patch +++ b/SOURCES/glibc-rh731837-11.patch @@ -19,10 +19,10 @@ Date: Fri Dec 13 14:40:28 2013 -0500 create mode 100644 sysdeps/powerpc/powerpc64/multiarch/strncase_l-power7.c create mode 100644 sysdeps/powerpc/powerpc64/multiarch/strncase_l.c -diff --git a/sysdeps/powerpc/powerpc64/multiarch/Makefile b/sysdeps/powerpc/powerpc64/multiarch/Makefile +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/Makefile glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/Makefile index 5e172da..4dca756 100644 ---- a/sysdeps/powerpc/powerpc64/multiarch/Makefile -+++ b/sysdeps/powerpc/powerpc64/multiarch/Makefile +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/Makefile ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/Makefile @@ -6,5 +6,9 @@ sysdep_routines += memcpy-power7 memcpy-a2 memcpy-power6 memcpy-cell \ mempcpy-power7 mempcpy-ppc64 memchr-power7 memchr-ppc64 \ memrchr-power7 memrchr-ppc64 rawmemchr-power7 \ @@ -34,10 +34,10 @@ index 5e172da..4dca756 100644 +CFLAGS-strncase-power7.c += -mcpu=power7 -funroll-loops +CFLAGS-strncase_l-power7.c += -mcpu=power7 -funroll-loops endif -diff --git a/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c b/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c index ba78d97..4b8fb22 100644 ---- a/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c -+++ b/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c @@ -151,5 +151,20 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array, IFUNC_IMPL_ADD (array, i, strcasecmp_l, 1, __strcasecmp_l_ppc)) @@ -59,11 +59,11 @@ index ba78d97..4b8fb22 100644 + return i; } -diff --git a/sysdeps/powerpc/powerpc64/multiarch/strncase-power7.c b/sysdeps/powerpc/powerpc64/multiarch/strncase-power7.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strncase-power7.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strncase-power7.c new file mode 100644 index 0000000..9c5dbab --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/multiarch/strncase-power7.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strncase-power7.c @@ -0,0 +1,24 @@ +/* Copyright (C) 2013-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. @@ -89,11 +89,11 @@ index 0000000..9c5dbab +extern __typeof (strncasecmp) __strncasecmp_power7 attribute_hidden; + +#include -diff --git a/sysdeps/powerpc/powerpc64/multiarch/strncase.c b/sysdeps/powerpc/powerpc64/multiarch/strncase.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strncase.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strncase.c new file mode 100644 index 0000000..05eba7c --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/multiarch/strncase.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strncase.c @@ -0,0 +1,41 @@ +/* Multiple versions of strncasecmp + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -136,11 +136,11 @@ index 0000000..05eba7c + : __strncasecmp_ppc); +weak_alias (__libc_strncasecmp, strncasecmp) +#endif -diff --git a/sysdeps/powerpc/powerpc64/multiarch/strncase_l-power7.c b/sysdeps/powerpc/powerpc64/multiarch/strncase_l-power7.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strncase_l-power7.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strncase_l-power7.c new file mode 100644 index 0000000..8c8cd8d --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/multiarch/strncase_l-power7.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strncase_l-power7.c @@ -0,0 +1,25 @@ +/* Copyright (C) 2013-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. @@ -167,11 +167,11 @@ index 0000000..8c8cd8d +extern __typeof (strncasecmp_l) __strncasecmp_l_power7 attribute_hidden; + +#include -diff --git a/sysdeps/powerpc/powerpc64/multiarch/strncase_l.c b/sysdeps/powerpc/powerpc64/multiarch/strncase_l.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strncase_l.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strncase_l.c new file mode 100644 index 0000000..4014269 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/multiarch/strncase_l.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strncase_l.c @@ -0,0 +1,42 @@ +/* Multiple versions of strncasecmp_l + Copyright (C) 2013-2014 Free Software Foundation, Inc. diff --git a/SOURCES/glibc-rh731837-12.patch b/SOURCES/glibc-rh731837-12.patch index 15fa0cf..257cd2f 100644 --- a/SOURCES/glibc-rh731837-12.patch +++ b/SOURCES/glibc-rh731837-12.patch @@ -19,10 +19,10 @@ Date: Fri Dec 13 14:48:48 2013 -0500 create mode 100644 sysdeps/powerpc/powerpc64/multiarch/strncmp-ppc64.S create mode 100644 sysdeps/powerpc/powerpc64/multiarch/strncmp.c -diff --git a/sysdeps/powerpc/powerpc64/multiarch/Makefile b/sysdeps/powerpc/powerpc64/multiarch/Makefile +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/Makefile glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/Makefile index 4dca756..22baf1c 100644 ---- a/sysdeps/powerpc/powerpc64/multiarch/Makefile -+++ b/sysdeps/powerpc/powerpc64/multiarch/Makefile +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/Makefile ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/Makefile @@ -7,7 +7,8 @@ sysdep_routines += memcpy-power7 memcpy-a2 memcpy-power6 memcpy-cell \ memrchr-power7 memrchr-ppc64 rawmemchr-power7 \ rawmemchr-ppc64 strlen-power7 strlen-ppc64 strnlen-power7 \ @@ -33,10 +33,10 @@ index 4dca756..22baf1c 100644 CFLAGS-strncase-power7.c += -mcpu=power7 -funroll-loops CFLAGS-strncase_l-power7.c += -mcpu=power7 -funroll-loops -diff --git a/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c b/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c index 4b8fb22..67f75a5 100644 ---- a/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c -+++ b/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c @@ -77,6 +77,15 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array, __strlen_power7) IFUNC_IMPL_ADD (array, i, strlen, 1, @@ -53,11 +53,11 @@ index 4b8fb22..67f75a5 100644 #endif /* Support sysdeps/powerpc/powerpc64/multiarch/memcmp.c. */ -diff --git a/sysdeps/powerpc/powerpc64/multiarch/strncmp-power4.S b/sysdeps/powerpc/powerpc64/multiarch/strncmp-power4.S +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strncmp-power4.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strncmp-power4.S new file mode 100644 index 0000000..62cebbc --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/multiarch/strncmp-power4.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strncmp-power4.S @@ -0,0 +1,38 @@ +/* Copyright (C) 2013-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. @@ -97,11 +97,11 @@ index 0000000..62cebbc +#define libc_hidden_builtin_def(name) + +#include -diff --git a/sysdeps/powerpc/powerpc64/multiarch/strncmp-power7.S b/sysdeps/powerpc/powerpc64/multiarch/strncmp-power7.S +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strncmp-power7.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strncmp-power7.S new file mode 100644 index 0000000..b0d607a --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/multiarch/strncmp-power7.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strncmp-power7.S @@ -0,0 +1,39 @@ +/* Copyright (C) 2013-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. @@ -142,11 +142,11 @@ index 0000000..b0d607a +#define libc_hidden_builtin_def(name) + +#include -diff --git a/sysdeps/powerpc/powerpc64/multiarch/strncmp-ppc64.S b/sysdeps/powerpc/powerpc64/multiarch/strncmp-ppc64.S +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strncmp-ppc64.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strncmp-ppc64.S new file mode 100644 index 0000000..25b7f26 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/multiarch/strncmp-ppc64.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strncmp-ppc64.S @@ -0,0 +1,41 @@ +/* Copyright (C) 2013-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. @@ -189,11 +189,11 @@ index 0000000..25b7f26 +#endif + +#include -diff --git a/sysdeps/powerpc/powerpc64/multiarch/strncmp.c b/sysdeps/powerpc/powerpc64/multiarch/strncmp.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strncmp.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strncmp.c new file mode 100644 index 0000000..9829d69 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/multiarch/strncmp.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strncmp.c @@ -0,0 +1,37 @@ +/* Multiple versions of strncmp. + Copyright (C) 2013-2014 Free Software Foundation, Inc. diff --git a/SOURCES/glibc-rh731837-13.patch b/SOURCES/glibc-rh731837-13.patch index f3a3c58..e494b73 100644 --- a/SOURCES/glibc-rh731837-13.patch +++ b/SOURCES/glibc-rh731837-13.patch @@ -19,10 +19,10 @@ Date: Fri Dec 13 14:49:54 2013 -0500 create mode 100644 sysdeps/powerpc/powerpc64/multiarch/strchr-ppc64.S create mode 100644 sysdeps/powerpc/powerpc64/multiarch/strchr.c -diff --git a/sysdeps/powerpc/powerpc64/multiarch/Makefile b/sysdeps/powerpc/powerpc64/multiarch/Makefile +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/Makefile glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/Makefile index 22baf1c..f7c5853 100644 ---- a/sysdeps/powerpc/powerpc64/multiarch/Makefile -+++ b/sysdeps/powerpc/powerpc64/multiarch/Makefile +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/Makefile ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/Makefile @@ -8,7 +8,7 @@ sysdep_routines += memcpy-power7 memcpy-a2 memcpy-power6 memcpy-cell \ rawmemchr-ppc64 strlen-power7 strlen-ppc64 strnlen-power7 \ strnlen-ppc64 strcasecmp-power7 strcasecmp_l-power7 \ @@ -32,10 +32,10 @@ index 22baf1c..f7c5853 100644 CFLAGS-strncase-power7.c += -mcpu=power7 -funroll-loops CFLAGS-strncase_l-power7.c += -mcpu=power7 -funroll-loops -diff --git a/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c b/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c index 67f75a5..3b005ea 100644 ---- a/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c -+++ b/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c @@ -86,6 +86,14 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array, __strncmp_power4) IFUNC_IMPL_ADD (array, i, strncmp, 1, @@ -51,11 +51,11 @@ index 67f75a5..3b005ea 100644 #endif /* Support sysdeps/powerpc/powerpc64/multiarch/memcmp.c. */ -diff --git a/sysdeps/powerpc/powerpc64/multiarch/rtld-strchr.S b/sysdeps/powerpc/powerpc64/multiarch/rtld-strchr.S +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/rtld-strchr.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/rtld-strchr.S new file mode 100644 index 0000000..5c62657 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/multiarch/rtld-strchr.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/rtld-strchr.S @@ -0,0 +1,18 @@ +/* Copyright (C) 2013-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. @@ -75,11 +75,11 @@ index 0000000..5c62657 + . */ + +#include -diff --git a/sysdeps/powerpc/powerpc64/multiarch/strchr-power7.S b/sysdeps/powerpc/powerpc64/multiarch/strchr-power7.S +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strchr-power7.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strchr-power7.S new file mode 100644 index 0000000..0b2ca42 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/multiarch/strchr-power7.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strchr-power7.S @@ -0,0 +1,38 @@ +/* Optimized strchr implementation for POWER7. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -119,11 +119,11 @@ index 0000000..0b2ca42 +#define libc_hidden_builtin_def(name) + +#include -diff --git a/sysdeps/powerpc/powerpc64/multiarch/strchr-ppc64.S b/sysdeps/powerpc/powerpc64/multiarch/strchr-ppc64.S +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strchr-ppc64.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strchr-ppc64.S new file mode 100644 index 0000000..ded9284 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/multiarch/strchr-ppc64.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strchr-ppc64.S @@ -0,0 +1,41 @@ +/* PowerPC64 default implementation of strchr. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -166,11 +166,11 @@ index 0000000..ded9284 +#endif + +#include -diff --git a/sysdeps/powerpc/powerpc64/multiarch/strchr.c b/sysdeps/powerpc/powerpc64/multiarch/strchr.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strchr.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strchr.c new file mode 100644 index 0000000..74a9d54 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/multiarch/strchr.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strchr.c @@ -0,0 +1,35 @@ +/* Multiple versions of strchr. + Copyright (C) 2013-2014 Free Software Foundation, Inc. diff --git a/SOURCES/glibc-rh731837-14.patch b/SOURCES/glibc-rh731837-14.patch index 569aba2..6379ab5 100644 --- a/SOURCES/glibc-rh731837-14.patch +++ b/SOURCES/glibc-rh731837-14.patch @@ -23,10 +23,10 @@ string/strchrnul.c apart from original commit. create mode 100644 sysdeps/powerpc/powerpc64/multiarch/strchrnul-ppc64.c create mode 100644 sysdeps/powerpc/powerpc64/multiarch/strchrnul.c -diff --git a/string/strchrnul.c b/string/strchrnul.c +diff --git glibc-2.17-c758a686/string/strchrnul.c glibc-2.17-c758a686/string/strchrnul.c index 0db5e23..39540a3 100644 ---- a/string/strchrnul.c -+++ b/string/strchrnul.c +--- glibc-2.17-c758a686/string/strchrnul.c ++++ glibc-2.17-c758a686/string/strchrnul.c @@ -27,9 +27,13 @@ #undef __strchrnul #undef strchrnul @@ -42,11 +42,11 @@ index 0db5e23..39540a3 100644 const char *s; int c_in; { -diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/strchrnul-ppc32.c b/sysdeps/powerpc/powerpc32/power4/multiarch/strchrnul-ppc32.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/multiarch/strchrnul-ppc32.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/multiarch/strchrnul-ppc32.c new file mode 100644 index 0000000..950643a --- /dev/null -+++ b/sysdeps/powerpc/powerpc32/power4/multiarch/strchrnul-ppc32.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/multiarch/strchrnul-ppc32.c @@ -0,0 +1,28 @@ +/* PowerPC32 default implementation of strchrnul. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -76,10 +76,10 @@ index 0000000..950643a +extern __typeof (strchrnul) __strchrnul_ppc attribute_hidden; + +#include -diff --git a/sysdeps/powerpc/powerpc64/multiarch/Makefile b/sysdeps/powerpc/powerpc64/multiarch/Makefile +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/Makefile glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/Makefile index f7c5853..15b86bd 100644 ---- a/sysdeps/powerpc/powerpc64/multiarch/Makefile -+++ b/sysdeps/powerpc/powerpc64/multiarch/Makefile +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/Makefile ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/Makefile @@ -8,7 +8,8 @@ sysdep_routines += memcpy-power7 memcpy-a2 memcpy-power6 memcpy-cell \ rawmemchr-ppc64 strlen-power7 strlen-ppc64 strnlen-power7 \ strnlen-ppc64 strcasecmp-power7 strcasecmp_l-power7 \ @@ -90,10 +90,10 @@ index f7c5853..15b86bd 100644 CFLAGS-strncase-power7.c += -mcpu=power7 -funroll-loops CFLAGS-strncase_l-power7.c += -mcpu=power7 -funroll-loops -diff --git a/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c b/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c index 3b005ea..9e3b89d 100644 ---- a/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c -+++ b/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c @@ -94,6 +94,14 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array, __strchr_power7) IFUNC_IMPL_ADD (array, i, strchr, 1, @@ -109,11 +109,11 @@ index 3b005ea..9e3b89d 100644 #endif /* Support sysdeps/powerpc/powerpc64/multiarch/memcmp.c. */ -diff --git a/sysdeps/powerpc/powerpc64/multiarch/strchrnul-power7.S b/sysdeps/powerpc/powerpc64/multiarch/strchrnul-power7.S +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strchrnul-power7.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strchrnul-power7.S new file mode 100644 index 0000000..87d7c03 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/multiarch/strchrnul-power7.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strchrnul-power7.S @@ -0,0 +1,38 @@ +/* Optimized strchrnul implementation for POWER7. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -153,11 +153,11 @@ index 0000000..87d7c03 +#define libc_hidden_builtin_def(name) + +#include -diff --git a/sysdeps/powerpc/powerpc64/multiarch/strchrnul-ppc64.c b/sysdeps/powerpc/powerpc64/multiarch/strchrnul-ppc64.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strchrnul-ppc64.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strchrnul-ppc64.c new file mode 100644 index 0000000..a76b335 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/multiarch/strchrnul-ppc64.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strchrnul-ppc64.c @@ -0,0 +1,19 @@ +/* PowerPC64 default implementation of strchrnul. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -178,11 +178,11 @@ index 0000000..a76b335 + . */ + +#include -diff --git a/sysdeps/powerpc/powerpc64/multiarch/strchrnul.c b/sysdeps/powerpc/powerpc64/multiarch/strchrnul.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strchrnul.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strchrnul.c new file mode 100644 index 0000000..dab1cbf --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/multiarch/strchrnul.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strchrnul.c @@ -0,0 +1,37 @@ +/* Multiple versions of strchrnul. + Copyright (C) 2013-2014 Free Software Foundation, Inc. diff --git a/SOURCES/glibc-rh731837-15.patch b/SOURCES/glibc-rh731837-15.patch index f7c6eb8..a8ff112 100644 --- a/SOURCES/glibc-rh731837-15.patch +++ b/SOURCES/glibc-rh731837-15.patch @@ -35,11 +35,11 @@ sysdeps/powerpc/power6/wcschr.c create mode 100644 sysdeps/powerpc/powerpc64/multiarch/wcschr-ppc64.c create mode 100644 sysdeps/powerpc/powerpc64/multiarch/wcschr.c -diff --git a/sysdeps/powerpc/power6/wcschr.c b/sysdeps/powerpc/power6/wcschr.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/power6/wcschr.c glibc-2.17-c758a686/sysdeps/powerpc/power6/wcschr.c new file mode 100644 index 0000000..7045677 --- /dev/null -+++ b/sysdeps/powerpc/power6/wcschr.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/power6/wcschr.c @@ -0,0 +1,89 @@ +/* wcschr.c - Wide Character Search for POWER6+. + Copyright (C) 2012-2014 Free Software Foundation, Inc. @@ -130,11 +130,11 @@ index 0000000..7045677 + return NULL; +} +libc_hidden_def (wcschr) -diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/wcschr-power6.c b/sysdeps/powerpc/powerpc32/power4/multiarch/wcschr-power6.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/multiarch/wcschr-power6.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/multiarch/wcschr-power6.c new file mode 100644 index 0000000..7c648d8 --- /dev/null -+++ b/sysdeps/powerpc/powerpc32/power4/multiarch/wcschr-power6.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/multiarch/wcschr-power6.c @@ -0,0 +1,26 @@ +/* wcschr.c - Wide Character Search for powerpc32/power6. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -162,11 +162,11 @@ index 0000000..7c648d8 +#define libc_hidden_def(name) + +#include -diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/wcschr-power7.c b/sysdeps/powerpc/powerpc32/power4/multiarch/wcschr-power7.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/multiarch/wcschr-power7.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/multiarch/wcschr-power7.c new file mode 100644 index 0000000..e561ced --- /dev/null -+++ b/sysdeps/powerpc/powerpc32/power4/multiarch/wcschr-power7.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/multiarch/wcschr-power7.c @@ -0,0 +1,26 @@ +/* wcschr.c - Wide Character Search for powerpc32/power7. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -194,11 +194,11 @@ index 0000000..e561ced +#define libc_hidden_def(name) + +#include -diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/wcschr-ppc32.c b/sysdeps/powerpc/powerpc32/power4/multiarch/wcschr-ppc32.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/multiarch/wcschr-ppc32.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/multiarch/wcschr-ppc32.c new file mode 100644 index 0000000..a42f70c --- /dev/null -+++ b/sysdeps/powerpc/powerpc32/power4/multiarch/wcschr-ppc32.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/multiarch/wcschr-ppc32.c @@ -0,0 +1,31 @@ +/* Copyright (C) 2013-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. @@ -231,10 +231,10 @@ index 0000000..a42f70c +extern __typeof (wcschr) __wcschr_ppc; + +#include -diff --git a/sysdeps/powerpc/powerpc64/multiarch/Makefile b/sysdeps/powerpc/powerpc64/multiarch/Makefile +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/Makefile glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/Makefile index 15b86bd..ff3b8cf 100644 ---- a/sysdeps/powerpc/powerpc64/multiarch/Makefile -+++ b/sysdeps/powerpc/powerpc64/multiarch/Makefile +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/Makefile ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/Makefile @@ -9,8 +9,11 @@ sysdep_routines += memcpy-power7 memcpy-a2 memcpy-power6 memcpy-cell \ strnlen-ppc64 strcasecmp-power7 strcasecmp_l-power7 \ strncase-power7 strncase_l-power7 strncmp-power7 \ @@ -248,10 +248,10 @@ index 15b86bd..ff3b8cf 100644 +CFLAGS-wcschr-power7.c += -mcpu=power7 +CFLAGS-wcschr-power6.c += -mcpu=power6 endif -diff --git a/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c b/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c index 9e3b89d..cc932c9 100644 ---- a/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c -+++ b/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c @@ -191,5 +191,16 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array, IFUNC_IMPL_ADD (array, i, strncasecmp_l, 1, __strncasecmp_l_ppc)) @@ -269,11 +269,11 @@ index 9e3b89d..cc932c9 100644 + return i; } -diff --git a/sysdeps/powerpc/powerpc64/multiarch/wcschr-power6.c b/sysdeps/powerpc/powerpc64/multiarch/wcschr-power6.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/wcschr-power6.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/wcschr-power6.c new file mode 100644 index 0000000..21d965a --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/multiarch/wcschr-power6.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/wcschr-power6.c @@ -0,0 +1,19 @@ +/* wcschr.c - Wide Character Search for powerpc64/power6. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -294,11 +294,11 @@ index 0000000..21d965a + not, see . */ + +#include -diff --git a/sysdeps/powerpc/powerpc64/multiarch/wcschr-power7.c b/sysdeps/powerpc/powerpc64/multiarch/wcschr-power7.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/wcschr-power7.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/wcschr-power7.c new file mode 100644 index 0000000..3407219 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/multiarch/wcschr-power7.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/wcschr-power7.c @@ -0,0 +1,19 @@ +/* wcschr.c - Wide Character Search for powerpc64/power7. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -319,11 +319,11 @@ index 0000000..3407219 + not, see . */ + +#include -diff --git a/sysdeps/powerpc/powerpc64/multiarch/wcschr-ppc64.c b/sysdeps/powerpc/powerpc64/multiarch/wcschr-ppc64.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/wcschr-ppc64.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/wcschr-ppc64.c new file mode 100644 index 0000000..3f1f368 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/multiarch/wcschr-ppc64.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/wcschr-ppc64.c @@ -0,0 +1,18 @@ +/* Copyright (C) 2013-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. @@ -343,11 +343,11 @@ index 0000000..3f1f368 + . */ + +#include -diff --git a/sysdeps/powerpc/powerpc64/multiarch/wcschr.c b/sysdeps/powerpc/powerpc64/multiarch/wcschr.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/wcschr.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/wcschr.c new file mode 100644 index 0000000..216d2bc --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/multiarch/wcschr.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/wcschr.c @@ -0,0 +1,38 @@ +/* Multiple versions of wcschr + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -387,10 +387,10 @@ index 0000000..216d2bc +#define libc_hidden_def(a) +#include +#endif -diff --git a/sysdeps/powerpc/powerpc64/power6/wcschr.c b/sysdeps/powerpc/powerpc64/power6/wcschr.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power6/wcschr.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power6/wcschr.c index 9136c02..ae04a13 100644 ---- a/sysdeps/powerpc/powerpc64/power6/wcschr.c -+++ b/sysdeps/powerpc/powerpc64/power6/wcschr.c +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power6/wcschr.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power6/wcschr.c @@ -1 +1 @@ -#include "../../powerpc32/power6/wcschr.c" +#include diff --git a/SOURCES/glibc-rh731837-16.patch b/SOURCES/glibc-rh731837-16.patch index 74703de..9aee31d 100644 --- a/SOURCES/glibc-rh731837-16.patch +++ b/SOURCES/glibc-rh731837-16.patch @@ -36,11 +36,11 @@ wcsmbs/wcsrchr.c create mode 100644 sysdeps/powerpc/powerpc64/multiarch/wcsrchr-ppc64.c create mode 100644 sysdeps/powerpc/powerpc64/multiarch/wcsrchr.c -diff --git a/sysdeps/powerpc/power6/wcsrchr.c b/sysdeps/powerpc/power6/wcsrchr.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/power6/wcsrchr.c glibc-2.17-c758a686/sysdeps/powerpc/power6/wcsrchr.c new file mode 100644 index 0000000..278d98d --- /dev/null -+++ b/sysdeps/powerpc/power6/wcsrchr.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/power6/wcsrchr.c @@ -0,0 +1,89 @@ +/* wcsrchr.c - Wide Character Reverse Search for POWER6+. + Copyright (C) 2012-2014 Free Software Foundation, Inc. @@ -131,11 +131,11 @@ index 0000000..278d98d + + return (wchar_t *) retval; +} -diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/wcsrchr-power6.c b/sysdeps/powerpc/powerpc32/power4/multiarch/wcsrchr-power6.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/multiarch/wcsrchr-power6.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/multiarch/wcsrchr-power6.c new file mode 100644 index 0000000..bd77eb3 --- /dev/null -+++ b/sysdeps/powerpc/powerpc32/power4/multiarch/wcsrchr-power6.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/multiarch/wcsrchr-power6.c @@ -0,0 +1,20 @@ +/* Copyright (C) 2013-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. @@ -157,11 +157,11 @@ index 0000000..bd77eb3 +#define WCSRCHR __wcsrchr_power6 + +#include -diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/wcsrchr-power7.c b/sysdeps/powerpc/powerpc32/power4/multiarch/wcsrchr-power7.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/multiarch/wcsrchr-power7.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/multiarch/wcsrchr-power7.c new file mode 100644 index 0000000..829a434 --- /dev/null -+++ b/sysdeps/powerpc/powerpc32/power4/multiarch/wcsrchr-power7.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/multiarch/wcsrchr-power7.c @@ -0,0 +1,20 @@ +/* Copyright (C) 2013-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. @@ -183,11 +183,11 @@ index 0000000..829a434 +#define WCSRCHR __wcsrchr_power7 + +#include -diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/wcsrchr-ppc32.c b/sysdeps/powerpc/powerpc32/power4/multiarch/wcsrchr-ppc32.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/multiarch/wcsrchr-ppc32.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/multiarch/wcsrchr-ppc32.c new file mode 100644 index 0000000..9c7fe2d --- /dev/null -+++ b/sysdeps/powerpc/powerpc32/power4/multiarch/wcsrchr-ppc32.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/multiarch/wcsrchr-ppc32.c @@ -0,0 +1,26 @@ +/* Copyright (C) 2013-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. @@ -215,10 +215,10 @@ index 0000000..9c7fe2d +extern __typeof (wcsrchr) __wcsrchr_ppc; + +#include -diff --git a/sysdeps/powerpc/powerpc64/multiarch/Makefile b/sysdeps/powerpc/powerpc64/multiarch/Makefile +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/Makefile glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/Makefile index ff3b8cf..b4504b7 100644 ---- a/sysdeps/powerpc/powerpc64/multiarch/Makefile -+++ b/sysdeps/powerpc/powerpc64/multiarch/Makefile +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/Makefile ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/Makefile @@ -10,10 +10,13 @@ sysdep_routines += memcpy-power7 memcpy-a2 memcpy-power6 memcpy-cell \ strncase-power7 strncase_l-power7 strncmp-power7 \ strncmp-power4 strncmp-ppc64 strchr-power7 strchr-ppc64 \ @@ -234,10 +234,10 @@ index ff3b8cf..b4504b7 100644 +CFLAGS-wcsrchr-power7.c += -mcpu=power7 +CFLAGS-wcsrchr-power6.c += -mcpu=power6 endif -diff --git a/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c b/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c index cc932c9..6c7422c 100644 ---- a/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c -+++ b/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c @@ -202,5 +202,16 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array, IFUNC_IMPL_ADD (array, i, wcschr, 1, __wcschr_ppc)) @@ -255,11 +255,11 @@ index cc932c9..6c7422c 100644 + return i; } -diff --git a/sysdeps/powerpc/powerpc64/multiarch/wcsrchr-power6.c b/sysdeps/powerpc/powerpc64/multiarch/wcsrchr-power6.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/wcsrchr-power6.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/wcsrchr-power6.c new file mode 100644 index 0000000..da6f27b --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/multiarch/wcsrchr-power6.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/wcsrchr-power6.c @@ -0,0 +1,19 @@ +/* wcsrchr.c - Wide Character Search for powerpc64/power6. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -280,11 +280,11 @@ index 0000000..da6f27b + not, see . */ + +#include -diff --git a/sysdeps/powerpc/powerpc64/multiarch/wcsrchr-power7.c b/sysdeps/powerpc/powerpc64/multiarch/wcsrchr-power7.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/wcsrchr-power7.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/wcsrchr-power7.c new file mode 100644 index 0000000..60f07a8 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/multiarch/wcsrchr-power7.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/wcsrchr-power7.c @@ -0,0 +1,19 @@ +/* wcsrchr.c - Wide Character Search for powerpc64/power7. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -305,11 +305,11 @@ index 0000000..60f07a8 + not, see . */ + +#include -diff --git a/sysdeps/powerpc/powerpc64/multiarch/wcsrchr-ppc64.c b/sysdeps/powerpc/powerpc64/multiarch/wcsrchr-ppc64.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/wcsrchr-ppc64.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/wcsrchr-ppc64.c new file mode 100644 index 0000000..1fff510 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/multiarch/wcsrchr-ppc64.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/wcsrchr-ppc64.c @@ -0,0 +1,18 @@ +/* Copyright (C) 2013-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. @@ -329,11 +329,11 @@ index 0000000..1fff510 + . */ + +#include -diff --git a/sysdeps/powerpc/powerpc64/multiarch/wcsrchr.c b/sysdeps/powerpc/powerpc64/multiarch/wcsrchr.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/wcsrchr.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/wcsrchr.c new file mode 100644 index 0000000..3d0ab42 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/multiarch/wcsrchr.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/wcsrchr.c @@ -0,0 +1,36 @@ +/* Multiple versions of wcsrchr. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -371,17 +371,17 @@ index 0000000..3d0ab42 +#else +#include +#endif -diff --git a/sysdeps/powerpc/powerpc64/power6/wcsrchr.c b/sysdeps/powerpc/powerpc64/power6/wcsrchr.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power6/wcsrchr.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power6/wcsrchr.c index 2327c05..b86472d 100644 ---- a/sysdeps/powerpc/powerpc64/power6/wcsrchr.c -+++ b/sysdeps/powerpc/powerpc64/power6/wcsrchr.c +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power6/wcsrchr.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power6/wcsrchr.c @@ -1 +1 @@ -#include "../../powerpc32/power6/wcsrchr.c" +#include -diff --git a/wcsmbs/wcsrchr.c b/wcsmbs/wcsrchr.c +diff --git glibc-2.17-c758a686/wcsmbs/wcsrchr.c glibc-2.17-c758a686/wcsmbs/wcsrchr.c index c1b5a59..27c94c5 100644 ---- a/wcsmbs/wcsrchr.c -+++ b/wcsmbs/wcsrchr.c +--- glibc-2.17-c758a686/wcsmbs/wcsrchr.c ++++ glibc-2.17-c758a686/wcsmbs/wcsrchr.c @@ -18,10 +18,13 @@ #include diff --git a/SOURCES/glibc-rh731837-17.patch b/SOURCES/glibc-rh731837-17.patch index 0672d30..f8668b4 100644 --- a/SOURCES/glibc-rh731837-17.patch +++ b/SOURCES/glibc-rh731837-17.patch @@ -37,11 +37,11 @@ wcsmbs/wcscpy.c create mode 100644 sysdeps/powerpc/powerpc64/multiarch/wcscpy-ppc64.c create mode 100644 sysdeps/powerpc/powerpc64/multiarch/wcscpy.c -diff --git a/sysdeps/powerpc/power6/wcscpy.c b/sysdeps/powerpc/power6/wcscpy.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/power6/wcscpy.c glibc-2.17-c758a686/sysdeps/powerpc/power6/wcscpy.c new file mode 100644 index 0000000..417ec72 --- /dev/null -+++ b/sysdeps/powerpc/power6/wcscpy.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/power6/wcscpy.c @@ -0,0 +1,105 @@ +/* wcscpy.c - Wide Character Copy for POWER6+. + Copyright (C) 2012-2014 Free Software Foundation, Inc. @@ -148,11 +148,11 @@ index 0000000..417ec72 + } + return dest; +} -diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/wcscpy-power6.c b/sysdeps/powerpc/powerpc32/power4/multiarch/wcscpy-power6.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/multiarch/wcscpy-power6.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/multiarch/wcscpy-power6.c new file mode 100644 index 0000000..6c86baa --- /dev/null -+++ b/sysdeps/powerpc/powerpc32/power4/multiarch/wcscpy-power6.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/multiarch/wcscpy-power6.c @@ -0,0 +1,22 @@ +/* Copyright (C) 2013-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. @@ -176,11 +176,11 @@ index 0000000..6c86baa +#define WCSCPY __wcscpy_power6 + +#include -diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/wcscpy-power7.c b/sysdeps/powerpc/powerpc32/power4/multiarch/wcscpy-power7.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/multiarch/wcscpy-power7.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/multiarch/wcscpy-power7.c new file mode 100644 index 0000000..dad0e70 --- /dev/null -+++ b/sysdeps/powerpc/powerpc32/power4/multiarch/wcscpy-power7.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/multiarch/wcscpy-power7.c @@ -0,0 +1,22 @@ +/* Copyright (C) 2013-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. @@ -204,11 +204,11 @@ index 0000000..dad0e70 +#define WCSCPY __wcscpy_power7 + +#include -diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/wcscpy-ppc32.c b/sysdeps/powerpc/powerpc32/power4/multiarch/wcscpy-ppc32.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/multiarch/wcscpy-ppc32.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/multiarch/wcscpy-ppc32.c new file mode 100644 index 0000000..c135835 --- /dev/null -+++ b/sysdeps/powerpc/powerpc32/power4/multiarch/wcscpy-ppc32.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/multiarch/wcscpy-ppc32.c @@ -0,0 +1,26 @@ +/* Copyright (C) 2013-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. @@ -236,10 +236,10 @@ index 0000000..c135835 +extern __typeof (wcscpy) __wcscpy_ppc; + +#include -diff --git a/sysdeps/powerpc/powerpc64/multiarch/Makefile b/sysdeps/powerpc/powerpc64/multiarch/Makefile +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/Makefile glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/Makefile index b4504b7..7113212 100644 ---- a/sysdeps/powerpc/powerpc64/multiarch/Makefile -+++ b/sysdeps/powerpc/powerpc64/multiarch/Makefile +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/Makefile ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/Makefile @@ -11,7 +11,7 @@ sysdep_routines += memcpy-power7 memcpy-a2 memcpy-power6 memcpy-cell \ strncmp-power4 strncmp-ppc64 strchr-power7 strchr-ppc64 \ strchrnul-power7 strchrnul-ppc64 wcschr-power7 \ @@ -256,10 +256,10 @@ index b4504b7..7113212 100644 +CFLAGS-wcscpy-power7.c += -mcpu=power7 +CFLAGS-wcscpy-power6.c += -mcpu=power6 endif -diff --git a/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c b/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c index 6c7422c..2d21ce1 100644 ---- a/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c -+++ b/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c @@ -213,5 +213,16 @@ __libc_ifunc_impl_list (const char *name, struct libc_ifunc_impl *array, IFUNC_IMPL_ADD (array, i, wcsrchr, 1, __wcsrchr_ppc)) @@ -277,11 +277,11 @@ index 6c7422c..2d21ce1 100644 + return i; } -diff --git a/sysdeps/powerpc/powerpc64/multiarch/wcscpy-power6.c b/sysdeps/powerpc/powerpc64/multiarch/wcscpy-power6.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/wcscpy-power6.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/wcscpy-power6.c new file mode 100644 index 0000000..9f4bc41 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/multiarch/wcscpy-power6.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/wcscpy-power6.c @@ -0,0 +1,19 @@ +/* wcscpy.c - Wide Character Search for powerpc64/power6. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -302,11 +302,11 @@ index 0000000..9f4bc41 + not, see . */ + +#include -diff --git a/sysdeps/powerpc/powerpc64/multiarch/wcscpy-power7.c b/sysdeps/powerpc/powerpc64/multiarch/wcscpy-power7.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/wcscpy-power7.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/wcscpy-power7.c new file mode 100644 index 0000000..0f37ad4 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/multiarch/wcscpy-power7.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/wcscpy-power7.c @@ -0,0 +1,19 @@ +/* wcscpy.c - Wide Character Search for powerpc64/power7. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -327,11 +327,11 @@ index 0000000..0f37ad4 + not, see . */ + +#include -diff --git a/sysdeps/powerpc/powerpc64/multiarch/wcscpy-ppc64.c b/sysdeps/powerpc/powerpc64/multiarch/wcscpy-ppc64.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/wcscpy-ppc64.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/wcscpy-ppc64.c new file mode 100644 index 0000000..4559569 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/multiarch/wcscpy-ppc64.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/wcscpy-ppc64.c @@ -0,0 +1,18 @@ +/* Copyright (C) 2013-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. @@ -351,11 +351,11 @@ index 0000000..4559569 + . */ + +#include -diff --git a/sysdeps/powerpc/powerpc64/multiarch/wcscpy.c b/sysdeps/powerpc/powerpc64/multiarch/wcscpy.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/wcscpy.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/wcscpy.c new file mode 100644 index 0000000..5c0a6d3 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/multiarch/wcscpy.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/wcscpy.c @@ -0,0 +1,36 @@ +/* Multiple versions of wcscpy. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -393,17 +393,17 @@ index 0000000..5c0a6d3 +#else +#include +#endif -diff --git a/sysdeps/powerpc/powerpc64/power6/wcscpy.c b/sysdeps/powerpc/powerpc64/power6/wcscpy.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power6/wcscpy.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power6/wcscpy.c index 57b706a..722c8f9 100644 ---- a/sysdeps/powerpc/powerpc64/power6/wcscpy.c -+++ b/sysdeps/powerpc/powerpc64/power6/wcscpy.c +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power6/wcscpy.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power6/wcscpy.c @@ -1 +1 @@ -#include "../../powerpc32/power6/wcscpy.c" +#include -diff --git a/wcsmbs/wcscpy.c b/wcsmbs/wcscpy.c +diff --git glibc-2.17-c758a686/wcsmbs/wcscpy.c glibc-2.17-c758a686/wcsmbs/wcscpy.c index 6dea24d..cec1249 100644 ---- a/wcsmbs/wcscpy.c -+++ b/wcsmbs/wcscpy.c +--- glibc-2.17-c758a686/wcsmbs/wcscpy.c ++++ glibc-2.17-c758a686/wcsmbs/wcscpy.c @@ -19,10 +19,13 @@ #include #include diff --git a/SOURCES/glibc-rh731837-18.patch b/SOURCES/glibc-rh731837-18.patch index 3259c95..fd8b4e0 100644 --- a/SOURCES/glibc-rh731837-18.patch +++ b/SOURCES/glibc-rh731837-18.patch @@ -43,10 +43,10 @@ sysdeps/powerpc/powerpc64/power6/wordcopy.c delete mode 100644 sysdeps/powerpc/powerpc64/power4/wordcopy.c delete mode 100644 sysdeps/powerpc/powerpc64/power6/wordcopy.c -diff --git a/string/wordcopy.c b/string/wordcopy.c +diff --git glibc-2.17-c758a686/string/wordcopy.c glibc-2.17-c758a686/string/wordcopy.c index b171f27..ff4cce4 100644 ---- a/string/wordcopy.c -+++ b/string/wordcopy.c +--- glibc-2.17-c758a686/string/wordcopy.c ++++ glibc-2.17-c758a686/string/wordcopy.c @@ -1,5 +1,5 @@ /* _memcopy.c -- subroutines for memory copy functions. - Copyright (C) 1991, 1996 Free Software Foundation, Inc. @@ -122,11 +122,11 @@ index b171f27..ff4cce4 100644 { op_t a0, a1, a2, a3; int sh_1, sh_2; -diff --git a/sysdeps/powerpc/power4/wordcopy.c b/sysdeps/powerpc/power4/wordcopy.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/power4/wordcopy.c glibc-2.17-c758a686/sysdeps/powerpc/power4/wordcopy.c new file mode 100644 index 0000000..263b444 --- /dev/null -+++ b/sysdeps/powerpc/power4/wordcopy.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/power4/wordcopy.c @@ -0,0 +1,212 @@ +/* _memcopy.c -- subroutines for memory copy functions. + Copyright (C) 1991-2014 Free Software Foundation, Inc. @@ -340,11 +340,11 @@ index 0000000..263b444 + } + while (len != 0); +} -diff --git a/sysdeps/powerpc/power6/wordcopy.c b/sysdeps/powerpc/power6/wordcopy.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/power6/wordcopy.c glibc-2.17-c758a686/sysdeps/powerpc/power6/wordcopy.c new file mode 100644 index 0000000..c32e6dd --- /dev/null -+++ b/sysdeps/powerpc/power6/wordcopy.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/power6/wordcopy.c @@ -0,0 +1,221 @@ +/* _memcopy.c -- subroutines for memory copy functions. + Copyright (C) 1991-2014 Free Software Foundation, Inc. @@ -567,11 +567,11 @@ index 0000000..c32e6dd + + bwd_align_merge (align); +} -diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/wordcopy-power6.c b/sysdeps/powerpc/powerpc32/power4/multiarch/wordcopy-power6.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/multiarch/wordcopy-power6.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/multiarch/wordcopy-power6.c new file mode 100644 index 0000000..c5c6eb7 --- /dev/null -+++ b/sysdeps/powerpc/powerpc32/power4/multiarch/wordcopy-power6.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/multiarch/wordcopy-power6.c @@ -0,0 +1,23 @@ +/* Copyright (C) 2013-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. @@ -596,11 +596,11 @@ index 0000000..c5c6eb7 +#define WORDCOPY_BWD_DEST_ALIGNED _wordcopy_bwd_dest_aligned_power6 + +#include -diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/wordcopy-power7.c b/sysdeps/powerpc/powerpc32/power4/multiarch/wordcopy-power7.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/multiarch/wordcopy-power7.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/multiarch/wordcopy-power7.c new file mode 100644 index 0000000..841d1a2 --- /dev/null -+++ b/sysdeps/powerpc/powerpc32/power4/multiarch/wordcopy-power7.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/multiarch/wordcopy-power7.c @@ -0,0 +1,23 @@ +/* Copyright (C) 2013-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. @@ -625,11 +625,11 @@ index 0000000..841d1a2 +#define WORDCOPY_BWD_DEST_ALIGNED _wordcopy_bwd_dest_aligned_power7 + +#include -diff --git a/sysdeps/powerpc/powerpc32/power4/multiarch/wordcopy-ppc32.c b/sysdeps/powerpc/powerpc32/power4/multiarch/wordcopy-ppc32.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/multiarch/wordcopy-ppc32.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/multiarch/wordcopy-ppc32.c new file mode 100644 index 0000000..ccd24ad --- /dev/null -+++ b/sysdeps/powerpc/powerpc32/power4/multiarch/wordcopy-ppc32.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/multiarch/wordcopy-ppc32.c @@ -0,0 +1,23 @@ +/* Copyright (C) 2013-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. @@ -654,10 +654,10 @@ index 0000000..ccd24ad +#define WORDCOPY_BWD_DEST_ALIGNED _wordcopy_bwd_dest_aligned_ppc + +#include -diff --git a/sysdeps/powerpc/powerpc64/multiarch/Makefile b/sysdeps/powerpc/powerpc64/multiarch/Makefile +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/Makefile glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/Makefile index 7113212..8dceb09 100644 ---- a/sysdeps/powerpc/powerpc64/multiarch/Makefile -+++ b/sysdeps/powerpc/powerpc64/multiarch/Makefile +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/Makefile ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/Makefile @@ -11,7 +11,8 @@ sysdep_routines += memcpy-power7 memcpy-a2 memcpy-power6 memcpy-cell \ strncmp-power4 strncmp-ppc64 strchr-power7 strchr-ppc64 \ strchrnul-power7 strchrnul-ppc64 wcschr-power7 \ @@ -675,11 +675,11 @@ index 7113212..8dceb09 100644 +CFLAGS-wordcopy-power7.c += -mcpu=power7 +CFLAGS-wordcopy-power6.c += -mcpu=power6 endif -diff --git a/sysdeps/powerpc/powerpc64/multiarch/wordcopy-power6.c b/sysdeps/powerpc/powerpc64/multiarch/wordcopy-power6.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/wordcopy-power6.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/wordcopy-power6.c new file mode 100644 index 0000000..2a65b52 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/multiarch/wordcopy-power6.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/wordcopy-power6.c @@ -0,0 +1,19 @@ +/* wordcopy routines for powerpc64/power6. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -700,11 +700,11 @@ index 0000000..2a65b52 + not, see . */ + +#include -diff --git a/sysdeps/powerpc/powerpc64/multiarch/wordcopy-power7.c b/sysdeps/powerpc/powerpc64/multiarch/wordcopy-power7.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/wordcopy-power7.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/wordcopy-power7.c new file mode 100644 index 0000000..e804f88 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/multiarch/wordcopy-power7.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/wordcopy-power7.c @@ -0,0 +1,19 @@ +/* wordcopy routines for powerpc64/power7. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -725,11 +725,11 @@ index 0000000..e804f88 + not, see . */ + +#include -diff --git a/sysdeps/powerpc/powerpc64/multiarch/wordcopy-ppc64.c b/sysdeps/powerpc/powerpc64/multiarch/wordcopy-ppc64.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/wordcopy-ppc64.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/wordcopy-ppc64.c new file mode 100644 index 0000000..0584277 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/multiarch/wordcopy-ppc64.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/wordcopy-ppc64.c @@ -0,0 +1,18 @@ +/* Copyright (C) 2013-2014 Free Software Foundation, Inc. + This file is part of the GNU C Library. @@ -749,11 +749,11 @@ index 0000000..0584277 + . */ + +#include -diff --git a/sysdeps/powerpc/powerpc64/multiarch/wordcopy.c b/sysdeps/powerpc/powerpc64/multiarch/wordcopy.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/wordcopy.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/wordcopy.c new file mode 100644 index 0000000..889be25 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/multiarch/wordcopy.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/wordcopy.c @@ -0,0 +1,86 @@ +/* Multiple versions of wordcopy functions. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -841,17 +841,17 @@ index 0000000..889be25 +#else +#include +#endif -diff --git a/sysdeps/powerpc/powerpc64/power4/wordcopy.c b/sysdeps/powerpc/powerpc64/power4/wordcopy.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power4/wordcopy.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power4/wordcopy.c deleted file mode 100644 index f427b48..0000000 ---- a/sysdeps/powerpc/powerpc64/power4/wordcopy.c +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power4/wordcopy.c +++ /dev/null @@ -1 +0,0 @@ -#include "../../powerpc32/power4/wordcopy.c" -diff --git a/sysdeps/powerpc/powerpc64/power6/wordcopy.c b/sysdeps/powerpc/powerpc64/power6/wordcopy.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power6/wordcopy.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power6/wordcopy.c deleted file mode 100644 index 4c72404..0000000 ---- a/sysdeps/powerpc/powerpc64/power6/wordcopy.c +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power6/wordcopy.c +++ /dev/null @@ -1,217 +0,0 @@ -/* _memcopy.c -- subroutines for memory copy functions. diff --git a/SOURCES/glibc-rh731837-19.patch b/SOURCES/glibc-rh731837-19.patch index a20a73a..ffa4548 100644 --- a/SOURCES/glibc-rh731837-19.patch +++ b/SOURCES/glibc-rh731837-19.patch @@ -13,10 +13,10 @@ memcpy. Add the alias to internal GLIBC symbol to avoid PLT creation. sysdeps/generic/symbol-hacks.h | 1 + 1 file changed, 1 insertion(+) -diff --git a/sysdeps/generic/symbol-hacks.h b/sysdeps/generic/symbol-hacks.h +diff --git glibc-2.17-c758a686/sysdeps/generic/symbol-hacks.h glibc-2.17-c758a686/sysdeps/generic/symbol-hacks.h index 9eaf014..6bec24b 100644 ---- a/sysdeps/generic/symbol-hacks.h -+++ b/sysdeps/generic/symbol-hacks.h +--- glibc-2.17-c758a686/sysdeps/generic/symbol-hacks.h ++++ glibc-2.17-c758a686/sysdeps/generic/symbol-hacks.h @@ -3,4 +3,5 @@ #if !defined __ASSEMBLER__ && !defined NOT_IN_libc && defined SHARED asm ("memmove = __GI_memmove"); diff --git a/SOURCES/glibc-rh731837-20.patch b/SOURCES/glibc-rh731837-20.patch index 0256027..47d2f9f 100644 --- a/SOURCES/glibc-rh731837-20.patch +++ b/SOURCES/glibc-rh731837-20.patch @@ -27,45 +27,45 @@ Date: Fri Dec 13 14:58:02 2013 -0500 create mode 100644 sysdeps/powerpc/powerpc64/power7/fpu/multiarch/Implies delete mode 100644 sysdeps/unix/sysv/linux/powerpc/powerpc64/fpu/Implies -diff --git a/sysdeps/powerpc/powerpc64/power5+/fpu/multiarch/Implies b/sysdeps/powerpc/powerpc64/power5+/fpu/multiarch/Implies +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power5+/fpu/multiarch/Implies glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power5+/fpu/multiarch/Implies new file mode 100644 index 0000000..c0e6784 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/power5+/fpu/multiarch/Implies ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power5+/fpu/multiarch/Implies @@ -0,0 +1 @@ +powerpc/powerpc64/power5/fpu/multiarch -diff --git a/sysdeps/powerpc/powerpc64/power5/fpu/multiarch/Implies b/sysdeps/powerpc/powerpc64/power5/fpu/multiarch/Implies +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power5/fpu/multiarch/Implies glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power5/fpu/multiarch/Implies new file mode 100644 index 0000000..3740d05 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/power5/fpu/multiarch/Implies ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power5/fpu/multiarch/Implies @@ -0,0 +1 @@ +powerpc/powerpc64/power4/fpu/multiarch -diff --git a/sysdeps/powerpc/powerpc64/power6/fpu/multiarch/Implies b/sysdeps/powerpc/powerpc64/power6/fpu/multiarch/Implies +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power6/fpu/multiarch/Implies glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power6/fpu/multiarch/Implies new file mode 100644 index 0000000..fca8a4e --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/power6/fpu/multiarch/Implies ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power6/fpu/multiarch/Implies @@ -0,0 +1 @@ +powerpc/powerpc64/power5+/fpu/multiarch -diff --git a/sysdeps/powerpc/powerpc64/power6x/fpu/multiarch/Implies b/sysdeps/powerpc/powerpc64/power6x/fpu/multiarch/Implies +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power6x/fpu/multiarch/Implies glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power6x/fpu/multiarch/Implies new file mode 100644 index 0000000..410d289 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/power6x/fpu/multiarch/Implies ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power6x/fpu/multiarch/Implies @@ -0,0 +1 @@ +powerpc/powerpc64/power6/fpu/multiarch -diff --git a/sysdeps/powerpc/powerpc64/power7/fpu/multiarch/Implies b/sysdeps/powerpc/powerpc64/power7/fpu/multiarch/Implies +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power7/fpu/multiarch/Implies glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power7/fpu/multiarch/Implies new file mode 100644 index 0000000..410d289 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/power7/fpu/multiarch/Implies ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power7/fpu/multiarch/Implies @@ -0,0 +1 @@ +powerpc/powerpc64/power6/fpu/multiarch -diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/fpu/Implies b/sysdeps/unix/sysv/linux/powerpc/powerpc64/fpu/Implies +diff --git glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/fpu/Implies glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/fpu/Implies deleted file mode 100644 index 6243d2e..0000000 ---- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/fpu/Implies +--- glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/powerpc64/fpu/Implies +++ /dev/null @@ -1,2 +0,0 @@ -# Override ldbl-opt with powerpc64 specific routines. diff --git a/SOURCES/glibc-rh731837-21.patch b/SOURCES/glibc-rh731837-21.patch index 283932d..bb68825 100644 --- a/SOURCES/glibc-rh731837-21.patch +++ b/SOURCES/glibc-rh731837-21.patch @@ -26,10 +26,10 @@ is already deleted by some previous patch. Hence ignoring that. delete mode 100644 sysdeps/powerpc/powerpc64/power4/fpu/w_sqrt.c delete mode 100644 sysdeps/powerpc/powerpc64/power4/fpu/w_sqrtf.c -diff --git a/sysdeps/powerpc/fpu/w_sqrtf.c b/sysdeps/powerpc/fpu/w_sqrtf.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/fpu/w_sqrtf.c glibc-2.17-c758a686/sysdeps/powerpc/fpu/w_sqrtf.c deleted file mode 100644 index 39b5b20..0000000 ---- a/sysdeps/powerpc/fpu/w_sqrtf.c +--- glibc-2.17-c758a686/sysdeps/powerpc/fpu/w_sqrtf.c +++ /dev/null @@ -1,46 +0,0 @@ -/* Single-precision floating point square root wrapper. @@ -78,10 +78,10 @@ index 39b5b20..0000000 -} - -weak_alias (__sqrtf, sqrtf) -diff --git a/sysdeps/powerpc/powerpc64/power4/fpu/w_sqrt.c b/sysdeps/powerpc/powerpc64/power4/fpu/w_sqrt.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power4/fpu/w_sqrt.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power4/fpu/w_sqrt.c deleted file mode 100644 index 1bd6a67..0000000 ---- a/sysdeps/powerpc/powerpc64/power4/fpu/w_sqrt.c +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power4/fpu/w_sqrt.c +++ /dev/null @@ -1,55 +0,0 @@ -/* Double-precision floating point square root wrapper. @@ -139,10 +139,10 @@ index 1bd6a67..0000000 -#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0) -compat_symbol (libm, __sqrt, sqrtl, GLIBC_2_0); -#endif -diff --git a/sysdeps/powerpc/powerpc64/power4/fpu/w_sqrtf.c b/sysdeps/powerpc/powerpc64/power4/fpu/w_sqrtf.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power4/fpu/w_sqrtf.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power4/fpu/w_sqrtf.c deleted file mode 100644 index 0e7e692..0000000 ---- a/sysdeps/powerpc/powerpc64/power4/fpu/w_sqrtf.c +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/power4/fpu/w_sqrtf.c +++ /dev/null @@ -1,53 +0,0 @@ -/* Single-precision floating point square root wrapper. diff --git a/SOURCES/glibc-rh731837-22.patch b/SOURCES/glibc-rh731837-22.patch index b6fbaed..7346442 100644 --- a/SOURCES/glibc-rh731837-22.patch +++ b/SOURCES/glibc-rh731837-22.patch @@ -18,10 +18,10 @@ successfully since __GI___isnanf is missing.This wll be fixed later in master. math/s_cprojf.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) -diff --git a/math/s_cprojf.c b/math/s_cprojf.c +diff --git glibc-2.17-c758a686/math/s_cprojf.c glibc-2.17-c758a686/math/s_cprojf.c index 6cbc93b..a0f0af9 100644 ---- a/math/s_cprojf.c -+++ b/math/s_cprojf.c +--- glibc-2.17-c758a686/math/s_cprojf.c ++++ glibc-2.17-c758a686/math/s_cprojf.c @@ -1,5 +1,5 @@ /* Compute projection of complex float value to Riemann sphere. - Copyright (C) 1997, 1999, 2010 Free Software Foundation, Inc. diff --git a/SOURCES/glibc-rh731837-23.patch b/SOURCES/glibc-rh731837-23.patch index 9727724..7dd7138 100644 --- a/SOURCES/glibc-rh731837-23.patch +++ b/SOURCES/glibc-rh731837-23.patch @@ -29,10 +29,10 @@ the original commit. create mode 100644 sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan.c create mode 100644 sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnanf.c -diff --git a/sysdeps/powerpc/powerpc32/fpu/s_isnan.S b/sysdeps/powerpc/powerpc32/fpu/s_isnan.S +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/fpu/s_isnan.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/fpu/s_isnan.S index f1ea473..0157805 100644 ---- a/sysdeps/powerpc/powerpc32/fpu/s_isnan.S -+++ b/sysdeps/powerpc/powerpc32/fpu/s_isnan.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/fpu/s_isnan.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/fpu/s_isnan.S @@ -37,9 +37,11 @@ weak_alias (__isnan, isnan) /* It turns out that the 'double' version will also always work for @@ -45,11 +45,11 @@ index f1ea473..0157805 100644 #ifdef NO_LONG_DOUBLE strong_alias (__isnan, __isnanl) -diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile b/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile new file mode 100644 index 0000000..b57ddc9 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile @@ -0,0 +1,7 @@ +ifeq ($(subdir),math) +sysdep_routines += s_isnan-power7 s_isnan-power6x s_isnan-power6 \ @@ -58,11 +58,11 @@ index 0000000..b57ddc9 +libm-sysdep_routines += s_isnan-power7 s_isnan-power6x s_isnan-power6 \ + s_isnan-power5 s_isnan-ppc64 +endif -diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan-power5.S b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan-power5.S +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan-power5.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan-power5.S new file mode 100644 index 0000000..145e24b --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan-power5.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan-power5.S @@ -0,0 +1,33 @@ +/* isnan(). PowerPC64/POWER5 version. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -97,11 +97,11 @@ index 0000000..145e24b +#define __isnan __isnan_power5 + +#include -diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan-power6.S b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan-power6.S +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan-power6.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan-power6.S new file mode 100644 index 0000000..4576eb3 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan-power6.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan-power6.S @@ -0,0 +1,33 @@ +/* isnan(). PowerPC64/POWER6 version. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -136,11 +136,11 @@ index 0000000..4576eb3 +#define __isnan __isnan_power6 + +#include -diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan-power6x.S b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan-power6x.S +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan-power6x.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan-power6x.S new file mode 100644 index 0000000..c2a45e3 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan-power6x.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan-power6x.S @@ -0,0 +1,33 @@ +/* isnan(). PowerPC64/POWER6X version. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -175,11 +175,11 @@ index 0000000..c2a45e3 +#define __isnan __isnan_power6x + +#include -diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan-power7.S b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan-power7.S +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan-power7.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan-power7.S new file mode 100644 index 0000000..05b9fbc --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan-power7.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan-power7.S @@ -0,0 +1,33 @@ +/* isnan(). PowerPC64/POWER7 version. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -214,11 +214,11 @@ index 0000000..05b9fbc +#define __isnan __isnan_power7 + +#include -diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan-ppc64.S b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan-ppc64.S +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan-ppc64.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan-ppc64.S new file mode 100644 index 0000000..cf01d64 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan-ppc64.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan-ppc64.S @@ -0,0 +1,32 @@ +/* isnan(). PowerPC32 default version. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -252,11 +252,11 @@ index 0000000..cf01d64 + .globl __GI___isnan ; .set __GI___isnan,__isnan_ppc64 + +#include -diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan.c new file mode 100644 index 0000000..0de833e --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnan.c @@ -0,0 +1,53 @@ +/* Multiple versions of isnan. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -311,11 +311,11 @@ index 0000000..0de833e +compat_symbol (libc, isnan, isnanl, GLIBC_2_0); +# endif +#endif -diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnanf.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnanf.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnanf.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnanf.c new file mode 100644 index 0000000..b237455 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnanf.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isnanf.c @@ -0,0 +1,40 @@ +/* Multiple versions of isnan. + Copyright (C) 2013-2014 Free Software Foundation, Inc. diff --git a/SOURCES/glibc-rh731837-24.patch b/SOURCES/glibc-rh731837-24.patch index 74ea0cd..fa41712 100644 --- a/SOURCES/glibc-rh731837-24.patch +++ b/SOURCES/glibc-rh731837-24.patch @@ -20,10 +20,10 @@ Date: Fri Dec 13 15:01:54 2013 -0500 create mode 100644 sysdeps/powerpc/powerpc64/fpu/multiarch/s_llround.c create mode 100644 sysdeps/powerpc/powerpc64/fpu/multiarch/s_lround.c -diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile b/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile index b57ddc9..a4636b0 100644 ---- a/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile -+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile @@ -3,5 +3,6 @@ sysdep_routines += s_isnan-power7 s_isnan-power6x s_isnan-power6 \ s_isnan-power5 s_isnan-ppc64 @@ -32,11 +32,11 @@ index b57ddc9..a4636b0 100644 + s_isnan-power5 s_isnan-ppc64 s_llround-power6x \ + s_llround-power5+ s_llround-ppc64 endif -diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llround-power5+.S b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llround-power5+.S +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llround-power5+.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llround-power5+.S new file mode 100644 index 0000000..ba0b65c --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llround-power5+.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llround-power5+.S @@ -0,0 +1,32 @@ +/* llround(). PowerPC64 default version. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -70,11 +70,11 @@ index 0000000..ba0b65c +#define __lround __lround_power5plus + +#include -diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llround-power6x.S b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llround-power6x.S +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llround-power6x.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llround-power6x.S new file mode 100644 index 0000000..bd1c22a --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llround-power6x.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llround-power6x.S @@ -0,0 +1,32 @@ +/* llround(). PowerPC64 default version. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -108,11 +108,11 @@ index 0000000..bd1c22a +#define __lround __lround_power6x + +#include -diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llround-ppc64.S b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llround-ppc64.S +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llround-ppc64.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llround-ppc64.S new file mode 100644 index 0000000..2316da2 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llround-ppc64.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llround-ppc64.S @@ -0,0 +1,28 @@ +/* llround(). PowerPC64 default version. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -142,11 +142,11 @@ index 0000000..2316da2 +#define __lround __lround_ppc64 + +#include -diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llround.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llround.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llround.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llround.c new file mode 100644 index 0000000..a4d1bf3 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llround.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llround.c @@ -0,0 +1,60 @@ +/* Multiple versions of llround. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -208,11 +208,11 @@ index 0000000..a4d1bf3 +#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1) +compat_symbol (libm, __lround, lroundl, GLIBC_2_1); +#endif -diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_lround.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_lround.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_lround.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_lround.c new file mode 100644 index 0000000..0dab544 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_lround.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_lround.c @@ -0,0 +1 @@ +/* __lround is in s_llround.c */ -- diff --git a/SOURCES/glibc-rh731837-25.patch b/SOURCES/glibc-rh731837-25.patch index 6787234..132b67a 100644 --- a/SOURCES/glibc-rh731837-25.patch +++ b/SOURCES/glibc-rh731837-25.patch @@ -22,10 +22,10 @@ Date: Fri Dec 13 15:02:32 2013 -0500 create mode 100644 sysdeps/powerpc/powerpc64/fpu/multiarch/s_ceilf-ppc64.S create mode 100644 sysdeps/powerpc/powerpc64/fpu/multiarch/s_ceilf.c -diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile b/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile index a4636b0..9eb69af 100644 ---- a/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile -+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile @@ -4,5 +4,6 @@ sysdep_routines += s_isnan-power7 s_isnan-power6x s_isnan-power6 \ libm-sysdep_routines += s_isnan-power7 s_isnan-power6x s_isnan-power6 \ @@ -34,11 +34,11 @@ index a4636b0..9eb69af 100644 + s_llround-power5+ s_llround-ppc64 s_ceil-power5+ \ + s_ceil-ppc64 s_ceilf-power5+ s_ceilf-ppc64 endif -diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_ceil-power5+.S b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_ceil-power5+.S +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_ceil-power5+.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_ceil-power5+.S new file mode 100644 index 0000000..cc1316f --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_ceil-power5+.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_ceil-power5+.S @@ -0,0 +1,31 @@ +/* ceil function. PowerPC64/power5+ version. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -71,11 +71,11 @@ index 0000000..cc1316f +#define __ceil __ceil_power5plus + +#include -diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_ceil-ppc64.S b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_ceil-ppc64.S +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_ceil-ppc64.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_ceil-ppc64.S new file mode 100644 index 0000000..52e5a56 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_ceil-ppc64.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_ceil-ppc64.S @@ -0,0 +1,31 @@ +/* ceil function. PowerPC64 default version. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -108,11 +108,11 @@ index 0000000..52e5a56 +#define __ceil __ceil_ppc64 + +#include -diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_ceil.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_ceil.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_ceil.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_ceil.c new file mode 100644 index 0000000..f53df5b --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_ceil.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_ceil.c @@ -0,0 +1,40 @@ +/* Multiple versions of ceil. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -154,11 +154,11 @@ index 0000000..f53df5b +#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0) +compat_symbol (libm, __ceil, ceill, GLIBC_2_0); +#endif -diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_ceilf-power5+.S b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_ceilf-power5+.S +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_ceilf-power5+.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_ceilf-power5+.S new file mode 100644 index 0000000..21261e2 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_ceilf-power5+.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_ceilf-power5+.S @@ -0,0 +1,26 @@ +/* ceilf function. PowerPC64/power5+ version. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -186,11 +186,11 @@ index 0000000..21261e2 +#define __ceilf __ceilf_power5plus + +#include -diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_ceilf-ppc64.S b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_ceilf-ppc64.S +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_ceilf-ppc64.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_ceilf-ppc64.S new file mode 100644 index 0000000..8cd869b --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_ceilf-ppc64.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_ceilf-ppc64.S @@ -0,0 +1,26 @@ +/* ceilf function. PowerPC64 default version. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -218,11 +218,11 @@ index 0000000..8cd869b +#define __ceilf __ceilf_ppc64 + +#include -diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_ceilf.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_ceilf.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_ceilf.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_ceilf.c new file mode 100644 index 0000000..d951990 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_ceilf.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_ceilf.c @@ -0,0 +1,32 @@ +/* Multiple versions of ceilf. + Copyright (C) 2013-2014 Free Software Foundation, Inc. diff --git a/SOURCES/glibc-rh731837-26.patch b/SOURCES/glibc-rh731837-26.patch index 222b6a7..d587fe4 100644 --- a/SOURCES/glibc-rh731837-26.patch +++ b/SOURCES/glibc-rh731837-26.patch @@ -22,10 +22,10 @@ Date: Fri Dec 13 15:04:04 2013 -0500 create mode 100644 sysdeps/powerpc/powerpc64/fpu/multiarch/s_floorf-ppc64.S create mode 100644 sysdeps/powerpc/powerpc64/fpu/multiarch/s_floorf.c -diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile b/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile index 9eb69af..d3d230d 100644 ---- a/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile -+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile @@ -5,5 +5,7 @@ sysdep_routines += s_isnan-power7 s_isnan-power6x s_isnan-power6 \ libm-sysdep_routines += s_isnan-power7 s_isnan-power6x s_isnan-power6 \ s_isnan-power5 s_isnan-ppc64 s_llround-power6x \ @@ -35,11 +35,11 @@ index 9eb69af..d3d230d 100644 + s_floor-power5+ s_floor-ppc64 s_floorf-power5+ \ + s_floorf-ppc64 endif -diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_floor-power5+.S b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_floor-power5+.S +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_floor-power5+.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_floor-power5+.S new file mode 100644 index 0000000..a1550e9 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_floor-power5+.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_floor-power5+.S @@ -0,0 +1,31 @@ +/* floor function. PowerPC64/power5+ version. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -72,11 +72,11 @@ index 0000000..a1550e9 +#define __floor __floor_power5plus + +#include -diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_floor-ppc64.S b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_floor-ppc64.S +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_floor-ppc64.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_floor-ppc64.S new file mode 100644 index 0000000..b5c232c --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_floor-ppc64.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_floor-ppc64.S @@ -0,0 +1,31 @@ +/* floor function. PowerPC64 default version. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -109,11 +109,11 @@ index 0000000..b5c232c +#define __floor __floor_ppc64 + +#include -diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_floor.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_floor.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_floor.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_floor.c new file mode 100644 index 0000000..f43976a --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_floor.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_floor.c @@ -0,0 +1,40 @@ +/* Multiple versions of floor. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -155,11 +155,11 @@ index 0000000..f43976a +#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0) +compat_symbol (libm, __floor, floorl, GLIBC_2_0); +#endif -diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_floorf-power5+.S b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_floorf-power5+.S +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_floorf-power5+.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_floorf-power5+.S new file mode 100644 index 0000000..d371708 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_floorf-power5+.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_floorf-power5+.S @@ -0,0 +1,26 @@ +/* floorf function. PowerPC64/power5+ version. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -187,11 +187,11 @@ index 0000000..d371708 +#define __floorf __floorf_power5plus + +#include -diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_floorf-ppc64.S b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_floorf-ppc64.S +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_floorf-ppc64.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_floorf-ppc64.S new file mode 100644 index 0000000..dc81dea --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_floorf-ppc64.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_floorf-ppc64.S @@ -0,0 +1,27 @@ +/* floorf function. PowerPC64 default version. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -220,11 +220,11 @@ index 0000000..dc81dea +#define __floorf __floorf_ppc64 + +#include -diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_floorf.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_floorf.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_floorf.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_floorf.c new file mode 100644 index 0000000..08fc95e --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_floorf.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_floorf.c @@ -0,0 +1,32 @@ +/* Multiple versions of floorf. + Copyright (C) 2013-2014 Free Software Foundation, Inc. diff --git a/SOURCES/glibc-rh731837-27.patch b/SOURCES/glibc-rh731837-27.patch index 7f10e1d..9457fc5 100644 --- a/SOURCES/glibc-rh731837-27.patch +++ b/SOURCES/glibc-rh731837-27.patch @@ -22,10 +22,10 @@ Date: Fri Dec 13 15:06:01 2013 -0500 create mode 100644 sysdeps/powerpc/powerpc64/fpu/multiarch/s_roundf-ppc64.S create mode 100644 sysdeps/powerpc/powerpc64/fpu/multiarch/s_roundf.c -diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile b/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile index d3d230d..303cd0f 100644 ---- a/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile -+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile @@ -7,5 +7,6 @@ libm-sysdep_routines += s_isnan-power7 s_isnan-power6x s_isnan-power6 \ s_llround-power5+ s_llround-ppc64 s_ceil-power5+ \ s_ceil-ppc64 s_ceilf-power5+ s_ceilf-ppc64 \ @@ -34,11 +34,11 @@ index d3d230d..303cd0f 100644 + s_floorf-ppc64 s_round-power5+ s_round-ppc64 \ + s_roundf-power5+ s_roundf-ppc64 endif -diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_round-power5+.S b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_round-power5+.S +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_round-power5+.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_round-power5+.S new file mode 100644 index 0000000..c2afb4f --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_round-power5+.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_round-power5+.S @@ -0,0 +1,31 @@ +/* round function. PowerPC64/power5+ version. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -71,11 +71,11 @@ index 0000000..c2afb4f +#define __round __round_power5plus + +#include -diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_round-ppc64.S b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_round-ppc64.S +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_round-ppc64.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_round-ppc64.S new file mode 100644 index 0000000..76c96b6 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_round-ppc64.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_round-ppc64.S @@ -0,0 +1,31 @@ +/* round function. PowerPC64 default version. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -108,11 +108,11 @@ index 0000000..76c96b6 +#define __round __round_ppc64 + +#include -diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_round.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_round.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_round.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_round.c new file mode 100644 index 0000000..5818411 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_round.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_round.c @@ -0,0 +1,40 @@ +/* Multiple versions of round. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -154,11 +154,11 @@ index 0000000..5818411 +#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0) +compat_symbol (libm, __round, roundl, GLIBC_2_0); +#endif -diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_roundf-power5+.S b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_roundf-power5+.S +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_roundf-power5+.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_roundf-power5+.S new file mode 100644 index 0000000..8fbef39 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_roundf-power5+.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_roundf-power5+.S @@ -0,0 +1,26 @@ +/* roundf function. PowerPC64/power5+ version. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -186,11 +186,11 @@ index 0000000..8fbef39 +#define __roundf __roundf_power5plus + +#include -diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_roundf-ppc64.S b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_roundf-ppc64.S +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_roundf-ppc64.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_roundf-ppc64.S new file mode 100644 index 0000000..bc51fdd --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_roundf-ppc64.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_roundf-ppc64.S @@ -0,0 +1,26 @@ +/* roundf function. PowerPC64 default version. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -218,11 +218,11 @@ index 0000000..bc51fdd +#define __roundf __roundf_ppc64 + +#include -diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_roundf.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_roundf.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_roundf.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_roundf.c new file mode 100644 index 0000000..34c5bc7 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_roundf.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_roundf.c @@ -0,0 +1,32 @@ +/* Multiple versions of roundf. + Copyright (C) 2013-2014 Free Software Foundation, Inc. diff --git a/SOURCES/glibc-rh731837-28.patch b/SOURCES/glibc-rh731837-28.patch index 362fb16..6510503 100644 --- a/SOURCES/glibc-rh731837-28.patch +++ b/SOURCES/glibc-rh731837-28.patch @@ -22,10 +22,10 @@ Date: Fri Dec 13 15:30:57 2013 -0500 create mode 100644 sysdeps/powerpc/powerpc64/fpu/multiarch/s_truncf-ppc64.S create mode 100644 sysdeps/powerpc/powerpc64/fpu/multiarch/s_truncf.c -diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile b/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile index 303cd0f..4cdb383 100644 ---- a/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile -+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile @@ -8,5 +8,6 @@ libm-sysdep_routines += s_isnan-power7 s_isnan-power6x s_isnan-power6 \ s_ceil-ppc64 s_ceilf-power5+ s_ceilf-ppc64 \ s_floor-power5+ s_floor-ppc64 s_floorf-power5+ \ @@ -34,11 +34,11 @@ index 303cd0f..4cdb383 100644 + s_roundf-power5+ s_roundf-ppc64 s_trunc-power5+ \ + s_trunc-ppc64 s_truncf-power5+ s_truncf-ppc64 endif -diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_trunc-power5+.S b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_trunc-power5+.S +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_trunc-power5+.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_trunc-power5+.S new file mode 100644 index 0000000..ed22bcb --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_trunc-power5+.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_trunc-power5+.S @@ -0,0 +1,31 @@ +/* trunc function. PowerPC64/power5+ version. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -71,11 +71,11 @@ index 0000000..ed22bcb +#define __trunc __trunc_power5plus + +#include -diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_trunc-ppc64.S b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_trunc-ppc64.S +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_trunc-ppc64.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_trunc-ppc64.S new file mode 100644 index 0000000..75b531a --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_trunc-ppc64.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_trunc-ppc64.S @@ -0,0 +1,31 @@ +/* trunc function. PowerPC64 default version. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -108,11 +108,11 @@ index 0000000..75b531a +#define __trunc __trunc_ppc64 + +#include -diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_trunc.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_trunc.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_trunc.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_trunc.c new file mode 100644 index 0000000..4dc22a6 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_trunc.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_trunc.c @@ -0,0 +1,40 @@ +/* Multiple versions of trunc. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -154,11 +154,11 @@ index 0000000..4dc22a6 +#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_0) +compat_symbol (libm, __trunc, truncl, GLIBC_2_0); +#endif -diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_truncf-power5+.S b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_truncf-power5+.S +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_truncf-power5+.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_truncf-power5+.S new file mode 100644 index 0000000..44d858e --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_truncf-power5+.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_truncf-power5+.S @@ -0,0 +1,26 @@ +/* truncf function. PowerPC64/power5+ version. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -186,11 +186,11 @@ index 0000000..44d858e +#define __truncf __truncf_power5plus + +#include -diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_truncf-ppc64.S b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_truncf-ppc64.S +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_truncf-ppc64.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_truncf-ppc64.S new file mode 100644 index 0000000..236797d --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_truncf-ppc64.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_truncf-ppc64.S @@ -0,0 +1,26 @@ +/* truncf function. PowerPC64 default version. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -218,11 +218,11 @@ index 0000000..236797d +#define __truncf __truncf_ppc64 + +#include -diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_truncf.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_truncf.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_truncf.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_truncf.c new file mode 100644 index 0000000..0eef89f --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_truncf.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_truncf.c @@ -0,0 +1,32 @@ +/* Multiple versions of truncf. + Copyright (C) 2013-2014 Free Software Foundation, Inc. diff --git a/SOURCES/glibc-rh731837-29.patch b/SOURCES/glibc-rh731837-29.patch index 0daa911..2edaeba 100644 --- a/SOURCES/glibc-rh731837-29.patch +++ b/SOURCES/glibc-rh731837-29.patch @@ -18,10 +18,10 @@ Date: Fri Dec 13 15:32:58 2013 -0500 create mode 100644 sysdeps/powerpc/powerpc64/fpu/multiarch/s_copysign.c create mode 100644 sysdeps/powerpc/powerpc64/fpu/multiarch/s_copysignf.c -diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile b/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile index 4cdb383..3af4ac3 100644 ---- a/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile -+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile @@ -1,6 +1,7 @@ ifeq ($(subdir),math) sysdep_routines += s_isnan-power7 s_isnan-power6x s_isnan-power6 \ @@ -39,11 +39,11 @@ index 4cdb383..3af4ac3 100644 + s_trunc-ppc64 s_truncf-power5+ s_truncf-ppc64 \ + s_copysign-power6 s_copysign-ppc64 endif -diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_copysign-power6.S b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_copysign-power6.S +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_copysign-power6.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_copysign-power6.S new file mode 100644 index 0000000..4fa34a6 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_copysign-power6.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_copysign-power6.S @@ -0,0 +1,33 @@ +/* copysign(). PowerPC64 default version. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -78,11 +78,11 @@ index 0000000..4fa34a6 +#define __copysign __copysign_power6 + +#include -diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_copysign-ppc64.S b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_copysign-ppc64.S +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_copysign-ppc64.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_copysign-ppc64.S new file mode 100644 index 0000000..a5cdfc2 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_copysign-ppc64.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_copysign-ppc64.S @@ -0,0 +1,35 @@ +/* copysign(). PowerPC64 default version. + Copyright (C) 2010-2014 Free Software Foundation, Inc. @@ -119,11 +119,11 @@ index 0000000..a5cdfc2 + strong_alias (__copysign_ppc64, __GI___copysign) + +#include -diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_copysign.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_copysign.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_copysign.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_copysign.c new file mode 100644 index 0000000..f3e6b3a --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_copysign.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_copysign.c @@ -0,0 +1,51 @@ +/* Multiple versions of copysign. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -176,11 +176,11 @@ index 0000000..f3e6b3a +#elif LONG_DOUBLE_COMPAT(libc, GLIBC_2_0) +compat_symbol (libc, __copysign, copysignl, GLIBC_2_0); +#endif -diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_copysignf.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_copysignf.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_copysignf.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_copysignf.c new file mode 100644 index 0000000..55cc272 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_copysignf.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_copysignf.c @@ -0,0 +1,32 @@ +/* Multiple versions of copysignf. + Copyright (C) 2013-2014 Free Software Foundation, Inc. diff --git a/SOURCES/glibc-rh731837-30.patch b/SOURCES/glibc-rh731837-30.patch index 8fbb4bd..49d8f6f 100644 --- a/SOURCES/glibc-rh731837-30.patch +++ b/SOURCES/glibc-rh731837-30.patch @@ -18,10 +18,10 @@ Date: Fri Dec 13 15:33:54 2013 -0500 create mode 100644 sysdeps/powerpc/powerpc64/fpu/multiarch/s_llrint.c create mode 100644 sysdeps/powerpc/powerpc64/fpu/multiarch/s_lrint.c -diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile b/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile index 3af4ac3..10d0ac9 100644 ---- a/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile -+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile @@ -11,5 +11,6 @@ libm-sysdep_routines += s_isnan-power7 s_isnan-power6x s_isnan-power6 \ s_floorf-ppc64 s_round-power5+ s_round-ppc64 \ s_roundf-power5+ s_roundf-ppc64 s_trunc-power5+ \ @@ -30,11 +30,11 @@ index 3af4ac3..10d0ac9 100644 + s_copysign-power6 s_copysign-ppc64 s_llrint-power6x \ + s_llrint-ppc64 endif -diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llrint-power6x.S b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llrint-power6x.S +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llrint-power6x.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llrint-power6x.S new file mode 100644 index 0000000..8cd39c6 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llrint-power6x.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llrint-power6x.S @@ -0,0 +1,31 @@ +/* Round double to long int. PowerPC64/POWER6X default version. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -67,11 +67,11 @@ index 0000000..8cd39c6 +#define __llrint __llrint_power6x + +#include -diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llrint-ppc64.S b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llrint-ppc64.S +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llrint-ppc64.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llrint-ppc64.S new file mode 100644 index 0000000..754d28f --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llrint-ppc64.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llrint-ppc64.S @@ -0,0 +1,31 @@ +/* Round double to long int. PowerPC32 default version. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -104,11 +104,11 @@ index 0000000..754d28f +#define __llrint __llrint_ppc64 + +#include -diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llrint.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llrint.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llrint.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llrint.c new file mode 100644 index 0000000..5818b53 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llrint.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_llrint.c @@ -0,0 +1,57 @@ +/* Multiple versions of llrint. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -167,11 +167,11 @@ index 0000000..5818b53 +#if LONG_DOUBLE_COMPAT(libm, GLIBC_2_1) +compat_symbol (libm, __lrint, lrintl, GLIBC_2_1); +#endif -diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_lrint.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_lrint.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_lrint.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_lrint.c new file mode 100644 index 0000000..d092862 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_lrint.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_lrint.c @@ -0,0 +1 @@ + /* __lrint is in s_llrint.c */ -- diff --git a/SOURCES/glibc-rh731837-31.patch b/SOURCES/glibc-rh731837-31.patch index f408bec..6c2c4fa 100644 --- a/SOURCES/glibc-rh731837-31.patch +++ b/SOURCES/glibc-rh731837-31.patch @@ -26,10 +26,10 @@ sysdeps/ieee754/flt-32/s_finitef.c create mode 100644 sysdeps/powerpc/powerpc64/fpu/multiarch/s_finitef-ppc64.c create mode 100644 sysdeps/powerpc/powerpc64/fpu/multiarch/s_finitef.c -diff --git a/sysdeps/ieee754/dbl-64/s_finite.c b/sysdeps/ieee754/dbl-64/s_finite.c +diff --git glibc-2.17-c758a686/sysdeps/ieee754/dbl-64/s_finite.c glibc-2.17-c758a686/sysdeps/ieee754/dbl-64/s_finite.c index 47dad5d..49986bb 100644 ---- a/sysdeps/ieee754/dbl-64/s_finite.c -+++ b/sysdeps/ieee754/dbl-64/s_finite.c +--- glibc-2.17-c758a686/sysdeps/ieee754/dbl-64/s_finite.c ++++ glibc-2.17-c758a686/sysdeps/ieee754/dbl-64/s_finite.c @@ -23,11 +23,16 @@ static char rcsid[] = "$NetBSD: s_finite.c,v 1.8 1995/05/10 20:47:17 jtc Exp $"; #include @@ -51,10 +51,10 @@ index 47dad5d..49986bb 100644 } hidden_def (__finite) weak_alias (__finite, finite) -diff --git a/sysdeps/ieee754/flt-32/s_finitef.c b/sysdeps/ieee754/flt-32/s_finitef.c +diff --git glibc-2.17-c758a686/sysdeps/ieee754/flt-32/s_finitef.c glibc-2.17-c758a686/sysdeps/ieee754/flt-32/s_finitef.c index dfdf4ad..4ea270a 100644 ---- a/sysdeps/ieee754/flt-32/s_finitef.c -+++ b/sysdeps/ieee754/flt-32/s_finitef.c +--- glibc-2.17-c758a686/sysdeps/ieee754/flt-32/s_finitef.c ++++ glibc-2.17-c758a686/sysdeps/ieee754/flt-32/s_finitef.c @@ -26,7 +26,12 @@ static char rcsid[] = "$NetBSD: s_finitef.c,v 1.4 1995/05/10 20:47:18 jtc Exp $" #include @@ -69,10 +69,10 @@ index dfdf4ad..4ea270a 100644 { int32_t ix; GET_FLOAT_WORD(ix,x); -diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile b/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile index 10d0ac9..1c23ddc 100644 ---- a/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile -+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile @@ -1,7 +1,8 @@ ifeq ($(subdir),math) sysdep_routines += s_isnan-power7 s_isnan-power6x s_isnan-power6 \ @@ -91,11 +91,11 @@ index 10d0ac9..1c23ddc 100644 + s_llrint-ppc64 s_finite-power7 s_finite-ppc64 \ + s_finitef-ppc64 endif -diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finite-power7.S b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finite-power7.S +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finite-power7.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finite-power7.S new file mode 100644 index 0000000..ac2244b --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finite-power7.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finite-power7.S @@ -0,0 +1,33 @@ +/* isnan(). PowerPC64/POWER7 version. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -130,11 +130,11 @@ index 0000000..ac2244b +#define __finite __finite_power7 + +#include -diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finite-ppc64.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finite-ppc64.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finite-ppc64.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finite-ppc64.c new file mode 100644 index 0000000..1922e2b --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finite-ppc64.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finite-ppc64.c @@ -0,0 +1,34 @@ +/* finite(). PowerPC64 default version. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -170,11 +170,11 @@ index 0000000..1922e2b +#endif + +#include -diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finite.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finite.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finite.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finite.c new file mode 100644 index 0000000..f79a93e --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finite.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finite.c @@ -0,0 +1,51 @@ +/* Multiple versions of finite. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -227,11 +227,11 @@ index 0000000..f79a93e +compat_symbol (libc, finite, finitel, GLIBC_2_0); +# endif +#endif -diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finitef-ppc64.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finitef-ppc64.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finitef-ppc64.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finitef-ppc64.c new file mode 100644 index 0000000..63dd003 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finitef-ppc64.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finitef-ppc64.c @@ -0,0 +1,32 @@ +/* finitef(). PowerPC64 default version. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -265,11 +265,11 @@ index 0000000..63dd003 +#endif + +#include -diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finitef.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finitef.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finitef.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finitef.c new file mode 100644 index 0000000..a7243b5 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finitef.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_finitef.c @@ -0,0 +1,32 @@ +/* Multiple versions of finitef. + Copyright (C) 2013-2014 Free Software Foundation, Inc. diff --git a/SOURCES/glibc-rh731837-32.patch b/SOURCES/glibc-rh731837-32.patch index 9cd2ce0..01ef0c8 100644 --- a/SOURCES/glibc-rh731837-32.patch +++ b/SOURCES/glibc-rh731837-32.patch @@ -20,10 +20,10 @@ Date: Fri Dec 13 15:35:44 2013 -0500 create mode 100644 sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinff-ppc64.c create mode 100644 sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinff.c -diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile b/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile index 1c23ddc..64dd85f 100644 ---- a/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile -+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile @@ -2,7 +2,8 @@ ifeq ($(subdir),math) sysdep_routines += s_isnan-power7 s_isnan-power6x s_isnan-power6 \ s_isnan-power5 s_isnan-ppc64 s_copysign-power6 \ @@ -42,11 +42,11 @@ index 1c23ddc..64dd85f 100644 + s_finitef-ppc64 s_isinff-ppc64 s_isinf-power7 \ + s_isinf-ppc64 endif -diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinf-power7.S b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinf-power7.S +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinf-power7.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinf-power7.S new file mode 100644 index 0000000..80a682a --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinf-power7.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinf-power7.S @@ -0,0 +1,33 @@ +/* isinf(). PowerPC64/POWER7 version. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -81,11 +81,11 @@ index 0000000..80a682a +#define __isinf __isinf_power7 + +#include -diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinf-ppc64.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinf-ppc64.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinf-ppc64.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinf-ppc64.c new file mode 100644 index 0000000..28c5602 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinf-ppc64.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinf-ppc64.c @@ -0,0 +1,33 @@ +/* isinf(). PowerPC64 default version. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -120,11 +120,11 @@ index 0000000..28c5602 +#endif + +#include -diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinf.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinf.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinf.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinf.c new file mode 100644 index 0000000..1ee230b --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinf.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinf.c @@ -0,0 +1,44 @@ +/* Multiple versions of isinf. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -170,11 +170,11 @@ index 0000000..1ee230b +compat_symbol (libc, isinf, isinfl, GLIBC_2_0); +# endif +#endif -diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinff-ppc64.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinff-ppc64.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinff-ppc64.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinff-ppc64.c new file mode 100644 index 0000000..c2559d7 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinff-ppc64.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinff-ppc64.c @@ -0,0 +1,31 @@ +/* isinff(). PowerPC64 default version. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -207,11 +207,11 @@ index 0000000..c2559d7 +#endif + +#include -diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinff.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinff.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinff.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinff.c new file mode 100644 index 0000000..1336feb --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinff.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_isinff.c @@ -0,0 +1,33 @@ +/* Multiple versions of isinf. + Copyright (C) 2013-2014 Free Software Foundation, Inc. diff --git a/SOURCES/glibc-rh731837-33.patch b/SOURCES/glibc-rh731837-33.patch index 169c5fd..927bda1 100644 --- a/SOURCES/glibc-rh731837-33.patch +++ b/SOURCES/glibc-rh731837-33.patch @@ -50,10 +50,10 @@ sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_logbl-power7.c create mode 100644 sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbl-ppc64.c create mode 100644 sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbl.c -diff --git a/sysdeps/ieee754/ldbl-128ibm/s_logbl.c b/sysdeps/ieee754/ldbl-128ibm/s_logbl.c +diff --git glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_logbl.c glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_logbl.c index 6cbfcfa..28a50de 100644 ---- a/sysdeps/ieee754/ldbl-128ibm/s_logbl.c -+++ b/sysdeps/ieee754/ldbl-128ibm/s_logbl.c +--- glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_logbl.c ++++ glibc-2.17-c758a686/sysdeps/ieee754/ldbl-128ibm/s_logbl.c @@ -44,4 +44,6 @@ __logbl (long double x) return (long double) (rhx - 1023); } @@ -61,11 +61,11 @@ index 6cbfcfa..28a50de 100644 +#ifndef __logbl long_double_symbol (libm, __logbl, logbl); +#endif -diff --git a/sysdeps/powerpc/power7/fpu/s_logb.c b/sysdeps/powerpc/power7/fpu/s_logb.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/power7/fpu/s_logb.c glibc-2.17-c758a686/sysdeps/powerpc/power7/fpu/s_logb.c new file mode 100644 index 0000000..87176c3 --- /dev/null -+++ b/sysdeps/powerpc/power7/fpu/s_logb.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/power7/fpu/s_logb.c @@ -0,0 +1,78 @@ +/* logb(). PowerPC/POWER7 version. + Copyright (C) 2012 Free Software Foundation, Inc. @@ -145,11 +145,11 @@ index 0000000..87176c3 +#if LONG_DOUBLE_COMPAT (libm, GLIBC_2_0) +compat_symbol (libm, logb, logbl, GLIBC_2_0); +#endif -diff --git a/sysdeps/powerpc/power7/fpu/s_logbf.c b/sysdeps/powerpc/power7/fpu/s_logbf.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/power7/fpu/s_logbf.c glibc-2.17-c758a686/sysdeps/powerpc/power7/fpu/s_logbf.c new file mode 100644 index 0000000..aa8499a --- /dev/null -+++ b/sysdeps/powerpc/power7/fpu/s_logbf.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/power7/fpu/s_logbf.c @@ -0,0 +1,60 @@ +/* logbf(). PowerPC/POWER7 version. + Copyright (C) 2012 Free Software Foundation, Inc. @@ -211,11 +211,11 @@ index 0000000..aa8499a + return ret == -0.0 ? 0.0 : ret; +} +weak_alias (__logbf, logbf) -diff --git a/sysdeps/powerpc/power7/fpu/s_logbl.c b/sysdeps/powerpc/power7/fpu/s_logbl.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/power7/fpu/s_logbl.c glibc-2.17-c758a686/sysdeps/powerpc/power7/fpu/s_logbl.c new file mode 100644 index 0000000..e1ec089 --- /dev/null -+++ b/sysdeps/powerpc/power7/fpu/s_logbl.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/power7/fpu/s_logbl.c @@ -0,0 +1,72 @@ +/* logbl(). PowerPC/POWER7 version. + Copyright (C) 2012 Free Software Foundation, Inc. @@ -289,11 +289,11 @@ index 0000000..e1ec089 +#ifndef __logbl +long_double_symbol (libm, __logbl, logbl); +#endif -diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_logb-power7.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_logb-power7.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_logb-power7.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_logb-power7.c new file mode 100644 index 0000000..3280566 --- /dev/null -+++ b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_logb-power7.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_logb-power7.c @@ -0,0 +1,31 @@ +/* logb(). PowerPC32/POWER7 version. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -326,11 +326,11 @@ index 0000000..3280566 +#define __logb __logb_power7 + +#include -diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_logbf-power7.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_logbf-power7.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_logbf-power7.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_logbf-power7.c new file mode 100644 index 0000000..6531af0 --- /dev/null -+++ b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_logbf-power7.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_logbf-power7.c @@ -0,0 +1,26 @@ +/* logbf(). PowerPC32/POWER7 version. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -358,11 +358,11 @@ index 0000000..6531af0 +#define __logbf __logbf_power7 + +#include -diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_logbl-power7.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_logbl-power7.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_logbl-power7.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_logbl-power7.c new file mode 100644 index 0000000..7c5ad47 --- /dev/null -+++ b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_logbl-power7.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_logbl-power7.c @@ -0,0 +1,21 @@ +/* logbl(). PowerPC32/POWER7 version. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -385,10 +385,10 @@ index 0000000..7c5ad47 +#define __logbl __logbl_power7 + +#include -diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile b/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile index 64dd85f..87aabca 100644 ---- a/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile -+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile @@ -16,5 +16,11 @@ libm-sysdep_routines += s_isnan-power7 s_isnan-power6x s_isnan-power6 \ s_copysign-power6 s_copysign-ppc64 s_llrint-power6x \ s_llrint-ppc64 s_finite-power7 s_finite-ppc64 \ @@ -402,11 +402,11 @@ index 64dd85f..87aabca 100644 +CFLAGS-s_logbl-power7.c = -mcpu=power7 +CFLAGS-s_logb-power7.c = -mcpu=power7 endif -diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logb-power7.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logb-power7.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logb-power7.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logb-power7.c new file mode 100644 index 0000000..049f2c1 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logb-power7.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logb-power7.c @@ -0,0 +1,19 @@ +/* logb(). PowerPC64/POWER7 version. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -427,11 +427,11 @@ index 0000000..049f2c1 + . */ + +#include -diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logb-ppc64.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logb-ppc64.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logb-ppc64.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logb-ppc64.c new file mode 100644 index 0000000..41d1d9b --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logb-ppc64.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logb-ppc64.c @@ -0,0 +1,28 @@ +/* logb(). PowerPC32/POWER7 version. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -461,11 +461,11 @@ index 0000000..41d1d9b +#define __logb __logb_ppc64 + +#include -diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logb.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logb.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logb.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logb.c new file mode 100644 index 0000000..e14efa7 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logb.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logb.c @@ -0,0 +1,41 @@ +/* Multiple versions of logb. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -508,11 +508,11 @@ index 0000000..e14efa7 +#if LONG_DOUBLE_COMPAT (libm, GLIBC_2_0) +compat_symbol (libm, logb, logbl, GLIBC_2_0); +#endif -diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbf-power7.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbf-power7.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbf-power7.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbf-power7.c new file mode 100644 index 0000000..5e4e4fc --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbf-power7.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbf-power7.c @@ -0,0 +1,19 @@ +/* logb(). PowerPC64/POWER7 version. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -533,11 +533,11 @@ index 0000000..5e4e4fc + . */ + +#include -diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbf-ppc64.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbf-ppc64.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbf-ppc64.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbf-ppc64.c new file mode 100644 index 0000000..08674a6 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbf-ppc64.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbf-ppc64.c @@ -0,0 +1,26 @@ +/* logbf(). PowerPC64 default implementation. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -565,11 +565,11 @@ index 0000000..08674a6 +#define __logbf __logbf_ppc64 + +#include -diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbf.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbf.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbf.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbf.c new file mode 100644 index 0000000..01f9ecb --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbf.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbf.c @@ -0,0 +1,32 @@ +/* Multiple versions of logbf. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -603,11 +603,11 @@ index 0000000..01f9ecb + : __logbf_ppc64); + +weak_alias (__logbf, logbf) -diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbl-power7.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbl-power7.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbl-power7.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbl-power7.c new file mode 100644 index 0000000..258d502 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbl-power7.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbl-power7.c @@ -0,0 +1,19 @@ +/* logb(). PowerPC64/POWER7 version. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -628,11 +628,11 @@ index 0000000..258d502 + . */ + +#include -diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbl-ppc64.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbl-ppc64.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbl-ppc64.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbl-ppc64.c new file mode 100644 index 0000000..47d4153 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbl-ppc64.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbl-ppc64.c @@ -0,0 +1,21 @@ +/* logbl(). PowerPC64/POWER7 version. + Copyright (C) 2012-2014 Free Software Foundation, Inc. @@ -655,11 +655,11 @@ index 0000000..47d4153 +#define __logbl __logbl_ppc64 + +#include -diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbl.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbl.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbl.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbl.c new file mode 100644 index 0000000..cb0b0c5 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbl.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_logbl.c @@ -0,0 +1,32 @@ +/* Multiple versions of logbl. + Copyright (C) 2013-2014 Free Software Foundation, Inc. diff --git a/SOURCES/glibc-rh731837-33A.patch b/SOURCES/glibc-rh731837-33A.patch index 5856b9f..e10da65 100644 --- a/SOURCES/glibc-rh731837-33A.patch +++ b/SOURCES/glibc-rh731837-33A.patch @@ -1,5 +1,5 @@ ---- ./sysdeps/powerpc/power7/fpu/s_logbl.c 2014-09-10 20:52:01.813168232 -0400 -+++ /home/carlos/src/glibc/./sysdeps/powerpc/power7/fpu/s_logbl.c 2014-01-02 13:16:41.441557403 -0500 +--- glibc-2.17-c758a686/sysdeps/powerpc/power7/fpu/s_logbl.c 2014-09-10 20:52:01.813168232 -0400 ++++ glibc-2.17-c758a686/sysdeps/powerpc/power7/fpu/s_logbl.c 2014-01-02 13:16:41.441557403 -0500 @@ -1,5 +1,5 @@ /* logbl(). PowerPC/POWER7 version. - Copyright (C) 2012 Free Software Foundation, Inc. diff --git a/SOURCES/glibc-rh731837-34.patch b/SOURCES/glibc-rh731837-34.patch index 49a7aa4..6948829 100644 --- a/SOURCES/glibc-rh731837-34.patch +++ b/SOURCES/glibc-rh731837-34.patch @@ -30,11 +30,11 @@ sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_modff-power5+.c create mode 100644 sysdeps/powerpc/powerpc64/fpu/multiarch/s_modff-ppc64.c create mode 100644 sysdeps/powerpc/powerpc64/fpu/multiarch/s_modff.c -diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_modf-power5+.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_modf-power5+.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_modf-power5+.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_modf-power5+.c new file mode 100644 index 0000000..d7ad0b7 --- /dev/null -+++ b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_modf-power5+.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_modf-power5+.c @@ -0,0 +1,31 @@ +/* PowerPC/POWER5+ implementation for modf. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -67,11 +67,11 @@ index 0000000..d7ad0b7 +#define __modf __modf_power5plus + +#include -diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_modff-power5+.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_modff-power5+.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_modff-power5+.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_modff-power5+.c new file mode 100644 index 0000000..4021b52 --- /dev/null -+++ b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_modff-power5+.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_modff-power5+.c @@ -0,0 +1,27 @@ +/* PowerPC/POWER5+ implementation for modff. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -100,10 +100,10 @@ index 0000000..4021b52 +#define __modff __modff_power5plus + +#include -diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile b/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile index 87aabca..e152bf5 100644 ---- a/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile -+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile @@ -3,7 +3,8 @@ sysdep_routines += s_isnan-power7 s_isnan-power6x s_isnan-power6 \ s_isnan-power5 s_isnan-ppc64 s_copysign-power6 \ s_copysign-ppc64 s_finite-power7 s_finite-ppc64 \ @@ -128,11 +128,11 @@ index 87aabca..e152bf5 100644 +CFLAGS-s_modf-power5+.c = -mcpu=power5+ +CFLAGS-s_modff-power5+.c = -mcpu=power5+ endif -diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_modf-power5+.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_modf-power5+.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_modf-power5+.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_modf-power5+.c new file mode 100644 index 0000000..bda9920 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_modf-power5+.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_modf-power5+.c @@ -0,0 +1,19 @@ +/* PowerPC/POWER5+ implementation for modf. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -153,11 +153,11 @@ index 0000000..bda9920 + . */ + +#include -diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_modf-ppc64.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_modf-ppc64.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_modf-ppc64.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_modf-ppc64.c new file mode 100644 index 0000000..90e7599 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_modf-ppc64.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_modf-ppc64.c @@ -0,0 +1,29 @@ +/* PowerPC64 default implementation for modf. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -188,11 +188,11 @@ index 0000000..90e7599 +#define __modf __modf_ppc64 + +#include -diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_modf.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_modf.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_modf.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_modf.c new file mode 100644 index 0000000..f416fa9 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_modf.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_modf.c @@ -0,0 +1,44 @@ +/* Multiple versions of modf. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -238,11 +238,11 @@ index 0000000..f416fa9 +#elif LONG_DOUBLE_COMPAT(libc, GLIBC_2_0) +compat_symbol (libc, __modf, modfl, GLIBC_2_0); +#endif -diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_modff-power5+.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_modff-power5+.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_modff-power5+.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_modff-power5+.c new file mode 100644 index 0000000..70a536d --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_modff-power5+.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_modff-power5+.c @@ -0,0 +1,19 @@ +/* PowerPC/POWER5+ implementation for modff. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -263,11 +263,11 @@ index 0000000..70a536d + . */ + +#include -diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_modff-ppc64.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_modff-ppc64.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_modff-ppc64.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_modff-ppc64.c new file mode 100644 index 0000000..89d8f63 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_modff-ppc64.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_modff-ppc64.c @@ -0,0 +1,26 @@ +/* PowerPC64 default implementation for modff. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -295,11 +295,11 @@ index 0000000..89d8f63 +#define __modff __modff_ppc64 + +#include -diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/s_modff.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_modff.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_modff.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_modff.c new file mode 100644 index 0000000..137b7aa --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/s_modff.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/s_modff.c @@ -0,0 +1,30 @@ +/* Multiple versions of modff. + Copyright (C) 2013-2014 Free Software Foundation, Inc. diff --git a/SOURCES/glibc-rh731837-35.patch b/SOURCES/glibc-rh731837-35.patch index f79df4a..9b411d7 100644 --- a/SOURCES/glibc-rh731837-35.patch +++ b/SOURCES/glibc-rh731837-35.patch @@ -30,11 +30,11 @@ sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypotf-power7.c create mode 100644 sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypotf-ppc64.c create mode 100644 sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypotf.c -diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypot-power7.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypot-power7.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypot-power7.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypot-power7.c new file mode 100644 index 0000000..967b923 --- /dev/null -+++ b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypot-power7.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypot-power7.c @@ -0,0 +1,26 @@ +/* __ieee_hypot() POWER7 version. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -62,11 +62,11 @@ index 0000000..967b923 +#define __ieee754_hypot __ieee754_hypot_power7 + +#include -diff --git a/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypotf-power7.c b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypotf-power7.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypotf-power7.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypotf-power7.c new file mode 100644 index 0000000..d1da9f2 --- /dev/null -+++ b/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypotf-power7.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/power4/fpu/multiarch/e_hypotf-power7.c @@ -0,0 +1,26 @@ +/* __ieee754_hypot POWER7 version. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -94,10 +94,10 @@ index 0000000..d1da9f2 +#define __ieee754_hypotf __ieee754_hypotf_power7 + +#include -diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile b/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile index e152bf5..1e04f21 100644 ---- a/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile -+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/Makefile @@ -20,11 +20,14 @@ libm-sysdep_routines += s_isnan-power7 s_isnan-power6x s_isnan-power6 \ s_isinf-ppc64 s_logb-power7 s_logbf-power7 \ s_logbl-power7 s_logb-ppc64 s_logbf-ppc64 \ @@ -114,11 +114,11 @@ index e152bf5..1e04f21 100644 +CFLAGS-e_hypot-power7.c = -mcpu=power7 +CFLAGS-e_hypotf-power7.c = -mcpu=power7 endif -diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypot-power7.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypot-power7.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypot-power7.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypot-power7.c new file mode 100644 index 0000000..b153753 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypot-power7.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypot-power7.c @@ -0,0 +1,19 @@ +/* __ieee_hypot() POWER7 version. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -139,11 +139,11 @@ index 0000000..b153753 + . */ + +#include -diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypot-ppc64.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypot-ppc64.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypot-ppc64.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypot-ppc64.c new file mode 100644 index 0000000..c418ae7 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypot-ppc64.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypot-ppc64.c @@ -0,0 +1,26 @@ +/* __ieee_hypot() PowerPC64 version. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -171,11 +171,11 @@ index 0000000..c418ae7 +#define __ieee754_hypot __ieee754_hypot_ppc64 + +#include -diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypot.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypot.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypot.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypot.c new file mode 100644 index 0000000..941b293 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypot.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypot.c @@ -0,0 +1,32 @@ +/* Multiple versions of ieee754_hypot. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -209,11 +209,11 @@ index 0000000..941b293 + : __ieee754_hypot_ppc64); + +strong_alias (__ieee754_hypot, __hypot_finite) -diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypotf-power7.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypotf-power7.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypotf-power7.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypotf-power7.c new file mode 100644 index 0000000..2d67ee9 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypotf-power7.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypotf-power7.c @@ -0,0 +1,19 @@ +/* __ieee_hypotf() POWER7 version. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -234,11 +234,11 @@ index 0000000..2d67ee9 + . */ + +#include -diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypotf-ppc64.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypotf-ppc64.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypotf-ppc64.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypotf-ppc64.c new file mode 100644 index 0000000..8335e19 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypotf-ppc64.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypotf-ppc64.c @@ -0,0 +1,26 @@ +/* __ieee_hypot() PowerPC64 version. + Copyright (C) 2013-2014 Free Software Foundation, Inc. @@ -266,11 +266,11 @@ index 0000000..8335e19 +#define __ieee754_hypotf __ieee754_hypotf_ppc64 + +#include -diff --git a/sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypotf.c b/sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypotf.c +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypotf.c glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypotf.c new file mode 100644 index 0000000..3c418d3 --- /dev/null -+++ b/sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypotf.c ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/fpu/multiarch/e_hypotf.c @@ -0,0 +1,32 @@ +/* Multiple versions of ieee754_hypot. + Copyright (C) 2013-2014 Free Software Foundation, Inc. diff --git a/SOURCES/glibc-rh731837-36.patch b/SOURCES/glibc-rh731837-36.patch index e691145..bb49f73 100644 --- a/SOURCES/glibc-rh731837-36.patch +++ b/SOURCES/glibc-rh731837-36.patch @@ -2,10 +2,10 @@ # Add all of the LOCALENTRY points for all of the functions. # This is required for LE to materialize the TOC. # -diff --git a/sysdeps/powerpc/powerpc64/multiarch/memchr-power7.S b/sysdeps/powerpc/powerpc64/multiarch/memchr-power7.S +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memchr-power7.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memchr-power7.S index b1b4ec7..4a8d459 100644 ---- a/sysdeps/powerpc/powerpc64/multiarch/memchr-power7.S -+++ b/sysdeps/powerpc/powerpc64/multiarch/memchr-power7.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memchr-power7.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memchr-power7.S @@ -24,7 +24,8 @@ ENTRY_2(__memchr_power7) \ .align ALIGNARG(2); \ @@ -16,10 +16,10 @@ index b1b4ec7..4a8d459 100644 #undef END #define END(name) \ -diff --git a/sysdeps/powerpc/powerpc64/multiarch/memcmp-power4.S b/sysdeps/powerpc/powerpc64/multiarch/memcmp-power4.S +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memcmp-power4.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memcmp-power4.S index 12db42c..9903276 100644 ---- a/sysdeps/powerpc/powerpc64/multiarch/memcmp-power4.S -+++ b/sysdeps/powerpc/powerpc64/multiarch/memcmp-power4.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memcmp-power4.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memcmp-power4.S @@ -25,7 +25,8 @@ .align ALIGNARG(alignt); \ EALIGN_W_##words; \ @@ -30,10 +30,10 @@ index 12db42c..9903276 100644 #undef END #define END(name) \ -diff --git a/sysdeps/powerpc/powerpc64/multiarch/memcmp-power7.S b/sysdeps/powerpc/powerpc64/multiarch/memcmp-power7.S +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memcmp-power7.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memcmp-power7.S index 4898a88..ee31ca6 100644 ---- a/sysdeps/powerpc/powerpc64/multiarch/memcmp-power7.S -+++ b/sysdeps/powerpc/powerpc64/multiarch/memcmp-power7.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memcmp-power7.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memcmp-power7.S @@ -25,7 +25,8 @@ .align ALIGNARG(alignt); \ EALIGN_W_##words; \ @@ -44,10 +44,10 @@ index 4898a88..ee31ca6 100644 #undef END #define END(name) \ -diff --git a/sysdeps/powerpc/powerpc64/multiarch/memcpy-a2.S b/sysdeps/powerpc/powerpc64/multiarch/memcpy-a2.S +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memcpy-a2.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memcpy-a2.S index 2d5bfa9..decbcff 100644 ---- a/sysdeps/powerpc/powerpc64/multiarch/memcpy-a2.S -+++ b/sysdeps/powerpc/powerpc64/multiarch/memcpy-a2.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memcpy-a2.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memcpy-a2.S @@ -25,7 +25,8 @@ .align ALIGNARG(alignt); \ EALIGN_W_##words; \ @@ -58,10 +58,10 @@ index 2d5bfa9..decbcff 100644 #undef END_GEN_TB #define END_GEN_TB(name, mask) \ -diff --git a/sysdeps/powerpc/powerpc64/multiarch/memcpy-cell.S b/sysdeps/powerpc/powerpc64/multiarch/memcpy-cell.S +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memcpy-cell.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memcpy-cell.S index 92c06be..c3c2f7f 100644 ---- a/sysdeps/powerpc/powerpc64/multiarch/memcpy-cell.S -+++ b/sysdeps/powerpc/powerpc64/multiarch/memcpy-cell.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memcpy-cell.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memcpy-cell.S @@ -25,7 +25,8 @@ .align ALIGNARG(alignt); \ EALIGN_W_##words; \ @@ -72,10 +72,10 @@ index 92c06be..c3c2f7f 100644 #undef END_GEN_TB #define END_GEN_TB(name, mask) \ -diff --git a/sysdeps/powerpc/powerpc64/multiarch/memcpy-power4.S b/sysdeps/powerpc/powerpc64/multiarch/memcpy-power4.S +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memcpy-power4.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memcpy-power4.S index eb01d67..02ba9b1 100644 ---- a/sysdeps/powerpc/powerpc64/multiarch/memcpy-power4.S -+++ b/sysdeps/powerpc/powerpc64/multiarch/memcpy-power4.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memcpy-power4.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memcpy-power4.S @@ -25,7 +25,8 @@ .align ALIGNARG(alignt); \ EALIGN_W_##words; \ @@ -86,10 +86,10 @@ index eb01d67..02ba9b1 100644 #undef END_GEN_TB #define END_GEN_TB(name, mask) \ -diff --git a/sysdeps/powerpc/powerpc64/multiarch/memcpy-power6.S b/sysdeps/powerpc/powerpc64/multiarch/memcpy-power6.S +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memcpy-power6.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memcpy-power6.S index 13b514d..58e8113 100644 ---- a/sysdeps/powerpc/powerpc64/multiarch/memcpy-power6.S -+++ b/sysdeps/powerpc/powerpc64/multiarch/memcpy-power6.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memcpy-power6.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memcpy-power6.S @@ -25,7 +25,8 @@ .align ALIGNARG(alignt); \ EALIGN_W_##words; \ @@ -100,10 +100,10 @@ index 13b514d..58e8113 100644 #undef END_GEN_TB #define END_GEN_TB(name, mask) \ -diff --git a/sysdeps/powerpc/powerpc64/multiarch/memcpy-power7.S b/sysdeps/powerpc/powerpc64/multiarch/memcpy-power7.S +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memcpy-power7.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memcpy-power7.S index 2aea73d..1170c50 100644 ---- a/sysdeps/powerpc/powerpc64/multiarch/memcpy-power7.S -+++ b/sysdeps/powerpc/powerpc64/multiarch/memcpy-power7.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memcpy-power7.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memcpy-power7.S @@ -25,7 +25,8 @@ .align ALIGNARG(alignt); \ EALIGN_W_##words; \ @@ -114,10 +114,10 @@ index 2aea73d..1170c50 100644 #undef END_GEN_TB #define END_GEN_TB(name, mask) \ -diff --git a/sysdeps/powerpc/powerpc64/multiarch/memcpy-ppc64.S b/sysdeps/powerpc/powerpc64/multiarch/memcpy-ppc64.S +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memcpy-ppc64.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memcpy-ppc64.S index b828915..c630654 100644 ---- a/sysdeps/powerpc/powerpc64/multiarch/memcpy-ppc64.S -+++ b/sysdeps/powerpc/powerpc64/multiarch/memcpy-ppc64.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memcpy-ppc64.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memcpy-ppc64.S @@ -26,7 +26,8 @@ .align ALIGNARG(alignt); \ EALIGN_W_##words; \ @@ -128,10 +128,10 @@ index b828915..c630654 100644 # undef END_GEN_TB # define END_GEN_TB(name, mask) \ -diff --git a/sysdeps/powerpc/powerpc64/multiarch/mempcpy-power7.S b/sysdeps/powerpc/powerpc64/multiarch/mempcpy-power7.S +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/mempcpy-power7.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/mempcpy-power7.S index 6a79847..8d4b7a7 100644 ---- a/sysdeps/powerpc/powerpc64/multiarch/mempcpy-power7.S -+++ b/sysdeps/powerpc/powerpc64/multiarch/mempcpy-power7.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/mempcpy-power7.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/mempcpy-power7.S @@ -25,7 +25,8 @@ .align ALIGNARG(alignt); \ EALIGN_W_##words; \ @@ -142,10 +142,10 @@ index 6a79847..8d4b7a7 100644 #undef END_GEN_TB #define END_GEN_TB(name, mask) \ -diff --git a/sysdeps/powerpc/powerpc64/multiarch/memrchr-power7.S b/sysdeps/powerpc/powerpc64/multiarch/memrchr-power7.S +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memrchr-power7.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memrchr-power7.S index 42ee8e2..c363215 100644 ---- a/sysdeps/powerpc/powerpc64/multiarch/memrchr-power7.S -+++ b/sysdeps/powerpc/powerpc64/multiarch/memrchr-power7.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memrchr-power7.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memrchr-power7.S @@ -24,7 +24,8 @@ ENTRY_2(__memrchr_power7) \ .align ALIGNARG(2); \ @@ -156,10 +156,10 @@ index 42ee8e2..c363215 100644 #undef END #define END(name) \ -diff --git a/sysdeps/powerpc/powerpc64/multiarch/memset-power4.S b/sysdeps/powerpc/powerpc64/multiarch/memset-power4.S +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memset-power4.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memset-power4.S index 9074b95..968dc24 100644 ---- a/sysdeps/powerpc/powerpc64/multiarch/memset-power4.S -+++ b/sysdeps/powerpc/powerpc64/multiarch/memset-power4.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memset-power4.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memset-power4.S @@ -25,7 +25,8 @@ .align ALIGNARG(alignt); \ EALIGN_W_##words; \ @@ -170,10 +170,10 @@ index 9074b95..968dc24 100644 #undef END_GEN_TB #define END_GEN_TB(name, mask) \ -diff --git a/sysdeps/powerpc/powerpc64/multiarch/memset-power6.S b/sysdeps/powerpc/powerpc64/multiarch/memset-power6.S +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memset-power6.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memset-power6.S index 70688b5..65519b9 100644 ---- a/sysdeps/powerpc/powerpc64/multiarch/memset-power6.S -+++ b/sysdeps/powerpc/powerpc64/multiarch/memset-power6.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memset-power6.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memset-power6.S @@ -25,7 +25,8 @@ .align ALIGNARG(alignt); \ EALIGN_W_##words; \ @@ -184,10 +184,10 @@ index 70688b5..65519b9 100644 #undef END_GEN_TB #define END_GEN_TB(name, mask) \ -diff --git a/sysdeps/powerpc/powerpc64/multiarch/memset-power7.S b/sysdeps/powerpc/powerpc64/multiarch/memset-power7.S +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memset-power7.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memset-power7.S index ab226c5..86765e7 100644 ---- a/sysdeps/powerpc/powerpc64/multiarch/memset-power7.S -+++ b/sysdeps/powerpc/powerpc64/multiarch/memset-power7.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memset-power7.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memset-power7.S @@ -25,7 +25,8 @@ .align ALIGNARG(alignt); \ EALIGN_W_##words; \ @@ -198,10 +198,10 @@ index ab226c5..86765e7 100644 #undef END_GEN_TB #define END_GEN_TB(name, mask) \ -diff --git a/sysdeps/powerpc/powerpc64/multiarch/memset-ppc64.S b/sysdeps/powerpc/powerpc64/multiarch/memset-ppc64.S +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memset-ppc64.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memset-ppc64.S index dc5549c..3601a77 100644 ---- a/sysdeps/powerpc/powerpc64/multiarch/memset-ppc64.S -+++ b/sysdeps/powerpc/powerpc64/multiarch/memset-ppc64.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memset-ppc64.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/memset-ppc64.S @@ -37,7 +37,8 @@ END_GEN_TB (__bzero_ppc,TB_TOCLESS) .align ALIGNARG(alignt); \ EALIGN_W_##words; \ @@ -212,10 +212,10 @@ index dc5549c..3601a77 100644 # undef END_GEN_TB # define END_GEN_TB(name, mask) \ -diff --git a/sysdeps/powerpc/powerpc64/multiarch/rawmemchr-power7.S b/sysdeps/powerpc/powerpc64/multiarch/rawmemchr-power7.S +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/rawmemchr-power7.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/rawmemchr-power7.S index 24ae3bf..9f7533a 100644 ---- a/sysdeps/powerpc/powerpc64/multiarch/rawmemchr-power7.S -+++ b/sysdeps/powerpc/powerpc64/multiarch/rawmemchr-power7.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/rawmemchr-power7.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/rawmemchr-power7.S @@ -24,7 +24,8 @@ ENTRY_2(__rawmemchr_power7) \ .align ALIGNARG(2); \ @@ -226,10 +226,10 @@ index 24ae3bf..9f7533a 100644 #undef END #define END(name) \ -diff --git a/sysdeps/powerpc/powerpc64/multiarch/strcasecmp-power7.S b/sysdeps/powerpc/powerpc64/multiarch/strcasecmp-power7.S +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strcasecmp-power7.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strcasecmp-power7.S index 9714f88..ad00f98 100644 ---- a/sysdeps/powerpc/powerpc64/multiarch/strcasecmp-power7.S -+++ b/sysdeps/powerpc/powerpc64/multiarch/strcasecmp-power7.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strcasecmp-power7.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strcasecmp-power7.S @@ -24,7 +24,8 @@ ENTRY_2(__strcasecmp_power7) \ .align ALIGNARG(2); \ @@ -240,10 +240,10 @@ index 9714f88..ad00f98 100644 #undef END #define END(name) \ -diff --git a/sysdeps/powerpc/powerpc64/multiarch/strcasecmp_l-power7.S b/sysdeps/powerpc/powerpc64/multiarch/strcasecmp_l-power7.S +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strcasecmp_l-power7.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strcasecmp_l-power7.S index 117e464..81ec696 100644 ---- a/sysdeps/powerpc/powerpc64/multiarch/strcasecmp_l-power7.S -+++ b/sysdeps/powerpc/powerpc64/multiarch/strcasecmp_l-power7.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strcasecmp_l-power7.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strcasecmp_l-power7.S @@ -24,7 +24,8 @@ ENTRY_2(__strcasecmp_l_power7) \ .align ALIGNARG(2); \ @@ -254,10 +254,10 @@ index 117e464..81ec696 100644 #undef END #define END(name) \ -diff --git a/sysdeps/powerpc/powerpc64/multiarch/strchr-power7.S b/sysdeps/powerpc/powerpc64/multiarch/strchr-power7.S +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strchr-power7.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strchr-power7.S index 0b2ca42..a3473a6 100644 ---- a/sysdeps/powerpc/powerpc64/multiarch/strchr-power7.S -+++ b/sysdeps/powerpc/powerpc64/multiarch/strchr-power7.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strchr-power7.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strchr-power7.S @@ -24,7 +24,8 @@ ENTRY_2(__strchr_power7) \ .align ALIGNARG(2); \ @@ -268,10 +268,10 @@ index 0b2ca42..a3473a6 100644 #undef END #define END(name) \ -diff --git a/sysdeps/powerpc/powerpc64/multiarch/strchr-ppc64.S b/sysdeps/powerpc/powerpc64/multiarch/strchr-ppc64.S +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strchr-ppc64.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strchr-ppc64.S index ded9284..607668a 100644 ---- a/sysdeps/powerpc/powerpc64/multiarch/strchr-ppc64.S -+++ b/sysdeps/powerpc/powerpc64/multiarch/strchr-ppc64.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strchr-ppc64.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strchr-ppc64.S @@ -25,7 +25,8 @@ ENTRY_2(__strchr_ppc) \ .align ALIGNARG(2); \ @@ -282,10 +282,10 @@ index ded9284..607668a 100644 # undef END # define END(name) \ -diff --git a/sysdeps/powerpc/powerpc64/multiarch/strchrnul-power7.S b/sysdeps/powerpc/powerpc64/multiarch/strchrnul-power7.S +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strchrnul-power7.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strchrnul-power7.S index 87d7c03..95ead0a 100644 ---- a/sysdeps/powerpc/powerpc64/multiarch/strchrnul-power7.S -+++ b/sysdeps/powerpc/powerpc64/multiarch/strchrnul-power7.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strchrnul-power7.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strchrnul-power7.S @@ -24,7 +24,8 @@ ENTRY_2(__strchrnul_power7) \ .align ALIGNARG(2); \ @@ -296,10 +296,10 @@ index 87d7c03..95ead0a 100644 #undef END #define END(name) \ -diff --git a/sysdeps/powerpc/powerpc64/multiarch/strlen-power7.S b/sysdeps/powerpc/powerpc64/multiarch/strlen-power7.S +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strlen-power7.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strlen-power7.S index a38521d..c47c9d6 100644 ---- a/sysdeps/powerpc/powerpc64/multiarch/strlen-power7.S -+++ b/sysdeps/powerpc/powerpc64/multiarch/strlen-power7.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strlen-power7.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strlen-power7.S @@ -24,7 +24,8 @@ ENTRY_2(__strlen_power7) \ .align ALIGNARG(2); \ @@ -310,10 +310,10 @@ index a38521d..c47c9d6 100644 #undef END #define END(name) \ -diff --git a/sysdeps/powerpc/powerpc64/multiarch/strlen-ppc64.S b/sysdeps/powerpc/powerpc64/multiarch/strlen-ppc64.S +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strlen-ppc64.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strlen-ppc64.S index b463b3a..a195e9a 100644 ---- a/sysdeps/powerpc/powerpc64/multiarch/strlen-ppc64.S -+++ b/sysdeps/powerpc/powerpc64/multiarch/strlen-ppc64.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strlen-ppc64.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strlen-ppc64.S @@ -25,7 +25,8 @@ ENTRY_2(__strlen_ppc) \ .align ALIGNARG(2); \ @@ -324,10 +324,10 @@ index b463b3a..a195e9a 100644 # undef END # define END(name) \ -diff --git a/sysdeps/powerpc/powerpc64/multiarch/strncmp-power4.S b/sysdeps/powerpc/powerpc64/multiarch/strncmp-power4.S +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strncmp-power4.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strncmp-power4.S index 62cebbc..da32b0b 100644 ---- a/sysdeps/powerpc/powerpc64/multiarch/strncmp-power4.S -+++ b/sysdeps/powerpc/powerpc64/multiarch/strncmp-power4.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strncmp-power4.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strncmp-power4.S @@ -24,7 +24,8 @@ .align ALIGNARG(alignt); \ EALIGN_W_##words; \ @@ -338,10 +338,10 @@ index 62cebbc..da32b0b 100644 #undef END #define END(name) \ -diff --git a/sysdeps/powerpc/powerpc64/multiarch/strncmp-power7.S b/sysdeps/powerpc/powerpc64/multiarch/strncmp-power7.S +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strncmp-power7.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strncmp-power7.S index b0d607a..65ee0cd 100644 ---- a/sysdeps/powerpc/powerpc64/multiarch/strncmp-power7.S -+++ b/sysdeps/powerpc/powerpc64/multiarch/strncmp-power7.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strncmp-power7.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strncmp-power7.S @@ -24,7 +24,8 @@ .align ALIGNARG(alignt); \ EALIGN_W_##words; \ @@ -352,10 +352,10 @@ index b0d607a..65ee0cd 100644 #undef END #define END(name) \ -diff --git a/sysdeps/powerpc/powerpc64/multiarch/strncmp-ppc64.S b/sysdeps/powerpc/powerpc64/multiarch/strncmp-ppc64.S +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strncmp-ppc64.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strncmp-ppc64.S index 25b7f26..14a2bec 100644 ---- a/sysdeps/powerpc/powerpc64/multiarch/strncmp-ppc64.S -+++ b/sysdeps/powerpc/powerpc64/multiarch/strncmp-ppc64.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strncmp-ppc64.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strncmp-ppc64.S @@ -25,7 +25,8 @@ .align ALIGNARG(alignt); \ EALIGN_W_##words; \ @@ -366,10 +366,10 @@ index 25b7f26..14a2bec 100644 #undef END #define END(name) \ -diff --git a/sysdeps/powerpc/powerpc64/multiarch/strnlen-power7.S b/sysdeps/powerpc/powerpc64/multiarch/strnlen-power7.S +diff --git glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strnlen-power7.S glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strnlen-power7.S index 909aae8..057e5a8 100644 ---- a/sysdeps/powerpc/powerpc64/multiarch/strnlen-power7.S -+++ b/sysdeps/powerpc/powerpc64/multiarch/strnlen-power7.S +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strnlen-power7.S ++++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/multiarch/strnlen-power7.S @@ -24,7 +24,8 @@ ENTRY_2(__strnlen_power7) \ .align ALIGNARG(2); \ diff --git a/SOURCES/glibc-rh739743.patch b/SOURCES/glibc-rh739743.patch index c390b77..6af4444 100644 --- a/SOURCES/glibc-rh739743.patch +++ b/SOURCES/glibc-rh739743.patch @@ -7,8 +7,8 @@ sysdeps/posix/getaddrinfo.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) ---- a/sysdeps/posix/getaddrinfo.c -+++ b/sysdeps/posix/getaddrinfo.c +--- glibc-2.17-c758a686/sysdeps/posix/getaddrinfo.c ++++ glibc-2.17-c758a686/sysdeps/posix/getaddrinfo.c @@ -1456,13 +1456,13 @@ /* Fill in the results in all the records. */ @@ -35,8 +35,8 @@ sysdeps/posix/getaddrinfo.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) ---- a/sysdeps/posix/getaddrinfo.c -+++ b/sysdeps/posix/getaddrinfo.c +--- glibc-2.17-c758a686/sysdeps/posix/getaddrinfo.c ++++ glibc-2.17-c758a686/sysdeps/posix/getaddrinfo.c @@ -2265,7 +2265,14 @@ tmp.addr[0] = 0; tmp.addr[1] = 0; diff --git a/SOURCES/glibc-rh741105.patch b/SOURCES/glibc-rh741105.patch index 8252062..0c15fef 100644 --- a/SOURCES/glibc-rh741105.patch +++ b/SOURCES/glibc-rh741105.patch @@ -1,6 +1,6 @@ -diff -rup a/elf/dl-load.c b/elf/dl-load.c ---- a/elf/dl-load.c 2012-02-03 10:59:58.917870716 -0700 -+++ b/elf/dl-load.c 2012-02-03 11:01:01.796580644 -0700 +diff -rup glibc-2.17-c758a686/elf/dl-load.c glibc-2.17-c758a686/elf/dl-load.c +--- glibc-2.17-c758a686/elf/dl-load.c 2012-02-03 10:59:58.917870716 -0700 ++++ glibc-2.17-c758a686/elf/dl-load.c 2012-02-03 11:01:01.796580644 -0700 @@ -1130,6 +1130,16 @@ _dl_map_object_from_fd (const char *name = N_("ELF load command address/offset not properly aligned"); goto call_lose; @@ -18,4 +18,4 @@ diff -rup a/elf/dl-load.c b/elf/dl-load.c c = &loadcmds[nloadcmds++]; c->mapstart = ph->p_vaddr & ~(GLRO(dl_pagesize) - 1); -Only in b/elf: dl-load.c.orig +Only inglibc-2.17-c758a686/elf: dl-load.c.orig diff --git a/SOURCES/glibc-rh742038.patch b/SOURCES/glibc-rh742038.patch index cd9292d..6e5b3b5 100644 --- a/SOURCES/glibc-rh742038.patch +++ b/SOURCES/glibc-rh742038.patch @@ -52,10 +52,10 @@ Author: Alexandre Oliva * manual/Makefile (chapters): Add probes. * manual/debug.texi: Set next node. -Index: malloc/arena.c +Index: glibc-2.17-c758a686/malloc/arena.c =================================================================== ---- malloc/arena.c.orig 2013-09-20 12:59:12.000000000 -0300 -+++ malloc/arena.c 2013-09-20 13:01:07.848184108 -0300 +--- glibc-2.17-c758a686/malloc/arena.c.orig ++++ glibc-2.17-c758a686/malloc/arena.c @@ -586,6 +586,7 @@ new_heap(size_t size, size_t top_pad) h->size = size; h->mprotect_size = size; @@ -140,10 +140,10 @@ Index: malloc/arena.c if(ar_ptr != &main_arena) { (void)mutex_unlock(&ar_ptr->mutex); ar_ptr = &main_arena; -Index: malloc/malloc.c +Index: glibc-2.17-c758a686/malloc/malloc.c =================================================================== ---- malloc/malloc.c.orig 2013-09-20 12:59:12.000000000 -0300 -+++ malloc/malloc.c 2013-09-20 13:01:07.876181919 -0300 +--- glibc-2.17-c758a686/malloc/malloc.c.orig ++++ glibc-2.17-c758a686/malloc/malloc.c @@ -1884,6 +1884,8 @@ static int perturb_byte; #define free_perturb(p, n) memset (p, perturb_byte & 0xff, n) @@ -320,10 +320,10 @@ Index: malloc/malloc.c break; #endif } -Index: manual/Makefile +Index: glibc-2.17-c758a686/manual/Makefile =================================================================== ---- manual/Makefile.orig 2013-09-20 12:59:12.435209793 -0300 -+++ manual/Makefile 2013-09-20 13:01:07.906179573 -0300 +--- glibc-2.17-c758a686/manual/Makefile.orig ++++ glibc-2.17-c758a686/manual/Makefile @@ -43,7 +43,7 @@ chapters = $(addsuffix .texi, \ message search pattern io stdio llio filesys \ pipe socket terminal syslog math arith time \ @@ -333,10 +333,10 @@ Index: manual/Makefile add-chapters = $(wildcard $(foreach d, $(add-ons), ../$d/$d.texi)) appendices = lang.texi header.texi install.texi maint.texi platform.texi \ contrib.texi -Index: manual/probes.texi +Index: glibc-2.17-c758a686/manual/probes.texi =================================================================== ---- /dev/null 1970-01-01 00:00:00.000000000 +0000 -+++ manual/probes.texi 2013-09-20 13:03:59.749747437 -0300 +--- /dev/null ++++ glibc-2.17-c758a686/manual/probes.texi @@ -0,0 +1,257 @@ +@node Internal Probes +@c @node Internal Probes, , Debugging Support, Top @@ -595,10 +595,10 @@ Index: manual/probes.texi +dynamic brk/mmap thresholds. Argument @var{$arg1} and @var{$arg2} are +the adjusted mmap and trim thresholds, respectively. +@end deftp -Index: manual/debug.texi +Index: glibc-2.17-c758a686/manual/debug.texi =================================================================== ---- manual/debug.texi.orig 2012-12-25 01:02:13.000000000 -0200 -+++ manual/debug.texi 2013-09-20 13:01:07.939176993 -0300 +--- glibc-2.17-c758a686/manual/debug.texi.orig ++++ glibc-2.17-c758a686/manual/debug.texi @@ -1,5 +1,5 @@ @node Debugging Support -@c @node Debugging Support, , Cryptographic Functions, Top diff --git a/SOURCES/glibc-rh757881.patch b/SOURCES/glibc-rh757881.patch index 9db0434..daed999 100644 --- a/SOURCES/glibc-rh757881.patch +++ b/SOURCES/glibc-rh757881.patch @@ -1,6 +1,6 @@ -diff -Nrup a/malloc/arena.c b/malloc/arena.c ---- a/malloc/arena.c 2012-05-29 16:45:53.000000000 -0600 -+++ b/malloc/arena.c 2012-05-30 00:13:40.683514016 -0600 +diff -Nru glibc-2.17-c758a686/malloc/arena.c glibc-2.17-c758a686/malloc/arena.c +--- glibc-2.17-c758a686/malloc/arena.c 2012-05-29 16:45:53.000000000 -0600 ++++ glibc-2.17-c758a686/malloc/arena.c 2012-05-30 00:13:40.683514016 -0600 @@ -673,7 +673,7 @@ heap_trim(heap_info *heap, size_t pad) heap = prev_heap; if(!prev_inuse(p)) { /* consolidate backward */ @@ -10,9 +10,9 @@ diff -Nrup a/malloc/arena.c b/malloc/arena.c } assert(((unsigned long)((char*)p + new_size) & (pagesz-1)) == 0); assert( ((char*)p + new_size) == ((char*)heap + heap->size) ); -diff -Nrup a/malloc/hooks.c b/malloc/hooks.c ---- a/malloc/hooks.c 2012-05-29 16:45:53.000000000 -0600 -+++ b/malloc/hooks.c 2012-05-30 00:13:40.684514011 -0600 +diff -Nru glibc-2.17-c758a686/malloc/hooks.c glibc-2.17-c758a686/malloc/hooks.c +--- glibc-2.17-c758a686/malloc/hooks.c 2012-05-29 16:45:53.000000000 -0600 ++++ glibc-2.17-c758a686/malloc/hooks.c 2012-05-30 00:13:40.684514011 -0600 @@ -191,7 +191,9 @@ top_check(void) (char*)t + chunksize(t) == mp_.sbrk_base + main_arena.system_mem))) return 0; @@ -23,9 +23,9 @@ diff -Nrup a/malloc/hooks.c b/malloc/hooks.c /* Try to set up a new top chunk. */ brk = MORECORE(0); -diff -Nrup a/malloc/malloc.c b/malloc/malloc.c ---- a/malloc/malloc.c 2012-05-29 16:45:53.000000000 -0600 -+++ b/malloc/malloc.c 2012-05-30 00:13:40.686514001 -0600 +diff -Nru glibc-2.17-c758a686/malloc/malloc.c glibc-2.17-c758a686/malloc/malloc.c +--- glibc-2.17-c758a686/malloc/malloc.c 2012-05-29 16:45:53.000000000 -0600 ++++ glibc-2.17-c758a686/malloc/malloc.c 2012-05-30 00:13:40.686514001 -0600 @@ -1424,12 +1424,14 @@ typedef struct malloc_chunk* mbinptr; #define last(b) ((b)->bk) diff --git a/SOURCES/glibc-rh804768-bugfix.patch b/SOURCES/glibc-rh804768-bugfix.patch index ba66d27..3bd8e2c 100644 --- a/SOURCES/glibc-rh804768-bugfix.patch +++ b/SOURCES/glibc-rh804768-bugfix.patch @@ -31,9 +31,9 @@ # # S/390: Change struct statfs[64] member types to unsigned values -diff -Nrup a/sysdeps/s390/bits/setjmp.h b/sysdeps/s390/bits/setjmp.h ---- a/sysdeps/s390/bits/setjmp.h 2012-12-24 22:02:13.000000000 -0500 -+++ b/sysdeps/s390/bits/setjmp.h 2013-08-23 12:33:20.597299428 -0400 +diff -Nru glibc-2.17-c758a686/sysdeps/s390/bits/setjmp.h glibc-2.17-c758a686/sysdeps/s390/bits/setjmp.h +--- glibc-2.17-c758a686/sysdeps/s390/bits/setjmp.h 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/s390/bits/setjmp.h 2013-08-23 12:33:20.597299428 -0400 @@ -34,7 +34,7 @@ typedef struct __s390_jmp_buf long int __gregs[10]; @@ -43,9 +43,9 @@ diff -Nrup a/sysdeps/s390/bits/setjmp.h b/sysdeps/s390/bits/setjmp.h long __fpregs[8]; # else /* We save fpu registers 4 and 6. */ -diff -Nrup a/sysdeps/s390/s390-32/dl-trampoline.S b/sysdeps/s390/s390-32/dl-trampoline.S ---- a/sysdeps/s390/s390-32/dl-trampoline.S 2012-12-24 22:02:13.000000000 -0500 -+++ b/sysdeps/s390/s390-32/dl-trampoline.S 2013-08-23 12:33:20.593298453 -0400 +diff -Nru glibc-2.17-c758a686/sysdeps/s390/s390-32/dl-trampoline.S glibc-2.17-c758a686/sysdeps/s390/s390-32/dl-trampoline.S +--- glibc-2.17-c758a686/sysdeps/s390/s390-32/dl-trampoline.S 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/s390/s390-32/dl-trampoline.S 2013-08-23 12:33:20.593298453 -0400 @@ -95,16 +95,16 @@ _dl_runtime_profile: lr %r1,%r2 # function addr returned in r2 icm %r0,15,20(%r12) # load & test framesize @@ -82,9 +82,9 @@ diff -Nrup a/sysdeps/s390/s390-32/dl-trampoline.S b/sysdeps/s390/s390-32/dl-tram 6: .long _dl_profile_fixup - 0b 7: .long _dl_call_pltexit - 5b cfi_endproc -diff -Nrup a/sysdeps/s390/s390-64/dl-trampoline.S b/sysdeps/s390/s390-64/dl-trampoline.S ---- a/sysdeps/s390/s390-64/dl-trampoline.S 2012-12-24 22:02:13.000000000 -0500 -+++ b/sysdeps/s390/s390-64/dl-trampoline.S 2013-08-23 12:46:11.478239405 -0400 +diff -Nru glibc-2.17-c758a686/sysdeps/s390/s390-64/dl-trampoline.S glibc-2.17-c758a686/sysdeps/s390/s390-64/dl-trampoline.S +--- glibc-2.17-c758a686/sysdeps/s390/s390-64/dl-trampoline.S 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/s390/s390-64/dl-trampoline.S 2013-08-23 12:46:11.478239405 -0400 @@ -1,4 +1,4 @@ -/* PLT trampolines. s390 version. +/* PLT trampolines. s390x version. @@ -219,9 +219,9 @@ diff -Nrup a/sysdeps/s390/s390-64/dl-trampoline.S b/sysdeps/s390/s390-64/dl-tram cfi_endproc .size _dl_runtime_profile, .-_dl_runtime_profile #endif -diff -Nrup a/sysdeps/s390/s390-64/__longjmp.c b/sysdeps/s390/s390-64/__longjmp.c ---- a/sysdeps/s390/s390-64/__longjmp.c 2012-12-24 22:02:13.000000000 -0500 -+++ b/sysdeps/s390/s390-64/__longjmp.c 2013-08-23 12:33:20.597299428 -0400 +diff -Nru glibc-2.17-c758a686/sysdeps/s390/s390-64/__longjmp.c glibc-2.17-c758a686/sysdeps/s390/s390-64/__longjmp.c +--- glibc-2.17-c758a686/sysdeps/s390/s390-64/__longjmp.c 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/s390/s390-64/__longjmp.c 2013-08-23 12:33:20.597299428 -0400 @@ -42,10 +42,14 @@ __longjmp (__jmp_buf env, int val) register void *r1 __asm ("%r1") = (void *) env; #endif @@ -241,9 +241,9 @@ diff -Nrup a/sysdeps/s390/s390-64/__longjmp.c b/sysdeps/s390/s390-64/__longjmp.c #ifdef PTR_DEMANGLE "lmg %%r6,%%r13,0(%1)\n\t" "lmg %%r4,%%r5,64(%1)\n\t" -diff -Nrup a/sysdeps/s390/s390-64/setjmp.S b/sysdeps/s390/s390-64/setjmp.S ---- a/sysdeps/s390/s390-64/setjmp.S 2012-12-24 22:02:13.000000000 -0500 -+++ b/sysdeps/s390/s390-64/setjmp.S 2013-08-23 12:33:20.598300448 -0400 +diff -Nru glibc-2.17-c758a686/sysdeps/s390/s390-64/setjmp.S glibc-2.17-c758a686/sysdeps/s390/s390-64/setjmp.S +--- glibc-2.17-c758a686/sysdeps/s390/s390-64/setjmp.S 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/s390/s390-64/setjmp.S 2013-08-23 12:33:20.598300448 -0400 @@ -55,10 +55,14 @@ ENTRY(__sigsetjmp) #else stmg %r6,%r15,0(%r2) /* Store registers in jmp_buf. */ @@ -263,9 +263,9 @@ diff -Nrup a/sysdeps/s390/s390-64/setjmp.S b/sysdeps/s390/s390-64/setjmp.S #if defined NOT_IN_libc && defined IS_IN_rtld /* In ld.so we never save the signal mask. */ lghi %r2,0 -diff -Nrup a/sysdeps/unix/sysv/linux/s390/bits/statfs.h b/sysdeps/unix/sysv/linux/s390/bits/statfs.h ---- a/sysdeps/unix/sysv/linux/s390/bits/statfs.h 2012-12-24 22:02:13.000000000 -0500 -+++ b/sysdeps/unix/sysv/linux/s390/bits/statfs.h 2013-08-23 12:33:20.601180842 -0400 +diff -Nru glibc-2.17-c758a686/sysdeps/unix/sysv/linux/s390/bits/statfs.h glibc-2.17-c758a686/sysdeps/unix/sysv/linux/s390/bits/statfs.h +--- glibc-2.17-c758a686/sysdeps/unix/sysv/linux/s390/bits/statfs.h 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/s390/bits/statfs.h 2013-08-23 12:33:20.601180842 -0400 @@ -23,8 +23,8 @@ struct statfs @@ -315,9 +315,9 @@ diff -Nrup a/sysdeps/unix/sysv/linux/s390/bits/statfs.h b/sysdeps/unix/sysv/linu }; #endif -diff -Nrup a/sysdeps/unix/sysv/linux/s390/s390-32/getcontext.S b/sysdeps/unix/sysv/linux/s390/s390-32/getcontext.S ---- a/sysdeps/unix/sysv/linux/s390/s390-32/getcontext.S 2012-12-24 22:02:13.000000000 -0500 -+++ b/sysdeps/unix/sysv/linux/s390/s390-32/getcontext.S 2013-08-23 12:33:20.588297827 -0400 +diff -Nru glibc-2.17-c758a686/sysdeps/unix/sysv/linux/s390/s390-32/getcontext.S glibc-2.17-c758a686/sysdeps/unix/sysv/linux/s390/s390-32/getcontext.S +--- glibc-2.17-c758a686/sysdeps/unix/sysv/linux/s390/s390-32/getcontext.S 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/s390/s390-32/getcontext.S 2013-08-23 12:33:20.588297827 -0400 @@ -31,41 +31,42 @@ other than the PRESERVED state. */ @@ -382,9 +382,9 @@ diff -Nrup a/sysdeps/unix/sysv/linux/s390/s390-32/getcontext.S b/sysdeps/unix/sy /* Return. */ br %r14 -diff -Nrup a/sysdeps/unix/sysv/linux/s390/s390-32/setcontext.S b/sysdeps/unix/sysv/linux/s390/s390-32/setcontext.S ---- a/sysdeps/unix/sysv/linux/s390/s390-32/setcontext.S 2012-12-24 22:02:13.000000000 -0500 -+++ b/sysdeps/unix/sysv/linux/s390/s390-32/setcontext.S 2013-08-23 12:33:20.588297827 -0400 +diff -Nru glibc-2.17-c758a686/sysdeps/unix/sysv/linux/s390/s390-32/setcontext.S glibc-2.17-c758a686/sysdeps/unix/sysv/linux/s390/s390-32/setcontext.S +--- glibc-2.17-c758a686/sysdeps/unix/sysv/linux/s390/s390-32/setcontext.S 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/s390/s390-32/setcontext.S 2013-08-23 12:33:20.588297827 -0400 @@ -31,38 +31,39 @@ other than the PRESERVED state. */ @@ -446,9 +446,9 @@ diff -Nrup a/sysdeps/unix/sysv/linux/s390/s390-32/setcontext.S b/sysdeps/unix/sy /* Return. */ br %r14 -diff -Nrup a/sysdeps/unix/sysv/linux/s390/s390-32/swapcontext.S b/sysdeps/unix/sysv/linux/s390/s390-32/swapcontext.S ---- a/sysdeps/unix/sysv/linux/s390/s390-32/swapcontext.S 2012-12-24 22:02:13.000000000 -0500 -+++ b/sysdeps/unix/sysv/linux/s390/s390-32/swapcontext.S 2013-08-23 12:33:20.589298155 -0400 +diff -Nru glibc-2.17-c758a686/sysdeps/unix/sysv/linux/s390/s390-32/swapcontext.S glibc-2.17-c758a686/sysdeps/unix/sysv/linux/s390/s390-32/swapcontext.S +--- glibc-2.17-c758a686/sysdeps/unix/sysv/linux/s390/s390-32/swapcontext.S 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/s390/s390-32/swapcontext.S 2013-08-23 12:33:20.589298155 -0400 @@ -34,12 +34,13 @@ ENTRY(__swapcontext) @@ -479,9 +479,9 @@ diff -Nrup a/sysdeps/unix/sysv/linux/s390/s390-32/swapcontext.S b/sysdeps/unix/s lfpc SC_FPC(%r5) ld %f0,SC_FPRS(%r5) ld %f1,SC_FPRS+8(%r5) -diff -Nrup a/sysdeps/unix/sysv/linux/s390/s390-64/getcontext.S b/sysdeps/unix/sysv/linux/s390/s390-64/getcontext.S ---- a/sysdeps/unix/sysv/linux/s390/s390-64/getcontext.S 2012-12-24 22:02:13.000000000 -0500 -+++ b/sysdeps/unix/sysv/linux/s390/s390-64/getcontext.S 2013-08-23 12:33:20.590298812 -0400 +diff -Nru glibc-2.17-c758a686/sysdeps/unix/sysv/linux/s390/s390-64/getcontext.S glibc-2.17-c758a686/sysdeps/unix/sysv/linux/s390/s390-64/getcontext.S +--- glibc-2.17-c758a686/sysdeps/unix/sysv/linux/s390/s390-64/getcontext.S 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/s390/s390-64/getcontext.S 2013-08-23 12:33:20.590298812 -0400 @@ -31,41 +31,42 @@ other than the PRESERVED state. */ @@ -546,9 +546,9 @@ diff -Nrup a/sysdeps/unix/sysv/linux/s390/s390-64/getcontext.S b/sysdeps/unix/sy /* Return. */ br %r14 -diff -Nrup a/sysdeps/unix/sysv/linux/s390/s390-64/setcontext.S b/sysdeps/unix/sysv/linux/s390/s390-64/setcontext.S ---- a/sysdeps/unix/sysv/linux/s390/s390-64/setcontext.S 2012-12-24 22:02:13.000000000 -0500 -+++ b/sysdeps/unix/sysv/linux/s390/s390-64/setcontext.S 2013-08-23 12:33:20.591298098 -0400 +diff -Nru glibc-2.17-c758a686/sysdeps/unix/sysv/linux/s390/s390-64/setcontext.S glibc-2.17-c758a686/sysdeps/unix/sysv/linux/s390/s390-64/setcontext.S +--- glibc-2.17-c758a686/sysdeps/unix/sysv/linux/s390/s390-64/setcontext.S 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/s390/s390-64/setcontext.S 2013-08-23 12:33:20.591298098 -0400 @@ -31,38 +31,39 @@ other than the PRESERVED state. */ @@ -610,9 +610,9 @@ diff -Nrup a/sysdeps/unix/sysv/linux/s390/s390-64/setcontext.S b/sysdeps/unix/sy /* Return. */ br %r14 -diff -Nrup a/sysdeps/unix/sysv/linux/s390/s390-64/swapcontext.S b/sysdeps/unix/sysv/linux/s390/s390-64/swapcontext.S ---- a/sysdeps/unix/sysv/linux/s390/s390-64/swapcontext.S 2012-12-24 22:02:13.000000000 -0500 -+++ b/sysdeps/unix/sysv/linux/s390/s390-64/swapcontext.S 2013-08-23 12:33:20.591298098 -0400 +diff -Nru glibc-2.17-c758a686/sysdeps/unix/sysv/linux/s390/s390-64/swapcontext.S glibc-2.17-c758a686/sysdeps/unix/sysv/linux/s390/s390-64/swapcontext.S +--- glibc-2.17-c758a686/sysdeps/unix/sysv/linux/s390/s390-64/swapcontext.S 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/s390/s390-64/swapcontext.S 2013-08-23 12:33:20.591298098 -0400 @@ -34,12 +34,13 @@ ENTRY(__swapcontext) @@ -643,9 +643,9 @@ diff -Nrup a/sysdeps/unix/sysv/linux/s390/s390-64/swapcontext.S b/sysdeps/unix/s lfpc SC_FPC(%r5) ld %f0,SC_FPRS(%r5) ld %f1,SC_FPRS+8(%r5) -diff -Nrup a/sysdeps/unix/sysv/linux/s390/ucontext_i.sym b/sysdeps/unix/sysv/linux/s390/ucontext_i.sym ---- a/sysdeps/unix/sysv/linux/s390/ucontext_i.sym 2012-12-24 22:02:13.000000000 -0500 -+++ b/sysdeps/unix/sysv/linux/s390/ucontext_i.sym 2013-08-23 12:33:20.591298098 -0400 +diff -Nru glibc-2.17-c758a686/sysdeps/unix/sysv/linux/s390/ucontext_i.sym glibc-2.17-c758a686/sysdeps/unix/sysv/linux/s390/ucontext_i.sym +--- glibc-2.17-c758a686/sysdeps/unix/sysv/linux/s390/ucontext_i.sym 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/s390/ucontext_i.sym 2013-08-23 12:33:20.591298098 -0400 @@ -8,6 +8,8 @@ SIG_BLOCK SIG_UNBLOCK SIG_SETMASK diff --git a/SOURCES/glibc-rh819430.patch b/SOURCES/glibc-rh819430.patch index 8af1f78..0c29e8a 100644 --- a/SOURCES/glibc-rh819430.patch +++ b/SOURCES/glibc-rh819430.patch @@ -1,6 +1,6 @@ -diff -Nrup a/posix/fnmatch.c b/posix/fnmatch.c ---- a/posix/fnmatch.c 2012-01-01 07:16:32.000000000 -0500 -+++ b/posix/fnmatch.c 2012-05-23 14:14:29.099461189 -0400 +diff -Nru glibc-2.17-c758a686/posix/fnmatch.c glibc-2.17-c758a686/posix/fnmatch.c +--- glibc-2.17-c758a686/posix/fnmatch.c 2012-01-01 07:16:32.000000000 -0500 ++++ glibc-2.17-c758a686/posix/fnmatch.c 2012-05-23 14:14:29.099461189 -0400 @@ -333,6 +333,7 @@ fnmatch (pattern, string, flags) # if HANDLE_MULTIBYTE if (__builtin_expect (MB_CUR_MAX, 1) != 1) diff --git a/SOURCES/glibc-rh825061.patch b/SOURCES/glibc-rh825061.patch index 54fae8b..a8f8895 100644 --- a/SOURCES/glibc-rh825061.patch +++ b/SOURCES/glibc-rh825061.patch @@ -1,6 +1,6 @@ -diff -rup a/manual/Makefile b/manual/Makefile ---- a/manual/Makefile 2012-05-20 19:47:38.000000000 -0600 -+++ b/manual/Makefile 2012-05-29 22:23:33.920428631 -0600 +diff -rup glibc-2.17-c758a686/manual/Makefile glibc-2.17-c758a686/manual/Makefile +--- glibc-2.17-c758a686/manual/Makefile 2012-05-20 19:47:38.000000000 -0600 ++++ glibc-2.17-c758a686/manual/Makefile 2012-05-29 22:23:33.920428631 -0600 @@ -129,7 +129,8 @@ $(objpfx)%.c.texi: examples/%.c mv -f $@.new $@ diff --git a/SOURCES/glibc-rh827510.patch b/SOURCES/glibc-rh827510.patch index f5f024c..cccecc3 100644 --- a/SOURCES/glibc-rh827510.patch +++ b/SOURCES/glibc-rh827510.patch @@ -5,10 +5,10 @@ file->decided until we have successfully loaded the file's data. -diff --git a/locale/loadlocale.c b/locale/loadlocale.c +diff --git glibc-2.17-c758a686/locale/loadlocale.c glibc-2.17-c758a686/locale/loadlocale.c index e3fa187..9fd9216 100644 ---- a/locale/loadlocale.c -+++ b/locale/loadlocale.c +--- glibc-2.17-c758a686/locale/loadlocale.c ++++ glibc-2.17-c758a686/locale/loadlocale.c @@ -169,7 +169,6 @@ _nl_load_locale (struct loaded_l10nfile *file, int category) int save_err; int alloc = ld_mapped; diff --git a/SOURCES/glibc-rh841318.patch b/SOURCES/glibc-rh841318.patch index 21859d5..0586910 100644 --- a/SOURCES/glibc-rh841318.patch +++ b/SOURCES/glibc-rh841318.patch @@ -1,6 +1,6 @@ -diff -Nrup a/stdio-common/Makefile b/stdio-common/Makefile ---- a/stdio-common/Makefile 2012-09-14 14:31:29.000000000 -0600 -+++ b/stdio-common/Makefile 2012-09-14 14:41:50.837749196 -0600 +diff -Nru glibc-2.17-c758a686/stdio-common/Makefile glibc-2.17-c758a686/stdio-common/Makefile +--- glibc-2.17-c758a686/stdio-common/Makefile 2012-09-14 14:31:29.000000000 -0600 ++++ glibc-2.17-c758a686/stdio-common/Makefile 2012-09-14 14:41:50.837749196 -0600 @@ -57,7 +57,7 @@ tests := tstscanf test_rdwr test-popen t bug19 bug19a tst-popen2 scanf13 scanf14 scanf15 bug20 bug21 bug22 \ scanf16 scanf17 tst-setvbuf1 tst-grouping bug23 bug24 \ @@ -10,9 +10,9 @@ diff -Nrup a/stdio-common/Makefile b/stdio-common/Makefile test-srcs = tst-unbputc tst-printf -diff -Nrup a/stdio-common/bug23-2.c b/stdio-common/bug23-2.c ---- a/stdio-common/bug23-2.c 1969-12-31 17:00:00.000000000 -0700 -+++ b/stdio-common/bug23-2.c 2012-09-14 14:41:27.832840375 -0600 +diff -Nru glibc-2.17-c758a686/stdio-common/bug23-2.c glibc-2.17-c758a686/stdio-common/bug23-2.c +--- glibc-2.17-c758a686/stdio-common/bug23-2.c 1969-12-31 17:00:00.000000000 -0700 ++++ glibc-2.17-c758a686/stdio-common/bug23-2.c 2012-09-14 14:41:27.832840375 -0600 @@ -0,0 +1,70 @@ +#include +#include @@ -84,9 +84,9 @@ diff -Nrup a/stdio-common/bug23-2.c b/stdio-common/bug23-2.c + +#define TEST_FUNCTION do_test () +#include "../test-skeleton.c" -diff -Nrup a/stdio-common/bug23-3.c b/stdio-common/bug23-3.c ---- a/stdio-common/bug23-3.c 1969-12-31 17:00:00.000000000 -0700 -+++ b/stdio-common/bug23-3.c 2012-09-14 14:41:27.884840169 -0600 +diff -Nru glibc-2.17-c758a686/stdio-common/bug23-3.c glibc-2.17-c758a686/stdio-common/bug23-3.c +--- glibc-2.17-c758a686/stdio-common/bug23-3.c 1969-12-31 17:00:00.000000000 -0700 ++++ glibc-2.17-c758a686/stdio-common/bug23-3.c 2012-09-14 14:41:27.884840169 -0600 @@ -0,0 +1,45076 @@ +#include +#include @@ -45164,9 +45164,9 @@ diff -Nrup a/stdio-common/bug23-3.c b/stdio-common/bug23-3.c +#define TEST_FUNCTION do_test () +#include "../test-skeleton.c" + -diff -Nrup a/stdio-common/vfprintf.c b/stdio-common/vfprintf.c ---- a/stdio-common/vfprintf.c 2012-09-14 14:31:29.000000000 -0600 -+++ b/stdio-common/vfprintf.c 2012-09-14 14:41:27.891840141 -0600 +diff -Nru glibc-2.17-c758a686/stdio-common/vfprintf.c glibc-2.17-c758a686/stdio-common/vfprintf.c +--- glibc-2.17-c758a686/stdio-common/vfprintf.c 2012-09-14 14:31:29.000000000 -0600 ++++ glibc-2.17-c758a686/stdio-common/vfprintf.c 2012-09-14 14:41:27.891840141 -0600 @@ -243,6 +243,12 @@ vfprintf (FILE *s, const CHAR_T *format, /* For the argument descriptions, which may be allocated on the heap. */ void *args_malloced = NULL; diff --git a/SOURCES/glibc-rh841787.patch b/SOURCES/glibc-rh841787.patch index 3cec783..939b0e6 100644 --- a/SOURCES/glibc-rh841787.patch +++ b/SOURCES/glibc-rh841787.patch @@ -1,6 +1,6 @@ -diff -rup a/resolv/res_init.c b/resolv/res_init.c ---- a/resolv/res_init.c 2012-07-26 15:10:45.655638776 -0600 -+++ b/resolv/res_init.c 2012-07-26 15:11:27.731423002 -0600 +diff -rup glibc-2.17-c758a686/resolv/res_init.c glibc-2.17-c758a686/resolv/res_init.c +--- glibc-2.17-c758a686/resolv/res_init.c 2012-07-26 15:10:45.655638776 -0600 ++++ glibc-2.17-c758a686/resolv/res_init.c 2012-07-26 15:11:27.731423002 -0600 @@ -314,9 +314,9 @@ __res_vinit(res_state statp, int preinit cp++; if ((*cp != '\0') && (*cp != '\n') @@ -14,9 +14,9 @@ diff -rup a/resolv/res_init.c b/resolv/res_init.c htons(NAMESERVER_PORT); nserv++; #ifdef _LIBC -diff -rup a/resolv/res_send.c b/resolv/res_send.c ---- a/resolv/res_send.c 2010-05-04 05:27:23.000000000 -0600 -+++ b/resolv/res_send.c 2012-07-26 15:34:58.398261659 -0600 +diff -rup glibc-2.17-c758a686/resolv/res_send.c glibc-2.17-c758a686/resolv/res_send.c +--- glibc-2.17-c758a686/resolv/res_send.c 2010-05-04 05:27:23.000000000 -0600 ++++ glibc-2.17-c758a686/resolv/res_send.c 2012-07-26 15:34:58.398261659 -0600 @@ -421,10 +421,10 @@ __libc_res_nsend(res_state statp, const EXT(statp).nsmap[n] = MAXNS; } diff --git a/SOURCES/glibc-rh884008.patch b/SOURCES/glibc-rh884008.patch index c6a8470..3b8b817 100644 --- a/SOURCES/glibc-rh884008.patch +++ b/SOURCES/glibc-rh884008.patch @@ -1,7 +1,7 @@ -diff --git a/nptl/tst-cleanup2.c b/nptl/tst-cleanup2.c +diff --git glibc-2.17-c758a686/nptl/tst-cleanup2.c glibc-2.17-c758a686/nptl/tst-cleanup2.c index 5bd1609..65af0f2 100644 ---- a/nptl/tst-cleanup2.c -+++ b/nptl/tst-cleanup2.c +--- glibc-2.17-c758a686/nptl/tst-cleanup2.c ++++ glibc-2.17-c758a686/nptl/tst-cleanup2.c @@ -34,6 +34,12 @@ static int do_test (void) { diff --git a/SOURCES/glibc-rh892777.patch b/SOURCES/glibc-rh892777.patch index 03d201c..ad89043 100644 --- a/SOURCES/glibc-rh892777.patch +++ b/SOURCES/glibc-rh892777.patch @@ -1,6 +1,6 @@ -diff -Nrup a/nis/yp_xdr.c b/nis/yp_xdr.c ---- a/nis/yp_xdr.c 2012-12-24 22:02:13.000000000 -0500 -+++ b/nis/yp_xdr.c 2013-04-17 15:26:50.168999686 -0400 +diff -Nru glibc-2.17-c758a686/nis/yp_xdr.c glibc-2.17-c758a686/nis/yp_xdr.c +--- glibc-2.17-c758a686/nis/yp_xdr.c 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/nis/yp_xdr.c 2013-04-17 15:26:50.168999686 -0400 @@ -32,6 +32,14 @@ #include #include diff --git a/SOURCES/glibc-rh905184.patch b/SOURCES/glibc-rh905184.patch index ec8dc81..67e774b 100644 --- a/SOURCES/glibc-rh905184.patch +++ b/SOURCES/glibc-rh905184.patch @@ -25,10 +25,10 @@ # * sysdeps/unix/sysv/linux/arm/readelflib.c (process_elf_file): # Set FLAG_ARM_LIBSF for soft-float ABI otherwise just FLAG_ELF_LIBC6. # -diff --git a/elf/cache.c b/elf/cache.c +diff --git glibc-2.17-c758a686/elf/cache.c glibc-2.17-c758a686/elf/cache.c index 9901952..699550b 100644 ---- a/elf/cache.c -+++ b/elf/cache.c +--- glibc-2.17-c758a686/elf/cache.c ++++ glibc-2.17-c758a686/elf/cache.c @@ -100,6 +100,10 @@ print_entry (const char *lib, int flag, unsigned int osversion, case FLAG_AARCH64_LIB64: fputs (",AArch64", stdout); @@ -40,10 +40,10 @@ index 9901952..699550b 100644 case 0: break; default: -diff --git a/ports/sysdeps/unix/sysv/linux/arm/dl-cache.h b/ports/sysdeps/unix/sysv/linux/arm/dl-cache.h +diff --git glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/arm/dl-cache.h glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/arm/dl-cache.h index acc4f28..504feca 100644 ---- a/ports/sysdeps/unix/sysv/linux/arm/dl-cache.h -+++ b/ports/sysdeps/unix/sysv/linux/arm/dl-cache.h +--- glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/arm/dl-cache.h ++++ glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/arm/dl-cache.h @@ -18,12 +18,17 @@ #include @@ -64,10 +64,10 @@ index acc4f28..504feca 100644 #endif #include_next -diff --git a/ports/sysdeps/unix/sysv/linux/arm/readelflib.c b/ports/sysdeps/unix/sysv/linux/arm/readelflib.c +diff --git glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/arm/readelflib.c glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/arm/readelflib.c index 81e5ccb..3efb613 100644 ---- a/ports/sysdeps/unix/sysv/linux/arm/readelflib.c -+++ b/ports/sysdeps/unix/sysv/linux/arm/readelflib.c +--- glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/arm/readelflib.c ++++ glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/arm/readelflib.c @@ -46,6 +46,12 @@ process_elf_file (const char *file_name, const char *lib, int *flag, if (elf32_header->e_flags & EF_ARM_ABI_FLOAT_HARD) *flag = FLAG_ARM_LIBHF|FLAG_ELF_LIBC6; @@ -81,10 +81,10 @@ index 81e5ccb..3efb613 100644 *flag = FLAG_ELF_LIBC6; } } -diff --git a/sysdeps/generic/ldconfig.h b/sysdeps/generic/ldconfig.h +diff --git glibc-2.17-c758a686/sysdeps/generic/ldconfig.h glibc-2.17-c758a686/sysdeps/generic/ldconfig.h index 57a9a46..91190aa 100644 ---- a/sysdeps/generic/ldconfig.h -+++ b/sysdeps/generic/ldconfig.h +--- glibc-2.17-c758a686/sysdeps/generic/ldconfig.h ++++ glibc-2.17-c758a686/sysdeps/generic/ldconfig.h @@ -36,6 +36,7 @@ #define FLAG_X8664_LIBX32 0x0800 #define FLAG_ARM_LIBHF 0x0900 diff --git a/SOURCES/glibc-rh905877.patch b/SOURCES/glibc-rh905877.patch index aacc25b..d95587f 100644 --- a/SOURCES/glibc-rh905877.patch +++ b/SOURCES/glibc-rh905877.patch @@ -38,11 +38,11 @@ tst-rxspencer-ARGS = --utf8 rxspencer/tests tst-rxspencer-ENV = LOCPATH=$(common-objpfx)localedata tst-pcre-ARGS = PCRE.tests -diff --git a/posix/bug-regex34.c b/posix/bug-regex34.c +diff --git glibc-2.17-c758a686/posix/bug-regex34.c glibc-2.17-c758a686/posix/bug-regex34.c new file mode 100644 index 0000000..bb3b613 --- /dev/null -+++ b/posix/bug-regex34.c ++++ glibc-2.17-c758a686/posix/bug-regex34.c @@ -0,0 +1,46 @@ +/* Test re_search with multi-byte characters in UTF-8. + Copyright (C) 2013 Free Software Foundation, Inc. @@ -90,10 +90,10 @@ index 0000000..bb3b613 + +#define TEST_FUNCTION do_test () +#include "../test-skeleton.c" -diff --git a/posix/regexec.c b/posix/regexec.c +diff --git glibc-2.17-c758a686/posix/regexec.c glibc-2.17-c758a686/posix/regexec.c index 7f2de85..5ca2bf6 100644 ---- a/posix/regexec.c -+++ b/posix/regexec.c +--- glibc-2.17-c758a686/posix/regexec.c ++++ glibc-2.17-c758a686/posix/regexec.c @@ -197,7 +197,7 @@ static int group_nodes_into_DFAstates (const re_dfa_t *dfa, static int check_node_accept (const re_match_context_t *mctx, const re_token_t *node, int idx) diff --git a/SOURCES/glibc-rh911307-2.patch b/SOURCES/glibc-rh911307-2.patch index 434fc77..3e6215e 100644 --- a/SOURCES/glibc-rh911307-2.patch +++ b/SOURCES/glibc-rh911307-2.patch @@ -14,10 +14,10 @@ __GI_memset/__GI_memmove symbols. sysdeps/wordsize-32/symbol-hacks.h | 2 ++ 3 files changed, 16 insertions(+), 1 deletion(-) -diff --git a/sysdeps/generic/symbol-hacks.h b/sysdeps/generic/symbol-hacks.h +diff --git glibc-2.17-c758a686/sysdeps/generic/symbol-hacks.h glibc-2.17-c758a686/sysdeps/generic/symbol-hacks.h index bc7b4c4..9eaf014 100644 ---- a/sysdeps/generic/symbol-hacks.h -+++ b/sysdeps/generic/symbol-hacks.h +--- glibc-2.17-c758a686/sysdeps/generic/symbol-hacks.h ++++ glibc-2.17-c758a686/sysdeps/generic/symbol-hacks.h @@ -1 +1,6 @@ -/* Fortunately nothing to do. */ +/* Some compiler optimizations may transform loops into memset/memmove @@ -26,10 +26,10 @@ index bc7b4c4..9eaf014 100644 +asm ("memmove = __GI_memmove"); +asm ("memset = __GI_memset"); +#endif -diff --git a/sysdeps/wordsize-32/symbol-hacks.h b/sysdeps/wordsize-32/symbol-hacks.h +diff --git glibc-2.17-c758a686/sysdeps/wordsize-32/symbol-hacks.h glibc-2.17-c758a686/sysdeps/wordsize-32/symbol-hacks.h index 52a14fc..ad5b231 100644 ---- a/sysdeps/wordsize-32/symbol-hacks.h -+++ b/sysdeps/wordsize-32/symbol-hacks.h +--- glibc-2.17-c758a686/sysdeps/wordsize-32/symbol-hacks.h ++++ glibc-2.17-c758a686/sysdeps/wordsize-32/symbol-hacks.h @@ -16,6 +16,8 @@ License along with the GNU C Library; if not, see . */ diff --git a/SOURCES/glibc-rh911307-3.patch b/SOURCES/glibc-rh911307-3.patch index 7179256..eff5f17 100644 --- a/SOURCES/glibc-rh911307-3.patch +++ b/SOURCES/glibc-rh911307-3.patch @@ -20,10 +20,10 @@ This backport excluded the benchmark tests from the original commit. string/test-memset.c | 1 + 9 files changed, 82 insertions(+) -diff --git a/config.h.in b/config.h.in +diff --git glibc-2.17-c758a686/config.h.in glibc-2.17-c758a686/config.h.in index f3fe6b8..b34aac2 100644 ---- a/config.h.in -+++ b/config.h.in +--- glibc-2.17-c758a686/config.h.in ++++ glibc-2.17-c758a686/config.h.in @@ -69,6 +69,9 @@ /* Define if the compiler supports __builtin_memset. */ #undef HAVE_BUILTIN_MEMSET @@ -34,10 +34,10 @@ index f3fe6b8..b34aac2 100644 /* Define if the regparm attribute shall be used for local functions (gcc on ix86 only). */ #undef USE_REGPARMS -diff --git a/configure b/configure +diff --git glibc-2.17-c758a686/configure glibc-2.17-c758a686/configure index 8799b7d..99e85be 100755 ---- a/configure -+++ b/configure +--- glibc-2.17-c758a686/configure ++++ glibc-2.17-c758a686/configure @@ -605,6 +605,7 @@ have_selinux have_libcap have_libaudit @@ -85,10 +85,10 @@ index 8799b7d..99e85be 100755 { $as_echo "$as_me:${as_lineno-$LINENO}: checking for libgd" >&5 $as_echo_n "checking for libgd... " >&6; } if test "$with_gd" != "no"; then -diff --git a/configure.in b/configure.in +diff --git glibc-2.17-c758a686/configure.in glibc-2.17-c758a686/configure.in index d369382..379e77a 100644 ---- a/configure.in -+++ b/configure.in +--- glibc-2.17-c758a686/configure.in ++++ glibc-2.17-c758a686/configure.in @@ -1928,6 +1928,24 @@ if test -n "$submachine"; then fi AC_SUBST(libc_cv_cc_submachine) @@ -114,10 +114,10 @@ index d369382..379e77a 100644 dnl Check whether we have the gd library available. AC_MSG_CHECKING(for libgd) if test "$with_gd" != "no"; then -diff --git a/include/libc-symbols.h b/include/libc-symbols.h +diff --git glibc-2.17-c758a686/include/libc-symbols.h glibc-2.17-c758a686/include/libc-symbols.h index a626d59..8f2c046 100644 ---- a/include/libc-symbols.h -+++ b/include/libc-symbols.h +--- glibc-2.17-c758a686/include/libc-symbols.h ++++ glibc-2.17-c758a686/include/libc-symbols.h @@ -783,4 +783,14 @@ for linking") #define libc_ifunc_hidden_def(name) \ libc_ifunc_hidden_def1 (__GI_##name, name) @@ -133,10 +133,10 @@ index a626d59..8f2c046 100644 +#endif + #endif /* libc-symbols.h */ -diff --git a/string/memmove.c b/string/memmove.c +diff --git glibc-2.17-c758a686/string/memmove.c glibc-2.17-c758a686/string/memmove.c index bf7dcc1..c59e7a9 100644 ---- a/string/memmove.c -+++ b/string/memmove.c +--- glibc-2.17-c758a686/string/memmove.c ++++ glibc-2.17-c758a686/string/memmove.c @@ -41,6 +41,7 @@ #endif @@ -145,10 +145,10 @@ index bf7dcc1..c59e7a9 100644 MEMMOVE (a1, a2, len) a1const void *a1; a2const void *a2; -diff --git a/string/memset.c b/string/memset.c +diff --git glibc-2.17-c758a686/string/memset.c glibc-2.17-c758a686/string/memset.c index 036cb5f..eb83c1b 100644 ---- a/string/memset.c -+++ b/string/memset.c +--- glibc-2.17-c758a686/string/memset.c ++++ glibc-2.17-c758a686/string/memset.c @@ -21,6 +21,7 @@ #undef memset @@ -157,10 +157,10 @@ index 036cb5f..eb83c1b 100644 memset (dstpp, c, len) void *dstpp; int c; -diff --git a/string/test-memmove.c b/string/test-memmove.c +diff --git glibc-2.17-c758a686/string/test-memmove.c glibc-2.17-c758a686/string/test-memmove.c index 13c5aff..0a969c3 100644 ---- a/string/test-memmove.c -+++ b/string/test-memmove.c +--- glibc-2.17-c758a686/string/test-memmove.c ++++ glibc-2.17-c758a686/string/test-memmove.c @@ -47,6 +47,7 @@ IMPL (memmove, 1) #endif @@ -169,10 +169,10 @@ index 13c5aff..0a969c3 100644 simple_memmove (char *dst, const char *src, size_t n) { char *ret = dst; -diff --git a/string/test-memset.c b/string/test-memset.c +diff --git glibc-2.17-c758a686/string/test-memset.c glibc-2.17-c758a686/string/test-memset.c index af85a28..0432030 100644 ---- a/string/test-memset.c -+++ b/string/test-memset.c +--- glibc-2.17-c758a686/string/test-memset.c ++++ glibc-2.17-c758a686/string/test-memset.c @@ -64,6 +64,7 @@ builtin_memset (char *s, int c, size_t n) #endif diff --git a/SOURCES/glibc-rh911307.patch b/SOURCES/glibc-rh911307.patch index 9eb0426..7889a10 100644 --- a/SOURCES/glibc-rh911307.patch +++ b/SOURCES/glibc-rh911307.patch @@ -21,9 +21,9 @@ # (CFLAGS-.ob): Likewise. # (CFLAGS-.oS): Likewise. # -diff -urN glibc-2.17-c758a686/string/Makefile tmp/glibc-2.17-c758a686/string/Makefile +diff -urN glibc-2.17-c758a686/string/Makefile glibc-2.17-c758a686/string/Makefile --- glibc-2.17-c758a686/string/Makefile 2013-02-27 18:07:34.618968703 -0500 -+++ tmp/glibc-2.17-c758a686/string/Makefile 2013-02-27 18:08:16.075796160 -0500 ++++ glibc-2.17-c758a686/string/Makefile 2013-02-27 18:08:16.075796160 -0500 @@ -78,6 +78,14 @@ CFLAGS-bug-strstr1.c = -fno-builtin CFLAGS-bug-strcasestr1.c = -fno-builtin @@ -39,9 +39,9 @@ diff -urN glibc-2.17-c758a686/string/Makefile tmp/glibc-2.17-c758a686/string/Mak ifeq ($(run-built-tests),yes) tests: $(objpfx)tst-svc.out $(objpfx)tst-svc.out: tst-svc.input $(objpfx)tst-svc -diff -urN glibc-2.17-c758a686/elf/Makefile tmp/glibc-2.17-c758a686/elf/Makefile +diff -urN glibc-2.17-c758a686/elf/Makefile glibc-2.17-c758a686/elf/Makefile --- glibc-2.17-c758a686/elf/Makefile 2013-02-27 18:07:13.812055613 -0500 -+++ tmp/glibc-2.17-c758a686/elf/Makefile 2013-02-27 18:08:16.075796160 -0500 ++++ glibc-2.17-c758a686/elf/Makefile 2013-02-27 18:08:16.075796160 -0500 @@ -432,6 +432,16 @@ CPPFLAGS-.os += $(if $(filter $(@F),$(patsubst %,%.os,$(all-rtld-routines))),\ -DNOT_IN_libc=1 -DIS_IN_rtld=1 -DIN_LIB=rtld) diff --git a/SOURCES/glibc-rh950093.patch b/SOURCES/glibc-rh950093.patch index 77990ac..91140ff 100644 --- a/SOURCES/glibc-rh950093.patch +++ b/SOURCES/glibc-rh950093.patch @@ -57,8 +57,8 @@ # # s390x: Move rtld link to /lib # -diff -urN glibc-2.17-c758a686.orig/config.make.in glibc-2.17-c758a686/config.make.in ---- glibc-2.17-c758a686.orig/config.make.in 2013-10-28 10:56:39.996320904 -0400 +diff -urN glibc-2.17-c758a686/config.make.in glibc-2.17-c758a686/config.make.in +--- glibc-2.17-c758a686/config.make.in 2013-10-28 10:56:39.996320904 -0400 +++ glibc-2.17-c758a686/config.make.in 2013-10-28 10:56:57.773317467 -0400 @@ -11,6 +11,7 @@ datadir = @datadir@ @@ -68,8 +68,8 @@ diff -urN glibc-2.17-c758a686.orig/config.make.in glibc-2.17-c758a686/config.mak localedir = @libc_cv_localedir@ sysconfdir = @libc_cv_sysconfdir@ libexecdir = @libexecdir@ -diff -urN glibc-2.17-c758a686.orig/configure glibc-2.17-c758a686/configure ---- glibc-2.17-c758a686.orig/configure 2013-10-28 10:56:39.935320916 -0400 +diff -urN glibc-2.17-c758a686/configure glibc-2.17-c758a686/configure +--- glibc-2.17-c758a686/configure 2013-10-28 10:56:39.935320916 -0400 +++ glibc-2.17-c758a686/configure 2013-10-28 10:56:57.775317467 -0400 @@ -594,6 +594,7 @@ libc_cv_localstatedir @@ -87,8 +87,8 @@ diff -urN glibc-2.17-c758a686.orig/configure glibc-2.17-c758a686/configure -diff -urN glibc-2.17-c758a686.orig/configure.in glibc-2.17-c758a686/configure.in ---- glibc-2.17-c758a686.orig/configure.in 2013-10-28 10:56:39.902320923 -0400 +diff -urN glibc-2.17-c758a686/configure.in glibc-2.17-c758a686/configure.in +--- glibc-2.17-c758a686/configure.in 2013-10-28 10:56:39.902320923 -0400 +++ glibc-2.17-c758a686/configure.in 2013-10-28 10:56:57.776317467 -0400 @@ -2127,6 +2127,7 @@ AC_SUBST(old_glibc_headers) @@ -98,8 +98,8 @@ diff -urN glibc-2.17-c758a686.orig/configure.in glibc-2.17-c758a686/configure.in AC_SUBST(libc_cv_localedir) AC_SUBST(libc_cv_sysconfdir) AC_SUBST(libc_cv_localstatedir) -diff -urN glibc-2.17-c758a686.orig/elf/Makefile glibc-2.17-c758a686/elf/Makefile ---- glibc-2.17-c758a686.orig/elf/Makefile 2013-10-28 10:56:40.127320879 -0400 +diff -urN glibc-2.17-c758a686/elf/Makefile glibc-2.17-c758a686/elf/Makefile +--- glibc-2.17-c758a686/elf/Makefile 2013-10-28 10:56:40.127320879 -0400 +++ glibc-2.17-c758a686/elf/Makefile 2013-10-28 10:56:57.776317467 -0400 @@ -66,7 +66,7 @@ ifeq (yes,$(build-shared)) @@ -142,8 +142,8 @@ diff -urN glibc-2.17-c758a686.orig/elf/Makefile glibc-2.17-c758a686/elf/Makefile -e 's%@VERSION@%$(version)%g' \ -e 's|@PKGVERSION@|$(PKGVERSION)|g' \ -e 's|@REPORT_BUGS_TO@|$(REPORT_BUGS_TO)|g' -diff -urN glibc-2.17-c758a686.orig/Makeconfig glibc-2.17-c758a686/Makeconfig ---- glibc-2.17-c758a686.orig/Makeconfig 2013-10-28 10:56:40.434320820 -0400 +diff -urN glibc-2.17-c758a686/Makeconfig glibc-2.17-c758a686/Makeconfig +--- glibc-2.17-c758a686/Makeconfig 2013-10-28 10:56:40.434320820 -0400 +++ glibc-2.17-c758a686/Makeconfig 2013-10-28 10:56:57.772317467 -0400 @@ -148,12 +148,18 @@ endif @@ -174,8 +174,8 @@ diff -urN glibc-2.17-c758a686.orig/Makeconfig glibc-2.17-c758a686/Makeconfig endif endif ifndef link-libc -diff -urN glibc-2.17-c758a686.orig/Makerules glibc-2.17-c758a686/Makerules ---- glibc-2.17-c758a686.orig/Makerules 2013-10-28 10:56:39.928320918 -0400 +diff -urN glibc-2.17-c758a686/Makerules glibc-2.17-c758a686/Makerules +--- glibc-2.17-c758a686/Makerules 2013-10-28 10:56:39.928320918 -0400 +++ glibc-2.17-c758a686/Makerules 2013-10-28 10:56:57.777317467 -0400 @@ -873,7 +873,7 @@ symbolic-link-prog := $(common-objpfx)elf/sln @@ -204,8 +204,8 @@ diff -urN glibc-2.17-c758a686.orig/Makerules glibc-2.17-c758a686/Makerules ) > $@.new mv -f $@.new $@ -diff -urN glibc-2.17-c758a686.orig/ports/sysdeps/unix/sysv/linux/aarch64/configure glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/aarch64/configure ---- glibc-2.17-c758a686.orig/ports/sysdeps/unix/sysv/linux/aarch64/configure 2013-10-28 10:56:39.873320928 -0400 +diff -urN glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/aarch64/configure glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/aarch64/configure +--- glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/aarch64/configure 2013-10-28 10:56:39.873320928 -0400 +++ glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/aarch64/configure 2013-10-28 10:57:26.270311964 -0400 @@ -1,3 +1,17 @@ # This file is generated from configure.in by Autoconf. DO NOT EDIT! @@ -225,8 +225,8 @@ diff -urN glibc-2.17-c758a686.orig/ports/sysdeps/unix/sysv/linux/aarch64/configu + fi + ;; +esac -diff -urN glibc-2.17-c758a686.orig/ports/sysdeps/unix/sysv/linux/aarch64/configure.in glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/aarch64/configure.in ---- glibc-2.17-c758a686.orig/ports/sysdeps/unix/sysv/linux/aarch64/configure.in 2013-10-28 10:56:39.873320928 -0400 +diff -urN glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/aarch64/configure.in glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/aarch64/configure.in +--- glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/aarch64/configure.in 2013-10-28 10:56:39.873320928 -0400 +++ glibc-2.17-c758a686/ports/sysdeps/unix/sysv/linux/aarch64/configure.in 2013-10-28 10:57:49.162307556 -0400 @@ -2,3 +2,16 @@ # Local configure fragment for sysdeps/unix/sysv/linux/aarch64. @@ -245,8 +245,8 @@ diff -urN glibc-2.17-c758a686.orig/ports/sysdeps/unix/sysv/linux/aarch64/configu + fi + ;; +esac -diff -urN glibc-2.17-c758a686.orig/scripts/rellns-sh glibc-2.17-c758a686/scripts/rellns-sh ---- glibc-2.17-c758a686.orig/scripts/rellns-sh 2013-10-28 10:56:40.081320888 -0400 +diff -urN glibc-2.17-c758a686/scripts/rellns-sh glibc-2.17-c758a686/scripts/rellns-sh +--- glibc-2.17-c758a686/scripts/rellns-sh 2013-10-28 10:56:40.081320888 -0400 +++ glibc-2.17-c758a686/scripts/rellns-sh 2013-10-28 10:56:57.776317467 -0400 @@ -16,8 +16,17 @@ # You should have received a copy of the GNU General Public License @@ -277,10 +277,10 @@ diff -urN glibc-2.17-c758a686.orig/scripts/rellns-sh glibc-2.17-c758a686/scripts +else + ln -s $rfrom$to $2 +fi -diff --git a/sysdeps/gnu/configure b/sysdeps/gnu/configure +diff --git glibc-2.17-c758a686/sysdeps/gnu/configure glibc-2.17-c758a686/sysdeps/gnu/configure index 26327ca..70aaa90 100644 ---- a/sysdeps/gnu/configure -+++ b/sysdeps/gnu/configure +--- glibc-2.17-c758a686/sysdeps/gnu/configure ++++ glibc-2.17-c758a686/sysdeps/gnu/configure @@ -9,12 +9,17 @@ case "$prefix" in /usr | /usr/) @@ -301,10 +301,10 @@ index 26327ca..70aaa90 100644 if test "$libdir" = '${exec_prefix}/lib'; then libdir='${exec_prefix}/lib64'; # Locale data can be shared between 32bit and 64bit libraries -diff --git a/sysdeps/gnu/configure.in b/sysdeps/gnu/configure.in +diff --git glibc-2.17-c758a686/sysdeps/gnu/configure.in glibc-2.17-c758a686/sysdeps/gnu/configure.in index b8fd74c..ce251df 100644 ---- a/sysdeps/gnu/configure.in -+++ b/sysdeps/gnu/configure.in +--- glibc-2.17-c758a686/sysdeps/gnu/configure.in ++++ glibc-2.17-c758a686/sysdeps/gnu/configure.in @@ -9,12 +9,17 @@ GLIBC_PROVIDES dnl See aclocal.m4 in the top level source directory. case "$prefix" in /usr | /usr/) diff --git a/SOURCES/glibc-rh952799.patch b/SOURCES/glibc-rh952799.patch index 61ddbe8..625da58 100644 --- a/SOURCES/glibc-rh952799.patch +++ b/SOURCES/glibc-rh952799.patch @@ -21,9 +21,9 @@ # * wcsmbs/btowc.c (__btowc): Demangle btowc_fct before checking # for NULL. # -diff -Nrup a/iconv/gconv_cache.c b/iconv/gconv_cache.c ---- a/iconv/gconv_cache.c 2012-12-24 22:02:13.000000000 -0500 -+++ b/iconv/gconv_cache.c 2013-04-30 11:34:20.112389987 -0400 +diff -Nru glibc-2.17-c758a686/iconv/gconv_cache.c glibc-2.17-c758a686/iconv/gconv_cache.c +--- glibc-2.17-c758a686/iconv/gconv_cache.c 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/iconv/gconv_cache.c 2013-04-30 11:34:20.112389987 -0400 @@ -207,17 +207,16 @@ find_module (const char *directory, cons result->__data = NULL; @@ -47,9 +47,9 @@ diff -Nrup a/iconv/gconv_cache.c b/iconv/gconv_cache.c #endif } } -diff -Nrup a/iconv/gconv_db.c b/iconv/gconv_db.c ---- a/iconv/gconv_db.c 2012-12-24 22:02:13.000000000 -0500 -+++ b/iconv/gconv_db.c 2013-04-30 11:32:42.700592914 -0400 +diff -Nru glibc-2.17-c758a686/iconv/gconv_db.c glibc-2.17-c758a686/iconv/gconv_db.c +--- glibc-2.17-c758a686/iconv/gconv_db.c 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/iconv/gconv_db.c 2013-04-30 11:32:42.700592914 -0400 @@ -179,16 +179,15 @@ free_derivation (void *p) size_t cnt; @@ -140,9 +140,9 @@ diff -Nrup a/iconv/gconv_db.c b/iconv/gconv_db.c #endif } } -diff -Nrup a/iconv/gconv_dl.c b/iconv/gconv_dl.c ---- a/iconv/gconv_dl.c 2012-12-24 22:02:13.000000000 -0500 -+++ b/iconv/gconv_dl.c 2013-04-30 11:32:42.701592922 -0400 +diff -Nru glibc-2.17-c758a686/iconv/gconv_dl.c glibc-2.17-c758a686/iconv/gconv_dl.c +--- glibc-2.17-c758a686/iconv/gconv_dl.c 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/iconv/gconv_dl.c 2013-04-30 11:32:42.701592922 -0400 @@ -132,10 +132,8 @@ __gconv_find_shlib (const char *name) #ifdef PTR_MANGLE @@ -156,9 +156,9 @@ diff -Nrup a/iconv/gconv_dl.c b/iconv/gconv_dl.c #endif /* We have succeeded in loading the shared object. */ -diff -Nrup a/wcsmbs/btowc.c b/wcsmbs/btowc.c ---- a/wcsmbs/btowc.c 2012-12-24 22:02:13.000000000 -0500 -+++ b/wcsmbs/btowc.c 2013-04-30 11:32:42.701592922 -0400 +diff -Nru glibc-2.17-c758a686/wcsmbs/btowc.c glibc-2.17-c758a686/wcsmbs/btowc.c +--- glibc-2.17-c758a686/wcsmbs/btowc.c 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/wcsmbs/btowc.c 2013-04-30 11:32:42.701592922 -0400 @@ -47,15 +47,15 @@ __btowc (c) /* Get the conversion functions. */ fcts = get_gconv_fcts (_NL_CURRENT_DATA (LC_CTYPE)); diff --git a/SOURCES/glibc-rh958652.patch b/SOURCES/glibc-rh958652.patch index de10ded..fefec92 100644 --- a/SOURCES/glibc-rh958652.patch +++ b/SOURCES/glibc-rh958652.patch @@ -14,10 +14,10 @@ Date: Tue May 21 21:54:41 2013 +0530 found', we set h_errno as NETDB_INTERNAL and let errno be the identifier for the exact error. -diff --git a/nss/getXXbyYY_r.c b/nss/getXXbyYY_r.c +diff --git glibc-2.17-c758a686/nss/getXXbyYY_r.c glibc-2.17-c758a686/nss/getXXbyYY_r.c index 44d00f4..33e63d4 100644 ---- a/nss/getXXbyYY_r.c -+++ b/nss/getXXbyYY_r.c +--- glibc-2.17-c758a686/nss/getXXbyYY_r.c ++++ glibc-2.17-c758a686/nss/getXXbyYY_r.c @@ -287,10 +287,10 @@ done: #endif *result = status == NSS_STATUS_SUCCESS ? resbuf : NULL; @@ -33,10 +33,10 @@ index 44d00f4..33e63d4 100644 *h_errnop = NETDB_INTERNAL; else if (status != NSS_STATUS_SUCCESS && !any_service) /* We were not able to use any service. */ -diff --git a/sysdeps/posix/getaddrinfo.c b/sysdeps/posix/getaddrinfo.c +diff --git glibc-2.17-c758a686/sysdeps/posix/getaddrinfo.c glibc-2.17-c758a686/sysdeps/posix/getaddrinfo.c index ab135ad..7bb3ded 100644 ---- a/sysdeps/posix/getaddrinfo.c -+++ b/sysdeps/posix/getaddrinfo.c +--- glibc-2.17-c758a686/sysdeps/posix/getaddrinfo.c ++++ glibc-2.17-c758a686/sysdeps/posix/getaddrinfo.c @@ -1036,7 +1036,15 @@ gaih_inet (const char *name, const struct gaih_service *service, } } diff --git a/SOURCES/glibc-rh959034.patch b/SOURCES/glibc-rh959034.patch index b01655e..aecacc4 100644 --- a/SOURCES/glibc-rh959034.patch +++ b/SOURCES/glibc-rh959034.patch @@ -6,10 +6,10 @@ * intl/loadmsgcat.c (_nl_load_domain): If _nl_find_msg returns -1 abort loading the domain. -diff --git a/intl/dcigettext.c b/intl/dcigettext.c +diff --git glibc-2.17-c758a686/intl/dcigettext.c glibc-2.17-c758a686/intl/dcigettext.c index 110307b..f4aa215 100644 ---- a/intl/dcigettext.c -+++ b/intl/dcigettext.c +--- glibc-2.17-c758a686/intl/dcigettext.c ++++ glibc-2.17-c758a686/intl/dcigettext.c @@ -638,6 +638,11 @@ DCIGETTEXT (domainname, msgid1, msgid2, plural, n, category) retval = _nl_find_msg (domain->successor[cnt], binding, msgid1, 1, &retlen); @@ -53,10 +53,10 @@ index 110307b..f4aa215 100644 # endif } if (__builtin_expect (newmem == NULL, 0)) -diff --git a/intl/loadmsgcat.c b/intl/loadmsgcat.c +diff --git glibc-2.17-c758a686/intl/loadmsgcat.c glibc-2.17-c758a686/intl/loadmsgcat.c index e4b7b38..ac90ed1 100644 ---- a/intl/loadmsgcat.c -+++ b/intl/loadmsgcat.c +--- glibc-2.17-c758a686/intl/loadmsgcat.c ++++ glibc-2.17-c758a686/intl/loadmsgcat.c @@ -1237,7 +1237,7 @@ _nl_load_domain (domain_file, domainbinding) default: /* This is an invalid revision. */ diff --git a/SOURCES/glibc-rh966259.patch b/SOURCES/glibc-rh966259.patch index b48abbf..3473eae 100644 --- a/SOURCES/glibc-rh966259.patch +++ b/SOURCES/glibc-rh966259.patch @@ -7,10 +7,10 @@ Date: Thu May 23 13:28:00 2013 -0600 just NFS file systems. * sysdeps/gnu/errlist.c: Regenerated. -diff --git a/manual/errno.texi b/manual/errno.texi +diff --git glibc-2.17-c758a686/manual/errno.texi glibc-2.17-c758a686/manual/errno.texi index 2a3c004..6c9fa86 100644 ---- a/manual/errno.texi -+++ b/manual/errno.texi +--- glibc-2.17-c758a686/manual/errno.texi ++++ glibc-2.17-c758a686/manual/errno.texi @@ -739,13 +739,14 @@ The user's disk quota was exceeded. @end deftypevr @@ -31,10 +31,10 @@ index 2a3c004..6c9fa86 100644 @end deftypevr @comment errno.h -diff --git a/sysdeps/gnu/errlist.c b/sysdeps/gnu/errlist.c +diff --git glibc-2.17-c758a686/sysdeps/gnu/errlist.c glibc-2.17-c758a686/sysdeps/gnu/errlist.c index e3d2faf..bbd45f2 100644 ---- a/sysdeps/gnu/errlist.c -+++ b/sysdeps/gnu/errlist.c +--- glibc-2.17-c758a686/sysdeps/gnu/errlist.c ++++ glibc-2.17-c758a686/sysdeps/gnu/errlist.c @@ -780,11 +780,12 @@ TRANS The user's disk quota was exceeded. */ #endif #ifdef ESTALE diff --git a/SOURCES/glibc-rh966633.patch b/SOURCES/glibc-rh966633.patch index d3e4f45..011a09b 100644 --- a/SOURCES/glibc-rh966633.patch +++ b/SOURCES/glibc-rh966633.patch @@ -4,10 +4,10 @@ Date: Mon Jun 10 14:39:09 2013 +0200 Fix handling of netgroup cache in nscd -diff --git a/nscd/connections.c b/nscd/connections.c +diff --git glibc-2.17-c758a686/nscd/connections.c glibc-2.17-c758a686/nscd/connections.c index 7099215..69e3e7d 100644 ---- a/nscd/connections.c -+++ b/nscd/connections.c +--- glibc-2.17-c758a686/nscd/connections.c ++++ glibc-2.17-c758a686/nscd/connections.c @@ -1779,7 +1779,7 @@ nscd_run_worker (void *p) else { @@ -25,10 +25,10 @@ index 7099215..69e3e7d 100644 if (__builtin_expect (debug_level, 0) > 0) { -diff --git a/nscd/netgroupcache.c b/nscd/netgroupcache.c +diff --git glibc-2.17-c758a686/nscd/netgroupcache.c glibc-2.17-c758a686/nscd/netgroupcache.c index 2d6c5aa..dd06ce4 100644 ---- a/nscd/netgroupcache.c -+++ b/nscd/netgroupcache.c +--- glibc-2.17-c758a686/nscd/netgroupcache.c ++++ glibc-2.17-c758a686/nscd/netgroupcache.c @@ -192,18 +192,26 @@ addgetnetgrentX (struct database_dyn *db, int fd, request_header *req, const char *nuser = data.val.triple.user; const char *ndomain = data.val.triple.domain; @@ -80,10 +80,10 @@ index 2d6c5aa..dd06ce4 100644 } char *wp = buffer + buffilled; -diff --git a/nscd/nscd_netgroup.c b/nscd/nscd_netgroup.c +diff --git glibc-2.17-c758a686/nscd/nscd_netgroup.c glibc-2.17-c758a686/nscd/nscd_netgroup.c index cac4ebf..acb2c81 100644 ---- a/nscd/nscd_netgroup.c -+++ b/nscd/nscd_netgroup.c +--- glibc-2.17-c758a686/nscd/nscd_netgroup.c ++++ glibc-2.17-c758a686/nscd/nscd_netgroup.c @@ -48,7 +48,7 @@ __nscd_setnetgrent (const char *group, struct __netgrent *datap) { int gc_cycle; diff --git a/SOURCES/glibc-rh970791.patch b/SOURCES/glibc-rh970791.patch index 5a3b7a0..6ae96ec 100644 --- a/SOURCES/glibc-rh970791.patch +++ b/SOURCES/glibc-rh970791.patch @@ -18,9 +18,9 @@ # * elf/tst-auditmod9a.c: New file. # * elf/tst-auditmod9b.c: New file. # -diff -urN glibc-2.12-2-gc4ccff1.orig/elf/dl-tls.c glibc-2.12-2-gc4ccff1/elf/dl-tls.c ---- glibc-2.12-2-gc4ccff1.orig/elf/dl-tls.c 2013-04-24 16:06:10.410756438 -0400 -+++ glibc-2.12-2-gc4ccff1/elf/dl-tls.c 2013-04-24 16:06:49.092604707 -0400 +diff -urN glibc-2.17-c758a686/elf/dl-tls.c glibc-2.17-c758a686/elf/dl-tls.c +--- glibc-2.17-c758a686/elf/dl-tls.c 2013-04-24 16:06:10.410756438 -0400 ++++ glibc-2.17-c758a686/elf/dl-tls.c 2013-04-24 16:06:49.092604707 -0400 @@ -109,6 +109,28 @@ } @@ -58,9 +58,9 @@ diff -urN glibc-2.12-2-gc4ccff1.orig/elf/dl-tls.c glibc-2.12-2-gc4ccff1/elf/dl-t maxgen = MAX (maxgen, listp->slotinfo[cnt].gen); if (map->l_tls_offset == NO_TLS_OFFSET -diff -urN glibc-2.12-2-gc4ccff1.orig/elf/Makefile glibc-2.12-2-gc4ccff1/elf/Makefile ---- glibc-2.12-2-gc4ccff1.orig/elf/Makefile 2013-04-24 16:06:10.408756448 -0400 -+++ glibc-2.12-2-gc4ccff1/elf/Makefile 2013-04-24 16:07:29.475457962 -0400 +diff -urN glibc-2.17-c758a686/elf/Makefile glibc-2.17-c758a686/elf/Makefile +--- glibc-2.17-c758a686/elf/Makefile 2013-04-24 16:06:10.408756448 -0400 ++++ glibc-2.17-c758a686/elf/Makefile 2013-04-24 16:07:29.475457962 -0400 @@ -198,7 +200,7 @@ tst-dlmodcount tst-dlopenrpath tst-deep1 \ tst-dlmopen1 tst-dlmopen2 tst-dlmopen3 \ @@ -100,9 +100,9 @@ diff -urN glibc-2.12-2-gc4ccff1.orig/elf/Makefile glibc-2.12-2-gc4ccff1/elf/Make $(objpfx)tst-audit8: $(common-objpfx)math/libm.so $(objpfx)tst-audit8.out: $(objpfx)tst-auditmod1.so tst-audit8-ENV = LD_AUDIT=$(objpfx)tst-auditmod1.so -diff -urN glibc-2.12-2-gc4ccff1.orig/elf/rtld.c glibc-2.12-2-gc4ccff1/elf/rtld.c ---- glibc-2.12-2-gc4ccff1.orig/elf/rtld.c 2013-04-24 16:06:10.410756438 -0400 -+++ glibc-2.12-2-gc4ccff1/elf/rtld.c 2013-04-24 16:06:49.096604693 -0400 +diff -urN glibc-2.17-c758a686/elf/rtld.c glibc-2.17-c758a686/elf/rtld.c +--- glibc-2.17-c758a686/elf/rtld.c 2013-04-24 16:06:10.410756438 -0400 ++++ glibc-2.17-c758a686/elf/rtld.c 2013-04-24 16:06:49.096604693 -0400 @@ -1637,6 +1637,10 @@ } } @@ -124,9 +124,9 @@ diff -urN glibc-2.12-2-gc4ccff1.orig/elf/rtld.c glibc-2.12-2-gc4ccff1/elf/rtld.c ++GL(dl_tls_generation); /* Now that we have completed relocation, the initializer data -diff -urN glibc-2.12-2-gc4ccff1.orig/elf/tst-audit9.c glibc-2.12-2-gc4ccff1/elf/tst-audit9.c ---- glibc-2.12-2-gc4ccff1.orig/elf/tst-audit9.c 1969-12-31 19:00:00.000000000 -0500 -+++ glibc-2.12-2-gc4ccff1/elf/tst-audit9.c 2013-04-24 16:06:49.096604693 -0400 +diff -urN glibc-2.17-c758a686/elf/tst-audit9.c glibc-2.17-c758a686/elf/tst-audit9.c +--- glibc-2.17-c758a686/elf/tst-audit9.c 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.17-c758a686/elf/tst-audit9.c 2013-04-24 16:06:49.096604693 -0400 @@ -0,0 +1,8 @@ +#include + @@ -136,9 +136,9 @@ diff -urN glibc-2.12-2-gc4ccff1.orig/elf/tst-audit9.c glibc-2.12-2-gc4ccff1/elf/ + int (*fp)(void) = dlsym(h, "f"); + return fp() - 1; +} -diff -urN glibc-2.12-2-gc4ccff1.orig/elf/tst-auditmod9a.c glibc-2.12-2-gc4ccff1/elf/tst-auditmod9a.c ---- glibc-2.12-2-gc4ccff1.orig/elf/tst-auditmod9a.c 1969-12-31 19:00:00.000000000 -0500 -+++ glibc-2.12-2-gc4ccff1/elf/tst-auditmod9a.c 2013-04-24 16:06:49.097604689 -0400 +diff -urN glibc-2.17-c758a686/elf/tst-auditmod9a.c glibc-2.17-c758a686/elf/tst-auditmod9a.c +--- glibc-2.17-c758a686/elf/tst-auditmod9a.c 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.17-c758a686/elf/tst-auditmod9a.c 2013-04-24 16:06:49.097604689 -0400 @@ -0,0 +1,16 @@ +#include + @@ -156,9 +156,9 @@ diff -urN glibc-2.12-2-gc4ccff1.orig/elf/tst-auditmod9a.c glibc-2.12-2-gc4ccff1/ + ++var; +} + -diff -urN glibc-2.12-2-gc4ccff1.orig/elf/tst-auditmod9b.c glibc-2.12-2-gc4ccff1/elf/tst-auditmod9b.c ---- glibc-2.12-2-gc4ccff1.orig/elf/tst-auditmod9b.c 1969-12-31 19:00:00.000000000 -0500 -+++ glibc-2.12-2-gc4ccff1/elf/tst-auditmod9b.c 2013-04-24 16:06:49.097604689 -0400 +diff -urN glibc-2.17-c758a686/elf/tst-auditmod9b.c glibc-2.17-c758a686/elf/tst-auditmod9b.c +--- glibc-2.17-c758a686/elf/tst-auditmod9b.c 1969-12-31 19:00:00.000000000 -0500 ++++ glibc-2.17-c758a686/elf/tst-auditmod9b.c 2013-04-24 16:06:49.097604689 -0400 @@ -0,0 +1,6 @@ +__thread int a; + @@ -166,9 +166,9 @@ diff -urN glibc-2.12-2-gc4ccff1.orig/elf/tst-auditmod9b.c glibc-2.12-2-gc4ccff1/ +{ + return ++a; +} -diff -urN glibc-2.12-2-gc4ccff1.orig/sysdeps/generic/ldsodefs.h glibc-2.12-2-gc4ccff1/sysdeps/generic/ldsodefs.h ---- glibc-2.12-2-gc4ccff1.orig/sysdeps/generic/ldsodefs.h 2013-04-24 16:06:10.545755798 -0400 -+++ glibc-2.12-2-gc4ccff1/sysdeps/generic/ldsodefs.h 2013-04-24 16:06:49.098604686 -0400 +diff -urN glibc-2.17-c758a686/sysdeps/generic/ldsodefs.h glibc-2.17-c758a686/sysdeps/generic/ldsodefs.h +--- glibc-2.17-c758a686/sysdeps/generic/ldsodefs.h 2013-04-24 16:06:10.545755798 -0400 ++++ glibc-2.17-c758a686/sysdeps/generic/ldsodefs.h 2013-04-24 16:06:49.098604686 -0400 @@ -1031,6 +1031,9 @@ /* Determine next available module ID. */ extern size_t _dl_next_tls_modid (void) internal_function attribute_hidden; diff --git a/SOURCES/glibc-rh971589.patch b/SOURCES/glibc-rh971589.patch index 5caa746..b2c10fa 100644 --- a/SOURCES/glibc-rh971589.patch +++ b/SOURCES/glibc-rh971589.patch @@ -8,7 +8,7 @@ # AUTH_DES and FIPS 140-2. # (DES Encryption): Add cindex FIPS 46-3. # ---- glibc-2.17-c758a686.orig/manual/crypt.texi 2013-09-13 03:02:40.891987663 -0400 +--- glibc-2.17-c758a686/manual/crypt.texi 2013-09-13 03:02:40.891987663 -0400 +++ glibc-2.17-c758a686/manual/crypt.texi 2013-09-13 03:04:02.082380415 -0400 @@ -30,8 +30,15 @@ and the other based on the Data Encryption Standard (DES) that is diff --git a/SOURCES/glibc-rh977110-2.patch b/SOURCES/glibc-rh977110-2.patch index cc36057..6596242 100644 --- a/SOURCES/glibc-rh977110-2.patch +++ b/SOURCES/glibc-rh977110-2.patch @@ -10,10 +10,10 @@ Subject: [PATCH 19/42] PowerPC: gettimeofday optimization by using IFUNC sysdeps/unix/sysv/linux/powerpc/gettimeofday.c | 48 +++++++++++++++++------- 3 files changed, 52 insertions(+), 13 deletions(-) -diff --git a/sysdeps/unix/sysv/linux/powerpc/bits/libc-vdso.h b/sysdeps/unix/sysv/linux/powerpc/bits/libc-vdso.h +diff --git glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/bits/libc-vdso.h glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/bits/libc-vdso.h index cda8491..e4ae630 100644 ---- a/sysdeps/unix/sysv/linux/powerpc/bits/libc-vdso.h -+++ b/sysdeps/unix/sysv/linux/powerpc/bits/libc-vdso.h +--- glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/bits/libc-vdso.h ++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/bits/libc-vdso.h @@ -32,6 +32,16 @@ extern void *__vdso_get_tbfreq; extern void *__vdso_getcpu; @@ -31,10 +31,10 @@ index cda8491..e4ae630 100644 #endif #endif /* _LIBC_VDSO_H */ -diff --git a/sysdeps/unix/sysv/linux/powerpc/gettimeofday.c b/sysdeps/unix/sysv/linux/powerpc/gettimeofday.c +diff --git glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/gettimeofday.c glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/gettimeofday.c index 7376135..4f4abbd 100644 ---- a/sysdeps/unix/sysv/linux/powerpc/gettimeofday.c -+++ b/sysdeps/unix/sysv/linux/powerpc/gettimeofday.c +--- glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/gettimeofday.c ++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/gettimeofday.c @@ -15,26 +15,48 @@ License along with the GNU C Library; if not, see . */ diff --git a/SOURCES/glibc-rh977110.patch b/SOURCES/glibc-rh977110.patch index 01a21c3..3522ddb 100644 --- a/SOURCES/glibc-rh977110.patch +++ b/SOURCES/glibc-rh977110.patch @@ -1,6 +1,6 @@ -diff -pruN glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/bits/libc-vdso.h glibc-2.17-c758a686.new/sysdeps/unix/sysv/linux/powerpc/bits/libc-vdso.h +diff -pruN glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/bits/libc-vdso.h glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/bits/libc-vdso.h --- glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/bits/libc-vdso.h 2012-12-25 08:32:13.000000000 +0530 -+++ glibc-2.17-c758a686.new/sysdeps/unix/sysv/linux/powerpc/bits/libc-vdso.h 2013-08-05 16:56:30.295860152 +0530 ++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/bits/libc-vdso.h 2013-08-05 16:56:30.295860152 +0530 @@ -30,6 +30,8 @@ extern void *__vdso_clock_getres; extern void *__vdso_get_tbfreq; @@ -10,9 +10,9 @@ diff -pruN glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/bits/libc-vdso.h #endif #endif /* _LIBC_VDSO_H */ -diff -pruN glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/init-first.c glibc-2.17-c758a686.new/sysdeps/unix/sysv/linux/powerpc/init-first.c +diff -pruN glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/init-first.c glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/init-first.c --- glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/init-first.c 2012-12-25 08:32:13.000000000 +0530 -+++ glibc-2.17-c758a686.new/sysdeps/unix/sysv/linux/powerpc/init-first.c 2013-08-05 16:56:30.318860151 +0530 ++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/init-first.c 2013-08-05 16:56:30.318860151 +0530 @@ -27,6 +27,7 @@ void *__vdso_gettimeofday attribute_hidd void *__vdso_clock_gettime; void *__vdso_clock_getres; @@ -30,9 +30,9 @@ diff -pruN glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/init-first.c glib } # define VDSO_SETUP _libc_vdso_platform_setup -diff -pruN glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/sched_getcpu.c glibc-2.17-c758a686.new/sysdeps/unix/sysv/linux/powerpc/sched_getcpu.c +diff -pruN glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/sched_getcpu.c glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/sched_getcpu.c --- glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/sched_getcpu.c 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.17-c758a686.new/sysdeps/unix/sysv/linux/powerpc/sched_getcpu.c 2013-08-05 16:56:30.319860151 +0530 ++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/sched_getcpu.c 2013-08-05 16:56:30.319860151 +0530 @@ -0,0 +1,30 @@ +/* Copyright (C) 2013 Free Software Foundation, Inc. + This file is part of the GNU C Library. @@ -64,9 +64,9 @@ diff -pruN glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/sched_getcpu.c gl + + return r == -1 ? r : cpu; +} -diff -pruN glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/Versions glibc-2.17-c758a686.new/sysdeps/unix/sysv/linux/powerpc/Versions +diff -pruN glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/Versions glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/Versions --- glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/Versions 2012-12-25 08:32:13.000000000 +0530 -+++ glibc-2.17-c758a686.new/sysdeps/unix/sysv/linux/powerpc/Versions 2013-08-05 16:56:30.294860152 +0530 ++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/powerpc/Versions 2013-08-05 16:56:30.294860152 +0530 @@ -3,5 +3,6 @@ libc { __vdso_get_tbfreq; __vdso_clock_gettime; diff --git a/SOURCES/glibc-rh977870.patch b/SOURCES/glibc-rh977870.patch index 5f441db..87931c7 100644 --- a/SOURCES/glibc-rh977870.patch +++ b/SOURCES/glibc-rh977870.patch @@ -16,10 +16,10 @@ Date: Wed Apr 3 10:56:45 2013 +0530 newer kernels, we add an ifdef so that in future the code block gets rmeoved completely. -diff --git a/sysdeps/unix/sysv/linux/kernel-features.h b/sysdeps/unix/sysv/linux/kernel-features.h +diff --git glibc-2.17-c758a686/sysdeps/unix/sysv/linux/kernel-features.h glibc-2.17-c758a686/sysdeps/unix/sysv/linux/kernel-features.h index 8fdff7e..ccd4c59 100644 ---- a/sysdeps/unix/sysv/linux/kernel-features.h -+++ b/sysdeps/unix/sysv/linux/kernel-features.h +--- glibc-2.17-c758a686/sysdeps/unix/sysv/linux/kernel-features.h ++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/kernel-features.h @@ -221,3 +221,9 @@ #if defined __x86_64__ && __LINUX_KERNEL_VERSION >= 0x030100 # define __ASSUME_GETCPU_SYSCALL 1 @@ -30,10 +30,10 @@ index 8fdff7e..ccd4c59 100644 +#if __LINUX_KERNEL_VERSION >= 0x02061d +# define __ASSUME_XFS_RESTRICTED_CHOWN 1 +#endif -diff --git a/sysdeps/unix/sysv/linux/pathconf.c b/sysdeps/unix/sysv/linux/pathconf.c +diff --git glibc-2.17-c758a686/sysdeps/unix/sysv/linux/pathconf.c glibc-2.17-c758a686/sysdeps/unix/sysv/linux/pathconf.c index de91a45..723d234 100644 ---- a/sysdeps/unix/sysv/linux/pathconf.c -+++ b/sysdeps/unix/sysv/linux/pathconf.c +--- glibc-2.17-c758a686/sysdeps/unix/sysv/linux/pathconf.c ++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/pathconf.c @@ -289,11 +289,16 @@ __statfs_chown_restricted (int result, const struct statfs *fsbuf) return -1; } diff --git a/SOURCES/glibc-rh977872.patch b/SOURCES/glibc-rh977872.patch index f1c50ff..145d098 100644 --- a/SOURCES/glibc-rh977872.patch +++ b/SOURCES/glibc-rh977872.patch @@ -10,10 +10,10 @@ Date: Thu Mar 7 12:15:08 2013 +0530 since the number of bytes that are atomically written is still PIPE_BUF on Linux. -diff --git a/posix/Makefile b/posix/Makefile +diff --git glibc-2.17-c758a686/posix/Makefile glibc-2.17-c758a686/posix/Makefile index 2cacd21..658c47e 100644 ---- a/posix/Makefile -+++ b/posix/Makefile +--- glibc-2.17-c758a686/posix/Makefile ++++ glibc-2.17-c758a686/posix/Makefile @@ -86,7 +86,8 @@ tests := tstgetopt testfnm runtests runptests \ tst-rfc3484-3 \ tst-getaddrinfo3 tst-fnmatch2 tst-cpucount tst-cpuset \ @@ -24,11 +24,11 @@ index 2cacd21..658c47e 100644 xtests := bug-ga2 ifeq (yes,$(build-shared)) test-srcs := globtest -diff --git a/posix/tst-pathconf.c b/posix/tst-pathconf.c +diff --git glibc-2.17-c758a686/posix/tst-pathconf.c glibc-2.17-c758a686/posix/tst-pathconf.c new file mode 100644 index 0000000..7627a24 --- /dev/null -+++ b/posix/tst-pathconf.c ++++ glibc-2.17-c758a686/posix/tst-pathconf.c @@ -0,0 +1,176 @@ +/* Test that values of pathconf and fpathconf are consistent for a file. + Copyright (C) 2013 Free Software Foundation, Inc. @@ -206,10 +206,10 @@ index 0000000..7627a24 + + return ret; +} -diff --git a/sysdeps/unix/sysv/linux/fpathconf.c b/sysdeps/unix/sysv/linux/fpathconf.c +diff --git glibc-2.17-c758a686/sysdeps/unix/sysv/linux/fpathconf.c glibc-2.17-c758a686/sysdeps/unix/sysv/linux/fpathconf.c index c971644..e8c4dc9 100644 ---- a/sysdeps/unix/sysv/linux/fpathconf.c -+++ b/sysdeps/unix/sysv/linux/fpathconf.c +--- glibc-2.17-c758a686/sysdeps/unix/sysv/linux/fpathconf.c ++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/fpathconf.c @@ -33,7 +33,6 @@ __fpathconf (fd, name) int name; { @@ -231,10 +231,10 @@ index c971644..e8c4dc9 100644 default: return posix_fpathconf (fd, name); } -diff --git a/sysdeps/unix/sysv/linux/pathconf.c b/sysdeps/unix/sysv/linux/pathconf.c +diff --git glibc-2.17-c758a686/sysdeps/unix/sysv/linux/pathconf.c glibc-2.17-c758a686/sysdeps/unix/sysv/linux/pathconf.c index edc691e..de91a45 100644 ---- a/sysdeps/unix/sysv/linux/pathconf.c -+++ b/sysdeps/unix/sysv/linux/pathconf.c +--- glibc-2.17-c758a686/sysdeps/unix/sysv/linux/pathconf.c ++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/pathconf.c @@ -39,8 +39,6 @@ long int __pathconf (const char *file, int name) { diff --git a/SOURCES/glibc-rh977874.patch b/SOURCES/glibc-rh977874.patch index 1624d9d..6f2e20e 100644 --- a/SOURCES/glibc-rh977874.patch +++ b/SOURCES/glibc-rh977874.patch @@ -9,10 +9,10 @@ Date: Tue Feb 26 14:24:40 2013 +0530 Draw graphs for heap and stack only if MAXSIZE_HEAP and MAXSIZE_STACK are non-zero. -diff --git a/malloc/memusagestat.c b/malloc/memusagestat.c +diff --git glibc-2.17-c758a686/malloc/memusagestat.c glibc-2.17-c758a686/malloc/memusagestat.c index f561e0d..7bbd009 100644 ---- a/malloc/memusagestat.c -+++ b/malloc/memusagestat.c +--- glibc-2.17-c758a686/malloc/memusagestat.c ++++ glibc-2.17-c758a686/malloc/memusagestat.c @@ -319,17 +319,26 @@ main (int argc, char *argv[]) for (line = 1; line <= 3; ++line) diff --git a/SOURCES/glibc-rh977875.patch b/SOURCES/glibc-rh977875.patch index 9cbcb3d..cf22dbf 100644 --- a/SOURCES/glibc-rh977875.patch +++ b/SOURCES/glibc-rh977875.patch @@ -12,10 +12,10 @@ Date: Wed Apr 10 11:31:46 2013 +0530 an input string) but not with leading and trailing spaces. So we trim off the leading and trailing spaces before we pass it on to strptime. -diff --git a/time/getdate.c b/time/getdate.c +diff --git glibc-2.17-c758a686/time/getdate.c glibc-2.17-c758a686/time/getdate.c index 637dd18..eadebc3 100644 ---- a/time/getdate.c -+++ b/time/getdate.c +--- glibc-2.17-c758a686/time/getdate.c ++++ glibc-2.17-c758a686/time/getdate.c @@ -25,6 +25,8 @@ #include #include @@ -79,10 +79,10 @@ index 637dd18..eadebc3 100644 /* Free the buffer. */ free (line); -diff --git a/time/tst-getdate.c b/time/tst-getdate.c +diff --git glibc-2.17-c758a686/time/tst-getdate.c glibc-2.17-c758a686/time/tst-getdate.c index 7604e83..dc8ecf4 100644 ---- a/time/tst-getdate.c -+++ b/time/tst-getdate.c +--- glibc-2.17-c758a686/time/tst-getdate.c ++++ glibc-2.17-c758a686/time/tst-getdate.c @@ -31,6 +31,10 @@ static const struct } tests [] = { diff --git a/SOURCES/glibc-rh977887-2.patch b/SOURCES/glibc-rh977887-2.patch index 73ff1cb..113bc16 100644 --- a/SOURCES/glibc-rh977887-2.patch +++ b/SOURCES/glibc-rh977887-2.patch @@ -45,10 +45,10 @@ Date: Wed Jun 12 10:36:48 2013 +0530 impact on non-default rounding modes, but I think the tradeoff is justified. -diff --git a/include/fenv.h b/include/fenv.h +diff --git glibc-2.17-c758a686/include/fenv.h glibc-2.17-c758a686/include/fenv.h index ed6d139..9f90d17 100644 ---- a/include/fenv.h -+++ b/include/fenv.h +--- glibc-2.17-c758a686/include/fenv.h ++++ glibc-2.17-c758a686/include/fenv.h @@ -1,5 +1,6 @@ #ifndef _FENV_H #include @@ -70,10 +70,10 @@ index ed6d139..9f90d17 100644 +}; + #endif -diff --git a/sysdeps/generic/math_private.h b/sysdeps/generic/math_private.h +diff --git glibc-2.17-c758a686/sysdeps/generic/math_private.h glibc-2.17-c758a686/sysdeps/generic/math_private.h index e98360d..c0fc03d 100644 ---- a/sysdeps/generic/math_private.h -+++ b/sysdeps/generic/math_private.h +--- glibc-2.17-c758a686/sysdeps/generic/math_private.h ++++ glibc-2.17-c758a686/sysdeps/generic/math_private.h @@ -553,35 +553,62 @@ default_libc_feupdateenv_test (fenv_t *e, int ex) # define libc_feresetround_noexl libc_fesetenvl #endif @@ -151,10 +151,10 @@ index e98360d..c0fc03d 100644 #define __nan(str) \ (__builtin_constant_p (str) && str[0] == '\0' ? NAN : __nan (str)) -diff --git a/sysdeps/i386/fpu/fenv_private.h b/sysdeps/i386/fpu/fenv_private.h +diff --git glibc-2.17-c758a686/sysdeps/i386/fpu/fenv_private.h glibc-2.17-c758a686/sysdeps/i386/fpu/fenv_private.h index 1f8336c..3998387 100644 ---- a/sysdeps/i386/fpu/fenv_private.h -+++ b/sysdeps/i386/fpu/fenv_private.h +--- glibc-2.17-c758a686/sysdeps/i386/fpu/fenv_private.h ++++ glibc-2.17-c758a686/sysdeps/i386/fpu/fenv_private.h @@ -322,6 +322,179 @@ libc_feresetround_387 (fenv_t *e) # define libc_feholdsetround_53bit libc_feholdsetround_387_53bit #endif diff --git a/SOURCES/glibc-rh977887.patch b/SOURCES/glibc-rh977887.patch index 69e990d..3672d4a 100644 --- a/SOURCES/glibc-rh977887.patch +++ b/SOURCES/glibc-rh977887.patch @@ -7,10 +7,10 @@ Date: Wed Jun 5 13:56:19 2013 +0530 We only need to set/restore rounding mode to ensure correct computation for non-default rounding modes. -diff --git a/sysdeps/generic/math_private.h b/sysdeps/generic/math_private.h +diff --git glibc-2.17-c758a686/sysdeps/generic/math_private.h glibc-2.17-c758a686/sysdeps/generic/math_private.h index 9d6ecad..e98360d 100644 ---- a/sysdeps/generic/math_private.h -+++ b/sysdeps/generic/math_private.h +--- glibc-2.17-c758a686/sysdeps/generic/math_private.h ++++ glibc-2.17-c758a686/sysdeps/generic/math_private.h @@ -446,8 +446,8 @@ default_libc_feholdexcept_setround (fenv_t *e, int r) # define libc_feholdexcept_setroundl default_libc_feholdexcept_setround #endif diff --git a/SOURCES/glibc-rh979363.patch b/SOURCES/glibc-rh979363.patch index b8d3c05..391465a 100644 --- a/SOURCES/glibc-rh979363.patch +++ b/SOURCES/glibc-rh979363.patch @@ -1,7 +1,7 @@ -diff --git a/libio/fileops.c b/libio/fileops.c +diff --git glibc-2.17-c758a686/libio/fileops.c glibc-2.17-c758a686/libio/fileops.c index 61b61b3..5f3dae7 100644 ---- a/libio/fileops.c -+++ b/libio/fileops.c +--- glibc-2.17-c758a686/libio/fileops.c ++++ glibc-2.17-c758a686/libio/fileops.c @@ -1245,13 +1245,12 @@ _IO_new_file_write (f, data, n) _IO_ssize_t n; { @@ -47,10 +47,10 @@ index 61b61b3..5f3dae7 100644 block_size = f->_IO_buf_end - f->_IO_buf_base; do_write = to_do - (block_size >= 128 ? to_do % block_size : 0); -diff --git a/libio/iofwrite.c b/libio/iofwrite.c +diff --git glibc-2.17-c758a686/libio/iofwrite.c glibc-2.17-c758a686/libio/iofwrite.c index 81596a6..66542ea 100644 ---- a/libio/iofwrite.c -+++ b/libio/iofwrite.c +--- glibc-2.17-c758a686/libio/iofwrite.c ++++ glibc-2.17-c758a686/libio/iofwrite.c @@ -42,12 +42,12 @@ _IO_fwrite (buf, size, count, fp) if (_IO_vtable_offset (fp) != 0 || _IO_fwide (fp, -1) == -1) written = _IO_sputn (fp, (const char *) buf, request); @@ -69,10 +69,10 @@ index 81596a6..66542ea 100644 else return written / size; } -diff --git a/libio/iofwrite_u.c b/libio/iofwrite_u.c +diff --git glibc-2.17-c758a686/libio/iofwrite_u.c glibc-2.17-c758a686/libio/iofwrite_u.c index 4a9d6ca..18dc6d0 100644 ---- a/libio/iofwrite_u.c -+++ b/libio/iofwrite_u.c +--- glibc-2.17-c758a686/libio/iofwrite_u.c ++++ glibc-2.17-c758a686/libio/iofwrite_u.c @@ -44,12 +44,12 @@ fwrite_unlocked (buf, size, count, fp) if (_IO_fwide (fp, -1) == -1) { @@ -91,10 +91,10 @@ index 4a9d6ca..18dc6d0 100644 } return written / size; -diff --git a/libio/iopadn.c b/libio/iopadn.c +diff --git glibc-2.17-c758a686/libio/iopadn.c glibc-2.17-c758a686/libio/iopadn.c index cc93c0f..5ebbcf4 100644 ---- a/libio/iopadn.c -+++ b/libio/iopadn.c +--- glibc-2.17-c758a686/libio/iopadn.c ++++ glibc-2.17-c758a686/libio/iopadn.c @@ -59,7 +59,7 @@ _IO_padn (fp, pad, count) w = _IO_sputn (fp, padptr, PADSIZE); written += w; @@ -104,10 +104,10 @@ index cc93c0f..5ebbcf4 100644 } if (i > 0) -diff --git a/libio/iowpadn.c b/libio/iowpadn.c +diff --git glibc-2.17-c758a686/libio/iowpadn.c glibc-2.17-c758a686/libio/iowpadn.c index d94db71..5600f37 100644 ---- a/libio/iowpadn.c -+++ b/libio/iowpadn.c +--- glibc-2.17-c758a686/libio/iowpadn.c ++++ glibc-2.17-c758a686/libio/iowpadn.c @@ -65,7 +65,7 @@ _IO_wpadn (fp, pad, count) w = _IO_sputn (fp, (char *) padptr, PADSIZE); written += w; @@ -117,10 +117,10 @@ index d94db71..5600f37 100644 } if (i > 0) -diff --git a/stdio-common/vfprintf.c b/stdio-common/vfprintf.c +diff --git glibc-2.17-c758a686/stdio-common/vfprintf.c glibc-2.17-c758a686/stdio-common/vfprintf.c index c8bcf5a..61d9dc2 100644 ---- a/stdio-common/vfprintf.c -+++ b/stdio-common/vfprintf.c +--- glibc-2.17-c758a686/stdio-common/vfprintf.c ++++ glibc-2.17-c758a686/stdio-common/vfprintf.c @@ -90,13 +90,13 @@ do { \ if (width > 0) \ diff --git a/SOURCES/glibc-rh980323.patch b/SOURCES/glibc-rh980323.patch index d11f041..afea79b 100644 --- a/SOURCES/glibc-rh980323.patch +++ b/SOURCES/glibc-rh980323.patch @@ -4,10 +4,10 @@ Date: Thu Mar 21 15:50:27 2013 +0100 Fix stack overflow in getaddrinfo with many results -diff --git a/sysdeps/posix/getaddrinfo.c b/sysdeps/posix/getaddrinfo.c +diff --git glibc-2.17-c758a686/sysdeps/posix/getaddrinfo.c glibc-2.17-c758a686/sysdeps/posix/getaddrinfo.c index d95c2d1..2309281 100644 ---- a/sysdeps/posix/getaddrinfo.c -+++ b/sysdeps/posix/getaddrinfo.c +--- glibc-2.17-c758a686/sysdeps/posix/getaddrinfo.c ++++ glibc-2.17-c758a686/sysdeps/posix/getaddrinfo.c @@ -2489,11 +2489,27 @@ getaddrinfo (const char *name, const char *service, __typeof (once) old_once = once; __libc_once (once, gaiconf_init); diff --git a/SOURCES/glibc-rh981332.patch b/SOURCES/glibc-rh981332.patch index 352c990..20cffa0 100644 --- a/SOURCES/glibc-rh981332.patch +++ b/SOURCES/glibc-rh981332.patch @@ -1,6 +1,6 @@ -diff -Nrup a/po/de.po b/po/de.po ---- a/po/de.po 2012-12-24 22:02:13.000000000 -0500 -+++ b/po/de.po 2013-08-22 00:23:19.550362503 -0400 +diff -Nru glibc-2.17-c758a686/po/de.po glibc-2.17-c758a686/po/de.po +--- glibc-2.17-c758a686/po/de.po 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/po/de.po 2013-08-22 00:23:19.550362503 -0400 @@ -6342,13 +6342,14 @@ msgstr "Zu viele Benutzer" msgid "Disk quota exceeded" msgstr "Der zugewiesene Plattenplatz (Quota) ist überschritten" @@ -22,9 +22,9 @@ diff -Nrup a/po/de.po b/po/de.po #. TRANS An attempt was made to NFS-mount a remote file system with a file name that #. TRANS already specifies an NFS-mounted file. -diff -Nrup a/po/es.po b/po/es.po ---- a/po/es.po 2012-12-24 22:02:13.000000000 -0500 -+++ b/po/es.po 2013-08-22 00:26:06.924362114 -0400 +diff -Nru glibc-2.17-c758a686/po/es.po glibc-2.17-c758a686/po/es.po +--- glibc-2.17-c758a686/po/es.po 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/po/es.po 2013-08-22 00:26:06.924362114 -0400 @@ -6419,13 +6419,14 @@ msgstr "Se ha excedido la cuota de disco # Muy bien, he buscado "stale" y por lo que parece es algo que "caduca" # o que "vence", como las letras comerciales. Me he decidido por "en desuso". @@ -46,9 +46,9 @@ diff -Nrup a/po/es.po b/po/es.po #. TRANS An attempt was made to NFS-mount a remote file system with a file name that #. TRANS already specifies an NFS-mounted file. -diff -Nrup a/po/fr.po b/po/fr.po ---- a/po/fr.po 2012-12-24 22:02:13.000000000 -0500 -+++ b/po/fr.po 2013-08-22 00:27:48.381361856 -0400 +diff -Nru glibc-2.17-c758a686/po/fr.po glibc-2.17-c758a686/po/fr.po +--- glibc-2.17-c758a686/po/fr.po 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/po/fr.po 2013-08-22 00:27:48.381361856 -0400 @@ -6236,13 +6236,14 @@ msgstr "Trop d'usagers" msgid "Disk quota exceeded" msgstr "Débordement du quota d'espace disque" @@ -70,9 +70,9 @@ diff -Nrup a/po/fr.po b/po/fr.po #. TRANS An attempt was made to NFS-mount a remote file system with a file name that #. TRANS already specifies an NFS-mounted file. -diff -Nrup a/po/it.po b/po/it.po ---- a/po/it.po 2012-12-24 22:02:13.000000000 -0500 -+++ b/po/it.po 2013-08-22 00:31:45.643299312 -0400 +diff -Nru glibc-2.17-c758a686/po/it.po glibc-2.17-c758a686/po/it.po +--- glibc-2.17-c758a686/po/it.po 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/po/it.po 2013-08-22 00:31:45.643299312 -0400 @@ -6488,13 +6488,14 @@ msgstr "Troppi utenti" msgid "Disk quota exceeded" msgstr "Quota disco superata" @@ -94,9 +94,9 @@ diff -Nrup a/po/it.po b/po/it.po # lf #. TRANS An attempt was made to NFS-mount a remote file system with a file name that -diff -Nrup a/po/ja.po b/po/ja.po ---- a/po/ja.po 2012-12-24 22:02:13.000000000 -0500 -+++ b/po/ja.po 2013-08-22 00:40:52.870361885 -0400 +diff -Nru glibc-2.17-c758a686/po/ja.po glibc-2.17-c758a686/po/ja.po +--- glibc-2.17-c758a686/po/ja.po 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/po/ja.po 2013-08-22 00:40:52.870361885 -0400 @@ -6060,13 +6060,14 @@ msgstr "ユーザが多すぎます" msgid "Disk quota exceeded" msgstr "ディスク使用量制限を超過しました" @@ -118,9 +118,9 @@ diff -Nrup a/po/ja.po b/po/ja.po #. TRANS An attempt was made to NFS-mount a remote file system with a file name that #. TRANS already specifies an NFS-mounted file. -diff -Nrup a/po/ko.po b/po/ko.po ---- a/po/ko.po 2012-12-24 22:02:13.000000000 -0500 -+++ b/po/ko.po 2013-08-22 01:26:54.047362067 -0400 +diff -Nru glibc-2.17-c758a686/po/ko.po glibc-2.17-c758a686/po/ko.po +--- glibc-2.17-c758a686/po/ko.po 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/po/ko.po 2013-08-22 01:26:54.047362067 -0400 @@ -6076,13 +6076,14 @@ msgstr "사용자가 너무 많음" msgid "Disk quota exceeded" msgstr "디스크 할당량이 초과됨" @@ -142,9 +142,9 @@ diff -Nrup a/po/ko.po b/po/ko.po #. TRANS An attempt was made to NFS-mount a remote file system with a file name that #. TRANS already specifies an NFS-mounted file. -diff -Nrup a/po/libc.pot b/po/libc.pot ---- a/po/libc.pot 2012-12-24 22:02:13.000000000 -0500 -+++ b/po/libc.pot 2013-08-22 01:28:04.037362480 -0400 +diff -Nru glibc-2.17-c758a686/po/libc.pot glibc-2.17-c758a686/po/libc.pot +--- glibc-2.17-c758a686/po/libc.pot 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/po/libc.pot 2013-08-22 01:28:04.037362480 -0400 @@ -6120,12 +6120,13 @@ msgstr "" msgid "Disk quota exceeded" msgstr "" @@ -164,9 +164,9 @@ diff -Nrup a/po/libc.pot b/po/libc.pot msgstr "" #. TRANS An attempt was made to NFS-mount a remote file system with a file name that -diff -Nrup a/po/pt_BR.po b/po/pt_BR.po ---- a/po/pt_BR.po 2012-12-24 22:02:13.000000000 -0500 -+++ b/po/pt_BR.po 2013-08-22 00:57:47.845218981 -0400 +diff -Nru glibc-2.17-c758a686/po/pt_BR.po glibc-2.17-c758a686/po/pt_BR.po +--- glibc-2.17-c758a686/po/pt_BR.po 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/po/pt_BR.po 2013-08-22 00:57:47.845218981 -0400 @@ -2287,13 +2287,14 @@ msgstr "Erro de Srmount" msgid "Stack fault" msgstr "Falha de pilha" @@ -189,9 +189,9 @@ diff -Nrup a/po/pt_BR.po b/po/pt_BR.po #: nscd/nscd.c:81 msgid "Start NUMBER threads" -diff -Nrup a/po/ru.po b/po/ru.po ---- a/po/ru.po 2012-12-24 22:02:13.000000000 -0500 -+++ b/po/ru.po 2013-08-22 01:00:36.824204890 -0400 +diff -Nru glibc-2.17-c758a686/po/ru.po glibc-2.17-c758a686/po/ru.po +--- glibc-2.17-c758a686/po/ru.po 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/po/ru.po 2013-08-22 01:00:36.824204890 -0400 @@ -6243,13 +6243,14 @@ msgstr "Слишком много пол msgid "Disk quota exceeded" msgstr "Превышена дисковая квота" @@ -213,9 +213,9 @@ diff -Nrup a/po/ru.po b/po/ru.po #. TRANS An attempt was made to NFS-mount a remote file system with a file name that #. TRANS already specifies an NFS-mounted file. -diff -Nrup a/po/zh_CN.po b/po/zh_CN.po ---- a/po/zh_CN.po 2012-12-24 22:02:13.000000000 -0500 -+++ b/po/zh_CN.po 2013-08-22 01:02:42.089238124 -0400 +diff -Nru glibc-2.17-c758a686/po/zh_CN.po glibc-2.17-c758a686/po/zh_CN.po +--- glibc-2.17-c758a686/po/zh_CN.po 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/po/zh_CN.po 2013-08-22 01:02:42.089238124 -0400 @@ -5519,13 +5519,14 @@ msgstr "用户过多" msgid "Disk quota exceeded" msgstr "超出磁盘限额" @@ -237,9 +237,9 @@ diff -Nrup a/po/zh_CN.po b/po/zh_CN.po #. TRANS An attempt was made to NFS-mount a remote file system with a file name that #. TRANS already specifies an NFS-mounted file. -diff -Nrup a/po/zh_TW.po b/po/zh_TW.po ---- a/po/zh_TW.po 2012-12-24 22:02:13.000000000 -0500 -+++ b/po/zh_TW.po 2013-08-22 01:05:36.949361791 -0400 +diff -Nru glibc-2.17-c758a686/po/zh_TW.po glibc-2.17-c758a686/po/zh_TW.po +--- glibc-2.17-c758a686/po/zh_TW.po 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/po/zh_TW.po 2013-08-22 01:05:36.949361791 -0400 @@ -6060,13 +6060,14 @@ msgstr "太多使用者" msgid "Disk quota exceeded" msgstr "硬碟 quota 滿了" diff --git a/SOURCES/glibc-rh984828.patch b/SOURCES/glibc-rh984828.patch index f9c8f2e..fb3d185 100644 --- a/SOURCES/glibc-rh984828.patch +++ b/SOURCES/glibc-rh984828.patch @@ -26,9 +26,9 @@ # --enable-pt_chown. Add @findex for grantpt. # * INSTALL: Regenerate. # -diff -Nrup a/config.h.in b/config.h.in ---- a/config.h.in 2012-12-24 22:02:13.000000000 -0500 -+++ b/config.h.in 2013-07-24 00:20:07.651301252 -0400 +diff -Nru glibc-2.17-c758a686/config.h.in glibc-2.17-c758a686/config.h.in +--- glibc-2.17-c758a686/config.h.in 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/config.h.in 2013-07-24 00:20:07.651301252 -0400 @@ -232,4 +232,7 @@ /* The ARM hard-float ABI is being used. */ #undef HAVE_ARM_PCS_VFP @@ -37,9 +37,9 @@ diff -Nrup a/config.h.in b/config.h.in +#undef HAVE_PT_CHOWN + #endif -diff -Nrup a/config.make.in b/config.make.in ---- a/config.make.in 2012-12-24 22:02:13.000000000 -0500 -+++ b/config.make.in 2013-07-24 00:21:15.244176098 -0400 +diff -Nru glibc-2.17-c758a686/config.make.in glibc-2.17-c758a686/config.make.in +--- glibc-2.17-c758a686/config.make.in 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/config.make.in 2013-07-24 00:21:15.244176098 -0400 @@ -101,6 +101,7 @@ force-install = @force_install@ link-obsolete-rpc = @link_obsolete_rpc@ build-nscd = @build_nscd@ @@ -48,9 +48,9 @@ diff -Nrup a/config.make.in b/config.make.in # Build tools. CC = @CC@ -diff -Nrup a/configure b/configure ---- a/configure 2013-07-24 00:25:10.090174244 -0400 -+++ b/configure 2013-07-24 00:20:07.769174345 -0400 +diff -Nru glibc-2.17-c758a686/configure glibc-2.17-c758a686/configure +--- glibc-2.17-c758a686/configure 2013-07-24 00:25:10.090174244 -0400 ++++ glibc-2.17-c758a686/configure 2013-07-24 00:20:07.769174345 -0400 @@ -653,6 +653,7 @@ multi_arch base_machine add_on_subdirs @@ -95,9 +95,9 @@ diff -Nrup a/configure b/configure # The way shlib-versions is used to generate soversions.mk uses a # fairly simplistic model for name recognition that can't distinguish # i486-pc-linux-gnu fully from i486-pc-gnu. So we mutate a $host_os -diff -Nrup a/configure.in b/configure.in ---- a/configure.in 2012-12-24 22:02:13.000000000 -0500 -+++ b/configure.in 2013-07-24 00:20:07.658298658 -0400 +diff -Nru glibc-2.17-c758a686/configure.in glibc-2.17-c758a686/configure.in +--- glibc-2.17-c758a686/configure.in 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/configure.in 2013-07-24 00:20:07.658298658 -0400 @@ -315,6 +315,16 @@ AC_ARG_ENABLE([nscd], [use_nscd=$enableval], [use_nscd=yes]) @@ -115,9 +115,9 @@ diff -Nrup a/configure.in b/configure.in # The way shlib-versions is used to generate soversions.mk uses a # fairly simplistic model for name recognition that can't distinguish # i486-pc-linux-gnu fully from i486-pc-gnu. So we mutate a $host_os -diff -Nrup a/INSTALL b/INSTALL ---- a/INSTALL 2012-12-24 22:02:13.000000000 -0500 -+++ b/INSTALL 2013-07-24 00:20:07.650300624 -0400 +diff -Nru glibc-2.17-c758a686/INSTALL glibc-2.17-c758a686/INSTALL +--- glibc-2.17-c758a686/INSTALL 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/INSTALL 2013-07-24 00:20:07.650300624 -0400 @@ -128,6 +128,18 @@ will be used, and CFLAGS sets optimizati this can be prevented though there generally is no reason since it creates compatibility problems. @@ -137,9 +137,9 @@ diff -Nrup a/INSTALL b/INSTALL `--build=BUILD-SYSTEM' `--host=HOST-SYSTEM' These options are for cross-compiling. If you specify both -diff -Nrup a/login/Makefile b/login/Makefile ---- a/login/Makefile 2012-12-24 22:02:13.000000000 -0500 -+++ b/login/Makefile 2013-07-24 00:20:07.660298670 -0400 +diff -Nru glibc-2.17-c758a686/login/Makefile glibc-2.17-c758a686/login/Makefile +--- glibc-2.17-c758a686/login/Makefile 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/login/Makefile 2013-07-24 00:20:07.660298670 -0400 @@ -29,9 +29,15 @@ routines := getutent getutent_r getutid CFLAGS-grantpt.c = -DLIBEXECDIR='"$(libexecdir)"' @@ -157,9 +157,9 @@ diff -Nrup a/login/Makefile b/login/Makefile subdir-dirs = programs vpath %.c programs -diff -Nrup a/manual/install.texi b/manual/install.texi ---- a/manual/install.texi 2012-12-24 22:02:13.000000000 -0500 -+++ b/manual/install.texi 2013-07-24 00:20:07.662298261 -0400 +diff -Nru glibc-2.17-c758a686/manual/install.texi glibc-2.17-c758a686/manual/install.texi +--- glibc-2.17-c758a686/manual/install.texi 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/manual/install.texi 2013-07-24 00:20:07.662298261 -0400 @@ -155,6 +155,20 @@ if the used tools support it. By using prevented though there generally is no reason since it creates compatibility problems. @@ -181,9 +181,9 @@ diff -Nrup a/manual/install.texi b/manual/install.texi @item --build=@var{build-system} @itemx --host=@var{host-system} These options are for cross-compiling. If you specify both options and -diff -Nrup a/sysdeps/unix/grantpt.c b/sysdeps/unix/grantpt.c ---- a/sysdeps/unix/grantpt.c 2012-12-24 22:02:13.000000000 -0500 -+++ b/sysdeps/unix/grantpt.c 2013-07-24 00:20:07.663299235 -0400 +diff -Nru glibc-2.17-c758a686/sysdeps/unix/grantpt.c glibc-2.17-c758a686/sysdeps/unix/grantpt.c +--- glibc-2.17-c758a686/sysdeps/unix/grantpt.c 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/unix/grantpt.c 2013-07-24 00:20:07.663299235 -0400 @@ -173,9 +173,10 @@ grantpt (int fd) retval = 0; goto cleanup; @@ -216,9 +216,9 @@ diff -Nrup a/sysdeps/unix/grantpt.c b/sysdeps/unix/grantpt.c cleanup: if (buf != _buf) -diff -Nrup a/sysdeps/unix/sysv/linux/grantpt.c b/sysdeps/unix/sysv/linux/grantpt.c ---- a/sysdeps/unix/sysv/linux/grantpt.c 2012-12-24 22:02:13.000000000 -0500 -+++ b/sysdeps/unix/sysv/linux/grantpt.c 2013-07-24 00:20:07.664298465 -0400 +diff -Nru glibc-2.17-c758a686/sysdeps/unix/sysv/linux/grantpt.c glibc-2.17-c758a686/sysdeps/unix/sysv/linux/grantpt.c +--- glibc-2.17-c758a686/sysdeps/unix/sysv/linux/grantpt.c 2012-12-24 22:02:13.000000000 -0500 ++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/grantpt.c 2013-07-24 00:20:07.664298465 -0400 @@ -11,7 +11,7 @@ #include "pty-private.h" diff --git a/SOURCES/glibc-rh989861.patch b/SOURCES/glibc-rh989861.patch index 07d9034..08f4cb6 100644 --- a/SOURCES/glibc-rh989861.patch +++ b/SOURCES/glibc-rh989861.patch @@ -4,10 +4,10 @@ Date: Sun Jun 30 20:45:19 2013 +0530 Check for integer overflow -diff --git a/string/strcoll_l.c b/string/strcoll_l.c +diff --git glibc-2.17-c758a686/string/strcoll_l.c glibc-2.17-c758a686/string/strcoll_l.c index 1be6874..cbe5962 100644 ---- a/string/strcoll_l.c -+++ b/string/strcoll_l.c +--- glibc-2.17-c758a686/string/strcoll_l.c ++++ glibc-2.17-c758a686/string/strcoll_l.c @@ -524,6 +524,14 @@ STRCOLL (const STRING_TYPE *s1, const STRING_TYPE *s2, __locale_t l) memset (&seq1, 0, sizeof (seq1)); seq2 = seq1; diff --git a/SOURCES/glibc-rh989862-2.patch b/SOURCES/glibc-rh989862-2.patch index ac96f12..9f0218c 100644 --- a/SOURCES/glibc-rh989862-2.patch +++ b/SOURCES/glibc-rh989862-2.patch @@ -8,10 +8,10 @@ Date: Sun Jun 30 20:45:05 2013 +0530 possible stack overflow. This patch implements sequence traversal and comparison without caching indeces and rules. -diff --git a/string/strcoll_l.c b/string/strcoll_l.c +diff --git glibc-2.17-c758a686/string/strcoll_l.c glibc-2.17-c758a686/string/strcoll_l.c index 1bb9e23..1be6874 100644 ---- a/string/strcoll_l.c -+++ b/string/strcoll_l.c +--- glibc-2.17-c758a686/string/strcoll_l.c ++++ glibc-2.17-c758a686/string/strcoll_l.c @@ -55,6 +55,12 @@ typedef struct const USTRING_TYPE *us; /* The string. */ int32_t *idxarr; /* Array to cache weight indeces. */ diff --git a/SOURCES/glibc-rh989862-3.patch b/SOURCES/glibc-rh989862-3.patch index 0fa7e87..be8fbe7 100644 --- a/SOURCES/glibc-rh989862-3.patch +++ b/SOURCES/glibc-rh989862-3.patch @@ -4,10 +4,10 @@ Date: Fri Dec 28 11:53:01 2012 +0530 Add __glibc_likely as an alias for __builtin_expect when available -diff --git a/misc/sys/cdefs.h b/misc/sys/cdefs.h +diff --git glibc-2.17-c758a686/misc/sys/cdefs.h glibc-2.17-c758a686/misc/sys/cdefs.h index fb6c959..1eee54e 100644 ---- a/misc/sys/cdefs.h -+++ b/misc/sys/cdefs.h +--- glibc-2.17-c758a686/misc/sys/cdefs.h ++++ glibc-2.17-c758a686/misc/sys/cdefs.h @@ -378,8 +378,10 @@ #if __GNUC__ >= 3 diff --git a/SOURCES/glibc-rh989862.patch b/SOURCES/glibc-rh989862.patch index fed0b53..7953b03 100644 --- a/SOURCES/glibc-rh989862.patch +++ b/SOURCES/glibc-rh989862.patch @@ -4,10 +4,10 @@ Date: Fri Jun 28 16:24:16 2013 +0530 Simplify strcoll implementation -diff --git a/string/strcoll_l.c b/string/strcoll_l.c +diff --git glibc-2.17-c758a686/string/strcoll_l.c glibc-2.17-c758a686/string/strcoll_l.c index ecda08f..1bb9e23 100644 ---- a/string/strcoll_l.c -+++ b/string/strcoll_l.c +--- glibc-2.17-c758a686/string/strcoll_l.c ++++ glibc-2.17-c758a686/string/strcoll_l.c @@ -41,11 +41,244 @@ #include "../locale/localeinfo.h" diff --git a/SOURCES/glibc-rh990388-2.patch b/SOURCES/glibc-rh990388-2.patch index 70b61b1..09fffa4 100644 --- a/SOURCES/glibc-rh990388-2.patch +++ b/SOURCES/glibc-rh990388-2.patch @@ -1,6 +1,6 @@ -diff -pruN glibc-2.17-c758a686/csu/libc-start.c glibc-2.17-c758a686.new/csu/libc-start.c +diff -pruN glibc-2.17-c758a686/csu/libc-start.c glibc-2.17-c758a686/csu/libc-start.c --- glibc-2.17-c758a686/csu/libc-start.c 2012-12-25 08:32:13.000000000 +0530 -+++ glibc-2.17-c758a686.new/csu/libc-start.c 2013-07-30 11:46:44.571901690 +0530 ++++ glibc-2.17-c758a686/csu/libc-start.c 2013-07-30 11:46:44.571901690 +0530 @@ -32,7 +32,7 @@ extern int __libc_multiple_libcs; #include #ifndef SHARED @@ -19,9 +19,9 @@ diff -pruN glibc-2.17-c758a686/csu/libc-start.c glibc-2.17-c758a686.new/csu/libc /* Set up the stack checker's canary. */ uintptr_t stack_chk_guard = _dl_setup_stack_chk_guard (_dl_random); -diff -pruN glibc-2.17-c758a686/csu/libc-tls.c glibc-2.17-c758a686.new/csu/libc-tls.c +diff -pruN glibc-2.17-c758a686/csu/libc-tls.c glibc-2.17-c758a686/csu/libc-tls.c --- glibc-2.17-c758a686/csu/libc-tls.c 2012-12-25 08:32:13.000000000 +0530 -+++ glibc-2.17-c758a686.new/csu/libc-tls.c 2013-07-30 11:46:44.572901690 +0530 ++++ glibc-2.17-c758a686/csu/libc-tls.c 2013-07-30 11:46:44.572901690 +0530 @@ -243,7 +243,7 @@ _dl_tls_setup (void) not used. */ void @@ -31,9 +31,9 @@ diff -pruN glibc-2.17-c758a686/csu/libc-tls.c glibc-2.17-c758a686.new/csu/libc-t { __libc_setup_tls (TLS_INIT_TCB_SIZE, TLS_INIT_TCB_ALIGN); } -diff -pruN glibc-2.17-c758a686/nptl/Makefile glibc-2.17-c758a686.new/nptl/Makefile +diff -pruN glibc-2.17-c758a686/nptl/Makefile glibc-2.17-c758a686/nptl/Makefile --- glibc-2.17-c758a686/nptl/Makefile 2013-07-30 11:46:34.909902026 +0530 -+++ glibc-2.17-c758a686.new/nptl/Makefile 2013-07-30 11:46:44.573901690 +0530 ++++ glibc-2.17-c758a686/nptl/Makefile 2013-07-30 11:46:44.573901690 +0530 @@ -201,7 +201,7 @@ CFLAGS-pt-system.c = -fexceptions @@ -57,9 +57,9 @@ diff -pruN glibc-2.17-c758a686/nptl/Makefile glibc-2.17-c758a686.new/nptl/Makefi include ../Makeconfig ifeq ($(have-forced-unwind),yes) -diff -pruN glibc-2.17-c758a686/nptl/nptl-init.c glibc-2.17-c758a686.new/nptl/nptl-init.c +diff -pruN glibc-2.17-c758a686/nptl/nptl-init.c glibc-2.17-c758a686/nptl/nptl-init.c --- glibc-2.17-c758a686/nptl/nptl-init.c 2013-07-30 11:46:35.112902019 +0530 -+++ glibc-2.17-c758a686.new/nptl/nptl-init.c 2013-07-30 11:46:44.601901689 +0530 ++++ glibc-2.17-c758a686/nptl/nptl-init.c 2013-07-30 11:46:44.601901689 +0530 @@ -35,6 +35,7 @@ #include #include @@ -164,9 +164,9 @@ diff -pruN glibc-2.17-c758a686/nptl/nptl-init.c glibc-2.17-c758a686.new/nptl/npt __default_pthread_attr.guardsize = GLRO (dl_pagesize); #ifdef SHARED -diff -pruN glibc-2.17-c758a686/nptl/tst-default-attr.c glibc-2.17-c758a686.new/nptl/tst-default-attr.c +diff -pruN glibc-2.17-c758a686/nptl/tst-default-attr.c glibc-2.17-c758a686/nptl/tst-default-attr.c --- glibc-2.17-c758a686/nptl/tst-default-attr.c 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.17-c758a686.new/nptl/tst-default-attr.c 2013-07-30 11:46:44.601901689 +0530 ++++ glibc-2.17-c758a686/nptl/tst-default-attr.c 2013-07-30 11:46:44.601901689 +0530 @@ -0,0 +1,109 @@ +/* Verify that default stack size gets set correctly from the environment + variable. diff --git a/SOURCES/glibc-rh990388-3.patch b/SOURCES/glibc-rh990388-3.patch index a8b09ec..4d4f395 100644 --- a/SOURCES/glibc-rh990388-3.patch +++ b/SOURCES/glibc-rh990388-3.patch @@ -1,6 +1,6 @@ -diff -pruN glibc-2.17-c758a686/nptl/pt-crti.S glibc-2.17-c758a686.new/nptl/pt-crti.S +diff -pruN glibc-2.17-c758a686/nptl/pt-crti.S glibc-2.17-c758a686/nptl/pt-crti.S --- glibc-2.17-c758a686/nptl/pt-crti.S 2012-12-25 08:32:13.000000000 +0530 -+++ glibc-2.17-c758a686.new/nptl/pt-crti.S 2013-07-30 15:53:08.416386853 +0530 ++++ glibc-2.17-c758a686/nptl/pt-crti.S 2013-07-30 15:53:08.416386853 +0530 @@ -39,5 +39,6 @@ #define PREINIT_FUNCTION __pthread_initialize_minimal_internal @@ -8,9 +8,9 @@ diff -pruN glibc-2.17-c758a686/nptl/pt-crti.S glibc-2.17-c758a686.new/nptl/pt-cr +#define PREINIT_FUNCTION_HAS_ARGS 1 #include -diff -pruN glibc-2.17-c758a686/sysdeps/i386/crti.S glibc-2.17-c758a686.new/sysdeps/i386/crti.S +diff -pruN glibc-2.17-c758a686/sysdeps/i386/crti.S glibc-2.17-c758a686/sysdeps/i386/crti.S --- glibc-2.17-c758a686/sysdeps/i386/crti.S 2012-12-25 08:32:13.000000000 +0530 -+++ glibc-2.17-c758a686.new/sysdeps/i386/crti.S 2013-07-30 16:38:41.085291690 +0530 ++++ glibc-2.17-c758a686/sysdeps/i386/crti.S 2013-07-30 16:38:41.085291690 +0530 @@ -49,6 +49,13 @@ # define PREINIT_FUNCTION_WEAK 1 #endif diff --git a/SOURCES/glibc-rh990388-4.patch b/SOURCES/glibc-rh990388-4.patch index 1b39d87..7894f6c 100644 --- a/SOURCES/glibc-rh990388-4.patch +++ b/SOURCES/glibc-rh990388-4.patch @@ -1,6 +1,6 @@ -diff -pruN glibc-2.17-c758a686/nptl/Makefile glibc-2.17-c758a686.new/nptl/Makefile +diff -pruN glibc-2.17-c758a686/nptl/Makefile glibc-2.17-c758a686/nptl/Makefile --- glibc-2.17-c758a686/nptl/Makefile 2013-07-31 11:51:24.882747234 +0530 -+++ glibc-2.17-c758a686.new/nptl/Makefile 2013-07-31 11:58:55.964731526 +0530 ++++ glibc-2.17-c758a686/nptl/Makefile 2013-07-31 11:58:55.964731526 +0530 @@ -276,10 +276,7 @@ gen-as-const-headers = pthread-errnos.sy LDFLAGS-pthread.so = -Wl,--enable-new-dtags,-z,nodelete,-z,initfirst @@ -13,9 +13,9 @@ diff -pruN glibc-2.17-c758a686/nptl/Makefile glibc-2.17-c758a686.new/nptl/Makefi CFLAGS-tst-default-attr.c = -DDEFAULT_STACKSIZE=$(DEFAULT_STACKSIZE) tst-default-attr-ENV = GLIBC_PTHREAD_STACKSIZE=$(DEFAULT_STACKSIZE) -diff -pruN glibc-2.17-c758a686/nptl/tst-default-attr.c glibc-2.17-c758a686.new/nptl/tst-default-attr.c +diff -pruN glibc-2.17-c758a686/nptl/tst-default-attr.c glibc-2.17-c758a686/nptl/tst-default-attr.c --- glibc-2.17-c758a686/nptl/tst-default-attr.c 2013-07-31 11:51:24.885747234 +0530 -+++ glibc-2.17-c758a686.new/nptl/tst-default-attr.c 2013-07-31 12:18:10.016691337 +0530 ++++ glibc-2.17-c758a686/nptl/tst-default-attr.c 2013-07-31 12:18:10.016691337 +0530 @@ -38,6 +38,7 @@ /* DEFAULT_STACKSIZE macro is defined in the Makefile. */ diff --git a/SOURCES/glibc-rh990388.patch b/SOURCES/glibc-rh990388.patch index 1783d3f..e48b1ed 100644 --- a/SOURCES/glibc-rh990388.patch +++ b/SOURCES/glibc-rh990388.patch @@ -1,6 +1,6 @@ -diff -pruN glibc-2.17-c758a686/include/libc-internal.h glibc-2.17-c758a686.new/include/libc-internal.h +diff -pruN glibc-2.17-c758a686/include/libc-internal.h glibc-2.17-c758a686/include/libc-internal.h --- glibc-2.17-c758a686/include/libc-internal.h 2012-12-25 08:32:13.000000000 +0530 -+++ glibc-2.17-c758a686.new/include/libc-internal.h 2013-07-30 11:26:37.947943710 +0530 ++++ glibc-2.17-c758a686/include/libc-internal.h 2013-07-30 11:26:37.947943710 +0530 @@ -50,4 +50,24 @@ extern void __init_misc (int, char **, c /* Cast an integer or a pointer VAL to integer with proper type. */ # define cast_to_integer(val) ((__integer_if_pointer_type (val)) (val)) @@ -26,9 +26,9 @@ diff -pruN glibc-2.17-c758a686/include/libc-internal.h glibc-2.17-c758a686.new/i + ((__typeof__ (base)) ALIGN_UP ((uintptr_t) (base), (size))) + #endif /* _LIBC_INTERNAL */ -diff -pruN glibc-2.17-c758a686/nptl/allocatestack.c glibc-2.17-c758a686.new/nptl/allocatestack.c +diff -pruN glibc-2.17-c758a686/nptl/allocatestack.c glibc-2.17-c758a686/nptl/allocatestack.c --- glibc-2.17-c758a686/nptl/allocatestack.c 2012-12-25 08:32:13.000000000 +0530 -+++ glibc-2.17-c758a686.new/nptl/allocatestack.c 2013-07-30 11:26:38.012943707 +0530 ++++ glibc-2.17-c758a686/nptl/allocatestack.c 2013-07-30 11:26:38.012943707 +0530 @@ -355,7 +355,7 @@ allocate_stack (const struct pthread_att /* Get the stack size from the attribute if it is set. Otherwise we @@ -38,9 +38,9 @@ diff -pruN glibc-2.17-c758a686/nptl/allocatestack.c glibc-2.17-c758a686.new/nptl /* Get memory for the stack. */ if (__builtin_expect (attr->flags & ATTR_FLAG_STACKADDR, 0)) -diff -pruN glibc-2.17-c758a686/nptl/nptl-init.c glibc-2.17-c758a686.new/nptl/nptl-init.c +diff -pruN glibc-2.17-c758a686/nptl/nptl-init.c glibc-2.17-c758a686/nptl/nptl-init.c --- glibc-2.17-c758a686/nptl/nptl-init.c 2013-07-30 11:45:16.902904743 +0530 -+++ glibc-2.17-c758a686.new/nptl/nptl-init.c 2013-07-30 11:44:59.538905347 +0530 ++++ glibc-2.17-c758a686/nptl/nptl-init.c 2013-07-30 11:44:59.538905347 +0530 @@ -423,7 +423,8 @@ __pthread_initialize_minimal_internal (v /* Round the resource limit up to page size. */ @@ -51,9 +51,9 @@ diff -pruN glibc-2.17-c758a686/nptl/nptl-init.c glibc-2.17-c758a686.new/nptl/npt #ifdef SHARED /* Transfer the old value from the dynamic linker's internal location. */ -diff -pruN glibc-2.17-c758a686/nptl/pthread_attr_getstacksize.c glibc-2.17-c758a686.new/nptl/pthread_attr_getstacksize.c +diff -pruN glibc-2.17-c758a686/nptl/pthread_attr_getstacksize.c glibc-2.17-c758a686/nptl/pthread_attr_getstacksize.c --- glibc-2.17-c758a686/nptl/pthread_attr_getstacksize.c 2012-12-25 08:32:13.000000000 +0530 -+++ glibc-2.17-c758a686.new/nptl/pthread_attr_getstacksize.c 2013-07-30 11:26:39.650943650 +0530 ++++ glibc-2.17-c758a686/nptl/pthread_attr_getstacksize.c 2013-07-30 11:26:39.650943650 +0530 @@ -32,7 +32,7 @@ __pthread_attr_getstacksize (attr, stack /* If the user has not set a stack size we return what the system @@ -63,9 +63,9 @@ diff -pruN glibc-2.17-c758a686/nptl/pthread_attr_getstacksize.c glibc-2.17-c758a return 0; } -diff -pruN glibc-2.17-c758a686/nptl/pthread_barrier_init.c glibc-2.17-c758a686.new/nptl/pthread_barrier_init.c +diff -pruN glibc-2.17-c758a686/nptl/pthread_barrier_init.c glibc-2.17-c758a686/nptl/pthread_barrier_init.c --- glibc-2.17-c758a686/nptl/pthread_barrier_init.c 2012-12-25 08:32:13.000000000 +0530 -+++ glibc-2.17-c758a686.new/nptl/pthread_barrier_init.c 2013-07-30 11:26:40.206943631 +0530 ++++ glibc-2.17-c758a686/nptl/pthread_barrier_init.c 2013-07-30 11:26:40.206943631 +0530 @@ -22,7 +22,7 @@ #include @@ -84,9 +84,9 @@ diff -pruN glibc-2.17-c758a686/nptl/pthread_barrier_init.c glibc-2.17-c758a686.n if (iattr->pshared != PTHREAD_PROCESS_PRIVATE && __builtin_expect (iattr->pshared != PTHREAD_PROCESS_SHARED, 0)) -diff -pruN glibc-2.17-c758a686/nptl/pthread_create.c glibc-2.17-c758a686.new/nptl/pthread_create.c +diff -pruN glibc-2.17-c758a686/nptl/pthread_create.c glibc-2.17-c758a686/nptl/pthread_create.c --- glibc-2.17-c758a686/nptl/pthread_create.c 2012-12-25 08:32:13.000000000 +0530 -+++ glibc-2.17-c758a686.new/nptl/pthread_create.c 2013-07-30 11:26:40.774943611 +0530 ++++ glibc-2.17-c758a686/nptl/pthread_create.c 2013-07-30 11:26:40.774943611 +0530 @@ -432,15 +432,6 @@ start_thread (void *arg) } @@ -112,9 +112,9 @@ diff -pruN glibc-2.17-c758a686/nptl/pthread_create.c glibc-2.17-c758a686.new/npt struct pthread *pd = NULL; int err = ALLOCATE_STACK (iattr, &pd); -diff -pruN glibc-2.17-c758a686/nptl/pthread_mutex_init.c glibc-2.17-c758a686.new/nptl/pthread_mutex_init.c +diff -pruN glibc-2.17-c758a686/nptl/pthread_mutex_init.c glibc-2.17-c758a686/nptl/pthread_mutex_init.c --- glibc-2.17-c758a686/nptl/pthread_mutex_init.c 2012-12-25 08:32:13.000000000 +0530 -+++ glibc-2.17-c758a686.new/nptl/pthread_mutex_init.c 2013-07-30 11:26:42.079943566 +0530 ++++ glibc-2.17-c758a686/nptl/pthread_mutex_init.c 2013-07-30 11:26:42.079943566 +0530 @@ -24,7 +24,7 @@ #include @@ -134,9 +134,9 @@ diff -pruN glibc-2.17-c758a686/nptl/pthread_mutex_init.c glibc-2.17-c758a686.new /* Sanity checks. */ switch (__builtin_expect (imutexattr->mutexkind -diff -pruN glibc-2.17-c758a686/nptl/pthreadP.h glibc-2.17-c758a686.new/nptl/pthreadP.h +diff -pruN glibc-2.17-c758a686/nptl/pthreadP.h glibc-2.17-c758a686/nptl/pthreadP.h --- glibc-2.17-c758a686/nptl/pthreadP.h 2012-12-25 08:32:13.000000000 +0530 -+++ glibc-2.17-c758a686.new/nptl/pthreadP.h 2013-07-30 11:26:43.095943530 +0530 ++++ glibc-2.17-c758a686/nptl/pthreadP.h 2013-07-30 11:26:43.095943530 +0530 @@ -147,8 +147,8 @@ enum /* Internal variables. */ @@ -148,9 +148,9 @@ diff -pruN glibc-2.17-c758a686/nptl/pthreadP.h glibc-2.17-c758a686.new/nptl/pthr /* Size and alignment of static TLS block. */ extern size_t __static_tls_size attribute_hidden; -diff -pruN glibc-2.17-c758a686/nptl/pthread_rwlock_init.c glibc-2.17-c758a686.new/nptl/pthread_rwlock_init.c +diff -pruN glibc-2.17-c758a686/nptl/pthread_rwlock_init.c glibc-2.17-c758a686/nptl/pthread_rwlock_init.c --- glibc-2.17-c758a686/nptl/pthread_rwlock_init.c 2012-12-25 08:32:13.000000000 +0530 -+++ glibc-2.17-c758a686.new/nptl/pthread_rwlock_init.c 2013-07-30 11:26:43.745943508 +0530 ++++ glibc-2.17-c758a686/nptl/pthread_rwlock_init.c 2013-07-30 11:26:43.745943508 +0530 @@ -21,7 +21,7 @@ #include @@ -169,9 +169,9 @@ diff -pruN glibc-2.17-c758a686/nptl/pthread_rwlock_init.c glibc-2.17-c758a686.ne memset (rwlock, '\0', sizeof (*rwlock)); -diff -pruN glibc-2.17-c758a686/nptl/vars.c glibc-2.17-c758a686.new/nptl/vars.c +diff -pruN glibc-2.17-c758a686/nptl/vars.c glibc-2.17-c758a686/nptl/vars.c --- glibc-2.17-c758a686/nptl/vars.c 2012-12-25 08:32:13.000000000 +0530 -+++ glibc-2.17-c758a686.new/nptl/vars.c 2013-07-30 11:26:43.763943507 +0530 ++++ glibc-2.17-c758a686/nptl/vars.c 2013-07-30 11:26:43.763943507 +0530 @@ -20,13 +20,9 @@ #include #include diff --git a/SOURCES/glibc-rh990481-CVE-2013-4788.patch b/SOURCES/glibc-rh990481-CVE-2013-4788.patch index 3d163bf..dc4f845 100644 --- a/SOURCES/glibc-rh990481-CVE-2013-4788.patch +++ b/SOURCES/glibc-rh990481-CVE-2013-4788.patch @@ -37,8 +37,8 @@ # (LIBC_START_MAIN) [!SHARED]: Call _dl_setup_pointer_guard. # Use THREAD_SET_POINTER_GUARD or set __pointer_chk_guard_local. # -diff -urN glibc-2.17-c758a686.orig/csu/libc-start.c glibc-2.17-c758a686/csu/libc-start.c ---- glibc-2.17-c758a686.orig/csu/libc-start.c 2013-08-09 17:40:41.662856773 -0400 +diff -urN glibc-2.17-c758a686/csu/libc-start.c glibc-2.17-c758a686/csu/libc-start.c +--- glibc-2.17-c758a686/csu/libc-start.c 2013-08-09 17:40:41.662856773 -0400 +++ glibc-2.17-c758a686/csu/libc-start.c 2013-08-09 17:53:40.383236966 -0400 @@ -38,6 +38,12 @@ in thread local area. */ @@ -70,8 +70,8 @@ diff -urN glibc-2.17-c758a686.orig/csu/libc-start.c glibc-2.17-c758a686/csu/libc #endif /* Register the destructor of the dynamic linker if there is any. */ -diff -urN glibc-2.17-c758a686.orig/elf/Makefile glibc-2.17-c758a686/elf/Makefile ---- glibc-2.17-c758a686.orig/elf/Makefile 2013-08-09 17:40:41.757856472 -0400 +diff -urN glibc-2.17-c758a686/elf/Makefile glibc-2.17-c758a686/elf/Makefile +--- glibc-2.17-c758a686/elf/Makefile 2013-08-09 17:40:41.757856472 -0400 +++ glibc-2.17-c758a686/elf/Makefile 2013-08-09 17:53:40.383236966 -0400 @@ -121,7 +121,8 @@ tests = tst-tls1 tst-tls2 tst-tls9 tst-leaks1 \ @@ -102,8 +102,8 @@ diff -urN glibc-2.17-c758a686.orig/elf/Makefile glibc-2.17-c758a686/elf/Makefile $(objpfx)tst-leaks1: $(libdl) $(objpfx)tst-leaks1-mem: $(objpfx)tst-leaks1.out $(common-objpfx)malloc/mtrace $(objpfx)tst-leaks1.mtrace > $@ -diff -urN glibc-2.17-c758a686.orig/elf/tst-ptrguard1.c glibc-2.17-c758a686/elf/tst-ptrguard1.c ---- glibc-2.17-c758a686.orig/elf/tst-ptrguard1.c 1969-12-31 19:00:00.000000000 -0500 +diff -urN glibc-2.17-c758a686/elf/tst-ptrguard1.c glibc-2.17-c758a686/elf/tst-ptrguard1.c +--- glibc-2.17-c758a686/elf/tst-ptrguard1.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.17-c758a686/elf/tst-ptrguard1.c 2013-08-09 17:53:40.383236966 -0400 @@ -0,0 +1,202 @@ +/* Copyright (C) 2013 Free Software Foundation, Inc. @@ -308,13 +308,13 @@ diff -urN glibc-2.17-c758a686.orig/elf/tst-ptrguard1.c glibc-2.17-c758a686/elf/t + break; +#define TEST_FUNCTION do_test () +#include "../test-skeleton.c" -diff -urN glibc-2.17-c758a686.orig/elf/tst-ptrguard1-static.c glibc-2.17-c758a686/elf/tst-ptrguard1-static.c ---- glibc-2.17-c758a686.orig/elf/tst-ptrguard1-static.c 1969-12-31 19:00:00.000000000 -0500 +diff -urN glibc-2.17-c758a686/elf/tst-ptrguard1-static.c glibc-2.17-c758a686/elf/tst-ptrguard1-static.c +--- glibc-2.17-c758a686/elf/tst-ptrguard1-static.c 1969-12-31 19:00:00.000000000 -0500 +++ glibc-2.17-c758a686/elf/tst-ptrguard1-static.c 2013-08-09 17:53:40.384236962 -0400 @@ -0,0 +1 @@ +#include "tst-ptrguard1.c" -diff -urN glibc-2.17-c758a686.orig/sysdeps/generic/stackguard-macros.h glibc-2.17-c758a686/sysdeps/generic/stackguard-macros.h ---- glibc-2.17-c758a686.orig/sysdeps/generic/stackguard-macros.h 2013-08-09 17:40:41.917855965 -0400 +diff -urN glibc-2.17-c758a686/sysdeps/generic/stackguard-macros.h glibc-2.17-c758a686/sysdeps/generic/stackguard-macros.h +--- glibc-2.17-c758a686/sysdeps/generic/stackguard-macros.h 2013-08-09 17:40:41.917855965 -0400 +++ glibc-2.17-c758a686/sysdeps/generic/stackguard-macros.h 2013-08-09 17:53:40.384236962 -0400 @@ -2,3 +2,6 @@ @@ -323,8 +323,8 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/generic/stackguard-macros.h glibc-2.1 + +extern uintptr_t __pointer_chk_guard_local; +#define POINTER_CHK_GUARD __pointer_chk_guard_local -diff -urN glibc-2.17-c758a686.orig/sysdeps/i386/stackguard-macros.h glibc-2.17-c758a686/sysdeps/i386/stackguard-macros.h ---- glibc-2.17-c758a686.orig/sysdeps/i386/stackguard-macros.h 2013-08-09 17:40:41.893856041 -0400 +diff -urN glibc-2.17-c758a686/sysdeps/i386/stackguard-macros.h glibc-2.17-c758a686/sysdeps/i386/stackguard-macros.h +--- glibc-2.17-c758a686/sysdeps/i386/stackguard-macros.h 2013-08-09 17:40:41.893856041 -0400 +++ glibc-2.17-c758a686/sysdeps/i386/stackguard-macros.h 2013-08-09 22:44:04.774298862 -0400 @@ -2,3 +2,11 @@ @@ -338,8 +338,8 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/i386/stackguard-macros.h glibc-2.17-c + : "i" (offsetof (tcbhead_t, pointer_guard))); \ + x; \ + }) -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/stackguard-macros.h glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/stackguard-macros.h ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/stackguard-macros.h 2013-08-09 17:40:42.006855683 -0400 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/stackguard-macros.h glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/stackguard-macros.h +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/stackguard-macros.h 2013-08-09 17:40:42.006855683 -0400 +++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc32/stackguard-macros.h 2013-08-09 22:24:48.778793075 -0400 @@ -2,3 +2,13 @@ @@ -355,8 +355,8 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc32/stackguard-macros.h + ); \ + x; \ + }) -diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/stackguard-macros.h glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/stackguard-macros.h ---- glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/stackguard-macros.h 2013-08-09 17:40:41.994855721 -0400 +diff -urN glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/stackguard-macros.h glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/stackguard-macros.h +--- glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/stackguard-macros.h 2013-08-09 17:40:41.994855721 -0400 +++ glibc-2.17-c758a686/sysdeps/powerpc/powerpc64/stackguard-macros.h 2013-08-09 22:24:47.831795865 -0400 @@ -2,3 +2,13 @@ @@ -372,8 +372,8 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/powerpc/powerpc64/stackguard-macros.h + ); \ + x; \ + }) -diff -urN glibc-2.17-c758a686.orig/sysdeps/s390/s390-32/stackguard-macros.h glibc-2.17-c758a686/sysdeps/s390/s390-32/stackguard-macros.h ---- glibc-2.17-c758a686.orig/sysdeps/s390/s390-32/stackguard-macros.h 2013-08-09 17:40:42.059855515 -0400 +diff -urN glibc-2.17-c758a686/sysdeps/s390/s390-32/stackguard-macros.h glibc-2.17-c758a686/sysdeps/s390/s390-32/stackguard-macros.h +--- glibc-2.17-c758a686/sysdeps/s390/s390-32/stackguard-macros.h 2013-08-09 17:40:42.059855515 -0400 +++ glibc-2.17-c758a686/sysdeps/s390/s390-32/stackguard-macros.h 2013-08-09 22:39:31.913120373 -0400 @@ -2,3 +2,15 @@ @@ -391,8 +391,8 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/s390/s390-32/stackguard-macros.h glib + x; \ + }) + -diff -urN glibc-2.17-c758a686.orig/sysdeps/x86_64/stackguard-macros.h glibc-2.17-c758a686/sysdeps/x86_64/stackguard-macros.h ---- glibc-2.17-c758a686.orig/sysdeps/x86_64/stackguard-macros.h 2013-08-09 17:40:42.013855661 -0400 +diff -urN glibc-2.17-c758a686/sysdeps/x86_64/stackguard-macros.h glibc-2.17-c758a686/sysdeps/x86_64/stackguard-macros.h +--- glibc-2.17-c758a686/sysdeps/x86_64/stackguard-macros.h 2013-08-09 17:40:42.013855661 -0400 +++ glibc-2.17-c758a686/sysdeps/x86_64/stackguard-macros.h 2013-08-09 22:44:53.550153736 -0400 @@ -4,3 +4,11 @@ ({ uintptr_t x; \ @@ -406,7 +406,7 @@ diff -urN glibc-2.17-c758a686.orig/sysdeps/x86_64/stackguard-macros.h glibc-2.17 + : "i" (offsetof (tcbhead_t, pointer_guard))); \ + x; \ + }) ---- glibc-2.17-c758a686.orig/sysdeps/s390/s390-64/stackguard-macros.h 2013-08-09 17:40:42.057855522 -0400 +--- glibc-2.17-c758a686/sysdeps/s390/s390-64/stackguard-macros.h 2013-08-09 17:40:42.057855522 -0400 +++ glibc-2.17-c758a686/sysdeps/s390/s390-64/stackguard-macros.h 2013-08-26 15:21:27.239043425 -0400 @@ -2,3 +2,17 @@ diff --git a/SOURCES/glibc-rh992727.patch b/SOURCES/glibc-rh992727.patch deleted file mode 100644 index f72a66a..0000000 --- a/SOURCES/glibc-rh992727.patch +++ /dev/null @@ -1,8076 +0,0 @@ -diff -pruN glibc-2.17-c758a686/benchtests/acosh-inputs glibc-2.17-c758a686.new/benchtests/acosh-inputs ---- glibc-2.17-c758a686/benchtests/acosh-inputs 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.17-c758a686.new/benchtests/acosh-inputs 2013-08-08 09:32:06.290663037 +0530 -@@ -0,0 +1,5 @@ -+0.1 -+0.2 -+0.3 -+0.4 -+0.5 -diff -pruN glibc-2.17-c758a686/benchtests/acos-inputs glibc-2.17-c758a686.new/benchtests/acos-inputs ---- glibc-2.17-c758a686/benchtests/acos-inputs 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.17-c758a686.new/benchtests/acos-inputs 2013-08-08 09:32:06.290663037 +0530 -@@ -0,0 +1,7 @@ -+0.5 -+0.1 -+0.2 -+0.3 -+0.4 -+0.8 -+0.7 -diff -pruN glibc-2.17-c758a686/benchtests/asinh-inputs glibc-2.17-c758a686.new/benchtests/asinh-inputs ---- glibc-2.17-c758a686/benchtests/asinh-inputs 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.17-c758a686.new/benchtests/asinh-inputs 2013-08-08 09:32:06.290663037 +0530 -@@ -0,0 +1,5 @@ -+0.1 -+0.2 -+0.3 -+0.4 -+0.5 -diff -pruN glibc-2.17-c758a686/benchtests/asin-inputs glibc-2.17-c758a686.new/benchtests/asin-inputs ---- glibc-2.17-c758a686/benchtests/asin-inputs 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.17-c758a686.new/benchtests/asin-inputs 2013-08-08 09:32:06.290663037 +0530 -@@ -0,0 +1,7 @@ -+0.5 -+0.1 -+0.2 -+0.3 -+0.4 -+0.8 -+0.7 -diff -pruN glibc-2.17-c758a686/benchtests/atanh-inputs glibc-2.17-c758a686.new/benchtests/atanh-inputs ---- glibc-2.17-c758a686/benchtests/atanh-inputs 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.17-c758a686.new/benchtests/atanh-inputs 2013-08-08 09:32:06.290663037 +0530 -@@ -0,0 +1,5 @@ -+0.1 -+0.2 -+0.3 -+0.4 -+0.5 -diff -pruN glibc-2.17-c758a686/benchtests/atan-inputs glibc-2.17-c758a686.new/benchtests/atan-inputs ---- glibc-2.17-c758a686/benchtests/atan-inputs 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.17-c758a686.new/benchtests/atan-inputs 2013-08-08 09:31:44.839663976 +0530 -@@ -0,0 +1,9 @@ -+0x1.000000c5cba86p0 -+0x1.000001883003ap0 -+0x1.00000dfb2b674p0 -+# atan slowest path at 768 bits -+# Implemented in sysdeps/ieee754/dbl-64/mpatan.c -+## name: 768bits -+0x1.000000c5cba87p0 -+0x1.000001883003bp0 -+0x1.00000dfb2b675p0 -diff -pruN glibc-2.17-c758a686/benchtests/bench-bcopy.c glibc-2.17-c758a686.new/benchtests/bench-bcopy.c ---- glibc-2.17-c758a686/benchtests/bench-bcopy.c 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.17-c758a686.new/benchtests/bench-bcopy.c 2013-08-08 09:32:15.907662617 +0530 -@@ -0,0 +1,20 @@ -+/* Measure bcopy functions. -+ Copyright (C) 2013 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 -+ . */ -+ -+#define TEST_BCOPY -+#include "bench-memmove.c" -diff -pruN glibc-2.17-c758a686/benchtests/bench-bcopy-ifunc.c glibc-2.17-c758a686.new/benchtests/bench-bcopy-ifunc.c ---- glibc-2.17-c758a686/benchtests/bench-bcopy-ifunc.c 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.17-c758a686.new/benchtests/bench-bcopy-ifunc.c 2013-08-08 09:32:15.907662617 +0530 -@@ -0,0 +1,20 @@ -+/* Measure IFUNC implementations of bcopy function. -+ Copyright (C) 2013 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 -+ . */ -+ -+#define TEST_IFUNC 1 -+#include "bench-bcopy.c" -diff -pruN glibc-2.17-c758a686/benchtests/bench-bzero.c glibc-2.17-c758a686.new/benchtests/bench-bzero.c ---- glibc-2.17-c758a686/benchtests/bench-bzero.c 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.17-c758a686.new/benchtests/bench-bzero.c 2013-08-08 09:32:15.907662617 +0530 -@@ -0,0 +1,19 @@ -+/* Measure bzero functions. -+ Copyright (C) 2013 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 -+ . */ -+#define TEST_BZERO -+#include "bench-memset.c" -diff -pruN glibc-2.17-c758a686/benchtests/bench-bzero-ifunc.c glibc-2.17-c758a686.new/benchtests/bench-bzero-ifunc.c ---- glibc-2.17-c758a686/benchtests/bench-bzero-ifunc.c 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.17-c758a686.new/benchtests/bench-bzero-ifunc.c 2013-08-08 09:32:15.907662617 +0530 -@@ -0,0 +1,20 @@ -+/* Measure IFUNC implementations of bzero function. -+ Copyright (C) 2013 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 -+ . */ -+ -+#define TEST_IFUNC 1 -+#include "bench-bzero.c" -diff -pruN glibc-2.17-c758a686/benchtests/bench-memccpy.c glibc-2.17-c758a686.new/benchtests/bench-memccpy.c ---- glibc-2.17-c758a686/benchtests/bench-memccpy.c 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.17-c758a686.new/benchtests/bench-memccpy.c 2013-08-08 09:32:15.907662617 +0530 -@@ -0,0 +1,169 @@ -+/* Measure memccpy functions. -+ Copyright (C) 2013 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 -+ . */ -+ -+#define TEST_MAIN -+#define TEST_NAME "memccpy" -+#include "bench-string.h" -+ -+void *simple_memccpy (void *, const void *, int, size_t); -+void *stupid_memccpy (void *, const void *, int, size_t); -+ -+IMPL (stupid_memccpy, 0) -+IMPL (simple_memccpy, 0) -+IMPL (memccpy, 1) -+ -+void * -+simple_memccpy (void *dst, const void *src, int c, size_t n) -+{ -+ const char *s = src; -+ char *d = dst; -+ -+ while (n-- > 0) -+ if ((*d++ = *s++) == (char) c) -+ return d; -+ -+ return NULL; -+} -+ -+void * -+stupid_memccpy (void *dst, const void *src, int c, size_t n) -+{ -+ void *p = memchr (src, c, n); -+ -+ if (p != NULL) -+ return mempcpy (dst, src, p - src + 1); -+ -+ memcpy (dst, src, n); -+ return NULL; -+} -+ -+typedef void *(*proto_t) (void *, const void *, int c, size_t); -+ -+static void -+do_one_test (impl_t *impl, void *dst, const void *src, int c, size_t len, -+ size_t n) -+{ -+ void *expect = len > n ? NULL : (char *) dst + len; -+ if (CALL (impl, dst, src, c, n) != expect) -+ { -+ error (0, 0, "Wrong result in function %s %p %p", impl->name, -+ CALL (impl, dst, src, c, n), expect); -+ ret = 1; -+ return; -+ } -+ -+ if (memcmp (dst, src, len > n ? n : len) != 0) -+ { -+ error (0, 0, "Wrong result in function %s", impl->name); -+ ret = 1; -+ return; -+ } -+ -+ if (HP_TIMING_AVAIL) -+ { -+ hp_timing_t start __attribute__ ((unused)); -+ hp_timing_t stop __attribute__ ((unused)); -+ hp_timing_t best_time = ~ (hp_timing_t) 0; -+ size_t i; -+ -+ for (i = 0; i < 32; ++i) -+ { -+ HP_TIMING_NOW (start); -+ CALL (impl, dst, src, c, n); -+ HP_TIMING_NOW (stop); -+ HP_TIMING_BEST (best_time, start, stop); -+ } -+ -+ printf ("\t%zd", (size_t) best_time); -+ } -+} -+ -+static void -+do_test (size_t align1, size_t align2, int c, size_t len, size_t n, -+ int max_char) -+{ -+ size_t i; -+ char *s1, *s2; -+ -+ align1 &= 7; -+ if (align1 + len >= page_size) -+ return; -+ -+ align2 &= 7; -+ if (align2 + len >= page_size) -+ return; -+ -+ s1 = (char *) (buf1 + align1); -+ s2 = (char *) (buf2 + align2); -+ -+ for (i = 0; i < len - 1; ++i) -+ { -+ s1[i] = 32 + 23 * i % (max_char - 32); -+ if (s1[i] == (char) c) -+ --s1[i]; -+ } -+ s1[len - 1] = c; -+ for (i = len; i + align1 < page_size && i < len + 64; ++i) -+ s1[i] = 32 + 32 * i % (max_char - 32); -+ -+ if (HP_TIMING_AVAIL) -+ printf ("Length %4zd, n %4zd, char %d, alignment %2zd/%2zd:", len, n, c, align1, align2); -+ -+ FOR_EACH_IMPL (impl, 0) -+ do_one_test (impl, s2, s1, c, len, n); -+ -+ if (HP_TIMING_AVAIL) -+ putchar ('\n'); -+} -+ -+int -+test_main (void) -+{ -+ size_t i; -+ -+ test_init (); -+ -+ printf ("%28s", ""); -+ FOR_EACH_IMPL (impl, 0) -+ printf ("\t%s", impl->name); -+ putchar ('\n'); -+ -+ for (i = 1; i < 8; ++i) -+ { -+ do_test (i, i, 12, 16, 16, 127); -+ do_test (i, i, 23, 16, 16, 255); -+ do_test (i, 2 * i, 28, 16, 16, 127); -+ do_test (2 * i, i, 31, 16, 16, 255); -+ do_test (8 - i, 2 * i, 1, 1 << i, 2 << i, 127); -+ do_test (2 * i, 8 - i, 17, 2 << i, 1 << i, 127); -+ do_test (8 - i, 2 * i, 0, 1 << i, 2 << i, 255); -+ do_test (2 * i, 8 - i, i, 2 << i, 1 << i, 255); -+ } -+ -+ for (i = 1; i < 8; ++i) -+ { -+ do_test (0, 0, i, 4 << i, 8 << i, 127); -+ do_test (0, 0, i, 16 << i, 8 << i, 127); -+ do_test (8 - i, 2 * i, i, 4 << i, 8 << i, 127); -+ do_test (8 - i, 2 * i, i, 16 << i, 8 << i, 127); -+ } -+ -+ return ret; -+} -+ -+#include "../test-skeleton.c" -diff -pruN glibc-2.17-c758a686/benchtests/bench-memccpy-ifunc.c glibc-2.17-c758a686.new/benchtests/bench-memccpy-ifunc.c ---- glibc-2.17-c758a686/benchtests/bench-memccpy-ifunc.c 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.17-c758a686.new/benchtests/bench-memccpy-ifunc.c 2013-08-08 09:32:15.907662617 +0530 -@@ -0,0 +1,20 @@ -+/* Measure IFUNC implementations of memccpy function. -+ Copyright (C) 2013 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 -+ . */ -+ -+#define TEST_IFUNC 1 -+#include "bench-memccpy.c" -diff -pruN glibc-2.17-c758a686/benchtests/bench-memchr.c glibc-2.17-c758a686.new/benchtests/bench-memchr.c ---- glibc-2.17-c758a686/benchtests/bench-memchr.c 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.17-c758a686.new/benchtests/bench-memchr.c 2013-08-08 09:32:15.907662617 +0530 -@@ -0,0 +1,137 @@ -+/* Measure memchr functions. -+ Copyright (C) 2013 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 -+ . */ -+ -+#define TEST_MAIN -+#define TEST_NAME "memchr" -+#include "bench-string.h" -+ -+typedef char *(*proto_t) (const char *, int, size_t); -+char *simple_memchr (const char *, int, size_t); -+ -+IMPL (simple_memchr, 0) -+IMPL (memchr, 1) -+ -+char * -+simple_memchr (const char *s, int c, size_t n) -+{ -+ while (n--) -+ if (*s++ == (char) c) -+ return (char *) s - 1; -+ return NULL; -+} -+ -+static void -+do_one_test (impl_t *impl, const char *s, int c, size_t n, char *exp_res) -+{ -+ char *res = CALL (impl, s, c, n); -+ if (res != exp_res) -+ { -+ error (0, 0, "Wrong result in function %s %p %p", impl->name, -+ res, exp_res); -+ ret = 1; -+ return; -+ } -+ -+ if (HP_TIMING_AVAIL) -+ { -+ hp_timing_t start __attribute ((unused)); -+ hp_timing_t stop __attribute ((unused)); -+ hp_timing_t best_time = ~ (hp_timing_t) 0; -+ size_t i; -+ -+ for (i = 0; i < 32; ++i) -+ { -+ HP_TIMING_NOW (start); -+ CALL (impl, s, c, n); -+ HP_TIMING_NOW (stop); -+ HP_TIMING_BEST (best_time, start, stop); -+ } -+ -+ printf ("\t%zd", (size_t) best_time); -+ } -+} -+ -+static void -+do_test (size_t align, size_t pos, size_t len, int seek_char) -+{ -+ size_t i; -+ char *result; -+ -+ align &= 7; -+ if (align + len >= page_size) -+ return; -+ -+ for (i = 0; i < len; ++i) -+ { -+ buf1[align + i] = 1 + 23 * i % 127; -+ if (buf1[align + i] == seek_char) -+ buf1[align + i] = seek_char + 1; -+ } -+ buf1[align + len] = 0; -+ -+ if (pos < len) -+ { -+ buf1[align + pos] = seek_char; -+ buf1[align + len] = -seek_char; -+ result = (char *) (buf1 + align + pos); -+ } -+ else -+ { -+ result = NULL; -+ buf1[align + len] = seek_char; -+ } -+ -+ if (HP_TIMING_AVAIL) -+ printf ("Length %4zd, alignment %2zd:", pos, align); -+ -+ FOR_EACH_IMPL (impl, 0) -+ do_one_test (impl, (char *) (buf1 + align), seek_char, len, result); -+ -+ if (HP_TIMING_AVAIL) -+ putchar ('\n'); -+} -+ -+int -+test_main (void) -+{ -+ size_t i; -+ -+ test_init (); -+ -+ printf ("%20s", ""); -+ FOR_EACH_IMPL (impl, 0) -+ printf ("\t%s", impl->name); -+ putchar ('\n'); -+ -+ for (i = 1; i < 8; ++i) -+ { -+ do_test (0, 16 << i, 2048, 23); -+ do_test (i, 64, 256, 23); -+ do_test (0, 16 << i, 2048, 0); -+ do_test (i, 64, 256, 0); -+ } -+ for (i = 1; i < 32; ++i) -+ { -+ do_test (0, i, i + 1, 23); -+ do_test (0, i, i + 1, 0); -+ } -+ -+ return ret; -+} -+ -+#include "../test-skeleton.c" -diff -pruN glibc-2.17-c758a686/benchtests/bench-memchr-ifunc.c glibc-2.17-c758a686.new/benchtests/bench-memchr-ifunc.c ---- glibc-2.17-c758a686/benchtests/bench-memchr-ifunc.c 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.17-c758a686.new/benchtests/bench-memchr-ifunc.c 2013-08-08 09:32:15.907662617 +0530 -@@ -0,0 +1,20 @@ -+/* Measure IFUNC implementations of memchr function. -+ Copyright (C) 2013 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 -+ . */ -+ -+#define TEST_IFUNC 1 -+#include "bench-memchr.c" -diff -pruN glibc-2.17-c758a686/benchtests/bench-memcmp.c glibc-2.17-c758a686.new/benchtests/bench-memcmp.c ---- glibc-2.17-c758a686/benchtests/bench-memcmp.c 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.17-c758a686.new/benchtests/bench-memcmp.c 2013-08-08 09:32:15.908662617 +0530 -@@ -0,0 +1,183 @@ -+/* Measure memcmp functions. -+ Copyright (C) 2013 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 -+ . */ -+ -+#define TEST_MAIN -+#ifdef WIDE -+# define TEST_NAME "wmemcmp" -+#else -+# define TEST_NAME "memcmp" -+#endif -+#include "bench-string.h" -+#ifdef WIDE -+# include -+# include -+ -+# define MEMCMP wmemcmp -+# define MEMCPY wmemcpy -+# define SIMPLE_MEMCMP simple_wmemcmp -+# define CHAR wchar_t -+# define UCHAR wchar_t -+# define CHARBYTES 4 -+# define CHAR__MIN WCHAR_MIN -+# define CHAR__MAX WCHAR_MAX -+int -+simple_wmemcmp (const wchar_t *s1, const wchar_t *s2, size_t n) -+{ -+ int ret = 0; -+ /* Warning! -+ wmemcmp has to use SIGNED comparison for elements. -+ memcmp has to use UNSIGNED comparison for elemnts. -+ */ -+ while (n-- && (ret = *s1 < *s2 ? -1 : *s1 == *s2 ? 0 : 1) == 0) {s1++; s2++;} -+ return ret; -+} -+#else -+# include -+ -+# define MEMCMP memcmp -+# define MEMCPY memcpy -+# define SIMPLE_MEMCMP simple_memcmp -+# define CHAR char -+# define MAX_CHAR 255 -+# define UCHAR unsigned char -+# define CHARBYTES 1 -+# define CHAR__MIN CHAR_MIN -+# define CHAR__MAX CHAR_MAX -+ -+int -+simple_memcmp (const char *s1, const char *s2, size_t n) -+{ -+ int ret = 0; -+ -+ while (n-- && (ret = *(unsigned char *) s1++ - *(unsigned char *) s2++) == 0); -+ return ret; -+} -+#endif -+ -+typedef int (*proto_t) (const CHAR *, const CHAR *, size_t); -+ -+IMPL (SIMPLE_MEMCMP, 0) -+IMPL (MEMCMP, 1) -+ -+static void -+do_one_test (impl_t *impl, const CHAR *s1, const CHAR *s2, size_t len, -+ int exp_result) -+{ -+ if (HP_TIMING_AVAIL) -+ { -+ hp_timing_t start __attribute ((unused)); -+ hp_timing_t stop __attribute ((unused)); -+ hp_timing_t best_time = ~ (hp_timing_t) 0; -+ size_t i; -+ -+ for (i = 0; i < 32; ++i) -+ { -+ HP_TIMING_NOW (start); -+ CALL (impl, s1, s2, len); -+ HP_TIMING_NOW (stop); -+ HP_TIMING_BEST (best_time, start, stop); -+ } -+ -+ printf ("\t%zd", (size_t) best_time); -+ } -+} -+ -+static void -+do_test (size_t align1, size_t align2, size_t len, int exp_result) -+{ -+ size_t i; -+ CHAR *s1, *s2; -+ -+ if (len == 0) -+ return; -+ -+ align1 &= 63; -+ if (align1 + (len + 1) * CHARBYTES >= page_size) -+ return; -+ -+ align2 &= 63; -+ if (align2 + (len + 1) * CHARBYTES >= page_size) -+ return; -+ -+ s1 = (CHAR *) (buf1 + align1); -+ s2 = (CHAR *) (buf2 + align2); -+ -+ for (i = 0; i < len; i++) -+ s1[i] = s2[i] = 1 + (23 << ((CHARBYTES - 1) * 8)) * i % CHAR__MAX; -+ -+ s1[len] = align1; -+ s2[len] = align2; -+ s2[len - 1] -= exp_result; -+ -+ if (HP_TIMING_AVAIL) -+ printf ("Length %4zd, alignment %2zd/%2zd:", len, align1, align2); -+ -+ FOR_EACH_IMPL (impl, 0) -+ do_one_test (impl, s1, s2, len, exp_result); -+ -+ if (HP_TIMING_AVAIL) -+ putchar ('\n'); -+} -+ -+int -+test_main (void) -+{ -+ size_t i; -+ -+ test_init (); -+ -+ printf ("%23s", ""); -+ FOR_EACH_IMPL (impl, 0) -+ printf ("\t%s", impl->name); -+ putchar ('\n'); -+ -+ for (i = 1; i < 16; ++i) -+ { -+ do_test (i * CHARBYTES, i * CHARBYTES, i, 0); -+ do_test (i * CHARBYTES, i * CHARBYTES, i, 1); -+ do_test (i * CHARBYTES, i * CHARBYTES, i, -1); -+ } -+ -+ for (i = 0; i < 16; ++i) -+ { -+ do_test (0, 0, i, 0); -+ do_test (0, 0, i, 1); -+ do_test (0, 0, i, -1); -+ } -+ -+ for (i = 1; i < 10; ++i) -+ { -+ do_test (0, 0, 2 << i, 0); -+ do_test (0, 0, 2 << i, 1); -+ do_test (0, 0, 2 << i, -1); -+ do_test (0, 0, 16 << i, 0); -+ do_test ((8 - i) * CHARBYTES, (2 * i) * CHARBYTES, 16 << i, 0); -+ do_test (0, 0, 16 << i, 1); -+ do_test (0, 0, 16 << i, -1); -+ } -+ -+ for (i = 1; i < 8; ++i) -+ { -+ do_test (i * CHARBYTES, 2 * (i * CHARBYTES), 8 << i, 0); -+ do_test (i * CHARBYTES, 2 * (i * CHARBYTES), 8 << i, 1); -+ do_test (i * CHARBYTES, 2 * (i * CHARBYTES), 8 << i, -1); -+ } -+ -+ return ret; -+} -+#include "../test-skeleton.c" -diff -pruN glibc-2.17-c758a686/benchtests/bench-memcmp-ifunc.c glibc-2.17-c758a686.new/benchtests/bench-memcmp-ifunc.c ---- glibc-2.17-c758a686/benchtests/bench-memcmp-ifunc.c 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.17-c758a686.new/benchtests/bench-memcmp-ifunc.c 2013-08-08 09:32:15.907662617 +0530 -@@ -0,0 +1,20 @@ -+/* Measure IFUNC implementations of memcmp function. -+ Copyright (C) 2013 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 -+ . */ -+ -+#define TEST_IFUNC 1 -+#include "bench-memcmp.c" -diff -pruN glibc-2.17-c758a686/benchtests/bench-memcpy.c glibc-2.17-c758a686.new/benchtests/bench-memcpy.c ---- glibc-2.17-c758a686/benchtests/bench-memcpy.c 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.17-c758a686.new/benchtests/bench-memcpy.c 2013-08-08 09:32:13.700662713 +0530 -@@ -0,0 +1,163 @@ -+/* Measure memcpy functions. -+ Copyright (C) 2013 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 -+ . */ -+ -+#ifndef MEMCPY_RESULT -+# define MEMCPY_RESULT(dst, len) dst -+# define MIN_PAGE_SIZE 131072 -+# define TEST_MAIN -+# define TEST_NAME "memcpy" -+# include "bench-string.h" -+ -+char *simple_memcpy (char *, const char *, size_t); -+char *builtin_memcpy (char *, const char *, size_t); -+ -+IMPL (simple_memcpy, 0) -+IMPL (builtin_memcpy, 0) -+IMPL (memcpy, 1) -+ -+char * -+simple_memcpy (char *dst, const char *src, size_t n) -+{ -+ char *ret = dst; -+ while (n--) -+ *dst++ = *src++; -+ return ret; -+} -+ -+char * -+builtin_memcpy (char *dst, const char *src, size_t n) -+{ -+ return __builtin_memcpy (dst, src, n); -+} -+#endif -+ -+typedef char *(*proto_t) (char *, const char *, size_t); -+ -+static void -+do_one_test (impl_t *impl, char *dst, const char *src, -+ size_t len) -+{ -+ if (CALL (impl, dst, src, len) != MEMCPY_RESULT (dst, len)) -+ { -+ error (0, 0, "Wrong result in function %s %p %p", impl->name, -+ CALL (impl, dst, src, len), MEMCPY_RESULT (dst, len)); -+ ret = 1; -+ return; -+ } -+ -+ if (memcmp (dst, src, len) != 0) -+ { -+ error (0, 0, "Wrong result in function %s dst \"%s\" src \"%s\"", -+ impl->name, dst, src); -+ ret = 1; -+ return; -+ } -+ -+ if (HP_TIMING_AVAIL) -+ { -+ hp_timing_t start __attribute ((unused)); -+ hp_timing_t stop __attribute ((unused)); -+ hp_timing_t best_time = ~ (hp_timing_t) 0; -+ size_t i; -+ -+ for (i = 0; i < 32; ++i) -+ { -+ HP_TIMING_NOW (start); -+ CALL (impl, dst, src, len); -+ HP_TIMING_NOW (stop); -+ HP_TIMING_BEST (best_time, start, stop); -+ } -+ -+ printf ("\t%zd", (size_t) best_time); -+ } -+} -+ -+static void -+do_test (size_t align1, size_t align2, size_t len) -+{ -+ size_t i, j; -+ char *s1, *s2; -+ -+ align1 &= 63; -+ if (align1 + len >= page_size) -+ return; -+ -+ align2 &= 63; -+ if (align2 + len >= page_size) -+ return; -+ -+ s1 = (char *) (buf1 + align1); -+ s2 = (char *) (buf2 + align2); -+ -+ for (i = 0, j = 1; i < len; i++, j += 23) -+ s1[i] = j; -+ -+ if (HP_TIMING_AVAIL) -+ printf ("Length %4zd, alignment %2zd/%2zd:", len, align1, align2); -+ -+ FOR_EACH_IMPL (impl, 0) -+ do_one_test (impl, s2, s1, len); -+ -+ if (HP_TIMING_AVAIL) -+ putchar ('\n'); -+} -+ -+int -+test_main (void) -+{ -+ size_t i; -+ -+ test_init (); -+ -+ printf ("%23s", ""); -+ FOR_EACH_IMPL (impl, 0) -+ printf ("\t%s", impl->name); -+ putchar ('\n'); -+ -+ for (i = 0; i < 18; ++i) -+ { -+ do_test (0, 0, 1 << i); -+ do_test (i, 0, 1 << i); -+ do_test (0, i, 1 << i); -+ do_test (i, i, 1 << i); -+ } -+ -+ for (i = 0; i < 32; ++i) -+ { -+ do_test (0, 0, i); -+ do_test (i, 0, i); -+ do_test (0, i, i); -+ do_test (i, i, i); -+ } -+ -+ for (i = 3; i < 32; ++i) -+ { -+ if ((i & (i - 1)) == 0) -+ continue; -+ do_test (0, 0, 16 * i); -+ do_test (i, 0, 16 * i); -+ do_test (0, i, 16 * i); -+ do_test (i, i, 16 * i); -+ } -+ -+ do_test (0, 0, getpagesize ()); -+ -+ return ret; -+} -+ -+#include "../test-skeleton.c" -diff -pruN glibc-2.17-c758a686/benchtests/bench-memcpy-ifunc.c glibc-2.17-c758a686.new/benchtests/bench-memcpy-ifunc.c ---- glibc-2.17-c758a686/benchtests/bench-memcpy-ifunc.c 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.17-c758a686.new/benchtests/bench-memcpy-ifunc.c 2013-08-08 09:32:13.700662713 +0530 -@@ -0,0 +1,20 @@ -+/* Measure IFUNC implementations of memcpy function. -+ Copyright (C) 2013 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 -+ . */ -+ -+#define TEST_IFUNC 1 -+#include "bench-memcpy.c" -diff -pruN glibc-2.17-c758a686/benchtests/bench-memmem.c glibc-2.17-c758a686.new/benchtests/bench-memmem.c ---- glibc-2.17-c758a686/benchtests/bench-memmem.c 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.17-c758a686.new/benchtests/bench-memmem.c 2013-08-08 09:32:15.908662617 +0530 -@@ -0,0 +1,172 @@ -+/* Measure memmem functions. -+ Copyright (C) 2013 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 -+ . */ -+ -+#define TEST_MAIN -+#define TEST_NAME "memmem" -+#define BUF1PAGES 20 -+#define ITERATIONS 500 -+#include "bench-string.h" -+ -+typedef char *(*proto_t) (const void *, size_t, const void *, size_t); -+void *simple_memmem (const void *, size_t, const void *, size_t); -+ -+IMPL (simple_memmem, 0) -+IMPL (memmem, 1) -+ -+void * -+simple_memmem (const void *haystack, size_t haystack_len, const void *needle, -+ size_t needle_len) -+{ -+ const char *begin; -+ const char *const last_possible -+ = (const char *) haystack + haystack_len - needle_len; -+ -+ if (needle_len == 0) -+ /* The first occurrence of the empty string is deemed to occur at -+ the beginning of the string. */ -+ return (void *) haystack; -+ -+ /* Sanity check, otherwise the loop might search through the whole -+ memory. */ -+ if (__builtin_expect (haystack_len < needle_len, 0)) -+ return NULL; -+ -+ for (begin = (const char *) haystack; begin <= last_possible; ++begin) -+ if (begin[0] == ((const char *) needle)[0] && -+ !memcmp ((const void *) &begin[1], -+ (const void *) ((const char *) needle + 1), -+ needle_len - 1)) -+ return (void *) begin; -+ -+ return NULL; -+} -+ -+static void -+do_one_test (impl_t *impl, const void *haystack, size_t haystack_len, -+ const void *needle, size_t needle_len, const void *expected) -+{ -+ if (HP_TIMING_AVAIL) -+ { -+ hp_timing_t start __attribute ((unused)); -+ hp_timing_t stop __attribute ((unused)); -+ hp_timing_t best_time = ~ (hp_timing_t) 0; -+ size_t i; -+ -+ for (i = 0; i < 32; ++i) -+ { -+ HP_TIMING_NOW (start); -+ CALL (impl, haystack, haystack_len, needle, needle_len); -+ HP_TIMING_NOW (stop); -+ HP_TIMING_BEST (best_time, start, stop); -+ } -+ -+ printf ("\t%zd", (size_t) best_time); -+ } -+} -+ -+static void -+do_test (const char *str, size_t len, size_t idx) -+{ -+ char tmpbuf[len]; -+ -+ memcpy (tmpbuf, buf1 + idx, len); -+ memcpy (buf1 + idx, str, len); -+ -+ if (HP_TIMING_AVAIL) -+ printf ("String %s, offset %zd:", str, idx); -+ -+ FOR_EACH_IMPL (impl, 0) -+ do_one_test (impl, buf1, BUF1PAGES * page_size, str, len, buf1 + idx); -+ -+ memcpy (buf1 + idx, tmpbuf, len); -+ -+ if (HP_TIMING_AVAIL) -+ putchar ('\n'); -+} -+ -+static void -+do_random_tests (void) -+{ -+ for (size_t n = 0; n < ITERATIONS; ++n) -+ { -+ char tmpbuf[32]; -+ -+ size_t shift = random () % 11; -+ size_t rel = random () % ((2 << (shift + 1)) * 64); -+ size_t idx = MIN ((2 << shift) * 64 + rel, BUF1PAGES * page_size - 2); -+ size_t len = random () % (sizeof (tmpbuf) - 1) + 1; -+ len = MIN (len, BUF1PAGES * page_size - idx - 1); -+ memcpy (tmpbuf, buf1 + idx, len); -+ for (size_t i = random () % len / 2 + 1; i > 0; --i) -+ { -+ size_t off = random () % len; -+ char ch = '0' + random () % 10; -+ -+ buf1[idx + off] = ch; -+ } -+ -+ if (HP_TIMING_AVAIL) -+ printf ("String %.*s, offset %zd:", (int) len, buf1 + idx, idx); -+ -+ FOR_EACH_IMPL (impl, 0) -+ do_one_test (impl, buf1, BUF1PAGES * page_size, buf1 + idx, len, -+ buf1 + idx); -+ -+ if (HP_TIMING_AVAIL) -+ putchar ('\n'); -+ -+ memcpy (buf1 + idx, tmpbuf, len); -+ } -+} -+ -+static const char *const strs[] = -+ { -+ "00000", "00112233", "0123456789", "0000111100001111", -+ "00000111110000022222", "012345678901234567890", -+ "abc0", "aaaa0", "abcabc0" -+ }; -+ -+ -+int -+test_main (void) -+{ -+ size_t i; -+ -+ test_init (); -+ -+ printf ("%23s", ""); -+ FOR_EACH_IMPL (impl, 0) -+ printf ("\t%s", impl->name); -+ putchar ('\n'); -+ -+ for (i = 0; i < BUF1PAGES * page_size; ++i) -+ buf1[i] = 60 + random () % 32; -+ -+ for (i = 0; i < sizeof (strs) / sizeof (strs[0]); ++i) -+ for (size_t j = 0; j < 120; j += 7) -+ { -+ size_t len = strlen (strs[i]); -+ -+ do_test (strs[i], len, j); -+ } -+ -+ do_random_tests (); -+ return ret; -+} -+ -+#include "../test-skeleton.c" -diff -pruN glibc-2.17-c758a686/benchtests/bench-memmem-ifunc.c glibc-2.17-c758a686.new/benchtests/bench-memmem-ifunc.c ---- glibc-2.17-c758a686/benchtests/bench-memmem-ifunc.c 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.17-c758a686.new/benchtests/bench-memmem-ifunc.c 2013-08-08 09:32:15.908662617 +0530 -@@ -0,0 +1,20 @@ -+/* Measure IFUNC implementations of memmem function. -+ Copyright (C) 2013 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 -+ . */ -+ -+#define TEST_IFUNC 1 -+#include "bench-memmem.c" -diff -pruN glibc-2.17-c758a686/benchtests/bench-memmove.c glibc-2.17-c758a686.new/benchtests/bench-memmove.c ---- glibc-2.17-c758a686/benchtests/bench-memmove.c 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.17-c758a686.new/benchtests/bench-memmove.c 2013-08-08 09:32:21.172662386 +0530 -@@ -0,0 +1,188 @@ -+/* Measure memmove functions. -+ Copyright (C) 2013 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 -+ . */ -+ -+#define TEST_MAIN -+#ifdef TEST_BCOPY -+# define TEST_NAME "bcopy" -+#else -+# define TEST_NAME "memmove" -+#endif -+#include "bench-string.h" -+ -+char *simple_memmove (char *, const char *, size_t); -+ -+#ifdef TEST_BCOPY -+typedef void (*proto_t) (const char *, char *, size_t); -+void simple_bcopy (const char *, char *, size_t); -+ -+IMPL (simple_bcopy, 0) -+IMPL (bcopy, 1) -+ -+void -+simple_bcopy (const char *src, char *dst, size_t n) -+{ -+ simple_memmove (dst, src, n); -+} -+#else -+typedef char *(*proto_t) (char *, const char *, size_t); -+ -+IMPL (simple_memmove, 0) -+IMPL (memmove, 1) -+#endif -+ -+char * -+inhibit_loop_to_libcall -+simple_memmove (char *dst, const char *src, size_t n) -+{ -+ char *ret = dst; -+ if (src < dst) -+ { -+ dst += n; -+ src += n; -+ while (n--) -+ *--dst = *--src; -+ } -+ else -+ while (n--) -+ *dst++ = *src++; -+ return ret; -+} -+ -+static void -+do_one_test (impl_t *impl, char *dst, char *src, const char *orig_src, -+ size_t len) -+{ -+ memcpy (src, orig_src, len); -+#ifdef TEST_BCOPY -+ CALL (impl, src, dst, len); -+#else -+ char *res; -+ -+ res = CALL (impl, dst, src, len); -+ if (res != dst) -+ { -+ error (0, 0, "Wrong result in function %s %p %p", impl->name, -+ res, dst); -+ ret = 1; -+ return; -+ } -+#endif -+ -+ if (memcmp (dst, orig_src, len) != 0) -+ { -+ error (0, 0, "Wrong result in function %s dst \"%s\" src \"%s\"", -+ impl->name, dst, src); -+ ret = 1; -+ return; -+ } -+ -+ if (HP_TIMING_AVAIL) -+ { -+ hp_timing_t start __attribute ((unused)); -+ hp_timing_t stop __attribute ((unused)); -+ hp_timing_t best_time = ~ (hp_timing_t) 0; -+ size_t i; -+ -+ for (i = 0; i < 32; ++i) -+ { -+ HP_TIMING_NOW (start); -+#ifdef TEST_BCOPY -+ CALL (impl, src, dst, len); -+#else -+ CALL (impl, dst, src, len); -+#endif -+ HP_TIMING_NOW (stop); -+ HP_TIMING_BEST (best_time, start, stop); -+ } -+ -+ printf ("\t%zd", (size_t) best_time); -+ } -+} -+ -+static void -+do_test (size_t align1, size_t align2, size_t len) -+{ -+ size_t i, j; -+ char *s1, *s2; -+ -+ align1 &= 63; -+ if (align1 + len >= page_size) -+ return; -+ -+ align2 &= 63; -+ if (align2 + len >= page_size) -+ return; -+ -+ s1 = (char *) (buf1 + align1); -+ s2 = (char *) (buf2 + align2); -+ -+ for (i = 0, j = 1; i < len; i++, j += 23) -+ s1[i] = j; -+ -+ if (HP_TIMING_AVAIL) -+ printf ("Length %4zd, alignment %2zd/%2zd:", len, align1, align2); -+ -+ FOR_EACH_IMPL (impl, 0) -+ do_one_test (impl, s2, (char *) (buf2 + align1), s1, len); -+ -+ if (HP_TIMING_AVAIL) -+ putchar ('\n'); -+} -+ -+int -+test_main (void) -+{ -+ size_t i; -+ -+ test_init (); -+ -+ printf ("%23s", ""); -+ FOR_EACH_IMPL (impl, 0) -+ printf ("\t%s", impl->name); -+ putchar ('\n'); -+ -+ for (i = 0; i < 14; ++i) -+ { -+ do_test (0, 32, 1 << i); -+ do_test (32, 0, 1 << i); -+ do_test (0, i, 1 << i); -+ do_test (i, 0, 1 << i); -+ } -+ -+ for (i = 0; i < 32; ++i) -+ { -+ do_test (0, 32, i); -+ do_test (32, 0, i); -+ do_test (0, i, i); -+ do_test (i, 0, i); -+ } -+ -+ for (i = 3; i < 32; ++i) -+ { -+ if ((i & (i - 1)) == 0) -+ continue; -+ do_test (0, 32, 16 * i); -+ do_test (32, 0, 16 * i); -+ do_test (0, i, 16 * i); -+ do_test (i, 0, 16 * i); -+ } -+ -+ return ret; -+} -+ -+#include "../test-skeleton.c" -diff -pruN glibc-2.17-c758a686/benchtests/bench-memmove-ifunc.c glibc-2.17-c758a686.new/benchtests/bench-memmove-ifunc.c ---- glibc-2.17-c758a686/benchtests/bench-memmove-ifunc.c 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.17-c758a686.new/benchtests/bench-memmove-ifunc.c 2013-08-08 09:32:15.908662617 +0530 -@@ -0,0 +1,20 @@ -+/* Measure IFUNC implementations of memmove function. -+ Copyright (C) 2013 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 -+ . */ -+ -+#define TEST_IFUNC 1 -+#include "bench-memmove.c" -diff -pruN glibc-2.17-c758a686/benchtests/bench-mempcpy.c glibc-2.17-c758a686.new/benchtests/bench-mempcpy.c ---- glibc-2.17-c758a686/benchtests/bench-mempcpy.c 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.17-c758a686.new/benchtests/bench-mempcpy.c 2013-08-08 09:32:15.908662617 +0530 -@@ -0,0 +1,37 @@ -+/* Measure mempcpy functions. -+ Copyright (C) 2013 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 -+ . */ -+ -+#define MEMCPY_RESULT(dst, len) (dst) + (len) -+#define TEST_MAIN -+#define TEST_NAME "mempcpy" -+#include "bench-string.h" -+ -+char *simple_mempcpy (char *, const char *, size_t); -+ -+IMPL (simple_mempcpy, 0) -+IMPL (mempcpy, 1) -+ -+char * -+simple_mempcpy (char *dst, const char *src, size_t n) -+{ -+ while (n--) -+ *dst++ = *src++; -+ return dst; -+} -+ -+#include "bench-memcpy.c" -diff -pruN glibc-2.17-c758a686/benchtests/bench-mempcpy-ifunc.c glibc-2.17-c758a686.new/benchtests/bench-mempcpy-ifunc.c ---- glibc-2.17-c758a686/benchtests/bench-mempcpy-ifunc.c 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.17-c758a686.new/benchtests/bench-mempcpy-ifunc.c 2013-08-08 09:32:15.908662617 +0530 -@@ -0,0 +1,20 @@ -+/* Measure IFUNC implementations of mempcpy function. -+ Copyright (C) 2013 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 -+ . */ -+ -+#define TEST_IFUNC 1 -+#include "bench-mempcpy.c" -diff -pruN glibc-2.17-c758a686/benchtests/bench-memset.c glibc-2.17-c758a686.new/benchtests/bench-memset.c ---- glibc-2.17-c758a686/benchtests/bench-memset.c 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.17-c758a686.new/benchtests/bench-memset.c 2013-08-08 09:32:21.172662386 +0530 -@@ -0,0 +1,170 @@ -+/* Measure memset functions. -+ Copyright (C) 2013 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 -+ . */ -+ -+#define TEST_MAIN -+#ifdef TEST_BZERO -+# define TEST_NAME "bzero" -+#else -+# define TEST_NAME "memset" -+#endif -+#define MIN_PAGE_SIZE 131072 -+#include "bench-string.h" -+ -+char *simple_memset (char *, int, size_t); -+ -+#ifdef TEST_BZERO -+typedef void (*proto_t) (char *, size_t); -+void simple_bzero (char *, size_t); -+void builtin_bzero (char *, size_t); -+ -+IMPL (simple_bzero, 0) -+IMPL (builtin_bzero, 0) -+IMPL (bzero, 1) -+ -+void -+simple_bzero (char *s, size_t n) -+{ -+ simple_memset (s, 0, n); -+} -+ -+void -+builtin_bzero (char *s, size_t n) -+{ -+ __builtin_bzero (s, n); -+} -+#else -+typedef char *(*proto_t) (char *, int, size_t); -+char *builtin_memset (char *, int, size_t); -+ -+IMPL (simple_memset, 0) -+IMPL (builtin_memset, 0) -+IMPL (memset, 1) -+ -+char * -+builtin_memset (char *s, int c, size_t n) -+{ -+ return __builtin_memset (s, c, n); -+} -+#endif -+ -+char * -+inhibit_loop_to_libcall -+simple_memset (char *s, int c, size_t n) -+{ -+ char *r = s, *end = s + n; -+ while (r < end) -+ *r++ = c; -+ return s; -+} -+ -+static void -+do_one_test (impl_t *impl, char *s, int c __attribute ((unused)), size_t n) -+{ -+ char tstbuf[n]; -+#ifdef TEST_BZERO -+ simple_bzero (tstbuf, n); -+ CALL (impl, s, n); -+ if (memcmp (s, tstbuf, n) != 0) -+#else -+ char *res = CALL (impl, s, c, n); -+ if (res != s -+ || simple_memset (tstbuf, c, n) != tstbuf -+ || memcmp (s, tstbuf, n) != 0) -+#endif -+ { -+ error (0, 0, "Wrong result in function %s", impl->name); -+ ret = 1; -+ return; -+ } -+ -+ if (HP_TIMING_AVAIL) -+ { -+ hp_timing_t start __attribute ((unused)); -+ hp_timing_t stop __attribute ((unused)); -+ hp_timing_t best_time = ~ (hp_timing_t) 0; -+ size_t i; -+ -+ for (i = 0; i < 32; ++i) -+ { -+ HP_TIMING_NOW (start); -+#ifdef TEST_BZERO -+ CALL (impl, s, n); -+#else -+ CALL (impl, s, c, n); -+#endif -+ -+ HP_TIMING_NOW (stop); -+ HP_TIMING_BEST (best_time, start, stop); -+ } -+ -+ printf ("\t%zd", (size_t) best_time); -+ } -+} -+ -+static void -+do_test (size_t align, int c, size_t len) -+{ -+ align &= 7; -+ if (align + len > page_size) -+ return; -+ -+ if (HP_TIMING_AVAIL) -+ printf ("Length %4zd, alignment %2zd, c %2d:", len, align, c); -+ -+ FOR_EACH_IMPL (impl, 0) -+ do_one_test (impl, (char *) buf1 + align, c, len); -+ -+ if (HP_TIMING_AVAIL) -+ putchar ('\n'); -+} -+ -+int -+test_main (void) -+{ -+ size_t i; -+ int c = 0; -+ -+ test_init (); -+ -+ printf ("%24s", ""); -+ FOR_EACH_IMPL (impl, 0) -+ printf ("\t%s", impl->name); -+ putchar ('\n'); -+ -+#ifndef TEST_BZERO -+ for (c = -65; c <= 130; c += 65) -+#endif -+ { -+ for (i = 0; i < 18; ++i) -+ do_test (0, c, 1 << i); -+ for (i = 1; i < 32; ++i) -+ { -+ do_test (i, c, i); -+ if (i & (i - 1)) -+ do_test (0, c, i); -+ } -+ do_test (1, c, 14); -+ do_test (3, c, 1024); -+ do_test (4, c, 64); -+ do_test (2, c, 25); -+ } -+ -+ return ret; -+} -+ -+#include "../test-skeleton.c" -diff -pruN glibc-2.17-c758a686/benchtests/bench-memset-ifunc.c glibc-2.17-c758a686.new/benchtests/bench-memset-ifunc.c ---- glibc-2.17-c758a686/benchtests/bench-memset-ifunc.c 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.17-c758a686.new/benchtests/bench-memset-ifunc.c 2013-08-08 09:32:15.908662617 +0530 -@@ -0,0 +1,20 @@ -+/* Measure IFUNC implementations of memset function. -+ Copyright (C) 2013 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 -+ . */ -+ -+#define TEST_IFUNC 1 -+#include "bench-memset.c" -diff -pruN glibc-2.17-c758a686/benchtests/bench-modf.c glibc-2.17-c758a686.new/benchtests/bench-modf.c ---- glibc-2.17-c758a686/benchtests/bench-modf.c 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.17-c758a686.new/benchtests/bench-modf.c 2013-08-08 09:32:00.654663284 +0530 -@@ -0,0 +1,44 @@ -+/* Copyright (C) 2013 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 -+ . */ -+ -+extern double modf (double, double *); -+ -+#define CALL_BENCH_FUNC(j, i) modf (in[j].arg0, &i); -+ -+struct args -+{ -+ volatile double arg0; -+} in[] = -+{ -+ { 42.42 }, -+ { -42.42 } -+}; -+ -+#define NUM_VARIANTS 1 -+#define NUM_SAMPLES(v) (sizeof (in) / sizeof (struct args)) -+ -+static volatile double ret = 0.0; -+#define BENCH_FUNC(v, j) \ -+({ \ -+ double iptr; \ -+ ret = CALL_BENCH_FUNC (j, iptr); \ -+}) -+ -+#define FUNCNAME "modf" -+#define VARIANT(v) FUNCNAME "()" -+ -+#include "bench-skeleton.c" -diff -pruN glibc-2.17-c758a686/benchtests/bench-rawmemchr.c glibc-2.17-c758a686.new/benchtests/bench-rawmemchr.c ---- glibc-2.17-c758a686/benchtests/bench-rawmemchr.c 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.17-c758a686.new/benchtests/bench-rawmemchr.c 2013-08-08 09:32:15.909662617 +0530 -@@ -0,0 +1,133 @@ -+/* Measure memchr functions. -+ Copyright (C) 2013 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 -+ . */ -+ -+#include -+ -+#define TEST_MAIN -+#define TEST_NAME "rawmemchr" -+#include "bench-string.h" -+ -+typedef char *(*proto_t) (const char *, int); -+char *simple_rawmemchr (const char *, int); -+ -+IMPL (simple_rawmemchr, 0) -+IMPL (rawmemchr, 1) -+ -+char * -+simple_rawmemchr (const char *s, int c) -+{ -+ while (1) -+ if (*s++ == (char) c) -+ return (char *) s - 1; -+ return NULL; -+} -+ -+static void -+do_one_test (impl_t *impl, const char *s, int c, char *exp_res) -+{ -+ char *res = CALL (impl, s, c); -+ if (res != exp_res) -+ { -+ error (0, 0, "Wrong result in function %s %p %p", impl->name, -+ res, exp_res); -+ ret = 1; -+ return; -+ } -+ -+ if (HP_TIMING_AVAIL) -+ { -+ hp_timing_t start __attribute ((unused)); -+ hp_timing_t stop __attribute ((unused)); -+ hp_timing_t best_time = ~ (hp_timing_t) 0; -+ size_t i; -+ -+ for (i = 0; i < 32; ++i) -+ { -+ HP_TIMING_NOW (start); -+ CALL (impl, s, c); -+ HP_TIMING_NOW (stop); -+ HP_TIMING_BEST (best_time, start, stop); -+ } -+ -+ printf ("\t%zd", (size_t) best_time); -+ } -+} -+ -+static void -+do_test (size_t align, size_t pos, size_t len, int seek_char) -+{ -+ size_t i; -+ char *result; -+ -+ align &= 7; -+ if (align + len >= page_size) -+ return; -+ -+ for (i = 0; i < len; ++i) -+ { -+ buf1[align + i] = 1 + 23 * i % 127; -+ if (buf1[align + i] == seek_char) -+ buf1[align + i] = seek_char + 1; -+ } -+ buf1[align + len] = 0; -+ -+ assert (pos < len); -+ -+ buf1[align + pos] = seek_char; -+ buf1[align + len] = -seek_char; -+ result = (char *) (buf1 + align + pos); -+ -+ if (HP_TIMING_AVAIL) -+ printf ("Length %4zd, alignment %2zd:", pos, align); -+ -+ FOR_EACH_IMPL (impl, 0) -+ do_one_test (impl, (char *) (buf1 + align), seek_char, result); -+ -+ if (HP_TIMING_AVAIL) -+ putchar ('\n'); -+} -+ -+int -+test_main (void) -+{ -+ size_t i; -+ -+ test_init (); -+ -+ printf ("%20s", ""); -+ FOR_EACH_IMPL (impl, 0) -+ printf ("\t%s", impl->name); -+ putchar ('\n'); -+ -+ for (i = 1; i < 7; ++i) -+ { -+ do_test (0, 16 << i, 2048, 23); -+ do_test (i, 64, 256, 23); -+ do_test (0, 16 << i, 2048, 0); -+ do_test (i, 64, 256, 0); -+ } -+ for (i = 1; i < 32; ++i) -+ { -+ do_test (0, i, i + 1, 23); -+ do_test (0, i, i + 1, 0); -+ } -+ -+ return ret; -+} -+ -+#include "../test-skeleton.c" -diff -pruN glibc-2.17-c758a686/benchtests/bench-rawmemchr-ifunc.c glibc-2.17-c758a686.new/benchtests/bench-rawmemchr-ifunc.c ---- glibc-2.17-c758a686/benchtests/bench-rawmemchr-ifunc.c 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.17-c758a686.new/benchtests/bench-rawmemchr-ifunc.c 2013-08-08 09:32:15.908662617 +0530 -@@ -0,0 +1,20 @@ -+/* Measure IFUNC implementations of rawmemchr function. -+ Copyright (C) 2013 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 -+ . */ -+ -+#define TEST_IFUNC 1 -+#include "bench-rawmemchr.c" -diff -pruN glibc-2.17-c758a686/benchtests/bench-skeleton.c glibc-2.17-c758a686.new/benchtests/bench-skeleton.c ---- glibc-2.17-c758a686/benchtests/bench-skeleton.c 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.17-c758a686.new/benchtests/bench-skeleton.c 2013-08-08 09:31:58.046663398 +0530 -@@ -0,0 +1,110 @@ -+/* Skeleton for benchmark programs. -+ Copyright (C) 2013 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 -+ . */ -+ -+#include -+#include -+#include -+#include -+#include -+#include "bench-timing.h" -+ -+volatile unsigned int dontoptimize = 0; -+ -+void -+startup (void) -+{ -+ /* This loop should cause CPU to switch to maximal freqency. -+ This makes subsequent measurement more accurate. We need a side effect -+ to prevent the loop being deleted by compiler. -+ This should be enough to cause CPU to speed up and it is simpler than -+ running loop for constant time. This is used when user does not have root -+ access to set a constant freqency. */ -+ for (int k = 0; k < 10000000; k++) -+ dontoptimize += 23 * dontoptimize + 2; -+} -+ -+#define TIMESPEC_AFTER(a, b) \ -+ (((a).tv_sec == (b).tv_sec) ? \ -+ ((a).tv_nsec > (b).tv_nsec) : \ -+ ((a).tv_sec > (b).tv_sec)) -+int -+main (int argc, char **argv) -+{ -+ unsigned long i, k; -+ struct timespec runtime; -+ timing_t start, end; -+ -+ startup(); -+ -+ memset (&runtime, 0, sizeof (runtime)); -+ -+ unsigned long iters; -+ -+ TIMING_INIT (iters); -+ -+ for (int v = 0; v < NUM_VARIANTS; v++) -+ { -+ /* Run for approximately DURATION seconds. */ -+ clock_gettime (CLOCK_MONOTONIC_RAW, &runtime); -+ runtime.tv_sec += DURATION; -+ -+ double d_total_i = 0; -+ timing_t total = 0, max = 0, min = 0x7fffffffffffffff; -+ while (1) -+ { -+ for (i = 0; i < NUM_SAMPLES (v); i++) -+ { -+ uint64_t cur; -+ TIMING_NOW (start); -+ for (k = 0; k < iters; k++) -+ BENCH_FUNC (v, i); -+ TIMING_NOW (end); -+ -+ TIMING_DIFF (cur, start, end); -+ -+ if (cur > max) -+ max = cur; -+ -+ if (cur < min) -+ min = cur; -+ -+ TIMING_ACCUM (total, cur); -+ -+ d_total_i += iters; -+ } -+ struct timespec curtime; -+ -+ memset (&curtime, 0, sizeof (curtime)); -+ clock_gettime (CLOCK_MONOTONIC_RAW, &curtime); -+ if (TIMESPEC_AFTER (curtime, runtime)) -+ goto done; -+ } -+ -+ double d_total_s; -+ double d_iters; -+ -+ done: -+ d_total_s = total; -+ d_iters = iters; -+ -+ TIMING_PRINT_STATS (VARIANT (v), d_total_s, d_iters, d_total_i, max, -+ min); -+ } -+ -+ return 0; -+} -diff -pruN glibc-2.17-c758a686/benchtests/bench-stpcpy.c glibc-2.17-c758a686.new/benchtests/bench-stpcpy.c ---- glibc-2.17-c758a686/benchtests/bench-stpcpy.c 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.17-c758a686.new/benchtests/bench-stpcpy.c 2013-08-08 09:32:15.909662617 +0530 -@@ -0,0 +1,36 @@ -+/* Measure stpcpy functions. -+ Copyright (C) 2013 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 -+ . */ -+ -+#define STRCPY_RESULT(dst, len) ((dst) + (len)) -+#define TEST_MAIN -+#define TEST_NAME "stpcpy" -+#include "bench-string.h" -+ -+char *simple_stpcpy (char *, const char *); -+ -+IMPL (simple_stpcpy, 0) -+IMPL (stpcpy, 1) -+ -+char * -+simple_stpcpy (char *dst, const char *src) -+{ -+ while ((*dst++ = *src++) != '\0'); -+ return dst - 1; -+} -+ -+#include "bench-strcpy.c" -diff -pruN glibc-2.17-c758a686/benchtests/bench-stpcpy_chk.c glibc-2.17-c758a686.new/benchtests/bench-stpcpy_chk.c ---- glibc-2.17-c758a686/benchtests/bench-stpcpy_chk.c 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.17-c758a686.new/benchtests/bench-stpcpy_chk.c 2013-08-08 09:32:18.486662504 +0530 -@@ -0,0 +1,45 @@ -+/* Measure stpcpy checking functions. -+ Copyright (C) 2013 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 -+ . */ -+ -+#define STRCPY_RESULT(dst, len) ((dst) + (len)) -+#define TEST_MAIN -+#define TEST_NAME "stpcpy_chk" -+#include "bench-string.h" -+ -+extern void __attribute__ ((noreturn)) __chk_fail (void); -+char *simple_stpcpy_chk (char *, const char *, size_t); -+extern char *normal_stpcpy (char *, const char *, size_t) -+ __asm ("stpcpy"); -+extern char *__stpcpy_chk (char *, const char *, size_t); -+ -+IMPL (simple_stpcpy_chk, 0) -+IMPL (normal_stpcpy, 1) -+IMPL (__stpcpy_chk, 2) -+ -+char * -+simple_stpcpy_chk (char *dst, const char *src, size_t len) -+{ -+ if (! len) -+ __chk_fail (); -+ while ((*dst++ = *src++) != '\0') -+ if (--len == 0) -+ __chk_fail (); -+ return dst - 1; -+} -+ -+#include "bench-strcpy_chk.c" -diff -pruN glibc-2.17-c758a686/benchtests/bench-stpcpy_chk-ifunc.c glibc-2.17-c758a686.new/benchtests/bench-stpcpy_chk-ifunc.c ---- glibc-2.17-c758a686/benchtests/bench-stpcpy_chk-ifunc.c 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.17-c758a686.new/benchtests/bench-stpcpy_chk-ifunc.c 2013-08-08 09:32:18.486662504 +0530 -@@ -0,0 +1,20 @@ -+/* Measure IFUNC implementations of stpcpy checking function. -+ Copyright (C) 2013 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 -+ . */ -+ -+#define TEST_IFUNC 1 -+#include "bench-stpcpy_chk.c" -diff -pruN glibc-2.17-c758a686/benchtests/bench-stpcpy-ifunc.c glibc-2.17-c758a686.new/benchtests/bench-stpcpy-ifunc.c ---- glibc-2.17-c758a686/benchtests/bench-stpcpy-ifunc.c 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.17-c758a686.new/benchtests/bench-stpcpy-ifunc.c 2013-08-08 09:32:15.909662617 +0530 -@@ -0,0 +1,20 @@ -+/* Measure IFUNC implementations of stpcpy function. -+ Copyright (C) 2013 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 -+ . */ -+ -+#define TEST_IFUNC 1 -+#include "bench-stpcpy.c" -diff -pruN glibc-2.17-c758a686/benchtests/bench-stpncpy.c glibc-2.17-c758a686.new/benchtests/bench-stpncpy.c ---- glibc-2.17-c758a686/benchtests/bench-stpncpy.c 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.17-c758a686.new/benchtests/bench-stpncpy.c 2013-08-08 09:32:15.909662617 +0530 -@@ -0,0 +1,59 @@ -+/* Measure stpncpy functions. -+ Copyright (C) 2013 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 -+ . */ -+ -+#define STRNCPY_RESULT(dst, len, n) ((dst) + ((len) > (n) ? (n) : (len))) -+#define TEST_MAIN -+#define TEST_NAME "stpncpy" -+#include "bench-string.h" -+ -+char *simple_stpncpy (char *, const char *, size_t); -+char *stupid_stpncpy (char *, const char *, size_t); -+ -+IMPL (stupid_stpncpy, 0) -+IMPL (simple_stpncpy, 0) -+IMPL (stpncpy, 1) -+ -+char * -+simple_stpncpy (char *dst, const char *src, size_t n) -+{ -+ while (n--) -+ if ((*dst++ = *src++) == '\0') -+ { -+ size_t i; -+ -+ for (i = 0; i < n; ++i) -+ dst[i] = '\0'; -+ return dst - 1; -+ } -+ return dst; -+} -+ -+char * -+stupid_stpncpy (char *dst, const char *src, size_t n) -+{ -+ size_t nc = strnlen (src, n); -+ size_t i; -+ -+ for (i = 0; i < nc; ++i) -+ dst[i] = src[i]; -+ for (; i < n; ++i) -+ dst[i] = '\0'; -+ return dst + nc; -+} -+ -+#include "bench-strncpy.c" -diff -pruN glibc-2.17-c758a686/benchtests/bench-stpncpy-ifunc.c glibc-2.17-c758a686.new/benchtests/bench-stpncpy-ifunc.c ---- glibc-2.17-c758a686/benchtests/bench-stpncpy-ifunc.c 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.17-c758a686.new/benchtests/bench-stpncpy-ifunc.c 2013-08-08 09:32:15.909662617 +0530 -@@ -0,0 +1,20 @@ -+/* Measure IFUNC implementations of stpncpy function. -+ Copyright (C) 2013 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 -+ . */ -+ -+#define TEST_IFUNC 1 -+#include "bench-stpncpy.c" -diff -pruN glibc-2.17-c758a686/benchtests/bench-strcasecmp.c glibc-2.17-c758a686.new/benchtests/bench-strcasecmp.c ---- glibc-2.17-c758a686/benchtests/bench-strcasecmp.c 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.17-c758a686.new/benchtests/bench-strcasecmp.c 2013-08-08 09:32:15.909662617 +0530 -@@ -0,0 +1,183 @@ -+/* Measure strcasecmp functions. -+ Copyright (C) 2013 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 -+ . */ -+ -+#include -+#define TEST_MAIN -+#define TEST_NAME "strcasecmp" -+#include "bench-string.h" -+ -+typedef int (*proto_t) (const char *, const char *); -+static int simple_strcasecmp (const char *, const char *); -+static int stupid_strcasecmp (const char *, const char *); -+ -+IMPL (stupid_strcasecmp, 0) -+IMPL (simple_strcasecmp, 0) -+IMPL (strcasecmp, 1) -+ -+static int -+simple_strcasecmp (const char *s1, const char *s2) -+{ -+ int ret; -+ -+ while ((ret = ((unsigned char) tolower (*s1) -+ - (unsigned char) tolower (*s2))) == 0 -+ && *s1++) -+ ++s2; -+ return ret; -+} -+ -+static int -+stupid_strcasecmp (const char *s1, const char *s2) -+{ -+ size_t ns1 = strlen (s1) + 1, ns2 = strlen (s2) + 1; -+ size_t n = ns1 < ns2 ? ns1 : ns2; -+ int ret = 0; -+ -+ while (n--) -+ { -+ if ((ret = ((unsigned char) tolower (*s1) -+ - (unsigned char) tolower (*s2))) != 0) -+ break; -+ ++s1; -+ ++s2; -+ } -+ return ret; -+} -+ -+static void -+do_one_test (impl_t *impl, const char *s1, const char *s2, int exp_result) -+{ -+ int result = CALL (impl, s1, s2); -+ if ((exp_result == 0 && result != 0) -+ || (exp_result < 0 && result >= 0) -+ || (exp_result > 0 && result <= 0)) -+ { -+ error (0, 0, "Wrong result in function %s %d %d", impl->name, -+ result, exp_result); -+ ret = 1; -+ return; -+ } -+ -+ if (HP_TIMING_AVAIL) -+ { -+ hp_timing_t start __attribute ((unused)); -+ hp_timing_t stop __attribute ((unused)); -+ hp_timing_t best_time = ~ (hp_timing_t) 0; -+ size_t i; -+ -+ for (i = 0; i < 32; ++i) -+ { -+ HP_TIMING_NOW (start); -+ CALL (impl, s1, s2); -+ HP_TIMING_NOW (stop); -+ HP_TIMING_BEST (best_time, start, stop); -+ } -+ -+ printf ("\t%zd", (size_t) best_time); -+ } -+} -+ -+static void -+do_test (size_t align1, size_t align2, size_t len, int max_char, -+ int exp_result) -+{ -+ size_t i; -+ char *s1, *s2; -+ -+ if (len == 0) -+ return; -+ -+ align1 &= 7; -+ if (align1 + len + 1 >= page_size) -+ return; -+ -+ align2 &= 7; -+ if (align2 + len + 1 >= page_size) -+ return; -+ -+ s1 = (char *) (buf1 + align1); -+ s2 = (char *) (buf2 + align2); -+ -+ for (i = 0; i < len; i++) -+ { -+ s1[i] = toupper (1 + 23 * i % max_char); -+ s2[i] = tolower (s1[i]); -+ } -+ -+ s1[len] = s2[len] = 0; -+ s1[len + 1] = 23; -+ s2[len + 1] = 24 + exp_result; -+ if ((s2[len - 1] == 'z' && exp_result == -1) -+ || (s2[len - 1] == 'a' && exp_result == 1)) -+ s1[len - 1] += exp_result; -+ else -+ s2[len - 1] -= exp_result; -+ -+ if (HP_TIMING_AVAIL) -+ printf ("Length %4zd, alignment %2zd/%2zd:", len, align1, align2); -+ -+ FOR_EACH_IMPL (impl, 0) -+ do_one_test (impl, s1, s2, exp_result); -+ -+ if (HP_TIMING_AVAIL) -+ putchar ('\n'); -+} -+ -+int -+test_main (void) -+{ -+ size_t i; -+ -+ test_init (); -+ -+ printf ("%23s", ""); -+ FOR_EACH_IMPL (impl, 0) -+ printf ("\t%s", impl->name); -+ putchar ('\n'); -+ -+ for (i = 1; i < 16; ++i) -+ { -+ do_test (i, i, i, 127, 0); -+ do_test (i, i, i, 127, 1); -+ do_test (i, i, i, 127, -1); -+ } -+ -+ for (i = 1; i < 10; ++i) -+ { -+ do_test (0, 0, 2 << i, 127, 0); -+ do_test (0, 0, 2 << i, 254, 0); -+ do_test (0, 0, 2 << i, 127, 1); -+ do_test (0, 0, 2 << i, 254, 1); -+ do_test (0, 0, 2 << i, 127, -1); -+ do_test (0, 0, 2 << i, 254, -1); -+ } -+ -+ for (i = 1; i < 8; ++i) -+ { -+ do_test (i, 2 * i, 8 << i, 127, 0); -+ do_test (2 * i, i, 8 << i, 254, 0); -+ do_test (i, 2 * i, 8 << i, 127, 1); -+ do_test (2 * i, i, 8 << i, 254, 1); -+ do_test (i, 2 * i, 8 << i, 127, -1); -+ do_test (2 * i, i, 8 << i, 254, -1); -+ } -+ -+ return ret; -+} -+ -+#include "../test-skeleton.c" -diff -pruN glibc-2.17-c758a686/benchtests/bench-strcasecmp-ifunc.c glibc-2.17-c758a686.new/benchtests/bench-strcasecmp-ifunc.c ---- glibc-2.17-c758a686/benchtests/bench-strcasecmp-ifunc.c 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.17-c758a686.new/benchtests/bench-strcasecmp-ifunc.c 2013-08-08 09:32:15.909662617 +0530 -@@ -0,0 +1,20 @@ -+/* Measure IFUNC implementations of strcasecmp function. -+ Copyright (C) 2013 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 -+ . */ -+ -+#define TEST_IFUNC 1 -+#include "bench-strcasecmp.c" -diff -pruN glibc-2.17-c758a686/benchtests/bench-strcasestr.c glibc-2.17-c758a686.new/benchtests/bench-strcasestr.c ---- glibc-2.17-c758a686/benchtests/bench-strcasestr.c 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.17-c758a686.new/benchtests/bench-strcasestr.c 2013-08-08 09:32:15.909662617 +0530 -@@ -0,0 +1,186 @@ -+/* Measure strcasestr functions. -+ Copyright (C) 2013 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 -+ . */ -+ -+#define TEST_MAIN -+#define TEST_NAME "strcasestr" -+#include "bench-string.h" -+ -+ -+#define STRCASESTR simple_strcasestr -+#define NO_ALIAS -+#define __strncasecmp strncasecmp -+#include "../string/strcasestr.c" -+ -+ -+static char * -+stupid_strcasestr (const char *s1, const char *s2) -+{ -+ ssize_t s1len = strlen (s1); -+ ssize_t s2len = strlen (s2); -+ -+ if (s2len > s1len) -+ return NULL; -+ -+ for (ssize_t i = 0; i <= s1len - s2len; ++i) -+ { -+ size_t j; -+ for (j = 0; j < s2len; ++j) -+ if (tolower (s1[i + j]) != tolower (s2[j])) -+ break; -+ if (j == s2len) -+ return (char *) s1 + i; -+ } -+ -+ return NULL; -+} -+ -+ -+typedef char *(*proto_t) (const char *, const char *); -+ -+IMPL (stupid_strcasestr, 0) -+IMPL (simple_strcasestr, 0) -+IMPL (strcasestr, 1) -+ -+ -+static void -+do_one_test (impl_t *impl, const char *s1, const char *s2, char *exp_result) -+{ -+ if (HP_TIMING_AVAIL) -+ { -+ hp_timing_t start __attribute ((unused)); -+ hp_timing_t stop __attribute ((unused)); -+ hp_timing_t best_time = ~(hp_timing_t) 0; -+ size_t i; -+ -+ for (i = 0; i < 32; ++i) -+ { -+ HP_TIMING_NOW (start); -+ CALL (impl, s1, s2); -+ HP_TIMING_NOW (stop); -+ HP_TIMING_BEST (best_time, start, stop); -+ } -+ -+ printf ("\t%zd", (size_t) best_time); -+ } -+} -+ -+ -+static void -+do_test (size_t align1, size_t align2, size_t len1, size_t len2, -+ int fail) -+{ -+ char *s1 = (char *) (buf1 + align1); -+ char *s2 = (char *) (buf2 + align2); -+ -+ static const char d[] = "1234567890abcxyz"; -+#define dl (sizeof (d) - 1) -+ char *ss2 = s2; -+ for (size_t l = len2; l > 0; l = l > dl ? l - dl : 0) -+ { -+ size_t t = l > dl ? dl : l; -+ ss2 = mempcpy (ss2, d, t); -+ } -+ s2[len2] = '\0'; -+ -+ if (fail) -+ { -+ char *ss1 = s1; -+ for (size_t l = len1; l > 0; l = l > dl ? l - dl : 0) -+ { -+ size_t t = l > dl ? dl : l; -+ memcpy (ss1, d, t); -+ ++ss1[len2 > 7 ? 7 : len2 - 1]; -+ ss1 += t; -+ } -+ } -+ else -+ { -+ memset (s1, '0', len1); -+ for (size_t i = 0; i < len2; ++i) -+ s1[len1 - len2 + i] = toupper (s2[i]); -+ } -+ s1[len1] = '\0'; -+ -+ if (HP_TIMING_AVAIL) -+ printf ("Length %4zd/%zd, alignment %2zd/%2zd, %s:", -+ len1, len2, align1, align2, fail ? "fail" : "found"); -+ -+ FOR_EACH_IMPL (impl, 0) -+ do_one_test (impl, s1, s2, fail ? NULL : s1 + len1 - len2); -+ -+ if (HP_TIMING_AVAIL) -+ putchar ('\n'); -+} -+ -+static int -+test_main (void) -+{ -+ test_init (); -+ -+ printf ("%23s", ""); -+ FOR_EACH_IMPL (impl, 0) -+ printf ("\t%s", impl->name); -+ putchar ('\n'); -+ -+ for (size_t klen = 2; klen < 32; ++klen) -+ for (size_t hlen = 2 * klen; hlen < 16 * klen; hlen += klen) -+ { -+ do_test (0, 0, hlen, klen, 0); -+ do_test (0, 0, hlen, klen, 1); -+ do_test (0, 3, hlen, klen, 0); -+ do_test (0, 3, hlen, klen, 1); -+ do_test (0, 9, hlen, klen, 0); -+ do_test (0, 9, hlen, klen, 1); -+ do_test (0, 15, hlen, klen, 0); -+ do_test (0, 15, hlen, klen, 1); -+ -+ do_test (3, 0, hlen, klen, 0); -+ do_test (3, 0, hlen, klen, 1); -+ do_test (3, 3, hlen, klen, 0); -+ do_test (3, 3, hlen, klen, 1); -+ do_test (3, 9, hlen, klen, 0); -+ do_test (3, 9, hlen, klen, 1); -+ do_test (3, 15, hlen, klen, 0); -+ do_test (3, 15, hlen, klen, 1); -+ -+ do_test (9, 0, hlen, klen, 0); -+ do_test (9, 0, hlen, klen, 1); -+ do_test (9, 3, hlen, klen, 0); -+ do_test (9, 3, hlen, klen, 1); -+ do_test (9, 9, hlen, klen, 0); -+ do_test (9, 9, hlen, klen, 1); -+ do_test (9, 15, hlen, klen, 0); -+ do_test (9, 15, hlen, klen, 1); -+ -+ do_test (15, 0, hlen, klen, 0); -+ do_test (15, 0, hlen, klen, 1); -+ do_test (15, 3, hlen, klen, 0); -+ do_test (15, 3, hlen, klen, 1); -+ do_test (15, 9, hlen, klen, 0); -+ do_test (15, 9, hlen, klen, 1); -+ do_test (15, 15, hlen, klen, 0); -+ do_test (15, 15, hlen, klen, 1); -+ } -+ -+ do_test (0, 0, page_size - 1, 16, 0); -+ do_test (0, 0, page_size - 1, 16, 1); -+ -+ return ret; -+} -+ -+#include "../test-skeleton.c" -diff -pruN glibc-2.17-c758a686/benchtests/bench-strcasestr-ifunc.c glibc-2.17-c758a686.new/benchtests/bench-strcasestr-ifunc.c ---- glibc-2.17-c758a686/benchtests/bench-strcasestr-ifunc.c 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.17-c758a686.new/benchtests/bench-strcasestr-ifunc.c 2013-08-08 09:32:15.909662617 +0530 -@@ -0,0 +1,20 @@ -+/* Measure IFUNC implementations of strcasestr function. -+ Copyright (C) 2013 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 -+ . */ -+ -+#define TEST_IFUNC 1 -+#include "bench-strcasestr.c" -diff -pruN glibc-2.17-c758a686/benchtests/bench-strcat.c glibc-2.17-c758a686.new/benchtests/bench-strcat.c ---- glibc-2.17-c758a686/benchtests/bench-strcat.c 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.17-c758a686.new/benchtests/bench-strcat.c 2013-08-08 09:32:15.910662617 +0530 -@@ -0,0 +1,155 @@ -+/* Measure strcat functions. -+ Copyright (C) 2013 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 -+ . */ -+ -+#define TEST_MAIN -+#define TEST_NAME "strcat" -+#include "bench-string.h" -+ -+typedef char *(*proto_t) (char *, const char *); -+char *simple_strcat (char *, const char *); -+ -+IMPL (simple_strcat, 0) -+IMPL (strcat, 1) -+ -+char * -+simple_strcat (char *dst, const char *src) -+{ -+ char *ret = dst; -+ while (*dst++ != '\0'); -+ --dst; -+ while ((*dst++ = *src++) != '\0'); -+ return ret; -+} -+ -+static void -+do_one_test (impl_t *impl, char *dst, const char *src) -+{ -+ size_t k = strlen (dst); -+ if (CALL (impl, dst, src) != dst) -+ { -+ error (0, 0, "Wrong result in function %s %p %p", impl->name, -+ CALL (impl, dst, src), dst); -+ ret = 1; -+ return; -+ } -+ -+ if (strcmp (dst + k, src) != 0) -+ { -+ error (0, 0, "Wrong result in function %s dst \"%s\" src \"%s\"", -+ impl->name, dst, src); -+ ret = 1; -+ return; -+ } -+ -+ if (HP_TIMING_AVAIL) -+ { -+ hp_timing_t start __attribute ((unused)); -+ hp_timing_t stop __attribute ((unused)); -+ hp_timing_t best_time = ~ (hp_timing_t) 0; -+ size_t i; -+ -+ for (i = 0; i < 32; ++i) -+ { -+ dst[k] = '\0'; -+ HP_TIMING_NOW (start); -+ CALL (impl, dst, src); -+ HP_TIMING_NOW (stop); -+ HP_TIMING_BEST (best_time, start, stop); -+ } -+ -+ printf ("\t%zd", (size_t) best_time); -+ } -+} -+ -+static void -+do_test (size_t align1, size_t align2, size_t len1, size_t len2, int max_char) -+{ -+ size_t i; -+ char *s1, *s2; -+ -+ align1 &= 7; -+ if (align1 + len1 >= page_size) -+ return; -+ -+ align2 &= 7; -+ if (align2 + len1 + len2 >= page_size) -+ return; -+ -+ s1 = (char *) (buf1 + align1); -+ s2 = (char *) (buf2 + align2); -+ -+ for (i = 0; i < len1; ++i) -+ s1[i] = 32 + 23 * i % (max_char - 32); -+ s1[len1] = '\0'; -+ -+ for (i = 0; i < len2; i++) -+ s2[i] = 32 + 23 * i % (max_char - 32); -+ -+ if (HP_TIMING_AVAIL) -+ printf ("Length %4zd/%4zd, alignment %2zd/%2zd:", len1, len2, align1, align2); -+ -+ FOR_EACH_IMPL (impl, 0) -+ { -+ s2[len2] = '\0'; -+ do_one_test (impl, s2, s1); -+ } -+ -+ if (HP_TIMING_AVAIL) -+ putchar ('\n'); -+} -+ -+int -+test_main (void) -+{ -+ size_t i; -+ -+ test_init (); -+ -+ printf ("%28s", ""); -+ FOR_EACH_IMPL (impl, 0) -+ printf ("\t%s", impl->name); -+ putchar ('\n'); -+ -+ for (i = 0; i < 16; ++i) -+ { -+ do_test (0, 0, i, i, 127); -+ do_test (0, 0, i, i, 255); -+ do_test (0, i, i, i, 127); -+ do_test (i, 0, i, i, 255); -+ } -+ -+ for (i = 1; i < 8; ++i) -+ { -+ do_test (0, 0, 8 << i, 8 << i, 127); -+ do_test (8 - i, 2 * i, 8 << i, 8 << i, 127); -+ do_test (0, 0, 8 << i, 2 << i, 127); -+ do_test (8 - i, 2 * i, 8 << i, 2 << i, 127); -+ } -+ -+ for (i = 1; i < 8; ++i) -+ { -+ do_test (i, 2 * i, 8 << i, 1, 127); -+ do_test (2 * i, i, 8 << i, 1, 255); -+ do_test (i, i, 8 << i, 10, 127); -+ do_test (i, i, 8 << i, 10, 255); -+ } -+ -+ return ret; -+} -+ -+#include "../test-skeleton.c" -diff -pruN glibc-2.17-c758a686/benchtests/bench-strcat-ifunc.c glibc-2.17-c758a686.new/benchtests/bench-strcat-ifunc.c ---- glibc-2.17-c758a686/benchtests/bench-strcat-ifunc.c 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.17-c758a686.new/benchtests/bench-strcat-ifunc.c 2013-08-08 09:32:15.909662617 +0530 -@@ -0,0 +1,20 @@ -+/* Measure IFUNC implementations of strcat function. -+ Copyright (C) 2013 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 -+ . */ -+ -+#define TEST_IFUNC 1 -+#include "bench-strcat.c" -diff -pruN glibc-2.17-c758a686/benchtests/bench-strchr.c glibc-2.17-c758a686.new/benchtests/bench-strchr.c ---- glibc-2.17-c758a686/benchtests/bench-strchr.c 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.17-c758a686.new/benchtests/bench-strchr.c 2013-08-08 09:32:15.910662617 +0530 -@@ -0,0 +1,206 @@ -+/* Measure STRCHR functions. -+ Copyright (C) 2013 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 -+ . */ -+ -+#define TEST_MAIN -+#ifndef WIDE -+# ifdef USE_FOR_STRCHRNUL -+# define TEST_NAME "strchrnul" -+# else -+# define TEST_NAME "strchr" -+# endif -+#else -+# define TEST_NAME "wcschr" -+#endif -+#include "bench-string.h" -+ -+#ifndef WIDE -+# ifdef USE_FOR_STRCHRNUL -+# define STRCHR strchrnul -+# define stupid_STRCHR stupid_STRCHRNUL -+# define simple_STRCHR simple_STRCHRNUL -+# else -+# define STRCHR strchr -+# endif -+# define STRLEN strlen -+# define CHAR char -+# define BIG_CHAR CHAR_MAX -+# define MIDDLE_CHAR 127 -+# define SMALL_CHAR 23 -+# define UCHAR unsigned char -+#else -+# include -+# define STRCHR wcschr -+# define STRLEN wcslen -+# define CHAR wchar_t -+# define BIG_CHAR WCHAR_MAX -+# define MIDDLE_CHAR 1121 -+# define SMALL_CHAR 851 -+# define UCHAR wchar_t -+#endif -+ -+#ifdef USE_FOR_STRCHRNUL -+# define NULLRET(endptr) endptr -+#else -+# define NULLRET(endptr) NULL -+#endif -+ -+ -+typedef CHAR *(*proto_t) (const CHAR *, int); -+ -+CHAR * -+simple_STRCHR (const CHAR *s, int c) -+{ -+ for (; *s != (CHAR) c; ++s) -+ if (*s == '\0') -+ return NULLRET ((CHAR *) s); -+ return (CHAR *) s; -+} -+ -+CHAR * -+stupid_STRCHR (const CHAR *s, int c) -+{ -+ size_t n = STRLEN (s) + 1; -+ -+ while (n--) -+ if (*s++ == (CHAR) c) -+ return (CHAR *) s - 1; -+ return NULLRET ((CHAR *) s - 1); -+} -+ -+IMPL (stupid_STRCHR, 0) -+IMPL (simple_STRCHR, 0) -+IMPL (STRCHR, 1) -+ -+static void -+do_one_test (impl_t *impl, const CHAR *s, int c, const CHAR *exp_res) -+{ -+ if (HP_TIMING_AVAIL) -+ { -+ hp_timing_t start __attribute ((unused)); -+ hp_timing_t stop __attribute ((unused)); -+ hp_timing_t best_time = ~ (hp_timing_t) 0; -+ size_t i; -+ -+ for (i = 0; i < 32; ++i) -+ { -+ HP_TIMING_NOW (start); -+ CALL (impl, s, c); -+ HP_TIMING_NOW (stop); -+ HP_TIMING_BEST (best_time, start, stop); -+ } -+ -+ printf ("\t%zd", (size_t) best_time); -+ } -+} -+ -+static void -+do_test (size_t align, size_t pos, size_t len, int seek_char, int max_char) -+/* For wcschr: align here means align not in bytes, -+ but in wchar_ts, in bytes it will equal to align * (sizeof (wchar_t)) -+ len for wcschr here isn't in bytes but it's number of wchar_t symbols. */ -+{ -+ size_t i; -+ CHAR *result; -+ CHAR *buf = (CHAR *) buf1; -+ align &= 15; -+ if ((align + len) * sizeof (CHAR) >= page_size) -+ return; -+ -+ for (i = 0; i < len; ++i) -+ { -+ buf[align + i] = 32 + 23 * i % max_char; -+ if (buf[align + i] == seek_char) -+ buf[align + i] = seek_char + 1; -+ else if (buf[align + i] == 0) -+ buf[align + i] = 1; -+ } -+ buf[align + len] = 0; -+ -+ if (pos < len) -+ { -+ buf[align + pos] = seek_char; -+ result = buf + align + pos; -+ } -+ else if (seek_char == 0) -+ result = buf + align + len; -+ else -+ result = NULLRET (buf + align + len); -+ -+ if (HP_TIMING_AVAIL) -+ printf ("Length %4zd, alignment in bytes %2zd:", -+ pos, align * sizeof (CHAR)); -+ -+ FOR_EACH_IMPL (impl, 0) -+ do_one_test (impl, buf + align, seek_char, result); -+ -+ if (HP_TIMING_AVAIL) -+ putchar ('\n'); -+} -+ -+int -+test_main (void) -+{ -+ size_t i; -+ -+ test_init (); -+ -+ printf ("%20s", ""); -+ FOR_EACH_IMPL (impl, 0) -+ printf ("\t%s", impl->name); -+ putchar ('\n'); -+ -+ for (i = 1; i < 8; ++i) -+ { -+ do_test (0, 16 << i, 2048, SMALL_CHAR, MIDDLE_CHAR); -+ do_test (i, 16 << i, 2048, SMALL_CHAR, MIDDLE_CHAR); -+ } -+ -+ for (i = 1; i < 8; ++i) -+ { -+ do_test (i, 64, 256, SMALL_CHAR, MIDDLE_CHAR); -+ do_test (i, 64, 256, SMALL_CHAR, BIG_CHAR); -+ } -+ -+ for (i = 0; i < 32; ++i) -+ { -+ do_test (0, i, i + 1, SMALL_CHAR, MIDDLE_CHAR); -+ do_test (0, i, i + 1, SMALL_CHAR, BIG_CHAR); -+ } -+ -+ for (i = 1; i < 8; ++i) -+ { -+ do_test (0, 16 << i, 2048, 0, MIDDLE_CHAR); -+ do_test (i, 16 << i, 2048, 0, MIDDLE_CHAR); -+ } -+ -+ for (i = 1; i < 8; ++i) -+ { -+ do_test (i, 64, 256, 0, MIDDLE_CHAR); -+ do_test (i, 64, 256, 0, BIG_CHAR); -+ } -+ -+ for (i = 0; i < 32; ++i) -+ { -+ do_test (0, i, i + 1, 0, MIDDLE_CHAR); -+ do_test (0, i, i + 1, 0, BIG_CHAR); -+ } -+ -+ return ret; -+} -+ -+#include "../test-skeleton.c" -diff -pruN glibc-2.17-c758a686/benchtests/bench-strchr-ifunc.c glibc-2.17-c758a686.new/benchtests/bench-strchr-ifunc.c ---- glibc-2.17-c758a686/benchtests/bench-strchr-ifunc.c 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.17-c758a686.new/benchtests/bench-strchr-ifunc.c 2013-08-08 09:32:15.910662617 +0530 -@@ -0,0 +1,20 @@ -+/* Measure IFUNC implementations of strchr function. -+ Copyright (C) 2013 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 -+ . */ -+ -+#define TEST_IFUNC 1 -+#include "bench-strchr.c" -diff -pruN glibc-2.17-c758a686/benchtests/bench-strchrnul.c glibc-2.17-c758a686.new/benchtests/bench-strchrnul.c ---- glibc-2.17-c758a686/benchtests/bench-strchrnul.c 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.17-c758a686.new/benchtests/bench-strchrnul.c 2013-08-08 09:32:15.910662617 +0530 -@@ -0,0 +1,20 @@ -+/* Measure strchrnul function. -+ Copyright (C) 2013 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 -+ . */ -+ -+#define USE_FOR_STRCHRNUL 1 -+#include "bench-strchr.c" -diff -pruN glibc-2.17-c758a686/benchtests/bench-strchrnul-ifunc.c glibc-2.17-c758a686.new/benchtests/bench-strchrnul-ifunc.c ---- glibc-2.17-c758a686/benchtests/bench-strchrnul-ifunc.c 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.17-c758a686.new/benchtests/bench-strchrnul-ifunc.c 2013-08-08 09:32:15.910662617 +0530 -@@ -0,0 +1,20 @@ -+/* Measure IFUNC implementations of strchrnul function. -+ Copyright (C) 2013 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 -+ . */ -+ -+#define TEST_IFUNC 1 -+#include "bench-strchrnul.c" -diff -pruN glibc-2.17-c758a686/benchtests/bench-strcmp.c glibc-2.17-c758a686.new/benchtests/bench-strcmp.c ---- glibc-2.17-c758a686/benchtests/bench-strcmp.c 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.17-c758a686.new/benchtests/bench-strcmp.c 2013-08-08 09:32:15.910662617 +0530 -@@ -0,0 +1,247 @@ -+/* Measure strcmp and wcscmp functions. -+ Copyright (C) 2013 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 -+ . */ -+ -+#define TEST_MAIN -+#ifdef WIDE -+# define TEST_NAME "wcscmp" -+#else -+# define TEST_NAME "strcmp" -+#endif -+#include "bench-string.h" -+ -+#ifdef WIDE -+# include -+ -+# define L(str) L##str -+# define STRCMP wcscmp -+# define STRCPY wcscpy -+# define STRLEN wcslen -+# define MEMCPY wmemcpy -+# define SIMPLE_STRCMP simple_wcscmp -+# define STUPID_STRCMP stupid_wcscmp -+# define CHAR wchar_t -+# define UCHAR wchar_t -+# define CHARBYTES 4 -+# define CHARBYTESLOG 2 -+# define CHARALIGN __alignof__ (CHAR) -+# define MIDCHAR 0x7fffffff -+# define LARGECHAR 0xfffffffe -+# define CHAR__MAX WCHAR_MAX -+# define CHAR__MIN WCHAR_MIN -+ -+/* Wcscmp uses signed semantics for comparison, not unsigned */ -+/* Avoid using substraction since possible overflow */ -+ -+int -+simple_wcscmp (const wchar_t *s1, const wchar_t *s2) -+{ -+ wchar_t c1, c2; -+ do -+ { -+ c1 = *s1++; -+ c2 = *s2++; -+ if (c2 == L'\0') -+ return c1 - c2; -+ } -+ while (c1 == c2); -+ -+ return c1 < c2 ? -1 : 1; -+} -+ -+int -+stupid_wcscmp (const wchar_t *s1, const wchar_t *s2) -+{ -+ size_t ns1 = wcslen (s1) + 1; -+ size_t ns2 = wcslen (s2) + 1; -+ size_t n = ns1 < ns2 ? ns1 : ns2; -+ int ret = 0; -+ -+ wchar_t c1, c2; -+ -+ while (n--) { -+ c1 = *s1++; -+ c2 = *s2++; -+ if ((ret = c1 < c2 ? -1 : c1 == c2 ? 0 : 1) != 0) -+ break; -+ } -+ return ret; -+} -+ -+#else -+# include -+ -+# define L(str) str -+# define STRCMP strcmp -+# define STRCPY strcpy -+# define STRLEN strlen -+# define MEMCPY memcpy -+# define SIMPLE_STRCMP simple_strcmp -+# define STUPID_STRCMP stupid_strcmp -+# define CHAR char -+# define UCHAR unsigned char -+# define CHARBYTES 1 -+# define CHARBYTESLOG 0 -+# define CHARALIGN 1 -+# define MIDCHAR 0x7f -+# define LARGECHAR 0xfe -+# define CHAR__MAX CHAR_MAX -+# define CHAR__MIN CHAR_MIN -+ -+/* Strcmp uses unsigned semantics for comparison. */ -+int -+simple_strcmp (const char *s1, const char *s2) -+{ -+ int ret; -+ -+ while ((ret = *(unsigned char *) s1 - *(unsigned char*) s2++) == 0 && *s1++); -+ return ret; -+} -+ -+int -+stupid_strcmp (const char *s1, const char *s2) -+{ -+ size_t ns1 = strlen (s1) + 1; -+ size_t ns2 = strlen (s2) + 1; -+ size_t n = ns1 < ns2 ? ns1 : ns2; -+ int ret = 0; -+ -+ while (n--) -+ if ((ret = *(unsigned char *) s1++ - *(unsigned char *) s2++) != 0) -+ break; -+ return ret; -+} -+#endif -+ -+typedef int (*proto_t) (const CHAR *, const CHAR *); -+ -+IMPL (STUPID_STRCMP, 1) -+IMPL (SIMPLE_STRCMP, 1) -+IMPL (STRCMP, 1) -+ -+static void -+do_one_test (impl_t *impl, -+ const CHAR *s1, const CHAR *s2, -+ int exp_result) -+{ -+ if (HP_TIMING_AVAIL) -+ { -+ hp_timing_t start __attribute ((unused)); -+ hp_timing_t stop __attribute ((unused)); -+ hp_timing_t best_time = ~ (hp_timing_t) 0; -+ size_t i; -+ -+ for (i = 0; i < 32; ++i) -+ { -+ HP_TIMING_NOW (start); -+ CALL (impl, s1, s2); -+ HP_TIMING_NOW (stop); -+ HP_TIMING_BEST (best_time, start, stop); -+ } -+ -+ printf ("\t%zd", (size_t) best_time); -+ } -+} -+ -+static void -+do_test (size_t align1, size_t align2, size_t len, int max_char, -+ int exp_result) -+{ -+ size_t i; -+ -+ CHAR *s1, *s2; -+ -+ if (len == 0) -+ return; -+ -+ align1 &= 63; -+ if (align1 + (len + 1) * CHARBYTES >= page_size) -+ return; -+ -+ align2 &= 63; -+ if (align2 + (len + 1) * CHARBYTES >= page_size) -+ return; -+ -+ /* Put them close to the end of page. */ -+ i = align1 + CHARBYTES * (len + 2); -+ s1 = (CHAR *) (buf1 + ((page_size - i) / 16 * 16) + align1); -+ i = align2 + CHARBYTES * (len + 2); -+ s2 = (CHAR *) (buf2 + ((page_size - i) / 16 * 16) + align2); -+ -+ for (i = 0; i < len; i++) -+ s1[i] = s2[i] = 1 + (23 << ((CHARBYTES - 1) * 8)) * i % max_char; -+ -+ s1[len] = s2[len] = 0; -+ s1[len + 1] = 23; -+ s2[len + 1] = 24 + exp_result; -+ s2[len - 1] -= exp_result; -+ -+ if (HP_TIMING_AVAIL) -+ printf ("Length %4zd, alignment %2zd/%2zd:", len, align1, align2); -+ -+ FOR_EACH_IMPL (impl, 0) -+ do_one_test (impl, s1, s2, exp_result); -+ -+ if (HP_TIMING_AVAIL) -+ putchar ('\n'); -+} -+ -+int -+test_main (void) -+{ -+ size_t i; -+ -+ test_init (); -+ -+ printf ("%23s", ""); -+ FOR_EACH_IMPL (impl, 0) -+ printf ("\t%s", impl->name); -+ putchar ('\n'); -+ -+ for (i = 1; i < 32; ++i) -+ { -+ do_test (CHARBYTES * i, CHARBYTES * i, i, MIDCHAR, 0); -+ do_test (CHARBYTES * i, CHARBYTES * i, i, MIDCHAR, 1); -+ do_test (CHARBYTES * i, CHARBYTES * i, i, MIDCHAR, -1); -+ } -+ -+ for (i = 1; i < 10 + CHARBYTESLOG; ++i) -+ { -+ do_test (0, 0, 2 << i, MIDCHAR, 0); -+ do_test (0, 0, 2 << i, LARGECHAR, 0); -+ do_test (0, 0, 2 << i, MIDCHAR, 1); -+ do_test (0, 0, 2 << i, LARGECHAR, 1); -+ do_test (0, 0, 2 << i, MIDCHAR, -1); -+ do_test (0, 0, 2 << i, LARGECHAR, -1); -+ do_test (0, CHARBYTES * i, 2 << i, MIDCHAR, 1); -+ do_test (CHARBYTES * i, CHARBYTES * (i + 1), 2 << i, LARGECHAR, 1); -+ } -+ -+ for (i = 1; i < 8; ++i) -+ { -+ do_test (CHARBYTES * i, 2 * CHARBYTES * i, 8 << i, MIDCHAR, 0); -+ do_test (2 * CHARBYTES * i, CHARBYTES * i, 8 << i, LARGECHAR, 0); -+ do_test (CHARBYTES * i, 2 * CHARBYTES * i, 8 << i, MIDCHAR, 1); -+ do_test (2 * CHARBYTES * i, CHARBYTES * i, 8 << i, LARGECHAR, 1); -+ do_test (CHARBYTES * i, 2 * CHARBYTES * i, 8 << i, MIDCHAR, -1); -+ do_test (2 * CHARBYTES * i, CHARBYTES * i, 8 << i, LARGECHAR, -1); -+ } -+ -+ return ret; -+} -+ -+#include "../test-skeleton.c" -diff -pruN glibc-2.17-c758a686/benchtests/bench-strcmp-ifunc.c glibc-2.17-c758a686.new/benchtests/bench-strcmp-ifunc.c ---- glibc-2.17-c758a686/benchtests/bench-strcmp-ifunc.c 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.17-c758a686.new/benchtests/bench-strcmp-ifunc.c 2013-08-08 09:32:15.910662617 +0530 -@@ -0,0 +1,20 @@ -+/* Measure IFUNC implementations of strcmp function. -+ Copyright (C) 2013 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 -+ . */ -+ -+#define TEST_IFUNC 1 -+#include "bench-strcmp.c" -diff -pruN glibc-2.17-c758a686/benchtests/bench-strcpy.c glibc-2.17-c758a686.new/benchtests/bench-strcpy.c ---- glibc-2.17-c758a686/benchtests/bench-strcpy.c 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.17-c758a686.new/benchtests/bench-strcpy.c 2013-08-08 09:32:15.910662617 +0530 -@@ -0,0 +1,183 @@ -+/* Measure strcpy functions. -+ Copyright (C) 2013 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 -+ . */ -+ -+#ifdef WIDE -+# include -+# define CHAR wchar_t -+# define UCHAR wchar_t -+# define sfmt "ls" -+# define BIG_CHAR WCHAR_MAX -+# define SMALL_CHAR 1273 -+# define STRCMP wcscmp -+# define MEMCMP wmemcmp -+# define MEMSET wmemset -+#else -+# define CHAR char -+# define UCHAR unsigned char -+# define sfmt "s" -+# define BIG_CHAR CHAR_MAX -+# define SMALL_CHAR 127 -+# define STRCMP strcmp -+# define MEMCMP memcmp -+# define MEMSET memset -+#endif -+ -+#ifndef STRCPY_RESULT -+# define STRCPY_RESULT(dst, len) dst -+# define TEST_MAIN -+# ifndef WIDE -+# define TEST_NAME "strcpy" -+# else -+# define TEST_NAME "wcscpy" -+# endif -+# include "bench-string.h" -+# ifndef WIDE -+# define SIMPLE_STRCPY simple_strcpy -+# define STRCPY strcpy -+# else -+# define SIMPLE_STRCPY simple_wcscpy -+# define STRCPY wcscpy -+# endif -+ -+CHAR *SIMPLE_STRCPY (CHAR *, const CHAR *); -+ -+IMPL (SIMPLE_STRCPY, 0) -+IMPL (STRCPY, 1) -+ -+CHAR * -+SIMPLE_STRCPY (CHAR *dst, const CHAR *src) -+{ -+ CHAR *ret = dst; -+ while ((*dst++ = *src++) != '\0'); -+ return ret; -+} -+#endif -+ -+typedef CHAR *(*proto_t) (CHAR *, const CHAR *); -+ -+static void -+do_one_test (impl_t *impl, CHAR *dst, const CHAR *src, -+ size_t len __attribute__((unused))) -+{ -+ if (CALL (impl, dst, src) != STRCPY_RESULT (dst, len)) -+ { -+ error (0, 0, "Wrong result in function %s %p %p", impl->name, -+ CALL (impl, dst, src), STRCPY_RESULT (dst, len)); -+ ret = 1; -+ return; -+ } -+ -+ if (STRCMP (dst, src) != 0) -+ { -+ error (0, 0, -+ "Wrong result in function %s dst \"%" sfmt "\" src \"%" sfmt "\"", -+ impl->name, dst, src); -+ ret = 1; -+ return; -+ } -+ -+ if (HP_TIMING_AVAIL) -+ { -+ hp_timing_t start __attribute ((unused)); -+ hp_timing_t stop __attribute ((unused));; -+ hp_timing_t best_time = ~ (hp_timing_t) 0; -+ size_t i; -+ -+ for (i = 0; i < 32; ++i) -+ { -+ HP_TIMING_NOW (start); -+ CALL (impl, dst, src); -+ HP_TIMING_NOW (stop); -+ HP_TIMING_BEST (best_time, start, stop); -+ } -+ -+ printf ("\t%zd", (size_t) best_time); -+ } -+} -+ -+static void -+do_test (size_t align1, size_t align2, size_t len, int max_char) -+{ -+ size_t i; -+ CHAR *s1, *s2; -+/* For wcscpy: align1 and align2 here mean alignment not in bytes, -+ but in wchar_ts, in bytes it will equal to align * (sizeof (wchar_t)) -+ len for wcschr here isn't in bytes but it's number of wchar_t symbols. */ -+ align1 &= 7; -+ if ((align1 + len) * sizeof(CHAR) >= page_size) -+ return; -+ -+ align2 &= 7; -+ if ((align2 + len) * sizeof(CHAR) >= page_size) -+ return; -+ -+ s1 = (CHAR *) (buf1) + align1; -+ s2 = (CHAR *) (buf2) + align2; -+ -+ for (i = 0; i < len; i++) -+ s1[i] = 32 + 23 * i % (max_char - 32); -+ s1[len] = 0; -+ -+ if (HP_TIMING_AVAIL) -+ printf ("Length %4zd, alignments in bytes %2zd/%2zd:", len, align1 * sizeof(CHAR), align2 * sizeof(CHAR)); -+ -+ FOR_EACH_IMPL (impl, 0) -+ do_one_test (impl, s2, s1, len); -+ -+ if (HP_TIMING_AVAIL) -+ putchar ('\n'); -+} -+ -+int -+test_main (void) -+{ -+ size_t i; -+ -+ test_init (); -+ -+ printf ("%23s", ""); -+ FOR_EACH_IMPL (impl, 0) -+ printf ("\t%s", impl->name); -+ putchar ('\n'); -+ -+ for (i = 0; i < 16; ++i) -+ { -+ do_test (0, 0, i, SMALL_CHAR); -+ do_test (0, 0, i, BIG_CHAR); -+ do_test (0, i, i, SMALL_CHAR); -+ do_test (i, 0, i, BIG_CHAR); -+ } -+ -+ for (i = 1; i < 8; ++i) -+ { -+ do_test (0, 0, 8 << i, SMALL_CHAR); -+ do_test (8 - i, 2 * i, 8 << i, SMALL_CHAR); -+ } -+ -+ for (i = 1; i < 8; ++i) -+ { -+ do_test (i, 2 * i, 8 << i, SMALL_CHAR); -+ do_test (2 * i, i, 8 << i, BIG_CHAR); -+ do_test (i, i, 8 << i, SMALL_CHAR); -+ do_test (i, i, 8 << i, BIG_CHAR); -+ } -+ -+ return ret; -+} -+ -+#include "../test-skeleton.c" -diff -pruN glibc-2.17-c758a686/benchtests/bench-strcpy_chk.c glibc-2.17-c758a686.new/benchtests/bench-strcpy_chk.c ---- glibc-2.17-c758a686/benchtests/bench-strcpy_chk.c 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.17-c758a686.new/benchtests/bench-strcpy_chk.c 2013-08-08 09:32:18.487662504 +0530 -@@ -0,0 +1,262 @@ -+/* Measure __strcpy_chk functions. -+ Copyright (C) 2013 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 -+ . */ -+ -+#ifndef STRCPY_RESULT -+# define STRCPY_RESULT(dst, len) dst -+# define TEST_MAIN -+# define TEST_NAME "strcpy_chk" -+# include "bench-string.h" -+ -+/* This test case implicitly tests the availability of the __chk_fail -+ symbol, which is part of the public ABI and may be used -+ externally. */ -+extern void __attribute__ ((noreturn)) __chk_fail (void); -+char *simple_strcpy_chk (char *, const char *, size_t); -+extern char *normal_strcpy (char *, const char *, size_t) -+ __asm ("strcpy"); -+extern char *__strcpy_chk (char *, const char *, size_t); -+ -+IMPL (simple_strcpy_chk, 0) -+IMPL (normal_strcpy, 1) -+IMPL (__strcpy_chk, 2) -+ -+char * -+simple_strcpy_chk (char *dst, const char *src, size_t len) -+{ -+ char *ret = dst; -+ if (! len) -+ __chk_fail (); -+ while ((*dst++ = *src++) != '\0') -+ if (--len == 0) -+ __chk_fail (); -+ return ret; -+} -+#endif -+ -+#include -+#include -+#include -+#include -+ -+volatile int chk_fail_ok; -+jmp_buf chk_fail_buf; -+ -+static void -+handler (int sig) -+{ -+ if (chk_fail_ok) -+ { -+ chk_fail_ok = 0; -+ longjmp (chk_fail_buf, 1); -+ } -+ else -+ _exit (127); -+} -+ -+typedef char *(*proto_t) (char *, const char *, size_t); -+ -+static void -+do_one_test (impl_t *impl, char *dst, const char *src, -+ size_t len, size_t dlen) -+{ -+ char *res; -+ if (dlen <= len) -+ { -+ if (impl->test == 1) -+ return; -+ -+ chk_fail_ok = 1; -+ if (setjmp (chk_fail_buf) == 0) -+ { -+ res = CALL (impl, dst, src, dlen); -+ printf ("*** Function %s (%zd; %zd) did not __chk_fail\n", -+ impl->name, len, dlen); -+ chk_fail_ok = 0; -+ ret = 1; -+ } -+ return; -+ } -+ else -+ res = CALL (impl, dst, src, dlen); -+ -+ if (res != STRCPY_RESULT (dst, len)) -+ { -+ printf ("Wrong result in function %s %p %p\n", impl->name, -+ res, STRCPY_RESULT (dst, len)); -+ ret = 1; -+ return; -+ } -+ -+ if (strcmp (dst, src) != 0) -+ { -+ printf ("Wrong result in function %s dst \"%s\" src \"%s\"\n", -+ impl->name, dst, src); -+ ret = 1; -+ return; -+ } -+ -+ if (HP_TIMING_AVAIL) -+ { -+ hp_timing_t start __attribute ((unused)); -+ hp_timing_t stop __attribute ((unused));; -+ hp_timing_t best_time = ~ (hp_timing_t) 0; -+ size_t i; -+ -+ for (i = 0; i < 32; ++i) -+ { -+ HP_TIMING_NOW (start); -+ CALL (impl, dst, src, dlen); -+ HP_TIMING_NOW (stop); -+ HP_TIMING_BEST (best_time, start, stop); -+ } -+ -+ printf ("\t%zd", (size_t) best_time); -+ } -+} -+ -+static void -+do_test (size_t align1, size_t align2, size_t len, size_t dlen, int max_char) -+{ -+ size_t i; -+ char *s1, *s2; -+ -+ align1 &= 7; -+ if (align1 + len >= page_size) -+ return; -+ -+ align2 &= 7; -+ if (align2 + len >= page_size) -+ return; -+ -+ s1 = (char *) buf1 + align1; -+ s2 = (char *) buf2 + align2; -+ -+ for (i = 0; i < len; i++) -+ s1[i] = 32 + 23 * i % (max_char - 32); -+ s1[len] = 0; -+ -+ if (HP_TIMING_AVAIL && dlen > len) -+ printf ("Length %4zd, alignment %2zd/%2zd:", len, align1, align2); -+ -+ FOR_EACH_IMPL (impl, 0) -+ do_one_test (impl, s2, s1, len, dlen); -+ -+ if (HP_TIMING_AVAIL && dlen > len) -+ putchar ('\n'); -+} -+ -+int -+test_main (void) -+{ -+ size_t i; -+ -+ struct sigaction sa; -+ sa.sa_handler = handler; -+ sa.sa_flags = 0; -+ sigemptyset (&sa.sa_mask); -+ -+ sigaction (SIGABRT, &sa, NULL); -+ -+ /* Avoid all the buffer overflow messages on stderr. */ -+ int fd = open (_PATH_DEVNULL, O_WRONLY); -+ if (fd == -1) -+ close (STDERR_FILENO); -+ else -+ { -+ dup2 (fd, STDERR_FILENO); -+ close (fd); -+ } -+ setenv ("LIBC_FATAL_STDERR_", "1", 1); -+ -+ test_init (); -+ -+ printf ("%23s", ""); -+ FOR_EACH_IMPL (impl, 0) -+ printf ("\t%s", impl->name); -+ putchar ('\n'); -+ -+ for (i = 0; i < 16; ++i) -+ { -+ do_test (0, 0, i, i + 1, 127); -+ do_test (0, 0, i, i + 1, 255); -+ do_test (0, i, i, i + 1, 127); -+ do_test (i, 0, i, i + 1, 255); -+ } -+ -+ for (i = 1; i < 8; ++i) -+ { -+ do_test (0, 0, 8 << i, (8 << i) + 1, 127); -+ do_test (8 - i, 2 * i, (8 << i), (8 << i) + 1, 127); -+ } -+ -+ for (i = 1; i < 8; ++i) -+ { -+ do_test (i, 2 * i, (8 << i), (8 << i) + 1, 127); -+ do_test (2 * i, i, (8 << i), (8 << i) + 1, 255); -+ do_test (i, i, (8 << i), (8 << i) + 1, 127); -+ do_test (i, i, (8 << i), (8 << i) + 1, 255); -+ } -+ -+ for (i = 0; i < 16; ++i) -+ { -+ do_test (0, 0, i, i + 256, 127); -+ do_test (0, 0, i, i + 256, 255); -+ do_test (0, i, i, i + 256, 127); -+ do_test (i, 0, i, i + 256, 255); -+ } -+ -+ for (i = 1; i < 8; ++i) -+ { -+ do_test (0, 0, 8 << i, (8 << i) + 256, 127); -+ do_test (8 - i, 2 * i, (8 << i), (8 << i) + 256, 127); -+ } -+ -+ for (i = 1; i < 8; ++i) -+ { -+ do_test (i, 2 * i, (8 << i), (8 << i) + 256, 127); -+ do_test (2 * i, i, (8 << i), (8 << i) + 256, 255); -+ do_test (i, i, (8 << i), (8 << i) + 256, 127); -+ do_test (i, i, (8 << i), (8 << i) + 256, 255); -+ } -+ -+ for (i = 0; i < 16; ++i) -+ { -+ do_test (0, 0, i, i, 127); -+ do_test (0, 0, i, i + 2, 255); -+ do_test (0, i, i, i + 3, 127); -+ do_test (i, 0, i, i + 4, 255); -+ } -+ -+ for (i = 1; i < 8; ++i) -+ { -+ do_test (0, 0, 8 << i, (8 << i) - 15, 127); -+ do_test (8 - i, 2 * i, (8 << i), (8 << i) + 5, 127); -+ } -+ -+ for (i = 1; i < 8; ++i) -+ { -+ do_test (i, 2 * i, (8 << i), (8 << i) + i, 127); -+ do_test (2 * i, i, (8 << i), (8 << i) + (i - 1), 255); -+ do_test (i, i, (8 << i), (8 << i) + i + 2, 127); -+ do_test (i, i, (8 << i), (8 << i) + i + 3, 255); -+ } -+ -+ return 0; -+} -+ -+#include "../test-skeleton.c" -diff -pruN glibc-2.17-c758a686/benchtests/bench-strcpy_chk-ifunc.c glibc-2.17-c758a686.new/benchtests/bench-strcpy_chk-ifunc.c ---- glibc-2.17-c758a686/benchtests/bench-strcpy_chk-ifunc.c 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.17-c758a686.new/benchtests/bench-strcpy_chk-ifunc.c 2013-08-08 09:32:18.487662504 +0530 -@@ -0,0 +1,20 @@ -+/* Measure IFUNC implementations of strcpy checking function. -+ Copyright (C) 2012-2013 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 -+ . */ -+ -+#define TEST_IFUNC 1 -+#include "bench-strcpy_chk.c" -diff -pruN glibc-2.17-c758a686/benchtests/bench-strcpy-ifunc.c glibc-2.17-c758a686.new/benchtests/bench-strcpy-ifunc.c ---- glibc-2.17-c758a686/benchtests/bench-strcpy-ifunc.c 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.17-c758a686.new/benchtests/bench-strcpy-ifunc.c 2013-08-08 09:32:15.910662617 +0530 -@@ -0,0 +1,20 @@ -+/* Measure IFUNC implementations of strcpy function. -+ Copyright (C) 2013 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 -+ . */ -+ -+#define TEST_IFUNC 1 -+#include "bench-strcpy.c" -diff -pruN glibc-2.17-c758a686/benchtests/bench-strcspn.c glibc-2.17-c758a686.new/benchtests/bench-strcspn.c ---- glibc-2.17-c758a686/benchtests/bench-strcspn.c 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.17-c758a686.new/benchtests/bench-strcspn.c 2013-08-08 09:32:15.910662617 +0530 -@@ -0,0 +1,59 @@ -+/* Measure strcspn functions. -+ Copyright (C) 2013 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 -+ . */ -+ -+#define STRPBRK_RESULT(s, pos) (pos) -+#define RES_TYPE size_t -+#define TEST_MAIN -+#define TEST_NAME "strcspn" -+#include "bench-string.h" -+ -+typedef size_t (*proto_t) (const char *, const char *); -+size_t simple_strcspn (const char *, const char *); -+size_t stupid_strcspn (const char *, const char *); -+ -+IMPL (stupid_strcspn, 0) -+IMPL (simple_strcspn, 0) -+IMPL (strcspn, 1) -+ -+size_t -+simple_strcspn (const char *s, const char *rej) -+{ -+ const char *r, *str = s; -+ char c; -+ -+ while ((c = *s++) != '\0') -+ for (r = rej; *r != '\0'; ++r) -+ if (*r == c) -+ return s - str - 1; -+ return s - str - 1; -+} -+ -+size_t -+stupid_strcspn (const char *s, const char *rej) -+{ -+ size_t ns = strlen (s), nrej = strlen (rej); -+ size_t i, j; -+ -+ for (i = 0; i < ns; ++i) -+ for (j = 0; j < nrej; ++j) -+ if (s[i] == rej[j]) -+ return i; -+ return i; -+} -+ -+#include "bench-strpbrk.c" -diff -pruN glibc-2.17-c758a686/benchtests/bench-strcspn-ifunc.c glibc-2.17-c758a686.new/benchtests/bench-strcspn-ifunc.c ---- glibc-2.17-c758a686/benchtests/bench-strcspn-ifunc.c 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.17-c758a686.new/benchtests/bench-strcspn-ifunc.c 2013-08-08 09:32:15.910662617 +0530 -@@ -0,0 +1,20 @@ -+/* Measure IFUNC implementations of strcspn function. -+ Copyright (C) 2013 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 -+ . */ -+ -+#define TEST_IFUNC 1 -+#include "bench-strcspn.c" -diff -pruN glibc-2.17-c758a686/benchtests/bench-string.h glibc-2.17-c758a686.new/benchtests/bench-string.h ---- glibc-2.17-c758a686/benchtests/bench-string.h 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.17-c758a686.new/benchtests/bench-string.h 2013-08-08 09:32:13.700662713 +0530 -@@ -0,0 +1,212 @@ -+/* Measure string and memory functions. -+ Copyright (C) 2013 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 -+ . */ -+ -+#include -+ -+typedef struct -+{ -+ const char *name; -+ void (*fn) (void); -+ long test; -+} impl_t; -+extern impl_t __start_impls[], __stop_impls[]; -+ -+#define IMPL(name, test) \ -+ impl_t tst_ ## name \ -+ __attribute__ ((section ("impls"), aligned (sizeof (void *)))) \ -+ = { __STRING (name), (void (*) (void))name, test }; -+ -+#ifdef TEST_MAIN -+ -+# ifndef _GNU_SOURCE -+# define _GNU_SOURCE -+# endif -+ -+# undef __USE_STRING_INLINES -+ -+# include -+# include -+# include -+# include -+# include -+# include -+# include -+# include -+# include -+# include -+# include -+# define GL(x) _##x -+# define GLRO(x) _##x -+# include -+ -+ -+# define TEST_FUNCTION test_main () -+# define TIMEOUT (4 * 60) -+# define OPT_ITERATIONS 10000 -+# define OPT_RANDOM 10001 -+# define OPT_SEED 10002 -+ -+unsigned char *buf1, *buf2; -+int ret, do_srandom; -+unsigned int seed; -+size_t page_size; -+ -+hp_timing_t _dl_hp_timing_overhead; -+ -+# ifndef ITERATIONS -+size_t iterations = 100000; -+# define ITERATIONS_OPTIONS \ -+ { "iterations", required_argument, NULL, OPT_ITERATIONS }, -+# define ITERATIONS_PROCESS \ -+ case OPT_ITERATIONS: \ -+ iterations = strtoul (optarg, NULL, 0); \ -+ break; -+# define ITERATIONS iterations -+# else -+# define ITERATIONS_OPTIONS -+# define ITERATIONS_PROCESS -+# endif -+ -+# define CMDLINE_OPTIONS ITERATIONS_OPTIONS \ -+ { "random", no_argument, NULL, OPT_RANDOM }, \ -+ { "seed", required_argument, NULL, OPT_SEED }, -+# define CMDLINE_PROCESS ITERATIONS_PROCESS \ -+ case OPT_RANDOM: \ -+ { \ -+ int fdr = open ("/dev/urandom", O_RDONLY); \ -+ \ -+ if (fdr < 0 || read (fdr, &seed, sizeof(seed)) != sizeof (seed)) \ -+ seed = time (NULL); \ -+ if (fdr >= 0) \ -+ close (fdr); \ -+ do_srandom = 1; \ -+ break; \ -+ } \ -+ \ -+ case OPT_SEED: \ -+ seed = strtoul (optarg, NULL, 0); \ -+ do_srandom = 1; \ -+ break; -+ -+# define CALL(impl, ...) \ -+ (* (proto_t) (impl)->fn) (__VA_ARGS__) -+ -+# if defined TEST_IFUNC && defined TEST_NAME -+/* Increase size of FUNC_LIST if assert is triggered at run-time. */ -+static struct libc_ifunc_impl func_list[32]; -+static int func_count; -+static int impl_count = -1; -+static impl_t *impl_array; -+ -+# define FOR_EACH_IMPL(impl, notall) \ -+ impl_t *impl; \ -+ int count; \ -+ if (impl_count == -1) \ -+ { \ -+ impl_count = 0; \ -+ if (func_count != 0) \ -+ { \ -+ int f; \ -+ impl_t *skip = NULL, *a; \ -+ for (impl = __start_impls; impl < __stop_impls; ++impl) \ -+ if (strcmp (impl->name, TEST_NAME) == 0) \ -+ skip = impl; \ -+ else \ -+ impl_count++; \ -+ a = impl_array = malloc ((impl_count + func_count) * \ -+ sizeof (impl_t)); \ -+ for (impl = __start_impls; impl < __stop_impls; ++impl) \ -+ if (impl != skip) \ -+ *a++ = *impl; \ -+ for (f = 0; f < func_count; f++) \ -+ if (func_list[f].usable) \ -+ { \ -+ a->name = func_list[f].name; \ -+ a->fn = func_list[f].fn; \ -+ a->test = 1; \ -+ a++; \ -+ } \ -+ impl_count = a - impl_array; \ -+ } \ -+ else \ -+ { \ -+ impl_count = __stop_impls - __start_impls; \ -+ impl_array = __start_impls; \ -+ } \ -+ } \ -+ impl = impl_array; \ -+ for (count = 0; count < impl_count; ++count, ++impl) \ -+ if (!notall || impl->test) -+# else /* ! (defined TEST_IFUNC && defined TEST_NAME) */ -+# define FOR_EACH_IMPL(impl, notall) \ -+ for (impl_t *impl = __start_impls; impl < __stop_impls; ++impl) \ -+ if (!notall || impl->test) -+# endif /* ! (defined TEST_IFUNC && defined TEST_NAME) */ -+ -+# define HP_TIMING_BEST(best_time, start, end) \ -+ do \ -+ { \ -+ hp_timing_t tmptime; \ -+ HP_TIMING_DIFF (tmptime, start + _dl_hp_timing_overhead, end); \ -+ if (best_time > tmptime) \ -+ best_time = tmptime; \ -+ } \ -+ while (0) -+ -+# ifndef BUF1PAGES -+# define BUF1PAGES 1 -+# endif -+ -+static void -+test_init (void) -+{ -+# if defined TEST_IFUNC && defined TEST_NAME -+ func_count = __libc_ifunc_impl_list (TEST_NAME, func_list, -+ (sizeof func_list -+ / sizeof func_list[0])); -+# endif -+ -+ page_size = 2 * getpagesize (); -+# ifdef MIN_PAGE_SIZE -+ if (page_size < MIN_PAGE_SIZE) -+ page_size = MIN_PAGE_SIZE; -+# endif -+ buf1 = mmap (0, (BUF1PAGES + 1) * page_size, PROT_READ | PROT_WRITE, -+ MAP_PRIVATE | MAP_ANON, -1, 0); -+ if (buf1 == MAP_FAILED) -+ error (EXIT_FAILURE, errno, "mmap failed"); -+ if (mprotect (buf1 + BUF1PAGES * page_size, page_size, PROT_NONE)) -+ error (EXIT_FAILURE, errno, "mprotect failed"); -+ buf2 = mmap (0, 2 * page_size, PROT_READ | PROT_WRITE, -+ MAP_PRIVATE | MAP_ANON, -1, 0); -+ if (buf2 == MAP_FAILED) -+ error (EXIT_FAILURE, errno, "mmap failed"); -+ if (mprotect (buf2 + page_size, page_size, PROT_NONE)) -+ error (EXIT_FAILURE, errno, "mprotect failed"); -+ HP_TIMING_DIFF_INIT (); -+ if (do_srandom) -+ { -+ printf ("Setting seed to 0x%x\n", seed); -+ srandom (seed); -+ } -+ -+ memset (buf1, 0xa5, BUF1PAGES * page_size); -+ memset (buf2, 0x5a, page_size); -+} -+ -+#endif /* TEST_MAIN */ -diff -pruN glibc-2.17-c758a686/benchtests/bench-strlen.c glibc-2.17-c758a686.new/benchtests/bench-strlen.c ---- glibc-2.17-c758a686/benchtests/bench-strlen.c 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.17-c758a686.new/benchtests/bench-strlen.c 2013-08-08 09:32:15.911662617 +0530 -@@ -0,0 +1,149 @@ -+/* Measure STRLEN functions. -+ Copyright (C) 2013 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 -+ . */ -+ -+#define TEST_MAIN -+#ifndef WIDE -+# define TEST_NAME "strlen" -+#else -+# define TEST_NAME "wcslen" -+#endif -+#include "bench-string.h" -+ -+#ifndef WIDE -+# define STRLEN strlen -+# define CHAR char -+# define MAX_CHAR CHAR_MAX -+#else -+# include -+# define STRLEN wcslen -+# define CHAR wchar_t -+# define MAX_CHAR WCHAR_MAX -+#endif -+ -+typedef size_t (*proto_t) (const CHAR *); -+ -+size_t -+simple_STRLEN (const CHAR *s) -+{ -+ const CHAR *p; -+ -+ for (p = s; *p; ++p); -+ return p - s; -+} -+ -+#ifndef WIDE -+size_t -+builtin_strlen (const CHAR *p) -+{ -+ return __builtin_strlen (p); -+} -+IMPL (builtin_strlen, 0) -+#endif -+ -+IMPL (simple_STRLEN, 0) -+IMPL (STRLEN, 1) -+ -+ -+static void -+do_one_test (impl_t *impl, const CHAR *s, size_t exp_len) -+{ -+ size_t len = CALL (impl, s); -+ if (len != exp_len) -+ { -+ error (0, 0, "Wrong result in function %s %zd %zd", impl->name, -+ len, exp_len); -+ ret = 1; -+ return; -+ } -+ -+ if (HP_TIMING_AVAIL) -+ { -+ hp_timing_t start __attribute ((unused)); -+ hp_timing_t stop __attribute ((unused)); -+ hp_timing_t best_time = ~ (hp_timing_t) 0; -+ size_t i; -+ -+ for (i = 0; i < 32; ++i) -+ { -+ HP_TIMING_NOW (start); -+ CALL (impl, s); -+ HP_TIMING_NOW (stop); -+ HP_TIMING_BEST (best_time, start, stop); -+ } -+ -+ printf ("\t%zd", (size_t) best_time); -+ } -+} -+ -+static void -+do_test (size_t align, size_t len) -+{ -+ size_t i; -+ -+ align &= 63; -+ if (align + sizeof(CHAR) * len >= page_size) -+ return; -+ -+ CHAR *buf = (CHAR *) (buf1); -+ -+ for (i = 0; i < len; ++i) -+ buf[align + i] = 1 + 11111 * i % MAX_CHAR; -+ buf[align + len] = 0; -+ -+ if (HP_TIMING_AVAIL) -+ printf ("Length %4zd, alignment %2zd:", len, align); -+ -+ FOR_EACH_IMPL (impl, 0) -+ do_one_test (impl, (CHAR *) (buf + align), len); -+ -+ if (HP_TIMING_AVAIL) -+ putchar ('\n'); -+} -+ -+int -+test_main (void) -+{ -+ size_t i; -+ -+ test_init (); -+ -+ printf ("%20s", ""); -+ FOR_EACH_IMPL (impl, 0) -+ printf ("\t%s", impl->name); -+ putchar ('\n'); -+ -+ /* Checking with only 4 * N alignments for wcslen, other alignments are wrong for wchar_t type arrays*/ -+ -+ for (i = 1; i < 8; ++i) -+ { -+ do_test (sizeof(CHAR) * i, i); -+ do_test (0, i); -+ } -+ -+ for (i = 2; i <= 12; ++i) -+ { -+ do_test (0, 1 << i); -+ do_test (sizeof(CHAR) * 7, 1 << i); -+ do_test (sizeof(CHAR) * i, 1 << i); -+ do_test (sizeof(CHAR) * i, (size_t)((1 << i) / 1.5)); -+ } -+ -+ return ret; -+} -+ -+#include "../test-skeleton.c" -diff -pruN glibc-2.17-c758a686/benchtests/bench-strlen-ifunc.c glibc-2.17-c758a686.new/benchtests/bench-strlen-ifunc.c ---- glibc-2.17-c758a686/benchtests/bench-strlen-ifunc.c 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.17-c758a686.new/benchtests/bench-strlen-ifunc.c 2013-08-08 09:32:15.911662617 +0530 -@@ -0,0 +1,20 @@ -+/* Measure IFUNC implementations of strlen function. -+ Copyright (C) 2013 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 -+ . */ -+ -+#define TEST_IFUNC 1 -+#include "bench-strlen.c" -diff -pruN glibc-2.17-c758a686/benchtests/bench-strncasecmp.c glibc-2.17-c758a686.new/benchtests/bench-strncasecmp.c ---- glibc-2.17-c758a686/benchtests/bench-strncasecmp.c 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.17-c758a686.new/benchtests/bench-strncasecmp.c 2013-08-08 09:32:15.911662617 +0530 -@@ -0,0 +1,213 @@ -+/* Measure strncasecmp functions. -+ Copyright (C) 2013 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 -+ . */ -+ -+#include -+#define TEST_MAIN -+#define TEST_NAME "strncasecmp" -+#include "bench-string.h" -+ -+typedef int (*proto_t) (const char *, const char *, size_t); -+static int simple_strncasecmp (const char *, const char *, size_t); -+static int stupid_strncasecmp (const char *, const char *, size_t); -+ -+IMPL (stupid_strncasecmp, 0) -+IMPL (simple_strncasecmp, 0) -+IMPL (strncasecmp, 1) -+ -+static int -+simple_strncasecmp (const char *s1, const char *s2, size_t n) -+{ -+ int ret; -+ -+ if (n == 0) -+ return 0; -+ -+ while ((ret = ((unsigned char) tolower (*s1) -+ - (unsigned char) tolower (*s2))) == 0 -+ && *s1++) -+ { -+ if (--n == 0) -+ return 0; -+ ++s2; -+ } -+ return ret; -+} -+ -+static int -+stupid_strncasecmp (const char *s1, const char *s2, size_t max) -+{ -+ size_t ns1 = strlen (s1) + 1; -+ size_t ns2 = strlen (s2) + 1; -+ size_t n = ns1 < ns2 ? ns1 : ns2; -+ if (n > max) -+ n = max; -+ int ret = 0; -+ -+ while (n--) -+ { -+ if ((ret = ((unsigned char) tolower (*s1) -+ - (unsigned char) tolower (*s2))) != 0) -+ break; -+ ++s1; -+ ++s2; -+ } -+ return ret; -+} -+ -+static void -+do_one_test (impl_t *impl, const char *s1, const char *s2, size_t n, -+ int exp_result) -+{ -+ if (HP_TIMING_AVAIL) -+ { -+ hp_timing_t start __attribute ((unused)); -+ hp_timing_t stop __attribute ((unused)); -+ hp_timing_t best_time = ~ (hp_timing_t) 0; -+ size_t i; -+ -+ for (i = 0; i < 32; ++i) -+ { -+ HP_TIMING_NOW (start); -+ CALL (impl, s1, s2, n); -+ HP_TIMING_NOW (stop); -+ HP_TIMING_BEST (best_time, start, stop); -+ } -+ -+ printf ("\t%zd", (size_t) best_time); -+ } -+} -+ -+static void -+do_test (size_t align1, size_t align2, size_t n, size_t len, int max_char, -+ int exp_result) -+{ -+ size_t i; -+ char *s1, *s2; -+ -+ if (len == 0) -+ return; -+ -+ align1 &= 7; -+ if (align1 + len + 1 >= page_size) -+ return; -+ -+ align2 &= 7; -+ if (align2 + len + 1 >= page_size) -+ return; -+ -+ s1 = (char *) (buf1 + align1); -+ s2 = (char *) (buf2 + align2); -+ -+ for (i = 0; i < len; i++) -+ { -+ s1[i] = toupper (1 + 23 * i % max_char); -+ s2[i] = tolower (s1[i]); -+ } -+ -+ s1[len] = s2[len] = 0; -+ s1[len + 1] = 23; -+ s2[len + 1] = 24 + exp_result; -+ if ((s2[len - 1] == 'z' && exp_result == -1) -+ || (s2[len - 1] == 'a' && exp_result == 1)) -+ s1[len - 1] += exp_result; -+ else -+ s2[len - 1] -= exp_result; -+ -+ if (HP_TIMING_AVAIL) -+ printf ("Length %4zd, alignment %2zd/%2zd:", len, align1, align2); -+ -+ FOR_EACH_IMPL (impl, 0) -+ do_one_test (impl, s1, s2, n, exp_result); -+ -+ if (HP_TIMING_AVAIL) -+ putchar ('\n'); -+} -+ -+int -+test_main (void) -+{ -+ size_t i; -+ -+ test_init (); -+ -+ printf ("%23s", ""); -+ FOR_EACH_IMPL (impl, 0) -+ printf ("\t%s", impl->name); -+ putchar ('\n'); -+ -+ for (i = 1; i < 16; ++i) -+ { -+ do_test (i, i, i - 1, i, 127, 0); -+ -+ do_test (i, i, i, i, 127, 0); -+ do_test (i, i, i, i, 127, 1); -+ do_test (i, i, i, i, 127, -1); -+ -+ do_test (i, i, i + 1, i, 127, 0); -+ do_test (i, i, i + 1, i, 127, 1); -+ do_test (i, i, i + 1, i, 127, -1); -+ } -+ -+ for (i = 1; i < 10; ++i) -+ { -+ do_test (0, 0, (2 << i) - 1, 2 << i, 127, 0); -+ do_test (0, 0, 2 << i, 2 << i, 254, 0); -+ do_test (0, 0, (2 << i) + 1, 2 << i, 127, 0); -+ -+ do_test (0, 0, (2 << i) + 1, 2 << i, 254, 0); -+ -+ do_test (0, 0, 2 << i, 2 << i, 127, 1); -+ do_test (0, 0, (2 << i) + 10, 2 << i, 127, 1); -+ -+ do_test (0, 0, 2 << i, 2 << i, 254, 1); -+ do_test (0, 0, (2 << i) + 10, 2 << i, 254, 1); -+ -+ do_test (0, 0, 2 << i, 2 << i, 127, -1); -+ do_test (0, 0, (2 << i) + 10, 2 << i, 127, -1); -+ -+ do_test (0, 0, 2 << i, 2 << i, 254, -1); -+ do_test (0, 0, (2 << i) + 10, 2 << i, 254, -1); -+ } -+ -+ for (i = 1; i < 8; ++i) -+ { -+ do_test (i, 2 * i, (8 << i) - 1, 8 << i, 127, 0); -+ do_test (i, 2 * i, 8 << i, 8 << i, 127, 0); -+ do_test (i, 2 * i, (8 << i) + 100, 8 << i, 127, 0); -+ -+ do_test (2 * i, i, (8 << i) - 1, 8 << i, 254, 0); -+ do_test (2 * i, i, 8 << i, 8 << i, 254, 0); -+ do_test (2 * i, i, (8 << i) + 100, 8 << i, 254, 0); -+ -+ do_test (i, 2 * i, 8 << i, 8 << i, 127, 1); -+ do_test (i, 2 * i, (8 << i) + 100, 8 << i, 127, 1); -+ -+ do_test (2 * i, i, 8 << i, 8 << i, 254, 1); -+ do_test (2 * i, i, (8 << i) + 100, 8 << i, 254, 1); -+ -+ do_test (i, 2 * i, 8 << i, 8 << i, 127, -1); -+ do_test (i, 2 * i, (8 << i) + 100, 8 << i, 127, -1); -+ -+ do_test (2 * i, i, 8 << i, 8 << i, 254, -1); -+ do_test (2 * i, i, (8 << i) + 100, 8 << i, 254, -1); -+ } -+ -+ return ret; -+} -+ -+#include "../test-skeleton.c" -diff -pruN glibc-2.17-c758a686/benchtests/bench-strncasecmp-ifunc.c glibc-2.17-c758a686.new/benchtests/bench-strncasecmp-ifunc.c ---- glibc-2.17-c758a686/benchtests/bench-strncasecmp-ifunc.c 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.17-c758a686.new/benchtests/bench-strncasecmp-ifunc.c 2013-08-08 09:32:15.911662617 +0530 -@@ -0,0 +1,20 @@ -+/* Measure IFUNC implementations of strncasecmp function. -+ Copyright (C) 2013 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 -+ . */ -+ -+#define TEST_IFUNC 1 -+#include "bench-strncasecmp.c" -diff -pruN glibc-2.17-c758a686/benchtests/bench-strncat.c glibc-2.17-c758a686.new/benchtests/bench-strncat.c ---- glibc-2.17-c758a686/benchtests/bench-strncat.c 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.17-c758a686.new/benchtests/bench-strncat.c 2013-08-08 09:32:15.911662617 +0530 -@@ -0,0 +1,168 @@ -+/* Measure strncat functions. -+ Copyright (C) 2013 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 -+ . */ -+ -+#define TEST_MAIN -+#define TEST_NAME "strncat" -+#include "bench-string.h" -+ -+typedef char *(*proto_t) (char *, const char *, size_t); -+char *stupid_strncat (char *, const char *, size_t); -+char *simple_strncat (char *, const char *, size_t); -+ -+IMPL (stupid_strncat, 0) -+IMPL (strncat, 2) -+ -+char * -+stupid_strncat (char *dst, const char *src, size_t n) -+{ -+ char *ret = dst; -+ while (*dst++ != '\0'); -+ --dst; -+ while (n--) -+ if ( (*dst++ = *src++) == '\0') -+ return ret; -+ *dst = '\0'; -+ return ret; -+} -+ -+static void -+do_one_test (impl_t *impl, char *dst, const char *src, size_t n) -+{ -+ size_t k = strlen (dst); -+ if (CALL (impl, dst, src, n) != dst) -+ { -+ error (0, 0, "Wrong result in function %s %p != %p", impl->name, -+ CALL (impl, dst, src, n), dst); -+ ret = 1; -+ return; -+ } -+ -+ size_t len = strlen (src); -+ if (memcmp (dst + k, src, len + 1 > n ? n : len + 1) != 0) -+ { -+ error (0, 0, "Incorrect cancatination in function %s", -+ impl->name); -+ ret = 1; -+ return; -+ } -+ if (n < len && dst[k + n] != '\0') -+ { -+ error (0, 0, "There is no zero in the end of output string in %s", -+ impl->name); -+ ret = 1; -+ return; -+ } -+ if (HP_TIMING_AVAIL) -+ { -+ hp_timing_t start __attribute ((unused)); -+ hp_timing_t stop __attribute ((unused)); -+ hp_timing_t best_time = ~ (hp_timing_t) 0; -+ size_t i; -+ -+ for (i = 0; i < 32; ++i) -+ { -+ dst[k] = '\0'; -+ HP_TIMING_NOW (start); -+ CALL (impl, dst, src, n); -+ HP_TIMING_NOW (stop); -+ HP_TIMING_BEST (best_time, start, stop); -+ } -+ -+ printf ("\t%zd", (size_t) best_time); -+ } -+} -+ -+static void -+do_test (size_t align1, size_t align2, size_t len1, size_t len2, -+ size_t n, int max_char) -+{ -+ size_t i; -+ char *s1, *s2; -+ -+ align1 &= 7; -+ if (align1 + len1 >= page_size) -+ return; -+ if (align1 + n > page_size) -+ return; -+ align2 &= 7; -+ if (align2 + len1 + len2 >= page_size) -+ return; -+ if (align2 + len1 + n > page_size) -+ return; -+ s1 = (char *) (buf1 + align1); -+ s2 = (char *) (buf2 + align2); -+ -+ for (i = 0; i < len1; ++i) -+ s1[i] = 32 + 23 * i % (max_char - 32); -+ s1[len1] = '\0'; -+ -+ for (i = 0; i < len2; i++) -+ s2[i] = 32 + 23 * i % (max_char - 32); -+ -+ if (HP_TIMING_AVAIL) -+ printf ("Length %4zd/%4zd, alignment %2zd/%2zd, N %4zd:", -+ len1, len2, align1, align2, n); -+ -+ FOR_EACH_IMPL (impl, 0) -+ { -+ s2[len2] = '\0'; -+ do_one_test (impl, s2, s1, n); -+ } -+ -+ if (HP_TIMING_AVAIL) -+ putchar ('\n'); -+} -+ -+int -+main (void) -+{ -+ size_t i, n; -+ -+ test_init (); -+ -+ printf ("%28s", ""); -+ FOR_EACH_IMPL (impl, 0) -+ printf ("\t%s", impl->name); -+ putchar ('\n'); -+ -+ for (n = 2; n <= 2048; n*=4) -+ { -+ do_test (0, 2, 2, 2, n, 127); -+ do_test (0, 0, 4, 4, n, 127); -+ do_test (4, 0, 4, 4, n, 255); -+ do_test (0, 0, 8, 8, n, 127); -+ do_test (0, 8, 8, 8, n, 127); -+ -+ for (i = 1; i < 8; ++i) -+ { -+ do_test (0, 0, 8 << i, 8 << i, n, 127); -+ do_test (8 - i, 2 * i, 8 << i, 8 << i, n, 127); -+ do_test (0, 0, 8 << i, 2 << i, n, 127); -+ do_test (8 - i, 2 * i, 8 << i, 2 << i, n, 127); -+ } -+ -+ for (i = 1; i < 8; ++i) -+ { -+ do_test (i, 2 * i, 8 << i, 1, n, 127); -+ do_test (2 * i, i, 8 << i, 1, n, 255); -+ do_test (i, i, 8 << i, 10, n, 127); -+ } -+ } -+ -+ return ret; -+} -diff -pruN glibc-2.17-c758a686/benchtests/bench-strncat-ifunc.c glibc-2.17-c758a686.new/benchtests/bench-strncat-ifunc.c ---- glibc-2.17-c758a686/benchtests/bench-strncat-ifunc.c 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.17-c758a686.new/benchtests/bench-strncat-ifunc.c 2013-08-08 09:32:15.911662617 +0530 -@@ -0,0 +1,20 @@ -+/* Measure IFUNC implementations of strncat function. -+ Copyright (C) 2013 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 -+ . */ -+ -+#define TEST_IFUNC 1 -+#include "bench-strncat.c" -diff -pruN glibc-2.17-c758a686/benchtests/bench-strncmp.c glibc-2.17-c758a686.new/benchtests/bench-strncmp.c ---- glibc-2.17-c758a686/benchtests/bench-strncmp.c 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.17-c758a686.new/benchtests/bench-strncmp.c 2013-08-08 09:32:15.911662617 +0530 -@@ -0,0 +1,249 @@ -+/* Measure strncmp functions. -+ Copyright (C) 2013 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 -+ . */ -+ -+#define TEST_MAIN -+#define TEST_NAME "strncmp" -+#include "bench-string.h" -+ -+typedef int (*proto_t) (const char *, const char *, size_t); -+int simple_strncmp (const char *, const char *, size_t); -+int stupid_strncmp (const char *, const char *, size_t); -+ -+IMPL (stupid_strncmp, 0) -+IMPL (simple_strncmp, 0) -+IMPL (strncmp, 1) -+ -+int -+simple_strncmp (const char *s1, const char *s2, size_t n) -+{ -+ int ret = 0; -+ -+ while (n-- && (ret = *(unsigned char *) s1 - * (unsigned char *) s2++) == 0 -+ && *s1++); -+ return ret; -+} -+ -+int -+stupid_strncmp (const char *s1, const char *s2, size_t n) -+{ -+ size_t ns1 = strnlen (s1, n) + 1, ns2 = strnlen (s2, n) + 1; -+ int ret = 0; -+ -+ n = ns1 < n ? ns1 : n; -+ n = ns2 < n ? ns2 : n; -+ while (n-- && (ret = *(unsigned char *) s1++ - * (unsigned char *) s2++) == 0); -+ return ret; -+} -+ -+static void -+do_one_test (impl_t *impl, const char *s1, const char *s2, size_t n, -+ int exp_result) -+{ -+ if (HP_TIMING_AVAIL) -+ { -+ hp_timing_t start __attribute ((unused)); -+ hp_timing_t stop __attribute ((unused)); -+ hp_timing_t best_time = ~ (hp_timing_t) 0; -+ size_t i; -+ -+ for (i = 0; i < 32; ++i) -+ { -+ HP_TIMING_NOW (start); -+ CALL (impl, s1, s2, n); -+ HP_TIMING_NOW (stop); -+ HP_TIMING_BEST (best_time, start, stop); -+ } -+ -+ printf ("\t%zd", (size_t) best_time); -+ } -+} -+ -+static void -+do_test_limit (size_t align1, size_t align2, size_t len, size_t n, int max_char, -+ int exp_result) -+{ -+ size_t i, align_n; -+ char *s1, *s2; -+ -+ if (n == 0) -+ { -+ s1 = (char*)(buf1 + page_size); -+ s2 = (char*)(buf2 + page_size); -+ if (HP_TIMING_AVAIL) -+ printf ("Length %4zd/%4zd:", len, n); -+ -+ FOR_EACH_IMPL (impl, 0) -+ do_one_test (impl, s1, s2, n, 0); -+ -+ if (HP_TIMING_AVAIL) -+ putchar ('\n'); -+ -+ return; -+ } -+ -+ align1 &= 15; -+ align2 &= 15; -+ align_n = (page_size - n) & 15; -+ -+ s1 = (char*)(buf1 + page_size - n); -+ s2 = (char*)(buf2 + page_size - n); -+ -+ if (align1 < align_n) -+ s1 -= (align_n - align1); -+ -+ if (align2 < align_n) -+ s2 -= (align_n - align2); -+ -+ for (i = 0; i < n; i++) -+ s1[i] = s2[i] = 1 + 23 * i % max_char; -+ -+ if (len < n) -+ { -+ s1[len] = 0; -+ s2[len] = 0; -+ if (exp_result < 0) -+ s2[len] = 32; -+ else if (exp_result > 0) -+ s1[len] = 64; -+ } -+ -+ if (HP_TIMING_AVAIL) -+ printf ("Length %4zd/%4zd, alignment %2zd/%2zd:", len, n, align1, align2); -+ -+ FOR_EACH_IMPL (impl, 0) -+ do_one_test (impl, s1, s2, n, exp_result); -+ -+ if (HP_TIMING_AVAIL) -+ putchar ('\n'); -+} -+ -+static void -+do_test (size_t align1, size_t align2, size_t len, size_t n, int max_char, -+ int exp_result) -+{ -+ size_t i; -+ char *s1, *s2; -+ -+ if (n == 0) -+ return; -+ -+ align1 &= 7; -+ if (align1 + n + 1 >= page_size) -+ return; -+ -+ align2 &= 7; -+ if (align2 + n + 1 >= page_size) -+ return; -+ -+ s1 = (char*)(buf1 + align1); -+ s2 = (char*)(buf2 + align2); -+ -+ for (i = 0; i < n; i++) -+ s1[i] = s2[i] = 1 + 23 * i % max_char; -+ -+ s1[n] = 24 + exp_result; -+ s2[n] = 23; -+ s1[len] = 0; -+ s2[len] = 0; -+ if (exp_result < 0) -+ s2[len] = 32; -+ else if (exp_result > 0) -+ s1[len] = 64; -+ if (len >= n) -+ s2[n - 1] -= exp_result; -+ -+ if (HP_TIMING_AVAIL) -+ printf ("Length %4zd/%4zd, alignment %2zd/%2zd:", len, n, align1, align2); -+ -+ FOR_EACH_IMPL (impl, 0) -+ do_one_test (impl, (char*)s1, (char*)s2, n, exp_result); -+ -+ if (HP_TIMING_AVAIL) -+ putchar ('\n'); -+} -+ -+int -+test_main (void) -+{ -+ size_t i; -+ -+ test_init (); -+ -+ printf ("%23s", ""); -+ FOR_EACH_IMPL (impl, 0) -+ printf ("\t%s", impl->name); -+ putchar ('\n'); -+ -+ for (i =0; i < 16; ++i) -+ { -+ do_test (0, 0, 8, i, 127, 0); -+ do_test (0, 0, 8, i, 127, -1); -+ do_test (0, 0, 8, i, 127, 1); -+ do_test (i, i, 8, i, 127, 0); -+ do_test (i, i, 8, i, 127, 1); -+ do_test (i, i, 8, i, 127, -1); -+ do_test (i, 2 * i, 8, i, 127, 0); -+ do_test (2 * i, i, 8, i, 127, 1); -+ do_test (i, 3 * i, 8, i, 127, -1); -+ do_test (0, 0, 8, i, 255, 0); -+ do_test (0, 0, 8, i, 255, -1); -+ do_test (0, 0, 8, i, 255, 1); -+ do_test (i, i, 8, i, 255, 0); -+ do_test (i, i, 8, i, 255, 1); -+ do_test (i, i, 8, i, 255, -1); -+ do_test (i, 2 * i, 8, i, 255, 0); -+ do_test (2 * i, i, 8, i, 255, 1); -+ do_test (i, 3 * i, 8, i, 255, -1); -+ } -+ -+ for (i = 1; i < 8; ++i) -+ { -+ do_test (0, 0, 8 << i, 16 << i, 127, 0); -+ do_test (0, 0, 8 << i, 16 << i, 127, 1); -+ do_test (0, 0, 8 << i, 16 << i, 127, -1); -+ do_test (0, 0, 8 << i, 16 << i, 255, 0); -+ do_test (0, 0, 8 << i, 16 << i, 255, 1); -+ do_test (0, 0, 8 << i, 16 << i, 255, -1); -+ do_test (8 - i, 2 * i, 8 << i, 16 << i, 127, 0); -+ do_test (8 - i, 2 * i, 8 << i, 16 << i, 127, 1); -+ do_test (2 * i, i, 8 << i, 16 << i, 255, 0); -+ do_test (2 * i, i, 8 << i, 16 << i, 255, 1); -+ } -+ -+ do_test_limit (0, 0, 0, 0, 127, 0); -+ do_test_limit (4, 0, 21, 20, 127, 0); -+ do_test_limit (0, 4, 21, 20, 127, 0); -+ do_test_limit (8, 0, 25, 24, 127, 0); -+ do_test_limit (0, 8, 25, 24, 127, 0); -+ -+ for (i = 0; i < 8; ++i) -+ { -+ do_test_limit (0, 0, 17 - i, 16 - i, 127, 0); -+ do_test_limit (0, 0, 17 - i, 16 - i, 255, 0); -+ do_test_limit (0, 0, 15 - i, 16 - i, 127, 0); -+ do_test_limit (0, 0, 15 - i, 16 - i, 127, 1); -+ do_test_limit (0, 0, 15 - i, 16 - i, 127, -1); -+ do_test_limit (0, 0, 15 - i, 16 - i, 255, 0); -+ do_test_limit (0, 0, 15 - i, 16 - i, 255, 1); -+ do_test_limit (0, 0, 15 - i, 16 - i, 255, -1); -+ } -+ -+ return ret; -+} -+ -+#include "../test-skeleton.c" -diff -pruN glibc-2.17-c758a686/benchtests/bench-strncmp-ifunc.c glibc-2.17-c758a686.new/benchtests/bench-strncmp-ifunc.c ---- glibc-2.17-c758a686/benchtests/bench-strncmp-ifunc.c 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.17-c758a686.new/benchtests/bench-strncmp-ifunc.c 2013-08-08 09:32:15.911662617 +0530 -@@ -0,0 +1,20 @@ -+/* Measure IFUNC implementations of strncmp function. -+ Copyright (C) 2013 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 -+ . */ -+ -+#define TEST_IFUNC 1 -+#include "bench-strncmp.c" -diff -pruN glibc-2.17-c758a686/benchtests/bench-strncpy.c glibc-2.17-c758a686.new/benchtests/bench-strncpy.c ---- glibc-2.17-c758a686/benchtests/bench-strncpy.c 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.17-c758a686.new/benchtests/bench-strncpy.c 2013-08-08 09:32:15.912662616 +0530 -@@ -0,0 +1,180 @@ -+/* Measure strncpy functions. -+ Copyright (C) 2013 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 -+ . */ -+ -+#ifndef STRNCPY_RESULT -+# define STRNCPY_RESULT(dst, len, n) dst -+# define TEST_MAIN -+# define TEST_NAME "strncpy" -+# include "bench-string.h" -+ -+char *simple_strncpy (char *, const char *, size_t); -+char *stupid_strncpy (char *, const char *, size_t); -+ -+IMPL (stupid_strncpy, 0) -+IMPL (simple_strncpy, 0) -+IMPL (strncpy, 1) -+ -+char * -+simple_strncpy (char *dst, const char *src, size_t n) -+{ -+ char *ret = dst; -+ while (n--) -+ if ((*dst++ = *src++) == '\0') -+ { -+ while (n--) -+ *dst++ = '\0'; -+ return ret; -+ } -+ return ret; -+} -+ -+char * -+stupid_strncpy (char *dst, const char *src, size_t n) -+{ -+ size_t nc = strnlen (src, n); -+ size_t i; -+ -+ for (i = 0; i < nc; ++i) -+ dst[i] = src[i]; -+ for (; i < n; ++i) -+ dst[i] = '\0'; -+ return dst; -+} -+#endif -+ -+typedef char *(*proto_t) (char *, const char *, size_t); -+ -+static void -+do_one_test (impl_t *impl, char *dst, const char *src, size_t len, size_t n) -+{ -+ if (CALL (impl, dst, src, n) != STRNCPY_RESULT (dst, len, n)) -+ { -+ error (0, 0, "Wrong result in function %s %p %p", impl->name, -+ CALL (impl, dst, src, n), dst); -+ ret = 1; -+ return; -+ } -+ -+ if (memcmp (dst, src, len > n ? n : len) != 0) -+ { -+ error (0, 0, "Wrong result in function %s", impl->name); -+ ret = 1; -+ return; -+ } -+ -+ if (n > len) -+ { -+ size_t i; -+ -+ for (i = len; i < n; ++i) -+ if (dst [i] != '\0') -+ { -+ error (0, 0, "Wrong result in function %s", impl->name); -+ ret = 1; -+ return; -+ } -+ } -+ -+ if (HP_TIMING_AVAIL) -+ { -+ hp_timing_t start __attribute__ ((unused)); -+ hp_timing_t stop __attribute__ ((unused)); -+ hp_timing_t best_time = ~ (hp_timing_t) 0; -+ size_t i; -+ -+ for (i = 0; i < 32; ++i) -+ { -+ HP_TIMING_NOW (start); -+ CALL (impl, dst, src, n); -+ HP_TIMING_NOW (stop); -+ HP_TIMING_BEST (best_time, start, stop); -+ } -+ -+ printf ("\t%zd", (size_t) best_time); -+ } -+} -+ -+static void -+do_test (size_t align1, size_t align2, size_t len, size_t n, int max_char) -+{ -+ size_t i; -+ char *s1, *s2; -+ -+ align1 &= 7; -+ if (align1 + len >= page_size) -+ return; -+ -+ align2 &= 7; -+ if (align2 + len >= page_size) -+ return; -+ -+ s1 = (char *) (buf1 + align1); -+ s2 = (char *) (buf2 + align2); -+ -+ for (i = 0; i < len; ++i) -+ s1[i] = 32 + 23 * i % (max_char - 32); -+ s1[len] = 0; -+ for (i = len + 1; i + align1 < page_size && i < len + 64; ++i) -+ s1[i] = 32 + 32 * i % (max_char - 32); -+ -+ if (HP_TIMING_AVAIL) -+ printf ("Length %4zd, n %4zd, alignment %2zd/%2zd:", len, n, align1, align2); -+ -+ FOR_EACH_IMPL (impl, 0) -+ do_one_test (impl, s2, s1, len, n); -+ -+ if (HP_TIMING_AVAIL) -+ putchar ('\n'); -+} -+ -+int -+test_main (void) -+{ -+ size_t i; -+ -+ test_init (); -+ -+ printf ("%28s", ""); -+ FOR_EACH_IMPL (impl, 0) -+ printf ("\t%s", impl->name); -+ putchar ('\n'); -+ -+ for (i = 1; i < 8; ++i) -+ { -+ do_test (i, i, 16, 16, 127); -+ do_test (i, i, 16, 16, 255); -+ do_test (i, 2 * i, 16, 16, 127); -+ do_test (2 * i, i, 16, 16, 255); -+ do_test (8 - i, 2 * i, 1 << i, 2 << i, 127); -+ do_test (2 * i, 8 - i, 2 << i, 1 << i, 127); -+ do_test (8 - i, 2 * i, 1 << i, 2 << i, 255); -+ do_test (2 * i, 8 - i, 2 << i, 1 << i, 255); -+ } -+ -+ for (i = 1; i < 8; ++i) -+ { -+ do_test (0, 0, 4 << i, 8 << i, 127); -+ do_test (0, 0, 16 << i, 8 << i, 127); -+ do_test (8 - i, 2 * i, 4 << i, 8 << i, 127); -+ do_test (8 - i, 2 * i, 16 << i, 8 << i, 127); -+ } -+ -+ return ret; -+} -+ -+#include "../test-skeleton.c" -diff -pruN glibc-2.17-c758a686/benchtests/bench-strncpy-ifunc.c glibc-2.17-c758a686.new/benchtests/bench-strncpy-ifunc.c ---- glibc-2.17-c758a686/benchtests/bench-strncpy-ifunc.c 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.17-c758a686.new/benchtests/bench-strncpy-ifunc.c 2013-08-08 09:32:15.911662617 +0530 -@@ -0,0 +1,20 @@ -+/* Measure IFUNC implementations of strncpy function. -+ Copyright (C) 2013 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 -+ . */ -+ -+#define TEST_IFUNC 1 -+#include "bench-strncpy.c" -diff -pruN glibc-2.17-c758a686/benchtests/bench-strnlen.c glibc-2.17-c758a686.new/benchtests/bench-strnlen.c ---- glibc-2.17-c758a686/benchtests/bench-strnlen.c 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.17-c758a686.new/benchtests/bench-strnlen.c 2013-08-08 09:32:15.912662616 +0530 -@@ -0,0 +1,139 @@ -+/* Measure strlen functions. -+ Copyright (C) 2013 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 -+ . */ -+ -+#define TEST_MAIN -+#define TEST_NAME "strnlen" -+#include "bench-string.h" -+ -+typedef size_t (*proto_t) (const char *, size_t); -+size_t simple_strnlen (const char *, size_t); -+ -+IMPL (simple_strnlen, 0) -+IMPL (strnlen, 1) -+ -+size_t -+simple_strnlen (const char *s, size_t maxlen) -+{ -+ size_t i; -+ -+ for (i = 0; i < maxlen && s[i]; ++i); -+ return i; -+} -+ -+static void -+do_one_test (impl_t *impl, const char *s, size_t maxlen, size_t exp_len) -+{ -+ size_t len = CALL (impl, s, maxlen); -+ if (len != exp_len) -+ { -+ error (0, 0, "Wrong result in function %s %zd %zd", impl->name, -+ len, exp_len); -+ ret = 1; -+ return; -+ } -+ -+ if (HP_TIMING_AVAIL) -+ { -+ hp_timing_t start __attribute ((unused)); -+ hp_timing_t stop __attribute ((unused)); -+ hp_timing_t best_time = ~ (hp_timing_t) 0; -+ size_t i; -+ -+ for (i = 0; i < 32; ++i) -+ { -+ HP_TIMING_NOW (start); -+ CALL (impl, s, maxlen); -+ HP_TIMING_NOW (stop); -+ HP_TIMING_BEST (best_time, start, stop); -+ } -+ -+ printf ("\t%zd", (size_t) best_time); -+ } -+} -+ -+static void -+do_test (size_t align, size_t len, size_t maxlen, int max_char) -+{ -+ size_t i; -+ -+ align &= 7; -+ if (align + len >= page_size) -+ return; -+ -+ for (i = 0; i < len; ++i) -+ buf1[align + i] = 1 + 7 * i % max_char; -+ buf1[align + len] = 0; -+ -+ if (HP_TIMING_AVAIL) -+ printf ("Length %4zd, alignment %2zd:", len, align); -+ -+ FOR_EACH_IMPL (impl, 0) -+ do_one_test (impl, (char *) (buf1 + align), maxlen, MIN (len, maxlen)); -+ -+ if (HP_TIMING_AVAIL) -+ putchar ('\n'); -+} -+ -+int -+test_main (void) -+{ -+ size_t i; -+ -+ test_init (); -+ -+ printf ("%20s", ""); -+ FOR_EACH_IMPL (impl, 0) -+ printf ("\t%s", impl->name); -+ putchar ('\n'); -+ -+ for (i = 1; i < 8; ++i) -+ { -+ do_test (0, i, i - 1, 127); -+ do_test (0, i, i, 127); -+ do_test (0, i, i + 1, 127); -+ } -+ -+ for (i = 1; i < 8; ++i) -+ { -+ do_test (i, i, i - 1, 127); -+ do_test (i, i, i, 127); -+ do_test (i, i, i + 1, 127); -+ } -+ -+ for (i = 2; i <= 10; ++i) -+ { -+ do_test (0, 1 << i, 5000, 127); -+ do_test (1, 1 << i, 5000, 127); -+ } -+ -+ for (i = 1; i < 8; ++i) -+ do_test (0, i, 5000, 255); -+ -+ for (i = 1; i < 8; ++i) -+ do_test (i, i, 5000, 255); -+ -+ for (i = 2; i <= 10; ++i) -+ { -+ do_test (0, 1 << i, 5000, 255); -+ do_test (1, 1 << i, 5000, 255); -+ } -+ -+ return ret; -+} -+ -+#include "../test-skeleton.c" -diff -pruN glibc-2.17-c758a686/benchtests/bench-strnlen-ifunc.c glibc-2.17-c758a686.new/benchtests/bench-strnlen-ifunc.c ---- glibc-2.17-c758a686/benchtests/bench-strnlen-ifunc.c 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.17-c758a686.new/benchtests/bench-strnlen-ifunc.c 2013-08-08 09:32:15.912662616 +0530 -@@ -0,0 +1,20 @@ -+/* Measure IFUNC implementations of strnlen function. -+ Copyright (C) 2013 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 -+ . */ -+ -+#define TEST_IFUNC 1 -+#include "bench-strnlen.c" -diff -pruN glibc-2.17-c758a686/benchtests/bench-strpbrk.c glibc-2.17-c758a686.new/benchtests/bench-strpbrk.c ---- glibc-2.17-c758a686/benchtests/bench-strpbrk.c 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.17-c758a686.new/benchtests/bench-strpbrk.c 2013-08-08 09:32:15.912662616 +0530 -@@ -0,0 +1,182 @@ -+/* Measure strpbrk functions. -+ Copyright (C) 2013 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 -+ . */ -+ -+#ifndef STRPBRK_RESULT -+# define STRPBRK_RESULT(s, pos) ((s)[(pos)] ? (s) + (pos) : NULL) -+# define RES_TYPE char * -+# define TEST_MAIN -+# define TEST_NAME "strpbrk" -+# include "bench-string.h" -+ -+typedef char *(*proto_t) (const char *, const char *); -+char *simple_strpbrk (const char *, const char *); -+char *stupid_strpbrk (const char *, const char *); -+ -+IMPL (stupid_strpbrk, 0) -+IMPL (simple_strpbrk, 0) -+IMPL (strpbrk, 1) -+ -+char * -+simple_strpbrk (const char *s, const char *rej) -+{ -+ const char *r; -+ char c; -+ -+ while ((c = *s++) != '\0') -+ for (r = rej; *r != '\0'; ++r) -+ if (*r == c) -+ return (char *) s - 1; -+ return NULL; -+} -+ -+char * -+stupid_strpbrk (const char *s, const char *rej) -+{ -+ size_t ns = strlen (s), nrej = strlen (rej); -+ size_t i, j; -+ -+ for (i = 0; i < ns; ++i) -+ for (j = 0; j < nrej; ++j) -+ if (s[i] == rej[j]) -+ return (char *) s + i; -+ return NULL; -+} -+#endif -+ -+static void -+do_one_test (impl_t *impl, const char *s, const char *rej, RES_TYPE exp_res) -+{ -+ RES_TYPE res = CALL (impl, s, rej); -+ if (res != exp_res) -+ { -+ error (0, 0, "Wrong result in function %s %p %p", impl->name, -+ (void *) res, (void *) exp_res); -+ ret = 1; -+ return; -+ } -+ -+ if (HP_TIMING_AVAIL) -+ { -+ hp_timing_t start __attribute ((unused)); -+ hp_timing_t stop __attribute ((unused)); -+ hp_timing_t best_time = ~ (hp_timing_t) 0; -+ size_t i; -+ -+ for (i = 0; i < 32; ++i) -+ { -+ HP_TIMING_NOW (start); -+ CALL (impl, s, rej); -+ HP_TIMING_NOW (stop); -+ HP_TIMING_BEST (best_time, start, stop); -+ } -+ -+ printf ("\t%zd", (size_t) best_time); -+ } -+} -+ -+static void -+do_test (size_t align, size_t pos, size_t len) -+{ -+ size_t i; -+ int c; -+ RES_TYPE result; -+ char *rej, *s; -+ -+ align &= 7; -+ if (align + pos + 10 >= page_size || len > 240) -+ return; -+ -+ rej = (char *) (buf2 + (random () & 255)); -+ s = (char *) (buf1 + align); -+ -+ for (i = 0; i < len; ++i) -+ { -+ rej[i] = random () & 255; -+ if (!rej[i]) -+ rej[i] = random () & 255; -+ if (!rej[i]) -+ rej[i] = 1 + (random () & 127); -+ } -+ rej[len] = '\0'; -+ for (c = 1; c <= 255; ++c) -+ if (strchr (rej, c) == NULL) -+ break; -+ -+ for (i = 0; i < pos; ++i) -+ { -+ s[i] = random () & 255; -+ if (strchr (rej, s[i])) -+ { -+ s[i] = random () & 255; -+ if (strchr (rej, s[i])) -+ s[i] = c; -+ } -+ } -+ s[pos] = rej[random () % (len + 1)]; -+ if (s[pos]) -+ { -+ for (i = pos + 1; i < pos + 10; ++i) -+ s[i] = random () & 255; -+ s[i] = '\0'; -+ } -+ result = STRPBRK_RESULT (s, pos); -+ -+ if (HP_TIMING_AVAIL) -+ printf ("Length %4zd, alignment %2zd, rej len %2zd:", pos, align, len); -+ -+ FOR_EACH_IMPL (impl, 0) -+ do_one_test (impl, s, rej, result); -+ -+ if (HP_TIMING_AVAIL) -+ putchar ('\n'); -+} -+ -+int -+test_main (void) -+{ -+ size_t i; -+ -+ test_init (); -+ -+ printf ("%32s", ""); -+ FOR_EACH_IMPL (impl, 0) -+ printf ("\t%s", impl->name); -+ putchar ('\n'); -+ -+ for (i = 0; i < 32; ++i) -+ { -+ do_test (0, 512, i); -+ do_test (i, 512, i); -+ } -+ -+ for (i = 1; i < 8; ++i) -+ { -+ do_test (0, 16 << i, 4); -+ do_test (i, 16 << i, 4); -+ } -+ -+ for (i = 1; i < 8; ++i) -+ do_test (i, 64, 10); -+ -+ for (i = 0; i < 64; ++i) -+ do_test (0, i, 6); -+ -+ return ret; -+} -+ -+#include "../test-skeleton.c" -diff -pruN glibc-2.17-c758a686/benchtests/bench-strpbrk-ifunc.c glibc-2.17-c758a686.new/benchtests/bench-strpbrk-ifunc.c ---- glibc-2.17-c758a686/benchtests/bench-strpbrk-ifunc.c 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.17-c758a686.new/benchtests/bench-strpbrk-ifunc.c 2013-08-08 09:32:15.912662616 +0530 -@@ -0,0 +1,20 @@ -+/* Measure IFUNC implementations of strpbrk function. -+ Copyright (C) 2013 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 -+ . */ -+ -+#define TEST_IFUNC 1 -+#include "bench-strpbrk.c" -diff -pruN glibc-2.17-c758a686/benchtests/bench-strrchr.c glibc-2.17-c758a686.new/benchtests/bench-strrchr.c ---- glibc-2.17-c758a686/benchtests/bench-strrchr.c 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.17-c758a686.new/benchtests/bench-strrchr.c 2013-08-08 09:32:15.912662616 +0530 -@@ -0,0 +1,190 @@ -+/* Measure STRCHR functions. -+ Copyright (C) 2013 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 -+ . */ -+ -+#define TEST_MAIN -+#ifdef WIDE -+# define TEST_NAME "wcsrchr" -+#else -+# define TEST_NAME "strrchr" -+#endif -+#include "bench-string.h" -+ -+#ifdef WIDE -+# include -+# define SIMPLE_STRRCHR simple_wcsrchr -+# define STRRCHR wcsrchr -+# define CHAR wchar_t -+# define UCHAR wchar_t -+# define BIG_CHAR WCHAR_MAX -+# define SMALL_CHAR 1273 -+#else -+# define SIMPLE_STRRCHR simple_strrchr -+# define STRRCHR strrchr -+# define CHAR char -+# define UCHAR unsigned char -+# define BIG_CHAR CHAR_MAX -+# define SMALL_CHAR 127 -+#endif -+ -+typedef CHAR *(*proto_t) (const CHAR *, int); -+CHAR *SIMPLE_STRRCHR (const CHAR *, int); -+ -+IMPL (SIMPLE_STRRCHR, 0) -+IMPL (STRRCHR, 1) -+ -+CHAR * -+SIMPLE_STRRCHR (const CHAR *s, int c) -+{ -+ const CHAR *ret = NULL; -+ -+ for (; *s != '\0'; ++s) -+ if (*s == (CHAR) c) -+ ret = s; -+ -+ return (CHAR *) (c == '\0' ? s : ret); -+} -+ -+static void -+do_one_test (impl_t *impl, const CHAR *s, int c, CHAR *exp_res) -+{ -+ CHAR *res = CALL (impl, s, c); -+ if (res != exp_res) -+ { -+ error (0, 0, "Wrong result in function %s %p %p", impl->name, -+ res, exp_res); -+ ret = 1; -+ return; -+ } -+ -+ if (HP_TIMING_AVAIL) -+ { -+ hp_timing_t start __attribute ((unused)); -+ hp_timing_t stop __attribute ((unused)); -+ hp_timing_t best_time = ~ (hp_timing_t) 0; -+ size_t i; -+ -+ for (i = 0; i < 32; ++i) -+ { -+ HP_TIMING_NOW (start); -+ CALL (impl, s, c); -+ HP_TIMING_NOW (stop); -+ HP_TIMING_BEST (best_time, start, stop); -+ } -+ -+ printf ("\t%zd", (size_t) best_time); -+ } -+} -+ -+static void -+do_test (size_t align, size_t pos, size_t len, int seek_char, int max_char) -+/* For wcsrchr: align here means align not in bytes, -+ but in wchar_ts, in bytes it will equal to align * (sizeof (wchar_t)) -+ len for wcschr here isn't in bytes but it's number of wchar_t symbols. */ -+{ -+ size_t i; -+ CHAR *result; -+ CHAR *buf = (CHAR *) buf1; -+ -+ align &= 7; -+ if ( (align + len) * sizeof(CHAR) >= page_size) -+ return; -+ -+ for (i = 0; i < len; ++i) -+ { -+ buf[align + i] = (random () * random ()) & max_char; -+ if (!buf[align + i]) -+ buf[align + i] = (random () * random ()) & max_char; -+ if (!buf[align + i]) -+ buf[align + i] = 1; -+ if ((i > pos || pos >= len) && buf[align + i] == seek_char) -+ buf[align + i] = seek_char + 10 + (random () & 15); -+ } -+ buf[align + len] = 0; -+ -+ if (pos < len) -+ { -+ buf[align + pos] = seek_char; -+ result = (CHAR *) (buf + align + pos); -+ } -+ else if (seek_char == 0) -+ result = (CHAR *) (buf + align + len); -+ else -+ result = NULL; -+ -+ if (HP_TIMING_AVAIL) -+ printf ("Length %4zd, alignment in bytes %2zd:", pos, align * sizeof(CHAR)); -+ -+ FOR_EACH_IMPL (impl, 0) -+ do_one_test (impl, (CHAR *) (buf + align), seek_char, result); -+ -+ if (HP_TIMING_AVAIL) -+ putchar ('\n'); -+} -+ -+int -+test_main (void) -+{ -+ size_t i; -+ -+ test_init (); -+ -+ printf ("%20s", ""); -+ FOR_EACH_IMPL (impl, 0) -+ printf ("\t%s", impl->name); -+ putchar ('\n'); -+ -+ for (i = 1; i < 8; ++i) -+ { -+ do_test (0, 16 << i, 2048, 23, SMALL_CHAR); -+ do_test (i, 16 << i, 2048, 23, SMALL_CHAR); -+ } -+ -+ for (i = 1; i < 8; ++i) -+ { -+ do_test (i, 64, 256, 23, SMALL_CHAR); -+ do_test (i, 64, 256, 23, BIG_CHAR); -+ } -+ -+ for (i = 0; i < 32; ++i) -+ { -+ do_test (0, i, i + 1, 23, SMALL_CHAR); -+ do_test (0, i, i + 1, 23, BIG_CHAR); -+ } -+ -+ for (i = 1; i < 8; ++i) -+ { -+ do_test (0, 16 << i, 2048, 0, SMALL_CHAR); -+ do_test (i, 16 << i, 2048, 0, SMALL_CHAR); -+ } -+ -+ for (i = 1; i < 8; ++i) -+ { -+ do_test (i, 64, 256, 0, SMALL_CHAR); -+ do_test (i, 64, 256, 0, BIG_CHAR); -+ } -+ -+ for (i = 0; i < 32; ++i) -+ { -+ do_test (0, i, i + 1, 0, SMALL_CHAR); -+ do_test (0, i, i + 1, 0, BIG_CHAR); -+ } -+ -+ return ret; -+} -+ -+#include "../test-skeleton.c" -diff -pruN glibc-2.17-c758a686/benchtests/bench-strrchr-ifunc.c glibc-2.17-c758a686.new/benchtests/bench-strrchr-ifunc.c ---- glibc-2.17-c758a686/benchtests/bench-strrchr-ifunc.c 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.17-c758a686.new/benchtests/bench-strrchr-ifunc.c 2013-08-08 09:32:15.912662616 +0530 -@@ -0,0 +1,20 @@ -+/* Measure IFUNC implementations of strrchr function. -+ Copyright (C) 2013 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 -+ . */ -+ -+#define TEST_IFUNC 1 -+#include "bench-strrchr.c" -diff -pruN glibc-2.17-c758a686/benchtests/bench-strspn.c glibc-2.17-c758a686.new/benchtests/bench-strspn.c ---- glibc-2.17-c758a686/benchtests/bench-strspn.c 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.17-c758a686.new/benchtests/bench-strspn.c 2013-08-08 09:32:15.912662616 +0530 -@@ -0,0 +1,174 @@ -+/* Measure strspn functions. -+ Copyright (C) 2013 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 -+ . */ -+ -+#define TEST_MAIN -+#define TEST_NAME "strspn" -+#include "bench-string.h" -+ -+typedef size_t (*proto_t) (const char *, const char *); -+size_t simple_strspn (const char *, const char *); -+size_t stupid_strspn (const char *, const char *); -+ -+IMPL (stupid_strspn, 0) -+IMPL (simple_strspn, 0) -+IMPL (strspn, 1) -+ -+size_t -+simple_strspn (const char *s, const char *acc) -+{ -+ const char *r, *str = s; -+ char c; -+ -+ while ((c = *s++) != '\0') -+ { -+ for (r = acc; *r != '\0'; ++r) -+ if (*r == c) -+ break; -+ if (*r == '\0') -+ return s - str - 1; -+ } -+ return s - str - 1; -+} -+ -+size_t -+stupid_strspn (const char *s, const char *acc) -+{ -+ size_t ns = strlen (s), nacc = strlen (acc); -+ size_t i, j; -+ -+ for (i = 0; i < ns; ++i) -+ { -+ for (j = 0; j < nacc; ++j) -+ if (s[i] == acc[j]) -+ break; -+ if (j == nacc) -+ return i; -+ } -+ return i; -+} -+ -+static void -+do_one_test (impl_t *impl, const char *s, const char *acc, size_t exp_res) -+{ -+ size_t res = CALL (impl, s, acc); -+ if (res != exp_res) -+ { -+ error (0, 0, "Wrong result in function %s %p %p", impl->name, -+ (void *) res, (void *) exp_res); -+ ret = 1; -+ return; -+ } -+ -+ if (HP_TIMING_AVAIL) -+ { -+ hp_timing_t start __attribute ((unused)); -+ hp_timing_t stop __attribute ((unused)); -+ hp_timing_t best_time = ~ (hp_timing_t) 0; -+ size_t i; -+ -+ for (i = 0; i < 32; ++i) -+ { -+ HP_TIMING_NOW (start); -+ CALL (impl, s, acc); -+ HP_TIMING_NOW (stop); -+ HP_TIMING_BEST (best_time, start, stop); -+ } -+ -+ printf ("\t%zd", (size_t) best_time); -+ } -+} -+ -+static void -+do_test (size_t align, size_t pos, size_t len) -+{ -+ size_t i; -+ char *acc, *s; -+ -+ align &= 7; -+ if (align + pos + 10 >= page_size || len > 240 || ! len) -+ return; -+ -+ acc = (char *) (buf2 + (random () & 255)); -+ s = (char *) (buf1 + align); -+ -+ for (i = 0; i < len; ++i) -+ { -+ acc[i] = random () & 255; -+ if (!acc[i]) -+ acc[i] = random () & 255; -+ if (!acc[i]) -+ acc[i] = 1 + (random () & 127); -+ } -+ acc[len] = '\0'; -+ -+ for (i = 0; i < pos; ++i) -+ s[i] = acc[random () % len]; -+ s[pos] = random () & 255; -+ if (strchr (acc, s[pos])) -+ s[pos] = '\0'; -+ else -+ { -+ for (i = pos + 1; i < pos + 10; ++i) -+ s[i] = random () & 255; -+ s[i] = '\0'; -+ } -+ -+ if (HP_TIMING_AVAIL) -+ printf ("Length %4zd, alignment %2zd, acc len %2zd:", pos, align, len); -+ -+ FOR_EACH_IMPL (impl, 0) -+ do_one_test (impl, s, acc, pos); -+ -+ if (HP_TIMING_AVAIL) -+ putchar ('\n'); -+} -+ -+int -+test_main (void) -+{ -+ size_t i; -+ -+ test_init (); -+ -+ printf ("%32s", ""); -+ FOR_EACH_IMPL (impl, 0) -+ printf ("\t%s", impl->name); -+ putchar ('\n'); -+ -+ for (i = 0; i < 32; ++i) -+ { -+ do_test (0, 512, i); -+ do_test (i, 512, i); -+ } -+ -+ for (i = 1; i < 8; ++i) -+ { -+ do_test (0, 16 << i, 4); -+ do_test (i, 16 << i, 4); -+ } -+ -+ for (i = 1; i < 8; ++i) -+ do_test (i, 64, 10); -+ -+ for (i = 0; i < 64; ++i) -+ do_test (0, i, 6); -+ -+ return ret; -+} -+ -+#include "../test-skeleton.c" -diff -pruN glibc-2.17-c758a686/benchtests/bench-strspn-ifunc.c glibc-2.17-c758a686.new/benchtests/bench-strspn-ifunc.c ---- glibc-2.17-c758a686/benchtests/bench-strspn-ifunc.c 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.17-c758a686.new/benchtests/bench-strspn-ifunc.c 2013-08-08 09:32:15.912662616 +0530 -@@ -0,0 +1,20 @@ -+/* Measure IFUNC implementations of strspn function. -+ Copyright (C) 2013 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 -+ . */ -+ -+#define TEST_IFUNC 1 -+#include "bench-strspn.c" -diff -pruN glibc-2.17-c758a686/benchtests/bench-strstr.c glibc-2.17-c758a686.new/benchtests/bench-strstr.c ---- glibc-2.17-c758a686/benchtests/bench-strstr.c 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.17-c758a686.new/benchtests/bench-strstr.c 2013-08-08 09:32:15.913662616 +0530 -@@ -0,0 +1,183 @@ -+/* Measure strstr functions. -+ Copyright (C) 2013 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 -+ . */ -+ -+#define TEST_MAIN -+#define TEST_NAME "strstr" -+#include "bench-string.h" -+ -+ -+#define STRSTR simple_strstr -+#include "../string/strstr.c" -+ -+ -+static char * -+stupid_strstr (const char *s1, const char *s2) -+{ -+ ssize_t s1len = strlen (s1); -+ ssize_t s2len = strlen (s2); -+ -+ if (s2len > s1len) -+ return NULL; -+ -+ for (ssize_t i = 0; i <= s1len - s2len; ++i) -+ { -+ size_t j; -+ for (j = 0; j < s2len; ++j) -+ if (s1[i + j] != s2[j]) -+ break; -+ if (j == s2len) -+ return (char *) s1 + i; -+ } -+ -+ return NULL; -+} -+ -+ -+typedef char *(*proto_t) (const char *, const char *); -+ -+IMPL (stupid_strstr, 0) -+IMPL (simple_strstr, 0) -+IMPL (strstr, 1) -+ -+ -+static void -+do_one_test (impl_t *impl, const char *s1, const char *s2, char *exp_result) -+{ -+ if (HP_TIMING_AVAIL) -+ { -+ hp_timing_t start __attribute ((unused)); -+ hp_timing_t stop __attribute ((unused)); -+ hp_timing_t best_time = ~(hp_timing_t) 0; -+ size_t i; -+ -+ for (i = 0; i < 32; ++i) -+ { -+ HP_TIMING_NOW (start); -+ CALL (impl, s1, s2); -+ HP_TIMING_NOW (stop); -+ HP_TIMING_BEST (best_time, start, stop); -+ } -+ -+ printf ("\t%zd", (size_t) best_time); -+ } -+} -+ -+ -+static void -+do_test (size_t align1, size_t align2, size_t len1, size_t len2, -+ int fail) -+{ -+ char *s1 = (char *) (buf1 + align1); -+ char *s2 = (char *) (buf2 + align2); -+ -+ static const char d[] = "1234567890abcdef"; -+#define dl (sizeof (d) - 1) -+ char *ss2 = s2; -+ for (size_t l = len2; l > 0; l = l > dl ? l - dl : 0) -+ { -+ size_t t = l > dl ? dl : l; -+ ss2 = mempcpy (ss2, d, t); -+ } -+ s2[len2] = '\0'; -+ -+ if (fail) -+ { -+ char *ss1 = s1; -+ for (size_t l = len1; l > 0; l = l > dl ? l - dl : 0) -+ { -+ size_t t = l > dl ? dl : l; -+ memcpy (ss1, d, t); -+ ++ss1[len2 > 7 ? 7 : len2 - 1]; -+ ss1 += t; -+ } -+ } -+ else -+ { -+ memset (s1, '0', len1); -+ memcpy (s1 + len1 - len2, s2, len2); -+ } -+ s1[len1] = '\0'; -+ -+ if (HP_TIMING_AVAIL) -+ printf ("Length %4zd/%zd, alignment %2zd/%2zd, %s:", -+ len1, len2, align1, align2, fail ? "fail" : "found"); -+ -+ FOR_EACH_IMPL (impl, 0) -+ do_one_test (impl, s1, s2, fail ? NULL : s1 + len1 - len2); -+ -+ if (HP_TIMING_AVAIL) -+ putchar ('\n'); -+} -+ -+static int -+test_main (void) -+{ -+ test_init (); -+ -+ printf ("%23s", ""); -+ FOR_EACH_IMPL (impl, 0) -+ printf ("\t%s", impl->name); -+ putchar ('\n'); -+ -+ for (size_t klen = 2; klen < 32; ++klen) -+ for (size_t hlen = 2 * klen; hlen < 16 * klen; hlen += klen) -+ { -+ do_test (0, 0, hlen, klen, 0); -+ do_test (0, 0, hlen, klen, 1); -+ do_test (0, 3, hlen, klen, 0); -+ do_test (0, 3, hlen, klen, 1); -+ do_test (0, 9, hlen, klen, 0); -+ do_test (0, 9, hlen, klen, 1); -+ do_test (0, 15, hlen, klen, 0); -+ do_test (0, 15, hlen, klen, 1); -+ -+ do_test (3, 0, hlen, klen, 0); -+ do_test (3, 0, hlen, klen, 1); -+ do_test (3, 3, hlen, klen, 0); -+ do_test (3, 3, hlen, klen, 1); -+ do_test (3, 9, hlen, klen, 0); -+ do_test (3, 9, hlen, klen, 1); -+ do_test (3, 15, hlen, klen, 0); -+ do_test (3, 15, hlen, klen, 1); -+ -+ do_test (9, 0, hlen, klen, 0); -+ do_test (9, 0, hlen, klen, 1); -+ do_test (9, 3, hlen, klen, 0); -+ do_test (9, 3, hlen, klen, 1); -+ do_test (9, 9, hlen, klen, 0); -+ do_test (9, 9, hlen, klen, 1); -+ do_test (9, 15, hlen, klen, 0); -+ do_test (9, 15, hlen, klen, 1); -+ -+ do_test (15, 0, hlen, klen, 0); -+ do_test (15, 0, hlen, klen, 1); -+ do_test (15, 3, hlen, klen, 0); -+ do_test (15, 3, hlen, klen, 1); -+ do_test (15, 9, hlen, klen, 0); -+ do_test (15, 9, hlen, klen, 1); -+ do_test (15, 15, hlen, klen, 0); -+ do_test (15, 15, hlen, klen, 1); -+ } -+ -+ do_test (0, 0, page_size - 1, 16, 0); -+ do_test (0, 0, page_size - 1, 16, 1); -+ -+ return ret; -+} -+ -+#include "../test-skeleton.c" -diff -pruN glibc-2.17-c758a686/benchtests/bench-strstr-ifunc.c glibc-2.17-c758a686.new/benchtests/bench-strstr-ifunc.c ---- glibc-2.17-c758a686/benchtests/bench-strstr-ifunc.c 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.17-c758a686.new/benchtests/bench-strstr-ifunc.c 2013-08-08 09:32:15.912662616 +0530 -@@ -0,0 +1,20 @@ -+/* Measure IFUNC implementations of strstr function. -+ Copyright (C) 2013 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 -+ . */ -+ -+#define TEST_IFUNC 1 -+#include "bench-strstr.c" -diff -pruN glibc-2.17-c758a686/benchtests/bench-timing.h glibc-2.17-c758a686.new/benchtests/bench-timing.h ---- glibc-2.17-c758a686/benchtests/bench-timing.h 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.17-c758a686.new/benchtests/bench-timing.h 2013-08-08 09:31:58.047663398 +0530 -@@ -0,0 +1,72 @@ -+/* Define timing macros. -+ Copyright (C) 2013 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 -+ . */ -+ -+#include -+#include -+ -+#if HP_TIMING_AVAIL && !defined USE_CLOCK_GETTIME -+# define GL(x) _##x -+# define GLRO(x) _##x -+hp_timing_t _dl_hp_timing_overhead; -+typedef hp_timing_t timing_t; -+ -+# define TIMING_INIT(iters) \ -+({ \ -+ HP_TIMING_DIFF_INIT(); \ -+ (iters) = 1000; \ -+}) -+ -+# define TIMING_NOW(var) HP_TIMING_NOW (var) -+# define TIMING_DIFF(diff, start, end) HP_TIMING_DIFF ((diff), (start), (end)) -+# define TIMING_ACCUM(sum, diff) HP_TIMING_ACCUM_NT ((sum), (diff)) -+ -+# define TIMING_PRINT_STATS(func, d_total_s, d_iters, d_total_i, max, min) \ -+ printf ("%s: ITERS:%g: TOTAL:%gMcy, MAX:%gcy, MIN:%gcy, %g calls/Mcy\n", \ -+ (func), (d_total_i), (d_total_s) * 1e-6, (max) / (d_iters), \ -+ (min) / (d_iters), 1e6 * (d_total_i) / (d_total_s)); -+ -+#else -+typedef uint64_t timing_t; -+ -+/* Measure 1000 times the resolution of the clock. So for a 1ns -+ resolution clock, we measure 1000 iterations of the function call at a -+ time. Measurements close to the minimum clock resolution won't make -+ much sense, but it's better than having nothing at all. */ -+# define TIMING_INIT(iters) \ -+({ \ -+ struct timespec start; \ -+ clock_getres (CLOCK_PROCESS_CPUTIME_ID, &start); \ -+ (iters) = 1000 * start.tv_nsec; \ -+}) -+ -+# define TIMING_NOW(var) \ -+({ \ -+ struct timespec tv; \ -+ clock_gettime (CLOCK_PROCESS_CPUTIME_ID, &tv); \ -+ (var) = (uint64_t) (tv.tv_nsec + (uint64_t) 1000000000 * tv.tv_sec); \ -+}) -+ -+# define TIMING_DIFF(diff, start, end) (diff) = (end) - (start) -+# define TIMING_ACCUM(sum, diff) (sum) += (diff) -+ -+# define TIMING_PRINT_STATS(func, d_total_s, d_iters, d_total_i, max, min) \ -+ printf ("%s: ITERS:%g: TOTAL:%gs, MAX:%gns, MIN:%gns, %g iter/s\n", \ -+ (func), (d_total_i), (d_total_s) * 1e-9, (max) / (d_iters), \ -+ (min) / (d_iters), 1e9 * (d_total_i) / (d_total_s)) -+ -+#endif -diff -pruN glibc-2.17-c758a686/benchtests/cosh-inputs glibc-2.17-c758a686.new/benchtests/cosh-inputs ---- glibc-2.17-c758a686/benchtests/cosh-inputs 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.17-c758a686.new/benchtests/cosh-inputs 2013-08-08 09:32:06.290663037 +0530 -@@ -0,0 +1,5 @@ -+0.1 -+0.2 -+0.3 -+0.4 -+0.5 -diff -pruN glibc-2.17-c758a686/benchtests/cos-inputs glibc-2.17-c758a686.new/benchtests/cos-inputs ---- glibc-2.17-c758a686/benchtests/cos-inputs 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.17-c758a686.new/benchtests/cos-inputs 2013-08-08 09:31:44.839663976 +0530 -@@ -0,0 +1,13 @@ -+0x1.000000cf4a2a1p0 -+0x1.0000010b239a8p0 -+0x1.00000162a932ap0 -+0x1.000002d452a11p0 -+0x1.000005bc7d86cp0 -+# cos slow path at 768 bits -+# Implemented in sysdeps/ieee754/dbl-64/sincos32.c -+## name: 768bits -+0x1.000000cf4a2a2p0 -+0x1.0000010b239a9p0 -+0x1.00000162a932bp0 -+0x1.000002d452a10p0 -+0x1.000005bc7d86dp0 -diff -pruN glibc-2.17-c758a686/benchtests/exp-inputs glibc-2.17-c758a686.new/benchtests/exp-inputs ---- glibc-2.17-c758a686/benchtests/exp-inputs 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.17-c758a686.new/benchtests/exp-inputs 2013-08-08 09:31:44.839663976 +0530 -@@ -0,0 +1,5 @@ -+42 -+# Slowest path with computation in 768 bit precision. -+# Implemented in: sysdeps/ieee754/dbl-64/mpexp.c -+## name: 768bits -+708.00096423260981737257679924368858 -diff -pruN glibc-2.17-c758a686/benchtests/log-inputs glibc-2.17-c758a686.new/benchtests/log-inputs ---- glibc-2.17-c758a686/benchtests/log-inputs 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.17-c758a686.new/benchtests/log-inputs 2013-08-08 09:32:06.290663037 +0530 -@@ -0,0 +1 @@ -+42.0 -diff -pruN glibc-2.17-c758a686/benchtests/Makefile glibc-2.17-c758a686.new/benchtests/Makefile ---- glibc-2.17-c758a686/benchtests/Makefile 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.17-c758a686.new/benchtests/Makefile 2013-08-08 09:32:18.486662504 +0530 -@@ -0,0 +1,174 @@ -+# Copyright (C) 2013 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 -+# . -+ -+ -+# Makefile for benchmark tests. The only useful target here is `bench`. -+# Add benchmark functions in alphabetical order. -+ -+subdir := benchtests -+bench := acos acosh asin asinh atan atanh cos cosh exp log modf pow rint sin \ -+ sinh tan tanh -+ -+# String function benchmarks. -+string-bench := bcopy bzero memccpy memchr memcmp memmem memmove mempcpy \ -+ memset rawmemchr stpcpy stpncpy strcasecmp strcasestr strcat \ -+ strchr strchrnul strcmp strcpy strcspn strlen strncasecmp \ -+ strncat strncmp strncpy strnlen strpbrk strrchr strspn strstr \ -+ strcpy_chk stpcpy_chk -+string-bench-ifunc := $(addsuffix -ifunc, $(string-bench)) -+string-bench-all := $(string-bench) $(string-bench-ifunc) -+ -+benchset := $(string-bench-all) -+ -+acos-ARGLIST = double -+acos-RET = double -+LDFLAGS-bench-acos = -lm -+ -+acosh-ARGLIST = double -+acosh-RET = double -+LDFLAGS-bench-acosh = -lm -+ -+asin-ARGLIST = double -+asin-RET = double -+LDFLAGS-bench-asin = -lm -+ -+asinh-ARGLIST = double -+asinh-RET = double -+LDFLAGS-bench-asinh = -lm -+ -+atan-ARGLIST = double -+atan-RET = double -+LDFLAGS-bench-atan = -lm -+ -+atanh-ARGLIST = double -+atanh-RET = double -+LDFLAGS-bench-atanh = -lm -+ -+cos-ARGLIST = double -+cos-RET = double -+LDFLAGS-bench-cos = -lm -+ -+cosh-ARGLIST = double -+cosh-RET = double -+LDFLAGS-bench-cosh = -lm -+ -+exp-ARGLIST = double -+exp-RET = double -+LDFLAGS-bench-exp = -lm -+ -+log-ARGLIST = double -+log-RET = double -+LDFLAGS-bench-log = -lm -+ -+pow-ARGLIST = double:double -+pow-RET = double -+LDFLAGS-bench-pow = -lm -+ -+rint-ARGLIST = double -+rint-RET = double -+LDFLAGS-bench-rint = -lm -+ -+sin-ARGLIST = double -+sin-RET = double -+LDFLAGS-bench-sin = -lm -+ -+sinh-ARGLIST = double -+sinh-RET = double -+LDFLAGS-bench-sinh = -lm -+ -+tan-ARGLIST = double -+tan-RET = double -+LDFLAGS-bench-tan = -lm -+ -+tanh-ARGLIST = double -+tanh-RET = double -+LDFLAGS-bench-tanh = -lm -+ -+ -+ -+# Rules to build and execute the benchmarks. Do not put any benchmark -+# parameters beyond this point. -+ -+# We don't want the benchmark programs to run in parallel since that could -+# affect their performance. -+.NOTPARALLEL: -+ -+include ../Makeconfig -+include ../Rules -+ -+binaries-bench := $(addprefix $(objpfx)bench-,$(bench)) -+binaries-benchset := $(addprefix $(objpfx)bench-,$(benchset)) -+ -+# The default duration: 10 seconds. -+ifndef BENCH_DURATION -+BENCH_DURATION := 10 -+endif -+ -+CPPFLAGS-nonlib += -DDURATION=$(BENCH_DURATION) -+ -+# Use clock_gettime to measure performance of functions. The default is to use -+# HP_TIMING if it is available. -+ifdef USE_CLOCK_GETTIME -+CPPFLAGS-nonlib += -DUSE_CLOCK_GETTIME -+endif -+ -+# This makes sure CPPFLAGS-nonlib and CFLAGS-nonlib are passed -+# for all these modules. -+cpp-srcs-left := $(binaries-benchset:=.c) $(binaries-bench:=.c) -+lib := nonlib -+include $(patsubst %,$(..)cppflags-iterator.mk,$(cpp-srcs-left)) -+ -+bench-deps := bench-skeleton.c bench-timing.h Makefile -+ -+run-bench = $(test-wrapper-env) \ -+ GCONV_PATH=$(common-objpfx)iconvdata LC_ALL=C \ -+ $($*-ENV) $(rtld-prefix) $${run} -+ -+bench-clean: -+ rm -f $(binaries-bench) $(addsuffix .o,$(binaries-bench)) -+ rm -f $(binaries-benchset) $(addsuffix .o,$(binaries-benchset)) -+ -+bench: bench-set bench-func -+ -+bench-set: $(binaries-benchset) -+ for run in $^; do \ -+ echo "Running $${run}"; \ -+ $(run-bench) > $${run}.out; \ -+ done -+ -+bench-func: $(binaries-bench) -+ { for run in $^; do \ -+ echo "Running $${run}" >&2; \ -+ $(run-bench); \ -+ done; } > $(objpfx)bench.out-tmp; \ -+ if [ -f $(objpfx)bench.out ]; then \ -+ mv -f $(objpfx)bench.out $(objpfx)bench.out.old; \ -+ fi; \ -+ mv -f $(objpfx)bench.out-tmp $(objpfx)bench.out -+ -+$(binaries-bench) $(binaries-benchset): %: %.o \ -+ $(sort $(filter $(common-objpfx)lib%,$(link-libc))) \ -+ $(addprefix $(csu-objpfx),start.o) $(+preinit) $(+postinit) -+ $(+link) -+ -+$(objpfx)bench-%.c: %-inputs $(bench-deps) -+ { if [ -n "$($*-INCLUDE)" ]; then \ -+ cat $($*-INCLUDE); \ -+ fi; \ -+ $(..)scripts/bench.pl $(patsubst %-inputs,%,$<) \ -+ $($*-ARGLIST) $($*-RET); } > $@-tmp -+ mv -f $@-tmp $@ -diff -pruN glibc-2.17-c758a686/benchtests/pow-inputs glibc-2.17-c758a686.new/benchtests/pow-inputs ---- glibc-2.17-c758a686/benchtests/pow-inputs 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.17-c758a686.new/benchtests/pow-inputs 2013-08-08 09:31:44.839663976 +0530 -@@ -0,0 +1,5 @@ -+42.0, 42.0 -+# pow slowest path at 768 bits -+# Implemented in sysdeps/ieee754/dbl-64/slowpow.c -+## name: 768bits -+1.0000000000000020, 1.5 -diff -pruN glibc-2.17-c758a686/benchtests/README glibc-2.17-c758a686.new/benchtests/README ---- glibc-2.17-c758a686/benchtests/README 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.17-c758a686.new/benchtests/README 2013-08-08 09:32:13.699662713 +0530 -@@ -0,0 +1,89 @@ -+Using the glibc microbenchmark suite -+==================================== -+ -+The glibc microbenchmark suite automatically generates code for specified -+functions, builds and calls them repeatedly for given inputs to give some -+basic performance properties of the function. -+ -+Running the benchmark: -+===================== -+ -+The benchmark can be executed by invoking make as follows: -+ -+ $ make bench -+ -+This runs each function for 10 seconds and appends its output to -+benchtests/bench.out. To ensure that the tests are rebuilt, one could run: -+ -+ $ make bench-clean -+ -+The duration of each test can be configured setting the BENCH_DURATION variable -+in the call to make. One should run `make bench-clean' before changing -+BENCH_DURATION. -+ -+ $ make BENCH_DURATION=1 bench -+ -+The benchmark suite does function call measurements using architecture-specific -+high precision timing instructions whenever available. When such support is -+not available, it uses clock_gettime (CLOCK_PROCESS_CPUTIME_ID). One can force -+the benchmark to use clock_gettime by invoking make as follows: -+ -+ $ make USE_CLOCK_GETTIME=1 bench -+ -+Again, one must run `make bench-clean' before changing the measurement method. -+ -+Adding a function to benchtests: -+=============================== -+ -+If the name of the function is `foo', then the following procedure should allow -+one to add `foo' to the bench tests: -+ -+- Append the function name to the bench variable in the Makefile. -+ -+- Define foo-ARGLIST as a colon separated list of types of the input -+ arguments. Use `void' if function does not take any inputs. Put in quotes -+ if the input argument is a pointer, e.g.: -+ -+ malloc-ARGLIST: "void *" -+ -+- Define foo-RET as the type the function returns. Skip if the function -+ returns void. One could even skip foo-ARGLIST if the function does not -+ take any inputs AND the function returns void. -+ -+- Make a file called `foo-inputs` with one input value per line, an input -+ being a comma separated list of arguments to be passed into the function. -+ See pow-inputs for an example. -+ -+ The script that parses the -inputs file treats lines beginning with a single -+ `#' as comments. Lines beginning with two hashes `##' are treated specially -+ as `directives'. -+ -+Multiple execution units per function: -+===================================== -+ -+Some functions have distinct performance characteristics for different input -+domains and it may be necessary to measure those separately. For example, some -+math functions perform computations at different levels of precision (64-bit vs -+240-bit vs 768-bit) and mixing them does not give a very useful picture of the -+performance of these functions. One could separate inputs for these domains in -+the same file by using the `name' directive that looks something like this: -+ -+ ##name: 240bit -+ -+See the pow-inputs file for an example of what such a partitioned input file -+would look like. -+ -+Benchmark Sets: -+============== -+ -+In addition to standard benchmarking of functions, one may also generate -+custom outputs for a set of functions. This is currently used by string -+function benchmarks where the aim is to compare performance between -+implementations at various alignments and for various sizes. -+ -+To add a benchset for `foo': -+ -+- Add `foo' to the benchset variable. -+- Write your bench-foo.c that prints out the measurements to stdout. -+- On execution, a bench-foo.out is created in $(objpfx) with the contents of -+ stdout. -diff -pruN glibc-2.17-c758a686/benchtests/rint-inputs glibc-2.17-c758a686.new/benchtests/rint-inputs ---- glibc-2.17-c758a686/benchtests/rint-inputs 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.17-c758a686.new/benchtests/rint-inputs 2013-08-08 09:29:31.158669824 +0530 -@@ -0,0 +1,4 @@ -+78.5 -+-78.5 -+4503599627370497.0 -+-4503599627370497.0 -diff -pruN glibc-2.17-c758a686/benchtests/sinh-inputs glibc-2.17-c758a686.new/benchtests/sinh-inputs ---- glibc-2.17-c758a686/benchtests/sinh-inputs 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.17-c758a686.new/benchtests/sinh-inputs 2013-08-08 09:32:06.290663037 +0530 -@@ -0,0 +1,5 @@ -+0.1 -+0.2 -+0.3 -+0.4 -+0.5 -diff -pruN glibc-2.17-c758a686/benchtests/sin-inputs glibc-2.17-c758a686.new/benchtests/sin-inputs ---- glibc-2.17-c758a686/benchtests/sin-inputs 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.17-c758a686.new/benchtests/sin-inputs 2013-08-08 09:31:44.839663976 +0530 -@@ -0,0 +1,17 @@ -+0.9 -+2.3 -+3.7 -+3.9 -+4.0 -+4.7 -+5.9 -+# sin slowest path at 768 bits -+# Implemented in sysdeps/ieee754/dbl-64/sincos32.c -+## name: 768bits -+0.93340582292648832662962377071381 -+2.3328432680770916363144351635128 -+3.7439477503636453548097051680088 -+3.9225160069792437411706487182528 -+4.0711651639931289992091478779912 -+4.7858438478542097982426639646292 -+5.9840767662578002727968851104379 -diff -pruN glibc-2.17-c758a686/benchtests/tanh-inputs glibc-2.17-c758a686.new/benchtests/tanh-inputs ---- glibc-2.17-c758a686/benchtests/tanh-inputs 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.17-c758a686.new/benchtests/tanh-inputs 2013-08-08 09:32:06.290663037 +0530 -@@ -0,0 +1,5 @@ -+0.1 -+0.2 -+0.3 -+0.4 -+0.5 -diff -pruN glibc-2.17-c758a686/benchtests/tan-inputs glibc-2.17-c758a686.new/benchtests/tan-inputs ---- glibc-2.17-c758a686/benchtests/tan-inputs 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.17-c758a686.new/benchtests/tan-inputs 2013-08-08 09:31:44.841663976 +0530 -@@ -0,0 +1,5 @@ -+0x1.dffffffffff1ep-22 -+# tan slowest path at 768 bits -+# Implemented in sysdeps/ieee754/dbl-64/mptan.c -+## name: 768bits -+0x1.dffffffffff1fp-22 -diff -pruN glibc-2.17-c758a686/debug/test-strcpy_chk.c glibc-2.17-c758a686.new/debug/test-strcpy_chk.c ---- glibc-2.17-c758a686/debug/test-strcpy_chk.c 2012-12-25 08:32:13.000000000 +0530 -+++ glibc-2.17-c758a686.new/debug/test-strcpy_chk.c 2013-08-08 09:32:18.487662504 +0530 -@@ -110,24 +110,6 @@ do_one_test (impl_t *impl, char *dst, co - ret = 1; - return; - } -- -- if (HP_TIMING_AVAIL) -- { -- hp_timing_t start __attribute ((unused)); -- hp_timing_t stop __attribute ((unused));; -- hp_timing_t best_time = ~ (hp_timing_t) 0; -- size_t i; -- -- for (i = 0; i < 32; ++i) -- { -- HP_TIMING_NOW (start); -- CALL (impl, dst, src, dlen); -- HP_TIMING_NOW (stop); -- HP_TIMING_BEST (best_time, start, stop); -- } -- -- printf ("\t%zd", (size_t) best_time); -- } - } - - static void -@@ -151,14 +133,8 @@ do_test (size_t align1, size_t align2, s - s1[i] = 32 + 23 * i % (max_char - 32); - s1[len] = 0; - -- if (HP_TIMING_AVAIL && dlen > len) -- printf ("Length %4zd, alignment %2zd/%2zd:", len, align1, align2); -- - FOR_EACH_IMPL (impl, 0) - do_one_test (impl, s2, s1, len, dlen); -- -- if (HP_TIMING_AVAIL && dlen > len) -- putchar ('\n'); - } - - static void -diff -pruN glibc-2.17-c758a686/Makefile.in glibc-2.17-c758a686.new/Makefile.in ---- glibc-2.17-c758a686/Makefile.in 2012-12-25 08:32:13.000000000 +0530 -+++ glibc-2.17-c758a686.new/Makefile.in 2013-08-08 09:31:24.214664878 +0530 -@@ -3,7 +3,7 @@ srcdir = @srcdir@ - # Uncomment the line below if you want to do parallel build. - # PARALLELMFLAGS = -j 4 - --.PHONY: all install -+.PHONY: all install bench - - all .DEFAULT: - $(MAKE) -r PARALLELMFLAGS="$(PARALLELMFLAGS)" -C $(srcdir) objdir=`pwd` $@ -@@ -11,3 +11,6 @@ all .DEFAULT: - install: - LANGUAGE=C LC_ALL=C; export LANGUAGE LC_ALL; \ - $(MAKE) -r PARALLELMFLAGS="$(PARALLELMFLAGS)" -C $(srcdir) objdir=`pwd` $@ -+ -+bench bench-clean: -+ $(MAKE) -C $(srcdir)/benchtests $(PARALLELMFLAGS) objdir=`pwd` $@ -diff -pruN glibc-2.17-c758a686/Rules glibc-2.17-c758a686.new/Rules ---- glibc-2.17-c758a686/Rules 2012-12-25 08:32:13.000000000 +0530 -+++ glibc-2.17-c758a686.new/Rules 2013-08-08 09:30:35.647667003 +0530 -@@ -83,7 +83,7 @@ common-generated += dummy.o dummy.c - - # This makes all the auxiliary and test programs. - --.PHONY: others tests -+.PHONY: others tests bench - ifeq ($(multi-arch),no) - tests := $(filter-out $(tests-ifunc), $(tests)) - xtests := $(filter-out $(xtests-ifunc), $(xtests)) -@@ -191,6 +191,7 @@ $(objpfx)%.out: /dev/null $(objpfx)% # M - $(make-test-out) > $@ - - endif # tests -+ - - .PHONY: distclean realclean subdir_distclean subdir_realclean \ - subdir_clean subdir_mostlyclean subdir_testclean -diff -pruN glibc-2.17-c758a686/scripts/bench.pl glibc-2.17-c758a686.new/scripts/bench.pl ---- glibc-2.17-c758a686/scripts/bench.pl 1970-01-01 05:30:00.000000000 +0530 -+++ glibc-2.17-c758a686.new/scripts/bench.pl 2013-08-08 09:32:00.654663284 +0530 -@@ -0,0 +1,168 @@ -+#! /usr/bin/perl -w -+# Copyright (C) 2013 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 -+# . -+ -+ -+use strict; -+use warnings; -+# Generate a benchmark source file for a given input. -+ -+if (@ARGV < 2) { -+ die "Usage: bench.pl [parameter types] [return type]" -+} -+ -+my $arg; -+my $func = $ARGV[0]; -+my @args; -+my $ret = "void"; -+my $getret = ""; -+my $retval = ""; -+ -+if (@ARGV >= 2) { -+ @args = split(':', $ARGV[1]); -+} -+ -+if (@ARGV == 3) { -+ $ret = $ARGV[2]; -+} -+ -+my $decl = "extern $ret $func ("; -+ -+# Function has no arguments. -+if (@args == 0 || $args[0] eq "void") { -+ print "$decl void);\n"; -+ print "#define CALL_BENCH_FUNC(i,j) $func();\n"; -+ print "#define NUM_VARIANTS (1)\n"; -+ print "#define NUM_SAMPLES(v) (1)\n"; -+ print "#define VARIANT(v) FUNCNAME \"()\"\n" -+} -+# The function has arguments, so parse them and populate the inputs. -+else { -+ my $num = 0; -+ my $bench_func = "#define CALL_BENCH_FUNC(v, i) $func ("; -+ -+ my $struct = -+ "struct _variants -+ { -+ const char *name; -+ int count; -+ struct args *in; -+ };\n"; -+ -+ my $arg_struct = "struct args {"; -+ -+ foreach $arg (@args) { -+ if ($num > 0) { -+ $bench_func = "$bench_func,"; -+ $decl = "$decl,"; -+ } -+ -+ $arg_struct = "$arg_struct volatile $arg arg$num;"; -+ $bench_func = "$bench_func variants[v].in[i].arg$num"; -+ $decl = "$decl $arg"; -+ $num = $num + 1; -+ } -+ -+ $arg_struct = $arg_struct . "};\n"; -+ $decl = $decl . ");\n"; -+ $bench_func = $bench_func . ");\n"; -+ -+ # We create a hash of inputs for each variant of the test. -+ my $variant = ""; -+ my @curvals; -+ my %vals; -+ -+ open INPUTS, "<$func-inputs" or die $!; -+ -+ LINE:while () { -+ chomp; -+ -+ # New variant. -+ if (/^## (\w+): (\w+)/) { -+ #We only identify Name for now. -+ if ($1 ne "name") { -+ next LINE; -+ } -+ -+ # Save values in the last variant. -+ my @copy = @curvals; -+ $vals{$variant} = \@copy; -+ -+ # Prepare for the next. -+ $variant=$2; -+ undef @curvals; -+ next LINE; -+ } -+ -+ # Skip over comments. -+ if (/^#/) { -+ next LINE; -+ } -+ push (@curvals, $_); -+ } -+ -+ $vals{$variant} = \@curvals; -+ -+ # Print the definitions and macros. -+ print $decl; -+ print $bench_func; -+ print $arg_struct; -+ print $struct; -+ -+ my $c = 0; -+ my $key; -+ -+ # Print the input arrays. -+ foreach $key (keys %vals) { -+ my @arr = @{$vals{$key}}; -+ -+ print "struct args in" . $c . "[" . @arr . "] = {\n"; -+ foreach (@arr) { -+ print "{$_},\n"; -+ } -+ print "};\n\n"; -+ $c += 1; -+ } -+ -+ # The variants. Each variant then points to the appropriate input array we -+ # defined above. -+ print "struct _variants variants[" . (keys %vals) . "] = {\n"; -+ $c = 0; -+ foreach $key (keys %vals) { -+ print "{\"$func($key)\", " . @{$vals{$key}} . ", in$c},\n"; -+ $c += 1; -+ } -+ print "};\n\n"; -+ -+ # Finally, print the last set of macros. -+ print "#define NUM_VARIANTS $c\n"; -+ print "#define NUM_SAMPLES(i) (variants[i].count)\n"; -+ print "#define VARIANT(i) (variants[i].name)\n"; -+} -+ -+# In some cases not storing a return value seems to result in the function call -+# being optimized out. -+if ($ret ne "void") { -+ print "static volatile $ret ret = 0.0;\n"; -+ $getret = "ret = "; -+} -+ -+# And we're done. -+print "#define BENCH_FUNC(i, j) ({$getret CALL_BENCH_FUNC (i, j);})\n"; -+ -+print "#define FUNCNAME \"$func\"\n"; -+print "#include \"bench-skeleton.c\"\n"; -diff -pruN glibc-2.17-c758a686/string/test-memccpy.c glibc-2.17-c758a686.new/string/test-memccpy.c ---- glibc-2.17-c758a686/string/test-memccpy.c 2012-12-25 08:32:13.000000000 +0530 -+++ glibc-2.17-c758a686.new/string/test-memccpy.c 2013-08-08 09:55:14.828602291 +0530 -@@ -74,24 +74,6 @@ do_one_test (impl_t *impl, void *dst, co - ret = 1; - return; - } -- -- if (HP_TIMING_AVAIL) -- { -- hp_timing_t start __attribute__ ((unused)); -- hp_timing_t stop __attribute__ ((unused)); -- hp_timing_t best_time = ~ (hp_timing_t) 0; -- size_t i; -- -- for (i = 0; i < 32; ++i) -- { -- HP_TIMING_NOW (start); -- CALL (impl, dst, src, c, n); -- HP_TIMING_NOW (stop); -- HP_TIMING_BEST (best_time, start, stop); -- } -- -- printf ("\t%zd", (size_t) best_time); -- } - } - - static void -@@ -122,14 +104,8 @@ do_test (size_t align1, size_t align2, i - for (i = len; i + align1 < page_size && i < len + 64; ++i) - s1[i] = 32 + 32 * i % (max_char - 32); - -- if (HP_TIMING_AVAIL) -- printf ("Length %4zd, n %4zd, char %d, alignment %2zd/%2zd:", len, n, c, align1, align2); -- - FOR_EACH_IMPL (impl, 0) - do_one_test (impl, s2, s1, c, len, n); -- -- if (HP_TIMING_AVAIL) -- putchar ('\n'); - } - - static void -diff -pruN glibc-2.17-c758a686/string/test-memchr.c glibc-2.17-c758a686.new/string/test-memchr.c ---- glibc-2.17-c758a686/string/test-memchr.c 2012-12-25 08:32:13.000000000 +0530 -+++ glibc-2.17-c758a686.new/string/test-memchr.c 2013-08-08 09:55:14.828602291 +0530 -@@ -47,24 +47,6 @@ do_one_test (impl_t *impl, const char *s - ret = 1; - return; - } -- -- if (HP_TIMING_AVAIL) -- { -- hp_timing_t start __attribute ((unused)); -- hp_timing_t stop __attribute ((unused)); -- hp_timing_t best_time = ~ (hp_timing_t) 0; -- size_t i; -- -- for (i = 0; i < 32; ++i) -- { -- HP_TIMING_NOW (start); -- CALL (impl, s, c, n); -- HP_TIMING_NOW (stop); -- HP_TIMING_BEST (best_time, start, stop); -- } -- -- printf ("\t%zd", (size_t) best_time); -- } - } - - static void -@@ -97,14 +79,8 @@ do_test (size_t align, size_t pos, size_ - buf1[align + len] = seek_char; - } - -- if (HP_TIMING_AVAIL) -- printf ("Length %4zd, alignment %2zd:", pos, align); -- - FOR_EACH_IMPL (impl, 0) - do_one_test (impl, (char *) (buf1 + align), seek_char, len, result); -- -- if (HP_TIMING_AVAIL) -- putchar ('\n'); - } - - static void -diff -pruN glibc-2.17-c758a686/string/test-memcmp.c glibc-2.17-c758a686.new/string/test-memcmp.c ---- glibc-2.17-c758a686/string/test-memcmp.c 2012-12-25 08:32:13.000000000 +0530 -+++ glibc-2.17-c758a686.new/string/test-memcmp.c 2013-08-08 09:55:14.828602291 +0530 -@@ -100,24 +100,6 @@ do_one_test (impl_t *impl, const CHAR *s - { - if (check_result (impl, s1, s2, len, exp_result) < 0) - return; -- -- if (HP_TIMING_AVAIL) -- { -- hp_timing_t start __attribute ((unused)); -- hp_timing_t stop __attribute ((unused)); -- hp_timing_t best_time = ~ (hp_timing_t) 0; -- size_t i; -- -- for (i = 0; i < 32; ++i) -- { -- HP_TIMING_NOW (start); -- CALL (impl, s1, s2, len); -- HP_TIMING_NOW (stop); -- HP_TIMING_BEST (best_time, start, stop); -- } -- -- printf ("\t%zd", (size_t) best_time); -- } - } - - static void -@@ -147,14 +129,8 @@ do_test (size_t align1, size_t align2, s - s2[len] = align2; - s2[len - 1] -= exp_result; - -- if (HP_TIMING_AVAIL) -- printf ("Length %4zd, alignment %2zd/%2zd:", len, align1, align2); -- - FOR_EACH_IMPL (impl, 0) - do_one_test (impl, s1, s2, len, exp_result); -- -- if (HP_TIMING_AVAIL) -- putchar ('\n'); - } - - static void -diff -pruN glibc-2.17-c758a686/string/test-memcpy.c glibc-2.17-c758a686.new/string/test-memcpy.c ---- glibc-2.17-c758a686/string/test-memcpy.c 2012-12-25 08:32:13.000000000 +0530 -+++ glibc-2.17-c758a686.new/string/test-memcpy.c 2013-08-08 09:55:14.828602291 +0530 -@@ -68,24 +68,6 @@ do_one_test (impl_t *impl, char *dst, co - ret = 1; - return; - } -- -- if (HP_TIMING_AVAIL) -- { -- hp_timing_t start __attribute ((unused)); -- hp_timing_t stop __attribute ((unused)); -- hp_timing_t best_time = ~ (hp_timing_t) 0; -- size_t i; -- -- for (i = 0; i < 32; ++i) -- { -- HP_TIMING_NOW (start); -- CALL (impl, dst, src, len); -- HP_TIMING_NOW (stop); -- HP_TIMING_BEST (best_time, start, stop); -- } -- -- printf ("\t%zd", (size_t) best_time); -- } - } - - static void -@@ -108,14 +90,8 @@ do_test (size_t align1, size_t align2, s - for (i = 0, j = 1; i < len; i++, j += 23) - s1[i] = j; - -- if (HP_TIMING_AVAIL) -- printf ("Length %4zd, alignment %2zd/%2zd:", len, align1, align2); -- - FOR_EACH_IMPL (impl, 0) - do_one_test (impl, s2, s1, len); -- -- if (HP_TIMING_AVAIL) -- putchar ('\n'); - } - - static void -diff -pruN glibc-2.17-c758a686/string/test-memmem.c glibc-2.17-c758a686.new/string/test-memmem.c ---- glibc-2.17-c758a686/string/test-memmem.c 2012-12-25 08:32:13.000000000 +0530 -+++ glibc-2.17-c758a686.new/string/test-memmem.c 2013-08-08 09:55:14.828602291 +0530 -@@ -82,24 +82,6 @@ do_one_test (impl_t *impl, const void *h - if (check_result (impl, haystack, haystack_len, needle, needle_len, - expected) < 0) - return; -- -- if (HP_TIMING_AVAIL) -- { -- hp_timing_t start __attribute ((unused)); -- hp_timing_t stop __attribute ((unused)); -- hp_timing_t best_time = ~ (hp_timing_t) 0; -- size_t i; -- -- for (i = 0; i < 32; ++i) -- { -- HP_TIMING_NOW (start); -- CALL (impl, haystack, haystack_len, needle, needle_len); -- HP_TIMING_NOW (stop); -- HP_TIMING_BEST (best_time, start, stop); -- } -- -- printf ("\t%zd", (size_t) best_time); -- } - } - - static void -@@ -110,16 +92,10 @@ do_test (const char *str, size_t len, si - memcpy (tmpbuf, buf1 + idx, len); - memcpy (buf1 + idx, str, len); - -- if (HP_TIMING_AVAIL) -- printf ("String %s, offset %zd:", str, idx); -- - FOR_EACH_IMPL (impl, 0) - do_one_test (impl, buf1, BUF1PAGES * page_size, str, len, buf1 + idx); - - memcpy (buf1 + idx, tmpbuf, len); -- -- if (HP_TIMING_AVAIL) -- putchar ('\n'); - } - - static void -@@ -143,16 +119,10 @@ do_random_tests (void) - buf1[idx + off] = ch; - } - -- if (HP_TIMING_AVAIL) -- printf ("String %.*s, offset %zd:", (int) len, buf1 + idx, idx); -- - FOR_EACH_IMPL (impl, 0) - do_one_test (impl, buf1, BUF1PAGES * page_size, buf1 + idx, len, - buf1 + idx); - -- if (HP_TIMING_AVAIL) -- putchar ('\n'); -- - memcpy (buf1 + idx, tmpbuf, len); - } - } -diff -pruN glibc-2.17-c758a686/string/test-memmove.c glibc-2.17-c758a686.new/string/test-memmove.c ---- glibc-2.17-c758a686/string/test-memmove.c 2013-08-08 09:25:04.450681492 +0530 -+++ glibc-2.17-c758a686.new/string/test-memmove.c 2013-08-08 09:55:14.829602291 +0530 -@@ -91,28 +91,6 @@ do_one_test (impl_t *impl, char *dst, ch - ret = 1; - return; - } -- -- if (HP_TIMING_AVAIL) -- { -- hp_timing_t start __attribute ((unused)); -- hp_timing_t stop __attribute ((unused)); -- hp_timing_t best_time = ~ (hp_timing_t) 0; -- size_t i; -- -- for (i = 0; i < 32; ++i) -- { -- HP_TIMING_NOW (start); --#ifdef TEST_BCOPY -- CALL (impl, src, dst, len); --#else -- CALL (impl, dst, src, len); --#endif -- HP_TIMING_NOW (stop); -- HP_TIMING_BEST (best_time, start, stop); -- } -- -- printf ("\t%zd", (size_t) best_time); -- } - } - - static void -@@ -135,14 +113,8 @@ do_test (size_t align1, size_t align2, s - for (i = 0, j = 1; i < len; i++, j += 23) - s1[i] = j; - -- if (HP_TIMING_AVAIL) -- printf ("Length %4zd, alignment %2zd/%2zd:", len, align1, align2); -- - FOR_EACH_IMPL (impl, 0) - do_one_test (impl, s2, (char *) (buf2 + align1), s1, len); -- -- if (HP_TIMING_AVAIL) -- putchar ('\n'); - } - - static void -diff -pruN glibc-2.17-c758a686/string/test-memset.c glibc-2.17-c758a686.new/string/test-memset.c ---- glibc-2.17-c758a686/string/test-memset.c 2013-08-08 09:25:04.450681492 +0530 -+++ glibc-2.17-c758a686.new/string/test-memset.c 2013-08-08 09:55:14.829602291 +0530 -@@ -92,29 +92,6 @@ do_one_test (impl_t *impl, char *s, int - ret = 1; - return; - } -- -- if (HP_TIMING_AVAIL) -- { -- hp_timing_t start __attribute ((unused)); -- hp_timing_t stop __attribute ((unused)); -- hp_timing_t best_time = ~ (hp_timing_t) 0; -- size_t i; -- -- for (i = 0; i < 32; ++i) -- { -- HP_TIMING_NOW (start); --#ifdef TEST_BZERO -- CALL (impl, s, n); --#else -- CALL (impl, s, c, n); --#endif -- -- HP_TIMING_NOW (stop); -- HP_TIMING_BEST (best_time, start, stop); -- } -- -- printf ("\t%zd", (size_t) best_time); -- } - } - - static void -@@ -124,14 +101,8 @@ do_test (size_t align, int c, size_t len - if (align + len > page_size) - return; - -- if (HP_TIMING_AVAIL) -- printf ("Length %4zd, alignment %2zd, c %2d:", len, align, c); -- - FOR_EACH_IMPL (impl, 0) - do_one_test (impl, (char *) buf1 + align, c, len); -- -- if (HP_TIMING_AVAIL) -- putchar ('\n'); - } - - #ifndef TEST_BZERO -diff -pruN glibc-2.17-c758a686/string/test-rawmemchr.c glibc-2.17-c758a686.new/string/test-rawmemchr.c ---- glibc-2.17-c758a686/string/test-rawmemchr.c 2012-12-25 08:32:13.000000000 +0530 -+++ glibc-2.17-c758a686.new/string/test-rawmemchr.c 2013-08-08 09:55:14.829602291 +0530 -@@ -49,24 +49,6 @@ do_one_test (impl_t *impl, const char *s - ret = 1; - return; - } -- -- if (HP_TIMING_AVAIL) -- { -- hp_timing_t start __attribute ((unused)); -- hp_timing_t stop __attribute ((unused)); -- hp_timing_t best_time = ~ (hp_timing_t) 0; -- size_t i; -- -- for (i = 0; i < 32; ++i) -- { -- HP_TIMING_NOW (start); -- CALL (impl, s, c); -- HP_TIMING_NOW (stop); -- HP_TIMING_BEST (best_time, start, stop); -- } -- -- printf ("\t%zd", (size_t) best_time); -- } - } - - static void -@@ -93,14 +75,8 @@ do_test (size_t align, size_t pos, size_ - buf1[align + len] = -seek_char; - result = (char *) (buf1 + align + pos); - -- if (HP_TIMING_AVAIL) -- printf ("Length %4zd, alignment %2zd:", pos, align); -- - FOR_EACH_IMPL (impl, 0) - do_one_test (impl, (char *) (buf1 + align), seek_char, result); -- -- if (HP_TIMING_AVAIL) -- putchar ('\n'); - } - - static void -diff -pruN glibc-2.17-c758a686/string/test-strcasecmp.c glibc-2.17-c758a686.new/string/test-strcasecmp.c ---- glibc-2.17-c758a686/string/test-strcasecmp.c 2012-12-25 08:32:13.000000000 +0530 -+++ glibc-2.17-c758a686.new/string/test-strcasecmp.c 2013-08-08 09:55:14.829602291 +0530 -@@ -73,24 +73,6 @@ do_one_test (impl_t *impl, const char *s - ret = 1; - return; - } -- -- if (HP_TIMING_AVAIL) -- { -- hp_timing_t start __attribute ((unused)); -- hp_timing_t stop __attribute ((unused)); -- hp_timing_t best_time = ~ (hp_timing_t) 0; -- size_t i; -- -- for (i = 0; i < 32; ++i) -- { -- HP_TIMING_NOW (start); -- CALL (impl, s1, s2); -- HP_TIMING_NOW (stop); -- HP_TIMING_BEST (best_time, start, stop); -- } -- -- printf ("\t%zd", (size_t) best_time); -- } - } - - static void -@@ -129,14 +111,8 @@ do_test (size_t align1, size_t align2, s - else - s2[len - 1] -= exp_result; - -- if (HP_TIMING_AVAIL) -- printf ("Length %4zd, alignment %2zd/%2zd:", len, align1, align2); -- - FOR_EACH_IMPL (impl, 0) - do_one_test (impl, s1, s2, exp_result); -- -- if (HP_TIMING_AVAIL) -- putchar ('\n'); - } - - static void -diff -pruN glibc-2.17-c758a686/string/test-strcasestr.c glibc-2.17-c758a686.new/string/test-strcasestr.c ---- glibc-2.17-c758a686/string/test-strcasestr.c 2012-12-25 08:32:13.000000000 +0530 -+++ glibc-2.17-c758a686.new/string/test-strcasestr.c 2013-08-08 09:55:14.829602291 +0530 -@@ -78,24 +78,6 @@ do_one_test (impl_t *impl, const char *s - { - if (check_result (impl, s1, s2, exp_result) < 0) - return; -- -- if (HP_TIMING_AVAIL) -- { -- hp_timing_t start __attribute ((unused)); -- hp_timing_t stop __attribute ((unused)); -- hp_timing_t best_time = ~(hp_timing_t) 0; -- size_t i; -- -- for (i = 0; i < 32; ++i) -- { -- HP_TIMING_NOW (start); -- CALL (impl, s1, s2); -- HP_TIMING_NOW (stop); -- HP_TIMING_BEST (best_time, start, stop); -- } -- -- printf ("\t%zd", (size_t) best_time); -- } - } - - -@@ -135,15 +117,8 @@ do_test (size_t align1, size_t align2, s - } - s1[len1] = '\0'; - -- if (HP_TIMING_AVAIL) -- printf ("Length %4zd/%zd, alignment %2zd/%2zd, %s:", -- len1, len2, align1, align2, fail ? "fail" : "found"); -- - FOR_EACH_IMPL (impl, 0) - do_one_test (impl, s1, s2, fail ? NULL : s1 + len1 - len2); -- -- if (HP_TIMING_AVAIL) -- putchar ('\n'); - } - - static void -diff -pruN glibc-2.17-c758a686/string/test-strcat.c glibc-2.17-c758a686.new/string/test-strcat.c ---- glibc-2.17-c758a686/string/test-strcat.c 2012-12-25 08:32:13.000000000 +0530 -+++ glibc-2.17-c758a686.new/string/test-strcat.c 2013-08-08 09:55:14.829602291 +0530 -@@ -56,25 +56,6 @@ do_one_test (impl_t *impl, char *dst, co - ret = 1; - return; - } -- -- if (HP_TIMING_AVAIL) -- { -- hp_timing_t start __attribute ((unused)); -- hp_timing_t stop __attribute ((unused)); -- hp_timing_t best_time = ~ (hp_timing_t) 0; -- size_t i; -- -- for (i = 0; i < 32; ++i) -- { -- dst[k] = '\0'; -- HP_TIMING_NOW (start); -- CALL (impl, dst, src); -- HP_TIMING_NOW (stop); -- HP_TIMING_BEST (best_time, start, stop); -- } -- -- printf ("\t%zd", (size_t) best_time); -- } - } - - static void -@@ -101,17 +82,11 @@ do_test (size_t align1, size_t align2, s - for (i = 0; i < len2; i++) - s2[i] = 32 + 23 * i % (max_char - 32); - -- if (HP_TIMING_AVAIL) -- printf ("Length %4zd/%4zd, alignment %2zd/%2zd:", len1, len2, align1, align2); -- - FOR_EACH_IMPL (impl, 0) - { - s2[len2] = '\0'; - do_one_test (impl, s2, s1); - } -- -- if (HP_TIMING_AVAIL) -- putchar ('\n'); - } - - static void -diff -pruN glibc-2.17-c758a686/string/test-strchr.c glibc-2.17-c758a686.new/string/test-strchr.c ---- glibc-2.17-c758a686/string/test-strchr.c 2012-12-25 08:32:13.000000000 +0530 -+++ glibc-2.17-c758a686.new/string/test-strchr.c 2013-08-08 09:55:14.829602291 +0530 -@@ -107,24 +107,6 @@ do_one_test (impl_t *impl, const CHAR *s - { - if (check_result (impl, s, c, exp_res) < 0) - return; -- -- if (HP_TIMING_AVAIL) -- { -- hp_timing_t start __attribute ((unused)); -- hp_timing_t stop __attribute ((unused)); -- hp_timing_t best_time = ~ (hp_timing_t) 0; -- size_t i; -- -- for (i = 0; i < 32; ++i) -- { -- HP_TIMING_NOW (start); -- CALL (impl, s, c); -- HP_TIMING_NOW (stop); -- HP_TIMING_BEST (best_time, start, stop); -- } -- -- printf ("\t%zd", (size_t) best_time); -- } - } - - static void -@@ -160,15 +142,8 @@ do_test (size_t align, size_t pos, size_ - else - result = NULLRET (buf + align + len); - -- if (HP_TIMING_AVAIL) -- printf ("Length %4zd, alignment in bytes %2zd:", -- pos, align * sizeof (CHAR)); -- - FOR_EACH_IMPL (impl, 0) - do_one_test (impl, buf + align, seek_char, result); -- -- if (HP_TIMING_AVAIL) -- putchar ('\n'); - } - - static void -diff -pruN glibc-2.17-c758a686/string/test-strcmp.c glibc-2.17-c758a686.new/string/test-strcmp.c ---- glibc-2.17-c758a686/string/test-strcmp.c 2012-12-25 08:32:13.000000000 +0530 -+++ glibc-2.17-c758a686.new/string/test-strcmp.c 2013-08-08 09:55:14.829602291 +0530 -@@ -161,24 +161,6 @@ do_one_test (impl_t *impl, - { - if (check_result (impl, s1, s2, exp_result) < 0) - return; -- -- if (HP_TIMING_AVAIL) -- { -- hp_timing_t start __attribute ((unused)); -- hp_timing_t stop __attribute ((unused)); -- hp_timing_t best_time = ~ (hp_timing_t) 0; -- size_t i; -- -- for (i = 0; i < 32; ++i) -- { -- HP_TIMING_NOW (start); -- CALL (impl, s1, s2); -- HP_TIMING_NOW (stop); -- HP_TIMING_BEST (best_time, start, stop); -- } -- -- printf ("\t%zd", (size_t) best_time); -- } - } - - static void -@@ -214,14 +196,8 @@ do_test (size_t align1, size_t align2, s - s2[len + 1] = 24 + exp_result; - s2[len - 1] -= exp_result; - -- if (HP_TIMING_AVAIL) -- printf ("Length %4zd, alignment %2zd/%2zd:", len, align1, align2); -- - FOR_EACH_IMPL (impl, 0) - do_one_test (impl, s1, s2, exp_result); -- -- if (HP_TIMING_AVAIL) -- putchar ('\n'); - } - - static void -diff -pruN glibc-2.17-c758a686/string/test-strcpy.c glibc-2.17-c758a686.new/string/test-strcpy.c ---- glibc-2.17-c758a686/string/test-strcpy.c 2012-12-25 08:32:13.000000000 +0530 -+++ glibc-2.17-c758a686.new/string/test-strcpy.c 2013-08-08 09:55:14.830602291 +0530 -@@ -92,24 +92,6 @@ do_one_test (impl_t *impl, CHAR *dst, co - ret = 1; - return; - } -- -- if (HP_TIMING_AVAIL) -- { -- hp_timing_t start __attribute ((unused)); -- hp_timing_t stop __attribute ((unused));; -- hp_timing_t best_time = ~ (hp_timing_t) 0; -- size_t i; -- -- for (i = 0; i < 32; ++i) -- { -- HP_TIMING_NOW (start); -- CALL (impl, dst, src); -- HP_TIMING_NOW (stop); -- HP_TIMING_BEST (best_time, start, stop); -- } -- -- printf ("\t%zd", (size_t) best_time); -- } - } - - static void -@@ -135,14 +117,8 @@ do_test (size_t align1, size_t align2, s - s1[i] = 32 + 23 * i % (max_char - 32); - s1[len] = 0; - -- if (HP_TIMING_AVAIL) -- printf ("Length %4zd, alignments in bytes %2zd/%2zd:", len, align1 * sizeof(CHAR), align2 * sizeof(CHAR)); -- - FOR_EACH_IMPL (impl, 0) - do_one_test (impl, s2, s1, len); -- -- if (HP_TIMING_AVAIL) -- putchar ('\n'); - } - - static void -diff -pruN glibc-2.17-c758a686/string/test-string.h glibc-2.17-c758a686.new/string/test-string.h ---- glibc-2.17-c758a686/string/test-string.h 2012-12-25 08:32:13.000000000 +0530 -+++ glibc-2.17-c758a686.new/string/test-string.h 2013-08-08 09:55:14.830602291 +0530 -@@ -53,7 +53,6 @@ extern impl_t __start_impls[], __stop_im - #include - #define GL(x) _##x - #define GLRO(x) _##x --#include - - - # define TEST_FUNCTION test_main () -@@ -67,8 +66,6 @@ int ret, do_srandom; - unsigned int seed; - size_t page_size; - --hp_timing_t _dl_hp_timing_overhead; -- - # ifndef ITERATIONS - size_t iterations = 100000; - # define ITERATIONS_OPTIONS \ -@@ -159,16 +156,6 @@ static impl_t *impl_array; - if (!notall || impl->test) - #endif - --#define HP_TIMING_BEST(best_time, start, end) \ -- do \ -- { \ -- hp_timing_t tmptime; \ -- HP_TIMING_DIFF (tmptime, start + _dl_hp_timing_overhead, end); \ -- if (best_time > tmptime) \ -- best_time = tmptime; \ -- } \ -- while (0) -- - #ifndef BUF1PAGES - # define BUF1PAGES 1 - #endif -@@ -199,7 +186,6 @@ test_init (void) - error (EXIT_FAILURE, errno, "mmap failed"); - if (mprotect (buf2 + page_size, page_size, PROT_NONE)) - error (EXIT_FAILURE, errno, "mprotect failed"); -- HP_TIMING_DIFF_INIT (); - if (do_srandom) - { - printf ("Setting seed to 0x%x\n", seed); -diff -pruN glibc-2.17-c758a686/string/test-strlen.c glibc-2.17-c758a686.new/string/test-strlen.c ---- glibc-2.17-c758a686/string/test-strlen.c 2012-12-25 08:32:13.000000000 +0530 -+++ glibc-2.17-c758a686.new/string/test-strlen.c 2013-08-08 09:55:14.830602291 +0530 -@@ -72,24 +72,6 @@ do_one_test (impl_t *impl, const CHAR *s - ret = 1; - return; - } -- -- if (HP_TIMING_AVAIL) -- { -- hp_timing_t start __attribute ((unused)); -- hp_timing_t stop __attribute ((unused)); -- hp_timing_t best_time = ~ (hp_timing_t) 0; -- size_t i; -- -- for (i = 0; i < 32; ++i) -- { -- HP_TIMING_NOW (start); -- CALL (impl, s); -- HP_TIMING_NOW (stop); -- HP_TIMING_BEST (best_time, start, stop); -- } -- -- printf ("\t%zd", (size_t) best_time); -- } - } - - static void -@@ -107,14 +89,8 @@ do_test (size_t align, size_t len) - buf[align + i] = 1 + 11111 * i % MAX_CHAR; - buf[align + len] = 0; - -- if (HP_TIMING_AVAIL) -- printf ("Length %4zd, alignment %2zd:", len, align); -- - FOR_EACH_IMPL (impl, 0) - do_one_test (impl, (CHAR *) (buf + align), len); -- -- if (HP_TIMING_AVAIL) -- putchar ('\n'); - } - - static void -diff -pruN glibc-2.17-c758a686/string/test-strncasecmp.c glibc-2.17-c758a686.new/string/test-strncasecmp.c ---- glibc-2.17-c758a686/string/test-strncasecmp.c 2012-12-25 08:32:13.000000000 +0530 -+++ glibc-2.17-c758a686.new/string/test-strncasecmp.c 2013-08-08 09:55:14.830602291 +0530 -@@ -94,24 +94,6 @@ do_one_test (impl_t *impl, const char *s - { - if (check_result (impl, s1, s2, n, exp_result) < 0) - return; -- -- if (HP_TIMING_AVAIL) -- { -- hp_timing_t start __attribute ((unused)); -- hp_timing_t stop __attribute ((unused)); -- hp_timing_t best_time = ~ (hp_timing_t) 0; -- size_t i; -- -- for (i = 0; i < 32; ++i) -- { -- HP_TIMING_NOW (start); -- CALL (impl, s1, s2, n); -- HP_TIMING_NOW (stop); -- HP_TIMING_BEST (best_time, start, stop); -- } -- -- printf ("\t%zd", (size_t) best_time); -- } - } - - static void -@@ -150,14 +132,8 @@ do_test (size_t align1, size_t align2, s - else - s2[len - 1] -= exp_result; - -- if (HP_TIMING_AVAIL) -- printf ("Length %4zd, alignment %2zd/%2zd:", len, align1, align2); -- - FOR_EACH_IMPL (impl, 0) - do_one_test (impl, s1, s2, n, exp_result); -- -- if (HP_TIMING_AVAIL) -- putchar ('\n'); - } - - static void -diff -pruN glibc-2.17-c758a686/string/test-strncat.c glibc-2.17-c758a686.new/string/test-strncat.c ---- glibc-2.17-c758a686/string/test-strncat.c 2012-12-25 08:32:13.000000000 +0530 -+++ glibc-2.17-c758a686.new/string/test-strncat.c 2013-08-08 09:55:14.830602291 +0530 -@@ -67,24 +67,6 @@ do_one_test (impl_t *impl, char *dst, co - ret = 1; - return; - } -- if (HP_TIMING_AVAIL) -- { -- hp_timing_t start __attribute ((unused)); -- hp_timing_t stop __attribute ((unused)); -- hp_timing_t best_time = ~ (hp_timing_t) 0; -- size_t i; -- -- for (i = 0; i < 32; ++i) -- { -- dst[k] = '\0'; -- HP_TIMING_NOW (start); -- CALL (impl, dst, src, n); -- HP_TIMING_NOW (stop); -- HP_TIMING_BEST (best_time, start, stop); -- } -- -- printf ("\t%zd", (size_t) best_time); -- } - } - - static void -@@ -114,18 +96,11 @@ do_test (size_t align1, size_t align2, s - for (i = 0; i < len2; i++) - s2[i] = 32 + 23 * i % (max_char - 32); - -- if (HP_TIMING_AVAIL) -- printf ("Length %4zd/%4zd, alignment %2zd/%2zd, N %4zd:", -- len1, len2, align1, align2, n); -- - FOR_EACH_IMPL (impl, 0) - { - s2[len2] = '\0'; - do_one_test (impl, s2, s1, n); - } -- -- if (HP_TIMING_AVAIL) -- putchar ('\n'); - } - - static void -diff -pruN glibc-2.17-c758a686/string/test-strncmp.c glibc-2.17-c758a686.new/string/test-strncmp.c ---- glibc-2.17-c758a686/string/test-strncmp.c 2012-12-25 08:32:13.000000000 +0530 -+++ glibc-2.17-c758a686.new/string/test-strncmp.c 2013-08-08 09:55:14.830602291 +0530 -@@ -75,24 +75,6 @@ do_one_test (impl_t *impl, const char *s - { - if (check_result (impl, s1, s2, n, exp_result) < 0) - return; -- -- if (HP_TIMING_AVAIL) -- { -- hp_timing_t start __attribute ((unused)); -- hp_timing_t stop __attribute ((unused)); -- hp_timing_t best_time = ~ (hp_timing_t) 0; -- size_t i; -- -- for (i = 0; i < 32; ++i) -- { -- HP_TIMING_NOW (start); -- CALL (impl, s1, s2, n); -- HP_TIMING_NOW (stop); -- HP_TIMING_BEST (best_time, start, stop); -- } -- -- printf ("\t%zd", (size_t) best_time); -- } - } - - static void -@@ -106,15 +88,10 @@ do_test_limit (size_t align1, size_t ali - { - s1 = (char*)(buf1 + page_size); - s2 = (char*)(buf2 + page_size); -- if (HP_TIMING_AVAIL) -- printf ("Length %4zd/%4zd:", len, n); - - FOR_EACH_IMPL (impl, 0) - do_one_test (impl, s1, s2, n, 0); - -- if (HP_TIMING_AVAIL) -- putchar ('\n'); -- - return; - } - -@@ -144,14 +121,8 @@ do_test_limit (size_t align1, size_t ali - s1[len] = 64; - } - -- if (HP_TIMING_AVAIL) -- printf ("Length %4zd/%4zd, alignment %2zd/%2zd:", len, n, align1, align2); -- - FOR_EACH_IMPL (impl, 0) - do_one_test (impl, s1, s2, n, exp_result); -- -- if (HP_TIMING_AVAIL) -- putchar ('\n'); - } - - static void -@@ -189,14 +160,8 @@ do_test (size_t align1, size_t align2, s - if (len >= n) - s2[n - 1] -= exp_result; - -- if (HP_TIMING_AVAIL) -- printf ("Length %4zd/%4zd, alignment %2zd/%2zd:", len, n, align1, align2); -- - FOR_EACH_IMPL (impl, 0) - do_one_test (impl, (char*)s1, (char*)s2, n, exp_result); -- -- if (HP_TIMING_AVAIL) -- putchar ('\n'); - } - - static void -diff -pruN glibc-2.17-c758a686/string/test-strncpy.c glibc-2.17-c758a686.new/string/test-strncpy.c ---- glibc-2.17-c758a686/string/test-strncpy.c 2012-12-25 08:32:13.000000000 +0530 -+++ glibc-2.17-c758a686.new/string/test-strncpy.c 2013-08-08 09:55:14.830602291 +0530 -@@ -90,24 +90,6 @@ do_one_test (impl_t *impl, char *dst, co - return; - } - } -- -- if (HP_TIMING_AVAIL) -- { -- hp_timing_t start __attribute__ ((unused)); -- hp_timing_t stop __attribute__ ((unused)); -- hp_timing_t best_time = ~ (hp_timing_t) 0; -- size_t i; -- -- for (i = 0; i < 32; ++i) -- { -- HP_TIMING_NOW (start); -- CALL (impl, dst, src, n); -- HP_TIMING_NOW (stop); -- HP_TIMING_BEST (best_time, start, stop); -- } -- -- printf ("\t%zd", (size_t) best_time); -- } - } - - static void -@@ -133,14 +115,8 @@ do_test (size_t align1, size_t align2, s - for (i = len + 1; i + align1 < page_size && i < len + 64; ++i) - s1[i] = 32 + 32 * i % (max_char - 32); - -- if (HP_TIMING_AVAIL) -- printf ("Length %4zd, n %4zd, alignment %2zd/%2zd:", len, n, align1, align2); -- - FOR_EACH_IMPL (impl, 0) - do_one_test (impl, s2, s1, len, n); -- -- if (HP_TIMING_AVAIL) -- putchar ('\n'); - } - - static void -diff -pruN glibc-2.17-c758a686/string/test-strnlen.c glibc-2.17-c758a686.new/string/test-strnlen.c ---- glibc-2.17-c758a686/string/test-strnlen.c 2012-12-25 08:32:13.000000000 +0530 -+++ glibc-2.17-c758a686.new/string/test-strnlen.c 2013-08-08 09:55:14.830602291 +0530 -@@ -47,24 +47,6 @@ do_one_test (impl_t *impl, const char *s - ret = 1; - return; - } -- -- if (HP_TIMING_AVAIL) -- { -- hp_timing_t start __attribute ((unused)); -- hp_timing_t stop __attribute ((unused)); -- hp_timing_t best_time = ~ (hp_timing_t) 0; -- size_t i; -- -- for (i = 0; i < 32; ++i) -- { -- HP_TIMING_NOW (start); -- CALL (impl, s, maxlen); -- HP_TIMING_NOW (stop); -- HP_TIMING_BEST (best_time, start, stop); -- } -- -- printf ("\t%zd", (size_t) best_time); -- } - } - - static void -@@ -80,14 +62,8 @@ do_test (size_t align, size_t len, size_ - buf1[align + i] = 1 + 7 * i % max_char; - buf1[align + len] = 0; - -- if (HP_TIMING_AVAIL) -- printf ("Length %4zd, alignment %2zd:", len, align); -- - FOR_EACH_IMPL (impl, 0) - do_one_test (impl, (char *) (buf1 + align), maxlen, MIN (len, maxlen)); -- -- if (HP_TIMING_AVAIL) -- putchar ('\n'); - } - - static void -diff -pruN glibc-2.17-c758a686/string/test-strpbrk.c glibc-2.17-c758a686.new/string/test-strpbrk.c ---- glibc-2.17-c758a686/string/test-strpbrk.c 2012-12-25 08:32:13.000000000 +0530 -+++ glibc-2.17-c758a686.new/string/test-strpbrk.c 2013-08-08 09:55:14.831602291 +0530 -@@ -70,24 +70,6 @@ do_one_test (impl_t *impl, const char *s - ret = 1; - return; - } -- -- if (HP_TIMING_AVAIL) -- { -- hp_timing_t start __attribute ((unused)); -- hp_timing_t stop __attribute ((unused)); -- hp_timing_t best_time = ~ (hp_timing_t) 0; -- size_t i; -- -- for (i = 0; i < 32; ++i) -- { -- HP_TIMING_NOW (start); -- CALL (impl, s, rej); -- HP_TIMING_NOW (stop); -- HP_TIMING_BEST (best_time, start, stop); -- } -- -- printf ("\t%zd", (size_t) best_time); -- } - } - - static void -@@ -137,14 +119,8 @@ do_test (size_t align, size_t pos, size_ - } - result = STRPBRK_RESULT (s, pos); - -- if (HP_TIMING_AVAIL) -- printf ("Length %4zd, alignment %2zd, rej len %2zd:", pos, align, len); -- - FOR_EACH_IMPL (impl, 0) - do_one_test (impl, s, rej, result); -- -- if (HP_TIMING_AVAIL) -- putchar ('\n'); - } - - static void -diff -pruN glibc-2.17-c758a686/string/test-strrchr.c glibc-2.17-c758a686.new/string/test-strrchr.c ---- glibc-2.17-c758a686/string/test-strrchr.c 2012-12-25 08:32:13.000000000 +0530 -+++ glibc-2.17-c758a686.new/string/test-strrchr.c 2013-08-08 09:55:14.831602291 +0530 -@@ -73,24 +73,6 @@ do_one_test (impl_t *impl, const CHAR *s - ret = 1; - return; - } -- -- if (HP_TIMING_AVAIL) -- { -- hp_timing_t start __attribute ((unused)); -- hp_timing_t stop __attribute ((unused)); -- hp_timing_t best_time = ~ (hp_timing_t) 0; -- size_t i; -- -- for (i = 0; i < 32; ++i) -- { -- HP_TIMING_NOW (start); -- CALL (impl, s, c); -- HP_TIMING_NOW (stop); -- HP_TIMING_BEST (best_time, start, stop); -- } -- -- printf ("\t%zd", (size_t) best_time); -- } - } - - static void -@@ -129,14 +111,8 @@ do_test (size_t align, size_t pos, size_ - else - result = NULL; - -- if (HP_TIMING_AVAIL) -- printf ("Length %4zd, alignment in bytes %2zd:", pos, align * sizeof(CHAR)); -- - FOR_EACH_IMPL (impl, 0) - do_one_test (impl, (CHAR *) (buf + align), seek_char, result); -- -- if (HP_TIMING_AVAIL) -- putchar ('\n'); - } - - static void -diff -pruN glibc-2.17-c758a686/string/test-strspn.c glibc-2.17-c758a686.new/string/test-strspn.c ---- glibc-2.17-c758a686/string/test-strspn.c 2012-12-25 08:32:13.000000000 +0530 -+++ glibc-2.17-c758a686.new/string/test-strspn.c 2013-08-08 09:55:14.831602291 +0530 -@@ -74,24 +74,6 @@ do_one_test (impl_t *impl, const char *s - ret = 1; - return; - } -- -- if (HP_TIMING_AVAIL) -- { -- hp_timing_t start __attribute ((unused)); -- hp_timing_t stop __attribute ((unused)); -- hp_timing_t best_time = ~ (hp_timing_t) 0; -- size_t i; -- -- for (i = 0; i < 32; ++i) -- { -- HP_TIMING_NOW (start); -- CALL (impl, s, acc); -- HP_TIMING_NOW (stop); -- HP_TIMING_BEST (best_time, start, stop); -- } -- -- printf ("\t%zd", (size_t) best_time); -- } - } - - static void -@@ -129,14 +111,8 @@ do_test (size_t align, size_t pos, size_ - s[i] = '\0'; - } - -- if (HP_TIMING_AVAIL) -- printf ("Length %4zd, alignment %2zd, acc len %2zd:", pos, align, len); -- - FOR_EACH_IMPL (impl, 0) - do_one_test (impl, s, acc, pos); -- -- if (HP_TIMING_AVAIL) -- putchar ('\n'); - } - - static void -diff -pruN glibc-2.17-c758a686/string/test-strstr.c glibc-2.17-c758a686.new/string/test-strstr.c ---- glibc-2.17-c758a686/string/test-strstr.c 2012-12-25 08:32:13.000000000 +0530 -+++ glibc-2.17-c758a686.new/string/test-strstr.c 2013-08-08 09:55:14.831602291 +0530 -@@ -77,24 +77,6 @@ do_one_test (impl_t *impl, const char *s - { - if (check_result (impl, s1, s2, exp_result) < 0) - return; -- -- if (HP_TIMING_AVAIL) -- { -- hp_timing_t start __attribute ((unused)); -- hp_timing_t stop __attribute ((unused)); -- hp_timing_t best_time = ~(hp_timing_t) 0; -- size_t i; -- -- for (i = 0; i < 32; ++i) -- { -- HP_TIMING_NOW (start); -- CALL (impl, s1, s2); -- HP_TIMING_NOW (stop); -- HP_TIMING_BEST (best_time, start, stop); -- } -- -- printf ("\t%zd", (size_t) best_time); -- } - } - - -@@ -133,15 +115,9 @@ do_test (size_t align1, size_t align2, s - } - s1[len1] = '\0'; - -- if (HP_TIMING_AVAIL) -- printf ("Length %4zd/%zd, alignment %2zd/%2zd, %s:", -- len1, len2, align1, align2, fail ? "fail" : "found"); -- - FOR_EACH_IMPL (impl, 0) - do_one_test (impl, s1, s2, fail ? NULL : s1 + len1 - len2); - -- if (HP_TIMING_AVAIL) -- putchar ('\n'); - } - - static void diff --git a/SOURCES/glibc-rh996227.patch b/SOURCES/glibc-rh996227.patch index f745cb0..436d110 100644 --- a/SOURCES/glibc-rh996227.patch +++ b/SOURCES/glibc-rh996227.patch @@ -22,10 +22,10 @@ Date: Fri Aug 16 09:38:52 2013 +0200 NAME_MAX, PATH_MAX. (Pathconf): Add portability note for _PC_NAME_MAX, _PC_PATH_MAX. -diff --git a/manual/conf.texi b/manual/conf.texi +diff --git glibc-2.17-c758a686/manual/conf.texi glibc-2.17-c758a686/manual/conf.texi index 7eb8b36..c720063 100644 ---- a/manual/conf.texi -+++ b/manual/conf.texi +--- glibc-2.17-c758a686/manual/conf.texi ++++ glibc-2.17-c758a686/manual/conf.texi @@ -1149,6 +1149,9 @@ typed ahead as input. @xref{I/O Queues}. @deftypevr Macro int NAME_MAX The uniform system limit (if any) for the length of a file name component, not @@ -56,10 +56,10 @@ index 7eb8b36..c720063 100644 @node Utility Limits @section Utility Program Capacity Limits -diff --git a/manual/filesys.texi b/manual/filesys.texi +diff --git glibc-2.17-c758a686/manual/filesys.texi glibc-2.17-c758a686/manual/filesys.texi index 1df9cf2..814c210 100644 ---- a/manual/filesys.texi -+++ b/manual/filesys.texi +--- glibc-2.17-c758a686/manual/filesys.texi ++++ glibc-2.17-c758a686/manual/filesys.texi @@ -444,9 +444,9 @@ symbols are declared in the header file @file{dirent.h}. @comment POSIX.1 @deftypefun {struct dirent *} readdir (DIR *@var{dirstream}) @@ -159,10 +159,10 @@ index 1df9cf2..814c210 100644 It is also important to look at the definition of the @code{struct dirent} type. Simply passing a pointer to an object of this type for the second parameter of @code{readdir_r} might not be enough. Some -diff --git a/sysdeps/posix/dirstream.h b/sysdeps/posix/dirstream.h +diff --git glibc-2.17-c758a686/sysdeps/posix/dirstream.h glibc-2.17-c758a686/sysdeps/posix/dirstream.h index a7a074d..8e8570d 100644 ---- a/sysdeps/posix/dirstream.h -+++ b/sysdeps/posix/dirstream.h +--- glibc-2.17-c758a686/sysdeps/posix/dirstream.h ++++ glibc-2.17-c758a686/sysdeps/posix/dirstream.h @@ -39,6 +39,8 @@ struct __dirstream off_t filepos; /* Position of next entry to read. */ @@ -172,10 +172,10 @@ index a7a074d..8e8570d 100644 /* Directory block. */ char data[0] __attribute__ ((aligned (__alignof__ (void*)))); }; -diff --git a/sysdeps/posix/opendir.c b/sysdeps/posix/opendir.c +diff --git glibc-2.17-c758a686/sysdeps/posix/opendir.c glibc-2.17-c758a686/sysdeps/posix/opendir.c index ddfc3a7..fc05b0f 100644 ---- a/sysdeps/posix/opendir.c -+++ b/sysdeps/posix/opendir.c +--- glibc-2.17-c758a686/sysdeps/posix/opendir.c ++++ glibc-2.17-c758a686/sysdeps/posix/opendir.c @@ -231,6 +231,7 @@ __alloc_dir (int fd, bool close_fd, int flags, const struct stat64 *statp) dirp->size = 0; dirp->offset = 0; @@ -184,10 +184,10 @@ index ddfc3a7..fc05b0f 100644 return dirp; } -diff --git a/sysdeps/posix/readdir_r.c b/sysdeps/posix/readdir_r.c +diff --git glibc-2.17-c758a686/sysdeps/posix/readdir_r.c glibc-2.17-c758a686/sysdeps/posix/readdir_r.c index b5a8e2e..8ed5c3f 100644 ---- a/sysdeps/posix/readdir_r.c -+++ b/sysdeps/posix/readdir_r.c +--- glibc-2.17-c758a686/sysdeps/posix/readdir_r.c ++++ glibc-2.17-c758a686/sysdeps/posix/readdir_r.c @@ -40,6 +40,7 @@ __READDIR_R (DIR *dirp, DIRENT_TYPE *entry, DIRENT_TYPE **result) DIRENT_TYPE *dp; size_t reclen; @@ -266,10 +266,10 @@ index b5a8e2e..8ed5c3f 100644 } #ifdef __READDIR_R_ALIAS -diff --git a/sysdeps/posix/rewinddir.c b/sysdeps/posix/rewinddir.c +diff --git glibc-2.17-c758a686/sysdeps/posix/rewinddir.c glibc-2.17-c758a686/sysdeps/posix/rewinddir.c index 2935a8e..d4991ad 100644 ---- a/sysdeps/posix/rewinddir.c -+++ b/sysdeps/posix/rewinddir.c +--- glibc-2.17-c758a686/sysdeps/posix/rewinddir.c ++++ glibc-2.17-c758a686/sysdeps/posix/rewinddir.c @@ -33,6 +33,7 @@ rewinddir (dirp) dirp->filepos = 0; dirp->offset = 0; @@ -278,10 +278,10 @@ index 2935a8e..d4991ad 100644 #ifndef NOT_IN_libc __libc_lock_unlock (dirp->lock); #endif -diff --git a/sysdeps/unix/sysv/linux/i386/readdir64_r.c b/sysdeps/unix/sysv/linux/i386/readdir64_r.c +diff --git glibc-2.17-c758a686/sysdeps/unix/sysv/linux/i386/readdir64_r.c glibc-2.17-c758a686/sysdeps/unix/sysv/linux/i386/readdir64_r.c index 8ebbcfd..a7d114e 100644 ---- a/sysdeps/unix/sysv/linux/i386/readdir64_r.c -+++ b/sysdeps/unix/sysv/linux/i386/readdir64_r.c +--- glibc-2.17-c758a686/sysdeps/unix/sysv/linux/i386/readdir64_r.c ++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/i386/readdir64_r.c @@ -18,7 +18,6 @@ #define __READDIR_R __readdir64_r #define __GETDENTS __getdents64 @@ -290,10 +290,10 @@ index 8ebbcfd..a7d114e 100644 #include -diff --git a/sysdeps/unix/sysv/linux/wordsize-64/readdir_r.c b/sysdeps/unix/sysv/linux/wordsize-64/readdir_r.c +diff --git glibc-2.17-c758a686/sysdeps/unix/sysv/linux/wordsize-64/readdir_r.c glibc-2.17-c758a686/sysdeps/unix/sysv/linux/wordsize-64/readdir_r.c index 5ed8e95..290f2c8 100644 ---- a/sysdeps/unix/sysv/linux/wordsize-64/readdir_r.c -+++ b/sysdeps/unix/sysv/linux/wordsize-64/readdir_r.c +--- glibc-2.17-c758a686/sysdeps/unix/sysv/linux/wordsize-64/readdir_r.c ++++ glibc-2.17-c758a686/sysdeps/unix/sysv/linux/wordsize-64/readdir_r.c @@ -1,5 +1,4 @@ #define readdir64_r __no_readdir64_r_decl -#define GETDENTS_64BIT_ALIGNED 1 diff --git a/SOURCES/glibc-rtkaio-inc-pthread.patch b/SOURCES/glibc-rtkaio-inc-pthread.patch index dbd9c19..9aa6162 100644 --- a/SOURCES/glibc-rtkaio-inc-pthread.patch +++ b/SOURCES/glibc-rtkaio-inc-pthread.patch @@ -1,6 +1,6 @@ -diff -urN glibc-2.17-c758a686/rtkaio/tst-aiod2.c glibc-2.17-c758a686.mod/rtkaio/tst-aiod2.c +diff -urN glibc-2.17-c758a686/rtkaio/tst-aiod2.c glibc-2.17-c758a686/rtkaio/tst-aiod2.c --- glibc-2.17-c758a686/rtkaio/tst-aiod2.c 2011-10-19 07:04:41.000000000 -0400 -+++ glibc-2.17-c758a686.mod/rtkaio/tst-aiod2.c 2014-08-19 18:32:10.174233598 -0400 ++++ glibc-2.17-c758a686/rtkaio/tst-aiod2.c 2014-08-19 18:32:10.174233598 -0400 @@ -24,6 +24,7 @@ #include #include @@ -9,9 +9,9 @@ diff -urN glibc-2.17-c758a686/rtkaio/tst-aiod2.c glibc-2.17-c758a686.mod/rtkaio/ #include "tst-aiod.h" -diff -urN glibc-2.17-c758a686/rtkaio/tst-aiod3.c glibc-2.17-c758a686.mod/rtkaio/tst-aiod3.c +diff -urN glibc-2.17-c758a686/rtkaio/tst-aiod3.c glibc-2.17-c758a686/rtkaio/tst-aiod3.c --- glibc-2.17-c758a686/rtkaio/tst-aiod3.c 2011-10-19 07:04:41.000000000 -0400 -+++ glibc-2.17-c758a686.mod/rtkaio/tst-aiod3.c 2014-08-19 18:31:59.855273111 -0400 ++++ glibc-2.17-c758a686/rtkaio/tst-aiod3.c 2014-08-19 18:31:59.855273111 -0400 @@ -23,6 +23,7 @@ #include #include diff --git a/SOURCES/glibc-stap-libm.patch b/SOURCES/glibc-stap-libm.patch index 667016f..9fb123e 100644 --- a/SOURCES/glibc-stap-libm.patch +++ b/SOURCES/glibc-stap-libm.patch @@ -1,6 +1,6 @@ -diff -rup c/sysdeps/ieee754/dbl-64/slowexp.c d/sysdeps/ieee754/dbl-64/slowexp.c ---- c/sysdeps/ieee754/dbl-64/slowexp.c 2012-05-20 19:47:38.000000000 -0600 -+++ d/sysdeps/ieee754/dbl-64/slowexp.c 2012-05-21 10:02:51.693957300 -0600 +diff -rup glibc-2.17-c758a686/sysdeps/ieee754/dbl-64/slowexp.c glibc-2.17-c758a686/sysdeps/ieee754/dbl-64/slowexp.c +--- glibc-2.17-c758a686/sysdeps/ieee754/dbl-64/slowexp.c 2012-05-20 19:47:38.000000000 -0600 ++++ glibc-2.17-c758a686/sysdeps/ieee754/dbl-64/slowexp.c 2012-05-21 10:02:51.693957300 -0600 @@ -30,6 +30,8 @@ #include "mpa.h" #include @@ -33,9 +33,9 @@ diff -rup c/sysdeps/ieee754/dbl-64/slowexp.c d/sysdeps/ieee754/dbl-64/slowexp.c return res; } } -diff -rup c/sysdeps/ieee754/dbl-64/slowpow.c d/sysdeps/ieee754/dbl-64/slowpow.c ---- c/sysdeps/ieee754/dbl-64/slowpow.c 2012-05-20 19:47:38.000000000 -0600 -+++ d/sysdeps/ieee754/dbl-64/slowpow.c 2012-05-21 10:02:51.694957291 -0600 +diff -rup glibc-2.17-c758a686/sysdeps/ieee754/dbl-64/slowpow.c glibc-2.17-c758a686/sysdeps/ieee754/dbl-64/slowpow.c +--- glibc-2.17-c758a686/sysdeps/ieee754/dbl-64/slowpow.c 2012-05-20 19:47:38.000000000 -0600 ++++ glibc-2.17-c758a686/sysdeps/ieee754/dbl-64/slowpow.c 2012-05-21 10:02:51.694957291 -0600 @@ -34,6 +34,8 @@ #include "mpa.h" #include diff --git a/SPECS/glibc.spec b/SPECS/glibc.spec index 747da11..4aed418 100644 --- a/SPECS/glibc.spec +++ b/SPECS/glibc.spec @@ -1,6 +1,6 @@ %define glibcsrcdir glibc-2.17-c758a686 %define glibcversion 2.17 -%define glibcrelease 78%{?dist} +%define glibcrelease 106%{?dist}.1 ############################################################################## # If run_glibc_tests is zero then tests are not run for the build. # You must always set run_glibc_tests to one for production builds. @@ -68,11 +68,6 @@ # execution is provided by STT_GNU_IFUNC. %define multiarcharches ppc %{power64} %{ix86} x86_64 %{sparc} s390 s390x ############################################################################## -# If the architecture has SDT probe point support then we build glibc with -# --enable-systemtap and include all SDT probe points in the library. It is -# the eventual goal that all supported arches should be on this list. -%define systemtaparches %{ix86} x86_64 ppc ppc64 s390 s390x -############################################################################## # Add -s for a less verbose build output. %define silentrules PARALLELMFLAGS= ############################################################################## @@ -129,88 +124,82 @@ Source1: %{glibcsrcdir}-releng.tar.gz # Configuration twiddle, not sure there's a good case to get upstream to # change this. -Patch0001: %{name}-fedora-nscd.patch +Patch0001: glibc-fedora-nscd.patch -Patch0002: %{name}-fedora-regcomp-sw11561.patch -Patch0003: %{name}-fedora-ldd.patch +Patch0002: glibc-fedora-regcomp-sw11561.patch +Patch0003: glibc-fedora-ldd.patch -Patch0004: %{name}-fedora-ppc-unwind.patch +Patch0004: glibc-fedora-ppc-unwind.patch # Build info files in the source tree, then move to the build # tree so that they're identical for multilib builds -Patch0005: %{name}-rh825061.patch +Patch0005: glibc-rh825061.patch # Horrible hack, never to be upstreamed. Can go away once the world # has been rebuilt to use the new ld.so path. -Patch0006: %{name}-arm-hardfloat-3.patch +Patch0006: glibc-arm-hardfloat-3.patch # Needs to be sent upstream -Patch0008: %{name}-fedora-getrlimit-PLT.patch -Patch0009: %{name}-fedora-include-bits-ldbl.patch +Patch0008: glibc-fedora-getrlimit-PLT.patch +Patch0009: glibc-fedora-include-bits-ldbl.patch # stap, needs to be sent upstream -Patch0010: %{name}-stap-libm.patch +Patch0010: glibc-stap-libm.patch # Needs to be sent upstream -Patch0029: %{name}-rh841318.patch +Patch0029: glibc-rh841318.patch # All these were from the glibc-fedora.patch mega-patch and need another # round of reviewing. Ideally they'll either be submitted upstream or # dropped. -Patch0012: %{name}-fedora-linux-tcsetattr.patch -Patch0014: %{name}-fedora-nptl-linklibc.patch -Patch0015: %{name}-fedora-localedef.patch -Patch0016: %{name}-fedora-i386-tls-direct-seg-refs.patch -Patch0017: %{name}-fedora-gai-canonical.patch -Patch0019: %{name}-fedora-nis-rh188246.patch -Patch0020: %{name}-fedora-manual-dircategory.patch -Patch0024: %{name}-fedora-locarchive.patch -Patch0025: %{name}-fedora-streams-rh436349.patch -Patch0028: %{name}-fedora-localedata-rh61908.patch -Patch0030: %{name}-fedora-uname-getrlimit.patch -Patch0031: %{name}-fedora-__libc_multiple_libcs.patch -Patch0032: %{name}-fedora-elf-rh737223.patch -Patch0033: %{name}-fedora-elf-ORIGIN.patch -Patch0034: %{name}-fedora-elf-init-hidden_undef.patch +Patch0012: glibc-fedora-linux-tcsetattr.patch +Patch0014: glibc-fedora-nptl-linklibc.patch +Patch0015: glibc-fedora-localedef.patch +Patch0016: glibc-fedora-i386-tls-direct-seg-refs.patch +Patch0017: glibc-fedora-gai-canonical.patch +Patch0019: glibc-fedora-nis-rh188246.patch +Patch0020: glibc-fedora-manual-dircategory.patch +Patch0024: glibc-fedora-locarchive.patch +Patch0025: glibc-fedora-streams-rh436349.patch +Patch0028: glibc-fedora-localedata-rh61908.patch +Patch0030: glibc-fedora-uname-getrlimit.patch +Patch0031: glibc-fedora-__libc_multiple_libcs.patch +Patch0032: glibc-fedora-elf-rh737223.patch +Patch0033: glibc-fedora-elf-ORIGIN.patch +Patch0034: glibc-fedora-elf-init-hidden_undef.patch # Needs to be sent upstream -Patch0035: %{name}-rh911307.patch -Patch0036: %{name}-rh892777.patch -Patch0037: %{name}-rh952799.patch -Patch0038: %{name}-rh959034.patch -Patch0039: %{name}-rh970791.patch +Patch0035: glibc-rh911307.patch +Patch0036: glibc-rh892777.patch +Patch0037: glibc-rh952799.patch +Patch0038: glibc-rh959034.patch +Patch0039: glibc-rh970791.patch # GLIBC_PTHREAD_STACKSIZE - Needs to be upstreamed on top of the future # tunables framework. -Patch0040: %{name}-rh990388.patch -Patch0041: %{name}-rh990388-2.patch -Patch0042: %{name}-rh990388-3.patch -Patch0043: %{name}-rh990388-4.patch +Patch0040: glibc-rh990388.patch +Patch0041: glibc-rh990388-2.patch +Patch0042: glibc-rh990388-3.patch +Patch0043: glibc-rh990388-4.patch # Remove non-ELF support in rtkaio -Patch0044: %{name}-rh731833-rtkaio.patch -Patch0045: %{name}-rh731833-rtkaio-2.patch +Patch0044: glibc-rh731833-rtkaio.patch +Patch0045: glibc-rh731833-rtkaio-2.patch -# Add -fstack-protector-strong support. -Patch0048: %{name}-rh1070806.patch +# Add -fstack-protector-strong support. +Patch0048: glibc-rh1070806.patch -Patch0060: %{name}-aa64-commonpagesize-64k.patch +Patch0060: glibc-aa64-commonpagesize-64k.patch -Patch0061: %{name}-rh1133812-1.patch +Patch0061: glibc-rh1133812-1.patch -Patch0062: %{name}-cs-path.patch +Patch0062: glibc-cs-path.patch # Use __int128_t in link.h to support older compilers. -Patch0063: %{name}-rh1120490-int128.patch +Patch0063: glibc-rh1120490-int128.patch -# EMBARGOED!!! -- EMBARGOED!!! --- EMBARGOED!!! -# EMBARGOED!!! -- EMBARGOED!!! --- EMBARGOED!!! -# EMBARGOED!!! -- EMBARGOED!!! --- EMBARGOED!!! -# CVE-2014-8121: -Patch0064: glibc-rh1165192.patch -# EMBARGOED!!! -- EMBARGOED!!! --- EMBARGOED!!! -# EMBARGOED!!! -- EMBARGOED!!! --- EMBARGOED!!! -# EMBARGOED!!! -- EMBARGOED!!! --- EMBARGOED!!! +# Workaround to extend DTV_SURPLUS. Not to go upstream. +Patch0066: glibc-rh1227699.patch ############################################################################## # @@ -218,127 +207,137 @@ Patch0064: glibc-rh1165192.patch # ############################################################################## -Patch1000: %{name}-rh905877.patch -Patch1001: %{name}-rh958652.patch -Patch1002: %{name}-rh977870.patch -Patch1003: %{name}-rh977872.patch -Patch1004: %{name}-rh977874.patch -Patch1005: %{name}-rh977875.patch -Patch1006: %{name}-rh977887.patch -Patch1007: %{name}-rh977887-2.patch -Patch1008: %{name}-rh980323.patch -Patch1009: %{name}-rh984828.patch -Patch1010: %{name}-rh966633.patch +Patch1000: glibc-rh905877.patch +Patch1001: glibc-rh958652.patch +Patch1002: glibc-rh977870.patch +Patch1003: glibc-rh977872.patch +Patch1004: glibc-rh977874.patch +Patch1005: glibc-rh977875.patch +Patch1006: glibc-rh977887.patch +Patch1007: glibc-rh977887-2.patch +Patch1008: glibc-rh980323.patch +Patch1009: glibc-rh984828.patch +Patch1010: glibc-rh966633.patch # Additional backports from upstream to fix problems caused by # -ftree-loop-distribute-patterns -Patch1011: %{name}-rh911307-2.patch -Patch1012: %{name}-rh911307-3.patch +Patch1011: glibc-rh911307-2.patch +Patch1012: glibc-rh911307-3.patch # PowerPC backports -Patch1013: %{name}-rh977110.patch -Patch1014: %{name}-rh977110-2.patch +Patch1013: glibc-rh977110.patch +Patch1014: glibc-rh977110-2.patch # HWCAPS2 support and POWER8 additions to it -Patch1015: %{name}-rh731833-hwcap.patch -Patch1016: %{name}-rh731833-hwcap-2.patch -Patch1017: %{name}-rh731833-hwcap-3.patch -Patch1018: %{name}-rh731833-hwcap-4.patch -Patch1019: %{name}-rh731833-hwcap-5.patch +Patch1015: glibc-rh731833-hwcap.patch +Patch1016: glibc-rh731833-hwcap-2.patch +Patch1017: glibc-rh731833-hwcap-3.patch +Patch1018: glibc-rh731833-hwcap-4.patch +Patch1019: glibc-rh731833-hwcap-5.patch # Miscellaneous fixes for PowerPC -Patch1020: %{name}-rh731833-misc.patch -Patch1021: %{name}-rh731833-misc-2.patch -Patch1022: %{name}-rh731833-misc-3.patch -Patch1023: %{name}-rh731833-misc-4.patch -Patch1024: %{name}-rh731833-misc-5.patch -Patch1025: %{name}-rh731833-misc-6.patch +Patch1020: glibc-rh731833-misc.patch +Patch1021: glibc-rh731833-misc-2.patch +Patch1022: glibc-rh731833-misc-3.patch +Patch1023: glibc-rh731833-misc-4.patch +Patch1024: glibc-rh731833-misc-5.patch +Patch1025: glibc-rh731833-misc-6.patch # Math fixes for PowerPC -Patch1026: %{name}-rh731833-libm.patch -Patch1027: %{name}-rh731833-libm-2.patch -Patch1028: %{name}-rh731833-libm-3.patch -Patch1029: %{name}-rh731833-libm-4.patch -Patch1030: %{name}-rh731833-libm-5.patch -Patch1031: %{name}-rh731833-libm-6.patch -Patch1032: %{name}-rh731833-libm-7.patch - -Patch1033: %{name}-rh992727.patch -Patch1034: %{name}-rh996227.patch -Patch1035: %{name}-rh1000923.patch -Patch1036: %{name}-rh884008.patch -Patch1037: %{name}-rh1008298.patch +Patch1026: glibc-rh731833-libm.patch +Patch1027: glibc-rh731833-libm-2.patch +Patch1028: glibc-rh731833-libm-3.patch +Patch1029: glibc-rh731833-libm-4.patch +Patch1030: glibc-rh731833-libm-5.patch +Patch1031: glibc-rh731833-libm-6.patch +Patch1032: glibc-rh731833-libm-7.patch + +Patch1034: glibc-rh996227.patch +Patch1035: glibc-rh1000923.patch +Patch1036: glibc-rh884008.patch +Patch1037: glibc-rh1008298.patch # Add support for rtlddir distinct from slibdir. -Patch1038: %{name}-rh950093.patch -Patch1039: %{name}-rh1025612.patch -Patch1040: %{name}-rh1032435.patch -Patch1041: %{name}-rh1020637.patch +Patch1038: glibc-rh950093.patch +Patch1039: glibc-rh1025612.patch +Patch1040: glibc-rh1032435.patch +Patch1041: glibc-rh1020637.patch # Power value increase for MINSIGSTKSZ and SIGSTKSZ. -Patch1042: %{name}-rh1028652.patch +Patch1042: glibc-rh1028652.patch -# Upstream BZ 15601 -Patch1043: %{name}-rh1039496.patch +# Upstream BZ 15601 +Patch1043: glibc-rh1039496.patch -Patch1044: %{name}-rh1047983.patch +Patch1044: glibc-rh1047983.patch -Patch1045: %{name}-rh1064945.patch +Patch1045: glibc-rh1064945.patch # Patch to update the manual to say SunRPC AUTH_DES will prevent FIPS 140-2 # compliance. -Patch1046: %{name}-rh971589.patch +Patch1046: glibc-rh971589.patch # Patch to update translation for stale file handle error. # Only libc.pot part is sent upstream, the only valid part # since upstream translations are done by the TP. -Patch1047: %{name}-rh981332.patch +Patch1047: glibc-rh981332.patch # Upstream BZ 9954 -Patch1048: %{name}-rh739743.patch +Patch1048: glibc-rh739743.patch # Upstream BZ 13028 -Patch1049: %{name}-rh841787.patch +Patch1049: glibc-rh841787.patch # Systemtap malloc probes -Patch1050: %{name}-rh742038.patch +Patch1050: glibc-rh742038.patch # Upstream BZ 15006 -Patch1051: %{name}-rh905184.patch +Patch1051: glibc-rh905184.patch # Upstream BZ 14256 -Patch1052: %{name}-rh966259.patch +Patch1052: glibc-rh966259.patch # Upstream BZ 15362 -Patch1053: %{name}-rh979363.patch +Patch1053: glibc-rh979363.patch # Upstream BZ 14547 -Patch1054: %{name}-rh989862.patch -Patch1055: %{name}-rh989862-2.patch -Patch1056: %{name}-rh989862-3.patch -Patch1057: %{name}-rh989861.patch +Patch1054: glibc-rh989862.patch +Patch1055: glibc-rh989862-2.patch +Patch1056: glibc-rh989862-3.patch +Patch1057: glibc-rh989861.patch # Upstream s390/s390x bug fixes -Patch1058: %{name}-rh804768-bugfix.patch +Patch1058: glibc-rh804768-bugfix.patch # Upstream BZ 15754 -Patch1059: %{name}-rh990481-CVE-2013-4788.patch +Patch1059: glibc-rh990481-CVE-2013-4788.patch # Upstream BZ 16366 -Patch1060: %{name}-rh1039970.patch +Patch1060: glibc-rh1039970.patch # Upstream BZ 16365 -Patch1061: %{name}-rh1046199.patch +Patch1061: glibc-rh1046199.patch # Upstream BZ 16532 -Patch1062: %{name}-rh1063681.patch +Patch1062: glibc-rh1063681.patch # Upstream BZ 16680 -Patch1063: %{name}-rh1074410.patch +Patch1063: glibc-rh1074410.patch # PPC64LE Patch Set: +# abilist-pattern configurability Patch1064: glibc-ppc64le-01.patch + +# PowerPC: powerpc64le abilist for 2.17 Patch1065: glibc-ppc64le-02.patch + +# Update miscellaneous scripts from upstream. Patch1066: glibc-ppc64le-03.patch + +# IBM long double mechanical changes to support little-endian Patch1067: glibc-ppc64le-04.patch + +# Fix for [BZ #15680] IBM long double inaccuracy Patch1068: glibc-ppc64le-05.patch + +# PowerPC floating point little-endian [1-15 of 15] Patch1069: glibc-ppc64le-06.patch Patch1070: glibc-ppc64le-07.patch Patch1071: glibc-ppc64le-08.patch @@ -354,31 +353,83 @@ Patch1080: glibc-ppc64le-17.patch Patch1081: glibc-ppc64le-18.patch Patch1082: glibc-ppc64le-19.patch Patch1083: glibc-ppc64le-20.patch + +# PowerPC LE setjmp/longjmp Patch1084: glibc-ppc64le-21.patch + +# PowerPC ugly symbol versioning Patch1085: glibc-ppc64le-22.patch + +# PowerPC LE _dl_hwcap access Patch1086: glibc-ppc64le-23.patch + +# PowerPC makecontext Patch1087: glibc-ppc64le-24.patch + +# PowerPC LE strlen Patch1088: glibc-ppc64le-25.patch + +# PowerPC LE strnlen Patch1089: glibc-ppc64le-26.patch + +# PowerPC LE strcmp and strncmp Patch1090: glibc-ppc64le-27.patch + +# PowerPC LE strcpy Patch1091: glibc-ppc64le-28.patch + +# PowerPC LE strchr Patch1092: glibc-ppc64le-29.patch + +# PowerPC LE memcmp Patch1093: glibc-ppc64le-30.patch + +# PowerPC LE memcpy Patch1094: glibc-ppc64le-31.patch + +# PowerPC LE memset Patch1095: glibc-ppc64le-32.patch + +# PowerPC LE memchr and memrchr Patch1096: glibc-ppc64le-33.patch + +# PowerPC LE configury Patch1097: glibc-ppc64le-34.patch + +# PowerPC64: Fix incorrect CFI in *context routines Patch1098: glibc-ppc64le-35.patch + +# PowerPC64: Report overflow on @h and @ha relocations Patch1099: glibc-ppc64le-36.patch + +# PowerPC64: Add __private_ss field to TCB header Patch1100: glibc-ppc64le-37.patch + +# PowerPC64 ELFv2 ABI 1/6: Code refactoring Patch1101: glibc-ppc64le-38.patch + +# PowerPC64 ELFv2 ABI 2/6: Remove function descriptors Patch1102: glibc-ppc64le-39.patch + +# PowerPC64 ELFv2 ABI 3/6: PLT local entry point optimization Patch1103: glibc-ppc64le-40.patch + +# PowerPC64 ELFv2 ABI 4/6: Stack frame layout changes Patch1104: glibc-ppc64le-41.patch + +# PowerPC64 ELFv2 ABI 5/6: LD_AUDIT interface changes Patch1105: glibc-ppc64le-42.patch + +# PowerPC64 ELFv2 ABI 6/6: Bump ld.so soname version number Patch1106: glibc-ppc64le-43.patch + +# Fix s_copysign stack temp for PowerPC64 ELFv2 [BZ #16786] Patch1107: glibc-ppc64le-44.patch + +# PPC64LE only Versions.def change. Patch1108: glibc-ppc64le-45.patch + +# powerpc/fpu/libm-test-ulps tan() round-toward-zero fixup. Patch1109: glibc-ppc64le-46.patch # End of PPC64LE patch set. # Leave room up to 1120 for ppc64le patches. @@ -389,115 +440,218 @@ Patch1109: glibc-ppc64le-46.patch # factored out and applied for both to use. Patch1110: glibc-powerpc-ldbl_high.patch -# Backport fixes for power math ULP changes. -Patch1121: glibc-power-libm-test-ulps.patch +# RH BZ #1186491: disable inlining in math tests to work around +# a GCC bug. +Patch1112: glibc-rh1186491.patch + # Backport the write buffer size adjustment to match newer kernels. Patch1122: glibc-fix-test-write-buf-size.patch +Patch1123: glibc-rh1248208.patch +Patch1124: glibc-rh1248208-2.patch + # Upstream BZ #14142 # Required RHEL 7.1 BZ #1067754 -Patch1499: %{name}-rh1067755.patch +Patch1499: glibc-rh1067755.patch # Acadia BZ #1070458 -Patch1500: %{name}-rh1070458.patch +Patch1500: glibc-rh1070458.patch # Upstream BZ #15036 # Acadia BZ #1070471 -Patch1501: %{name}-rh1070471.patch +Patch1501: glibc-rh1070471.patch # Upstream BZ #16169 # Acadia BZ #1078225 -Patch1502: %{name}-rh1078225.patch +Patch1502: glibc-rh1078225.patch # Upstream BZ #16629 -- plus a bit extra -Patch1503: %{name}-aa64-setcontext.patch +Patch1503: glibc-aa64-setcontext.patch Patch1504: glibc-aarch64-add-ptr_mangle-support.patch Patch1505: glibc-aarch64-fpu-optional-trapping-exceptions.patch Patch1506: glibc-aarch64-syscall-rewrite.patch Patch1508: glibc-aarch64-ifunc.patch -Patch1509: %{name}-rh1133812-2.patch -Patch1510: %{name}-rh1133812-3.patch +Patch1509: glibc-rh1133812-2.patch +Patch1510: glibc-rh1133812-3.patch -Patch1511: %{name}-rh1083647.patch -Patch1512: %{name}-rh1085290.patch -Patch1513: %{name}-rh1083644.patch -Patch1514: %{name}-rh1083646.patch +Patch1511: glibc-rh1083647.patch +Patch1512: glibc-rh1085290.patch +Patch1513: glibc-rh1083644.patch +Patch1514: glibc-rh1083646.patch -Patch1515: %{name}-rh1103856.patch -Patch1516: %{name}-rh1080766.patch -Patch1517: %{name}-rh1103874.patch -Patch1518: %{name}-rh1125306.patch -Patch1519: %{name}-rh1098047.patch -Patch1520: %{name}-rh1138520.patch -Patch1521: %{name}-rh1085313.patch -Patch1522: %{name}-rh1140474.patch +Patch1515: glibc-rh1103856.patch +Patch1516: glibc-rh1080766.patch +Patch1517: glibc-rh1103874.patch +Patch1518: glibc-rh1125306.patch +Patch1519: glibc-rh1098047.patch +Patch1520: glibc-rh1138520.patch +Patch1521: glibc-rh1085313.patch +Patch1522: glibc-rh1140474.patch # Backport multi-lib support in GLIBC for PowerPC using IFUNC -Patch1530: %{name}-rh731837-00.patch -Patch1531: %{name}-rh731837-01.patch -Patch1532: %{name}-rh731837-02.patch -Patch1533: %{name}-rh731837-03.patch -Patch1534: %{name}-rh731837-04.patch -Patch1535: %{name}-rh731837-05.patch -Patch1536: %{name}-rh731837-06.patch -Patch1537: %{name}-rh731837-07.patch -Patch1538: %{name}-rh731837-08.patch -Patch1539: %{name}-rh731837-09.patch -Patch1540: %{name}-rh731837-10.patch -Patch1541: %{name}-rh731837-11.patch -Patch1542: %{name}-rh731837-12.patch -Patch1543: %{name}-rh731837-13.patch -Patch1544: %{name}-rh731837-14.patch -Patch1545: %{name}-rh731837-15.patch -Patch1546: %{name}-rh731837-16.patch -Patch1547: %{name}-rh731837-17.patch -Patch1548: %{name}-rh731837-18.patch -Patch1549: %{name}-rh731837-19.patch -Patch1550: %{name}-rh731837-20.patch -Patch1551: %{name}-rh731837-21.patch -Patch1552: %{name}-rh731837-22.patch -Patch1553: %{name}-rh731837-23.patch -Patch1554: %{name}-rh731837-24.patch -Patch1555: %{name}-rh731837-25.patch -Patch1556: %{name}-rh731837-26.patch -Patch1557: %{name}-rh731837-27.patch -Patch1558: %{name}-rh731837-28.patch -Patch1559: %{name}-rh731837-29.patch -Patch1560: %{name}-rh731837-30.patch -Patch1561: %{name}-rh731837-31.patch -Patch1562: %{name}-rh731837-32.patch -Patch1563: %{name}-rh731837-33.patch -Patch1564: %{name}-rh731837-34.patch -Patch1565: %{name}-rh731837-35.patch -Patch1566: %{name}-rh731837-33A.patch -Patch1567: %{name}-rh731837-36.patch +Patch1530: glibc-rh731837-00.patch +Patch1531: glibc-rh731837-01.patch +Patch1532: glibc-rh731837-02.patch +Patch1533: glibc-rh731837-03.patch +Patch1534: glibc-rh731837-04.patch +Patch1535: glibc-rh731837-05.patch +Patch1536: glibc-rh731837-06.patch +Patch1537: glibc-rh731837-07.patch +Patch1538: glibc-rh731837-08.patch +Patch1539: glibc-rh731837-09.patch +Patch1540: glibc-rh731837-10.patch +Patch1541: glibc-rh731837-11.patch +Patch1542: glibc-rh731837-12.patch +Patch1543: glibc-rh731837-13.patch +Patch1544: glibc-rh731837-14.patch +Patch1545: glibc-rh731837-15.patch +Patch1546: glibc-rh731837-16.patch +Patch1547: glibc-rh731837-17.patch +Patch1548: glibc-rh731837-18.patch +Patch1549: glibc-rh731837-19.patch +Patch1550: glibc-rh731837-20.patch +Patch1551: glibc-rh731837-21.patch +Patch1552: glibc-rh731837-22.patch +Patch1553: glibc-rh731837-23.patch +Patch1554: glibc-rh731837-24.patch +Patch1555: glibc-rh731837-25.patch +Patch1556: glibc-rh731837-26.patch +Patch1557: glibc-rh731837-27.patch +Patch1558: glibc-rh731837-28.patch +Patch1559: glibc-rh731837-29.patch +Patch1560: glibc-rh731837-30.patch +Patch1561: glibc-rh731837-31.patch +Patch1562: glibc-rh731837-32.patch +Patch1563: glibc-rh731837-33.patch +Patch1564: glibc-rh731837-34.patch +Patch1565: glibc-rh731837-35.patch +Patch1566: glibc-rh731837-33A.patch +Patch1567: glibc-rh731837-36.patch # Intel AVX-512 support. -Patch1570: %{name}-rh1140272-avx512.patch +Patch1570: glibc-rh1140272-avx512.patch # Intel MPX support. -Patch1571: %{name}-rh1132518-mpx.patch +Patch1571: glibc-rh1132518-mpx.patch # glibc manual update. -Patch1572: %{name}-manual-update.patch +Patch1572: glibc-manual-update.patch -Patch1573: %{name}-rh1120490.patch +Patch1573: glibc-rh1120490.patch # Fix ppc64le relocation handling: -Patch1574: %{name}-rh1162847-p1.patch -Patch1575: %{name}-rh1162847-p2.patch +Patch1574: glibc-rh1162847-p1.patch +Patch1575: glibc-rh1162847-p2.patch # CVE-2014-7817 -Patch1576: %{name}-rh1170118-CVE-2014-7817.patch +Patch1576: glibc-rh1170118-CVE-2014-7817.patch # Provide artificial OPDs for ppc64 VDSO functions. -Patch1577: %{name}-rh1077389-p1.patch +Patch1577: glibc-rh1077389-p1.patch # BZ#16431 -Patch1578: %{name}-rh1077389-p2.patch -# BZ#16037 - Allow GNU Make version 4.0 and up to be used. -Patch1579: %{name}-gmake.patch +Patch1578: glibc-rh1077389-p2.patch +# BZ#16037 - Allow GNU Make version 4.0 and up to be used. +Patch1579: glibc-gmake.patch + +Patch1580: glibc-rh1183545.patch + +Patch1581: glibc-rh1064066.patch + +# RHBZ #1165212 - [SAP] Recursive dlopen causes SAP HANA installer +# to crash +# including RHBZ #1225959 - Test suite failure: tst-rec-dlopen fails +Patch1582: glibc-rh1165212.patch +# BZ#17411 +Patch1583: glibc-rh1144133.patch + +# BZ#12100 - QoI regression: strstr() slowed from O(n) to O(n^2) +# on SSE4 machines +# but mainly RHBZ #1150282 - glibc-2.17-55 crashes sqlplus +Patch1584: glibc-rh1150282.patch +# BZ#13862 +Patch1585: glibc-rh1189278.patch +Patch1586: glibc-rh1189278-1.patch +# BZ#17892 +Patch1587: glibc-rh1183456.patch +# BZ#14841 +Patch1588: glibc-rh1186620.patch + +# BZ#16878 - nscd enters busy loop on long netgroup entry via nss_ldap +# of nslcd +Patch1589: glibc-rh1173537.patch + +# BZ#14906: inotify failed when /etc/hosts file change +Patch1590: glibc-rh1193797.patch +# RHBZ #1173238 - `check-abi-librtkaio' not performed during +# make check after building glibc +Patch1591: glibc-rh1173238.patch + +Patch1592: glibc-rh1207032.patch + +Patch1593: glibc-rh1176906.patch +Patch1594: glibc-rh1159169.patch +Patch1595: glibc-rh1098042.patch +Patch1596: glibc-rh1194143.patch +Patch1597: glibc-rh1219891.patch + +# RHBZ #1209107 - CVE-2015-1781 CVE-2015-1473 CVE-2015-1472 glibc: +# various flaws [rhel-7.2] +# * RHBZ #1188235 - (CVE-2015-1472) CVE-2015-1472 glibc: heap buffer +# overflow in glibc swscanf +# upstream #16618 - wscanf allocates too little memory +# (CVE-2015-1472, CVE-2015-1473) +Patch1598: glibc-rh1188235.patch +# +# * RHBZ #1195762 - glibc: _IO_wstr_overflow integer overflow +# upstream #16009 - Possible buffer overflow in strxfrm +Patch1599: glibc-rh1195762.patch +# +# * RHBZ #1197730 - glibc: potential denial of service in internal_fnmatch() +# upstream #17062 - fnmatch: buffer overflow read from pattern +# "[[:alpha:]'[:alpha:]" +Patch1600: glibc-rh1197730-1.patch +# upstream #18032 - buffer overflow (read past end of buffer) in +# internal_fnmatch +Patch1601: glibc-rh1197730-2.patch +# upstream #18036 - buffer overflow (read past end of buffer) +# in internal_fnmatch=>end_pattern with "**(!()" pattern +Patch1602: glibc-rh1197730-3.patch +# +# * RHBZ #1199525 - (CVE-2015-1781) CVE-2015-1781 glibc: buffer overflow +# in gethostbyname_r() and related functions with +# misaligned buffer +# upstream #18287 - (CVE-2015-1781) - Buffer overflow in getanswer_r, +# resolv/nss_dns/dns-host.c (CVE-2015-1781) +Patch1603: glibc-rh1199525.patch +# +# RHBZ #1162895 - Backport upstream ppc64 and ppc64le enhancements +# * upstream #17153 - Shared libraries built with multiple tocs resolve +# plt to local function entry +Patch1604: glibc-rh1162895-1.patch +# +# * upstream #16740 - IBM long double frexpl wrong when value slightly +# smaller than a power of two +# * upstream #16619 - [ldbl-128ibm] frexpl bad results on some denormal +# arguments +Patch1605: glibc-rh1162895-2.patch +# +# * upstream #16739 - IBM long double nextafterl wrong on power of two value +Patch1606: glibc-rh1162895-3.patch +# RHBZ #1214326 - Upstream benchtests/ rebase +# RHBZ #1084395 - Run pythong scripts with $(PYTHON). +Patch1607: glibc-rh1084395.patch + +# CVE-2014-8121: +Patch1608: glibc-rh1165192.patch + +# BZ #17090, BZ #17620, BZ #17621, BZ #17628 +Patch1609: glibc-rh1202952.patch + +# BZ #15234: +Patch1610: glibc-rh1234622.patch -Patch1580: %{name}-rh1183545.patch +# Fix 32-bit POWER assembly to use only 32-bit instructions. +Patch1611: glibc-rh1240796.patch ############################################################################## # @@ -511,48 +665,50 @@ Patch1580: %{name}-rh1183545.patch # http://sourceware.org/ml/libc-alpha/2012-12/msg00103.html # Not upstream as of 2014-02-27 -Patch2007: %{name}-rh697421.patch +Patch2007: glibc-rh697421.patch # Not upstream as of 2014-02-27 -Patch2011: %{name}-rh757881.patch +Patch2011: glibc-rh757881.patch # Not upstream as of 2014-02-27 -Patch2013: %{name}-rh741105.patch +Patch2013: glibc-rh741105.patch # Upstream BZ 14247 # Not upstream as of 2014-02-27. -Patch2023: %{name}-rh827510.patch +Patch2023: glibc-rh827510.patch # Upstream BZ 14185 # Not upstream as of 2014-02-27. -Patch2027: %{name}-rh819430.patch +Patch2027: glibc-rh819430.patch # Fix nscd to use permission names not constants. # Not upstream as of 2014-02-27. -Patch2048: %{name}-rh1025934.patch +Patch2048: glibc-rh1025934.patch # Upstream BZ 16398. -Patch2051: %{name}-rh1048036.patch -Patch2052: %{name}-rh1048123.patch +Patch2051: glibc-rh1048036.patch +Patch2052: glibc-rh1048123.patch # Upstream BZ 16680 -Patch2053: %{name}-rh1074410-2.patch +Patch2053: glibc-rh1074410-2.patch # Upstream BZ 15493. # Upstream as of 2013-03-20 -Patch2055: %{name}-rh1073667.patch +Patch2055: glibc-rh1073667.patch -Patch2060: %{name}-aarch64-rh1076760.patch -Patch2061: %{name}-aarch64-dont-alloc-static-tls-for-TLS_DESC.patch +Patch2060: glibc-aarch64-rh1076760.patch # Include pthread.h in rtkaio/tst-aiod2.c and rtkaio/tst-aiod3.c. -Patch2062: %{name}-rtkaio-inc-pthread.patch +Patch2062: glibc-rtkaio-inc-pthread.patch -Patch2063: %{name}-rh1084089.patch +Patch2063: glibc-rh1084089.patch -Patch2064: %{name}-rh1161666.patch +Patch2064: glibc-rh1161666.patch -Patch2065: %{name}-rh1156331.patch +Patch2065: glibc-rh1156331.patch + +# Upstream BZ 18557: Fix ruserok scalability issues. +Patch2066: glibc-rh1216246.patch ############################################################################## # End of glibc patches. @@ -586,9 +742,7 @@ Requires(pre): basesystem, libgcc BuildRequires: gd-devel libpng-devel zlib-devel texinfo, libselinux-devel >= 1.33.4-3 BuildRequires: audit-libs-devel >= 1.1.3, sed >= 3.95, libcap-devel, gettext, nss-devel BuildRequires: /bin/ps, /bin/kill, /bin/awk -%ifarch %{systemtaparches} BuildRequires: systemtap-sdt-devel -%endif # This is needed to get the _tmpfilesdir macro we use for nscd. BuildRequires: systemd @@ -615,7 +769,7 @@ Conflicts: kernel < %{enablekernel} %ifarch ppc %{power64} BuildRequires: binutils >= 2.20.51.0.2 Conflicts: binutils < 2.20.51.0.2 -%else +%else %ifarch s390 s390x # Needed for STT_GNU_IFUNC support for s390/390x BuildRequires: binutils >= 2.23.52.0.1-8 @@ -714,6 +868,13 @@ which is highly discouraged. ############################################################################## # glibc "headers" sub-package +# - The headers package includes all common headers that are shared amongst +# the multilib builds. It was created to reduce the download size, and +# thus avoid downloading one header package per multilib. The package is +# identical both in content and file list, any difference is an error. +# Files like gnu/stubs.h which have gnu/stubs-32.h (i686) and gnu/stubs-64.h +# are included in glibc-headers, but the -32 and -64 files are in their +# respective i686 and x86_64 devel packages. ############################################################################## %package headers Summary: Header files for development using standard C libraries. @@ -902,7 +1063,7 @@ package or when debugging this package. %patch0041 -p1 %patch0042 -p1 %patch0043 -p1 -%patch1050 -p0 +%patch1050 -p1 %patch1011 -p1 %patch1012 -p1 %patch1013 -p1 @@ -925,7 +1086,6 @@ package or when debugging this package. %patch1030 -p1 %patch1031 -p1 %patch1032 -p1 -%patch1033 -p1 %patch0044 -p1 %patch0045 -p1 %patch1047 -p1 @@ -956,9 +1116,10 @@ package or when debugging this package. %patch2053 -p1 # Apply ldbl_high() patch for both ppc64le and ppc64. %patch1110 -p1 + # PPC64LE Patch set: -# 1064 to 1108. -%ifarch ppc64le +# 1064 to 1109. + %patch1064 -p1 %patch1065 -p1 %patch1066 -p1 @@ -1005,13 +1166,10 @@ package or when debugging this package. %patch1107 -p1 %patch1108 -p1 %patch1109 -p1 -%else -# Some patches are different on !ppc64le, but only because the ppc64le patches -# change things and require a slightly different patch. At present this is -# becuase libm-test-ulps is shared between ppc64le and normal ppc64/ppc. This -# means we have to keep two distinct patches to apply to either "branch." -%patch1121 -p1 -%endif + +%patch1112 -p1 +# End of PPC64LE Patch Set. + %patch1122 -p1 %patch2055 -p1 %patch1499 -p1 @@ -1022,7 +1180,6 @@ package or when debugging this package. %patch1504 -p1 %patch1505 -p1 %patch2060 -p1 -%patch2061 -p1 %patch1506 -p1 %patch1508 -p1 %patch2062 -p1 @@ -1082,12 +1239,7 @@ package or when debugging this package. %patch1565 -p1 # Apply fixup patch for -33 in the series to make it LE safe. %patch1566 -p1 -%ifarch ppc64le -# On ppc64le add LOCALENTRY() to all IFUNC functions to materialize the TOC. -# Don't do this in general because LOCALENTRY() depends on ELFv2 patches which -# we don't apply for ppc64. %patch1567 -p1 -%endif # End of IBM IFUNC patch set. %patch1570 -p1 %patch1571 -p1 @@ -1095,18 +1247,50 @@ package or when debugging this package. %patch1573 -p1 %patch0063 -p1 %patch2064 -p1 -%ifarch ppc64le -# On ppc64le the relocation handling needs fixing. %patch1574 -p1 %patch1575 -p1 -%endif %patch2065 -p1 %patch1576 -p1 %patch1577 -p1 %patch1578 -p1 -%patch0064 -p1 +%patch1608 -p1 %patch1579 -p1 %patch1580 -p1 +%patch1581 -p1 +%patch1582 -p1 +%patch1583 -p1 +%patch1584 -p1 +%patch1585 -p1 +%patch1586 -p1 +%patch1587 -p1 +%patch1588 -p1 +%patch1589 -p1 +%patch1590 -p1 +%patch1591 -p1 +%patch1592 -p1 +%patch1593 -p1 +%patch1594 -p1 +%patch1595 -p1 +%patch1596 -p1 +%patch1597 -p1 +%patch0066 -p1 +%patch1598 -p1 +%patch1599 -p1 +%patch1600 -p1 +%patch1601 -p1 +%patch1602 -p1 +%patch1603 -p1 +%patch1604 -p1 +%patch1605 -p1 +%patch1606 -p1 +%patch2066 -p1 +# Rebase of microbenchmarks. +%patch1607 -p1 +%patch1609 -p1 +%patch1610 -p1 +%patch1611 -p1 +%patch1123 -p1 +%patch1124 -p1 ############################################################################## # %%prep - Additional prep required... @@ -1215,7 +1399,7 @@ EnableKernel="--enable-kernel=%{enablekernel}" # Save the used compiler and options into the file "Gcc" for use later # by %%install. echo "$GCC" > Gcc -AddOns=`echo */configure | sed -e 's!/configure!!g;s!\(linuxthreads\|nptl\|rtkaio\|powerpc-cpu\)\( \|$\)!!g;s! \+$!!;s! !,!g;s!^!,!;/^,\*$/d'` +AddOns=`echo */configure | sed -e 's!/configure!!g;s!\(nptl\|rtkaio\|powerpc-cpu\)\( \|$\)!!g;s! \+$!!;s! !,!g;s!^!,!;/^,\*$/d'` %ifarch %{rtkaioarches} AddOns=,rtkaio$AddOns %endif @@ -1247,9 +1431,7 @@ configure_CFLAGS="$build_CFLAGS -fno-asynchronous-unwind-tables" --enable-multi-arch \ %endif --enable-obsolete-rpc \ -%ifarch %{systemtaparches} --enable-systemtap \ -%endif %ifarch ppc %{power64} %ifnarch ppc64le --with-cpu=power7 \ @@ -1648,13 +1830,18 @@ done # Put the info files into the devel file list. grep '%{_infodir}' < rpm.filelist | grep -v '%{_infodir}/dir' > devel.filelist -# Put the stub headers into the devel file list. -grep '%{_prefix}/include/gnu/stubs-[32164]\+\.h' < rpm.filelist >> devel.filelist || : +# The glibc-headers package includes only common files which are identical +# across all multilib packages. We must keep gnu/stubs.h and gnu/lib-names.h +# in the glibc-headers package, but the -32, -64, -64-v1, and -64-v2 versions +# go into the development packages. +grep '%{_prefix}/include/gnu/stubs-.*\.h$' < rpm.filelist >> devel.filelist || : +grep '%{_prefix}/include/gnu/lib-names-.*\.h$' < rpm.filelist >> devel.filelist || : # Put the include files into headers file list. -grep '%{_prefix}/include' < rpm.filelist | - egrep -v '%{_prefix}/include/(linuxthreads|gnu/stubs-[32164]+\.h)' \ - > headers.filelist +grep '%{_prefix}/include' < rpm.filelist \ + | egrep -v '%{_prefix}/include/gnu/stubs-.*\.h$' \ + | egrep -v '%{_prefix}/include/gnu/lib-names-.*\.h$' \ + > headers.filelist # Remove partial (lib*_p.a) static libraries, include files, and info files from # the core glibc package. @@ -1677,12 +1864,11 @@ grep '%{_prefix}/%{_lib}/lib.*\.a' < rpm.filelist \ grep '%{_prefix}/%{_lib}/.*\.o' < rpm.filelist >> devel.filelist grep '%{_prefix}/%{_lib}/lib.*\.so' < rpm.filelist >> devel.filelist -# Remove all of the static, object, unversioned DSOs, old linuxthreads stuff, -# and nscd from the core glibc package. +# Remove all of the static, object, unversioned DSOs, and nscd from the core +# glibc package. sed -i -e '\|%{_prefix}/%{_lib}/lib.*\.a|d' \ -e '\|%{_prefix}/%{_lib}/.*\.o|d' \ -e '\|%{_prefix}/%{_lib}/lib.*\.so|d' \ - -e '\|%{_prefix}/%{_lib}/linuxthreads|d' \ -e '\|nscd|d' rpm.filelist # All of the bin and certain sbin files go into the common package. @@ -2174,6 +2360,116 @@ rm -f *.filelist* %endif %changelog +* Wed Oct 28 2015 Florian Weimer - 2.17-106.1 +- Rebuild with corrected release. + +* Wed Oct 28 2015 Florian Weimer - 2.17-106 +- Add fix for CVE-2015-5277 (#1275920). + +* Fri Aug 14 2015 Siddhesh Poyarekar - 2.17-105 +- Fix up test case for initial-exec fix (#1248208). + +* Wed Aug 5 2015 Siddhesh Poyarekar - 2.17-104 +- Mark all TLS variables in libc.so as initial-exec (#1248208). + +* Sat Jul 11 2015 Siddhesh Poyarekar - 2.17-103 +- Apply correct fix for #1195672. + +* Fri Jul 10 2015 Carlos O'Donell - 2.17-102 +- Remove workaround for kernel netlink bug (#1089836). +- Use only 32-bit instructions in optimized 32-bit POWER functions (#1240796). + +* Mon Jun 22 2015 Carlos O'Donell - 2.17-101 +- Correct the AArch64 ABI baseline for libpthread (#1234622). + +* Mon Jun 22 2015 Martin Sebor - 2.17-100 +- Prevent tst-rec-dlopen from intermittently failing in parallel + builds due to a missing makefile dependency (#1225959). + +* Sat Jun 20 2015 Carlos O'Donell - 2.17-99 +- Increase AArch64 TLS descriptor performance (#1202952). + +* Sat Jun 20 2015 Carlos O'Donell - 2.17-98 +- Move arch-specific header files from glibc-headers to glibc-devel (#1230328). + +* Sat Jun 20 2015 Carlos O'Donell - 2.17-97 +- Rebase high-precision timing support for microbenchmark (#1214326). + +* Fri Jun 19 2015 Carlos O'Donell - 2.17-96 +- Rebase microbenchmarks from upstream for performance testing (#1214326) +- Fix running microbenchmark script bench.pl from source (#1084395) + +* Thu Jun 18 2015 Carlos O'Donell - 2.17-95 +- Enable systemtap support for all architectures (#1225490). + +* Thu Jun 18 2015 Carlos O'Donell - 2.17-94 +- Fix ruserok API scalability issues (#1216246). + +* Tue Jun 16 2015 Martin Sebor - 2.17-93 +- Backport fixes and enhancements for ppc64 and ppc64le (#1162895). + - Correct DT_PPC64_NUM in elf/elf.h. + - Correct IBM long double frexpl. + - Correct IBM long double nextafterl. + +* Fri Jun 12 2015 Martin Sebor - 2.17-92 +- Backport fixes for various security flaws (#1209107): + - Prevent heap buffer overflow in swscanf (CVE-2015-1472, CVE-2015-1473, + #1188235). + - Prevent integer overflow in _IO_wstr_overflow (#1195762). + - Prevent potential denial of service in internal_fnmatch (#1197730). + - Prevent buffer overflow in gethostbyname_r and related functions + with misaligned buffer (CVE-2015-1781, #1199525). + +* Fri Jun 5 2015 Carlos O'Donell - 2.17-91 +- Allow more shared libraries with static TLS to be loaded (#1227699). + +* Fri May 29 2015 Siddhesh Poyarekar - 2.17-90 +- Work around kernel netlink bug on some specialized hardware setup (#1089836). +- Fix invalid file descriptor reuse when sending DNS query + (CVE-2013-7423, #1194143). +- Sync netinet/tcp.h with the kernel (#1219891). + +* Thu May 28 2015 Siddhesh Poyarekar - 2.17-89 +- Avoid deadlock in malloc on backtrace (#1207032). +- Actually test iconv modules (#1176906). +- Use calloc to allocate xports (#1159169). +- Return EAI_AGAIN for AF_UNSPEC when herrno is TRY_AGAIN (#1098042). + +* Wed May 27 2015 Martin Sebor - 2.17-88 +- Add librtkaio.abilist generated by make update-abi (#1173238). + +* Fri May 15 2015 Martin Sebor - 2.18-87 +- Enhance nscd inotify support (#1193797). + +* Fri May 15 2015 Martin Sebor - 2.17-86 +- Use NSS_STATUS_TRYAGAIN to indicate insufficient buffer (#1173537). + +* Thu May 14 2015 Marek Polacek - 2.17-85 +- Skip logging for DNSSEC responses (#1186620). +- Also apply the RHEL6.7 Makerules patch (#1189278). + +* Tue May 5 2015 Marek Polacek - 2.17-84 +- Initialize nscd stats data (#1183456). + +* Mon Apr 27 2015 Marek Polacek - 2.17-83 +- Resize DTV if the current DTV isn't big enough (#1189278). + +* Sun Apr 26 2015 Martin Sebor - 2.17-82 +- Backport an alternate implementation of strstr and strcasestr for + x86 that doesn't use the stack for temporaries requiring 16-byte + alignment (#1150282). + +* Wed Apr 15 2015 Marek Polacek - 2.17-81 +- Fix recursive dlopen() (#1165212). +- Correctly size profiling reloc table (#1144133). + +* Thu Apr 9 2015 Martin Sebor - 2.17-80 +- Work around a suspected gcc 4.8 bug (#1064066). + +* Mon Jan 26 2015 Martin Sebor - 2.17-79 +- Restructure spec file to unconditionally apply ppc64le support (#1182355). +- Fix test failure in test-ildoubl on ppc64 (#1186491). + * Mon Jan 19 2015 Carlos O'Donell - 2.17-78 - Fix ppc64le builds (#1077389).