diff --git a/Avoid-ldbl-96-stack-corruption-from-range-reduction-.patch b/Avoid-ldbl-96-stack-corruption-from-range-reduction-.patch deleted file mode 100644 index 09522fa248daaec9f3d5b85a7696ddbb01e67d76..0000000000000000000000000000000000000000 --- a/Avoid-ldbl-96-stack-corruption-from-range-reduction-.patch +++ /dev/null @@ -1,126 +0,0 @@ -From 9f997ceca28f0634ad78a1ca95b84265f7801ff4 Mon Sep 17 00:00:00 2001 -From: Joseph Myers -Date: Wed, 12 Feb 2020 23:31:56 +0000 -Subject: [PATCH] Avoid ldbl-96 stack corruption from range reduction of - pseudo-zero (bug 25487). - -Bug 25487 reports stack corruption in ldbl-96 sinl on a pseudo-zero -argument (an representation where all the significand bits, including -the explicit high bit, are zero, but the exponent is not zero, which -is not a valid representation for the long double type). - -Although this is not a valid long double representation, existing -practice in this area (see bug 4586, originally marked invalid but -subsequently fixed) is that we still seek to avoid invalid memory -accesses as a result, in case of programs that treat arbitrary binary -data as long double representations, although the invalid -representations of the ldbl-96 format do not need to be consistently -handled the same as any particular valid representation. - -This patch makes the range reduction detect pseudo-zero and unnormal -representations that would otherwise go to __kernel_rem_pio2, and -returns a NaN for them instead of continuing with the range reduction -process. (Pseudo-zero and unnormal representations whose unbiased -exponent is less than -1 have already been safely returned from the -function before this point without going through the rest of range -reduction.) Pseudo-zero representations would previously result in -the value passed to __kernel_rem_pio2 being all-zero, which is -definitely unsafe; unnormal representations would previously result in -a value passed whose high bit is zero, which might well be unsafe -since that is not a form of input expected by __kernel_rem_pio2. - -Tested for x86_64. - -(cherry picked from commit 9333498794cde1d5cca518badf79533a24114b6f) ---- - sysdeps/ieee754/ldbl-96/Makefile | 3 ++- - sysdeps/ieee754/ldbl-96/e_rem_pio2l.c | 12 +++++++++ - sysdeps/ieee754/ldbl-96/test-sinl-pseudo.c | 41 ++++++++++++++++++++++++++++++ - 4 files changed, 60 insertions(+), 1 deletion(-) - create mode 100644 sysdeps/ieee754/ldbl-96/test-sinl-pseudo.c - -diff --git a/sysdeps/ieee754/ldbl-96/Makefile b/sysdeps/ieee754/ldbl-96/Makefile -index 995e90d..318628a 100644 ---- a/sysdeps/ieee754/ldbl-96/Makefile -+++ b/sysdeps/ieee754/ldbl-96/Makefile -@@ -17,5 +17,6 @@ - # . - - ifeq ($(subdir),math) --tests += test-canonical-ldbl-96 test-totalorderl-ldbl-96 -+tests += test-canonical-ldbl-96 test-totalorderl-ldbl-96 test-sinl-pseudo -+CFLAGS-test-sinl-pseudo.c += -fstack-protector-all - endif -diff --git a/sysdeps/ieee754/ldbl-96/e_rem_pio2l.c b/sysdeps/ieee754/ldbl-96/e_rem_pio2l.c -index 5f74232..bcdf201 100644 ---- a/sysdeps/ieee754/ldbl-96/e_rem_pio2l.c -+++ b/sysdeps/ieee754/ldbl-96/e_rem_pio2l.c -@@ -210,6 +210,18 @@ __ieee754_rem_pio2l (long double x, long double *y) - return 0; - } - -+ if ((i0 & 0x80000000) == 0) -+ { -+ /* Pseudo-zero and unnormal representations are not valid -+ representations of long double. We need to avoid stack -+ corruption in __kernel_rem_pio2, which expects input in a -+ particular normal form, but those representations do not need -+ to be consistently handled like any particular floating-point -+ value. */ -+ y[1] = y[0] = __builtin_nanl (""); -+ return 0; -+ } -+ - /* Split the 64 bits of the mantissa into three 24-bit integers - stored in a double array. */ - exp = j0 - 23; -diff --git a/sysdeps/ieee754/ldbl-96/test-sinl-pseudo.c b/sysdeps/ieee754/ldbl-96/test-sinl-pseudo.c -new file mode 100644 -index 0000000..f59b977 ---- /dev/null -+++ b/sysdeps/ieee754/ldbl-96/test-sinl-pseudo.c -@@ -0,0 +1,41 @@ -+/* Test sinl for pseudo-zeros and unnormals for ldbl-96 (bug 25487). -+ Copyright (C) 2020 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 int -+do_test (void) -+{ -+ for (int i = 0; i < 64; i++) -+ { -+ uint64_t sig = i == 63 ? 0 : 1ULL << i; -+ long double ld; -+ SET_LDOUBLE_WORDS (ld, 0x4141, -+ sig >> 32, sig & 0xffffffffULL); -+ /* The requirement is that no stack overflow occurs when the -+ pseudo-zero or unnormal goes through range reduction. */ -+ volatile long double ldr; -+ ldr = sinl (ld); -+ (void) ldr; -+ } -+ return 0; -+} -+ -+#include --- -2.7.4 - diff --git a/Disable-warnings-due-to-deprecated-libselinux-symbol.patch b/Disable-warnings-due-to-deprecated-libselinux-symbol.patch deleted file mode 100644 index 25e6d57da47fb86885a4fd208a0facf4a7ac14ba..0000000000000000000000000000000000000000 --- a/Disable-warnings-due-to-deprecated-libselinux-symbol.patch +++ /dev/null @@ -1,104 +0,0 @@ -From 04726be814c6fd6d9cf974e15d684dd3ac1a180e Mon Sep 17 00:00:00 2001 -From: Arjun Shankar -Date: Thu, 23 Jul 2020 12:20:38 +0200 -Subject: [PATCH] Disable warnings due to deprecated libselinux symbols used by - nss and nscd - -The SELinux API deprecated several symbols in its 3.1 release, including -security_context_t, matchpathcon, avc_init, and sidput, which are used in -makedb and nscd. While the usage of these should eventually be replaced by -newer interfaces, this commit disables GCC warnings due to the use of the -above symbols. - -Reviewed-by: Carlos O'Donell -Tested-by: Carlos O'Donell ---- - nscd/selinux.c | 15 +++++++++++++++ - nss/makedb.c | 9 +++++++++ - 2 files changed, 24 insertions(+) - -diff --git a/nscd/selinux.c b/nscd/selinux.c -index a4ea8008e2..1ebf924826 100644 ---- a/nscd/selinux.c -+++ b/nscd/selinux.c -@@ -33,6 +33,7 @@ - #ifdef HAVE_LIBAUDIT - # include - #endif -+#include - - #include "dbg_log.h" - #include "selinux.h" -@@ -320,6 +321,12 @@ avc_free_lock (void *lock) - } - - -+/* avc_init (along with several other symbols) was marked as deprecated by the -+ SELinux API starting from version 3.1. We use it here, but should -+ eventually switch to the newer API. */ -+DIAG_PUSH_NEEDS_COMMENT -+DIAG_IGNORE_NEEDS_COMMENT (10, "-Wdeprecated-declarations"); -+ - /* Initialize the user space access vector cache (AVC) for NSCD along with - log/thread/lock callbacks. */ - void -@@ -335,7 +342,14 @@ nscd_avc_init (void) - audit_init (); - #endif - } -+DIAG_POP_NEEDS_COMMENT -+ - -+/* security_context_t and sidput (along with several other symbols) were marked -+ as deprecated by the SELinux API starting from version 3.1. We use them -+ here, but should eventually switch to the newer API. */ -+DIAG_PUSH_NEEDS_COMMENT -+DIAG_IGNORE_NEEDS_COMMENT (10, "-Wdeprecated-declarations"); - - /* Check the permission from the caller (via getpeercon) to nscd. - Returns 0 if access is allowed, 1 if denied, and -1 on error. -@@ -422,6 +436,7 @@ out: - - return rc; - } -+DIAG_POP_NEEDS_COMMENT - - - /* Wrapper to get AVC statistics. */ -diff --git a/nss/makedb.c b/nss/makedb.c -index 8e389a1683..8e1e8ec9ad 100644 ---- a/nss/makedb.c -+++ b/nss/makedb.c -@@ -38,6 +38,7 @@ - #include - #include - #include "nss_db/nss_db.h" -+#include - - /* Get libc version number. */ - #include "../version.h" -@@ -841,6 +842,13 @@ print_database (int fd) - - - #ifdef HAVE_SELINUX -+ -+/* security_context_t and matchpathcon (along with several other symbols) were -+ marked as deprecated by the SELinux API starting from version 3.1. We use -+ them here, but should eventually switch to the newer API. */ -+DIAG_PUSH_NEEDS_COMMENT -+DIAG_IGNORE_NEEDS_COMMENT (10, "-Wdeprecated-declarations"); -+ - static void - set_file_creation_context (const char *outname, mode_t mode) - { -@@ -870,6 +878,7 @@ set_file_creation_context (const char *outname, mode_t mode) - freecon (ctx); - } - } -+DIAG_POP_NEEDS_COMMENT - - static void - reset_file_creation_context (void) --- -2.23.0 - diff --git a/Fix-CVE-2020-27618-iconv-Accept-redundant-shift-sequences.patch b/Fix-CVE-2020-27618-iconv-Accept-redundant-shift-sequences.patch deleted file mode 100644 index c26139f12fc95d99bf9bec65bd55ab237449124c..0000000000000000000000000000000000000000 --- a/Fix-CVE-2020-27618-iconv-Accept-redundant-shift-sequences.patch +++ /dev/null @@ -1,56 +0,0 @@ -From 9a99c682144bdbd40792ebf822fe9264e0376fb5 Mon Sep 17 00:00:00 2001 -From: Arjun Shankar -Date: Wed, 4 Nov 2020 12:19:38 +0100 -Subject: [PATCH] iconv: Accept redundant shift sequences in IBM1364 [BZ - #26224] - -The IBM1364, IBM1371, IBM1388, IBM1390 and IBM1399 character sets -share converter logic (iconvdata/ibm1364.c) which would reject -redundant shift sequences when processing input in these character -sets. This led to a hang in the iconv program (CVE-2020-27618). - -This commit adjusts the converter to ignore redundant shift sequences -and adds test cases for iconv_prog hangs that would be triggered upon -their rejection. This brings the implementation in line with other -converters that also ignore redundant shift sequences (e.g. IBM930 -etc., fixed in commit 692de4b3960d). - -Reviewed-by: Carlos O'Donell ---- - iconvdata/ibm1364.c | 14 ++------------ - 1 files changed, 2 insertions(+), 12 deletions(-) - -diff --git a/iconvdata/ibm1364.c b/iconvdata/ibm1364.c -index 49e7267ab45..521f0825b7f 100644 ---- a/iconvdata/ibm1364.c -+++ b/iconvdata/ibm1364.c -@@ -158,24 +158,14 @@ enum - \ - if (__builtin_expect (ch, 0) == SO) \ - { \ -- /* Shift OUT, change to DBCS converter. */ \ -- if (curcs == db) \ -- { \ -- result = __GCONV_ILLEGAL_INPUT; \ -- break; \ -- } \ -+ /* Shift OUT, change to DBCS converter (redundant escape okay). */ \ - curcs = db; \ - ++inptr; \ - continue; \ - } \ - if (__builtin_expect (ch, 0) == SI) \ - { \ -- /* Shift IN, change to SBCS converter. */ \ -- if (curcs == sb) \ -- { \ -- result = __GCONV_ILLEGAL_INPUT; \ -- break; \ -- } \ -+ /* Shift IN, change to SBCS converter (redundant escape okay). */ \ - curcs = sb; \ - ++inptr; \ - continue; \ --- -2.25.1 - diff --git a/Fix-CVE-2020-6096-001.patch b/Fix-CVE-2020-6096-001.patch deleted file mode 100644 index d3a3d67904e8e150b7d8fc2db0f889be765b8324..0000000000000000000000000000000000000000 --- a/Fix-CVE-2020-6096-001.patch +++ /dev/null @@ -1,189 +0,0 @@ -From 79a4fa341b8a89cb03f84564fd72abaa1a2db394 Mon Sep 17 00:00:00 2001 -From: Evgeny Eremin -Date: Wed, 8 Jul 2020 14:18:19 +0200 -Subject: [PATCH] arm: CVE-2020-6096: fix memcpy and memmove for negative - length [BZ #25620] - -Unsigned branch instructions could be used for r2 to fix the wrong -behavior when a negative length is passed to memcpy and memmove. -This commit fixes the generic arm implementation of memcpy amd memmove. ---- - sysdeps/arm/memcpy.S | 24 ++++++++++-------------- - sysdeps/arm/memmove.S | 24 ++++++++++-------------- - 2 files changed, 20 insertions(+), 28 deletions(-) - -diff --git a/sysdeps/arm/memcpy.S b/sysdeps/arm/memcpy.S -index 510e8adaf2..bcfbc51d99 100644 ---- a/sysdeps/arm/memcpy.S -+++ b/sysdeps/arm/memcpy.S -@@ -68,7 +68,7 @@ ENTRY(memcpy) - cfi_remember_state - - subs r2, r2, #4 -- blt 8f -+ blo 8f - ands ip, r0, #3 - PLD( pld [r1, #0] ) - bne 9f -@@ -82,7 +82,7 @@ ENTRY(memcpy) - cfi_rel_offset (r6, 4) - cfi_rel_offset (r7, 8) - cfi_rel_offset (r8, 12) -- blt 5f -+ blo 5f - - CALGN( ands ip, r1, #31 ) - CALGN( rsb r3, ip, #32 ) -@@ -98,9 +98,9 @@ ENTRY(memcpy) - #endif - - PLD( pld [r1, #0] ) --2: PLD( subs r2, r2, #96 ) -+2: PLD( cmp r2, #96 ) - PLD( pld [r1, #28] ) -- PLD( blt 4f ) -+ PLD( blo 4f ) - PLD( pld [r1, #60] ) - PLD( pld [r1, #92] ) - -@@ -108,9 +108,7 @@ ENTRY(memcpy) - 4: ldmia r1!, {r3, r4, r5, r6, r7, r8, ip, lr} - subs r2, r2, #32 - stmia r0!, {r3, r4, r5, r6, r7, r8, ip, lr} -- bge 3b -- PLD( cmn r2, #96 ) -- PLD( bge 4b ) -+ bhs 3b - - 5: ands ip, r2, #28 - rsb ip, ip, #32 -@@ -222,7 +220,7 @@ ENTRY(memcpy) - strbge r4, [r0], #1 - subs r2, r2, ip - strb lr, [r0], #1 -- blt 8b -+ blo 8b - ands ip, r1, #3 - beq 1b - -@@ -236,7 +234,7 @@ ENTRY(memcpy) - .macro forward_copy_shift pull push - - subs r2, r2, #28 -- blt 14f -+ blo 14f - - CALGN( ands ip, r1, #31 ) - CALGN( rsb ip, ip, #32 ) -@@ -253,9 +251,9 @@ ENTRY(memcpy) - cfi_rel_offset (r10, 16) - - PLD( pld [r1, #0] ) -- PLD( subs r2, r2, #96 ) -+ PLD( cmp r2, #96 ) - PLD( pld [r1, #28] ) -- PLD( blt 13f ) -+ PLD( blo 13f ) - PLD( pld [r1, #60] ) - PLD( pld [r1, #92] ) - -@@ -280,9 +278,7 @@ ENTRY(memcpy) - mov ip, ip, PULL #\pull - orr ip, ip, lr, PUSH #\push - stmia r0!, {r3, r4, r5, r6, r7, r8, r10, ip} -- bge 12b -- PLD( cmn r2, #96 ) -- PLD( bge 13b ) -+ bhs 12b - - pop {r5 - r8, r10} - cfi_adjust_cfa_offset (-20) -diff --git a/sysdeps/arm/memmove.S b/sysdeps/arm/memmove.S -index 954037ef3a..0d07b76ee6 100644 ---- a/sysdeps/arm/memmove.S -+++ b/sysdeps/arm/memmove.S -@@ -85,7 +85,7 @@ ENTRY(memmove) - add r1, r1, r2 - add r0, r0, r2 - subs r2, r2, #4 -- blt 8f -+ blo 8f - ands ip, r0, #3 - PLD( pld [r1, #-4] ) - bne 9f -@@ -99,7 +99,7 @@ ENTRY(memmove) - cfi_rel_offset (r6, 4) - cfi_rel_offset (r7, 8) - cfi_rel_offset (r8, 12) -- blt 5f -+ blo 5f - - CALGN( ands ip, r1, #31 ) - CALGN( sbcsne r4, ip, r2 ) @ C is always set here -@@ -114,9 +114,9 @@ ENTRY(memmove) - #endif - - PLD( pld [r1, #-4] ) --2: PLD( subs r2, r2, #96 ) -+2: PLD( cmp r2, #96 ) - PLD( pld [r1, #-32] ) -- PLD( blt 4f ) -+ PLD( blo 4f ) - PLD( pld [r1, #-64] ) - PLD( pld [r1, #-96] ) - -@@ -124,9 +124,7 @@ ENTRY(memmove) - 4: ldmdb r1!, {r3, r4, r5, r6, r7, r8, ip, lr} - subs r2, r2, #32 - stmdb r0!, {r3, r4, r5, r6, r7, r8, ip, lr} -- bge 3b -- PLD( cmn r2, #96 ) -- PLD( bge 4b ) -+ bhs 3b - - 5: ands ip, r2, #28 - rsb ip, ip, #32 -@@ -237,7 +235,7 @@ ENTRY(memmove) - strbge r4, [r0, #-1]! - subs r2, r2, ip - strb lr, [r0, #-1]! -- blt 8b -+ blo 8b - ands ip, r1, #3 - beq 1b - -@@ -251,7 +249,7 @@ ENTRY(memmove) - .macro backward_copy_shift push pull - - subs r2, r2, #28 -- blt 14f -+ blo 14f - - CALGN( ands ip, r1, #31 ) - CALGN( rsb ip, ip, #32 ) -@@ -268,9 +266,9 @@ ENTRY(memmove) - cfi_rel_offset (r10, 16) - - PLD( pld [r1, #-4] ) -- PLD( subs r2, r2, #96 ) -+ PLD( cmp r2, #96 ) - PLD( pld [r1, #-32] ) -- PLD( blt 13f ) -+ PLD( blo 13f ) - PLD( pld [r1, #-64] ) - PLD( pld [r1, #-96] ) - -@@ -295,9 +293,7 @@ ENTRY(memmove) - mov r4, r4, PUSH #\push - orr r4, r4, r3, PULL #\pull - stmdb r0!, {r4 - r8, r10, ip, lr} -- bge 12b -- PLD( cmn r2, #96 ) -- PLD( bge 13b ) -+ bhs 12b - - pop {r5 - r8, r10} - cfi_adjust_cfa_offset (-20) --- -2.19.1 - diff --git a/Fix-CVE-2020-6096-002.patch b/Fix-CVE-2020-6096-002.patch deleted file mode 100644 index 3d65faecc4ffe41266d1b3e44cd5bbeeba084e1c..0000000000000000000000000000000000000000 --- a/Fix-CVE-2020-6096-002.patch +++ /dev/null @@ -1,107 +0,0 @@ -From beea361050728138b82c57dda0c4810402d342b9 Mon Sep 17 00:00:00 2001 -From: Alexander Anisimov -Date: Wed, 8 Jul 2020 14:18:31 +0200 -Subject: [PATCH] arm: CVE-2020-6096: Fix multiarch memcpy for negative length - [BZ #25620] - -Unsigned branch instructions could be used for r2 to fix the wrong -behavior when a negative length is passed to memcpy. -This commit fixes the armv7 version. ---- - sysdeps/arm/armv7/multiarch/memcpy_impl.S | 22 +++++++++++----------- - 1 file changed, 11 insertions(+), 11 deletions(-) - -diff --git a/sysdeps/arm/armv7/multiarch/memcpy_impl.S b/sysdeps/arm/armv7/multiarch/memcpy_impl.S -index bf4ac7077f..379bb56fc9 100644 ---- a/sysdeps/arm/armv7/multiarch/memcpy_impl.S -+++ b/sysdeps/arm/armv7/multiarch/memcpy_impl.S -@@ -268,7 +268,7 @@ ENTRY(memcpy) - - mov dst, dstin /* Preserve dstin, we need to return it. */ - cmp count, #64 -- bge .Lcpy_not_short -+ bhs .Lcpy_not_short - /* Deal with small copies quickly by dropping straight into the - exit block. */ - -@@ -351,10 +351,10 @@ ENTRY(memcpy) - - 1: - subs tmp2, count, #64 /* Use tmp2 for count. */ -- blt .Ltail63aligned -+ blo .Ltail63aligned - - cmp tmp2, #512 -- bge .Lcpy_body_long -+ bhs .Lcpy_body_long - - .Lcpy_body_medium: /* Count in tmp2. */ - #ifdef USE_VFP -@@ -378,7 +378,7 @@ ENTRY(memcpy) - add src, src, #64 - vstr d1, [dst, #56] - add dst, dst, #64 -- bge 1b -+ bhs 1b - tst tmp2, #0x3f - beq .Ldone - -@@ -412,7 +412,7 @@ ENTRY(memcpy) - ldrd A_l, A_h, [src, #64]! - strd A_l, A_h, [dst, #64]! - subs tmp2, tmp2, #64 -- bge 1b -+ bhs 1b - tst tmp2, #0x3f - bne 1f - ldr tmp2,[sp], #FRAME_SIZE -@@ -482,7 +482,7 @@ ENTRY(memcpy) - add src, src, #32 - - subs tmp2, tmp2, #prefetch_lines * 64 * 2 -- blt 2f -+ blo 2f - 1: - cpy_line_vfp d3, 0 - cpy_line_vfp d4, 64 -@@ -494,7 +494,7 @@ ENTRY(memcpy) - add dst, dst, #2 * 64 - add src, src, #2 * 64 - subs tmp2, tmp2, #prefetch_lines * 64 -- bge 1b -+ bhs 1b - - 2: - cpy_tail_vfp d3, 0 -@@ -615,8 +615,8 @@ ENTRY(memcpy) - 1: - pld [src, #(3 * 64)] - subs count, count, #64 -- ldrmi tmp2, [sp], #FRAME_SIZE -- bmi .Ltail63unaligned -+ ldrlo tmp2, [sp], #FRAME_SIZE -+ blo .Ltail63unaligned - pld [src, #(4 * 64)] - - #ifdef USE_NEON -@@ -633,7 +633,7 @@ ENTRY(memcpy) - neon_load_multi d0-d3, src - neon_load_multi d4-d7, src - subs count, count, #64 -- bmi 2f -+ blo 2f - 1: - pld [src, #(4 * 64)] - neon_store_multi d0-d3, dst -@@ -641,7 +641,7 @@ ENTRY(memcpy) - neon_store_multi d4-d7, dst - neon_load_multi d4-d7, src - subs count, count, #64 -- bpl 1b -+ bhs 1b - 2: - neon_store_multi d0-d3, dst - neon_store_multi d4-d7, dst --- -2.19.1 - diff --git a/Fix-avx2-strncmp-offset-compare-condition-check-BZ-2.patch b/Fix-avx2-strncmp-offset-compare-condition-check-BZ-2.patch deleted file mode 100644 index a613744c23c669a40bd2f72f32c4234a1a0cf3b3..0000000000000000000000000000000000000000 --- a/Fix-avx2-strncmp-offset-compare-condition-check-BZ-2.patch +++ /dev/null @@ -1,52 +0,0 @@ -From 75870237ff3bb363447b03f4b0af100227570910 Mon Sep 17 00:00:00 2001 -From: Sunil K Pandey -Date: Fri, 12 Jun 2020 08:57:16 -0700 -Subject: [PATCH] Fix avx2 strncmp offset compare condition check [BZ #25933] - -strcmp-avx2.S: In avx2 strncmp function, strings are compared in -chunks of 4 vector size(i.e. 32x4=128 byte for avx2). After first 4 -vector size comparison, code must check whether it already passed -the given offset. This patch implement avx2 offset check condition -for strncmp function, if both string compare same for first 4 vector -size. ---- - sysdeps/x86_64/multiarch/strcmp-avx2.S | 15 +++++++++++++++ - 1 file changed, 15 insertions(+) - -diff --git a/sysdeps/x86_64/multiarch/strcmp-avx2.S b/sysdeps/x86_64/multiarch/strcmp-avx2.S -index 5f88a68262..d42b04b54f 100644 ---- a/sysdeps/x86_64/multiarch/strcmp-avx2.S -+++ b/sysdeps/x86_64/multiarch/strcmp-avx2.S -@@ -591,7 +591,14 @@ L(loop_cross_page_2_vec): - movl $(PAGE_SIZE / (VEC_SIZE * 4) - 1), %esi - - testq %rdi, %rdi -+# ifdef USE_AS_STRNCMP -+ /* At this point, if %rdi value is 0, it already tested -+ VEC_SIZE*4+%r10 byte starting from %rax. This label -+ checks whether strncmp maximum offset reached or not. */ -+ je L(string_nbyte_offset_check) -+# else - je L(back_to_loop) -+# endif - tzcntq %rdi, %rcx - addq %r10, %rcx - /* Adjust for number of bytes skipped. */ -@@ -627,6 +634,14 @@ L(loop_cross_page_2_vec): - VZEROUPPER - ret - -+# ifdef USE_AS_STRNCMP -+L(string_nbyte_offset_check): -+ leaq (VEC_SIZE * 4)(%r10), %r10 -+ cmpq %r10, %r11 -+ jbe L(zero) -+ jmp L(back_to_loop) -+# endif -+ - .p2align 4 - L(cross_page_loop): - /* Check one byte/dword at a time. */ --- -2.19.1 - diff --git a/Fix-double-free-in-__printf_fp_l-bug-26214.patch b/Fix-double-free-in-__printf_fp_l-bug-26214.patch deleted file mode 100644 index 996179ea2c1963260045d266d1b7781e67a9f32a..0000000000000000000000000000000000000000 --- a/Fix-double-free-in-__printf_fp_l-bug-26214.patch +++ /dev/null @@ -1,36 +0,0 @@ -From ede56038e50235cd1ca7de3602c9491d3b84b49b Mon Sep 17 00:00:00 2001 -From: Joseph Myers -Date: Thu, 9 Jul 2020 21:51:49 +0000 -Subject: [PATCH] Fix double free in __printf_fp_l (bug 26214). - -__printf_fp_l has a double free bug in the case where it allocates -memory with malloc internally, then has an I/O error while outputting -trailing padding and tries to free that already-freed memory when the -error occurs. This patch fixes this by setting the relevant pointer -to NULL after the first free (the only free of this pointer that isn't -immediately followed by returning from the function). - -note that this patch is parts of the origin one. - -Tested for x86_64 and x86. ---- - stdio-common/printf_fp.c | 3 +++ - 1 file changed, 3 insertions(+) - -diff --git a/stdio-common/printf_fp.c b/stdio-common/printf_fp.c -index 66ab59ba..c310eb8e 100644 ---- a/stdio-common/printf_fp.c -+++ b/stdio-common/printf_fp.c -@@ -1250,6 +1250,9 @@ __printf_fp_l (FILE *fp, locale_t loc, - { - free (buffer); - free (wbuffer); -+ /* Avoid a double free if the subsequent PADN encounters an -+ I/O error. */ -+ wbuffer = NULL; - } - } - --- -2.23.0 - diff --git a/Fix-memory-leak-in-__printf_fp_l-bug-26215.patch b/Fix-memory-leak-in-__printf_fp_l-bug-26215.patch deleted file mode 100644 index d88874631b8a0b3f3fdc6dbda8700482d5869034..0000000000000000000000000000000000000000 --- a/Fix-memory-leak-in-__printf_fp_l-bug-26215.patch +++ /dev/null @@ -1,87 +0,0 @@ -From 90663e9c814a919fa1fb41a878c06ef2fae58ed2 Mon Sep 17 00:00:00 2001 -From: Joseph Myers -Date: Thu, 9 Jul 2020 21:52:24 +0000 -Subject: [PATCH] Fix memory leak in __printf_fp_l (bug 26215). - -__printf_fp_l has a memory leak in the case of some I/O errors, where -both buffer and wbuffer have been malloced but the handling of I/O -errors only frees wbuffer. This patch fixes this by moving the -declaration of buffer to an outer scope and ensuring that it is freed -when wbuffer is freed. - -note that this patch is parts of the origin one. - -Tested for x86_64 and x86. ---- - stdio-common/printf_fp.c | 20 +++++++++++++++----- - 1 file changed, 15 insertions(+), 5 deletions(-) - -diff --git a/stdio-common/printf_fp.c b/stdio-common/printf_fp.c -index c310eb8e..b88e9cc6 100644 ---- a/stdio-common/printf_fp.c -+++ b/stdio-common/printf_fp.c -@@ -72,7 +72,10 @@ - if (putc (outc, fp) == EOF) \ - { \ - if (buffer_malloced) \ -- free (wbuffer); \ -+ { \ -+ free (buffer); \ -+ free (wbuffer); \ -+ } \ - return -1; \ - } \ - ++done; \ -@@ -87,7 +90,10 @@ - if (PUT (fp, wide ? (const char *) wptr : ptr, outlen) != outlen) \ - { \ - if (buffer_malloced) \ -- free (wbuffer); \ -+ { \ -+ free (buffer); \ -+ free (wbuffer); \ -+ } \ - return -1; \ - } \ - ptr += outlen; \ -@@ -110,7 +116,10 @@ - if (PAD (fp, ch, len) != len) \ - { \ - if (buffer_malloced) \ -- free (wbuffer); \ -+ { \ -+ free (buffer); \ -+ free (wbuffer); \ -+ } \ - return -1; \ - } \ - done += len; \ -@@ -259,7 +268,8 @@ __printf_fp_l (FILE *fp, locale_t loc, - - /* Buffer in which we produce the output. */ - wchar_t *wbuffer = NULL; -- /* Flag whether wbuffer is malloc'ed or not. */ -+ char *buffer = NULL; -+ /* Flag whether wbuffer and buffer are malloc'ed or not. */ - int buffer_malloced = 0; - - p.expsign = 0; -@@ -1172,7 +1182,6 @@ __printf_fp_l (FILE *fp, locale_t loc, - PADN ('0', width); - - { -- char *buffer = NULL; - char *buffer_end = NULL; - char *cp = NULL; - char *tmpptr; -@@ -1252,6 +1261,7 @@ __printf_fp_l (FILE *fp, locale_t loc, - free (wbuffer); - /* Avoid a double free if the subsequent PADN encounters an - I/O error. */ -+ buffer = NULL; - wbuffer = NULL; - } - } --- -2.23.0 - diff --git a/Fix-strtod-multiple-precision-division-bug-bug-26137.patch b/Fix-strtod-multiple-precision-division-bug-bug-26137.patch deleted file mode 100644 index 43bcf34938c16c61dd6b33884a0a52c07d88e365..0000000000000000000000000000000000000000 --- a/Fix-strtod-multiple-precision-division-bug-bug-26137.patch +++ /dev/null @@ -1,3646 +0,0 @@ -From 09555b9721d090f7917f8221be2613a4d6a9b0f6 Mon Sep 17 00:00:00 2001 -From: Joseph Myers -Date: Tue, 30 Jun 2020 23:04:06 +0000 -Subject: [PATCH] Fix strtod multiple-precision division bug (bug 26137). - -Bug 26137 reports spurious "inexact" exceptions from strtod, on 32-bit -systems only, for a decimal argument that is exactly 1 + 2^-32. In -fact the same issue also appears for 1 + 2^-64 and 1 + 2^-96 as -arguments to strtof128 on 32-bit systems, and 1 + 2^-64 as an argument -to strtof128 on 64-bit systems. In FE_DOWNWARD or FE_TOWARDZERO mode, -the return value is also incorrect. - -The problem is in the multiple-precision division logic used in the -case of dividing by a denominator that occupies at least three GMP -limbs. There was a comment "The division does not work if the upper -limb of the two-limb mumerator is greater than the denominator.", but -in fact there were problems for the case of equality (that is, where -the high limbs are equal, offset by some multiple of the GMP limb -size) as well. In such cases, the code used "quot = ~(mp_limb_t) 0;" -(with subsequent correction if that is an overestimate), because -udiv_qrnnd does not support the case of equality, but it's possible -for the shifted numerator to be greater than or equal to the -denominator, in which case that is an underestimate. To avoid that, -this patch changes the ">" condition to ">=", meaning the first -division is done with a zero high word. - -The tests added are all 1 + 2^-n for n from 1 to 113 except for those -that were already present in tst-strtod-round-data. - -Tested for x86_64 and x86. ---- - stdlib/strtod_l.c | 4 +- - stdlib/tst-strtod-round-data | 110 + - stdlib/tst-strtod-round-data.h | 3465 ++++++++++++++++++++++++++++++++ - 3 files changed, 3577 insertions(+), 2 deletions(-) - -diff --git a/stdlib/strtod_l.c b/stdlib/strtod_l.c -index a3836fc12e..158da787a2 100644 ---- a/stdlib/strtod_l.c -+++ b/stdlib/strtod_l.c -@@ -1648,8 +1648,8 @@ ____STRTOF_INTERNAL (const STRING_TYPE *nptr, STRING_TYPE **endptr, int group, - d1 = den[densize - 2]; - - /* The division does not work if the upper limb of the two-limb -- numerator is greater than the denominator. */ -- if (__mpn_cmp (num, &den[densize - numsize], numsize) > 0) -+ numerator is greater or equal to than the denominator. */ -+ if (__mpn_cmp (num, &den[densize - numsize], numsize) >= 0) - num[numsize++] = 0; - - if (numsize < densize) -diff --git a/stdlib/tst-strtod-round-data b/stdlib/tst-strtod-round-data -index 8a898ddb0e..84ab705709 100644 ---- a/stdlib/tst-strtod-round-data -+++ b/stdlib/tst-strtod-round-data -@@ -155,3 +155,113 @@ - -179769313486231590772930519078902473361797697894230657273430081157732675805500963132708477322407536021120113879871393357658789768814416622492847430639474124377767893424865485276302219601246094119453082952085005768838150682342462881473913110540827237163350510684586298239947245938479716304835356329624224137215 - -1189731495357231765085759326628007130763444687096510237472674821233261358180483686904488595472612039915115437484839309258897667381308687426274524698341565006080871634366004897522143251619531446845952345709482135847036647464830984784714280967845614138476044338404886122905286855313236158695999885790106357018120815363320780964323712757164290613406875202417365323950267880089067517372270610835647545755780793431622213451903817859630690311343850657539360649645193283178291767658965405285113556134369793281725888015908414675289832538063419234888599898980623114025121674472051872439321323198402942705341366951274739014593816898288994445173400364617928377138074411345791848573595077170437644191743889644885377684738322240608239079061399475675334739784016491742621485229014847672335977897158397334226349734811441653077758250988926030894789604676153104257260141806823027588003441951455327701598071281589597169413965608439504983171255062282026626200048042149808200002060993433681237623857880627479727072877482838438705048034164633337013385405998040701908662387301605018188262573723766279240798931717708807901740265407930976419648877869604017517691938687988088008944251258826969688364194133945780157844364946052713655454906327187428531895100278695119323496808703630436193927592692344820812834297364478686862064169042458555136532055050508189891866846863799917647547291371573500701015197559097453040033031520683518216494195636696077748110598284901343611469214274121810495077979275556645164983850062051066517084647369464036640569339464837172183352956873912042640003611618789278195710052094562761306703551840330110645101995435167626688669627763820604342480357906415354212732946756073006907088870496125050068156659252761297664065498347492661798824062312210409274584565587264846417650160123175874034726261957289081466197651553830744424709698634753627770356227126145052549125229448040149114795681359875968512808575244271871455454084894986155020794806980939215658055319165641681105966454159951476908583129721503298816585142073061480888021769818338417129396878371459575846052583142928447249703698548125295775920936450022651427249949580708203966082847550921891152133321048011973883636577825533325988852156325439335021315312134081390451021255363707903495916963125924201167877190108935255914539488216897117943269373608639074472792751116715127106396425081353553137213552890539802602978645319795100976432939091924660228878912900654210118287298298707382159717184569540515403029173307292454391789568674219640761451173600617752186991913366837033887201582071625868247133104513315097274713442728340606642890406496636104443217752811227470029162858093727701049646499540220983981932786613204254226464243689610107429923197638681545837561773535568984536053627234424277105760924864023781629665526314910906960488073475217005121136311870439925762508666032566213750416695719919674223210606724721373471234021613540712188239909701971943944347480314217903886317767779921539892177334344368907550318800833546852344370327089284147501640589448482001254237386680074457341910933774891959681016516069106149905572425810895586938833067490204900368624166301968553005687040285095450484840073528643826570403767157286512380255109954518857013476588189300004138849715883139866071547574816476727635116435462804401112711392529180570794193422686818353212799068972247697191474268157912195973794192807298886952361100880264258801320928040011928153970801130741339550003299015924978259936974358726286143980520112454369271114083747919007803406596321353417004068869443405472140675963640997405009225803505672726465095506267339268892424364561897661906898424186770491035344080399248327097911712881140170384182058601614758284200750183500329358499691864066590539660709069537381601887679046657759654588001937117771344698326428792622894338016112445533539447087462049763409147542099248815521395929388007711172017894897793706604273480985161028815458787911160979113422433557549170905442026397275695283207305331845419990749347810524006194197200591652147867193696254337864981603833146354201700628817947177518115217674352016511172347727727075220056177748218928597158346744541337107358427757919660562583883823262178961691787226118865632764934288772405859754877759869235530653929937901193611669007472354746360764601872442031379944139824366828698790212922996174192728625891720057612509349100482545964152046477925114446500732164109099345259799455690095576788686397487061948854749024863607921857834205793797188834779656273479112388585706424836379072355410286787018527401653934219888361061949671961055068686961468019035629749424086587195041004404915266476272761070511568387063401264136517237211409916458796347624949215904533937210937520465798300175408017538862312719042361037129338896586028150046596078872444365564480545689033575955702988396719744528212984142578483954005084264327730840985420021409069485412320805268520094146798876110414583170390473982488899228091818213934288295679717369943152460447027290669964066815 - +0x.80000000000000000000000000000001p1025 -+1.5 -+1.25 -+1.125 -+1.0625 -+1.03125 -+1.015625 -+1.0078125 -+1.00390625 -+1.001953125 -+1.0009765625 -+1.00048828125 -+1.000244140625 -+1.0001220703125 -+1.00006103515625 -+1.000030517578125 -+1.0000152587890625 -+1.00000762939453125 -+1.000003814697265625 -+1.0000019073486328125 -+1.00000095367431640625 -+1.000000476837158203125 -+1.0000000298023223876953125 -+1.00000001490116119384765625 -+1.000000007450580596923828125 -+1.0000000037252902984619140625 -+1.00000000186264514923095703125 -+1.000000000931322574615478515625 -+1.0000000004656612873077392578125 -+1.00000000023283064365386962890625 -+1.000000000116415321826934814453125 -+1.0000000000582076609134674072265625 -+1.00000000002910383045673370361328125 -+1.000000000014551915228366851806640625 -+1.0000000000072759576141834259033203125 -+1.00000000000363797880709171295166015625 -+1.000000000001818989403545856475830078125 -+1.0000000000009094947017729282379150390625 -+1.00000000000045474735088646411895751953125 -+1.000000000000227373675443232059478759765625 -+1.0000000000001136868377216160297393798828125 -+1.00000000000005684341886080801486968994140625 -+1.000000000000028421709430404007434844970703125 -+1.0000000000000142108547152020037174224853515625 -+1.00000000000000710542735760100185871124267578125 -+1.000000000000003552713678800500929355621337890625 -+1.0000000000000017763568394002504646778106689453125 -+1.00000000000000088817841970012523233890533447265625 -+1.000000000000000444089209850062616169452667236328125 -+1.0000000000000002220446049250313080847263336181640625 -+1.00000000000000011102230246251565404236316680908203125 -+1.000000000000000055511151231257827021181583404541015625 -+1.0000000000000000277555756156289135105907917022705078125 -+1.00000000000000001387778780781445675529539585113525390625 -+1.000000000000000006938893903907228377647697925567626953125 -+1.0000000000000000034694469519536141888238489627838134765625 -+1.00000000000000000173472347597680709441192448139190673828125 -+1.000000000000000000867361737988403547205962240695953369140625 -+1.0000000000000000004336808689942017736029811203479766845703125 -+1.00000000000000000021684043449710088680149056017398834228515625 -+1.000000000000000000108420217248550443400745280086994171142578125 -+1.0000000000000000000542101086242752217003726400434970855712890625 -+1.00000000000000000002710505431213761085018632002174854278564453125 -+1.000000000000000000013552527156068805425093160010874271392822265625 -+1.0000000000000000000067762635780344027125465800054371356964111328125 -+1.00000000000000000000338813178901720135627329000271856784820556640625 -+1.000000000000000000001694065894508600678136645001359283924102783203125 -+1.0000000000000000000008470329472543003390683225006796419620513916015625 -+1.00000000000000000000042351647362715016953416125033982098102569580078125 -+1.000000000000000000000211758236813575084767080625169910490512847900390625 -+1.0000000000000000000001058791184067875423835403125849552452564239501953125 -+1.00000000000000000000005293955920339377119177015629247762262821197509765625 -+1.000000000000000000000026469779601696885595885078146238811314105987548828125 -+1.0000000000000000000000132348898008484427979425390731194056570529937744140625 -+1.00000000000000000000000661744490042422139897126953655970282852649688720703125 -+1.000000000000000000000003308722450212110699485634768279851414263248443603515625 -+1.0000000000000000000000016543612251060553497428173841399257071316242218017578125 -+1.00000000000000000000000082718061255302767487140869206996285356581211090087890625 -+1.000000000000000000000000413590306276513837435704346034981426782906055450439453125 -+1.0000000000000000000000002067951531382569187178521730174907133914530277252197265625 -+1.00000000000000000000000010339757656912845935892608650874535669572651386260986328125 -+1.000000000000000000000000051698788284564229679463043254372678347863256931304931640625 -+1.0000000000000000000000000258493941422821148397315216271863391739316284656524658203125 -+1.00000000000000000000000001292469707114105741986576081359316958696581423282623291015625 -+1.000000000000000000000000006462348535570528709932880406796584793482907116413116455078125 -+1.0000000000000000000000000032311742677852643549664402033982923967414535582065582275390625 -+1.00000000000000000000000000161558713389263217748322010169914619837072677910327911376953125 -+1.000000000000000000000000000807793566946316088741610050849573099185363389551639556884765625 -+1.0000000000000000000000000004038967834731580443708050254247865495926816947758197784423828125 -+1.00000000000000000000000000020194839173657902218540251271239327479634084738790988922119140625 -+1.000000000000000000000000000100974195868289511092701256356196637398170423693954944610595703125 -+1.0000000000000000000000000000504870979341447555463506281780983186990852118469774723052978515625 -+1.00000000000000000000000000002524354896707237777317531408904915934954260592348873615264892578125 -+1.000000000000000000000000000012621774483536188886587657044524579674771302961744368076324462890625 -+1.0000000000000000000000000000063108872417680944432938285222622898373856514808721840381622314453125 -+1.00000000000000000000000000000315544362088404722164691426113114491869282574043609201908111572265625 -+1.000000000000000000000000000001577721810442023610823457130565572459346412870218046009540557861328125 -+1.0000000000000000000000000000007888609052210118054117285652827862296732064351090230047702789306640625 -+1.00000000000000000000000000000039443045261050590270586428264139311483660321755451150238513946533203125 -+1.000000000000000000000000000000197215226305252951352932141320696557418301608777255751192569732666015625 -+1.0000000000000000000000000000000986076131526264756764660706603482787091508043886278755962848663330078125 -+1.00000000000000000000000000000004930380657631323783823303533017413935457540219431393779814243316650390625 -+1.000000000000000000000000000000024651903288156618919116517665087069677287701097156968899071216583251953125 -+1.0000000000000000000000000000000123259516440783094595582588325435348386438505485784844495356082916259765625 -+1.00000000000000000000000000000000616297582203915472977912941627176741932192527428924222476780414581298828125 -+1.000000000000000000000000000000003081487911019577364889564708135883709660962637144621112383902072906494140625 -+1.0000000000000000000000000000000015407439555097886824447823540679418548304813185723105561919510364532470703125 -+1.00000000000000000000000000000000077037197775489434122239117703397092741524065928615527809597551822662353515625 -+1.000000000000000000000000000000000385185988877447170611195588516985463707620329643077639047987759113311767578125 -+1.0000000000000000000000000000000001925929944387235853055977942584927318538101648215388195239938795566558837890625 -+1.00000000000000000000000000000000009629649721936179265279889712924636592690508241076940976199693977832794189453125 -diff --git a/stdlib/tst-strtod-round-data.h b/stdlib/tst-strtod-round-data.h -index 5ac25f7b29..8899d15f9b 100644 ---- a/stdlib/tst-strtod-round-data.h -+++ b/stdlib/tst-strtod-round-data.h -@@ -11972,4 +11972,3469 @@ static const struct test tests[] = { - 0x1p+1024, false, - 0x1p+1024, false, - 0x1.0000000000000000000000000001p+1024, false), -+ TEST ("1.5", -+ true, -+ 0x1.8p+0, false, -+ 0x1.8p+0, false, -+ 0x1.8p+0, false, -+ 0x1.8p+0, false, -+ true, -+ 0x1.8p+0, false, -+ 0x1.8p+0, false, -+ 0x1.8p+0, false, -+ 0x1.8p+0, false, -+ true, -+ 0x1.8p+0, false, -+ 0x1.8p+0, false, -+ 0x1.8p+0, false, -+ 0x1.8p+0, false, -+ true, -+ 0x1.8p+0, false, -+ 0x1.8p+0, false, -+ 0x1.8p+0, false, -+ 0x1.8p+0, false, -+ true, -+ 0x1.8p+0, false, -+ 0x1.8p+0, false, -+ 0x1.8p+0, false, -+ 0x1.8p+0, false, -+ true, -+ 0x1.8p+0, false, -+ 0x1.8p+0, false, -+ 0x1.8p+0, false, -+ 0x1.8p+0, false), -+ TEST ("1.25", -+ true, -+ 0x1.4p+0, false, -+ 0x1.4p+0, false, -+ 0x1.4p+0, false, -+ 0x1.4p+0, false, -+ true, -+ 0x1.4p+0, false, -+ 0x1.4p+0, false, -+ 0x1.4p+0, false, -+ 0x1.4p+0, false, -+ true, -+ 0x1.4p+0, false, -+ 0x1.4p+0, false, -+ 0x1.4p+0, false, -+ 0x1.4p+0, false, -+ true, -+ 0x1.4p+0, false, -+ 0x1.4p+0, false, -+ 0x1.4p+0, false, -+ 0x1.4p+0, false, -+ true, -+ 0x1.4p+0, false, -+ 0x1.4p+0, false, -+ 0x1.4p+0, false, -+ 0x1.4p+0, false, -+ true, -+ 0x1.4p+0, false, -+ 0x1.4p+0, false, -+ 0x1.4p+0, false, -+ 0x1.4p+0, false), -+ TEST ("1.125", -+ true, -+ 0x1.2p+0, false, -+ 0x1.2p+0, false, -+ 0x1.2p+0, false, -+ 0x1.2p+0, false, -+ true, -+ 0x1.2p+0, false, -+ 0x1.2p+0, false, -+ 0x1.2p+0, false, -+ 0x1.2p+0, false, -+ true, -+ 0x1.2p+0, false, -+ 0x1.2p+0, false, -+ 0x1.2p+0, false, -+ 0x1.2p+0, false, -+ true, -+ 0x1.2p+0, false, -+ 0x1.2p+0, false, -+ 0x1.2p+0, false, -+ 0x1.2p+0, false, -+ true, -+ 0x1.2p+0, false, -+ 0x1.2p+0, false, -+ 0x1.2p+0, false, -+ 0x1.2p+0, false, -+ true, -+ 0x1.2p+0, false, -+ 0x1.2p+0, false, -+ 0x1.2p+0, false, -+ 0x1.2p+0, false), -+ TEST ("1.0625", -+ true, -+ 0x1.1p+0, false, -+ 0x1.1p+0, false, -+ 0x1.1p+0, false, -+ 0x1.1p+0, false, -+ true, -+ 0x1.1p+0, false, -+ 0x1.1p+0, false, -+ 0x1.1p+0, false, -+ 0x1.1p+0, false, -+ true, -+ 0x1.1p+0, false, -+ 0x1.1p+0, false, -+ 0x1.1p+0, false, -+ 0x1.1p+0, false, -+ true, -+ 0x1.1p+0, false, -+ 0x1.1p+0, false, -+ 0x1.1p+0, false, -+ 0x1.1p+0, false, -+ true, -+ 0x1.1p+0, false, -+ 0x1.1p+0, false, -+ 0x1.1p+0, false, -+ 0x1.1p+0, false, -+ true, -+ 0x1.1p+0, false, -+ 0x1.1p+0, false, -+ 0x1.1p+0, false, -+ 0x1.1p+0, false), -+ TEST ("1.03125", -+ true, -+ 0x1.08p+0, false, -+ 0x1.08p+0, false, -+ 0x1.08p+0, false, -+ 0x1.08p+0, false, -+ true, -+ 0x1.08p+0, false, -+ 0x1.08p+0, false, -+ 0x1.08p+0, false, -+ 0x1.08p+0, false, -+ true, -+ 0x1.08p+0, false, -+ 0x1.08p+0, false, -+ 0x1.08p+0, false, -+ 0x1.08p+0, false, -+ true, -+ 0x1.08p+0, false, -+ 0x1.08p+0, false, -+ 0x1.08p+0, false, -+ 0x1.08p+0, false, -+ true, -+ 0x1.08p+0, false, -+ 0x1.08p+0, false, -+ 0x1.08p+0, false, -+ 0x1.08p+0, false, -+ true, -+ 0x1.08p+0, false, -+ 0x1.08p+0, false, -+ 0x1.08p+0, false, -+ 0x1.08p+0, false), -+ TEST ("1.015625", -+ true, -+ 0x1.04p+0, false, -+ 0x1.04p+0, false, -+ 0x1.04p+0, false, -+ 0x1.04p+0, false, -+ true, -+ 0x1.04p+0, false, -+ 0x1.04p+0, false, -+ 0x1.04p+0, false, -+ 0x1.04p+0, false, -+ true, -+ 0x1.04p+0, false, -+ 0x1.04p+0, false, -+ 0x1.04p+0, false, -+ 0x1.04p+0, false, -+ true, -+ 0x1.04p+0, false, -+ 0x1.04p+0, false, -+ 0x1.04p+0, false, -+ 0x1.04p+0, false, -+ true, -+ 0x1.04p+0, false, -+ 0x1.04p+0, false, -+ 0x1.04p+0, false, -+ 0x1.04p+0, false, -+ true, -+ 0x1.04p+0, false, -+ 0x1.04p+0, false, -+ 0x1.04p+0, false, -+ 0x1.04p+0, false), -+ TEST ("1.0078125", -+ true, -+ 0x1.02p+0, false, -+ 0x1.02p+0, false, -+ 0x1.02p+0, false, -+ 0x1.02p+0, false, -+ true, -+ 0x1.02p+0, false, -+ 0x1.02p+0, false, -+ 0x1.02p+0, false, -+ 0x1.02p+0, false, -+ true, -+ 0x1.02p+0, false, -+ 0x1.02p+0, false, -+ 0x1.02p+0, false, -+ 0x1.02p+0, false, -+ true, -+ 0x1.02p+0, false, -+ 0x1.02p+0, false, -+ 0x1.02p+0, false, -+ 0x1.02p+0, false, -+ true, -+ 0x1.02p+0, false, -+ 0x1.02p+0, false, -+ 0x1.02p+0, false, -+ 0x1.02p+0, false, -+ true, -+ 0x1.02p+0, false, -+ 0x1.02p+0, false, -+ 0x1.02p+0, false, -+ 0x1.02p+0, false), -+ TEST ("1.00390625", -+ true, -+ 0x1.01p+0, false, -+ 0x1.01p+0, false, -+ 0x1.01p+0, false, -+ 0x1.01p+0, false, -+ true, -+ 0x1.01p+0, false, -+ 0x1.01p+0, false, -+ 0x1.01p+0, false, -+ 0x1.01p+0, false, -+ true, -+ 0x1.01p+0, false, -+ 0x1.01p+0, false, -+ 0x1.01p+0, false, -+ 0x1.01p+0, false, -+ true, -+ 0x1.01p+0, false, -+ 0x1.01p+0, false, -+ 0x1.01p+0, false, -+ 0x1.01p+0, false, -+ true, -+ 0x1.01p+0, false, -+ 0x1.01p+0, false, -+ 0x1.01p+0, false, -+ 0x1.01p+0, false, -+ true, -+ 0x1.01p+0, false, -+ 0x1.01p+0, false, -+ 0x1.01p+0, false, -+ 0x1.01p+0, false), -+ TEST ("1.001953125", -+ true, -+ 0x1.008p+0, false, -+ 0x1.008p+0, false, -+ 0x1.008p+0, false, -+ 0x1.008p+0, false, -+ true, -+ 0x1.008p+0, false, -+ 0x1.008p+0, false, -+ 0x1.008p+0, false, -+ 0x1.008p+0, false, -+ true, -+ 0x1.008p+0, false, -+ 0x1.008p+0, false, -+ 0x1.008p+0, false, -+ 0x1.008p+0, false, -+ true, -+ 0x1.008p+0, false, -+ 0x1.008p+0, false, -+ 0x1.008p+0, false, -+ 0x1.008p+0, false, -+ true, -+ 0x1.008p+0, false, -+ 0x1.008p+0, false, -+ 0x1.008p+0, false, -+ 0x1.008p+0, false, -+ true, -+ 0x1.008p+0, false, -+ 0x1.008p+0, false, -+ 0x1.008p+0, false, -+ 0x1.008p+0, false), -+ TEST ("1.0009765625", -+ true, -+ 0x1.004p+0, false, -+ 0x1.004p+0, false, -+ 0x1.004p+0, false, -+ 0x1.004p+0, false, -+ true, -+ 0x1.004p+0, false, -+ 0x1.004p+0, false, -+ 0x1.004p+0, false, -+ 0x1.004p+0, false, -+ true, -+ 0x1.004p+0, false, -+ 0x1.004p+0, false, -+ 0x1.004p+0, false, -+ 0x1.004p+0, false, -+ true, -+ 0x1.004p+0, false, -+ 0x1.004p+0, false, -+ 0x1.004p+0, false, -+ 0x1.004p+0, false, -+ true, -+ 0x1.004p+0, false, -+ 0x1.004p+0, false, -+ 0x1.004p+0, false, -+ 0x1.004p+0, false, -+ true, -+ 0x1.004p+0, false, -+ 0x1.004p+0, false, -+ 0x1.004p+0, false, -+ 0x1.004p+0, false), -+ TEST ("1.00048828125", -+ true, -+ 0x1.002p+0, false, -+ 0x1.002p+0, false, -+ 0x1.002p+0, false, -+ 0x1.002p+0, false, -+ true, -+ 0x1.002p+0, false, -+ 0x1.002p+0, false, -+ 0x1.002p+0, false, -+ 0x1.002p+0, false, -+ true, -+ 0x1.002p+0, false, -+ 0x1.002p+0, false, -+ 0x1.002p+0, false, -+ 0x1.002p+0, false, -+ true, -+ 0x1.002p+0, false, -+ 0x1.002p+0, false, -+ 0x1.002p+0, false, -+ 0x1.002p+0, false, -+ true, -+ 0x1.002p+0, false, -+ 0x1.002p+0, false, -+ 0x1.002p+0, false, -+ 0x1.002p+0, false, -+ true, -+ 0x1.002p+0, false, -+ 0x1.002p+0, false, -+ 0x1.002p+0, false, -+ 0x1.002p+0, false), -+ TEST ("1.000244140625", -+ true, -+ 0x1.001p+0, false, -+ 0x1.001p+0, false, -+ 0x1.001p+0, false, -+ 0x1.001p+0, false, -+ true, -+ 0x1.001p+0, false, -+ 0x1.001p+0, false, -+ 0x1.001p+0, false, -+ 0x1.001p+0, false, -+ true, -+ 0x1.001p+0, false, -+ 0x1.001p+0, false, -+ 0x1.001p+0, false, -+ 0x1.001p+0, false, -+ true, -+ 0x1.001p+0, false, -+ 0x1.001p+0, false, -+ 0x1.001p+0, false, -+ 0x1.001p+0, false, -+ true, -+ 0x1.001p+0, false, -+ 0x1.001p+0, false, -+ 0x1.001p+0, false, -+ 0x1.001p+0, false, -+ true, -+ 0x1.001p+0, false, -+ 0x1.001p+0, false, -+ 0x1.001p+0, false, -+ 0x1.001p+0, false), -+ TEST ("1.0001220703125", -+ true, -+ 0x1.0008p+0, false, -+ 0x1.0008p+0, false, -+ 0x1.0008p+0, false, -+ 0x1.0008p+0, false, -+ true, -+ 0x1.0008p+0, false, -+ 0x1.0008p+0, false, -+ 0x1.0008p+0, false, -+ 0x1.0008p+0, false, -+ true, -+ 0x1.0008p+0, false, -+ 0x1.0008p+0, false, -+ 0x1.0008p+0, false, -+ 0x1.0008p+0, false, -+ true, -+ 0x1.0008p+0, false, -+ 0x1.0008p+0, false, -+ 0x1.0008p+0, false, -+ 0x1.0008p+0, false, -+ true, -+ 0x1.0008p+0, false, -+ 0x1.0008p+0, false, -+ 0x1.0008p+0, false, -+ 0x1.0008p+0, false, -+ true, -+ 0x1.0008p+0, false, -+ 0x1.0008p+0, false, -+ 0x1.0008p+0, false, -+ 0x1.0008p+0, false), -+ TEST ("1.00006103515625", -+ true, -+ 0x1.0004p+0, false, -+ 0x1.0004p+0, false, -+ 0x1.0004p+0, false, -+ 0x1.0004p+0, false, -+ true, -+ 0x1.0004p+0, false, -+ 0x1.0004p+0, false, -+ 0x1.0004p+0, false, -+ 0x1.0004p+0, false, -+ true, -+ 0x1.0004p+0, false, -+ 0x1.0004p+0, false, -+ 0x1.0004p+0, false, -+ 0x1.0004p+0, false, -+ true, -+ 0x1.0004p+0, false, -+ 0x1.0004p+0, false, -+ 0x1.0004p+0, false, -+ 0x1.0004p+0, false, -+ true, -+ 0x1.0004p+0, false, -+ 0x1.0004p+0, false, -+ 0x1.0004p+0, false, -+ 0x1.0004p+0, false, -+ true, -+ 0x1.0004p+0, false, -+ 0x1.0004p+0, false, -+ 0x1.0004p+0, false, -+ 0x1.0004p+0, false), -+ TEST ("1.000030517578125", -+ true, -+ 0x1.0002p+0, false, -+ 0x1.0002p+0, false, -+ 0x1.0002p+0, false, -+ 0x1.0002p+0, false, -+ true, -+ 0x1.0002p+0, false, -+ 0x1.0002p+0, false, -+ 0x1.0002p+0, false, -+ 0x1.0002p+0, false, -+ true, -+ 0x1.0002p+0, false, -+ 0x1.0002p+0, false, -+ 0x1.0002p+0, false, -+ 0x1.0002p+0, false, -+ true, -+ 0x1.0002p+0, false, -+ 0x1.0002p+0, false, -+ 0x1.0002p+0, false, -+ 0x1.0002p+0, false, -+ true, -+ 0x1.0002p+0, false, -+ 0x1.0002p+0, false, -+ 0x1.0002p+0, false, -+ 0x1.0002p+0, false, -+ true, -+ 0x1.0002p+0, false, -+ 0x1.0002p+0, false, -+ 0x1.0002p+0, false, -+ 0x1.0002p+0, false), -+ TEST ("1.0000152587890625", -+ true, -+ 0x1.0001p+0, false, -+ 0x1.0001p+0, false, -+ 0x1.0001p+0, false, -+ 0x1.0001p+0, false, -+ true, -+ 0x1.0001p+0, false, -+ 0x1.0001p+0, false, -+ 0x1.0001p+0, false, -+ 0x1.0001p+0, false, -+ true, -+ 0x1.0001p+0, false, -+ 0x1.0001p+0, false, -+ 0x1.0001p+0, false, -+ 0x1.0001p+0, false, -+ true, -+ 0x1.0001p+0, false, -+ 0x1.0001p+0, false, -+ 0x1.0001p+0, false, -+ 0x1.0001p+0, false, -+ true, -+ 0x1.0001p+0, false, -+ 0x1.0001p+0, false, -+ 0x1.0001p+0, false, -+ 0x1.0001p+0, false, -+ true, -+ 0x1.0001p+0, false, -+ 0x1.0001p+0, false, -+ 0x1.0001p+0, false, -+ 0x1.0001p+0, false), -+ TEST ("1.00000762939453125", -+ true, -+ 0x1.00008p+0, false, -+ 0x1.00008p+0, false, -+ 0x1.00008p+0, false, -+ 0x1.00008p+0, false, -+ true, -+ 0x1.00008p+0, false, -+ 0x1.00008p+0, false, -+ 0x1.00008p+0, false, -+ 0x1.00008p+0, false, -+ true, -+ 0x1.00008p+0, false, -+ 0x1.00008p+0, false, -+ 0x1.00008p+0, false, -+ 0x1.00008p+0, false, -+ true, -+ 0x1.00008p+0, false, -+ 0x1.00008p+0, false, -+ 0x1.00008p+0, false, -+ 0x1.00008p+0, false, -+ true, -+ 0x1.00008p+0, false, -+ 0x1.00008p+0, false, -+ 0x1.00008p+0, false, -+ 0x1.00008p+0, false, -+ true, -+ 0x1.00008p+0, false, -+ 0x1.00008p+0, false, -+ 0x1.00008p+0, false, -+ 0x1.00008p+0, false), -+ TEST ("1.000003814697265625", -+ true, -+ 0x1.00004p+0, false, -+ 0x1.00004p+0, false, -+ 0x1.00004p+0, false, -+ 0x1.00004p+0, false, -+ true, -+ 0x1.00004p+0, false, -+ 0x1.00004p+0, false, -+ 0x1.00004p+0, false, -+ 0x1.00004p+0, false, -+ true, -+ 0x1.00004p+0, false, -+ 0x1.00004p+0, false, -+ 0x1.00004p+0, false, -+ 0x1.00004p+0, false, -+ true, -+ 0x1.00004p+0, false, -+ 0x1.00004p+0, false, -+ 0x1.00004p+0, false, -+ 0x1.00004p+0, false, -+ true, -+ 0x1.00004p+0, false, -+ 0x1.00004p+0, false, -+ 0x1.00004p+0, false, -+ 0x1.00004p+0, false, -+ true, -+ 0x1.00004p+0, false, -+ 0x1.00004p+0, false, -+ 0x1.00004p+0, false, -+ 0x1.00004p+0, false), -+ TEST ("1.0000019073486328125", -+ true, -+ 0x1.00002p+0, false, -+ 0x1.00002p+0, false, -+ 0x1.00002p+0, false, -+ 0x1.00002p+0, false, -+ true, -+ 0x1.00002p+0, false, -+ 0x1.00002p+0, false, -+ 0x1.00002p+0, false, -+ 0x1.00002p+0, false, -+ true, -+ 0x1.00002p+0, false, -+ 0x1.00002p+0, false, -+ 0x1.00002p+0, false, -+ 0x1.00002p+0, false, -+ true, -+ 0x1.00002p+0, false, -+ 0x1.00002p+0, false, -+ 0x1.00002p+0, false, -+ 0x1.00002p+0, false, -+ true, -+ 0x1.00002p+0, false, -+ 0x1.00002p+0, false, -+ 0x1.00002p+0, false, -+ 0x1.00002p+0, false, -+ true, -+ 0x1.00002p+0, false, -+ 0x1.00002p+0, false, -+ 0x1.00002p+0, false, -+ 0x1.00002p+0, false), -+ TEST ("1.00000095367431640625", -+ true, -+ 0x1.00001p+0, false, -+ 0x1.00001p+0, false, -+ 0x1.00001p+0, false, -+ 0x1.00001p+0, false, -+ true, -+ 0x1.00001p+0, false, -+ 0x1.00001p+0, false, -+ 0x1.00001p+0, false, -+ 0x1.00001p+0, false, -+ true, -+ 0x1.00001p+0, false, -+ 0x1.00001p+0, false, -+ 0x1.00001p+0, false, -+ 0x1.00001p+0, false, -+ true, -+ 0x1.00001p+0, false, -+ 0x1.00001p+0, false, -+ 0x1.00001p+0, false, -+ 0x1.00001p+0, false, -+ true, -+ 0x1.00001p+0, false, -+ 0x1.00001p+0, false, -+ 0x1.00001p+0, false, -+ 0x1.00001p+0, false, -+ true, -+ 0x1.00001p+0, false, -+ 0x1.00001p+0, false, -+ 0x1.00001p+0, false, -+ 0x1.00001p+0, false), -+ TEST ("1.000000476837158203125", -+ true, -+ 0x1.000008p+0, false, -+ 0x1.000008p+0, false, -+ 0x1.000008p+0, false, -+ 0x1.000008p+0, false, -+ true, -+ 0x1.000008p+0, false, -+ 0x1.000008p+0, false, -+ 0x1.000008p+0, false, -+ 0x1.000008p+0, false, -+ true, -+ 0x1.000008p+0, false, -+ 0x1.000008p+0, false, -+ 0x1.000008p+0, false, -+ 0x1.000008p+0, false, -+ true, -+ 0x1.000008p+0, false, -+ 0x1.000008p+0, false, -+ 0x1.000008p+0, false, -+ 0x1.000008p+0, false, -+ true, -+ 0x1.000008p+0, false, -+ 0x1.000008p+0, false, -+ 0x1.000008p+0, false, -+ 0x1.000008p+0, false, -+ true, -+ 0x1.000008p+0, false, -+ 0x1.000008p+0, false, -+ 0x1.000008p+0, false, -+ 0x1.000008p+0, false), -+ TEST ("1.0000000298023223876953125", -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.000002p+0, false, -+ true, -+ 0x1.0000008p+0, false, -+ 0x1.0000008p+0, false, -+ 0x1.0000008p+0, false, -+ 0x1.0000008p+0, false, -+ true, -+ 0x1.0000008p+0, false, -+ 0x1.0000008p+0, false, -+ 0x1.0000008p+0, false, -+ 0x1.0000008p+0, false, -+ true, -+ 0x1.0000008p+0, false, -+ 0x1.0000008p+0, false, -+ 0x1.0000008p+0, false, -+ 0x1.0000008p+0, false, -+ true, -+ 0x1.0000008p+0, false, -+ 0x1.0000008p+0, false, -+ 0x1.0000008p+0, false, -+ 0x1.0000008p+0, false, -+ true, -+ 0x1.0000008p+0, false, -+ 0x1.0000008p+0, false, -+ 0x1.0000008p+0, false, -+ 0x1.0000008p+0, false), -+ TEST ("1.00000001490116119384765625", -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.000002p+0, false, -+ true, -+ 0x1.0000004p+0, false, -+ 0x1.0000004p+0, false, -+ 0x1.0000004p+0, false, -+ 0x1.0000004p+0, false, -+ true, -+ 0x1.0000004p+0, false, -+ 0x1.0000004p+0, false, -+ 0x1.0000004p+0, false, -+ 0x1.0000004p+0, false, -+ true, -+ 0x1.0000004p+0, false, -+ 0x1.0000004p+0, false, -+ 0x1.0000004p+0, false, -+ 0x1.0000004p+0, false, -+ true, -+ 0x1.0000004p+0, false, -+ 0x1.0000004p+0, false, -+ 0x1.0000004p+0, false, -+ 0x1.0000004p+0, false, -+ true, -+ 0x1.0000004p+0, false, -+ 0x1.0000004p+0, false, -+ 0x1.0000004p+0, false, -+ 0x1.0000004p+0, false), -+ TEST ("1.000000007450580596923828125", -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.000002p+0, false, -+ true, -+ 0x1.0000002p+0, false, -+ 0x1.0000002p+0, false, -+ 0x1.0000002p+0, false, -+ 0x1.0000002p+0, false, -+ true, -+ 0x1.0000002p+0, false, -+ 0x1.0000002p+0, false, -+ 0x1.0000002p+0, false, -+ 0x1.0000002p+0, false, -+ true, -+ 0x1.0000002p+0, false, -+ 0x1.0000002p+0, false, -+ 0x1.0000002p+0, false, -+ 0x1.0000002p+0, false, -+ true, -+ 0x1.0000002p+0, false, -+ 0x1.0000002p+0, false, -+ 0x1.0000002p+0, false, -+ 0x1.0000002p+0, false, -+ true, -+ 0x1.0000002p+0, false, -+ 0x1.0000002p+0, false, -+ 0x1.0000002p+0, false, -+ 0x1.0000002p+0, false), -+ TEST ("1.0000000037252902984619140625", -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.000002p+0, false, -+ true, -+ 0x1.0000001p+0, false, -+ 0x1.0000001p+0, false, -+ 0x1.0000001p+0, false, -+ 0x1.0000001p+0, false, -+ true, -+ 0x1.0000001p+0, false, -+ 0x1.0000001p+0, false, -+ 0x1.0000001p+0, false, -+ 0x1.0000001p+0, false, -+ true, -+ 0x1.0000001p+0, false, -+ 0x1.0000001p+0, false, -+ 0x1.0000001p+0, false, -+ 0x1.0000001p+0, false, -+ true, -+ 0x1.0000001p+0, false, -+ 0x1.0000001p+0, false, -+ 0x1.0000001p+0, false, -+ 0x1.0000001p+0, false, -+ true, -+ 0x1.0000001p+0, false, -+ 0x1.0000001p+0, false, -+ 0x1.0000001p+0, false, -+ 0x1.0000001p+0, false), -+ TEST ("1.00000000186264514923095703125", -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.000002p+0, false, -+ true, -+ 0x1.00000008p+0, false, -+ 0x1.00000008p+0, false, -+ 0x1.00000008p+0, false, -+ 0x1.00000008p+0, false, -+ true, -+ 0x1.00000008p+0, false, -+ 0x1.00000008p+0, false, -+ 0x1.00000008p+0, false, -+ 0x1.00000008p+0, false, -+ true, -+ 0x1.00000008p+0, false, -+ 0x1.00000008p+0, false, -+ 0x1.00000008p+0, false, -+ 0x1.00000008p+0, false, -+ true, -+ 0x1.00000008p+0, false, -+ 0x1.00000008p+0, false, -+ 0x1.00000008p+0, false, -+ 0x1.00000008p+0, false, -+ true, -+ 0x1.00000008p+0, false, -+ 0x1.00000008p+0, false, -+ 0x1.00000008p+0, false, -+ 0x1.00000008p+0, false), -+ TEST ("1.000000000931322574615478515625", -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.000002p+0, false, -+ true, -+ 0x1.00000004p+0, false, -+ 0x1.00000004p+0, false, -+ 0x1.00000004p+0, false, -+ 0x1.00000004p+0, false, -+ true, -+ 0x1.00000004p+0, false, -+ 0x1.00000004p+0, false, -+ 0x1.00000004p+0, false, -+ 0x1.00000004p+0, false, -+ true, -+ 0x1.00000004p+0, false, -+ 0x1.00000004p+0, false, -+ 0x1.00000004p+0, false, -+ 0x1.00000004p+0, false, -+ true, -+ 0x1.00000004p+0, false, -+ 0x1.00000004p+0, false, -+ 0x1.00000004p+0, false, -+ 0x1.00000004p+0, false, -+ true, -+ 0x1.00000004p+0, false, -+ 0x1.00000004p+0, false, -+ 0x1.00000004p+0, false, -+ 0x1.00000004p+0, false), -+ TEST ("1.0000000004656612873077392578125", -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.000002p+0, false, -+ true, -+ 0x1.00000002p+0, false, -+ 0x1.00000002p+0, false, -+ 0x1.00000002p+0, false, -+ 0x1.00000002p+0, false, -+ true, -+ 0x1.00000002p+0, false, -+ 0x1.00000002p+0, false, -+ 0x1.00000002p+0, false, -+ 0x1.00000002p+0, false, -+ true, -+ 0x1.00000002p+0, false, -+ 0x1.00000002p+0, false, -+ 0x1.00000002p+0, false, -+ 0x1.00000002p+0, false, -+ true, -+ 0x1.00000002p+0, false, -+ 0x1.00000002p+0, false, -+ 0x1.00000002p+0, false, -+ 0x1.00000002p+0, false, -+ true, -+ 0x1.00000002p+0, false, -+ 0x1.00000002p+0, false, -+ 0x1.00000002p+0, false, -+ 0x1.00000002p+0, false), -+ TEST ("1.00000000023283064365386962890625", -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.000002p+0, false, -+ true, -+ 0x1.00000001p+0, false, -+ 0x1.00000001p+0, false, -+ 0x1.00000001p+0, false, -+ 0x1.00000001p+0, false, -+ true, -+ 0x1.00000001p+0, false, -+ 0x1.00000001p+0, false, -+ 0x1.00000001p+0, false, -+ 0x1.00000001p+0, false, -+ true, -+ 0x1.00000001p+0, false, -+ 0x1.00000001p+0, false, -+ 0x1.00000001p+0, false, -+ 0x1.00000001p+0, false, -+ true, -+ 0x1.00000001p+0, false, -+ 0x1.00000001p+0, false, -+ 0x1.00000001p+0, false, -+ 0x1.00000001p+0, false, -+ true, -+ 0x1.00000001p+0, false, -+ 0x1.00000001p+0, false, -+ 0x1.00000001p+0, false, -+ 0x1.00000001p+0, false), -+ TEST ("1.000000000116415321826934814453125", -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.000002p+0, false, -+ true, -+ 0x1.000000008p+0, false, -+ 0x1.000000008p+0, false, -+ 0x1.000000008p+0, false, -+ 0x1.000000008p+0, false, -+ true, -+ 0x1.000000008p+0, false, -+ 0x1.000000008p+0, false, -+ 0x1.000000008p+0, false, -+ 0x1.000000008p+0, false, -+ true, -+ 0x1.000000008p+0, false, -+ 0x1.000000008p+0, false, -+ 0x1.000000008p+0, false, -+ 0x1.000000008p+0, false, -+ true, -+ 0x1.000000008p+0, false, -+ 0x1.000000008p+0, false, -+ 0x1.000000008p+0, false, -+ 0x1.000000008p+0, false, -+ true, -+ 0x1.000000008p+0, false, -+ 0x1.000000008p+0, false, -+ 0x1.000000008p+0, false, -+ 0x1.000000008p+0, false), -+ TEST ("1.0000000000582076609134674072265625", -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.000002p+0, false, -+ true, -+ 0x1.000000004p+0, false, -+ 0x1.000000004p+0, false, -+ 0x1.000000004p+0, false, -+ 0x1.000000004p+0, false, -+ true, -+ 0x1.000000004p+0, false, -+ 0x1.000000004p+0, false, -+ 0x1.000000004p+0, false, -+ 0x1.000000004p+0, false, -+ true, -+ 0x1.000000004p+0, false, -+ 0x1.000000004p+0, false, -+ 0x1.000000004p+0, false, -+ 0x1.000000004p+0, false, -+ true, -+ 0x1.000000004p+0, false, -+ 0x1.000000004p+0, false, -+ 0x1.000000004p+0, false, -+ 0x1.000000004p+0, false, -+ true, -+ 0x1.000000004p+0, false, -+ 0x1.000000004p+0, false, -+ 0x1.000000004p+0, false, -+ 0x1.000000004p+0, false), -+ TEST ("1.00000000002910383045673370361328125", -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.000002p+0, false, -+ true, -+ 0x1.000000002p+0, false, -+ 0x1.000000002p+0, false, -+ 0x1.000000002p+0, false, -+ 0x1.000000002p+0, false, -+ true, -+ 0x1.000000002p+0, false, -+ 0x1.000000002p+0, false, -+ 0x1.000000002p+0, false, -+ 0x1.000000002p+0, false, -+ true, -+ 0x1.000000002p+0, false, -+ 0x1.000000002p+0, false, -+ 0x1.000000002p+0, false, -+ 0x1.000000002p+0, false, -+ true, -+ 0x1.000000002p+0, false, -+ 0x1.000000002p+0, false, -+ 0x1.000000002p+0, false, -+ 0x1.000000002p+0, false, -+ true, -+ 0x1.000000002p+0, false, -+ 0x1.000000002p+0, false, -+ 0x1.000000002p+0, false, -+ 0x1.000000002p+0, false), -+ TEST ("1.000000000014551915228366851806640625", -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.000002p+0, false, -+ true, -+ 0x1.000000001p+0, false, -+ 0x1.000000001p+0, false, -+ 0x1.000000001p+0, false, -+ 0x1.000000001p+0, false, -+ true, -+ 0x1.000000001p+0, false, -+ 0x1.000000001p+0, false, -+ 0x1.000000001p+0, false, -+ 0x1.000000001p+0, false, -+ true, -+ 0x1.000000001p+0, false, -+ 0x1.000000001p+0, false, -+ 0x1.000000001p+0, false, -+ 0x1.000000001p+0, false, -+ true, -+ 0x1.000000001p+0, false, -+ 0x1.000000001p+0, false, -+ 0x1.000000001p+0, false, -+ 0x1.000000001p+0, false, -+ true, -+ 0x1.000000001p+0, false, -+ 0x1.000000001p+0, false, -+ 0x1.000000001p+0, false, -+ 0x1.000000001p+0, false), -+ TEST ("1.0000000000072759576141834259033203125", -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.000002p+0, false, -+ true, -+ 0x1.0000000008p+0, false, -+ 0x1.0000000008p+0, false, -+ 0x1.0000000008p+0, false, -+ 0x1.0000000008p+0, false, -+ true, -+ 0x1.0000000008p+0, false, -+ 0x1.0000000008p+0, false, -+ 0x1.0000000008p+0, false, -+ 0x1.0000000008p+0, false, -+ true, -+ 0x1.0000000008p+0, false, -+ 0x1.0000000008p+0, false, -+ 0x1.0000000008p+0, false, -+ 0x1.0000000008p+0, false, -+ true, -+ 0x1.0000000008p+0, false, -+ 0x1.0000000008p+0, false, -+ 0x1.0000000008p+0, false, -+ 0x1.0000000008p+0, false, -+ true, -+ 0x1.0000000008p+0, false, -+ 0x1.0000000008p+0, false, -+ 0x1.0000000008p+0, false, -+ 0x1.0000000008p+0, false), -+ TEST ("1.00000000000363797880709171295166015625", -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.000002p+0, false, -+ true, -+ 0x1.0000000004p+0, false, -+ 0x1.0000000004p+0, false, -+ 0x1.0000000004p+0, false, -+ 0x1.0000000004p+0, false, -+ true, -+ 0x1.0000000004p+0, false, -+ 0x1.0000000004p+0, false, -+ 0x1.0000000004p+0, false, -+ 0x1.0000000004p+0, false, -+ true, -+ 0x1.0000000004p+0, false, -+ 0x1.0000000004p+0, false, -+ 0x1.0000000004p+0, false, -+ 0x1.0000000004p+0, false, -+ true, -+ 0x1.0000000004p+0, false, -+ 0x1.0000000004p+0, false, -+ 0x1.0000000004p+0, false, -+ 0x1.0000000004p+0, false, -+ true, -+ 0x1.0000000004p+0, false, -+ 0x1.0000000004p+0, false, -+ 0x1.0000000004p+0, false, -+ 0x1.0000000004p+0, false), -+ TEST ("1.000000000001818989403545856475830078125", -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.000002p+0, false, -+ true, -+ 0x1.0000000002p+0, false, -+ 0x1.0000000002p+0, false, -+ 0x1.0000000002p+0, false, -+ 0x1.0000000002p+0, false, -+ true, -+ 0x1.0000000002p+0, false, -+ 0x1.0000000002p+0, false, -+ 0x1.0000000002p+0, false, -+ 0x1.0000000002p+0, false, -+ true, -+ 0x1.0000000002p+0, false, -+ 0x1.0000000002p+0, false, -+ 0x1.0000000002p+0, false, -+ 0x1.0000000002p+0, false, -+ true, -+ 0x1.0000000002p+0, false, -+ 0x1.0000000002p+0, false, -+ 0x1.0000000002p+0, false, -+ 0x1.0000000002p+0, false, -+ true, -+ 0x1.0000000002p+0, false, -+ 0x1.0000000002p+0, false, -+ 0x1.0000000002p+0, false, -+ 0x1.0000000002p+0, false), -+ TEST ("1.0000000000009094947017729282379150390625", -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.000002p+0, false, -+ true, -+ 0x1.0000000001p+0, false, -+ 0x1.0000000001p+0, false, -+ 0x1.0000000001p+0, false, -+ 0x1.0000000001p+0, false, -+ true, -+ 0x1.0000000001p+0, false, -+ 0x1.0000000001p+0, false, -+ 0x1.0000000001p+0, false, -+ 0x1.0000000001p+0, false, -+ true, -+ 0x1.0000000001p+0, false, -+ 0x1.0000000001p+0, false, -+ 0x1.0000000001p+0, false, -+ 0x1.0000000001p+0, false, -+ true, -+ 0x1.0000000001p+0, false, -+ 0x1.0000000001p+0, false, -+ 0x1.0000000001p+0, false, -+ 0x1.0000000001p+0, false, -+ true, -+ 0x1.0000000001p+0, false, -+ 0x1.0000000001p+0, false, -+ 0x1.0000000001p+0, false, -+ 0x1.0000000001p+0, false), -+ TEST ("1.00000000000045474735088646411895751953125", -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.000002p+0, false, -+ true, -+ 0x1.00000000008p+0, false, -+ 0x1.00000000008p+0, false, -+ 0x1.00000000008p+0, false, -+ 0x1.00000000008p+0, false, -+ true, -+ 0x1.00000000008p+0, false, -+ 0x1.00000000008p+0, false, -+ 0x1.00000000008p+0, false, -+ 0x1.00000000008p+0, false, -+ true, -+ 0x1.00000000008p+0, false, -+ 0x1.00000000008p+0, false, -+ 0x1.00000000008p+0, false, -+ 0x1.00000000008p+0, false, -+ true, -+ 0x1.00000000008p+0, false, -+ 0x1.00000000008p+0, false, -+ 0x1.00000000008p+0, false, -+ 0x1.00000000008p+0, false, -+ true, -+ 0x1.00000000008p+0, false, -+ 0x1.00000000008p+0, false, -+ 0x1.00000000008p+0, false, -+ 0x1.00000000008p+0, false), -+ TEST ("1.000000000000227373675443232059478759765625", -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.000002p+0, false, -+ true, -+ 0x1.00000000004p+0, false, -+ 0x1.00000000004p+0, false, -+ 0x1.00000000004p+0, false, -+ 0x1.00000000004p+0, false, -+ true, -+ 0x1.00000000004p+0, false, -+ 0x1.00000000004p+0, false, -+ 0x1.00000000004p+0, false, -+ 0x1.00000000004p+0, false, -+ true, -+ 0x1.00000000004p+0, false, -+ 0x1.00000000004p+0, false, -+ 0x1.00000000004p+0, false, -+ 0x1.00000000004p+0, false, -+ true, -+ 0x1.00000000004p+0, false, -+ 0x1.00000000004p+0, false, -+ 0x1.00000000004p+0, false, -+ 0x1.00000000004p+0, false, -+ true, -+ 0x1.00000000004p+0, false, -+ 0x1.00000000004p+0, false, -+ 0x1.00000000004p+0, false, -+ 0x1.00000000004p+0, false), -+ TEST ("1.0000000000001136868377216160297393798828125", -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.000002p+0, false, -+ true, -+ 0x1.00000000002p+0, false, -+ 0x1.00000000002p+0, false, -+ 0x1.00000000002p+0, false, -+ 0x1.00000000002p+0, false, -+ true, -+ 0x1.00000000002p+0, false, -+ 0x1.00000000002p+0, false, -+ 0x1.00000000002p+0, false, -+ 0x1.00000000002p+0, false, -+ true, -+ 0x1.00000000002p+0, false, -+ 0x1.00000000002p+0, false, -+ 0x1.00000000002p+0, false, -+ 0x1.00000000002p+0, false, -+ true, -+ 0x1.00000000002p+0, false, -+ 0x1.00000000002p+0, false, -+ 0x1.00000000002p+0, false, -+ 0x1.00000000002p+0, false, -+ true, -+ 0x1.00000000002p+0, false, -+ 0x1.00000000002p+0, false, -+ 0x1.00000000002p+0, false, -+ 0x1.00000000002p+0, false), -+ TEST ("1.00000000000005684341886080801486968994140625", -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.000002p+0, false, -+ true, -+ 0x1.00000000001p+0, false, -+ 0x1.00000000001p+0, false, -+ 0x1.00000000001p+0, false, -+ 0x1.00000000001p+0, false, -+ true, -+ 0x1.00000000001p+0, false, -+ 0x1.00000000001p+0, false, -+ 0x1.00000000001p+0, false, -+ 0x1.00000000001p+0, false, -+ true, -+ 0x1.00000000001p+0, false, -+ 0x1.00000000001p+0, false, -+ 0x1.00000000001p+0, false, -+ 0x1.00000000001p+0, false, -+ true, -+ 0x1.00000000001p+0, false, -+ 0x1.00000000001p+0, false, -+ 0x1.00000000001p+0, false, -+ 0x1.00000000001p+0, false, -+ true, -+ 0x1.00000000001p+0, false, -+ 0x1.00000000001p+0, false, -+ 0x1.00000000001p+0, false, -+ 0x1.00000000001p+0, false), -+ TEST ("1.000000000000028421709430404007434844970703125", -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.000002p+0, false, -+ true, -+ 0x1.000000000008p+0, false, -+ 0x1.000000000008p+0, false, -+ 0x1.000000000008p+0, false, -+ 0x1.000000000008p+0, false, -+ true, -+ 0x1.000000000008p+0, false, -+ 0x1.000000000008p+0, false, -+ 0x1.000000000008p+0, false, -+ 0x1.000000000008p+0, false, -+ true, -+ 0x1.000000000008p+0, false, -+ 0x1.000000000008p+0, false, -+ 0x1.000000000008p+0, false, -+ 0x1.000000000008p+0, false, -+ true, -+ 0x1.000000000008p+0, false, -+ 0x1.000000000008p+0, false, -+ 0x1.000000000008p+0, false, -+ 0x1.000000000008p+0, false, -+ true, -+ 0x1.000000000008p+0, false, -+ 0x1.000000000008p+0, false, -+ 0x1.000000000008p+0, false, -+ 0x1.000000000008p+0, false), -+ TEST ("1.0000000000000142108547152020037174224853515625", -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.000002p+0, false, -+ true, -+ 0x1.000000000004p+0, false, -+ 0x1.000000000004p+0, false, -+ 0x1.000000000004p+0, false, -+ 0x1.000000000004p+0, false, -+ true, -+ 0x1.000000000004p+0, false, -+ 0x1.000000000004p+0, false, -+ 0x1.000000000004p+0, false, -+ 0x1.000000000004p+0, false, -+ true, -+ 0x1.000000000004p+0, false, -+ 0x1.000000000004p+0, false, -+ 0x1.000000000004p+0, false, -+ 0x1.000000000004p+0, false, -+ true, -+ 0x1.000000000004p+0, false, -+ 0x1.000000000004p+0, false, -+ 0x1.000000000004p+0, false, -+ 0x1.000000000004p+0, false, -+ true, -+ 0x1.000000000004p+0, false, -+ 0x1.000000000004p+0, false, -+ 0x1.000000000004p+0, false, -+ 0x1.000000000004p+0, false), -+ TEST ("1.00000000000000710542735760100185871124267578125", -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.000002p+0, false, -+ true, -+ 0x1.000000000002p+0, false, -+ 0x1.000000000002p+0, false, -+ 0x1.000000000002p+0, false, -+ 0x1.000000000002p+0, false, -+ true, -+ 0x1.000000000002p+0, false, -+ 0x1.000000000002p+0, false, -+ 0x1.000000000002p+0, false, -+ 0x1.000000000002p+0, false, -+ true, -+ 0x1.000000000002p+0, false, -+ 0x1.000000000002p+0, false, -+ 0x1.000000000002p+0, false, -+ 0x1.000000000002p+0, false, -+ true, -+ 0x1.000000000002p+0, false, -+ 0x1.000000000002p+0, false, -+ 0x1.000000000002p+0, false, -+ 0x1.000000000002p+0, false, -+ true, -+ 0x1.000000000002p+0, false, -+ 0x1.000000000002p+0, false, -+ 0x1.000000000002p+0, false, -+ 0x1.000000000002p+0, false), -+ TEST ("1.000000000000003552713678800500929355621337890625", -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.000002p+0, false, -+ true, -+ 0x1.000000000001p+0, false, -+ 0x1.000000000001p+0, false, -+ 0x1.000000000001p+0, false, -+ 0x1.000000000001p+0, false, -+ true, -+ 0x1.000000000001p+0, false, -+ 0x1.000000000001p+0, false, -+ 0x1.000000000001p+0, false, -+ 0x1.000000000001p+0, false, -+ true, -+ 0x1.000000000001p+0, false, -+ 0x1.000000000001p+0, false, -+ 0x1.000000000001p+0, false, -+ 0x1.000000000001p+0, false, -+ true, -+ 0x1.000000000001p+0, false, -+ 0x1.000000000001p+0, false, -+ 0x1.000000000001p+0, false, -+ 0x1.000000000001p+0, false, -+ true, -+ 0x1.000000000001p+0, false, -+ 0x1.000000000001p+0, false, -+ 0x1.000000000001p+0, false, -+ 0x1.000000000001p+0, false), -+ TEST ("1.0000000000000017763568394002504646778106689453125", -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.000002p+0, false, -+ true, -+ 0x1.0000000000008p+0, false, -+ 0x1.0000000000008p+0, false, -+ 0x1.0000000000008p+0, false, -+ 0x1.0000000000008p+0, false, -+ true, -+ 0x1.0000000000008p+0, false, -+ 0x1.0000000000008p+0, false, -+ 0x1.0000000000008p+0, false, -+ 0x1.0000000000008p+0, false, -+ true, -+ 0x1.0000000000008p+0, false, -+ 0x1.0000000000008p+0, false, -+ 0x1.0000000000008p+0, false, -+ 0x1.0000000000008p+0, false, -+ true, -+ 0x1.0000000000008p+0, false, -+ 0x1.0000000000008p+0, false, -+ 0x1.0000000000008p+0, false, -+ 0x1.0000000000008p+0, false, -+ true, -+ 0x1.0000000000008p+0, false, -+ 0x1.0000000000008p+0, false, -+ 0x1.0000000000008p+0, false, -+ 0x1.0000000000008p+0, false), -+ TEST ("1.00000000000000088817841970012523233890533447265625", -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.000002p+0, false, -+ true, -+ 0x1.0000000000004p+0, false, -+ 0x1.0000000000004p+0, false, -+ 0x1.0000000000004p+0, false, -+ 0x1.0000000000004p+0, false, -+ true, -+ 0x1.0000000000004p+0, false, -+ 0x1.0000000000004p+0, false, -+ 0x1.0000000000004p+0, false, -+ 0x1.0000000000004p+0, false, -+ true, -+ 0x1.0000000000004p+0, false, -+ 0x1.0000000000004p+0, false, -+ 0x1.0000000000004p+0, false, -+ 0x1.0000000000004p+0, false, -+ true, -+ 0x1.0000000000004p+0, false, -+ 0x1.0000000000004p+0, false, -+ 0x1.0000000000004p+0, false, -+ 0x1.0000000000004p+0, false, -+ true, -+ 0x1.0000000000004p+0, false, -+ 0x1.0000000000004p+0, false, -+ 0x1.0000000000004p+0, false, -+ 0x1.0000000000004p+0, false), -+ TEST ("1.000000000000000444089209850062616169452667236328125", -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.000002p+0, false, -+ true, -+ 0x1.0000000000002p+0, false, -+ 0x1.0000000000002p+0, false, -+ 0x1.0000000000002p+0, false, -+ 0x1.0000000000002p+0, false, -+ true, -+ 0x1.0000000000002p+0, false, -+ 0x1.0000000000002p+0, false, -+ 0x1.0000000000002p+0, false, -+ 0x1.0000000000002p+0, false, -+ true, -+ 0x1.0000000000002p+0, false, -+ 0x1.0000000000002p+0, false, -+ 0x1.0000000000002p+0, false, -+ 0x1.0000000000002p+0, false, -+ true, -+ 0x1.0000000000002p+0, false, -+ 0x1.0000000000002p+0, false, -+ 0x1.0000000000002p+0, false, -+ 0x1.0000000000002p+0, false, -+ true, -+ 0x1.0000000000002p+0, false, -+ 0x1.0000000000002p+0, false, -+ 0x1.0000000000002p+0, false, -+ 0x1.0000000000002p+0, false), -+ TEST ("1.0000000000000002220446049250313080847263336181640625", -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.000002p+0, false, -+ true, -+ 0x1.0000000000001p+0, false, -+ 0x1.0000000000001p+0, false, -+ 0x1.0000000000001p+0, false, -+ 0x1.0000000000001p+0, false, -+ true, -+ 0x1.0000000000001p+0, false, -+ 0x1.0000000000001p+0, false, -+ 0x1.0000000000001p+0, false, -+ 0x1.0000000000001p+0, false, -+ true, -+ 0x1.0000000000001p+0, false, -+ 0x1.0000000000001p+0, false, -+ 0x1.0000000000001p+0, false, -+ 0x1.0000000000001p+0, false, -+ true, -+ 0x1.0000000000001p+0, false, -+ 0x1.0000000000001p+0, false, -+ 0x1.0000000000001p+0, false, -+ 0x1.0000000000001p+0, false, -+ true, -+ 0x1.0000000000001p+0, false, -+ 0x1.0000000000001p+0, false, -+ 0x1.0000000000001p+0, false, -+ 0x1.0000000000001p+0, false), -+ TEST ("1.00000000000000011102230246251565404236316680908203125", -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000001p+0, false, -+ true, -+ 0x1.00000000000008p+0, false, -+ 0x1.00000000000008p+0, false, -+ 0x1.00000000000008p+0, false, -+ 0x1.00000000000008p+0, false, -+ true, -+ 0x1.00000000000008p+0, false, -+ 0x1.00000000000008p+0, false, -+ 0x1.00000000000008p+0, false, -+ 0x1.00000000000008p+0, false, -+ true, -+ 0x1.00000000000008p+0, false, -+ 0x1.00000000000008p+0, false, -+ 0x1.00000000000008p+0, false, -+ 0x1.00000000000008p+0, false, -+ true, -+ 0x1.00000000000008p+0, false, -+ 0x1.00000000000008p+0, false, -+ 0x1.00000000000008p+0, false, -+ 0x1.00000000000008p+0, false), -+ TEST ("1.000000000000000055511151231257827021181583404541015625", -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000001p+0, false, -+ true, -+ 0x1.00000000000004p+0, false, -+ 0x1.00000000000004p+0, false, -+ 0x1.00000000000004p+0, false, -+ 0x1.00000000000004p+0, false, -+ true, -+ 0x1.00000000000004p+0, false, -+ 0x1.00000000000004p+0, false, -+ 0x1.00000000000004p+0, false, -+ 0x1.00000000000004p+0, false, -+ true, -+ 0x1.00000000000004p+0, false, -+ 0x1.00000000000004p+0, false, -+ 0x1.00000000000004p+0, false, -+ 0x1.00000000000004p+0, false, -+ true, -+ 0x1.00000000000004p+0, false, -+ 0x1.00000000000004p+0, false, -+ 0x1.00000000000004p+0, false, -+ 0x1.00000000000004p+0, false), -+ TEST ("1.0000000000000000277555756156289135105907917022705078125", -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000001p+0, false, -+ true, -+ 0x1.00000000000002p+0, false, -+ 0x1.00000000000002p+0, false, -+ 0x1.00000000000002p+0, false, -+ 0x1.00000000000002p+0, false, -+ true, -+ 0x1.00000000000002p+0, false, -+ 0x1.00000000000002p+0, false, -+ 0x1.00000000000002p+0, false, -+ 0x1.00000000000002p+0, false, -+ true, -+ 0x1.00000000000002p+0, false, -+ 0x1.00000000000002p+0, false, -+ 0x1.00000000000002p+0, false, -+ 0x1.00000000000002p+0, false, -+ true, -+ 0x1.00000000000002p+0, false, -+ 0x1.00000000000002p+0, false, -+ 0x1.00000000000002p+0, false, -+ 0x1.00000000000002p+0, false), -+ TEST ("1.00000000000000001387778780781445675529539585113525390625", -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000001p+0, false, -+ true, -+ 0x1.00000000000001p+0, false, -+ 0x1.00000000000001p+0, false, -+ 0x1.00000000000001p+0, false, -+ 0x1.00000000000001p+0, false, -+ true, -+ 0x1.00000000000001p+0, false, -+ 0x1.00000000000001p+0, false, -+ 0x1.00000000000001p+0, false, -+ 0x1.00000000000001p+0, false, -+ true, -+ 0x1.00000000000001p+0, false, -+ 0x1.00000000000001p+0, false, -+ 0x1.00000000000001p+0, false, -+ 0x1.00000000000001p+0, false, -+ true, -+ 0x1.00000000000001p+0, false, -+ 0x1.00000000000001p+0, false, -+ 0x1.00000000000001p+0, false, -+ 0x1.00000000000001p+0, false), -+ TEST ("1.000000000000000006938893903907228377647697925567626953125", -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000001p+0, false, -+ true, -+ 0x1.000000000000008p+0, false, -+ 0x1.000000000000008p+0, false, -+ 0x1.000000000000008p+0, false, -+ 0x1.000000000000008p+0, false, -+ true, -+ 0x1.000000000000008p+0, false, -+ 0x1.000000000000008p+0, false, -+ 0x1.000000000000008p+0, false, -+ 0x1.000000000000008p+0, false, -+ true, -+ 0x1.000000000000008p+0, false, -+ 0x1.000000000000008p+0, false, -+ 0x1.000000000000008p+0, false, -+ 0x1.000000000000008p+0, false, -+ true, -+ 0x1.000000000000008p+0, false, -+ 0x1.000000000000008p+0, false, -+ 0x1.000000000000008p+0, false, -+ 0x1.000000000000008p+0, false), -+ TEST ("1.0000000000000000034694469519536141888238489627838134765625", -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000001p+0, false, -+ true, -+ 0x1.000000000000004p+0, false, -+ 0x1.000000000000004p+0, false, -+ 0x1.000000000000004p+0, false, -+ 0x1.000000000000004p+0, false, -+ true, -+ 0x1.000000000000004p+0, false, -+ 0x1.000000000000004p+0, false, -+ 0x1.000000000000004p+0, false, -+ 0x1.000000000000004p+0, false, -+ true, -+ 0x1.000000000000004p+0, false, -+ 0x1.000000000000004p+0, false, -+ 0x1.000000000000004p+0, false, -+ 0x1.000000000000004p+0, false, -+ true, -+ 0x1.000000000000004p+0, false, -+ 0x1.000000000000004p+0, false, -+ 0x1.000000000000004p+0, false, -+ 0x1.000000000000004p+0, false), -+ TEST ("1.0000000000000000017347234759768070944119244813919067382812" -+ "5", -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000001p+0, false, -+ true, -+ 0x1.000000000000002p+0, false, -+ 0x1.000000000000002p+0, false, -+ 0x1.000000000000002p+0, false, -+ 0x1.000000000000002p+0, false, -+ true, -+ 0x1.000000000000002p+0, false, -+ 0x1.000000000000002p+0, false, -+ 0x1.000000000000002p+0, false, -+ 0x1.000000000000002p+0, false, -+ true, -+ 0x1.000000000000002p+0, false, -+ 0x1.000000000000002p+0, false, -+ 0x1.000000000000002p+0, false, -+ 0x1.000000000000002p+0, false, -+ true, -+ 0x1.000000000000002p+0, false, -+ 0x1.000000000000002p+0, false, -+ 0x1.000000000000002p+0, false, -+ 0x1.000000000000002p+0, false), -+ TEST ("1.0000000000000000008673617379884035472059622406959533691406" -+ "25", -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000001p+0, false, -+ true, -+ 0x1.000000000000001p+0, false, -+ 0x1.000000000000001p+0, false, -+ 0x1.000000000000001p+0, false, -+ 0x1.000000000000001p+0, false, -+ true, -+ 0x1.000000000000001p+0, false, -+ 0x1.000000000000001p+0, false, -+ 0x1.000000000000001p+0, false, -+ 0x1.000000000000001p+0, false, -+ true, -+ 0x1.000000000000001p+0, false, -+ 0x1.000000000000001p+0, false, -+ 0x1.000000000000001p+0, false, -+ 0x1.000000000000001p+0, false, -+ true, -+ 0x1.000000000000001p+0, false, -+ 0x1.000000000000001p+0, false, -+ 0x1.000000000000001p+0, false, -+ 0x1.000000000000001p+0, false), -+ TEST ("1.0000000000000000004336808689942017736029811203479766845703" -+ "125", -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000001p+0, false, -+ true, -+ 0x1.0000000000000008p+0, false, -+ 0x1.0000000000000008p+0, false, -+ 0x1.0000000000000008p+0, false, -+ 0x1.0000000000000008p+0, false, -+ true, -+ 0x1.0000000000000008p+0, false, -+ 0x1.0000000000000008p+0, false, -+ 0x1.0000000000000008p+0, false, -+ 0x1.0000000000000008p+0, false, -+ true, -+ 0x1.0000000000000008p+0, false, -+ 0x1.0000000000000008p+0, false, -+ 0x1.0000000000000008p+0, false, -+ 0x1.0000000000000008p+0, false, -+ true, -+ 0x1.0000000000000008p+0, false, -+ 0x1.0000000000000008p+0, false, -+ 0x1.0000000000000008p+0, false, -+ 0x1.0000000000000008p+0, false), -+ TEST ("1.0000000000000000002168404344971008868014905601739883422851" -+ "5625", -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000001p+0, false, -+ true, -+ 0x1.0000000000000004p+0, false, -+ 0x1.0000000000000004p+0, false, -+ 0x1.0000000000000004p+0, false, -+ 0x1.0000000000000004p+0, false, -+ true, -+ 0x1.0000000000000004p+0, false, -+ 0x1.0000000000000004p+0, false, -+ 0x1.0000000000000004p+0, false, -+ 0x1.0000000000000004p+0, false, -+ true, -+ 0x1.0000000000000004p+0, false, -+ 0x1.0000000000000004p+0, false, -+ 0x1.0000000000000004p+0, false, -+ 0x1.0000000000000004p+0, false, -+ true, -+ 0x1.0000000000000004p+0, false, -+ 0x1.0000000000000004p+0, false, -+ 0x1.0000000000000004p+0, false, -+ 0x1.0000000000000004p+0, false), -+ TEST ("1.0000000000000000001084202172485504434007452800869941711425" -+ "78125", -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000001p+0, false, -+ true, -+ 0x1.0000000000000002p+0, false, -+ 0x1.0000000000000002p+0, false, -+ 0x1.0000000000000002p+0, false, -+ 0x1.0000000000000002p+0, false, -+ true, -+ 0x1.0000000000000002p+0, false, -+ 0x1.0000000000000002p+0, false, -+ 0x1.0000000000000002p+0, false, -+ 0x1.0000000000000002p+0, false, -+ true, -+ 0x1.0000000000000002p+0, false, -+ 0x1.0000000000000002p+0, false, -+ 0x1.0000000000000002p+0, false, -+ 0x1.0000000000000002p+0, false, -+ true, -+ 0x1.0000000000000002p+0, false, -+ 0x1.0000000000000002p+0, false, -+ 0x1.0000000000000002p+0, false, -+ 0x1.0000000000000002p+0, false), -+ TEST ("1.0000000000000000000542101086242752217003726400434970855712" -+ "890625", -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000001p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000000002p+0, false, -+ true, -+ 0x1.0000000000000001p+0, false, -+ 0x1.0000000000000001p+0, false, -+ 0x1.0000000000000001p+0, false, -+ 0x1.0000000000000001p+0, false, -+ true, -+ 0x1.0000000000000001p+0, false, -+ 0x1.0000000000000001p+0, false, -+ 0x1.0000000000000001p+0, false, -+ 0x1.0000000000000001p+0, false), -+ TEST ("1.0000000000000000000271050543121376108501863200217485427856" -+ "4453125", -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000001p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000000002p+0, false, -+ true, -+ 0x1.00000000000000008p+0, false, -+ 0x1.00000000000000008p+0, false, -+ 0x1.00000000000000008p+0, false, -+ 0x1.00000000000000008p+0, false, -+ true, -+ 0x1.00000000000000008p+0, false, -+ 0x1.00000000000000008p+0, false, -+ 0x1.00000000000000008p+0, false, -+ 0x1.00000000000000008p+0, false), -+ TEST ("1.0000000000000000000135525271560688054250931600108742713928" -+ "22265625", -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000001p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000000002p+0, false, -+ true, -+ 0x1.00000000000000004p+0, false, -+ 0x1.00000000000000004p+0, false, -+ 0x1.00000000000000004p+0, false, -+ 0x1.00000000000000004p+0, false, -+ true, -+ 0x1.00000000000000004p+0, false, -+ 0x1.00000000000000004p+0, false, -+ 0x1.00000000000000004p+0, false, -+ 0x1.00000000000000004p+0, false), -+ TEST ("1.0000000000000000000067762635780344027125465800054371356964" -+ "111328125", -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000001p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000000002p+0, false, -+ true, -+ 0x1.00000000000000002p+0, false, -+ 0x1.00000000000000002p+0, false, -+ 0x1.00000000000000002p+0, false, -+ 0x1.00000000000000002p+0, false, -+ true, -+ 0x1.00000000000000002p+0, false, -+ 0x1.00000000000000002p+0, false, -+ 0x1.00000000000000002p+0, false, -+ 0x1.00000000000000002p+0, false), -+ TEST ("1.0000000000000000000033881317890172013562732900027185678482" -+ "0556640625", -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000001p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000000002p+0, false, -+ true, -+ 0x1.00000000000000001p+0, false, -+ 0x1.00000000000000001p+0, false, -+ 0x1.00000000000000001p+0, false, -+ 0x1.00000000000000001p+0, false, -+ true, -+ 0x1.00000000000000001p+0, false, -+ 0x1.00000000000000001p+0, false, -+ 0x1.00000000000000001p+0, false, -+ 0x1.00000000000000001p+0, false), -+ TEST ("1.0000000000000000000016940658945086006781366450013592839241" -+ "02783203125", -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000001p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000000002p+0, false, -+ true, -+ 0x1.000000000000000008p+0, false, -+ 0x1.000000000000000008p+0, false, -+ 0x1.000000000000000008p+0, false, -+ 0x1.000000000000000008p+0, false, -+ true, -+ 0x1.000000000000000008p+0, false, -+ 0x1.000000000000000008p+0, false, -+ 0x1.000000000000000008p+0, false, -+ 0x1.000000000000000008p+0, false), -+ TEST ("1.0000000000000000000008470329472543003390683225006796419620" -+ "513916015625", -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000001p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000000002p+0, false, -+ true, -+ 0x1.000000000000000004p+0, false, -+ 0x1.000000000000000004p+0, false, -+ 0x1.000000000000000004p+0, false, -+ 0x1.000000000000000004p+0, false, -+ true, -+ 0x1.000000000000000004p+0, false, -+ 0x1.000000000000000004p+0, false, -+ 0x1.000000000000000004p+0, false, -+ 0x1.000000000000000004p+0, false), -+ TEST ("1.0000000000000000000004235164736271501695341612503398209810" -+ "2569580078125", -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000001p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000000002p+0, false, -+ true, -+ 0x1.000000000000000002p+0, false, -+ 0x1.000000000000000002p+0, false, -+ 0x1.000000000000000002p+0, false, -+ 0x1.000000000000000002p+0, false, -+ true, -+ 0x1.000000000000000002p+0, false, -+ 0x1.000000000000000002p+0, false, -+ 0x1.000000000000000002p+0, false, -+ 0x1.000000000000000002p+0, false), -+ TEST ("1.0000000000000000000002117582368135750847670806251699104905" -+ "12847900390625", -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000001p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000000002p+0, false, -+ true, -+ 0x1.000000000000000001p+0, false, -+ 0x1.000000000000000001p+0, false, -+ 0x1.000000000000000001p+0, false, -+ 0x1.000000000000000001p+0, false, -+ true, -+ 0x1.000000000000000001p+0, false, -+ 0x1.000000000000000001p+0, false, -+ 0x1.000000000000000001p+0, false, -+ 0x1.000000000000000001p+0, false), -+ TEST ("1.0000000000000000000001058791184067875423835403125849552452" -+ "564239501953125", -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000001p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000000002p+0, false, -+ true, -+ 0x1.0000000000000000008p+0, false, -+ 0x1.0000000000000000008p+0, false, -+ 0x1.0000000000000000008p+0, false, -+ 0x1.0000000000000000008p+0, false, -+ true, -+ 0x1.0000000000000000008p+0, false, -+ 0x1.0000000000000000008p+0, false, -+ 0x1.0000000000000000008p+0, false, -+ 0x1.0000000000000000008p+0, false), -+ TEST ("1.0000000000000000000000529395592033937711917701562924776226" -+ "2821197509765625", -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000001p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000000002p+0, false, -+ true, -+ 0x1.0000000000000000004p+0, false, -+ 0x1.0000000000000000004p+0, false, -+ 0x1.0000000000000000004p+0, false, -+ 0x1.0000000000000000004p+0, false, -+ true, -+ 0x1.0000000000000000004p+0, false, -+ 0x1.0000000000000000004p+0, false, -+ 0x1.0000000000000000004p+0, false, -+ 0x1.0000000000000000004p+0, false), -+ TEST ("1.0000000000000000000000264697796016968855958850781462388113" -+ "14105987548828125", -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000001p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000000002p+0, false, -+ true, -+ 0x1.0000000000000000002p+0, false, -+ 0x1.0000000000000000002p+0, false, -+ 0x1.0000000000000000002p+0, false, -+ 0x1.0000000000000000002p+0, false, -+ true, -+ 0x1.0000000000000000002p+0, false, -+ 0x1.0000000000000000002p+0, false, -+ 0x1.0000000000000000002p+0, false, -+ 0x1.0000000000000000002p+0, false), -+ TEST ("1.0000000000000000000000132348898008484427979425390731194056" -+ "570529937744140625", -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000001p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000000002p+0, false, -+ true, -+ 0x1.0000000000000000001p+0, false, -+ 0x1.0000000000000000001p+0, false, -+ 0x1.0000000000000000001p+0, false, -+ 0x1.0000000000000000001p+0, false, -+ true, -+ 0x1.0000000000000000001p+0, false, -+ 0x1.0000000000000000001p+0, false, -+ 0x1.0000000000000000001p+0, false, -+ 0x1.0000000000000000001p+0, false), -+ TEST ("1.0000000000000000000000066174449004242213989712695365597028" -+ "2852649688720703125", -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000001p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000000002p+0, false, -+ true, -+ 0x1.00000000000000000008p+0, false, -+ 0x1.00000000000000000008p+0, false, -+ 0x1.00000000000000000008p+0, false, -+ 0x1.00000000000000000008p+0, false, -+ true, -+ 0x1.00000000000000000008p+0, false, -+ 0x1.00000000000000000008p+0, false, -+ 0x1.00000000000000000008p+0, false, -+ 0x1.00000000000000000008p+0, false), -+ TEST ("1.0000000000000000000000033087224502121106994856347682798514" -+ "14263248443603515625", -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000001p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000000002p+0, false, -+ true, -+ 0x1.00000000000000000004p+0, false, -+ 0x1.00000000000000000004p+0, false, -+ 0x1.00000000000000000004p+0, false, -+ 0x1.00000000000000000004p+0, false, -+ true, -+ 0x1.00000000000000000004p+0, false, -+ 0x1.00000000000000000004p+0, false, -+ 0x1.00000000000000000004p+0, false, -+ 0x1.00000000000000000004p+0, false), -+ TEST ("1.0000000000000000000000016543612251060553497428173841399257" -+ "071316242218017578125", -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000001p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000000002p+0, false, -+ true, -+ 0x1.00000000000000000002p+0, false, -+ 0x1.00000000000000000002p+0, false, -+ 0x1.00000000000000000002p+0, false, -+ 0x1.00000000000000000002p+0, false, -+ true, -+ 0x1.00000000000000000002p+0, false, -+ 0x1.00000000000000000002p+0, false, -+ 0x1.00000000000000000002p+0, false, -+ 0x1.00000000000000000002p+0, false), -+ TEST ("1.0000000000000000000000008271806125530276748714086920699628" -+ "5356581211090087890625", -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000001p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000000002p+0, false, -+ true, -+ 0x1.00000000000000000001p+0, false, -+ 0x1.00000000000000000001p+0, false, -+ 0x1.00000000000000000001p+0, false, -+ 0x1.00000000000000000001p+0, false, -+ true, -+ 0x1.00000000000000000001p+0, false, -+ 0x1.00000000000000000001p+0, false, -+ 0x1.00000000000000000001p+0, false, -+ 0x1.00000000000000000001p+0, false), -+ TEST ("1.0000000000000000000000004135903062765138374357043460349814" -+ "26782906055450439453125", -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000001p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000000002p+0, false, -+ true, -+ 0x1.000000000000000000008p+0, false, -+ 0x1.000000000000000000008p+0, false, -+ 0x1.000000000000000000008p+0, false, -+ 0x1.000000000000000000008p+0, false, -+ true, -+ 0x1.000000000000000000008p+0, false, -+ 0x1.000000000000000000008p+0, false, -+ 0x1.000000000000000000008p+0, false, -+ 0x1.000000000000000000008p+0, false), -+ TEST ("1.0000000000000000000000002067951531382569187178521730174907" -+ "133914530277252197265625", -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000001p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000000002p+0, false, -+ true, -+ 0x1.000000000000000000004p+0, false, -+ 0x1.000000000000000000004p+0, false, -+ 0x1.000000000000000000004p+0, false, -+ 0x1.000000000000000000004p+0, false, -+ true, -+ 0x1.000000000000000000004p+0, false, -+ 0x1.000000000000000000004p+0, false, -+ 0x1.000000000000000000004p+0, false, -+ 0x1.000000000000000000004p+0, false), -+ TEST ("1.0000000000000000000000001033975765691284593589260865087453" -+ "5669572651386260986328125", -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000001p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000000002p+0, false, -+ true, -+ 0x1.000000000000000000002p+0, false, -+ 0x1.000000000000000000002p+0, false, -+ 0x1.000000000000000000002p+0, false, -+ 0x1.000000000000000000002p+0, false, -+ true, -+ 0x1.000000000000000000002p+0, false, -+ 0x1.000000000000000000002p+0, false, -+ 0x1.000000000000000000002p+0, false, -+ 0x1.000000000000000000002p+0, false), -+ TEST ("1.0000000000000000000000000516987882845642296794630432543726" -+ "78347863256931304931640625", -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000001p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000000002p+0, false, -+ true, -+ 0x1.000000000000000000001p+0, false, -+ 0x1.000000000000000000001p+0, false, -+ 0x1.000000000000000000001p+0, false, -+ 0x1.000000000000000000001p+0, false, -+ true, -+ 0x1.000000000000000000001p+0, false, -+ 0x1.000000000000000000001p+0, false, -+ 0x1.000000000000000000001p+0, false, -+ 0x1.000000000000000000001p+0, false), -+ TEST ("1.0000000000000000000000000258493941422821148397315216271863" -+ "391739316284656524658203125", -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000001p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000000002p+0, false, -+ true, -+ 0x1.0000000000000000000008p+0, false, -+ 0x1.0000000000000000000008p+0, false, -+ 0x1.0000000000000000000008p+0, false, -+ 0x1.0000000000000000000008p+0, false, -+ true, -+ 0x1.0000000000000000000008p+0, false, -+ 0x1.0000000000000000000008p+0, false, -+ 0x1.0000000000000000000008p+0, false, -+ 0x1.0000000000000000000008p+0, false), -+ TEST ("1.0000000000000000000000000129246970711410574198657608135931" -+ "6958696581423282623291015625", -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000001p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000000002p+0, false, -+ true, -+ 0x1.0000000000000000000004p+0, false, -+ 0x1.0000000000000000000004p+0, false, -+ 0x1.0000000000000000000004p+0, false, -+ 0x1.0000000000000000000004p+0, false, -+ true, -+ 0x1.0000000000000000000004p+0, false, -+ 0x1.0000000000000000000004p+0, false, -+ 0x1.0000000000000000000004p+0, false, -+ 0x1.0000000000000000000004p+0, false), -+ TEST ("1.0000000000000000000000000064623485355705287099328804067965" -+ "84793482907116413116455078125", -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000001p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000000002p+0, false, -+ true, -+ 0x1.0000000000000000000002p+0, false, -+ 0x1.0000000000000000000002p+0, false, -+ 0x1.0000000000000000000002p+0, false, -+ 0x1.0000000000000000000002p+0, false, -+ true, -+ 0x1.0000000000000000000002p+0, false, -+ 0x1.0000000000000000000002p+0, false, -+ 0x1.0000000000000000000002p+0, false, -+ 0x1.0000000000000000000002p+0, false), -+ TEST ("1.0000000000000000000000000032311742677852643549664402033982" -+ "923967414535582065582275390625", -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000001p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000000002p+0, false, -+ true, -+ 0x1.0000000000000000000001p+0, false, -+ 0x1.0000000000000000000001p+0, false, -+ 0x1.0000000000000000000001p+0, false, -+ 0x1.0000000000000000000001p+0, false, -+ true, -+ 0x1.0000000000000000000001p+0, false, -+ 0x1.0000000000000000000001p+0, false, -+ 0x1.0000000000000000000001p+0, false, -+ 0x1.0000000000000000000001p+0, false), -+ TEST ("1.0000000000000000000000000016155871338926321774832201016991" -+ "4619837072677910327911376953125", -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000001p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000000002p+0, false, -+ true, -+ 0x1.00000000000000000000008p+0, false, -+ 0x1.00000000000000000000008p+0, false, -+ 0x1.00000000000000000000008p+0, false, -+ 0x1.00000000000000000000008p+0, false, -+ true, -+ 0x1.00000000000000000000008p+0, false, -+ 0x1.00000000000000000000008p+0, false, -+ 0x1.00000000000000000000008p+0, false, -+ 0x1.00000000000000000000008p+0, false), -+ TEST ("1.0000000000000000000000000008077935669463160887416100508495" -+ "73099185363389551639556884765625", -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000001p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000000002p+0, false, -+ true, -+ 0x1.00000000000000000000004p+0, false, -+ 0x1.00000000000000000000004p+0, false, -+ 0x1.00000000000000000000004p+0, false, -+ 0x1.00000000000000000000004p+0, false, -+ true, -+ 0x1.00000000000000000000004p+0, false, -+ 0x1.00000000000000000000004p+0, false, -+ 0x1.00000000000000000000004p+0, false, -+ 0x1.00000000000000000000004p+0, false), -+ TEST ("1.0000000000000000000000000004038967834731580443708050254247" -+ "865495926816947758197784423828125", -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000001p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000000002p+0, false, -+ true, -+ 0x1.00000000000000000000002p+0, false, -+ 0x1.00000000000000000000002p+0, false, -+ 0x1.00000000000000000000002p+0, false, -+ 0x1.00000000000000000000002p+0, false, -+ true, -+ 0x1.00000000000000000000002p+0, false, -+ 0x1.00000000000000000000002p+0, false, -+ 0x1.00000000000000000000002p+0, false, -+ 0x1.00000000000000000000002p+0, false), -+ TEST ("1.0000000000000000000000000002019483917365790221854025127123" -+ "9327479634084738790988922119140625", -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000001p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000000002p+0, false, -+ true, -+ 0x1.00000000000000000000001p+0, false, -+ 0x1.00000000000000000000001p+0, false, -+ 0x1.00000000000000000000001p+0, false, -+ 0x1.00000000000000000000001p+0, false, -+ true, -+ 0x1.00000000000000000000001p+0, false, -+ 0x1.00000000000000000000001p+0, false, -+ 0x1.00000000000000000000001p+0, false, -+ 0x1.00000000000000000000001p+0, false), -+ TEST ("1.0000000000000000000000000001009741958682895110927012563561" -+ "96637398170423693954944610595703125", -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000001p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000000002p+0, false, -+ true, -+ 0x1.000000000000000000000008p+0, false, -+ 0x1.000000000000000000000008p+0, false, -+ 0x1.000000000000000000000008p+0, false, -+ 0x1.000000000000000000000008p+0, false, -+ true, -+ 0x1.000000000000000000000008p+0, false, -+ 0x1.000000000000000000000008p+0, false, -+ 0x1.000000000000000000000008p+0, false, -+ 0x1.000000000000000000000008p+0, false), -+ TEST ("1.0000000000000000000000000000504870979341447555463506281780" -+ "983186990852118469774723052978515625", -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000001p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000000002p+0, false, -+ true, -+ 0x1.000000000000000000000004p+0, false, -+ 0x1.000000000000000000000004p+0, false, -+ 0x1.000000000000000000000004p+0, false, -+ 0x1.000000000000000000000004p+0, false, -+ true, -+ 0x1.000000000000000000000004p+0, false, -+ 0x1.000000000000000000000004p+0, false, -+ 0x1.000000000000000000000004p+0, false, -+ 0x1.000000000000000000000004p+0, false), -+ TEST ("1.0000000000000000000000000000252435489670723777731753140890" -+ "4915934954260592348873615264892578125", -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000001p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000000002p+0, false, -+ true, -+ 0x1.000000000000000000000002p+0, false, -+ 0x1.000000000000000000000002p+0, false, -+ 0x1.000000000000000000000002p+0, false, -+ 0x1.000000000000000000000002p+0, false, -+ true, -+ 0x1.000000000000000000000002p+0, false, -+ 0x1.000000000000000000000002p+0, false, -+ 0x1.000000000000000000000002p+0, false, -+ 0x1.000000000000000000000002p+0, false), -+ TEST ("1.0000000000000000000000000000126217744835361888865876570445" -+ "24579674771302961744368076324462890625", -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000001p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000000002p+0, false, -+ true, -+ 0x1.000000000000000000000001p+0, false, -+ 0x1.000000000000000000000001p+0, false, -+ 0x1.000000000000000000000001p+0, false, -+ 0x1.000000000000000000000001p+0, false, -+ true, -+ 0x1.000000000000000000000001p+0, false, -+ 0x1.000000000000000000000001p+0, false, -+ 0x1.000000000000000000000001p+0, false, -+ 0x1.000000000000000000000001p+0, false), -+ TEST ("1.0000000000000000000000000000063108872417680944432938285222" -+ "622898373856514808721840381622314453125", -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000001p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000000002p+0, false, -+ true, -+ 0x1.0000000000000000000000008p+0, false, -+ 0x1.0000000000000000000000008p+0, false, -+ 0x1.0000000000000000000000008p+0, false, -+ 0x1.0000000000000000000000008p+0, false, -+ true, -+ 0x1.0000000000000000000000008p+0, false, -+ 0x1.0000000000000000000000008p+0, false, -+ 0x1.0000000000000000000000008p+0, false, -+ 0x1.0000000000000000000000008p+0, false), -+ TEST ("1.0000000000000000000000000000031554436208840472216469142611" -+ "3114491869282574043609201908111572265625", -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000001p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000000002p+0, false, -+ true, -+ 0x1.0000000000000000000000004p+0, false, -+ 0x1.0000000000000000000000004p+0, false, -+ 0x1.0000000000000000000000004p+0, false, -+ 0x1.0000000000000000000000004p+0, false, -+ true, -+ 0x1.0000000000000000000000004p+0, false, -+ 0x1.0000000000000000000000004p+0, false, -+ 0x1.0000000000000000000000004p+0, false, -+ 0x1.0000000000000000000000004p+0, false), -+ TEST ("1.0000000000000000000000000000015777218104420236108234571305" -+ "65572459346412870218046009540557861328125", -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000001p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000000002p+0, false, -+ true, -+ 0x1.0000000000000000000000002p+0, false, -+ 0x1.0000000000000000000000002p+0, false, -+ 0x1.0000000000000000000000002p+0, false, -+ 0x1.0000000000000000000000002p+0, false, -+ true, -+ 0x1.0000000000000000000000002p+0, false, -+ 0x1.0000000000000000000000002p+0, false, -+ 0x1.0000000000000000000000002p+0, false, -+ 0x1.0000000000000000000000002p+0, false), -+ TEST ("1.0000000000000000000000000000007888609052210118054117285652" -+ "827862296732064351090230047702789306640625", -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000001p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000000002p+0, false, -+ true, -+ 0x1.0000000000000000000000001p+0, false, -+ 0x1.0000000000000000000000001p+0, false, -+ 0x1.0000000000000000000000001p+0, false, -+ 0x1.0000000000000000000000001p+0, false, -+ true, -+ 0x1.0000000000000000000000001p+0, false, -+ 0x1.0000000000000000000000001p+0, false, -+ 0x1.0000000000000000000000001p+0, false, -+ 0x1.0000000000000000000000001p+0, false), -+ TEST ("1.0000000000000000000000000000003944304526105059027058642826" -+ "4139311483660321755451150238513946533203125", -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000001p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000000002p+0, false, -+ true, -+ 0x1.00000000000000000000000008p+0, false, -+ 0x1.00000000000000000000000008p+0, false, -+ 0x1.00000000000000000000000008p+0, false, -+ 0x1.00000000000000000000000008p+0, false, -+ true, -+ 0x1.00000000000000000000000008p+0, false, -+ 0x1.00000000000000000000000008p+0, false, -+ 0x1.00000000000000000000000008p+0, false, -+ 0x1.00000000000000000000000008p+0, false), -+ TEST ("1.0000000000000000000000000000001972152263052529513529321413" -+ "20696557418301608777255751192569732666015625", -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000001p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000000002p+0, false, -+ true, -+ 0x1.00000000000000000000000004p+0, false, -+ 0x1.00000000000000000000000004p+0, false, -+ 0x1.00000000000000000000000004p+0, false, -+ 0x1.00000000000000000000000004p+0, false, -+ true, -+ 0x1.00000000000000000000000004p+0, false, -+ 0x1.00000000000000000000000004p+0, false, -+ 0x1.00000000000000000000000004p+0, false, -+ 0x1.00000000000000000000000004p+0, false), -+ TEST ("1.0000000000000000000000000000000986076131526264756764660706" -+ "603482787091508043886278755962848663330078125", -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000001p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000000002p+0, false, -+ true, -+ 0x1.00000000000000000000000002p+0, false, -+ 0x1.00000000000000000000000002p+0, false, -+ 0x1.00000000000000000000000002p+0, false, -+ 0x1.00000000000000000000000002p+0, false, -+ true, -+ 0x1.00000000000000000000000002p+0, false, -+ 0x1.00000000000000000000000002p+0, false, -+ 0x1.00000000000000000000000002p+0, false, -+ 0x1.00000000000000000000000002p+0, false), -+ TEST ("1.0000000000000000000000000000000493038065763132378382330353" -+ "3017413935457540219431393779814243316650390625", -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000001p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000000002p+0, false, -+ true, -+ 0x1.00000000000000000000000001p+0, false, -+ 0x1.00000000000000000000000001p+0, false, -+ 0x1.00000000000000000000000001p+0, false, -+ 0x1.00000000000000000000000001p+0, false, -+ true, -+ 0x1.00000000000000000000000001p+0, false, -+ 0x1.00000000000000000000000001p+0, false, -+ 0x1.00000000000000000000000001p+0, false, -+ 0x1.00000000000000000000000001p+0, false), -+ TEST ("1.0000000000000000000000000000000246519032881566189191165176" -+ "65087069677287701097156968899071216583251953125", -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000001p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000000002p+0, false, -+ true, -+ 0x1.000000000000000000000000008p+0, false, -+ 0x1.000000000000000000000000008p+0, false, -+ 0x1.000000000000000000000000008p+0, false, -+ 0x1.000000000000000000000000008p+0, false, -+ true, -+ 0x1.000000000000000000000000008p+0, false, -+ 0x1.000000000000000000000000008p+0, false, -+ 0x1.000000000000000000000000008p+0, false, -+ 0x1.000000000000000000000000008p+0, false), -+ TEST ("1.0000000000000000000000000000000123259516440783094595582588" -+ "325435348386438505485784844495356082916259765625", -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000001p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.000000000000000000000000008p+0, false, -+ true, -+ 0x1.000000000000000000000000004p+0, false, -+ 0x1.000000000000000000000000004p+0, false, -+ 0x1.000000000000000000000000004p+0, false, -+ 0x1.000000000000000000000000004p+0, false), -+ TEST ("1.0000000000000000000000000000000061629758220391547297791294" -+ "1627176741932192527428924222476780414581298828125", -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000001p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.000000000000000000000000008p+0, false, -+ true, -+ 0x1.000000000000000000000000002p+0, false, -+ 0x1.000000000000000000000000002p+0, false, -+ 0x1.000000000000000000000000002p+0, false, -+ 0x1.000000000000000000000000002p+0, false), -+ TEST ("1.0000000000000000000000000000000030814879110195773648895647" -+ "08135883709660962637144621112383902072906494140625", -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000001p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.000000000000000000000000008p+0, false, -+ true, -+ 0x1.000000000000000000000000001p+0, false, -+ 0x1.000000000000000000000000001p+0, false, -+ 0x1.000000000000000000000000001p+0, false, -+ 0x1.000000000000000000000000001p+0, false), -+ TEST ("1.0000000000000000000000000000000015407439555097886824447823" -+ "540679418548304813185723105561919510364532470703125", -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000001p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.000000000000000000000000008p+0, false, -+ true, -+ 0x1.0000000000000000000000000008p+0, false, -+ 0x1.0000000000000000000000000008p+0, false, -+ 0x1.0000000000000000000000000008p+0, false, -+ 0x1.0000000000000000000000000008p+0, false), -+ TEST ("1.0000000000000000000000000000000007703719777548943412223911" -+ "7703397092741524065928615527809597551822662353515625", -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000001p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.000000000000000000000000008p+0, false, -+ true, -+ 0x1.0000000000000000000000000004p+0, false, -+ 0x1.0000000000000000000000000004p+0, false, -+ 0x1.0000000000000000000000000004p+0, false, -+ 0x1.0000000000000000000000000004p+0, false), -+ TEST ("1.0000000000000000000000000000000003851859888774471706111955" -+ "88516985463707620329643077639047987759113311767578125", -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000001p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.000000000000000000000000008p+0, false, -+ true, -+ 0x1.0000000000000000000000000002p+0, false, -+ 0x1.0000000000000000000000000002p+0, false, -+ 0x1.0000000000000000000000000002p+0, false, -+ 0x1.0000000000000000000000000002p+0, false), -+ TEST ("1.0000000000000000000000000000000001925929944387235853055977" -+ "942584927318538101648215388195239938795566558837890625", -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000001p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.000000000000000000000000008p+0, false, -+ true, -+ 0x1.0000000000000000000000000001p+0, false, -+ 0x1.0000000000000000000000000001p+0, false, -+ 0x1.0000000000000000000000000001p+0, false, -+ 0x1.0000000000000000000000000001p+0, false), -+ TEST ("1.0000000000000000000000000000000000962964972193617926527988" -+ "9712924636592690508241076940976199693977832794189453125", -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000001p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000000002p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.000000000000000000000000008p+0, false, -+ false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1p+0, false, -+ 0x1.0000000000000000000000000001p+0, false), - }; --- -2.19.1 - diff --git a/Fix-use-after-free-in-glob-when-expanding-user-bug-2.patch b/Fix-use-after-free-in-glob-when-expanding-user-bug-2.patch deleted file mode 100644 index 01563231724707d1013e69847f5661b4d1a878c3..0000000000000000000000000000000000000000 --- a/Fix-use-after-free-in-glob-when-expanding-user-bug-2.patch +++ /dev/null @@ -1,63 +0,0 @@ -From ddc650e9b3dc916eab417ce9f79e67337b05035c Mon Sep 17 00:00:00 2001 -From: Andreas Schwab -Date: Wed, 19 Feb 2020 17:21:46 +0100 -Subject: [PATCH] Fix use-after-free in glob when expanding ~user (bug 25414) - -The value of `end_name' points into the value of `dirname', thus don't -deallocate the latter before the last use of the former. ---- - posix/glob.c | 25 +++++++++++++------------ - 1 file changed, 13 insertions(+), 12 deletions(-) - -diff --git a/posix/glob.c b/posix/glob.c -index cba9cd18198..4580cefb9fa 100644 ---- a/posix/glob.c -+++ b/posix/glob.c -@@ -827,31 +827,32 @@ __glob (const char *pattern, int flags, int (*errfunc) (const char *, int), - { - size_t home_len = strlen (p->pw_dir); - size_t rest_len = end_name == NULL ? 0 : strlen (end_name); -- char *d; -+ char *d, *newp; -+ bool use_alloca = glob_use_alloca (alloca_used, -+ home_len + rest_len + 1); - -- if (__glibc_unlikely (malloc_dirname)) -- free (dirname); -- malloc_dirname = 0; -- -- if (glob_use_alloca (alloca_used, home_len + rest_len + 1)) -- dirname = alloca_account (home_len + rest_len + 1, -- alloca_used); -+ if (use_alloca) -+ newp = alloca_account (home_len + rest_len + 1, alloca_used); - else - { -- dirname = malloc (home_len + rest_len + 1); -- if (dirname == NULL) -+ newp = malloc (home_len + rest_len + 1); -+ if (newp == NULL) - { - scratch_buffer_free (&pwtmpbuf); - retval = GLOB_NOSPACE; - goto out; - } -- malloc_dirname = 1; - } -- d = mempcpy (dirname, p->pw_dir, home_len); -+ d = mempcpy (newp, p->pw_dir, home_len); - if (end_name != NULL) - d = mempcpy (d, end_name, rest_len); - *d = '\0'; - -+ if (__glibc_unlikely (malloc_dirname)) -+ free (dirname); -+ dirname = newp; -+ malloc_dirname = !use_alloca; -+ - dirlen = home_len + rest_len; - dirname_modified = 1; - } --- -2.19.1 - diff --git a/Reset-converter-state-after-second-wchar_t-output-Bu.patch b/Reset-converter-state-after-second-wchar_t-output-Bu.patch deleted file mode 100644 index b616737f44fb7fdb012dba9a945e155ee5128c0b..0000000000000000000000000000000000000000 --- a/Reset-converter-state-after-second-wchar_t-output-Bu.patch +++ /dev/null @@ -1,251 +0,0 @@ -From c580e6466d6da8262820cdbad19f32c5546226cf Mon Sep 17 00:00:00 2001 -From: Carlos O'Donell -Date: Fri, 27 Mar 2020 17:03:36 -0400 -Subject: [PATCH] Reset converter state after second wchar_t output (Bug 25734) - -An input BIG5-HKSCS character may be converted into at most 2 wchar_t -characters. After outputting the second whcar_t character (which was -saved in the converter state) we must reset the state. If we fail -to reset the state we will be stuck continually copying that -character to the output even if we have further input to consider. - -We add a new test case that covers the 4 BIG5-HKSCS characters -that may become 2 wchar_t characters. - -Reviewed-by: Tom Honermann ---- - iconvdata/Makefile | 17 ++- - iconvdata/big5hkscs.c | 3 + - iconvdata/tst-iconv-big5-hkscs-to-2ucs4.c | 160 ++++++++++++++++++++++ - 3 files changed, 176 insertions(+), 4 deletions(-) - create mode 100644 iconvdata/tst-iconv-big5-hkscs-to-2ucs4.c - -diff --git a/iconvdata/Makefile b/iconvdata/Makefile -index c83962f351b..4ec2741cdce 100644 ---- a/iconvdata/Makefile -+++ b/iconvdata/Makefile -@@ -73,7 +73,7 @@ modules.so := $(addsuffix .so, $(modules)) - ifeq (yes,$(build-shared)) - tests = bug-iconv1 bug-iconv2 tst-loading tst-e2big tst-iconv4 bug-iconv4 \ - tst-iconv6 bug-iconv5 bug-iconv6 tst-iconv7 bug-iconv8 bug-iconv9 \ -- bug-iconv10 bug-iconv11 bug-iconv12 -+ bug-iconv10 bug-iconv11 bug-iconv12 tst-iconv-big5-hkscs-to-2ucs4 - ifeq ($(have-thread-library),yes) - tests += bug-iconv3 - endif -@@ -275,16 +275,21 @@ endif - endif - endif - --include ../Rules -- - ifeq ($(run-built-tests),yes) --LOCALES := de_DE.UTF-8 -+LOCALES := \ -+ de_DE.UTF-8 \ -+ zh_HK.BIG5-HKSCS \ -+ $(NULL) -+ - include ../gen-locales.mk - - $(objpfx)bug-iconv6.out: $(gen-locales) - $(objpfx)tst-iconv7.out: $(gen-locales) -+$(objpfx)tst-iconv-big5-hkscs-to-2ucs4.out: $(gen-locales) - endif - -+include ../Rules -+ - # Set libof-* for each routine. - cpp-srcs-left := $(modules) $(generated-modules) $(libJIS-routines) \ - $(libKSC-routines) $(libGB-routines) $(libCNS-routines) \ -@@ -340,3 +345,7 @@ tst-tables-clean: - - $(objpfx)gconv-modules: gconv-modules - cat $(sysdeps-gconv-modules) $^ > $@ -+ -+# Test requires BIG5HKSCS. -+$(objpfx)tst-iconv-big5-hkscs-to-2ucs4.out: $(objpfx)gconv-modules \ -+ $(addprefix $(objpfx),$(modules.so)) -diff --git a/iconvdata/big5hkscs.c b/iconvdata/big5hkscs.c -index 01fcfeba76b..ef325119b18 100644 ---- a/iconvdata/big5hkscs.c -+++ b/iconvdata/big5hkscs.c -@@ -17895,6 +17895,9 @@ static struct - else \ - ++inptr; \ - } \ -+ else \ -+ /* Clear the queue and proceed to output the saved character. */ \ -+ *statep = 0; \ - \ - put32 (outptr, ch); \ - outptr += 4; \ -diff --git a/iconvdata/tst-iconv-big5-hkscs-to-2ucs4.c b/iconvdata/tst-iconv-big5-hkscs-to-2ucs4.c -new file mode 100644 -index 00000000000..8389adebf27 ---- /dev/null -+++ b/iconvdata/tst-iconv-big5-hkscs-to-2ucs4.c -@@ -0,0 +1,160 @@ -+/* Verify the BIG5HKSCS outputs that generate 2 wchar_t's (Bug 25734). -+ Copyright (C) 2020 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 -+ -+/* A few BIG5-HKSCS characters map in two unicode code points. -+ They are: -+ /x88/x62 => -+ /x88/x64 => -+ /x88/xa3 => -+ /x88/xa5 => -+ Each of these is special cased in iconvdata/big5hkscs.c. -+ This test ensures that we correctly reset the shift state after -+ outputting any of these characters. We do this by converting -+ each them followed by converting an ASCII character. If we fail -+ to reset the shift state (bug 25734) then we'll see the last -+ character in the queue output again. */ -+ -+/* Each test has name, input bytes, and expected wide character -+ output. */ -+struct testdata { -+ const char *name; -+ const char input[3]; -+ wchar_t expected[3]; -+}; -+ -+/* In BIG5-HKSCS (2008) there are 4 characters that generate multiple -+ wide characters. */ -+struct testdata tests[4] = { -+ /* X => X */ -+ { "", "\x88\x62\x58", { 0x00CA, 0x0304, 0x0058 } }, -+ /* X => X */ -+ { "", "\x88\x64\x58", { 0x00CA, 0x030C, 0x0058 } }, -+ /* X => X */ -+ { "", "\x88\xa3\x58", { 0x00EA, 0x0304, 0x0058 } }, -+ /* X => X */ -+ { "", "\x88\xa5\x58", { 0x00EA, 0x030C, 0x0058 } } -+}; -+ -+/* Each test is of the form: -+ - Translate first code sequence (two bytes) -+ - Translate second (zero bytes) -+ - Translate the third (one byte). */ -+static int -+check_conversion (struct testdata test) -+{ -+ int err = 0; -+ wchar_t wc; -+ mbstate_t st; -+ size_t ret; -+ const char *mbs = test.input; -+ int consumed = 0; -+ /* Input is always 3 bytes long. */ -+ int inlen = 3; -+ -+ memset (&st, 0, sizeof (st)); -+ /* First conversion: Consumes first 2 bytes. */ -+ ret = mbrtowc (&wc, mbs, inlen - consumed, &st); -+ if (ret != 2) -+ { -+ printf ("error: First conversion consumed only %zd bytes.\n", ret); -+ err++; -+ } -+ /* Advance the two consumed bytes. */ -+ mbs += ret; -+ consumed += ret; -+ if (wc != test.expected[0]) -+ { -+ printf ("error: Result of first conversion was wrong.\n"); -+ err++; -+ } -+ /* Second conversion: Consumes 0 bytes. */ -+ ret = mbrtowc (&wc, mbs, inlen - consumed, &st); -+ if (ret != 0) -+ { -+ printf ("error: Second conversion consumed only %zd bytes.\n", ret); -+ err++; -+ } -+ /* Advance the zero consumed bytes. */ -+ mbs += ret; -+ consumed += ret; -+ if (wc != test.expected[1]) -+ { -+ printf ("error: Result of second conversion was wrong.\n"); -+ err++; -+ } -+ /* After the second conversion the state of the converter should be -+ in the initial state. It is in the initial state because the two -+ input BIG5-HKSCS bytes have been consumed and the 2 wchar_t's have -+ been output. */ -+ if (mbsinit (&st) == 0) -+ { -+ printf ("error: Converter not in initial state.\n"); -+ err++; -+ } -+ /* Third conversion: Consumes 1 byte (it's an ASCII character). */ -+ ret = mbrtowc (&wc, mbs, inlen - consumed, &st); -+ if (ret != 1) -+ { -+ printf ("error: Third conversion consumed only %zd bytes.\n", ret); -+ err++; -+ } -+ /* Advance the one byte. */ -+ mbs += ret; -+ consumed += ret; -+ if (wc != test.expected[2]) -+ { -+ printf ("error: Result of third conversion was wrong.\n"); -+ err++; -+ } -+ /* Return 0 if we saw no errors. */ -+ return err; -+} -+ -+static int -+do_test (void) -+{ -+ int err = 0; -+ int ret; -+ /* Testing BIG5-HKSCS. */ -+ setlocale (LC_ALL, "zh_HK.BIG5-HKSCS"); -+ -+ /* Run all the special conversions. */ -+ for (int i = 0; i < (sizeof (tests) / sizeof (struct testdata)); i++) -+ { -+ printf ("Running test for %s\n", tests[i].name); -+ ret = check_conversion (tests[i]); -+ if (ret > 0) -+ printf ("Test %s failed.\n", tests[i].name); -+ err += ret; -+ } -+ -+ /* Fail if any conversion had an error. */ -+ if (err > 0) -+ FAIL_EXIT1 ("One or more conversions failed."); -+ -+ return 0; -+} -+ -+#include --- -2.19.1 - diff --git a/backport-posix-tst-rfc3484-Fix-compile-failure-linking-to-loc.patch b/backport-posix-tst-rfc3484-Fix-compile-failure-linking-to-loc.patch new file mode 100644 index 0000000000000000000000000000000000000000..5663bef253beba0a5865aa6d7e30ba502058bd38 --- /dev/null +++ b/backport-posix-tst-rfc3484-Fix-compile-failure-linking-to-loc.patch @@ -0,0 +1,65 @@ +From a4efbf44757477717a907078c340386146c7623f Mon Sep 17 00:00:00 2001 +From: Stafford Horne +Date: Wed, 3 Feb 2021 15:36:47 -0300 +Subject: [PATCH] posix/tst-rfc3484: Fix compile failure linking to local + __stat64 + +After 04986243d1 ("Remove internal usage of extensible stat functions") +linking the __stat64 symbol in getaddrinfo for this test fails with the +below error: + + [...] or1k-smh-linux-gnu/bin/ld: [...]/posix/tst-rfc3484.o: in function `gaiconf_reload': + [...]/sysdeps/posix/getaddrinfo.c:2136: undefined reference to `__stat64' + collect2: error: ld returned 1 exit status + +This is because __stat64 is a local symbol, the test includes the +getaddrinfo directly and fails to link against the local symbol. Fix +this by setting up an alias to the global stat64 symbol name like is +done for other local symbol usage. + +Reviewed-by: Adhemerval Zanella +--- + posix/tst-rfc3484-2.c | 1 + + posix/tst-rfc3484-3.c | 1 + + posix/tst-rfc3484.c | 1 + + 3 files changed, 3 insertions(+) + +diff --git a/posix/tst-rfc3484-2.c b/posix/tst-rfc3484-2.c +index 5f5ada9420..ce8ccd5f38 100644 +--- a/posix/tst-rfc3484-2.c ++++ b/posix/tst-rfc3484-2.c +@@ -11,6 +11,7 @@ + #define __gethostbyaddr_r gethostbyaddr_r + #define __gethostbyname2_r gethostbyname2_r + #define __qsort_r qsort_r ++#define __stat64 stat64 + + void + attribute_hidden +diff --git a/posix/tst-rfc3484-3.c b/posix/tst-rfc3484-3.c +index d9ec5cc851..ecb163963f 100644 +--- a/posix/tst-rfc3484-3.c ++++ b/posix/tst-rfc3484-3.c +@@ -11,6 +11,7 @@ + #define __gethostbyaddr_r gethostbyaddr_r + #define __gethostbyname2_r gethostbyname2_r + #define __qsort_r qsort_r ++#define __stat64 stat64 + + void + attribute_hidden +diff --git a/posix/tst-rfc3484.c b/posix/tst-rfc3484.c +index 97d065b6bf..3b2052eb54 100644 +--- a/posix/tst-rfc3484.c ++++ b/posix/tst-rfc3484.c +@@ -11,6 +11,7 @@ + #define __gethostbyaddr_r gethostbyaddr_r + #define __gethostbyname2_r gethostbyname2_r + #define __qsort_r qsort_r ++#define __stat64 stat64 + + void + attribute_hidden +-- +2.23.0 + diff --git a/build-extra-libpthreadcond-so.patch b/build-extra-libpthreadcond-so.patch index 8d80f07423b7e8d9f445e64ac1007b375c3a6c86..f3c8e7d6b39e5621c3f6de09613f4e28859eb6fc 100644 --- a/build-extra-libpthreadcond-so.patch +++ b/build-extra-libpthreadcond-so.patch @@ -1,13 +1,71 @@ -From 808cf7c45e187c1889867ac83d047abfdf81c7a3 Mon Sep 17 00:00:00 2001 -From: root -Date: Fri, 14 Aug 2020 17:41:59 +0800 -Subject: [PATCH] performance degradation in multi-core scenarios, here is an - extra libpthreadcond.so using old version of the function. you can use it by - adding LD_PRELOAD=./libpthreadcond.so in front of your program (eg: - LD_PRELOAD=./libpthreadcond.so ./test). use with-libpthreadcond to compile - it. warning:2.17 version does not meet the posix standard, you should pay - attention when using it. - https://sourceware.org/git/?p=glibc.git;a=commit;h=ed19993b5b0d05d62cc883571519a67dae481a14 +From 808cf7c45e187c1889867ac83d047abfdf81c7a3 Mon Sep 17 00:00:00 2001 +From: xuhuijie +Date: Fri, 14 Aug 2020 17:41:59 +0800 +Subject: [PATCH] build extra lipthreadcond so +performance degradation in multi-core scenarios, here is an +extra libpthreadcond.so using old version of the function. you can use it by +adding LD_PRELOAD=./libpthreadcond.so in front of your program (eg: +LD_PRELOAD=./libpthreadcond.so ./test). use with-libpthreadcond to compile +it. warning:2.17 version does not meet the posix standard, you should pay +attention when using it. +https://sourceware.org/git/?p=glibc.git;a=commit;h=ed19993b5b0d05d62cc883571519a67dae481a14 + +--- + nptl_2_17/Makefile | 52 + + nptl_2_17/bits/pthreadtypes_2_17.h | 121 ++ + nptl_2_17/bits/thread-shared-types_2_17.h | 104 ++ + nptl_2_17/build_libpthreadcondso.sh | 9 + + nptl_2_17/cancellation_2_17.c | 104 ++ + nptl_2_17/cleanup_compat_2_17.c | 50 + + nptl_2_17/libpthreadcond-aarch64.map | 8 + + nptl_2_17/libpthreadcond-x86_64.map | 8 + + nptl_2_17/pthreadP_2_17.h | 620 +++++++++ + nptl_2_17/pthread_2_17.h | 1173 ++++++++++++++++++ + nptl_2_17/pthread_cond_broadcast_2_17.c | 94 ++ + nptl_2_17/pthread_cond_destroy_2_17.c | 85 ++ + nptl_2_17/pthread_cond_init_2_17.c | 50 + + nptl_2_17/pthread_cond_signal_2_17.c | 82 ++ + nptl_2_17/pthread_cond_timedwait_2_17.c | 268 ++++ + nptl_2_17/pthread_cond_wait_2_17.c | 231 ++++ + nptl_2_17/pthread_condattr_getclock_2_17.c | 28 + + nptl_2_17/pthread_condattr_getpshared_2_17.c | 28 + + nptl_2_17/pthread_condattr_init_2_17.c | 34 + + nptl_2_17/pthread_condattr_setclock_2_17.c | 45 + + nptl_2_17/pthread_mutex_cond_lock_2_17.c | 21 + + nptl_2_17/pthread_mutex_lock_2_17.c | 628 ++++++++++ + nptl_2_17/pthread_mutex_unlock_2_17.c | 360 ++++++ + nptl_2_17/pthreadtypes_2_17.h | 179 +++ + nptl_2_17/tpp_2_17.c | 195 +++ + nptl_2_17/unwind_2_17.c | 138 +++ + nptl_2_17/vars_2_17.c | 43 + + 27 files changed, 4758 insertions(+) + create mode 100644 nptl_2_17/Makefile + create mode 100644 nptl_2_17/bits/pthreadtypes_2_17.h + create mode 100644 nptl_2_17/bits/thread-shared-types_2_17.h + create mode 100644 nptl_2_17/build_libpthreadcondso.sh + create mode 100644 nptl_2_17/cancellation_2_17.c + create mode 100644 nptl_2_17/cleanup_compat_2_17.c + create mode 100644 nptl_2_17/libpthreadcond-aarch64.map + create mode 100644 nptl_2_17/libpthreadcond-x86_64.map + create mode 100644 nptl_2_17/pthreadP_2_17.h + create mode 100644 nptl_2_17/pthread_2_17.h + create mode 100644 nptl_2_17/pthread_cond_broadcast_2_17.c + create mode 100644 nptl_2_17/pthread_cond_destroy_2_17.c + create mode 100644 nptl_2_17/pthread_cond_init_2_17.c + create mode 100644 nptl_2_17/pthread_cond_signal_2_17.c + create mode 100644 nptl_2_17/pthread_cond_timedwait_2_17.c + create mode 100644 nptl_2_17/pthread_cond_wait_2_17.c + create mode 100644 nptl_2_17/pthread_condattr_getclock_2_17.c + create mode 100644 nptl_2_17/pthread_condattr_getpshared_2_17.c + create mode 100644 nptl_2_17/pthread_condattr_init_2_17.c + create mode 100644 nptl_2_17/pthread_condattr_setclock_2_17.c + create mode 100644 nptl_2_17/pthread_mutex_cond_lock_2_17.c + create mode 100644 nptl_2_17/pthread_mutex_lock_2_17.c + create mode 100644 nptl_2_17/pthread_mutex_unlock_2_17.c + create mode 100644 nptl_2_17/pthreadtypes_2_17.h + create mode 100644 nptl_2_17/tpp_2_17.c + create mode 100644 nptl_2_17/unwind_2_17.c + create mode 100644 nptl_2_17/vars_2_17.c diff --git a/nptl_2_17/Makefile b/nptl_2_17/Makefile diff --git a/elf-Allow-dlopen-of-filter-object-to-work-BZ-16272.patch b/elf-Allow-dlopen-of-filter-object-to-work-BZ-16272.patch deleted file mode 100644 index cea541de47e7df3bd37e9e0697d44ff1141cae48..0000000000000000000000000000000000000000 --- a/elf-Allow-dlopen-of-filter-object-to-work-BZ-16272.patch +++ /dev/null @@ -1,537 +0,0 @@ -From eb447b7b4bd6177f876ba9420ad9e048c27bae91 Mon Sep 17 00:00:00 2001 -From: David Kilroy -Date: Wed, 12 Feb 2020 14:28:15 -0300 -Subject: [PATCH] elf: Allow dlopen of filter object to work [BZ #16272] - -There are two fixes that are needed to be able to dlopen filter -objects. First _dl_map_object_deps cannot assume that map will be at -the beginning of l_searchlist.r_list[], as filtees are inserted before -map. Secondly dl_open_worker needs to ensure that filtees get -relocated. - -In _dl_map_object_deps: - -* avoiding removing relocation dependencies of map by setting - l_reserved to 0 and otherwise processing the rest of the search - list. - -* ensure that map remains at the beginning of l_initfini - the list - of things that need initialisation (and destruction). Do this by - splitting the copy up. This may not be required, but matches the - initialization order without dlopen. - -Modify dl_open_worker to relocate the objects in new->l_inifini. -new->l_initfini is constructed in _dl_map_object_deps, and lists the -objects that need initialization and destruction. Originally the list -of objects in new->l_next are relocated. All of these objects should -also be included in new->l_initfini (both lists are populated with -dependencies in _dl_map_object_deps). We can't use new->l_prev to pick -up filtees, as during a recursive dlopen from an interposed malloc -call, l->prev can contain objects that are not ready for relocation. - -Add tests to verify that symbols resolve to the filtee implementation -when auxiliary and filter objects are used, both as a normal link and -when dlopen'd. - -Tested by running the testsuite on x86_64. ---- - elf/Makefile | 18 ++++++++++++++++-- - elf/dl-deps.c | 39 ++++++++++++++++++++++++++++---------- - elf/dl-open.c | 11 +++++++---- - elf/tst-auxobj-dlopen.c | 47 ++++++++++++++++++++++++++++++++++++++++++++++ - elf/tst-auxobj.c | 42 +++++++++++++++++++++++++++++++++++++++++ - elf/tst-filterobj-aux.c | 33 ++++++++++++++++++++++++++++++++ - elf/tst-filterobj-dlopen.c | 39 ++++++++++++++++++++++++++++++++++++++ - elf/tst-filterobj-filtee.c | 27 ++++++++++++++++++++++++++ - elf/tst-filterobj-filtee.h | 24 +++++++++++++++++++++++ - elf/tst-filterobj-flt.c | 27 ++++++++++++++++++++++++++ - elf/tst-filterobj.c | 36 +++++++++++++++++++++++++++++++++++ - 11 files changed, 327 insertions(+), 16 deletions(-) - create mode 100644 elf/tst-auxobj-dlopen.c - create mode 100644 elf/tst-auxobj.c - create mode 100644 elf/tst-filterobj-aux.c - create mode 100644 elf/tst-filterobj-dlopen.c - create mode 100644 elf/tst-filterobj-filtee.c - create mode 100644 elf/tst-filterobj-filtee.h - create mode 100644 elf/tst-filterobj-flt.c - create mode 100644 elf/tst-filterobj.c - -diff --git a/elf/Makefile b/elf/Makefile -index f440488..2053c9d 100644 ---- a/elf/Makefile -+++ b/elf/Makefile -@@ -202,7 +202,8 @@ tests += restest1 preloadtest loadfail multiload origtest resolvfail \ - tst-sonamemove-link tst-sonamemove-dlopen tst-dlopen-tlsmodid \ - tst-dlopen-self tst-auditmany tst-initfinilazyfail tst-dlopenfail \ - tst-dlopenfail-2 \ -- tst-tls-ie tst-tls-ie-dlmopen -+ tst-tls-ie tst-tls-ie-dlmopen \ -+ tst-filterobj tst-filterobj-dlopen tst-auxobj tst-auxobj-dlopen - # reldep9 - tests-internal += loadtest unload unload2 circleload1 \ - neededtest neededtest2 neededtest3 neededtest4 \ -@@ -316,7 +317,8 @@ modules-names = testobj1 testobj2 testobj3 testobj4 testobj5 testobj6 \ - tst-dlopenfailmod3 tst-ldconfig-ld-mod \ - tst-tls-ie-mod0 tst-tls-ie-mod1 tst-tls-ie-mod2 \ - tst-tls-ie-mod3 tst-tls-ie-mod4 tst-tls-ie-mod5 \ -- tst-tls-ie-mod6 -+ tst-tls-ie-mod6 \ -+ tst-filterobj-flt tst-filterobj-aux tst-filterobj-filtee - # Most modules build with _ISOMAC defined, but those filtered out - # depend on internal headers. - modules-names-tests = $(filter-out ifuncmod% tst-libc_dlvsym-dso tst-tlsmod%,\ -@@ -1723,3 +1725,15 @@ $(objpfx)tst-tls-ie-dlmopen.out: \ - $(objpfx)tst-tls-ie-mod4.so \ - $(objpfx)tst-tls-ie-mod5.so \ - $(objpfx)tst-tls-ie-mod6.so -+ -+LDFLAGS-tst-filterobj-flt.so = -Wl,--filter=$(objpfx)tst-filterobj-filtee.so -+$(objpfx)tst-filterobj: $(objpfx)tst-filterobj-flt.so -+$(objpfx)tst-filterobj-dlopen: $(libdl) -+$(objpfx)tst-filterobj.out: $(objpfx)tst-filterobj-filtee.so -+$(objpfx)tst-filterobj-dlopen.out: $(objpfx)tst-filterobj-filtee.so -+ -+LDFLAGS-tst-filterobj-aux.so = -Wl,--auxiliary=$(objpfx)tst-filterobj-filtee.so -+$(objpfx)tst-auxobj: $(objpfx)tst-filterobj-aux.so -+$(objpfx)tst-auxobj-dlopen: $(libdl) -+$(objpfx)tst-auxobj.out: $(objpfx)tst-filterobj-filtee.so -+$(objpfx)tst-auxobj-dlopen.out: $(objpfx)tst-filterobj-filtee.so -diff --git a/elf/dl-deps.c b/elf/dl-deps.c -index 5103a8a..0730ea9 100644 ---- a/elf/dl-deps.c -+++ b/elf/dl-deps.c -@@ -485,14 +485,18 @@ _dl_map_object_deps (struct link_map *map, - - map->l_searchlist.r_list = &l_initfini[nlist + 1]; - map->l_searchlist.r_nlist = nlist; -+ unsigned int map_index = UINT_MAX; - - for (nlist = 0, runp = known; runp; runp = runp->next) - { - if (__builtin_expect (trace_mode, 0) && runp->map->l_faked) - /* This can happen when we trace the loading. */ - --map->l_searchlist.r_nlist; -- else -+ else { -+ if (runp->map == map) -+ map_index = nlist; - map->l_searchlist.r_list[nlist++] = runp->map; -+ } - - /* Now clear all the mark bits we set in the objects on the search list - to avoid duplicates, so the next call starts fresh. */ -@@ -550,13 +554,14 @@ Filters not supported with LD_TRACE_PRELINKING")); - } - - /* Maybe we can remove some relocation dependencies now. */ -- assert (map->l_searchlist.r_list[0] == map); - struct link_map_reldeps *l_reldeps = NULL; - if (map->l_reldeps != NULL) - { -- for (i = 1; i < nlist; ++i) -+ for (i = 0; i < nlist; ++i) - map->l_searchlist.r_list[i]->l_reserved = 1; - -+ /* Avoid removing relocation dependencies of the main binary. */ -+ map->l_reserved = 0; - struct link_map **list = &map->l_reldeps->list[0]; - for (i = 0; i < map->l_reldeps->act; ++i) - if (list[i]->l_reserved) -@@ -581,16 +586,30 @@ Filters not supported with LD_TRACE_PRELINKING")); - } - } - -- for (i = 1; i < nlist; ++i) -+ for (i = 0; i < nlist; ++i) - map->l_searchlist.r_list[i]->l_reserved = 0; - } - -- /* Sort the initializer list to take dependencies into account. The binary -- itself will always be initialize last. */ -- memcpy (l_initfini, map->l_searchlist.r_list, -- nlist * sizeof (struct link_map *)); -- /* We can skip looking for the binary itself which is at the front of -- the search list. */ -+ /* Sort the initializer list to take dependencies into account. Always -+ initialize the binary itself last. */ -+ assert (map_index < nlist); -+ if (map_index > 0) -+ { -+ /* Copy the binary into position 0. */ -+ l_initfini[0] = map->l_searchlist.r_list[map_index]; -+ -+ /* Copy the filtees. */ -+ for (i = 0; i < map_index; ++i) -+ l_initfini[i+1] = map->l_searchlist.r_list[i]; -+ -+ /* Copy the remainder. */ -+ for (i = map_index + 1; i < nlist; ++i) -+ l_initfini[i] = map->l_searchlist.r_list[i]; -+ } -+ else -+ memcpy (l_initfini, map->l_searchlist.r_list, -+ nlist * sizeof (struct link_map *)); -+ - _dl_sort_maps (&l_initfini[1], nlist - 1, NULL, false); - - /* Terminate the list of dependencies. */ -diff --git a/elf/dl-open.c b/elf/dl-open.c -index 623c975..ecb2ba9 100644 ---- a/elf/dl-open.c -+++ b/elf/dl-open.c -@@ -621,22 +621,25 @@ dl_open_worker (void *a) - allows IFUNC relocations to work and it also means copy - relocation of dependencies are if necessary overwritten. */ - unsigned int nmaps = 0; -- struct link_map *l = new; -+ unsigned int j = 0; -+ struct link_map *l = new->l_initfini[0]; - do - { - if (! l->l_real->l_relocated) - ++nmaps; -- l = l->l_next; -+ l = new->l_initfini[++j]; - } - while (l != NULL); -+ /* Stack allocation is limited by the number of loaded objects. */ - struct link_map *maps[nmaps]; - nmaps = 0; -- l = new; -+ j = 0; -+ l = new->l_initfini[0]; - do - { - if (! l->l_real->l_relocated) - maps[nmaps++] = l; -- l = l->l_next; -+ l = new->l_initfini[++j]; - } - while (l != NULL); - _dl_sort_maps (maps, nmaps, NULL, false); -diff --git a/elf/tst-auxobj-dlopen.c b/elf/tst-auxobj-dlopen.c -new file mode 100644 -index 0000000..cb54aba ---- /dev/null -+++ b/elf/tst-auxobj-dlopen.c -@@ -0,0 +1,47 @@ -+/* Test for BZ#16272, dlopen'ing an auxiliary filter object. -+ Ensure that symbols from the resolve correctly. -+ -+ Copyright (C) 2020 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 int do_test (void) -+{ -+ void *lib = xdlopen ("tst-filterobj-aux.so", RTLD_LAZY); -+ char *(*fn)(void) = xdlsym (lib, "get_text"); -+ const char* text = fn (); -+ -+ printf ("%s\n", text); -+ -+ /* Verify the text matches what we expect from the filtee */ -+ TEST_COMPARE_STRING (text, "Hello from filtee (PASS)"); -+ -+ fn = xdlsym (lib, "get_text2"); -+ text = fn (); -+ -+ printf ("%s\n", text); -+ -+ /* Verify the text matches what we expect from the auxiliary object */ -+ TEST_COMPARE_STRING (text, "Hello from auxiliary filter object (PASS)"); -+ -+ return 0; -+} -+ -+#include -diff --git a/elf/tst-auxobj.c b/elf/tst-auxobj.c -new file mode 100644 -index 0000000..bdc7713 ---- /dev/null -+++ b/elf/tst-auxobj.c -@@ -0,0 +1,42 @@ -+/* Test that symbols from auxiliary filter objects are resolved to the -+ filtee. -+ -+ Copyright (C) 2020 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 "tst-filterobj-filtee.h" -+ -+static int do_test (void) -+{ -+ const char* text = get_text (); -+ printf ("%s\n", text); -+ -+ /* Verify the text matches what we expect from the filtee */ -+ TEST_COMPARE_STRING (text, "Hello from filtee (PASS)"); -+ -+ text = get_text2 (); -+ printf ("%s\n", text); -+ -+ /* Verify the text matches what we expect from the auxiliary object */ -+ TEST_COMPARE_STRING (text, "Hello from auxiliary filter object (PASS)"); -+ -+ return 0; -+} -+ -+#include -diff --git a/elf/tst-filterobj-aux.c b/elf/tst-filterobj-aux.c -new file mode 100644 -index 0000000..0b732f2 ---- /dev/null -+++ b/elf/tst-filterobj-aux.c -@@ -0,0 +1,33 @@ -+/* Auxiliary filter object. -+ Contains symbols to be resolved in filtee, and one which doesn't. -+ -+ Copyright (C) 2020 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 "tst-filterobj-filtee.h" -+ -+/* We never want to see the output of the auxiliary object. */ -+const char *get_text (void) -+{ -+ return "Hello from auxiliary filter object (FAIL)"; -+} -+ -+/* The filtee doesn't implement this symbol, so this should resolve. */ -+const char *get_text2 (void) -+{ -+ return "Hello from auxiliary filter object (PASS)"; -+} -diff --git a/elf/tst-filterobj-dlopen.c b/elf/tst-filterobj-dlopen.c -new file mode 100644 -index 0000000..c5b5072 ---- /dev/null -+++ b/elf/tst-filterobj-dlopen.c -@@ -0,0 +1,39 @@ -+/* Test for BZ#16272, dlopen'ing a filter object. -+ Ensure that symbols from the filter object resolve to the filtee. -+ -+ Copyright (C) 2020 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 int do_test (void) -+{ -+ void *lib = xdlopen ("tst-filterobj-flt.so", RTLD_LAZY); -+ char *(*fn)(void) = xdlsym (lib, "get_text"); -+ const char* text = fn (); -+ -+ printf ("%s\n", text); -+ -+ /* Verify the text matches what we expect from the filtee */ -+ TEST_COMPARE_STRING (text, "Hello from filtee (PASS)"); -+ -+ return 0; -+} -+ -+#include -diff --git a/elf/tst-filterobj-filtee.c b/elf/tst-filterobj-filtee.c -new file mode 100644 -index 0000000..8fa557c ---- /dev/null -+++ b/elf/tst-filterobj-filtee.c -@@ -0,0 +1,27 @@ -+/* Filtee for BZ#16272 test. -+ Contains desired symbol implementations. -+ -+ Copyright (C) 2020 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 "tst-filterobj-filtee.h" -+ -+/* This is the real implementation that wants to be called */ -+const char *get_text (void) -+{ -+ return "Hello from filtee (PASS)"; -+} -diff --git a/elf/tst-filterobj-filtee.h b/elf/tst-filterobj-filtee.h -new file mode 100644 -index 0000000..46aee28 ---- /dev/null -+++ b/elf/tst-filterobj-filtee.h -@@ -0,0 +1,24 @@ -+/* Filtee header for BZ#16272 test. -+ Contains prototypes for symbols implemented in the filtee. -+ -+ Copyright (C) 2020 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 -+ . */ -+ -+const char *get_text (void); -+ -+/* For testing auxiliary filter object. */ -+const char *get_text2 (void); -diff --git a/elf/tst-filterobj-flt.c b/elf/tst-filterobj-flt.c -new file mode 100644 -index 0000000..5062654 ---- /dev/null -+++ b/elf/tst-filterobj-flt.c -@@ -0,0 +1,27 @@ -+/* Filter object for BZ#16272 test. -+ Contains symbols to be resolved in filtee. -+ -+ Copyright (C) 2020 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 "tst-filterobj-filtee.h" -+ -+/* We never want to see the output of the filter object */ -+const char *get_text (void) -+{ -+ return "Hello from filter object (FAIL)"; -+} -diff --git a/elf/tst-filterobj.c b/elf/tst-filterobj.c -new file mode 100644 -index 0000000..96bfae0 ---- /dev/null -+++ b/elf/tst-filterobj.c -@@ -0,0 +1,36 @@ -+/* Test that symbols from filter objects are resolved to the filtee. -+ -+ Copyright (C) 2020 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 "tst-filterobj-filtee.h" -+ -+static int do_test (void) -+{ -+ const char* text = get_text (); -+ -+ printf ("%s\n", text); -+ -+ /* Verify the text matches what we expect from the filtee */ -+ TEST_COMPARE_STRING (text, "Hello from filtee (PASS)"); -+ -+ return 0; -+} -+ -+#include --- -1.8.3.1 - diff --git a/glibc-2.31.tar.xz b/glibc-2.33.tar.xz similarity index 64% rename from glibc-2.31.tar.xz rename to glibc-2.33.tar.xz index 366e70ca3f7be20a3ac4142c853a890d9eb296a8..3f851d01bc79ac5291967974bf31803be01184cb 100644 Binary files a/glibc-2.31.tar.xz and b/glibc-2.33.tar.xz differ diff --git a/glibc.spec b/glibc.spec index 9c49e515260c29442663fd823562927181cc7043..750c5f1ffdc876f5ffada24f1a77d94c5c6662a9 100644 --- a/glibc.spec +++ b/glibc.spec @@ -29,7 +29,7 @@ %bcond_without testsuite %bcond_without benchtests %bcond_with bootstrap -%bcond_without werror +%bcond_with werror %bcond_without docs %bcond_with libpthreadcond @@ -59,8 +59,8 @@ # glibc - The GNU C Library (glibc) core package. ############################################################################## Name: glibc -Version: 2.31 -Release: 9 +Version: 2.33 +Release: 1 Summary: The GNU libc libraries License: %{all_license} URL: http://www.gnu.org/software/glibc/ @@ -76,28 +76,12 @@ Source6: LicenseList Patch0: glibc-1070416.patch Patch1: glibc-c-utf8-locale.patch -Patch6000: Fix-use-after-free-in-glob-when-expanding-user-bug-2.patch -Patch6001: Avoid-ldbl-96-stack-corruption-from-range-reduction-.patch -Patch6002: Reset-converter-state-after-second-wchar_t-output-Bu.patch -Patch6003: Fix-avx2-strncmp-offset-compare-condition-check-BZ-2.patch -Patch6004: nptl-wait-for-pending-setxid-request-also-in-detache.patch -Patch6005: x86-64-Use-RDX_LP-on-__x86_shared_non_temporal_thres.patch -Patch6006: x86_64-Use-xmmN-with-vpxor-to-clear-a-vector-registe.patch -Patch6007: nptl-Don-t-madvise-user-provided-stack.patch -Patch6008: turn-REP_STOSB_THRESHOLD-from-2k-to-1M.patch -Patch6009: Fix-strtod-multiple-precision-division-bug-bug-26137.patch -Patch6010: Fix-double-free-in-__printf_fp_l-bug-26214.patch -Patch6011: Fix-memory-leak-in-__printf_fp_l-bug-26215.patch -Patch6012: Fix-CVE-2020-6096-001.patch -Patch6013: Fix-CVE-2020-6096-002.patch -Patch6014: Disable-warnings-due-to-deprecated-libselinux-symbol.patch -Patch6015: rtld-Avoid-using-up-static-TLS-surplus-for-optimizat.patch -Patch6016: Fix-CVE-2020-27618-iconv-Accept-redundant-shift-sequences.patch -Patch6017: elf-Allow-dlopen-of-filter-object-to-work-BZ-16272.patch - -Patch9000: delete-no-hard-link-to-avoid-all_language-package-to.patch -Patch9001: build-extra-libpthreadcond-so.patch -Patch9002: remove-country-selection-from-tzselect.patch +Patch6000: backport-posix-tst-rfc3484-Fix-compile-failure-linking-to-loc.patch + +Patch9000: turn-REP_STOSB_THRESHOLD-from-2k-to-1M.patch +Patch9001: delete-no-hard-link-to-avoid-all_language-package-to.patch +Patch9002: build-extra-libpthreadcond-so.patch +Patch9003: remove-country-selection-from-tzselect.patch Provides: ldconfig rtld(GNU_HASH) bundled(gnulib) @@ -481,8 +465,6 @@ popd # Install glibc... ############################################################################## %install -chmod 644 sysdeps/gnu/errlist.c - %ifarch riscv64 for d in $RPM_BUILD_ROOT%{_libdir} $RPM_BUILD_ROOT/%{_lib}; do mkdir -p $d @@ -551,9 +533,6 @@ mv $RPM_BUILD_ROOT%{_prefix}/lib/locale/libc.lang . # Install configuration files for services install -p -m 644 %{SOURCE2} $RPM_BUILD_ROOT/etc/nsswitch.conf -mkdir -p $RPM_BUILD_ROOT/etc/default -install -p -m 644 nis/nss $RPM_BUILD_ROOT/etc/default/nss - # This is for ncsd - in glibc 2.2 install -m 644 nscd/nscd.conf $RPM_BUILD_ROOT/etc mkdir -p $RPM_BUILD_ROOT%{_tmpfilesdir} @@ -586,7 +565,7 @@ rm -f $RPM_BUILD_ROOT%{_prefix}/lib/debug%{_libdir}/*_p.a rm -rf $RPM_BUILD_ROOT%{_prefix}/share/zoneinfo touch -r %{SOURCE0} $RPM_BUILD_ROOT/etc/ld.so.conf -touch -r sunrpc/etc.rpc $RPM_BUILD_ROOT/etc/rpc +touch -r inet/etc.rpc $RPM_BUILD_ROOT/etc/rpc # Lastly copy some additional documentation for the packages. rm -rf documentation @@ -613,8 +592,8 @@ done for i in benchout.schema.json compare_bench.py import_bench.py validate_benchout.py; do cp benchtests/scripts/$i $RPM_BUILD_ROOT%{_prefix}/libexec/glibc-benchtests/ done +%endif -%if 0%{?_enable_debug_packages} pushd locale ln -s programs/*.gperf . popd @@ -811,6 +790,7 @@ cat > debugutils.filelist <> benchtests.fi echo "%{_prefix}/libexec/glibc-benchtests/compare_bench.py*" >> benchtests.filelist echo "%{_prefix}/libexec/glibc-benchtests/import_bench.py*" >> benchtests.filelist echo "%{_prefix}/libexec/glibc-benchtests/validate_benchout.py*" >> benchtests.filelist -%endif # 0%{?_enable_debug_packages} +%endif +%if 0%{?_enable_debug_packages} ############################################################################## # glibc debuginfo sub-package ############################################################################## @@ -870,7 +851,7 @@ for d in $(echo $remove_dir | sed 's/ /\n/g'); do sed -i "\|^%%dir $d/\?$|d" debuginfo.filelist done -%endif # %{with benchtests} +%endif # 0%{?_enable_debug_packages} ############################################################################## # Run the glibc testsuite ############################################################################## @@ -1121,8 +1102,6 @@ fi %{_prefix}/lib/locale/en_US.utf8 %{_prefix}/share/locale/zh_CN %{_prefix}/share/locale/en_GB -%dir %attr(755,root,root) /etc/default -%verify(not md5 size mtime) %config(noreplace) /etc/default/nss %files -f libc.lang all-langpacks %{_prefix}/lib/locale @@ -1191,6 +1170,9 @@ fi %doc hesiod/README.hesiod %changelog +* Fri Mar 5 2021 Wang Shuo - 2.33-1 +- upgrade glibc to 2.33-1 + * Tue Jan 26 2021 shanzhikun - 2.31-9 - elf: Allow dlopen of filter object to work [BZ #16272] https://sourceware.org/bugzilla/show_bug.cgi?id=16272 diff --git a/nptl-Don-t-madvise-user-provided-stack.patch b/nptl-Don-t-madvise-user-provided-stack.patch deleted file mode 100644 index 41937de79ab7ad15cb30f6c6de0bfbc91a91fb28..0000000000000000000000000000000000000000 --- a/nptl-Don-t-madvise-user-provided-stack.patch +++ /dev/null @@ -1,41 +0,0 @@ -From 087942251f26d5fd5802b8d14e47d460263a0c4d Mon Sep 17 00:00:00 2001 -From: Szabolcs Nagy -Date: Wed, 24 Jun 2020 07:47:15 +0100 -Subject: [PATCH] nptl: Don't madvise user provided stack - -User provided stack should not be released nor madvised at -thread exit because it's owned by the user. - -If the memory is shared or file based then MADV_DONTNEED -can have unwanted effects. With memory tagging on aarch64 -linux the tags are dropped and thus it may invalidate -pointers. - -Tested on aarch64-linux-gnu with MTE, it fixes - -FAIL: nptl/tst-stack3 -FAIL: nptl/tst-stack3-mem - ---- - nptl/pthread_create.c | 5 +++-- - 1 file changed, 3 insertions(+), 2 deletions(-) - -diff --git a/nptl/pthread_create.c b/nptl/pthread_create.c -index 179f07a1..00931c19 100644 ---- a/nptl/pthread_create.c -+++ b/nptl/pthread_create.c -@@ -564,8 +564,9 @@ START_THREAD_DEFN - } - #endif - -- advise_stack_range (pd->stackblock, pd->stackblock_size, (uintptr_t) pd, -- pd->guardsize); -+ if (!pd->user_stack) -+ advise_stack_range (pd->stackblock, pd->stackblock_size, (uintptr_t) pd, -+ pd->guardsize); - - if (__glibc_unlikely (pd->cancelhandling & SETXID_BITMASK)) - { --- -2.19.1 - diff --git a/nptl-wait-for-pending-setxid-request-also-in-detache.patch b/nptl-wait-for-pending-setxid-request-also-in-detache.patch deleted file mode 100644 index 604e0b7d1eacb7aefcf304d717e36f2ad08f9fd8..0000000000000000000000000000000000000000 --- a/nptl-wait-for-pending-setxid-request-also-in-detache.patch +++ /dev/null @@ -1,52 +0,0 @@ -From 4cab20fa49b3ea3e3454fdc4f13bf3828d8efd19 Mon Sep 17 00:00:00 2001 -From: Andreas Schwab -Date: Thu, 7 May 2020 15:50:09 +0200 -Subject: [PATCH] nptl: wait for pending setxid request also in detached thread - (bug 25942) - -There is a race between __nptl_setxid and exiting detached thread, which -causes a deadlock on stack_cache_lock. The deadlock happens in this -state: - -T1: setgroups -> __nptl_setxid (holding stack_cache_lock, waiting on cmdp->cntr == 0) -T2 (detached, exiting): start_thread -> __deallocate_stack (waiting on stack_cache_lock) -more threads waiting on stack_cache_lock in pthread_create - -For non-detached threads, start_thread waits for its own setxid handler to -finish before exiting. Do this for detached threads as well. ---- - nptl/pthread_create.c | 11 ++++++----- - 1 file changed, 6 insertions(+), 5 deletions(-) - -diff --git a/nptl/pthread_create.c b/nptl/pthread_create.c -index afd379e89a..a43089065c 100644 ---- a/nptl/pthread_create.c -+++ b/nptl/pthread_create.c -@@ -567,11 +567,7 @@ START_THREAD_DEFN - advise_stack_range (pd->stackblock, pd->stackblock_size, (uintptr_t) pd, - pd->guardsize); - -- /* If the thread is detached free the TCB. */ -- if (IS_DETACHED (pd)) -- /* Free the TCB. */ -- __free_tcb (pd); -- else if (__glibc_unlikely (pd->cancelhandling & SETXID_BITMASK)) -+ if (__glibc_unlikely (pd->cancelhandling & SETXID_BITMASK)) - { - /* Some other thread might call any of the setXid functions and expect - us to reply. In this case wait until we did that. */ -@@ -587,6 +583,11 @@ START_THREAD_DEFN - pd->setxid_futex = 0; - } - -+ /* If the thread is detached free the TCB. */ -+ if (IS_DETACHED (pd)) -+ /* Free the TCB. */ -+ __free_tcb (pd); -+ - /* We cannot call '_exit' here. '_exit' will terminate the process. - - The 'exit' implementation in the kernel will signal when the --- -2.19.1 - diff --git a/rtld-Avoid-using-up-static-TLS-surplus-for-optimizat.patch b/rtld-Avoid-using-up-static-TLS-surplus-for-optimizat.patch deleted file mode 100644 index d70be0beed3df7bfb68b9d56b97b1f5bd252a97f..0000000000000000000000000000000000000000 --- a/rtld-Avoid-using-up-static-TLS-surplus-for-optimizat.patch +++ /dev/null @@ -1,586 +0,0 @@ -From ffb17e7ba3a5ba9632cee97330b325072fbe41dd Mon Sep 17 00:00:00 2001 -From: Szabolcs Nagy -Date: Wed, 10 Jun 2020 13:40:40 +0100 -Subject: [PATCH] rtld: Avoid using up static TLS surplus for optimizations [BZ - #25051] - -On some targets static TLS surplus area can be used opportunistically -for dynamically loaded modules such that the TLS access then becomes -faster (TLSDESC and powerpc TLS optimization). However we don't want -all surplus TLS to be used for this optimization because dynamically -loaded modules with initial-exec model TLS can only use surplus TLS. - -The new contract for surplus static TLS use is: - -- libc.so can have up to 192 bytes of IE TLS, -- other system libraries together can have up to 144 bytes of IE TLS. -- Some "optional" static TLS is available for opportunistic use. - -The optional TLS is now tunable: rtld.optional_static_tls, so users -can directly affect the allocated static TLS size. (Note that module -unloading with dlclose does not reclaim static TLS. After the optional -TLS runs out, TLS access is no longer optimized to use static TLS.) - -The default setting of rtld.optional_static_tls is 512 so the surplus -TLS is 3*192 + 4*144 + 512 = 1664 by default, the same as before. - -Fixes BZ #25051. - -Tested on aarch64-linux-gnu and x86_64-linux-gnu. - -Reviewed-by: Carlos O'Donell ---- - csu/libc-tls.c | 3 ++ - elf/Makefile | 29 +++++++++++- - elf/dl-reloc.c | 37 +++++++++++---- - elf/dl-tls.c | 9 ++-- - elf/dl-tunables.list | 5 ++ - elf/dynamic-link.h | 5 +- - elf/tst-tls-ie-dlmopen.c | 112 +++++++++++++++++++++++++++++++++++++++++++++ - elf/tst-tls-ie-mod.h | 40 ++++++++++++++++ - elf/tst-tls-ie-mod0.c | 4 ++ - elf/tst-tls-ie-mod1.c | 4 ++ - elf/tst-tls-ie-mod2.c | 4 ++ - elf/tst-tls-ie-mod3.c | 4 ++ - elf/tst-tls-ie-mod4.c | 4 ++ - elf/tst-tls-ie-mod5.c | 4 ++ - elf/tst-tls-ie-mod6.c | 4 ++ - elf/tst-tls-ie.c | 111 ++++++++++++++++++++++++++++++++++++++++++++ - manual/tunables.texi | 17 +++++++ - sysdeps/generic/ldsodefs.h | 3 ++ - 18 files changed, 382 insertions(+), 17 deletions(-) - create mode 100644 elf/tst-tls-ie-dlmopen.c - create mode 100644 elf/tst-tls-ie-mod.h - create mode 100644 elf/tst-tls-ie-mod0.c - create mode 100644 elf/tst-tls-ie-mod1.c - create mode 100644 elf/tst-tls-ie-mod2.c - create mode 100644 elf/tst-tls-ie-mod3.c - create mode 100644 elf/tst-tls-ie-mod4.c - create mode 100644 elf/tst-tls-ie-mod5.c - create mode 100644 elf/tst-tls-ie-mod6.c - create mode 100644 elf/tst-tls-ie.c - -diff --git a/csu/libc-tls.c b/csu/libc-tls.c -index 28a7944..1b68d71 100644 ---- a/csu/libc-tls.c -+++ b/csu/libc-tls.c -@@ -59,6 +59,9 @@ size_t _dl_tls_static_size = 2048; - size_t _dl_tls_static_used; - /* Alignment requirement of the static TLS block. */ - size_t _dl_tls_static_align; -+/* Remaining amount of static TLS that may be used for optimizing -+ dynamic TLS access (e.g. with TLSDESC). */ -+size_t _dl_tls_static_optional = 512; - - /* Generation counter for the dtv. */ - size_t _dl_tls_generation; -diff --git a/elf/Makefile b/elf/Makefile -index 632a4d8..f440488 100644 ---- a/elf/Makefile -+++ b/elf/Makefile -@@ -201,7 +201,8 @@ tests += restest1 preloadtest loadfail multiload origtest resolvfail \ - tst-unwind-ctor tst-unwind-main tst-audit13 \ - tst-sonamemove-link tst-sonamemove-dlopen tst-dlopen-tlsmodid \ - tst-dlopen-self tst-auditmany tst-initfinilazyfail tst-dlopenfail \ -- tst-dlopenfail-2 -+ tst-dlopenfail-2 \ -+ tst-tls-ie tst-tls-ie-dlmopen - # reldep9 - tests-internal += loadtest unload unload2 circleload1 \ - neededtest neededtest2 neededtest3 neededtest4 \ -@@ -312,7 +313,10 @@ modules-names = testobj1 testobj2 testobj3 testobj4 testobj5 testobj6 \ - tst-auditmanymod7 tst-auditmanymod8 tst-auditmanymod9 \ - tst-initlazyfailmod tst-finilazyfailmod \ - tst-dlopenfailmod1 tst-dlopenfaillinkmod tst-dlopenfailmod2 \ -- tst-dlopenfailmod3 tst-ldconfig-ld-mod -+ tst-dlopenfailmod3 tst-ldconfig-ld-mod \ -+ tst-tls-ie-mod0 tst-tls-ie-mod1 tst-tls-ie-mod2 \ -+ tst-tls-ie-mod3 tst-tls-ie-mod4 tst-tls-ie-mod5 \ -+ tst-tls-ie-mod6 - # Most modules build with _ISOMAC defined, but those filtered out - # depend on internal headers. - modules-names-tests = $(filter-out ifuncmod% tst-libc_dlvsym-dso tst-tlsmod%,\ -@@ -1699,3 +1703,23 @@ LDFLAGS-tst-dlopen-nodelete-reloc-mod17.so = -Wl,--no-as-needed - - $(objpfx)tst-ldconfig-ld_so_conf-update.out: $(objpfx)tst-ldconfig-ld-mod.so - $(objpfx)tst-ldconfig-ld_so_conf-update: $(libdl) -+ -+$(objpfx)tst-tls-ie: $(libdl) $(shared-thread-library) -+$(objpfx)tst-tls-ie.out: \ -+ $(objpfx)tst-tls-ie-mod0.so \ -+ $(objpfx)tst-tls-ie-mod1.so \ -+ $(objpfx)tst-tls-ie-mod2.so \ -+ $(objpfx)tst-tls-ie-mod3.so \ -+ $(objpfx)tst-tls-ie-mod4.so \ -+ $(objpfx)tst-tls-ie-mod5.so \ -+ $(objpfx)tst-tls-ie-mod6.so -+ -+$(objpfx)tst-tls-ie-dlmopen: $(libdl) $(shared-thread-library) -+$(objpfx)tst-tls-ie-dlmopen.out: \ -+ $(objpfx)tst-tls-ie-mod0.so \ -+ $(objpfx)tst-tls-ie-mod1.so \ -+ $(objpfx)tst-tls-ie-mod2.so \ -+ $(objpfx)tst-tls-ie-mod3.so \ -+ $(objpfx)tst-tls-ie-mod4.so \ -+ $(objpfx)tst-tls-ie-mod5.so \ -+ $(objpfx)tst-tls-ie-mod6.so -diff --git a/elf/dl-reloc.c b/elf/dl-reloc.c -index ffcc84d..6d32e49 100644 ---- a/elf/dl-reloc.c -+++ b/elf/dl-reloc.c -@@ -39,13 +39,16 @@ - /* We are trying to perform a static TLS relocation in MAP, but it was - dynamically loaded. This can only work if there is enough surplus in - the static TLS area already allocated for each running thread. If this -- object's TLS segment is too big to fit, we fail. If it fits, -- we set MAP->l_tls_offset and return. -- This function intentionally does not return any value but signals error -- directly, as static TLS should be rare and code handling it should -- not be inlined as much as possible. */ -+ object's TLS segment is too big to fit, we fail with -1. If it fits, -+ we set MAP->l_tls_offset and return 0. -+ A portion of the surplus static TLS can be optionally used to optimize -+ dynamic TLS access (with TLSDESC or powerpc TLS optimizations). -+ If OPTIONAL is true then TLS is allocated for such optimization and -+ the caller must have a fallback in case the optional portion of surplus -+ TLS runs out. If OPTIONAL is false then the entire surplus TLS area is -+ considered and the allocation only fails if that runs out. */ - int --_dl_try_allocate_static_tls (struct link_map *map) -+_dl_try_allocate_static_tls (struct link_map *map, bool optional) - { - /* If we've already used the variable with dynamic access, or if the - alignment requirements are too high, fail. */ -@@ -68,8 +71,14 @@ _dl_try_allocate_static_tls (struct link_map *map) - - size_t n = (freebytes - blsize) / map->l_tls_align; - -- size_t offset = GL(dl_tls_static_used) + (freebytes - n * map->l_tls_align -- - map->l_tls_firstbyte_offset); -+ /* Account optional static TLS surplus usage. */ -+ size_t use = freebytes - n * map->l_tls_align - map->l_tls_firstbyte_offset; -+ if (optional && use > GL(dl_tls_static_optional)) -+ goto fail; -+ else if (optional) -+ GL(dl_tls_static_optional) -= use; -+ -+ size_t offset = GL(dl_tls_static_used) + use; - - map->l_tls_offset = GL(dl_tls_static_used) = offset; - #elif TLS_DTV_AT_TP -@@ -83,6 +92,13 @@ _dl_try_allocate_static_tls (struct link_map *map) - if (used > GL(dl_tls_static_size)) - goto fail; - -+ /* Account optional static TLS surplus usage. */ -+ size_t use = used - GL(dl_tls_static_used); -+ if (optional && use > GL(dl_tls_static_optional)) -+ goto fail; -+ else if (optional) -+ GL(dl_tls_static_optional) -= use; -+ - map->l_tls_offset = offset; - map->l_tls_firstbyte_offset = GL(dl_tls_static_used); - GL(dl_tls_static_used) = used; -@@ -110,12 +126,15 @@ _dl_try_allocate_static_tls (struct link_map *map) - return 0; - } - -+/* This function intentionally does not return any value but signals error -+ directly, as static TLS should be rare and code handling it should -+ not be inlined as much as possible. */ - void - __attribute_noinline__ - _dl_allocate_static_tls (struct link_map *map) - { - if (map->l_tls_offset == FORCED_DYNAMIC_TLS_OFFSET -- || _dl_try_allocate_static_tls (map)) -+ || _dl_try_allocate_static_tls (map, false)) - { - _dl_signal_error (0, map->l_name, NULL, N_("\ - cannot allocate memory in static TLS block")); -diff --git a/elf/dynamic-link.h b/elf/dynamic-link.h -index bb7a66f..6727233 100644 ---- a/elf/dynamic-link.h -+++ b/elf/dynamic-link.h -@@ -40,9 +40,10 @@ - (__builtin_expect ((sym_map)->l_tls_offset \ - != FORCED_DYNAMIC_TLS_OFFSET, 1) \ - && (__builtin_expect ((sym_map)->l_tls_offset != NO_TLS_OFFSET, 1) \ -- || _dl_try_allocate_static_tls (sym_map) == 0)) -+ || _dl_try_allocate_static_tls (sym_map, true) == 0)) - --int _dl_try_allocate_static_tls (struct link_map *map) attribute_hidden; -+int _dl_try_allocate_static_tls (struct link_map *map, bool optional) -+ attribute_hidden; - - #include - -diff --git a/elf/tst-tls-ie-dlmopen.c b/elf/tst-tls-ie-dlmopen.c -new file mode 100644 -index 0000000..c7b5c68 ---- /dev/null -+++ b/elf/tst-tls-ie-dlmopen.c -@@ -0,0 +1,112 @@ -+/* Test dlopen of modules with initial-exec TLS after dlmopen. -+ Copyright (C) 2016-2020 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 -+ . */ -+ -+/* This test tries to check that surplus static TLS is not used up for -+ dynamic TLS optimizations and 4*144 = 576 bytes of static TLS is -+ still available for dlopening modules with initial-exec TLS after 3 -+ new dlmopen namespaces are created. It depends on rtld.nns=4 and -+ rtld.optional_static_tls=512 tunable settings. */ -+ -+#include -+#include -+#include -+#include -+#include -+ -+static int do_test (void); -+#include -+#include -+#include -+#include -+ -+/* Have some big TLS in the main exe: should not use surplus TLS. */ -+__thread char maintls[1000]; -+ -+static pthread_barrier_t barrier; -+ -+/* Forces multi-threaded behaviour. */ -+static void * -+blocked_thread_func (void *closure) -+{ -+ xpthread_barrier_wait (&barrier); -+ /* TLS load and access tests run here in the main thread. */ -+ xpthread_barrier_wait (&barrier); -+ return NULL; -+} -+ -+static void * -+load_and_access (Lmid_t lmid, const char *mod, const char *func) -+{ -+ /* Load module with TLS. */ -+ void *p = xdlmopen (lmid, mod, RTLD_NOW); -+ /* Access the TLS variable to ensure it is allocated. */ -+ void (*f) (void) = (void (*) (void))xdlsym (p, func); -+ f (); -+ return p; -+} -+ -+static int -+do_test (void) -+{ -+ void *mods[5]; -+ -+ { -+ int ret = pthread_barrier_init (&barrier, NULL, 2); -+ if (ret != 0) -+ { -+ errno = ret; -+ printf ("error: pthread_barrier_init: %m\n"); -+ exit (1); -+ } -+ } -+ -+ pthread_t blocked_thread = xpthread_create (NULL, blocked_thread_func, NULL); -+ xpthread_barrier_wait (&barrier); -+ -+ printf ("maintls[%zu]:\t %p .. %p\n", -+ sizeof maintls, maintls, maintls + sizeof maintls); -+ memset (maintls, 1, sizeof maintls); -+ -+ /* Load modules with dynamic TLS (use surplus static TLS for libc -+ in new namespaces and may be for TLS optimizations too). */ -+ mods[0] = load_and_access (LM_ID_BASE, "tst-tls-ie-mod0.so", "access0"); -+ mods[1] = load_and_access (LM_ID_NEWLM, "tst-tls-ie-mod1.so", "access1"); -+ mods[2] = load_and_access (LM_ID_NEWLM, "tst-tls-ie-mod2.so", "access2"); -+ mods[3] = load_and_access (LM_ID_NEWLM, "tst-tls-ie-mod3.so", "access3"); -+ /* Load modules with initial-exec TLS (can only use surplus static TLS). */ -+ mods[4] = load_and_access (LM_ID_BASE, "tst-tls-ie-mod6.so", "access6"); -+ -+ /* Here 576 bytes + 3 * libc use of surplus static TLS is in use so less -+ than 1024 bytes are available (exact number depends on TLS optimizations -+ and the libc TLS use). */ -+ printf ("The next dlmopen should fail...\n"); -+ void *p = dlmopen (LM_ID_BASE, "tst-tls-ie-mod4.so", RTLD_NOW); -+ if (p != NULL) -+ FAIL_EXIT1 ("error: expected dlmopen to fail because there is " -+ "not enough surplus static TLS.\n"); -+ printf ("...OK failed with: %s.\n", dlerror ()); -+ -+ xpthread_barrier_wait (&barrier); -+ xpthread_join (blocked_thread); -+ -+ /* Close the modules. */ -+ for (int i = 0; i < 5; ++i) -+ xdlclose (mods[i]); -+ -+ return 0; -+} -diff --git a/elf/tst-tls-ie-mod.h b/elf/tst-tls-ie-mod.h -new file mode 100644 -index 0000000..46b362a ---- /dev/null -+++ b/elf/tst-tls-ie-mod.h -@@ -0,0 +1,40 @@ -+/* Module with specified TLS size and model. -+ Copyright (C) 2020 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 -+ . */ -+ -+/* This file is parameterized by macros N, SIZE and MODEL. */ -+ -+#include -+#include -+ -+#define CONCATX(x, y) x ## y -+#define CONCAT(x, y) CONCATX (x, y) -+#define STRX(x) #x -+#define STR(x) STRX (x) -+ -+#define VAR CONCAT (var, N) -+ -+__attribute__ ((aligned (8), tls_model (MODEL))) -+__thread char VAR[SIZE]; -+ -+void -+CONCAT (access, N) (void) -+{ -+ printf (STR (VAR) "[%d]:\t %p .. %p " MODEL "\n", SIZE, VAR, VAR + SIZE); -+ fflush (stdout); -+ memset (VAR, 1, SIZE); -+} -diff --git a/elf/tst-tls-ie-mod0.c b/elf/tst-tls-ie-mod0.c -new file mode 100644 -index 0000000..2450686 ---- /dev/null -+++ b/elf/tst-tls-ie-mod0.c -@@ -0,0 +1,4 @@ -+#define N 0 -+#define SIZE 480 -+#define MODEL "global-dynamic" -+#include "tst-tls-ie-mod.h" -diff --git a/elf/tst-tls-ie-mod1.c b/elf/tst-tls-ie-mod1.c -new file mode 100644 -index 0000000..849ff91 ---- /dev/null -+++ b/elf/tst-tls-ie-mod1.c -@@ -0,0 +1,4 @@ -+#define N 1 -+#define SIZE 120 -+#define MODEL "global-dynamic" -+#include "tst-tls-ie-mod.h" -diff --git a/elf/tst-tls-ie-mod2.c b/elf/tst-tls-ie-mod2.c -new file mode 100644 -index 0000000..23915ab ---- /dev/null -+++ b/elf/tst-tls-ie-mod2.c -@@ -0,0 +1,4 @@ -+#define N 2 -+#define SIZE 24 -+#define MODEL "global-dynamic" -+#include "tst-tls-ie-mod.h" -diff --git a/elf/tst-tls-ie-mod3.c b/elf/tst-tls-ie-mod3.c -new file mode 100644 -index 0000000..5395f84 ---- /dev/null -+++ b/elf/tst-tls-ie-mod3.c -@@ -0,0 +1,4 @@ -+#define N 3 -+#define SIZE 16 -+#define MODEL "global-dynamic" -+#include "tst-tls-ie-mod.h" -diff --git a/elf/tst-tls-ie-mod4.c b/elf/tst-tls-ie-mod4.c -new file mode 100644 -index 0000000..93ac2ea ---- /dev/null -+++ b/elf/tst-tls-ie-mod4.c -@@ -0,0 +1,4 @@ -+#define N 4 -+#define SIZE 1024 -+#define MODEL "initial-exec" -+#include "tst-tls-ie-mod.h" -diff --git a/elf/tst-tls-ie-mod5.c b/elf/tst-tls-ie-mod5.c -new file mode 100644 -index 0000000..84b3fd2 ---- /dev/null -+++ b/elf/tst-tls-ie-mod5.c -@@ -0,0 +1,4 @@ -+#define N 5 -+#define SIZE 128 -+#define MODEL "initial-exec" -+#include "tst-tls-ie-mod.h" -diff --git a/elf/tst-tls-ie-mod6.c b/elf/tst-tls-ie-mod6.c -new file mode 100644 -index 0000000..c736bf0 ---- /dev/null -+++ b/elf/tst-tls-ie-mod6.c -@@ -0,0 +1,4 @@ -+#define N 6 -+#define SIZE 576 -+#define MODEL "initial-exec" -+#include "tst-tls-ie-mod.h" -diff --git a/elf/tst-tls-ie.c b/elf/tst-tls-ie.c -new file mode 100644 -index 0000000..2dc0894 ---- /dev/null -+++ b/elf/tst-tls-ie.c -@@ -0,0 +1,111 @@ -+/* Test dlopen of modules with initial-exec TLS. -+ Copyright (C) 2016-2020 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 -+ . */ -+ -+/* This test tries to check that surplus static TLS is not used up for -+ dynamic TLS optimizations and 3*192 + 4*144 = 1152 bytes of static -+ TLS is available for dlopening modules with initial-exec TLS. It -+ depends on rtld.nns=4 and rtld.optional_static_tls=512 tunable setting. */ -+ -+#include -+#include -+#include -+#include -+#include -+ -+static int do_test (void); -+#include -+#include -+#include -+#include -+ -+/* Have some big TLS in the main exe: should not use surplus TLS. */ -+__thread char maintls[1000]; -+ -+static pthread_barrier_t barrier; -+ -+/* Forces multi-threaded behaviour. */ -+static void * -+blocked_thread_func (void *closure) -+{ -+ xpthread_barrier_wait (&barrier); -+ /* TLS load and access tests run here in the main thread. */ -+ xpthread_barrier_wait (&barrier); -+ return NULL; -+} -+ -+static void * -+load_and_access (const char *mod, const char *func) -+{ -+ /* Load module with TLS. */ -+ void *p = xdlopen (mod, RTLD_NOW); -+ /* Access the TLS variable to ensure it is allocated. */ -+ void (*f) (void) = (void (*) (void))xdlsym (p, func); -+ f (); -+ return p; -+} -+ -+static int -+do_test (void) -+{ -+ void *mods[6]; -+ -+ { -+ int ret = pthread_barrier_init (&barrier, NULL, 2); -+ if (ret != 0) -+ { -+ errno = ret; -+ printf ("error: pthread_barrier_init: %m\n"); -+ exit (1); -+ } -+ } -+ -+ pthread_t blocked_thread = xpthread_create (NULL, blocked_thread_func, NULL); -+ xpthread_barrier_wait (&barrier); -+ -+ printf ("maintls[%zu]:\t %p .. %p\n", -+ sizeof maintls, maintls, maintls + sizeof maintls); -+ memset (maintls, 1, sizeof maintls); -+ -+ /* Load modules with dynamic TLS (may use surplus static TLS -+ opportunistically). */ -+ mods[0] = load_and_access ("tst-tls-ie-mod0.so", "access0"); -+ mods[1] = load_and_access ("tst-tls-ie-mod1.so", "access1"); -+ mods[2] = load_and_access ("tst-tls-ie-mod2.so", "access2"); -+ mods[3] = load_and_access ("tst-tls-ie-mod3.so", "access3"); -+ /* Load modules with initial-exec TLS (can only use surplus static TLS). */ -+ mods[4] = load_and_access ("tst-tls-ie-mod4.so", "access4"); -+ mods[5] = load_and_access ("tst-tls-ie-mod5.so", "access5"); -+ -+ /* Here 1152 bytes of surplus static TLS is in use and at most 512 bytes -+ are available (depending on TLS optimizations). */ -+ printf ("The next dlopen should fail...\n"); -+ void *p = dlopen ("tst-tls-ie-mod6.so", RTLD_NOW); -+ if (p != NULL) -+ FAIL_EXIT1 ("error: expected dlopen to fail because there is " -+ "not enough surplus static TLS.\n"); -+ printf ("...OK failed with: %s.\n", dlerror ()); -+ -+ xpthread_barrier_wait (&barrier); -+ xpthread_join (blocked_thread); -+ -+ /* Close the modules. */ -+ for (int i = 0; i < 6; ++i) -+ xdlclose (mods[i]); -+ -+ return 0; -+} -diff --git a/sysdeps/generic/ldsodefs.h b/sysdeps/generic/ldsodefs.h -index eb3ef5b..ba114ab 100644 ---- a/sysdeps/generic/ldsodefs.h -+++ b/sysdeps/generic/ldsodefs.h -@@ -442,6 +442,9 @@ struct rtld_global - EXTERN size_t _dl_tls_static_used; - /* Alignment requirement of the static TLS block. */ - EXTERN size_t _dl_tls_static_align; -+ /* Remaining amount of static TLS that may be used for optimizing -+ dynamic TLS access (e.g. with TLSDESC). */ -+ EXTERN size_t _dl_tls_static_optional; - - /* Number of additional entries in the slotinfo array of each slotinfo - list element. A large number makes it almost certain take we never --- -1.8.3.1 - diff --git a/turn-REP_STOSB_THRESHOLD-from-2k-to-1M.patch b/turn-REP_STOSB_THRESHOLD-from-2k-to-1M.patch index 5b766cf3b3cf5869de61bf1243359a0457fcc63f..17bebd359694c399376c47de17087372661c9aad 100644 --- a/turn-REP_STOSB_THRESHOLD-from-2k-to-1M.patch +++ b/turn-REP_STOSB_THRESHOLD-from-2k-to-1M.patch @@ -1,25 +1,45 @@ -From 44314a556239a7524b5a6451025737c1bdbb1cd0 Mon Sep 17 00:00:00 2001 -From: Wang Shuo -Date: Thu, 21 May 2020 11:23:06 +0800 +From dc8c5d3ba8ec3c2de8ca0898d682d89492d275b3 Mon Sep 17 00:00:00 2001 +From: Shuo Wang +Date: Tue, 2 Mar 2021 10:41:09 +0800 Subject: [PATCH] turn REP_STOSB_THRESHOLD from 2k to 1M +REP_STOSB_THRESHOLD is designed to choose vec mov or stosb. +The default threshold (2k) will lead to performance degradation if the +memcpy size is between 2k and 1M. --- - sysdeps/x86_64/multiarch/memset-vec-unaligned-erms.S | 2 +- - 1 file changed, 1 insertion(+), 1 deletion(-) + sysdeps/x86_64/multiarch/memset-vec-unaligned-erms.S | 12 +++++++++++- + 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/sysdeps/x86_64/multiarch/memset-vec-unaligned-erms.S b/sysdeps/x86_64/multiarch/memset-vec-unaligned-erms.S -index dcd63c92..92c08eed 100644 +index faa40856..76f84748 100644 --- a/sysdeps/x86_64/multiarch/memset-vec-unaligned-erms.S +++ b/sysdeps/x86_64/multiarch/memset-vec-unaligned-erms.S -@@ -65,7 +65,7 @@ - Enhanced REP STOSB. Since the stored value is fixed, larger register - size has minimal impact on threshold. */ - #ifndef REP_STOSB_THRESHOLD --# define REP_STOSB_THRESHOLD 2048 -+# define REP_STOSB_THRESHOLD 1048576 +@@ -58,6 +58,16 @@ + # endif #endif ++/* Threshold to use Enhanced REP STOSB. Since there is overhead to set ++ up REP STOSB operation, REP STOSB isn't faster on short data. The ++ memset micro benchmark in glibc shows that 2KB is the approximate ++ value above which REP STOSB becomes faster on processors with ++ Enhanced REP STOSB. Since the stored value is fixed, larger register ++ size has minimal impact on threshold. */ ++#ifndef REP_STOSB_THRESHOLD ++# define REP_STOSB_THRESHOLD 1048576 ++#endif ++ #ifndef SECTION + # error SECTION is not defined! + #endif +@@ -171,7 +181,7 @@ ENTRY (MEMSET_SYMBOL (__memset, unaligned_erms)) + ret + + L(stosb_more_2x_vec): +- cmp __x86_rep_stosb_threshold(%rip), %RDX_LP ++ cmp $REP_STOSB_THRESHOLD, %RDX_LP + ja L(stosb) + #endif + L(more_2x_vec): -- -2.19.1 +2.23.0 diff --git a/x86-64-Use-RDX_LP-on-__x86_shared_non_temporal_thres.patch b/x86-64-Use-RDX_LP-on-__x86_shared_non_temporal_thres.patch deleted file mode 100644 index 82f84764f502ded222bd3ec439b911012154059c..0000000000000000000000000000000000000000 --- a/x86-64-Use-RDX_LP-on-__x86_shared_non_temporal_thres.patch +++ /dev/null @@ -1,50 +0,0 @@ -From 55c7bcc71b84123d5d4bd2814366a6b05fcf8ebd Mon Sep 17 00:00:00 2001 -From: "H.J. Lu" -Date: Sat, 9 May 2020 12:04:23 -0700 -Subject: [PATCH] x86-64: Use RDX_LP on __x86_shared_non_temporal_threshold [BZ - #25966] - -Since __x86_shared_non_temporal_threshold is defined as - -long int __x86_shared_non_temporal_threshold; - -and long int is 4 bytes for x32, use RDX_LP to compare against -__x86_shared_non_temporal_threshold in assembly code. ---- - sysdeps/x86_64/multiarch/memmove-vec-unaligned-erms.S | 6 +++--- - 1 file changed, 3 insertions(+), 3 deletions(-) - -diff --git a/sysdeps/x86_64/multiarch/memmove-vec-unaligned-erms.S b/sysdeps/x86_64/multiarch/memmove-vec-unaligned-erms.S -index c763b7d871..74953245aa 100644 ---- a/sysdeps/x86_64/multiarch/memmove-vec-unaligned-erms.S -+++ b/sysdeps/x86_64/multiarch/memmove-vec-unaligned-erms.S -@@ -244,7 +244,7 @@ L(return): - ret - - L(movsb): -- cmpq __x86_shared_non_temporal_threshold(%rip), %rdx -+ cmp __x86_shared_non_temporal_threshold(%rip), %RDX_LP - jae L(more_8x_vec) - cmpq %rsi, %rdi - jb 1f -@@ -402,7 +402,7 @@ L(more_8x_vec): - addq %r8, %rdx - #if (defined USE_MULTIARCH || VEC_SIZE == 16) && IS_IN (libc) - /* Check non-temporal store threshold. */ -- cmpq __x86_shared_non_temporal_threshold(%rip), %rdx -+ cmp __x86_shared_non_temporal_threshold(%rip), %RDX_LP - ja L(large_forward) - #endif - L(loop_4x_vec_forward): -@@ -454,7 +454,7 @@ L(more_8x_vec_backward): - subq %r8, %rdx - #if (defined USE_MULTIARCH || VEC_SIZE == 16) && IS_IN (libc) - /* Check non-temporal store threshold. */ -- cmpq __x86_shared_non_temporal_threshold(%rip), %rdx -+ cmp __x86_shared_non_temporal_threshold(%rip), %RDX_LP - ja L(large_backward) - #endif - L(loop_4x_vec_backward): --- -2.19.1 - diff --git a/x86_64-Use-xmmN-with-vpxor-to-clear-a-vector-registe.patch b/x86_64-Use-xmmN-with-vpxor-to-clear-a-vector-registe.patch deleted file mode 100644 index a308561bf10135dfa95db1efae74807ce97f00eb..0000000000000000000000000000000000000000 --- a/x86_64-Use-xmmN-with-vpxor-to-clear-a-vector-registe.patch +++ /dev/null @@ -1,43 +0,0 @@ -From a35a59036ebae3efcdf5e8167610e0656fca9770 Mon Sep 17 00:00:00 2001 -From: "H.J. Lu" -Date: Thu, 11 Jun 2020 12:41:18 -0700 -Subject: [PATCH] x86_64: Use %xmmN with vpxor to clear a vector register - -Since "vpxor %xmmN, %xmmN, %xmmN" clears the whole vector register, use -%xmmN, instead of %ymmN, with vpxor to clear a vector register. ---- - sysdeps/x86_64/multiarch/strcmp-avx2.S | 4 ++-- - sysdeps/x86_64/multiarch/strrchr-avx2.S | 2 +- - 2 files changed, 3 insertions(+), 3 deletions(-) - -diff --git a/sysdeps/x86_64/multiarch/strcmp-avx2.S b/sysdeps/x86_64/multiarch/strcmp-avx2.S -index 48d03a9f46..5f88a68262 100644 ---- a/sysdeps/x86_64/multiarch/strcmp-avx2.S -+++ b/sysdeps/x86_64/multiarch/strcmp-avx2.S -@@ -91,8 +91,8 @@ ENTRY (STRCMP) - # endif - movl %edi, %eax - xorl %edx, %edx -- /* Make %ymm7 all zeros in this function. */ -- vpxor %ymm7, %ymm7, %ymm7 -+ /* Make %xmm7 (%ymm7) all zeros in this function. */ -+ vpxor %xmm7, %xmm7, %xmm7 - orl %esi, %eax - andl $(PAGE_SIZE - 1), %eax - cmpl $(PAGE_SIZE - (VEC_SIZE * 4)), %eax -diff --git a/sysdeps/x86_64/multiarch/strrchr-avx2.S b/sysdeps/x86_64/multiarch/strrchr-avx2.S -index 23077b4c45..146bdd51d0 100644 ---- a/sysdeps/x86_64/multiarch/strrchr-avx2.S -+++ b/sysdeps/x86_64/multiarch/strrchr-avx2.S -@@ -44,7 +44,7 @@ ENTRY (STRRCHR) - movl %edi, %ecx - /* Broadcast CHAR to YMM4. */ - VPBROADCAST %xmm4, %ymm4 -- vpxor %ymm0, %ymm0, %ymm0 -+ vpxor %xmm0, %xmm0, %xmm0 - - /* Check if we may cross page boundary with one vector load. */ - andl $(2 * VEC_SIZE - 1), %ecx --- -2.19.1 -