diff options
415 files changed, 40559 insertions, 13049 deletions
diff --git a/ChangeLog.old/ChangeLog.29 b/ChangeLog.old/ChangeLog.29 new file mode 100644 index 0000000000..33a8ed3a35 --- /dev/null +++ b/ChangeLog.old/ChangeLog.29 @@ -0,0 +1,10379 @@ +2024-07-21 Andreas K. Hüttel <dilfridge@gentoo.org> + + COMMIT: 89d3d815ef6e84935147b683d510bacb0ba4df1d + Increase version number to 2.40 + + * include/features.h: Modified. + (__GLIBC_MINOR__): Modified. + * version.h: Modified. + (RELEASE): Modified. + (VERSION): Modified. + +2024-07-21 Andreas K. Hüttel <dilfridge@gentoo.org> + + COMMIT: 6f14eb1b1768e4b840913fa1e4c9963cd70d46ac + po/*: regenerate (only line number changes) + + * po/be.po: Modified. + * po/bg.po: Modified. + * po/ca.po: Modified. + * po/cs.po: Modified. + * po/da.po: Modified. + * po/de.po: Modified. + * po/el.po: Modified. + * po/eo.po: Modified. + * po/es.po: Modified. + * po/fi.po: Modified. + * po/fr.po: Modified. + * po/gl.po: Modified. + * po/hr.po: Modified. + * po/hu.po: Modified. + * po/ia.po: Modified. + * po/id.po: Modified. + * po/it.po: Modified. + * po/ja.po: Modified. + * po/ka.po: Modified. + * po/ko.po: Modified. + * po/lt.po: Modified. + * po/nb.po: Modified. + * po/nl.po: Modified. + * po/pl.po: Modified. + * po/pt.po: Modified. + * po/pt_BR.po: Modified. + * po/ro.po: Modified. + * po/ru.po: Modified. + * po/rw.po: Modified. + * po/sk.po: Modified. + * po/sl.po: Modified. + * po/sr.po: Modified. + * po/sv.po: Modified. + * po/tr.po: Modified. + * po/uk.po: Modified. + * po/vi.po: Modified. + * po/zh_CN.po: Modified. + * po/zh_TW.po: Modified. + +2024-07-21 Andreas K. Hüttel <dilfridge@gentoo.org> + + COMMIT: 668e14a304fb7e63dbac11ec2884eb148c9abecf + contrib.texi: Fix format of MIPS and RISC-V + + * manual/contrib.texi: Modified. + +2024-07-21 Andreas K. Hüttel <dilfridge@gentoo.org> + + COMMIT: 256574679feb0204ac859367fdbf4d91aff45d0a + libc.pot: regenerate (only line number changes) + + * po/libc.pot: Modified. + +2024-07-21 Andreas K. Hüttel <dilfridge@gentoo.org> + + COMMIT: 92eb4a10ae9d997c7a8783f7c3d8b4474b01505a + install.texi: bump "latest verified" versions + + * INSTALL: Modified. + * manual/install.texi: Modified. + +2024-07-20 Andreas K. Hüttel <dilfridge@gentoo.org> + + COMMIT: d36b481476c6bcfee565ba3bc17cdc0e66ca70ae + NEWS: drop 2.40 section "Changes to build and runtime requirements" + + * NEWS: Modified. + +2024-07-20 Andreas K. Hüttel <dilfridge@gentoo.org> + + COMMIT: 5dc1408bb5351954b7451d516c3520905702f35e + contrib.texi: update + + * manual/contrib.texi: Modified. + +2024-07-20 Andreas K. Hüttel <dilfridge@gentoo.org> + + COMMIT: 391d9041f01282d243e7d3cbd272dffea5f2313c + NEWS: add fixed security advisories list + + * NEWS: Modified. + +2024-07-20 Andreas K. Hüttel <dilfridge@gentoo.org> + + COMMIT: ad6e85aad5134a0be633b8a0463ec5e5e31fa945 + NEWS: add resolved bugs list + + * NEWS: Modified. + +2024-07-20 Andreas K. Hüttel <dilfridge@gentoo.org> + + COMMIT: fa455c3b5de21ee59b3e997f3b3f6ef3090e862a + NEWS: add more major improvements for 2.40 + + * NEWS: Modified. + +2024-07-19 Andreas K. Hüttel <dilfridge@gentoo.org> + + COMMIT: ab5748118f86a82c4a29a7476f6cc0b9c40be926 + linux: Trivial test output fix in tst-pkey + + * sysdeps/unix/sysv/linux/tst-pkey.c: Modified. + (do_test): Modified function. + +2024-07-19 Adhemerval Zanella <adhemerval.zanella@linaro.org> + + COMMIT: 4f047d9edecb1a9b796a9a904dcd42bd3cc3d3b6 + elf: Fix localplt.awk for DT_RELR-enabled builds (BZ 31978) + + * scripts/localplt.awk: Modified. + +2024-07-19 Adhemerval Zanella <adhemerval.zanella@linaro.org> + + COMMIT: 6b7e2e1d6139b1fb61b911ab897a956042bf7f89 + linux: Also check pkey_get for ENOSYS on tst-pkey (BZ 31996) + + * sysdeps/unix/sysv/linux/tst-pkey.c: Modified. + (do_test): Modified function. + +2024-07-19 Adhemerval Zanella <adhemerval.zanella@linaro.org> + + COMMIT: e0f7da7235105e0ae807bc701e54a0ea01e0ef9f + powerpc: Update soft-fp ulps + + * sysdeps/powerpc/nofpu/libm-test-ulps: Modified. + +2024-07-19 John David Anglin <danglin@gcc.gnu.org> + + COMMIT: 8cfa4ecff21adf226984f135aa576dd8063bbba3 + Fix usage of _STACK_GROWS_DOWN and _STACK_GROWS_UP defines [BZ 31989] + + * malloc/memusage.c: Modified. + (update_data): Modified function. + * stdlib/tst-swapcontext2.c: Modified. + (do_test): Modified function. + * sysdeps/unix/sysv/linux/____longjmp_chk.c: Modified. + +2024-07-19 Florian Weimer <fweimer@redhat.com> + + COMMIT: 91eb62d63887a959e43aafb6fc022a87614dc7c9 + Adjust check-local-headers test for libaudit 4.0 + + * scripts/check-local-headers.sh: Modified. + +2024-07-19 Adhemerval Zanella <adhemerval.zanella@linaro.org> + + COMMIT: 3c354d62f5c30d32bd553735473e95a8af4f56ec + elf: Parse the auxv values as unsigned on tst-tunables-enable_secure-env.c (BZ 31890) + + * elf/tst-tunables-enable_secure-env.c: Modified. + [HAVE_AUXV](check_auxv): Modified function. + +2024-07-19 H.J. Lu <hjl.tools@gmail.com> + + COMMIT: 66f2cd6e1a5a9a0113c9f5c13fb06707fef77fd4 + x32: xfail elf/tst-platform-1 [BZ #22363] + + * sysdeps/x86_64/x32/Makefile: Modified. + +2024-07-19 Xi Ruoyao <xry111@xry111.site> + + COMMIT: d905183f0bb10c66487a1dbc15fc52107cb164fc + elf/tst-rtld-does-not-exist: Pass --inhibit-cache to rtld + + * elf/tst-rtld-does-not-exist.sh: Modified. + +2024-07-17 Andreas K. Hüttel <dilfridge@gentoo.org> + + COMMIT: 910aae6e5a2196938fc30fa54dd1e96f16774ce7 + Revert "LoongArch: Add cfi instructions for _dl_tlsdesc_dynamic" + + * sysdeps/loongarch/dl-machine.h: Modified. + [RESOLVE_MAP](elf_machine_rela): Modified function. + * sysdeps/loongarch/dl-tlsdesc-dynamic.h: Delete file. + * sysdeps/loongarch/dl-tlsdesc.S: Modified. + * sysdeps/loongarch/dl-tlsdesc.h: Modified. + [SHARED][! __loongarch_soft_float](_dl_tlsdesc_dynamic_lasx): Remove. + [SHARED][! __loongarch_soft_float](_dl_tlsdesc_dynamic_lsx): Remove. + * sysdeps/loongarch/tlsdesc.sym: Modified. + +2024-07-17 Samuel Thibault <samuel.thibault@ens-lyon.org> + + COMMIT: 6ed76f4efc856431cd8511ef881a494a13280653 + htl: Fix __pthread_init_thread declaration and definition + + * sysdeps/mach/hurd/htl/pt-pthread_self.c: Modified. + (libc_hidden_def): New. + * sysdeps/mach/hurd/htl/pt-sysdep.h: Modified. + (___pthread_init_thread): Remove. + (libc_hidden_proto): Modified. + (__pthread_init_thread): New. + +2024-07-17 Samuel Thibault <samuel.thibault@ens-lyon.org> + + COMMIT: 0e75c4a4634f44ad24a65fda01f571781ac79d5f + hurd: Fix pthread_self() without libpthread + + * htl/Versions: Modified. + * sysdeps/mach/hurd/htl/pt-pthread_self.c: Modified. + (___pthread_self): Remove. + (pt-internal.h): Include file. + (__pthread_init_thread): New. + (___pthread_self): New. + * sysdeps/mach/hurd/htl/pt-sysdep.c: Modified. + (init_thread): Remove. + (_init_routine): Modified function. + * sysdeps/mach/hurd/htl/pt-sysdep.h: Modified. + (___pthread_init_thread): New. + (libc_hidden_proto): New. + +2024-07-17 mengqinggang <mengqinggang@loongson.cn> + + COMMIT: 43224b1379d60b1ad98d29ef3d7905d55f828a9f + LoongArch: Add cfi instructions for _dl_tlsdesc_dynamic + + * sysdeps/loongarch/dl-machine.h: Modified. + [RESOLVE_MAP](elf_machine_rela): Modified function. + * sysdeps/loongarch/dl-tlsdesc-dynamic.h: New file. + * sysdeps/loongarch/dl-tlsdesc.S: Modified. + * sysdeps/loongarch/dl-tlsdesc.h: Modified. + [SHARED][! __loongarch_soft_float](_dl_tlsdesc_dynamic_lasx): New. + [SHARED][! __loongarch_soft_float](_dl_tlsdesc_dynamic_lsx): New. + * sysdeps/loongarch/tlsdesc.sym: Modified. + +2024-07-16 Noah Goldstein <goldstein.w.n@gmail.com> + + COMMIT: 5bcf6265f215326d14dfacdce8532792c2c7f8f8 + x86: Disable non-temporal memset on Skylake Server + + * sysdeps/x86/cpu-features.c: Modified. + (init_cpu_features): Modified function. + * sysdeps/x86/cpu-tunables.c: Modified. + (TUNABLE_CALLBACK): Modified function. + * sysdeps/x86/dl-cacheinfo.h: Modified. + (dl_init_cacheinfo): Modified function. + * sysdeps/x86/include/cpu-features-preferred_feature_index_1.def: Modified. + * sysdeps/x86/tst-hwcap-tunables.c: Modified. + (array_length): Modified function. + +2024-07-16 Flavio Cruz <flaviocruz@gmail.com> + + COMMIT: 2dcc908538054377d19571d77a026b9f26d3fd0f + Add pthread_getname_np and pthread_setname_np for Hurd + + * config.h.in: Modified. + * htl/Makefile: Modified. + * htl/Versions: Modified. + * sysdeps/htl/pthread.h: Modified. + [__USE_GNU](pthread_getname_np): New function. + [__USE_GNU](pthread_setname_np): New function. + * sysdeps/mach/configure: Modified. + * sysdeps/mach/configure.ac: Modified. + * sysdeps/mach/htl/pt-getname-np.c: New file. + * sysdeps/mach/htl/pt-setname-np.c: New file. + * sysdeps/mach/hurd/i386/libpthread.abilist: Modified. + * sysdeps/mach/hurd/x86_64/libpthread.abilist: Modified. + +2024-07-14 Andreas K. Hüttel <dilfridge@gentoo.org> + + COMMIT: a11e15ea0ab1ee8a1947b6be52beca53693f0991 + math: Update alpha ulps + + * sysdeps/alpha/fpu/libm-test-ulps: Modified. + +2024-07-13 Samuel Thibault <samuel.thibault@ens-lyon.org> + + COMMIT: c8b4ce0b368115714bd4cce131e1683759471099 + hurd: Fix restoring message to be retried + + * hurd/intr-msg.c: Modified. + (_hurd_intr_rpc_mach_msg): Modified function. + +2024-07-12 Maciej W. Rozycki <macro@redhat.com> + + COMMIT: 4b2a1b602fc1ade0de85084feb328203be3147c9 + nptl: Convert tst-sem11 and tst-sem12 tests to use the test driver + + * nptl/tst-sem11.c: Modified. + (tf): Modified function. + (main): Remove function. + (do_test): New function. + (support/test-driver.c): Include file. + * nptl/tst-sem12.c: Modified. + (PREPARE): Remove. + (TF_PREPARE): New. + +2024-07-12 Maciej W. Rozycki <macro@redhat.com> + + COMMIT: 9d8995833e463cd675cc8bd40036d7d1412fdd1b + nptl: Add copyright notice tst-sem11 and tst-sem12 tests + + * nptl/tst-sem11.c: Modified. + * nptl/tst-sem12.c: Modified. + +2024-07-12 Andreas K. Hüttel <dilfridge@gentoo.org> + + COMMIT: ef7005628f24afaf66cfcdeaac47a57b41177467 + tests: XFAIL audit tests failing on all mips configurations, bug 29404 + + * sysdeps/mips/Makefile: Modified. + +2024-07-12 Samuel Dobron <sdobron@redhat.com> + + COMMIT: 255df9299f544ad9e027e0c8d6b65b0635c59f8c + time/Makefile: Split and sort tests + + * time/Makefile: Modified. + +2024-07-11 Stefan Liebler <stli@linux.ibm.com> + + COMMIT: 9b7651410375ec8848a1944992d663d514db4ba7 + s390x: Fix segfault in wcsncmp [BZ #31934] + + * sysdeps/s390/wcsncmp-vx.S: Modified. + +2024-07-09 Florian Weimer <fweimer@redhat.com> + + COMMIT: 2e456ccf0c34a056e3ccafac4a0c7effef14d918 + Linux: Make __rseq_size useful for feature detection (bug 31965) + + * NEWS: Modified. + * manual/threads.texi: Modified. + * sysdeps/nptl/dl-tls_init_tp.c: Modified. + (_rseq_size): Remove. + (_rseq_offset): Remove. + (__tls_init_tp): Modified function. + * sysdeps/unix/sysv/linux/rseq-internal.h: Modified. + [RSEQ_SIG](rseq_register_current_thread): Modified function. + (RSEQ_AREA_SIZE_INITIAL): New. + (RSEQ_AREA_SIZE_INITIAL_USED): New. + (_rseq_size): New. + (_rseq_offset): New. + * sysdeps/unix/sysv/linux/tst-rseq.c: Modified. + [RSEQ_SIG](do_rseq_main_test): Modified function. + [RSEQ_SIG](do_rseq_test): Modified function. + [RSEQ_SIG](sys/auxv.h): Include file. + +2024-07-09 Andreas K. Hüttel <dilfridge@gentoo.org> + + COMMIT: 7e7f35278cf5980f6eb1ddd384217a04a5293bc8 + po: incorporate translations (bg) + + * po/bg.po: Modified. + +2024-07-09 DJ Delorie <dj@redhat.com> + + COMMIT: 6c0be74305745c8f78bcfb69442c8c379459d99b + manual: add syscalls + + * config.make.in: Modified. + * configure: Modified. + * configure.ac: Modified. + * manual/Makefile: Modified. + * manual/intro.texi: Modified. + * manual/llio.texi: Modified. + * manual/macros.texi: Modified. + * manual/socket.texi: Modified. + * manual/startup.texi: Modified. + +2024-07-09 Andreas Schwab <schwab@suse.de> + + COMMIT: 2213b37b705843908355a89648017f4e597b2bbb + libio: handle opening a file when all files are closed (bug 31963) + + * libio/Makefile: Modified. + * libio/genops.c: Modified. + (_IO_link_in): Modified function. + * libio/tst-closeall.c: New file. + +2024-07-08 Adam Sampson <ats@offog.org> + + COMMIT: 895294e51d33039c1e718d2be88a9863670ac4d6 + ldconfig: Ignore all GDB extension files + + * elf/readlib.c: Modified. + (is_gdb_python_file): Remove function. + (process_file): Modified function. + (is_gdb_extension_file): New function. + +2024-07-08 Adam Sampson <ats@offog.org> + + COMMIT: ed2b8d3a866eb37e069f6a71bdf10421cd4c5e54 + ldconfig: Move endswithn into a new header file + + * elf/endswith.h: New file. + * elf/ldconfig.c: Modified. + (endswithn): Remove function. + (endswith.h): Include file. + * elf/readlib.c: Modified. + (is_gdb_python_file): Modified function. + (endswith.h): Include file. + +2024-07-08 Andreas K. Hüttel <dilfridge@gentoo.org> + + COMMIT: ab6045728f9f99729b8bdd07c3e2a6aba586794e + math: Update m68k ULPs + + * sysdeps/m68k/m680x0/fpu/libm-test-ulps: Modified. + +2024-07-08 Adhemerval Zanella <adhemerval.zanella@linaro.org> + + COMMIT: 184b9e530e6326e668709826903b6d30dc6cac3f + stdlib: fix arc4random fallback to /dev/urandom (BZ 31612) + + * stdlib/arc4random.c: Modified. + (__arc4random_buf): Modified function. + +2024-07-04 Adhemerval Zanella <adhemerval.zanella@linaro.org> + + COMMIT: 9fc639f654dc004736836613be703e6bed0c36a8 + elf: Make dl-rseq-symbols Linux only + + * elf/Makefile: Modified. + * sysdeps/unix/sysv/linux/Makefile: Modified. + * elf/dl-rseq-symbols.S: Move to... + * sysdeps/unix/sysv/linux/dl-rseq-symbols.S: ... here. + +2024-07-03 Michael Jeanson <mjeanson@efficios.com> + + COMMIT: 2b92982e2369d292560793bee8e730f695f48ff3 + nptl: fix potential merge of __rseq_* relro symbols + + * elf/Makefile: Modified. + * elf/dl-rseq-symbols.S: New file. + * sysdeps/nptl/dl-tls_init_tp.c: Modified. + (__rseq_size): Remove. + (__rseq_offset): Remove. + (__tls_init_tp): Modified function. + (_rseq_size): New. + (_rseq_offset): New. + +2024-07-03 Darius Rad <darius@bluespec.com> + + COMMIT: b85a23d736b31df3284ce0018357a9cea534d6ff + riscv: Update nofpu libm test ulps + + * sysdeps/riscv/nofpu/libm-test-ulps: Modified. + +2024-07-03 Florian Weimer <fweimer@redhat.com> + + COMMIT: 7dde7f82d9826538c99637626228ebbda9e76f47 + manual: Recommendations for dynamic linker hardening + + * manual/dynlink.texi: Modified. + +2024-07-03 Sergey Kolosov <skolosov@redhat.com> + + COMMIT: 50f5a09e68e0c4ea60f5dfee3cc6963df2762e14 + socket: Add new test for shutdown + + * socket/Makefile: Modified. + * socket/tst-shutdown.c: New file. + +2024-07-03 Stefan Liebler <stli@linux.ibm.com> + Adhemerval Zanella <adhemerval.zanella@linaro.org> + + COMMIT: d2f6ceaccbae2f645075dedad2b762896da1ec04 + elf/rtld: Fix auxiliary vector for enable_secure + + * elf/Makefile: Modified. + * elf/rtld.c: Modified. + (_dl_start_args_adjust): Modified function. + * elf/tst-tunables-enable_secure-env.c: Modified. + (do_test): Modified function. + [! __linux__](HAVE_AUXV): New. + [HAVE_AUXV](check_auxv): New. + [__linux__](HAVE_AUXV): New. + [__linux__](sys/auxv.h): New. + (array_length.h): Include file. + (errno.h): Include file. + (getopt.h): Include file. + (intprops.h): Include file. + (stdlib.h): Include file. + (CMDLINE_OPTIONS): New. + (restart): New. + (spargs): New. + (handle_restart): New function. + +2024-07-02 John David Anglin <danglin@gcc.gnu.org> + + COMMIT: 4737e6a7a3f98c8e2674e313cb09d7882583f5f0 + hppa/vdso: Provide 64-bit clock_gettime() vDSO only + + * sysdeps/unix/sysv/linux/hppa/sysdep.h: Modified. + [! __ASSEMBLER__][! __LP64__](HAVE_CLOCK_GETTIME_VSYSCALL): Remove. + [! __ASSEMBLER__][! __LP64__](HAVE_GETTIMEOFDAY_VSYSCALL): Remove. + [! __ASSEMBLER__][__LP64__](HAVE_GETTIMEOFDAY_VSYSCALL): Remove. + +2024-07-02 Adhemerval Zanella <adhemerval.zanella@linaro.org> + + COMMIT: 9f80d8134a15235732586e238ac28cea459fb60b + debug: Fix clang open fortify wrapper (BZ 31927) + + * io/bits/fcntl2.h: Modified. + [__fortify_use_clang](open): Remove. + [__fortify_use_clang](open): Modified function. + +2024-07-02 H.J. Lu <hjl.tools@gmail.com> + + COMMIT: ba144c179eb12a6aff145582671cbb8b1045c5b9 + Add --disable-static-c++-tests option [BZ #31797] + + * INSTALL: Modified. + * configure: Modified. + * configure.ac: Modified. + * manual/install.texi: Modified. + * nptl/Makefile: Modified. + +2024-07-02 H.J. Lu <hjl.tools@gmail.com> + + COMMIT: 23f12e6e0c95aaf8b5b4973d029db794a43f248a + Add --disable-static-c++-link-check option [BZ #31412] + + * INSTALL: Modified. + * configure: Modified. + * configure.ac: Modified. + * manual/install.texi: Modified. + +2024-07-01 DJ Delorie <dj@redhat.com> + + COMMIT: dce754b1553b86fc6352636f1fa490a85b7cf0ff + Update mmap() flags and errors lists + + * manual/llio.texi: Modified. + +2024-07-01 YunQiang Su <syq@gcc.gnu.org> + + COMMIT: 9d0e9c8a138fe25e58fdfc21c2e000425579d9a8 + MIPSr6/math: Use builtin fma and fmaf + + * sysdeps/mips/fpu/math-use-builtins-fma.h: New file. + +2024-07-01 Florian Weimer <fweimer@redhat.com> + + COMMIT: 018f0fc3b818d4d1460a4e2384c24802504b1d20 + elf: Support recursive use of dynamic TLS in interposed malloc + + * elf/Makefile: Modified. + * elf/dl-tls.c: Modified. + [SHARED](allocate_dtv_entry): Modified function. + [SHARED](_dl_update_slotinfo): Modified function. + [SHARED](__tls_get_addr): Modified function. + (_dl_allocate_tls_storage): Modified function. + (_dl_resize_dtv): Modified function. + (_dl_add_to_slotinfo): Modified function. + (_dl_tls_threads_in_update): New. + (_dl_tls_allocate_begin): New function. + (_dl_tls_allocate_end): New function. + (_dl_tls_allocate_active): New function. + (_dl_tls_initial_modid_limit): New. + (_dl_tls_initial_modid_limit_setup): New function. + * elf/rtld.c: Modified. + (init_tls): Modified function. + * elf/tst-recursive-tls.c: New file. + * elf/tst-recursive-tlsmallocmod.c: New file. + * elf/tst-recursive-tlsmodN.c: New file. + * sysdeps/generic/ldsodefs.h: Modified. + (_dl_tls_initial_modid_limit): New. + (_dl_tls_initial_modid_limit_setup): New function. + (_dl_tls_threads_in_update): New. + * sysdeps/x86_64/dl-tls.c: Modified. + [SHARED](__tls_get_addr_slow): Modified function. + +2024-07-01 Carlos O'Donell <carlos@redhat.com> + + COMMIT: a7fe3e805d2ee128ac5f43b2a24201726d41cc04 + Fix conditionals on mtrace-based tests (bug 31892) + + * catgets/Makefile: Modified. + * elf/Makefile: Modified. + * libio/Makefile: Modified. + * misc/Makefile: Modified. + * nptl/Makefile: Modified. + * posix/Makefile: Modified. + * stdio-common/Makefile: Modified. + +2024-07-01 Michel Lind <michel@michel-slm.name> + + COMMIT: 4f7eb238d0da989a9deb50e9cd441cca895957dc + signal/Makefile: Split and sort tests + + * signal/Makefile: Modified. + +2024-06-30 MayShao-oc <MayShao-oc@zhaoxin.com> + + COMMIT: 9dc645cb569af8db58dab2a1b296421f29c0cd4f + x86: Set default non_temporal_threshold for Zhaoxin processors + + * sysdeps/x86/cpu-features.c: Modified. + (init_cpu_features): Modified function. + * sysdeps/x86/dl-cacheinfo.h: Modified. + (dl_init_cacheinfo): Modified function. + +2024-06-30 MayShao-oc <MayShao-oc@zhaoxin.com> + + COMMIT: c19457aec67da28a3f78badef53556cd55640a6e + x86_64: Optimize large size copy in memmove-ssse3 + + * sysdeps/x86_64/multiarch/memmove-ssse3.S: Modified. + +2024-06-30 MayShao-oc <MayShao-oc@zhaoxin.com> + + COMMIT: 44d757eb9f4484dbc3aa32042ab64cdf9374e093 + x86: Set preferred CPU features on the KH-40000 and KX-7000 Zhaoxin processors + + * sysdeps/x86/cpu-features.c: Modified. + (init_cpu_features): Modified function. + +2024-06-30 Andrew Pinski <quic_apinski@quicinc.com> + + COMMIT: 2f1f7a5f8aa7285e9a55b209dd01fdcb0d4e7281 + Aarch64: Add new memset for Qualcomm's oryon-1 core + + * sysdeps/aarch64/multiarch/Makefile: Modified. + * sysdeps/aarch64/multiarch/ifunc-impl-list.c: Modified. + (__libc_ifunc_impl_list): Modified function. + * sysdeps/aarch64/multiarch/memset.c: Modified. + (__typeof): Modified function. + (__memset_oryon1): New. + * sysdeps/aarch64/multiarch/memset_oryon1.S: New file. + +2024-06-30 Andrew Pinski <quic_apinski@quicinc.com> + + COMMIT: 4dc83cac78a92a99cdd1ae808890083461597b82 + Aarch64: Add memcpy for qualcomm's oryon-1 core + + * sysdeps/aarch64/cpu-features.h: Modified. + (IS_ORYON1): New. + * sysdeps/aarch64/multiarch/Makefile: Modified. + * sysdeps/aarch64/multiarch/ifunc-impl-list.c: Modified. + (__libc_ifunc_impl_list): Modified function. + * sysdeps/aarch64/multiarch/memcpy.c: Modified. + (__typeof): Modified function. + (__memcpy_oryon1): New. + * sysdeps/aarch64/multiarch/memcpy_oryon1.S: New file. + +2024-06-27 Adhemerval Zanella <adhemerval.zanella@linaro.org> + + COMMIT: 4228baef1a94e8bde84ad74f2e0358120a2bcac7 + debug: Fix clang open fortify wrapper (BZ 31927) + + * io/bits/fcntl2.h: Modified. + [__fortify_use_clang](open): Modified. + +2024-06-27 Adhemerval Zanella <adhemerval.zanella@linaro.org> + + COMMIT: c5579f3a713a631c4b5e2e3788ec715fbffd5af6 + debug: Fix clang mq_open fortify wrapper (BZ 31917) + + * rt/bits/mqueue2.h: Modified. + [__fortify_use_clang](__NTH): Modified. + [__fortify_use_clang](__NTH): Remove. + [__fortify_use_clang](__NTH): Modified function. + [__fortify_use_clang](__NTH): Modified function. + +2024-06-27 Stefan Liebler <stli@linux.ibm.com> + + COMMIT: c0f21e073d45670cb54811b07fce8e612a91f107 + tests-mbwc: Silence gcc 14 -Werror=format-overflow= + + * localedata/tests-mbwc/tsp_common.c: Modified. + (MAX_RESULT_REC): Remove. + (result_rec): Remove. + (result): Modified function. + +2024-06-27 Florian Weimer <fweimer@redhat.com> + + COMMIT: 21738846a19eb4a36981efd37d9ee7cb6d687494 + time: Avoid memcmp overread in tzset (bug 31931) + + * time/Makefile: Modified. + * time/tst-tzfile-fault.c: New file. + * time/tzfile.c: Modified. + (__tzfile_read): Modified function. + +2024-06-26 Paul Eggert <eggert@cs.ucla.edu> + + COMMIT: b79238db4ac7b8e710c8cab4307ce6cb1c3937d8 + Fix strnlen doc re array size + + * manual/string.texi: Modified. + +2024-06-26 Palmer Dabbelt <palmer@rivosinc.com> + + COMMIT: 07fe71f59b13bbc336ece3ec9ef94dd95c9e0511 + arm: Avoid UB in elf_machine_rel() + + * sysdeps/arm/dl-machine.h: Modified. + [RESOLVE_MAP](elf_machine_rel): Modified function. + +2024-06-26 mengqinggang <mengqinggang@loongson.cn> + + COMMIT: a10b6ad471d7b528149f5ff32eef2f1c1dc1213c + LoongArch: Fix tst-gnu2-tls2 test case + + * sysdeps/loongarch/tst-gnu2-tls2.h: Modified. + [! __loongarch_soft_float][HAVE_LOONGARCH_VEC_COM](SAVE_REGISTER_LSX): Modified. + [! __loongarch_soft_float][HAVE_LOONGARCH_VEC_COM](SAVE_REGISTER_LASX): Modified. + [! __loongarch_soft_float](SAVE_REGISTER_FCC): Modified. + [! __loongarch_soft_float](LOAD_REGISTER_FCSR): Remove. + [! __loongarch_soft_float](SAVE_REGISTER_FCSR): Modified. + [! __loongarch_soft_float](INIT_TLSDESC_CALL): Remove. + [! __loongarch_soft_float](LOAD_REGISTER_FLOAT): Modified. + [! __loongarch_soft_float](SAVE_REGISTER_FLOAT): Modified. + [! __loongarch_soft_float](BEFORE_TLSDESC_CALL): Modified. + [! __loongarch_soft_float](AFTER_TLSDESC_CALL): Modified. + [! __loongarch_soft_float](_next <tst-gnu2-tls2.h): Include file. + (_next <tst-gnu2-tls2.h): Remove include. + (stdio.h): Include file. + +2024-06-25 Adhemerval Zanella <adhemerval.zanella@linaro.org> + + COMMIT: c90cfce849d010474e8cccf3e5bff49a2c8b141f + posix: Fix pidfd_spawn/pidfd_spawnp leak if execve fails (BZ 31695) + + * posix/tst-spawn2.c: Modified. + (do_test): Modified function. + (support/descriptors.h): Include file. + * sysdeps/unix/sysv/linux/spawni.c: Modified. + (__spawnix): Modified function. + +2024-06-25 Andreas K. Hüttel <dilfridge@gentoo.org> + + COMMIT: 17a293c5fab878a0b59e31047f49833f156bdeef + INSTALL: regenerate + + * INSTALL: Modified. + +2024-06-25 Andreas K. Hüttel <dilfridge@gentoo.org> + + COMMIT: d32c34242571d5c2a9c61bbd43926b774e15b80c + Revert "MIPSr6/math: Use builtin fma and fmaf" + + * sysdeps/mips/fpu/math-use-builtins-fma.h: Delete file. + +2024-06-24 Joe Simmons-Talbott <josimmon@redhat.com> + + COMMIT: 5d1007a81a7f515caca6e59a338e950aca52948a + INSTALL: Fix typo ibmlondouble to ibmlongdouble + + * manual/install.texi: Modified. + +2024-06-24 Christoph Müllner <christoph.muellner@vrull.eu> + + COMMIT: 81c7f6193ce66480b2a29a5b2c66a7356e743308 + RISC-V: Execute a PAUSE hint in spin loops + + * sysdeps/unix/sysv/linux/riscv/atomic-machine.h: Modified. + (atomic_spin_nop): New. + +2024-06-24 YunQiang Su <syq@gcc.gnu.org> + + COMMIT: 9e06e4a43b58519991acbed1d7f33abc40249226 + MIPSr6/math: Use builtin fma and fmaf + + * sysdeps/mips/fpu/math-use-builtins-fma.h: New file. + +2024-06-24 Andreas K. Hüttel <dilfridge@gentoo.org> + + COMMIT: 6f8c0dca8c9b76db4c1621247259bd6ec7ecb9cf + po: incorporate translations (cs, de, hr, ko, pl, ro, ru, sv, uk, zh_CN) + + * po/be.po: Modified. + * po/bg.po: Modified. + * po/ca.po: Modified. + * po/cs.po: Modified. + * po/da.po: Modified. + * po/de.po: Modified. + * po/el.po: Modified. + * po/eo.po: Modified. + * po/es.po: Modified. + * po/fi.po: Modified. + * po/fr.po: Modified. + * po/gl.po: Modified. + * po/hr.po: Modified. + * po/hu.po: Modified. + * po/ia.po: Modified. + * po/id.po: Modified. + * po/it.po: Modified. + * po/ja.po: Modified. + * po/ka.po: Modified. + * po/ko.po: Modified. + * po/lt.po: Modified. + * po/nb.po: Modified. + * po/nl.po: Modified. + * po/pl.po: Modified. + * po/pt.po: Modified. + * po/pt_BR.po: Modified. + * po/ro.po: Modified. + * po/ru.po: Modified. + * po/rw.po: Modified. + * po/sk.po: Modified. + * po/sl.po: Modified. + * po/sr.po: Modified. + * po/sv.po: Modified. + * po/tr.po: Modified. + * po/uk.po: Modified. + * po/vi.po: Modified. + * po/zh_CN.po: Modified. + * po/zh_TW.po: Modified. + +2024-06-24 Andreas Schwab <schwab@suse.de> + + COMMIT: 2a6c922f09e7a1c206e0cbdb4424f1cf101a5bda + mtrace: make shell commands robust against meta characters + + * malloc/mtrace.pl: Modified. + +2024-06-23 John David Anglin <danglin@gcc.gnu.org> + + COMMIT: aecde502e9bb20a30b0f111b5a690af1746b78ef + hppa/vdso: Add wrappers for vDSO functions + + * sysdeps/unix/sysv/linux/hppa/sysdep.h: Modified. + [! __ASSEMBLER__][! __LP64__](HAVE_CLOCK_GETTIME_VSYSCALL): New. + [! __ASSEMBLER__][! __LP64__](HAVE_CLOCK_GETTIME64_VSYSCALL): New. + [! __ASSEMBLER__][! __LP64__](HAVE_GETTIMEOFDAY_VSYSCALL): New. + [! __ASSEMBLER__][__LP64__](HAVE_CLOCK_GETTIME_VSYSCALL): New. + [! __ASSEMBLER__][__LP64__](HAVE_GETTIMEOFDAY_VSYSCALL): New. + [! __ASSEMBLER__](VDSO_NAME): New. + [! __ASSEMBLER__](VDSO_HASH): New. + +2024-06-23 John David Anglin <danglin@gcc.gnu.org> + + COMMIT: 9dddb2695443afea3cdb7f3856f23b6d045311fc + Update hppa libm-test-ulps + + * sysdeps/hppa/fpu/libm-test-ulps: Modified. + +2024-06-21 Wilco Dijkstra <wilco.dijkstra@arm.com> + + COMMIT: 5aa2f79691ca6a40a59dfd4a2d6f7baff6917eb7 + Benchtests: Remove broken walk benchmarks + + * benchtests/Makefile: Modified. + * benchtests/bench-bzero-walk.c: Delete file. + * benchtests/bench-memcpy-walk.c: Delete file. + * benchtests/bench-memmove-walk.c: Delete file. + * benchtests/bench-memset-walk.c: Delete file. + * benchtests/bench-memset-zero-walk.c: Delete file. + +2024-06-20 John David Anglin <danglin@gcc.gnu.org> + + COMMIT: da61ba3f8930e9b39fe35f88cb2ed4bc4571e598 + Update hppa libm-test-ulps + + * sysdeps/hppa/fpu/libm-test-ulps: Modified. + +2024-06-20 Julian Zhu <jz531210@gmail.com> + + COMMIT: 9f2bf0e23a95d8d7268683c65b867c2ddcc22651 + RISC-V: Update ulps + + * sysdeps/riscv/rvd/libm-test-ulps: Modified. + +2024-06-20 Julian Zhu <jz531210@gmail.com> + + COMMIT: cb20e7c7cc3bf6344edd77008528b2b386cb37c2 + MIPS: Update ulps + + * sysdeps/mips/mips32/libm-test-ulps: Modified. + * sysdeps/mips/mips64/libm-test-ulps: Modified. + +2024-06-20 Florian Weimer <fweimer@redhat.com> + + COMMIT: dd144dce21c864781fade4561581d50fb4549956 + malloc: Replace shell/Perl gate in mtrace + + * malloc/mtrace.pl: Modified. + +2024-06-20 Florian Weimer <fweimer@redhat.com> + + COMMIT: b375e597da3139b40f7c0ba959a6800f5b8971d5 + i386: Update ulps + + * sysdeps/i386/fpu/libm-test-ulps: Modified. + +2024-06-20 Florian Weimer <fweimer@redhat.com> + + COMMIT: 362588f7cc56354b3566a14dfbeb55ad74a9bd31 + s390x: Capture grep output in static PIE check + + * sysdeps/s390/s390-64/configure: Modified. + * sysdeps/s390/s390-64/configure.ac: Modified. + +2024-06-20 Florian Weimer <fweimer@redhat.com> + + COMMIT: 71dafdf5f19dd2b0729e4774149944911a405bc6 + powerpc: Update ulps + + * sysdeps/powerpc/fpu/libm-test-ulps: Modified. + +2024-06-20 Florian Weimer <fweimer@redhat.com> + + COMMIT: 3cb77b7d1e73333a590d206f538b2e5726fb558e + i386: Update ulps + + * sysdeps/i386/fpu/libm-test-ulps: Modified. + * sysdeps/i386/i686/fpu/multiarch/libm-test-ulps: Modified. + +2024-06-20 Florian Weimer <fweimer@redhat.com> + + COMMIT: 086910fc41655152812b515dc324d2ac0dc36e67 + malloc: Always install mtrace (bug 31892) + + * malloc/Makefile: Modified. + * malloc/mtrace.pl: Modified. + +2024-06-19 Andreas K. Hüttel <dilfridge@gentoo.org> + + COMMIT: da905bb706672c84130226bfff9de7d6ba1f0eb6 + Translations: Regenerate libc.pot + + * po/libc.pot: Modified. + +2024-06-19 Xi Ruoyao <xry111@xry111.site> + + COMMIT: 9405d54c627948ff607154c41e32174f4eed49c5 + LoongArch: Update ulps + + * sysdeps/loongarch/lp64/libm-test-ulps: Modified. + +2024-06-19 Andreas K. Hüttel <dilfridge@gentoo.org> + + COMMIT: 4f1cf0c0e1764bd77235b07ff63631e866939ec6 + sparc: Regenerate ULPs + + * sysdeps/sparc/fpu/libm-test-ulps: Modified. + +2024-06-19 Stefan Liebler <stli@linux.ibm.com> + + COMMIT: 19f6d6a480b29912022184f31f11dbf1c201a86b + s390x: Regenerate ULPs. + + * sysdeps/s390/fpu/libm-test-ulps: Modified. + +2024-06-19 mengqinggang <mengqinggang@loongson.cn> + + COMMIT: 9a675d998ea1b37d5fc40611b015cc5c595d375c + LoongArch: Fix _dl_tlsdesc_dynamic in LSX case + + * sysdeps/loongarch/dl-tlsdesc.S: Modified. + +2024-06-18 Adhemerval Zanella <adhemerval.zanella@linaro.org> + + COMMIT: 92341e31502865a0ab1f28e2240df20d19371832 + arm: Update ulps + + * sysdeps/arm/libm-test-ulps: Modified. + +2024-06-18 Adhemerval Zanella <adhemerval.zanella@linaro.org> + + COMMIT: 45f5f51b85f23fe724f4dfd10048de00d86470fe + aarch64: Update ulps + + * sysdeps/aarch64/libm-test-ulps: Modified. + +2024-06-18 Adhemerval Zanella <adhemerval.zanella@linaro.org> + + COMMIT: 52b397bafa9e6a23b6b50c56617fea2b0bf1f445 + powerpc: Update ulps + + * sysdeps/powerpc/fpu/libm-test-ulps: Modified. + +2024-06-18 Florian Weimer <fweimer@redhat.com> + + COMMIT: f6ea5d1291cf3f264514d03872ebae84e0293b69 + Linux: Include <dl-symbol-redir-ifunc.h> in dl-sysdep.c + + * sysdeps/unix/sysv/linux/dl-sysdep.c: Modified. + (dl-symbol-redir-ifunc.h): Include file. + +2024-06-18 Carlos Llamas <cmllamas@google.com> + + COMMIT: 176671f6042912200ea9733bb6cc8212e06bc85e + linux: add definitions for hugetlb page size encodings + + * sysdeps/unix/sysv/linux/bits/mman-linux.h: Modified. + (MAP_HUGE_16KB): New. + (MAP_HUGE_64KB): New. + (MAP_HUGE_512KB): New. + (MAP_HUGE_1MB): New. + (MAP_HUGE_2MB): New. + (MAP_HUGE_8MB): New. + (MAP_HUGE_16MB): New. + (MAP_HUGE_32MB): New. + (MAP_HUGE_256MB): New. + (MAP_HUGE_512MB): New. + (MAP_HUGE_1GB): New. + (MAP_HUGE_2GB): New. + (MAP_HUGE_16GB): New. + * sysdeps/unix/sysv/linux/bits/shm.h: Modified. + [__USE_MISC](SHM_HUGE_SHIFT): New. + [__USE_MISC](SHM_HUGE_MASK): New. + [__USE_MISC](SHM_HUGE_16KB): New. + [__USE_MISC](SHM_HUGE_64KB): New. + [__USE_MISC](SHM_HUGE_512KB): New. + [__USE_MISC](SHM_HUGE_1MB): New. + [__USE_MISC](SHM_HUGE_2MB): New. + [__USE_MISC](SHM_HUGE_8MB): New. + [__USE_MISC](SHM_HUGE_16MB): New. + [__USE_MISC](SHM_HUGE_32MB): New. + [__USE_MISC](SHM_HUGE_256MB): New. + [__USE_MISC](SHM_HUGE_512MB): New. + [__USE_MISC](SHM_HUGE_1GB): New. + [__USE_MISC](SHM_HUGE_2GB): New. + [__USE_MISC](SHM_HUGE_16GB): New. + * sysdeps/unix/sysv/linux/tst-mman-consts.py: Modified. + +2024-06-18 Stefan Liebler <stli@linux.ibm.com> + + COMMIT: e260ceb4aa85dfde1280a80bd6373b11b43266af + elf: Remove HWCAP_IMPORTANT + + * elf/dl-diagnostics.c: Modified. + (_dl_print_diagnostics): Modified function. + * sysdeps/alpha/dl-procinfo.h: Modified. + (HWCAP_IMPORTANT): Remove. + * sysdeps/csky/dl-procinfo.h: Modified. + (HWCAP_IMPORTANT): Remove. + * sysdeps/generic/dl-procinfo.h: Modified. + (HWCAP_IMPORTANT): Remove. + * sysdeps/mips/dl-procinfo.h: Modified. + (HWCAP_IMPORTANT): Remove. + * sysdeps/powerpc/dl-procinfo.h: Modified. + (HWCAP_IMPORTANT): Remove. + * sysdeps/s390/dl-procinfo.h: Modified. + (HWCAP_IMPORTANT): Remove. + * sysdeps/sparc/dl-procinfo.h: Modified. + (bits/wordsize.h): Remove include. + (HWCAP_IMPORTANT_V9): Remove. + (HWCAP_IMPORTANT): Remove. + * sysdeps/unix/sysv/linux/aarch64/dl-procinfo.h: Modified. + (HWCAP_IMPORTANT): Remove. + * sysdeps/unix/sysv/linux/arm/dl-procinfo.h: Modified. + (HWCAP_IMPORTANT): Remove. + * sysdeps/x86/dl-hwcap.h: Modified. + [! __x86_64__](HWCAP_IMPORTANT): Remove. + [IS_IN (ldconfig)](HWCAP_IMPORTANT): Remove. + [__x86_64__](HWCAP_IMPORTANT): Remove. + +2024-06-18 Stefan Liebler <stli@linux.ibm.com> + + COMMIT: ad0aa1f54975bd20e30559930ea48a3568441ff4 + elf: Remove LD_HWCAP_MASK / tunable glibc.cpu.hwcap_mask + + * elf/dl-tunables.list: Modified. + * elf/tst-env-setuid.c: Modified. + * manual/README.tunables: Modified. + * manual/tunables.texi: Modified. + * sysdeps/generic/unsecvars.h: Modified. + (UNSECURE_ENVVARS): Modified. + * sysdeps/sparc/sparc32/dl-machine.h: Modified. + [! dl_machine_h](elf_machine_matches_host): Modified function. + +2024-06-18 Stefan Liebler <stli@linux.ibm.com> + + COMMIT: 343439a31ed1f07da307037b2c92b8ab3367c05c + elf: Remove _DL_PLATFORMS_COUNT + + * sysdeps/alpha/dl-procinfo.h: Modified. + (_DL_PLATFORMS_COUNT): Remove. + * sysdeps/csky/dl-procinfo.h: Modified. + (_DL_PLATFORMS_COUNT): Remove. + * sysdeps/mips/dl-procinfo.h: Modified. + (_DL_PLATFORMS_COUNT): Remove. + * sysdeps/powerpc/dl-procinfo.h: Modified. + (_DL_PLATFORMS_COUNT): Remove. + * sysdeps/s390/dl-procinfo.h: Modified. + (_DL_PLATFORMS_COUNT): Remove. + * sysdeps/x86/dl-hwcap.h: Modified. + [! __x86_64__](HWCAP_PLATFORMS_START): Remove. + [! __x86_64__](HWCAP_PLATFORMS_COUNT): Remove. + [IS_IN (ldconfig)](HWCAP_PLATFORMS_START): Remove. + [IS_IN (ldconfig)](HWCAP_PLATFORMS_COUNT): Remove. + [__x86_64__](HWCAP_PLATFORMS_START): Remove. + [__x86_64__](HWCAP_PLATFORMS_COUNT): Remove. + * sysdeps/x86/dl-procinfo.c: Modified. + * sysdeps/x86/dl-procinfo.h: Modified. + (_DL_PLATFORMS_COUNT): Remove. + * sysdeps/x86_64/dl-procruntime.c: Modified. + +2024-06-18 Stefan Liebler <stli@linux.ibm.com> + + COMMIT: 43c7c5e62dbd7bf6c17f4688fb5f4990ae49e7fb + elf: Remove _DL_FIRST_PLATFORM + + * sysdeps/s390/dl-procinfo.h: Modified. + (_DL_FIRST_PLATFORM): Remove. + * sysdeps/x86/dl-procinfo.h: Modified. + (_DL_FIRST_PLATFORM): Remove. + +2024-06-18 Stefan Liebler <stli@linux.ibm.com> + + COMMIT: ed23449dac42c3718757dc8ff69a6480d869fb9c + elf: Remove _DL_HWCAP_PLATFORM + + * sysdeps/alpha/dl-procinfo.h: Modified. + (_DL_HWCAP_PLATFORM): Remove. + * sysdeps/csky/dl-procinfo.h: Modified. + (_DL_HWCAP_PLATFORM): Remove. + * sysdeps/generic/dl-procinfo.h: Modified. + (_DL_HWCAP_PLATFORM): Remove. + * sysdeps/mips/dl-procinfo.h: Modified. + (_DL_HWCAP_PLATFORM): Remove. + * sysdeps/powerpc/dl-procinfo.h: Modified. + (_DL_HWCAP_PLATFORM): Remove. + * sysdeps/s390/dl-procinfo.h: Modified. + (_DL_HWCAP_PLATFORM): Remove. + * sysdeps/sparc/dl-procinfo.h: Modified. + (_DL_HWCAP_PLATFORM): Remove. + * sysdeps/unix/sysv/linux/aarch64/dl-procinfo.h: Modified. + (_DL_HWCAP_PLATFORM): Remove. + * sysdeps/unix/sysv/linux/arm/dl-procinfo.h: Modified. + (_DL_HWCAP_PLATFORM): Remove. + * sysdeps/x86/dl-procinfo.h: Modified. + (_DL_HWCAP_PLATFORM): Remove. + +2024-06-18 Stefan Liebler <stli@linux.ibm.com> + + COMMIT: 374c8b44831e7fe65ab0005cec98f7bb2d35c58e + elf: Remove platform strings in dl-procinfo.c + + * sysdeps/alpha/dl-procinfo.c: Delete file. + * sysdeps/csky/dl-procinfo.c: Delete file. + * sysdeps/mips/dl-procinfo.c: Modified. + [! PROCINFO_CLASS](PROCINFO_CLASS): Remove. + [!(! PROCINFO_DECL && SHARED)][! PROCINFO_DECL](_dl_mips_platforms): Remove. + [!(! PROCINFO_DECL && SHARED)][PROCINFO_DECL](PROCINFO_DECL): Remove. + [!(! PROCINFO_DECL && SHARED)][PROCINFO_DECL](PROCINFO_CLASS): Remove. + (PROCINFO_DECL): New. + (PROCINFO_CLASS): New. + * sysdeps/s390/dl-procinfo-s390.c: Modified. + (_dl_s390_platforms): Remove. + * sysdeps/s390/dl-procinfo.h: Modified. + (_dl_s390_platforms): Remove. + * sysdeps/x86/dl-procinfo.c: Modified. + [!(! PROCINFO_DECL && SHARED)][PROCINFO_DECL][!(! PROCINFO_DECL && SHARED)][PROCINFO_DECL][!(! PROCINFO_DECL && SHARED)][! PROCINFO_DECL](_dl_x86_platforms): Remove. + [!(! PROCINFO_DECL && SHARED)][PROCINFO_DECL][!(! PROCINFO_DECL && SHARED)][PROCINFO_DECL][!(! PROCINFO_DECL && SHARED)][PROCINFO_DECL][SHARED && !IS_IN (ldconfig)][PROCINFO_DECL][! PROCINFO_DECL](_dl_x86_tlsdesc_dynamic): Remove. + [!(! PROCINFO_DECL && SHARED)][PROCINFO_DECL][!(! PROCINFO_DECL && SHARED)][PROCINFO_DECL][SHARED && !IS_IN (ldconfig)][PROCINFO_DECL][! PROCINFO_DECL](_dl_x86_tlsdesc_dynamic): New. + +2024-06-18 Stefan Liebler <stli@linux.ibm.com> + + COMMIT: 8faada830227aeb1a17117cbf8b94d9be0f5ffe1 + elf: Remove _dl_string_platform + + * elf/dl-diagnostics.c: Modified. + (_dl_print_diagnostics): Modified function. + * sysdeps/alpha/dl-procinfo.h: Modified. + (_dl_string_platform): Remove function. + * sysdeps/csky/dl-procinfo.h: Modified. + (_dl_string_platform): Remove function. + * sysdeps/generic/dl-procinfo.h: Modified. + (_dl_string_platform): Remove. + * sysdeps/mips/dl-procinfo.h: Modified. + (_dl_string_platform): Remove function. + * sysdeps/s390/dl-procinfo.h: Modified. + (_dl_string_platform): Remove function. + * sysdeps/sparc/dl-procinfo.h: Modified. + (_dl_string_platform): Remove. + * sysdeps/unix/sysv/linux/aarch64/dl-procinfo.h: Modified. + (_dl_string_platform): Remove. + * sysdeps/unix/sysv/linux/arm/dl-procinfo.h: Modified. + (_dl_string_platform): Remove. + * sysdeps/x86/dl-procinfo.h: Modified. + (_dl_string_platform): Remove function. + +2024-06-18 Stefan Liebler <stli@linux.ibm.com> + + COMMIT: c5aa5fd40adc81c4f0b18e01f329aeaf86518c7b + elf: Remove loading legacy hwcaps/platform entries in dynamic loader + + * elf/dl-cache.c: Modified. + [! _DL_PLATFORMS_COUNT](_DL_PLATFORMS_COUNT): Remove. + (search_cache): Modified function. + +2024-06-18 Stefan Liebler <stli@linux.ibm.com> + + COMMIT: f14b6dfc87bc237bb9a673f1b74d52d434f75b7c + x86: Remove HWCAP_START and HWCAP_COUNT + + * sysdeps/x86/dl-hwcap.h: Modified. + [! __x86_64__](HWCAP_START): Remove. + [! __x86_64__](HWCAP_COUNT): Remove. + [IS_IN (ldconfig)](HWCAP_START): Remove. + [IS_IN (ldconfig)](HWCAP_COUNT): Remove. + [__x86_64__](HWCAP_START): Remove. + [__x86_64__](HWCAP_COUNT): Remove. + +2024-06-17 YunQiang Su <syq@debian.org> + + COMMIT: eaf4fc516a4c91de0c0f88d2d7b544751ea6f72b + math: Update mips32/mips64 ulps for log2p1 + + * sysdeps/mips/mips32/libm-test-ulps: Modified. + * sysdeps/mips/mips64/libm-test-ulps: Modified. + +2024-06-17 Andreas K. Hüttel <dilfridge@gentoo.org> + + COMMIT: 98ffc1bfeb04fb04b7f18f1cbfccf1e43d6a867f + Convert to autoconf 2.72 (vanilla release, no distribution patches) + + * INSTALL: Modified. + * aclocal.m4: Modified. + * configure: Modified. + * manual/install.texi: Modified. + * sysdeps/aarch64/configure: Modified. + * sysdeps/arc/configure: Modified. + * sysdeps/arm/configure: Modified. + * sysdeps/hppa/configure: Modified. + * sysdeps/i386/configure: Modified. + * sysdeps/ieee754/ldbl-opt/configure: Modified. + * sysdeps/loongarch/configure: Modified. + * sysdeps/mach/configure: Modified. + * sysdeps/mach/hurd/configure: Modified. + * sysdeps/mips/configure: Modified. + * sysdeps/nios2/configure: Modified. + * sysdeps/powerpc/powerpc32/fpu/configure: Modified. + * sysdeps/powerpc/powerpc64/configure: Modified. + * sysdeps/powerpc/powerpc64/le/configure: Modified. + * sysdeps/powerpc/powerpc64/le/fpu/multiarch/configure: Modified. + * sysdeps/riscv/configure: Modified. + * sysdeps/s390/configure: Modified. + * sysdeps/s390/s390-64/configure: Modified. + * sysdeps/sparc/sparc32/configure: Modified. + * sysdeps/unix/sysv/linux/configure: Modified. + * sysdeps/unix/sysv/linux/loongarch/configure: Modified. + * sysdeps/unix/sysv/linux/mips/configure: Modified. + * sysdeps/unix/sysv/linux/powerpc/configure: Modified. + * sysdeps/unix/sysv/linux/powerpc/powerpc64/configure: Modified. + * sysdeps/unix/sysv/linux/riscv/configure: Modified. + * sysdeps/x86/configure: Modified. + * sysdeps/x86_64/configure: Modified. + +2024-06-17 Joseph Myers <josmyers@redhat.com> + + COMMIT: 7ec903e028271d029818378fd60ddaf6b76b89ac + Implement C23 exp2m1, exp10m1 + + * NEWS: Modified. + * manual/math.texi: Modified. + * math/Makefile: Modified. + * math/Versions: Modified. + * math/auto-libm-test-in: Modified. + * math/auto-libm-test-out-exp10m1: New file. + * math/auto-libm-test-out-exp2m1: New file. + * math/bits/mathcalls.h: Modified. + [__GLIBC_USE (IEC_60559_FUNCS_EXT_C23)](__MATHCALL): Modified. + [__GLIBC_USE (IEC_60559_FUNCS_EXT_C23)](__MATHCALL): Modified. + [__GLIBC_USE (IEC_60559_FUNCS_EXT_C23)](__MATHCALL): Modified. + [__GLIBC_USE (IEC_60559_FUNCS_EXT_C23)](__MATHCALL): New function. + [__GLIBC_USE (IEC_60559_FUNCS_EXT_C23)](__MATHCALL): New function. + * math/gen-auto-libm-tests.c: Modified. + * math/gen-tgmath-tests.py: Modified. + * math/libm-test-exp10m1.inc: New file. + * math/libm-test-exp2m1.inc: New file. + * math/s_exp10m1_template.c: New file. + * math/s_exp2m1_template.c: New file. + * math/test-tgmath.c: Modified. + [! HAVE_MAIN](NCALLS): Modified. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](TYPE): Modified. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](TYPE): Modified. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](TYPE): Modified. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](TYPE): Modified. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](TYPE): Modified. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](TYPE): Modified. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](TYPE): New. + [HAVE_MAIN](F): New function. + [HAVE_MAIN](TYPE): New. + [HAVE_MAIN](F): New function. + * math/tgmath.h: Modified. + [__GLIBC_USE (IEC_60559_FUNCS_EXT_C23)](exp2m1): New. + [__GLIBC_USE (IEC_60559_FUNCS_EXT_C23)](exp10m1): New. + * sysdeps/i386/i686/fpu/multiarch/libm-test-ulps: Modified. + * sysdeps/ieee754/ldbl-128ibm-compat/Versions: Modified. + * sysdeps/ieee754/ldbl-opt/Makefile: Modified. + * sysdeps/ieee754/ldbl-opt/nldbl-exp10m1.c: New file. + * sysdeps/ieee754/ldbl-opt/nldbl-exp2m1.c: New file. + * sysdeps/mach/hurd/i386/libm.abilist: Modified. + * sysdeps/mach/hurd/x86_64/libm.abilist: Modified. + * sysdeps/powerpc/powerpc64/le/fpu/multiarch/Makefile: Modified. + * sysdeps/powerpc/powerpc64/le/fpu/multiarch/float128_private.h: Modified. + [_F128_ENABLE_IFUNC](F128_REDIR): New function. + [_F128_ENABLE_IFUNC](F128_REDIR): New function. + * sysdeps/powerpc/powerpc64/le/fpu/multiarch/math-type-macros-float128.h: Modified. + [_F128_ENABLE_IFUNC](F128_REDIR): Modified. + [_F128_ENABLE_IFUNC](F128_REDIR): Modified. + [_F128_ENABLE_IFUNC](F128_REDIR): Modified. + [_F128_ENABLE_IFUNC](F128_REDIR): Modified. + [_F128_ENABLE_IFUNC](F128_REDIR): Modified. + [_F128_ENABLE_IFUNC](F128_REDIR): Modified. + [_F128_ENABLE_IFUNC](F128_REDIR): Modified. + [_F128_ENABLE_IFUNC](F128_REDIR): Modified. + [_F128_ENABLE_IFUNC](F128_REDIR): Modified. + [_F128_ENABLE_IFUNC](F128_REDIR): Modified. + [_F128_ENABLE_IFUNC](F128_REDIR): Modified. + [_F128_ENABLE_IFUNC](F128_REDIR): Modified. + [_F128_ENABLE_IFUNC](F128_REDIR): Modified. + [_F128_ENABLE_IFUNC](F128_REDIR): Modified. + [_F128_ENABLE_IFUNC](F128_REDIR): Modified. + [_F128_ENABLE_IFUNC](F128_REDIR): Modified. + [_F128_ENABLE_IFUNC](F128_REDIR): Modified. + [_F128_ENABLE_IFUNC](F128_REDIR): Modified. + [_F128_ENABLE_IFUNC](F128_REDIR): Modified. + [_F128_ENABLE_IFUNC](F128_REDIR): Modified. + [_F128_ENABLE_IFUNC](F128_REDIR): Modified. + [_F128_ENABLE_IFUNC](F128_REDIR): Modified. + [_F128_ENABLE_IFUNC](F128_REDIR): New function. + [_F128_ENABLE_IFUNC](F128_REDIR): New function. + [_F128_ENABLE_IFUNC](F128_REDIR): New function. + * sysdeps/unix/sysv/linux/aarch64/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/alpha/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/arc/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/arm/be/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/arm/le/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/csky/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/hppa/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/i386/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/loongarch/lp64/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/microblaze/be/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/microblaze/le/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/mips/mips32/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/mips/mips64/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/nios2/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/or1k/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/riscv/rv32/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/riscv/rv64/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/sh/be/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/sh/le/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/x86_64/64/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist: Modified. + * sysdeps/x86_64/fpu/libm-test-ulps: Modified. + +2024-06-17 Joseph Myers <josmyers@redhat.com> + + COMMIT: 55eb99e9a9d840ba452b128be14d6529c2dde039 + Implement C23 log10p1 + + * NEWS: Modified. + * manual/math.texi: Modified. + * math/Makefile: Modified. + * math/Versions: Modified. + * math/auto-libm-test-in: Modified. + * math/auto-libm-test-out-log10p1: New file. + * math/bits/mathcalls.h: Modified. + [__GLIBC_USE (IEC_60559_FUNCS_EXT_C23)](__MATHCALL): Modified. + [__GLIBC_USE (IEC_60559_FUNCS_EXT_C23)](__MATHCALL): New function. + * math/gen-auto-libm-tests.c: Modified. + * math/gen-tgmath-tests.py: Modified. + * math/libm-test-log10p1.inc: New file. + * math/s_log10p1_template.c: New file. + * math/test-tgmath.c: Modified. + [! HAVE_MAIN](NCALLS): Modified. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](TYPE): Modified. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](TYPE): Modified. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](TYPE): Modified. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](TYPE): New. + [HAVE_MAIN](F): New function. + * math/tgmath.h: Modified. + [__GLIBC_USE (IEC_60559_FUNCS_EXT_C23)](log10p1): New. + * sysdeps/i386/i686/fpu/multiarch/libm-test-ulps: Modified. + * sysdeps/ieee754/ldbl-128ibm-compat/Versions: Modified. + * sysdeps/ieee754/ldbl-opt/Makefile: Modified. + * sysdeps/ieee754/ldbl-opt/nldbl-log10p1.c: New file. + * sysdeps/mach/hurd/i386/libm.abilist: Modified. + * sysdeps/mach/hurd/x86_64/libm.abilist: Modified. + * sysdeps/powerpc/nofpu/Makefile: Modified. + * sysdeps/unix/sysv/linux/aarch64/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/alpha/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/arc/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/arm/be/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/arm/le/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/csky/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/hppa/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/i386/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/loongarch/lp64/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/microblaze/be/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/microblaze/le/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/mips/mips32/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/mips/mips64/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/nios2/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/or1k/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/riscv/rv32/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/riscv/rv64/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/sh/be/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/sh/le/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/x86_64/64/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist: Modified. + * sysdeps/x86_64/fpu/libm-test-ulps: Modified. + +2024-06-17 Joseph Myers <josmyers@redhat.com> + + COMMIT: bb014f50c4a0c8d8db1ba5af55c104e430b5533d + Implement C23 logp1 + + * NEWS: Modified. + * manual/math.texi: Modified. + * math/Makefile: Modified. + * math/Versions: Modified. + * math/bits/mathcalls.h: Modified. + [__GLIBC_USE (IEC_60559_FUNCS_EXT_C23)](__MATHCALL): New function. + * math/gen-tgmath-tests.py: Modified. + * math/libm-test-log1p.inc: Modified. + * math/test-tgmath.c: Modified. + [! HAVE_MAIN](NCALLS): Modified. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](TYPE): Modified. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](TYPE): Modified. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](TYPE): Modified. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](TYPE): New. + [HAVE_MAIN](F): New function. + * math/tgmath.h: Modified. + [__GLIBC_USE (IEC_60559_FUNCS_EXT_C23)](logp1): New. + * math/w_log1p_template.c: Modified. + * sysdeps/aarch64/libm-test-ulps: Modified. + * sysdeps/alpha/fpu/libm-test-ulps: Modified. + * sysdeps/arc/fpu/libm-test-ulps: Modified. + * sysdeps/arc/nofpu/libm-test-ulps: Modified. + * sysdeps/arm/libm-test-ulps: Modified. + * sysdeps/csky/fpu/libm-test-ulps: Modified. + * sysdeps/csky/nofpu/libm-test-ulps: Modified. + * sysdeps/hppa/fpu/libm-test-ulps: Modified. + * sysdeps/i386/fpu/libm-test-ulps: Modified. + * sysdeps/i386/i686/fpu/multiarch/libm-test-ulps: Modified. + * sysdeps/ieee754/float128/Makefile: Modified. + * sysdeps/ieee754/float128/float128_private.h: Modified. + (logp1l): New. + * sysdeps/ieee754/ldbl-128/Makefile: Modified. + * sysdeps/ieee754/ldbl-128ibm-compat/Versions: Modified. + * sysdeps/ieee754/ldbl-96/Makefile: Modified. + * sysdeps/ieee754/ldbl-opt/Makefile: Modified. + * sysdeps/ieee754/ldbl-opt/nldbl-log1p.c: Modified. + (weak_alias): New. + * sysdeps/loongarch/lp64/libm-test-ulps: Modified. + * sysdeps/m68k/coldfire/fpu/libm-test-ulps: Modified. + * sysdeps/mach/hurd/i386/libm.abilist: Modified. + * sysdeps/mach/hurd/x86_64/libm.abilist: Modified. + * sysdeps/microblaze/libm-test-ulps: Modified. + * sysdeps/mips/mips32/libm-test-ulps: Modified. + * sysdeps/mips/mips64/libm-test-ulps: Modified. + * sysdeps/nios2/libm-test-ulps: Modified. + * sysdeps/or1k/fpu/libm-test-ulps: Modified. + * sysdeps/or1k/nofpu/libm-test-ulps: Modified. + * sysdeps/powerpc/fpu/libm-test-ulps: Modified. + * sysdeps/powerpc/nofpu/libm-test-ulps: Modified. + * sysdeps/powerpc/powerpc64/le/fpu/multiarch/Makefile: Modified. + * sysdeps/powerpc/powerpc64/le/fpu/multiarch/float128-ifunc-redirects.h: Modified. + (__typeof): New function. + (__w_log1pf128): New. + * sysdeps/powerpc/powerpc64/le/fpu/multiarch/float128-ifunc.h: Modified. + (DECL_ALIAS_w_log1p): Modified. + * sysdeps/powerpc/powerpc64/le/fpu/multiarch/math-type-macros-float128.h: Modified. + [_F128_ENABLE_IFUNC](__w_logp1f128): New function. + [_F128_ENABLE_IFUNC](F128_REDIR): New function. + * sysdeps/riscv/nofpu/libm-test-ulps: Modified. + * sysdeps/riscv/rvd/libm-test-ulps: Modified. + * sysdeps/s390/fpu/libm-test-ulps: Modified. + * sysdeps/sh/libm-test-ulps: Modified. + * sysdeps/sparc/fpu/libm-test-ulps: Modified. + * sysdeps/unix/sysv/linux/aarch64/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/alpha/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/arc/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/arm/be/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/arm/le/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/csky/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/hppa/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/i386/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/loongarch/lp64/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/microblaze/be/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/microblaze/le/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/mips/mips32/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/mips/mips64/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/nios2/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/or1k/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/riscv/rv32/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/riscv/rv64/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/sh/be/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/sh/le/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/x86_64/64/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist: Modified. + * sysdeps/x86_64/fpu/libm-test-ulps: Modified. + +2024-06-17 Florian Weimer <fweimer@redhat.com> + + COMMIT: ca38eff28015f376c020b4dfad5351e45be8d090 + support: Include <limits.h> for NAME_MAX use in temp_file.c + + * support/temp_file.c: Modified. + (limits.h): Include file. + +2024-06-17 Florian Weimer <fweimer@redhat.com> + + COMMIT: cb65d6610445a95f78b958af44f52746b4e36b24 + support: Include <stdlib.h> for atoi use in support_wait_for_thread_exit + + * support/support_wait_for_thread_exit.c: Modified. + (stdlib.h): Include file. + +2024-06-17 Jan Kurik <jkurik@redhat.com> + + COMMIT: 6739bbb4df0e5c8f7575127c89de400669c0d050 + Extend tst-getconf.sh test with NPROCESSORS_CONF and NPROCESSORS_ONLN + + * posix/tst-getconf.sh: Modified. + +2024-06-17 Mike FABIAN <mfabian@redhat.com> + + COMMIT: 3ea79f50853afcbe17d6a4e2537e1bd5a2d17e7d + Define ISO 639-3 "ltg" (Latgalian) and add ltg_LV locale + + * locale/iso-639.def: Modified. + * localedata/Makefile: Modified. + * localedata/SUPPORTED: Modified. + * localedata/locales/ltg_LV: New file. + * localedata/ltg_LV.UTF-8.in: New file. + +2024-06-15 Paul Eggert <eggert@cs.ucla.edu> + + COMMIT: 6059938728a98270b9706488887f43baa0471eba + INSTALL: regenerate + + * INSTALL: Modified. + +2024-06-15 Paul Eggert <eggert@cs.ucla.edu> + + COMMIT: 7c1ec1b7d0b476610c811b0babeab831e626c088 + Minor code improvement to timespec_subtract example + + * manual/examples/timespec_subtract.c: Modified. + (timespec_subtract): Modified function. + +2024-06-15 Paul Eggert <eggert@cs.ucla.edu> + + COMMIT: ee768a30fe9099972dad04c49972c2508a208b9b + Modernize and fix doc’s “Date and Time†(BZ 31876) + + * benchtests/strcoll-inputs/filelist#en_US.UTF-8: Modified. + * manual/conf.texi: Modified. + * manual/contrib.texi: Modified. + * manual/examples/strftim.c: Modified. + (SIZE): Remove. + (main): Modified function. + * manual/examples/timespec_subtract.c: New file. + * manual/examples/timeval_subtract.c: Delete file. + * manual/install.texi: Modified. + * manual/startup.texi: Modified. + * manual/time.texi: Modified. + * time/localtime.c: Modified. + +2024-06-15 Andreas K. Hüttel <dilfridge@gentoo.org> + + COMMIT: 41d6461484d6d456fb07f495fb595e06b44758c4 + manual: minor language fix (bz 31340) + + * manual/resource.texi: Modified. + +2024-06-14 Noah Goldstein <goldstein.w.n@gmail.com> + + COMMIT: 5b54a33435e5533653a9956728f2de9d16a3b4ee + x86: Fix value for `x86_memset_non_temporal_threshold` when it is undesirable + + * sysdeps/x86/dl-cacheinfo.h: Modified. + (dl_init_cacheinfo): Modified function. + +2024-06-14 H.J. Lu <hjl.tools@gmail.com> + + COMMIT: 0b7f7842f812e7a70a79ce001e22942f7fe200aa + elf: Change module-names to modules-names in comments + + * elf/Makefile: Modified. + +2024-06-14 Andreas K. Hüttel <dilfridge@gentoo.org> + + COMMIT: 3953b5b88f674d33675662e2e8d3a5f3cfda720c + i686: Regenerate ulps + + * sysdeps/i386/i686/fpu/multiarch/libm-test-ulps: Modified. + +2024-06-14 Xi Ruoyao <xry111@xry111.site> + + COMMIT: 97aa7b7346bb9f1807e450c889fccbd2a7d8ff49 + LoongArch: Ensure sp 16-byte aligned for tlsdesc + + * sysdeps/loongarch/dl-tlsdesc.S: Modified. + * sysdeps/loongarch/sys/asm.h: Modified. + (SZFCSREG): Remove. + +2024-06-13 Florian Weimer <fweimer@redhat.com> + + COMMIT: 868ab8923a2ec977faafec97ecafac0c3159c1b2 + resolv: Track single-request fallback via _res._flags (bug 31476) + + * resolv/res_send.c: Modified. + (send_dg): Modified function. + * resolv/resolv-internal.h: Modified. + (RES_F_SNGLKUP): New. + (RES_F_SNGLKUPREOP): New. + +2024-06-12 H.J. Lu <hjl.tools@gmail.com> + + COMMIT: 29807a271edca3e47195bda0c69ae45e245551a9 + x86: Properly set x86 minimum ISA level [BZ #31883] + + * sysdeps/x86/configure: Modified. + * sysdeps/x86/configure.ac: Modified. + * sysdeps/x86/isa-level.h: Modified. + [!(__X86_ISA_V1 && __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16 && HAVE_X86_LAHF_SAHF && __POPCNT__ && __SSE3__ && __SSSE3__ && __SSE4_1__ && __SSE4_2__)](__X86_ISA_V2): Remove. + [__X86_ISA_V1 && __GCC_HAVE_SYNC_COMPARE_AND_SWAP_16 && HAVE_X86_LAHF_SAHF && __POPCNT__ && __SSE3__ && __SSSE3__ && __SSE4_1__ && __SSE4_2__](__X86_ISA_V2): Remove. + [! __x86_64__][__GCC_HAVE_SYNC_COMPARE_AND_SWAP_8](__GCC_HAVE_SYNC_COMPARE_AND_SWAP): New. + [!(__X86_ISA_V1 && __GCC_HAVE_SYNC_COMPARE_AND_SWAP && HAVE_X86_LAHF_SAHF && __POPCNT__ && __SSE3__ && __SSSE3__ && __SSE4_1__ && __SSE4_2__)](__X86_ISA_V2): New. + [__X86_ISA_V1 && __GCC_HAVE_SYNC_COMPARE_AND_SWAP && HAVE_X86_LAHF_SAHF && __POPCNT__ && __SSE3__ && __SSSE3__ && __SSE4_1__ && __SSE4_2__](__X86_ISA_V2): New. + [__x86_64__][__GCC_HAVE_SYNC_COMPARE_AND_SWAP_16](__GCC_HAVE_SYNC_COMPARE_AND_SWAP): New. + +2024-06-12 DJ Delorie <dj@redhat.com> + + COMMIT: 8859607eaa068a3aaa7df7f54eff186b25ecdad0 + tunables: sort tunables list (BZ 30027) + + * Makeconfig: Modified. + * scripts/gen-tunables.awk: Modified. + +2024-06-12 Adhemerval Zanella <adhemerval.zanella@linaro.org> + + COMMIT: 7edd3814b00c46a404cbaf316eab9db18438c3dd + linux: Remove __stack_prot + + * elf/dl-load.c: Modified. + [! EXTERNAL_MAP_FROM_FD](_dl_map_object_from_fd): Modified function. + [!(_STACK_GROWS_UP && PROT_GROWSUP)](__stack_prot): Remove. + [_STACK_GROWS_DOWN && PROT_GROWSDOWN](__stack_prot): Remove. + [_STACK_GROWS_UP && PROT_GROWSUP](__stack_prot): Remove. + (__stack_prot): Remove. + (__rtld_env_path_list): New. + * sysdeps/unix/sysv/linux/dl-execstack.c: Modified. + (__stack_prot): Remove. + (make_main_stack_executable): Modified function. + +2024-06-11 Philip Kaludercic <philipk@posteo.net> + + COMMIT: e7ac92e6ca9784b397189df0b2e1fb34f425bab8 + <stdio.h>: Acknowledge that getdelim/getline are in POSIX + + * libio/stdio.h: Modified. + +2024-06-11 Mike FABIAN <mfabian@redhat.com> + + COMMIT: 10733d6a72381a54644e16094c39ca7540660a59 + localedata: Lowercase day and abday in cs_CZ + + * localedata/locales/cs_CZ: Modified. + +2024-06-11 H.J. Lu <hjl.tools@gmail.com> + + COMMIT: 09bc68b0ac26331a0109f0578c9368e09176da18 + x86: Properly set MINIMUM_X86_ISA_LEVEL for i386 [BZ #31867] + + * sysdeps/x86/configure: Modified. + * sysdeps/x86/configure.ac: Modified. + +2024-06-10 Joe Damato <jdamato@fastly.com> + + COMMIT: bef2a827a55fc759693ccc5b0f614353b8ad712d + x86: Enable non-temporal memset tunable for AMD + + * sysdeps/x86/dl-cacheinfo.h: Modified. + (dl_init_cacheinfo): Modified function. + +2024-06-10 Samuel Thibault <samuel.thibault@ens-lyon.org> + + COMMIT: 5968125f55a3a3f3394e4ebe45e1f96d4864c576 + hurd: Fix getxattr/listxattr returning ERANGE + + * hurd/xattr.c: Modified. + (_hurd_xattr_get): Modified function. + (_hurd_xattr_list): Modified function. + +2024-06-10 Samuel Thibault <samuel.thibault@ens-lyon.org> + + COMMIT: ed06248019908dd4f286552594ac3ec844ef3da4 + hurd: Fix setxattr return value on replacing + + * hurd/xattr.c: Modified. + (_hurd_xattr_set): Modified function. + +2024-06-10 Samuel Thibault <samuel.thibault@ens-lyon.org> + + COMMIT: ba5a23422a156804234dff6c5be89e20ee8f9ec2 + hurd: Fix getxattr("gnu.translator") returning ENODATA + + * hurd/xattr.c: Modified. + (_hurd_xattr_get): Modified function. + +2024-06-10 Samuel Thibault <samuel.thibault@ens-lyon.org> + + COMMIT: 74f9ee3b91931967df5601ad63a4b02f5cd75b43 + hurd: Fix lsetxattr return value + + * sysdeps/mach/hurd/lsetxattr.c: Modified. + (lsetxattr): Modified function. + +2024-06-07 David Paleino <dapal@debian.org> + + COMMIT: eb370158794d7c64740a257ab2246ab46b90306a + localedata: add new locales scn_IT + + * localedata/SUPPORTED: Modified. + * localedata/locales/scn_IT: New file. + +2024-06-05 Avinal Kumar <avinal.xlvii@gmail.com> + + COMMIT: 54c1efdac55b756a4e2ea95590bcc3ba396a6568 + support: Fix typo in xgetsockname error message + + * support/xgetsockname.c: Modified. + (xgetsockname): Modified function. + +2024-06-05 Mohamed Akram <mohd.akram@outlook.com> + + COMMIT: 2f7246015c0d0760ab4529c4b13b2816337bed35 + getconf: Add NPROCESSORS_{CONF,ONLN} [BZ #31661] + + * posix/getconf.c: Modified. + +2024-06-04 Joe Damato <jdamato@fastly.com> + + COMMIT: 92c270d32caf3f8d5a02b8e46c7ec5d9d0315158 + Linux: Add epoll ioctls + + * NEWS: Modified. + * sysdeps/unix/sysv/linux/Makefile: Modified. + * sysdeps/unix/sysv/linux/sys/epoll.h: Modified. + (sys/ioctl.h): Include file. + (epoll_params): New. + (EPOLL_IOC_TYPE): New. + (EPIOCSPARAMS): New. + (EPIOCGPARAMS): New. + * sysdeps/unix/sysv/linux/tst-epoll-ioctls.c: New file. + +2024-06-04 Paul Eggert <eggert@cs.ucla.edu> + + COMMIT: 400bdb5c85af5a52b3f5653357c9fca87f036bd3 + Improve doc for time_t range (BZ 31808) + + * manual/time.texi: Modified. + +2024-06-04 Paul Eggert <eggert@cs.ucla.edu> + + COMMIT: cafef3eb21db24f2e8113b0adc12c0f15d4dec41 + difftime can throw exceptions + + * time/time.h: Modified. + [! __USE_TIME64_REDIRECTS](__attribute_pure__): Remove. + [! __USE_TIME64_REDIRECTS](difftime): New function. + [__USE_TIME64_REDIRECTS][__REDIRECT_NTH](__attribute_pure__): Remove. + [__USE_TIME64_REDIRECTS][__REDIRECT_NTH](__REDIRECT_NTH): Modified. + [__USE_TIME64_REDIRECTS][__REDIRECT_NTH](__REDIRECT_NTH): Modified. + [__USE_TIME64_REDIRECTS][__REDIRECT_NTH](__REDIRECT_NTH): Modified. + [__USE_TIME64_REDIRECTS][__REDIRECT_NTH](__REDIRECT_NTH): Modified. + [__USE_TIME64_REDIRECTS][__REDIRECT_NTH](__REDIRECT_NTH): New function. + +2024-06-04 sayan paul <saypaul@redhat.com> + + COMMIT: 127fc56152347d73cb7c1c283e60e1cb1f15e9f9 + malloc: New test to check malloc alternate path using memory obstruction + + * malloc/Makefile: Modified. + * malloc/tst-malloc-alternate-path.c: New file. + +2024-06-04 Szabolcs Nagy <szabolcs.nagy@arm.com> + + COMMIT: 2a9943b4a03b6bce7c2b1b047592eee38ab74fab + math: Fix exp10 undefined left shift + + * sysdeps/ieee754/dbl-64/e_exp10.c: Modified. + (special_case): Modified function. + (__exp10): Modified function. + +2024-06-04 Florian Weimer <fweimer@redhat.com> + + COMMIT: d0106b6ae26c8cc046269358a77188105c99d5e3 + libio: Test for fdopen memory leak without SEEK_END support (bug 31840) + + * libio/Makefile: Modified. + * libio/tst-fdopen-seek-failure.c: New file. + +2024-06-04 Andreas Schwab <schwab@suse.de> + + COMMIT: b2c3ee3724900975deaf5eae57640bb0c2d7315e + Remove memory leak in fdopen (bug 31840) + + * libio/iofdopen.c: Modified. + (_IO_new_fdopen): Modified function. + +2024-06-04 Joseph Myers <josmyers@redhat.com> + + COMMIT: 1d441791cbea02b0261579f0332a7a85c21e2a3f + Add new AArch64 HWCAP2 definitions from Linux 6.9 to bits/hwcap.h + + * sysdeps/unix/sysv/linux/aarch64/bits/hwcap.h: Modified. + (HWCAP2_FPMR): New. + (HWCAP2_LUT): New. + (HWCAP2_FAMINMAX): New. + (HWCAP2_F8CVT): New. + (HWCAP2_F8FMA): New. + (HWCAP2_F8DP4): New. + (HWCAP2_F8DP2): New. + (HWCAP2_F8E4M3): New. + (HWCAP2_F8E5M2): New. + (HWCAP2_SME_LUTV2): New. + (HWCAP2_SME_F8F16): New. + (HWCAP2_SME_F8F32): New. + (HWCAP2_SME_SF8FMA): New. + (HWCAP2_SME_SF8DP4): New. + (HWCAP2_SME_SF8DP2): New. + +2024-06-04 Joseph Myers <josmyers@redhat.com> + + COMMIT: 9063b32b3c3438452d9b47a0213a9d2007252554 + Add more NT_ARM_* constants from Linux kernel to elf.h + + * elf/elf.h: Modified. + (NT_ARM_SSVE): New. + (NT_ARM_ZA): New. + (NT_ARM_ZT): New. + (NT_ARM_FPMR): New. + +2024-06-03 Florian Weimer <fweimer@redhat.com> + + COMMIT: 992daa0b4b5fa8a9f403c9575638cec288e12bfa + stdlib: Describe __cxa_finalize usage in function comment + + * stdlib/cxa_finalize.c: Modified. + +2024-06-03 Florian Weimer <fweimer@redhat.com> + + COMMIT: afe42e935b3ee97bac9a7064157587777259c60e + elf: Avoid some free (NULL) calls in _dl_update_slotinfo + + * elf/dl-tls.c: Modified. + [SHARED](_dl_update_slotinfo): Modified function. + +2024-05-30 Noah Goldstein <goldstein.w.n@gmail.com> + + COMMIT: 46b5e98ef6f1b9f4b53851f152ecb8209064b26c + x86: Add seperate non-temporal tunable for memset + + * manual/tunables.texi: Modified. + * sysdeps/x86/cacheinfo.h: Modified. + [IS_IN (libc)](init_cacheinfo): Modified function. + [IS_IN (libc)](__x86_memset_non_temporal_threshold): New. + * sysdeps/x86/dl-cacheinfo.h: Modified. + (dl_init_cacheinfo): Modified function. + * sysdeps/x86/dl-diagnostics-cpu.c: Modified. + (_dl_diagnostics_cpu): Modified function. + * sysdeps/x86/dl-tunables.list: Modified. + * sysdeps/x86/include/cpu-features.h: Modified. + (cpu_features): Modified. + * sysdeps/x86_64/multiarch/memset-vec-unaligned-erms.S: Modified. + +2024-05-30 Noah Goldstein <goldstein.w.n@gmail.com> + + COMMIT: 5bf0ab80573d66e4ae5d94b094659094336da90f + x86: Improve large memset perf with non-temporal stores [RHEL-29312] + + * sysdeps/x86_64/multiarch/memset-vec-unaligned-erms.S: Modified. + +2024-05-30 Luca Boccassi <bluca@debian.org> + + COMMIT: 53f9d74322c831c76bc6cf6ed8941267e8749604 + elf: add note identifier for dlopen metadata + + * elf/elf.h: Modified. + (NT_FDO_DLOPEN_METADATA): New. + +2024-05-30 Luca Boccassi <bluca@debian.org> + + COMMIT: 52aae0860018b500b8212b5d63495dbe6b9b7022 + elf: update NT_FDO_PACKAGING_METADATA spec URL + + * elf/elf.h: Modified. + +2024-05-28 Xi Ruoyao <xry111@xry111.site> + + COMMIT: 0c1d2c277a59f08fd3232b33d18644ea890190ea + LoongArch: Use "$fcsr0" instead of "$r0" in _FPU_{GET,SET}CW + + * sysdeps/loongarch/fpu_control.h: Modified. + [! __loongarch_soft_float](_FPU_GETCW): Modified. + [! __loongarch_soft_float](_FPU_SETCW): Modified. + +2024-05-27 Xin Wang <yw987194828@gmail.com> + + COMMIT: e0f7f1808fb024d35c3d9973e68245efc78fff40 + x86_64: Reformat elf_machine_rela + + * sysdeps/x86_64/dl-machine.h: Modified. + [RESOLVE_MAP](elf_machine_rela): Modified function. + +2024-05-27 Sunil K Pandey <skpgkp2@gmail.com> + Haochen Jiang <haochen.jiang@intel.com> + + COMMIT: 1b713c9a5349ef3cd1a8ccf9de017c7865713c67 + i386: Disable Intel Xeon Phi tests for GCC 15 and above (BZ 31782) + + * sysdeps/x86/tst-cpu-features-supports.c: Modified. + (do_test): Modified function. + +2024-05-27 Paul Eggert <eggert@cs.ucla.edu> + + COMMIT: df63f01a30d98f74bb6e82cbe1e27dbf795e433d + difftime is pure, not const + + * time/time.h: Modified. + [! __USE_TIME64_REDIRECTS](difftime): Remove. + [! __USE_TIME64_REDIRECTS](__attribute_pure__): New. + [__USE_TIME64_REDIRECTS][__REDIRECT_NTH](__REDIRECT_NTH): Modified. + [__USE_TIME64_REDIRECTS][__REDIRECT_NTH](__REDIRECT_NTH): Modified. + [__USE_TIME64_REDIRECTS][__REDIRECT_NTH](__REDIRECT_NTH): Modified. + [__USE_TIME64_REDIRECTS][__REDIRECT_NTH](__REDIRECT_NTH): Modified. + [__USE_TIME64_REDIRECTS][__REDIRECT_NTH](__REDIRECT_NTH): Remove. + [__USE_TIME64_REDIRECTS][__REDIRECT_NTH](__attribute_pure__): New. + +2024-05-27 H.J. Lu <hjl.tools@gmail.com> + + COMMIT: f981bf6b9db87e0732b46bfe92fdad4d363225e8 + parse_fdinfo: Don't advance pointer twice [BZ #31798] + + * sysdeps/unix/sysv/linux/pidfd_getpid.c: Modified. + (parse_fdinfo): Modified function. + +2024-05-25 H.J. Lu <hjl.tools@gmail.com> + + COMMIT: ab46c6ba6cc43b18daea6f197030e19303c9f012 + elf/Makefile: Split and sort PIE tests + + * elf/Makefile: Modified. + +2024-05-24 H.J. Lu <hjl.tools@gmail.com> + + COMMIT: caed1f5c0b2e31b5f4e0f21fea4b2c9ecd3b5b30 + Revert "Test fscanf of long double without <stdio.h>" + + * stdio-common/Makefile: Modified. + * stdio-common/test-fscanf.c: Delete file. + * stdio-common/test-fscanf.input: Delete file. + +2024-05-24 H.J. Lu <hjl.tools@gmail.com> + + COMMIT: 23c60af6dcf0902c3c314ace34fd67a744cec76e + sysdeps/ieee754/ldbl-opt/Makefile: Split and sort libnldbl-calls + + * sysdeps/ieee754/ldbl-opt/Makefile: Modified. + +2024-05-24 H.J. Lu <hjl.tools@gmail.com> + + COMMIT: 30a745450e01e4c6f484dc691c16a54a6ea72288 + Test fscanf of long double without <stdio.h> + + * stdio-common/Makefile: Modified. + * stdio-common/test-fscanf.c: New file. + * stdio-common/test-fscanf.input: New file. + +2024-05-24 H.J. Lu <hjl.tools@gmail.com> + + COMMIT: 639c143db3fcf6ec1537b86946233c0bc3b03d6e + sysdeps/ieee754/ldbl-opt/Makefile: Remove test-nldbl-redirect-static + + * sysdeps/ieee754/ldbl-opt/Makefile: Modified. + +2024-05-24 H.J. Lu <hjl.tools@gmail.com> + + COMMIT: acfb169b3c474930ce5ae278ab512ef7483c368c + sysdeps/ieee754/ldbl-opt/Makefile: Split and sort tests + + * sysdeps/ieee754/ldbl-opt/Makefile: Modified. + +2024-05-24 Stefan Liebler <stli@linux.ibm.com> + + COMMIT: 4af49c60a170f223f1c0010945b1340938105b53 + s390x: Regenerate ULPs. + + * sysdeps/s390/fpu/libm-test-ulps: Modified. + +2024-05-23 Adhemerval Zanella <adhemerval.zanella@linaro.org> + + COMMIT: 8f58e412b1e26d2c7e65c13a0ce758fbaf18d83f + powerpc: Remove duplicated versionsort from libm.a (BZ 31789) + + * dirent/versionsort64.c: Modified. + [!_DIRENT_MATCHES_DIRENT64](weak_alias): Remove. + [_DIRENT_MATCHES_DIRENT64](weak_alias): New. + +2024-05-23 Joseph Myers <josmyers@redhat.com> + + COMMIT: 84d2762922f74f5059d6179f503972c418153b91 + Update kernel version to 6.9 in header constant tests + + * sysdeps/unix/sysv/linux/tst-mman-consts.py: Modified. + * sysdeps/unix/sysv/linux/tst-mount-consts.py: Modified. + +2024-05-23 Mike FABIAN <mfabian@redhat.com> + + COMMIT: 28bf4783d9dfe6174de0fc90681da444a028e2a3 + localedata: cv_RU: update translation + + * localedata/cv_RU.UTF-8.in: Modified. + * localedata/locales/cv_RU: Modified. + +2024-05-23 Adhemerval Zanella <adhemerval.zanella@linaro.org> + + COMMIT: eaa8113bf0eb599025e3efdbe1bb214ee8dc645a + math: Provide missing math symbols on libc.a (BZ 31781) + + * sysdeps/ieee754/ldbl-64-128/s_copysignl.c: Modified. + [IS_IN (libc)](libm_alias_ldouble): Remove. + [IS_IN (libc)](long_double_symbol): Remove. + [IS_IN (libc) && SHARED](libm_alias_ldouble): New. + [IS_IN (libc) && SHARED](long_double_symbol): New. + * sysdeps/ieee754/ldbl-64-128/s_frexpl.c: Modified. + [IS_IN (libc)](libm_alias_ldouble): Remove. + [IS_IN (libc)](long_double_symbol): Remove. + [IS_IN (libc) && SHARED](libm_alias_ldouble): New. + [IS_IN (libc) && SHARED](long_double_symbol): New. + * sysdeps/ieee754/ldbl-64-128/s_modfl.c: Modified. + [IS_IN (libc)](libm_alias_ldouble): Remove. + [IS_IN (libc)](long_double_symbol): Remove. + [IS_IN (libc) && SHARED](libm_alias_ldouble): New. + [IS_IN (libc) && SHARED](long_double_symbol): New. + +2024-05-23 Adhemerval Zanella <adhemerval.zanella@linaro.org> + + COMMIT: 1664bbf2383bb6a7d0ae7ecee6be3f23ab953466 + s390: Make utmp32, utmpx32, and login32 shared only (BZ 31790) + + * sysdeps/unix/sysv/linux/s390/s390-32/Makefile: Modified. + +2024-05-23 Adhemerval Zanella <adhemerval.zanella@linaro.org> + + COMMIT: 18dbe2784768a094895500c6dc24b6d19b224101 + microblaze: Remove cacheflush from libc.a (BZ 31788) + + * sysdeps/unix/sysv/linux/microblaze/syscalls.list: Modified. + +2024-05-23 Adhemerval Zanella <adhemerval.zanella@linaro.org> + + COMMIT: d8ebde14fbf713ef1d91e4250ad8aa97c7df8128 + powerpc: Remove duplicated llrintf and llrintf32 from libm.a (BZ 31787) + + * sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_llrintf-power6.c: Modified. + (libm-alias-float.h): Include file. + (libm_alias_float): New. + * sysdeps/powerpc/powerpc32/power4/fpu/multiarch/s_llrintf-ppc32.c: Modified. + (libm-alias-float.h): Include file. + (libm_alias_float): New. + +2024-05-23 Adhemerval Zanella <adhemerval.zanella@linaro.org> + + COMMIT: 5fededd8251b9f5ccd7f893123417205447b95f1 + powerpc: Remove duplicate strchrnul and strncasecmp_l libc.a (BZ 31786) + + * sysdeps/powerpc/powerpc64/multiarch/strchrnul-power7.S: Modified. + * sysdeps/powerpc/powerpc64/multiarch/strchrnul-ppc64.c: Modified. + (sysdeps/powerpc/powerpc32/power4/multiarch/strchrnul-ppc32.c): Remove include. + [IS_IN (libc)][SHARED](__hidden_ver1): New. + [IS_IN (libc)](STRCHRNUL): New. + [IS_IN (libc)](__strchrnul_ppc): New. + [IS_IN (libc)](string/strchrnul.c): New. + [IS_IN (libc)](__strchrnul): New. + [IS_IN (libc)](weak_alias): New. + (string.h): Include file. + * sysdeps/powerpc/powerpc64/multiarch/strncase_l-power7.c: Modified. + (weak_alias): New. + +2024-05-23 Adhemerval Zanella <adhemerval.zanella@linaro.org> + + COMMIT: 62eaa4673923bd8b91a5f961828b75bcce10beb7 + loongarch: Remove duplicate strnlen in libc.a (BZ 31785) + + * sysdeps/loongarch/lp64/multiarch/strnlen-aligned.S: Modified. + +2024-05-23 Adhemerval Zanella <adhemerval.zanella@linaro.org> + + COMMIT: ef9596352b9863dd055578b4bfdd3777aca0bcb8 + aarch64: Remove duplicate memchr/strlen in libc.a (BZ 31777) + + * sysdeps/aarch64/multiarch/memchr_generic.S: Modified. + * sysdeps/aarch64/multiarch/strlen_generic.S: Modified. + +2024-05-23 Joseph Myers <josmyers@redhat.com> + + COMMIT: e9a37242f9cca80496aa934158b7e366b8b419fa + Update PIDFD_* constants for Linux 6.9 + + * sysdeps/unix/sysv/linux/sys/pidfd.h: Modified. + (PIDFD_THREAD): New. + (PIDFD_SIGNAL_THREAD): New. + (PIDFD_SIGNAL_THREAD_GROUP): New. + (PIDFD_SIGNAL_PROCESS_GROUP): New. + * sysdeps/unix/sysv/linux/tst-pidfd-consts.py: Modified. + +2024-05-22 H.J. Lu <hjl.tools@gmail.com> + + COMMIT: 6d3b523eb54198d15af6e042054912cf9f5210de + Define write_profiling functions only in profile library [BZ #31756] + + * gmon/gmon.c: Modified. + [! SHARED](weak_alias): Remove. + (__write_profiling): Remove function. + [PROF](__write_profiling): New. + [PROF](weak_alias): New. + +2024-05-22 H.J. Lu <hjl.tools@gmail.com> + + COMMIT: 43d41ae6d74441dd5d21045324ff7391e7b0f545 + Don't provide XXXf128_do_not_use aliases [BZ #31757] + + * sysdeps/ieee754/float128/s_isnanf128.c: Modified. + [!IS_IN (libm)](_weak_alias): Remove. + [!IS_IN (libm)][! isnanl](_weak_alias): New. + * sysdeps/ieee754/ldbl-128/s_finitel.c: Modified. + * sysdeps/ieee754/ldbl-128/s_isinfl.c: Modified. + * sysdeps/ieee754/ldbl-128/s_nextafterl.c: Modified. + +2024-05-22 H.J. Lu <hjl.tools@gmail.com> + + COMMIT: a34f76edbda8a0b143111e670ca33c97623bfe56 + Don't provide scalb/significand _FloatN aliases [BZ #31760] + + * math/s_significand_template.c: Modified. + (libm_alias_float_other_r): New. + (libm_alias_double_other_r): New. + (libm_alias_ldouble_other_r): New. + (libm_alias_float128_other_r): New. + * math/w_scalb_template.c: Modified. + (libm_alias_float_other_r): New. + (libm_alias_double_other_r): New. + (libm_alias_ldouble_other_r): New. + (libm_alias_float128_other_r): New. + +2024-05-21 Adhemerval Zanella <adhemerval.zanella@linaro.org> + + COMMIT: 5d4999e519ec77e75bef920e2540e8605015680a + math: Fix isnanf128 static build (BZ 31774) + + * sysdeps/ieee754/float128/s_isnanf128.c: Modified. + [!IS_IN (libm)](hidden_ver): Remove. + [!IS_IN (libm)][! SHARED](strong_alias): New. + [!IS_IN (libm)][SHARED](hidden_ver): New. + +2024-05-21 Adhemerval Zanella <adhemerval.zanella@linaro.org> + + COMMIT: ce6cdb94d0769e99d0779b6283f543d333553461 + math: Add support for auto static math tests + + * Makeconfig: Modified. + * Makefile.help: Modified. + * math/Makefile: Modified. + * math/test-double-static.h: New file. + * math/test-float-static.h: New file. + * math/test-float128-static.h: New file. + * math/test-float32-static.h: New file. + * math/test-float32x-static.h: New file. + * math/test-float64-static.h: New file. + * math/test-float64x-static.h: New file. + * math/test-ibm128-static.h: New file. + * math/test-ldouble-static.h: New file. + +2024-05-21 H.J. Lu <hjl.tools@gmail.com> + + COMMIT: 85472c20a55ea2a49a7fbdf71652b4009118b0ae + Change _IO_stderr_/_IO_stdin_/_IO_stdout to compat symbols [BZ #31766] + + * libio/oldstdfiles.c: Modified. + [SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_1)](compat_symbol): New function. + [SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_1)](compat_symbol): New function. + [SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_1)](compat_symbol): New function. + +2024-05-21 H.J. Lu <hjl.tools@gmail.com> + + COMMIT: d97842653fba2fe5c093a101ac923a1b9e5e637c + Obsolete _dl_mcount_wrapper in glibc 2.40 [BZ #31765] + + * elf/libc-dl-profstub.c: Modified. + (_dl_mcount_wrapper): Remove function. + [SHLIB_COMPAT(libc, GLIBC_2_1, GLIBC_2_40)](_dl_mcount_wrapper): New. + [SHLIB_COMPAT(libc, GLIBC_2_1, GLIBC_2_40)](compat_symbol): New. + (shlib-compat.h): Include file. + +2024-05-21 Adhemerval Zanella <adhemerval.zanella@linaro.org> + + COMMIT: 1f09aae36aa185b8b1100dfa6b776442279bf580 + math: Fix i386 and m68k exp10 on static build (BZ 31775) + + * sysdeps/i386/fpu/w_exp10_compat.c: Modified. + (NO_COMPAT_NEEDED): Remove. + (math/w_exp10_compat.c): Remove include. + [! SHARED](math-type-macros-double.h): New. + [! SHARED](w_exp10_template.c): New. + [SHARED](NO_COMPAT_NEEDED): New. + [SHARED](math/w_exp10_compat.c): New. + * sysdeps/m68k/m680x0/fpu/w_exp10_compat.c: Modified. + (NO_COMPAT_NEEDED): Remove. + (math/w_exp10_compat.c): Remove include. + [! SHARED](math-type-macros-double.h): New. + [! SHARED](w_exp10_template.c): New. + [SHARED](NO_COMPAT_NEEDED): New. + [SHARED](math/w_exp10_compat.c): New. + +2024-05-21 Adhemerval Zanella <adhemerval.zanella@linaro.org> + + COMMIT: 0b716305dfb48c2d13ed4f7d06c082b90c1d226f + math: Fix i386 and m68k fmod/fmodf on static build (BZ 31488) + + * sysdeps/i386/fpu/w_fmod_compat.c: Modified. + [SHARED](math/w_fmod_compat.c): Include file. + (math/w_fmod_compat.c): Remove include. + [! SHARED](math-type-macros-double.h): New. + [! SHARED](w_fmod_template.c): New. + * sysdeps/i386/fpu/w_fmodf_compat.c: Modified. + [SHARED](math/w_fmodf_compat.c): Include file. + (math/w_fmodf_compat.c): Remove include. + [! SHARED](math-type-macros-float.h): New. + [! SHARED](w_fmod_template.c): New. + * sysdeps/ieee754/ldbl-opt/s_ldexpl.c: Modified. + [IS_IN (libc)](declare_mgen_alias): Remove. + [IS_IN (libc)](long_double_symbol): Remove. + [IS_IN (libc)](long_double_symbol): Remove. + [IS_IN (libc) && SHARED](declare_mgen_alias): New. + [IS_IN (libc) && SHARED](long_double_symbol): New. + [IS_IN (libc) && SHARED](long_double_symbol): New. + * sysdeps/m68k/m680x0/fpu/w_fmod_compat.c: Modified. + [SHARED](math/w_fmod_compat.c): Include file. + (math/w_fmod_compat.c): Remove include. + [! SHARED](math-type-macros-double.h): New. + [! SHARED](w_fmod_template.c): New. + * sysdeps/m68k/m680x0/fpu/w_fmodf_compat.c: Modified. + [SHARED](math/w_fmodf_compat.c): Include file. + (math/w_fmodf_compat.c): Remove include. + [! SHARED](math-type-macros-float.h): New. + [! SHARED](w_fmod_template.c): New. + +2024-05-21 H.J. Lu <hjl.tools@gmail.com> + + COMMIT: 437c94e04b82b410d72e173c2bfacd8af27abc53 + Remove the clone3 symbol from libc.a [BZ #31770] + + * sysdeps/unix/sysv/linux/aarch64/clone3.S: Modified. + * sysdeps/unix/sysv/linux/arc/clone3.S: Modified. + * sysdeps/unix/sysv/linux/arm/clone3.S: Modified. + * sysdeps/unix/sysv/linux/i386/clone3.S: Modified. + * sysdeps/unix/sysv/linux/loongarch/clone3.S: Modified. + * sysdeps/unix/sysv/linux/mips/clone3.S: Modified. + * sysdeps/unix/sysv/linux/powerpc/powerpc64/clone3.S: Modified. + * sysdeps/unix/sysv/linux/riscv/clone3.S: Modified. + * sysdeps/unix/sysv/linux/s390/s390-32/clone3.S: Modified. + * sysdeps/unix/sysv/linux/s390/s390-64/clone3.S: Modified. + * sysdeps/unix/sysv/linux/x86_64/clone3.S: Modified. + +2024-05-21 Joe Ramsay <Joe.Ramsay@arm.com> + + COMMIT: 0fed0b250f728f38bca5f6fba1dcecdccfc6a44e + aarch64/fpu: Add vector variants of pow + + * sysdeps/aarch64/fpu/Makefile: Modified. + * sysdeps/aarch64/fpu/Versions: Modified. + * sysdeps/aarch64/fpu/advsimd_f32_protos.h: Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): New function. + * sysdeps/aarch64/fpu/atan2_advsimd.c: Modified. + (math_config.h): Include file. + * sysdeps/aarch64/fpu/atan2_sve.c: Modified. + (math_config.h): Include file. + * sysdeps/aarch64/fpu/bits/math-vector.h: Modified. + [__ADVSIMD_VEC_MATH_SUPPORTED](_ZGVnN4vv_powf): New function. + [__ADVSIMD_VEC_MATH_SUPPORTED](_ZGVnN2vv_pow): New function. + [__SVE_VEC_MATH_SUPPORTED](_ZGVsMxvv_powf): New function. + [__SVE_VEC_MATH_SUPPORTED](_ZGVsMxvv_pow): New function. + [__aarch64__ && __FAST_MATH__ && __GNUC_PREREQ (6, 0)](__DECL_SIMD_pow): New. + [__aarch64__ && __FAST_MATH__ && __GNUC_PREREQ (6, 0)](__DECL_SIMD_powf): New. + * sysdeps/aarch64/fpu/finite_pow.h: New file. + * sysdeps/aarch64/fpu/pow_advsimd.c: New file. + * sysdeps/aarch64/fpu/pow_sve.c: New file. + * sysdeps/aarch64/fpu/powf_advsimd.c: New file. + * sysdeps/aarch64/fpu/powf_sve.c: New file. + * sysdeps/aarch64/fpu/test-double-advsimd-wrappers.c: Modified. + * sysdeps/aarch64/fpu/test-double-sve-wrappers.c: Modified. + (SVE_VECTOR_WRAPPER_ff): New. + * sysdeps/aarch64/fpu/test-float-advsimd-wrappers.c: Modified. + * sysdeps/aarch64/fpu/test-float-sve-wrappers.c: Modified. + (SVE_VECTOR_WRAPPER_ff): New. + * sysdeps/aarch64/fpu/v_pow_exp_data.c: New file. + * sysdeps/aarch64/fpu/v_pow_log_data.c: New file. + * sysdeps/aarch64/fpu/v_powf_data.c: New file. + * sysdeps/aarch64/fpu/vecmath_config.h: Modified. + (asuint64): Remove function. + (V_POW_EXP_TABLE_BITS): New. + (v_pow_exp_data): New. + (V_POW_LOG_TABLE_BITS): New. + (v_pow_log_data): New. + (V_POWF_EXP2_TABLE_BITS): New. + (V_POWF_EXP2_N): New. + (V_POWF_LOG2_TABLE_BITS): New. + (V_POWF_LOG2_N): New. + (v_powf_data): New. + * sysdeps/aarch64/libm-test-ulps: Modified. + * sysdeps/unix/sysv/linux/aarch64/libmvec.abilist: Modified. + +2024-05-21 Joe Ramsay <Joe.Ramsay@arm.com> + + COMMIT: c39cf53702e570b64a70d8f7fdfe277017acfb5f + Compile libmvec with -fno-math-errno + + * Makeconfig: Modified. + +2024-05-21 Andreas Schwab <schwab@suse.de> + + COMMIT: c35cad016b2a5bc71fa2330f26e35afdef327ccc + manual: clarify defintions of floating point exponent bounds (bug 31518) + + * manual/lang.texi: Modified. + +2024-05-21 caiyinyu <caiyinyu@loongson.cn> + + COMMIT: 3c1e22372d898a7e603bf62aee8036d3c82ec7c0 + LoongArch: Update ulps + + * sysdeps/loongarch/lp64/libm-test-ulps: Modified. + +2024-05-21 mengqinggang <mengqinggang@loongson.cn> + + COMMIT: 16d47c1594c5bcd334d0b8dbf147cda917f19bc4 + LoongArch: Fix tst-gnu2-tls2 compiler error + + * sysdeps/loongarch/Makefile: Modified. + * sysdeps/loongarch/configure: Modified. + * sysdeps/loongarch/configure.ac: Modified. + +2024-05-20 H.J. Lu <hjl.tools@gmail.com> + + COMMIT: 4b30c644d24c07c06b587cb46f2e50adc2c3c3f0 + resolv: Make _res_opcodes a compat symbol [BZ #31764] + + * resolv/res_debug.c: Modified. + [SHLIB_COMPAT (libresolv, GLIBC_2_0, GLIBC_2_26)][SHLIB_COMPAT (libresolv, GLIBC_2_0, GLIBC_2_26)](compat_symbol): New function. + +2024-05-20 H.J. Lu <hjl.tools@gmail.com> + + COMMIT: 8428278b5f5cee21811339017ca09cccc8c751f7 + i386: Don't define stpncpy alias when used in IFUNC [BZ #31768] + + * sysdeps/i386/stpncpy.S: Modified. + +2024-05-20 Adhemerval Zanella <adhemerval.zanella@linaro.org> + + COMMIT: f83e461f1014598a5cb4c89407ce303b9f0bd8ac + powerpc: Update ulps + + * sysdeps/powerpc/fpu/libm-test-ulps: Modified. + +2024-05-20 Adhemerval Zanella <adhemerval.zanella@linaro.org> + + COMMIT: 32b2aa59da13e7b5e7936071652aeb6b0a39dde4 + arm: Update ulps + + * sysdeps/arm/libm-test-ulps: Modified. + +2024-05-20 Adhemerval Zanella <adhemerval.zanella@linaro.org> + + COMMIT: 241338bd6f039aec07cba9ed161d9ef2ca9ed16d + aarch64: Update ulps + + * sysdeps/aarch64/libm-test-ulps: Modified. + +2024-05-20 Joe Simmons-Talbott <josimmon@redhat.com> + Carlos O'Donell <carlos@redhat.com> + + COMMIT: ae18044f95271ed422ed847bd8d8c6d8e84674ce + math: Add more details to the test driver output. + + * math/libm-test-driver.c: Modified. + (END): Modified. + (END_COMPLEX): Modified. + * math/libm-test-support.c: Modified. + [FE_ALL_EXCEPT](test_single_exception): Modified function. + (update_stats): Modified function. + (print_max_error): Remove function. + (print_complex_max_error): Remove function. + (test_exceptions): Modified function. + (test_single_errno): Modified function. + (test_errno): Modified function. + (check_float_internal): Modified function. + (check_int): Modified function. + (check_long): Modified function. + (check_bool): Modified function. + (check_longlong): Modified function. + (check_intmax_t): Modified function. + (check_uintmax_t): Modified function. + (libm_test_finish): Modified function. + (assert.h): Include file. + (TEST_INPUT): New. + (TEST_MAXERROR): New. + (noMaxErrorTests): New. + (print_test_start): New function. + (print_test_end): New function. + (check_max_error): New function. + (check_complex_max_error): New function. + * math/libm-test-support.h: Modified. + (print_max_error): Remove. + (print_complex_max_error): Remove. + (check_max_error): New function. + (check_complex_max_error): New function. + +2024-05-20 Joseph Myers <josmyers@redhat.com> + + COMMIT: 79c52daf4740b00bef43e4f5a4281b3480459b38 + Implement C23 log2p1 + + * NEWS: Modified. + * manual/math.texi: Modified. + * math/Makefile: Modified. + * math/Versions: Modified. + * math/auto-libm-test-in: Modified. + * math/auto-libm-test-out-log2p1: New file. + * math/bits/mathcalls.h: Modified. + [__GLIBC_USE (IEC_60559_FUNCS_EXT_C23)](__MATHCALL): New function. + * math/gen-auto-libm-tests.c: Modified. + * math/gen-tgmath-tests.py: Modified. + * math/libm-test-log2p1.inc: New file. + * math/s_log2p1_template.c: New file. + * math/test-tgmath.c: Modified. + [! HAVE_MAIN](NCALLS): Modified. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](TYPE): Modified. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](TYPE): Modified. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](TYPE): Modified. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](F): Modified function. + [HAVE_MAIN](TYPE): New. + [HAVE_MAIN](F): New function. + * math/tgmath.h: Modified. + [__GLIBC_USE (IEC_60559_FUNCS_EXT_C23)](log2p1): New. + * sysdeps/i386/i686/fpu/multiarch/libm-test-ulps: Modified. + * sysdeps/ieee754/ldbl-128ibm-compat/Versions: Modified. + * sysdeps/ieee754/ldbl-opt/Makefile: Modified. + * sysdeps/ieee754/ldbl-opt/nldbl-log2p1.c: New file. + * sysdeps/mach/hurd/i386/libm.abilist: Modified. + * sysdeps/mach/hurd/x86_64/libm.abilist: Modified. + * sysdeps/powerpc/nofpu/Makefile: Modified. + * sysdeps/unix/sysv/linux/aarch64/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/alpha/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/arc/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/arm/be/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/arm/le/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/csky/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/hppa/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/i386/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/loongarch/lp64/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/microblaze/be/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/microblaze/le/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/mips/mips32/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/mips/mips64/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/nios2/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/or1k/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/riscv/rv32/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/riscv/rv64/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/sh/be/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/sh/le/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/x86_64/64/libm.abilist: Modified. + * sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist: Modified. + * sysdeps/x86_64/fpu/libm-test-ulps: Modified. + +2024-05-20 Joseph Myers <josmyers@redhat.com> + + COMMIT: cf0ca8d52e1653d4aa4311a4649af8dc541ce6b4 + Update syscall lists for Linux 6.9 + + * sysdeps/unix/sysv/linux/syscall-names.list: Modified. + +2024-05-20 H.J. Lu <hjl.tools@gmail.com> + + COMMIT: 7935e7a537cd3347b922dc9f24a2b722dd80156c + Rename procutils_read_file to __libc_procutils_read_file [BZ #31755] + + * sysdeps/unix/sysv/linux/pidfd_getpid.c: Modified. + (pidfd_getpid): Modified function. + * sysdeps/unix/sysv/linux/procutils.c: Modified. + (procutils_read_file): Remove function. + (__libc_procutils_read_file): New function. + * sysdeps/unix/sysv/linux/procutils.h: Modified. + (procutils_read_file): Remove. + (__libc_procutils_read_file): New function. + +2024-05-20 H.J. Lu <hjl.tools@gmail.com> + + COMMIT: 4e21cb95e206dddf049dec12f7d4e25a79d60e05 + nearbyint: Don't define alias when used in IFUNC [BZ #31759] + + * sysdeps/ieee754/dbl-64/s_nearbyint.c: Modified. + * sysdeps/ieee754/flt-32/s_nearbyintf.c: Modified. + +2024-05-19 H.J. Lu <hjl.tools@gmail.com> + + COMMIT: 2be3352f0b1ebaa39596393fffe1062275186669 + Pass -nostdlib -nostartfiles together with -r [BZ #31753] + + * Makefile: Modified. + +2024-05-18 Florian Weimer <fweimer@redhat.com> + + COMMIT: 8d7b6b4cb27d4dec1dd5f7960298c1699275f962 + socket: Use may_alias on sockaddr structs (bug 19622) + + * bits/socket.h: Modified. + [! __glibc_c99_flexarr_available](CMSG_DATA): Remove. + [__USE_EXTERN_INLINES][! _EXTERN_INLINE](_EXTERN_INLINE): Remove. + [__USE_EXTERN_INLINES](__NTH): Remove. + [__USE_MISC](CMGROUP_MAX): Remove. + [__USE_MISC](cmsgcred): Remove. + [__WORDSIZE != 64][! __glibc_c99_flexarr_available](CMSG_DATA): New. + [__WORDSIZE != 64][__USE_EXTERN_INLINES][! _EXTERN_INLINE](_EXTERN_INLINE): New. + [__WORDSIZE != 64][__USE_EXTERN_INLINES](__NTH): New. + [__WORDSIZE != 64][__USE_MISC](CMGROUP_MAX): New. + [__WORDSIZE != 64][__USE_MISC](cmsgcred): New. + [__WORDSIZE != 64][__glibc_c99_flexarr_available](CMSG_DATA): New. + [__WORDSIZE != 64](_SS_PADSIZE): New. + [__WORDSIZE != 64](__SOCKADDR_COMMON): New function. + [__WORDSIZE != 64](__ss_padding): New. + [__WORDSIZE != 64](__ss_align): New. + [__WORDSIZE != 64](<anonymous>): New. + [__WORDSIZE != 64](MSG_OOB): New. + [__WORDSIZE != 64](msghdr): New. + [__WORDSIZE != 64](cmsghdr): New. + [__WORDSIZE != 64](CMSG_NXTHDR): New. + [__WORDSIZE != 64](CMSG_FIRSTHDR): New. + [__WORDSIZE != 64](CMSG_ALIGN): New. + [__WORDSIZE != 64](CMSG_SPACE): New. + [__WORDSIZE != 64](CMSG_LEN): New. + [__WORDSIZE != 64](__CMSG_PADDING): New. + [__WORDSIZE != 64](__cmsg_nxthdr): New function. + [__WORDSIZE != 64](<anonymous>): New. + [__WORDSIZE != 64](SOL_SOCKET): New. + [__WORDSIZE != 64](<anonymous>): New. + [__WORDSIZE != 64](linger): New. + [__glibc_c99_flexarr_available](CMSG_DATA): Remove. + (sockaddr): Remove. + (_SS_PADSIZE): Remove. + (sockaddr_storage): Remove. + (<anonymous>): Remove. + (msghdr): Remove. + (cmsghdr): Remove. + (CMSG_NXTHDR): Remove. + (CMSG_FIRSTHDR): Remove. + (CMSG_ALIGN): Remove. + (CMSG_SPACE): Remove. + (CMSG_LEN): Remove. + (__CMSG_PADDING): Remove. + (__cmsg_nxthdr): Remove. + (<anonymous>): Remove. + (SOL_SOCKET): Remove. + (<anonymous>): Remove. + (linger): Remove. + (__SOCKADDR_COMMON): New function. + (sa_data): New. + * inet/netinet/in.h: Modified. + [! __GNUC__](IN6_IS_ADDR_UNSPECIFIED): Remove. + [! __GNUC__](IN6_IS_ADDR_LOOPBACK): Remove. + [! __GNUC__](IN6_IS_ADDR_LINKLOCAL): Remove. + [! __GNUC__](IN6_IS_ADDR_SITELOCAL): Remove. + [! __GNUC__](IN6_IS_ADDR_V4MAPPED): Remove. + [! __GNUC__](IN6_IS_ADDR_V4COMPAT): Remove. + [! __GNUC__](IN6_ARE_ADDR_EQUAL): Remove. + [!__USE_KERNEL_IPV6_DEFS](sockaddr_in6): Remove. + [!__USE_KERNEL_IPV6_DEFS](ipv6_mreq): Remove. + [__GNUC__](IN6_IS_ADDR_UNSPECIFIED): Remove. + [__GNUC__](IN6_IS_ADDR_LOOPBACK): Remove. + [__GNUC__](IN6_IS_ADDR_LINKLOCAL): Remove. + [__GNUC__](IN6_IS_ADDR_SITELOCAL): Remove. + [__GNUC__](IN6_IS_ADDR_V4MAPPED): Remove. + [__GNUC__](IN6_IS_ADDR_V4COMPAT): Remove. + [__GNUC__](IN6_ARE_ADDR_EQUAL): Remove. + [__OPTIMIZE__][__BYTE_ORDER != __BIG_ENDIAN][__BYTE_ORDER == __LITTLE_ENDIAN](ntohl): Remove. + [__OPTIMIZE__][__BYTE_ORDER != __BIG_ENDIAN][__BYTE_ORDER == __LITTLE_ENDIAN](ntohs): Remove. + [__OPTIMIZE__][__BYTE_ORDER != __BIG_ENDIAN][__BYTE_ORDER == __LITTLE_ENDIAN](htonl): Remove. + [__OPTIMIZE__][__BYTE_ORDER != __BIG_ENDIAN][__BYTE_ORDER == __LITTLE_ENDIAN](htons): Remove. + [__OPTIMIZE__][__BYTE_ORDER == __BIG_ENDIAN](ntohl): Remove. + [__OPTIMIZE__][__BYTE_ORDER == __BIG_ENDIAN](ntohs): Remove. + [__OPTIMIZE__][__BYTE_ORDER == __BIG_ENDIAN](htonl): Remove. + [__OPTIMIZE__][__BYTE_ORDER == __BIG_ENDIAN](htons): Remove. + [__USE_GNU][!__USE_KERNEL_IPV6_DEFS](in6_pktinfo): Remove. + [__USE_GNU][!__USE_KERNEL_IPV6_DEFS](ip6_mtuinfo): Remove. + [__USE_GNU](cmsghdr): Remove. + [__USE_GNU](__attribute_deprecated__): Remove. + [__USE_GNU](__attribute_deprecated__): Remove. + [__USE_GNU](__attribute_deprecated__): Remove. + [__USE_GNU](__attribute_deprecated__): Remove. + [__USE_GNU](__attribute_deprecated__): Remove. + [__USE_GNU](__attribute_deprecated__): Remove. + [__USE_GNU](inet6_opt_init): Remove. + [__USE_GNU](inet6_opt_append): Remove. + [__USE_GNU](inet6_opt_finish): Remove. + [__USE_GNU](inet6_opt_set_val): Remove. + [__USE_GNU](inet6_opt_next): Remove. + [__USE_GNU](inet6_opt_find): Remove. + [__USE_GNU](inet6_opt_get_val): Remove. + [__USE_GNU](inet6_rth_space): Remove. + [__USE_GNU](inet6_rth_init): Remove. + [__USE_GNU](inet6_rth_add): Remove. + [__USE_GNU](inet6_rth_reverse): Remove. + [__USE_GNU](inet6_rth_segments): Remove. + [__USE_GNU](inet6_rth_getaddr): Remove. + [__USE_GNU](getipv4sourcefilter): Remove. + [__USE_GNU](setipv4sourcefilter): Remove. + [__USE_GNU](getsourcefilter): Remove. + [__USE_GNU](setsourcefilter): Remove. + [__USE_MISC](ip_mreq): Remove. + [__USE_MISC](ip_mreqn): Remove. + [__USE_MISC](ip_mreq_source): Remove. + [__USE_MISC](group_req): Remove. + [__USE_MISC](group_source_req): Remove. + [__USE_MISC](ip_msfilter): Remove. + [__USE_MISC](IP_MSFILTER_SIZE): Remove. + [__USE_MISC](group_filter): Remove. + [__USE_MISC](GROUP_FILTER_SIZE): Remove. + [__USE_MISC](bindresvport): Remove. + [__USE_MISC](bindresvport6): Remove. + (sockaddr_in): Remove. + (ntohl): Remove. + (ntohs): Remove. + (htonl): Remove. + (htons): Remove. + (endian.h): Remove include. + (bits/byteswap.h): Remove include. + (bits/uintn-identity.h): Remove include. + (IN6_IS_ADDR_MULTICAST): Remove. + (IN6_IS_ADDR_MC_NODELOCAL): Remove. + (IN6_IS_ADDR_MC_LINKLOCAL): Remove. + (IN6_IS_ADDR_MC_SITELOCAL): Remove. + (IN6_IS_ADDR_MC_ORGLOCAL): Remove. + (IN6_IS_ADDR_MC_GLOBAL): Remove. + [! __USE_KERNEL_IPV6_DEFS][! __USE_MISC][!__USE_KERNEL_IPV6_DEFS](ipv6_mreq): New. + [! __USE_KERNEL_IPV6_DEFS][! __USE_MISC][!__USE_KERNEL_IPV6_DEFS](ipv6mr_multiaddr): New. + [! __USE_KERNEL_IPV6_DEFS][! __USE_MISC][!__USE_KERNEL_IPV6_DEFS](ipv6mr_interface): New. + [! __USE_KERNEL_IPV6_DEFS][! __USE_MISC][__USE_KERNEL_IPV6_DEFS][! __GNUC__](IN6_IS_ADDR_UNSPECIFIED): New. + [! __USE_KERNEL_IPV6_DEFS][! __USE_MISC][__USE_KERNEL_IPV6_DEFS][! __GNUC__](IN6_IS_ADDR_LOOPBACK): New. + [! __USE_KERNEL_IPV6_DEFS][! __USE_MISC][__USE_KERNEL_IPV6_DEFS][! __GNUC__](IN6_IS_ADDR_LINKLOCAL): New. + [! __USE_KERNEL_IPV6_DEFS][! __USE_MISC][__USE_KERNEL_IPV6_DEFS][! __GNUC__](IN6_IS_ADDR_SITELOCAL): New. + [! __USE_KERNEL_IPV6_DEFS][! __USE_MISC][__USE_KERNEL_IPV6_DEFS][! __GNUC__](IN6_IS_ADDR_V4MAPPED): New. + [! __USE_KERNEL_IPV6_DEFS][! __USE_MISC][__USE_KERNEL_IPV6_DEFS][! __GNUC__](IN6_IS_ADDR_V4COMPAT): New. + [! __USE_KERNEL_IPV6_DEFS][! __USE_MISC][__USE_KERNEL_IPV6_DEFS][! __GNUC__](IN6_ARE_ADDR_EQUAL): New. + [! __USE_KERNEL_IPV6_DEFS][! __USE_MISC][__USE_KERNEL_IPV6_DEFS][! __USE_MISC](ntohl): New. + [! __USE_KERNEL_IPV6_DEFS][! __USE_MISC][__USE_KERNEL_IPV6_DEFS][__GNUC__](IN6_IS_ADDR_UNSPECIFIED): New. + [! __USE_KERNEL_IPV6_DEFS][! __USE_MISC][__USE_KERNEL_IPV6_DEFS][__GNUC__](IN6_IS_ADDR_LOOPBACK): New. + [! __USE_KERNEL_IPV6_DEFS][! __USE_MISC][__USE_KERNEL_IPV6_DEFS][__GNUC__](IN6_IS_ADDR_LINKLOCAL): New. + [! __USE_KERNEL_IPV6_DEFS][! __USE_MISC][__USE_KERNEL_IPV6_DEFS][__GNUC__](IN6_IS_ADDR_SITELOCAL): New. + [! __USE_KERNEL_IPV6_DEFS][! __USE_MISC][__USE_KERNEL_IPV6_DEFS][__GNUC__](IN6_IS_ADDR_V4MAPPED): New. + [! __USE_KERNEL_IPV6_DEFS][! __USE_MISC][__USE_KERNEL_IPV6_DEFS][__GNUC__](IN6_IS_ADDR_V4COMPAT): New. + [! __USE_KERNEL_IPV6_DEFS][! __USE_MISC][__USE_KERNEL_IPV6_DEFS][__GNUC__](IN6_ARE_ADDR_EQUAL): New. + [! __USE_KERNEL_IPV6_DEFS][! __USE_MISC][__USE_KERNEL_IPV6_DEFS][__OPTIMIZE__][__BYTE_ORDER != __BIG_ENDIAN][__BYTE_ORDER == __LITTLE_ENDIAN](ntohl): New. + [! __USE_KERNEL_IPV6_DEFS][! __USE_MISC][__USE_KERNEL_IPV6_DEFS][__OPTIMIZE__][__BYTE_ORDER != __BIG_ENDIAN][__BYTE_ORDER == __LITTLE_ENDIAN](ntohs): New. + [! __USE_KERNEL_IPV6_DEFS][! __USE_MISC][__USE_KERNEL_IPV6_DEFS][__OPTIMIZE__][__BYTE_ORDER != __BIG_ENDIAN][__BYTE_ORDER == __LITTLE_ENDIAN](htonl): New. + [! __USE_KERNEL_IPV6_DEFS][! __USE_MISC][__USE_KERNEL_IPV6_DEFS][__OPTIMIZE__][__BYTE_ORDER != __BIG_ENDIAN][__BYTE_ORDER == __LITTLE_ENDIAN](htons): New. + [! __USE_KERNEL_IPV6_DEFS][! __USE_MISC][__USE_KERNEL_IPV6_DEFS][__OPTIMIZE__][__BYTE_ORDER == __BIG_ENDIAN](ntohl): New. + [! __USE_KERNEL_IPV6_DEFS][! __USE_MISC][__USE_KERNEL_IPV6_DEFS][__OPTIMIZE__][__BYTE_ORDER == __BIG_ENDIAN](ntohs): New. + [! __USE_KERNEL_IPV6_DEFS][! __USE_MISC][__USE_KERNEL_IPV6_DEFS][__OPTIMIZE__][__BYTE_ORDER == __BIG_ENDIAN](htonl): New. + [! __USE_KERNEL_IPV6_DEFS][! __USE_MISC][__USE_KERNEL_IPV6_DEFS][__OPTIMIZE__][__BYTE_ORDER == __BIG_ENDIAN](htons): New. + [! __USE_KERNEL_IPV6_DEFS][! __USE_MISC][__USE_KERNEL_IPV6_DEFS][__USE_GNU][!__USE_KERNEL_IPV6_DEFS](in6_pktinfo): New. + [! __USE_KERNEL_IPV6_DEFS][! __USE_MISC][__USE_KERNEL_IPV6_DEFS][__USE_GNU][!__USE_KERNEL_IPV6_DEFS](ip6_mtuinfo): New. + [! __USE_KERNEL_IPV6_DEFS][! __USE_MISC][__USE_KERNEL_IPV6_DEFS][__USE_GNU](cmsghdr): New. + [! __USE_KERNEL_IPV6_DEFS][! __USE_MISC][__USE_KERNEL_IPV6_DEFS][__USE_GNU](__attribute_deprecated__): New. + [! __USE_KERNEL_IPV6_DEFS][! __USE_MISC][__USE_KERNEL_IPV6_DEFS][__USE_GNU](__attribute_deprecated__): New. + [! __USE_KERNEL_IPV6_DEFS][! __USE_MISC][__USE_KERNEL_IPV6_DEFS][__USE_GNU](__attribute_deprecated__): New. + [! __USE_KERNEL_IPV6_DEFS][! __USE_MISC][__USE_KERNEL_IPV6_DEFS][__USE_GNU](__attribute_deprecated__): New. + [! __USE_KERNEL_IPV6_DEFS][! __USE_MISC][__USE_KERNEL_IPV6_DEFS][__USE_GNU](__attribute_deprecated__): New. + [! __USE_KERNEL_IPV6_DEFS][! __USE_MISC][__USE_KERNEL_IPV6_DEFS][__USE_GNU](__attribute_deprecated__): New. + [! __USE_KERNEL_IPV6_DEFS][! __USE_MISC][__USE_KERNEL_IPV6_DEFS][__USE_GNU](inet6_opt_init): New. + [! __USE_KERNEL_IPV6_DEFS][! __USE_MISC][__USE_KERNEL_IPV6_DEFS][__USE_GNU](inet6_opt_append): New. + [! __USE_KERNEL_IPV6_DEFS][! __USE_MISC][__USE_KERNEL_IPV6_DEFS][__USE_GNU](inet6_opt_finish): New. + [! __USE_KERNEL_IPV6_DEFS][! __USE_MISC][__USE_KERNEL_IPV6_DEFS][__USE_GNU](inet6_opt_set_val): New. + [! __USE_KERNEL_IPV6_DEFS][! __USE_MISC][__USE_KERNEL_IPV6_DEFS][__USE_GNU](inet6_opt_next): New. + [! __USE_KERNEL_IPV6_DEFS][! __USE_MISC][__USE_KERNEL_IPV6_DEFS][__USE_GNU](inet6_opt_find): New. + [! __USE_KERNEL_IPV6_DEFS][! __USE_MISC][__USE_KERNEL_IPV6_DEFS][__USE_GNU](inet6_opt_get_val): New. + [! __USE_KERNEL_IPV6_DEFS][! __USE_MISC][__USE_KERNEL_IPV6_DEFS][__USE_GNU](inet6_rth_space): New. + [! __USE_KERNEL_IPV6_DEFS][! __USE_MISC][__USE_KERNEL_IPV6_DEFS][__USE_GNU](inet6_rth_init): New. + [! __USE_KERNEL_IPV6_DEFS][! __USE_MISC][__USE_KERNEL_IPV6_DEFS][__USE_GNU](inet6_rth_add): New. + [! __USE_KERNEL_IPV6_DEFS][! __USE_MISC][__USE_KERNEL_IPV6_DEFS][__USE_GNU](inet6_rth_reverse): New. + [! __USE_KERNEL_IPV6_DEFS][! __USE_MISC][__USE_KERNEL_IPV6_DEFS][__USE_GNU](inet6_rth_segments): New. + [! __USE_KERNEL_IPV6_DEFS][! __USE_MISC][__USE_KERNEL_IPV6_DEFS][__USE_GNU](inet6_rth_getaddr): New. + [! __USE_KERNEL_IPV6_DEFS][! __USE_MISC][__USE_KERNEL_IPV6_DEFS][__USE_GNU](getipv4sourcefilter): New. + [! __USE_KERNEL_IPV6_DEFS][! __USE_MISC][__USE_KERNEL_IPV6_DEFS][__USE_GNU](setipv4sourcefilter): New. + [! __USE_KERNEL_IPV6_DEFS][! __USE_MISC][__USE_KERNEL_IPV6_DEFS][__USE_GNU](getsourcefilter): New. + [! __USE_KERNEL_IPV6_DEFS][! __USE_MISC][__USE_KERNEL_IPV6_DEFS][__USE_GNU](setsourcefilter): New. + [! __USE_KERNEL_IPV6_DEFS][! __USE_MISC][__USE_KERNEL_IPV6_DEFS][__USE_MISC](group_req): New. + [! __USE_KERNEL_IPV6_DEFS][! __USE_MISC][__USE_KERNEL_IPV6_DEFS][__USE_MISC](gr_interface): New. + [! __USE_KERNEL_IPV6_DEFS][! __USE_MISC][__USE_KERNEL_IPV6_DEFS][__USE_MISC](gr_group): New. + [! __USE_KERNEL_IPV6_DEFS][! __USE_MISC][__USE_KERNEL_IPV6_DEFS][__USE_MISC](group_source_req): New. + [! __USE_KERNEL_IPV6_DEFS][! __USE_MISC][__USE_KERNEL_IPV6_DEFS][__USE_MISC](gsr_interface): New. + [! __USE_KERNEL_IPV6_DEFS][! __USE_MISC][__USE_KERNEL_IPV6_DEFS][__USE_MISC](gsr_group): New. + [! __USE_KERNEL_IPV6_DEFS][! __USE_MISC][__USE_KERNEL_IPV6_DEFS][__USE_MISC](gsr_source): New. + [! __USE_KERNEL_IPV6_DEFS][! __USE_MISC][__USE_KERNEL_IPV6_DEFS][__USE_MISC](ip_msfilter): New. + [! __USE_KERNEL_IPV6_DEFS][! __USE_MISC][__USE_KERNEL_IPV6_DEFS][__USE_MISC](imsf_multiaddr): New. + [! __USE_KERNEL_IPV6_DEFS][! __USE_MISC][__USE_KERNEL_IPV6_DEFS][__USE_MISC](imsf_interface): New. + [! __USE_KERNEL_IPV6_DEFS][! __USE_MISC][__USE_KERNEL_IPV6_DEFS][__USE_MISC](imsf_fmode): New. + [! __USE_KERNEL_IPV6_DEFS][! __USE_MISC][__USE_KERNEL_IPV6_DEFS][__USE_MISC](imsf_numsrc): New. + [! __USE_KERNEL_IPV6_DEFS][! __USE_MISC][__USE_KERNEL_IPV6_DEFS][__USE_MISC](imsf_slist): New. + [! __USE_KERNEL_IPV6_DEFS][! __USE_MISC][__USE_KERNEL_IPV6_DEFS][__USE_MISC](IP_MSFILTER_SIZE): New. + [! __USE_KERNEL_IPV6_DEFS][! __USE_MISC][__USE_KERNEL_IPV6_DEFS][__USE_MISC](group_filter): New. + [! __USE_KERNEL_IPV6_DEFS][! __USE_MISC][__USE_KERNEL_IPV6_DEFS][__USE_MISC](gf_interface): New. + [! __USE_KERNEL_IPV6_DEFS][! __USE_MISC][__USE_KERNEL_IPV6_DEFS][__USE_MISC](gf_group): New. + [! __USE_KERNEL_IPV6_DEFS][! __USE_MISC][__USE_KERNEL_IPV6_DEFS][__USE_MISC](gf_fmode): New. + [! __USE_KERNEL_IPV6_DEFS][! __USE_MISC][__USE_KERNEL_IPV6_DEFS][__USE_MISC](gf_numsrc): New. + [! __USE_KERNEL_IPV6_DEFS][! __USE_MISC][__USE_KERNEL_IPV6_DEFS][__USE_MISC](gf_slist): New. + [! __USE_KERNEL_IPV6_DEFS][! __USE_MISC][__USE_KERNEL_IPV6_DEFS][__USE_MISC](GROUP_FILTER_SIZE): New. + [! __USE_KERNEL_IPV6_DEFS][! __USE_MISC][__USE_KERNEL_IPV6_DEFS][__USE_MISC](ntohl): New. + [! __USE_KERNEL_IPV6_DEFS][! __USE_MISC][__USE_KERNEL_IPV6_DEFS][__USE_MISC](bindresvport): New. + [! __USE_KERNEL_IPV6_DEFS][! __USE_MISC][__USE_KERNEL_IPV6_DEFS][__USE_MISC](bindresvport6): New. + [! __USE_KERNEL_IPV6_DEFS][! __USE_MISC][__USE_KERNEL_IPV6_DEFS](ntohs): New. + [! __USE_KERNEL_IPV6_DEFS][! __USE_MISC][__USE_KERNEL_IPV6_DEFS](htonl): New. + [! __USE_KERNEL_IPV6_DEFS][! __USE_MISC][__USE_KERNEL_IPV6_DEFS](htons): New. + [! __USE_KERNEL_IPV6_DEFS][! __USE_MISC][__USE_KERNEL_IPV6_DEFS](endian.h): New. + [! __USE_KERNEL_IPV6_DEFS][! __USE_MISC][__USE_KERNEL_IPV6_DEFS](bits/byteswap.h): New. + [! __USE_KERNEL_IPV6_DEFS][! __USE_MISC][__USE_KERNEL_IPV6_DEFS](bits/uintn-identity.h): New. + [! __USE_KERNEL_IPV6_DEFS][! __USE_MISC][__USE_KERNEL_IPV6_DEFS](IN6_IS_ADDR_MULTICAST): New. + [! __USE_KERNEL_IPV6_DEFS][! __USE_MISC][__USE_KERNEL_IPV6_DEFS](IN6_IS_ADDR_MC_NODELOCAL): New. + [! __USE_KERNEL_IPV6_DEFS][! __USE_MISC][__USE_KERNEL_IPV6_DEFS](IN6_IS_ADDR_MC_LINKLOCAL): New. + [! __USE_KERNEL_IPV6_DEFS][! __USE_MISC][__USE_KERNEL_IPV6_DEFS](IN6_IS_ADDR_MC_SITELOCAL): New. + [! __USE_KERNEL_IPV6_DEFS][! __USE_MISC][__USE_KERNEL_IPV6_DEFS](IN6_IS_ADDR_MC_ORGLOCAL): New. + [! __USE_KERNEL_IPV6_DEFS][! __USE_MISC][__USE_KERNEL_IPV6_DEFS](IN6_IS_ADDR_MC_GLOBAL): New. + [! __USE_KERNEL_IPV6_DEFS][__USE_MISC](ip_mreq): New. + [! __USE_KERNEL_IPV6_DEFS][__USE_MISC](imr_multiaddr): New. + [! __USE_KERNEL_IPV6_DEFS][__USE_MISC](imr_interface): New. + [! __USE_KERNEL_IPV6_DEFS][__USE_MISC](ip_mreqn): New. + [! __USE_KERNEL_IPV6_DEFS][__USE_MISC](imr_multiaddr): New. + [! __USE_KERNEL_IPV6_DEFS][__USE_MISC](imr_address): New. + [! __USE_KERNEL_IPV6_DEFS][__USE_MISC](imr_ifindex): New. + [! __USE_KERNEL_IPV6_DEFS][__USE_MISC](ip_mreq_source): New. + [! __USE_KERNEL_IPV6_DEFS][__USE_MISC](imr_multiaddr): New. + [! __USE_KERNEL_IPV6_DEFS][__USE_MISC](imr_interface): New. + [! __USE_KERNEL_IPV6_DEFS][__USE_MISC](imr_sourceaddr): New. + [! __USE_KERNEL_IPV6_DEFS](__SOCKADDR_COMMON): New. + [! __USE_KERNEL_IPV6_DEFS](sin6_port): New. + [! __USE_KERNEL_IPV6_DEFS](sin6_flowinfo): New. + [! __USE_KERNEL_IPV6_DEFS](sin6_addr): New. + [! __USE_KERNEL_IPV6_DEFS](sin6_scope_id): New. + [__USE_KERNEL_IPV6_DEFS](sockaddr_in6): New. + (__SOCKADDR_COMMON): New function. + (sin_port): New. + (sin_addr): New. + * misc/sys/cdefs.h: Modified. + [!(__GNUC_PREREQ (7, 1) || __clang__)](__attribute_struct_may_alias__): New. + [__GNUC_PREREQ (7, 1) || __clang__](__attribute_struct_may_alias__): New. + * socket/sys/un.h: Modified. + (sockaddr_un): Remove. + (__SOCKADDR_COMMON): New function. + (sun_path): New. + * sysdeps/mach/hurd/bits/socket.h: Modified. + [! __glibc_c99_flexarr_available](CMSG_DATA): Remove. + [__USE_EXTERN_INLINES][! _EXTERN_INLINE](_EXTERN_INLINE): Remove. + [__USE_EXTERN_INLINES](__NTH): Remove. + [__USE_MISC](CMGROUP_MAX): Remove. + [__USE_MISC](cmsgcred): Remove. + [__WORDSIZE != 64][! __glibc_c99_flexarr_available](CMSG_DATA): New. + [__WORDSIZE != 64][__USE_EXTERN_INLINES][! _EXTERN_INLINE](_EXTERN_INLINE): New. + [__WORDSIZE != 64][__USE_EXTERN_INLINES](__NTH): New. + [__WORDSIZE != 64][__USE_MISC](CMGROUP_MAX): New. + [__WORDSIZE != 64][__USE_MISC](cmsgcred): New. + [__WORDSIZE != 64][__glibc_c99_flexarr_available](CMSG_DATA): New. + [__WORDSIZE != 64](_SS_PADSIZE): New. + [__WORDSIZE != 64](__SOCKADDR_COMMON): New function. + [__WORDSIZE != 64](__ss_padding): New. + [__WORDSIZE != 64](__ss_align): New. + [__WORDSIZE != 64](<anonymous>): New. + [__WORDSIZE != 64](MSG_OOB): New. + [__WORDSIZE != 64](msghdr): New. + [__WORDSIZE != 64](cmsghdr): New. + [__WORDSIZE != 64](CMSG_NXTHDR): New. + [__WORDSIZE != 64](CMSG_FIRSTHDR): New. + [__WORDSIZE != 64](CMSG_ALIGN): New. + [__WORDSIZE != 64](CMSG_SPACE): New. + [__WORDSIZE != 64](CMSG_LEN): New. + [__WORDSIZE != 64](__CMSG_PADDING): New. + [__WORDSIZE != 64](__cmsg_nxthdr): New function. + [__WORDSIZE != 64](<anonymous>): New. + [__WORDSIZE != 64](SOL_SOCKET): New. + [__WORDSIZE != 64](<anonymous>): New. + [__WORDSIZE != 64](linger): New. + [__glibc_c99_flexarr_available](CMSG_DATA): Remove. + (sockaddr): Remove. + (_SS_PADSIZE): Remove. + (sockaddr_storage): Remove. + (<anonymous>): Remove. + (msghdr): Remove. + (cmsghdr): Remove. + (CMSG_NXTHDR): Remove. + (CMSG_FIRSTHDR): Remove. + (CMSG_ALIGN): Remove. + (CMSG_SPACE): Remove. + (CMSG_LEN): Remove. + (__CMSG_PADDING): Remove. + (__cmsg_nxthdr): Remove. + (<anonymous>): Remove. + (SOL_SOCKET): Remove. + (<anonymous>): Remove. + (linger): Remove. + (__SOCKADDR_COMMON): New function. + (sa_data): New. + * sysdeps/unix/sysv/linux/bits/socket.h: Modified. + (sockaddr): Remove. + (sockaddr_storage): Remove. + (<anonymous>): Modified. + (__SOCKADDR_COMMON): New function. + (sa_data): New. + (__SOCKADDR_COMMON): New function. + (__ss_padding): New. + (__ss_align): New. + (MSG_OOB): New. + * sysdeps/unix/sysv/linux/net/if_packet.h: Modified. + (sockaddr_pkt): Remove. + (__SOCKADDR_COMMON): New function. + (spkt_device): New. + (spkt_protocol): New. + * sysdeps/unix/sysv/linux/netash/ash.h: Modified. + (sockaddr_ash): Remove. + (__SOCKADDR_COMMON): New function. + (sash_ifindex): New. + (sash_channel): New. + (sash_plen): New. + (sash_prefix): New. + * sysdeps/unix/sysv/linux/neteconet/ec.h: Modified. + (sockaddr_ec): Remove. + (__SOCKADDR_COMMON): New function. + (port): New. + (cb): New. + (type): New. + (addr): New. + (cookie): New. + * sysdeps/unix/sysv/linux/netiucv/iucv.h: Modified. + (sockaddr_iucv): Remove. + (__SOCKADDR_COMMON): New function. + (siucv_port): New. + (siucv_addr): New. + (siucv_nodeid): New. + (siucv_user_id): New. + (siucv_name): New. + +2024-05-17 Alexandre Ferrieux <alexandre.ferrieux@orange.com> + H.J. Lu <hjl.tools@gmail.com> + + COMMIT: 2a99e2398d9d717c034e915f7846a49e623f5450 + Use a doubly-linked list for _IO_list_all (bug 27777) + + * libio/bits/types/struct_FILE.h: Modified. + (_IO_FILE_complete): Modified. + * libio/genops.c: Modified. + (_IO_un_link): Modified function. + (_IO_link_in): Modified function. + (_Static_assert): New function. + * libio/stdfiles.c: Modified. + (_IO_stdfiles_init): New function. + +2024-05-16 Manjunath Matti <mmatti@linux.ibm.com> + + COMMIT: a81cdde1cb9d514fc8f014ddf21771c96ff2c182 + powerpc64: Fix by using the configure value $libc_cv_cc_submachine [BZ #31629] + + * sysdeps/powerpc/powerpc64/configure: Modified. + * sysdeps/powerpc/powerpc64/configure.ac: Modified. + +2024-05-16 H.J. Lu <hjl.tools@gmail.com> + + COMMIT: fa9aecc045e9e7d0c2f4e182748491f732e63dd2 + benchtests: Add fclose benchmark + + * benchtests/Makefile: Modified. + * benchtests/README: Modified. + * benchtests/bench-fclose.c: New file. + +2024-05-16 Joe Ramsay <Joe.Ramsay@arm.com> + + COMMIT: 75207bde6870eb4b258e16fbb41252b2e6377675 + aarch64/fpu: Add vector variants of cbrt + + * sysdeps/aarch64/fpu/Makefile: Modified. + * sysdeps/aarch64/fpu/Versions: Modified. + * sysdeps/aarch64/fpu/advsimd_f32_protos.h: Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): New function. + * sysdeps/aarch64/fpu/bits/math-vector.h: Modified. + [__ADVSIMD_VEC_MATH_SUPPORTED](_ZGVnN4v_cbrtf): New function. + [__ADVSIMD_VEC_MATH_SUPPORTED](_ZGVnN2v_cbrt): New function. + [__SVE_VEC_MATH_SUPPORTED](_ZGVsMxv_cbrtf): New function. + [__SVE_VEC_MATH_SUPPORTED](_ZGVsMxv_cbrt): New function. + [__aarch64__ && __FAST_MATH__ && __GNUC_PREREQ (6, 0)](__DECL_SIMD_cbrt): New. + [__aarch64__ && __FAST_MATH__ && __GNUC_PREREQ (6, 0)](__DECL_SIMD_cbrtf): New. + * sysdeps/aarch64/fpu/cbrt_advsimd.c: New file. + * sysdeps/aarch64/fpu/cbrt_sve.c: New file. + * sysdeps/aarch64/fpu/cbrtf_advsimd.c: New file. + * sysdeps/aarch64/fpu/cbrtf_sve.c: New file. + * sysdeps/aarch64/fpu/test-double-advsimd-wrappers.c: Modified. + * sysdeps/aarch64/fpu/test-double-sve-wrappers.c: Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): New. + * sysdeps/aarch64/fpu/test-float-advsimd-wrappers.c: Modified. + * sysdeps/aarch64/fpu/test-float-sve-wrappers.c: Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): New. + * sysdeps/aarch64/libm-test-ulps: Modified. + * sysdeps/unix/sysv/linux/aarch64/libmvec.abilist: Modified. + +2024-05-16 Joe Ramsay <Joe.Ramsay@arm.com> + + COMMIT: 157f89fa3d616729c8d7797168a9b3eaaa6ebf6e + aarch64/fpu: Add vector variants of hypot + + * sysdeps/aarch64/fpu/Makefile: Modified. + * sysdeps/aarch64/fpu/Versions: Modified. + * sysdeps/aarch64/fpu/advsimd_f32_protos.h: Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): New function. + * sysdeps/aarch64/fpu/bits/math-vector.h: Modified. + [__ADVSIMD_VEC_MATH_SUPPORTED](_ZGVnN4vv_hypotf): New function. + [__ADVSIMD_VEC_MATH_SUPPORTED](_ZGVnN2vv_hypot): New function. + [__SVE_VEC_MATH_SUPPORTED](_ZGVsMxvv_hypotf): New function. + [__SVE_VEC_MATH_SUPPORTED](_ZGVsMxvv_hypot): New function. + [__aarch64__ && __FAST_MATH__ && __GNUC_PREREQ (6, 0)](__DECL_SIMD_hypot): New. + [__aarch64__ && __FAST_MATH__ && __GNUC_PREREQ (6, 0)](__DECL_SIMD_hypotf): New. + * sysdeps/aarch64/fpu/hypot_advsimd.c: New file. + * sysdeps/aarch64/fpu/hypot_sve.c: New file. + * sysdeps/aarch64/fpu/hypotf_advsimd.c: New file. + * sysdeps/aarch64/fpu/hypotf_sve.c: New file. + * sysdeps/aarch64/fpu/test-double-advsimd-wrappers.c: Modified. + * sysdeps/aarch64/fpu/test-double-sve-wrappers.c: Modified. + (SVE_VECTOR_WRAPPER_ff): New. + * sysdeps/aarch64/fpu/test-float-advsimd-wrappers.c: Modified. + * sysdeps/aarch64/fpu/test-float-sve-wrappers.c: Modified. + (SVE_VECTOR_WRAPPER_ff): New. + * sysdeps/aarch64/libm-test-ulps: Modified. + * sysdeps/unix/sysv/linux/aarch64/libmvec.abilist: Modified. + +2024-05-16 Joseph Myers <josmyers@redhat.com> + + COMMIT: a743fd95bb895001584b018033418b84b451e67e + Use Linux 6.9 in build-many-glibcs.py + + * scripts/build-many-glibcs.py: Modified. + +2024-05-15 Jules Bertholet <julesbertholet@quoi.xyz> + + COMMIT: 25c9c3789ecf35a5dc303261abcef7993112017d + localedata: Fix several issues with the set of characters considered 0-width [BZ #31370] + + * SHARED-FILES: Modified. + * localedata/charmaps/UTF-8: Modified. + * localedata/unicode-gen/HangulSyllableType.txt: New file. + * localedata/unicode-gen/Makefile: Modified. + * localedata/unicode-gen/PropList.txt: Delete file. + * localedata/unicode-gen/utf8_gen.py: Modified. + +2024-05-15 mengqinggang <mengqinggang@loongson.cn> + + COMMIT: 1dbf2bef7934cee9829d875f11968d6ff1fee77f + LoongArch: Add support for TLS Descriptors + + * config.h.in: Modified. + * elf/elf.h: Modified. + (R_LARCH_TLS_DESC32): New. + (R_LARCH_TLS_DESC64): New. + * sysdeps/loongarch/Makefile: Modified. + * sysdeps/loongarch/configure: Modified. + * sysdeps/loongarch/configure.ac: Modified. + * sysdeps/loongarch/dl-machine.h: Modified. + [! dl_machine_h](dl-tls.h): Remove include. + [! dl_machine_h](dl-tlsdesc.h): Include file. + [RESOLVE_MAP](elf_machine_rela): Modified function. + [RESOLVE_MAP](elf_machine_lazy_rel): Modified function. + * sysdeps/loongarch/dl-tls.h: Modified. + (_DL_TLS_H): New. + * sysdeps/loongarch/dl-tlsdesc.S: New file. + * sysdeps/loongarch/dl-tlsdesc.h: New file. + * sysdeps/loongarch/linkmap.h: Modified. + (link_map_machine): Modified. + * sysdeps/loongarch/preconfigure: Modified. + * sysdeps/loongarch/sys/asm.h: Modified. + (SZFCSREG): New. + * sysdeps/loongarch/sys/regdef.h: Modified. + (fcsr0): New. + * sysdeps/loongarch/tlsdesc.c: New file. + * sysdeps/loongarch/tlsdesc.sym: New file. + * sysdeps/loongarch/tst-gnu2-tls2.h: New file. + +2024-05-14 Joe Talbott <joetalbott@gmail.com> + + COMMIT: f942a732d37a96217ef828116ebe64a644db18d7 + math: Add GLIBC_TEST_LIBM_VERBOSE environment variable support. + + * math/libm-test-support.c: Modified. + (verbose): Modified. + (parse_opt): Modified function. + (libm_test_init): Modified function. + +2024-05-14 Joe Simmons-Talbott <josimmon@redhat.com> + + COMMIT: 3395157ff2b0657d70c36169156f67440205c8bf + malloc: Improve aligned_alloc and calloc test coverage. + + * malloc/Makefile: Modified. + * malloc/tst-aligned-alloc-random.c: New file. + * malloc/tst-aligned_alloc-lib.c: New file. + * malloc/tst-malloc-random.c: New file. + * malloc/tst-malloc.c: Modified. + (do_test): Modified function. + (stdlib.h): Include file. + (time.h): Include file. + +2024-05-14 Joe Ramsay <Joe.Ramsay@arm.com> + + COMMIT: 90a6ca8b28bf34e361e577e526e1b0f4c39a32a5 + aarch64: Fix AdvSIMD libmvec routines for big-endian + + * sysdeps/aarch64/fpu/asinh_advsimd.c: Modified. + (lookup): Modified function. + (IndexMask): New. + * sysdeps/aarch64/fpu/cosh_advsimd.c: Modified. + (data): Modified. + (exp_inline): Modified function. + * sysdeps/aarch64/fpu/erf_advsimd.c: Modified. + (lookup): Modified function. + * sysdeps/aarch64/fpu/erfc_advsimd.c: Modified. + (data): Modified. + (lookup): Modified function. + (V_NAME_D1): Modified function. + * sysdeps/aarch64/fpu/erfcf_advsimd.c: Modified. + (data): Modified. + (lookup): Modified function. + (V_NAME_F1): Modified function. + * sysdeps/aarch64/fpu/erff_advsimd.c: Modified. + (lookup): Modified function. + * sysdeps/aarch64/fpu/exp10f_advsimd.c: Modified. + (data): Modified. + (V_NAME_F1): Modified function. + * sysdeps/aarch64/fpu/expm1_advsimd.c: Modified. + (data): Modified. + (V_NAME_D1): Modified function. + * sysdeps/aarch64/fpu/expm1f_advsimd.c: Modified. + (data): Modified. + (V_NAME_F1): Modified function. + * sysdeps/aarch64/fpu/log10_advsimd.c: Modified. + (lookup): Modified function. + * sysdeps/aarch64/fpu/log2_advsimd.c: Modified. + (lookup): Modified function. + * sysdeps/aarch64/fpu/log_advsimd.c: Modified. + (lookup): Modified function. + * sysdeps/aarch64/fpu/sinh_advsimd.c: Modified. + (data): Modified. + (expm1_inline): Modified function. + * sysdeps/aarch64/fpu/tan_advsimd.c: Modified. + (data): Modified. + (V_NAME_D1): Modified function. + * sysdeps/aarch64/fpu/tanf_advsimd.c: Modified. + (data): Modified. + (V_NAME_F1): Modified function. + * sysdeps/aarch64/fpu/v_expf_inline.h: Modified. + (v_expf_data): Modified. + (v_expf_inline): Modified function. + * sysdeps/aarch64/fpu/v_expm1f_inline.h: Modified. + (v_expm1f_data): Modified. + (expm1f_inline): Modified function. + +2024-05-14 Andreas Schwab <schwab@suse.de> + + COMMIT: ec6ed525f1aa24fd38ea5153e88d14d92d0d2f82 + Unify output from backtrace_symbols_fd with backtrace_symbols (bug 31730) + + * debug/backtracesymsfd.c: Modified. + (__backtrace_symbols_fd): Modified function. + +2024-05-13 DJ Delorie <dj@redhat.com> + + COMMIT: a07e000e82cb71238259e674529c37c12dc7d423 + manual: add dup3 + + * manual/llio.texi: Modified. + +2024-05-13 Maciej W. Rozycki <macro@redhat.com> + + COMMIT: e3c375eb4f33e265b0cb186435c0b540ed27d2da + libio/bug-wsetpos: Make the error message match the causing function + + * libio/bug-wsetpos.c: Modified. + (do_test): Modified function. + +2024-05-10 H.J. Lu <hjl.tools@gmail.com> + + COMMIT: d49cd6a1913da9744b9a0ffbefb3f7958322382e + malloc/Makefile: Split and sort tests + + * malloc/Makefile: Modified. + +2024-05-09 H.J. Lu <hjl.tools@gmail.com> + + COMMIT: 2dcaf70643710e22f92a351e36e3cff8b48c60dc + Force DT_RPATH for --enable-hardcoded-path-in-tests + + * Makeconfig: Modified. + +2024-05-09 Adhemerval Zanella <adhemerval.zanella@linaro.org> + + COMMIT: ae515ba530be76d6627740ddc33a3a63f8c7e4f9 + powerpc: Fix __fesetround_inline_nocheck on POWER9+ (BZ 31682) + + * sysdeps/powerpc/fpu/fenv_libc.h: Modified. + (__fesetround_inline_nocheck): Remove function. + (__fesetround_inline_disable_inexact): New function. + * sysdeps/powerpc/fpu/round_to_integer.h: Modified. + (set_fenv_mode): Modified function. + +2024-05-08 Gabi Falk <gabifalk@gmx.com> + + COMMIT: dd5f891c1ad9f1b43b9db93afe2a55cbb7a6194e + x86_64: Fix missing wcsncat function definition without multiarch (x86-64-v4) + + * sysdeps/x86_64/multiarch/wcsncat-evex.S: Modified. + +2024-05-08 Mike FABIAN <mfabian@redhat.com> + + COMMIT: 88dca8d5f85c6ad77f6d754f95cc54e9b905747f + localedata: fix weekdays in mdf_RU locale + + * localedata/locales/mdf_RU: Modified. + +2024-05-08 Mike FABIAN <mfabian@redhat.com> + + COMMIT: 79fe4a0fa07d0fff98888965f47842251f554dd4 + localedata: add mdf_RU locale + + * localedata/Makefile: Modified. + * localedata/SUPPORTED: Modified. + * localedata/locales/mdf_RU: New file. + * localedata/mdf_RU.UTF-8.in: New file. + +2024-05-07 Adhemerval Zanella <adhemerval.zanella@linaro.org> + + COMMIT: eb59c7b43dd5c64c38e4c3cd21e7ad75d8d29cb0 + elf: Make glibc.rtld.enable_secure ignore alias environment variables + + * elf/dl-tunables.c: Modified. + (__tunables_init): Modified function. + * elf/tst-tunables-enable_secure.c: Modified. + (test_t): Modified. + (check): Remove. + (handle_restart): Modified function. + (do_test): Modified function. + (TUNABLES_INTERNAL): New. + (GLIBC_TUNABLES): New. + * scripts/gen-tunables.awk: Modified. + +2024-05-07 Adhemerval Zanella <adhemerval.zanella@linaro.org> + + COMMIT: 1e1ad714ee9a663eda0e2bffad1d9f258b00a4e9 + support: Add envp argument to support_capture_subprogram + + * elf/tst-audit18.c: Modified. + (do_test): Modified function. + * elf/tst-audit19b.c: Modified. + (do_test): Modified function. + * elf/tst-audit22.c: Modified. + (do_test): Modified function. + * elf/tst-audit23.c: Modified. + (do_test): Modified function. + * elf/tst-audit25a.c: Modified. + (do_test): Modified function. + * elf/tst-audit25b.c: Modified. + (do_test): Modified function. + * elf/tst-glibc-hwcaps-2-cache.c: Modified. + (main): Modified function. + * elf/tst-rtld-run-static.c: Modified. + (do_test): Modified function. + * elf/tst-tunables-enable_secure.c: Modified. + (do_test): Modified function. + * elf/tst-tunables.c: Modified. + (do_test): Modified function. + * support/capture_subprocess.h: Modified. + (support_capture_subprogram): Modified. + * support/subprocess.h: Modified. + (support_subprogram): Modified. + * support/support_capture_subprocess.c: Modified. + (support_capture_subprogram): Modified function. + * support/support_subprocess.c: Modified. + (support_subprogram): Modified function. + * support/tst-support_capture_subprocess.c: Modified. + (do_subprogram): Modified function. + * sysdeps/x86/tst-hwcap-tunables.c: Modified. + (do_test): Modified function. + +2024-05-07 Adhemerval Zanella <adhemerval.zanella@linaro.org> + + COMMIT: c8a0e21da63b6e5c7f558cdd31a5d208c1677df3 + elf: Remove glibc.rtld.enable_secure check from parse_tunables_string + + * elf/dl-tunables.c: Modified. + (tunable_initialize): Modified function. + (parse_tunables_string): Modified function. + (parse_tunables): Modified function. + (tunable_parse_num): New function. + (parse_tunable_print_error): New function. + +2024-05-07 Adhemerval Zanella <adhemerval.zanella@linaro.org> + + COMMIT: bcae44ea8536b30a7119c0986ff5692bddacb672 + elf: Only process multiple tunable once (BZ 31686) + + * elf/dl-tunables.c: Modified. + (parse_tunables_string): Modified function. + (parse_tunables): Modified function. + (dl-symbol-redir-ifunc.h): Include file. + * elf/tst-tunables.c: Modified. + (test_t): Modified. + (do_test): Modified function. + (TUNABLES_INTERNAL): New. + (support/support.h): Include file. + * sysdeps/aarch64/multiarch/memset_generic.S: Modified. + * sysdeps/sparc/sparc64/rtld-memset.c: Modified. + [IS_IN(rtld)](strong_alias): New. + +2024-05-06 Carlos O'Donell <carlos@redhat.com> + + COMMIT: 143ef68b2aded7c794956beddad495af8c7d3251 + NEWS: Add advisories. + + * NEWS: Modified. + +2024-05-06 Carlos O'Donell <carlos@redhat.com> + + COMMIT: d4d9a805a58c2593f7610198a198d24a41eef561 + Document CVE-2024-33599, CVE-2024-33600, CVE-2024-33601, CVE-2024-33602 + + * advisories/GLIBC-SA-2024-0005: New file. + * advisories/GLIBC-SA-2024-0006: New file. + * advisories/GLIBC-SA-2024-0007: New file. + * advisories/GLIBC-SA-2024-0008: New file. + +2024-05-06 H.J. Lu <hjl.tools@gmail.com> + + COMMIT: 5f245f3bfbe61b2182964dafb94907e38284b806 + Add crt1-2.0.o for glibc 2.0 compatibility tests + + * Makeconfig: Modified. + * Rules: Modified. + * csu/Makefile: Modified. + * libio/Makefile: Modified. + * libio/tst-stderr-compat.c: New file. + * math/Makefile: Modified. + * sysdeps/pthread/Makefile: Modified. + +2024-05-06 Amrita H S <amritahs@linux.ibm.com> + + COMMIT: 23f0d81608d0ca6379894ef81670cf30af7fd081 + powerpc: Optimized strncmp for power10 + + * sysdeps/powerpc/powerpc64/le/power10/strncmp.S: New file. + * sysdeps/powerpc/powerpc64/multiarch/Makefile: Modified. + * sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c: Modified. + (__libc_ifunc_impl_list): Modified function. + * sysdeps/powerpc/powerpc64/multiarch/strncmp-power10.S: New file. + * sysdeps/powerpc/powerpc64/multiarch/strncmp.c: Modified. + [__LITTLE_ENDIAN__](libc_ifunc_redirected): Modified. + [__LITTLE_ENDIAN__](__strncmp_power10): New. + +2024-05-03 Stafford Horne <shorne@gmail.com> + + COMMIT: ea73eb5f581ef5931fd67005aa0c526ba43366c9 + build-many-glibcs.py: Add openrisc hard float glibc variant + + * scripts/build-many-glibcs.py: Modified. + +2024-05-03 Stafford Horne <shorne@gmail.com> + + COMMIT: 643d9d38d50b32b5f20fb8ff5da17bff412821b6 + or1k: Add hard float support + + * sysdeps/or1k/fpu/fclrexcpt.c: New file. + * sysdeps/or1k/fpu/fegetenv.c: New file. + * sysdeps/or1k/fpu/fegetmode.c: New file. + * sysdeps/or1k/fpu/fegetround.c: New file. + * sysdeps/or1k/fpu/feholdexcpt.c: New file. + * sysdeps/or1k/fpu/fenv_private.h: New file. + * sysdeps/or1k/fpu/fesetenv.c: New file. + * sysdeps/or1k/fpu/fesetexcept.c: New file. + * sysdeps/or1k/fpu/fesetmode.c: New file. + * sysdeps/or1k/fpu/fesetround.c: New file. + * sysdeps/or1k/fpu/feupdateenv.c: New file. + * sysdeps/or1k/fpu/fgetexcptflg.c: New file. + * sysdeps/or1k/fpu/fix-fp-int-convert-overflow.h: New file. + * sysdeps/or1k/fpu/fraiseexcpt.c: New file. + * sysdeps/or1k/fpu/fsetexcptflg.c: New file. + * sysdeps/or1k/fpu/ftestexcept.c: New file. + * sysdeps/or1k/fpu/get-rounding-mode.h: New file. + * sysdeps/or1k/fpu_control.h: New file. + * sysdeps/or1k/math-tests-snan-payload.h: New file. + * sysdeps/or1k/math-tests-trap.h: New file. + * sysdeps/or1k/sfp-machine.h: Modified. + [__or1k_hard_float__](FP_INIT_ROUNDMODE): New. + [__or1k_hard_float__](FP_HANDLE_EXCEPTIONS): New. + * sysdeps/unix/sysv/linux/or1k/Versions: New file. + * sysdeps/unix/sysv/linux/or1k/getcontext-common.S: New file. + * sysdeps/unix/sysv/linux/or1k/getcontext.S: Modified. + * sysdeps/unix/sysv/linux/or1k/libc.abilist: Modified. + * sysdeps/unix/sysv/linux/or1k/makecontext.c: Modified. + (__makecontext): Modified function. + (weak_alias): Remove. + [SHLIB_COMPAT (libc, GLIBC_2_35, GLIBC_2_40)](__makecontext_nofpcsr): New. + [SHLIB_COMPAT (libc, GLIBC_2_35, GLIBC_2_40)](compat_symbol): New. + (shlib-compat.h): Include file. + (do_makecontext): New function. + (versioned_symbol): New function. + * sysdeps/unix/sysv/linux/or1k/setcontext-common.S: New file. + * sysdeps/unix/sysv/linux/or1k/setcontext.S: Modified. + * sysdeps/unix/sysv/linux/or1k/swapcontext-common.S: New file. + * sysdeps/unix/sysv/linux/or1k/swapcontext.S: Modified. + * sysdeps/unix/sysv/linux/or1k/sys/ucontext.h: Modified. + (mcontext_t): Modified. + * sysdeps/unix/sysv/linux/or1k/ucontext_i.sym: Modified. + +2024-05-03 Stafford Horne <shorne@gmail.com> + + COMMIT: b57adfa49b7ec75fad94548fb66fddc3bd92f457 + or1k: Add hard float libm-test-ulps + + * sysdeps/or1k/fpu/libm-test-ulps: New file. + * sysdeps/or1k/fpu/libm-test-ulps-name: New file. + * sysdeps/or1k/libm-test-ulps-name: Delete file. + * sysdeps/or1k/libm-test-ulps: Move to... + * sysdeps/or1k/nofpu/libm-test-ulps: ... here. + * sysdeps/or1k/nofpu/libm-test-ulps-name: New file. + +2024-05-02 Florian Weimer <fweimer@redhat.com> + + COMMIT: 4bbca1a44691a6e9adcee5c6798a707b626bc331 + nscd: Use time_t for return type of addgetnetgrentX + + * nscd/netgroupcache.c: Modified. + (readdinnetgr): Modified function. + +2024-05-02 Gabi Falk <gabifalk@gmx.com> + + COMMIT: ded2e0753e9c46debeb2e0d26c5e560d2581d314 + Add a test to check for duplicate definitions in the static library + + * Makefile: Modified. + +2024-05-02 Gabi Falk <gabifalk@gmx.com> + + COMMIT: 5a2cf833f5772d6c37c7adac388dd9af9cc1c4b9 + i686: Fix multiple definitions of __memmove_chk and __memset_chk + + * sysdeps/i386/i686/memmove.S: Modified. + * sysdeps/i386/i686/memset.S: Modified. + +2024-05-02 Gabi Falk <gabifalk@gmx.com> + + COMMIT: 0fdf4ba48ccce5abf567340b0ab8fa8ed8a9bc6e + i586: Fix multiple definitions of __memcpy_chk and __mempcpy_chk + + * sysdeps/i386/i586/memcpy.S: Modified. + +2024-05-02 Florian Weimer <fweimer@redhat.com> + + COMMIT: 552073e4b88183994d8e13f693317bad89dd40f7 + nscd: Typo inside comment in netgroup cache + + * nscd/netgroupcache.c: Modified. + +2024-05-01 Carlos O'Donell <carlos@redhat.com> + + COMMIT: 91695ee4598b39d181ab8df579b888a8863c4cab + time: Allow later version licensing. + + * sysdeps/unix/sysv/linux/timespec_get.c: Modified. + * sysdeps/unix/sysv/linux/timespec_getres.c: Modified. + * time/timespec_get.c: Modified. + * time/timespec_getres.c: Modified. + +2024-04-30 Sergey Bugaev <bugaevc@gmail.com> + + COMMIT: bc8879f4f5f3bc19f6f87a0b7136fd5297dce628 + hurd: Stop mapping AT_NO_AUTOMOUNT to O_NOTRANS + + * hurd/hurd/fd.h: Modified. + [__USE_EXTERN_INLINES && _LIBC][IS_IN (libc)](__hurd_at_flags): Modified function. + +2024-04-30 H.J. Lu <hjl.tools@gmail.com> + + COMMIT: ddf71c550a5940deca74cc676f1cae134a891717 + libio: Sort test variables in Makefile + + * libio/Makefile: Modified. + +2024-04-30 Wilco Dijkstra <wilco.dijkstra@arm.com> + + COMMIT: 6dae61567fbf4e7519bcdeb20a5f4026715c354e + AArch64: Remove unused defines of CPU names + + * sysdeps/aarch64/cpu-features.h: Modified. + (IS_NEOVERSE_N1): Remove. + (IS_NEOVERSE_N2): Remove. + (IS_NEOVERSE_V1): Remove. + +2024-04-30 Mark Wielaard <mark@klomp.org> + + COMMIT: ebfd73a80f15559fe59fee32a7844c6b8fa99576 + Make sure INSTALL is ASCII plaintext again + + * INSTALL: Modified. + * Makefile: Modified. + +2024-04-25 Florian Weimer <fweimer@redhat.com> + + COMMIT: b62928f9070c6f3c5cc43a4cb89b4bfb950d7406 + x86: In ld.so, diagnose missing APX support in APX-only builds + + * sysdeps/x86/dl-get-cpu-features.c: Modified. + [SHARED](_dl_x86_init_cpu_features): Modified function. + +2024-04-25 H.J. Lu <hjl.tools@gmail.com> + + COMMIT: 049b7684c912dd32b67b1b15b0f43bf07d5f512e + elf: Also compile dl-misc.os with $(rtld-early-cflags) + + * elf/Makefile: Modified. + +2024-04-25 Florian Weimer <fweimer@redhat.com> + + COMMIT: c04a21e050d64a1193a6daab872bca2528bda44b + CVE-2024-33601, CVE-2024-33602: nscd: netgroup: Use two buffers in addgetnetgrentX (bug 31680) + + * nscd/netgroupcache.c: Modified. + (do_notfound): Modified function. + (addgetnetgrentX): Modified function. + (addinnetgrX): Modified function. + (addgetnetgrentX_ignore): Modified function. + (readdinnetgr): Modified function. + (scratch_buffer.h): Include file. + (send_notfound): New function. + (addgetnetgrentX_scratch): New. + (addgetnetgrentX_scratch_init): New function. + (addgetnetgrentX_scratch_free): New function. + (addgetnetgrentX_append_n): New function. + (addgetnetgrentX_append): New function. + +2024-04-25 Florian Weimer <fweimer@redhat.com> + + COMMIT: b048a482f088e53144d26a61c390bed0210f49f2 + CVE-2024-33600: nscd: Avoid null pointer crashes after notfound response (bug 31678) + + * nscd/netgroupcache.c: Modified. + (addinnetgrX): Modified function. + +2024-04-25 Florian Weimer <fweimer@redhat.com> + + COMMIT: 7835b00dbce53c3c87bbbb1754a95fb5e58187aa + CVE-2024-33600: nscd: Do not send missing not-found response in addgetnetgrentX (bug 31678) + + * nscd/netgroupcache.c: Modified. + (addgetnetgrentX): Modified function. + +2024-04-25 Florian Weimer <fweimer@redhat.com> + + COMMIT: 87801a8fd06db1d654eea3e4f7626ff476a9bdaa + CVE-2024-33599: nscd: Stack-based buffer overflow in netgroup cache (bug 31677) + + * nscd/netgroupcache.c: Modified. + (addinnetgrX): Modified function. + +2024-04-25 Florian Weimer <fweimer@redhat.com> + + COMMIT: 3a3a4497421422aa854c855cbe5110ca7d598ffc + i386: ulp update for SSE2 --disable-multi-arch configurations + + * sysdeps/i386/fpu/libm-test-ulps: Modified. + +2024-04-25 Aurelien Jarno <aurelien@aurel32.net> + + COMMIT: 41903cb6f460d62ba6dd2f4883116e2a624ee6f8 + GLIBC-SA-2024-0004: add commit for 2.31 branch + + * advisories/GLIBC-SA-2024-0004: Modified. + +2024-04-24 Wilco Dijkstra <wilco.dijkstra@arm.com> + + COMMIT: f262fce61671c38d436d2d0cd68dab5642ac9ef0 + benchtests: Add difficult strstr needle for bruteforce algorithms + + * benchtests/bench-strstr.c: Modified. + (test_hard_needle): Modified function. + +2024-04-24 H.J. Lu <hjl.tools@gmail.com> + + COMMIT: 46c999741340ea559784c20a45077955b50aca43 + x86: Define MINIMUM_X86_ISA_LEVEL in config.h [BZ #31676] + + * config.h.in: Modified. + * sysdeps/x86/configure: Modified. + * sysdeps/x86/configure.ac: Modified. + * sysdeps/x86/isa-level.h: Modified. + (MINIMUM_X86_ISA_LEVEL): Remove. + [! MINIMUM_X86_ISA_LEVEL](MINIMUM_X86_ISA_LEVEL): New. + +2024-04-24 caiyinyu <caiyinyu@loongson.cn> + + COMMIT: 095067efdf68c8061d6f99a21a0300841bede999 + LoongArch: Add glibc.cpu.hwcap support. + + * manual/tunables.texi: Modified. + * sysdeps/loongarch/Makefile: Modified. + * sysdeps/loongarch/cpu-tunables.c: New file. + * sysdeps/loongarch/dl-get-cpu-features.c: New file. + * sysdeps/loongarch/dl-machine.h: Modified. + [! dl_machine_h](cpu-features.c): Include file. + [! dl_machine_h](DL_PLATFORM_INIT): New. + [! dl_machine_h](dl_platform_init): New function. + [RESOLVE_MAP](elf_machine_runtime_setup): Modified function. + * sysdeps/loongarch/dl-tunables.list: New file. + * sysdeps/loongarch/lp64/multiarch/dl-symbol-redir-ifunc.h: Modified. + (memset): Remove. + [! SHARED](memset): New. + [! SHARED](memcmp): New. + * sysdeps/loongarch/tst-hwcap-tunables.c: New file. + * sysdeps/unix/sysv/linux/loongarch/cpu-features.c: New file. + * sysdeps/unix/sysv/linux/loongarch/cpu-features.h: Modified. + (SUPPORT_UAL): Modified. + (SUPPORT_LSX): Modified. + (SUPPORT_LASX): Modified. + (stdint.h): Include file. + (cpu_features): New. + (_dl_larch_get_cpu_features): New function. + (RTLD_SUPPORT_LSX): New. + (RTLD_SUPPORT_LASX): New. + * sysdeps/unix/sysv/linux/loongarch/dl-procinfo.c: New file. + * sysdeps/unix/sysv/linux/loongarch/dl-sysdep.c: New file. + * sysdeps/unix/sysv/linux/loongarch/libc-start.c: New file. + +2024-04-23 Florian Weimer <fweimer@redhat.com> + + COMMIT: f4724843ada64a51d66f65d3199fe431f9d4c254 + nptl: Fix tst-cancel30 on kernels without ppoll_time64 support + + * sysdeps/pthread/tst-cancel30.c: Modified. + (tf): Modified function. + (errno.h): Include file. + +2024-04-22 Samuel Thibault <samuel.thibault@ens-lyon.org> + + COMMIT: 16c8dfba14ff7596ad3aea941a240f8abcdc50e6 + Revert "Allow glibc to be compiled without EXEC_PAGESIZE" + + * elf/dl-support.c: Modified. + [EXEC_PAGESIZE][! HAVE_AUX_VECTOR](__rtld_lock_define_initialized_recursive): Remove. + [EXEC_PAGESIZE][! PTHREAD_IN_LIBC](_dl_make_stack_executable): Remove. + [EXEC_PAGESIZE][! PTHREAD_IN_LIBC](_dl_nothread_init_static_tls): Remove. + [EXEC_PAGESIZE][DL_SYSINFO_IMPLEMENTATION](DL_SYSINFO_IMPLEMENTATION): Remove. + [EXEC_PAGESIZE][HAVE_AUX_VECTOR](dl-parse_auxv.h): Remove. + [EXEC_PAGESIZE][HAVE_AUX_VECTOR](_dl_clktck): Remove. + [EXEC_PAGESIZE][HAVE_AUX_VECTOR](_dl_aux_init): Remove. + [EXEC_PAGESIZE][NEED_DL_SYSINFO](_dl_sysinfo): Remove. + [EXEC_PAGESIZE][NEED_DL_SYSINFO_DSO](_dl_sysinfo_dso): Remove. + [EXEC_PAGESIZE][NEED_DL_SYSINFO_DSO](_dl_sysinfo_map): Remove. + [EXEC_PAGESIZE][NEED_DL_SYSINFO_DSO](get-dynamic-info.h): Remove. + [EXEC_PAGESIZE][PTHREAD_IN_LIBC](_dl_stack_used): Remove. + [EXEC_PAGESIZE][PTHREAD_IN_LIBC](_dl_stack_user): Remove. + [EXEC_PAGESIZE][PTHREAD_IN_LIBC](_dl_stack_cache): Remove. + [EXEC_PAGESIZE][PTHREAD_IN_LIBC](_dl_stack_cache_actsize): Remove. + [EXEC_PAGESIZE][PTHREAD_IN_LIBC](_dl_in_flight_stack): Remove. + [EXEC_PAGESIZE][PTHREAD_IN_LIBC](_dl_stack_cache_lock): Remove. + [EXEC_PAGESIZE](_dl_pagesize): Remove. + [EXEC_PAGESIZE](_dl_minsigstacksize): Remove. + [EXEC_PAGESIZE](_dl_inhibit_cache): Remove. + [EXEC_PAGESIZE](_dl_all_dirs): Remove. + [EXEC_PAGESIZE](_dl_init_all_dirs): Remove. + [EXEC_PAGESIZE](_dl_initfirst): Remove. + [EXEC_PAGESIZE](_dl_debug_fd): Remove. + [EXEC_PAGESIZE](_dl_auxv): Remove. + [EXEC_PAGESIZE](_dl_phdr): Remove. + [EXEC_PAGESIZE](_dl_phnum): Remove. + [EXEC_PAGESIZE](_dl_hwcap): Remove. + [EXEC_PAGESIZE](_dl_hwcap2): Remove. + [EXEC_PAGESIZE](_dl_hwcap3): Remove. + [EXEC_PAGESIZE](_dl_hwcap4): Remove. + [EXEC_PAGESIZE](_dl_dso_sort_algo): Remove. + [EXEC_PAGESIZE](_dl_fpu_control): Remove. + [EXEC_PAGESIZE](_dl_stack_flags): Remove. + [EXEC_PAGESIZE](_dl_scope_free_list): Remove. + [EXEC_PAGESIZE](setup-vdso.h): Remove. + [EXEC_PAGESIZE](dl-vdso-setup.c): Remove. + [EXEC_PAGESIZE](__rtld_lock_define_initialized_recursive): Remove. + [EXEC_PAGESIZE](_dl_get_dl_main_map): Remove. + [EXEC_PAGESIZE](_dl_audit_pltexit): Remove. + [! HAVE_AUX_VECTOR](__rtld_lock_define_initialized_recursive): New. + [! PTHREAD_IN_LIBC](_dl_make_stack_executable): New. + [! PTHREAD_IN_LIBC](_dl_nothread_init_static_tls): New. + [DL_SYSINFO_IMPLEMENTATION](DL_SYSINFO_IMPLEMENTATION): New. + [HAVE_AUX_VECTOR](dl-parse_auxv.h): New. + [HAVE_AUX_VECTOR](_dl_clktck): New. + [HAVE_AUX_VECTOR](_dl_aux_init): New. + [NEED_DL_SYSINFO](_dl_sysinfo): New. + [NEED_DL_SYSINFO_DSO](_dl_sysinfo_dso): New. + [NEED_DL_SYSINFO_DSO](_dl_sysinfo_map): New. + [NEED_DL_SYSINFO_DSO](get-dynamic-info.h): New. + [PTHREAD_IN_LIBC](_dl_stack_used): New. + [PTHREAD_IN_LIBC](_dl_stack_user): New. + [PTHREAD_IN_LIBC](_dl_stack_cache): New. + [PTHREAD_IN_LIBC](_dl_stack_cache_actsize): New. + [PTHREAD_IN_LIBC](_dl_in_flight_stack): New. + [PTHREAD_IN_LIBC](_dl_stack_cache_lock): New. + (_dl_pagesize): New. + (_dl_minsigstacksize): New. + (_dl_inhibit_cache): New. + (_dl_all_dirs): New. + (_dl_init_all_dirs): New. + (_dl_initfirst): New. + (_dl_debug_fd): New. + (_dl_auxv): New. + (_dl_phdr): New. + (_dl_phnum): New. + (_dl_hwcap): New. + (_dl_hwcap2): New. + (_dl_hwcap3): New. + (_dl_hwcap4): New. + (_dl_dso_sort_algo): New. + (_dl_fpu_control): New. + (_dl_stack_flags): New. + (_dl_scope_free_list): New. + (setup-vdso.h): Include file. + (dl-vdso-setup.c): Include file. + (__rtld_lock_define_initialized_recursive): New function. + (_dl_get_dl_main_map): New function. + (_dl_audit_pltexit): New function. + * elf/rtld.c: Modified. + * libio/libioP.h: Modified. + [_G_HAVE_MMAP][! MAP_ANONYMOUS](_G_HAVE_MMAP): Remove. + [_G_HAVE_MMAP][! MAP_ANONYMOUS || ! EXEC_PAGESIZE](_G_HAVE_MMAP): New. + +2024-04-22 Carlos O'Donell <carlos@redhat.com> + Jeff Law <law@redhat.com> + + COMMIT: 684fbab755e727a8c15f8b621648d66694cd1f53 + locale: Handle loading a missing locale twice (Bug 14247) + + * gen-locales.mk: Modified. + * locale/findlocale.c: Modified. + (_nl_find_locale): Modified function. + * locale/loadlocale.c: Modified. + (_nl_load_locale): Modified function. + * localedata/Makefile: Modified. + * localedata/gen-locale.sh: Modified. + * localedata/tst-locale-loadlocale.c: New file. + +2024-04-22 Adhemerval Zanella <adhemerval.zanella@linaro.org> + + COMMIT: 25b191f6d33cda5770a18fd18be86cce0ebb3228 + elf: Do not check for loader mmap on tst-decorate-maps (BZ 31553) + + * elf/tst-decorate-maps.c: Modified. + (proc_maps_t): Modified. + (read_proc_maps): Modified function. + (do_test_threads): Modified function. + +2024-04-19 Joseph Myers <josmyers@redhat.com> + + COMMIT: f6d18bea387676e774e18ce410ace8c33a5c3511 + Use --enable-obsolete in build-many-glibcs.py for nios2-linux-gnu + + * scripts/build-many-glibcs.py: Modified. + +2024-04-19 Florian Weimer <fweimer@redhat.com> + + COMMIT: 5361ad3910c257bc327567be76fde532ed238e42 + login: Use unsigned 32-bit types for seconds-since-epoch + + * NEWS: Modified. + * bits/utmp.h: Modified. + (lastlog): Modified. + (utmp): Modified. + * login/Makefile: Modified. + * login/tst-utmp-unsigned-64.c: New file. + * login/tst-utmp-unsigned.c: New file. + * sysdeps/gnu/bits/utmpx.h: Modified. + (utmpx): Modified. + +2024-04-19 Florian Weimer <fweimer@redhat.com> + + COMMIT: 9abdae94c7454c45e02e97e4ed1eb1b1915d13d8 + login: structs utmp, utmpx, lastlog _TIME_BITS independence (bug 30701) + + * bits/wordsize.h: Modified. + * login/Makefile: Modified. + * login/tst-utmp-size-64.c: New file. + * sysdeps/arm/bits/wordsize.h: New file. + * sysdeps/csky/bits/wordsize.h: New file. + * sysdeps/m68k/bits/wordsize.h: New file. + * sysdeps/microblaze/bits/wordsize.h: New file. + * sysdeps/mips/bits/wordsize.h: Modified. + [_MIPS_SIM != _ABI64](__WORDSIZE_TIME64_COMPAT32): Remove. + [_MIPS_SIM == _ABI64](__WORDSIZE_TIME64_COMPAT32): Remove. + (__WORDSIZE_TIME64_COMPAT32): New. + * sysdeps/nios2/bits/wordsize.h: New file. + * sysdeps/powerpc/powerpc32/bits/wordsize.h: Modified. + [! __powerpc64__](__WORDSIZE_TIME64_COMPAT32): Remove. + [__powerpc64__](__WORDSIZE_TIME64_COMPAT32): Remove. + (__WORDSIZE_TIME64_COMPAT32): New. + * sysdeps/powerpc/powerpc64/bits/wordsize.h: Modified. + [! __powerpc64__](__WORDSIZE_TIME64_COMPAT32): Remove. + [__powerpc64__](__WORDSIZE_TIME64_COMPAT32): Remove. + (__WORDSIZE_TIME64_COMPAT32): New. + * sysdeps/sh/bits/wordsize.h: New file. + * sysdeps/sparc/sparc32/bits/wordsize.h: Modified. + (__WORDSIZE_TIME64_COMPAT32): Modified. + * sysdeps/sparc/sparc64/bits/wordsize.h: Modified. + [!(__arch64__ || __sparcv9)](__WORDSIZE_TIME64_COMPAT32): Remove. + [__arch64__ || __sparcv9](__WORDSIZE_TIME64_COMPAT32): Remove. + (__WORDSIZE_TIME64_COMPAT32): New. + * sysdeps/unix/sysv/linux/hppa/bits/wordsize.h: New file. + * sysdeps/unix/sysv/linux/powerpc/bits/wordsize.h: Modified. + [! __powerpc64__](__WORDSIZE_TIME64_COMPAT32): Remove. + [__powerpc64__](__WORDSIZE_TIME64_COMPAT32): Remove. + (__WORDSIZE_TIME64_COMPAT32): New. + * sysdeps/unix/sysv/linux/sparc/bits/wordsize.h: Modified. + [!(__arch64__ || __sparcv9)](__WORDSIZE_TIME64_COMPAT32): Remove. + [__arch64__ || __sparcv9](__WORDSIZE_TIME64_COMPAT32): Remove. + (__WORDSIZE_TIME64_COMPAT32): New. + * sysdeps/x86/bits/wordsize.h: Modified. + [! __x86_64__](__WORDSIZE_TIME64_COMPAT32): Remove. + [__x86_64__](__WORDSIZE_TIME64_COMPAT32): Remove. + (__WORDSIZE_TIME64_COMPAT32): New. + +2024-04-19 Florian Weimer <fweimer@redhat.com> + + COMMIT: 4d4da5aab936504b2d3eca3146e109630d9093c4 + login: Check default sizes of structs utmp, utmpx, lastlog + + * login/Makefile: Modified. + * login/tst-utmp-size.c: New file. + * sysdeps/arc/utmp-size.h: New file. + * sysdeps/arm/utmp-size.h: New file. + * sysdeps/csky/utmp-size.h: New file. + * sysdeps/generic/utmp-size.h: New file. + * sysdeps/hppa/utmp-size.h: New file. + * sysdeps/m68k/utmp-size.h: New file. + * sysdeps/microblaze/utmp-size.h: New file. + * sysdeps/mips/utmp-size.h: New file. + * sysdeps/nios2/utmp-size.h: New file. + * sysdeps/or1k/utmp-size.h: New file. + * sysdeps/powerpc/utmp-size.h: New file. + * sysdeps/riscv/utmp-size.h: New file. + * sysdeps/sh/utmp-size.h: New file. + * sysdeps/sparc/utmp-size.h: New file. + * sysdeps/x86/utmp-size.h: New file. + +2024-04-18 Wilco Dijkstra <wilco.dijkstra@arm.com> + + COMMIT: 0997c3d0c87433ac8c78043aaa9b6b7e91df2882 + benchtests: Add random() benchmark + + * benchtests/Makefile: Modified. + * benchtests/bench-random-lock.c: New file. + +2024-04-18 Siddhesh Poyarekar <siddhesh@sourceware.org> + + COMMIT: 05c3495296bc38c3c46117c45ee6e663581e3370 + advisories: Add Reported-By + + * advisories/README: Modified. + +2024-04-17 Adhemerval Zanella <adhemerval.zanella@linaro.org> + + COMMIT: 0e53e7cdf50b92f007eff86a02252d9549d8ef2c + Fix 'Reported-By' to use Camel Case for commit 6a98f4640ea453f + + * advisories/GLIBC-SA-2024-0004: Modified. + +2024-04-17 Adhemerval Zanella <adhemerval.zanella@linaro.org> + + COMMIT: 6a98f4640ea453fe048d3a49944044bce2c4c641 + Document CVE-2024-2961 + + * advisories/GLIBC-SA-2024-0004: New file. + +2024-04-17 Charles Fol <folcharles@gmail.com> + Adhemerval Zanella <adhemerval.zanella@linaro.org> + + COMMIT: f9dc609e06b1136bb0408be9605ce7973a767ada + iconv: ISO-2022-CN-EXT: fix out-of-bound writes when writing escape sequence (CVE-2024-2961) + + * iconvdata/Makefile: Modified. + * iconvdata/iso-2022-cn-ext.c: Modified. + * iconvdata/tst-iconv-iso-2022-cn-ext.c: New file. + +2024-04-16 Joe Simmons-Talbott <josimmon@redhat.com> + + COMMIT: 59974938fe1f4add843f5325f78e2a7ccd8db853 + elf/rtld: Count skipped environment variables for enable_secure + + * elf/Makefile: Modified. + * elf/rtld.c: Modified. + (process_envvars): Modified. + (_dl_start_args_adjust): Modified function. + (dl_main): Modified function. + (process_envvars_secure): Modified function. + (process_envvars): Modified function. + * elf/tst-tunables-enable_secure-env.c: New file. + +2024-04-14 Florian Weimer <fweimer@redhat.com> + + COMMIT: 14e56bd4ce15ac2d1cc43f762eb2e6b83fec1afe + powerpc: Fix ld.so address determination for PCREL mode (bug 31640) + + * sysdeps/powerpc/powerpc64/dl-machine.h: Modified. + [! dl_machine_h](elf_machine_load_address): Remove function. + [! dl_machine_h](elf_machine_dynamic): Remove function. + [! dl_machine_h][! __PCREL__](elf_machine_load_address): New. + [! dl_machine_h][! __PCREL__](elf_machine_dynamic): New. + [! dl_machine_h][__PCREL__](elf_machine_load_address): New. + [! dl_machine_h][__PCREL__](elf_machine_dynamic): New. + +2024-04-13 Florian Weimer <fweimer@redhat.com> + + COMMIT: aea52e3d2b71e89f2ba4fd4d8f1f8d3036d83c1d + Revert "x86_64: Suppress false positive valgrind error" + + * elf/Makefile: Modified. + * elf/tst-valgrind-smoke.sh: Modified. + * sysdeps/x86_64/Makefile: Modified. + * sysdeps/x86_64/tst-valgrind-smoke.supp: Delete file. + +2024-04-11 Adhemerval Zanella <adhemerval.zanella@linaro.org> + + COMMIT: cf11e74b0d81d389bcad5cdbba020ba475f0ac4b + wcsmbs: Ensure wcstr worst-case linear execution time (BZ 23865) + + * string/test-strstr.c: Modified. + [WIDE](__wmemcmp): New. + [WIDE](__wcsnlen): New. + [WIDE](__wcslen): New. + (test_main): Modified function. + (check3): New function. + (pr23865): New function. + * wcsmbs/wcs-two-way.h: New file. + * wcsmbs/wcsstr.c: Modified. + (WCSSTR): Modified function. + (string.h): Include file. + (AVAILABLE): New. + (wcs-two-way.h): Include file. + +2024-04-11 Adhemerval Zanella <adhemerval.zanella@linaro.org> + + COMMIT: 4b717562c4768883a87f62d67610c0a48e911445 + wcsmbs: Add test-wcsstr + + * string/test-strstr.c: Modified. + (TEST_NAME): Remove. + (STRSTR): Remove. + (libc_hidden_builtin_def): Remove. + (__strnlen): Remove. + (strstr.c): Remove include. + (simple_strstr): Modified function. + (proto_t): Modified. + (IMPL__c_strstr): Remove function. + (IMPL__strstr): Remove function. + (check_result): Modified function. + (do_one_test): Modified function. + (do_test): Modified function. + (check1): Modified function. + (check2): Modified function. + (pr23637): Modified function. + [! WIDE](TEST_NAME): New. + [! WIDE](TEST_FUNC): New. + [! WIDE](CHAR): New. + [! WIDE](STRLEN): New. + [! WIDE](STRCPY): New. + [! WIDE](MEMCPY): New. + [! WIDE](MEMSET): New. + [! WIDE](MEMPCPY): New. + [! WIDE](L): New. + [! WIDE](STRSTR): New. + [! WIDE](libc_hidden_builtin_def): New. + [! WIDE](__strnlen): New. + [! WIDE](strstr.c): New. + [! WIDE](C_IMPL): New. + [WIDE](TEST_NAME): New. + [WIDE](TEST_FUNC): New. + [WIDE](wchar.h): New. + [WIDE](CHAR): New. + [WIDE](STRLEN): New. + [WIDE](STRCPY): New. + [WIDE](MEMCPY): New. + [WIDE](MEMSET): New. + [WIDE](MEMPCPY): New. + [WIDE](L): New. + [WIDE](BUF1PAGES): New. + [WIDE](weak_alias): New. + [WIDE](WCSSTR): New. + [WIDE](wcsstr.c): New. + [WIDE](C_IMPL): New. + (IMPL__C_IMPL): New function. + (IMPL__TEST_FUNC): New function. + * wcsmbs/Makefile: Modified. + * wcsmbs/test-wcsstr.c: New file. + * wcsmbs/wcsstr.c: Modified. + (wcsstr): Remove function. + [! WCSSTR](WCSSTR): New. + (WCSSTR): New function. + +2024-04-10 Adhemerval Zanella <adhemerval.zanella@linaro.org> + Bruno Haible <bruno@clisp.org> + Paul Eggert <eggert@cs.ucla.edu> + + COMMIT: 686d5420253bd76b1b7458f91d6ef9fc1a12b229 + posix: Sync tempname with gnulib + + * SHARED-FILES: Modified. + * include/stdio.h: Modified. + [! _ISOMAC](__path_search): Remove. + * libio/oldtmpfile.c: Modified. + [SHLIB_COMPAT (libc, GLIBC_2_0, GLIBC_2_1)](stdio-common/tmpdir.h): Include file. + * stdio-common/Makefile: Modified. + * stdio-common/tempnam.c: Modified. + (tmpdir.h): Include file. + * stdio-common/tempname.c: Modified. + (__path_search): Remove function. + (stub_warning): Remove function. + (__gen_tempname): New function. + * stdio-common/tmpdir.c: New file. + * stdio-common/tmpdir.h: New file. + * stdio-common/tmpfile.c: Modified. + (tmpdir.h): Include file. + * stdio-common/tmpnam.c: Modified. + (tmpdir.h): Include file. + * stdio-common/tmpnam_r.c: Modified. + (tmpdir.h): Include file. + * sysdeps/posix/tempname.c: Modified. + [! P_tmpdir](P_tmpdir): Remove. + [! _LIBC](__stat64): Remove. + [_LIBC](__secure_getenv): Remove. + [_LIBC](direxists): Remove function. + [_LIBC](__path_search): Remove function. + [_LIBC](try_tempname_len): Modified function. + (sys/types.h): Remove include. + (assert.h): Remove include. + (stdbool.h): Remove include. + (stddef.h): Remove include. + (stdalign.h): Remove include. + (random_bits): Modified function. + (mix_random_values): New function. + +2024-04-10 Sergey Kolosov <skolosov@redhat.com> + + COMMIT: 3a83f79024cc023a74c3892a1673542e8e972485 + socket: Add new test for connect + + * socket/Makefile: Modified. + * socket/tst-connect.c: New file. + +2024-04-10 Sergey Kolosov <skolosov@redhat.com> + + COMMIT: 6687a6e3f962759536a8019d31c68c1009ccd6eb + libsupport: Add xgetpeername + + * support/Makefile: Modified. + * support/xgetpeername.c: New file. + * support/xsocket.h: Modified. + (xgetpeername): New function. + +2024-04-09 H.J. Lu <hjl.tools@gmail.com> + + COMMIT: 42e48e720c78ab75eb8def9e866da52b0ac278df + nptl: Add tst-pthread-key1-static for BZ #21777 + + * nptl/Makefile: Modified. + * nptl/tst-pthread-key1-static.c: New file. + +2024-04-08 Florian Weimer <fweimer@redhat.com> + + COMMIT: ae7468a7b0bcf22e9cd5fcae42bb9e4f65de83ee + elf: Add ld.so test with non-existing program name + + * elf/Makefile: Modified. + * elf/tst-rtld-does-not-exist.sh: New file. + +2024-04-08 H.J. Lu <hjl.tools@gmail.com> + + COMMIT: 1cce91d8aed5c3eca2b6f47767c82d9ed3e9e33f + elf: Check objname before calling fatal_error + + * elf/dl-catch.c: Modified. + (_dl_signal_error): Modified function. + +2024-04-08 H.J. Lu <hjl.tools@gmail.com> + + COMMIT: 727aacfd667c026762b9aaa1a3a293f815edebba + Use crtbeginT.o and crtend.o for non-PIE static executables + + * Makeconfig: Modified. + +2024-04-08 Florian Weimer <fweimer@redhat.com> + + COMMIT: f8d8b1b1e6d3b8b93f224efc796b7ea083fdb83f + aarch64: Enhanced CPU diagnostics for ld.so + + * manual/dynlink.texi: Modified. + * sysdeps/aarch64/dl-diagnostics-cpu.c: New file. + +2024-04-08 Florian Weimer <fweimer@redhat.com> + + COMMIT: 7a430f40c46acfa7ce4c3bff193b278c190b2efc + x86: Add generic CPUID data dumper to ld.so --list-diagnostics + + * manual/dynlink.texi: Modified. + * sysdeps/x86/dl-diagnostics-cpu.c: Modified. + (_dl_diagnostics_cpu): Modified function. + (array_length.h): Include file. + (cpu-features.h): Include file. + (cpuid.h): Include file. + (dl-iterate_cpu.h): Include file. + (stdbool.h): Include file. + (string.h): Include file. + (sysdep.h): Include file. + (_dl_diagnostics_cpuid): New function. + (cpuid_query): New. + (cpuid_query_combined): New function. + (cpuid_registers_zero): New. + (cpuid_query_result): New. + (<anonymous>): New. + (<anonymous>): New. + (<anonymous>): New. + (<anonymous>): New. + (cpuid_collected_data): New. + (_dl_diagnostics_cpuid_store): New function. + (_dl_diagnostics_cpuid_collect_1): New function. + (_dl_diagnostics_cpuid_collect): New function. + (_dl_diagnostics_cpuid_print_reg): New function. + (_dl_diagnostics_cpuid_print_query): New function. + (_dl_diagnostics_cpuid_report): New function. + (_dl_diagnostics_cpuid): New function. + +2024-04-08 Florian Weimer <fweimer@redhat.com> + + COMMIT: 5653ccd847f0cd3a98906e44c97c71d68652d326 + elf: Add CPU iteration support for future use in ld.so diagnostics + + * elf/dl-iterate_cpu.h: New file. + * sysdeps/generic/dl-affinity.h: New file. + * sysdeps/unix/sysv/linux/dl-affinity.h: New file. + +2024-04-07 Paul Eggert <eggert@cs.ucla.edu> + + COMMIT: 1f94147a79fcb7211f1421b87383cad93986797f + timezone: sync to TZDB 2024a + + * SHARED-FILES: Modified. + * config.h.in: Modified. + * timezone/Makefile: Modified. + * timezone/private.h: Modified. + [! HAVE_GENERIC](HAVE_GENERIC): Remove. + [! HAVE_GENERIC](TIME_T_MIN): Remove. + [! HAVE_GENERIC](TIME_T_MAX): Remove. + [! HAVE_GENERIC && __GNUC__](HAVE_GENERIC): Remove. + [! HAVE_GENERIC && __has_extension][!(__has_extension(c_generic_selections))](HAVE_GENERIC): Remove. + [! HAVE_GENERIC && __has_extension][__has_extension(c_generic_selections)](HAVE_GENERIC): Remove. + [! HAVE_GETTEXT](HAVE_GETTEXT): Modified. + [! HAVE_INCOMPATIBLE_CTIME_R](HAVE_INCOMPATIBLE_CTIME_R): Modified. + [! HAVE_INTTYPES_H](HAVE_INTTYPES_H): Remove. + [! HAVE_LINK](HAVE_LINK): Modified. + [! HAVE_STDBOOL_H](HAVE_STDBOOL_H): Remove. + [! HAVE_STDBOOL_H](true): Remove. + [! HAVE_STDBOOL_H](false): Remove. + [! HAVE_STDBOOL_H](bool): Remove. + [! HAVE_STDINT_H](HAVE_STDINT_H): Remove. + [! HAVE_STRTOLL](HAVE_STRTOLL): Remove. + [! HAVE_SYMLINK](HAVE_SYMLINK): Modified. + [! HAVE_SYS_STAT_H](HAVE_SYS_STAT_H): Modified. + [! HAVE_SYS_WAIT_H](HAVE_SYS_WAIT_H): Remove. + [! HAVE_UNISTD_H](HAVE_UNISTD_H): Modified. + [! HAVE_UTMPX_H](HAVE_UTMPX_H): Remove. + [! INT32_MAX](INT32_MAX): Remove. + [! INT32_MIN](INT32_MIN): Remove. + [! INTMAX_MAX][! LLONG_MAX](intmax_t): Remove. + [! INTMAX_MAX][! LLONG_MAX](INTMAX_MAX): Remove. + [! INTMAX_MAX][! LLONG_MAX](INTMAX_MIN): Remove. + [! INTMAX_MAX][! strtoimax](strtoimax): Remove. + [! INTMAX_MAX][LLONG_MAX][HAVE_STRTOLL](strtoimax): Remove. + [! INTMAX_MAX][LLONG_MAX](intmax_t): Remove. + [! INTMAX_MAX][LLONG_MAX](INTMAX_MAX): Remove. + [! INTMAX_MAX][LLONG_MAX](INTMAX_MIN): Remove. + [! INT_FAST32_MAX][!(INT_MAX >> 31 == 0)](int_fast32_t): Remove. + [! INT_FAST32_MAX][!(INT_MAX >> 31 == 0)](INT_FAST32_MAX): Remove. + [! INT_FAST32_MAX][!(INT_MAX >> 31 == 0)](INT_FAST32_MIN): Remove. + [! INT_FAST32_MAX][INT_MAX >> 31 == 0](int_fast32_t): Remove. + [! INT_FAST32_MAX][INT_MAX >> 31 == 0](INT_FAST32_MAX): Remove. + [! INT_FAST32_MAX][INT_MAX >> 31 == 0](INT_FAST32_MIN): Remove. + [! INT_FAST64_MAX][! LLONG_MAX][LONG_MAX >> 31 < 0xffffffff](type): Remove. + [! INT_FAST64_MAX][! LLONG_MAX][LONG_MAX >> 31 < 0xffffffff](int_fast64_t): Remove. + [! INT_FAST64_MAX][! LLONG_MAX](INT_FAST64_MIN): Remove. + [! INT_FAST64_MAX][! LLONG_MAX](INT_FAST64_MAX): Remove. + [! INT_FAST64_MAX][LLONG_MAX](int_fast64_t): Remove. + [! INT_FAST64_MAX][LLONG_MAX](INT_FAST64_MIN): Remove. + [! INT_FAST64_MAX][LLONG_MAX](INT_FAST64_MAX): Remove. + [! PRIdFAST64][INT_FAST64_MAX != LLONG_MAX](PRIdFAST64): Remove. + [! PRIdFAST64][INT_FAST64_MAX == LLONG_MAX](PRIdFAST64): Remove. + [! PRIdMAX][INTMAX_MAX != LLONG_MAX](PRIdMAX): Remove. + [! PRIdMAX][INTMAX_MAX == LLONG_MAX](PRIdMAX): Remove. + [! PRIuMAX][!(ULLONG_MAX || __LONG_LONG_MAX__)](PRIuMAX): Remove. + [! PRIuMAX][ULLONG_MAX || __LONG_LONG_MAX__](PRIuMAX): Remove. + [! R_OK](R_OK): Modified. + [! SCNdFAST64](SCNdFAST64): Remove. + [! SIZE_MAX](SIZE_MAX): Remove. + [! UINTMAX_MAX][!(ULLONG_MAX || __LONG_LONG_MAX__)](uintmax_t): Remove. + [! UINTMAX_MAX][ULLONG_MAX || __LONG_LONG_MAX__](uintmax_t): Remove. + [! UINT_FAST64_MAX][!(ULLONG_MAX || __LONG_LONG_MAX__)][ULONG_MAX >> 31 >> 1 < 0xffffffff](type): Remove. + [! UINT_FAST64_MAX][!(ULLONG_MAX || __LONG_LONG_MAX__)][ULONG_MAX >> 31 >> 1 < 0xffffffff](uint_fast64_t): Remove. + [! UINT_FAST64_MAX][ULLONG_MAX || __LONG_LONG_MAX__](uint_fast64_t): Remove. + [! _Noreturn && __STDC_VERSION__ < 201112][!(2 < __GNUC__ + (8 <= __GNUC_MINOR__))](_Noreturn): Remove. + [! _Noreturn && __STDC_VERSION__ < 201112][2 < __GNUC__ + (8 <= __GNUC_MINOR__)](_Noreturn): Remove. + [!(3 <= __GNUC__)](ATTRIBUTE_CONST): Remove. + [!(3 <= __GNUC__)](ATTRIBUTE_PURE): Remove. + [( __GLIBC__ || __FreeBSD__ || __NetBSD__ || __OpenBSD__ || ( __APPLE__ && __MACH__))][! TM_GMTOFF && ! NO_TM_GMTOFF](TM_GMTOFF): Remove. + [( __GLIBC__ || __FreeBSD__ || __NetBSD__ || __OpenBSD__ || ( __APPLE__ && __MACH__))][! TM_ZONE && ! NO_TM_ZONE](TM_ZONE): Remove. + [3 <= __GNUC__](ATTRIBUTE_CONST): Remove. + [3 <= __GNUC__](ATTRIBUTE_MALLOC): Modified. + [3 <= __GNUC__](ATTRIBUTE_PURE): Remove. + [3 <= __GNUC__](ATTRIBUTE_FORMAT): Modified. + [HAVE_GENERIC](TIME_T_MIN): Remove. + [HAVE_GENERIC](TIME_T_MAX): Remove. + [HAVE_INCOMPATIBLE_CTIME_R](asctime_r): Modified. + [HAVE_INTTYPES_H](inttypes.h): Remove. + [HAVE_STDBOOL_H](stdbool.h): Remove. + [HAVE_STDINT_H](stdint.h): Remove. + [NETBSD_INSPIRED][STD_INSPIRED][TZ_TIME_T || ! posix2time_z](posix2time_z): Modified. + [NETBSD_INSPIRED][STD_INSPIRED][TZ_TIME_T || ! time2posix_z](time2posix_z): Modified. + [STD_INSPIRED][TZ_TIME_T || ! timegm](timegm): Remove. + [STD_INSPIRED][TZ_TIME_T || ! timeoff](timeoff): Remove. + [STD_INSPIRED][TZ_TIME_T || ! timeoff](EXTERN_TIMEOFF): New. + [STD_INSPIRED][TZ_TIME_T || ! tzsetwall](tzsetwall): Remove. + [TZ_TIME_T][LOCALTIME_IMPLEMENTATION](sys_time): Remove. + [TZ_TIME_T](tzsetwall): Remove. + [TZ_TIME_T](asctime): Modified. + [TZ_TIME_T](ctime): Modified. + [TZ_TIME_T](difftime): Modified. + [TZ_TIME_T][!(__STDC_VERSION__ < 202311)](DEPRECATED_IN_C23): New. + [TZ_TIME_T][__STDC_VERSION__ < 202311](DEPRECATED_IN_C23): New. + [TZ_TIME_T](timegm): New function. + [__LONG_LONG_MAX__][! LLONG_MAX](LLONG_MAX): Remove. + [__LONG_LONG_MAX__][! LLONG_MIN](LLONG_MIN): Remove. + [__STDC_VERSION__ < 199901 && ! restrict](restrict): Remove. + (_LARGE_FILES): Remove. + (_DARWIN_USE_64_BIT_INODE): Remove. + (sys/types.h): Remove include. + (is_digit): Remove. + (TYPE_BIT): Modified. + (YEARSPERREPEAT): Remove. + (SECSPERMIN): Remove. + (MINSPERHOUR): Remove. + (HOURSPERDAY): Remove. + (DAYSPERWEEK): Remove. + (DAYSPERNYEAR): Remove. + (DAYSPERLYEAR): Remove. + (SECSPERHOUR): Remove. + (MONSPERYEAR): Remove. + (TM_SUNDAY): Remove. + (TM_MONDAY): Remove. + (TM_TUESDAY): Remove. + (TM_WEDNESDAY): Remove. + (TM_THURSDAY): Remove. + (TM_FRIDAY): Remove. + (TM_SATURDAY): Remove. + (TM_JANUARY): Remove. + (TM_FEBRUARY): Remove. + (TM_MARCH): Remove. + (TM_APRIL): Remove. + (TM_MAY): Remove. + (TM_JUNE): Remove. + (TM_JULY): Remove. + (TM_AUGUST): Remove. + (TM_SEPTEMBER): Remove. + (TM_OCTOBER): Remove. + (TM_NOVEMBER): Remove. + (TM_DECEMBER): Remove. + (TM_YEAR_BASE): Remove. + (EPOCH_YEAR): Remove. + (EPOCH_WDAY): Remove. + (AVGSECSPERYEAR): Modified. + (SECSPERREPEAT): Modified. + (SECSPERREPEAT_BITS): Remove. + [! ATTRIBUTE_DEPRECATED][!(3 < __GNUC__ + (2 <= __GNUC_MINOR__))](ATTRIBUTE_DEPRECATED): New. + [! ATTRIBUTE_DEPRECATED][3 < __GNUC__ + (2 <= __GNUC_MINOR__)](ATTRIBUTE_DEPRECATED): New. + [! ATTRIBUTE_FALLTHROUGH][!(7 <= __GNUC__)](ATTRIBUTE_FALLTHROUGH): New. + [! ATTRIBUTE_FALLTHROUGH][7 <= __GNUC__](ATTRIBUTE_FALLTHROUGH): New. + [! ATTRIBUTE_MAYBE_UNUSED][!(2 < __GNUC__ + (7 <= __GNUC_MINOR__))](ATTRIBUTE_MAYBE_UNUSED): New. + [! ATTRIBUTE_MAYBE_UNUSED][2 < __GNUC__ + (7 <= __GNUC_MINOR__)](ATTRIBUTE_MAYBE_UNUSED): New. + [! ATTRIBUTE_NORETURN][!(2 < __GNUC__ + (8 <= __GNUC_MINOR__))](ATTRIBUTE_NORETURN): New. + [! ATTRIBUTE_NORETURN][2 < __GNUC__ + (8 <= __GNUC_MINOR__)](ATTRIBUTE_NORETURN): New. + [! ATTRIBUTE_NORETURN][201112 <= __STDC_VERSION__](ATTRIBUTE_NORETURN): New. + [! ATTRIBUTE_REPRODUCIBLE][!(3 <= __GNUC__)](ATTRIBUTE_REPRODUCIBLE): New. + [! ATTRIBUTE_REPRODUCIBLE][3 <= __GNUC__](ATTRIBUTE_REPRODUCIBLE): New. + [! ATTRIBUTE_UNSEQUENCED][!(3 <= __GNUC__)](ATTRIBUTE_UNSEQUENCED): New. + [! ATTRIBUTE_UNSEQUENCED][3 <= __GNUC__](ATTRIBUTE_UNSEQUENCED): New. + [! EINVAL](EINVAL): New. + [! ELOOP](ELOOP): New. + [! ENOMEM](ENOMEM): New. + [! HAVE_DECL_TIMEGM][!((202311 <= __STDC_VERSION__ || __GLIBC__ || __tm_zone || __FreeBSD__ || __NetBSD__ || __OpenBSD__ || ( __APPLE__ && __MACH__)))](HAVE_DECL_TIMEGM): New. + [! HAVE_DECL_TIMEGM][(202311 <= __STDC_VERSION__ || __GLIBC__ || __tm_zone || __FreeBSD__ || __NetBSD__ || __OpenBSD__ || ( __APPLE__ && __MACH__))](HAVE_DECL_TIMEGM): New. + [! HAVE_GETTEXT && __has_include][__has_include(<libintl.h>)](HAVE_GETTEXT): New. + [! HAVE_MALLOC_ERRNO](HAVE_MALLOC_ERRNO): New. + [! HAVE_SETENV](HAVE_SETENV): New. + [! HAVE_STDCKDINT_H && __has_include][__has_include(<stdckdint.h>)](HAVE_STDCKDINT_H): New. + [! HAVE_SYS_STAT_H && __has_include][!__has_include(<sys/stat.h>)](HAVE_SYS_STAT_H): New. + [! HAVE_UNISTD_H && __has_include][!__has_include(<unistd.h>)](HAVE_UNISTD_H): New. + [! HAVE__GENERIC](HAVE__GENERIC): New. + [! HAVE__GENERIC](TIME_T_MIN): New. + [! HAVE__GENERIC](TIME_T_MAX): New. + [! HAVE__GENERIC](<anonymous>): New. + [! HAVE__GENERIC && __GNUC__ && ! __STRICT_ANSI__](HAVE__GENERIC): New. + [! HAVE__GENERIC && __has_extension][!__has_extension(c_generic_selections)](HAVE__GENERIC): New. + [! PORT_TO_C89](PORT_TO_C89): New. + [! STD_INSPIRED](STD_INSPIRED): New. + [! SUPPORT_C89](SUPPORT_C89): New. + [! _TIME_BITS && _FILE_OFFSET_BITS == 64](_TIME_BITS): New. + [! __STDC_VERSION__](__STDC_VERSION__): New. + [! unreachable][! unreachable](unreachable): New. + [! unreachable][4 < __GNUC__ + (5 <= __GNUC_MINOR__)](unreachable): New. + [! unreachable][__has_builtin][__has_builtin(__builtin_unreachable)](unreachable): New. + [!(( __has_c_attribute && (202311 <= __STDC_VERSION__ || ! __STRICT_ANSI__)))](HAVE___HAS_C_ATTRIBUTE): New. + [!HAVE_DECL_TIMEGM && ! timegm](timegm): New. + [!PORT_TO_C89](inttypes.h): New. + [( __has_c_attribute && (202311 <= __STDC_VERSION__ || ! __STRICT_ANSI__))](HAVE___HAS_C_ATTRIBUTE): New. + [(! EXTERN_TIMEOFF && TM_GMTOFF && (200809 < _POSIX_VERSION || ! UNINIT_TRAP))][! timeoff](timeoff): New. + [(! EXTERN_TIMEOFF && TM_GMTOFF && (200809 < _POSIX_VERSION || ! UNINIT_TRAP))](EXTERN_TIMEOFF): New. + [(200809 < _POSIX_VERSION || __GLIBC__ || __tm_zone || __FreeBSD__ || __NetBSD__ || __OpenBSD__ || ( __APPLE__ && __MACH__))][! TM_GMTOFF && ! NO_TM_GMTOFF](TM_GMTOFF): New. + [(200809 < _POSIX_VERSION || __GLIBC__ || __tm_zone || __FreeBSD__ || __NetBSD__ || __OpenBSD__ || ( __APPLE__ && __MACH__))][! TM_ZONE && ! NO_TM_ZONE](TM_ZONE): New. + [(__STDC_VERSION__ < 199901 && ! restrict && (PORT_TO_C89 || _MSC_VER))](restrict): New. + [7 <= __GNUC__](ckd_add): New. + [7 <= __GNUC__](ckd_sub): New. + [7 <= __GNUC__](ckd_mul): New. + [DEBUG](unreachable): New. + [EXTERN_TIMEOFF](timeoff): New. + [HAVE_STDCKDINT_H][HAVE_STDCKDINT_H](stdckdint.h): New. + [HAVE__GENERIC](TIME_T_MIN): New. + [HAVE__GENERIC](TIME_T_MAX): New. + [HAVE__GENERIC](<anonymous>): New. + [HAVE___HAS_C_ATTRIBUTE][__has_c_attribute(deprecated)](ATTRIBUTE_DEPRECATED): New. + [HAVE___HAS_C_ATTRIBUTE][__has_c_attribute(fallthrough)](ATTRIBUTE_FALLTHROUGH): New. + [HAVE___HAS_C_ATTRIBUTE][__has_c_attribute(maybe_unused)](ATTRIBUTE_MAYBE_UNUSED): New. + [HAVE___HAS_C_ATTRIBUTE][__has_c_attribute(noreturn)](ATTRIBUTE_NORETURN): New. + [HAVE___HAS_C_ATTRIBUTE][__has_c_attribute(reproducible)](ATTRIBUTE_REPRODUCIBLE): New. + [HAVE___HAS_C_ATTRIBUTE][__has_c_attribute(unsequenced)](ATTRIBUTE_UNSEQUENCED): New. + [LOCALTIME_IMPLEMENTATION && TZ_TIME_T](sys_time): New. + [PORT_TO_C89][! HAVE_INTTYPES_H](HAVE_INTTYPES_H): New. + [PORT_TO_C89][! HAVE_STDINT_H](HAVE_STDINT_H): New. + [PORT_TO_C89][! HAVE_STDINT_H && __has_include](HAVE_STDINT_H): New. + [PORT_TO_C89][! INTMAX_MAX][! LLONG_MAX](intmax_t): New. + [PORT_TO_C89][! INTMAX_MAX][! LLONG_MAX](INTMAX_MAX): New. + [PORT_TO_C89][! INTMAX_MAX][! LLONG_MAX](INTMAX_MIN): New. + [PORT_TO_C89][! INTMAX_MAX][! strtoimax](strtoimax): New. + [PORT_TO_C89][! INTMAX_MAX][LLONG_MAX][! HAVE_STRTOLL](HAVE_STRTOLL): New. + [PORT_TO_C89][! INTMAX_MAX][LLONG_MAX][HAVE_STRTOLL](strtoimax): New. + [PORT_TO_C89][! INTMAX_MAX][LLONG_MAX](intmax_t): New. + [PORT_TO_C89][! INTMAX_MAX][LLONG_MAX](INTMAX_MAX): New. + [PORT_TO_C89][! INTMAX_MAX][LLONG_MAX](INTMAX_MIN): New. + [PORT_TO_C89][! INT_FAST32_MAX][!(INT_MAX >> 31 == 0)](int_fast32_t): New. + [PORT_TO_C89][! INT_FAST32_MAX][!(INT_MAX >> 31 == 0)](INT_FAST32_MAX): New. + [PORT_TO_C89][! INT_FAST32_MAX][!(INT_MAX >> 31 == 0)](INT_FAST32_MIN): New. + [PORT_TO_C89][! INT_FAST32_MAX][INT_MAX >> 31 == 0](int_fast32_t): New. + [PORT_TO_C89][! INT_FAST32_MAX][INT_MAX >> 31 == 0](INT_FAST32_MAX): New. + [PORT_TO_C89][! INT_FAST32_MAX][INT_MAX >> 31 == 0](INT_FAST32_MIN): New. + [PORT_TO_C89][! INT_FAST64_MAX][!(1 <= LONG_MAX >> 31 >> 31)](int_fast64_t): New. + [PORT_TO_C89][! INT_FAST64_MAX][!(1 <= LONG_MAX >> 31 >> 31)](INT_FAST64_MIN): New. + [PORT_TO_C89][! INT_FAST64_MAX][!(1 <= LONG_MAX >> 31 >> 31)](INT_FAST64_MAX): New. + [PORT_TO_C89][! INT_FAST64_MAX][1 <= LONG_MAX >> 31 >> 31](int_fast64_t): New. + [PORT_TO_C89][! INT_FAST64_MAX][1 <= LONG_MAX >> 31 >> 31](INT_FAST64_MIN): New. + [PORT_TO_C89][! INT_FAST64_MAX][1 <= LONG_MAX >> 31 >> 31](INT_FAST64_MAX): New. + [PORT_TO_C89][! PRIdFAST64][INT_FAST64_MAX != LONG_MAX](PRIdFAST64): New. + [PORT_TO_C89][! PRIdFAST64][INT_FAST64_MAX == LONG_MAX](PRIdFAST64): New. + [PORT_TO_C89][! PRIdMAX][INTMAX_MAX != LLONG_MAX](PRIdMAX): New. + [PORT_TO_C89][! PRIdMAX][INTMAX_MAX == LLONG_MAX](PRIdMAX): New. + [PORT_TO_C89][! PRIuMAX][! ULLONG_MAX](PRIuMAX): New. + [PORT_TO_C89][! PRIuMAX][ULLONG_MAX](PRIuMAX): New. + [PORT_TO_C89][! PTRDIFF_MAX](PTRDIFF_MAX): New. + [PORT_TO_C89][! SCNdFAST64](SCNdFAST64): New. + [PORT_TO_C89][! SIZE_MAX](SIZE_MAX): New. + [PORT_TO_C89][! UINTMAX_MAX][! ULLONG_MAX](uintmax_t): New. + [PORT_TO_C89][! UINTMAX_MAX][! ULLONG_MAX](UINTMAX_MAX): New. + [PORT_TO_C89][! UINTMAX_MAX][ULLONG_MAX](uintmax_t): New. + [PORT_TO_C89][! UINTMAX_MAX][ULLONG_MAX](UINTMAX_MAX): New. + [PORT_TO_C89][! UINT_FAST32_MAX](uint_fast32_t): New. + [PORT_TO_C89][! UINT_FAST64_MAX][!(3 <= ULONG_MAX >> 31 >> 31)](uint_fast64_t): New. + [PORT_TO_C89][! UINT_FAST64_MAX][!(3 <= ULONG_MAX >> 31 >> 31)](UINT_FAST64_MAX): New. + [PORT_TO_C89][! UINT_FAST64_MAX][3 <= ULONG_MAX >> 31 >> 31](uint_fast64_t): New. + [PORT_TO_C89][! UINT_FAST64_MAX][3 <= ULONG_MAX >> 31 >> 31](UINT_FAST64_MAX): New. + [PORT_TO_C89][HAVE_INTTYPES_H](inttypes.h): New. + [PORT_TO_C89][HAVE_STDINT_H](stdint.h): New. + [PORT_TO_C89][__LONG_LONG_MAX__ && ! __STRICT_ANSI__][! LLONG_MAX](LLONG_MAX): New. + [PORT_TO_C89][__LONG_LONG_MAX__ && ! __STRICT_ANSI__][! LLONG_MIN](LLONG_MIN): New. + [PORT_TO_C89][__LONG_LONG_MAX__ && ! __STRICT_ANSI__][! ULLONG_MAX](ULLONG_MAX): New. + [PORT_TO_C89 && __STDC_VERSION__ < 199901](true): New. + [PORT_TO_C89 && __STDC_VERSION__ < 199901](false): New. + [PORT_TO_C89 && __STDC_VERSION__ < 199901](bool): New. + [__STDC_VERSION__ < 202311](stdbool.h): New. + [__STDC_VERSION__ < 202311](static_assert): New. + [__has_builtin][__has_builtin(__builtin_add_overflow)](ckd_add): New. + [__has_builtin][__has_builtin(__builtin_mul_overflow)](ckd_mul): New. + [__has_builtin][__has_builtin(__builtin_sub_overflow)](ckd_sub): New. + (stddef.h): Include file. + (INDEX_MAX): New. + (max): New. + (min): New. + (static_assert): New function. + (<anonymous>): New. + (DAYSPERREPEAT): New. + (<anonymous>): New. + (<anonymous>): New. + (<anonymous>): New. + (<anonymous>): New. + * timezone/tzfile.h: Modified. + [! TZDEFAULT](TZDEFAULT): Remove. + [! TZDEFRULES](TZDEFRULES): Modified. + [! TZDIR](TZDIR): Remove. + [! TZ_MAX_CHARS](TZ_MAX_CHARS): Modified. + [! TZ_MAX_LEAPS](TZ_MAX_LEAPS): Modified. + [! TZ_MAX_TIMES](TZ_MAX_TIMES): Modified. + [! TZ_MAX_TYPES](TZ_MAX_TYPES): Modified. + * timezone/tzselect.ksh: Modified. + * timezone/version: Modified. + * timezone/zdump.c: Modified. + [! HAVE_SNPRINTF](HAVE_SNPRINTF): Modified. + [! HAVE_SNPRINTF](my_snprintf): Modified function. + [! MAX_STRING_LENGTH](MAX_STRING_LENGTH): Remove. + [! USE_LOCALTIME_RZ](localtime_rz): Modified function. + [! USE_LOCALTIME_RZ](tzalloc): Modified function. + [! USE_LOCALTIME_RZ](tzfree): Modified function. + [! ZDUMP_HI_YEAR](ZDUMP_HI_YEAR): Modified. + [! ZDUMP_LO_YEAR](ZDUMP_LO_YEAR): Modified. + (<anonymous>): Modified. + (progname): Modified. + (delta): Modified. + (hunt): Modified. + (yeartot): Modified. + (is_digit): Remove. + (sumsize): Modified function. + (xmalloc): Modified function. + (gmtzinit): Modified function. + (saveabbr): Modified function. + (main): Modified function. + (hunt): Modified function. + (delta_nonneg): Modified function. + (gmtoff): Modified function. + (show): Modified function. + (format_local_time): Modified function. + (format_utc_offset): Modified function. + (format_quoted_string): Modified function. + (istrftime): Modified function. + (showtrans): Modified function. + (tformat): Modified function. + (dumptime): Modified function. + (showextrema): New function. + (is_digit): New function. + (size_overflow): New function. + (xstrsize): New function. + (showextrema): New function. + * timezone/zic.c: Modified. + [! AT_SYMLINK_FOLLOW](linkat): Modified. + [! HAVE_LINK](link): Remove. + [! HAVE_SYMLINK](readlink): Remove. + [! HAVE_SYMLINK](symlink): Remove. + [! HAVE_SYMLINK](S_ISLNK): Remove. + [! HAVE_SYMLINK](readlink): New function. + [! HAVE_SYMLINK](symlink): New function. + [! PTRDIFF_MAX](PTRDIFF_MAX): Remove. + [! S_ISDIR && S_IFDIR && S_IFMT](S_ISDIR): Remove. + [! WEXITSTATUS](WEXITSTATUS): Remove. + [! WIFEXITED](WIFEXITED): Remove. + [! WORK_AROUND_QTBUG_53071](<anonymous>): Remove. + [! ZIC_BLOAT_DEFAULT](ZIC_BLOAT_DEFAULT): Modified. + [! ZIC_MAX_ABBR_LEN_WO_WARN](ZIC_MAX_ABBR_LEN_WO_WARN): Modified. + [!HAVE_POSIX_DECLS](link): Modified. + [HAVE_SYS_WAIT_H](sys/wait.h): Remove. + [__STDC_VERSION__ < 201112](_Alignof): Remove. + (stddef.h): Remove include. + (ZIC_VERSION_PRE_2013): Remove. + (ZIC_VERSION): Remove. + (ZIC_MIN): Remove. + (ZIC_MAX): Remove. + (PRIdZIC): Remove. + (rule): Modified. + (DC_DOM): Remove. + (DC_DOWGEQ): Remove. + (DC_DOWLEQ): Remove. + (zone): Modified. + (getfields): Modified. + (infile): Modified. + (itsdir): Remove. + (itssymlink): Modified. + (rulesub): Modified. + (yearistype): Remove. + (<anonymous>): Modified. + (filename): Remove. + (rfilename): Remove. + (LC_RULE): Remove. + (LC_ZONE): Remove. + (LC_LINK): Remove. + (LC_LEAP): Remove. + (LC_EXPIRES): Remove. + (ZF_NAME): Remove. + (ZF_STDOFF): Remove. + (ZF_RULE): Remove. + (ZF_FORMAT): Remove. + (ZF_TILYEAR): Remove. + (ZF_TILMONTH): Remove. + (ZF_TILDAY): Remove. + (ZF_TILTIME): Remove. + (ZONE_MINFIELDS): Remove. + (ZONE_MAXFIELDS): Remove. + (ZFC_STDOFF): Remove. + (ZFC_RULE): Remove. + (ZFC_FORMAT): Remove. + (ZFC_TILYEAR): Remove. + (ZFC_TILMONTH): Remove. + (ZFC_TILDAY): Remove. + (ZFC_TILTIME): Remove. + (ZONEC_MINFIELDS): Remove. + (ZONEC_MAXFIELDS): Remove. + (RF_NAME): Remove. + (RF_LOYEAR): Remove. + (RF_HIYEAR): Remove. + (RF_COMMAND): Remove. + (RF_MONTH): Remove. + (RF_DAY): Remove. + (RF_TOD): Remove. + (RF_SAVE): Remove. + (RF_ABBRVAR): Remove. + (RULE_FIELDS): Remove. + (LF_FROM): Remove. + (LF_TO): Remove. + (LINK_FIELDS): Remove. + (LP_YEAR): Remove. + (LP_MONTH): Remove. + (LP_DAY): Remove. + (LP_TIME): Remove. + (LP_CORR): Remove. + (LP_ROLL): Remove. + (LEAP_FIELDS): Remove. + (EXPIRES_FIELDS): Remove. + (YR_MINIMUM): Remove. + (YR_MAXIMUM): Remove. + (YR_ONLY): Remove. + (link): Modified. + (memory_exhausted): Modified function. + (size_product): Modified function. + (align_to): Modified function. + (memcheck): Modified function. + (emalloc): Modified function. + (ecpyalloc): Remove function. + (growalloc): Modified function. + (eats): Modified function. + (eat): Modified function. + (verror): Modified function. + (error): Modified function. + (warning): Modified function. + (close_file): Modified function. + (usage): Modified function. + (change_directory): Modified function. + (TIME_T_BITS_IN_FILE): Remove. + (comment_leapexpires): Remove. + (timerange_option): Modified function. + (leapsec): Modified. + (yitcommand): Remove. + (main): Modified function. + (componentcheck): Modified function. + (relname): Modified function. + (hardlinkerr): Remove function. + (dolink): Modified function. + (itsdir): Remove function. + (itssymlink): Modified function. + (rcomp): Modified function. + (associate): Modified function. + (infile): Modified function. + (gethms): Modified function. + (getsave): Modified function. + (inrule): Modified function. + (inzone): Modified function. + (inzsub): Modified function. + (getleapdatetime): Modified function. + (inleap): Modified function. + (inexpires): Modified function. + (inlink): Modified function. + (rulesub): Modified function. + (convert): Modified function. + (convert64): Modified function. + (puttzcode): Modified function. + (atcomp): Modified function. + (timerange): Modified. + (limitrange): Modified function. + (writezone): Modified function. + (doabbr): Modified function. + (rule_cmp): Modified function. + (stringzone): Modified function. + (outzone): Modified function. + (leapadd): Modified function. + (adjleap): Modified function. + (shellquote): Remove function. + (yearistype): Remove function. + (ciequal): Modified function. + (itsabbr): Modified function. + (ciprefix): Modified function. + (getfields): Modified function. + (time_overflow): Modified function. + (oadd): Modified function. + (tadd): Modified function. + (rpytime): Modified function. + (mkdirs): Modified function. + [! HAVE_GETRANDOM][2 < __GLIBC__ + (25 <= __GLIBC_MINOR__)](sys/random.h): New. + [! HAVE_GETRANDOM][__has_include][__has_include(<sys/random.h>)](sys/random.h): New. + [! HAVE_GETRANDOM](HAVE_GETRANDOM): New. + [! _POSIX2_LINE_MAX](_POSIX2_LINE_MAX): New. + [HAVE_GETRANDOM](sys/random.h): New. + [__STDC_VERSION__ < 201112 || __SUNPRO_C](alignof): New. + [__STDC_VERSION__ < 202311](stdalign.h): New. + (EPOCH_LOCAL): New. + (EPOCH_OFFSET): New. + (RESERVE_STD_EXT_IDS): New. + (time_tz): New. + (tzdir.h): Include file. + (signal.h): Include file. + (ZIC_MIN): New. + (<anonymous>): New. + (<anonymous>): New. + (<anonymous>): New. + (filenum): New. + (rfilenum): New. + (main_argv): New. + (unspecifiedtype): New. + (<anonymous>): New. + (<anonymous>): New. + (<anonymous>): New. + (<anonymous>): New. + (<anonymous>): New. + (<anonymous>): New. + (<anonymous>): New. + (<anonymous>): New. + (size_overflow): New function. + (size_sum): New function. + (estrdup): New function. + (grow_nitems_alloc): New function. + (<anonymous>): New. + (filename): New function. + (qsort_linkcmp): New function. + (bsearch_linkcmp): New function. + (make_links): New function. + (got_signal): New. + (signal_handler): New function. + (catch_signals): New function. + (check_for_signal): New function. + (<anonymous>): New. + (redundant_time): New. + (redundant_time_option): New function. + (get_rand_u64): New function. + (random_dirent): New function. + (open_outfile): New function. + (rename_dest): New function. + (same_parent_dirs): New function. + (inputline): New function. + (disable_percent_s): New. + +2024-04-06 Paul Eggert <eggert@cs.ucla.edu> + Zack Weinberg <zack@owlfolio.org> + + COMMIT: 57581acd9559217e859fdac693145ce6399f4d70 + Fix bsearch, qsort doc to match POSIX better + + * manual/search.texi: Modified. + +2024-04-06 H.J. Lu <hjl.tools@gmail.com> + + COMMIT: 9e1f4aef865ddeffeb4b5f6578fefab606783120 + x86-64: Exclude FMA4 IFUNC functions for -mapxf + + * config.h.in: Modified. + * sysdeps/x86_64/configure: Modified. + * sysdeps/x86_64/configure.ac: Modified. + * sysdeps/x86_64/fpu/multiarch/Makefile: Modified. + * sysdeps/x86_64/fpu/multiarch/ifunc-avx-fma4.h: Modified. + (IFUNC_SELECTOR): Modified function. + * sysdeps/x86_64/fpu/multiarch/ifunc-fma4.h: Modified. + (IFUNC_SELECTOR): Modified function. + +2024-04-05 Adhemerval Zanella <adhemerval.zanella@linaro.org> + + COMMIT: c27f8763cffbb7db9b3f1f5e09ef24d26cbb63f4 + Reinstate generic features-time64.h + + * sysdeps/generic/features-time64.h: New file. + +2024-04-04 Adhemerval Zanella <adhemerval.zanella@linaro.org> + + COMMIT: 460d9e2dfe64d73508456c46405923afaeb4376e + Cleanup __tls_get_addr on alpha/microblaze localplt.data + + * sysdeps/unix/sysv/linux/alpha/localplt.data: Modified. + * sysdeps/unix/sysv/linux/microblaze/localplt.data: Modified. + +2024-04-04 Adhemerval Zanella <adhemerval.zanella@linaro.org> + + COMMIT: 95700e799809fff4307da05fa277820d21dec925 + arm: Remove ld.so __tls_get_addr plt usage + + * sysdeps/arm/dl-tlsdesc.S: Modified. + * sysdeps/unix/sysv/linux/arm/localplt.data: Modified. + +2024-04-04 Adhemerval Zanella <adhemerval.zanella@linaro.org> + + COMMIT: 50c2be2390be849176297d231ecce71c6642f407 + aarch64: Remove ld.so __tls_get_addr plt usage + + * sysdeps/aarch64/dl-tlsdesc.S: Modified. + * sysdeps/unix/sysv/linux/aarch64/localplt.data: Modified. + +2024-04-04 Adhemerval Zanella <adhemerval.zanella@linaro.org> + + COMMIT: 44ccc2465c6af5bd811d8258bf744aaafd5392fc + math: x86 trunc traps when FE_INEXACT is enabled (BZ 31603) + + * math/Makefile: Modified. + * math/test-trunc-except-2.c: New file. + * sysdeps/i386/fpu/s_trunc.S: Move to... + * sysdeps/i386/fpu/s_trunc.c: ... here. + (machine/asm.h): Remove include. + (FUNC): New. + (TYPE): New. + (FE_OPTION): New. + (s_nearestint_387_template.c): Include file. + * sysdeps/i386/fpu/s_truncf.S: Move to... + * sysdeps/i386/fpu/s_truncf.c: ... here. + (machine/asm.h): Remove include. + (FUNC): New. + (TYPE): New. + (FE_OPTION): New. + (s_nearestint_387_template.c): Include file. + * sysdeps/i386/fpu/s_truncl.S: Delete file. + * sysdeps/x86_64/fpu/s_truncl.S: Move to... + * sysdeps/x86/fpu/s_truncl.c: ... here. + (machine/asm.h): Remove include. + (FUNC): New. + (TYPE): New. + (FE_OPTION): New. + (s_nearestint_387_template.c): Include file. + +2024-04-04 Adhemerval Zanella <adhemerval.zanella@linaro.org> + + COMMIT: 932544efa469568525455bcb53d4eabeba0eb295 + math: x86 floor traps when FE_INEXACT is enabled (BZ 31601) + + * math/Makefile: Modified. + * math/test-floor-except-2.c: New file. + * sysdeps/i386/fpu/s_floor.S: Delete file. + * sysdeps/i386/fpu/s_floor.c: New file. + * sysdeps/i386/fpu/s_floorf.S: Delete file. + * sysdeps/i386/fpu/s_floorf.c: New file. + * sysdeps/i386/fpu/s_floorl.S: Delete file. + * sysdeps/x86/fpu/s_floorl.c: New file. + * sysdeps/x86_64/fpu/s_floorl.S: Delete file. + +2024-04-04 Adhemerval Zanella <adhemerval.zanella@linaro.org> + + COMMIT: 637bfc392f406c6c77f59494ed34949a6161bceb + math: x86 ceill traps when FE_INEXACT is enabled (BZ 31600) + + * math/Makefile: Modified. + * math/test-ceil-except-2.c: New file. + * sysdeps/i386/fpu/s_ceil.S: Delete file. + * sysdeps/i386/fpu/s_ceil.c: New file. + * sysdeps/i386/fpu/s_ceilf.S: Delete file. + * sysdeps/i386/fpu/s_ceilf.c: New file. + * sysdeps/i386/fpu/s_ceill.S: Delete file. + * sysdeps/x86/fpu/s_ceill.c: New file. + * sysdeps/x86/fpu/s_nearestint_387_template.c: New file. + * sysdeps/x86_64/fpu/s_ceill.S: Delete file. + +2024-04-04 Joe Ramsay <Joe.Ramsay@arm.com> + + COMMIT: 87cb1dfcd6d1acbcd695279d7abd9163a0cc64fc + aarch64/fpu: Add vector variants of erfc + + * sysdeps/aarch64/fpu/Makefile: Modified. + * sysdeps/aarch64/fpu/Versions: Modified. + * sysdeps/aarch64/fpu/advsimd_f32_protos.h: Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): New function. + * sysdeps/aarch64/fpu/bits/math-vector.h: Modified. + [__ADVSIMD_VEC_MATH_SUPPORTED](_ZGVnN4v_erfcf): New function. + [__ADVSIMD_VEC_MATH_SUPPORTED](_ZGVnN2v_erfc): New function. + [__SVE_VEC_MATH_SUPPORTED](_ZGVsMxv_erfcf): New function. + [__SVE_VEC_MATH_SUPPORTED](_ZGVsMxv_erfc): New function. + [__aarch64__ && __FAST_MATH__ && __GNUC_PREREQ (6, 0)](__DECL_SIMD_erfc): New. + [__aarch64__ && __FAST_MATH__ && __GNUC_PREREQ (6, 0)](__DECL_SIMD_erfcf): New. + * sysdeps/aarch64/fpu/erfc_advsimd.c: New file. + * sysdeps/aarch64/fpu/erfc_data.c: New file. + * sysdeps/aarch64/fpu/erfc_sve.c: New file. + * sysdeps/aarch64/fpu/erfcf_advsimd.c: New file. + * sysdeps/aarch64/fpu/erfcf_data.c: New file. + * sysdeps/aarch64/fpu/erfcf_sve.c: New file. + * sysdeps/aarch64/fpu/test-double-advsimd-wrappers.c: Modified. + * sysdeps/aarch64/fpu/test-double-sve-wrappers.c: Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): New. + * sysdeps/aarch64/fpu/test-float-advsimd-wrappers.c: Modified. + * sysdeps/aarch64/fpu/test-float-sve-wrappers.c: Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): New. + * sysdeps/aarch64/fpu/vecmath_config.h: Modified. + (erfc_data): New. + (erfcf_data): New. + * sysdeps/aarch64/libm-test-ulps: Modified. + * sysdeps/unix/sysv/linux/aarch64/libmvec.abilist: Modified. + +2024-04-04 Joe Ramsay <Joe.Ramsay@arm.com> + + COMMIT: 3d3a4fb8e4fe854a0bbb3df9c26ba482c10a7e22 + aarch64/fpu: Add vector variants of tanh + + * math/auto-libm-test-in: Modified. + * math/auto-libm-test-out-tanh: Modified. + * sysdeps/aarch64/fpu/Makefile: Modified. + * sysdeps/aarch64/fpu/Versions: Modified. + * sysdeps/aarch64/fpu/advsimd_f32_protos.h: Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): New function. + * sysdeps/aarch64/fpu/bits/math-vector.h: Modified. + [__ADVSIMD_VEC_MATH_SUPPORTED](_ZGVnN4v_tanhf): New function. + [__ADVSIMD_VEC_MATH_SUPPORTED](_ZGVnN2v_tanh): New function. + [__SVE_VEC_MATH_SUPPORTED](_ZGVsMxv_tanhf): New function. + [__SVE_VEC_MATH_SUPPORTED](_ZGVsMxv_tanh): New function. + [__aarch64__ && __FAST_MATH__ && __GNUC_PREREQ (6, 0)](__DECL_SIMD_tanh): New. + [__aarch64__ && __FAST_MATH__ && __GNUC_PREREQ (6, 0)](__DECL_SIMD_tanhf): New. + * sysdeps/aarch64/fpu/tanh_advsimd.c: New file. + * sysdeps/aarch64/fpu/tanh_sve.c: New file. + * sysdeps/aarch64/fpu/tanhf_advsimd.c: New file. + * sysdeps/aarch64/fpu/tanhf_sve.c: New file. + * sysdeps/aarch64/fpu/test-double-advsimd-wrappers.c: Modified. + * sysdeps/aarch64/fpu/test-double-sve-wrappers.c: Modified. + (SVE_VECTOR_WRAPPER): New. + * sysdeps/aarch64/fpu/test-float-advsimd-wrappers.c: Modified. + * sysdeps/aarch64/fpu/test-float-sve-wrappers.c: Modified. + (SVE_VECTOR_WRAPPER): New. + * sysdeps/aarch64/libm-test-ulps: Modified. + * sysdeps/unix/sysv/linux/aarch64/libmvec.abilist: Modified. + +2024-04-04 Joe Ramsay <Joe.Ramsay@arm.com> + + COMMIT: eedbbca0bf3adf3c45aff6c4e128bae3a5562675 + aarch64/fpu: Add vector variants of sinh + + * sysdeps/aarch64/fpu/Makefile: Modified. + * sysdeps/aarch64/fpu/Versions: Modified. + * sysdeps/aarch64/fpu/advsimd_f32_protos.h: Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): New function. + * sysdeps/aarch64/fpu/bits/math-vector.h: Modified. + [__ADVSIMD_VEC_MATH_SUPPORTED](_ZGVnN4v_sinhf): New function. + [__ADVSIMD_VEC_MATH_SUPPORTED](_ZGVnN2v_sinh): New function. + [__SVE_VEC_MATH_SUPPORTED](_ZGVsMxv_sinhf): New function. + [__SVE_VEC_MATH_SUPPORTED](_ZGVsMxv_sinh): New function. + [__aarch64__ && __FAST_MATH__ && __GNUC_PREREQ (6, 0)](__DECL_SIMD_sinh): New. + [__aarch64__ && __FAST_MATH__ && __GNUC_PREREQ (6, 0)](__DECL_SIMD_sinhf): New. + * sysdeps/aarch64/fpu/sinh_advsimd.c: New file. + * sysdeps/aarch64/fpu/sinh_sve.c: New file. + * sysdeps/aarch64/fpu/sinhf_advsimd.c: New file. + * sysdeps/aarch64/fpu/sinhf_sve.c: New file. + * sysdeps/aarch64/fpu/sv_expm1f_inline.h: New file. + * sysdeps/aarch64/fpu/test-double-advsimd-wrappers.c: Modified. + * sysdeps/aarch64/fpu/test-double-sve-wrappers.c: Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): New. + * sysdeps/aarch64/fpu/test-float-advsimd-wrappers.c: Modified. + * sysdeps/aarch64/fpu/test-float-sve-wrappers.c: Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): New. + * sysdeps/aarch64/fpu/v_expm1f_inline.h: New file. + * sysdeps/aarch64/libm-test-ulps: Modified. + * sysdeps/unix/sysv/linux/aarch64/libmvec.abilist: Modified. + +2024-04-04 Joe Ramsay <Joe.Ramsay@arm.com> + + COMMIT: 8b679205286e7874f0b04187c0bc787632168aa2 + aarch64/fpu: Add vector variants of atanh + + * sysdeps/aarch64/fpu/Makefile: Modified. + * sysdeps/aarch64/fpu/Versions: Modified. + * sysdeps/aarch64/fpu/advsimd_f32_protos.h: Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): New function. + * sysdeps/aarch64/fpu/atanh_advsimd.c: New file. + * sysdeps/aarch64/fpu/atanh_sve.c: New file. + * sysdeps/aarch64/fpu/atanhf_advsimd.c: New file. + * sysdeps/aarch64/fpu/atanhf_sve.c: New file. + * sysdeps/aarch64/fpu/bits/math-vector.h: Modified. + [__ADVSIMD_VEC_MATH_SUPPORTED](_ZGVnN4v_atanhf): New function. + [__ADVSIMD_VEC_MATH_SUPPORTED](_ZGVnN2v_atanh): New function. + [__SVE_VEC_MATH_SUPPORTED](_ZGVsMxv_atanhf): New function. + [__SVE_VEC_MATH_SUPPORTED](_ZGVsMxv_atanh): New function. + [__aarch64__ && __FAST_MATH__ && __GNUC_PREREQ (6, 0)](__DECL_SIMD_atanh): New. + [__aarch64__ && __FAST_MATH__ && __GNUC_PREREQ (6, 0)](__DECL_SIMD_atanhf): New. + * sysdeps/aarch64/fpu/test-double-advsimd-wrappers.c: Modified. + * sysdeps/aarch64/fpu/test-double-sve-wrappers.c: Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): New. + * sysdeps/aarch64/fpu/test-float-advsimd-wrappers.c: Modified. + * sysdeps/aarch64/fpu/test-float-sve-wrappers.c: Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): New. + * sysdeps/aarch64/libm-test-ulps: Modified. + * sysdeps/unix/sysv/linux/aarch64/libmvec.abilist: Modified. + +2024-04-04 Joe Ramsay <Joe.Ramsay@arm.com> + + COMMIT: 81406ea3c5b5ad19e307302c13dd642785b47948 + aarch64/fpu: Add vector variants of asinh + + * sysdeps/aarch64/fpu/Makefile: Modified. + * sysdeps/aarch64/fpu/Versions: Modified. + * sysdeps/aarch64/fpu/advsimd_f32_protos.h: Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): New function. + * sysdeps/aarch64/fpu/asinh_advsimd.c: New file. + * sysdeps/aarch64/fpu/asinh_sve.c: New file. + * sysdeps/aarch64/fpu/asinhf_advsimd.c: New file. + * sysdeps/aarch64/fpu/asinhf_sve.c: New file. + * sysdeps/aarch64/fpu/bits/math-vector.h: Modified. + [__ADVSIMD_VEC_MATH_SUPPORTED](_ZGVnN4v_asinhf): New function. + [__ADVSIMD_VEC_MATH_SUPPORTED](_ZGVnN2v_asinh): New function. + [__SVE_VEC_MATH_SUPPORTED](_ZGVsMxv_asinhf): New function. + [__SVE_VEC_MATH_SUPPORTED](_ZGVsMxv_asinh): New function. + [__aarch64__ && __FAST_MATH__ && __GNUC_PREREQ (6, 0)](__DECL_SIMD_asinh): New. + [__aarch64__ && __FAST_MATH__ && __GNUC_PREREQ (6, 0)](__DECL_SIMD_asinhf): New. + * sysdeps/aarch64/fpu/test-double-advsimd-wrappers.c: Modified. + * sysdeps/aarch64/fpu/test-double-sve-wrappers.c: Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): New. + * sysdeps/aarch64/fpu/test-float-advsimd-wrappers.c: Modified. + * sysdeps/aarch64/fpu/test-float-sve-wrappers.c: Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): New. + * sysdeps/aarch64/libm-test-ulps: Modified. + * sysdeps/unix/sysv/linux/aarch64/libmvec.abilist: Modified. + +2024-04-04 Joe Ramsay <Joe.Ramsay@arm.com> + + COMMIT: b09fee1d21650428a6a3335408a46ebe1165d30d + aarch64/fpu: Add vector variants of acosh + + * sysdeps/aarch64/fpu/Makefile: Modified. + * sysdeps/aarch64/fpu/Versions: Modified. + * sysdeps/aarch64/fpu/acosh_advsimd.c: New file. + * sysdeps/aarch64/fpu/acosh_sve.c: New file. + * sysdeps/aarch64/fpu/acoshf_advsimd.c: New file. + * sysdeps/aarch64/fpu/acoshf_sve.c: New file. + * sysdeps/aarch64/fpu/advsimd_f32_protos.h: Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): New function. + * sysdeps/aarch64/fpu/bits/math-vector.h: Modified. + [__ADVSIMD_VEC_MATH_SUPPORTED](_ZGVnN4v_acoshf): New function. + [__ADVSIMD_VEC_MATH_SUPPORTED](_ZGVnN2v_acosh): New function. + [__SVE_VEC_MATH_SUPPORTED](_ZGVsMxv_acoshf): New function. + [__SVE_VEC_MATH_SUPPORTED](_ZGVsMxv_acosh): New function. + [__aarch64__ && __FAST_MATH__ && __GNUC_PREREQ (6, 0)](__DECL_SIMD_acosh): New. + [__aarch64__ && __FAST_MATH__ && __GNUC_PREREQ (6, 0)](__DECL_SIMD_acoshf): New. + * sysdeps/aarch64/fpu/sv_log1p_inline.h: New file. + * sysdeps/aarch64/fpu/sv_log1pf_inline.h: New file. + * sysdeps/aarch64/fpu/test-double-advsimd-wrappers.c: Modified. + * sysdeps/aarch64/fpu/test-double-sve-wrappers.c: Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): New. + * sysdeps/aarch64/fpu/test-float-advsimd-wrappers.c: Modified. + * sysdeps/aarch64/fpu/test-float-sve-wrappers.c: Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): New. + * sysdeps/aarch64/fpu/v_log1p_inline.h: New file. + * sysdeps/aarch64/fpu/v_log1pf_inline.h: New file. + * sysdeps/aarch64/fpu/v_math.h: Modified. + (v_zerofy_f32): New function. + (v_zerofy_f64): New function. + * sysdeps/aarch64/libm-test-ulps: Modified. + * sysdeps/unix/sysv/linux/aarch64/libmvec.abilist: Modified. + +2024-04-04 Joe Ramsay <Joe.Ramsay@arm.com> + + COMMIT: bdb5705b7bab618ed4445f4b17d4b1e4fbbf94a7 + aarch64/fpu: Add vector variants of cosh + + * sysdeps/aarch64/fpu/Makefile: Modified. + * sysdeps/aarch64/fpu/Versions: Modified. + * sysdeps/aarch64/fpu/advsimd_f32_protos.h: Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): New function. + * sysdeps/aarch64/fpu/bits/math-vector.h: Modified. + [__ADVSIMD_VEC_MATH_SUPPORTED](_ZGVnN4v_coshf): New function. + [__ADVSIMD_VEC_MATH_SUPPORTED](_ZGVnN2v_cosh): New function. + [__SVE_VEC_MATH_SUPPORTED](_ZGVsMxv_coshf): New function. + [__SVE_VEC_MATH_SUPPORTED](_ZGVsMxv_cosh): New function. + [__aarch64__ && __FAST_MATH__ && __GNUC_PREREQ (6, 0)](__DECL_SIMD_cosh): New. + [__aarch64__ && __FAST_MATH__ && __GNUC_PREREQ (6, 0)](__DECL_SIMD_coshf): New. + * sysdeps/aarch64/fpu/cosh_advsimd.c: New file. + * sysdeps/aarch64/fpu/cosh_sve.c: New file. + * sysdeps/aarch64/fpu/coshf_advsimd.c: New file. + * sysdeps/aarch64/fpu/coshf_sve.c: New file. + * sysdeps/aarch64/fpu/sv_expf_inline.h: New file. + * sysdeps/aarch64/fpu/test-double-advsimd-wrappers.c: Modified. + * sysdeps/aarch64/fpu/test-double-sve-wrappers.c: Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): New. + * sysdeps/aarch64/fpu/test-float-advsimd-wrappers.c: Modified. + * sysdeps/aarch64/fpu/test-float-sve-wrappers.c: Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): New. + * sysdeps/aarch64/fpu/v_exp_tail_data.c: New file. + * sysdeps/aarch64/fpu/v_expf_inline.h: New file. + * sysdeps/aarch64/fpu/vecmath_config.h: Modified. + (v_log2_data): Modified. + (V_EXP_TAIL_TABLE_BITS): New. + * sysdeps/aarch64/libm-test-ulps: Modified. + * sysdeps/unix/sysv/linux/aarch64/libmvec.abilist: Modified. + +2024-04-04 Joe Ramsay <Joe.Ramsay@arm.com> + + COMMIT: cb5d84f1f8527116a724e729b98412567eed6404 + aarch64/fpu: Add vector variants of erf + + * sysdeps/aarch64/fpu/Makefile: Modified. + * sysdeps/aarch64/fpu/Versions: Modified. + * sysdeps/aarch64/fpu/advsimd_f32_protos.h: Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): Modified. + (libmvec_hidden_proto): New function. + * sysdeps/aarch64/fpu/bits/math-vector.h: Modified. + [__ADVSIMD_VEC_MATH_SUPPORTED](_ZGVnN4v_erff): New function. + [__ADVSIMD_VEC_MATH_SUPPORTED](_ZGVnN2v_erf): New function. + [__SVE_VEC_MATH_SUPPORTED](_ZGVsMxv_erff): New function. + [__SVE_VEC_MATH_SUPPORTED](_ZGVsMxv_erf): New function. + [__aarch64__ && __FAST_MATH__ && __GNUC_PREREQ (6, 0)](__DECL_SIMD_erf): New. + [__aarch64__ && __FAST_MATH__ && __GNUC_PREREQ (6, 0)](__DECL_SIMD_erff): New. + * sysdeps/aarch64/fpu/erf_advsimd.c: New file. + * sysdeps/aarch64/fpu/erf_data.c: New file. + * sysdeps/aarch64/fpu/erf_sve.c: New file. + * sysdeps/aarch64/fpu/erff_advsimd.c: New file. + * sysdeps/aarch64/fpu/erff_data.c: New file. + * sysdeps/aarch64/fpu/erff_sve.c: New file. + * sysdeps/aarch64/fpu/sv_erf_data.c: New file. + * sysdeps/aarch64/fpu/sv_erff_data.c: New file. + * sysdeps/aarch64/fpu/test-double-advsimd-wrappers.c: Modified. + * sysdeps/aarch64/fpu/test-double-sve-wrappers.c: Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): New. + * sysdeps/aarch64/fpu/test-float-advsimd-wrappers.c: Modified. + * sysdeps/aarch64/fpu/test-float-sve-wrappers.c: Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): Modified. + (SVE_VECTOR_WRAPPER): New. + * sysdeps/aarch64/fpu/vecmath_config.h: Modified. + (erff_data): New. + (sv_erff_data): New. + (erf_data): New. + (sv_erf_data): New. + * sysdeps/aarch64/libm-test-ulps: Modified. + * sysdeps/unix/sysv/linux/aarch64/libmvec.abilist: Modified. + +2024-04-04 Stafford Horne <shorne@gmail.com> + + COMMIT: 3db9d208dd5f30b12900989c6d2214782b8e2011 + misc: Add support for Linux uio.h RWF_NOAPPEND flag + + * manual/llio.texi: Modified. + * misc/tst-preadvwritev2-common.c: Modified. + (RWF_SUPPORTED): Modified. + [! RWF_NOAPPEND](RWF_NOAPPEND): New. + * sysdeps/unix/sysv/linux/bits/uio-ext.h: Modified. + (RWF_NOAPPEND): New. + +2024-04-03 Alejandro Colomar <alx@kernel.org> + + COMMIT: 95c70fd0d467450e75354316453824693f07c3cc + manual: significand() uses FLT_RADIX, not 2 + + * manual/arith.texi: Modified. + +2024-04-03 Alejandro Colomar <alx@kernel.org> + + COMMIT: e01b3b86e821e1132da76ce79ebb301033141e6d + manual: Clarify return value of cbrt(3) + + * manual/math.texi: Modified. + +2024-04-03 Alejandro Colomar <alx@kernel.org> + + COMMIT: 077613291b271b64fa60b8a22c3b39c9db697b65 + manual: floor(log2(fabs(x))) has rounding errors + + * manual/math.texi: Modified. + +2024-04-03 Alejandro Colomar <alx@kernel.org> + + COMMIT: b7d15bd1f00ae3f941150c9e49e65fbc6595adda + manual: logb(x) is floor(log2(fabs(x))) + + * manual/math.texi: Modified. + +2024-04-02 Adhemerval Zanella <adhemerval.zanella@linaro.org> + + COMMIT: 4dcd674b66bb0529019908ea9a08748e005edeb7 + powerpc: Add missing arch flags on rounding ifunc variants + + * sysdeps/powerpc/powerpc32/power4/fpu/multiarch/Makefile: Modified. + +2024-04-02 Adhemerval Zanella <adhemerval.zanella@linaro.org> + + COMMIT: c0d59e3e0da12b294b85acf055e6e75b18d8dd2a + math: Reformat Makefile. + + * math/Makefile: Modified. + +2024-04-02 Adhemerval Zanella <adhemerval.zanella@linaro.org> + + COMMIT: a4ed0471d71739928a0d0fa3258b3ff3b158e9b9 + Always define __USE_TIME_BITS64 when 64 bit time_t is used + + * io/bits/poll2.h: Modified. + [__USE_GNU][! __USE_TIME_BITS64](__REDIRECT): Remove. + [__USE_GNU][! __USE_TIME_BITS64](__ppoll_chk): Remove. + [__USE_GNU][! __USE_TIME_BITS64](__REDIRECT): Remove. + [__USE_GNU][! __USE_TIME_BITS64](__fortified_attr_access): Remove. + [__USE_GNU][__USE_TIME_BITS64](__REDIRECT): Remove. + [__USE_GNU][__USE_TIME_BITS64](__ppoll64_chk): Remove. + [__USE_GNU][__USE_TIME_BITS64](__REDIRECT): Remove. + [__USE_GNU][__USE_TIME_BITS64](__fortified_attr_access): Remove. + [__USE_GNU][! __USE_TIME64_REDIRECTS](__REDIRECT): New. + [__USE_GNU][! __USE_TIME64_REDIRECTS](__ppoll_chk): New. + [__USE_GNU][! __USE_TIME64_REDIRECTS](__REDIRECT): New. + [__USE_GNU][! __USE_TIME64_REDIRECTS](__fortified_attr_access): New. + [__USE_GNU][__USE_TIME64_REDIRECTS](__REDIRECT): New. + [__USE_GNU][__USE_TIME64_REDIRECTS](__ppoll64_chk): New. + [__USE_GNU][__USE_TIME64_REDIRECTS](__REDIRECT): New. + [__USE_GNU][__USE_TIME64_REDIRECTS](__fortified_attr_access): New. + * io/fcntl.h: Modified. + [! __USE_TIME_BITS64][! __USE_FILE_OFFSET64](fcntl): Remove. + [! __USE_TIME_BITS64][__USE_FILE_OFFSET64][! __REDIRECT](fcntl): Remove. + [! __USE_TIME_BITS64][__USE_FILE_OFFSET64][__REDIRECT](__REDIRECT): Remove. + [! __USE_TIME_BITS64][__USE_LARGEFILE64](fcntl64): Remove. + [__USE_TIME_BITS64][! __REDIRECT](__fcntl_time64): Remove. + [__USE_TIME_BITS64][! __REDIRECT](fcntl64): Remove. + [__USE_TIME_BITS64][! __REDIRECT](fcntl): Remove. + [__USE_TIME_BITS64][__REDIRECT](__REDIRECT_NTH): Remove. + [__USE_TIME_BITS64][__REDIRECT](__REDIRECT_NTH): Remove. + [! __USE_TIME64_REDIRECTS][! __USE_FILE_OFFSET64](fcntl): New. + [! __USE_TIME64_REDIRECTS][__USE_FILE_OFFSET64][! __REDIRECT](fcntl): New. + [! __USE_TIME64_REDIRECTS][__USE_FILE_OFFSET64][__REDIRECT](__REDIRECT): New. + [! __USE_TIME64_REDIRECTS][__USE_LARGEFILE64](fcntl64): New. + [__USE_TIME64_REDIRECTS][! __REDIRECT](__fcntl_time64): New. + [__USE_TIME64_REDIRECTS][! __REDIRECT](fcntl64): New. + [__USE_TIME64_REDIRECTS][! __REDIRECT](fcntl): New. + [__USE_TIME64_REDIRECTS][__REDIRECT](__REDIRECT_NTH): New. + [__USE_TIME64_REDIRECTS][__REDIRECT](__REDIRECT_NTH): New. + * io/fts.h: Modified. + [__USE_FILE_OFFSET64][! __REDIRECT][! __USE_TIME_BITS64](fts_children): Remove. + [__USE_FILE_OFFSET64][! __REDIRECT][! __USE_TIME_BITS64](fts_close): Remove. + [__USE_FILE_OFFSET64][! __REDIRECT][! __USE_TIME_BITS64](fts_open): Remove. + [__USE_FILE_OFFSET64][! __REDIRECT][! __USE_TIME_BITS64](fts_read): Remove. + [__USE_FILE_OFFSET64][! __REDIRECT][! __USE_TIME_BITS64](fts_set): Remove. + [__USE_FILE_OFFSET64][! __REDIRECT][! __USE_TIME64_REDIRECTS](fts_children): New. + [__USE_FILE_OFFSET64][! __REDIRECT][! __USE_TIME64_REDIRECTS](fts_close): New. + [__USE_FILE_OFFSET64][! __REDIRECT][! __USE_TIME64_REDIRECTS](fts_open): New. + [__USE_FILE_OFFSET64][! __REDIRECT][! __USE_TIME64_REDIRECTS](fts_read): New. + [__USE_FILE_OFFSET64][! __REDIRECT][! __USE_TIME64_REDIRECTS](fts_set): New. + [__USE_FILE_OFFSET64][__REDIRECT][! __USE_TIME_BITS64](__REDIRECT): Remove. + [__USE_FILE_OFFSET64][__REDIRECT][! __USE_TIME_BITS64](__REDIRECT): Remove. + [__USE_FILE_OFFSET64][__REDIRECT][! __USE_TIME_BITS64](__REDIRECT): Remove. + [__USE_FILE_OFFSET64][__REDIRECT][! __USE_TIME_BITS64](__REDIRECT): Remove. + [__USE_FILE_OFFSET64][__REDIRECT][! __USE_TIME_BITS64](__REDIRECT_NTH): Remove. + [__USE_FILE_OFFSET64][__REDIRECT][__USE_TIME_BITS64](__REDIRECT): Remove. + [__USE_FILE_OFFSET64][__REDIRECT][__USE_TIME_BITS64](__REDIRECT): Remove. + [__USE_FILE_OFFSET64][__REDIRECT][__USE_TIME_BITS64](__REDIRECT): Remove. + [__USE_FILE_OFFSET64][__REDIRECT][__USE_TIME_BITS64](__REDIRECT): Remove. + [__USE_FILE_OFFSET64][__REDIRECT][__USE_TIME_BITS64](__REDIRECT_NTH): Remove. + [__USE_FILE_OFFSET64][__REDIRECT][! __USE_TIME64_REDIRECTS](__REDIRECT): New. + [__USE_FILE_OFFSET64][__REDIRECT][! __USE_TIME64_REDIRECTS](__REDIRECT): New. + [__USE_FILE_OFFSET64][__REDIRECT][! __USE_TIME64_REDIRECTS](__REDIRECT): New. + [__USE_FILE_OFFSET64][__REDIRECT][! __USE_TIME64_REDIRECTS](__REDIRECT): New. + [__USE_FILE_OFFSET64][__REDIRECT][! __USE_TIME64_REDIRECTS](__REDIRECT_NTH): New. + [__USE_FILE_OFFSET64][__REDIRECT][__USE_TIME64_REDIRECTS](__REDIRECT): New. + [__USE_FILE_OFFSET64][__REDIRECT][__USE_TIME64_REDIRECTS](__REDIRECT): New. + [__USE_FILE_OFFSET64][__REDIRECT][__USE_TIME64_REDIRECTS](__REDIRECT): New. + [__USE_FILE_OFFSET64][__REDIRECT][__USE_TIME64_REDIRECTS](__REDIRECT): New. + [__USE_FILE_OFFSET64][__REDIRECT][__USE_TIME64_REDIRECTS](__REDIRECT_NTH): New. + [__USE_LARGEFILE64][! __USE_TIME_BITS64](fts64_children): Remove. + [__USE_LARGEFILE64][! __USE_TIME_BITS64](fts64_close): Remove. + [__USE_LARGEFILE64][! __USE_TIME_BITS64](fts64_open): Remove. + [__USE_LARGEFILE64][! __USE_TIME_BITS64](fts64_read): Remove. + [__USE_LARGEFILE64][! __USE_TIME_BITS64](fts64_set): Remove. + [__USE_LARGEFILE64][__USE_TIME_BITS64][! __REDIRECT](fts_children): Remove. + [__USE_LARGEFILE64][__USE_TIME_BITS64][! __REDIRECT](fts_close): Remove. + [__USE_LARGEFILE64][__USE_TIME_BITS64][! __REDIRECT](fts_open): Remove. + [__USE_LARGEFILE64][__USE_TIME_BITS64][! __REDIRECT](fts_read): Remove. + [__USE_LARGEFILE64][__USE_TIME_BITS64][! __REDIRECT](fts_set): Remove. + [__USE_LARGEFILE64][__USE_TIME_BITS64][__REDIRECT](__REDIRECT): Remove. + [__USE_LARGEFILE64][__USE_TIME_BITS64][__REDIRECT](__REDIRECT): Remove. + [__USE_LARGEFILE64][__USE_TIME_BITS64][__REDIRECT](__REDIRECT): Remove. + [__USE_LARGEFILE64][__USE_TIME_BITS64][__REDIRECT](__REDIRECT): Remove. + [__USE_LARGEFILE64][__USE_TIME_BITS64][__REDIRECT](__REDIRECT_NTH): Remove. + [__USE_LARGEFILE64][! __USE_TIME64_REDIRECTS](fts64_children): New. + [__USE_LARGEFILE64][! __USE_TIME64_REDIRECTS](fts64_close): New. + [__USE_LARGEFILE64][! __USE_TIME64_REDIRECTS](fts64_open): New. + [__USE_LARGEFILE64][! __USE_TIME64_REDIRECTS](fts64_read): New. + [__USE_LARGEFILE64][! __USE_TIME64_REDIRECTS](fts64_set): New. + [__USE_LARGEFILE64][__USE_TIME64_REDIRECTS][! __REDIRECT](fts_children): New. + [__USE_LARGEFILE64][__USE_TIME64_REDIRECTS][! __REDIRECT](fts_close): New. + [__USE_LARGEFILE64][__USE_TIME64_REDIRECTS][! __REDIRECT](fts_open): New. + [__USE_LARGEFILE64][__USE_TIME64_REDIRECTS][! __REDIRECT](fts_read): New. + [__USE_LARGEFILE64][__USE_TIME64_REDIRECTS][! __REDIRECT](fts_set): New. + [__USE_LARGEFILE64][__USE_TIME64_REDIRECTS][__REDIRECT](__REDIRECT): New. + [__USE_LARGEFILE64][__USE_TIME64_REDIRECTS][__REDIRECT](__REDIRECT): New. + [__USE_LARGEFILE64][__USE_TIME64_REDIRECTS][__REDIRECT](__REDIRECT): New. + [__USE_LARGEFILE64][__USE_TIME64_REDIRECTS][__REDIRECT](__REDIRECT): New. + [__USE_LARGEFILE64][__USE_TIME64_REDIRECTS][__REDIRECT](__REDIRECT_NTH): New. + * io/ftw.h: Modified. + [__USE_FILE_OFFSET64][! __REDIRECT][! __USE_TIME_BITS64](ftw): Remove. + [__USE_FILE_OFFSET64][! __REDIRECT][__USE_TIME_BITS64](ftw): Remove. + [__USE_FILE_OFFSET64][! __REDIRECT][! __USE_TIME64_REDIRECTS](ftw): New. + [__USE_FILE_OFFSET64][! __REDIRECT][__USE_TIME64_REDIRECTS](ftw): New. + [__USE_FILE_OFFSET64][__REDIRECT][! __USE_TIME_BITS64](__REDIRECT): Remove. + [__USE_FILE_OFFSET64][__REDIRECT][__USE_TIME_BITS64](__REDIRECT): Remove. + [__USE_FILE_OFFSET64][__REDIRECT][! __USE_TIME64_REDIRECTS](__REDIRECT): New. + [__USE_FILE_OFFSET64][__REDIRECT][__USE_TIME64_REDIRECTS](__REDIRECT): New. + [__USE_LARGEFILE64][! __USE_TIME_BITS64](ftw64): Remove. + [__USE_LARGEFILE64][__USE_TIME_BITS64][! __REDIRECT](nftw64): Remove. + [__USE_LARGEFILE64][__USE_TIME_BITS64][__REDIRECT](__REDIRECT): Remove. + [__USE_LARGEFILE64][! __USE_TIME64_REDIRECTS](ftw64): New. + [__USE_LARGEFILE64][__USE_TIME64_REDIRECTS][! __REDIRECT](nftw64): New. + [__USE_LARGEFILE64][__USE_TIME64_REDIRECTS][__REDIRECT](__REDIRECT): New. + [__USE_XOPEN_EXTENDED][__USE_FILE_OFFSET64][! __REDIRECT][! __USE_TIME_BITS64](nftw): Remove. + [__USE_XOPEN_EXTENDED][__USE_FILE_OFFSET64][! __REDIRECT][__USE_TIME_BITS64](nftw): Remove. + [__USE_XOPEN_EXTENDED][__USE_FILE_OFFSET64][! __REDIRECT][! __USE_TIME64_REDIRECTS](nftw): New. + [__USE_XOPEN_EXTENDED][__USE_FILE_OFFSET64][! __REDIRECT][__USE_TIME64_REDIRECTS](nftw): New. + [__USE_XOPEN_EXTENDED][__USE_FILE_OFFSET64][__REDIRECT][! __USE_TIME_BITS64](__REDIRECT): Remove. + [__USE_XOPEN_EXTENDED][__USE_FILE_OFFSET64][__REDIRECT][__USE_TIME_BITS64](__REDIRECT): Remove. + [__USE_XOPEN_EXTENDED][__USE_FILE_OFFSET64][__REDIRECT][! __USE_TIME64_REDIRECTS](__REDIRECT): New. + [__USE_XOPEN_EXTENDED][__USE_FILE_OFFSET64][__REDIRECT][__USE_TIME64_REDIRECTS](__REDIRECT): New. + [__USE_XOPEN_EXTENDED][__USE_LARGEFILE64][! __USE_TIME_BITS64](nftw64): Remove. + [__USE_XOPEN_EXTENDED][__USE_LARGEFILE64][__USE_TIME_BITS64][! __REDIRECT](nftw64): Remove. + [__USE_XOPEN_EXTENDED][__USE_LARGEFILE64][__USE_TIME_BITS64][__REDIRECT](__REDIRECT): Remove. + [__USE_XOPEN_EXTENDED][__USE_LARGEFILE64][! __USE_TIME64_REDIRECTS](nftw64): New. + [__USE_XOPEN_EXTENDED][__USE_LARGEFILE64][__USE_TIME64_REDIRECTS][! __REDIRECT](nftw64): New. + [__USE_XOPEN_EXTENDED][__USE_LARGEFILE64][__USE_TIME64_REDIRECTS][__REDIRECT](__REDIRECT): New. + * io/sys/poll.h: Modified. + [__USE_GNU][__USE_TIME_BITS64][! __REDIRECT](ppoll): Remove. + [__USE_GNU][__USE_TIME_BITS64][__REDIRECT](__REDIRECT): Remove. + [__USE_GNU][__USE_TIME64_REDIRECTS][! __REDIRECT](ppoll): New. + [__USE_GNU][__USE_TIME64_REDIRECTS][__REDIRECT](__REDIRECT): New. + * io/sys/stat.h: Modified. + [__USE_ATFILE][! __USE_TIME_BITS64](utimensat): Remove. + [__USE_ATFILE][__USE_FILE_OFFSET64][! __USE_TIME_BITS64][! __REDIRECT_NTH](fstatat): Remove. + [__USE_ATFILE][__USE_FILE_OFFSET64][! __USE_TIME_BITS64][__REDIRECT_NTH](__REDIRECT_NTH): Remove. + [__USE_ATFILE][__USE_FILE_OFFSET64][__USE_TIME_BITS64][! __REDIRECT_NTH](fstatat): Remove. + [__USE_ATFILE][__USE_FILE_OFFSET64][__USE_TIME_BITS64][__REDIRECT_NTH](__REDIRECT_NTH): Remove. + [__USE_ATFILE][__USE_FILE_OFFSET64][! __USE_TIME64_REDIRECTS][! __REDIRECT_NTH](fstatat): New. + [__USE_ATFILE][__USE_FILE_OFFSET64][! __USE_TIME64_REDIRECTS][__REDIRECT_NTH](__REDIRECT_NTH): New. + [__USE_ATFILE][__USE_FILE_OFFSET64][__USE_TIME64_REDIRECTS][! __REDIRECT_NTH](fstatat): New. + [__USE_ATFILE][__USE_FILE_OFFSET64][__USE_TIME64_REDIRECTS][__REDIRECT_NTH](__REDIRECT_NTH): New. + [__USE_ATFILE][__USE_LARGEFILE64][! __USE_TIME_BITS64](fstatat64): Remove. + [__USE_ATFILE][__USE_LARGEFILE64][__USE_TIME_BITS64][! __REDIRECT_NTH](fstatat64): Remove. + [__USE_ATFILE][__USE_LARGEFILE64][__USE_TIME_BITS64][__REDIRECT_NTH](__REDIRECT_NTH): Remove. + [__USE_ATFILE][__USE_LARGEFILE64][! __USE_TIME64_REDIRECTS](fstatat64): New. + [__USE_ATFILE][__USE_LARGEFILE64][__USE_TIME64_REDIRECTS][! __REDIRECT_NTH](fstatat64): New. + [__USE_ATFILE][__USE_LARGEFILE64][__USE_TIME64_REDIRECTS][__REDIRECT_NTH](__REDIRECT_NTH): New. + [__USE_ATFILE][__USE_TIME_BITS64][! __REDIRECT_NTH](utimensat): Remove. + [__USE_ATFILE][__USE_TIME_BITS64][__REDIRECT_NTH](__REDIRECT_NTH): Remove. + [__USE_ATFILE][! __USE_TIME64_REDIRECTS](utimensat): New. + [__USE_ATFILE][__USE_TIME64_REDIRECTS][! __REDIRECT_NTH](utimensat): New. + [__USE_ATFILE][__USE_TIME64_REDIRECTS][__REDIRECT_NTH](__REDIRECT_NTH): New. + [__USE_FILE_OFFSET64][! __USE_TIME_BITS64][! __REDIRECT_NTH](stat): Remove. + [__USE_FILE_OFFSET64][! __USE_TIME_BITS64][! __REDIRECT_NTH](fstat): Remove. + [__USE_FILE_OFFSET64][! __USE_TIME_BITS64][__REDIRECT_NTH](__REDIRECT_NTH): Remove. + [__USE_FILE_OFFSET64][! __USE_TIME_BITS64][__REDIRECT_NTH](__REDIRECT_NTH): Remove. + [__USE_FILE_OFFSET64][__USE_TIME_BITS64][! __REDIRECT_NTH](stat): Remove. + [__USE_FILE_OFFSET64][__USE_TIME_BITS64][! __REDIRECT_NTH](fstat): Remove. + [__USE_FILE_OFFSET64][__USE_TIME_BITS64][__REDIRECT_NTH](__REDIRECT_NTH): Remove. + [__USE_FILE_OFFSET64][__USE_TIME_BITS64][__REDIRECT_NTH](__REDIRECT_NTH): Remove. + [__USE_FILE_OFFSET64][! __USE_TIME64_REDIRECTS][! __REDIRECT_NTH](stat): New. + [__USE_FILE_OFFSET64][! __USE_TIME64_REDIRECTS][! __REDIRECT_NTH](fstat): New. + [__USE_FILE_OFFSET64][! __USE_TIME64_REDIRECTS][__REDIRECT_NTH](__REDIRECT_NTH): New. + [__USE_FILE_OFFSET64][! __USE_TIME64_REDIRECTS][__REDIRECT_NTH](__REDIRECT_NTH): New. + [__USE_FILE_OFFSET64][__USE_TIME64_REDIRECTS][! __REDIRECT_NTH](stat): New. + [__USE_FILE_OFFSET64][__USE_TIME64_REDIRECTS][! __REDIRECT_NTH](fstat): New. + [__USE_FILE_OFFSET64][__USE_TIME64_REDIRECTS][__REDIRECT_NTH](__REDIRECT_NTH): New. + [__USE_FILE_OFFSET64][__USE_TIME64_REDIRECTS][__REDIRECT_NTH](__REDIRECT_NTH): New. + [__USE_LARGEFILE64][! __USE_TIME_BITS64](stat64): Remove. + [__USE_LARGEFILE64][! __USE_TIME_BITS64](fstat64): Remove. + [__USE_LARGEFILE64][__USE_TIME_BITS64][! __REDIRECT_NTH](stat64): Remove. + [__USE_LARGEFILE64][__USE_TIME_BITS64][! __REDIRECT_NTH](fstat64): Remove. + [__USE_LARGEFILE64][__USE_TIME_BITS64][__REDIRECT_NTH](__REDIRECT_NTH): Remove. + [__USE_LARGEFILE64][__USE_TIME_BITS64][__REDIRECT_NTH](__REDIRECT_NTH): Remove. + [__USE_LARGEFILE64][! __USE_TIME64_REDIRECTS](stat64): New. + [__USE_LARGEFILE64][! __USE_TIME64_REDIRECTS](fstat64): New. + [__USE_LARGEFILE64][__USE_TIME64_REDIRECTS][! __REDIRECT_NTH](stat64): New. + [__USE_LARGEFILE64][__USE_TIME64_REDIRECTS][! __REDIRECT_NTH](fstat64): New. + [__USE_LARGEFILE64][__USE_TIME64_REDIRECTS][__REDIRECT_NTH](__REDIRECT_NTH): New. + [__USE_LARGEFILE64][__USE_TIME64_REDIRECTS][__REDIRECT_NTH](__REDIRECT_NTH): New. + [__USE_XOPEN2K8][! __USE_TIME_BITS64](futimens): Remove. + [__USE_XOPEN2K8][__USE_TIME_BITS64][! __REDIRECT_NTH](futimens): Remove. + [__USE_XOPEN2K8][__USE_TIME_BITS64][__REDIRECT_NTH](__REDIRECT_NTH): Remove. + [__USE_XOPEN2K8][! __USE_TIME64_REDIRECTS](futimens): New. + [__USE_XOPEN2K8][__USE_TIME64_REDIRECTS][! __REDIRECT_NTH](futimens): New. + [__USE_XOPEN2K8][__USE_TIME64_REDIRECTS][__REDIRECT_NTH](__REDIRECT_NTH): New. + [__USE_XOPEN_EXTENDED || __USE_XOPEN2K][__USE_FILE_OFFSET64][! __USE_TIME_BITS64][! __REDIRECT_NTH](lstat): Remove. + [__USE_XOPEN_EXTENDED || __USE_XOPEN2K][__USE_FILE_OFFSET64][! __USE_TIME_BITS64][__REDIRECT_NTH](__REDIRECT_NTH): Remove. + [__USE_XOPEN_EXTENDED || __USE_XOPEN2K][__USE_FILE_OFFSET64][__USE_TIME_BITS64][! __REDIRECT_NTH](lstat): Remove. + [__USE_XOPEN_EXTENDED || __USE_XOPEN2K][__USE_FILE_OFFSET64][__USE_TIME_BITS64][__REDIRECT_NTH](__REDIRECT_NTH): Remove. + [__USE_XOPEN_EXTENDED || __USE_XOPEN2K][__USE_FILE_OFFSET64][! __USE_TIME64_REDIRECTS][! __REDIRECT_NTH](lstat): New. + [__USE_XOPEN_EXTENDED || __USE_XOPEN2K][__USE_FILE_OFFSET64][! __USE_TIME64_REDIRECTS][__REDIRECT_NTH](__REDIRECT_NTH): New. + [__USE_XOPEN_EXTENDED || __USE_XOPEN2K][__USE_FILE_OFFSET64][__USE_TIME64_REDIRECTS][! __REDIRECT_NTH](lstat): New. + [__USE_XOPEN_EXTENDED || __USE_XOPEN2K][__USE_FILE_OFFSET64][__USE_TIME64_REDIRECTS][__REDIRECT_NTH](__REDIRECT_NTH): New. + [__USE_XOPEN_EXTENDED || __USE_XOPEN2K][__USE_LARGEFILE64][! __USE_TIME_BITS64](lstat64): Remove. + [__USE_XOPEN_EXTENDED || __USE_XOPEN2K][__USE_LARGEFILE64][__USE_TIME_BITS64](__REDIRECT_NTH): Remove. + [__USE_XOPEN_EXTENDED || __USE_XOPEN2K][__USE_LARGEFILE64][! __USE_TIME64_REDIRECTS](lstat64): New. + [__USE_XOPEN_EXTENDED || __USE_XOPEN2K][__USE_LARGEFILE64][__USE_TIME64_REDIRECTS](__REDIRECT_NTH): New. + * io/utime.h: Modified. + [! __USE_TIME_BITS64](utime): Remove. + [__USE_TIME_BITS64][! __REDIRECT_NTH](utime): Remove. + [__USE_TIME_BITS64][__REDIRECT_NTH](__REDIRECT_NTH): Remove. + (utimbuf): Modified. + [! __USE_TIME64_REDIRECTS](utime): New. + [__USE_TIME64_REDIRECTS][! __REDIRECT_NTH](utime): New. + [__USE_TIME64_REDIRECTS][__REDIRECT_NTH](__REDIRECT_NTH): New. + * manual/creature.texi: Modified. + * manual/maint.texi: Modified. + * misc/sys/ioctl.h: Modified. + [! __USE_TIME_BITS64](ioctl): Remove. + [__USE_TIME_BITS64][! __REDIRECT](__ioctl_time64): Remove. + [__USE_TIME_BITS64][! __REDIRECT](ioctl): Remove. + [__USE_TIME_BITS64][__REDIRECT](__REDIRECT_NTH): Remove. + [! __USE_TIME64_REDIRECTS](ioctl): New. + [__USE_TIME64_REDIRECTS][! __REDIRECT](__ioctl_time64): New. + [__USE_TIME64_REDIRECTS][! __REDIRECT](ioctl): New. + [__USE_TIME64_REDIRECTS][__REDIRECT](__REDIRECT_NTH): New. + * misc/sys/select.h: Modified. + [! __USE_TIME_BITS64](select): Remove. + [__USE_TIME_BITS64][! __REDIRECT](select): Remove. + [__USE_TIME_BITS64][__REDIRECT](__REDIRECT): Remove. + [__USE_XOPEN2K][! __USE_TIME_BITS64](pselect): Remove. + [__USE_XOPEN2K][__USE_TIME_BITS64][! __REDIRECT](pselect): Remove. + [__USE_XOPEN2K][__USE_TIME_BITS64][__REDIRECT](__REDIRECT): Remove. + [__USE_XOPEN2K][! __USE_TIME64_REDIRECTS](pselect): New. + [__USE_XOPEN2K][__USE_TIME64_REDIRECTS][! __REDIRECT](pselect): New. + [__USE_XOPEN2K][__USE_TIME64_REDIRECTS][__REDIRECT](__REDIRECT): New. + [! __USE_TIME64_REDIRECTS](select): New. + [__USE_TIME64_REDIRECTS][! __REDIRECT](select): New. + [__USE_TIME64_REDIRECTS][__REDIRECT](__REDIRECT): New. + * posix/glob.h: Modified. + [__USE_FILE_OFFSET64][! __USE_TIME_BITS64](__REDIRECT_NTHNL): Remove. + [__USE_FILE_OFFSET64][! __USE_TIME_BITS64](__REDIRECT_NTH): Remove. + [__USE_FILE_OFFSET64][__USE_TIME_BITS64](__REDIRECT_NTHNL): Remove. + [__USE_FILE_OFFSET64][__USE_TIME_BITS64](__REDIRECT_NTH): Remove. + [__USE_FILE_OFFSET64][! __USE_TIME64_REDIRECTS](__REDIRECT_NTHNL): New. + [__USE_FILE_OFFSET64][! __USE_TIME64_REDIRECTS](__REDIRECT_NTH): New. + [__USE_FILE_OFFSET64][__USE_TIME64_REDIRECTS](__REDIRECT_NTHNL): New. + [__USE_FILE_OFFSET64][__USE_TIME64_REDIRECTS](__REDIRECT_NTH): New. + [__USE_LARGEFILE64][! __USE_TIME_BITS64](NL): Remove. + [__USE_LARGEFILE64][! __USE_TIME_BITS64](globfree64): Remove. + [__USE_LARGEFILE64][__USE_TIME_BITS64](__REDIRECT_NTHNL): Remove. + [__USE_LARGEFILE64][__USE_TIME_BITS64](__REDIRECT_NTH): Remove. + [__USE_LARGEFILE64][! __USE_TIME64_REDIRECTS](NL): New. + [__USE_LARGEFILE64][! __USE_TIME64_REDIRECTS](globfree64): New. + [__USE_LARGEFILE64][__USE_TIME64_REDIRECTS](__REDIRECT_NTHNL): New. + [__USE_LARGEFILE64][__USE_TIME64_REDIRECTS](__REDIRECT_NTH): New. + * posix/sched.h: Modified. + [! __USE_TIME_BITS64](sched_rr_get_interval): Remove. + [__USE_TIME_BITS64][! __REDIRECT_NTH](sched_rr_get_interval): Remove. + [__USE_TIME_BITS64][__REDIRECT_NTH](__REDIRECT_NTH): Remove. + [! __USE_TIME64_REDIRECTS](sched_rr_get_interval): New. + [__USE_TIME64_REDIRECTS][! __REDIRECT_NTH](sched_rr_get_interval): New. + [__USE_TIME64_REDIRECTS][__REDIRECT_NTH](__REDIRECT_NTH): New. + * posix/sys/wait.h: Modified. + [__USE_MISC][! __USE_TIME_BITS64](NL): Remove. + [__USE_MISC][__USE_TIME_BITS64][! __REDIRECT_NTHNL](wait4): Remove. + [__USE_MISC][__USE_TIME_BITS64][__REDIRECT_NTHNL](__REDIRECT_NTHNL): Remove. + [__USE_MISC][! __USE_TIME64_REDIRECTS](NL): New. + [__USE_MISC][__USE_TIME64_REDIRECTS][! __REDIRECT_NTHNL](wait4): New. + [__USE_MISC][__USE_TIME64_REDIRECTS][__REDIRECT_NTHNL](__REDIRECT_NTHNL): New. + [__USE_MISC || ( __USE_XOPEN_EXTENDED && ! __USE_XOPEN2K)][! __USE_TIME_BITS64](NL): Remove. + [__USE_MISC || ( __USE_XOPEN_EXTENDED && ! __USE_XOPEN2K)][__USE_TIME_BITS64][! __REDIRECT_NTHNL](wait3): Remove. + [__USE_MISC || ( __USE_XOPEN_EXTENDED && ! __USE_XOPEN2K)][__USE_TIME_BITS64][__REDIRECT_NTHNL](__REDIRECT_NTHNL): Remove. + [__USE_MISC || ( __USE_XOPEN_EXTENDED && ! __USE_XOPEN2K)][! __USE_TIME64_REDIRECTS](NL): New. + [__USE_MISC || ( __USE_XOPEN_EXTENDED && ! __USE_XOPEN2K)][__USE_TIME64_REDIRECTS][! __REDIRECT_NTHNL](wait3): New. + [__USE_MISC || ( __USE_XOPEN_EXTENDED && ! __USE_XOPEN2K)][__USE_TIME64_REDIRECTS][__REDIRECT_NTHNL](__REDIRECT_NTHNL): New. + * resolv/netdb.h: Modified. + [__USE_GNU][__USE_TIME_BITS64][!((__REDIRECT))](gai_suspend): Remove. + [__USE_GNU][__USE_TIME_BITS64][(__REDIRECT)](__REDIRECT): Remove. + [__USE_GNU][__USE_TIME64_REDIRECTS][!((__REDIRECT))](gai_suspend): New. + [__USE_GNU][__USE_TIME64_REDIRECTS][(__REDIRECT)](__REDIRECT): New. + * resource/sys/resource.h: Modified. + [__USE_TIME_BITS64][!((__REDIRECT_NTH))](getrusage): Remove. + [__USE_TIME_BITS64][(__REDIRECT_NTH)](__REDIRECT_NTH): Remove. + [__USE_TIME64_REDIRECTS][!((__REDIRECT_NTH))](getrusage): New. + [__USE_TIME64_REDIRECTS][(__REDIRECT_NTH)](__REDIRECT_NTH): New. + * rt/aio.h: Modified. + [__USE_FILE_OFFSET64][! __REDIRECT_NTH][! __USE_TIME_BITS64](aio_suspend): Remove. + [__USE_FILE_OFFSET64][! __REDIRECT_NTH][__USE_TIME_BITS64](aio_suspend): Remove. + [__USE_FILE_OFFSET64][! __REDIRECT_NTH][! __USE_TIME64_REDIRECTS](aio_suspend): New. + [__USE_FILE_OFFSET64][! __REDIRECT_NTH][__USE_TIME64_REDIRECTS](aio_suspend): New. + [__USE_FILE_OFFSET64][__REDIRECT_NTH][! __USE_TIME_BITS64](__REDIRECT_NTH): Remove. + [__USE_FILE_OFFSET64][__REDIRECT_NTH][__USE_TIME_BITS64](__REDIRECT_NTH): Remove. + [__USE_FILE_OFFSET64][__REDIRECT_NTH][! __USE_TIME64_REDIRECTS](__REDIRECT_NTH): New. + [__USE_FILE_OFFSET64][__REDIRECT_NTH][__USE_TIME64_REDIRECTS](__REDIRECT_NTH): New. + * rt/mqueue.h: Modified. + [__USE_XOPEN2K][! __USE_TIME_BITS64](mq_timedreceive): Remove. + [__USE_XOPEN2K][! __USE_TIME_BITS64](mq_timedsend): Remove. + [__USE_XOPEN2K][__USE_TIME_BITS64][! __REDIRECT](mq_timedreceive): Remove. + [__USE_XOPEN2K][__USE_TIME_BITS64][! __REDIRECT](mq_timedsend): Remove. + [__USE_XOPEN2K][__USE_TIME_BITS64][__REDIRECT](__REDIRECT): Remove. + [__USE_XOPEN2K][__USE_TIME_BITS64][__REDIRECT](__REDIRECT): Remove. + [__USE_XOPEN2K][! __USE_TIME64_REDIRECTS](mq_timedreceive): New. + [__USE_XOPEN2K][! __USE_TIME64_REDIRECTS](mq_timedsend): New. + [__USE_XOPEN2K][__USE_TIME64_REDIRECTS][! __REDIRECT](mq_timedreceive): New. + [__USE_XOPEN2K][__USE_TIME64_REDIRECTS][! __REDIRECT](mq_timedsend): New. + [__USE_XOPEN2K][__USE_TIME64_REDIRECTS][__REDIRECT](__REDIRECT): New. + [__USE_XOPEN2K][__USE_TIME64_REDIRECTS][__REDIRECT](__REDIRECT): New. + * signal/signal.h: Modified. + [__USE_POSIX][__USE_POSIX199309][! __USE_TIME_BITS64](sigtimedwait): Remove. + [__USE_POSIX][__USE_POSIX199309][__USE_TIME_BITS64][! __REDIRECT](sigtimedwait): Remove. + [__USE_POSIX][__USE_POSIX199309][__USE_TIME_BITS64][__REDIRECT](__REDIRECT): Remove. + [__USE_POSIX][__USE_POSIX199309][! __USE_TIME64_REDIRECTS](sigtimedwait): New. + [__USE_POSIX][__USE_POSIX199309][__USE_TIME64_REDIRECTS][! __REDIRECT](sigtimedwait): New. + [__USE_POSIX][__USE_POSIX199309][__USE_TIME64_REDIRECTS][__REDIRECT](__REDIRECT): New. + * socket/sys/socket.h: Modified. + [! __USE_TIME_BITS64](sendmsg): Remove. + [! __USE_TIME_BITS64](recvmsg): Remove. + [! __USE_TIME_BITS64](getsockopt): Remove. + [! __USE_TIME_BITS64](setsockopt): Remove. + [__USE_GNU][! __USE_TIME_BITS64](sendmmsg): Remove. + [__USE_GNU][! __USE_TIME_BITS64](recvmmsg): Remove. + [__USE_GNU][__USE_TIME_BITS64][! __REDIRECT](__sendmmsg64): Remove. + [__USE_GNU][__USE_TIME_BITS64][! __REDIRECT](sendmmsg): Remove. + [__USE_GNU][__USE_TIME_BITS64][! __REDIRECT](recvmmsg): Remove. + [__USE_GNU][__USE_TIME_BITS64][__REDIRECT](__REDIRECT): Remove. + [__USE_GNU][__USE_TIME_BITS64][__REDIRECT](__REDIRECT): Remove. + [__USE_GNU][! __USE_TIME64_REDIRECTS](sendmmsg): New. + [__USE_GNU][! __USE_TIME64_REDIRECTS](recvmmsg): New. + [__USE_GNU][__USE_TIME64_REDIRECTS][! __REDIRECT](__sendmmsg64): New. + [__USE_GNU][__USE_TIME64_REDIRECTS][! __REDIRECT](sendmmsg): New. + [__USE_GNU][__USE_TIME64_REDIRECTS][! __REDIRECT](recvmmsg): New. + [__USE_GNU][__USE_TIME64_REDIRECTS][__REDIRECT](__REDIRECT): New. + [__USE_GNU][__USE_TIME64_REDIRECTS][__REDIRECT](__REDIRECT): New. + [__USE_TIME_BITS64][! __REDIRECT](__sendmsg64): Remove. + [__USE_TIME_BITS64][! __REDIRECT](sendmsg): Remove. + [__USE_TIME_BITS64][! __REDIRECT](__recvmsg64): Remove. + [__USE_TIME_BITS64][! __REDIRECT](recvmsg): Remove. + [__USE_TIME_BITS64][! __REDIRECT](__getsockopt64): Remove. + [__USE_TIME_BITS64][! __REDIRECT](getsockopt): Remove. + [__USE_TIME_BITS64][! __REDIRECT](__setsockopt64): Remove. + [__USE_TIME_BITS64][! __REDIRECT](setsockopt): Remove. + [__USE_TIME_BITS64][__REDIRECT](__REDIRECT): Remove. + [__USE_TIME_BITS64][__REDIRECT](__REDIRECT): Remove. + [__USE_TIME_BITS64][__REDIRECT](__REDIRECT_NTH): Remove. + [__USE_TIME_BITS64][__REDIRECT](__REDIRECT_NTH): Remove. + [! __USE_TIME64_REDIRECTS](sendmsg): New. + [! __USE_TIME64_REDIRECTS](recvmsg): New. + [! __USE_TIME64_REDIRECTS](getsockopt): New. + [! __USE_TIME64_REDIRECTS](setsockopt): New. + [__USE_TIME64_REDIRECTS][! __REDIRECT](__sendmsg64): New. + [__USE_TIME64_REDIRECTS][! __REDIRECT](sendmsg): New. + [__USE_TIME64_REDIRECTS][! __REDIRECT](__recvmsg64): New. + [__USE_TIME64_REDIRECTS][! __REDIRECT](recvmsg): New. + [__USE_TIME64_REDIRECTS][! __REDIRECT](__getsockopt64): New. + [__USE_TIME64_REDIRECTS][! __REDIRECT](getsockopt): New. + [__USE_TIME64_REDIRECTS][! __REDIRECT](__setsockopt64): New. + [__USE_TIME64_REDIRECTS][! __REDIRECT](setsockopt): New. + [__USE_TIME64_REDIRECTS][__REDIRECT](__REDIRECT): New. + [__USE_TIME64_REDIRECTS][__REDIRECT](__REDIRECT): New. + [__USE_TIME64_REDIRECTS][__REDIRECT](__REDIRECT_NTH): New. + [__USE_TIME64_REDIRECTS][__REDIRECT](__REDIRECT_NTH): New. + * support/timespec.h: Modified. + [! __USE_TIME_BITS64](timespec_add): Remove. + [! __USE_TIME_BITS64](timespec_sub): Remove. + [! __USE_TIME_BITS64](test_timespec_before_impl): Remove. + [! __USE_TIME_BITS64](test_timespec_equal_or_after_impl): Remove. + [! __USE_TIME_BITS64](support_timespec_ns): Remove. + [! __USE_TIME_BITS64](support_timespec_normalize): Remove. + [! __USE_TIME_BITS64](support_timespec_check_in_range): Remove. + [! __USE_TIME_BITS64](dtotimespec): Remove. + [__USE_TIME_BITS64](__REDIRECT): Remove. + [__USE_TIME_BITS64](__REDIRECT): Remove. + [__USE_TIME_BITS64](__REDIRECT): Remove. + [__USE_TIME_BITS64](__REDIRECT): Remove. + [__USE_TIME_BITS64](__REDIRECT): Remove. + [__USE_TIME_BITS64](__REDIRECT): Remove. + [__USE_TIME_BITS64](__REDIRECT): Remove. + [__USE_TIME_BITS64](__REDIRECT): Remove. + [! __USE_TIME64_REDIRECTS](timespec_add): New. + [! __USE_TIME64_REDIRECTS](timespec_sub): New. + [! __USE_TIME64_REDIRECTS](test_timespec_before_impl): New. + [! __USE_TIME64_REDIRECTS](test_timespec_equal_or_after_impl): New. + [! __USE_TIME64_REDIRECTS](support_timespec_ns): New. + [! __USE_TIME64_REDIRECTS](support_timespec_normalize): New. + [! __USE_TIME64_REDIRECTS](support_timespec_check_in_range): New. + [! __USE_TIME64_REDIRECTS](dtotimespec): New. + [__USE_TIME64_REDIRECTS](__REDIRECT): New. + [__USE_TIME64_REDIRECTS](__REDIRECT): New. + [__USE_TIME64_REDIRECTS](__REDIRECT): New. + [__USE_TIME64_REDIRECTS](__REDIRECT): New. + [__USE_TIME64_REDIRECTS](__REDIRECT): New. + [__USE_TIME64_REDIRECTS](__REDIRECT): New. + [__USE_TIME64_REDIRECTS](__REDIRECT): New. + [__USE_TIME64_REDIRECTS](__REDIRECT): New. + * support/xtime.h: Modified. + [! __USE_TIME_BITS64](xclock_gettime): Remove. + [! __USE_TIME_BITS64](xclock_settime): Remove. + [__USE_TIME_BITS64](__REDIRECT): Remove. + [__USE_TIME_BITS64](__REDIRECT): Remove. + [! __USE_TIME64_REDIRECTS](xclock_gettime): New. + [! __USE_TIME64_REDIRECTS](xclock_settime): New. + [__USE_TIME64_REDIRECTS](__REDIRECT): New. + [__USE_TIME64_REDIRECTS](__REDIRECT): New. + * support/xunistd.h: Modified. + [! __USE_TIME_BITS64][! __USE_FILE_OFFSET64](xstat): Remove. + [! __USE_TIME_BITS64][! __USE_FILE_OFFSET64](xlstat): Remove. + [! __USE_TIME_BITS64][! __USE_FILE_OFFSET64](xfstat): Remove. + [! __USE_TIME_BITS64][__USE_FILE_OFFSET64](xstat): Remove. + [! __USE_TIME_BITS64][__USE_FILE_OFFSET64](xlstat): Remove. + [! __USE_TIME_BITS64][__USE_FILE_OFFSET64](xfstat): Remove. + [__USE_TIME_BITS64](__REDIRECT): Remove. + [__USE_TIME_BITS64](__REDIRECT): Remove. + [__USE_TIME_BITS64](__REDIRECT): Remove. + [! __USE_TIME64_REDIRECTS][! __USE_FILE_OFFSET64](xstat): New. + [! __USE_TIME64_REDIRECTS][! __USE_FILE_OFFSET64](xlstat): New. + [! __USE_TIME64_REDIRECTS][! __USE_FILE_OFFSET64](xfstat): New. + [! __USE_TIME64_REDIRECTS][__USE_FILE_OFFSET64](xstat): New. + [! __USE_TIME64_REDIRECTS][__USE_FILE_OFFSET64](xlstat): New. + [! __USE_TIME64_REDIRECTS][__USE_FILE_OFFSET64](xfstat): New. + [__USE_TIME64_REDIRECTS](__REDIRECT): New. + [__USE_TIME64_REDIRECTS](__REDIRECT): New. + [__USE_TIME64_REDIRECTS](__REDIRECT): New. + * sysdeps/generic/features-time64.h: Delete file. + * sysdeps/nptl/pthread.h: Modified. + [__GNUC__ && __EXCEPTIONS][__cplusplus][__USE_GNU][__USE_GNU][! __USE_TIME_BITS64](pthread_cond_timedwait): Remove. + [__GNUC__ && __EXCEPTIONS][__cplusplus][__USE_GNU][__USE_GNU][__USE_GNU][! __USE_TIME_BITS64](pthread_mutex_clocklock): Remove. + [__GNUC__ && __EXCEPTIONS][__cplusplus][__USE_GNU][__USE_GNU][__USE_GNU][! __USE_TIME_BITS64](pthread_cond_clockwait): Remove. + [__GNUC__ && __EXCEPTIONS][__cplusplus][__USE_GNU][__USE_GNU][__USE_GNU][__USE_TIME_BITS64][! __REDIRECT](pthread_cond_clockwait): Remove. + [__GNUC__ && __EXCEPTIONS][__cplusplus][__USE_GNU][__USE_GNU][__USE_GNU][__USE_TIME_BITS64][! __REDIRECT_NTHNL](pthread_mutex_clocklock): Remove. + [__GNUC__ && __EXCEPTIONS][__cplusplus][__USE_GNU][__USE_GNU][__USE_GNU][__USE_TIME_BITS64][__REDIRECT](__REDIRECT): Remove. + [__GNUC__ && __EXCEPTIONS][__cplusplus][__USE_GNU][__USE_GNU][__USE_GNU][__USE_TIME_BITS64][__REDIRECT_NTHNL](__REDIRECT_NTHNL): Remove. + [__GNUC__ && __EXCEPTIONS][__cplusplus][__USE_GNU][__USE_GNU][__USE_GNU][! __USE_TIME64_REDIRECTS](pthread_mutex_clocklock): New. + [__GNUC__ && __EXCEPTIONS][__cplusplus][__USE_GNU][__USE_GNU][__USE_GNU][! __USE_TIME64_REDIRECTS](pthread_cond_clockwait): New. + [__GNUC__ && __EXCEPTIONS][__cplusplus][__USE_GNU][__USE_GNU][__USE_GNU][__USE_TIME64_REDIRECTS][! __REDIRECT](pthread_cond_clockwait): New. + [__GNUC__ && __EXCEPTIONS][__cplusplus][__USE_GNU][__USE_GNU][__USE_GNU][__USE_TIME64_REDIRECTS][! __REDIRECT_NTHNL](pthread_mutex_clocklock): New. + [__GNUC__ && __EXCEPTIONS][__cplusplus][__USE_GNU][__USE_GNU][__USE_GNU][__USE_TIME64_REDIRECTS][__REDIRECT](__REDIRECT): New. + [__GNUC__ && __EXCEPTIONS][__cplusplus][__USE_GNU][__USE_GNU][__USE_GNU][__USE_TIME64_REDIRECTS][__REDIRECT_NTHNL](__REDIRECT_NTHNL): New. + [__GNUC__ && __EXCEPTIONS][__cplusplus][__USE_GNU][__USE_GNU][__USE_TIME_BITS64][! __REDIRECT](pthread_cond_timedwait): Remove. + [__GNUC__ && __EXCEPTIONS][__cplusplus][__USE_GNU][__USE_GNU][__USE_TIME_BITS64][__REDIRECT](__REDIRECT): Remove. + [__GNUC__ && __EXCEPTIONS][__cplusplus][__USE_GNU][__USE_GNU][__USE_UNIX98 || __USE_XOPEN2K][__USE_GNU][! __USE_TIME_BITS64](pthread_rwlock_clockrdlock): Remove. + [__GNUC__ && __EXCEPTIONS][__cplusplus][__USE_GNU][__USE_GNU][__USE_UNIX98 || __USE_XOPEN2K][__USE_GNU][! __USE_TIME_BITS64](pthread_rwlock_clockwrlock): Remove. + [__GNUC__ && __EXCEPTIONS][__cplusplus][__USE_GNU][__USE_GNU][__USE_UNIX98 || __USE_XOPEN2K][__USE_GNU][__USE_TIME_BITS64][! __REDIRECT_NTHNL](pthread_rwlock_clockrdlock): Remove. + [__GNUC__ && __EXCEPTIONS][__cplusplus][__USE_GNU][__USE_GNU][__USE_UNIX98 || __USE_XOPEN2K][__USE_GNU][__USE_TIME_BITS64][! __REDIRECT_NTHNL](pthread_rwlock_clockwrlock): Remove. + [__GNUC__ && __EXCEPTIONS][__cplusplus][__USE_GNU][__USE_GNU][__USE_UNIX98 || __USE_XOPEN2K][__USE_GNU][__USE_TIME_BITS64][__REDIRECT_NTHNL](__REDIRECT_NTHNL): Remove. + [__GNUC__ && __EXCEPTIONS][__cplusplus][__USE_GNU][__USE_GNU][__USE_UNIX98 || __USE_XOPEN2K][__USE_GNU][__USE_TIME_BITS64][__REDIRECT_NTHNL](__REDIRECT_NTHNL): Remove. + [__GNUC__ && __EXCEPTIONS][__cplusplus][__USE_GNU][__USE_GNU][__USE_UNIX98 || __USE_XOPEN2K][__USE_GNU][! __USE_TIME64_REDIRECTS](pthread_rwlock_clockrdlock): New. + [__GNUC__ && __EXCEPTIONS][__cplusplus][__USE_GNU][__USE_GNU][__USE_UNIX98 || __USE_XOPEN2K][__USE_GNU][! __USE_TIME64_REDIRECTS](pthread_rwlock_clockwrlock): New. + [__GNUC__ && __EXCEPTIONS][__cplusplus][__USE_GNU][__USE_GNU][__USE_UNIX98 || __USE_XOPEN2K][__USE_GNU][__USE_TIME64_REDIRECTS][! __REDIRECT_NTHNL](pthread_rwlock_clockrdlock): New. + [__GNUC__ && __EXCEPTIONS][__cplusplus][__USE_GNU][__USE_GNU][__USE_UNIX98 || __USE_XOPEN2K][__USE_GNU][__USE_TIME64_REDIRECTS][! __REDIRECT_NTHNL](pthread_rwlock_clockwrlock): New. + [__GNUC__ && __EXCEPTIONS][__cplusplus][__USE_GNU][__USE_GNU][__USE_UNIX98 || __USE_XOPEN2K][__USE_GNU][__USE_TIME64_REDIRECTS][__REDIRECT_NTHNL](__REDIRECT_NTHNL): New. + [__GNUC__ && __EXCEPTIONS][__cplusplus][__USE_GNU][__USE_GNU][__USE_UNIX98 || __USE_XOPEN2K][__USE_GNU][__USE_TIME64_REDIRECTS][__REDIRECT_NTHNL](__REDIRECT_NTHNL): New. + [__GNUC__ && __EXCEPTIONS][__cplusplus][__USE_GNU][__USE_GNU][__USE_UNIX98 || __USE_XOPEN2K][__USE_XOPEN2K][! __USE_TIME_BITS64](pthread_rwlock_timedrdlock): Remove. + [__GNUC__ && __EXCEPTIONS][__cplusplus][__USE_GNU][__USE_GNU][__USE_UNIX98 || __USE_XOPEN2K][__USE_XOPEN2K][! __USE_TIME_BITS64](pthread_rwlock_timedwrlock): Remove. + [__GNUC__ && __EXCEPTIONS][__cplusplus][__USE_GNU][__USE_GNU][__USE_UNIX98 || __USE_XOPEN2K][__USE_XOPEN2K][__USE_TIME_BITS64][! __REDIRECT_NTHNL](pthread_rwlock_timedrdlock): Remove. + [__GNUC__ && __EXCEPTIONS][__cplusplus][__USE_GNU][__USE_GNU][__USE_UNIX98 || __USE_XOPEN2K][__USE_XOPEN2K][__USE_TIME_BITS64][! __REDIRECT_NTHNL](pthread_rwlock_timedwrlock): Remove. + [__GNUC__ && __EXCEPTIONS][__cplusplus][__USE_GNU][__USE_GNU][__USE_UNIX98 || __USE_XOPEN2K][__USE_XOPEN2K][__USE_TIME_BITS64][__REDIRECT_NTHNL](__REDIRECT_NTHNL): Remove. + [__GNUC__ && __EXCEPTIONS][__cplusplus][__USE_GNU][__USE_GNU][__USE_UNIX98 || __USE_XOPEN2K][__USE_XOPEN2K][__USE_TIME_BITS64][__REDIRECT_NTHNL](__REDIRECT_NTHNL): Remove. + [__GNUC__ && __EXCEPTIONS][__cplusplus][__USE_GNU][__USE_GNU][__USE_UNIX98 || __USE_XOPEN2K][__USE_XOPEN2K][! __USE_TIME64_REDIRECTS](pthread_rwlock_timedrdlock): New. + [__GNUC__ && __EXCEPTIONS][__cplusplus][__USE_GNU][__USE_GNU][__USE_UNIX98 || __USE_XOPEN2K][__USE_XOPEN2K][! __USE_TIME64_REDIRECTS](pthread_rwlock_timedwrlock): New. + [__GNUC__ && __EXCEPTIONS][__cplusplus][__USE_GNU][__USE_GNU][__USE_UNIX98 || __USE_XOPEN2K][__USE_XOPEN2K][__USE_TIME64_REDIRECTS][! __REDIRECT_NTHNL](pthread_rwlock_timedrdlock): New. + [__GNUC__ && __EXCEPTIONS][__cplusplus][__USE_GNU][__USE_GNU][__USE_UNIX98 || __USE_XOPEN2K][__USE_XOPEN2K][__USE_TIME64_REDIRECTS][! __REDIRECT_NTHNL](pthread_rwlock_timedwrlock): New. + [__GNUC__ && __EXCEPTIONS][__cplusplus][__USE_GNU][__USE_GNU][__USE_UNIX98 || __USE_XOPEN2K][__USE_XOPEN2K][__USE_TIME64_REDIRECTS][__REDIRECT_NTHNL](__REDIRECT_NTHNL): New. + [__GNUC__ && __EXCEPTIONS][__cplusplus][__USE_GNU][__USE_GNU][__USE_UNIX98 || __USE_XOPEN2K][__USE_XOPEN2K][__USE_TIME64_REDIRECTS][__REDIRECT_NTHNL](__REDIRECT_NTHNL): New. + [__GNUC__ && __EXCEPTIONS][__cplusplus][__USE_GNU][__USE_GNU][__USE_XOPEN2K][! __USE_TIME_BITS64](pthread_mutex_timedlock): Remove. + [__GNUC__ && __EXCEPTIONS][__cplusplus][__USE_GNU][__USE_GNU][__USE_XOPEN2K][__USE_TIME_BITS64][! __REDIRECT_NTHNL](pthread_mutex_timedlock): Remove. + [__GNUC__ && __EXCEPTIONS][__cplusplus][__USE_GNU][__USE_GNU][__USE_XOPEN2K][__USE_TIME_BITS64][__REDIRECT_NTHNL](__REDIRECT_NTHNL): Remove. + [__GNUC__ && __EXCEPTIONS][__cplusplus][__USE_GNU][__USE_GNU][__USE_XOPEN2K][! __USE_TIME64_REDIRECTS](pthread_mutex_timedlock): New. + [__GNUC__ && __EXCEPTIONS][__cplusplus][__USE_GNU][__USE_GNU][__USE_XOPEN2K][__USE_TIME64_REDIRECTS][! __REDIRECT_NTHNL](pthread_mutex_timedlock): New. + [__GNUC__ && __EXCEPTIONS][__cplusplus][__USE_GNU][__USE_GNU][__USE_XOPEN2K][__USE_TIME64_REDIRECTS][__REDIRECT_NTHNL](__REDIRECT_NTHNL): New. + [__GNUC__ && __EXCEPTIONS][__cplusplus][__USE_GNU][__USE_GNU][! __USE_TIME64_REDIRECTS](pthread_cond_timedwait): New. + [__GNUC__ && __EXCEPTIONS][__cplusplus][__USE_GNU][__USE_GNU][__USE_TIME64_REDIRECTS][! __REDIRECT](pthread_cond_timedwait): New. + [__GNUC__ && __EXCEPTIONS][__cplusplus][__USE_GNU][__USE_GNU][__USE_TIME64_REDIRECTS][__REDIRECT](__REDIRECT): New. + [__USE_GNU][! __USE_TIME_BITS64](pthread_timedjoin_np): Remove. + [__USE_GNU][! __USE_TIME_BITS64](pthread_clockjoin_np): Remove. + [__USE_GNU][__USE_TIME_BITS64][! __REDIRECT](pthread_timedjoin_np): Remove. + [__USE_GNU][__USE_TIME_BITS64][! __REDIRECT](pthread_clockjoin_np): Remove. + [__USE_GNU][__USE_TIME_BITS64][__REDIRECT](__REDIRECT): Remove. + [__USE_GNU][__USE_TIME_BITS64][__REDIRECT](__REDIRECT): Remove. + [__USE_GNU][! __USE_TIME64_REDIRECTS](pthread_timedjoin_np): New. + [__USE_GNU][! __USE_TIME64_REDIRECTS](pthread_clockjoin_np): New. + [__USE_GNU][__USE_TIME64_REDIRECTS][! __REDIRECT](pthread_timedjoin_np): New. + [__USE_GNU][__USE_TIME64_REDIRECTS][! __REDIRECT](pthread_clockjoin_np): New. + [__USE_GNU][__USE_TIME64_REDIRECTS][__REDIRECT](__REDIRECT): New. + [__USE_GNU][__USE_TIME64_REDIRECTS][__REDIRECT](__REDIRECT): New. + * sysdeps/pthread/semaphore.h: Modified. + [__USE_GNU][! __USE_TIME_BITS64](sem_clockwait): Remove. + [__USE_GNU][__USE_TIME_BITS64][! __REDIRECT](sem_clockwait): Remove. + [__USE_GNU][__USE_TIME_BITS64][__REDIRECT](__REDIRECT): Remove. + [__USE_GNU][! __USE_TIME64_REDIRECTS](sem_clockwait): New. + [__USE_GNU][__USE_TIME64_REDIRECTS][! __REDIRECT](sem_clockwait): New. + [__USE_GNU][__USE_TIME64_REDIRECTS][__REDIRECT](__REDIRECT): New. + [__USE_XOPEN2K][! __USE_TIME_BITS64](sem_timedwait): Remove. + [__USE_XOPEN2K][__USE_TIME_BITS64][! __REDIRECT](sem_timedwait): Remove. + [__USE_XOPEN2K][__USE_TIME_BITS64][__REDIRECT](__REDIRECT): Remove. + [__USE_XOPEN2K][! __USE_TIME64_REDIRECTS](sem_timedwait): New. + [__USE_XOPEN2K][__USE_TIME64_REDIRECTS][! __REDIRECT](sem_timedwait): New. + [__USE_XOPEN2K][__USE_TIME64_REDIRECTS][__REDIRECT](__REDIRECT): New. + * sysdeps/pthread/threads.h: Modified. + [! __USE_TIME_BITS64](thrd_sleep): Remove. + [! __USE_TIME_BITS64](mtx_timedlock): Remove. + [! __USE_TIME_BITS64](cnd_timedwait): Remove. + [__USE_TIME_BITS64][! __REDIRECT](thrd_sleep): Remove. + [__USE_TIME_BITS64][! __REDIRECT](mtx_timedlock): Remove. + [__USE_TIME_BITS64][! __REDIRECT](cnd_timedwait): Remove. + [__USE_TIME_BITS64][__REDIRECT](__REDIRECT): Remove. + [__USE_TIME_BITS64][__REDIRECT](__REDIRECT): Remove. + [__USE_TIME_BITS64][__REDIRECT](__REDIRECT): Remove. + [! __USE_TIME64_REDIRECTS](thrd_sleep): New. + [! __USE_TIME64_REDIRECTS](mtx_timedlock): New. + [! __USE_TIME64_REDIRECTS](cnd_timedwait): New. + [__USE_TIME64_REDIRECTS][! __REDIRECT](thrd_sleep): New. + [__USE_TIME64_REDIRECTS][! __REDIRECT](mtx_timedlock): New. + [__USE_TIME64_REDIRECTS][! __REDIRECT](cnd_timedwait): New. + [__USE_TIME64_REDIRECTS][__REDIRECT](__REDIRECT): New. + [__USE_TIME64_REDIRECTS][__REDIRECT](__REDIRECT): New. + [__USE_TIME64_REDIRECTS][__REDIRECT](__REDIRECT): New. + * sysdeps/unix/sysv/linux/arm/bits/struct_stat.h: Modified. + [! _BITS_STRUCT_STAT_H][__USE_LARGEFILE64](stat64): Modified. + [! _BITS_STRUCT_STAT_H](stat): Modified. + * sysdeps/unix/sysv/linux/bits/socket-constants.h: Modified. + [!((__TIMESIZE == 64 && __WORDSIZE == 32 && (! __SYSCALL_WORDSIZE || __SYSCALL_WORDSIZE == 32)))][__TIMESIZE != 64][! __USE_TIME_BITS64](SO_RCVTIMEO): Remove. + [!((__TIMESIZE == 64 && __WORDSIZE == 32 && (! __SYSCALL_WORDSIZE || __SYSCALL_WORDSIZE == 32)))][__TIMESIZE != 64][! __USE_TIME_BITS64](SO_SNDTIMEO): Remove. + [!((__TIMESIZE == 64 && __WORDSIZE == 32 && (! __SYSCALL_WORDSIZE || __SYSCALL_WORDSIZE == 32)))][__TIMESIZE != 64][! __USE_TIME_BITS64](SO_TIMESTAMP): Remove. + [!((__TIMESIZE == 64 && __WORDSIZE == 32 && (! __SYSCALL_WORDSIZE || __SYSCALL_WORDSIZE == 32)))][__TIMESIZE != 64][! __USE_TIME_BITS64](SO_TIMESTAMPNS): Remove. + [!((__TIMESIZE == 64 && __WORDSIZE == 32 && (! __SYSCALL_WORDSIZE || __SYSCALL_WORDSIZE == 32)))][__TIMESIZE != 64][! __USE_TIME_BITS64](SO_TIMESTAMPING): Remove. + [!((__TIMESIZE == 64 && __WORDSIZE == 32 && (! __SYSCALL_WORDSIZE || __SYSCALL_WORDSIZE == 32)))][__TIMESIZE != 64][__USE_TIME_BITS64](SO_RCVTIMEO): Remove. + [!((__TIMESIZE == 64 && __WORDSIZE == 32 && (! __SYSCALL_WORDSIZE || __SYSCALL_WORDSIZE == 32)))][__TIMESIZE != 64][__USE_TIME_BITS64](SO_SNDTIMEO): Remove. + [!((__TIMESIZE == 64 && __WORDSIZE == 32 && (! __SYSCALL_WORDSIZE || __SYSCALL_WORDSIZE == 32)))][__TIMESIZE != 64][__USE_TIME_BITS64](SO_TIMESTAMP): Remove. + [!((__TIMESIZE == 64 && __WORDSIZE == 32 && (! __SYSCALL_WORDSIZE || __SYSCALL_WORDSIZE == 32)))][__TIMESIZE != 64][__USE_TIME_BITS64](SO_TIMESTAMPNS): Remove. + [!((__TIMESIZE == 64 && __WORDSIZE == 32 && (! __SYSCALL_WORDSIZE || __SYSCALL_WORDSIZE == 32)))][__TIMESIZE != 64][__USE_TIME_BITS64](SO_TIMESTAMPING): Remove. + [!((__TIMESIZE == 64 && __WORDSIZE == 32 && (! __SYSCALL_WORDSIZE || __SYSCALL_WORDSIZE == 32)))][__TIMESIZE != 64][! __USE_TIME64_REDIRECTS](SO_RCVTIMEO): New. + [!((__TIMESIZE == 64 && __WORDSIZE == 32 && (! __SYSCALL_WORDSIZE || __SYSCALL_WORDSIZE == 32)))][__TIMESIZE != 64][! __USE_TIME64_REDIRECTS](SO_SNDTIMEO): New. + [!((__TIMESIZE == 64 && __WORDSIZE == 32 && (! __SYSCALL_WORDSIZE || __SYSCALL_WORDSIZE == 32)))][__TIMESIZE != 64][! __USE_TIME64_REDIRECTS](SO_TIMESTAMP): New. + [!((__TIMESIZE == 64 && __WORDSIZE == 32 && (! __SYSCALL_WORDSIZE || __SYSCALL_WORDSIZE == 32)))][__TIMESIZE != 64][! __USE_TIME64_REDIRECTS](SO_TIMESTAMPNS): New. + [!((__TIMESIZE == 64 && __WORDSIZE == 32 && (! __SYSCALL_WORDSIZE || __SYSCALL_WORDSIZE == 32)))][__TIMESIZE != 64][! __USE_TIME64_REDIRECTS](SO_TIMESTAMPING): New. + [!((__TIMESIZE == 64 && __WORDSIZE == 32 && (! __SYSCALL_WORDSIZE || __SYSCALL_WORDSIZE == 32)))][__TIMESIZE != 64][__USE_TIME64_REDIRECTS](SO_RCVTIMEO): New. + [!((__TIMESIZE == 64 && __WORDSIZE == 32 && (! __SYSCALL_WORDSIZE || __SYSCALL_WORDSIZE == 32)))][__TIMESIZE != 64][__USE_TIME64_REDIRECTS](SO_SNDTIMEO): New. + [!((__TIMESIZE == 64 && __WORDSIZE == 32 && (! __SYSCALL_WORDSIZE || __SYSCALL_WORDSIZE == 32)))][__TIMESIZE != 64][__USE_TIME64_REDIRECTS](SO_TIMESTAMP): New. + [!((__TIMESIZE == 64 && __WORDSIZE == 32 && (! __SYSCALL_WORDSIZE || __SYSCALL_WORDSIZE == 32)))][__TIMESIZE != 64][__USE_TIME64_REDIRECTS](SO_TIMESTAMPNS): New. + [!((__TIMESIZE == 64 && __WORDSIZE == 32 && (! __SYSCALL_WORDSIZE || __SYSCALL_WORDSIZE == 32)))][__TIMESIZE != 64][__USE_TIME64_REDIRECTS](SO_TIMESTAMPING): New. + * sysdeps/unix/sysv/linux/bits/time.h: Modified. + [__USE_GNU][__USE_TIME_BITS64][!((__REDIRECT_NTH))](clock_adjtime): Remove. + [__USE_GNU][__USE_TIME_BITS64][(__REDIRECT_NTH)](__REDIRECT_NTH): Remove. + [__USE_GNU][__USE_TIME64_REDIRECTS][!((__REDIRECT_NTH))](clock_adjtime): New. + [__USE_GNU][__USE_TIME64_REDIRECTS][(__REDIRECT_NTH)](__REDIRECT_NTH): New. + * sysdeps/unix/sysv/linux/bits/timex.h: Modified. + (timex): Modified. + * sysdeps/unix/sysv/linux/bits/types/struct_msqid_ds.h: Modified. + (msqid_ds): Modified. + * sysdeps/unix/sysv/linux/bits/types/struct_semid_ds.h: Modified. + (semid_ds): Modified. + * sysdeps/unix/sysv/linux/bits/types/struct_shmid_ds.h: Modified. + (shmid_ds): Modified. + * sysdeps/unix/sysv/linux/csky/bits/struct_stat.h: Modified. + [! _BITS_STRUCT_STAT_H][__USE_LARGEFILE64](stat64): Modified. + [! _BITS_STRUCT_STAT_H](stat): Modified. + * sysdeps/unix/sysv/linux/features-time64.h: Modified. + [_TIME_BITS][_TIME_BITS == 64][__TIMESIZE == 32](__USE_TIME_BITS64): Remove. + [_TIME_BITS][_TIME_BITS == 64](__USE_TIME_BITS64): New. + [__TIMESIZE == 64](__USE_TIME_BITS64): New. + [__USE_TIME_BITS64 && __TIMESIZE == 32](__USE_TIME64_REDIRECTS): New. + * sysdeps/unix/sysv/linux/hppa/bits/socket-constants.h: Modified. + [__TIMESIZE != 64][! __USE_TIME_BITS64](SO_RCVTIMEO): Remove. + [__TIMESIZE != 64][! __USE_TIME_BITS64](SO_SNDTIMEO): Remove. + [__TIMESIZE != 64][! __USE_TIME_BITS64](SO_TIMESTAMP): Remove. + [__TIMESIZE != 64][! __USE_TIME_BITS64](SO_TIMESTAMPNS): Remove. + [__TIMESIZE != 64][! __USE_TIME_BITS64](SO_TIMESTAMPING): Remove. + [__TIMESIZE != 64][__USE_TIME_BITS64](SO_RCVTIMEO): Remove. + [__TIMESIZE != 64][__USE_TIME_BITS64](SO_SNDTIMEO): Remove. + [__TIMESIZE != 64][__USE_TIME_BITS64](SO_TIMESTAMP): Remove. + [__TIMESIZE != 64][__USE_TIME_BITS64](SO_TIMESTAMPNS): Remove. + [__TIMESIZE != 64][__USE_TIME_BITS64](SO_TIMESTAMPING): Remove. + [__TIMESIZE != 64][! __USE_TIME64_REDIRECTS](SO_RCVTIMEO): New. + [__TIMESIZE != 64][! __USE_TIME64_REDIRECTS](SO_SNDTIMEO): New. + [__TIMESIZE != 64][! __USE_TIME64_REDIRECTS](SO_TIMESTAMP): New. + [__TIMESIZE != 64][! __USE_TIME64_REDIRECTS](SO_TIMESTAMPNS): New. + [__TIMESIZE != 64][! __USE_TIME64_REDIRECTS](SO_TIMESTAMPING): New. + [__TIMESIZE != 64][__USE_TIME64_REDIRECTS](SO_RCVTIMEO): New. + [__TIMESIZE != 64][__USE_TIME64_REDIRECTS](SO_SNDTIMEO): New. + [__TIMESIZE != 64][__USE_TIME64_REDIRECTS](SO_TIMESTAMP): New. + [__TIMESIZE != 64][__USE_TIME64_REDIRECTS](SO_TIMESTAMPNS): New. + [__TIMESIZE != 64][__USE_TIME64_REDIRECTS](SO_TIMESTAMPING): New. + * sysdeps/unix/sysv/linux/hppa/bits/struct_stat.h: Modified. + [! _BITS_STRUCT_STAT_H][__USE_LARGEFILE64](stat64): Modified. + [! _BITS_STRUCT_STAT_H](stat): Modified. + * sysdeps/unix/sysv/linux/hppa/bits/types/struct_msqid_ds.h: Modified. + (msqid_ds): Modified. + * sysdeps/unix/sysv/linux/hppa/bits/types/struct_semid_ds.h: Modified. + (semid_ds): Modified. + * sysdeps/unix/sysv/linux/hppa/bits/types/struct_shmid_ds.h: Modified. + (shmid_ds): Modified. + * sysdeps/unix/sysv/linux/m68k/bits/struct_stat.h: Modified. + [! _BITS_STRUCT_STAT_H][__USE_LARGEFILE64](stat64): Modified. + [! _BITS_STRUCT_STAT_H](stat): Modified. + * sysdeps/unix/sysv/linux/microblaze/bits/struct_stat.h: Modified. + [! _BITS_STRUCT_STAT_H][! __USE_FILE_OFFSET64](stat): Modified. + [! _BITS_STRUCT_STAT_H][__USE_FILE_OFFSET64](stat): Modified. + [! _BITS_STRUCT_STAT_H][__USE_LARGEFILE64](stat64): Modified. + * sysdeps/unix/sysv/linux/mips/bits/socket-constants.h: Modified. + [__TIMESIZE != 64][! __USE_TIME_BITS64](SO_RCVTIMEO): Remove. + [__TIMESIZE != 64][! __USE_TIME_BITS64](SO_SNDTIMEO): Remove. + [__TIMESIZE != 64][! __USE_TIME_BITS64](SO_TIMESTAMP): Remove. + [__TIMESIZE != 64][! __USE_TIME_BITS64](SO_TIMESTAMPNS): Remove. + [__TIMESIZE != 64][! __USE_TIME_BITS64](SO_TIMESTAMPING): Remove. + [__TIMESIZE != 64][__USE_TIME_BITS64](SO_RCVTIMEO): Remove. + [__TIMESIZE != 64][__USE_TIME_BITS64](SO_SNDTIMEO): Remove. + [__TIMESIZE != 64][__USE_TIME_BITS64](SO_TIMESTAMP): Remove. + [__TIMESIZE != 64][__USE_TIME_BITS64](SO_TIMESTAMPNS): Remove. + [__TIMESIZE != 64][__USE_TIME_BITS64](SO_TIMESTAMPING): Remove. + [__TIMESIZE != 64][! __USE_TIME64_REDIRECTS](SO_RCVTIMEO): New. + [__TIMESIZE != 64][! __USE_TIME64_REDIRECTS](SO_SNDTIMEO): New. + [__TIMESIZE != 64][! __USE_TIME64_REDIRECTS](SO_TIMESTAMP): New. + [__TIMESIZE != 64][! __USE_TIME64_REDIRECTS](SO_TIMESTAMPNS): New. + [__TIMESIZE != 64][! __USE_TIME64_REDIRECTS](SO_TIMESTAMPING): New. + [__TIMESIZE != 64][__USE_TIME64_REDIRECTS](SO_RCVTIMEO): New. + [__TIMESIZE != 64][__USE_TIME64_REDIRECTS](SO_SNDTIMEO): New. + [__TIMESIZE != 64][__USE_TIME64_REDIRECTS](SO_TIMESTAMP): New. + [__TIMESIZE != 64][__USE_TIME64_REDIRECTS](SO_TIMESTAMPNS): New. + [__TIMESIZE != 64][__USE_TIME64_REDIRECTS](SO_TIMESTAMPING): New. + * sysdeps/unix/sysv/linux/mips/bits/struct_stat.h: Modified. + [! _BITS_STRUCT_STAT_H][_MIPS_SIM != _ABIO32][__USE_LARGEFILE64](stat64): Modified. + [! _BITS_STRUCT_STAT_H][_MIPS_SIM != _ABIO32](stat): Modified. + [! _BITS_STRUCT_STAT_H][_MIPS_SIM == _ABIO32][__USE_LARGEFILE64](stat64): Modified. + [! _BITS_STRUCT_STAT_H][_MIPS_SIM == _ABIO32](stat): Modified. + * sysdeps/unix/sysv/linux/mips/bits/types/struct_msqid_ds.h: Modified. + (msqid_ds): Modified. + * sysdeps/unix/sysv/linux/mips/bits/types/struct_semid_ds.h: Modified. + (semid_ds): Modified. + * sysdeps/unix/sysv/linux/mips/bits/types/struct_shmid_ds.h: Modified. + (shmid_ds): Modified. + * sysdeps/unix/sysv/linux/nios2/bits/struct_stat.h: Modified. + [! _BITS_STRUCT_STAT_H][__USE_LARGEFILE64](stat64): Modified. + [! _BITS_STRUCT_STAT_H](stat): Modified. + * sysdeps/unix/sysv/linux/powerpc/bits/socket-constants.h: Modified. + [__TIMESIZE != 64][! __USE_TIME_BITS64](SO_RCVTIMEO): Remove. + [__TIMESIZE != 64][! __USE_TIME_BITS64](SO_SNDTIMEO): Remove. + [__TIMESIZE != 64][! __USE_TIME_BITS64](SO_TIMESTAMP): Remove. + [__TIMESIZE != 64][! __USE_TIME_BITS64](SO_TIMESTAMPNS): Remove. + [__TIMESIZE != 64][! __USE_TIME_BITS64](SO_TIMESTAMPING): Remove. + [__TIMESIZE != 64][__USE_TIME_BITS64](SO_RCVTIMEO): Remove. + [__TIMESIZE != 64][__USE_TIME_BITS64](SO_SNDTIMEO): Remove. + [__TIMESIZE != 64][__USE_TIME_BITS64](SO_TIMESTAMP): Remove. + [__TIMESIZE != 64][__USE_TIME_BITS64](SO_TIMESTAMPNS): Remove. + [__TIMESIZE != 64][__USE_TIME_BITS64](SO_TIMESTAMPING): Remove. + [__TIMESIZE != 64][! __USE_TIME64_REDIRECTS](SO_RCVTIMEO): New. + [__TIMESIZE != 64][! __USE_TIME64_REDIRECTS](SO_SNDTIMEO): New. + [__TIMESIZE != 64][! __USE_TIME64_REDIRECTS](SO_TIMESTAMP): New. + [__TIMESIZE != 64][! __USE_TIME64_REDIRECTS](SO_TIMESTAMPNS): New. + [__TIMESIZE != 64][! __USE_TIME64_REDIRECTS](SO_TIMESTAMPING): New. + [__TIMESIZE != 64][__USE_TIME64_REDIRECTS](SO_RCVTIMEO): New. + [__TIMESIZE != 64][__USE_TIME64_REDIRECTS](SO_SNDTIMEO): New. + [__TIMESIZE != 64][__USE_TIME64_REDIRECTS](SO_TIMESTAMP): New. + [__TIMESIZE != 64][__USE_TIME64_REDIRECTS](SO_TIMESTAMPNS): New. + [__TIMESIZE != 64][__USE_TIME64_REDIRECTS](SO_TIMESTAMPING): New. + * sysdeps/unix/sysv/linux/powerpc/bits/struct_stat.h: Modified. + [! _BITS_STRUCT_STAT_H][__WORDSIZE == 32][__USE_LARGEFILE64](stat64): Modified. + [! _BITS_STRUCT_STAT_H][__WORDSIZE == 32](stat): Modified. + * sysdeps/unix/sysv/linux/powerpc/bits/types/struct_msqid_ds.h: Modified. + (msqid_ds): Modified. + * sysdeps/unix/sysv/linux/powerpc/bits/types/struct_semid_ds.h: Modified. + (semid_ds): Modified. + * sysdeps/unix/sysv/linux/powerpc/bits/types/struct_shmid_ds.h: Modified. + (shmid_ds): Modified. + * sysdeps/unix/sysv/linux/s390/bits/struct_stat.h: Modified. + [! _BITS_STRUCT_STAT_H][__USE_LARGEFILE64][__WORDSIZE != 64](stat64): Modified. + [! _BITS_STRUCT_STAT_H][__WORDSIZE != 64](stat): Modified. + * sysdeps/unix/sysv/linux/sh/bits/struct_stat.h: Modified. + [! _BITS_STRUCT_STAT_H][__USE_LARGEFILE64](stat64): Modified. + [! _BITS_STRUCT_STAT_H](stat): Modified. + * sysdeps/unix/sysv/linux/sparc/bits/socket-constants.h: Modified. + [__TIMESIZE != 64][! __USE_TIME_BITS64](SO_RCVTIMEO): Remove. + [__TIMESIZE != 64][! __USE_TIME_BITS64](SO_SNDTIMEO): Remove. + [__TIMESIZE != 64][! __USE_TIME_BITS64](SO_TIMESTAMP): Remove. + [__TIMESIZE != 64][! __USE_TIME_BITS64](SO_TIMESTAMPNS): Remove. + [__TIMESIZE != 64][! __USE_TIME_BITS64](SO_TIMESTAMPING): Remove. + [__TIMESIZE != 64][__USE_TIME_BITS64](SO_RCVTIMEO): Remove. + [__TIMESIZE != 64][__USE_TIME_BITS64](SO_SNDTIMEO): Remove. + [__TIMESIZE != 64][__USE_TIME_BITS64](SO_TIMESTAMP): Remove. + [__TIMESIZE != 64][__USE_TIME_BITS64](SO_TIMESTAMPNS): Remove. + [__TIMESIZE != 64][__USE_TIME_BITS64](SO_TIMESTAMPING): Remove. + [__TIMESIZE != 64][! __USE_TIME64_REDIRECTS](SO_RCVTIMEO): New. + [__TIMESIZE != 64][! __USE_TIME64_REDIRECTS](SO_SNDTIMEO): New. + [__TIMESIZE != 64][! __USE_TIME64_REDIRECTS](SO_TIMESTAMP): New. + [__TIMESIZE != 64][! __USE_TIME64_REDIRECTS](SO_TIMESTAMPNS): New. + [__TIMESIZE != 64][! __USE_TIME64_REDIRECTS](SO_TIMESTAMPING): New. + [__TIMESIZE != 64][__USE_TIME64_REDIRECTS](SO_RCVTIMEO): New. + [__TIMESIZE != 64][__USE_TIME64_REDIRECTS](SO_SNDTIMEO): New. + [__TIMESIZE != 64][__USE_TIME64_REDIRECTS](SO_TIMESTAMP): New. + [__TIMESIZE != 64][__USE_TIME64_REDIRECTS](SO_TIMESTAMPNS): New. + [__TIMESIZE != 64][__USE_TIME64_REDIRECTS](SO_TIMESTAMPING): New. + * sysdeps/unix/sysv/linux/sparc/bits/struct_stat.h: Modified. + [! _BITS_STRUCT_STAT_H][__USE_LARGEFILE64](stat64): Modified. + [! _BITS_STRUCT_STAT_H](stat): Modified. + * sysdeps/unix/sysv/linux/sparc/bits/types/struct_msqid_ds.h: Modified. + (msqid_ds): Modified. + * sysdeps/unix/sysv/linux/sparc/bits/types/struct_semid_ds.h: Modified. + (semid_ds): Modified. + * sysdeps/unix/sysv/linux/sparc/bits/types/struct_shmid_ds.h: Modified. + (shmid_ds): Modified. + * sysdeps/unix/sysv/linux/sys/epoll.h: Modified. + [! __USE_TIME_BITS64](epoll_pwait2): Remove. + [__USE_TIME_BITS64][! __REDIRECT](epoll_pwait2): Remove. + [__USE_TIME_BITS64][__REDIRECT](__REDIRECT): Remove. + [! __USE_TIME64_REDIRECTS](epoll_pwait2): New. + [__USE_TIME64_REDIRECTS][! __REDIRECT](epoll_pwait2): New. + [__USE_TIME64_REDIRECTS][__REDIRECT](__REDIRECT): New. + * sysdeps/unix/sysv/linux/sys/prctl.h: Modified. + [! __USE_TIME_BITS64](prctl): Remove. + [__USE_TIME_BITS64][! __REDIRECT](__prctl_time64): Remove. + [__USE_TIME_BITS64][! __REDIRECT](ioctl): Remove. + [__USE_TIME_BITS64][__REDIRECT](__REDIRECT_NTH): Remove. + [! __USE_TIME64_REDIRECTS](prctl): New. + [__USE_TIME64_REDIRECTS][! __REDIRECT](__prctl_time64): New. + [__USE_TIME64_REDIRECTS][! __REDIRECT](ioctl): New. + [__USE_TIME64_REDIRECTS][__REDIRECT](__REDIRECT_NTH): New. + * sysdeps/unix/sysv/linux/sys/timerfd.h: Modified. + [__USE_TIME_BITS64][!((__REDIRECT_NTH))](timerfd_settime): Remove. + [__USE_TIME_BITS64][!((__REDIRECT_NTH))](timerfd_gettime): Remove. + [__USE_TIME_BITS64][(__REDIRECT_NTH)](__REDIRECT_NTH): Remove. + [__USE_TIME_BITS64][(__REDIRECT_NTH)](__REDIRECT_NTH): Remove. + [__USE_TIME64_REDIRECTS][!((__REDIRECT_NTH))](timerfd_settime): New. + [__USE_TIME64_REDIRECTS][!((__REDIRECT_NTH))](timerfd_gettime): New. + [__USE_TIME64_REDIRECTS][(__REDIRECT_NTH)](__REDIRECT_NTH): New. + [__USE_TIME64_REDIRECTS][(__REDIRECT_NTH)](__REDIRECT_NTH): New. + * sysdeps/unix/sysv/linux/sys/timex.h: Modified. + [! __USE_TIME_BITS64][! __REDIRECT_NTH](ntp_gettime): Remove. + [! __USE_TIME_BITS64][__REDIRECT_NTH](__REDIRECT_NTH): Remove. + [! __USE_TIME_BITS64](adjtimex): Remove. + [! __USE_TIME_BITS64](ntp_gettimex): Remove. + [! __USE_TIME_BITS64](ntp_adjtime): Remove. + [__USE_TIME_BITS64][! __REDIRECT_NTH](adjtimex): Remove. + [__USE_TIME_BITS64][! __REDIRECT_NTH](ntp_adjtime): Remove. + [__USE_TIME_BITS64][! __REDIRECT_NTH](ntp_gettime): Remove. + [__USE_TIME_BITS64][! __REDIRECT_NTH](ntp_gettimex): Remove. + [__USE_TIME_BITS64][__REDIRECT_NTH](__REDIRECT_NTH): Remove. + [__USE_TIME_BITS64][__REDIRECT_NTH](__REDIRECT_NTH): Remove. + [__USE_TIME_BITS64][__REDIRECT_NTH](__REDIRECT_NTH): Remove. + [__USE_TIME_BITS64][__REDIRECT_NTH](__REDIRECT_NTH): Remove. + [! __USE_TIME64_REDIRECTS][! __REDIRECT_NTH](ntp_gettime): New. + [! __USE_TIME64_REDIRECTS][__REDIRECT_NTH](__REDIRECT_NTH): New. + [! __USE_TIME64_REDIRECTS](adjtimex): New. + [! __USE_TIME64_REDIRECTS](ntp_gettimex): New. + [! __USE_TIME64_REDIRECTS](ntp_adjtime): New. + [__USE_TIME64_REDIRECTS][! __REDIRECT_NTH](adjtimex): New. + [__USE_TIME64_REDIRECTS][! __REDIRECT_NTH](ntp_adjtime): New. + [__USE_TIME64_REDIRECTS][! __REDIRECT_NTH](ntp_gettime): New. + [__USE_TIME64_REDIRECTS][! __REDIRECT_NTH](ntp_gettimex): New. + [__USE_TIME64_REDIRECTS][__REDIRECT_NTH](__REDIRECT_NTH): New. + [__USE_TIME64_REDIRECTS][__REDIRECT_NTH](__REDIRECT_NTH): New. + [__USE_TIME64_REDIRECTS][__REDIRECT_NTH](__REDIRECT_NTH): New. + [__USE_TIME64_REDIRECTS][__REDIRECT_NTH](__REDIRECT_NTH): New. + * sysdeps/unix/sysv/linux/x86/bits/struct_stat.h: Modified. + [! _BITS_STRUCT_STAT_H][__USE_LARGEFILE64](stat64): Modified. + [! _BITS_STRUCT_STAT_H](stat): Modified. + * sysdeps/unix/sysv/linux/x86/bits/types/struct_semid_ds.h: Modified. + (semid_ds): Modified. + * sysvipc/sys/msg.h: Modified. + [! __USE_TIME_BITS64](msgctl): Remove. + [__USE_TIME_BITS64][! __REDIRECT_NTH](msgctl): Remove. + [__USE_TIME_BITS64][__REDIRECT_NTH](__REDIRECT_NTH): Remove. + [! __USE_TIME64_REDIRECTS](msgctl): New. + [__USE_TIME64_REDIRECTS][! __REDIRECT_NTH](msgctl): New. + [__USE_TIME64_REDIRECTS][__REDIRECT_NTH](__REDIRECT_NTH): New. + * sysvipc/sys/sem.h: Modified. + [! __USE_TIME_BITS64](semctl): Remove. + [__USE_GNU][! __USE_TIME_BITS64](semtimedop): Remove. + [__USE_GNU][__USE_TIME_BITS64][! __REDIRECT_NTH](semtimedop): Remove. + [__USE_GNU][__USE_TIME_BITS64][__REDIRECT_NTH](__REDIRECT_NTH): Remove. + [__USE_GNU][! __USE_TIME64_REDIRECTS](semtimedop): New. + [__USE_GNU][__USE_TIME64_REDIRECTS][! __REDIRECT_NTH](semtimedop): New. + [__USE_GNU][__USE_TIME64_REDIRECTS][__REDIRECT_NTH](__REDIRECT_NTH): New. + [__USE_TIME_BITS64][! __REDIRECT_NTH](semctl): Remove. + [__USE_TIME_BITS64][__REDIRECT_NTH](__REDIRECT_NTH): Remove. + [! __USE_TIME64_REDIRECTS](semctl): New. + [__USE_TIME64_REDIRECTS][! __REDIRECT_NTH](semctl): New. + [__USE_TIME64_REDIRECTS][__REDIRECT_NTH](__REDIRECT_NTH): New. + * sysvipc/sys/shm.h: Modified. + [! __USE_TIME_BITS64](shmctl): Remove. + [__USE_TIME_BITS64][! __REDIRECT_NTH](shmctl): Remove. + [__USE_TIME_BITS64][__REDIRECT_NTH](__REDIRECT_NTH): Remove. + [! __USE_TIME64_REDIRECTS](shmctl): New. + [__USE_TIME64_REDIRECTS][! __REDIRECT_NTH](shmctl): New. + [__USE_TIME64_REDIRECTS][__REDIRECT_NTH](__REDIRECT_NTH): New. + * time/bits/types/struct_timespec.h: Modified. + (timespec): Modified. + * time/bits/types/struct_timeval.h: Modified. + (timeval): Modified. + * time/bits/types/time_t.h: Modified. + [! __USE_TIME_BITS64](time_t): Remove. + [__USE_TIME_BITS64](time_t): Remove. + [! __USE_TIME64_REDIRECTS](time_t): New. + [__USE_TIME64_REDIRECTS](time_t): New. + * time/sys/time.h: Modified. + [! __USE_TIME_BITS64](gettimeofday): Remove. + [! __USE_TIME_BITS64](getitimer): Remove. + [! __USE_TIME_BITS64](setitimer): Remove. + [! __USE_TIME_BITS64](utimes): Remove. + [__USE_GNU][! __USE_TIME_BITS64](futimesat): Remove. + [__USE_GNU][__USE_TIME_BITS64][! __REDIRECT_NTH](futimesat): Remove. + [__USE_GNU][__USE_TIME_BITS64][__REDIRECT_NTH](__REDIRECT_NTH): Remove. + [__USE_GNU][! __USE_TIME64_REDIRECTS](futimesat): New. + [__USE_GNU][__USE_TIME64_REDIRECTS][! __REDIRECT_NTH](futimesat): New. + [__USE_GNU][__USE_TIME64_REDIRECTS][__REDIRECT_NTH](__REDIRECT_NTH): New. + [__USE_MISC][! __USE_TIME_BITS64](settimeofday): Remove. + [__USE_MISC][! __USE_TIME_BITS64](adjtime): Remove. + [__USE_MISC][! __USE_TIME_BITS64](lutimes): Remove. + [__USE_MISC][! __USE_TIME_BITS64](futimes): Remove. + [__USE_MISC][__USE_TIME_BITS64][! __REDIRECT_NTH](settimeofday): Remove. + [__USE_MISC][__USE_TIME_BITS64][! __REDIRECT_NTH](adjtime): Remove. + [__USE_MISC][__USE_TIME_BITS64][! __REDIRECT_NTH](lutimes): Remove. + [__USE_MISC][__USE_TIME_BITS64][! __REDIRECT_NTH](futimes): Remove. + [__USE_MISC][__USE_TIME_BITS64][__REDIRECT_NTH](__REDIRECT_NTH): Remove. + [__USE_MISC][__USE_TIME_BITS64][__REDIRECT_NTH](__REDIRECT_NTH): Remove. + [__USE_MISC][__USE_TIME_BITS64][__REDIRECT_NTH](__REDIRECT_NTH): Remove. + [__USE_MISC][__USE_TIME_BITS64][__REDIRECT_NTH](__REDIRECT_NTH): Remove. + [__USE_MISC][! __USE_TIME64_REDIRECTS](settimeofday): New. + [__USE_MISC][! __USE_TIME64_REDIRECTS](adjtime): New. + [__USE_MISC][! __USE_TIME64_REDIRECTS](lutimes): New. + [__USE_MISC][! __USE_TIME64_REDIRECTS](futimes): New. + [__USE_MISC][__USE_TIME64_REDIRECTS][! __REDIRECT_NTH](settimeofday): New. + [__USE_MISC][__USE_TIME64_REDIRECTS][! __REDIRECT_NTH](adjtime): New. + [__USE_MISC][__USE_TIME64_REDIRECTS][! __REDIRECT_NTH](lutimes): New. + [__USE_MISC][__USE_TIME64_REDIRECTS][! __REDIRECT_NTH](futimes): New. + [__USE_MISC][__USE_TIME64_REDIRECTS][__REDIRECT_NTH](__REDIRECT_NTH): New. + [__USE_MISC][__USE_TIME64_REDIRECTS][__REDIRECT_NTH](__REDIRECT_NTH): New. + [__USE_MISC][__USE_TIME64_REDIRECTS][__REDIRECT_NTH](__REDIRECT_NTH): New. + [__USE_MISC][__USE_TIME64_REDIRECTS][__REDIRECT_NTH](__REDIRECT_NTH): New. + [__USE_TIME_BITS64][! __REDIRECT_NTH](gettimeofday): Remove. + [__USE_TIME_BITS64][! __REDIRECT_NTH](getitimer): Remove. + [__USE_TIME_BITS64][! __REDIRECT_NTH](setitimer): Remove. + [__USE_TIME_BITS64][! __REDIRECT_NTH](utimes): Remove. + [__USE_TIME_BITS64][__REDIRECT_NTH](__REDIRECT_NTH): Remove. + [__USE_TIME_BITS64][__REDIRECT_NTH](__REDIRECT_NTH): Remove. + [__USE_TIME_BITS64][__REDIRECT_NTH](__REDIRECT_NTH): Remove. + [__USE_TIME_BITS64][__REDIRECT_NTH](__REDIRECT_NTH): Remove. + [! __USE_TIME64_REDIRECTS](gettimeofday): New. + [! __USE_TIME64_REDIRECTS](getitimer): New. + [! __USE_TIME64_REDIRECTS](setitimer): New. + [! __USE_TIME64_REDIRECTS](utimes): New. + [__USE_TIME64_REDIRECTS][! __REDIRECT_NTH](gettimeofday): New. + [__USE_TIME64_REDIRECTS][! __REDIRECT_NTH](getitimer): New. + [__USE_TIME64_REDIRECTS][! __REDIRECT_NTH](setitimer): New. + [__USE_TIME64_REDIRECTS][! __REDIRECT_NTH](utimes): New. + [__USE_TIME64_REDIRECTS][__REDIRECT_NTH](__REDIRECT_NTH): New. + [__USE_TIME64_REDIRECTS][__REDIRECT_NTH](__REDIRECT_NTH): New. + [__USE_TIME64_REDIRECTS][__REDIRECT_NTH](__REDIRECT_NTH): New. + [__USE_TIME64_REDIRECTS][__REDIRECT_NTH](__REDIRECT_NTH): New. + * time/time.h: Modified. + [! __USE_TIME_BITS64](time): Remove. + [! __USE_TIME_BITS64](difftime): Remove. + [! __USE_TIME_BITS64](mktime): Remove. + [! __USE_TIME_BITS64](gmtime): Remove. + [! __USE_TIME_BITS64](localtime): Remove. + [! __USE_TIME_BITS64](ctime): Remove. + [__GLIBC_USE (ISOC23)][! __USE_TIME_BITS64](timespec_getres): Remove. + [__GLIBC_USE (ISOC23)][__USE_TIME_BITS64][! __REDIRECT_NTH](timespec_getres): Remove. + [__GLIBC_USE (ISOC23)][__USE_TIME_BITS64][__REDIRECT_NTH](__REDIRECT_NTH): Remove. + [__GLIBC_USE (ISOC23)][! __USE_TIME64_REDIRECTS](timespec_getres): New. + [__GLIBC_USE (ISOC23)][__USE_TIME64_REDIRECTS][! __REDIRECT_NTH](timespec_getres): New. + [__GLIBC_USE (ISOC23)][__USE_TIME64_REDIRECTS][__REDIRECT_NTH](__REDIRECT_NTH): New. + [__USE_ISOC11][! __USE_TIME_BITS64](timespec_get): Remove. + [__USE_ISOC11][__USE_TIME_BITS64][! __REDIRECT_NTH](timespec_get): Remove. + [__USE_ISOC11][__USE_TIME_BITS64][__REDIRECT_NTH](__REDIRECT_NTH): Remove. + [__USE_ISOC11][! __USE_TIME64_REDIRECTS](timespec_get): New. + [__USE_ISOC11][__USE_TIME64_REDIRECTS][! __REDIRECT_NTH](timespec_get): New. + [__USE_ISOC11][__USE_TIME64_REDIRECTS][__REDIRECT_NTH](__REDIRECT_NTH): New. + [__USE_MISC][! __USE_TIME_BITS64](timelocal): Remove. + [__USE_MISC][__USE_TIME_BITS64][__REDIRECT_NTH](__REDIRECT_NTH): Remove. + [__USE_MISC][! __USE_TIME64_REDIRECTS](timelocal): New. + [__USE_MISC][__USE_TIME64_REDIRECTS][__REDIRECT_NTH](__REDIRECT_NTH): New. + [__USE_MISC || __GLIBC_USE (ISOC23)][! __USE_TIME_BITS64](timegm): Remove. + [__USE_MISC || __GLIBC_USE (ISOC23)][__USE_TIME_BITS64][! __REDIRECT_NTH](timegm): Remove. + [__USE_MISC || __GLIBC_USE (ISOC23)][__USE_TIME_BITS64][__REDIRECT_NTH](__REDIRECT_NTH): Remove. + [__USE_MISC || __GLIBC_USE (ISOC23)][! __USE_TIME64_REDIRECTS](timegm): New. + [__USE_MISC || __GLIBC_USE (ISOC23)][__USE_TIME64_REDIRECTS][! __REDIRECT_NTH](timegm): New. + [__USE_MISC || __GLIBC_USE (ISOC23)][__USE_TIME64_REDIRECTS][__REDIRECT_NTH](__REDIRECT_NTH): New. + [__USE_POSIX][! __USE_TIME_BITS64](ctime_r): Remove. + [__USE_POSIX][__USE_TIME_BITS64][! __REDIRECT_NTH](ctime_r): Remove. + [__USE_POSIX][__USE_TIME_BITS64][__REDIRECT_NTH](__REDIRECT_NTH): Remove. + [__USE_POSIX][! __USE_TIME64_REDIRECTS](ctime_r): New. + [__USE_POSIX][__USE_TIME64_REDIRECTS][! __REDIRECT_NTH](ctime_r): New. + [__USE_POSIX][__USE_TIME64_REDIRECTS][__REDIRECT_NTH](__REDIRECT_NTH): New. + [__USE_POSIX || __GLIBC_USE (ISOC23)][! __USE_TIME_BITS64](gmtime_r): Remove. + [__USE_POSIX || __GLIBC_USE (ISOC23)][! __USE_TIME_BITS64](localtime_r): Remove. + [__USE_POSIX || __GLIBC_USE (ISOC23)][__USE_TIME_BITS64][! __REDIRECT_NTH](gmtime_r): Remove. + [__USE_POSIX || __GLIBC_USE (ISOC23)][__USE_TIME_BITS64][! __REDIRECT_NTH](localtime_r): Remove. + [__USE_POSIX || __GLIBC_USE (ISOC23)][__USE_TIME_BITS64][__REDIRECT_NTH](__REDIRECT_NTH): Remove. + [__USE_POSIX || __GLIBC_USE (ISOC23)][__USE_TIME_BITS64][__REDIRECT_NTH](__REDIRECT_NTH): Remove. + [__USE_POSIX || __GLIBC_USE (ISOC23)][! __USE_TIME64_REDIRECTS](gmtime_r): New. + [__USE_POSIX || __GLIBC_USE (ISOC23)][! __USE_TIME64_REDIRECTS](localtime_r): New. + [__USE_POSIX || __GLIBC_USE (ISOC23)][__USE_TIME64_REDIRECTS][! __REDIRECT_NTH](gmtime_r): New. + [__USE_POSIX || __GLIBC_USE (ISOC23)][__USE_TIME64_REDIRECTS][! __REDIRECT_NTH](localtime_r): New. + [__USE_POSIX || __GLIBC_USE (ISOC23)][__USE_TIME64_REDIRECTS][__REDIRECT_NTH](__REDIRECT_NTH): New. + [__USE_POSIX || __GLIBC_USE (ISOC23)][__USE_TIME64_REDIRECTS][__REDIRECT_NTH](__REDIRECT_NTH): New. + [__USE_POSIX199309][! __USE_TIME_BITS64](nanosleep): Remove. + [__USE_POSIX199309][! __USE_TIME_BITS64](clock_getres): Remove. + [__USE_POSIX199309][! __USE_TIME_BITS64](clock_gettime): Remove. + [__USE_POSIX199309][! __USE_TIME_BITS64](clock_settime): Remove. + [__USE_POSIX199309][! __USE_TIME_BITS64](timer_settime): Remove. + [__USE_POSIX199309][! __USE_TIME_BITS64](timer_gettime): Remove. + [__USE_POSIX199309][__USE_TIME_BITS64][! __REDIRECT](nanosleep): Remove. + [__USE_POSIX199309][__USE_TIME_BITS64][! __REDIRECT](clock_getres): Remove. + [__USE_POSIX199309][__USE_TIME_BITS64][! __REDIRECT](clock_gettime): Remove. + [__USE_POSIX199309][__USE_TIME_BITS64][! __REDIRECT](clock_settime): Remove. + [__USE_POSIX199309][__USE_TIME_BITS64][! __REDIRECT_NTH](timer_settime): Remove. + [__USE_POSIX199309][__USE_TIME_BITS64][! __REDIRECT_NTH](timer_gettime): Remove. + [__USE_POSIX199309][__USE_TIME_BITS64][__REDIRECT](__REDIRECT): Remove. + [__USE_POSIX199309][__USE_TIME_BITS64][__REDIRECT](__REDIRECT_NTH): Remove. + [__USE_POSIX199309][__USE_TIME_BITS64][__REDIRECT](__REDIRECT_NTH): Remove. + [__USE_POSIX199309][__USE_TIME_BITS64][__REDIRECT](__REDIRECT_NTH): Remove. + [__USE_POSIX199309][__USE_TIME_BITS64][__REDIRECT_NTH](__REDIRECT_NTH): Remove. + [__USE_POSIX199309][__USE_TIME_BITS64][__REDIRECT_NTH](__REDIRECT_NTH): Remove. + [__USE_POSIX199309][__USE_XOPEN2K][! __USE_TIME_BITS64](clock_nanosleep): Remove. + [__USE_POSIX199309][__USE_XOPEN2K][__USE_TIME_BITS64][! __REDIRECT](clock_nanosleep): Remove. + [__USE_POSIX199309][__USE_XOPEN2K][__USE_TIME_BITS64][__REDIRECT](__REDIRECT): Remove. + [__USE_POSIX199309][__USE_XOPEN2K][! __USE_TIME64_REDIRECTS](clock_nanosleep): New. + [__USE_POSIX199309][__USE_XOPEN2K][__USE_TIME64_REDIRECTS][! __REDIRECT](clock_nanosleep): New. + [__USE_POSIX199309][__USE_XOPEN2K][__USE_TIME64_REDIRECTS][__REDIRECT](__REDIRECT): New. + [__USE_POSIX199309][! __USE_TIME64_REDIRECTS](nanosleep): New. + [__USE_POSIX199309][! __USE_TIME64_REDIRECTS](clock_getres): New. + [__USE_POSIX199309][! __USE_TIME64_REDIRECTS](clock_gettime): New. + [__USE_POSIX199309][! __USE_TIME64_REDIRECTS](clock_settime): New. + [__USE_POSIX199309][! __USE_TIME64_REDIRECTS](timer_settime): New. + [__USE_POSIX199309][! __USE_TIME64_REDIRECTS](timer_gettime): New. + [__USE_POSIX199309][__USE_TIME64_REDIRECTS][! __REDIRECT](nanosleep): New. + [__USE_POSIX199309][__USE_TIME64_REDIRECTS][! __REDIRECT](clock_getres): New. + [__USE_POSIX199309][__USE_TIME64_REDIRECTS][! __REDIRECT](clock_gettime): New. + [__USE_POSIX199309][__USE_TIME64_REDIRECTS][! __REDIRECT](clock_settime): New. + [__USE_POSIX199309][__USE_TIME64_REDIRECTS][! __REDIRECT_NTH](timer_settime): New. + [__USE_POSIX199309][__USE_TIME64_REDIRECTS][! __REDIRECT_NTH](timer_gettime): New. + [__USE_POSIX199309][__USE_TIME64_REDIRECTS][__REDIRECT](__REDIRECT): New. + [__USE_POSIX199309][__USE_TIME64_REDIRECTS][__REDIRECT](__REDIRECT_NTH): New. + [__USE_POSIX199309][__USE_TIME64_REDIRECTS][__REDIRECT](__REDIRECT_NTH): New. + [__USE_POSIX199309][__USE_TIME64_REDIRECTS][__REDIRECT](__REDIRECT_NTH): New. + [__USE_POSIX199309][__USE_TIME64_REDIRECTS][__REDIRECT_NTH](__REDIRECT_NTH): New. + [__USE_POSIX199309][__USE_TIME64_REDIRECTS][__REDIRECT_NTH](__REDIRECT_NTH): New. + [__USE_TIME_BITS64][! __REDIRECT_NTH](time): Remove. + [__USE_TIME_BITS64][! __REDIRECT_NTH](difftime): Remove. + [__USE_TIME_BITS64][! __REDIRECT_NTH](mktime): Remove. + [__USE_TIME_BITS64][! __REDIRECT_NTH](gmtime): Remove. + [__USE_TIME_BITS64][! __REDIRECT_NTH](localtime): Remove. + [__USE_TIME_BITS64][! __REDIRECT_NTH](ctime): Remove. + [__USE_TIME_BITS64][__REDIRECT_NTH](__REDIRECT_NTH): Remove. + [__USE_TIME_BITS64][__REDIRECT_NTH](__REDIRECT_NTH): Remove. + [__USE_TIME_BITS64][__REDIRECT_NTH](__REDIRECT_NTH): Remove. + [__USE_TIME_BITS64][__REDIRECT_NTH](__REDIRECT_NTH): Remove. + [__USE_TIME_BITS64][__REDIRECT_NTH](__REDIRECT_NTH): Remove. + [__USE_TIME_BITS64][__REDIRECT_NTH](__REDIRECT_NTH): Remove. + [! __USE_TIME64_REDIRECTS](time): New. + [! __USE_TIME64_REDIRECTS](difftime): New. + [! __USE_TIME64_REDIRECTS](mktime): New. + [! __USE_TIME64_REDIRECTS](gmtime): New. + [! __USE_TIME64_REDIRECTS](localtime): New. + [! __USE_TIME64_REDIRECTS](ctime): New. + [__USE_TIME64_REDIRECTS][! __REDIRECT_NTH](time): New. + [__USE_TIME64_REDIRECTS][! __REDIRECT_NTH](difftime): New. + [__USE_TIME64_REDIRECTS][! __REDIRECT_NTH](mktime): New. + [__USE_TIME64_REDIRECTS][! __REDIRECT_NTH](gmtime): New. + [__USE_TIME64_REDIRECTS][! __REDIRECT_NTH](localtime): New. + [__USE_TIME64_REDIRECTS][! __REDIRECT_NTH](ctime): New. + [__USE_TIME64_REDIRECTS][__REDIRECT_NTH](__REDIRECT_NTH): New. + [__USE_TIME64_REDIRECTS][__REDIRECT_NTH](__REDIRECT_NTH): New. + [__USE_TIME64_REDIRECTS][__REDIRECT_NTH](__REDIRECT_NTH): New. + [__USE_TIME64_REDIRECTS][__REDIRECT_NTH](__REDIRECT_NTH): New. + [__USE_TIME64_REDIRECTS][__REDIRECT_NTH](__REDIRECT_NTH): New. + [__USE_TIME64_REDIRECTS][__REDIRECT_NTH](__REDIRECT_NTH): New. + +2024-04-01 Adhemerval Zanella <adhemerval.zanella@linaro.org> + + COMMIT: a0698a5e92ceeed3409d28623b1d599da6bc887d + benchtests: Improve benchtests for strstr + + * benchtests/bench-strcasestr.c: Modified. + (proto_t): Modified. + (do_one_test): Modified function. + (do_test): Modified function. + (test_main): Modified function. + (MIN_PAGE_SIZE): New. + (json-lib.h): Include file. + (input): New. + (test_hard_needle): New function. + +2024-03-27 Adhemerval Zanella <adhemerval.zanella@linaro.org> + + COMMIT: 721314c980ed371d36a84f63c393e4289e249b3b + x86_64: Remove avx512 strstr implementation + + * sysdeps/x86_64/multiarch/Makefile: Modified. + * sysdeps/x86_64/multiarch/ifunc-impl-list.c: Modified. + (__libc_ifunc_impl_list): Modified function. + * sysdeps/x86_64/multiarch/strstr-avx512.c: Delete file. + * sysdeps/x86_64/multiarch/strstr.c: Modified. + (__strstr_avx512): Remove. + (IFUNC_SELECTOR): Remove function. + (libc_ifunc_redirected): Remove. + (libc_ifunc): New. + +2024-03-27 Adhemerval Zanella <adhemerval.zanella@linaro.org> + + COMMIT: 2e53eb923486704b7a0d6f3d81d1ee8ba672a56b + signal: Avoid system signal disposition to interfere with tests + + * signal/tst-sigset2.c: Modified. + (main): Modified function. + (support/xsignal.h): Include file. + * sysdeps/pthread/tst-signal1.c: Modified. + (do_test): Modified function. + (support/xsignal.h): Include file. + +2024-03-25 Palmer Dabbelt <palmer@rivosinc.com> + + COMMIT: 96d1b9ac2321b565f340ba8f3674597141e3450d + RISC-V: Fix the static-PIE non-relocated object check + + * sysdeps/riscv/dl-machine.h: Modified. + [RESOLVE_MAP](elf_machine_runtime_setup): Modified function. + +2024-03-23 Sergey Bugaev <bugaevc@gmail.com> + + COMMIT: dc1a77269c971652a8a5167ec366792eae052e65 + htl: Implement some support for TLS_DTV_AT_TP + + * htl/pt-create.c: Modified. + (__pthread_create_internal): Modified function. + * sysdeps/htl/dl-thread_gscope_wait.c: Modified. + (__thread_gscope_wait): Modified function. + (thread_gscope_flag): New function. + * sysdeps/mach/hurd/htl/pt-sysdep.c: Modified. + (_init_routine): Modified function. + +2024-03-23 Sergey Bugaev <bugaevc@gmail.com> + + COMMIT: a4273efa219480a7f2c9c8fa7bc8bb71c48c3604 + htl: Respect GL(dl_stack_flags) when allocating stacks + + * sysdeps/htl/Versions: Modified. + * sysdeps/mach/htl/pt-stack-alloc.c: Modified. + (__pthread_stack_alloc): Modified function. + +2024-03-23 Sergey Bugaev <bugaevc@gmail.com> + + COMMIT: b467cfcaee34452df845c678dd2ba36ea2221855 + hurd: Use the RETURN_ADDRESS macro + + * sysdeps/mach/hurd/init-first.c: Modified. + [! SHARED](_hurd_stack_setup): Modified function. + +2024-03-23 Sergey Bugaev <bugaevc@gmail.com> + + COMMIT: 6afeac1289b92bc893613cc9efc9b5c692369e64 + hurd: Disable Prefer_MAP_32BIT_EXEC on non-x86_64 for now + + * sysdeps/mach/hurd/dl-sysdep.c: Modified. + (__mmap): Modified function. + * sysdeps/mach/hurd/mmap.c: Modified. + (__mmap): Modified function. + +2024-03-23 Sergey Bugaev <bugaevc@gmail.com> + + COMMIT: 49aa652db810ebdca3a662ebd5b0468bd08ec688 + Allow glibc to be compiled without EXEC_PAGESIZE + + * elf/dl-support.c: Modified. + [! HAVE_AUX_VECTOR](__rtld_lock_define_initialized_recursive): Remove. + [! PTHREAD_IN_LIBC](_dl_make_stack_executable): Remove. + [! PTHREAD_IN_LIBC](_dl_nothread_init_static_tls): Remove. + [DL_SYSINFO_IMPLEMENTATION](DL_SYSINFO_IMPLEMENTATION): Remove. + [HAVE_AUX_VECTOR](dl-parse_auxv.h): Remove. + [HAVE_AUX_VECTOR](_dl_clktck): Remove. + [HAVE_AUX_VECTOR](_dl_aux_init): Remove. + [NEED_DL_SYSINFO](_dl_sysinfo): Remove. + [NEED_DL_SYSINFO_DSO](_dl_sysinfo_dso): Remove. + [NEED_DL_SYSINFO_DSO](_dl_sysinfo_map): Remove. + [NEED_DL_SYSINFO_DSO](get-dynamic-info.h): Remove. + [PTHREAD_IN_LIBC](_dl_stack_used): Remove. + [PTHREAD_IN_LIBC](_dl_stack_user): Remove. + [PTHREAD_IN_LIBC](_dl_stack_cache): Remove. + [PTHREAD_IN_LIBC](_dl_stack_cache_actsize): Remove. + [PTHREAD_IN_LIBC](_dl_in_flight_stack): Remove. + [PTHREAD_IN_LIBC](_dl_stack_cache_lock): Remove. + (_dl_pagesize): Remove. + (_dl_minsigstacksize): Remove. + (_dl_inhibit_cache): Remove. + (_dl_all_dirs): Remove. + (_dl_init_all_dirs): Remove. + (_dl_initfirst): Remove. + (_dl_debug_fd): Remove. + (_dl_auxv): Remove. + (_dl_phdr): Remove. + (_dl_phnum): Remove. + (_dl_hwcap): Remove. + (_dl_hwcap2): Remove. + (_dl_hwcap3): Remove. + (_dl_hwcap4): Remove. + (_dl_dso_sort_algo): Remove. + (_dl_fpu_control): Remove. + (_dl_stack_flags): Remove. + (_dl_scope_free_list): Remove. + (setup-vdso.h): Remove include. + (dl-vdso-setup.c): Remove include. + (__rtld_lock_define_initialized_recursive): Remove function. + (_dl_get_dl_main_map): Remove function. + (_dl_audit_pltexit): Remove function. + [EXEC_PAGESIZE][! HAVE_AUX_VECTOR](__rtld_lock_define_initialized_recursive): New. + [EXEC_PAGESIZE][! PTHREAD_IN_LIBC](_dl_make_stack_executable): New. + [EXEC_PAGESIZE][! PTHREAD_IN_LIBC](_dl_nothread_init_static_tls): New. + [EXEC_PAGESIZE][DL_SYSINFO_IMPLEMENTATION](DL_SYSINFO_IMPLEMENTATION): New. + [EXEC_PAGESIZE][HAVE_AUX_VECTOR](dl-parse_auxv.h): New. + [EXEC_PAGESIZE][HAVE_AUX_VECTOR](_dl_clktck): New. + [EXEC_PAGESIZE][HAVE_AUX_VECTOR](_dl_aux_init): New. + [EXEC_PAGESIZE][NEED_DL_SYSINFO](_dl_sysinfo): New. + [EXEC_PAGESIZE][NEED_DL_SYSINFO_DSO](_dl_sysinfo_dso): New. + [EXEC_PAGESIZE][NEED_DL_SYSINFO_DSO](_dl_sysinfo_map): New. + [EXEC_PAGESIZE][NEED_DL_SYSINFO_DSO](get-dynamic-info.h): New. + [EXEC_PAGESIZE][PTHREAD_IN_LIBC](_dl_stack_used): New. + [EXEC_PAGESIZE][PTHREAD_IN_LIBC](_dl_stack_user): New. + [EXEC_PAGESIZE][PTHREAD_IN_LIBC](_dl_stack_cache): New. + [EXEC_PAGESIZE][PTHREAD_IN_LIBC](_dl_stack_cache_actsize): New. + [EXEC_PAGESIZE][PTHREAD_IN_LIBC](_dl_in_flight_stack): New. + [EXEC_PAGESIZE][PTHREAD_IN_LIBC](_dl_stack_cache_lock): New. + [EXEC_PAGESIZE](_dl_pagesize): New. + [EXEC_PAGESIZE](_dl_minsigstacksize): New. + [EXEC_PAGESIZE](_dl_inhibit_cache): New. + [EXEC_PAGESIZE](_dl_all_dirs): New. + [EXEC_PAGESIZE](_dl_init_all_dirs): New. + [EXEC_PAGESIZE](_dl_initfirst): New. + [EXEC_PAGESIZE](_dl_debug_fd): New. + [EXEC_PAGESIZE](_dl_auxv): New. + [EXEC_PAGESIZE](_dl_phdr): New. + [EXEC_PAGESIZE](_dl_phnum): New. + [EXEC_PAGESIZE](_dl_hwcap): New. + [EXEC_PAGESIZE](_dl_hwcap2): New. + [EXEC_PAGESIZE](_dl_hwcap3): New. + [EXEC_PAGESIZE](_dl_hwcap4): New. + [EXEC_PAGESIZE](_dl_dso_sort_algo): New. + [EXEC_PAGESIZE](_dl_fpu_control): New. + [EXEC_PAGESIZE](_dl_stack_flags): New. + [EXEC_PAGESIZE](_dl_scope_free_list): New. + [EXEC_PAGESIZE](setup-vdso.h): New. + [EXEC_PAGESIZE](dl-vdso-setup.c): New. + [EXEC_PAGESIZE](__rtld_lock_define_initialized_recursive): New. + [EXEC_PAGESIZE](_dl_get_dl_main_map): New. + [EXEC_PAGESIZE](_dl_audit_pltexit): New. + * elf/rtld.c: Modified. + * libio/libioP.h: Modified. + [_G_HAVE_MMAP][! MAP_ANONYMOUS || ! EXEC_PAGESIZE](_G_HAVE_MMAP): Remove. + [_G_HAVE_MMAP][! MAP_ANONYMOUS](_G_HAVE_MMAP): New. + +2024-03-23 Sergey Bugaev <bugaevc@gmail.com> + + COMMIT: 4648bfbbde5466929d24013478697cbdec847b46 + hurd: Stop relying on VM_MAX_ADDRESS + + * hurd/hurdsig.c: Modified. + (_hurdsig_getenv): Modified function. + +2024-03-23 Sergey Bugaev <bugaevc@gmail.com> + + COMMIT: 7f02511e5b8879430e2b3c51601341d3c0314071 + hurd: Move internal functions to internal header + + * hurd/hurd/signal.h: Modified. + [! _HURD_SIGNAL_H_EXTERN_INLINE](_HURD_SIGNAL_H_EXTERN_INLINE): Remove. + [__USE_EXTERN_INLINES && _LIBC][IS_IN (libc)](_hurd_self_sigstate): Remove. + [__USE_EXTERN_INLINES && _LIBC][IS_IN (libc)](_hurd_critical_section_lock): Remove. + [__USE_EXTERN_INLINES && _LIBC][IS_IN (libc)](_hurd_critical_section_unlock): Remove. + [__USE_EXTERN_INLINES && _LIBC][IS_IN (libc) || IS_IN (libpthread)](sigsetops.h): Remove. + * sysdeps/hurd/include/hurd/signal.h: Modified. + [! _HURD_SIGNAL_H][! _ISOMAC][! _HURD_SIGNAL_H_EXTERN_INLINE](_HURD_SIGNAL_H_EXTERN_INLINE): New. + [! _HURD_SIGNAL_H][! _ISOMAC][__USE_EXTERN_INLINES][IS_IN (libc) || IS_IN (libpthread)](sigsetops.h): New. + [! _HURD_SIGNAL_H][! _ISOMAC][__USE_EXTERN_INLINES][IS_IN (libc) || IS_IN (libpthread)](tls.h): New. + [! _HURD_SIGNAL_H][! _ISOMAC][__USE_EXTERN_INLINES && IS_IN (libc)](_hurd_self_sigstate): New. + [! _HURD_SIGNAL_H][! _ISOMAC][__USE_EXTERN_INLINES && IS_IN (libc)](_hurd_critical_section_lock): New. + [! _HURD_SIGNAL_H][! _ISOMAC][__USE_EXTERN_INLINES && IS_IN (libc)](_hurd_critical_section_unlock): New. + +2024-03-23 Stafford Horne <shorne@gmail.com> + + COMMIT: 4a13b3ef46fc10e695630d4774af7fe4944f64ca + stdlib: Fix tst-makecontext2 log when swapcontext fails + + * stdlib/tst-makecontext2.c: Modified. + (do_test): Modified function. + +2024-03-22 Stafford Horne <shorne@gmail.com> + + COMMIT: ad05a42370fa09062ff2b450fb69905d9f407643 + or1k: Add prctl wrapper to unwrap variadic args + + * sysdeps/unix/sysv/linux/or1k/prctl.c: New file. + +2024-03-22 Stafford Horne <shorne@gmail.com> + + COMMIT: df7e29e2a4aadc7e19669eaf953cee1bcf8b156f + or1k: Only define fpu rouding and exceptions with hard-float + + * sysdeps/or1k/bits/fenv.h: Modified. + (<anonymous>): Remove. + (FE_ALL_EXCEPT): Remove. + (FE_TONEAREST): Remove. + (FE_TOWARDZERO): Remove. + (FE_UPWARD): Remove. + (FE_DOWNWARD): Remove. + [! __or1k_hard_float__](<anonymous>): New. + [! __or1k_hard_float__](FE_ALL_EXCEPT): New. + [__or1k_hard_float__](<anonymous>): New. + [__or1k_hard_float__](FE_ALL_EXCEPT): New. + [__or1k_hard_float__](FE_TONEAREST): New. + [__or1k_hard_float__](FE_TOWARDZERO): New. + [__or1k_hard_float__](FE_UPWARD): New. + [__or1k_hard_float__](FE_DOWNWARD): New. + +2024-03-22 Stafford Horne <shorne@gmail.com> + + COMMIT: 2e982a3937f20156a72a59560061dda006d3480b + or1k: Update libm test ulps + + * sysdeps/or1k/libm-test-ulps: Modified. + +2024-03-21 Wilco Dijkstra <wilco.dijkstra@arm.com> + + COMMIT: 2e94e2f5d2bf2de124c8ad7da85463355e54ccb2 + AArch64: Check kernel version for SVE ifuncs + + * sysdeps/aarch64/cpu-features.h: Modified. + (cpu_features): Modified. + * sysdeps/aarch64/multiarch/init-arch.h: Modified. + (INIT_ARCH): Modified. + * sysdeps/aarch64/multiarch/memcpy.c: Modified. + (__typeof): Modified function. + * sysdeps/aarch64/multiarch/memmove.c: Modified. + (__typeof): Modified function. + * sysdeps/unix/sysv/linux/aarch64/cpu-features.c: Modified. + (init_cpu_features): Modified function. + [__LINUX_KERNEL_VERSION < 0x060200](prefer_sve_ifuncs): New. + (sys/utsname.h): Include file. + +2024-03-19 Amrita H S <amritahs@linux.ibm.com> + + COMMIT: 1ea051145612f199d8716ecdf78b084b00b5a727 + powerpc: Placeholder and infrastructure/build support to add Power11 related changes. + + * sysdeps/powerpc/dl-procinfo.h: Modified. + (_DL_PLATFORMS_COUNT): Modified. + (_dl_string_platform): Modified function. + (PPC_PLATFORM_POWER11): New. + * sysdeps/powerpc/powerpc32/power11/Implies: New file. + * sysdeps/powerpc/powerpc32/power11/fpu/multiarch/Implies: New file. + * sysdeps/powerpc/powerpc32/power11/multiarch/Implies: New file. + * sysdeps/powerpc/powerpc64/be/power11/Implies: New file. + * sysdeps/powerpc/powerpc64/be/power11/fpu/Implies: New file. + * sysdeps/powerpc/powerpc64/be/power11/fpu/multiarch/Implies: New file. + * sysdeps/powerpc/powerpc64/be/power11/multiarch/Implies: New file. + * sysdeps/powerpc/powerpc64/le/power11/Implies: New file. + * sysdeps/powerpc/powerpc64/le/power11/fpu/Implies: New file. + * sysdeps/powerpc/powerpc64/le/power11/fpu/multiarch/Implies: New file. + * sysdeps/powerpc/powerpc64/le/power11/multiarch/Implies: New file. + * sysdeps/powerpc/powerpc64/le/tst-glibc-hwcaps.c: Modified. + (compute_level): Modified function. + * sysdeps/powerpc/preconfigure: Modified. + * sysdeps/powerpc/preconfigure.ac: Modified. + +2024-03-19 Manjunath Matti <mmatti@linux.ibm.com> + + COMMIT: 3ab9b88e2ac91062b6d493fe32bd101a55006c6a + powerpc: Add HWCAP3/HWCAP4 data to TCB for Power Architecture. + + * elf/dl-diagnostics.c: Modified. + (_dl_print_diagnostics): Modified function. + * elf/dl-support.c: Modified. + (_dl_hwcap3): New. + (_dl_hwcap4): New. + * elf/elf.h: Modified. + (AT_HWCAP3): New. + (AT_HWCAP4): New. + * sysdeps/generic/ldsodefs.h: Modified. + [SHARED](rtld_global_ro): Modified. + * sysdeps/powerpc/dl-procinfo.c: Modified. + (_DL_HWCAP_COUNT): New. + * sysdeps/powerpc/dl-procinfo.h: Modified. + [IS_IN (rtld)](_dl_procinfo): Modified function. + (_DL_HWCAP_COUNT): Remove. + (_DL_HWCAP_LAST): Remove. + (_DL_HWCAP2_LAST): Remove. + (_DL_HWCAP_SIZE): New. + (_DL_HWCAP2_OFFSET): New. + (_DL_HWCAP3_OFFSET): New. + (_DL_HWCAP4_OFFSET): New. + * sysdeps/powerpc/hwcapinfo.c: Modified. + (__tcb_parse_hwcap_and_convert_at_platform): Modified function. + * sysdeps/unix/sysv/linux/dl-parse_auxv.h: Modified. + (_dl_parse_auxv): Modified function. + * sysdeps/unix/sysv/linux/dl-sysdep.c: Modified. + [SHARED](_dl_show_auxv): Modified function. + * sysdeps/unix/sysv/linux/powerpc/cpu-features.c: Modified. + (init_cpu_features): Modified function. + * sysdeps/unix/sysv/linux/powerpc/cpu-features.h: Modified. + (cpu_features): Modified. + * sysdeps/unix/sysv/linux/powerpc/libc-start.c: Modified. + (__libc_start_main_impl): Modified function. + +2024-03-19 Adhemerval Zanella <adhemerval.zanella@linaro.org> + + COMMIT: 3d53d18fc71c5d9ef4773b8bce04d54b80181926 + elf: Enable TLS descriptor tests on aarch64 + + * configure: Modified. + * configure.ac: Modified. + * elf/Makefile: Modified. + * sysdeps/aarch64/preconfigure: Modified. + * sysdeps/arm/Makefile: Modified. + +2024-03-19 Adhemerval Zanella <adhemerval.zanella@linaro.org> + + COMMIT: 64c7e344289ed085517c2227d8e3b06388242c13 + arm: Update _dl_tlsdesc_dynamic to preserve caller-saved registers (BZ 31372) + + * config.h.in: Modified. + * elf/Makefile: Modified. + * elf/tst-gnu2-tls2.h: Modified. + [! INIT_TLSDESC_CALL](INIT_TLSDESC_CALL): New. + * elf/tst-gnu2-tls2mod0.c: Modified. + (tst-gnu2-tls2.h): Modified. + (apply_tls): Modified function. + * elf/tst-gnu2-tls2mod1.c: Modified. + (tst-gnu2-tls2.h): Modified. + (apply_tls): Modified function. + * elf/tst-gnu2-tls2mod2.c: Modified. + (tst-gnu2-tls2.h): Modified. + (apply_tls): Modified function. + * sysdeps/arm/configure: Modified. + * sysdeps/arm/configure.ac: Modified. + * sysdeps/arm/dl-tlsdesc.S: Modified. + * sysdeps/arm/tst-gnu2-tls2.h: New file. + +2024-03-19 Adhemerval Zanella <adhemerval.zanella@linaro.org> + + COMMIT: 968b0ca9440040a2b31248a572891f0e55c1ab10 + Ignore undefined symbols for -mtls-dialect=gnu2 + + * configure: Modified. + * configure.ac: Modified. + +2024-03-19 Andreas Schwab <schwab@suse.de> + + COMMIT: fd7ee2e6c5eb49e4a630a9978b4d668bff6354ee + Add tst-gnu2-tls2mod1 to test-internal-extras + + * sysdeps/x86_64/Makefile: Modified. + +2024-03-18 H.J. Lu <hjl.tools@gmail.com> + + COMMIT: 717ebfa85c8240d32d0d19d86a484c31c55c9617 + x86-64: Allocate state buffer space for RDI, RSI and RBX + + * sysdeps/x86/cpu-features.c: Modified. + (update_active): Modified function. + * sysdeps/x86/sysdep.h: Modified. + [! __x86_64__](TLSDESC_CALL_REGISTER_SAVE_AREA): New. + [__x86_64__](TLSDESC_CALL_REGISTER_SAVE_AREA): New. + * sysdeps/x86_64/tst-gnu2-tls2mod1.S: New file. + +2024-03-18 Darius Rad <darius@bluespec.com> + + COMMIT: f44f3aed31a2d18dc1aa70fce8d466cf6e56b93c + riscv: Update nofpu libm test ulps + + * sysdeps/riscv/nofpu/libm-test-ulps: Modified. + +2024-03-15 Joseph Myers <josmyers@redhat.com> + + COMMIT: 4b0860d029f3cd61485d97c3620a5935b398b178 + Add STATX_MNT_ID_UNIQUE from Linux 6.8 to bits/statx-generic.h + + * io/bits/statx-generic.h: Modified. + [! STATX_TYPE](STATX_MNT_ID_UNIQUE): New. + +2024-03-15 Florian Weimer <fweimer@redhat.com> + + COMMIT: 7a76f218677d149d8b7875b336722108239f7ee9 + linux: Use rseq area unconditionally in sched_getcpu (bug 31479) + + * sysdeps/unix/sysv/linux/sched_getcpu.c: Modified. + [! RSEQ_SIG](sched_getcpu): Remove. + [RSEQ_SIG](sched_getcpu): Remove. + (sched_getcpu): New function. + +2024-03-14 Szabolcs Nagy <szabolcs.nagy@arm.com> + + COMMIT: 73c26018ed0ecd9c807bb363cc2c2ab4aca66a82 + aarch64: fix check for SVE support in assembler + + * sysdeps/aarch64/configure: Modified. + * sysdeps/aarch64/configure.ac: Modified. + +2024-03-13 Joseph Myers <josmyers@redhat.com> + + COMMIT: 2367bf468ce43801de987dcd54b0f99ba9d62827 + Update kernel version to 6.8 in header constant tests + + * sysdeps/unix/sysv/linux/tst-mman-consts.py: Modified. + * sysdeps/unix/sysv/linux/tst-mount-consts.py: Modified. + * sysdeps/unix/sysv/linux/tst-pidfd-consts.py: Modified. + +2024-03-13 Joseph Myers <josmyers@redhat.com> + + COMMIT: 3de2f8755c6c036dcd0b1f4acd6bcdefe0e775c0 + Update syscall lists for Linux 6.8 + + * sysdeps/unix/sysv/linux/aarch64/arch-syscall.h: Modified. + (__NR_listmount): New. + (__NR_lsm_get_self_attr): New. + (__NR_lsm_list_modules): New. + (__NR_lsm_set_self_attr): New. + (__NR_statmount): New. + * sysdeps/unix/sysv/linux/alpha/arch-syscall.h: Modified. + (__NR_listmount): New. + (__NR_lsm_get_self_attr): New. + (__NR_lsm_list_modules): New. + (__NR_lsm_set_self_attr): New. + (__NR_statmount): New. + * sysdeps/unix/sysv/linux/arc/arch-syscall.h: Modified. + (__NR_listmount): New. + (__NR_lsm_get_self_attr): New. + (__NR_lsm_list_modules): New. + (__NR_lsm_set_self_attr): New. + (__NR_statmount): New. + * sysdeps/unix/sysv/linux/arm/arch-syscall.h: Modified. + (__NR_listmount): New. + (__NR_lsm_get_self_attr): New. + (__NR_lsm_list_modules): New. + (__NR_lsm_set_self_attr): New. + (__NR_statmount): New. + * sysdeps/unix/sysv/linux/csky/arch-syscall.h: Modified. + (__NR_listmount): New. + (__NR_lsm_get_self_attr): New. + (__NR_lsm_list_modules): New. + (__NR_lsm_set_self_attr): New. + (__NR_statmount): New. + * sysdeps/unix/sysv/linux/hppa/arch-syscall.h: Modified. + (__NR_listmount): New. + (__NR_lsm_get_self_attr): New. + (__NR_lsm_list_modules): New. + (__NR_lsm_set_self_attr): New. + (__NR_statmount): New. + * sysdeps/unix/sysv/linux/i386/arch-syscall.h: Modified. + (__NR_listmount): New. + (__NR_lsm_get_self_attr): New. + (__NR_lsm_list_modules): New. + (__NR_lsm_set_self_attr): New. + (__NR_statmount): New. + * sysdeps/unix/sysv/linux/loongarch/arch-syscall.h: Modified. + (__NR_listmount): New. + (__NR_lsm_get_self_attr): New. + (__NR_lsm_list_modules): New. + (__NR_lsm_set_self_attr): New. + (__NR_statmount): New. + * sysdeps/unix/sysv/linux/m68k/arch-syscall.h: Modified. + (__NR_listmount): New. + (__NR_lsm_get_self_attr): New. + (__NR_lsm_list_modules): New. + (__NR_lsm_set_self_attr): New. + (__NR_statmount): New. + * sysdeps/unix/sysv/linux/microblaze/arch-syscall.h: Modified. + (__NR_listmount): New. + (__NR_lsm_get_self_attr): New. + (__NR_lsm_list_modules): New. + (__NR_lsm_set_self_attr): New. + (__NR_statmount): New. + * sysdeps/unix/sysv/linux/mips/mips32/arch-syscall.h: Modified. + (__NR_listmount): New. + (__NR_lsm_get_self_attr): New. + (__NR_lsm_list_modules): New. + (__NR_lsm_set_self_attr): New. + (__NR_statmount): New. + * sysdeps/unix/sysv/linux/mips/mips64/n32/arch-syscall.h: Modified. + (__NR_listmount): New. + (__NR_lsm_get_self_attr): New. + (__NR_lsm_list_modules): New. + (__NR_lsm_set_self_attr): New. + (__NR_statmount): New. + * sysdeps/unix/sysv/linux/mips/mips64/n64/arch-syscall.h: Modified. + (__NR_listmount): New. + (__NR_lsm_get_self_attr): New. + (__NR_lsm_list_modules): New. + (__NR_lsm_set_self_attr): New. + (__NR_statmount): New. + * sysdeps/unix/sysv/linux/nios2/arch-syscall.h: Modified. + (__NR_listmount): New. + (__NR_lsm_get_self_attr): New. + (__NR_lsm_list_modules): New. + (__NR_lsm_set_self_attr): New. + (__NR_statmount): New. + * sysdeps/unix/sysv/linux/or1k/arch-syscall.h: Modified. + (__NR_listmount): New. + (__NR_lsm_get_self_attr): New. + (__NR_lsm_list_modules): New. + (__NR_lsm_set_self_attr): New. + (__NR_statmount): New. + * sysdeps/unix/sysv/linux/powerpc/powerpc32/arch-syscall.h: Modified. + (__NR_listmount): New. + (__NR_lsm_get_self_attr): New. + (__NR_lsm_list_modules): New. + (__NR_lsm_set_self_attr): New. + (__NR_statmount): New. + * sysdeps/unix/sysv/linux/powerpc/powerpc64/arch-syscall.h: Modified. + (__NR_listmount): New. + (__NR_lsm_get_self_attr): New. + (__NR_lsm_list_modules): New. + (__NR_lsm_set_self_attr): New. + (__NR_statmount): New. + * sysdeps/unix/sysv/linux/riscv/rv32/arch-syscall.h: Modified. + (__NR_listmount): New. + (__NR_lsm_get_self_attr): New. + (__NR_lsm_list_modules): New. + (__NR_lsm_set_self_attr): New. + (__NR_statmount): New. + * sysdeps/unix/sysv/linux/riscv/rv64/arch-syscall.h: Modified. + (__NR_listmount): New. + (__NR_lsm_get_self_attr): New. + (__NR_lsm_list_modules): New. + (__NR_lsm_set_self_attr): New. + (__NR_statmount): New. + * sysdeps/unix/sysv/linux/s390/s390-32/arch-syscall.h: Modified. + (__NR_listmount): New. + (__NR_lsm_get_self_attr): New. + (__NR_lsm_list_modules): New. + (__NR_lsm_set_self_attr): New. + (__NR_statmount): New. + * sysdeps/unix/sysv/linux/s390/s390-64/arch-syscall.h: Modified. + (__NR_listmount): New. + (__NR_lsm_get_self_attr): New. + (__NR_lsm_list_modules): New. + (__NR_lsm_set_self_attr): New. + (__NR_statmount): New. + * sysdeps/unix/sysv/linux/sh/arch-syscall.h: Modified. + (__NR_listmount): New. + (__NR_lsm_get_self_attr): New. + (__NR_lsm_list_modules): New. + (__NR_lsm_set_self_attr): New. + (__NR_statmount): New. + * sysdeps/unix/sysv/linux/sparc/sparc32/arch-syscall.h: Modified. + (__NR_listmount): New. + (__NR_lsm_get_self_attr): New. + (__NR_lsm_list_modules): New. + (__NR_lsm_set_self_attr): New. + (__NR_statmount): New. + * sysdeps/unix/sysv/linux/sparc/sparc64/arch-syscall.h: Modified. + (__NR_listmount): New. + (__NR_lsm_get_self_attr): New. + (__NR_lsm_list_modules): New. + (__NR_lsm_set_self_attr): New. + (__NR_statmount): New. + * sysdeps/unix/sysv/linux/syscall-names.list: Modified. + * sysdeps/unix/sysv/linux/x86_64/64/arch-syscall.h: Modified. + (__NR_listmount): New. + (__NR_lsm_get_self_attr): New. + (__NR_lsm_list_modules): New. + (__NR_lsm_set_self_attr): New. + (__NR_statmount): New. + * sysdeps/unix/sysv/linux/x86_64/x32/arch-syscall.h: Modified. + (__NR_listmount): New. + (__NR_lsm_get_self_attr): New. + (__NR_lsm_list_modules): New. + (__NR_lsm_set_self_attr): New. + (__NR_statmount): New. + +2024-03-13 Joseph Myers <josmyers@redhat.com> + + COMMIT: cba186f2f07b5f717a1ab3a4345102a296a27681 + Use Linux 6.8 in build-many-glibcs.py + + * scripts/build-many-glibcs.py: Modified. + +2024-03-12 Adhemerval Zanella <adhemerval.zanella@linaro.org> + + COMMIT: 4a76fb1da8b7e7fa472741921f49ef32f81bc0a0 + powerpc: Remove power8 strcasestr optimization + + * sysdeps/powerpc/powerpc64/multiarch/Makefile: Modified. + * sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c: Modified. + (__libc_ifunc_impl_list): Modified function. + * sysdeps/powerpc/powerpc64/multiarch/strcasestr-power8.S: Delete file. + * sysdeps/powerpc/powerpc64/multiarch/strcasestr-ppc64.c: Delete file. + * sysdeps/powerpc/powerpc64/multiarch/strcasestr.c: Delete file. + * sysdeps/powerpc/powerpc64/power8/Makefile: Delete file. + * sysdeps/powerpc/powerpc64/power8/strcasestr-ppc64.c: Delete file. + * sysdeps/powerpc/powerpc64/power8/strcasestr.S: Delete file. + +2024-03-12 Adhemerval Zanella <adhemerval.zanella@linaro.org> + + COMMIT: 2149da36836bc32cd66359ca37bab5884af7e81f + riscv: Fix alignment-ignorant memcpy implementation + + * sysdeps/riscv/memcpy_noalignment.S: Delete file. + * sysdeps/unix/sysv/linux/riscv/memcpy-generic.c: Move to... + * sysdeps/riscv/multiarch/memcpy-generic.c: ... here. + (__memcpy_generic): Remove. + (hidden_proto): Remove. + [IS_IN(libc)](MEMCPY): New. + [IS_IN(libc)](libc_hidden_builtin_def): New. + * sysdeps/riscv/multiarch/memcpy_noalignment.S: New file. + * sysdeps/unix/sysv/linux/riscv/Makefile: Modified. + * sysdeps/unix/sysv/linux/riscv/hwprobe.c: Modified. + (libc_hidden_def): New. + * sysdeps/unix/sysv/linux/riscv/include/sys/hwprobe.h: New file. + * sysdeps/unix/sysv/linux/riscv/multiarch/Makefile: New file. + * sysdeps/riscv/memcopy.h: Move to... + * sysdeps/unix/sysv/linux/riscv/multiarch/ifunc-impl-list.c: ... here. + [IS_IN (libc)](MEMCPY): Remove. + (sysdeps/generic/memcopy.h): Remove include. + (ifunc-impl-list.h): Include file. + (string.h): Include file. + (sys/hwprobe.h): Include file. + (__libc_ifunc_impl_list): New function. + * sysdeps/riscv/memcpy.c: Move to... + * sysdeps/unix/sysv/linux/riscv/multiarch/memcpy.c: ... here. + [SHARED](__hidden_ver1): Remove. + [SHARED](visibility): Remove. + (memcpy): Remove. + (stdint.h): Remove include. + (string.h): Remove include. + (ifunc-init.h): Remove include. + (riscv-ifunc.h): Remove include. + (sys/hwprobe.h): Remove include. + (INIT_ARCH): Remove. + (__libc_memcpy): Remove. + (__memcpy_generic): Remove. + (__memcpy_noalignment): Remove. + (__typeof): Remove function. + (riscv_libc_ifunc): Remove. + (memcpy): Remove. + (strong_alias): Remove. + [!(IS_IN (libc))](string/memcpy.c): New. + [IS_IN (libc)][SHARED](__hidden_ver1): New. + [IS_IN (libc)][SHARED](visibility): New. + [IS_IN (libc)](memcpy): New. + [IS_IN (libc)](stdint.h): New. + [IS_IN (libc)](string.h): New. + [IS_IN (libc)](ifunc-init.h): New. + [IS_IN (libc)](riscv-ifunc.h): New. + [IS_IN (libc)](sys/hwprobe.h): New. + [IS_IN (libc)](__libc_memcpy): New. + [IS_IN (libc)](__memcpy_generic): New. + [IS_IN (libc)](__memcpy_noalignment): New. + [IS_IN (libc)](__typeof): New. + [IS_IN (libc)](riscv_libc_ifunc): New. + [IS_IN (libc)](memcpy): New. + [IS_IN (libc)](strong_alias): New. + +2024-03-12 Andreas Schwab <schwab@suse.de> + + COMMIT: 2173173d57971d042c0ad4b281431ae127e9b5b8 + linux/sigsetops: fix type confusion (bug 31468) + + * signal/tst-sigisemptyset.c: Modified. + (do_test): Modified function. + * sysdeps/unix/sysv/linux/internal-sigset.h: Modified. + (internal_sigisemptyset): Modified function. + (internal_sigismember): Modified function. + (internal_sigaddset): Modified function. + (internal_sigdelset): Modified function. + * sysdeps/unix/sysv/linux/sigsetops.h: Modified. + (__sigword): Modified function. + (__sigisemptyset): Modified function. + (__sigismember): Modified function. + (__sigaddset): Modified function. + (__sigdelset): Modified function. + +2024-03-12 caiyinyu <caiyinyu@loongson.cn> + + COMMIT: aeee41f1cf9bf58d3d316af36bb7f5a8699ab129 + LoongArch: Correct {__ieee754, _}_scalb -> {__ieee754, _}_scalbf + + * sysdeps/loongarch/fpu/e_scalbf.c: Modified. + +2024-03-11 Andreas Schwab <schwab@suse.de> + + COMMIT: 513331b788a3fa633f1d0417d43915e16a0c88f0 + duplocale: protect use of global locale (bug 23970) + + * locale/duplocale.c: Modified. + (__libc_rwlock_define): Modified function. + +2024-03-03 Sunil K Pandey <skpgkp2@gmail.com> + + COMMIT: b6e3898194bbae78910bbe9cd086937014961e45 + x86-64: Simplify minimum ISA check ifdef conditional with if + + * sysdeps/x86/cpu-features.c: Modified. + (init_cpu_features): Modified function. + +2024-03-01 Joe Talbott <joetalbott@gmail.com> + + COMMIT: d370155b9ab73d0c45bf968b7a9c823f4697a505 + manual/tunables - Add entry for enable_secure tunable. + + * manual/tunables.texi: Modified. + +2024-03-01 Joe Talbott <joetalbott@gmail.com> + + COMMIT: 18a81441ba34466a4fcf491290443cbf1a7c20cc + NEWS: Move enable_secure_tunable from 2.39 to 2.40. + + * NEWS: Modified. + +2024-03-01 Evan Green <evan@rivosinc.com> + + COMMIT: 587a1290a1af7bee6dbb40ebadb7a4d71e698baf + riscv: Add and use alignment-ignorant memcpy + + * sysdeps/riscv/memcopy.h: New file. + * sysdeps/riscv/memcpy.c: New file. + * sysdeps/riscv/memcpy_noalignment.S: New file. + * sysdeps/unix/sysv/linux/riscv/Makefile: Modified. + * sysdeps/unix/sysv/linux/riscv/memcpy-generic.c: New file. + +2024-03-01 Evan Green <evan@rivosinc.com> + + COMMIT: a2b47f7d4679a01d56827e1aff2a40de173fab23 + riscv: Add ifunc helper method to hwprobe.h + + * sysdeps/unix/sysv/linux/riscv/sys/hwprobe.h: Modified. + (errno.h): Include file. + (__riscv_hwprobe_one): New function. + +2024-03-01 Evan Green <evan@rivosinc.com> + + COMMIT: a29bb320a1a1daa8add4d213fc70f273810dd91a + riscv: Enable multi-arg ifunc resolvers + + * include/libc-symbols.h: Modified. + [! _ISOMAC][! HAVE_GCC_IFUNC](__ifunc): Remove. + [! _ISOMAC][! HAVE_GCC_IFUNC](__ifunc_hidden): Remove. + [! _ISOMAC][! HAVE_GCC_IFUNC](__ifunc_args): New. + [! _ISOMAC][! HAVE_GCC_IFUNC](__ifunc_args_hidden): New. + [! _ISOMAC][HAVE_GCC_IFUNC](__ifunc): Remove. + [! _ISOMAC][HAVE_GCC_IFUNC](__ifunc_hidden): Remove. + [! _ISOMAC][HAVE_GCC_IFUNC](__ifunc_args): New. + [! _ISOMAC][HAVE_GCC_IFUNC](__ifunc_args_hidden): New. + [! _ISOMAC](__ifunc_resolver): Modified. + [! _ISOMAC](__ifunc): New. + [! _ISOMAC](__ifunc_hidden): New. + * sysdeps/riscv/riscv-ifunc.h: New file. + +2024-03-01 Evan Green <evan@rivosinc.com> + + COMMIT: 78308ce77ad55191d2e578bbcd19bb55c68926cb + riscv: Add __riscv_hwprobe pointer to ifunc calls + + * sysdeps/riscv/dl-irel.h: Modified. + (elf_ifunc_invoke): Modified function. + (sys/hwprobe.h): Include file. + * sysdeps/unix/sysv/linux/riscv/sys/hwprobe.h: Modified. + (int): New function. + +2024-03-01 Evan Green <evan@rivosinc.com> + + COMMIT: e7919e0db28837ae5e4315933a061a7c2eda442e + riscv: Add hwprobe vdso call support + + * sysdeps/unix/sysv/linux/dl-vdso-setup.c: Modified. + [PROCINFO_DECL || ! SHARED][HAVE_RISCV_HWPROBE](RELRO): New. + * sysdeps/unix/sysv/linux/dl-vdso-setup.h: Modified. + (setup_vdso_pointers): Modified function. + * sysdeps/unix/sysv/linux/riscv/hwprobe.c: Modified. + (__riscv_hwprobe): Modified function. + * sysdeps/unix/sysv/linux/riscv/sysdep.h: Modified. + [! __ASSEMBLER__](HAVE_RISCV_HWPROBE): New. + +2024-03-01 Evan Green <evan@rivosinc.com> + + COMMIT: c6c33339b45281590f9db138ba6c9d79acb1da27 + linux: Introduce INTERNAL_VSYSCALL + + * sysdeps/unix/sysv/linux/sysdep-vdso.h: Modified. + (INTERNAL_VSYSCALL): New. + +2024-03-01 Evan Green <evan@rivosinc.com> + + COMMIT: 426d0e1aa8f17426d13707594111df712d2b8911 + riscv: Add Linux hwprobe syscall support + + * sysdeps/unix/sysv/linux/riscv/Makefile: Modified. + * sysdeps/unix/sysv/linux/riscv/Versions: Modified. + * sysdeps/unix/sysv/linux/riscv/hwprobe.c: New file. + * sysdeps/unix/sysv/linux/riscv/rv32/libc.abilist: Modified. + * sysdeps/unix/sysv/linux/riscv/rv64/libc.abilist: Modified. + * sysdeps/unix/sysv/linux/riscv/sys/hwprobe.h: New file. + +2024-02-29 Joe Simmons-Talbott <josimmon@redhat.com> + + COMMIT: 71648e80042658f23965924616fb7db9c2fccff9 + rtld: Add glibc.rtld.enable_secure tunable. + + * NEWS: Modified. + * elf/Makefile: Modified. + * elf/dl-tunables.c: Modified. + (parse_tunables_string): Modified function. + * elf/dl-tunables.list: Modified. + * elf/tst-rtld-list-tunables.exp: Modified. + * elf/tst-tunables-enable_secure.c: New file. + +2024-02-29 H.J. Lu <hjl.tools@gmail.com> + + COMMIT: 9b7091415af47082664717210ac49d51551456ab + x86-64: Update _dl_tlsdesc_dynamic to preserve AMX registers + + * sysdeps/unix/sysv/linux/x86_64/Makefile: Modified. + * sysdeps/unix/sysv/linux/x86_64/include/asm/prctl.h: Modified. + [! ARCH_GET_XCOMP_PERM](ARCH_GET_XCOMP_PERM): New. + [! ARCH_GET_XCOMP_PERM](ARCH_REQ_XCOMP_PERM): New. + * sysdeps/unix/sysv/linux/x86_64/tst-gnu2-tls2-amx-mod0.c: New file. + * sysdeps/unix/sysv/linux/x86_64/tst-gnu2-tls2-amx-mod1.c: New file. + * sysdeps/unix/sysv/linux/x86_64/tst-gnu2-tls2-amx-mod2.c: New file. + * sysdeps/unix/sysv/linux/x86_64/tst-gnu2-tls2-amx.c: New file. + * sysdeps/unix/sysv/linux/x86_64/tst-gnu2-tls2-amx.h: New file. + * sysdeps/x86/cpu-features-offsets.sym: Modified. + * sysdeps/x86/cpu-features.c: Modified. + (update_active): Modified function. + * sysdeps/x86/include/cpu-features.h: Modified. + * sysdeps/x86/sysdep.h: Modified. + [! __x86_64__](FULL_STATE_SAVE_MASK): New. + [__x86_64__](AMX_STATE_SAVE_MASK): New. + [__x86_64__](FULL_STATE_SAVE_MASK): New. + (TLSDESC_CALL_STATE_SAVE_MASK): Modified. + * sysdeps/x86_64/configure: Modified. + * sysdeps/x86_64/configure.ac: Modified. + * sysdeps/x86_64/dl-tlsdesc-dynamic.h: Modified. + +2024-02-28 H.J. Lu <hjl.tools@gmail.com> + + COMMIT: a1735e0aa858f0c8b15e5ee9975bff4279423680 + x86_64: Suppress false positive valgrind error + + * elf/Makefile: Modified. + * elf/tst-valgrind-smoke.sh: Modified. + * sysdeps/x86_64/Makefile: Modified. + * sysdeps/x86_64/tst-valgrind-smoke.supp: New file. + +2024-02-28 H.J. Lu <hjl.tools@gmail.com> + + COMMIT: 8c7c188d62d76acda1b273b0d4d9c3b32983b28d + x86: Don't check XFD against /proc/cpuinfo + + * sysdeps/x86/tst-cpu-features-cpuinfo.c: Modified. + (do_test): Modified function. + +2024-02-28 H.J. Lu <hjl.tools@gmail.com> + + COMMIT: befe2d3c4dec8be2cdd01a47132e47bdb7020922 + x86-64: Don't use SSE resolvers for ISA level 3 or above + + * sysdeps/x86/cpu-features.c: Modified. + (init_cpu_features): Modified function. + (isa-level.h): Include file. + * sysdeps/x86_64/dl-tlsdesc.S: Modified. + +2024-02-28 H.J. Lu <hjl.tools@gmail.com> + + COMMIT: 0aac205a814a8511e98d02b91a8dc908f1c53cde + x86: Update _dl_tlsdesc_dynamic to preserve caller-saved registers + + * elf/Makefile: Modified. + * elf/tst-gnu2-tls2.c: New file. + * elf/tst-gnu2-tls2.h: New file. + * elf/tst-gnu2-tls2mod0.c: New file. + * elf/tst-gnu2-tls2mod1.c: New file. + * elf/tst-gnu2-tls2mod2.c: New file. + * sysdeps/i386/dl-machine.h: Modified. + [RESOLVE_MAP](elf_machine_rel): Modified function. + * sysdeps/i386/dl-tlsdesc-dynamic.h: New file. + * sysdeps/i386/dl-tlsdesc.S: Modified. + * sysdeps/x86/Makefile: Modified. + * sysdeps/x86/cpu-features.c: Modified. + [SHARED && __x86_64__](dl-plt-rewrite.h): Remove. + [SHARED && __x86_64__](TUNABLE_CALLBACK): Remove. + (init_cpu_features): Modified function. + [SHARED][! __x86_64__](_dl_tlsdesc_dynamic_fnsave): New. + [SHARED][__x86_64__](dl-plt-rewrite.h): New. + [SHARED][__x86_64__](TUNABLE_CALLBACK): New. + [SHARED](_dl_tlsdesc_dynamic_fxsave): New. + [SHARED](_dl_tlsdesc_dynamic_xsave): New. + [SHARED](_dl_tlsdesc_dynamic_xsavec): New. + [__x86_64__](_dl_runtime_resolve_fxsave): New. + [__x86_64__](_dl_runtime_resolve_xsave): New. + [__x86_64__](_dl_runtime_resolve_xsavec): New. + * sysdeps/x86/dl-procinfo.c: Modified. + [!(! PROCINFO_DECL && SHARED)][PROCINFO_DECL][!(! PROCINFO_DECL && SHARED)][PROCINFO_DECL][!(! PROCINFO_DECL && SHARED)][PROCINFO_DECL][SHARED && !IS_IN (ldconfig)][PROCINFO_DECL][! PROCINFO_DECL](_dl_x86_tlsdesc_dynamic): New. + * sysdeps/x86_64/features-offsets.sym: Move to... + * sysdeps/x86/features-offsets.sym: ... here. + * sysdeps/x86/sysdep.h: Modified. + (TLSDESC_CALL_STATE_SAVE_MASK): New. + * sysdeps/x86/tst-gnu2-tls2.c: New file. + * sysdeps/x86_64/Makefile: Modified. + * sysdeps/x86_64/dl-machine.h: Modified. + [! dl_machine_h](elf_machine_runtime_setup): Modified function. + [RESOLVE_MAP](elf_machine_rela): Modified function. + * sysdeps/x86_64/dl-procinfo.c: Modified. + (PROCINFO_DECL): Remove. + (PROCINFO_CLASS): Remove. + [!IS_IN (ldconfig)][!(! PROCINFO_DECL && SHARED)][! PROCINFO_DECL](_dl_x86_64_runtime_resolve): New. + [!IS_IN (ldconfig)][!(! PROCINFO_DECL && SHARED)][PROCINFO_DECL](PROCINFO_DECL): New. + [!IS_IN (ldconfig)][!(! PROCINFO_DECL && SHARED)][PROCINFO_DECL](PROCINFO_CLASS): New. + * sysdeps/x86_64/dl-tlsdesc-dynamic.h: New file. + * sysdeps/x86_64/dl-tlsdesc.S: Modified. + * sysdeps/x86_64/dl-trampoline-save.h: New file. + * sysdeps/x86_64/dl-trampoline-state.h: New file. + * sysdeps/x86_64/dl-trampoline.S: Modified. + +2024-02-28 H.J. Lu <hjl.tools@gmail.com> + + COMMIT: e6350be7e9cae8f71c96c1f06eab61b9acb227c8 + sysdeps/unix/sysv/linux/x86_64/Makefile: Add the end marker + + * sysdeps/unix/sysv/linux/x86_64/Makefile: Modified. + +2024-02-28 Siddhesh Poyarekar <siddhesh@sourceware.org> + + COMMIT: bf9688e623262c5fa9f91e4de0e84db45025076f + cdefs: Drop access attribute for _FORTIFY_SOURCE=3 (BZ #31383) + + * io/Makefile: Modified. + * io/tst-read-zero.c: New file. + * misc/sys/cdefs.h: Modified. + [__GNUC_PREREQ (10, 0)][__USE_FORTIFY_LEVEL == 3](__fortified_attr_access): Modified. + +2024-02-28 Adhemerval Zanella <adhemerval.zanella@linaro.org> + + COMMIT: b53e73ea809adac9be6b7808299f6741ea798e50 + s390: Improve static-pie configure tests + + * sysdeps/s390/s390-64/configure: Modified. + * sysdeps/s390/s390-64/configure.ac: Modified. + +2024-02-27 H.J. Lu <hjl.tools@gmail.com> + + COMMIT: 24c8db87c9537469dded474c8ee5da5c988f9c55 + x86: Change ENQCMD test to CHECK_FEATURE_PRESENT + + * sysdeps/x86/tst-cpu-features-supports.c: Modified. + (do_test): Modified function. + +2024-02-27 Adhemerval Zanella <adhemerval.zanella@linaro.org> + + COMMIT: c23107effbfe5300cee216a401009ebbc6e274f4 + debug: Improve mqueue.h fortify warnings with clang + + * rt/bits/mqueue2.h: Modified. + (__errordecl): Remove. + (__errordecl): Remove. + (__NTH): Remove function. + [__fortify_use_clang](__NTH): New. + [__fortify_use_clang](__NTH): New. + [__fortify_use_clang](__NTH): New. + [__fortify_use_clang](__NTH): New. + [__va_arg_pack_len](__errordecl): New. + [__va_arg_pack_len](__errordecl): New. + [__va_arg_pack_len](__NTH): New. + * rt/mqueue.h: Modified. + [__USE_FORTIFY_LEVEL > 0 && __forty_function && __va_arg_pack_len](bits/mqueue2.h): Remove. + [__USE_FORTIFY_LEVEL > 0 && __forty_function](bits/mqueue2.h): New. + +2024-02-27 Adhemerval Zanella <adhemerval.zanella@linaro.org> + + COMMIT: 86889e22db329abac618c6a41f86c84657a15324 + debug: Improve fcntl.h fortify warnings with clang + + * io/bits/fcntl2.h: Modified. + [__USE_ATFILE][__USE_LARGEFILE64](openat64): Remove function. + [__USE_ATFILE][__USE_LARGEFILE64][__fortify_use_clang](openat64): New. + [__USE_ATFILE][__USE_LARGEFILE64][__fortify_use_clang](openat64): New. + [__USE_ATFILE][__USE_LARGEFILE64][__fortify_use_clang](openat64): New. + [__USE_ATFILE][__USE_LARGEFILE64][__va_arg_pack_len](openat64): New. + [__USE_ATFILE](__errordecl): Remove. + [__USE_ATFILE](__errordecl): Remove. + [__USE_ATFILE](openat): Remove function. + [__USE_ATFILE][__fortify_use_clang](openat): New. + [__USE_ATFILE][__fortify_use_clang](openat): New. + [__USE_ATFILE][__fortify_use_clang](openat): New. + [__USE_ATFILE][__va_arg_pack_len](__errordecl): New. + [__USE_ATFILE][__va_arg_pack_len](__errordecl): New. + [__USE_ATFILE][__va_arg_pack_len](openat): New. + [__USE_LARGEFILE64](__errordecl): Remove. + [__USE_LARGEFILE64](__errordecl): Remove. + [__USE_LARGEFILE64](open64): Remove function. + [__USE_LARGEFILE64][__fortify_use_clang](open64): New. + [__USE_LARGEFILE64][__fortify_use_clang](open64): New. + [__USE_LARGEFILE64][__fortify_use_clang](open64): New. + [__USE_LARGEFILE64][__va_arg_pack_len](__errordecl): New. + [__USE_LARGEFILE64][__va_arg_pack_len](__errordecl): New. + [__USE_LARGEFILE64][__va_arg_pack_len](open64): New. + (__errordecl): Remove. + (__errordecl): Remove. + (open): Remove function. + [__fortify_use_clang](open): New. + [__fortify_use_clang](open): New. + [__fortify_use_clang](open): New. + [__va_arg_pack_len](__errordecl): New. + [__va_arg_pack_len](__errordecl): New. + [__va_arg_pack_len](open): New. + * io/fcntl.h: Modified. + [__USE_FORTIFY_LEVEL > 0 && __forty_function && __va_arg_pack_len](bits/fcntl2.h): Remove. + [__USE_FORTIFY_LEVEL > 0 && __forty_function](bits/fcntl2.h): New. + * misc/sys/cdefs.h: Modified. + [__USE_FORTIFY_LEVEL > 0][__clang_major__ && __clang_major__ >= 5](__fortify_clang_error): New. + [__USE_FORTIFY_LEVEL > 0][__clang_major__ && __clang_major__ >= 5](__fortify_clang_prefer_this_overload): New. + [__USE_FORTIFY_LEVEL > 0][__clang_major__ && __clang_major__ >= 5](__fortify_clang_unavailable): New. + +2024-02-27 Adhemerval Zanella <adhemerval.zanella@linaro.org> + + COMMIT: 68444c045077368446eced143510419c901e31b1 + wcsmbs: Improve fortify with clang + + * wcsmbs/bits/wchar2.h: Modified. + [__USE_GNU](__NTH): Modified function. + [__USE_GNU](fgetws_unlocked): Modified function. + [__USE_MISC](__NTH): Modified function. + [__USE_MISC](__NTH): Modified function. + [__USE_XOPEN2K8](__NTH): Modified function. + [__USE_XOPEN2K8](__NTH): Modified function. + (__NTH): Modified function. + (__NTH): Modified function. + (__NTH): Modified function. + (__NTH): Modified function. + (__NTH): Modified function. + (__NTH): Modified function. + (__NTH): Modified function. + (__NTH): Modified function. + (__NTH): Modified function. + (fgetws): Modified function. + (__NTH): Modified function. + (__NTH): Modified function. + (__NTH): Modified function. + [__fortify_use_clang](__NTH): New. + +2024-02-27 Adhemerval Zanella <adhemerval.zanella@linaro.org> + + COMMIT: 471c3c7a4705f1a1852404959692b0ff2dbb4aaa + syslog: Improve fortify with clang + + * misc/bits/syslog.h: Modified. + [__USE_MISC](vsyslog): Modified function. + [__fortify_use_clang && __USE_MISC](syslog): New. + +2024-02-27 Adhemerval Zanella <adhemerval.zanella@linaro.org> + + COMMIT: 4289b00d4393f490515527864cf09093f4f8c2c4 + socket: Improve fortify with clang + + * io/bits/poll2.h: Modified. + [__USE_GNU][! __USE_TIME_BITS64](__fortified_attr_access): Modified function. + [__USE_GNU][__USE_TIME_BITS64](__fortified_attr_access): Modified function. + (__fortified_attr_access): Modified function. + * socket/bits/socket2.h: Modified. + (recv): Modified function. + (recvfrom): Modified function. + +2024-02-27 Adhemerval Zanella <adhemerval.zanella@linaro.org> + + COMMIT: ec307a10865a3e43f611b725fec952a93e4d1893 + unistd: Improve fortify with clang + + * posix/bits/unistd.h: Modified. + [__USE_ATFILE](__NTH): Remove function. + [__USE_ATFILE](__fortify_clang_warning_only_if_bos_lt): New function. + [__USE_MISC || __USE_UNIX98](__NTH): Modified function. + [__USE_MISC || __USE_XOPEN_EXTENDED](__NTH): Modified function. + [__USE_MISC || ( __USE_XOPEN && ! __USE_UNIX98)](__NTH): Modified function. + [__USE_POSIX199506](getlogin_r): Modified function. + [__USE_UNIX98 || __USE_XOPEN2K8][! __USE_FILE_OFFSET64](pread): Modified function. + [__USE_UNIX98 || __USE_XOPEN2K8][__USE_FILE_OFFSET64](pread): Modified function. + [__USE_UNIX98 || __USE_XOPEN2K8][__USE_LARGEFILE64](pread64): Modified function. + [__USE_XOPEN_EXTENDED || __USE_XOPEN2K](__NTH): Remove function. + [__USE_XOPEN_EXTENDED || __USE_XOPEN2K](__fortify_clang_warning_only_if_bos_lt): New function. + (read): Modified function. + (__NTH): Modified function. + (__NTH): Modified function. + (__NTH): Modified function. + (__NTH): Modified function. + +2024-02-27 Adhemerval Zanella <adhemerval.zanella@linaro.org> + + COMMIT: d39a893ed6de8e63ffbfbcc4b7176a2fa852f8a8 + stdlib: Improve fortify with clang + + * stdlib/bits/stdlib.h: Modified. + (__NTH): Modified function. + (__ptsname_r_chk): Remove. + (__NTH): Modified function. + (__NTH): Modified function. + (__NTH): Modified function. + (__NTH): Remove function. + [!(_LIBC_LIMITS_H_ && PATH_MAX)](__NTH): New. + [_LIBC_LIMITS_H_ && PATH_MAX](__NTH): New. + (__NTH): New function. + +2024-02-27 Adhemerval Zanella <adhemerval.zanella@linaro.org> + + COMMIT: 5e9696b26540d02639e0d16532e0f3d53c7e5cd0 + string: Improve fortify with clang + + * string/bits/string_fortified.h: Modified. + [__USE_MISC](__NTH): Modified function. + [__USE_MISC](__NTH): Modified function. + [__USE_XOPEN2K8][!(__GNUC_PREREQ (4, 7) || __glibc_clang_prereq (2, 6))](__NTH): Modified function. + [__USE_XOPEN2K8][__GNUC_PREREQ (4, 7) || __glibc_clang_prereq (2, 6)](__NTH): Modified function. + [__USE_XOPEN2K8](__NTH): Modified function. + (__NTH): Modified function. + (__NTH): Modified function. + (__NTH): Modified function. + (__NTH): Modified function. + +2024-02-27 Adhemerval Zanella <adhemerval.zanella@linaro.org> + + COMMIT: 29951991f5db1001c059f8ed7afa2c359cdc7f44 + libio: Improve fortify with clang + + * libio/bits/stdio2.h: Modified. + [__GLIBC_USE (DEPRECATED_GETS)](gets): Modified function. + [__USE_FORTIFY_LEVEL > 1][__USE_GNU][__fortify_use_clang](__NTH): New. + [__USE_FORTIFY_LEVEL > 1][__USE_GNU][__fortify_use_clang](__NTH): New. + [__USE_FORTIFY_LEVEL > 1][__USE_GNU][__fortify_use_clang](__NTH): New. + [__USE_FORTIFY_LEVEL > 1][__USE_XOPEN2K8][__fortify_use_clang](dprintf): New. + [__USE_FORTIFY_LEVEL > 1](vprintf): Modified function. + [__USE_FORTIFY_LEVEL > 1][__fortify_use_clang](fprintf): New. + [__USE_FORTIFY_LEVEL > 1][__fortify_use_clang](printf): New. + [__USE_GNU](__fortified_attr_access): Modified function. + [__USE_ISOC99 || __USE_UNIX98](__NTH): Modified function. + [__USE_ISOC99 || __USE_UNIX98][__fortify_use_clang](__NTH): New. + [__USE_MISC](fread_unlocked): Modified function. + (__NTH): Modified function. + (__fortified_attr_access): Modified function. + (fread): Modified function. + [__fortify_use_clang](__NTH): New. + +2024-02-27 Adhemerval Zanella <adhemerval.zanella@linaro.org> + + COMMIT: 7a7093615c1b7ac937b1af7b76d0008f8e1ca189 + cdefs.h: Add clang fortify directives + + * misc/sys/cdefs.h: Modified. + [__USE_FORTIFY_LEVEL > 0](__glibc_fortify): Remove. + [__USE_FORTIFY_LEVEL > 0](__glibc_fortify_n): Remove. + [__USE_FORTIFY_LEVEL > 0][!(__clang_major__ && __clang_major__ >= 5)](__fortify_use_clang): New. + [__USE_FORTIFY_LEVEL > 0][!(__clang_major__ && __clang_major__ >= 5)](__fortify_clang_warning): New. + [__USE_FORTIFY_LEVEL > 0][!(__clang_major__ && __clang_major__ >= 5)](__fortify_clang_warning_only_if_bos0_lt): New. + [__USE_FORTIFY_LEVEL > 0][!(__clang_major__ && __clang_major__ >= 5)](__fortify_clang_warning_only_if_bos0_lt2): New. + [__USE_FORTIFY_LEVEL > 0][!(__clang_major__ && __clang_major__ >= 5)](__fortify_clang_warning_only_if_bos_lt): New. + [__USE_FORTIFY_LEVEL > 0][!(__clang_major__ && __clang_major__ >= 5)](__fortify_clang_warning_only_if_bos_lt2): New. + [__USE_FORTIFY_LEVEL > 0][!(__clang_major__ && __clang_major__ >= 5)](__fortify_clang_overload_arg): New. + [__USE_FORTIFY_LEVEL > 0][!(__clang_major__ && __clang_major__ >= 5)](__fortify_clang_overload_arg0): New. + [__USE_FORTIFY_LEVEL > 0][!(__clang_major__ && __clang_major__ >= 5)](__fortify_clang_warn_if_src_too_large): New. + [__USE_FORTIFY_LEVEL > 0][!(__clang_major__ && __clang_major__ >= 5)](__fortify_clang_warn_if_dest_too_small): New. + [__USE_FORTIFY_LEVEL > 0][!(__clang_major__ && __clang_major__ >= 5)](__fortify_clang_warn_if_dest_too_small0): New. + [__USE_FORTIFY_LEVEL > 0][!__forty_use_clang](__glibc_fortify): New. + [__USE_FORTIFY_LEVEL > 0][!__forty_use_clang](__glibc_fortify_n): New. + [__USE_FORTIFY_LEVEL > 0][__clang_major__ && __clang_major__ >= 5][!(__clang_major__ >= 9)](__fortify_clang_pass_dynamic_object_size_n): New. + [__USE_FORTIFY_LEVEL > 0][__clang_major__ && __clang_major__ >= 5][!(__clang_major__ >= 9)](__fortify_clang_pass_dynamic_object_size0): New. + [__USE_FORTIFY_LEVEL > 0][__clang_major__ && __clang_major__ >= 5][!(__clang_major__ >= 9)](__fortify_clang_pass_dynamic_object_size): New. + [__USE_FORTIFY_LEVEL > 0][__clang_major__ && __clang_major__ >= 5][__USE_FORTIFY_LEVEL != 3](__fortify_clang_overload_arg): New. + [__USE_FORTIFY_LEVEL > 0][__clang_major__ && __clang_major__ >= 5][__USE_FORTIFY_LEVEL != 3](__fortify_clang_overload_arg0): New. + [__USE_FORTIFY_LEVEL > 0][__clang_major__ && __clang_major__ >= 5][__USE_FORTIFY_LEVEL == 3](__fortify_clang_overload_arg): New. + [__USE_FORTIFY_LEVEL > 0][__clang_major__ && __clang_major__ >= 5][__USE_FORTIFY_LEVEL == 3](__fortify_clang_overload_arg0): New. + [__USE_FORTIFY_LEVEL > 0][__clang_major__ && __clang_major__ >= 5][__clang_major__ >= 9](__fortify_clang_pass_dynamic_object_size_n): New. + [__USE_FORTIFY_LEVEL > 0][__clang_major__ && __clang_major__ >= 5][__clang_major__ >= 9](__fortify_clang_pass_dynamic_object_size0): New. + [__USE_FORTIFY_LEVEL > 0][__clang_major__ && __clang_major__ >= 5][__clang_major__ >= 9](__fortify_clang_pass_dynamic_object_size): New. + [__USE_FORTIFY_LEVEL > 0][__clang_major__ && __clang_major__ >= 5](__fortify_use_clang): New. + [__USE_FORTIFY_LEVEL > 0][__clang_major__ && __clang_major__ >= 5](__fortify_function_error_function): New. + [__USE_FORTIFY_LEVEL > 0][__clang_major__ && __clang_major__ >= 5](__fortify_clang_pass_object_size_n): New. + [__USE_FORTIFY_LEVEL > 0][__clang_major__ && __clang_major__ >= 5](__fortify_clang_pass_object_size0): New. + [__USE_FORTIFY_LEVEL > 0][__clang_major__ && __clang_major__ >= 5](__fortify_clang_pass_object_size): New. + [__USE_FORTIFY_LEVEL > 0][__clang_major__ && __clang_major__ >= 5](__fortify_clang_bos_static_lt_impl): New. + [__USE_FORTIFY_LEVEL > 0][__clang_major__ && __clang_major__ >= 5](__fortify_clang_bos_static_lt2): New. + [__USE_FORTIFY_LEVEL > 0][__clang_major__ && __clang_major__ >= 5](__fortify_clang_bos_static_lt): New. + [__USE_FORTIFY_LEVEL > 0][__clang_major__ && __clang_major__ >= 5](__fortify_clang_bos0_static_lt2): New. + [__USE_FORTIFY_LEVEL > 0][__clang_major__ && __clang_major__ >= 5](__fortify_clang_bos0_static_lt): New. + [__USE_FORTIFY_LEVEL > 0][__clang_major__ && __clang_major__ >= 5](__fortify_clang_bosn_args): New. + [__USE_FORTIFY_LEVEL > 0][__clang_major__ && __clang_major__ >= 5](__fortify_clang_warning): New. + [__USE_FORTIFY_LEVEL > 0][__clang_major__ && __clang_major__ >= 5](__fortify_clang_warning_only_if_bos0_lt): New. + [__USE_FORTIFY_LEVEL > 0][__clang_major__ && __clang_major__ >= 5](__fortify_clang_warning_only_if_bos0_lt2): New. + [__USE_FORTIFY_LEVEL > 0][__clang_major__ && __clang_major__ >= 5](__fortify_clang_warning_only_if_bos_lt): New. + [__USE_FORTIFY_LEVEL > 0][__clang_major__ && __clang_major__ >= 5](__fortify_clang_warning_only_if_bos_lt2): New. + [__USE_FORTIFY_LEVEL > 0][__clang_major__ && __clang_major__ >= 5](__fortify_clang_mul_may_overflow): New. + [__USE_FORTIFY_LEVEL > 0][__clang_major__ && __clang_major__ >= 5](__fortify_clang_size_too_small): New. + [__USE_FORTIFY_LEVEL > 0][__clang_major__ && __clang_major__ >= 5](__fortify_clang_warn_if_src_too_large): New. + [__USE_FORTIFY_LEVEL > 0][__clang_major__ && __clang_major__ >= 5](__fortify_clang_warn_if_dest_too_small): New. + [__USE_FORTIFY_LEVEL > 0][__clang_major__ && __clang_major__ >= 5](__fortify_clang_warn_if_dest_too_small0): New. + [__USE_FORTIFY_LEVEL > 0][__forty_use_clang](__glibc_fortify): New. + [__USE_FORTIFY_LEVEL > 0][__forty_use_clang](__glibc_fortify_n): New. + [!(__clang_major__ && (__clang_major__ + (__clang_minor__ >= 6) > 2))](__attribute_overloadable__): New. + [__clang_major__ && (__clang_major__ + (__clang_minor__ >= 6) > 2)](__attribute_overloadable__): New. + +2024-02-27 Carlos O'Donell <carlos@redhat.com> + + COMMIT: db50990ddb0c446e137c5addb3e21bcf8f69a040 + Update SHARED-FILES and license for Unicode 15.1.0. + + * SHARED-FILES: Modified. + * localedata/unicode-gen/Makefile: Modified. + * localedata/unicode-gen/unicode-license.txt: Modified. + +2024-02-26 Joe Ramsay <Joe.Ramsay@arm.com> + + COMMIT: e302e1021391d13a9611ba3a910df128830bd19e + aarch64/fpu: Sync libmvec routines from 2.39 and before with AOR + + * sysdeps/aarch64/fpu/acos_advsimd.c: Modified. + (Oneu): Modified. + (Small): Modified. + * sysdeps/aarch64/fpu/asin_advsimd.c: Modified. + (One): Modified. + (Small): Modified. + * sysdeps/aarch64/fpu/atan2_sve.c: Modified. + (SignMask): Remove. + (SV_NAME_D2): Modified function. + * sysdeps/aarch64/fpu/atan2f_sve.c: Modified. + (SignMask): Remove. + (special_case): Modified function. + (SV_NAME_F2): Modified function. + * sysdeps/aarch64/fpu/cos_advsimd.c: Modified. + (V_NAME_D1): Modified function. + * sysdeps/aarch64/fpu/cosf_advsimd.c: Modified. + (V_NAME_F1): Modified function. + * sysdeps/aarch64/fpu/exp10_advsimd.c: Modified. + [! WANT_SIMD_EXCEPT](special_case): Modified function. + [WANT_SIMD_EXCEPT](special_case): Modified function. + * sysdeps/aarch64/fpu/exp10f_advsimd.c: Modified. + (data): Modified. + (V_NAME_F1): Modified function. + * sysdeps/aarch64/fpu/exp2_advsimd.c: Modified. + [! WANT_SIMD_EXCEPT](special_case): Modified function. + [WANT_SIMD_EXCEPT](TinyBound): Remove. + [WANT_SIMD_EXCEPT](special_case): Modified function. + (V_NAME_D1): Modified function. + (TinyBound): New. + * sysdeps/aarch64/fpu/exp2f_sve.c: Modified. + (data): Modified. + (Thres): New. + * sysdeps/aarch64/fpu/exp_advsimd.c: Modified. + [! WANT_SIMD_EXCEPT](special_case): Modified function. + [WANT_SIMD_EXCEPT](special_case): Modified function. + * sysdeps/aarch64/fpu/expm1_advsimd.c: Modified. + (data): Modified. + (V_NAME_D1): Modified function. + * sysdeps/aarch64/fpu/expm1f_advsimd.c: Modified. + (data): Modified. + (V_NAME_F1): Modified function. + * sysdeps/aarch64/fpu/log_advsimd.c: Modified. + (lookup): Modified function. + * sysdeps/aarch64/fpu/sin_advsimd.c: Modified. + (V_NAME_D1): Modified function. + * sysdeps/aarch64/fpu/sinf_advsimd.c: Modified. + (V_NAME_F1): Modified function. + * sysdeps/aarch64/fpu/tan_advsimd.c: Modified. + (data): Modified. + (V_NAME_D1): Modified function. + * sysdeps/aarch64/fpu/tanf_advsimd.c: Modified. + (data): Modified. + (V_NAME_F1): Modified function. + +2024-02-26 Stefan Liebler <stli@linux.ibm.com> + + COMMIT: 02782fd12849b6673cb5c2728cb750e8ec295aa3 + S390: Do not clobber r7 in clone [BZ #31402] + + * sysdeps/unix/sysv/linux/s390/s390-32/clone.S: Modified. + * sysdeps/unix/sysv/linux/s390/s390-64/clone.S: Modified. + * sysdeps/unix/sysv/linux/tst-clone.c: Modified. + (do_test): Modified function. + (TEST_FUNCTION): Remove. + (../test-skeleton.c): Remove include. + (stackinfo.h): Include file. + (support/check.h): Include file. + (v): New. + (do_clone): New function. + (do_test_single): New function. + (support/test-driver.c): Include file. + +2024-02-25 Sunil K Pandey <skpgkp2@gmail.com> + + COMMIT: 9f78a7c1d0963282608da836b840f0d5ae1c478e + x86_64: Exclude SSE, AVX and FMA4 variants in libm multiarch + + * sysdeps/x86/configure: Modified. + * sysdeps/x86/configure.ac: Modified. + * sysdeps/x86_64/fpu/multiarch/Makefile: Modified. + * sysdeps/x86_64/fpu/multiarch/e_asin.c: Modified. + (libm-alias-finite.h): Remove include. + (__redirect_ieee754_asin): Remove. + (__redirect_ieee754_acos): Remove. + (SYMBOL_NAME): Remove. + (ifunc-fma4.h): Remove include. + (libc_ifunc_redirected): Remove. + (SYMBOL_NAME): Remove. + (ifunc-fma4.h): Remove include. + (libm_alias_finite): Remove. + (__ieee754_acos): Remove. + (__ieee754_asin): Remove. + (sysdeps/ieee754/dbl-64/e_asin.c): Remove include. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](libm-alias-finite.h): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](__redirect_ieee754_asin): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](__redirect_ieee754_acos): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](SYMBOL_NAME): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](ifunc-fma4.h): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](libc_ifunc_redirected): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](SYMBOL_NAME): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](ifunc-fma4.h): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](libm_alias_finite): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](__ieee754_acos): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](__ieee754_asin): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](sysdeps/ieee754/dbl-64/e_asin.c): New. + (sysdeps/x86/isa-level.h): Include file. + * sysdeps/x86_64/fpu/multiarch/e_atan2.c: Modified. + (libm-alias-finite.h): Remove include. + (__redirect_ieee754_atan2): Remove. + (SYMBOL_NAME): Remove. + (ifunc-avx-fma4.h): Remove include. + (libc_ifunc_redirected): Remove. + (__ieee754_atan2): Remove. + (sysdeps/ieee754/dbl-64/e_atan2.c): Remove include. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](libm-alias-finite.h): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](__redirect_ieee754_atan2): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](SYMBOL_NAME): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](ifunc-avx-fma4.h): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](libc_ifunc_redirected): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](__ieee754_atan2): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](sysdeps/ieee754/dbl-64/e_atan2.c): New. + (sysdeps/x86/isa-level.h): Include file. + * sysdeps/x86_64/fpu/multiarch/e_exp.c: Modified. + (math.h): Remove include. + (libm-alias-finite.h): Remove include. + (__redirect_ieee754_exp): Remove. + (SYMBOL_NAME): Remove. + (ifunc-avx-fma4.h): Remove include. + (libc_ifunc_redirected): Remove. + (__exp): Remove. + (sysdeps/ieee754/dbl-64/e_exp.c): Remove include. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](math.h): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](libm-alias-finite.h): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](__redirect_ieee754_exp): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](SYMBOL_NAME): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](ifunc-avx-fma4.h): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](libc_ifunc_redirected): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](__exp): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](sysdeps/ieee754/dbl-64/e_exp.c): New. + (sysdeps/x86/isa-level.h): Include file. + * sysdeps/x86_64/fpu/multiarch/e_exp2f.c: Modified. + [! SHARED](__exp2f): Remove. + [! SHARED](sysdeps/ieee754/flt-32/e_exp2f.c): Remove. + [SHARED](versioned_symbol): Remove. + (libm-alias-float.h): Remove include. + (libm-alias-finite.h): Remove include. + (__redirect_exp2f): Remove. + (SYMBOL_NAME): Remove. + (ifunc-fma.h): Remove include. + (libc_ifunc_redirected): Remove. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL][! SHARED](__exp2f): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL][! SHARED](sysdeps/ieee754/flt-32/e_exp2f.c): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL][SHARED](versioned_symbol): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](libm-alias-float.h): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](libm-alias-finite.h): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](__redirect_exp2f): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](SYMBOL_NAME): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](ifunc-fma.h): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](libc_ifunc_redirected): New. + (sysdeps/x86/isa-level.h): Include file. + * sysdeps/x86_64/fpu/multiarch/e_expf.c: Modified. + [! SHARED](__expf): Remove. + [! SHARED](sysdeps/ieee754/flt-32/e_expf.c): Remove. + [SHARED](__hidden_ver1): Remove. + [SHARED](visibility): Remove. + [SHARED](versioned_symbol): Remove. + (libm-alias-float.h): Remove include. + (libm-alias-finite.h): Remove include. + (__redirect_expf): Remove. + (SYMBOL_NAME): Remove. + (ifunc-fma.h): Remove include. + (libc_ifunc_redirected): Remove. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL][! SHARED](__expf): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL][! SHARED](sysdeps/ieee754/flt-32/e_expf.c): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL][SHARED](__hidden_ver1): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL][SHARED](visibility): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL][SHARED](versioned_symbol): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](libm-alias-float.h): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](libm-alias-finite.h): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](__redirect_expf): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](SYMBOL_NAME): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](ifunc-fma.h): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](libc_ifunc_redirected): New. + (sysdeps/x86/isa-level.h): Include file. + * sysdeps/x86_64/fpu/multiarch/e_log.c: Modified. + (math.h): Remove include. + (libm-alias-finite.h): Remove include. + (__redirect_ieee754_log): Remove. + (SYMBOL_NAME): Remove. + (ifunc-avx-fma4.h): Remove include. + (libc_ifunc_redirected): Remove. + (__log): Remove. + (sysdeps/ieee754/dbl-64/e_log.c): Remove include. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](math.h): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](libm-alias-finite.h): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](__redirect_ieee754_log): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](SYMBOL_NAME): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](ifunc-avx-fma4.h): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](libc_ifunc_redirected): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](__log): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](sysdeps/ieee754/dbl-64/e_log.c): New. + (sysdeps/x86/isa-level.h): Include file. + * sysdeps/x86_64/fpu/multiarch/e_log2.c: Modified. + [! SHARED](__log2): Remove. + [! SHARED](sysdeps/ieee754/dbl-64/e_log2.c): Remove. + [SHARED](__hidden_ver1): Remove. + [SHARED](visibility): Remove. + [SHARED](versioned_symbol): Remove. + (libm-alias-double.h): Remove include. + (libm-alias-finite.h): Remove include. + (__redirect_log2): Remove. + (SYMBOL_NAME): Remove. + (ifunc-fma.h): Remove include. + (libc_ifunc_redirected): Remove. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL][! SHARED](__log2): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL][! SHARED](sysdeps/ieee754/dbl-64/e_log2.c): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL][SHARED](__hidden_ver1): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL][SHARED](visibility): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL][SHARED](versioned_symbol): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](libm-alias-double.h): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](libm-alias-finite.h): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](__redirect_log2): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](SYMBOL_NAME): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](ifunc-fma.h): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](libc_ifunc_redirected): New. + (sysdeps/x86/isa-level.h): Include file. + * sysdeps/x86_64/fpu/multiarch/e_log2f.c: Modified. + [! SHARED](__log2f): Remove. + [! SHARED](sysdeps/ieee754/flt-32/e_log2f.c): Remove. + [SHARED](__hidden_ver1): Remove. + [SHARED](visibility): Remove. + [SHARED](versioned_symbol): Remove. + (libm-alias-float.h): Remove include. + (libm-alias-finite.h): Remove include. + (__redirect_log2f): Remove. + (SYMBOL_NAME): Remove. + (ifunc-fma.h): Remove include. + (libc_ifunc_redirected): Remove. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL][! SHARED](__log2f): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL][! SHARED](sysdeps/ieee754/flt-32/e_log2f.c): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL][SHARED](__hidden_ver1): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL][SHARED](visibility): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL][SHARED](versioned_symbol): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](libm-alias-float.h): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](libm-alias-finite.h): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](__redirect_log2f): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](SYMBOL_NAME): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](ifunc-fma.h): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](libc_ifunc_redirected): New. + (sysdeps/x86/isa-level.h): Include file. + * sysdeps/x86_64/fpu/multiarch/e_logf.c: Modified. + [! SHARED](__logf): Remove. + [! SHARED](sysdeps/ieee754/flt-32/e_logf.c): Remove. + [SHARED](__hidden_ver1): Remove. + [SHARED](visibility): Remove. + [SHARED](versioned_symbol): Remove. + (libm-alias-float.h): Remove include. + (libm-alias-finite.h): Remove include. + (__redirect_logf): Remove. + (SYMBOL_NAME): Remove. + (ifunc-fma.h): Remove include. + (libc_ifunc_redirected): Remove. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL][! SHARED](__logf): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL][! SHARED](sysdeps/ieee754/flt-32/e_logf.c): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL][SHARED](__hidden_ver1): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL][SHARED](visibility): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL][SHARED](versioned_symbol): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](libm-alias-float.h): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](libm-alias-finite.h): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](__redirect_logf): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](SYMBOL_NAME): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](ifunc-fma.h): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](libc_ifunc_redirected): New. + (sysdeps/x86/isa-level.h): Include file. + * sysdeps/x86_64/fpu/multiarch/e_pow.c: Modified. + (math.h): Remove include. + (libm-alias-finite.h): Remove include. + (__redirect_ieee754_pow): Remove. + (SYMBOL_NAME): Remove. + (ifunc-fma4.h): Remove include. + (libc_ifunc_redirected): Remove. + (__pow): Remove. + (sysdeps/ieee754/dbl-64/e_pow.c): Remove include. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](math.h): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](libm-alias-finite.h): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](__redirect_ieee754_pow): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](SYMBOL_NAME): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](ifunc-fma4.h): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](libc_ifunc_redirected): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](__pow): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](sysdeps/ieee754/dbl-64/e_pow.c): New. + (sysdeps/x86/isa-level.h): Include file. + * sysdeps/x86_64/fpu/multiarch/e_powf.c: Modified. + [! SHARED](__powf): Remove. + [! SHARED](sysdeps/ieee754/flt-32/e_powf.c): Remove. + [SHARED](__hidden_ver1): Remove. + [SHARED](visibility): Remove. + [SHARED](versioned_symbol): Remove. + (libm-alias-float.h): Remove include. + (libm-alias-finite.h): Remove include. + (powf): Remove. + (__DECL_SIMD___redirect_powf): Remove. + (math.h): Remove include. + (powf): Remove. + (SYMBOL_NAME): Remove. + (ifunc-fma.h): Remove include. + (libc_ifunc_redirected): Remove. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL][! SHARED](__powf): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL][! SHARED](sysdeps/ieee754/flt-32/e_powf.c): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL][SHARED](__hidden_ver1): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL][SHARED](visibility): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL][SHARED](versioned_symbol): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](libm-alias-float.h): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](libm-alias-finite.h): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](powf): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](__DECL_SIMD___redirect_powf): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](math.h): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](powf): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](SYMBOL_NAME): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](ifunc-fma.h): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](libc_ifunc_redirected): New. + (sysdeps/x86/isa-level.h): Include file. + * sysdeps/x86_64/fpu/multiarch/s_atan.c: Modified. + (libm-alias-double.h): Remove include. + (__redirect_atan): Remove. + (SYMBOL_NAME): Remove. + (ifunc-avx-fma4.h): Remove include. + (libc_ifunc_redirected): Remove. + (__atan): Remove. + (sysdeps/ieee754/dbl-64/s_atan.c): Remove include. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](libm-alias-double.h): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](__redirect_atan): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](SYMBOL_NAME): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](ifunc-avx-fma4.h): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](libc_ifunc_redirected): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](__atan): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](sysdeps/ieee754/dbl-64/s_atan.c): New. + (sysdeps/x86/isa-level.h): Include file. + * sysdeps/x86_64/fpu/multiarch/s_ceil-avx.S: New file. + * sysdeps/x86_64/fpu/multiarch/s_ceil-sse4_1.S: Modified. + * sysdeps/x86_64/fpu/multiarch/s_ceil.c: Modified. + (NO_MATH_REDIRECT): Remove. + (libm-alias-double.h): Remove include. + (ceil): Remove. + (__ceil): Remove. + (math.h): Remove include. + (ceil): Remove. + (__ceil): Remove. + (SYMBOL_NAME): Remove. + (ifunc-sse4_1.h): Remove include. + (libc_ifunc_redirected): Remove. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](NO_MATH_REDIRECT): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](libm-alias-double.h): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](ceil): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](__ceil): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](math.h): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](ceil): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](__ceil): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](SYMBOL_NAME): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](ifunc-sse4_1.h): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](libc_ifunc_redirected): New. + (sysdeps/x86/isa-level.h): Include file. + * sysdeps/x86_64/fpu/multiarch/s_ceilf-avx.S: New file. + * sysdeps/x86_64/fpu/multiarch/s_ceilf-sse4_1.S: Modified. + * sysdeps/x86_64/fpu/multiarch/s_ceilf.c: Modified. + (NO_MATH_REDIRECT): Remove. + (libm-alias-float.h): Remove include. + (ceilf): Remove. + (__ceilf): Remove. + (math.h): Remove include. + (ceilf): Remove. + (__ceilf): Remove. + (SYMBOL_NAME): Remove. + (ifunc-sse4_1.h): Remove include. + (libc_ifunc_redirected): Remove. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](NO_MATH_REDIRECT): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](libm-alias-float.h): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](ceilf): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](__ceilf): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](math.h): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](ceilf): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](__ceilf): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](SYMBOL_NAME): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](ifunc-sse4_1.h): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](libc_ifunc_redirected): New. + (sysdeps/x86/isa-level.h): Include file. + * sysdeps/x86_64/fpu/multiarch/s_cosf.c: Modified. + (libm-alias-float.h): Remove include. + (__redirect_cosf): Remove. + (SYMBOL_NAME): Remove. + (ifunc-fma.h): Remove include. + (libc_ifunc_redirected): Remove. + [!(MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL)](sysdeps/ieee754/flt-32/s_cosf.c): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](libm-alias-float.h): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](__redirect_cosf): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](SYMBOL_NAME): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](ifunc-fma.h): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](libc_ifunc_redirected): New. + (sysdeps/x86/isa-level.h): Include file. + * sysdeps/x86_64/fpu/multiarch/s_expm1.c: Modified. + (libm-alias-double.h): Remove include. + (__redirect_expm1): Remove. + (SYMBOL_NAME): Remove. + (ifunc-fma.h): Remove include. + (libc_ifunc_redirected): Remove. + (__expm1): Remove. + (libm_alias_double): Remove. + (__expm1f128): Remove. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](libm-alias-double.h): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](__redirect_expm1): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](SYMBOL_NAME): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](ifunc-fma.h): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](libc_ifunc_redirected): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](__expm1): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](libm_alias_double): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](__expm1f128): New. + (sysdeps/x86/isa-level.h): Include file. + * sysdeps/x86_64/fpu/multiarch/s_floor-avx.S: New file. + * sysdeps/x86_64/fpu/multiarch/s_floor-sse4_1.S: Modified. + * sysdeps/x86_64/fpu/multiarch/s_floor.c: Modified. + (NO_MATH_REDIRECT): Remove. + (libm-alias-double.h): Remove include. + (floor): Remove. + (__floor): Remove. + (math.h): Remove include. + (floor): Remove. + (__floor): Remove. + (SYMBOL_NAME): Remove. + (ifunc-sse4_1.h): Remove include. + (libc_ifunc_redirected): Remove. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](NO_MATH_REDIRECT): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](libm-alias-double.h): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](floor): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](__floor): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](math.h): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](floor): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](__floor): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](SYMBOL_NAME): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](ifunc-sse4_1.h): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](libc_ifunc_redirected): New. + (sysdeps/x86/isa-level.h): Include file. + * sysdeps/x86_64/fpu/multiarch/s_floorf-avx.S: New file. + * sysdeps/x86_64/fpu/multiarch/s_floorf-sse4_1.S: Modified. + * sysdeps/x86_64/fpu/multiarch/s_floorf.c: Modified. + (NO_MATH_REDIRECT): Remove. + (libm-alias-float.h): Remove include. + (floorf): Remove. + (__floorf): Remove. + (math.h): Remove include. + (floorf): Remove. + (__floorf): Remove. + (SYMBOL_NAME): Remove. + (ifunc-sse4_1.h): Remove include. + (libc_ifunc_redirected): Remove. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](NO_MATH_REDIRECT): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](libm-alias-float.h): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](floorf): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](__floorf): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](math.h): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](floorf): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](__floorf): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](SYMBOL_NAME): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](ifunc-sse4_1.h): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](libc_ifunc_redirected): New. + (sysdeps/x86/isa-level.h): Include file. + * sysdeps/x86_64/fpu/multiarch/s_log1p.c: Modified. + (libm-alias-double.h): Remove include. + (__redirect_log1p): Remove. + (SYMBOL_NAME): Remove. + (ifunc-fma.h): Remove include. + (libc_ifunc_redirected): Remove. + (__log1p): Remove. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](libm-alias-double.h): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](__redirect_log1p): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](SYMBOL_NAME): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](ifunc-fma.h): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](libc_ifunc_redirected): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](__log1p): New. + (sysdeps/x86/isa-level.h): Include file. + * sysdeps/x86_64/fpu/multiarch/s_nearbyint-avx.S: New file. + * sysdeps/x86_64/fpu/multiarch/s_nearbyint-sse4_1.S: Modified. + * sysdeps/x86_64/fpu/multiarch/s_nearbyint.c: Modified. + (libm-alias-double.h): Remove include. + (nearbyint): Remove. + (__nearbyint): Remove. + (math.h): Remove include. + (nearbyint): Remove. + (__nearbyint): Remove. + (SYMBOL_NAME): Remove. + (ifunc-sse4_1.h): Remove include. + (libc_ifunc_redirected): Remove. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](libm-alias-double.h): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](nearbyint): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](__nearbyint): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](math.h): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](nearbyint): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](__nearbyint): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](SYMBOL_NAME): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](ifunc-sse4_1.h): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](libc_ifunc_redirected): New. + (sysdeps/x86/isa-level.h): Include file. + * sysdeps/x86_64/fpu/multiarch/s_nearbyintf-avx.S: New file. + * sysdeps/x86_64/fpu/multiarch/s_nearbyintf-sse4_1.S: Modified. + * sysdeps/x86_64/fpu/multiarch/s_nearbyintf.c: Modified. + (libm-alias-float.h): Remove include. + (nearbyintf): Remove. + (__nearbyintf): Remove. + (math.h): Remove include. + (nearbyintf): Remove. + (__nearbyintf): Remove. + (SYMBOL_NAME): Remove. + (ifunc-sse4_1.h): Remove include. + (libc_ifunc_redirected): Remove. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](libm-alias-float.h): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](nearbyintf): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](__nearbyintf): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](math.h): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](nearbyintf): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](__nearbyintf): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](SYMBOL_NAME): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](ifunc-sse4_1.h): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](libc_ifunc_redirected): New. + (sysdeps/x86/isa-level.h): Include file. + * sysdeps/x86_64/fpu/multiarch/s_rint-avx.S: New file. + * sysdeps/x86_64/fpu/multiarch/s_rint-sse4_1.S: Modified. + * sysdeps/x86_64/fpu/multiarch/s_rint.c: Modified. + (NO_MATH_REDIRECT): Remove. + (libm-alias-double.h): Remove include. + (rint): Remove. + (__rint): Remove. + (math.h): Remove include. + (rint): Remove. + (__rint): Remove. + (SYMBOL_NAME): Remove. + (ifunc-sse4_1.h): Remove include. + (libc_ifunc_redirected): Remove. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](NO_MATH_REDIRECT): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](libm-alias-double.h): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](rint): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](__rint): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](math.h): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](rint): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](__rint): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](SYMBOL_NAME): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](ifunc-sse4_1.h): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](libc_ifunc_redirected): New. + (sysdeps/x86/isa-level.h): Include file. + * sysdeps/x86_64/fpu/multiarch/s_rintf-avx.S: New file. + * sysdeps/x86_64/fpu/multiarch/s_rintf-sse4_1.S: Modified. + * sysdeps/x86_64/fpu/multiarch/s_rintf.c: Modified. + (NO_MATH_REDIRECT): Remove. + (libm-alias-float.h): Remove include. + (rintf): Remove. + (__rintf): Remove. + (math.h): Remove include. + (rintf): Remove. + (__rintf): Remove. + (SYMBOL_NAME): Remove. + (ifunc-sse4_1.h): Remove include. + (libc_ifunc_redirected): Remove. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](NO_MATH_REDIRECT): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](libm-alias-float.h): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](rintf): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](__rintf): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](math.h): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](rintf): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](__rintf): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](SYMBOL_NAME): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](ifunc-sse4_1.h): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](libc_ifunc_redirected): New. + (sysdeps/x86/isa-level.h): Include file. + * sysdeps/x86_64/fpu/multiarch/s_roundeven-avx.S: New file. + * sysdeps/x86_64/fpu/multiarch/s_roundeven-sse4_1.S: Modified. + * sysdeps/x86_64/fpu/multiarch/s_roundeven.c: Modified. + (libm-alias-double.h): Remove include. + (roundeven): Remove. + (__roundeven): Remove. + (math.h): Remove include. + (roundeven): Remove. + (__roundeven): Remove. + (SYMBOL_NAME): Remove. + (ifunc-sse4_1.h): Remove include. + (libc_ifunc_redirected): Remove. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](libm-alias-double.h): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](roundeven): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](__roundeven): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](math.h): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](roundeven): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](__roundeven): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](SYMBOL_NAME): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](ifunc-sse4_1.h): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](libc_ifunc_redirected): New. + (sysdeps/x86/isa-level.h): Include file. + * sysdeps/x86_64/fpu/multiarch/s_roundevenf-avx.S: New file. + * sysdeps/x86_64/fpu/multiarch/s_roundevenf-sse4_1.S: Modified. + * sysdeps/x86_64/fpu/multiarch/s_roundevenf.c: Modified. + (libm-alias-float.h): Remove include. + (roundevenf): Remove. + (__roundevenf): Remove. + (math.h): Remove include. + (roundevenf): Remove. + (__roundevenf): Remove. + (SYMBOL_NAME): Remove. + (ifunc-sse4_1.h): Remove include. + (libc_ifunc_redirected): Remove. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](libm-alias-float.h): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](roundevenf): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](__roundevenf): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](math.h): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](roundevenf): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](__roundevenf): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](SYMBOL_NAME): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](ifunc-sse4_1.h): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](libc_ifunc_redirected): New. + (sysdeps/x86/isa-level.h): Include file. + * sysdeps/x86_64/fpu/multiarch/s_sin.c: Modified. + (libm-alias-double.h): Remove include. + (__redirect_sin): Remove. + (__redirect_cos): Remove. + (SYMBOL_NAME): Remove. + (ifunc-avx-fma4.h): Remove include. + (libc_ifunc_redirected): Remove. + (SYMBOL_NAME): Remove. + (ifunc-avx-fma4.h): Remove include. + (libm_alias_double): Remove. + (__cos): Remove. + (__sin): Remove. + (sysdeps/ieee754/dbl-64/s_sin.c): Remove include. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](libm-alias-double.h): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](__redirect_sin): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](__redirect_cos): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](SYMBOL_NAME): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](ifunc-avx-fma4.h): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](libc_ifunc_redirected): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](SYMBOL_NAME): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](ifunc-avx-fma4.h): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](libm_alias_double): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](__cos): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](__sin): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](sysdeps/ieee754/dbl-64/s_sin.c): New. + (sysdeps/x86/isa-level.h): Include file. + * sysdeps/x86_64/fpu/multiarch/s_sincos.c: Modified. + (libm-alias-double.h): Remove include. + (__redirect_sincos): Remove. + (SYMBOL_NAME): Remove. + (ifunc-fma4.h): Remove include. + (libc_ifunc_redirected): Remove. + (__sincos): Remove. + (sysdeps/ieee754/dbl-64/s_sincos.c): Remove include. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](libm-alias-double.h): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](__redirect_sincos): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](SYMBOL_NAME): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](ifunc-fma4.h): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](libc_ifunc_redirected): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](__sincos): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](sysdeps/ieee754/dbl-64/s_sincos.c): New. + (sysdeps/x86/isa-level.h): Include file. + * sysdeps/x86_64/fpu/multiarch/s_sincosf.c: Modified. + (libm-alias-float.h): Remove include. + (__redirect_sincosf): Remove. + (SYMBOL_NAME): Remove. + (ifunc-fma.h): Remove include. + (libc_ifunc_redirected): Remove. + [!(MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL)](sysdeps/ieee754/flt-32/s_sincosf.c): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](libm-alias-float.h): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](__redirect_sincosf): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](SYMBOL_NAME): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](ifunc-fma.h): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](libc_ifunc_redirected): New. + (sysdeps/x86/isa-level.h): Include file. + * sysdeps/x86_64/fpu/multiarch/s_sinf.c: Modified. + (libm-alias-float.h): Remove include. + (__redirect_sinf): Remove. + (SYMBOL_NAME): Remove. + (ifunc-fma.h): Remove include. + (libc_ifunc_redirected): Remove. + [!(MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL)](sysdeps/ieee754/flt-32/s_sinf.c): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](libm-alias-float.h): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](__redirect_sinf): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](SYMBOL_NAME): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](ifunc-fma.h): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](libc_ifunc_redirected): New. + (sysdeps/x86/isa-level.h): Include file. + * sysdeps/x86_64/fpu/multiarch/s_tan.c: Modified. + (libm-alias-double.h): Remove include. + (__redirect_tan): Remove. + (SYMBOL_NAME): Remove. + (ifunc-avx-fma4.h): Remove include. + (libc_ifunc_redirected): Remove. + (__tan): Remove. + (sysdeps/ieee754/dbl-64/s_tan.c): Remove include. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](libm-alias-double.h): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](__redirect_tan): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](SYMBOL_NAME): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](ifunc-avx-fma4.h): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](libc_ifunc_redirected): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](__tan): New. + [MINIMUM_X86_ISA_LEVEL < AVX2_X86_ISA_LEVEL](sysdeps/ieee754/dbl-64/s_tan.c): New. + (sysdeps/x86/isa-level.h): Include file. + * sysdeps/x86_64/fpu/multiarch/s_trunc-avx.S: New file. + * sysdeps/x86_64/fpu/multiarch/s_trunc-sse4_1.S: Modified. + * sysdeps/x86_64/fpu/multiarch/s_trunc.c: Modified. + (NO_MATH_REDIRECT): Remove. + (libm-alias-double.h): Remove include. + (trunc): Remove. + (__trunc): Remove. + (math.h): Remove include. + (trunc): Remove. + (__trunc): Remove. + (SYMBOL_NAME): Remove. + (ifunc-sse4_1.h): Remove include. + (libc_ifunc_redirected): Remove. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](NO_MATH_REDIRECT): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](libm-alias-double.h): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](trunc): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](__trunc): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](math.h): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](trunc): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](__trunc): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](SYMBOL_NAME): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](ifunc-sse4_1.h): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](libc_ifunc_redirected): New. + (sysdeps/x86/isa-level.h): Include file. + * sysdeps/x86_64/fpu/multiarch/s_truncf-avx.S: New file. + * sysdeps/x86_64/fpu/multiarch/s_truncf-sse4_1.S: Modified. + * sysdeps/x86_64/fpu/multiarch/s_truncf.c: Modified. + (NO_MATH_REDIRECT): Remove. + (libm-alias-float.h): Remove include. + (truncf): Remove. + (__truncf): Remove. + (math.h): Remove include. + (truncf): Remove. + (__truncf): Remove. + (SYMBOL_NAME): Remove. + (ifunc-sse4_1.h): Remove include. + (libc_ifunc_redirected): Remove. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](NO_MATH_REDIRECT): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](libm-alias-float.h): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](truncf): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](__truncf): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](math.h): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](truncf): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](__truncf): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](SYMBOL_NAME): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](ifunc-sse4_1.h): New. + [MINIMUM_X86_ISA_LEVEL < SSE4_1_X86_ISA_LEVEL](libc_ifunc_redirected): New. + (sysdeps/x86/isa-level.h): Include file. + * sysdeps/x86_64/fpu/multiarch/w_exp.c: Modified. + (sysdeps/../math/w_exp.c): Remove include. + [!(MINIMUM_X86_ISA_LEVEL >= AVX2_X86_ISA_LEVEL)](sysdeps/../math/w_exp.c): New. + [MINIMUM_X86_ISA_LEVEL >= AVX2_X86_ISA_LEVEL](sysdeps/ieee754/dbl-64/w_exp.c): New. + (sysdeps/x86/isa-level.h): Include file. + * sysdeps/x86_64/fpu/multiarch/w_log.c: Modified. + (sysdeps/../math/w_log.c): Remove include. + [!(MINIMUM_X86_ISA_LEVEL >= AVX2_X86_ISA_LEVEL)](sysdeps/../math/w_log.c): New. + [MINIMUM_X86_ISA_LEVEL >= AVX2_X86_ISA_LEVEL](sysdeps/ieee754/dbl-64/w_log.c): New. + (sysdeps/x86/isa-level.h): Include file. + * sysdeps/x86_64/fpu/multiarch/w_pow.c: Modified. + (sysdeps/../math/w_pow.c): Remove include. + [!(MINIMUM_X86_ISA_LEVEL >= AVX2_X86_ISA_LEVEL)](sysdeps/../math/w_pow.c): New. + [MINIMUM_X86_ISA_LEVEL >= AVX2_X86_ISA_LEVEL](sysdeps/ieee754/dbl-64/w_pow.c): New. + (sysdeps/x86/isa-level.h): Include file. + +2024-02-25 Carlos O'Donell <carlos@redhat.com> + + COMMIT: f31d677fd69fb68c8b7a3c4cdaa6e9a1bd46d6a4 + hurd: Reformat Makefile. + + * hurd/Makefile: Modified. + +2024-02-25 Carlos O'Donell <carlos@redhat.com> + + COMMIT: 5420d211f057d26d6d42724dd13c5b43fdd7a9a3 + htl/tests: Reformat Makefile. + + * htl/tests/Makefile: Modified. + +2024-02-25 Carlos O'Donell <carlos@redhat.com> + + COMMIT: d19d28853c03ce9b88159b747de9d2979c779f05 + htl: Reformat Makefile. + + * htl/Makefile: Modified. + +2024-02-25 Carlos O'Donell <carlos@redhat.com> + + COMMIT: 589c51a5a359107e837bfd44a555f7a2fbfdd2eb + hesiod: Reformat Makefile. + + * hesiod/Makefile: Modified. + +2024-02-25 Carlos O'Donell <carlos@redhat.com> + + COMMIT: 5273dd98123f9f129ad735680974f6ed5a035efd + gmon: Reformat Makefile. + + * gmon/Makefile: Modified. + +2024-02-25 Carlos O'Donell <carlos@redhat.com> + + COMMIT: c432e667fc10777fba5f7be38fe659e6c40f7da4 + dlfcn: Reformat Makefile. + + * dlfcn/Makefile: Modified. + +2024-02-25 Carlos O'Donell <carlos@redhat.com> + + COMMIT: a4a12af5abe22d63fbebf0a219d8d13eff6db20c + dirent: Reformat Makefile. + + * dirent/Makefile: Modified. + +2024-02-25 Carlos O'Donell <carlos@redhat.com> + + COMMIT: 12956e0a330e3d90fc196f7d7a047ce613f78920 + ctype: Reformat Makefile. + + * ctype/Makefile: Modified. + +2024-02-25 Carlos O'Donell <carlos@redhat.com> + + COMMIT: d88fcccb1a07d071d366d352e126c98c72380660 + csu: Reformat Makefile. + + * csu/Makefile: Modified. + +2024-02-25 Carlos O'Donell <carlos@redhat.com> + + COMMIT: 06e51f4d6d1f19b55a0b6f4d5031eb0703c369c9 + conform: Reformat Makefile. + + * conform/Makefile: Modified. + +2024-02-25 H.J. Lu <hjl.tools@gmail.com> + + COMMIT: c503c2603c230005f5af40d14494c427f61b0160 + Support compiling .S files with additional options + + * Makerules: Modified. + +2024-02-25 H.J. Lu <hjl.tools@gmail.com> + + COMMIT: dfb05f8e704edac70db38c4c8ee700769d91a413 + x86-64: Save APX registers in ld.so trampoline + + * sysdeps/x86/sysdep.h: Modified. + (STATE_SAVE_OFFSET): Remove. + (STATE_SAVE_MASK): Remove. + [! __x86_64__](STATE_SAVE_OFFSET): New. + [! __x86_64__](STATE_SAVE_MASK): New. + [__x86_64__](STATE_SAVE_OFFSET): New. + [__x86_64__](STATE_SAVE_MASK): New. + (X86_XSTATE_X87_ID): New. + (X86_XSTATE_SSE_ID): New. + (X86_XSTATE_AVX_ID): New. + (X86_XSTATE_BNDREGS_ID): New. + (X86_XSTATE_BNDCFG_ID): New. + (X86_XSTATE_K_ID): New. + (X86_XSTATE_ZMM_H_ID): New. + (X86_XSTATE_ZMM_ID): New. + (X86_XSTATE_PKRU_ID): New. + (X86_XSTATE_TILECFG_ID): New. + (X86_XSTATE_TILEDATA_ID): New. + (X86_XSTATE_APX_F_ID): New. + +2024-02-23 Junxian Zhu <zhujunxian@oss.cipunited.com> + + COMMIT: 0a4d6c825405bb0dd5058566b01f12704cfc3731 + benchtests: Add more benchtests for rounding functions. + + * benchtests/Makefile: Modified. + * benchtests/ceil-inputs: New file. + * benchtests/ceilf-inputs: New file. + * benchtests/floor-inputs: New file. + * benchtests/floorf-inputs: New file. + * benchtests/llrint-inputs: New file. + * benchtests/llrintf-inputs: New file. + * benchtests/lrint-inputs: New file. + * benchtests/lrintf-inputs: New file. + * benchtests/nearbyint-inputs: New file. + * benchtests/nearbyintf-inputs: New file. + * benchtests/rintf-inputs: New file. + +2024-02-23 Simon Chopin <simon.chopin@canonical.com> + + COMMIT: 59e0441d4a1198aa9d21643a6e4f370faec4ffbf + tests: gracefully handle AppArmor userns containment + + * support/test-container.c: Modified. + (check_for_unshare_hints): Modified function. + (main): Modified function. + * sysdeps/unix/sysv/linux/tst-pidfd_getpid.c: Modified. + (do_test): Modified function. + +2024-02-23 Konstantin Kharlamov <Hi-Angel@yandex.ru> + + COMMIT: fe00366b63c5cf1a84864647ec4e15721c04ebcf + treewide: python-scripts: use `is None` for none-equality + + * math/gen-tgmath-tests.py: Modified. + * nptl/nptl-printers.py: Modified. + +2024-02-23 Adhemerval Zanella <adhemerval.zanella@linaro.org> + + COMMIT: 1e9a550ba41a5453c6578bb748fe2223a87e3024 + powerpc: Remove power7 strstr optimization + + * sysdeps/powerpc/powerpc64/multiarch/Makefile: Modified. + * sysdeps/powerpc/powerpc64/multiarch/ifunc-impl-list.c: Modified. + (__libc_ifunc_impl_list): Modified function. + * sysdeps/powerpc/powerpc64/multiarch/strstr-power7.S: Delete file. + * sysdeps/powerpc/powerpc64/multiarch/strstr-ppc64.c: Delete file. + * sysdeps/powerpc/powerpc64/multiarch/strstr.c: Delete file. + * sysdeps/powerpc/powerpc64/power7/Makefile: Modified. + * sysdeps/powerpc/powerpc64/power7/strstr-ppc64.c: Delete file. + * sysdeps/powerpc/powerpc64/power7/strstr.S: Delete file. + +2024-02-23 Adhemerval Zanella <adhemerval.zanella@linaro.org> + + COMMIT: f4c142bb9fe6b02c0af8cfca8a920091e2dba44b + arm: Use _dl_find_object on __gnu_Unwind_Find_exidx (BZ 31405) + + * elf/Makefile: Modified. + * elf/dl-find_object.c: Modified. + (_dl_find_object): Remove function. + (rtld_hidden_def): Remove. + (__dl_find_object): New function. + (hidden_def): New. + (weak_alias): New. + * include/dlfcn.h: Modified. + [! _ISOMAC](rtld_hidden_proto): Remove. + [! _ISOMAC](__dl_find_object): New. + [! _ISOMAC](hidden_proto): New. + * sysdeps/arm/find_exidx.c: Modified. + (unwind.h): Remove include. + (unw_eh_callback_data): Remove. + (find_exidx_callback): Remove function. + (__gnu_Unwind_Find_exidx): Modified function. + +2024-02-22 Xi Ruoyao <xry111@xry111.site> + + COMMIT: e2a65ecc4b30a797df7dc6529f09b712aa256029 + math: Update mips64 ulps + + * sysdeps/mips/mips64/libm-test-ulps: Modified. + +2024-02-22 Xi Ruoyao <xry111@xry111.site> + + COMMIT: b881f1efcd1b30c2afab3599b41ce9cd4864c823 + elf: Add new LoongArch reloc types (110 to 126) into elf.h + + * elf/elf.h: Modified. + (R_LARCH_CALL36): New. + (R_LARCH_TLS_DESC_PC_HI20): New. + (R_LARCH_TLS_DESC_PC_LO12): New. + (R_LARCH_TLS_DESC64_PC_LO20): New. + (R_LARCH_TLS_DESC64_PC_HI12): New. + (R_LARCH_TLS_DESC_HI20): New. + (R_LARCH_TLS_DESC_LO12): New. + (R_LARCH_TLS_DESC64_LO20): New. + (R_LARCH_TLS_DESC64_HI12): New. + (R_LARCH_TLS_DESC_LD): New. + (R_LARCH_TLS_DESC_CALL): New. + (R_LARCH_TLS_LE_HI20_R): New. + (R_LARCH_TLS_LE_ADD_R): New. + (R_LARCH_TLS_LE_LO12_R): New. + (R_LARCH_TLS_LD_PCREL20_S2): New. + (R_LARCH_TLS_GD_PCREL20_S2): New. + (R_LARCH_TLS_DESC_PCREL20_S2): New. + +2024-02-21 Stefan Liebler <stli@linux.ibm.com> + + COMMIT: 2938846accff13087d520cc29c17b857337ae927 + build-many-glibcs.py: Add s390 --disable-multi-arch / multi-arch configurations. + + * scripts/build-many-glibcs.py: Modified. + +2024-02-19 Daniel Cederman <cederman@gaisler.com> + + COMMIT: aa4106db1d6f80e64dcc8818cc07aacd7fabb03e + sparc: Treat the version field in the FPU control word as reserved + + * sysdeps/sparc/fpu/fpu_control.h: Modified. + (_FPU_RESERVED): Modified. + +2024-02-17 Flavio Cruz <flaviocruz@gmail.com> + + COMMIT: 88b771ab5e1169e746dbf4a990d90cffc5fa54ea + Implement setcontext/getcontext/makecontext/swapcontext for Hurd x86_64 + + * sysdeps/mach/hurd/x86_64/Makefile: Modified. + * sysdeps/mach/hurd/x86_64/__start_context.S: New file. + * sysdeps/mach/hurd/x86_64/getcontext.S: New file. + * sysdeps/mach/hurd/x86_64/makecontext.c: New file. + * sysdeps/mach/hurd/x86_64/setcontext.S: New file. + * sysdeps/mach/hurd/x86_64/swapcontext.S: New file. + +2024-02-17 Flavio Cruz <flaviocruz@gmail.com> + + COMMIT: e3da8f9badf95dff63547c9a7886cdfed284aa3f + Use proc_getchildren_rusage when available in getrusage and times. + + * config.h.in: Modified. + * sysdeps/mach/hurd/configure: Modified. + * sysdeps/mach/hurd/configure.ac: Modified. + * sysdeps/mach/hurd/getrusage.c: Modified. + (__getrusage): Modified function. + * sysdeps/mach/hurd/times.c: Modified. + (__times): Modified function. + [HAVE_HURD_PROC_GETCHILDREN_RUSAGE](clock_from_timeval): New. + +2024-02-17 Florian Weimer <fweimer@redhat.com> + + COMMIT: 6a04404521ac4119ae36827eeb288ea84eee7cf6 + Linux: Switch back to assembly syscall wrapper for prctl (bug 29770) + + * sysdeps/unix/sysv/linux/syscalls.list: Modified. + * sysdeps/unix/sysv/linux/prctl.c: Move to... + * sysdeps/unix/sysv/linux/x86_64/x32/prctl.c: ... here. + [__TIMESIZE != 64](weak_alias): Remove. + +2024-02-16 Florian Weimer <fweimer@redhat.com> + + COMMIT: 0d9166c2245cad4ac520b337dee40c9a583872b6 + i386: Use generic memrchr in libc (bug 31316) + + * sysdeps/i386/i686/multiarch/memrchr-c.c: Modified. + (strong_alias): New. + * sysdeps/i386/i686/multiarch/memrchr-sse2.S: Modified. + +2024-02-15 H.J. Lu <hjl.tools@gmail.com> + + COMMIT: ef7f4b1fef67430a8f3cfc77fa6aada2add851d7 + Apply the Makefile sorting fix + + * sysdeps/loongarch/lp64/multiarch/Makefile: Modified. + * sysdeps/x86/Makefile: Modified. + * sysdeps/x86_64/Makefile: Modified. + * sysdeps/x86_64/fpu/multiarch/Makefile: Modified. + * sysdeps/x86_64/multiarch/Makefile: Modified. + +2024-02-15 H.J. Lu <hjl.tools@gmail.com> + + COMMIT: 71d133c500b0d23f6b6a7c6e3595e3fc447bfe91 + sysdeps/x86_64/Makefile (tests): Add the end marker + + * sysdeps/x86_64/Makefile: Modified. + +2024-02-15 H.J. Lu <hjl.tools@gmail.com> + + COMMIT: 6a2512bf1605a4208dd94ef67408488d8acb2409 + sort-makefile-lines.py: Allow '_' in name and "^# name" + + * scripts/sort-makefile-lines.py: Modified. + +2024-02-14 Askar Safin <safinaskar@zohomail.com> + + COMMIT: dbae3a3940940977b8b8190a145a444732846219 + trivial doc fix: remove weird phrase "syscall takes zero to five arguments" + + * manual/startup.texi: Modified. + +2024-02-14 Junxian Zhu <zhujunxian@oss.cipunited.com> + + COMMIT: 545480506fc6576ea37a14e56c654935c691709d + mips: Use builtins for ffs and ffsll + + * sysdeps/mips/math-use-builtins-ffs.h: New file. + +2024-02-13 Adhemerval Zanella <adhemerval.zanella@linaro.org> + + COMMIT: 491e55beab7457ed310a4a47496f4a333c5d1032 + x86: Expand the comment on when REP STOSB is used on memset + + * sysdeps/x86_64/multiarch/memset-vec-unaligned-erms.S: Modified. + +2024-02-13 Adhemerval Zanella <adhemerval.zanella@linaro.org> + + COMMIT: 272708884cb750f12f5c74a00e6620c19dc6d567 + x86: Do not prefer ERMS for memset on Zen3+ + + * sysdeps/x86/dl-cacheinfo.h: Modified. + (dl_init_cacheinfo): Modified function. + +2024-02-13 Adhemerval Zanella <adhemerval.zanella@linaro.org> + + COMMIT: 0c0d39fe4aeb0f69b26e76337c5dfd5530d5d44e + x86: Fix Zen3/Zen4 ERMS selection (BZ 30994) + + * sysdeps/x86/dl-cacheinfo.h: Modified. + (dl_init_cacheinfo): Modified function. + +2024-02-12 Michael Jeanson <mjeanson@efficios.com> + + COMMIT: 155bb9d036646138348fee0ac045de601811e0c5 + x86/cet: fix shadow stack test scripts + + * sysdeps/x86_64/tst-shstk-legacy-1e-static.sh: Modified. + * sysdeps/x86_64/tst-shstk-legacy-1e.sh: Modified. + * sysdeps/x86_64/tst-shstk-legacy-1g.sh: Modified. + +2024-02-12 H.J. Lu <hjl.tools@gmail.com> + + COMMIT: c676808a34e27fc3f7b1115c5257b382c6f00cb4 + test_printers_common.py: Remove invalid escape sequence + + * scripts/test_printers_common.py: Modified. + +2024-02-09 Florian Weimer <fweimer@redhat.com> + + COMMIT: 15de3d17e1d9da5d38efb0a87a82efbc5bda732d + elf: Remove attempt at env handling in elf/tst-rtld-list-diagnostics.py + + * elf/tst-rtld-list-diagnostics.py: Modified. + +2024-02-08 Joseph Myers <josmyers@redhat.com> + + COMMIT: 1bc61cf8e074e9faf67e6d32e99cb8ddab7e2eb6 + Add SOL_VSOCK from Linux 6.7 to bits/socket.h + + * sysdeps/unix/sysv/linux/bits/socket.h: Modified. + (SOL_VSOCK): New. + +2024-02-08 Mike FABIAN <mfabian@redhat.com> + + COMMIT: 07fd072caff50bca2a7e9f5737a5b38280d2ffda + localedata: ssy_ER: Fix syntax error + + * localedata/locales/ssy_ER: Modified. + +2024-02-08 Dragan Stanojević (Nevidljivi) <neville.ravenwood@gmail.com> + + COMMIT: 559010e471acb3cb292615b71b248aba73e5c2fe + localedata: hr_HR: change currency to EUR/€ + + * localedata/locales/hr_HR: Modified. + * stdlib/tst-strfmon_l.c: Modified. + +2024-02-08 Mike FABIAN <mfabian@redhat.com> + + COMMIT: 30a61b1dd98dacbbdcba960e247400b6b2abd8f9 + Change lv_LV collation to agree with the recent change in CLDR + + * localedata/locales/lv_LV: Modified. + * localedata/lv_LV.UTF-8.in: Modified. + +2024-02-08 Joseph Myers <josmyers@redhat.com> + + COMMIT: 284b92832119225d1694a587019cbf47a7146e67 + Add new AArch64 HWCAP2 definitions from Linux 6.7 to bits/hwcap.h + + * sysdeps/unix/sysv/linux/aarch64/bits/hwcap.h: Modified. + (HWCAP2_SVE_B16B16): New. + (HWCAP2_LRCPC3): New. + (HWCAP2_LSE128): New. + +2024-02-06 Stefan Liebler <stli@linux.ibm.com> + + COMMIT: fa3eb7d5e7d32ca1ad48b48a7eb6d15b8382c3a7 + string: Add hidden builtin definition for __strcpy_chk. + + * debug/strcpy_chk.c: Modified. + (libc_hidden_builtin_def): New. + * include/string.h: Modified. + [! _ISOMAC](libc_hidden_builtin_proto): New. + +2024-02-05 Adhemerval Zanella <adhemerval.zanella@linaro.org> + + COMMIT: 1e25112dc0cb2515d27d8d178b1ecce778a9d37a + arm: Remove wrong ldr from _dl_start_user (BZ 31339) + + * sysdeps/arm/dl-machine.h: Modified. + [! dl_machine_h](RTLD_START): Modified. + +2024-02-05 Xi Ruoyao <xry111@xry111.site> + + COMMIT: 2e80f139376450acdb7d879d799439578a41810e + LoongArch: Use builtins for ffs and ffsll + + * sysdeps/loongarch/math-use-builtins-ffs.h: New file. + +2024-02-05 Xi Ruoyao <xry111@xry111.site> + + COMMIT: 814ed22eab4f3f43bb02229edab5d50004310258 + Remove sysdeps/ia64/math-use-builtins-ffs.h + + * sysdeps/ia64/math-use-builtins-ffs.h: Delete file. + +2024-02-05 Stefan Liebler <stli@linux.ibm.com> + + COMMIT: ab0db3b8849a3d4e56e30d50bc019666532b1299 + Fix stringop-overflow warning in tst-strlcat2. + + * string/tst-strlcat2.c: Modified. + (do_one_test): Modified function. + +2024-02-02 Adhemerval Zanella <adhemerval.zanella@linaro.org> + + COMMIT: bbd248ac0d75efdef8fe61ea69b1fb25fb95b6e7 + mips: FIx clone3 implementation (BZ 31325) + + * sysdeps/unix/sysv/linux/mips/clone3.S: Modified. + +2024-02-01 Paul Eggert <eggert@cs.ucla.edu> + + COMMIT: e7b90e6e605cf236d4bd79e4930cd6a46f9932c7 + stdlib: fix qsort example in manual + + * manual/search.texi: Modified. + +2024-02-01 Jakub Jelinek <jakub@redhat.com> + + COMMIT: 275607a07fb2a60757ba47ec3f1f4e645ad19bb1 + soft-fp: Add brain format support + + * soft-fp/brain.h: New file. + * soft-fp/extendbfsf2.c: New file. + * soft-fp/floatdibf.c: New file. + * soft-fp/floattibf.c: New file. + * soft-fp/floatundibf.c: New file. + * soft-fp/floatuntibf.c: New file. + * soft-fp/truncbfhf2.c: New file. + * soft-fp/truncdfbf2.c: New file. + * soft-fp/trunchfbf2.c: New file. + * soft-fp/truncsfbf2.c: New file. + * soft-fp/trunctfbf2.c: New file. + * soft-fp/truncxfbf2.c: New file. + +2024-02-01 Joseph Myers <josmyers@redhat.com> + + COMMIT: 83d8d289b295406e30bc8a079286b093d552c3a5 + Rename c2x / gnu2x tests to c23 / gnu23 + + * stdio-common/Makefile: Modified. + * stdio-common/tst-scanf-binary-c2x.c: Move to... + * stdio-common/tst-scanf-binary-c23.c: ... here. + * stdlib/Makefile: Modified. + * stdlib/tst-strtol-binary-c2x.c: Move to... + * stdlib/tst-strtol-binary-c23.c: ... here. + * stdlib/tst-strtol-binary-gnu2x.c: Move to... + * stdlib/tst-strtol-binary-gnu23.c: ... here. + * sysdeps/ieee754/ldbl-128ibm-compat/Makefile: Modified. + * sysdeps/ieee754/ldbl-128ibm-compat/tst-ibm128-scanf-binary-c23.c: New file. + * sysdeps/ieee754/ldbl-128ibm-compat/tst-ibm128-scanf-binary-c2x.c: Delete file. + * sysdeps/ieee754/ldbl-128ibm-compat/tst-ibm128-wscanf-binary-c23.c: New file. + * sysdeps/ieee754/ldbl-128ibm-compat/tst-ibm128-wscanf-binary-c2x.c: Delete file. + * sysdeps/ieee754/ldbl-128ibm-compat/tst-ieee128-scanf-binary-c23.c: New file. + * sysdeps/ieee754/ldbl-128ibm-compat/tst-ieee128-scanf-binary-c2x.c: Delete file. + * sysdeps/ieee754/ldbl-128ibm-compat/tst-ieee128-wscanf-binary-c23.c: New file. + * sysdeps/ieee754/ldbl-128ibm-compat/tst-ieee128-wscanf-binary-c2x.c: Delete file. + * sysdeps/ieee754/ldbl-opt/Makefile: Modified. + * sysdeps/ieee754/ldbl-opt/tst-nldbl-scanf-binary-c23.c: New file. + * sysdeps/ieee754/ldbl-opt/tst-nldbl-scanf-binary-c2x.c: Delete file. + * sysdeps/ieee754/ldbl-opt/tst-nldbl-wscanf-binary-c23.c: New file. + * sysdeps/ieee754/ldbl-opt/tst-nldbl-wscanf-binary-c2x.c: Delete file. + * sysdeps/powerpc/powerpc64/le/Makefile: Modified. + * wcsmbs/Makefile: Modified. + * wcsmbs/tst-wcstol-binary-c2x.c: Move to... + * wcsmbs/tst-wcstol-binary-c23.c: ... here. + * wcsmbs/tst-wcstol-binary-gnu2x.c: Move to... + * wcsmbs/tst-wcstol-binary-gnu23.c: ... here. + * wcsmbs/tst-wscanf-binary-c2x.c: Move to... + * wcsmbs/tst-wscanf-binary-c23.c: ... here. + +2024-02-01 Jakub Jelinek <jakub@redhat.com> + + COMMIT: c62b6265a641aaec4b0fa1b3fe622c2edf9c3821 + manual: Fix up stdbit.texi + + * manual/stdbit.texi: Modified. + +2024-02-01 Adhemerval Zanella Netto <adhemerval.zanella@linaro.org> + + COMMIT: ae4b8d6a0e0dc502e3d8307474a2e5691b7434da + string: Use builtins for ffs and ffsll + + * string/ffs.c: Modified. + (__ffs): Modified function. + (math-use-builtins.h): Include file. + * string/ffsll.c: Modified. + (ffsll): Remove function. + (math-use-builtins.h): Include file. + (libc-diag.h): Include file. + (__ffsll): New function. + (weak_alias): New. + * sysdeps/aarch64/math-use-builtins-ffs.h: New file. + * sysdeps/alpha/alphaev67/ffs.S: Delete file. + * sysdeps/alpha/alphaev67/ffsll.S: Delete file. + * sysdeps/alpha/ffs.S: Delete file. + * sysdeps/alpha/ffsll.S: Delete file. + * sysdeps/alpha/math-use-builtins-ffs.h: New file. + * sysdeps/arc/math-use-builtins-ffs.h: New file. + * sysdeps/arm/armv6t2/ffs.S: Delete file. + * sysdeps/arm/armv6t2/ffsll.S: Delete file. + * sysdeps/arm/armv6t2/math-use-builtins-ffs.h: New file. + * sysdeps/generic/math-use-builtins-ffs.h: New file. + * sysdeps/generic/math-use-builtins.h: Modified. + (math-use-builtins-ffs.h): Include file. + * sysdeps/i386/ffs.c: Delete file. + * sysdeps/i386/i686/ffs.c: Delete file. + * sysdeps/i386/math-use-builtins-ffs.h: New file. + * sysdeps/ia64/math-use-builtins-ffs.h: New file. + * sysdeps/m68k/ffs.c: Delete file. + * sysdeps/m68k/math-use-builtins-ffs.h: New file. + * sysdeps/powerpc/ffs.c: Delete file. + * sysdeps/powerpc/math-use-builtins-ffs.h: New file. + * sysdeps/powerpc/powerpc64/ffsll.c: Delete file. + * sysdeps/s390/ffs.c: Delete file. + * sysdeps/x86_64/ffs.c: Delete file. + * sysdeps/x86_64/ffsll.c: Delete file. + * sysdeps/x86_64/math-use-builtins-ffs.h: New file. + * sysdeps/x86_64/x32/ffs.c: Delete file. + +2024-02-01 Adhemerval Zanella <adhemerval.zanella@linaro.org> + + COMMIT: 26d01172f5c3f3b912ecf21ebb911eb5351bba4d + misc: tst-poll: Proper synchronize with child before sending the signal + + * sysdeps/unix/sysv/linux/tst-epoll.c: Modified. + (support/xtime.h): Remove include. + (test_epoll_basic): Modified function. + (support/process_state.h): Include file. + +2024-02-01 Adhemerval Zanella <adhemerval.zanella@linaro.org> + + COMMIT: 9c61303ebbdc6e727c89591bff3229c9fbfa438b + math: Remove bogus math implementations + + * math/e_exp10.c: Delete file. + * math/e_exp10l.c: Delete file. + * math/s_fma.c: Delete file. + * math/s_fmaf.c: Delete file. + * math/s_fmal.c: Delete file. + +2024-02-01 Joseph Myers <josmyers@redhat.com> + + COMMIT: 42cc619dfbc44e263239c2de870bae11ad65810a + Refer to C23 in place of C2X in glibc + + * NEWS: Modified. + * bits/fenv.h: Modified. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](femode_t): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](FE_DFL_MODE): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](femode_t): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](FE_DFL_MODE): New. + * bits/libc-header-start.h: Modified. + [!(__GLIBC_USE (IEC_60559_BFP_EXT) || __GLIBC_USE (ISOC2X))](__GLIBC_USE_IEC_60559_BFP_EXT_C2X): Remove. + [!(__GLIBC_USE (IEC_60559_FUNCS_EXT) || __GLIBC_USE (ISOC2X))](__GLIBC_USE_IEC_60559_FUNCS_EXT_C2X): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT) || __GLIBC_USE (ISOC2X)](__GLIBC_USE_IEC_60559_BFP_EXT_C2X): Remove. + [__GLIBC_USE (IEC_60559_FUNCS_EXT) || __GLIBC_USE (ISOC2X)](__GLIBC_USE_IEC_60559_FUNCS_EXT_C2X): Remove. + (__GLIBC_USE_IEC_60559_BFP_EXT_C2X): Remove. + (__GLIBC_USE_IEC_60559_FUNCS_EXT_C2X): Remove. + [!(__GLIBC_USE (IEC_60559_BFP_EXT) || __GLIBC_USE (ISOC23))](__GLIBC_USE_IEC_60559_BFP_EXT_C23): New. + [!(__GLIBC_USE (IEC_60559_FUNCS_EXT) || __GLIBC_USE (ISOC23))](__GLIBC_USE_IEC_60559_FUNCS_EXT_C23): New. + [__GLIBC_USE (IEC_60559_BFP_EXT) || __GLIBC_USE (ISOC23)](__GLIBC_USE_IEC_60559_BFP_EXT_C23): New. + [__GLIBC_USE (IEC_60559_FUNCS_EXT) || __GLIBC_USE (ISOC23)](__GLIBC_USE_IEC_60559_FUNCS_EXT_C23): New. + (__GLIBC_USE_IEC_60559_BFP_EXT_C23): New. + (__GLIBC_USE_IEC_60559_FUNCS_EXT_C23): New. + * include/features.h: Modified. + [!(( _ISOC2X_SOURCE || ( __STDC_VERSION__ && __STDC_VERSION__ > 201710L)))](__GLIBC_USE_ISOC2X): Remove. + [!(__GLIBC_USE (ISOC2X))](__GLIBC_USE_C2X_STRTOL): Remove. + [( _DEFAULT_SOURCE || (! __STRICT_ANSI__ && ! _ISOC99_SOURCE && ! _ISOC11_SOURCE && ! _ISOC2X_SOURCE && ! _POSIX_SOURCE && ! _POSIX_C_SOURCE && ! _XOPEN_SOURCE))](_DEFAULT_SOURCE): Remove. + [( _ISOC11_SOURCE || _ISOC2X_SOURCE || ( __STDC_VERSION__ && __STDC_VERSION__ >= 201112L))](__USE_ISOC11): Remove. + [( _ISOC2X_SOURCE || ( __STDC_VERSION__ && __STDC_VERSION__ > 201710L))](__GLIBC_USE_ISOC2X): Remove. + [( _ISOC99_SOURCE || _ISOC11_SOURCE || _ISOC2X_SOURCE || ( __STDC_VERSION__ && __STDC_VERSION__ >= 199409L))](__USE_ISOC95): Remove. + [( _ISOC99_SOURCE || _ISOC11_SOURCE || _ISOC2X_SOURCE || ( __STDC_VERSION__ && __STDC_VERSION__ >= 199901L))](__USE_ISOC99): Remove. + [_GNU_SOURCE](_ISOC2X_SOURCE): Remove. + [_GNU_SOURCE](_ISOC23_SOURCE): New. + [__GLIBC_USE (ISOC2X)](__GLIBC_USE_C2X_STRTOL): Remove. + (__GLIBC_USE_ISOC2X): Remove. + (__GLIBC_USE_C2X_STRTOL): Remove. + [!(( _ISOC23_SOURCE || ( __STDC_VERSION__ && __STDC_VERSION__ > 201710L)))](__GLIBC_USE_ISOC23): New. + [!(__GLIBC_USE (ISOC23))](__GLIBC_USE_C23_STRTOL): New. + [( _DEFAULT_SOURCE || (! __STRICT_ANSI__ && ! _ISOC99_SOURCE && ! _ISOC11_SOURCE && ! _ISOC23_SOURCE && ! _POSIX_SOURCE && ! _POSIX_C_SOURCE && ! _XOPEN_SOURCE))](_DEFAULT_SOURCE): New. + [( _ISOC11_SOURCE || _ISOC23_SOURCE || ( __STDC_VERSION__ && __STDC_VERSION__ >= 201112L))](__USE_ISOC11): New. + [( _ISOC23_SOURCE || ( __STDC_VERSION__ && __STDC_VERSION__ > 201710L))](__GLIBC_USE_ISOC23): New. + [( _ISOC99_SOURCE || _ISOC11_SOURCE || _ISOC23_SOURCE || ( __STDC_VERSION__ && __STDC_VERSION__ >= 199409L))](__USE_ISOC95): New. + [( _ISOC99_SOURCE || _ISOC11_SOURCE || _ISOC23_SOURCE || ( __STDC_VERSION__ && __STDC_VERSION__ >= 199901L))](__USE_ISOC99): New. + [_ISOC2X_SOURCE](_ISOC2X_SOURCE): New. + [_ISOC2X_SOURCE](_ISOC23_SOURCE): New. + [__GLIBC_USE (ISOC23)](__GLIBC_USE_C23_STRTOL): New. + (__GLIBC_USE_ISOC23): New. + (__GLIBC_USE_C23_STRTOL): New. + * include/limits.h: Modified. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)][! CHAR_WIDTH](CHAR_WIDTH): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)][! INT_WIDTH](INT_WIDTH): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)][! LLONG_WIDTH](LLONG_WIDTH): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)][! LONG_WIDTH](LONG_WIDTH): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)][! SCHAR_WIDTH](SCHAR_WIDTH): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)][! SHRT_WIDTH](SHRT_WIDTH): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)][! UCHAR_WIDTH](UCHAR_WIDTH): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)][! UINT_WIDTH](UINT_WIDTH): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)][! ULLONG_WIDTH](ULLONG_WIDTH): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)][! ULONG_WIDTH](ULONG_WIDTH): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)][! USHRT_WIDTH](USHRT_WIDTH): Remove. + [__GLIBC_USE (ISOC2X)][! BOOL_MAX](BOOL_MAX): Remove. + [__GLIBC_USE (ISOC2X)][! BOOL_WIDTH](BOOL_WIDTH): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)][! CHAR_WIDTH](CHAR_WIDTH): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)][! INT_WIDTH](INT_WIDTH): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)][! LLONG_WIDTH](LLONG_WIDTH): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)][! LONG_WIDTH](LONG_WIDTH): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)][! SCHAR_WIDTH](SCHAR_WIDTH): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)][! SHRT_WIDTH](SHRT_WIDTH): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)][! UCHAR_WIDTH](UCHAR_WIDTH): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)][! UINT_WIDTH](UINT_WIDTH): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)][! ULLONG_WIDTH](ULLONG_WIDTH): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)][! ULONG_WIDTH](ULONG_WIDTH): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)][! USHRT_WIDTH](USHRT_WIDTH): New. + [__GLIBC_USE (ISOC23)][! BOOL_MAX](BOOL_MAX): New. + [__GLIBC_USE (ISOC23)][! BOOL_WIDTH](BOOL_WIDTH): New. + * include/stdio.h: Modified. + * include/stdlib.h: Modified. + [! _ISOMAC][__GLIBC_USE (C2X_STRTOL)](strtol): Remove. + [! _ISOMAC][__GLIBC_USE (C2X_STRTOL)](atoi): Remove. + [! _ISOMAC][__GLIBC_USE (C2X_STRTOL)](strtoul): Remove. + [! _ISOMAC][__GLIBC_USE (C2X_STRTOL)](strtoll): Remove. + [! _ISOMAC][__GLIBC_USE (C2X_STRTOL)](strtoull): Remove. + [! _ISOMAC][__GLIBC_USE (C2X_STRTOL)](strtol_l): Remove. + [! _ISOMAC][__GLIBC_USE (C2X_STRTOL)](strtoul_l): Remove. + [! _ISOMAC][__GLIBC_USE (C2X_STRTOL)](strtoll_l): Remove. + [! _ISOMAC][__GLIBC_USE (C2X_STRTOL)](strtoull_l): Remove. + [! _ISOMAC][__GLIBC_USE (C23_STRTOL)](strtol): New. + [! _ISOMAC][__GLIBC_USE (C23_STRTOL)](atoi): New. + [! _ISOMAC][__GLIBC_USE (C23_STRTOL)](strtoul): New. + [! _ISOMAC][__GLIBC_USE (C23_STRTOL)](strtoll): New. + [! _ISOMAC][__GLIBC_USE (C23_STRTOL)](strtoull): New. + [! _ISOMAC][__GLIBC_USE (C23_STRTOL)](strtol_l): New. + [! _ISOMAC][__GLIBC_USE (C23_STRTOL)](strtoul_l): New. + [! _ISOMAC][__GLIBC_USE (C23_STRTOL)](strtoll_l): New. + [! _ISOMAC][__GLIBC_USE (C23_STRTOL)](strtoull_l): New. + * include/wchar.h: Modified. + [! _ISOMAC][__GLIBC_USE (C2X_STRTOL)](wcstol): Remove. + [! _ISOMAC][__GLIBC_USE (C2X_STRTOL)](wcstoul): Remove. + [! _ISOMAC][__GLIBC_USE (C2X_STRTOL)](wcstoll): Remove. + [! _ISOMAC][__GLIBC_USE (C2X_STRTOL)](wcstoull): Remove. + [! _ISOMAC][__GLIBC_USE (C2X_STRTOL)](wcstol_l): Remove. + [! _ISOMAC][__GLIBC_USE (C2X_STRTOL)](wcstoul_l): Remove. + [! _ISOMAC][__GLIBC_USE (C2X_STRTOL)](wcstoll_l): Remove. + [! _ISOMAC][__GLIBC_USE (C2X_STRTOL)](wcstoull_l): Remove. + [! _ISOMAC][__GLIBC_USE (C23_STRTOL)](wcstol): New. + [! _ISOMAC][__GLIBC_USE (C23_STRTOL)](wcstoul): New. + [! _ISOMAC][__GLIBC_USE (C23_STRTOL)](wcstoll): New. + [! _ISOMAC][__GLIBC_USE (C23_STRTOL)](wcstoull): New. + [! _ISOMAC][__GLIBC_USE (C23_STRTOL)](wcstol_l): New. + [! _ISOMAC][__GLIBC_USE (C23_STRTOL)](wcstoul_l): New. + [! _ISOMAC][__GLIBC_USE (C23_STRTOL)](wcstoll_l): New. + [! _ISOMAC][__GLIBC_USE (C23_STRTOL)](wcstoull_l): New. + * libio/bits/stdio-ldbl.h: Modified. + [!__GLIBC_USE (DEPRECATED_SCANF)][__LDBL_COMPAT][__LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1][!(__GLIBC_USE (C2X_STRTOL))][!(__USE_ISOC99 || __USE_UNIX98)][__USE_ISOC99][!__GLIBC_USE (DEPRECATED_SCANF)][__LDBL_COMPAT][__LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1][__GLIBC_USE (C2X_STRTOL)](bits/stdlib-ldbl.h included when no ldbl redirections are required.): Remove. + [!__GLIBC_USE (DEPRECATED_SCANF)][__LDBL_COMPAT][__LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1][__GLIBC_USE (C2X_STRTOL)](bits/stdlib-ldbl.h included when no ldbl redirections are required.): Remove. + [!__GLIBC_USE (DEPRECATED_SCANF)][__LDBL_COMPAT][__LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1][!(__GLIBC_USE (C23_STRTOL))][!(__USE_ISOC99 || __USE_UNIX98)][__USE_ISOC99][!__GLIBC_USE (DEPRECATED_SCANF)][__LDBL_COMPAT][__LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1][__GLIBC_USE (C23_STRTOL)](bits/stdlib-ldbl.h included when no ldbl redirections are required.): New. + [!__GLIBC_USE (DEPRECATED_SCANF)][__LDBL_COMPAT][__LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1][__GLIBC_USE (C23_STRTOL)](bits/stdlib-ldbl.h included when no ldbl redirections are required.): New. + * libio/stdio.h: Modified. + [!__GLIBC_USE (DEPRECATED_SCANF) && ! __LDBL_COMPAT && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][!(__GLIBC_USE (C2X_STRTOL))][! __REDIRECT](__isoc99_fscanf): Remove. + [!__GLIBC_USE (DEPRECATED_SCANF) && ! __LDBL_COMPAT && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][!(__GLIBC_USE (C2X_STRTOL))][! __REDIRECT](__wur): Remove. + [!__GLIBC_USE (DEPRECATED_SCANF) && ! __LDBL_COMPAT && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][!(__GLIBC_USE (C2X_STRTOL))][! __REDIRECT](__isoc99_sscanf): Remove. + [!__GLIBC_USE (DEPRECATED_SCANF) && ! __LDBL_COMPAT && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][!(__GLIBC_USE (C2X_STRTOL))][! __REDIRECT](fscanf): Remove. + [!__GLIBC_USE (DEPRECATED_SCANF) && ! __LDBL_COMPAT && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][!(__GLIBC_USE (C2X_STRTOL))][! __REDIRECT](scanf): Remove. + [!__GLIBC_USE (DEPRECATED_SCANF) && ! __LDBL_COMPAT && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][!(__GLIBC_USE (C2X_STRTOL))][! __REDIRECT](sscanf): Remove. + [!__GLIBC_USE (DEPRECATED_SCANF) && ! __LDBL_COMPAT && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][!(__GLIBC_USE (C2X_STRTOL))][__REDIRECT](__REDIRECT): Remove. + [!__GLIBC_USE (DEPRECATED_SCANF) && ! __LDBL_COMPAT && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][!(__GLIBC_USE (C2X_STRTOL))][__REDIRECT](__wur): Remove. + [!__GLIBC_USE (DEPRECATED_SCANF) && ! __LDBL_COMPAT && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][!(__GLIBC_USE (C2X_STRTOL))][__REDIRECT](__REDIRECT_NTH): Remove. + [!__GLIBC_USE (DEPRECATED_SCANF) && ! __LDBL_COMPAT && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][__GLIBC_USE (C2X_STRTOL)][! __REDIRECT](__isoc23_fscanf): Remove. + [!__GLIBC_USE (DEPRECATED_SCANF) && ! __LDBL_COMPAT && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][__GLIBC_USE (C2X_STRTOL)][! __REDIRECT](__wur): Remove. + [!__GLIBC_USE (DEPRECATED_SCANF) && ! __LDBL_COMPAT && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][__GLIBC_USE (C2X_STRTOL)][! __REDIRECT](__isoc23_sscanf): Remove. + [!__GLIBC_USE (DEPRECATED_SCANF) && ! __LDBL_COMPAT && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][__GLIBC_USE (C2X_STRTOL)][! __REDIRECT](fscanf): Remove. + [!__GLIBC_USE (DEPRECATED_SCANF) && ! __LDBL_COMPAT && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][__GLIBC_USE (C2X_STRTOL)][! __REDIRECT](scanf): Remove. + [!__GLIBC_USE (DEPRECATED_SCANF) && ! __LDBL_COMPAT && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][__GLIBC_USE (C2X_STRTOL)][! __REDIRECT](sscanf): Remove. + [!__GLIBC_USE (DEPRECATED_SCANF) && ! __LDBL_COMPAT && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][__GLIBC_USE (C2X_STRTOL)][__REDIRECT](__REDIRECT): Remove. + [!__GLIBC_USE (DEPRECATED_SCANF) && ! __LDBL_COMPAT && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][__GLIBC_USE (C2X_STRTOL)][__REDIRECT](__wur): Remove. + [!__GLIBC_USE (DEPRECATED_SCANF) && ! __LDBL_COMPAT && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][__GLIBC_USE (C2X_STRTOL)][__REDIRECT](__REDIRECT_NTH): Remove. + [!__GLIBC_USE (DEPRECATED_SCANF) && ! __LDBL_COMPAT && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][!(__GLIBC_USE (C23_STRTOL))][! __REDIRECT](__isoc99_fscanf): New. + [!__GLIBC_USE (DEPRECATED_SCANF) && ! __LDBL_COMPAT && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][!(__GLIBC_USE (C23_STRTOL))][! __REDIRECT](__wur): New. + [!__GLIBC_USE (DEPRECATED_SCANF) && ! __LDBL_COMPAT && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][!(__GLIBC_USE (C23_STRTOL))][! __REDIRECT](__isoc99_sscanf): New. + [!__GLIBC_USE (DEPRECATED_SCANF) && ! __LDBL_COMPAT && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][!(__GLIBC_USE (C23_STRTOL))][! __REDIRECT](fscanf): New. + [!__GLIBC_USE (DEPRECATED_SCANF) && ! __LDBL_COMPAT && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][!(__GLIBC_USE (C23_STRTOL))][! __REDIRECT](scanf): New. + [!__GLIBC_USE (DEPRECATED_SCANF) && ! __LDBL_COMPAT && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][!(__GLIBC_USE (C23_STRTOL))][! __REDIRECT](sscanf): New. + [!__GLIBC_USE (DEPRECATED_SCANF) && ! __LDBL_COMPAT && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][!(__GLIBC_USE (C23_STRTOL))][__REDIRECT](__REDIRECT): New. + [!__GLIBC_USE (DEPRECATED_SCANF) && ! __LDBL_COMPAT && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][!(__GLIBC_USE (C23_STRTOL))][__REDIRECT](__wur): New. + [!__GLIBC_USE (DEPRECATED_SCANF) && ! __LDBL_COMPAT && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][!(__GLIBC_USE (C23_STRTOL))][__REDIRECT](__REDIRECT_NTH): New. + [!__GLIBC_USE (DEPRECATED_SCANF) && ! __LDBL_COMPAT && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][__GLIBC_USE (C23_STRTOL)][! __REDIRECT](__isoc23_fscanf): New. + [!__GLIBC_USE (DEPRECATED_SCANF) && ! __LDBL_COMPAT && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][__GLIBC_USE (C23_STRTOL)][! __REDIRECT](__wur): New. + [!__GLIBC_USE (DEPRECATED_SCANF) && ! __LDBL_COMPAT && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][__GLIBC_USE (C23_STRTOL)][! __REDIRECT](__isoc23_sscanf): New. + [!__GLIBC_USE (DEPRECATED_SCANF) && ! __LDBL_COMPAT && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][__GLIBC_USE (C23_STRTOL)][! __REDIRECT](fscanf): New. + [!__GLIBC_USE (DEPRECATED_SCANF) && ! __LDBL_COMPAT && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][__GLIBC_USE (C23_STRTOL)][! __REDIRECT](scanf): New. + [!__GLIBC_USE (DEPRECATED_SCANF) && ! __LDBL_COMPAT && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][__GLIBC_USE (C23_STRTOL)][! __REDIRECT](sscanf): New. + [!__GLIBC_USE (DEPRECATED_SCANF) && ! __LDBL_COMPAT && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][__GLIBC_USE (C23_STRTOL)][__REDIRECT](__REDIRECT): New. + [!__GLIBC_USE (DEPRECATED_SCANF) && ! __LDBL_COMPAT && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][__GLIBC_USE (C23_STRTOL)][__REDIRECT](__wur): New. + [!__GLIBC_USE (DEPRECATED_SCANF) && ! __LDBL_COMPAT && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][__GLIBC_USE (C23_STRTOL)][__REDIRECT](__REDIRECT_NTH): New. + [__GLIBC_USE (ISOC2X)](_PRINTF_NAN_LEN_MAX): Remove. + [__USE_ISOC99][!__GLIBC_USE (DEPRECATED_SCANF)][!(__GLIBC_USE (C2X_STRTOL))][! __REDIRECT](__isoc99_vfscanf): Remove. + [__USE_ISOC99][!__GLIBC_USE (DEPRECATED_SCANF)][!(__GLIBC_USE (C2X_STRTOL))][! __REDIRECT](__wur): Remove. + [__USE_ISOC99][!__GLIBC_USE (DEPRECATED_SCANF)][!(__GLIBC_USE (C2X_STRTOL))][! __REDIRECT](__isoc99_vsscanf): Remove. + [__USE_ISOC99][!__GLIBC_USE (DEPRECATED_SCANF)][!(__GLIBC_USE (C2X_STRTOL))][! __REDIRECT](vfscanf): Remove. + [__USE_ISOC99][!__GLIBC_USE (DEPRECATED_SCANF)][!(__GLIBC_USE (C2X_STRTOL))][! __REDIRECT](vscanf): Remove. + [__USE_ISOC99][!__GLIBC_USE (DEPRECATED_SCANF)][!(__GLIBC_USE (C2X_STRTOL))][! __REDIRECT](vsscanf): Remove. + [__USE_ISOC99][!__GLIBC_USE (DEPRECATED_SCANF)][!(__GLIBC_USE (C2X_STRTOL))][__REDIRECT && ! __LDBL_COMPAT && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0](__REDIRECT): Remove. + [__USE_ISOC99][!__GLIBC_USE (DEPRECATED_SCANF)][!(__GLIBC_USE (C2X_STRTOL))][__REDIRECT && ! __LDBL_COMPAT && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0](__wur): Remove. + [__USE_ISOC99][!__GLIBC_USE (DEPRECATED_SCANF)][!(__GLIBC_USE (C2X_STRTOL))][__REDIRECT && ! __LDBL_COMPAT && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0](__REDIRECT_NTH): Remove. + [__USE_ISOC99][!__GLIBC_USE (DEPRECATED_SCANF)][__GLIBC_USE (C2X_STRTOL)][! __REDIRECT](__isoc23_vfscanf): Remove. + [__USE_ISOC99][!__GLIBC_USE (DEPRECATED_SCANF)][__GLIBC_USE (C2X_STRTOL)][! __REDIRECT](__wur): Remove. + [__USE_ISOC99][!__GLIBC_USE (DEPRECATED_SCANF)][__GLIBC_USE (C2X_STRTOL)][! __REDIRECT](__isoc23_vsscanf): Remove. + [__USE_ISOC99][!__GLIBC_USE (DEPRECATED_SCANF)][__GLIBC_USE (C2X_STRTOL)][! __REDIRECT](vfscanf): Remove. + [__USE_ISOC99][!__GLIBC_USE (DEPRECATED_SCANF)][__GLIBC_USE (C2X_STRTOL)][! __REDIRECT](vscanf): Remove. + [__USE_ISOC99][!__GLIBC_USE (DEPRECATED_SCANF)][__GLIBC_USE (C2X_STRTOL)][! __REDIRECT](vsscanf): Remove. + [__USE_ISOC99][!__GLIBC_USE (DEPRECATED_SCANF)][__GLIBC_USE (C2X_STRTOL)][__REDIRECT && ! __LDBL_COMPAT && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0](__REDIRECT): Remove. + [__USE_ISOC99][!__GLIBC_USE (DEPRECATED_SCANF)][__GLIBC_USE (C2X_STRTOL)][__REDIRECT && ! __LDBL_COMPAT && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0](__wur): Remove. + [__USE_ISOC99][!__GLIBC_USE (DEPRECATED_SCANF)][__GLIBC_USE (C2X_STRTOL)][__REDIRECT && ! __LDBL_COMPAT && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0](__REDIRECT_NTH): Remove. + [__USE_ISOC99][!__GLIBC_USE (DEPRECATED_SCANF)][!(__GLIBC_USE (C23_STRTOL))][! __REDIRECT](__isoc99_vfscanf): New. + [__USE_ISOC99][!__GLIBC_USE (DEPRECATED_SCANF)][!(__GLIBC_USE (C23_STRTOL))][! __REDIRECT](__wur): New. + [__USE_ISOC99][!__GLIBC_USE (DEPRECATED_SCANF)][!(__GLIBC_USE (C23_STRTOL))][! __REDIRECT](__isoc99_vsscanf): New. + [__USE_ISOC99][!__GLIBC_USE (DEPRECATED_SCANF)][!(__GLIBC_USE (C23_STRTOL))][! __REDIRECT](vfscanf): New. + [__USE_ISOC99][!__GLIBC_USE (DEPRECATED_SCANF)][!(__GLIBC_USE (C23_STRTOL))][! __REDIRECT](vscanf): New. + [__USE_ISOC99][!__GLIBC_USE (DEPRECATED_SCANF)][!(__GLIBC_USE (C23_STRTOL))][! __REDIRECT](vsscanf): New. + [__USE_ISOC99][!__GLIBC_USE (DEPRECATED_SCANF)][!(__GLIBC_USE (C23_STRTOL))][__REDIRECT && ! __LDBL_COMPAT && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0](__REDIRECT): New. + [__USE_ISOC99][!__GLIBC_USE (DEPRECATED_SCANF)][!(__GLIBC_USE (C23_STRTOL))][__REDIRECT && ! __LDBL_COMPAT && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0](__wur): New. + [__USE_ISOC99][!__GLIBC_USE (DEPRECATED_SCANF)][!(__GLIBC_USE (C23_STRTOL))][__REDIRECT && ! __LDBL_COMPAT && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0](__REDIRECT_NTH): New. + [__USE_ISOC99][!__GLIBC_USE (DEPRECATED_SCANF)][__GLIBC_USE (C23_STRTOL)][! __REDIRECT](__isoc23_vfscanf): New. + [__USE_ISOC99][!__GLIBC_USE (DEPRECATED_SCANF)][__GLIBC_USE (C23_STRTOL)][! __REDIRECT](__wur): New. + [__USE_ISOC99][!__GLIBC_USE (DEPRECATED_SCANF)][__GLIBC_USE (C23_STRTOL)][! __REDIRECT](__isoc23_vsscanf): New. + [__USE_ISOC99][!__GLIBC_USE (DEPRECATED_SCANF)][__GLIBC_USE (C23_STRTOL)][! __REDIRECT](vfscanf): New. + [__USE_ISOC99][!__GLIBC_USE (DEPRECATED_SCANF)][__GLIBC_USE (C23_STRTOL)][! __REDIRECT](vscanf): New. + [__USE_ISOC99][!__GLIBC_USE (DEPRECATED_SCANF)][__GLIBC_USE (C23_STRTOL)][! __REDIRECT](vsscanf): New. + [__USE_ISOC99][!__GLIBC_USE (DEPRECATED_SCANF)][__GLIBC_USE (C23_STRTOL)][__REDIRECT && ! __LDBL_COMPAT && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0](__REDIRECT): New. + [__USE_ISOC99][!__GLIBC_USE (DEPRECATED_SCANF)][__GLIBC_USE (C23_STRTOL)][__REDIRECT && ! __LDBL_COMPAT && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0](__wur): New. + [__USE_ISOC99][!__GLIBC_USE (DEPRECATED_SCANF)][__GLIBC_USE (C23_STRTOL)][__REDIRECT && ! __LDBL_COMPAT && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0](__REDIRECT_NTH): New. + [__GLIBC_USE (ISOC23)](_PRINTF_NAN_LEN_MAX): New. + * manual/arith.texi: Modified. + * manual/creature.texi: Modified. + * manual/stdbit.texi: Modified. + * manual/stdio.texi: Modified. + * manual/time.texi: Modified. + * math/bits/mathcalls.h: Modified. + [(__GLIBC_USE (IEC_60559_BFP_EXT) || (__MATH_DECLARING_FLOATN && ( __USE_GNU || !__GLIBC_USE (ISOC2X))))](__MATHCALLX): Remove. + [(__GLIBC_USE (IEC_60559_BFP_EXT) || (__MATH_DECLARING_FLOATN && ( __USE_GNU || !__GLIBC_USE (ISOC2X))))](__MATHCALLX): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X) || __MATH_DECLARING_FLOATN](__MATHDECL): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X) || __MATH_DECLARING_FLOATN](__MATHCALLX): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X) || __MATH_DECLARING_FLOATN](__MATHDECL): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X) || __MATH_DECLARING_FLOATN](__MATHDECL): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X) || __MATH_DECLARING_FLOATN](__MATHDECL): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X) || __MATH_DECLARING_FLOATN](__MATHDECL): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X) || __MATH_DECLARING_FLOATN](__MATHDECL_1): Remove. + [__GLIBC_USE (IEC_60559_FUNCS_EXT_C2X)](__MATHCALL_VEC): Remove. + [__GLIBC_USE (ISOC2X)](__MATHCALLX): Remove. + [__GLIBC_USE (ISOC2X)](__MATHCALLX): Remove. + [__GLIBC_USE (ISOC2X)](__MATHCALLX): Remove. + [__GLIBC_USE (ISOC2X)](__MATHCALLX): Remove. + [__GLIBC_USE (ISOC2X)](__MATHCALLX): Remove. + [__GLIBC_USE (ISOC2X)](__MATHCALLX): Remove. + [__GLIBC_USE (ISOC2X)](__MATHCALLX): Remove. + [__GLIBC_USE (ISOC2X)](__MATHCALLX): Remove. + [__USE_ISOC99][!__MATH_DECLARING_FLOATN || __USE_GNU || !__GLIBC_USE (ISOC2X)](__MATHCALLX): Remove. + [__USE_ISOC99][!__MATH_DECLARING_FLOATN || __USE_GNU || !__GLIBC_USE (ISOC2X)](__MATHCALLX): Remove. + [__USE_ISOC99][!__MATH_DECLARING_FLOATN || __USE_GNU || !__GLIBC_USE (ISOC23)](__MATHCALLX): New. + [__USE_ISOC99][!__MATH_DECLARING_FLOATN || __USE_GNU || !__GLIBC_USE (ISOC23)](__MATHCALLX): New. + [__USE_XOPEN_EXTENDED || __USE_ISOC99][__GLIBC_USE (IEC_60559_BFP_EXT_C2X) || __MATH_DECLARING_FLOATN](__MATHCALL): Remove. + [__USE_XOPEN_EXTENDED || __USE_ISOC99][__GLIBC_USE (IEC_60559_BFP_EXT_C2X) || __MATH_DECLARING_FLOATN](__MATHCALL): Remove. + [__USE_XOPEN_EXTENDED || __USE_ISOC99][__GLIBC_USE (IEC_60559_BFP_EXT_C23) || __MATH_DECLARING_FLOATN](__MATHCALL): New. + [__USE_XOPEN_EXTENDED || __USE_ISOC99][__GLIBC_USE (IEC_60559_BFP_EXT_C23) || __MATH_DECLARING_FLOATN](__MATHCALL): New. + [(__GLIBC_USE (IEC_60559_BFP_EXT) || (__MATH_DECLARING_FLOATN && ( __USE_GNU || !__GLIBC_USE (ISOC23))))](__MATHCALLX): New. + [(__GLIBC_USE (IEC_60559_BFP_EXT) || (__MATH_DECLARING_FLOATN && ( __USE_GNU || !__GLIBC_USE (ISOC23))))](__MATHCALLX): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23) || __MATH_DECLARING_FLOATN](__MATHDECL): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23) || __MATH_DECLARING_FLOATN](__MATHCALLX): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23) || __MATH_DECLARING_FLOATN](__MATHDECL): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23) || __MATH_DECLARING_FLOATN](__MATHDECL): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23) || __MATH_DECLARING_FLOATN](__MATHDECL): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23) || __MATH_DECLARING_FLOATN](__MATHDECL): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23) || __MATH_DECLARING_FLOATN](__MATHDECL_1): New. + [__GLIBC_USE (IEC_60559_FUNCS_EXT_C23)](__MATHCALL_VEC): New. + [__GLIBC_USE (ISOC23)](__MATHCALLX): New. + [__GLIBC_USE (ISOC23)](__MATHCALLX): New. + [__GLIBC_USE (ISOC23)](__MATHCALLX): New. + [__GLIBC_USE (ISOC23)](__MATHCALLX): New. + [__GLIBC_USE (ISOC23)](__MATHCALLX): New. + [__GLIBC_USE (ISOC23)](__MATHCALLX): New. + [__GLIBC_USE (ISOC23)](__MATHCALLX): New. + [__GLIBC_USE (ISOC23)](__MATHCALLX): New. + * math/fenv.h: Modified. + [(__GLIBC_USE (IEC_60559_BFP_EXT_C2X) && FE_INVALID && __SUPPORT_SNAN__)](FE_SNANS_ALWAYS_SIGNAL): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](fesetexcept): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](fetestexceptflag): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](fegetmode): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](fesetmode): Remove. + [(__GLIBC_USE (IEC_60559_BFP_EXT_C23) && FE_INVALID && __SUPPORT_SNAN__)](FE_SNANS_ALWAYS_SIGNAL): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](fesetexcept): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](fetestexceptflag): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](fegetmode): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](fesetmode): New. + * math/gen-tgmath-tests.py: Modified. + * math/libm-test-pow.inc: Modified. + * math/math.h: Modified. + [(__HAVE_FLOAT128 && __GLIBC_USE (IEC_60559_TYPES_EXT) && ( __USE_GNU || !__GLIBC_USE (ISOC2X)))](SNANF128): Remove. + [(__HAVE_FLOAT128X && __GLIBC_USE (IEC_60559_TYPES_EXT) && ( __USE_GNU || !__GLIBC_USE (ISOC2X)))](SNANF128X): Remove. + [(__HAVE_FLOAT16 && __GLIBC_USE (IEC_60559_TYPES_EXT) && ( __USE_GNU || !__GLIBC_USE (ISOC2X)))](SNANF16): Remove. + [(__HAVE_FLOAT32 && __GLIBC_USE (IEC_60559_TYPES_EXT) && ( __USE_GNU || !__GLIBC_USE (ISOC2X)))](SNANF32): Remove. + [(__HAVE_FLOAT32X && __GLIBC_USE (IEC_60559_TYPES_EXT) && ( __USE_GNU || !__GLIBC_USE (ISOC2X)))](SNANF32X): Remove. + [(__HAVE_FLOAT64 && __GLIBC_USE (IEC_60559_TYPES_EXT) && ( __USE_GNU || !__GLIBC_USE (ISOC2X)))](SNANF64): Remove. + [(__HAVE_FLOAT64X && __GLIBC_USE (IEC_60559_TYPES_EXT) && ( __USE_GNU || !__GLIBC_USE (ISOC2X)))](SNANF64X): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)][! __FP_LOGB0_IS_MIN](FP_LLOGB0): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)][! __FP_LOGBNAN_IS_MIN](FP_LLOGBNAN): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)][! __cplusplus](issignaling): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)][__FP_LOGB0_IS_MIN](FP_LLOGB0): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)][__FP_LOGBNAN_IS_MIN](FP_LLOGBNAN): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)][__LDBL_COMPAT](__MATHCALL_REDIR_NAME): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)][__LDBL_COMPAT](__MATHCALL_REDIR_NAME2): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)][__LDBL_COMPAT](__MATHCALL_NARROW): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)][__LDBL_COMPAT](__MATHCALL_REDIR_NAME): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)][__LDBL_COMPAT](__MATHCALL_REDIR_NAME2): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)][__LDBL_COMPAT](__MATHCALL_NARROW): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)][__LDBL_COMPAT || __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1](__MATHCALL_REDIR_NAME): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)][__LDBL_COMPAT || __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1](__MATHCALL_REDIR_NAME2): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)][__LDBL_COMPAT || __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1](__MATHCALL_NARROW): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)][__LDBL_COMPAT || __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1](__MATHCALL_REDIR_NAME): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)][__LDBL_COMPAT || __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1](__MATHCALL_REDIR_NAME2): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)][__LDBL_COMPAT || __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1](__MATHCALL_NARROW): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)][__LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1](__MATHCALL_REDIR_NAME): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)][__LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1](__MATHCALL_REDIR_NAME2): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)][__LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1](__MATHCALL_NARROW): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)][__LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1](__MATHCALL_REDIR_NAME): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)][__LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1](__MATHCALL_REDIR_NAME2): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)][__LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1](__MATHCALL_NARROW): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)][__WORDSIZE != 32](__FP_LONG_MAX): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)][__WORDSIZE == 32](__FP_LONG_MAX): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](<anonymous>): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](_Mret_): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](_Marg_): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](__MATHCALL_NAME): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](bits/mathcalls-narrow.h): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](_Mret_): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](_Marg_): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](__MATHCALL_NAME): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](bits/mathcalls-narrow.h): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](_Mret_): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](_Marg_): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](__MATHCALL_NAME): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](bits/mathcalls-narrow.h): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](_Mret_): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](_Marg_): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](__MATHCALL_NAME): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](bits/iscanonical.h): Remove. + [(__HAVE_FLOAT128 && __GLIBC_USE (IEC_60559_TYPES_EXT) && ( __USE_GNU || !__GLIBC_USE (ISOC23)))](SNANF128): New. + [(__HAVE_FLOAT128X && __GLIBC_USE (IEC_60559_TYPES_EXT) && ( __USE_GNU || !__GLIBC_USE (ISOC23)))](SNANF128X): New. + [(__HAVE_FLOAT16 && __GLIBC_USE (IEC_60559_TYPES_EXT) && ( __USE_GNU || !__GLIBC_USE (ISOC23)))](SNANF16): New. + [(__HAVE_FLOAT32 && __GLIBC_USE (IEC_60559_TYPES_EXT) && ( __USE_GNU || !__GLIBC_USE (ISOC23)))](SNANF32): New. + [(__HAVE_FLOAT32X && __GLIBC_USE (IEC_60559_TYPES_EXT) && ( __USE_GNU || !__GLIBC_USE (ISOC23)))](SNANF32X): New. + [(__HAVE_FLOAT64 && __GLIBC_USE (IEC_60559_TYPES_EXT) && ( __USE_GNU || !__GLIBC_USE (ISOC23)))](SNANF64): New. + [(__HAVE_FLOAT64X && __GLIBC_USE (IEC_60559_TYPES_EXT) && ( __USE_GNU || !__GLIBC_USE (ISOC23)))](SNANF64X): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)][! __FP_LOGB0_IS_MIN](FP_LLOGB0): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)][! __FP_LOGBNAN_IS_MIN](FP_LLOGBNAN): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)][! __cplusplus](issignaling): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)][__FP_LOGB0_IS_MIN](FP_LLOGB0): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)][__FP_LOGBNAN_IS_MIN](FP_LLOGBNAN): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)][__LDBL_COMPAT](__MATHCALL_REDIR_NAME): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)][__LDBL_COMPAT](__MATHCALL_REDIR_NAME2): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)][__LDBL_COMPAT](__MATHCALL_NARROW): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)][__LDBL_COMPAT](__MATHCALL_REDIR_NAME): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)][__LDBL_COMPAT](__MATHCALL_REDIR_NAME2): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)][__LDBL_COMPAT](__MATHCALL_NARROW): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)][__LDBL_COMPAT || __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1](__MATHCALL_REDIR_NAME): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)][__LDBL_COMPAT || __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1](__MATHCALL_REDIR_NAME2): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)][__LDBL_COMPAT || __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1](__MATHCALL_NARROW): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)][__LDBL_COMPAT || __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1](__MATHCALL_REDIR_NAME): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)][__LDBL_COMPAT || __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1](__MATHCALL_REDIR_NAME2): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)][__LDBL_COMPAT || __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1](__MATHCALL_NARROW): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)][__LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1](__MATHCALL_REDIR_NAME): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)][__LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1](__MATHCALL_REDIR_NAME2): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)][__LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1](__MATHCALL_NARROW): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)][__LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1](__MATHCALL_REDIR_NAME): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)][__LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1](__MATHCALL_REDIR_NAME2): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)][__LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1](__MATHCALL_NARROW): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)][__WORDSIZE != 32](__FP_LONG_MAX): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)][__WORDSIZE == 32](__FP_LONG_MAX): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](<anonymous>): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](_Mret_): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](_Marg_): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](__MATHCALL_NAME): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](bits/mathcalls-narrow.h): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](_Mret_): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](_Marg_): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](__MATHCALL_NAME): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](bits/mathcalls-narrow.h): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](_Mret_): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](_Marg_): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](__MATHCALL_NAME): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](bits/mathcalls-narrow.h): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](_Mret_): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](_Marg_): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](__MATHCALL_NAME): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](bits/iscanonical.h): New. + * math/tgmath.h: Modified. + [!(__GLIBC_USE (ISOC2X) && ! __USE_GNU)](fmax): Remove. + [!(__GLIBC_USE (ISOC2X) && ! __USE_GNU)](fmin): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](nextdown): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](nextup): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](roundeven): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](fromfp): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](ufromfp): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](fromfpx): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](ufromfpx): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](llogb): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](fadd): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](dadd): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](fdiv): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](ddiv): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](fmul): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](dmul): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](fsub): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](dsub): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](fsqrt): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](dsqrt): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](ffma): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](dfma): Remove. + [__GLIBC_USE (IEC_60559_FUNCS_EXT_C2X)](exp10): Remove. + [__GLIBC_USE (ISOC2X)](fmaximum): Remove. + [__GLIBC_USE (ISOC2X)](fminimum): Remove. + [__GLIBC_USE (ISOC2X)](fmaximum_num): Remove. + [__GLIBC_USE (ISOC2X)](fminimum_num): Remove. + [__GLIBC_USE (ISOC2X)](fmaximum_mag): Remove. + [__GLIBC_USE (ISOC2X)](fminimum_mag): Remove. + [__GLIBC_USE (ISOC2X)](fmaximum_mag_num): Remove. + [__GLIBC_USE (ISOC2X)](fminimum_mag_num): Remove. + [__GLIBC_USE (ISOC2X) && ! __USE_GNU](fmax): Remove. + [__GLIBC_USE (ISOC2X) && ! __USE_GNU](fmin): Remove. + [__GNUC_PREREQ (2, 7)][!__HAVE_BUILTIN_TGMATH_C2X][! __HAVE_FLOATN_NOT_TYPEDEF](__tgmath_real_type2): Remove. + [__GNUC_PREREQ (2, 7)][!__HAVE_BUILTIN_TGMATH_C2X][! __HAVE_FLOATN_NOT_TYPEDEF](__tgmath_complex_type2): Remove. + [__GNUC_PREREQ (2, 7)][!__HAVE_BUILTIN_TGMATH_C2X][! __HAVE_FLOATN_NOT_TYPEDEF](__tgmath_real_type3): Remove. + [__GNUC_PREREQ (2, 7)][!__HAVE_BUILTIN_TGMATH_C2X][! __HAVE_FLOATN_NOT_TYPEDEF](__TGMATH_NARROW_F32X_USE_F64X): Remove. + [__GNUC_PREREQ (2, 7)][!__HAVE_BUILTIN_TGMATH_C2X][! __NO_LONG_DOUBLE_MATH](__tgml): Remove. + [__GNUC_PREREQ (2, 7)][!__HAVE_BUILTIN_TGMATH_C2X][!(__GNUC_PREREQ (3, 1))](__floating_type): Remove. + [__GNUC_PREREQ (2, 7)][!__HAVE_BUILTIN_TGMATH_C2X][!(__GNUC_PREREQ (3, 1))](__real_integer_type): Remove. + [__GNUC_PREREQ (2, 7)][!__HAVE_BUILTIN_TGMATH_C2X][!(__GNUC_PREREQ (3, 1))](__complex_integer_type): Remove. + [__GNUC_PREREQ (2, 7)][!__HAVE_BUILTIN_TGMATH_C2X][!(__HAVE_DISTINCT_FLOAT128 && __GLIBC_USE (IEC_60559_TYPES_EXT))](__TGMATH_F128): Remove. + [__GNUC_PREREQ (2, 7)][!__HAVE_BUILTIN_TGMATH_C2X][!(__HAVE_DISTINCT_FLOAT128 && __GLIBC_USE (IEC_60559_TYPES_EXT))](__TGMATH_CF128): Remove. + [__GNUC_PREREQ (2, 7)][!__HAVE_BUILTIN_TGMATH_C2X][(__HAVE_DISTINCT_FLOAT16 || __HAVE_DISTINCT_FLOAT32 || __HAVE_DISTINCT_FLOAT64 || __HAVE_DISTINCT_FLOAT32X || __HAVE_DISTINCT_FLOAT64X || __HAVE_DISTINCT_FLOAT128X)](Unsupported _FloatN or _FloatNx types for <tgmath.h>."): Remove. + [__GNUC_PREREQ (2, 7)][!__HAVE_BUILTIN_TGMATH_C2X][__GNUC_PREREQ (3, 1)](__floating_type): Remove. + [__GNUC_PREREQ (2, 7)][!__HAVE_BUILTIN_TGMATH_C2X][__GNUC_PREREQ (3, 1)](__real_integer_type): Remove. + [__GNUC_PREREQ (2, 7)][!__HAVE_BUILTIN_TGMATH_C2X][__GNUC_PREREQ (3, 1)](__complex_integer_type): Remove. + [__GNUC_PREREQ (2, 7)][!__HAVE_BUILTIN_TGMATH_C2X][__HAVE_DISTINCT_FLOAT128 && __GLIBC_USE (IEC_60559_TYPES_EXT)][!((!__HAVE_FLOAT64X || __HAVE_FLOAT64X_LONG_DOUBLE || !__HAVE_FLOATN_NOT_TYPEDEF))](__TGMATH_F128): Remove. + [__GNUC_PREREQ (2, 7)][!__HAVE_BUILTIN_TGMATH_C2X][__HAVE_DISTINCT_FLOAT128 && __GLIBC_USE (IEC_60559_TYPES_EXT)][!((!__HAVE_FLOAT64X || __HAVE_FLOAT64X_LONG_DOUBLE || !__HAVE_FLOATN_NOT_TYPEDEF))](__TGMATH_CF128): Remove. + [__GNUC_PREREQ (2, 7)][!__HAVE_BUILTIN_TGMATH_C2X][__HAVE_DISTINCT_FLOAT128 && __GLIBC_USE (IEC_60559_TYPES_EXT)][(!__HAVE_FLOAT64X || __HAVE_FLOAT64X_LONG_DOUBLE || !__HAVE_FLOATN_NOT_TYPEDEF)](__TGMATH_F128): Remove. + [__GNUC_PREREQ (2, 7)][!__HAVE_BUILTIN_TGMATH_C2X][__HAVE_DISTINCT_FLOAT128 && __GLIBC_USE (IEC_60559_TYPES_EXT)][(!__HAVE_FLOAT64X || __HAVE_FLOAT64X_LONG_DOUBLE || !__HAVE_FLOATN_NOT_TYPEDEF)](__TGMATH_F128LD): Remove. + [__GNUC_PREREQ (2, 7)][!__HAVE_BUILTIN_TGMATH_C2X][__HAVE_DISTINCT_FLOAT128 && __GLIBC_USE (IEC_60559_TYPES_EXT)][(!__HAVE_FLOAT64X || __HAVE_FLOAT64X_LONG_DOUBLE || !__HAVE_FLOATN_NOT_TYPEDEF)](__TGMATH_CF128): Remove. + [__GNUC_PREREQ (2, 7)][!__HAVE_BUILTIN_TGMATH_C2X][__HAVE_FLOATN_NOT_TYPEDEF](__tgmath_real_type2): Remove. + [__GNUC_PREREQ (2, 7)][!__HAVE_BUILTIN_TGMATH_C2X][__HAVE_FLOATN_NOT_TYPEDEF](__tgmath_complex_type2): Remove. + [__GNUC_PREREQ (2, 7)][!__HAVE_BUILTIN_TGMATH_C2X][__HAVE_FLOATN_NOT_TYPEDEF](__tgmath_real_type3): Remove. + [__GNUC_PREREQ (2, 7)][!__HAVE_BUILTIN_TGMATH_C2X][__HAVE_FLOATN_NOT_TYPEDEF](__TGMATH_NARROW_F32X_USE_F64X): Remove. + [__GNUC_PREREQ (2, 7)][!__HAVE_BUILTIN_TGMATH_C2X][__NO_LONG_DOUBLE_MATH](__tgml): Remove. + [__GNUC_PREREQ (2, 7)][!__HAVE_BUILTIN_TGMATH_C2X](__expr_is_real): Remove. + [__GNUC_PREREQ (2, 7)][!__HAVE_BUILTIN_TGMATH_C2X](__tgmath_type_if): Remove. + [__GNUC_PREREQ (2, 7)][!__HAVE_BUILTIN_TGMATH_C2X](__tgmath_real_type_sub): Remove. + [__GNUC_PREREQ (2, 7)][!__HAVE_BUILTIN_TGMATH_C2X](__tgmath_real_type): Remove. + [__GNUC_PREREQ (2, 7)][!__HAVE_BUILTIN_TGMATH_C2X](__tgmath_complex_type_sub): Remove. + [__GNUC_PREREQ (2, 7)][!__HAVE_BUILTIN_TGMATH_C2X](__tgmath_complex_type): Remove. + [__GNUC_PREREQ (2, 7)][!__HAVE_BUILTIN_TGMATH_C2X](__tgmath_real_type2_base): Remove. + [__GNUC_PREREQ (2, 7)][!__HAVE_BUILTIN_TGMATH_C2X](__tgmath_complex_type2_base): Remove. + [__GNUC_PREREQ (2, 7)][!__HAVE_BUILTIN_TGMATH_C2X](__tgmath_real_type3_base): Remove. + [__GNUC_PREREQ (2, 7)][!__HAVE_BUILTIN_TGMATH_C2X](__TGMATH_BINARY_REAL_ONLY): Remove. + [__GNUC_PREREQ (2, 7)][!__HAVE_BUILTIN_TGMATH_C2X](__TGMATH_TERNARY_FIRST_SECOND_REAL_ONLY): Remove. + [__GNUC_PREREQ (2, 7)][!__HAVE_BUILTIN_TGMATH_C2X](__TGMATH_TERNARY_REAL_ONLY): Remove. + [__GNUC_PREREQ (2, 7)][!__HAVE_BUILTIN_TGMATH_C2X](__TGMATH_BINARY_REAL_IMAG): Remove. + [__GNUC_PREREQ (2, 7)][__HAVE_BUILTIN_TGMATH][__HAVE_BUILTIN_TGMATH_C2X](__TGMATH_BINARY_REAL_ONLY): Remove. + [__GNUC_PREREQ (2, 7)][__HAVE_BUILTIN_TGMATH][__HAVE_BUILTIN_TGMATH_C2X](__TGMATH_TERNARY_FIRST_SECOND_REAL_ONLY): Remove. + [__GNUC_PREREQ (2, 7)][__HAVE_BUILTIN_TGMATH][__HAVE_BUILTIN_TGMATH_C2X](__TGMATH_TERNARY_REAL_ONLY): Remove. + [__GNUC_PREREQ (2, 7)][__HAVE_BUILTIN_TGMATH][__HAVE_BUILTIN_TGMATH_C2X](__TGMATH_BINARY_REAL_IMAG): Remove. + [__GNUC_PREREQ (2, 7)][__HAVE_BUILTIN_TGMATH][__HAVE_FLOAT128 && __HAVE_BUILTIN_TGMATH_C2X](__TGMATH_1_NARROW_F32X): Remove. + [__GNUC_PREREQ (2, 7)][__HAVE_BUILTIN_TGMATH][__HAVE_FLOAT128 && __HAVE_BUILTIN_TGMATH_C2X](__TGMATH_2_NARROW_F32X): Remove. + [__GNUC_PREREQ (2, 7)][__HAVE_BUILTIN_TGMATH][__HAVE_FLOAT128 && __HAVE_BUILTIN_TGMATH_C2X](__TGMATH_3_NARROW_F32X): Remove. + [__GNUC_PREREQ (2, 7)][__HAVE_BUILTIN_TGMATH][__HAVE_BUILTIN_TGMATH_C23](__TGMATH_BINARY_REAL_ONLY): New. + [__GNUC_PREREQ (2, 7)][__HAVE_BUILTIN_TGMATH][__HAVE_BUILTIN_TGMATH_C23](__TGMATH_TERNARY_FIRST_SECOND_REAL_ONLY): New. + [__GNUC_PREREQ (2, 7)][__HAVE_BUILTIN_TGMATH][__HAVE_BUILTIN_TGMATH_C23](__TGMATH_TERNARY_REAL_ONLY): New. + [__GNUC_PREREQ (2, 7)][__HAVE_BUILTIN_TGMATH][__HAVE_BUILTIN_TGMATH_C23](__TGMATH_BINARY_REAL_IMAG): New. + [__GNUC_PREREQ (2, 7)][__HAVE_BUILTIN_TGMATH][__HAVE_FLOAT128 && __HAVE_BUILTIN_TGMATH_C23](__TGMATH_1_NARROW_F32X): New. + [__GNUC_PREREQ (2, 7)][__HAVE_BUILTIN_TGMATH][__HAVE_FLOAT128 && __HAVE_BUILTIN_TGMATH_C23](__TGMATH_2_NARROW_F32X): New. + [__GNUC_PREREQ (2, 7)][__HAVE_BUILTIN_TGMATH][__HAVE_FLOAT128 && __HAVE_BUILTIN_TGMATH_C23](__TGMATH_3_NARROW_F32X): New. + [__GNUC_PREREQ (2, 7)][__HAVE_FLOAT128][!__HAVE_BUILTIN_TGMATH_C2X](__TGMATH_1_NARROW_F32X): Remove. + [__GNUC_PREREQ (2, 7)][__HAVE_FLOAT128][!__HAVE_BUILTIN_TGMATH_C2X](__TGMATH_2_NARROW_F32X): Remove. + [__GNUC_PREREQ (2, 7)][__HAVE_FLOAT128][!__HAVE_BUILTIN_TGMATH_C2X](__TGMATH_3_NARROW_F32X): Remove. + [__GNUC_PREREQ (2, 7)][__HAVE_FLOAT128][!__HAVE_BUILTIN_TGMATH_C23](__TGMATH_1_NARROW_F32X): New. + [__GNUC_PREREQ (2, 7)][__HAVE_FLOAT128][!__HAVE_BUILTIN_TGMATH_C23](__TGMATH_2_NARROW_F32X): New. + [__GNUC_PREREQ (2, 7)][__HAVE_FLOAT128][!__HAVE_BUILTIN_TGMATH_C23](__TGMATH_3_NARROW_F32X): New. + [__GNUC_PREREQ (2, 7)][__HAVE_FLOAT64X_LONG_DOUBLE && __HAVE_DISTINCT_FLOAT128][!__HAVE_BUILTIN_TGMATH_C2X](__TGMATH_1_NARROW_F32X): Remove. + [__GNUC_PREREQ (2, 7)][__HAVE_FLOAT64X_LONG_DOUBLE && __HAVE_DISTINCT_FLOAT128][!__HAVE_BUILTIN_TGMATH_C2X](__TGMATH_2_NARROW_F32X): Remove. + [__GNUC_PREREQ (2, 7)][__HAVE_FLOAT64X_LONG_DOUBLE && __HAVE_DISTINCT_FLOAT128][!__HAVE_BUILTIN_TGMATH_C2X](__TGMATH_3_NARROW_F32X): Remove. + [__GNUC_PREREQ (2, 7)][__HAVE_FLOAT64X_LONG_DOUBLE && __HAVE_DISTINCT_FLOAT128][!__HAVE_BUILTIN_TGMATH_C23](__TGMATH_1_NARROW_F32X): New. + [__GNUC_PREREQ (2, 7)][__HAVE_FLOAT64X_LONG_DOUBLE && __HAVE_DISTINCT_FLOAT128][!__HAVE_BUILTIN_TGMATH_C23](__TGMATH_2_NARROW_F32X): New. + [__GNUC_PREREQ (2, 7)][__HAVE_FLOAT64X_LONG_DOUBLE && __HAVE_DISTINCT_FLOAT128][!__HAVE_BUILTIN_TGMATH_C23](__TGMATH_3_NARROW_F32X): New. + [__GNUC_PREREQ (2, 7)][!__HAVE_BUILTIN_TGMATH_C23][! __HAVE_FLOATN_NOT_TYPEDEF](__tgmath_real_type2): New. + [__GNUC_PREREQ (2, 7)][!__HAVE_BUILTIN_TGMATH_C23][! __HAVE_FLOATN_NOT_TYPEDEF](__tgmath_complex_type2): New. + [__GNUC_PREREQ (2, 7)][!__HAVE_BUILTIN_TGMATH_C23][! __HAVE_FLOATN_NOT_TYPEDEF](__tgmath_real_type3): New. + [__GNUC_PREREQ (2, 7)][!__HAVE_BUILTIN_TGMATH_C23][! __HAVE_FLOATN_NOT_TYPEDEF](__TGMATH_NARROW_F32X_USE_F64X): New. + [__GNUC_PREREQ (2, 7)][!__HAVE_BUILTIN_TGMATH_C23][! __NO_LONG_DOUBLE_MATH](__tgml): New. + [__GNUC_PREREQ (2, 7)][!__HAVE_BUILTIN_TGMATH_C23][!(__GNUC_PREREQ (3, 1))](__floating_type): New. + [__GNUC_PREREQ (2, 7)][!__HAVE_BUILTIN_TGMATH_C23][!(__GNUC_PREREQ (3, 1))](__real_integer_type): New. + [__GNUC_PREREQ (2, 7)][!__HAVE_BUILTIN_TGMATH_C23][!(__GNUC_PREREQ (3, 1))](__complex_integer_type): New. + [__GNUC_PREREQ (2, 7)][!__HAVE_BUILTIN_TGMATH_C23][!(__HAVE_DISTINCT_FLOAT128 && __GLIBC_USE (IEC_60559_TYPES_EXT))](__TGMATH_F128): New. + [__GNUC_PREREQ (2, 7)][!__HAVE_BUILTIN_TGMATH_C23][!(__HAVE_DISTINCT_FLOAT128 && __GLIBC_USE (IEC_60559_TYPES_EXT))](__TGMATH_CF128): New. + [__GNUC_PREREQ (2, 7)][!__HAVE_BUILTIN_TGMATH_C23][(__HAVE_DISTINCT_FLOAT16 || __HAVE_DISTINCT_FLOAT32 || __HAVE_DISTINCT_FLOAT64 || __HAVE_DISTINCT_FLOAT32X || __HAVE_DISTINCT_FLOAT64X || __HAVE_DISTINCT_FLOAT128X)](Unsupported _FloatN or _FloatNx types for <tgmath.h>."): New. + [__GNUC_PREREQ (2, 7)][!__HAVE_BUILTIN_TGMATH_C23][__GNUC_PREREQ (3, 1)](__floating_type): New. + [__GNUC_PREREQ (2, 7)][!__HAVE_BUILTIN_TGMATH_C23][__GNUC_PREREQ (3, 1)](__real_integer_type): New. + [__GNUC_PREREQ (2, 7)][!__HAVE_BUILTIN_TGMATH_C23][__GNUC_PREREQ (3, 1)](__complex_integer_type): New. + [__GNUC_PREREQ (2, 7)][!__HAVE_BUILTIN_TGMATH_C23][__HAVE_DISTINCT_FLOAT128 && __GLIBC_USE (IEC_60559_TYPES_EXT)][!((!__HAVE_FLOAT64X || __HAVE_FLOAT64X_LONG_DOUBLE || !__HAVE_FLOATN_NOT_TYPEDEF))](__TGMATH_F128): New. + [__GNUC_PREREQ (2, 7)][!__HAVE_BUILTIN_TGMATH_C23][__HAVE_DISTINCT_FLOAT128 && __GLIBC_USE (IEC_60559_TYPES_EXT)][!((!__HAVE_FLOAT64X || __HAVE_FLOAT64X_LONG_DOUBLE || !__HAVE_FLOATN_NOT_TYPEDEF))](__TGMATH_CF128): New. + [__GNUC_PREREQ (2, 7)][!__HAVE_BUILTIN_TGMATH_C23][__HAVE_DISTINCT_FLOAT128 && __GLIBC_USE (IEC_60559_TYPES_EXT)][(!__HAVE_FLOAT64X || __HAVE_FLOAT64X_LONG_DOUBLE || !__HAVE_FLOATN_NOT_TYPEDEF)](__TGMATH_F128): New. + [__GNUC_PREREQ (2, 7)][!__HAVE_BUILTIN_TGMATH_C23][__HAVE_DISTINCT_FLOAT128 && __GLIBC_USE (IEC_60559_TYPES_EXT)][(!__HAVE_FLOAT64X || __HAVE_FLOAT64X_LONG_DOUBLE || !__HAVE_FLOATN_NOT_TYPEDEF)](__TGMATH_F128LD): New. + [__GNUC_PREREQ (2, 7)][!__HAVE_BUILTIN_TGMATH_C23][__HAVE_DISTINCT_FLOAT128 && __GLIBC_USE (IEC_60559_TYPES_EXT)][(!__HAVE_FLOAT64X || __HAVE_FLOAT64X_LONG_DOUBLE || !__HAVE_FLOATN_NOT_TYPEDEF)](__TGMATH_CF128): New. + [__GNUC_PREREQ (2, 7)][!__HAVE_BUILTIN_TGMATH_C23][__HAVE_FLOATN_NOT_TYPEDEF](__tgmath_real_type2): New. + [__GNUC_PREREQ (2, 7)][!__HAVE_BUILTIN_TGMATH_C23][__HAVE_FLOATN_NOT_TYPEDEF](__tgmath_complex_type2): New. + [__GNUC_PREREQ (2, 7)][!__HAVE_BUILTIN_TGMATH_C23][__HAVE_FLOATN_NOT_TYPEDEF](__tgmath_real_type3): New. + [__GNUC_PREREQ (2, 7)][!__HAVE_BUILTIN_TGMATH_C23][__HAVE_FLOATN_NOT_TYPEDEF](__TGMATH_NARROW_F32X_USE_F64X): New. + [__GNUC_PREREQ (2, 7)][!__HAVE_BUILTIN_TGMATH_C23][__NO_LONG_DOUBLE_MATH](__tgml): New. + [__GNUC_PREREQ (2, 7)][!__HAVE_BUILTIN_TGMATH_C23](__expr_is_real): New. + [__GNUC_PREREQ (2, 7)][!__HAVE_BUILTIN_TGMATH_C23](__tgmath_type_if): New. + [__GNUC_PREREQ (2, 7)][!__HAVE_BUILTIN_TGMATH_C23](__tgmath_real_type_sub): New. + [__GNUC_PREREQ (2, 7)][!__HAVE_BUILTIN_TGMATH_C23](__tgmath_real_type): New. + [__GNUC_PREREQ (2, 7)][!__HAVE_BUILTIN_TGMATH_C23](__tgmath_complex_type_sub): New. + [__GNUC_PREREQ (2, 7)][!__HAVE_BUILTIN_TGMATH_C23](__tgmath_complex_type): New. + [__GNUC_PREREQ (2, 7)][!__HAVE_BUILTIN_TGMATH_C23](__tgmath_real_type2_base): New. + [__GNUC_PREREQ (2, 7)][!__HAVE_BUILTIN_TGMATH_C23](__tgmath_complex_type2_base): New. + [__GNUC_PREREQ (2, 7)][!__HAVE_BUILTIN_TGMATH_C23](__tgmath_real_type3_base): New. + [__GNUC_PREREQ (2, 7)][!__HAVE_BUILTIN_TGMATH_C23](__TGMATH_BINARY_REAL_ONLY): New. + [__GNUC_PREREQ (2, 7)][!__HAVE_BUILTIN_TGMATH_C23](__TGMATH_TERNARY_FIRST_SECOND_REAL_ONLY): New. + [__GNUC_PREREQ (2, 7)][!__HAVE_BUILTIN_TGMATH_C23](__TGMATH_TERNARY_REAL_ONLY): New. + [__GNUC_PREREQ (2, 7)][!__HAVE_BUILTIN_TGMATH_C23](__TGMATH_BINARY_REAL_IMAG): New. + (__HAVE_BUILTIN_TGMATH_C2X): Remove. + [!(__GLIBC_USE (ISOC23) && ! __USE_GNU)](fmax): New. + [!(__GLIBC_USE (ISOC23) && ! __USE_GNU)](fmin): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](nextdown): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](nextup): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](roundeven): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](fromfp): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](ufromfp): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](fromfpx): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](ufromfpx): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](llogb): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](fadd): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](dadd): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](fdiv): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](ddiv): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](fmul): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](dmul): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](fsub): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](dsub): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](fsqrt): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](dsqrt): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](ffma): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](dfma): New. + [__GLIBC_USE (IEC_60559_FUNCS_EXT_C23)](exp10): New. + [__GLIBC_USE (ISOC23)](fmaximum): New. + [__GLIBC_USE (ISOC23)](fminimum): New. + [__GLIBC_USE (ISOC23)](fmaximum_num): New. + [__GLIBC_USE (ISOC23)](fminimum_num): New. + [__GLIBC_USE (ISOC23)](fmaximum_mag): New. + [__GLIBC_USE (ISOC23)](fminimum_mag): New. + [__GLIBC_USE (ISOC23)](fmaximum_mag_num): New. + [__GLIBC_USE (ISOC23)](fminimum_mag_num): New. + [__GLIBC_USE (ISOC23) && ! __USE_GNU](fmax): New. + [__GLIBC_USE (ISOC23) && ! __USE_GNU](fmin): New. + (__HAVE_BUILTIN_TGMATH_C23): New. + * resolv/tst-inet_addr-binary.c: Modified. + * stdio-common/Makefile: Modified. + * stdio-common/tst-scanf-binary-c11.c: Modified. + (TEST_C2X): Remove. + (TEST_C23): New. + * stdio-common/tst-scanf-binary-c2x.c: Modified. + (_ISOC2X_SOURCE): Remove. + (TEST_C2X): Remove. + (STD): Modified. + (_ISOC23_SOURCE): New. + (TEST_C23): New. + * stdio-common/tst-scanf-binary-gnu11.c: Modified. + (TEST_C2X): Remove. + (TEST_C23): New. + * stdio-common/tst-scanf-binary-gnu89.c: Modified. + (TEST_C2X): Remove. + (TEST_C23): New. + * stdio-common/tst-scanf-binary-main.c: Modified. + (one_check): Modified function. + (one_check_scnb): Modified function. + * stdlib/Makefile: Modified. + * stdlib/bits/stdlib-ldbl.h: Modified. + [__USE_ISOC99][! __LDBL_COMPAT][__USE_GNU][! __LDBL_COMPAT][__GLIBC_USE (IEC_60559_BFP_EXT_C2X)][! __LDBL_COMPAT][__USE_MISC][__LDOUBLE_REDIRECTS_TO_FLOAT128_ABI != 1](bits/stdlib-ldbl.h included when no ldbl redirections are required.): Remove. + [__USE_ISOC99][! __LDBL_COMPAT][__USE_GNU][! __LDBL_COMPAT][__GLIBC_USE (IEC_60559_BFP_EXT_C23)][! __LDBL_COMPAT][__USE_MISC][__LDOUBLE_REDIRECTS_TO_FLOAT128_ABI != 1](bits/stdlib-ldbl.h included when no ldbl redirections are required.): New. + * stdlib/inttypes.h: Modified. + [__GLIBC_USE (C2X_STRTOL)][! __REDIRECT](__isoc23_strtoimax): Remove. + [__GLIBC_USE (C2X_STRTOL)][! __REDIRECT](__isoc23_strtoumax): Remove. + [__GLIBC_USE (C2X_STRTOL)][! __REDIRECT](__isoc23_wcstoimax): Remove. + [__GLIBC_USE (C2X_STRTOL)][! __REDIRECT](__isoc23_wcstoumax): Remove. + [__GLIBC_USE (C2X_STRTOL)][! __REDIRECT](strtoimax): Remove. + [__GLIBC_USE (C2X_STRTOL)][! __REDIRECT](strtoumax): Remove. + [__GLIBC_USE (C2X_STRTOL)][! __REDIRECT](wcstoimax): Remove. + [__GLIBC_USE (C2X_STRTOL)][! __REDIRECT](wcstoumax): Remove. + [__GLIBC_USE (C2X_STRTOL)][__REDIRECT](__REDIRECT_NTH): Remove. + [__GLIBC_USE (C2X_STRTOL)][__REDIRECT](__REDIRECT_NTH): Remove. + [__GLIBC_USE (C2X_STRTOL)][__REDIRECT](__REDIRECT_NTH): Remove. + [__GLIBC_USE (C2X_STRTOL)][__REDIRECT](__REDIRECT_NTH): Remove. + [__GLIBC_USE (ISOC2X)](PRIb8): Remove. + [__GLIBC_USE (ISOC2X)](PRIb16): Remove. + [__GLIBC_USE (ISOC2X)](PRIb32): Remove. + [__GLIBC_USE (ISOC2X)](PRIb64): Remove. + [__GLIBC_USE (ISOC2X)](PRIbLEAST8): Remove. + [__GLIBC_USE (ISOC2X)](PRIbLEAST16): Remove. + [__GLIBC_USE (ISOC2X)](PRIbLEAST32): Remove. + [__GLIBC_USE (ISOC2X)](PRIbLEAST64): Remove. + [__GLIBC_USE (ISOC2X)](PRIbFAST8): Remove. + [__GLIBC_USE (ISOC2X)](PRIbFAST16): Remove. + [__GLIBC_USE (ISOC2X)](PRIbFAST32): Remove. + [__GLIBC_USE (ISOC2X)](PRIbFAST64): Remove. + [__GLIBC_USE (ISOC2X)](PRIbMAX): Remove. + [__GLIBC_USE (ISOC2X)](PRIbPTR): Remove. + [__GLIBC_USE (ISOC2X)](PRIB8): Remove. + [__GLIBC_USE (ISOC2X)](PRIB16): Remove. + [__GLIBC_USE (ISOC2X)](PRIB32): Remove. + [__GLIBC_USE (ISOC2X)](PRIB64): Remove. + [__GLIBC_USE (ISOC2X)](PRIBLEAST8): Remove. + [__GLIBC_USE (ISOC2X)](PRIBLEAST16): Remove. + [__GLIBC_USE (ISOC2X)](PRIBLEAST32): Remove. + [__GLIBC_USE (ISOC2X)](PRIBLEAST64): Remove. + [__GLIBC_USE (ISOC2X)](PRIBFAST8): Remove. + [__GLIBC_USE (ISOC2X)](PRIBFAST16): Remove. + [__GLIBC_USE (ISOC2X)](PRIBFAST32): Remove. + [__GLIBC_USE (ISOC2X)](PRIBFAST64): Remove. + [__GLIBC_USE (ISOC2X)](PRIBMAX): Remove. + [__GLIBC_USE (ISOC2X)](PRIBPTR): Remove. + [__GLIBC_USE (ISOC2X)](SCNb8): Remove. + [__GLIBC_USE (ISOC2X)](SCNb16): Remove. + [__GLIBC_USE (ISOC2X)](SCNb32): Remove. + [__GLIBC_USE (ISOC2X)](SCNb64): Remove. + [__GLIBC_USE (ISOC2X)](SCNbLEAST8): Remove. + [__GLIBC_USE (ISOC2X)](SCNbLEAST16): Remove. + [__GLIBC_USE (ISOC2X)](SCNbLEAST32): Remove. + [__GLIBC_USE (ISOC2X)](SCNbLEAST64): Remove. + [__GLIBC_USE (ISOC2X)](SCNbFAST8): Remove. + [__GLIBC_USE (ISOC2X)](SCNbFAST16): Remove. + [__GLIBC_USE (ISOC2X)](SCNbFAST32): Remove. + [__GLIBC_USE (ISOC2X)](SCNbFAST64): Remove. + [__GLIBC_USE (ISOC2X)](SCNbMAX): Remove. + [__GLIBC_USE (ISOC2X)](SCNbPTR): Remove. + [__GLIBC_USE (C23_STRTOL)][! __REDIRECT](__isoc23_strtoimax): New. + [__GLIBC_USE (C23_STRTOL)][! __REDIRECT](__isoc23_strtoumax): New. + [__GLIBC_USE (C23_STRTOL)][! __REDIRECT](__isoc23_wcstoimax): New. + [__GLIBC_USE (C23_STRTOL)][! __REDIRECT](__isoc23_wcstoumax): New. + [__GLIBC_USE (C23_STRTOL)][! __REDIRECT](strtoimax): New. + [__GLIBC_USE (C23_STRTOL)][! __REDIRECT](strtoumax): New. + [__GLIBC_USE (C23_STRTOL)][! __REDIRECT](wcstoimax): New. + [__GLIBC_USE (C23_STRTOL)][! __REDIRECT](wcstoumax): New. + [__GLIBC_USE (C23_STRTOL)][__REDIRECT](__REDIRECT_NTH): New. + [__GLIBC_USE (C23_STRTOL)][__REDIRECT](__REDIRECT_NTH): New. + [__GLIBC_USE (C23_STRTOL)][__REDIRECT](__REDIRECT_NTH): New. + [__GLIBC_USE (C23_STRTOL)][__REDIRECT](__REDIRECT_NTH): New. + [__GLIBC_USE (ISOC23)](PRIb8): New. + [__GLIBC_USE (ISOC23)](PRIb16): New. + [__GLIBC_USE (ISOC23)](PRIb32): New. + [__GLIBC_USE (ISOC23)](PRIb64): New. + [__GLIBC_USE (ISOC23)](PRIbLEAST8): New. + [__GLIBC_USE (ISOC23)](PRIbLEAST16): New. + [__GLIBC_USE (ISOC23)](PRIbLEAST32): New. + [__GLIBC_USE (ISOC23)](PRIbLEAST64): New. + [__GLIBC_USE (ISOC23)](PRIbFAST8): New. + [__GLIBC_USE (ISOC23)](PRIbFAST16): New. + [__GLIBC_USE (ISOC23)](PRIbFAST32): New. + [__GLIBC_USE (ISOC23)](PRIbFAST64): New. + [__GLIBC_USE (ISOC23)](PRIbMAX): New. + [__GLIBC_USE (ISOC23)](PRIbPTR): New. + [__GLIBC_USE (ISOC23)](PRIB8): New. + [__GLIBC_USE (ISOC23)](PRIB16): New. + [__GLIBC_USE (ISOC23)](PRIB32): New. + [__GLIBC_USE (ISOC23)](PRIB64): New. + [__GLIBC_USE (ISOC23)](PRIBLEAST8): New. + [__GLIBC_USE (ISOC23)](PRIBLEAST16): New. + [__GLIBC_USE (ISOC23)](PRIBLEAST32): New. + [__GLIBC_USE (ISOC23)](PRIBLEAST64): New. + [__GLIBC_USE (ISOC23)](PRIBFAST8): New. + [__GLIBC_USE (ISOC23)](PRIBFAST16): New. + [__GLIBC_USE (ISOC23)](PRIBFAST32): New. + [__GLIBC_USE (ISOC23)](PRIBFAST64): New. + [__GLIBC_USE (ISOC23)](PRIBMAX): New. + [__GLIBC_USE (ISOC23)](PRIBPTR): New. + [__GLIBC_USE (ISOC23)](SCNb8): New. + [__GLIBC_USE (ISOC23)](SCNb16): New. + [__GLIBC_USE (ISOC23)](SCNb32): New. + [__GLIBC_USE (ISOC23)](SCNb64): New. + [__GLIBC_USE (ISOC23)](SCNbLEAST8): New. + [__GLIBC_USE (ISOC23)](SCNbLEAST16): New. + [__GLIBC_USE (ISOC23)](SCNbLEAST32): New. + [__GLIBC_USE (ISOC23)](SCNbLEAST64): New. + [__GLIBC_USE (ISOC23)](SCNbFAST8): New. + [__GLIBC_USE (ISOC23)](SCNbFAST16): New. + [__GLIBC_USE (ISOC23)](SCNbFAST32): New. + [__GLIBC_USE (ISOC23)](SCNbFAST64): New. + [__GLIBC_USE (ISOC23)](SCNbMAX): New. + [__GLIBC_USE (ISOC23)](SCNbPTR): New. + * stdlib/stdint.h: Modified. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](INT8_WIDTH): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](UINT8_WIDTH): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](INT16_WIDTH): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](UINT16_WIDTH): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](INT32_WIDTH): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](UINT32_WIDTH): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](INT64_WIDTH): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](UINT64_WIDTH): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](INT_LEAST8_WIDTH): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](UINT_LEAST8_WIDTH): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](INT_LEAST16_WIDTH): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](UINT_LEAST16_WIDTH): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](INT_LEAST32_WIDTH): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](UINT_LEAST32_WIDTH): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](INT_LEAST64_WIDTH): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](UINT_LEAST64_WIDTH): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](INT_FAST8_WIDTH): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](UINT_FAST8_WIDTH): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](INT_FAST16_WIDTH): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](UINT_FAST16_WIDTH): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](INT_FAST32_WIDTH): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](UINT_FAST32_WIDTH): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](INT_FAST64_WIDTH): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](UINT_FAST64_WIDTH): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](INTPTR_WIDTH): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](UINTPTR_WIDTH): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](INTMAX_WIDTH): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](UINTMAX_WIDTH): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](PTRDIFF_WIDTH): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](SIG_ATOMIC_WIDTH): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](SIZE_WIDTH): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](WCHAR_WIDTH): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](WINT_WIDTH): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](INT8_WIDTH): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](UINT8_WIDTH): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](INT16_WIDTH): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](UINT16_WIDTH): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](INT32_WIDTH): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](UINT32_WIDTH): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](INT64_WIDTH): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](UINT64_WIDTH): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](INT_LEAST8_WIDTH): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](UINT_LEAST8_WIDTH): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](INT_LEAST16_WIDTH): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](UINT_LEAST16_WIDTH): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](INT_LEAST32_WIDTH): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](UINT_LEAST32_WIDTH): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](INT_LEAST64_WIDTH): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](UINT_LEAST64_WIDTH): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](INT_FAST8_WIDTH): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](UINT_FAST8_WIDTH): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](INT_FAST16_WIDTH): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](UINT_FAST16_WIDTH): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](INT_FAST32_WIDTH): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](UINT_FAST32_WIDTH): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](INT_FAST64_WIDTH): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](UINT_FAST64_WIDTH): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](INTPTR_WIDTH): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](UINTPTR_WIDTH): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](INTMAX_WIDTH): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](UINTMAX_WIDTH): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](PTRDIFF_WIDTH): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](SIG_ATOMIC_WIDTH): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](SIZE_WIDTH): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](WCHAR_WIDTH): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](WINT_WIDTH): New. + * stdlib/stdlib.h: Modified. + [__GLIBC_USE (C2X_STRTOL)][! __REDIRECT][__USE_MISC](strtoq): Remove. + [__GLIBC_USE (C2X_STRTOL)][! __REDIRECT][__USE_MISC](strtouq): Remove. + [__GLIBC_USE (C2X_STRTOL)][! __REDIRECT](__isoc23_strtol): Remove. + [__GLIBC_USE (C2X_STRTOL)][! __REDIRECT](__isoc23_strtoul): Remove. + [__GLIBC_USE (C2X_STRTOL)][! __REDIRECT](__isoc23_strtoll): Remove. + [__GLIBC_USE (C2X_STRTOL)][! __REDIRECT](__isoc23_strtoull): Remove. + [__GLIBC_USE (C2X_STRTOL)][! __REDIRECT](strtol): Remove. + [__GLIBC_USE (C2X_STRTOL)][! __REDIRECT](strtoul): Remove. + [__GLIBC_USE (C2X_STRTOL)][! __REDIRECT](strtoll): Remove. + [__GLIBC_USE (C2X_STRTOL)][! __REDIRECT](strtoull): Remove. + [__GLIBC_USE (C2X_STRTOL)][__REDIRECT][__USE_MISC](__REDIRECT_NTH): Remove. + [__GLIBC_USE (C2X_STRTOL)][__REDIRECT][__USE_MISC](__REDIRECT_NTH): Remove. + [__GLIBC_USE (C2X_STRTOL)][__REDIRECT](__REDIRECT_NTH): Remove. + [__GLIBC_USE (C2X_STRTOL)][__REDIRECT](__REDIRECT_NTH): Remove. + [__GLIBC_USE (C2X_STRTOL)][__REDIRECT](__REDIRECT_NTH): Remove. + [__GLIBC_USE (C2X_STRTOL)][__REDIRECT](__REDIRECT_NTH): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](strfromd): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](strfromf): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](strfroml): Remove. + [__USE_GNU][__GLIBC_USE (C2X_STRTOL)][! __REDIRECT](__isoc23_strtol_l): Remove. + [__USE_GNU][__GLIBC_USE (C2X_STRTOL)][! __REDIRECT](__isoc23_strtoul_l): Remove. + [__USE_GNU][__GLIBC_USE (C2X_STRTOL)][! __REDIRECT](__isoc23_strtoll_l): Remove. + [__USE_GNU][__GLIBC_USE (C2X_STRTOL)][! __REDIRECT](__isoc23_strtoull_l): Remove. + [__USE_GNU][__GLIBC_USE (C2X_STRTOL)][! __REDIRECT](strtol_l): Remove. + [__USE_GNU][__GLIBC_USE (C2X_STRTOL)][! __REDIRECT](strtoul_l): Remove. + [__USE_GNU][__GLIBC_USE (C2X_STRTOL)][! __REDIRECT](strtoll_l): Remove. + [__USE_GNU][__GLIBC_USE (C2X_STRTOL)][! __REDIRECT](strtoull_l): Remove. + [__USE_GNU][__GLIBC_USE (C2X_STRTOL)][__REDIRECT](__REDIRECT_NTH): Remove. + [__USE_GNU][__GLIBC_USE (C2X_STRTOL)][__REDIRECT](__REDIRECT_NTH): Remove. + [__USE_GNU][__GLIBC_USE (C2X_STRTOL)][__REDIRECT](__REDIRECT_NTH): Remove. + [__USE_GNU][__GLIBC_USE (C2X_STRTOL)][__REDIRECT](__REDIRECT_NTH): Remove. + [__USE_GNU][__GLIBC_USE (C23_STRTOL)][! __REDIRECT](__isoc23_strtol_l): New. + [__USE_GNU][__GLIBC_USE (C23_STRTOL)][! __REDIRECT](__isoc23_strtoul_l): New. + [__USE_GNU][__GLIBC_USE (C23_STRTOL)][! __REDIRECT](__isoc23_strtoll_l): New. + [__USE_GNU][__GLIBC_USE (C23_STRTOL)][! __REDIRECT](__isoc23_strtoull_l): New. + [__USE_GNU][__GLIBC_USE (C23_STRTOL)][! __REDIRECT](strtol_l): New. + [__USE_GNU][__GLIBC_USE (C23_STRTOL)][! __REDIRECT](strtoul_l): New. + [__USE_GNU][__GLIBC_USE (C23_STRTOL)][! __REDIRECT](strtoll_l): New. + [__USE_GNU][__GLIBC_USE (C23_STRTOL)][! __REDIRECT](strtoull_l): New. + [__USE_GNU][__GLIBC_USE (C23_STRTOL)][__REDIRECT](__REDIRECT_NTH): New. + [__USE_GNU][__GLIBC_USE (C23_STRTOL)][__REDIRECT](__REDIRECT_NTH): New. + [__USE_GNU][__GLIBC_USE (C23_STRTOL)][__REDIRECT](__REDIRECT_NTH): New. + [__USE_GNU][__GLIBC_USE (C23_STRTOL)][__REDIRECT](__REDIRECT_NTH): New. + [__GLIBC_USE (C23_STRTOL)][! __REDIRECT][__USE_MISC](strtoq): New. + [__GLIBC_USE (C23_STRTOL)][! __REDIRECT][__USE_MISC](strtouq): New. + [__GLIBC_USE (C23_STRTOL)][! __REDIRECT](__isoc23_strtol): New. + [__GLIBC_USE (C23_STRTOL)][! __REDIRECT](__isoc23_strtoul): New. + [__GLIBC_USE (C23_STRTOL)][! __REDIRECT](__isoc23_strtoll): New. + [__GLIBC_USE (C23_STRTOL)][! __REDIRECT](__isoc23_strtoull): New. + [__GLIBC_USE (C23_STRTOL)][! __REDIRECT](strtol): New. + [__GLIBC_USE (C23_STRTOL)][! __REDIRECT](strtoul): New. + [__GLIBC_USE (C23_STRTOL)][! __REDIRECT](strtoll): New. + [__GLIBC_USE (C23_STRTOL)][! __REDIRECT](strtoull): New. + [__GLIBC_USE (C23_STRTOL)][__REDIRECT][__USE_MISC](__REDIRECT_NTH): New. + [__GLIBC_USE (C23_STRTOL)][__REDIRECT][__USE_MISC](__REDIRECT_NTH): New. + [__GLIBC_USE (C23_STRTOL)][__REDIRECT](__REDIRECT_NTH): New. + [__GLIBC_USE (C23_STRTOL)][__REDIRECT](__REDIRECT_NTH): New. + [__GLIBC_USE (C23_STRTOL)][__REDIRECT](__REDIRECT_NTH): New. + [__GLIBC_USE (C23_STRTOL)][__REDIRECT](__REDIRECT_NTH): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](strfromd): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](strfromf): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](strfroml): New. + * stdlib/strtol.c: Modified. + (__GLIBC_USE_C2X_STRTOL): Remove. + (__GLIBC_USE_C23_STRTOL): New. + * stdlib/strtol_l.c: Modified. + (__GLIBC_USE_C2X_STRTOL): Remove. + (__GLIBC_USE_C23_STRTOL): New. + * stdlib/strtoll_l.c: Modified. + (__GLIBC_USE_C2X_STRTOL): Remove. + (__GLIBC_USE_C23_STRTOL): New. + * stdlib/strtoul_l.c: Modified. + (__GLIBC_USE_C2X_STRTOL): Remove. + (__GLIBC_USE_C23_STRTOL): New. + * stdlib/strtoull_l.c: Modified. + (__GLIBC_USE_C2X_STRTOL): Remove. + (__GLIBC_USE_C23_STRTOL): New. + * stdlib/tst-strtol-binary-c11.c: Modified. + (TEST_C2X): Remove. + (TEST_C23): New. + * stdlib/tst-strtol-binary-c2x.c: Modified. + (_ISOC2X_SOURCE): Remove. + (TEST_C2X): Remove. + (_ISOC23_SOURCE): New. + (TEST_C23): New. + * stdlib/tst-strtol-binary-gnu11.c: Modified. + (__GLIBC_USE_C2X_STRTOL): Remove. + (TEST_C2X): Remove. + (__GLIBC_USE_C23_STRTOL): New. + (TEST_C23): New. + * stdlib/tst-strtol-binary-gnu2x.c: Modified. + (TEST_C2X): Remove. + (TEST_C23): New. + * stdlib/tst-strtol-binary-main.c: Modified. + (CHECK_RES): Modified. + * string/string.h: Modified. + [__CORRECT_ISO_CPP_STRING_H_PROTO][( __USE_XOPEN_EXTENDED || __USE_XOPEN2K8 || __GLIBC_USE (LIB_EXT2) || __GLIBC_USE (ISOC2X))](strdup): Remove. + [__CORRECT_ISO_CPP_STRING_H_PROTO][__USE_XOPEN2K8 || __GLIBC_USE (LIB_EXT2) || __GLIBC_USE (ISOC2X)](strndup): Remove. + [__CORRECT_ISO_CPP_STRING_H_PROTO][( __USE_XOPEN_EXTENDED || __USE_XOPEN2K8 || __GLIBC_USE (LIB_EXT2) || __GLIBC_USE (ISOC23))](strdup): New. + [__CORRECT_ISO_CPP_STRING_H_PROTO][__USE_XOPEN2K8 || __GLIBC_USE (LIB_EXT2) || __GLIBC_USE (ISOC23)](strndup): New. + [__USE_MISC || __USE_XOPEN || __GLIBC_USE (ISOC2X)](memccpy): Remove. + [__USE_MISC || __USE_XOPEN || __GLIBC_USE (ISOC23)](memccpy): New. + * sysdeps/aarch64/bits/fenv.h: Modified. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](femode_t): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](FE_DFL_MODE): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](femode_t): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](FE_DFL_MODE): New. + * sysdeps/alpha/fpu/bits/fenv.h: Modified. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](femode_t): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](FE_DFL_MODE): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](femode_t): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](FE_DFL_MODE): New. + * sysdeps/arm/bits/fenv.h: Modified. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](femode_t): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](FE_DFL_MODE): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](femode_t): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](FE_DFL_MODE): New. + * sysdeps/csky/bits/fenv.h: Modified. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](femode_t): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](FE_DFL_MODE): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](femode_t): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](FE_DFL_MODE): New. + * sysdeps/hppa/fpu/bits/fenv.h: Modified. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](femode_t): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](FE_DFL_MODE): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](femode_t): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](FE_DFL_MODE): New. + * sysdeps/ieee754/ldbl-128ibm-compat/Makefile: Modified. + * sysdeps/ieee754/ldbl-opt/Makefile: Modified. + * sysdeps/loongarch/bits/fenv.h: Modified. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](femode_t): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](FE_DFL_MODE): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](femode_t): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](FE_DFL_MODE): New. + * sysdeps/m68k/bits/fenv.h: Modified. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](femode_t): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](FE_DFL_MODE): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](femode_t): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](FE_DFL_MODE): New. + * sysdeps/microblaze/bits/fenv.h: Modified. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](femode_t): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](FE_DFL_MODE): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](femode_t): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](FE_DFL_MODE): New. + * sysdeps/mips/bits/fenv.h: Modified. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](femode_t): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](FE_DFL_MODE): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](femode_t): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](FE_DFL_MODE): New. + * sysdeps/nios2/bits/fenv.h: Modified. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](femode_t): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](FE_DFL_MODE): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](femode_t): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](FE_DFL_MODE): New. + * sysdeps/powerpc/bits/fenv.h: Modified. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](femode_t): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](__fe_dfl_mode): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](FE_DFL_MODE): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](femode_t): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](__fe_dfl_mode): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](FE_DFL_MODE): New. + * sysdeps/riscv/bits/fenv.h: Modified. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](femode_t): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](FE_DFL_MODE): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](femode_t): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](FE_DFL_MODE): New. + * sysdeps/s390/fpu/bits/fenv.h: Modified. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](femode_t): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](FE_DFL_MODE): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](femode_t): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](FE_DFL_MODE): New. + * sysdeps/sh/bits/fenv.h: Modified. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](femode_t): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](FE_DFL_MODE): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](femode_t): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](FE_DFL_MODE): New. + * sysdeps/sparc/fpu/bits/fenv.h: Modified. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](femode_t): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](FE_DFL_MODE): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](femode_t): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](FE_DFL_MODE): New. + * sysdeps/x86/fpu/bits/fenv.h: Modified. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](typedef struct { unsigned short int __control_word; unsigned short int __glibc_reserved; unsigned int __mxcsr; }): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](femode_t): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)](FE_DFL_MODE): Remove. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](typedef struct { unsigned short int __control_word; unsigned short int __glibc_reserved; unsigned int __mxcsr; }): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](femode_t): New. + [__GLIBC_USE (IEC_60559_BFP_EXT_C23)](FE_DFL_MODE): New. + * time/time.h: Modified. + [__GLIBC_USE (ISOC2X)][! __USE_TIME_BITS64](timespec_getres): Remove. + [__GLIBC_USE (ISOC2X)][__USE_TIME_BITS64][! __REDIRECT_NTH](timespec_getres): Remove. + [__GLIBC_USE (ISOC2X)][__USE_TIME_BITS64][__REDIRECT_NTH](__REDIRECT_NTH): Remove. + [__USE_MISC || __GLIBC_USE (ISOC2X)][! __USE_TIME_BITS64](timegm): Remove. + [__USE_MISC || __GLIBC_USE (ISOC2X)][__USE_TIME_BITS64][! __REDIRECT_NTH](timegm): Remove. + [__USE_MISC || __GLIBC_USE (ISOC2X)][__USE_TIME_BITS64][__REDIRECT_NTH](__REDIRECT_NTH): Remove. + [__USE_POSIX || __GLIBC_USE (ISOC2X)][! __USE_TIME_BITS64](gmtime_r): Remove. + [__USE_POSIX || __GLIBC_USE (ISOC2X)][! __USE_TIME_BITS64](localtime_r): Remove. + [__USE_POSIX || __GLIBC_USE (ISOC2X)][__USE_TIME_BITS64][! __REDIRECT_NTH](gmtime_r): Remove. + [__USE_POSIX || __GLIBC_USE (ISOC2X)][__USE_TIME_BITS64][! __REDIRECT_NTH](localtime_r): Remove. + [__USE_POSIX || __GLIBC_USE (ISOC2X)][__USE_TIME_BITS64][__REDIRECT_NTH](__REDIRECT_NTH): Remove. + [__USE_POSIX || __GLIBC_USE (ISOC2X)][__USE_TIME_BITS64][__REDIRECT_NTH](__REDIRECT_NTH): Remove. + [__GLIBC_USE (ISOC23)][! __USE_TIME_BITS64](timespec_getres): New. + [__GLIBC_USE (ISOC23)][__USE_TIME_BITS64][! __REDIRECT_NTH](timespec_getres): New. + [__GLIBC_USE (ISOC23)][__USE_TIME_BITS64][__REDIRECT_NTH](__REDIRECT_NTH): New. + [__USE_MISC || __GLIBC_USE (ISOC23)][! __USE_TIME_BITS64](timegm): New. + [__USE_MISC || __GLIBC_USE (ISOC23)][__USE_TIME_BITS64][! __REDIRECT_NTH](timegm): New. + [__USE_MISC || __GLIBC_USE (ISOC23)][__USE_TIME_BITS64][__REDIRECT_NTH](__REDIRECT_NTH): New. + [__USE_POSIX || __GLIBC_USE (ISOC23)][! __USE_TIME_BITS64](gmtime_r): New. + [__USE_POSIX || __GLIBC_USE (ISOC23)][! __USE_TIME_BITS64](localtime_r): New. + [__USE_POSIX || __GLIBC_USE (ISOC23)][__USE_TIME_BITS64][! __REDIRECT_NTH](gmtime_r): New. + [__USE_POSIX || __GLIBC_USE (ISOC23)][__USE_TIME_BITS64][! __REDIRECT_NTH](localtime_r): New. + [__USE_POSIX || __GLIBC_USE (ISOC23)][__USE_TIME_BITS64][__REDIRECT_NTH](__REDIRECT_NTH): New. + [__USE_POSIX || __GLIBC_USE (ISOC23)][__USE_TIME_BITS64][__REDIRECT_NTH](__REDIRECT_NTH): New. + * wcsmbs/Makefile: Modified. + * wcsmbs/bits/wchar-ldbl.h: Modified. + [__USE_ISOC95 || __USE_UNIX98][!__GLIBC_USE (DEPRECATED_SCANF)][__LDBL_COMPAT][__LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1][!(__GLIBC_USE (C2X_STRTOL))][__USE_ISOC99][! __LDBL_COMPAT][!__GLIBC_USE (DEPRECATED_SCANF)][__LDBL_COMPAT][__LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1][!(__GLIBC_USE (C2X_STRTOL))](__LDBL_REDIR1_DECL): Remove. + [__USE_ISOC95 || __USE_UNIX98][!__GLIBC_USE (DEPRECATED_SCANF)][__LDBL_COMPAT][__LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1][!(__GLIBC_USE (C2X_STRTOL))][__USE_ISOC99][! __LDBL_COMPAT][!__GLIBC_USE (DEPRECATED_SCANF)][__LDBL_COMPAT][__LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1][!(__GLIBC_USE (C2X_STRTOL))](__LDBL_REDIR_DECL): Remove. + [__USE_ISOC95 || __USE_UNIX98][!__GLIBC_USE (DEPRECATED_SCANF)][__LDBL_COMPAT][__LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1][!(__GLIBC_USE (C2X_STRTOL))][__USE_ISOC99][! __LDBL_COMPAT][!__GLIBC_USE (DEPRECATED_SCANF)][__LDBL_COMPAT][__LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1][!(__GLIBC_USE (C2X_STRTOL))](__LDBL_REDIR_DECL): Remove. + [__USE_ISOC95 || __USE_UNIX98][!__GLIBC_USE (DEPRECATED_SCANF)][__LDBL_COMPAT][__LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1][!(__GLIBC_USE (C2X_STRTOL))][__USE_ISOC99][! __LDBL_COMPAT][!__GLIBC_USE (DEPRECATED_SCANF)][__LDBL_COMPAT][__LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1][__GLIBC_USE (C2X_STRTOL)][__USE_GNU][__LDBL_COMPAT](__LDBL_REDIR1_DECL): Remove. + [__USE_ISOC95 || __USE_UNIX98][!__GLIBC_USE (DEPRECATED_SCANF)][__LDBL_COMPAT][__LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1][!(__GLIBC_USE (C2X_STRTOL))][__USE_ISOC99][! __LDBL_COMPAT][!__GLIBC_USE (DEPRECATED_SCANF)][__LDBL_COMPAT][__LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1][__GLIBC_USE (C2X_STRTOL)](bits/stdlib-ldbl.h included when no ldbl redirections are required.): Remove. + [__USE_ISOC95 || __USE_UNIX98][!__GLIBC_USE (DEPRECATED_SCANF)][__LDBL_COMPAT][__LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1][!(__GLIBC_USE (C2X_STRTOL))][__USE_ISOC99][__LDBL_COMPAT](__LDBL_REDIR1_DECL): Remove. + [__USE_ISOC95 || __USE_UNIX98][!__GLIBC_USE (DEPRECATED_SCANF)][__LDBL_COMPAT][__LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1][__GLIBC_USE (C2X_STRTOL)](bits/stdlib-ldbl.h included when no ldbl redirections are required.): Remove. + [__USE_ISOC95 || __USE_UNIX98][!__GLIBC_USE (DEPRECATED_SCANF)][__LDBL_COMPAT][__LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1][__GLIBC_USE (C2X_STRTOL)](__LDBL_REDIR_DECL): Remove. + [__USE_ISOC95 || __USE_UNIX98][!__GLIBC_USE (DEPRECATED_SCANF)][__LDBL_COMPAT][__LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1][__GLIBC_USE (C2X_STRTOL)](__LDBL_REDIR_DECL): Remove. + [__USE_ISOC95 || __USE_UNIX98][!__GLIBC_USE (DEPRECATED_SCANF)][__LDBL_COMPAT][__LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1][__GLIBC_USE (C2X_STRTOL)](__LDBL_REDIR_DECL): Remove. + [__USE_ISOC95 || __USE_UNIX98][!__GLIBC_USE (DEPRECATED_SCANF)][__LDBL_COMPAT][__LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1][!(__GLIBC_USE (C23_STRTOL))][__USE_ISOC99][! __LDBL_COMPAT][!__GLIBC_USE (DEPRECATED_SCANF)][__LDBL_COMPAT][__LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1][!(__GLIBC_USE (C23_STRTOL))](__LDBL_REDIR1_DECL): New. + [__USE_ISOC95 || __USE_UNIX98][!__GLIBC_USE (DEPRECATED_SCANF)][__LDBL_COMPAT][__LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1][!(__GLIBC_USE (C23_STRTOL))][__USE_ISOC99][! __LDBL_COMPAT][!__GLIBC_USE (DEPRECATED_SCANF)][__LDBL_COMPAT][__LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1][!(__GLIBC_USE (C23_STRTOL))](__LDBL_REDIR_DECL): New. + [__USE_ISOC95 || __USE_UNIX98][!__GLIBC_USE (DEPRECATED_SCANF)][__LDBL_COMPAT][__LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1][!(__GLIBC_USE (C23_STRTOL))][__USE_ISOC99][! __LDBL_COMPAT][!__GLIBC_USE (DEPRECATED_SCANF)][__LDBL_COMPAT][__LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1][!(__GLIBC_USE (C23_STRTOL))](__LDBL_REDIR_DECL): New. + [__USE_ISOC95 || __USE_UNIX98][!__GLIBC_USE (DEPRECATED_SCANF)][__LDBL_COMPAT][__LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1][!(__GLIBC_USE (C23_STRTOL))][__USE_ISOC99][! __LDBL_COMPAT][!__GLIBC_USE (DEPRECATED_SCANF)][__LDBL_COMPAT][__LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1][__GLIBC_USE (C23_STRTOL)][__USE_GNU][__LDBL_COMPAT](__LDBL_REDIR1_DECL): New. + [__USE_ISOC95 || __USE_UNIX98][!__GLIBC_USE (DEPRECATED_SCANF)][__LDBL_COMPAT][__LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1][!(__GLIBC_USE (C23_STRTOL))][__USE_ISOC99][! __LDBL_COMPAT][!__GLIBC_USE (DEPRECATED_SCANF)][__LDBL_COMPAT][__LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1][__GLIBC_USE (C23_STRTOL)](bits/stdlib-ldbl.h included when no ldbl redirections are required.): New. + [__USE_ISOC95 || __USE_UNIX98][!__GLIBC_USE (DEPRECATED_SCANF)][__LDBL_COMPAT][__LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1][!(__GLIBC_USE (C23_STRTOL))][__USE_ISOC99][__LDBL_COMPAT](__LDBL_REDIR1_DECL): New. + [__USE_ISOC95 || __USE_UNIX98][!__GLIBC_USE (DEPRECATED_SCANF)][__LDBL_COMPAT][__LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1][__GLIBC_USE (C23_STRTOL)](bits/stdlib-ldbl.h included when no ldbl redirections are required.): New. + [__USE_ISOC95 || __USE_UNIX98][!__GLIBC_USE (DEPRECATED_SCANF)][__LDBL_COMPAT][__LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1][__GLIBC_USE (C23_STRTOL)](__LDBL_REDIR_DECL): New. + [__USE_ISOC95 || __USE_UNIX98][!__GLIBC_USE (DEPRECATED_SCANF)][__LDBL_COMPAT][__LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1][__GLIBC_USE (C23_STRTOL)](__LDBL_REDIR_DECL): New. + [__USE_ISOC95 || __USE_UNIX98][!__GLIBC_USE (DEPRECATED_SCANF)][__LDBL_COMPAT][__LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 1][__GLIBC_USE (C23_STRTOL)](__LDBL_REDIR_DECL): New. + * wcsmbs/tst-wcstol-binary-c11.c: Modified. + (TEST_C2X): Remove. + (TEST_C23): New. + * wcsmbs/tst-wcstol-binary-c2x.c: Modified. + (_ISOC2X_SOURCE): Remove. + (TEST_C2X): Remove. + (_ISOC23_SOURCE): New. + (TEST_C23): New. + * wcsmbs/tst-wcstol-binary-gnu11.c: Modified. + (__GLIBC_USE_C2X_STRTOL): Remove. + (TEST_C2X): Remove. + (__GLIBC_USE_C23_STRTOL): New. + (TEST_C23): New. + * wcsmbs/tst-wcstol-binary-gnu2x.c: Modified. + (TEST_C2X): Remove. + (TEST_C23): New. + * wcsmbs/tst-wscanf-binary-c11.c: Modified. + (TEST_C2X): Remove. + (TEST_C23): New. + * wcsmbs/tst-wscanf-binary-c2x.c: Modified. + (_ISOC2X_SOURCE): Remove. + (TEST_C2X): Remove. + (STD): Modified. + (_ISOC23_SOURCE): New. + (TEST_C23): New. + * wcsmbs/tst-wscanf-binary-gnu11.c: Modified. + (TEST_C2X): Remove. + (TEST_C23): New. + * wcsmbs/tst-wscanf-binary-gnu89.c: Modified. + (TEST_C2X): Remove. + (TEST_C23): New. + * wcsmbs/uchar.h: Modified. + [__GLIBC_USE (ISOC2X) && ! __cpp_char8_t](char8_t): Remove. + [__GLIBC_USE (ISOC2X) || __cpp_char8_t](mbrtoc8): Remove. + [__GLIBC_USE (ISOC2X) || __cpp_char8_t](c8rtomb): Remove. + [__GLIBC_USE (ISOC23) && ! __cpp_char8_t](char8_t): New. + [__GLIBC_USE (ISOC23) || __cpp_char8_t](mbrtoc8): New. + [__GLIBC_USE (ISOC23) || __cpp_char8_t](c8rtomb): New. + * wcsmbs/wchar.h: Modified. + [__GLIBC_USE (C2X_STRTOL)][! __REDIRECT][__USE_GNU](wcstoq): Remove. + [__GLIBC_USE (C2X_STRTOL)][! __REDIRECT][__USE_GNU](wcstouq): Remove. + [__GLIBC_USE (C2X_STRTOL)][! __REDIRECT](__isoc23_wcstol): Remove. + [__GLIBC_USE (C2X_STRTOL)][! __REDIRECT](__isoc23_wcstoul): Remove. + [__GLIBC_USE (C2X_STRTOL)][! __REDIRECT](__isoc23_wcstoll): Remove. + [__GLIBC_USE (C2X_STRTOL)][! __REDIRECT](__isoc23_wcstoull): Remove. + [__GLIBC_USE (C2X_STRTOL)][! __REDIRECT](wcstol): Remove. + [__GLIBC_USE (C2X_STRTOL)][! __REDIRECT](wcstoul): Remove. + [__GLIBC_USE (C2X_STRTOL)][! __REDIRECT](wcstoll): Remove. + [__GLIBC_USE (C2X_STRTOL)][! __REDIRECT](wcstoull): Remove. + [__GLIBC_USE (C2X_STRTOL)][__REDIRECT][__USE_GNU](__REDIRECT_NTH): Remove. + [__GLIBC_USE (C2X_STRTOL)][__REDIRECT][__USE_GNU](__REDIRECT_NTH): Remove. + [__GLIBC_USE (C2X_STRTOL)][__REDIRECT](__REDIRECT_NTH): Remove. + [__GLIBC_USE (C2X_STRTOL)][__REDIRECT](__REDIRECT_NTH): Remove. + [__GLIBC_USE (C2X_STRTOL)][__REDIRECT](__REDIRECT_NTH): Remove. + [__GLIBC_USE (C2X_STRTOL)][__REDIRECT](__REDIRECT_NTH): Remove. + [__GLIBC_USE (IEC_60559_TYPES_EXT) && __GLIBC_USE (ISOC2X)][__HAVE_FLOAT128](wcstof128): Remove. + [__GLIBC_USE (IEC_60559_TYPES_EXT) && __GLIBC_USE (ISOC2X)][__HAVE_FLOAT128X](wcstof128x): Remove. + [__GLIBC_USE (IEC_60559_TYPES_EXT) && __GLIBC_USE (ISOC2X)][__HAVE_FLOAT16](wcstof16): Remove. + [__GLIBC_USE (IEC_60559_TYPES_EXT) && __GLIBC_USE (ISOC2X)][__HAVE_FLOAT32](wcstof32): Remove. + [__GLIBC_USE (IEC_60559_TYPES_EXT) && __GLIBC_USE (ISOC2X)][__HAVE_FLOAT32X](wcstof32x): Remove. + [__GLIBC_USE (IEC_60559_TYPES_EXT) && __GLIBC_USE (ISOC2X)][__HAVE_FLOAT64](wcstof64): Remove. + [__GLIBC_USE (IEC_60559_TYPES_EXT) && __GLIBC_USE (ISOC2X)][__HAVE_FLOAT64X](wcstof64x): Remove. + [__USE_GNU][__GLIBC_USE (C2X_STRTOL)][! __REDIRECT](__isoc23_wcstol_l): Remove. + [__USE_GNU][__GLIBC_USE (C2X_STRTOL)][! __REDIRECT](__isoc23_wcstoul_l): Remove. + [__USE_GNU][__GLIBC_USE (C2X_STRTOL)][! __REDIRECT](__isoc23_wcstoll_l): Remove. + [__USE_GNU][__GLIBC_USE (C2X_STRTOL)][! __REDIRECT](__isoc23_wcstoull_l): Remove. + [__USE_GNU][__GLIBC_USE (C2X_STRTOL)][! __REDIRECT](wcstol_l): Remove. + [__USE_GNU][__GLIBC_USE (C2X_STRTOL)][! __REDIRECT](wcstoul_l): Remove. + [__USE_GNU][__GLIBC_USE (C2X_STRTOL)][! __REDIRECT](wcstoll_l): Remove. + [__USE_GNU][__GLIBC_USE (C2X_STRTOL)][! __REDIRECT](wcstoull_l): Remove. + [__USE_GNU][__GLIBC_USE (C2X_STRTOL)][__REDIRECT](__REDIRECT_NTH): Remove. + [__USE_GNU][__GLIBC_USE (C2X_STRTOL)][__REDIRECT](__REDIRECT_NTH): Remove. + [__USE_GNU][__GLIBC_USE (C2X_STRTOL)][__REDIRECT](__REDIRECT_NTH): Remove. + [__USE_GNU][__GLIBC_USE (C2X_STRTOL)][__REDIRECT](__REDIRECT_NTH): Remove. + [__USE_GNU][__GLIBC_USE (C23_STRTOL)][! __REDIRECT](__isoc23_wcstol_l): New. + [__USE_GNU][__GLIBC_USE (C23_STRTOL)][! __REDIRECT](__isoc23_wcstoul_l): New. + [__USE_GNU][__GLIBC_USE (C23_STRTOL)][! __REDIRECT](__isoc23_wcstoll_l): New. + [__USE_GNU][__GLIBC_USE (C23_STRTOL)][! __REDIRECT](__isoc23_wcstoull_l): New. + [__USE_GNU][__GLIBC_USE (C23_STRTOL)][! __REDIRECT](wcstol_l): New. + [__USE_GNU][__GLIBC_USE (C23_STRTOL)][! __REDIRECT](wcstoul_l): New. + [__USE_GNU][__GLIBC_USE (C23_STRTOL)][! __REDIRECT](wcstoll_l): New. + [__USE_GNU][__GLIBC_USE (C23_STRTOL)][! __REDIRECT](wcstoull_l): New. + [__USE_GNU][__GLIBC_USE (C23_STRTOL)][__REDIRECT](__REDIRECT_NTH): New. + [__USE_GNU][__GLIBC_USE (C23_STRTOL)][__REDIRECT](__REDIRECT_NTH): New. + [__USE_GNU][__GLIBC_USE (C23_STRTOL)][__REDIRECT](__REDIRECT_NTH): New. + [__USE_GNU][__GLIBC_USE (C23_STRTOL)][__REDIRECT](__REDIRECT_NTH): New. + [__USE_ISOC95 || __USE_UNIX98][!__GLIBC_USE (DEPRECATED_SCANF) && ! __LDBL_COMPAT && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][!(__GLIBC_USE (C2X_STRTOL))][! __REDIRECT](__isoc99_fwscanf): Remove. + [__USE_ISOC95 || __USE_UNIX98][!__GLIBC_USE (DEPRECATED_SCANF) && ! __LDBL_COMPAT && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][!(__GLIBC_USE (C2X_STRTOL))][! __REDIRECT](__isoc99_wscanf): Remove. + [__USE_ISOC95 || __USE_UNIX98][!__GLIBC_USE (DEPRECATED_SCANF) && ! __LDBL_COMPAT && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][!(__GLIBC_USE (C2X_STRTOL))][! __REDIRECT](__isoc99_swscanf): Remove. + [__USE_ISOC95 || __USE_UNIX98][!__GLIBC_USE (DEPRECATED_SCANF) && ! __LDBL_COMPAT && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][!(__GLIBC_USE (C2X_STRTOL))][! __REDIRECT](fwscanf): Remove. + [__USE_ISOC95 || __USE_UNIX98][!__GLIBC_USE (DEPRECATED_SCANF) && ! __LDBL_COMPAT && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][!(__GLIBC_USE (C2X_STRTOL))][! __REDIRECT](wscanf): Remove. + [__USE_ISOC95 || __USE_UNIX98][!__GLIBC_USE (DEPRECATED_SCANF) && ! __LDBL_COMPAT && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][!(__GLIBC_USE (C2X_STRTOL))][! __REDIRECT](swscanf): Remove. + [__USE_ISOC95 || __USE_UNIX98][!__GLIBC_USE (DEPRECATED_SCANF) && ! __LDBL_COMPAT && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][!(__GLIBC_USE (C2X_STRTOL))][__REDIRECT](__REDIRECT): Remove. + [__USE_ISOC95 || __USE_UNIX98][!__GLIBC_USE (DEPRECATED_SCANF) && ! __LDBL_COMPAT && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][!(__GLIBC_USE (C2X_STRTOL))][__REDIRECT](__REDIRECT): Remove. + [__USE_ISOC95 || __USE_UNIX98][!__GLIBC_USE (DEPRECATED_SCANF) && ! __LDBL_COMPAT && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][!(__GLIBC_USE (C2X_STRTOL))][__REDIRECT](__REDIRECT_NTH): Remove. + [__USE_ISOC95 || __USE_UNIX98][!__GLIBC_USE (DEPRECATED_SCANF) && ! __LDBL_COMPAT && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][__GLIBC_USE (C2X_STRTOL)][! __REDIRECT](__isoc23_fwscanf): Remove. + [__USE_ISOC95 || __USE_UNIX98][!__GLIBC_USE (DEPRECATED_SCANF) && ! __LDBL_COMPAT && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][__GLIBC_USE (C2X_STRTOL)][! __REDIRECT](__isoc23_wscanf): Remove. + [__USE_ISOC95 || __USE_UNIX98][!__GLIBC_USE (DEPRECATED_SCANF) && ! __LDBL_COMPAT && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][__GLIBC_USE (C2X_STRTOL)][! __REDIRECT](__isoc23_swscanf): Remove. + [__USE_ISOC95 || __USE_UNIX98][!__GLIBC_USE (DEPRECATED_SCANF) && ! __LDBL_COMPAT && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][__GLIBC_USE (C2X_STRTOL)][! __REDIRECT](fwscanf): Remove. + [__USE_ISOC95 || __USE_UNIX98][!__GLIBC_USE (DEPRECATED_SCANF) && ! __LDBL_COMPAT && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][__GLIBC_USE (C2X_STRTOL)][! __REDIRECT](wscanf): Remove. + [__USE_ISOC95 || __USE_UNIX98][!__GLIBC_USE (DEPRECATED_SCANF) && ! __LDBL_COMPAT && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][__GLIBC_USE (C2X_STRTOL)][! __REDIRECT](swscanf): Remove. + [__USE_ISOC95 || __USE_UNIX98][!__GLIBC_USE (DEPRECATED_SCANF) && ! __LDBL_COMPAT && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][__GLIBC_USE (C2X_STRTOL)][__REDIRECT](__REDIRECT): Remove. + [__USE_ISOC95 || __USE_UNIX98][!__GLIBC_USE (DEPRECATED_SCANF) && ! __LDBL_COMPAT && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][__GLIBC_USE (C2X_STRTOL)][__REDIRECT](__REDIRECT): Remove. + [__USE_ISOC95 || __USE_UNIX98][!__GLIBC_USE (DEPRECATED_SCANF) && ! __LDBL_COMPAT && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][__GLIBC_USE (C2X_STRTOL)][__REDIRECT](__REDIRECT_NTH): Remove. + [__USE_ISOC95 || __USE_UNIX98][!__GLIBC_USE (DEPRECATED_SCANF) && ! __LDBL_COMPAT && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][!(__GLIBC_USE (C23_STRTOL))][! __REDIRECT](__isoc99_fwscanf): New. + [__USE_ISOC95 || __USE_UNIX98][!__GLIBC_USE (DEPRECATED_SCANF) && ! __LDBL_COMPAT && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][!(__GLIBC_USE (C23_STRTOL))][! __REDIRECT](__isoc99_wscanf): New. + [__USE_ISOC95 || __USE_UNIX98][!__GLIBC_USE (DEPRECATED_SCANF) && ! __LDBL_COMPAT && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][!(__GLIBC_USE (C23_STRTOL))][! __REDIRECT](__isoc99_swscanf): New. + [__USE_ISOC95 || __USE_UNIX98][!__GLIBC_USE (DEPRECATED_SCANF) && ! __LDBL_COMPAT && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][!(__GLIBC_USE (C23_STRTOL))][! __REDIRECT](fwscanf): New. + [__USE_ISOC95 || __USE_UNIX98][!__GLIBC_USE (DEPRECATED_SCANF) && ! __LDBL_COMPAT && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][!(__GLIBC_USE (C23_STRTOL))][! __REDIRECT](wscanf): New. + [__USE_ISOC95 || __USE_UNIX98][!__GLIBC_USE (DEPRECATED_SCANF) && ! __LDBL_COMPAT && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][!(__GLIBC_USE (C23_STRTOL))][! __REDIRECT](swscanf): New. + [__USE_ISOC95 || __USE_UNIX98][!__GLIBC_USE (DEPRECATED_SCANF) && ! __LDBL_COMPAT && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][!(__GLIBC_USE (C23_STRTOL))][__REDIRECT](__REDIRECT): New. + [__USE_ISOC95 || __USE_UNIX98][!__GLIBC_USE (DEPRECATED_SCANF) && ! __LDBL_COMPAT && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][!(__GLIBC_USE (C23_STRTOL))][__REDIRECT](__REDIRECT): New. + [__USE_ISOC95 || __USE_UNIX98][!__GLIBC_USE (DEPRECATED_SCANF) && ! __LDBL_COMPAT && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][!(__GLIBC_USE (C23_STRTOL))][__REDIRECT](__REDIRECT_NTH): New. + [__USE_ISOC95 || __USE_UNIX98][!__GLIBC_USE (DEPRECATED_SCANF) && ! __LDBL_COMPAT && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][__GLIBC_USE (C23_STRTOL)][! __REDIRECT](__isoc23_fwscanf): New. + [__USE_ISOC95 || __USE_UNIX98][!__GLIBC_USE (DEPRECATED_SCANF) && ! __LDBL_COMPAT && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][__GLIBC_USE (C23_STRTOL)][! __REDIRECT](__isoc23_wscanf): New. + [__USE_ISOC95 || __USE_UNIX98][!__GLIBC_USE (DEPRECATED_SCANF) && ! __LDBL_COMPAT && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][__GLIBC_USE (C23_STRTOL)][! __REDIRECT](__isoc23_swscanf): New. + [__USE_ISOC95 || __USE_UNIX98][!__GLIBC_USE (DEPRECATED_SCANF) && ! __LDBL_COMPAT && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][__GLIBC_USE (C23_STRTOL)][! __REDIRECT](fwscanf): New. + [__USE_ISOC95 || __USE_UNIX98][!__GLIBC_USE (DEPRECATED_SCANF) && ! __LDBL_COMPAT && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][__GLIBC_USE (C23_STRTOL)][! __REDIRECT](wscanf): New. + [__USE_ISOC95 || __USE_UNIX98][!__GLIBC_USE (DEPRECATED_SCANF) && ! __LDBL_COMPAT && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][__GLIBC_USE (C23_STRTOL)][! __REDIRECT](swscanf): New. + [__USE_ISOC95 || __USE_UNIX98][!__GLIBC_USE (DEPRECATED_SCANF) && ! __LDBL_COMPAT && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][__GLIBC_USE (C23_STRTOL)][__REDIRECT](__REDIRECT): New. + [__USE_ISOC95 || __USE_UNIX98][!__GLIBC_USE (DEPRECATED_SCANF) && ! __LDBL_COMPAT && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][__GLIBC_USE (C23_STRTOL)][__REDIRECT](__REDIRECT): New. + [__USE_ISOC95 || __USE_UNIX98][!__GLIBC_USE (DEPRECATED_SCANF) && ! __LDBL_COMPAT && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][__GLIBC_USE (C23_STRTOL)][__REDIRECT](__REDIRECT_NTH): New. + [__USE_ISOC99][!__GLIBC_USE (DEPRECATED_SCANF) && (! __LDBL_COMPAT || ! __REDIRECT) && ( __STRICT_ANSI__ || __USE_XOPEN2K) && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][!(__GLIBC_USE (C2X_STRTOL))][! __REDIRECT](__isoc99_vfwscanf): Remove. + [__USE_ISOC99][!__GLIBC_USE (DEPRECATED_SCANF) && (! __LDBL_COMPAT || ! __REDIRECT) && ( __STRICT_ANSI__ || __USE_XOPEN2K) && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][!(__GLIBC_USE (C2X_STRTOL))][! __REDIRECT](__isoc99_vwscanf): Remove. + [__USE_ISOC99][!__GLIBC_USE (DEPRECATED_SCANF) && (! __LDBL_COMPAT || ! __REDIRECT) && ( __STRICT_ANSI__ || __USE_XOPEN2K) && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][!(__GLIBC_USE (C2X_STRTOL))][! __REDIRECT](__isoc99_vswscanf): Remove. + [__USE_ISOC99][!__GLIBC_USE (DEPRECATED_SCANF) && (! __LDBL_COMPAT || ! __REDIRECT) && ( __STRICT_ANSI__ || __USE_XOPEN2K) && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][!(__GLIBC_USE (C2X_STRTOL))][! __REDIRECT](vfwscanf): Remove. + [__USE_ISOC99][!__GLIBC_USE (DEPRECATED_SCANF) && (! __LDBL_COMPAT || ! __REDIRECT) && ( __STRICT_ANSI__ || __USE_XOPEN2K) && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][!(__GLIBC_USE (C2X_STRTOL))][! __REDIRECT](vwscanf): Remove. + [__USE_ISOC99][!__GLIBC_USE (DEPRECATED_SCANF) && (! __LDBL_COMPAT || ! __REDIRECT) && ( __STRICT_ANSI__ || __USE_XOPEN2K) && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][!(__GLIBC_USE (C2X_STRTOL))][! __REDIRECT](vswscanf): Remove. + [__USE_ISOC99][!__GLIBC_USE (DEPRECATED_SCANF) && (! __LDBL_COMPAT || ! __REDIRECT) && ( __STRICT_ANSI__ || __USE_XOPEN2K) && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][!(__GLIBC_USE (C2X_STRTOL))][__REDIRECT](__REDIRECT): Remove. + [__USE_ISOC99][!__GLIBC_USE (DEPRECATED_SCANF) && (! __LDBL_COMPAT || ! __REDIRECT) && ( __STRICT_ANSI__ || __USE_XOPEN2K) && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][!(__GLIBC_USE (C2X_STRTOL))][__REDIRECT](__REDIRECT): Remove. + [__USE_ISOC99][!__GLIBC_USE (DEPRECATED_SCANF) && (! __LDBL_COMPAT || ! __REDIRECT) && ( __STRICT_ANSI__ || __USE_XOPEN2K) && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][!(__GLIBC_USE (C2X_STRTOL))][__REDIRECT](__REDIRECT_NTH): Remove. + [__USE_ISOC99][!__GLIBC_USE (DEPRECATED_SCANF) && (! __LDBL_COMPAT || ! __REDIRECT) && ( __STRICT_ANSI__ || __USE_XOPEN2K) && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][__GLIBC_USE (C2X_STRTOL)][! __REDIRECT](__isoc23_vfwscanf): Remove. + [__USE_ISOC99][!__GLIBC_USE (DEPRECATED_SCANF) && (! __LDBL_COMPAT || ! __REDIRECT) && ( __STRICT_ANSI__ || __USE_XOPEN2K) && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][__GLIBC_USE (C2X_STRTOL)][! __REDIRECT](__isoc23_vwscanf): Remove. + [__USE_ISOC99][!__GLIBC_USE (DEPRECATED_SCANF) && (! __LDBL_COMPAT || ! __REDIRECT) && ( __STRICT_ANSI__ || __USE_XOPEN2K) && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][__GLIBC_USE (C2X_STRTOL)][! __REDIRECT](__isoc23_vswscanf): Remove. + [__USE_ISOC99][!__GLIBC_USE (DEPRECATED_SCANF) && (! __LDBL_COMPAT || ! __REDIRECT) && ( __STRICT_ANSI__ || __USE_XOPEN2K) && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][__GLIBC_USE (C2X_STRTOL)][! __REDIRECT](vfwscanf): Remove. + [__USE_ISOC99][!__GLIBC_USE (DEPRECATED_SCANF) && (! __LDBL_COMPAT || ! __REDIRECT) && ( __STRICT_ANSI__ || __USE_XOPEN2K) && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][__GLIBC_USE (C2X_STRTOL)][! __REDIRECT](vwscanf): Remove. + [__USE_ISOC99][!__GLIBC_USE (DEPRECATED_SCANF) && (! __LDBL_COMPAT || ! __REDIRECT) && ( __STRICT_ANSI__ || __USE_XOPEN2K) && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][__GLIBC_USE (C2X_STRTOL)][! __REDIRECT](vswscanf): Remove. + [__USE_ISOC99][!__GLIBC_USE (DEPRECATED_SCANF) && (! __LDBL_COMPAT || ! __REDIRECT) && ( __STRICT_ANSI__ || __USE_XOPEN2K) && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][__GLIBC_USE (C2X_STRTOL)][__REDIRECT](__REDIRECT): Remove. + [__USE_ISOC99][!__GLIBC_USE (DEPRECATED_SCANF) && (! __LDBL_COMPAT || ! __REDIRECT) && ( __STRICT_ANSI__ || __USE_XOPEN2K) && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][__GLIBC_USE (C2X_STRTOL)][__REDIRECT](__REDIRECT): Remove. + [__USE_ISOC99][!__GLIBC_USE (DEPRECATED_SCANF) && (! __LDBL_COMPAT || ! __REDIRECT) && ( __STRICT_ANSI__ || __USE_XOPEN2K) && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][__GLIBC_USE (C2X_STRTOL)][__REDIRECT](__REDIRECT_NTH): Remove. + [__USE_ISOC99][!__GLIBC_USE (DEPRECATED_SCANF) && (! __LDBL_COMPAT || ! __REDIRECT) && ( __STRICT_ANSI__ || __USE_XOPEN2K) && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][!(__GLIBC_USE (C23_STRTOL))][! __REDIRECT](__isoc99_vfwscanf): New. + [__USE_ISOC99][!__GLIBC_USE (DEPRECATED_SCANF) && (! __LDBL_COMPAT || ! __REDIRECT) && ( __STRICT_ANSI__ || __USE_XOPEN2K) && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][!(__GLIBC_USE (C23_STRTOL))][! __REDIRECT](__isoc99_vwscanf): New. + [__USE_ISOC99][!__GLIBC_USE (DEPRECATED_SCANF) && (! __LDBL_COMPAT || ! __REDIRECT) && ( __STRICT_ANSI__ || __USE_XOPEN2K) && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][!(__GLIBC_USE (C23_STRTOL))][! __REDIRECT](__isoc99_vswscanf): New. + [__USE_ISOC99][!__GLIBC_USE (DEPRECATED_SCANF) && (! __LDBL_COMPAT || ! __REDIRECT) && ( __STRICT_ANSI__ || __USE_XOPEN2K) && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][!(__GLIBC_USE (C23_STRTOL))][! __REDIRECT](vfwscanf): New. + [__USE_ISOC99][!__GLIBC_USE (DEPRECATED_SCANF) && (! __LDBL_COMPAT || ! __REDIRECT) && ( __STRICT_ANSI__ || __USE_XOPEN2K) && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][!(__GLIBC_USE (C23_STRTOL))][! __REDIRECT](vwscanf): New. + [__USE_ISOC99][!__GLIBC_USE (DEPRECATED_SCANF) && (! __LDBL_COMPAT || ! __REDIRECT) && ( __STRICT_ANSI__ || __USE_XOPEN2K) && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][!(__GLIBC_USE (C23_STRTOL))][! __REDIRECT](vswscanf): New. + [__USE_ISOC99][!__GLIBC_USE (DEPRECATED_SCANF) && (! __LDBL_COMPAT || ! __REDIRECT) && ( __STRICT_ANSI__ || __USE_XOPEN2K) && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][!(__GLIBC_USE (C23_STRTOL))][__REDIRECT](__REDIRECT): New. + [__USE_ISOC99][!__GLIBC_USE (DEPRECATED_SCANF) && (! __LDBL_COMPAT || ! __REDIRECT) && ( __STRICT_ANSI__ || __USE_XOPEN2K) && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][!(__GLIBC_USE (C23_STRTOL))][__REDIRECT](__REDIRECT): New. + [__USE_ISOC99][!__GLIBC_USE (DEPRECATED_SCANF) && (! __LDBL_COMPAT || ! __REDIRECT) && ( __STRICT_ANSI__ || __USE_XOPEN2K) && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][!(__GLIBC_USE (C23_STRTOL))][__REDIRECT](__REDIRECT_NTH): New. + [__USE_ISOC99][!__GLIBC_USE (DEPRECATED_SCANF) && (! __LDBL_COMPAT || ! __REDIRECT) && ( __STRICT_ANSI__ || __USE_XOPEN2K) && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][__GLIBC_USE (C23_STRTOL)][! __REDIRECT](__isoc23_vfwscanf): New. + [__USE_ISOC99][!__GLIBC_USE (DEPRECATED_SCANF) && (! __LDBL_COMPAT || ! __REDIRECT) && ( __STRICT_ANSI__ || __USE_XOPEN2K) && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][__GLIBC_USE (C23_STRTOL)][! __REDIRECT](__isoc23_vwscanf): New. + [__USE_ISOC99][!__GLIBC_USE (DEPRECATED_SCANF) && (! __LDBL_COMPAT || ! __REDIRECT) && ( __STRICT_ANSI__ || __USE_XOPEN2K) && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][__GLIBC_USE (C23_STRTOL)][! __REDIRECT](__isoc23_vswscanf): New. + [__USE_ISOC99][!__GLIBC_USE (DEPRECATED_SCANF) && (! __LDBL_COMPAT || ! __REDIRECT) && ( __STRICT_ANSI__ || __USE_XOPEN2K) && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][__GLIBC_USE (C23_STRTOL)][! __REDIRECT](vfwscanf): New. + [__USE_ISOC99][!__GLIBC_USE (DEPRECATED_SCANF) && (! __LDBL_COMPAT || ! __REDIRECT) && ( __STRICT_ANSI__ || __USE_XOPEN2K) && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][__GLIBC_USE (C23_STRTOL)][! __REDIRECT](vwscanf): New. + [__USE_ISOC99][!__GLIBC_USE (DEPRECATED_SCANF) && (! __LDBL_COMPAT || ! __REDIRECT) && ( __STRICT_ANSI__ || __USE_XOPEN2K) && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][__GLIBC_USE (C23_STRTOL)][! __REDIRECT](vswscanf): New. + [__USE_ISOC99][!__GLIBC_USE (DEPRECATED_SCANF) && (! __LDBL_COMPAT || ! __REDIRECT) && ( __STRICT_ANSI__ || __USE_XOPEN2K) && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][__GLIBC_USE (C23_STRTOL)][__REDIRECT](__REDIRECT): New. + [__USE_ISOC99][!__GLIBC_USE (DEPRECATED_SCANF) && (! __LDBL_COMPAT || ! __REDIRECT) && ( __STRICT_ANSI__ || __USE_XOPEN2K) && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][__GLIBC_USE (C23_STRTOL)][__REDIRECT](__REDIRECT): New. + [__USE_ISOC99][!__GLIBC_USE (DEPRECATED_SCANF) && (! __LDBL_COMPAT || ! __REDIRECT) && ( __STRICT_ANSI__ || __USE_XOPEN2K) && __LDOUBLE_REDIRECTS_TO_FLOAT128_ABI == 0][__GLIBC_USE (C23_STRTOL)][__REDIRECT](__REDIRECT_NTH): New. + [__GLIBC_USE (C23_STRTOL)][! __REDIRECT][__USE_GNU](wcstoq): New. + [__GLIBC_USE (C23_STRTOL)][! __REDIRECT][__USE_GNU](wcstouq): New. + [__GLIBC_USE (C23_STRTOL)][! __REDIRECT](__isoc23_wcstol): New. + [__GLIBC_USE (C23_STRTOL)][! __REDIRECT](__isoc23_wcstoul): New. + [__GLIBC_USE (C23_STRTOL)][! __REDIRECT](__isoc23_wcstoll): New. + [__GLIBC_USE (C23_STRTOL)][! __REDIRECT](__isoc23_wcstoull): New. + [__GLIBC_USE (C23_STRTOL)][! __REDIRECT](wcstol): New. + [__GLIBC_USE (C23_STRTOL)][! __REDIRECT](wcstoul): New. + [__GLIBC_USE (C23_STRTOL)][! __REDIRECT](wcstoll): New. + [__GLIBC_USE (C23_STRTOL)][! __REDIRECT](wcstoull): New. + [__GLIBC_USE (C23_STRTOL)][__REDIRECT][__USE_GNU](__REDIRECT_NTH): New. + [__GLIBC_USE (C23_STRTOL)][__REDIRECT][__USE_GNU](__REDIRECT_NTH): New. + [__GLIBC_USE (C23_STRTOL)][__REDIRECT](__REDIRECT_NTH): New. + [__GLIBC_USE (C23_STRTOL)][__REDIRECT](__REDIRECT_NTH): New. + [__GLIBC_USE (C23_STRTOL)][__REDIRECT](__REDIRECT_NTH): New. + [__GLIBC_USE (C23_STRTOL)][__REDIRECT](__REDIRECT_NTH): New. + [__GLIBC_USE (IEC_60559_TYPES_EXT) && __GLIBC_USE (ISOC23)][__HAVE_FLOAT128](wcstof128): New. + [__GLIBC_USE (IEC_60559_TYPES_EXT) && __GLIBC_USE (ISOC23)][__HAVE_FLOAT128X](wcstof128x): New. + [__GLIBC_USE (IEC_60559_TYPES_EXT) && __GLIBC_USE (ISOC23)][__HAVE_FLOAT16](wcstof16): New. + [__GLIBC_USE (IEC_60559_TYPES_EXT) && __GLIBC_USE (ISOC23)][__HAVE_FLOAT32](wcstof32): New. + [__GLIBC_USE (IEC_60559_TYPES_EXT) && __GLIBC_USE (ISOC23)][__HAVE_FLOAT32X](wcstof32x): New. + [__GLIBC_USE (IEC_60559_TYPES_EXT) && __GLIBC_USE (ISOC23)][__HAVE_FLOAT64](wcstof64): New. + [__GLIBC_USE (IEC_60559_TYPES_EXT) && __GLIBC_USE (ISOC23)][__HAVE_FLOAT64X](wcstof64x): New. + * wcsmbs/wcstol_l.c: Modified. + (__GLIBC_USE_C2X_STRTOL): Remove. + (__GLIBC_USE_C23_STRTOL): New. + * wcsmbs/wcstoll_l.c: Modified. + (__GLIBC_USE_C2X_STRTOL): Remove. + (__GLIBC_USE_C23_STRTOL): New. + * wcsmbs/wcstoul_l.c: Modified. + (__GLIBC_USE_C2X_STRTOL): Remove. + (__GLIBC_USE_C23_STRTOL): New. + * wcsmbs/wcstoull_l.c: Modified. + (__GLIBC_USE_C2X_STRTOL): Remove. + (__GLIBC_USE_C23_STRTOL): New. + +2024-02-01 Florian Weimer <fweimer@redhat.com> + + COMMIT: 7c8df0b9441e34928f2d7d70531e3d55e016c32e + elf: Remove _dl_sysdep_open_object hook function + + * elf/dl-load.c: Modified. + (dl-sysdep-open.h): Remove include. + (_dl_map_object): Modified function. + * elf/dl-sysdep-open.h: Delete file. + +2024-01-31 Fangrui Song <maskray@google.com> + + COMMIT: 0d70accc06a9cbb9b13004116f5fa8b1f41a7150 + build-many-glibcs: relax version check to allow non-digit characters + + * scripts/build-many-glibcs.py: Modified. + +2024-01-31 Jakub Jelinek <jakub@redhat.com> + + COMMIT: da89496337b97e6a2aaf1e81d55cf998f6db1070 + Use gcc __builtin_stdc_* builtins in stdbit.h if possible + + * NEWS: Modified. + * manual/stdbit.texi: Modified. + * stdlib/Makefile: Modified. + * stdlib/stdbit.h: Modified. + (stdc_leading_zeros): Remove. + (stdc_leading_ones): Remove. + (stdc_trailing_zeros): Remove. + (stdc_trailing_ones): Remove. + (stdc_first_leading_zero): Remove. + (stdc_first_leading_one): Remove. + (stdc_first_trailing_zero): Remove. + (stdc_first_trailing_one): Remove. + (stdc_count_zeros): Remove. + (stdc_count_ones): Remove. + (stdc_has_single_bit): Remove. + (stdc_bit_width): Remove. + (stdc_bit_floor): Remove. + (stdc_bit_ceil): Remove. + [!(__glibc_has_builtin (__builtin_stdc_bit_ceil))](stdc_bit_ceil): New. + [!(__glibc_has_builtin (__builtin_stdc_bit_floor))](stdc_bit_floor): New. + [!(__glibc_has_builtin (__builtin_stdc_bit_width))](stdc_bit_width): New. + [!(__glibc_has_builtin (__builtin_stdc_count_ones))](stdc_count_ones): New. + [!(__glibc_has_builtin (__builtin_stdc_count_zeros))](stdc_count_zeros): New. + [!(__glibc_has_builtin (__builtin_stdc_first_leading_one))](stdc_first_leading_one): New. + [!(__glibc_has_builtin (__builtin_stdc_first_leading_zero))](stdc_first_leading_zero): New. + [!(__glibc_has_builtin (__builtin_stdc_first_trailing_one))](stdc_first_trailing_one): New. + [!(__glibc_has_builtin (__builtin_stdc_first_trailing_zero))](stdc_first_trailing_zero): New. + [!(__glibc_has_builtin (__builtin_stdc_has_single_bit))](stdc_has_single_bit): New. + [!(__glibc_has_builtin (__builtin_stdc_leading_ones))](stdc_leading_ones): New. + [!(__glibc_has_builtin (__builtin_stdc_leading_zeros))](stdc_leading_zeros): New. + [!(__glibc_has_builtin (__builtin_stdc_trailing_ones))](stdc_trailing_ones): New. + [!(__glibc_has_builtin (__builtin_stdc_trailing_zeros))](stdc_trailing_zeros): New. + [__glibc_has_builtin (__builtin_stdc_bit_ceil)](stdc_bit_ceil): New. + [__glibc_has_builtin (__builtin_stdc_bit_floor)](stdc_bit_floor): New. + [__glibc_has_builtin (__builtin_stdc_bit_width)](stdc_bit_width): New. + [__glibc_has_builtin (__builtin_stdc_count_ones)](stdc_count_ones): New. + [__glibc_has_builtin (__builtin_stdc_count_zeros)](stdc_count_zeros): New. + [__glibc_has_builtin (__builtin_stdc_first_leading_one)](stdc_first_leading_one): New. + [__glibc_has_builtin (__builtin_stdc_first_leading_zero)](stdc_first_leading_zero): New. + [__glibc_has_builtin (__builtin_stdc_first_trailing_one)](stdc_first_trailing_one): New. + [__glibc_has_builtin (__builtin_stdc_first_trailing_zero)](stdc_first_trailing_zero): New. + [__glibc_has_builtin (__builtin_stdc_has_single_bit)](stdc_has_single_bit): New. + [__glibc_has_builtin (__builtin_stdc_leading_ones)](stdc_leading_ones): New. + [__glibc_has_builtin (__builtin_stdc_leading_zeros)](stdc_leading_zeros): New. + [__glibc_has_builtin (__builtin_stdc_trailing_ones)](stdc_trailing_ones): New. + [__glibc_has_builtin (__builtin_stdc_trailing_zeros)](stdc_trailing_zeros): New. + * stdlib/tst-stdbit-builtins.c: New file. + +2024-01-31 Andreas K. Hüttel <dilfridge@gentoo.org> + + COMMIT: 903cd866060555c77abbf70d0d85994ec5a18193 + Open master branch for glibc 2.40 development + + * NEWS: Modified. + * version.h: Modified. + (RELEASE): Modified. + (VERSION): Modified. + diff --git a/INSTALL b/INSTALL index 4bd3d53676..24e3c8d25b 100644 --- a/INSTALL +++ b/INSTALL @@ -487,7 +487,7 @@ build the GNU C Library: GCC 6.2 or higher is required. In general it is recommended to use the newest version of the compiler that is known to work for building the GNU C Library, as newer compilers usually produce - better code. As of release time, GCC 13.2 is the newest compiler + better code. As of release time, GCC 14.1 is the newest compiler verified to work to build the GNU C Library. For PowerPC 64-bits little-endian (powerpc64le), a GCC version with @@ -542,7 +542,7 @@ build the GNU C Library: need this version of the 'texinfo' package. Earlier versions do not understand all the tags used in the document, and the installation mechanism for the info files is not present or works - differently. As of release time, 'texinfo' 7.0.3 is the newest + differently. As of release time, 'texinfo' 7.1 is the newest verified to work to build the GNU C Library. * GNU 'awk' 3.1.2, or higher @@ -550,7 +550,7 @@ build the GNU C Library: 'awk' is used in several places to generate files. Some 'gawk' extensions are used, including the 'asorti' function, which was introduced in version 3.1.2 of 'gawk'. As of release time, 'gawk' - version 5.2.2 is the newest verified to work to build the GNU C + version 5.3.0 is the newest verified to work to build the GNU C Library. * GNU 'bison' 2.7 or later @@ -563,7 +563,7 @@ build the GNU C Library: Perl is not required, but if present it is used in some tests and the 'mtrace' program, to build the GNU C Library manual. As of - release time 'perl' version 5.38.2 is the newest verified to work + release time 'perl' version 5.40.0 is the newest verified to work to build the GNU C Library. * GNU 'sed' 3.02 or newer @@ -575,7 +575,7 @@ build the GNU C Library: * Python 3.4 or later Python is required to build the GNU C Library. As of release time, - Python 3.11 is the newest verified to work for building and testing + Python 3.12 is the newest verified to work for building and testing the GNU C Library. * PExpect 4.0 @@ -583,7 +583,7 @@ build the GNU C Library: The pretty printer tests drive GDB through test programs and compare its output to the printers'. PExpect is used to capture the output of GDB, and should be compatible with the Python version - in your system. As of release time PExpect 4.8.0 is the newest + in your system. As of release time PExpect 4.9.0 is the newest verified to work to test the pretty printers. * The Python 'abnf' module. @@ -599,7 +599,7 @@ build the GNU C Library: use the pretty printers. Notice that your system having Python available doesn't imply that GDB supports it, nor that your system's Python and GDB's have the same version. As of release - time GNU 'debugger' 13.2 is the newest verified to work to test the + time GNU 'debugger' 14.2 is the newest verified to work to test the pretty printers. Unless Python, PExpect and GDB with Python support are present, the @@ -615,7 +615,7 @@ and if you change any of the message translation files you will need * GNU 'gettext' 0.10.36 or later - As of release time, GNU 'gettext' version 0.21.1 is the newest + As of release time, GNU 'gettext' version 0.22.4 is the newest version verified to work to build the GNU C Library. You may also need these packages if you upgrade your source tree using @@ -661,7 +661,7 @@ components of the GNU C Library installation to be in '/lib' and some in Library with '--prefix=/usr'. If you set some other prefix or allow it to default to '/usr/local', then all the components are installed there. - As of release time, Linux version 6.1.5 is the newest stable version + As of release time, Linux version 6.6 is the newest stable version verified to work to build the GNU C Library. Reporting Bugs diff --git a/Makeconfig b/Makeconfig index 2d4343b604..a87ff7b1d3 100644 --- a/Makeconfig +++ b/Makeconfig @@ -888,7 +888,7 @@ host-test-program-cmd = $(host-built-program-cmd) endif # Extra flags to pass to GCC. -+gccwarn := -Wall -Wwrite-strings -Wundef ++gccwarn := -Wall -Wwrite-strings -Wundef $(cc-option-wimplicit-fallthrough) ifeq ($(enable-werror),yes) +gccwarn += -Werror endif diff --git a/NEWS b/NEWS index f626896aa0..d488874aba 100644 --- a/NEWS +++ b/NEWS @@ -5,6 +5,47 @@ See the end for copying conditions. Please send GNU C library bug reports via <https://sourceware.org/bugzilla/> using `glibc' in the "product" field. +Version 2.41 + +Major new features: + +* In /etc/resolv.conf and the RES_OPTIONS, option flags can now be + prefixed with “-†to clear previously set flags. For example, if + /etc/resolv.conf contains “options no-aaaaâ€, a process running with + the RES_OPTIONS=-no-aaaa environment variable performs AAAA DNS + queries when the glibc DNS stub resolver is used. + +* The DNS stub resolver now supports the strict-error option. If + activated, getaddrinfo for the AF_UNSPEC address family (with dual + A/AAAA DNS lookups) attemps to obtain an A/AAAA response pair from + another DNS server if one of the responses indicates failure. Without + the strict-error option, getaddrinfo returns the A record data it has + obtained even if the AAAA query failed. The new strict error mode is + incompatible with some DNS environments which do not follow the RFCs, + which is why this mode is not enabled by default. A future version + of the library may turn it on by default, however. + +Deprecated and removed features, and other changes affecting compatibility: + + [Add deprecations, removals and changes affecting compatibility here] + +Changes to build and runtime requirements: + + [Add changes to build and runtime requirements here] + +Security related changes: + +The following CVEs were fixed in this release, details of which can be +found in the advisories directory of the release tarball: + + [The release manager will add the list generated by + scripts/process-advisories.sh just before the release.] + +The following bugs were resolved with this release: + + [The release manager will add the list generated by + scripts/list-fixed-bugs.py just before the release.] + Version 2.40 Major new features: @@ -30,13 +71,23 @@ Major new features: - Logarithmic functions: log2p1, log10p1, logp1. -* A new tunable, glibc.rtld.enable_secure, used to run a program +* A new tunable, glibc.rtld.enable_secure, can be used to run a program as if it were a setuid process. This is currently a testing tool to allow more extensive verification tests for AT_SECURE programs and not meant to be a security feature. -* On Linux, update epoll header to include epoll ioctl definitions and - related structure added in Linux kernel 6.9. +* On Linux, the epoll header was updated to include epoll ioctl definitions + and the related structure added in Linux kernel 6.9. + +* The fortify functionality has been significantly enhanced for building + programs with clang against the GNU C Library. + +* Many functions have been added to the vector library for aarch64: + acosh, asinh, atanh, cbrt, cosh, erf, erfc, hypot, pow, sinh, tanh + +* On x86, memset can now use non-temporal stores to improve the performance + of large writes. This behaviour is controlled by a new tunable + x86_memset_non_temporal_threshold. Deprecated and removed features, and other changes affecting compatibility: @@ -49,22 +100,169 @@ Deprecated and removed features, and other changes affecting compatibility: <utmpx.h> (except for login_tty) due to locking and session management problems. -Changes to build and runtime requirements: - - [Add changes to build and runtime requirements here] +* __rseq_size now denotes the size of the active rseq area (20 bytes + initially), not the size of struct rseq (32 bytes initially). Security related changes: The following CVEs were fixed in this release, details of which can be found in the advisories directory of the release tarball: - [The release manager will add the list generated by - scripts/process-advisories.sh just before the release.] + GLIBC-SA-2024-0004: + ISO-2022-CN-EXT: fix out-of-bound writes when writing escape + sequence (CVE-2024-2961) + + GLIBC-SA-2024-0005: + nscd: Stack-based buffer overflow in netgroup cache (CVE-2024-33599) + + GLIBC-SA-2024-0006: + nscd: Null pointer crash after notfound response (CVE-2024-33600) + + GLIBC-SA-2024-0007: + nscd: netgroup cache may terminate daemon on memory allocation + failure (CVE-2024-33601) + + GLIBC-SA-2024-0008: + nscd: netgroup cache assumes NSS callback uses in-buffer strings + (CVE-2024-33602) The following bugs are resolved with this release: - [The release manager will add the list generated by - scripts/list-fixed-bugs.py just before the release.] + [19622] network: Support aliasing with struct sockaddr + [21271] localedata: cv_RU: update translations + [23774] localedata: lv_LV collates Y/y incorrectly + [23865] string: wcsstr is quadratic-time + [25119] localedata: Change Czech weekday names to lowercase + [27777] stdio: fclose does a linear search, takes ages when many FILE* + are opened + [29770] libc: prctl does not match manual page ABI on powerpc64le- + linux-gnu + [29845] localedata: Update hr_HR locale currency to € + [30701] time: getutxent misbehaves on 32-bit x86 when _TIME_BITS=64 + [31316] build: Fails test misc/tst-dirname "Didn't expect signal from + child: got `Illegal instruction'" on non SSE CPUs + [31317] dynamic-link: [RISCV] static PIE crashes during self + relocation + [31325] libc: mips: clone3 is wrong for o32 + [31335] math: Compile glibc with -march=x86-64-v3 should disable FMA4 + multi-arch version + [31339] libc: arm32 loader crash after cleanup in 2.36 + [31340] manual: A bad sentence in section 22.3.5 (resource.texi) + [31357] dynamic-link: $(objpfx)tst-rtld-list-diagnostics.out rule + doesn't work with test wrapper + [31370] localedata: wcwidth() does not treat + DEFAULT_IGNORABLE_CODE_POINTs as zero-width + [31371] dynamic-link: x86-64: APX and Tile registers aren't preserved + in ld.so trampoline + [31372] dynamic-link: _dl_tlsdesc_dynamic doesn't preserve all caller- + saved registers + [31383] libc: _FORTIFY_SOURCE=3 and __fortified_attr_access vs size of + 0 and zero size types + [31385] build: sort-makefile-lines.py doesn't check variable with _ + nor with "^# variable" + [31402] libc: clone (NULL, NULL, ...) clobbers %r7 register on + s390{,x} + [31405] libc: Improve dl_iterate_phdr using _dl_find_object + [31411] localedata: Add Latgalian locale + [31412] build: GCC 6 failed to build i386 glibc on Fedora 39 + [31429] build: Glibc failed to build with -march=x86-64-v3 + [31468] libc: sigisemptyset returns true when the set contains signals + larger than 34 + [31476] network: Automatic activation of single-request options break + resolv.conf reloading + [31479] libc: Missing #include <sys/rseq.h> in sched_getcpu.c may + result in a loss of rseq acceleration + [31501] dynamic-link: _dl_tlsdesc_dynamic_xsavec may clobber %rbx + [31518] manual: documentation: FLT_MAX_10_EXP questionable text, evtl. + wrong, + [31530] localedata: Locale file for Moksha - mdf_RU + [31553] malloc: elf/tst-decorate-maps fails on ppc64el + [31596] libc: On the llvm-arm32 platform, dlopen("not_exist.so", -1) + triggers segmentation fault + [31600] math: math: x86 ceill traps when FE_INEXACT is enabled + [31601] math: math: x86 floor traps when FE_INEXACT is enabled + [31603] math: math: x86 trunc traps when FE_INEXACT is enabled + [31612] libc: arc4random fails to fallback to /dev/urandom if + getrandom is not present + [31629] build: powerpc64: Configuring with "--with-cpu=power10" and + 'CFLAGS=-O2 -mcpu=power9' fails to build glibc + [31640] dynamic-link: POWER10 ld.so crashes in + elf_machine_load_address with GCC 14 + [31661] libc: NPROCESSORS_CONF and NPROCESSORS_ONLN not available in + getconf + [31676] dynamic-link: Configuring with CC="gcc -march=x86-64-v3" + --with-rtld-early-cflags=-march=x86-64 results in linker failure + [31677] nscd: nscd: netgroup cache: invalid memcpy under low + memory/storage conditions + [31678] nscd: nscd: Null pointer dereferences after failed netgroup + cache insertion + [31679] nscd: nscd: netgroup cache may terminate daemon on memory + allocation failure + [31680] nscd: nscd: netgroup cache assumes NSS callback uses in-buffer + strings + [31682] math: [PowerPC] Floating point exception error for math test + test-ceil-except-2 test-floor-except-2 test-trunc-except-2 + [31686] dynamic-link: Stack-based buffer overflow in + parse_tunables_string + [31695] libc: pidfd_spawn/pidfd_spawnp leak an fd if clone3 succeeds + but execve fails + [31719] dynamic-link: --enable-hardcoded-path-in-tests doesn't work + with -Wl,--enable-new-dtags + [31730] libc: backtrace_symbols_fd prints different strings than + backtrace_symbols returns + [31753] build: FAIL: link-static-libc with GCC 6/7/8 + [31755] libc: procutils_read_file doesn't start with a leading + underscore + [31756] libc: write_profiling is only in libc.a + [31757] build: Should XXXf128_do_not_use functions be excluded? + [31759] math: Extra nearbyint symbols in libm.a + [31760] math: Missing math functions + [31764] build: _res_opcodes should be a compat symbol only + [31765] dynamic-link: _dl_mcount_wrapper is exported without prototype + [31766] stdio: _IO_stderr_ _IO_stdin_ _IO_stdout should be compat + symbols + [31768] string: Extra stpncpy symbol in libc.a + [31770] libc: clone3 is in libc.a + [31774] libc: Missing __isnanf128 in libc.a + [31775] math: Missing exp10 exp10f32x exp10f64 fmod fmodf fmodf32 + fmodf32x fmodf64 in libm.a + [31777] string: Extra memchr strlen symbols in libc.a + [31781] math: Missing math functions in libm.a + [31782] build: Test build failure with recent GCC trunk (x86/tst-cpu- + features-supports.c:69:3: error: parameter to builtin not valid: + avx5124fmaps) + [31785] string: loongarch: Extra strnlen symbols in libc.a + [31786] string: powerpc: Extra strchrnul and strncasecmp_l symbols in + libc.a + [31787] math: powerpc: Extra llrintf, llrintf, llrintf32, and + llrintf32 symbols in libc.a + [31788] libc: microblaze: Extra cacheflush symbol in libc.a + [31789] libc: powerpc: Extra versionsort symbol in libc.a + [31790] libc: s390: Extra getutent32, getutent32_r, getutid32, + getutid32_r, getutline32, getutline32_r, getutmp32, getutmpx32, + getutxent32, getutxid32, getutxline32, pututline32, pututxline32, + updwtmp32, updwtmpx32 in libc.a + [31797] build: g++ -static requirement should be able to opt-out + [31798] libc: pidfd_getpid.c is miscompiled by GCC 6.4 + [31802] time: difftime is pure not const + [31808] time: The supported time_t range is not documented. + [31840] stdio: Memory leak in _IO_new_fdopen (fdopen) on seek failure + [31867] build: "CPU ISA level is lower than required" on SSE2-free + CPUs + [31876] time: "Date and time" documentation fixes for POSIX.1-2024 etc + [31883] build: ISA level support configure check relies on bashism / + is otherwise broken for arithmetic + [31892] build: Always install mtrace. + [31917] libc: clang mq_open fortify wrapper does not handle 4 argument + correctly + [31927] libc: clang open fortify wrapper does not handle argument + correctly + [31931] time: tzset may fault on very short TZ string + [31934] string: wcsncmp crash on s390x on vlbb instruction + [31963] stdio: Crash in _IO_link_in within __gcov_exit + [31965] dynamic-link: rseq extension mechanism does not work as + intended + [31980] build: elf/tst-tunables-enable_secure-env fails on ppc Version 2.39 diff --git a/Rules b/Rules index 9010c5d5b2..27846abf82 100644 --- a/Rules +++ b/Rules @@ -145,7 +145,11 @@ others: $(py-const) ifeq ($(run-built-tests),no) tests: $(addprefix $(objpfx),$(filter-out $(tests-unsupported), \ $(tests) $(tests-internal) \ - $(tests-container)) \ + $(tests-container) \ + $(tests-mcheck:%=%-mcheck) \ + $(tests-malloc-check:%=%-malloc-check) \ + $(tests-malloc-hugetlb1:%=%-malloc-hugetlb1) \ + $(tests-malloc-hugetlb2:%=%-malloc-hugetlb2)) \ $(test-srcs)) $(tests-special) \ $(tests-printers-programs) xtests: tests $(xtests-special) diff --git a/SHARED-FILES b/SHARED-FILES index cb0356ce32..d70c7adecf 100644 --- a/SHARED-FILES +++ b/SHARED-FILES @@ -180,9 +180,8 @@ unicode: # The following files are shared with the upstream tzcode project and must be # updated regularly to stay in sync with the upstream releases. # -# Currently synced to TZDB 2024a, announced and distributed here: -# https://mm.icann.org/pipermail/tz-announce/2024-February/000081.html -# https://data.iana.org/time-zones/releases/tzdb-2024a.tar.lz +# Currently synced to TZDB 2024b, announced and distributed here: +# https://github.com/eggert/tz/releases/tag/2024b tzcode: timezone/private.h timezone/tzfile.h diff --git a/assert/assert.h b/assert/assert.h index 266a41df06..14d3be9cac 100644 --- a/assert/assert.h +++ b/assert/assert.h @@ -66,18 +66,18 @@ __BEGIN_DECLS /* This prints an "Assertion failed" message and aborts. */ extern void __assert_fail (const char *__assertion, const char *__file, unsigned int __line, const char *__function) - __THROW __attribute__ ((__noreturn__)); + __THROW __attribute__ ((__noreturn__)) __COLD; /* Likewise, but prints the error text for ERRNUM. */ extern void __assert_perror_fail (int __errnum, const char *__file, unsigned int __line, const char *__function) - __THROW __attribute__ ((__noreturn__)); + __THROW __attribute__ ((__noreturn__)) __COLD; /* The following is not at all used here but needed for standard compliance. */ extern void __assert (const char *__assertion, const char *__file, int __line) - __THROW __attribute__ ((__noreturn__)); + __THROW __attribute__ ((__noreturn__)) __COLD; __END_DECLS diff --git a/benchtests/Makefile b/benchtests/Makefile index 382fb7bae1..d228e9e68a 100644 --- a/benchtests/Makefile +++ b/benchtests/Makefile @@ -153,6 +153,7 @@ string-benchset := \ memrchr \ memset \ memset-large \ + memset-random \ memset-zero \ memset-zero-large \ rawmemchr \ diff --git a/benchtests/bench-memset-random.c b/benchtests/bench-memset-random.c new file mode 100644 index 0000000000..9c1eacbf81 --- /dev/null +++ b/benchtests/bench-memset-random.c @@ -0,0 +1,185 @@ +/* Measure memset performance. + Copyright (C) 2024 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 + <https://www.gnu.org/licenses/>. */ + +#define MIN_SIZE 32768 +#define MAX_SIZE (1024*1024) +#define NUM_TESTS 16384 + +#define MIN_PAGE_SIZE (MAX_SIZE + getpagesize()) +#define TEST_MAIN +#define TEST_NAME "memset" +#include "bench-string.h" +#include <assert.h> +#include "json-lib.h" + +typedef void *(*proto_t) (void *, int, size_t); + +IMPL (MEMSET, 1) + +typedef struct { uint32_t offset : 20, len : 12; } memset_test_t; +static memset_test_t test_arr[NUM_TESTS]; + +typedef struct { uint16_t size; uint16_t freq; } freq_data_t; +typedef struct { uint8_t align; uint16_t freq; } align_data_t; + +#define SIZE_NUM 65536 +#define SIZE_MASK (SIZE_NUM-1) +static uint8_t len_arr[SIZE_NUM]; + +/* Frequency data for memset sizes up to 4096 bytes based on SPEC2017. */ +static freq_data_t memset_len_freq[] = +{ +{40,28817}, {32,15336}, { 16,3823}, {296,3545}, { 24,3454}, { 8,1412}, +{292,1202}, { 48, 927}, { 12, 613}, { 11, 539}, {284, 493}, {108, 414}, +{ 88, 380}, { 20, 295}, {312, 271}, { 72, 233}, { 2, 200}, { 4, 192}, +{ 15, 180}, { 14, 174}, { 13, 160}, { 56, 151}, { 36, 144}, { 64, 140}, +{4095,133}, { 10, 130}, { 9, 124}, { 3, 124}, { 28, 120}, { 0, 118}, +{288, 110}, {1152, 96}, {104, 90}, { 1, 86}, {832, 76}, {248, 74}, +{1024, 69}, {120, 64}, {512, 63}, {384, 60}, { 6, 59}, { 80, 54}, +{ 17, 50}, { 7, 49}, {520, 47}, {2048, 39}, {256, 37}, {864, 33}, +{1440, 28}, { 22, 27}, {2056, 24}, {260, 23}, { 68, 23}, { 5, 22}, +{ 18, 21}, {200, 18}, {2120, 18}, { 60, 17}, { 52, 16}, {336, 15}, +{ 44, 13}, {192, 13}, {160, 12}, {2064, 12}, {128, 12}, { 76, 11}, +{164, 11}, {152, 10}, {136, 9}, {488, 7}, { 96, 6}, {560, 6}, +{1016, 6}, {112, 5}, {232, 5}, {168, 5}, {952, 5}, {184, 5}, +{144, 4}, {252, 4}, { 84, 3}, {960, 3}, {3808, 3}, {244, 3}, +{280, 3}, {224, 3}, {156, 3}, {1088, 3}, {440, 3}, {216, 2}, +{304, 2}, { 23, 2}, { 25, 2}, { 26, 2}, {264, 2}, {328, 2}, +{1096, 2}, {240, 2}, {1104, 2}, {704, 2}, {1664, 2}, {360, 2}, +{808, 1}, {544, 1}, {236, 1}, {720, 1}, {368, 1}, {424, 1}, +{640, 1}, {1112, 1}, {552, 1}, {272, 1}, {776, 1}, {376, 1}, +{ 92, 1}, {536, 1}, {824, 1}, {496, 1}, {760, 1}, {792, 1}, +{504, 1}, {344, 1}, {1816, 1}, {880, 1}, {176, 1}, {320, 1}, +{352, 1}, {2008, 1}, {208, 1}, {408, 1}, {228, 1}, {2072, 1}, +{568, 1}, {220, 1}, {616, 1}, {600, 1}, {392, 1}, {696, 1}, +{2144, 1}, {1280, 1}, {2136, 1}, {632, 1}, {584, 1}, {456, 1}, +{472, 1}, {3440, 1}, {2088, 1}, {680, 1}, {2928, 1}, {212, 1}, +{648, 1}, {1752, 1}, {664, 1}, {3512, 1}, {1032, 1}, {528, 1}, +{4072, 1}, {204, 1}, {2880, 1}, {3392, 1}, {712, 1}, { 59, 1}, +{736, 1}, {592, 1}, {2520, 1}, {744, 1}, {196, 1}, {172, 1}, +{728, 1}, {2040, 1}, {1192, 1}, {3600, 1}, {0, 0} +}; + +#define ALIGN_NUM 1024 +#define ALIGN_MASK (ALIGN_NUM-1) +static uint8_t align_arr[ALIGN_NUM]; + +/* Alignment data for memset based on SPEC2017. */ +static align_data_t memset_align_freq[] = +{ + {16, 338}, {8, 307}, {32, 148}, {64, 131}, {4, 72}, {1, 23}, {2, 5}, {0, 0} +}; + +static void +init_memset_distribution (void) +{ + int i, j, freq, size, n; + + for (n = i = 0; (freq = memset_len_freq[i].freq) != 0; i++) + for (j = 0, size = memset_len_freq[i].size; j < freq; j++) + len_arr[n++] = size; + assert (n == SIZE_NUM); + + for (n = i = 0; (freq = memset_align_freq[i].freq) != 0; i++) + for (j = 0, size = memset_align_freq[i].align; j < freq; j++) + align_arr[n++] = size - 1; + assert (n == ALIGN_NUM); +} + +static void +do_one_test (json_ctx_t *json_ctx, impl_t *impl, size_t iters, + memset_test_t *input, size_t n) +{ + timing_t start, stop, cur; + + /* Avoid 'cold start' performance penalty. */ + for (int j = 0; j < n; j++) + CALL (impl, buf1 + input[j].offset, 0, input[j].len); + + TIMING_NOW (start); + for (int i = 0; i < iters; ++i) + for (int j = 0; j < n; j++) + CALL (impl, buf1 + input[j].offset, 0, input[j].len); + TIMING_NOW (stop); + TIMING_DIFF (cur, start, stop); + json_element_double (json_ctx, (double) cur / (double) iters); +} + +static void +do_test (json_ctx_t *json_ctx, size_t max_size) +{ + int n; + + /* Create a random set of memset inputs strings with the given length + and alignment distributions. */ + for (n = 0; n < NUM_TESTS; n++) + { + int align = align_arr[rand () & ALIGN_MASK]; + int len = len_arr[rand () & SIZE_MASK]; + + test_arr[n].offset = (rand () & (max_size - 1)) & ~align; + test_arr[n].len = len; + } + + json_element_object_begin (json_ctx); + json_attr_uint (json_ctx, "length", (double) max_size); + json_array_begin (json_ctx, "timings"); + + FOR_EACH_IMPL (impl, 0) + do_one_test (json_ctx, impl, INNER_LOOP_ITERS_MEDIUM * 2, test_arr, n); + + json_array_end (json_ctx); + json_element_object_end (json_ctx); +} + +int +test_main (void) +{ + json_ctx_t json_ctx; + + test_init (); + init_memset_distribution (); + memset (buf1, 1, MIN_PAGE_SIZE); + + json_init (&json_ctx, 0, stdout); + + json_document_begin (&json_ctx); + json_attr_string (&json_ctx, "timing_type", TIMING_TYPE); + + json_attr_object_begin (&json_ctx, "functions"); + json_attr_object_begin (&json_ctx, TEST_NAME); + json_attr_string (&json_ctx, "bench-variant", "random"); + + json_array_begin (&json_ctx, "ifuncs"); + FOR_EACH_IMPL (impl, 0) + json_element_string (&json_ctx, impl->name); + json_array_end (&json_ctx); + + json_array_begin (&json_ctx, "results"); + for (int i = MIN_SIZE; i <= MAX_SIZE; i = i * 2) + do_test (&json_ctx, i); + + json_array_end (&json_ctx); + json_attr_object_end (&json_ctx); + json_attr_object_end (&json_ctx); + json_document_end (&json_ctx); + + return ret; +} + +#include <support/test-driver.c> diff --git a/config.h.in b/config.h.in index 9a83b774fa..f495f11244 100644 --- a/config.h.in +++ b/config.h.in @@ -159,6 +159,12 @@ /* Mach specific: define if the `host_page_size' RPC is available. */ #undef HAVE_HOST_PAGE_SIZE +/* Mach specific: define if the `thread_set_name' RPC is available. */ +#undef HAVE_MACH_THREAD_SET_NAME + +/* Mach specific: define if the `thread_get_name' RPC is available. */ +#undef HAVE_MACH_THREAD_GET_NAME + /* Mach/i386 specific: define if the `i386_io_perm_*' RPCs are available. */ #undef HAVE_I386_IO_PERM_MODIFY diff --git a/config.make.in b/config.make.in index 55e8b7563b..36096881b7 100644 --- a/config.make.in +++ b/config.make.in @@ -91,6 +91,7 @@ use-nscd = @use_nscd@ build-hardcoded-path-in-tests= @hardcoded_path_in_tests@ build-pt-chown = @build_pt_chown@ pthread-in-libc = @pthread_in_libc@ +man-pages-version = @man_pages_version@ # Build tools. CC = @CC@ diff --git a/configure b/configure index 1bae55b45b..ec0b62db36 100755 --- a/configure +++ b/configure @@ -699,6 +699,7 @@ force_install bindnow hardcoded_path_in_tests enable_timezone_tools +man_pages_version rtld_early_cflags extra_nonshared_cflags sysheaders @@ -782,6 +783,7 @@ with_headers with_nonshared_cflags with_rtld_early_cflags with_timeoutfactor +with_man_pages enable_sanity_checks enable_shared enable_profile @@ -1508,6 +1510,8 @@ Optional Packages: build early initialization with additional CFLAGS --with-timeoutfactor=NUM specify an integer to scale the timeout + --with-man-pages=VERSION + tie manual to a specific man-pages version --with-cpu=CPU select code for CPU variant Some influential environment variables: @@ -3868,8 +3872,9 @@ config_vars= if test ${enable_static_c___tests+y} then : enableval=$enable_static_c___tests; static_cxx_tests=$enableval -else $as_nop - static_cxx_tests=yes +else case e in #( + e) static_cxx_tests=yes ;; +esac fi config_vars="$config_vars @@ -3879,8 +3884,9 @@ static-cxx-tests = $static_cxx_tests" if test ${enable_static_c___link_check+y} then : enableval=$enable_static_c___link_check; static_cxx_link_check=$enableval -else $as_nop - static_cxx_link_check=yes +else case e in #( + e) static_cxx_link_check=yes ;; +esac fi @@ -4469,6 +4475,17 @@ fi printf "%s\n" "#define TIMEOUTFACTOR $timeoutfactor" >>confdefs.h +man_pages_version=6.9.1 + + +# Check whether --with-man-pages was given. +if test ${with_man_pages+y} +then : + withval=$with_man_pages; man_pages_version=$withval +fi + + + # Check whether --enable-sanity-checks was given. if test ${enable_sanity_checks+y} then : @@ -7448,6 +7465,32 @@ if test $libc_cv_cc_loop_to_function = yes; then fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for -Wimplicit-fallthrough" >&5 +printf %s "checking for -Wimplicit-fallthrough... " >&6; } +if test ${libc_cv_cc_wimplicit_fallthrough+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) if { ac_try='${CC-cc} -Werror -Wimplicit-fallthrough -xc /dev/null -S -o /dev/null' + { { eval echo "\"\$as_me\":${as_lineno-$LINENO}: \"$ac_try\""; } >&5 + (eval $ac_try) 2>&5 + ac_status=$? + printf "%s\n" "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; } +then : + libc_cv_cc_wimplicit_fallthrough=-Wimplicit-fallthrough +else case e in #( + e) libc_cv_cc_wimplicit_fallthrough= ;; +esac +fi + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_cc_wimplicit_fallthrough" >&5 +printf "%s\n" "$libc_cv_cc_wimplicit_fallthrough" >&6; } +config_vars="$config_vars +cc-option-wimplicit-fallthrough = $libc_cv_cc_wimplicit_fallthrough" + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for libgd" >&5 printf %s "checking for libgd... " >&6; } if test "$with_gd" != "no"; then diff --git a/configure.ac b/configure.ac index e48957f318..7c9b57789e 100644 --- a/configure.ac +++ b/configure.ac @@ -183,6 +183,15 @@ AC_ARG_WITH([timeoutfactor], [timeoutfactor=1]) AC_DEFINE_UNQUOTED(TIMEOUTFACTOR, $timeoutfactor) +man_pages_version=6.9.1 + +AC_ARG_WITH([man-pages], + AS_HELP_STRING([--with-man-pages=VERSION], + [tie manual to a specific man-pages version]), + [man_pages_version=$withval], + []) +AC_SUBST(man_pages_version) + AC_ARG_ENABLE([sanity-checks], AS_HELP_STRING([--disable-sanity-checks], [really do not use threads (should not be used except in special situations) @<:@default=yes@:>@]), @@ -1459,6 +1468,15 @@ if test $libc_cv_cc_loop_to_function = yes; then fi AC_SUBST(libc_cv_cc_loop_to_function) +AC_CACHE_CHECK([for -Wimplicit-fallthrough], + libc_cv_cc_wimplicit_fallthrough, [dnl +LIBC_TRY_CC_OPTION([-Werror -Wimplicit-fallthrough], + [libc_cv_cc_wimplicit_fallthrough=-Wimplicit-fallthrough], + [libc_cv_cc_wimplicit_fallthrough=]) +]) +LIBC_CONFIG_VAR([cc-option-wimplicit-fallthrough], + [$libc_cv_cc_wimplicit_fallthrough]) + dnl Check whether we have the gd library available. AC_MSG_CHECKING(for libgd) if test "$with_gd" != "no"; then diff --git a/debug/tst-fortify-syslog.c b/debug/tst-fortify-syslog.c index a7ddbf7c6b..2712acf689 100644 --- a/debug/tst-fortify-syslog.c +++ b/debug/tst-fortify-syslog.c @@ -22,7 +22,6 @@ #include <syslog.h> #include <string.h> #include <unistd.h> -#include <stdio.h> #include <support/check.h> #include <support/support.h> @@ -46,18 +45,13 @@ handler (int sig) _exit (127); } -#define FAIL() \ - do { \ - printf ("Failure on line %d\n", __LINE__); \ - support_record_failure (); \ - } while (0) #define CHK_FAIL_START \ chk_fail_ok = 1; \ if (! setjmp (chk_fail_buf)) \ { #define CHK_FAIL_END \ chk_fail_ok = 0; \ - FAIL (); \ + FAIL ("not supposed to reach here"); \ } static void diff --git a/elf/Makefile b/elf/Makefile index a3475f3fb5..00622ace9d 100644 --- a/elf/Makefile +++ b/elf/Makefile @@ -416,6 +416,10 @@ tests += \ tst-dlmopen4 \ tst-dlopen-self \ tst-dlopen-tlsmodid \ + tst-dlopen-tlsreinit1 \ + tst-dlopen-tlsreinit2 \ + tst-dlopen-tlsreinit3 \ + tst-dlopen-tlsreinit4 \ tst-dlopenfail \ tst-dlopenfail-2 \ tst-dlopenrpath \ @@ -630,6 +634,13 @@ $(objpfx)tst-rtld-does-not-exist.out: tst-rtld-does-not-exist.sh $(objpfx)ld.so $(SHELL) $< $(objpfx)ld.so > $@; \ $(evaluate-test) +ifeq ($(run-built-tests),yes) +tests-special += $(objpfx)tst-rtld-dash-dash.out +endif +$(objpfx)tst-rtld-dash-dash.out: tst-rtld-dash-dash.sh $(objpfx)ld.so + $(SHELL) $< $(objpfx)ld.so > $@; \ + $(evaluate-test) + tests += $(tests-execstack-$(have-z-execstack)) ifeq ($(run-built-tests),yes) tests-special += \ @@ -853,6 +864,9 @@ modules-names += \ tst-dlmopen-twice-mod1 \ tst-dlmopen-twice-mod2 \ tst-dlmopen1mod \ + tst-dlopen-tlsreinitmod1 \ + tst-dlopen-tlsreinitmod2 \ + tst-dlopen-tlsreinitmod3 \ tst-dlopenfaillinkmod \ tst-dlopenfailmod1 \ tst-dlopenfailmod2 \ @@ -1314,11 +1328,8 @@ $(objpfx)dl-allobjs.os: $(all-rtld-routines:%=$(objpfx)%.os) # discovery mechanism is not compatible with the libc implementation # when compiled for libc. rtld-stubbed-symbols = \ - __GI___pthread_disable_asynccancel \ - __GI___pthread_enable_asynccancel \ __libc_assert_fail \ - __pthread_disable_asynccancel \ - __pthread_enable_asynccancel \ + __syscall_cancel \ calloc \ free \ malloc \ @@ -3118,3 +3129,26 @@ $(objpfx)tst-recursive-tls.out: \ 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15) $(objpfx)tst-recursive-tlsmod%.os: tst-recursive-tlsmodN.c $(compile-command.c) -DVAR=thread_$* -DFUNC=get_threadvar_$* + +# Order matters here. The test needs the constructor for +# tst-dlopen-tlsreinitmod2.so to be called first. +LDFLAGS-tst-dlopen-tlsreinitmod1.so = -Wl,--no-as-needed +$(objpfx)tst-dlopen-tlsreinitmod1.so: \ + $(objpfx)tst-dlopen-tlsreinitmod3.so $(objpfx)tst-dlopen-tlsreinitmod2.so +LDFLAGS-tst-dlopen-tlsreinit2 = -Wl,--no-as-needed +$(objpfx)tst-dlopen-tlsreinit2: \ + $(objpfx)tst-dlopen-tlsreinitmod3.so $(objpfx)tst-dlopen-tlsreinitmod2.so +LDFLAGS-tst-dlopen-tlsreinit4 = -Wl,--no-as-needed +$(objpfx)tst-dlopen-tlsreinit4: \ + $(objpfx)tst-dlopen-tlsreinitmod3.so $(objpfx)tst-dlopen-tlsreinitmod2.so +# tst-dlopen-tlsreinitmod2.so is underlinked and refers to +# tst-dlopen-tlsreinitmod3.so. The dependency is provided via +# $(objpfx)tst-dlopen-tlsreinitmod1.so. +tst-dlopen-tlsreinitmod2.so-no-z-defs = yes +$(objpfx)tst-dlopen-tlsreinit.out: $(objpfx)tst-dlopen-tlsreinitmod1.so \ + $(objpfx)tst-dlopen-tlsreinitmod2.so $(objpfx)tst-dlopen-tlsreinitmod3.so +# Reuse an audit module which provides ample debug logging. +$(objpfx)tst-dlopen-tlsreinit3.out: $(objpfx)tst-auditmod1.so +tst-dlopen-tlsreinit3-ENV = LD_AUDIT=$(objpfx)tst-auditmod1.so +$(objpfx)tst-dlopen-tlsreinit4.out: $(objpfx)tst-auditmod1.so +tst-dlopen-tlsreinit4-ENV = LD_AUDIT=$(objpfx)tst-auditmod1.so diff --git a/elf/dl-fptr.c b/elf/dl-fptr.c deleted file mode 100644 index 575406ae44..0000000000 --- a/elf/dl-fptr.c +++ /dev/null @@ -1,322 +0,0 @@ -/* Manage function descriptors. Generic version. - Copyright (C) 1999-2024 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 - <https://www.gnu.org/licenses/>. */ - -#include <libintl.h> -#include <unistd.h> -#include <string.h> -#include <sys/param.h> -#include <sys/mman.h> -#include <link.h> -#include <ldsodefs.h> -#include <elf/dynamic-link.h> -#include <dl-fptr.h> -#include <dl-unmap-segments.h> -#include <atomic.h> - -#ifndef ELF_MACHINE_BOOT_FPTR_TABLE_LEN -/* ELF_MACHINE_BOOT_FPTR_TABLE_LEN should be greater than the number of - dynamic symbols in ld.so. */ -# define ELF_MACHINE_BOOT_FPTR_TABLE_LEN 256 -#endif - -#ifndef ELF_MACHINE_LOAD_ADDRESS -# error "ELF_MACHINE_LOAD_ADDRESS is not defined." -#endif - -#ifndef COMPARE_AND_SWAP -# define COMPARE_AND_SWAP(ptr, old, new) \ - (catomic_compare_and_exchange_bool_acq (ptr, new, old) == 0) -#endif - -ElfW(Addr) _dl_boot_fptr_table [ELF_MACHINE_BOOT_FPTR_TABLE_LEN]; - -static struct local - { - struct fdesc_table *root; - struct fdesc *free_list; - unsigned int npages; /* # of pages to allocate */ - /* the next to members MUST be consecutive! */ - struct fdesc_table boot_table; - struct fdesc boot_fdescs[1024]; - } -local = - { - .root = &local.boot_table, - .npages = 2, - .boot_table = - { - .len = sizeof (local.boot_fdescs) / sizeof (local.boot_fdescs[0]), - .first_unused = 0 - } - }; - -/* Create a new fdesc table and return a pointer to the first fdesc - entry. The fdesc lock must have been acquired already. */ - -static struct fdesc_table * -new_fdesc_table (struct local *l, size_t *size) -{ - size_t old_npages = l->npages; - size_t new_npages = old_npages + old_npages; - struct fdesc_table *new_table; - - /* If someone has just created a new table, we return NULL to tell - the caller to use the new table. */ - if (! COMPARE_AND_SWAP (&l->npages, old_npages, new_npages)) - return (struct fdesc_table *) NULL; - - *size = old_npages * GLRO(dl_pagesize); - new_table = __mmap (NULL, *size, - PROT_READ | PROT_WRITE, MAP_ANON | MAP_PRIVATE, -1, 0); - if (new_table == MAP_FAILED) - _dl_signal_error (errno, NULL, NULL, - N_("cannot map pages for fdesc table")); - - new_table->len - = (*size - sizeof (*new_table)) / sizeof (struct fdesc); - new_table->first_unused = 1; - return new_table; -} - - -static ElfW(Addr) -make_fdesc (ElfW(Addr) ip, ElfW(Addr) gp) -{ - struct fdesc *fdesc = NULL; - struct fdesc_table *root; - unsigned int old; - struct local *l; - - ELF_MACHINE_LOAD_ADDRESS (l, local); - - retry: - root = l->root; - while (1) - { - old = root->first_unused; - if (old >= root->len) - break; - else if (COMPARE_AND_SWAP (&root->first_unused, old, old + 1)) - { - fdesc = &root->fdesc[old]; - goto install; - } - } - - if (l->free_list) - { - /* Get it from free-list. */ - do - { - fdesc = l->free_list; - if (fdesc == NULL) - goto retry; - } - while (! COMPARE_AND_SWAP ((ElfW(Addr) *) &l->free_list, - (ElfW(Addr)) fdesc, fdesc->ip)); - } - else - { - /* Create a new fdesc table. */ - size_t size; - struct fdesc_table *new_table = new_fdesc_table (l, &size); - - if (new_table == NULL) - goto retry; - - new_table->next = root; - if (! COMPARE_AND_SWAP ((ElfW(Addr) *) &l->root, - (ElfW(Addr)) root, - (ElfW(Addr)) new_table)) - { - /* Someone has just installed a new table. Return NULL to - tell the caller to use the new table. */ - __munmap (new_table, size); - goto retry; - } - - /* Note that the first entry was reserved while allocating the - memory for the new page. */ - fdesc = &new_table->fdesc[0]; - } - - install: - fdesc->ip = ip; - fdesc->gp = gp; - - return (ElfW(Addr)) fdesc; -} - - -static inline ElfW(Addr) * __attribute__ ((always_inline)) -make_fptr_table (struct link_map *map) -{ - const ElfW(Sym) *symtab - = (const void *) D_PTR (map, l_info[DT_SYMTAB]); - const char *strtab = (const void *) D_PTR (map, l_info[DT_STRTAB]); - ElfW(Addr) *fptr_table; - size_t size; - size_t len; - - /* XXX Apparently the only way to find out the size of the dynamic - symbol section is to assume that the string table follows right - afterwards... */ - len = ((strtab - (char *) symtab) - / map->l_info[DT_SYMENT]->d_un.d_val); - size = ((len * sizeof (fptr_table[0]) + GLRO(dl_pagesize) - 1) - & -GLRO(dl_pagesize)); - /* XXX We don't support here in the moment systems without MAP_ANON. - There probably are none for IA-64. In case this is proven wrong - we will have to open /dev/null here and use the file descriptor - instead of the hard-coded -1. */ - fptr_table = __mmap (NULL, size, - PROT_READ | PROT_WRITE, MAP_ANON | MAP_PRIVATE, - -1, 0); - if (fptr_table == MAP_FAILED) - _dl_signal_error (errno, NULL, NULL, - N_("cannot map pages for fptr table")); - - if (COMPARE_AND_SWAP ((ElfW(Addr) *) &map->l_mach.fptr_table, - (ElfW(Addr)) NULL, (ElfW(Addr)) fptr_table)) - map->l_mach.fptr_table_len = len; - else - __munmap (fptr_table, len * sizeof (fptr_table[0])); - - return map->l_mach.fptr_table; -} - - -ElfW(Addr) -_dl_make_fptr (struct link_map *map, const ElfW(Sym) *sym, - ElfW(Addr) ip) -{ - ElfW(Addr) *ftab = map->l_mach.fptr_table; - const ElfW(Sym) *symtab; - Elf_Symndx symidx; - struct local *l; - - if (__glibc_unlikely (ftab == NULL)) - ftab = make_fptr_table (map); - - symtab = (const void *) D_PTR (map, l_info[DT_SYMTAB]); - symidx = sym - symtab; - - if (symidx >= map->l_mach.fptr_table_len) - _dl_signal_error (0, NULL, NULL, - N_("internal error: symidx out of range of fptr table")); - - while (ftab[symidx] == 0) - { - /* GOT has already been relocated in elf_get_dynamic_info - - don't try to relocate it again. */ - ElfW(Addr) fdesc - = make_fdesc (ip, map->l_info[DT_PLTGOT]->d_un.d_ptr); - - if (__builtin_expect (COMPARE_AND_SWAP (&ftab[symidx], (ElfW(Addr)) NULL, - fdesc), 1)) - { - /* No one has updated the entry and the new function - descriptor has been installed. */ -#if 0 - const char *strtab - = (const void *) D_PTR (map, l_info[DT_STRTAB]); - - ELF_MACHINE_LOAD_ADDRESS (l, local); - if (l->root != &l->boot_table - || l->boot_table.first_unused > 20) - _dl_debug_printf ("created fdesc symbol `%s' at %lx\n", - strtab + sym->st_name, ftab[symidx]); -#endif - break; - } - else - { - /* We created a duplicated function descriptor. We put it on - free-list. */ - struct fdesc *f = (struct fdesc *) fdesc; - - ELF_MACHINE_LOAD_ADDRESS (l, local); - - do - f->ip = (ElfW(Addr)) l->free_list; - while (! COMPARE_AND_SWAP ((ElfW(Addr) *) &l->free_list, - f->ip, fdesc)); - } - } - - return ftab[symidx]; -} - - -void -_dl_unmap (struct link_map *map) -{ - ElfW(Addr) *ftab = map->l_mach.fptr_table; - struct fdesc *head = NULL, *tail = NULL; - size_t i; - - _dl_unmap_segments (map); - - if (ftab == NULL) - return; - - /* String together the fdesc structures that are being freed. */ - for (i = 0; i < map->l_mach.fptr_table_len; ++i) - { - if (ftab[i]) - { - *(struct fdesc **) ftab[i] = head; - head = (struct fdesc *) ftab[i]; - if (tail == NULL) - tail = head; - } - } - - /* Prepend the new list to the free_list: */ - if (tail) - do - tail->ip = (ElfW(Addr)) local.free_list; - while (! COMPARE_AND_SWAP ((ElfW(Addr) *) &local.free_list, - tail->ip, (ElfW(Addr)) head)); - - __munmap (ftab, (map->l_mach.fptr_table_len - * sizeof (map->l_mach.fptr_table[0]))); - - map->l_mach.fptr_table = NULL; -} - - -ElfW(Addr) -_dl_lookup_address (const void *address) -{ - ElfW(Addr) addr = (ElfW(Addr)) address; - struct fdesc_table *t; - unsigned long int i; - - for (t = local.root; t != NULL; t = t->next) - { - i = (struct fdesc *) addr - &t->fdesc[0]; - if (i < t->first_unused && addr == (ElfW(Addr)) &t->fdesc[i]) - { - addr = t->fdesc[i].ip; - break; - } - } - - return addr; -} diff --git a/elf/dl-open.c b/elf/dl-open.c index c378da16c0..8b4704c09d 100644 --- a/elf/dl-open.c +++ b/elf/dl-open.c @@ -363,17 +363,8 @@ resize_tls_slotinfo (struct link_map *new) { bool any_tls = false; for (unsigned int i = 0; i < new->l_searchlist.r_nlist; ++i) - { - struct link_map *imap = new->l_searchlist.r_list[i]; - - /* Only add TLS memory if this object is loaded now and - therefore is not yet initialized. */ - if (! imap->l_init_called && imap->l_tls_blocksize > 0) - { - _dl_add_to_slotinfo (imap, false); - any_tls = true; - } - } + if (_dl_add_to_slotinfo (new->l_searchlist.r_list[i], false)) + any_tls = true; return any_tls; } @@ -383,22 +374,8 @@ resize_tls_slotinfo (struct link_map *new) static void update_tls_slotinfo (struct link_map *new) { - unsigned int first_static_tls = new->l_searchlist.r_nlist; for (unsigned int i = 0; i < new->l_searchlist.r_nlist; ++i) - { - struct link_map *imap = new->l_searchlist.r_list[i]; - - /* Only add TLS memory if this object is loaded now and - therefore is not yet initialized. */ - if (! imap->l_init_called && imap->l_tls_blocksize > 0) - { - _dl_add_to_slotinfo (imap, true); - - if (imap->l_need_tls_init - && first_static_tls == new->l_searchlist.r_nlist) - first_static_tls = i; - } - } + _dl_add_to_slotinfo (new->l_searchlist.r_list[i], true); size_t newgen = GL(dl_tls_generation) + 1; if (__glibc_unlikely (newgen == 0)) @@ -410,13 +387,11 @@ TLS generation counter wrapped! Please report this.")); /* We need a second pass for static tls data, because _dl_update_slotinfo must not be run while calls to _dl_add_to_slotinfo are still pending. */ - for (unsigned int i = first_static_tls; i < new->l_searchlist.r_nlist; ++i) + for (unsigned int i = 0; i < new->l_searchlist.r_nlist; ++i) { struct link_map *imap = new->l_searchlist.r_list[i]; - if (imap->l_need_tls_init - && ! imap->l_init_called - && imap->l_tls_blocksize > 0) + if (imap->l_need_tls_init && imap->l_tls_blocksize > 0) { /* For static TLS we have to allocate the memory here and now, but we can delay updating the DTV. */ @@ -511,22 +486,11 @@ _dl_open_relocate_one_object (struct dl_open_args *args, struct r_debug *r, _dl_relocate_object (l, l->l_scope, reloc_mode, 0); } - -/* struct dl_init_args and call_dl_init are used to call _dl_init with - exception handling disabled. */ -struct dl_init_args -{ - struct link_map *new; - int argc; - char **argv; - char **env; -}; - static void call_dl_init (void *closure) { - struct dl_init_args *args = closure; - _dl_init (args->new, args->argc, args->argv, args->env); + struct dl_open_args *args = closure; + _dl_init (args->map, args->argc, args->argv, args->env); } static void @@ -818,16 +782,7 @@ dl_open_worker (void *a) /* Run the initializer functions of new objects. Temporarily disable the exception handler, so that lazy binding failures are fatal. */ - { - struct dl_init_args init_args = - { - .new = new, - .argc = args->argc, - .argv = args->argv, - .env = args->env - }; - _dl_catch_exception (NULL, call_dl_init, &init_args); - } + _dl_catch_exception (NULL, call_dl_init, args); /* Now we can make the new map available in the global scope. */ if (mode & RTLD_GLOBAL) diff --git a/elf/dl-tls.c b/elf/dl-tls.c index 3d221273f1..3d529b722c 100644 --- a/elf/dl-tls.c +++ b/elf/dl-tls.c @@ -552,9 +552,14 @@ _dl_resize_dtv (dtv_t *dtv, size_t max_modid) /* Allocate initial TLS. RESULT should be a non-NULL pointer to storage for the TLS space. The DTV may be resized, and so this function may call malloc to allocate that space. The loader's GL(dl_load_tls_lock) - is taken when manipulating global TLS-related data in the loader. */ + is taken when manipulating global TLS-related data in the loader. + + If MAIN_THREAD, this is the first call during process + initialization. In this case, TLS initialization for secondary + (audit) namespaces is skipped because that has already been handled + by dlopen. */ void * -_dl_allocate_tls_init (void *result, bool init_tls) +_dl_allocate_tls_init (void *result, bool main_thread) { if (result == NULL) /* The memory allocation failed. */ @@ -627,17 +632,21 @@ _dl_allocate_tls_init (void *result, bool init_tls) some platforms use in static programs requires it. */ dtv[map->l_tls_modid].pointer.val = dest; - /* Copy the initialization image and clear the BSS part. For - audit modules or dependencies with initial-exec TLS, we can not - set the initial TLS image on default loader initialization - because it would already be set by the audit setup. However, - subsequent thread creation would need to follow the default - behaviour. */ - if (map->l_ns != LM_ID_BASE && !init_tls) + /* Copy the initialization image and clear the BSS part. + For audit modules or dependencies with initial-exec TLS, + we can not set the initial TLS image on default loader + initialization because it would already be set by the + audit setup, which uses the dlopen code and already + clears l_need_tls_init. Calls with !main_thread from + pthread_create need to initialze TLS for the current + thread regardless of namespace. */ + if (map->l_ns != LM_ID_BASE && main_thread) continue; memset (__mempcpy (dest, map->l_tls_initimage, map->l_tls_initimage_size), '\0', map->l_tls_blocksize - map->l_tls_initimage_size); + if (main_thread) + map->l_need_tls_init = 0; } total += cnt; @@ -661,7 +670,7 @@ _dl_allocate_tls (void *mem) { return _dl_allocate_tls_init (mem == NULL ? _dl_allocate_tls_storage () - : allocate_dtv (mem), true); + : allocate_dtv (mem), false); } rtld_hidden_def (_dl_allocate_tls) @@ -1094,9 +1103,32 @@ _dl_tls_initial_modid_limit_setup (void) } -void +/* Add module to slot information data. If DO_ADD is false, only the + required memory is allocated. Must be called with + GL (dl_load_tls_lock) acquired. If the function has already been + called for the link map L with !DO_ADD, then this function will not + raise an exception, otherwise it is possible that it encounters a + memory allocation failure. + + Return false if L has already been added to the slotinfo data, or + if L has no TLS data. If the returned value is true, L has been + added with this call (DO_ADD), or has been added in a previous call + (!DO_ADD). + + The expected usage is as follows: Call _dl_add_to_slotinfo for + several link maps with DO_ADD set to false, and record if any calls + result in a true result. If there was a true result, call + _dl_add_to_slotinfo again, this time with DO_ADD set to true. (For + simplicity, it's possible to call the function for link maps where + the previous result was false.) The return value from the second + round of calls can be ignored. If there was true result initially, + call _dl_update_slotinfo to update the TLS generation counter. */ +bool _dl_add_to_slotinfo (struct link_map *l, bool do_add) { + if (l->l_tls_blocksize == 0 || l->l_tls_in_slotinfo) + return false; + /* Now that we know the object is loaded successfully add modules containing TLS data to the dtv info table. We might have to increase its size. */ @@ -1152,7 +1184,10 @@ cannot create TLS data structures")); atomic_store_relaxed (&listp->slotinfo[idx].map, l); atomic_store_relaxed (&listp->slotinfo[idx].gen, GL(dl_tls_generation) + 1); + l->l_tls_in_slotinfo = true; } + + return true; } #if PTHREAD_IN_LIBC diff --git a/elf/readlib.c b/elf/readlib.c index 32e8b8eb22..f3129c4557 100644 --- a/elf/readlib.c +++ b/elf/readlib.c @@ -44,12 +44,14 @@ struct known_names int flag; }; -/* Check if string corresponds to a GDB Python file. */ +/* Check if string corresponds to a GDB extension file. */ static bool -is_gdb_python_file (const char *name) +is_gdb_extension_file (const char *name) { size_t len = strlen (name); - return endswithn (name, len, "-gdb.py"); + return (endswithn (name, len, "-gdb.gdb") + || endswithn (name, len, "-gdb.py") + || endswithn (name, len, "-gdb.scm")); } /* Returns 0 if everything is ok, != 0 in case of error. */ @@ -146,7 +148,7 @@ process_file (const char *real_file_name, const char *file_name, size_t len = MIN (statbuf.st_size, 512); if (memmem (file_contents, len, "GROUP", 5) == NULL && memmem (file_contents, len, "GNU ld script", 13) == NULL - && !is_gdb_python_file (file_name)) + && !is_gdb_extension_file (file_name)) error (0, 0, _("%s is not an ELF file - it has the wrong magic bytes at the start.\n"), file_name); ret = 1; diff --git a/elf/rtld.c b/elf/rtld.c index bfdf632e77..1e2e9ad5a8 100644 --- a/elf/rtld.c +++ b/elf/rtld.c @@ -1501,12 +1501,16 @@ dl_main (const ElfW(Phdr) *phdr, _dl_version (); else if (_dl_argv[1][0] == '-' && _dl_argv[1][1] == '-') { - if (_dl_argv[1][1] == '\0') - /* End of option list. */ - break; - else - /* Unrecognized option. */ - _dl_usage (ld_so_name, _dl_argv[1]); + if (_dl_argv[1][2] == '\0') + { + /* End of option list. */ + --_dl_argc; + ++_dl_argv; + break; + } + else + /* Unrecognized option. */ + _dl_usage (ld_so_name, _dl_argv[1]); } else break; @@ -2338,7 +2342,7 @@ dl_main (const ElfW(Phdr) *phdr, into the main thread's TLS area, which we allocated above. Note: thread-local variables must only be accessed after completing the next step. */ - _dl_allocate_tls_init (tcbp, false); + _dl_allocate_tls_init (tcbp, true); /* And finally install it for the main thread. */ if (! __rtld_tls_init_tp_called) diff --git a/elf/tst-dlopen-tlsreinit1.c b/elf/tst-dlopen-tlsreinit1.c new file mode 100644 index 0000000000..2016b9b0c6 --- /dev/null +++ b/elf/tst-dlopen-tlsreinit1.c @@ -0,0 +1,40 @@ +/* Test that dlopen preserves already accessed TLS (bug 31717). + Copyright (C) 2024 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 + <https://www.gnu.org/licenses/>. */ + +#include <stdbool.h> +#include <support/check.h> +#include <support/xdlfcn.h> +#include <ctype.h> + +static int +do_test (void) +{ + void *handle = xdlopen ("tst-dlopen-tlsreinitmod1.so", RTLD_NOW); + + bool *tlsreinitmod3_tested = xdlsym (handle, "tlsreinitmod3_tested"); + TEST_VERIFY (*tlsreinitmod3_tested); + + xdlclose (handle); + + /* This crashes if the libc.so.6 TLS image has been reverted. */ + TEST_VERIFY (!isupper ('@')); + + return 0; +} + +#include <support/test-driver.c> diff --git a/elf/tst-dlopen-tlsreinit2.c b/elf/tst-dlopen-tlsreinit2.c new file mode 100644 index 0000000000..90ad2c7713 --- /dev/null +++ b/elf/tst-dlopen-tlsreinit2.c @@ -0,0 +1,39 @@ +/* Test that dlopen preserves already accessed TLS (bug 31717). + Variant with initially-linked modules. + Copyright (C) 2024 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 + <https://www.gnu.org/licenses/>. */ + +#include <ctype.h> +#include <stdbool.h> +#include <support/check.h> +#include <support/xdlfcn.h> + + +static int +do_test (void) +{ + /* Defined in tst-dlopen-tlsreinitmod3.so. */ + extern bool tlsreinitmod3_tested; + TEST_VERIFY (tlsreinitmod3_tested); + + /* This crashes if the libc.so.6 TLS image has been reverted. */ + TEST_VERIFY (!isupper ('@')); + + return 0; +} + +#include <support/test-driver.c> diff --git a/elf/tst-dlopen-tlsreinit3.c b/elf/tst-dlopen-tlsreinit3.c new file mode 100644 index 0000000000..79bd585aff --- /dev/null +++ b/elf/tst-dlopen-tlsreinit3.c @@ -0,0 +1,2 @@ +/* Same code, but run with LD_AUDIT=tst-auditmod1.so. */ +#include "tst-dlopen-tlsreinit1.c" diff --git a/elf/tst-dlopen-tlsreinit4.c b/elf/tst-dlopen-tlsreinit4.c new file mode 100644 index 0000000000..344c9211ab --- /dev/null +++ b/elf/tst-dlopen-tlsreinit4.c @@ -0,0 +1,2 @@ +/* Same code, but run with LD_AUDIT=tst-auditmod1.so. */ +#include "tst-dlopen-tlsreinit2.c" diff --git a/elf/tst-dlopen-tlsreinitmod1.c b/elf/tst-dlopen-tlsreinitmod1.c new file mode 100644 index 0000000000..354cc3de51 --- /dev/null +++ b/elf/tst-dlopen-tlsreinitmod1.c @@ -0,0 +1,20 @@ +/* Test that dlopen preserves already accessed TLS (bug 31717), module 1. + Copyright (C) 2024 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 + <https://www.gnu.org/licenses/>. */ + +/* This module triggers loading of tst-dlopen-tlsreinitmod2.so and + tst-dlopen-tlsreinitmod3.so. */ diff --git a/elf/tst-dlopen-tlsreinitmod2.c b/elf/tst-dlopen-tlsreinitmod2.c new file mode 100644 index 0000000000..677e69bd35 --- /dev/null +++ b/elf/tst-dlopen-tlsreinitmod2.c @@ -0,0 +1,30 @@ +/* Test that dlopen preserves already accessed TLS (bug 31717), module 2. + Copyright (C) 2024 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 + <https://www.gnu.org/licenses/>. */ + +#include <stdio.h> + +/* Defined in tst-dlopen-tlsreinitmod3.so. This an underlinked symbol + dependency. */ +extern void call_tlsreinitmod3 (void); + +static void __attribute__ ((constructor)) +tlsreinitmod2_init (void) +{ + puts ("info: constructor of tst-dlopen-tlsreinitmod2.so invoked"); + call_tlsreinitmod3 (); +} diff --git a/elf/tst-dlopen-tlsreinitmod3.c b/elf/tst-dlopen-tlsreinitmod3.c new file mode 100644 index 0000000000..ef769c5131 --- /dev/null +++ b/elf/tst-dlopen-tlsreinitmod3.c @@ -0,0 +1,102 @@ +/* Test that dlopen preserves already accessed TLS (bug 31717), module 3. + Copyright (C) 2024 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 + <https://www.gnu.org/licenses/>. */ + +#include <dlfcn.h> +#include <stdbool.h> +#include <stdio.h> +#include <unistd.h> + +/* Used to verify from the main program that the test ran. */ +bool tlsreinitmod3_tested; + +/* This TLS variable must not revert back to the initial state after + dlopen. */ +static __thread int tlsreinitmod3_state = 1; + +/* Set from the ELF constructor during dlopen. */ +static bool tlsreinitmod3_constructed; + +/* Second half of test, behind a compiler barrier. The compiler + barrier is necessary to prevent carrying over TLS address + information from call_tlsreinitmod3 to call_tlsreinitmod3_tail. */ +void call_tlsreinitmod3_tail (void *self) __attribute__ ((weak)); + +/* Called from tst-dlopen-tlsreinitmod2.so. */ +void +call_tlsreinitmod3 (void) +{ + printf ("info: call_tlsreinitmod3 invoked (state=%d)\n", + tlsreinitmod3_state); + + if (tlsreinitmod3_constructed) + { + puts ("error: call_tlsreinitmod3 called after ELF constructor"); + fflush (stdout); + /* Cannot rely on test harness due to dynamic linking. */ + _exit (1); + } + + tlsreinitmod3_state = 2; + + /* Self-dlopen. This will run the ELF constructor. */ + void *self = dlopen ("tst-dlopen-tlsreinitmod3.so", RTLD_NOW); + if (self == NULL) + { + printf ("error: dlopen: %s\n", dlerror ()); + fflush (stdout); + /* Cannot rely on test harness due to dynamic linking. */ + _exit (1); + } + + call_tlsreinitmod3_tail (self); +} + +void +call_tlsreinitmod3_tail (void *self) +{ + printf ("info: dlopen returned in tlsreinitmod3 (state=%d)\n", + tlsreinitmod3_state); + + if (!tlsreinitmod3_constructed) + { + puts ("error: dlopen did not call tlsreinitmod3 ELF constructor"); + fflush (stdout); + /* Cannot rely on test harness due to dynamic linking. */ + _exit (1); + } + + if (tlsreinitmod3_state != 2) + { + puts ("error: TLS state reverted in tlsreinitmod3"); + fflush (stdout); + /* Cannot rely on test harness due to dynamic linking. */ + _exit (1); + } + + dlclose (self); + + /* Signal test completion to the main program. */ + tlsreinitmod3_tested = true; +} + +static void __attribute__ ((constructor)) +tlsreinitmod3_init (void) +{ + puts ("info: constructor of tst-dlopen-tlsreinitmod3.so invoked"); + tlsreinitmod3_constructed = true; +} diff --git a/elf/tst-ldconfig-bad-aux-cache.c b/elf/tst-ldconfig-bad-aux-cache.c index 7f1fbb5252..8c2e62ecc2 100644 --- a/elf/tst-ldconfig-bad-aux-cache.c +++ b/elf/tst-ldconfig-bad-aux-cache.c @@ -85,7 +85,7 @@ do_test (void) support_capture_subprocess_check (&result, "execv", 0, sc_allow_none); support_capture_subprocess_free (&result); - xstat (path, &fs); + xstat64 (path, &fs); size = fs.st_size; /* Run 3 tests, each truncating aux-cache shorter and shorter. */ diff --git a/elf/tst-rtld-dash-dash.sh b/elf/tst-rtld-dash-dash.sh new file mode 100644 index 0000000000..2bc1f85598 --- /dev/null +++ b/elf/tst-rtld-dash-dash.sh @@ -0,0 +1,41 @@ +#!/bin/sh +# Test for the '--' option in ld.so. +# Copyright (C) 2024 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 +# <https://www.gnu.org/licenses/>. + +export LC_ALL=C + +# --inhibit-cache to suppress "No such file or directory" message when +# /etc/ld.so.cache does not exist. +rtld="$1 --inhibit-cache" +tmp_out="$(mktemp)" + +$rtld -- --program-does-not-exist 2>"$tmp_out" +status=$? +echo "$rtld exit status: $status" +echo "output (with expected error):" +cat "$tmp_out" + +if test $status -eq 127 \ + && grep -q "^--program-does-not-exist: error while loading shared libraries: --program-does-not-exist: cannot open shared object file$" "$tmp_out" \ + && test "$(wc -l < "$tmp_out")" -eq 1 ; then + status=0 +else + status=1 +fi +rm "$tmp_out" +exit $status diff --git a/elf/tst-rtld-does-not-exist.sh b/elf/tst-rtld-does-not-exist.sh index a4a781ccfd..f4a9e38e5d 100644 --- a/elf/tst-rtld-does-not-exist.sh +++ b/elf/tst-rtld-does-not-exist.sh @@ -19,7 +19,9 @@ export LC_ALL=C -rtld="$1" +# --inhibit-cache to suppress "No such file or directory" message when +# /etc/ld.so.cache does not exist. +rtld="$1 --inhibit-cache" tmp_out="$(mktemp)" $rtld program-does-not-exist 2>"$tmp_out" diff --git a/elf/tst-tunables-enable_secure-env.c b/elf/tst-tunables-enable_secure-env.c index 01f121efc3..937259f218 100644 --- a/elf/tst-tunables-enable_secure-env.c +++ b/elf/tst-tunables-enable_secure-env.c @@ -46,7 +46,7 @@ check_auxv (unsigned long type, char *argv) { char *endptr; errno = 0; - unsigned long int varg = strtol (argv, &endptr, 10); + unsigned long int varg = strtoul (argv, &endptr, 10); TEST_VERIFY_EXIT (errno == 0); TEST_VERIFY_EXIT (*endptr == '\0'); errno = 0; diff --git a/htl/Makefile b/htl/Makefile index 4028e5a240..c5d1c473a0 100644 --- a/htl/Makefile +++ b/htl/Makefile @@ -145,6 +145,8 @@ libpthread-routines := \ pt-getcpuclockid \ pt-setschedprio \ pt-yield \ + pt-getname-np \ + pt-setname-np \ sem_close \ sem-destroy \ sem-getvalue \ diff --git a/htl/Versions b/htl/Versions index 710051756a..949c1867fe 100644 --- a/htl/Versions +++ b/htl/Versions @@ -3,6 +3,16 @@ libc { GLIBC_2.12 { pthread_self; __pthread_self; + pthread_attr_getdetachstate; + pthread_attr_getinheritsched; + pthread_attr_getschedparam; + pthread_attr_getschedpolicy; + pthread_attr_setdetachstate; + pthread_attr_setinheritsched; + pthread_attr_setschedpolicy; + pthread_equal; + pthread_getschedparam; + pthread_setschedparam; } GLIBC_2.21 { @@ -38,6 +48,7 @@ libc { __pthread_cleanup_stack; __pthread_total; ___pthread_self; + __pthread_init_thread; } } @@ -169,6 +180,11 @@ libpthread { sem_clockwait; } + GLIBC_2.40 { + pthread_getname_np; + pthread_setname_np; + } + GLIBC_PRIVATE { __pthread_initialize_minimal; diff --git a/hurd/hurdfault.c b/hurd/hurdfault.c index 5110c6030f..1fe973f54d 100644 --- a/hurd/hurdfault.c +++ b/hurd/hurdfault.c @@ -121,7 +121,14 @@ faulted (void) struct { mach_msg_header_t head; - char buf[64]; + /* This is the size of the exception_raise request + * including mach_msg_header_t. + * See generated code in faultexc_server.c. */ +#ifdef __LP64__ + char buf[112]; +#else + char buf[64]; +#endif } request; mig_reply_header_t reply; extern int _hurdsig_fault_exc_server (mach_msg_header_t *, diff --git a/hurd/intr-msg.c b/hurd/intr-msg.c index 2c2e7dc463..424c1fc700 100644 --- a/hurd/intr-msg.c +++ b/hurd/intr-msg.c @@ -42,7 +42,10 @@ _hurd_intr_rpc_mach_msg (mach_msg_header_t *msg, struct clobber { mach_msg_type_t type; - error_t err; + union { + error_t err; + uintptr_t align; + }; }; union msg { diff --git a/iconv/Makefile b/iconv/Makefile index 63afc853ff..65b4a44ab8 100644 --- a/iconv/Makefile +++ b/iconv/Makefile @@ -57,6 +57,10 @@ tests = \ tst-iconv-opt \ # tests +test-srcs := \ + tst-translit-mchar \ + # test-srcs + others = iconv_prog iconvconfig install-others-programs = $(inst_bindir)/iconv install-sbin = iconvconfig @@ -73,6 +77,7 @@ include $(patsubst %,$(..)libof-iterator.mk,$(cpp-srcs-left)) ifeq ($(run-built-tests),yes) xtests-special += $(objpfx)test-iconvconfig.out tests-special += $(objpfx)tst-iconv_prog.out +tests-special += $(objpfx)tst-translit-mchar.out endif # Make a copy of the file because gconv module names are constructed @@ -92,6 +97,8 @@ $(objpfx)tst-gconv-init-failure.out: \ $(objpfx)gconv-modules $(objpfx)tst-gconv-init-failure-mod.so endif +generated-dirs += tst-translit + include ../Rules ifeq ($(run-built-tests),yes) @@ -126,3 +133,11 @@ $(objpfx)tst-iconv_prog.out: tst-iconv_prog.sh $(objpfx)iconv_prog $(BASH) $< $(common-objdir) '$(test-wrapper-env)' \ '$(run-program-env)' > $@; \ $(evaluate-test) + +$(objpfx)tst-translit-mchar.out: tst-translit-mchar.sh \ + $(objpfx)tst-translit-mchar \ + tst-translit-locale + $(SHELL) $< $(common-objpfx) '$(run-program-prefix-before-env)' \ + '$(run-program-env)' '$(run-program-prefix-after-env)' \ + $< > $@; \ + $(evaluate-test) diff --git a/iconv/gconv_trans.c b/iconv/gconv_trans.c index 08b7a3f71d..44f0fd849a 100644 --- a/iconv/gconv_trans.c +++ b/iconv/gconv_trans.c @@ -150,7 +150,7 @@ __gconv_transliterate (struct __gconv_step *step, /* Nothing found, continue searching. */ } - else if (cnt > 0) + else if (cnt > 0 && winbuf + cnt == winbufend) /* This means that the input buffer contents matches a prefix of an entry. Since we cannot match it unless we get more input, we will tell the caller about it. */ diff --git a/iconv/tst-translit-locale b/iconv/tst-translit-locale new file mode 100644 index 0000000000..712b08628a --- /dev/null +++ b/iconv/tst-translit-locale @@ -0,0 +1,10 @@ +# Test multi-character transliteration rule + +LC_CTYPE +copy "POSIX" + +translit_start +"ÄÄ" "AA" +translit_end + +END LC_CTYPE diff --git a/iconv/tst-translit-mchar.c b/iconv/tst-translit-mchar.c new file mode 100644 index 0000000000..7d432ea667 --- /dev/null +++ b/iconv/tst-translit-mchar.c @@ -0,0 +1,48 @@ +/* Test multi-character transliterations. + Copyright (C) 2024 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 + <https://www.gnu.org/licenses/>. */ + +#include <locale.h> +#include <iconv.h> +#include <support/support.h> +#include <support/check.h> + +static int +do_test (void) +{ + iconv_t cd; + /* An input sequence that shares a common prefix with a transliteration + rule. */ + char input[] = "ÄÅ"; + char *inptr = input; + char outbuf[10]; + char *outptr = outbuf; + size_t inlen = sizeof (input), outlen = sizeof (outbuf); + size_t n; + + xsetlocale (LC_CTYPE, "tst-translit"); + + cd = iconv_open ("ASCII//TRANSLIT", "UTF-8"); + TEST_VERIFY (cd != (iconv_t) -1); + + /* This call used to loop infinitely. */ + n = iconv (cd, &inptr, &inlen, &outptr, &outlen); + TEST_VERIFY (iconv_close (cd) == 0); + return n == 0; +} + +#include <support/test-driver.c> diff --git a/iconv/tst-translit-mchar.sh b/iconv/tst-translit-mchar.sh new file mode 100644 index 0000000000..ab7a7f8729 --- /dev/null +++ b/iconv/tst-translit-mchar.sh @@ -0,0 +1,51 @@ +#!/bin/sh +# Testing of multi-character transliterations +# Copyright (C) 2024 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 +# <https://www.gnu.org/licenses/>. + +set -e + +common_objpfx=$1 +run_program_prefix_before_env=$2 +run_program_env=$3 +run_program_prefix_after_env=$4 + +# Generate data files. +# The locale only defines the LC_CTYPE category, so we expect a failure +# due to warnings. +ret=0 +${run_program_prefix_before_env} \ +${run_program_env} \ +I18NPATH=../localedata \ +${run_program_prefix_after_env} ${common_objpfx}locale/localedef \ +--quiet -i tst-translit-locale -f UTF-8 ${common_objpfx}iconv/tst-translit || ret=$? +if [ $ret -gt 1 ]; then + echo "FAIL: Locale compilation for tst-translit-locale failed (error $ret)." + exit 1 +fi + +set -x + +# Run the test. +${run_program_prefix_before_env} \ +${run_program_env} \ +LOCPATH=${common_objpfx}iconv \ +${run_program_prefix_after_env} ${common_objpfx}iconv/tst-translit-mchar + +# Local Variables: +# mode:shell-script +# End: diff --git a/include/features.h b/include/features.h index d92503dfed..093de6f44c 100644 --- a/include/features.h +++ b/include/features.h @@ -500,7 +500,7 @@ /* Major and minor version number of the GNU C library package. Use these macros to test for features in specific releases. */ #define __GLIBC__ 2 -#define __GLIBC_MINOR__ 39 +#define __GLIBC_MINOR__ 40 #define __GLIBC_PREREQ(maj, min) \ ((__GLIBC__ << 16) + __GLIBC_MINOR__ >= ((maj) << 16) + (min)) diff --git a/include/libc-internal.h b/include/libc-internal.h index 87ac591835..1ef43ffe67 100644 --- a/include/libc-internal.h +++ b/include/libc-internal.h @@ -53,6 +53,9 @@ extern __typeof (__profile_frequency) __profile_frequency attribute_hidden; is not for an audit module, not loaded via dlmopen, and not loaded via static dlopen either). */ extern _Bool __libc_initial attribute_hidden; +#else +/* The static libc is always the initial namespace. */ +# define __libc_initial ((_Bool) 1) #endif #endif /* _LIBC_INTERNAL */ diff --git a/include/link.h b/include/link.h index cb0d7d8e2f..5ed445d5a6 100644 --- a/include/link.h +++ b/include/link.h @@ -212,6 +212,7 @@ struct link_map unsigned int l_find_object_processed:1; /* Zero if _dl_find_object_update needs to process this lt_library map. */ + unsigned int l_tls_in_slotinfo:1; /* TLS slotinfo updated in dlopen. */ /* NODELETE status of the map. Only valid for maps of type lt_loaded. Lazy binding sets l_nodelete_active directly, diff --git a/inet/Makefile b/inet/Makefile index 2f03e6f7ee..cb97b45f0f 100644 --- a/inet/Makefile +++ b/inet/Makefile @@ -91,6 +91,7 @@ tests := \ tst-getni1 \ tst-getni2 \ tst-if_index-long \ + tst-if_nameindex \ tst-inet6_rth \ tst-network \ tst-ntoa \ diff --git a/inet/tst-if_nameindex.c b/inet/tst-if_nameindex.c new file mode 100644 index 0000000000..5b90560124 --- /dev/null +++ b/inet/tst-if_nameindex.c @@ -0,0 +1,117 @@ +/* Tests for if_nameindex et al. + Copyright (C) 2024 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 + <https://www.gnu.org/licenses/>. */ + +#include <stdlib.h> +#include <errno.h> +#include <net/if.h> +#include <netdb.h> +#include <string.h> +#include <support/check.h> +#include <support/descriptors.h> +#include <support/support.h> + +static char *buffer; + +static const char *test_names[] = { + "testing", + "invalid", + "dont-match", + "", + "\001\001\001\177", + NULL +}; + +static void +checki (int i) +{ + char *ifname; + + /* Test that a known-invalid index returns NULL. */ + /* BUFFER should not be accessed. */ + + printf ("Testing if_indextoname (%d) == NULL\n", i); + ifname = if_indextoname (i, NULL); + TEST_VERIFY (ifname == NULL); + TEST_VERIFY (errno == ENXIO); +} + +static int +do_test (void) +{ + struct if_nameindex *if_ni, *ifp; + int min_idx, max_idx, buflen = 0; + int i; + + if_ni = if_nameindex (); + TEST_VERIFY (if_ni != NULL); + + min_idx = max_idx = if_ni->if_index; + + for (ifp = if_ni; !(ifp->if_index == 0 && ifp->if_name == NULL); ifp++) + { + printf ("%u: %s\n", ifp->if_index, ifp->if_name); + if (ifp->if_index < min_idx) + min_idx = ifp->if_index; + if (ifp->if_index > max_idx) + max_idx = ifp->if_index; + if (strlen (ifp->if_name) + 1 > buflen) + buflen = strlen (ifp->if_name) + 1; + } + buffer = (char *) xmalloc (buflen); + + /* Check normal operation. */ + for (ifp = if_ni; !(ifp->if_index == 0 && ifp->if_name == NULL); ifp++) + { + unsigned int idx = if_nametoindex (ifp->if_name); + TEST_VERIFY (idx == ifp->if_index); + + char *fn = if_indextoname (ifp->if_index, buffer); + TEST_VERIFY (strcmp (fn, ifp->if_name) == 0); + } + + for (i=-2; i<min_idx; i++) + checki (i); + for (i=max_idx+1; i<max_idx+3; i++) + checki (i); + + /* Check that a known-invalid name returns 0. */ + + for (i=0; test_names[i] != NULL; i++) + { + /* Make sure our "invalid" name is really invalid. */ + for (ifp = if_ni; !(ifp->if_index == 0 && ifp->if_name == NULL); ifp++) + if (strcmp (test_names[i], ifp->if_name) == 0) + goto not_this_one; + + printf ("Testing if_nametoindex (%s) == 0\n", test_names[i]); + + unsigned int idx = if_nametoindex (test_names[i]); + TEST_VERIFY (idx == 0); + TEST_VERIFY (errno == ENODEV); + + not_this_one: + ; + } + + + if_freenameindex (if_ni); + + return 0; +} + +#include <support/test-driver.c> diff --git a/io/Makefile b/io/Makefile index 19932d50f7..47666a1deb 100644 --- a/io/Makefile +++ b/io/Makefile @@ -188,6 +188,7 @@ tests := \ tst-closefrom \ tst-copy_file_range \ tst-faccessat \ + tst-fchmod-errors \ tst-fchmodat \ tst-fchownat \ tst-fcntl \ diff --git a/io/bits/statx-generic.h b/io/bits/statx-generic.h index 30a24765dc..19c3565edc 100644 --- a/io/bits/statx-generic.h +++ b/io/bits/statx-generic.h @@ -43,6 +43,7 @@ # define STATX_MNT_ID 0x1000U # define STATX_DIOALIGN 0x2000U # define STATX_MNT_ID_UNIQUE 0x4000U +# define STATX_SUBVOL 0x8000U # define STATX__RESERVED 0x80000000U # define STATX_ATTR_COMPRESSED 0x0004 diff --git a/io/tst-copy_file_range.c b/io/tst-copy_file_range.c index 9837b7c339..3d7b0aa901 100644 --- a/io/tst-copy_file_range.c +++ b/io/tst-copy_file_range.c @@ -117,7 +117,7 @@ simple_file_copy (void) TEST_COMPARE (xlseek (outfd, 0, SEEK_CUR), 6 + length); struct stat64 st; - xfstat (outfd, &st); + xfstat64 (outfd, &st); if (length > 0) TEST_COMPARE (st.st_size, out_skipped + length); else diff --git a/io/tst-fchmod-errors.c b/io/tst-fchmod-errors.c new file mode 100644 index 0000000000..bf2a4c568e --- /dev/null +++ b/io/tst-fchmod-errors.c @@ -0,0 +1,63 @@ +/* Test various fchmod error cases. + Copyright (C) 2024 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 + <https://www.gnu.org/licenses/>. */ + +#include <errno.h> +#include <fcntl.h> +#include <stdio.h> +#include <support/check.h> +#include <support/xunistd.h> +#include <unistd.h> + +static int +do_test (void) +{ + { + /* Permissions on /dev/null (the opened descriptor) cannot be changed. */ + int fd = xopen ("/dev/null", O_RDWR, 0); + if (getuid () == 0) + puts ("info: /dev/null fchmod test skipped because of root privileges"); + else + { + errno = 0; + TEST_COMPARE (fchmod (fd, 0), -1); + TEST_COMPARE (errno, EPERM); + } + xclose (fd); + + /* Now testing an invalid file descriptor. */ + errno = 0; + TEST_COMPARE (fchmod (fd, 0600), -1); + TEST_COMPARE (errno, EBADF); + } + + errno = 0; + TEST_COMPARE (fchmod (-1, 0600), -1); + TEST_COMPARE (errno, EBADF); + + errno = 0; + TEST_COMPARE (fchmod (AT_FDCWD, 0600), -1); + TEST_COMPARE (errno, EBADF); + + /* Linux supports fchmod on pretty much all file descriptors, so + there is no check for failure on specific types of descriptors + here. */ + + return 0; +} + +#include <support/test-driver.c> diff --git a/io/tst-futimens-time64.c b/io/tst-futimens-time64.c index 88fcb38489..71204a6166 100644 --- a/io/tst-futimens-time64.c +++ b/io/tst-futimens-time64.c @@ -1,2 +1 @@ -#define struct_stat struct stat #include "tst-futimens.c" diff --git a/io/tst-futimens.c b/io/tst-futimens.c index 6204befedd..075ca42b93 100644 --- a/io/tst-futimens.c +++ b/io/tst-futimens.c @@ -18,26 +18,23 @@ #include <support/check.h> #include <support/xunistd.h> +#include <fcntl.h> #include <sys/stat.h> -#ifndef struct_stat -# define struct_stat struct stat64 -#endif - static int test_futimens_helper (const char *file, int fd, const struct timespec *ts) { int result = futimens (fd, ts); TEST_VERIFY_EXIT (result == 0); - struct_stat st; - xfstat (fd, &st); + struct statx st; + xstatx (fd, "", AT_EMPTY_PATH, STATX_BASIC_STATS, &st); /* Check if seconds for atime match */ - TEST_COMPARE (st.st_atime, ts[0].tv_sec); + TEST_COMPARE (st.stx_atime.tv_sec, ts[0].tv_sec); /* Check if seconds for mtime match */ - TEST_COMPARE (st.st_mtime, ts[1].tv_sec); + TEST_COMPARE (st.stx_mtime.tv_sec, ts[1].tv_sec); return 0; } diff --git a/io/tst-futimes-time64.c b/io/tst-futimes-time64.c index d489c265d1..eeb4bed7c4 100644 --- a/io/tst-futimes-time64.c +++ b/io/tst-futimes-time64.c @@ -1,2 +1 @@ -#define struct_stat struct stat #include "tst-futimes.c" diff --git a/io/tst-futimes.c b/io/tst-futimes.c index d21acf6a24..612fe460cf 100644 --- a/io/tst-futimes.c +++ b/io/tst-futimes.c @@ -18,27 +18,24 @@ #include <support/check.h> #include <support/xunistd.h> +#include <fcntl.h> #include <sys/stat.h> #include <sys/time.h> -#ifndef struct_stat -# define struct_stat struct stat64 -#endif - static int test_futimens_helper (const char *file, int fd, const struct timeval *tv) { int r = futimes (fd, tv); TEST_VERIFY_EXIT (r == 0); - struct_stat st; - xfstat (fd, &st); + struct statx st; + xstatx (fd, "", AT_EMPTY_PATH, STATX_BASIC_STATS, &st); /* Check if seconds for atime match */ - TEST_COMPARE (st.st_atime, tv[0].tv_sec); + TEST_COMPARE (st.stx_atime.tv_sec, tv[0].tv_sec); /* Check if seconds for mtime match */ - TEST_COMPARE (st.st_mtime, tv[1].tv_sec); + TEST_COMPARE (st.stx_mtime.tv_sec, tv[1].tv_sec); return 0; } diff --git a/io/tst-futimesat-time64.c b/io/tst-futimesat-time64.c index f6c0500eef..1585317579 100644 --- a/io/tst-futimesat-time64.c +++ b/io/tst-futimesat-time64.c @@ -1,4 +1 @@ -#define struct_stat struct stat -#define fstat fstat -#define fstatat fstatat #include "io/tst-futimesat.c" diff --git a/io/tst-futimesat.c b/io/tst-futimesat.c index 67a8551beb..feae4e7aa7 100644 --- a/io/tst-futimesat.c +++ b/io/tst-futimesat.c @@ -30,12 +30,6 @@ #include <support/temp_file.h> #include <support/xunistd.h> -#ifndef struct_stat -# define struct_stat struct stat64 -# define fstat fstat64 -# define fstatat fstatat64 -#endif - static int dir_fd; static void @@ -118,19 +112,15 @@ do_test (void) xwrite (fd, "hello", 5); puts ("file created"); - struct_stat st1; - if (fstat (fd, &st1) != 0) - { - puts ("fstat64 failed"); - return 1; - } + struct statx st1; + xstatx (fd, "", AT_EMPTY_PATH, STATX_BASIC_STATS, &st1); close (fd); struct timeval tv[2]; - tv[0].tv_sec = st1.st_atime + 1; + tv[0].tv_sec = st1.stx_atime.tv_sec + 1; tv[0].tv_usec = 0; - tv[1].tv_sec = st1.st_mtime + 1; + tv[1].tv_sec = st1.stx_mtime.tv_sec + 1; tv[1].tv_usec = 0; if (futimesat (dir_fd, "some-file", tv) != 0) { @@ -138,16 +128,12 @@ do_test (void) return 1; } - struct_stat st2; - if (fstatat (dir_fd, "some-file", &st2, 0) != 0) - { - puts ("fstatat64 failed"); - return 1; - } + struct statx st2; + xstatx (dir_fd, "some-file", 0, STATX_BASIC_STATS, &st2); - if (st2.st_mtime != tv[1].tv_sec + if (st2.stx_mtime.tv_sec != tv[1].tv_sec #ifdef _STATBUF_ST_NSEC - || st2.st_mtim.tv_nsec != 0 + || st2.stx_mtime.tv_nsec != 0 #endif ) { diff --git a/io/tst-lutimes-time64.c b/io/tst-lutimes-time64.c index 06caec0a91..c5bea965da 100644 --- a/io/tst-lutimes-time64.c +++ b/io/tst-lutimes-time64.c @@ -1,2 +1 @@ -#define struct_stat struct stat #include "tst-lutimes.c" diff --git a/io/tst-lutimes.c b/io/tst-lutimes.c index edef5ab90e..78bcc58291 100644 --- a/io/tst-lutimes.c +++ b/io/tst-lutimes.c @@ -18,34 +18,32 @@ #include <support/check.h> #include <support/xunistd.h> +#include <fcntl.h> #include <sys/stat.h> #include <sys/time.h> -#ifndef struct_stat -# define struct_stat struct stat64 -#endif - static int test_lutimes_helper (const char *testfile, int fd, const char *testlink, const struct timeval *tv) { - struct_stat stfile_orig; - xlstat (testfile, &stfile_orig); + struct statx stfile_orig; + xstatx (AT_FDCWD, testfile, AT_SYMLINK_NOFOLLOW, STATX_BASIC_STATS, + &stfile_orig); TEST_VERIFY_EXIT (lutimes (testlink, tv) == 0); - struct_stat stlink; - xlstat (testlink, &stlink); + struct statx stlink; + xstatx (AT_FDCWD, testlink, AT_SYMLINK_NOFOLLOW, STATX_BASIC_STATS, &stlink); - TEST_COMPARE (stlink.st_atime, tv[0].tv_sec); - TEST_COMPARE (stlink.st_mtime, tv[1].tv_sec); + TEST_COMPARE (stlink.stx_atime.tv_sec, tv[0].tv_sec); + TEST_COMPARE (stlink.stx_mtime.tv_sec, tv[1].tv_sec); /* Check if the timestamp from original file is not changed. */ - struct_stat stfile; - xlstat (testfile, &stfile); + struct statx stfile; + xstatx (AT_FDCWD, testfile, AT_SYMLINK_NOFOLLOW, STATX_BASIC_STATS, &stfile); - TEST_COMPARE (stfile_orig.st_atime, stfile.st_atime); - TEST_COMPARE (stfile_orig.st_mtime, stfile.st_mtime); + TEST_COMPARE (stfile_orig.stx_atime.tv_sec, stfile.stx_atime.tv_sec); + TEST_COMPARE (stfile_orig.stx_mtime.tv_sec, stfile.stx_mtime.tv_sec); return 0; } diff --git a/io/tst-mkdirat.c b/io/tst-mkdirat.c index 605e51ef1e..b97bc3ca6d 100644 --- a/io/tst-mkdirat.c +++ b/io/tst-mkdirat.c @@ -53,6 +53,10 @@ prepare (void) static int do_test (void) { + /* Find the current umask. */ + mode_t mask = umask (022); + umask (mask); + /* fdopendir takes over the descriptor, make a copy. */ int dupfd = dup (dir_fd); if (dupfd == -1) @@ -107,6 +111,13 @@ do_test (void) puts ("mkdirat did not create a directory"); return 1; } + if ((st1.st_mode & 01777) != (~mask & 0777)) + { + printf ("mkdirat created directory with wrong mode %o, expected %o\n", + (unsigned int) (st1.st_mode & 01777), + (unsigned int) (~mask & 0777)); + return 1; + } dupfd = dup (dir_fd); if (dupfd == -1) @@ -156,6 +167,37 @@ do_test (void) return 1; } + /* Test again with a different mode. */ + umask (0); + e = mkdirat (dir_fd, "some-dir", 01755); + umask (mask); + if (e == -1) + { + puts ("directory creation (different mode) failed"); + return 1; + } + if (fstatat64 (dir_fd, "some-dir", &st1, 0) != 0) + { + puts ("fstat64 (different mode) failed"); + return 1; + } + if (!S_ISDIR (st1.st_mode)) + { + puts ("mkdirat (different mode) did not create a directory"); + return 1; + } + if ((st1.st_mode & 01777) != 01755) + { + printf ("mkdirat (different mode) created directory with wrong mode %o\n", + (unsigned int) (st1.st_mode & 01777)); + return 1; + } + if (unlinkat (dir_fd, "some-dir", AT_REMOVEDIR) != 0) + { + puts ("unlinkat (different mode) failed"); + return 1; + } + close (dir_fd); return 0; diff --git a/io/tst-statx.c b/io/tst-statx.c index d84568859e..685924ae76 100644 --- a/io/tst-statx.c +++ b/io/tst-statx.c @@ -78,7 +78,7 @@ both_implementations_tests (statx_function impl, const char *path, int fd) struct statx stx = { 0, }; TEST_COMPARE (statx (fd, "", AT_EMPTY_PATH, STATX_BASIC_STATS, &stx), 0); struct stat64 st; - xfstat (fd, &st); + xfstat64 (fd, &st); TEST_COMPARE (stx.stx_mode, st.st_mode); TEST_COMPARE (stx.stx_dev_major, major (st.st_dev)); TEST_COMPARE (stx.stx_dev_minor, minor (st.st_dev)); @@ -88,7 +88,7 @@ both_implementations_tests (statx_function impl, const char *path, int fd) TEST_COMPARE (statx (AT_FDCWD, "/dev/null", 0, STATX_BASIC_STATS, &stx), 0); struct stat64 st; - xstat ("/dev/null", &st); + xstat64 ("/dev/null", &st); TEST_COMPARE (stx.stx_mode, st.st_mode); TEST_COMPARE (stx.stx_dev_major, major (st.st_dev)); TEST_COMPARE (stx.stx_dev_minor, minor (st.st_dev)); diff --git a/io/tst-utime-time64.c b/io/tst-utime-time64.c index eb62f59126..8894592a15 100644 --- a/io/tst-utime-time64.c +++ b/io/tst-utime-time64.c @@ -1,2 +1 @@ -#define struct_stat struct stat #include "tst-utime.c" diff --git a/io/tst-utime.c b/io/tst-utime.c index e2e6dcd04c..f329358289 100644 --- a/io/tst-utime.c +++ b/io/tst-utime.c @@ -19,26 +19,23 @@ #include <utime.h> #include <support/check.h> #include <support/xunistd.h> +#include <fcntl.h> #include <sys/stat.h> -#ifndef struct_stat -# define struct_stat struct stat64 -#endif - static int test_utime_helper (const char *file, int fd, const struct utimbuf *ut) { int result = utime (file, ut); TEST_VERIFY_EXIT (result == 0); - struct_stat st; - xfstat (fd, &st); + struct statx st; + xstatx (fd, "", AT_EMPTY_PATH, STATX_BASIC_STATS, &st); /* Check if seconds for actime match */ - TEST_COMPARE (st.st_atime, ut->actime); + TEST_COMPARE (st.stx_atime.tv_sec, ut->actime); /* Check if seconds for modtime match */ - TEST_COMPARE (st.st_mtime, ut->modtime); + TEST_COMPARE (st.stx_mtime.tv_sec, ut->modtime); return 0; } diff --git a/io/tst-utimensat-time64.c b/io/tst-utimensat-time64.c index 7ac7d8df1d..5d60fce881 100644 --- a/io/tst-utimensat-time64.c +++ b/io/tst-utimensat-time64.c @@ -1,2 +1 @@ -#define struct_stat struct stat #include "tst-utimensat.c" diff --git a/io/tst-utimensat.c b/io/tst-utimensat.c index 3d9a72c471..2a756d7b07 100644 --- a/io/tst-utimensat.c +++ b/io/tst-utimensat.c @@ -22,10 +22,6 @@ #include <sys/stat.h> #include <sys/time.h> -#ifndef struct_stat -# define struct_stat struct stat64 -#endif - static int test_utimesat_helper (const char *testfile, int fd, const char *testlink, const struct timespec *ts) @@ -33,35 +29,38 @@ test_utimesat_helper (const char *testfile, int fd, const char *testlink, { TEST_VERIFY_EXIT (utimensat (fd, testfile, ts, 0) == 0); - struct_stat st; - xfstat (fd, &st); + struct statx st; + xstatx (fd, "", AT_EMPTY_PATH, STATX_BASIC_STATS, &st); /* Check if seconds for atime match */ - TEST_COMPARE (st.st_atime, ts[0].tv_sec); + TEST_COMPARE (st.stx_atime.tv_sec, ts[0].tv_sec); /* Check if seconds for mtime match */ - TEST_COMPARE (st.st_mtime, ts[1].tv_sec); + TEST_COMPARE (st.stx_mtime.tv_sec, ts[1].tv_sec); } { - struct_stat stfile_orig; - xlstat (testfile, &stfile_orig); + struct statx stfile_orig; + xstatx (AT_FDCWD, testfile, AT_SYMLINK_NOFOLLOW, STATX_BASIC_STATS, + &stfile_orig); TEST_VERIFY_EXIT (utimensat (0 /* ignored */, testlink, ts, AT_SYMLINK_NOFOLLOW) == 0); - struct_stat stlink; - xlstat (testlink, &stlink); + struct statx stlink; + xstatx (AT_FDCWD, testlink, AT_SYMLINK_NOFOLLOW, STATX_BASIC_STATS, + &stlink); - TEST_COMPARE (stlink.st_atime, ts[0].tv_sec); - TEST_COMPARE (stlink.st_mtime, ts[1].tv_sec); + TEST_COMPARE (stlink.stx_atime.tv_sec, ts[0].tv_sec); + TEST_COMPARE (stlink.stx_mtime.tv_sec, ts[1].tv_sec); /* Check if the timestamp from original file is not changed. */ - struct_stat stfile; - xlstat (testfile, &stfile); + struct statx stfile; + xstatx (AT_FDCWD, testfile, AT_SYMLINK_NOFOLLOW, STATX_BASIC_STATS, + &stfile); - TEST_COMPARE (stfile_orig.st_atime, stfile.st_atime); - TEST_COMPARE (stfile_orig.st_mtime, stfile.st_mtime); + TEST_COMPARE (stfile_orig.stx_atime.tv_sec, stfile.stx_atime.tv_sec); + TEST_COMPARE (stfile_orig.stx_mtime.tv_sec, stfile.stx_mtime.tv_sec); } return 0; diff --git a/io/tst-utimes-time64.c b/io/tst-utimes-time64.c index 234ec02541..026ef5f78d 100644 --- a/io/tst-utimes-time64.c +++ b/io/tst-utimes-time64.c @@ -1,2 +1 @@ -#define struct_stat struct stat #include "tst-utimes.c" diff --git a/io/tst-utimes.c b/io/tst-utimes.c index 8edcfabebf..6cd436c5a0 100644 --- a/io/tst-utimes.c +++ b/io/tst-utimes.c @@ -18,28 +18,25 @@ #include <support/check.h> #include <support/xunistd.h> +#include <fcntl.h> #include <sys/stat.h> #include <sys/time.h> #include <time.h> -#ifndef struct_stat -# define struct_stat struct stat64 -#endif - static int test_utimes_helper (const char *file, int fd, const struct timeval *tv) { int result = utimes (file, tv); TEST_VERIFY_EXIT (result == 0); - struct_stat st; - xfstat (fd, &st); + struct statx st; + xstatx (fd, "", AT_EMPTY_PATH, STATX_BASIC_STATS, &st); /* Check if seconds for atime match */ - TEST_COMPARE (st.st_atime, tv[0].tv_sec); + TEST_COMPARE (st.stx_atime.tv_sec, tv[0].tv_sec); /* Check if seconds for mtime match */ - TEST_COMPARE (st.st_mtime, tv[1].tv_sec); + TEST_COMPARE (st.stx_mtime.tv_sec, tv[1].tv_sec); return 0; } diff --git a/libio/Makefile b/libio/Makefile index 8720381fdc..59f3ee0b7c 100644 --- a/libio/Makefile +++ b/libio/Makefile @@ -91,9 +91,11 @@ tests = \ tst-bz24051 \ tst-bz24153 \ tst-bz28828 \ + tst-closeall \ tst-eof \ tst-ext \ tst-ext2 \ + tst-fclose-unopened \ tst-fdopen-seek-failure \ tst-fgetc-after-eof \ tst-fgetwc \ diff --git a/libio/bits/stdio2.h b/libio/bits/stdio2.h index 91a80dd7c6..4b8bc35bdf 100644 --- a/libio/bits/stdio2.h +++ b/libio/bits/stdio2.h @@ -308,14 +308,14 @@ fgets (__fortify_clang_overload_arg (char *, __restrict, __s), int __n, "fgets called with bigger size than length of " "destination buffer") { - size_t sz = __glibc_objsize (__s); - if (__glibc_safe_or_unknown_len (__n, sizeof (char), sz)) + size_t __sz = __glibc_objsize (__s); + if (__glibc_safe_or_unknown_len (__n, sizeof (char), __sz)) return __fgets_alias (__s, __n, __stream); #if !__fortify_use_clang - if (__glibc_unsafe_len (__n, sizeof (char), sz)) - return __fgets_chk_warn (__s, sz, __n, __stream); + if (__glibc_unsafe_len (__n, sizeof (char), __sz)) + return __fgets_chk_warn (__s, __sz, __n, __stream); #endif - return __fgets_chk (__s, sz, __n, __stream); + return __fgets_chk (__s, __sz, __n, __stream); } __fortify_function __wur __nonnull ((4)) __attribute_overloadable__ size_t @@ -326,14 +326,14 @@ fread (__fortify_clang_overload_arg (void *, __restrict, __ptr), "fread called with bigger size * n than length " "of destination buffer") { - size_t sz = __glibc_objsize0 (__ptr); - if (__glibc_safe_or_unknown_len (__n, __size, sz)) + size_t __sz = __glibc_objsize0 (__ptr); + if (__glibc_safe_or_unknown_len (__n, __size, __sz)) return __fread_alias (__ptr, __size, __n, __stream); #if !__fortify_use_clang - if (__glibc_unsafe_len (__n, __size, sz)) - return __fread_chk_warn (__ptr, sz, __size, __n, __stream); + if (__glibc_unsafe_len (__n, __size, __sz)) + return __fread_chk_warn (__ptr, __sz, __size, __n, __stream); #endif - return __fread_chk (__ptr, sz, __size, __n, __stream); + return __fread_chk (__ptr, __sz, __size, __n, __stream); } #ifdef __USE_GNU @@ -345,14 +345,14 @@ fgets_unlocked (__fortify_clang_overload_arg (char *, __restrict, __s), "fgets called with bigger size than length of " "destination buffer") { - size_t sz = __glibc_objsize (__s); - if (__glibc_safe_or_unknown_len (__n, sizeof (char), sz)) + size_t __sz = __glibc_objsize (__s); + if (__glibc_safe_or_unknown_len (__n, sizeof (char), __sz)) return __fgets_unlocked_alias (__s, __n, __stream); #if !__fortify_use_clang - if (__glibc_unsafe_len (__n, sizeof (char), sz)) - return __fgets_unlocked_chk_warn (__s, sz, __n, __stream); + if (__glibc_unsafe_len (__n, sizeof (char), __sz)) + return __fgets_unlocked_chk_warn (__s, __sz, __n, __stream); #endif - return __fgets_unlocked_chk (__s, sz, __n, __stream); + return __fgets_unlocked_chk (__s, __sz, __n, __stream); } #endif @@ -366,8 +366,8 @@ fread_unlocked (__fortify_clang_overload_arg0 (void *, __restrict, __ptr), "fread_unlocked called with bigger size * n than " "length of destination buffer") { - size_t sz = __glibc_objsize0 (__ptr); - if (__glibc_safe_or_unknown_len (__n, __size, sz)) + size_t __sz = __glibc_objsize0 (__ptr); + if (__glibc_safe_or_unknown_len (__n, __size, __sz)) { # ifdef __USE_EXTERN_INLINES if (__builtin_constant_p (__size) @@ -393,10 +393,10 @@ fread_unlocked (__fortify_clang_overload_arg0 (void *, __restrict, __ptr), return __fread_unlocked_alias (__ptr, __size, __n, __stream); } # if !__fortify_use_clang - if (__glibc_unsafe_len (__n, __size, sz)) - return __fread_unlocked_chk_warn (__ptr, sz, __size, __n, __stream); + if (__glibc_unsafe_len (__n, __size, __sz)) + return __fread_unlocked_chk_warn (__ptr, __sz, __size, __n, __stream); # endif - return __fread_unlocked_chk (__ptr, sz, __size, __n, __stream); + return __fread_unlocked_chk (__ptr, __sz, __size, __n, __stream); } #endif diff --git a/libio/freopen.c b/libio/freopen.c index c7e36db775..00f26ad578 100644 --- a/libio/freopen.c +++ b/libio/freopen.c @@ -63,6 +63,10 @@ freopen (const char *filename, const char *mode, FILE *fp) up here. */ _IO_old_file_close_it (fp); _IO_JUMPS_FUNC_UPDATE (fp, &_IO_old_file_jumps); + fp->_flags2 &= ~(_IO_FLAGS2_MMAP + | _IO_FLAGS2_NOTCANCEL + | _IO_FLAGS2_CLOEXEC); + fp->_mode = 0; result = _IO_old_file_fopen (fp, gfilename, mode); } else @@ -72,6 +76,10 @@ freopen (const char *filename, const char *mode, FILE *fp) _IO_JUMPS_FILE_plus (fp) = &_IO_file_jumps; if (_IO_vtable_offset (fp) == 0 && fp->_wide_data != NULL) fp->_wide_data->_wide_vtable = &_IO_wfile_jumps; + fp->_flags2 &= ~(_IO_FLAGS2_MMAP + | _IO_FLAGS2_NOTCANCEL + | _IO_FLAGS2_CLOEXEC); + fp->_mode = 0; result = _IO_file_fopen (fp, gfilename, mode, 1); if (result != NULL) result = __fopen_maybe_mmap (result); @@ -79,9 +87,6 @@ freopen (const char *filename, const char *mode, FILE *fp) fp->_flags2 &= ~_IO_FLAGS2_NOCLOSE; if (result != NULL) { - /* unbound stream orientation */ - result->_mode = 0; - if (fd != -1 && _IO_fileno (result) != fd) { /* At this point we have both file descriptors already allocated, @@ -108,5 +113,7 @@ freopen (const char *filename, const char *mode, FILE *fp) end: _IO_release_lock (fp); + if (result == NULL && (fp->_flags & _IO_IS_FILEBUF) != 0) + _IO_deallocate_file (fp); return result; } diff --git a/libio/freopen64.c b/libio/freopen64.c index 9a6d5ed801..77c0dd3fdf 100644 --- a/libio/freopen64.c +++ b/libio/freopen64.c @@ -56,15 +56,16 @@ freopen64 (const char *filename, const char *mode, FILE *fp) _IO_JUMPS_FILE_plus (fp) = &_IO_file_jumps; if (_IO_vtable_offset (fp) == 0 && fp->_wide_data != NULL) fp->_wide_data->_wide_vtable = &_IO_wfile_jumps; + fp->_flags2 &= ~(_IO_FLAGS2_MMAP + | _IO_FLAGS2_NOTCANCEL + | _IO_FLAGS2_CLOEXEC); + fp->_mode = 0; result = _IO_file_fopen (fp, gfilename, mode, 0); fp->_flags2 &= ~_IO_FLAGS2_NOCLOSE; if (result != NULL) result = __fopen_maybe_mmap (result); if (result != NULL) { - /* unbound stream orientation */ - result->_mode = 0; - if (fd != -1 && _IO_fileno (result) != fd) { /* At this point we have both file descriptors already allocated, @@ -91,5 +92,7 @@ freopen64 (const char *filename, const char *mode, FILE *fp) end: _IO_release_lock (fp); + if (result == NULL && (fp->_flags & _IO_IS_FILEBUF) != 0) + _IO_deallocate_file (fp); return result; } diff --git a/libio/genops.c b/libio/genops.c index 994ee9c0b1..6f20d49669 100644 --- a/libio/genops.c +++ b/libio/genops.c @@ -119,7 +119,8 @@ _IO_link_in (struct _IO_FILE_plus *fp) if (_IO_vtable_offset ((FILE *) fp) == 0) { fp->file._prevchain = (FILE **) &_IO_list_all; - _IO_list_all->file._prevchain = &fp->file._chain; + if (_IO_list_all != NULL) + _IO_list_all->file._prevchain = &fp->file._chain; } _IO_list_all = fp; #ifdef _IO_MTSAFE_IO @@ -661,7 +662,7 @@ _IO_sputbackc (FILE *fp, int c) { int result; - if (fp->_IO_read_ptr > fp->_IO_read_base + if (fp->_IO_read_ptr > fp->_IO_read_base && !_IO_in_backup (fp) && (unsigned char)fp->_IO_read_ptr[-1] == (unsigned char)c) { fp->_IO_read_ptr--; @@ -815,6 +816,12 @@ _IO_unbuffer_all (void) legacy = 1; #endif + /* Free up the backup area if it was ever allocated. */ + if (_IO_have_backup (fp)) + _IO_free_backup_area (fp); + if (!legacy && fp->_mode > 0 && _IO_have_wbackup (fp)) + _IO_free_wbackup_area (fp); + if (! (fp->_flags & _IO_UNBUFFERED) /* Iff stream is un-orientated, it wasn't used. */ && (legacy || fp->_mode != 0)) diff --git a/libio/libioP.h b/libio/libioP.h index 1af287b19f..616253fcd0 100644 --- a/libio/libioP.h +++ b/libio/libioP.h @@ -577,8 +577,8 @@ extern void _IO_old_init (FILE *fp, int flags) __THROW; ((__fp)->_wide_data->_IO_write_base \ = (__fp)->_wide_data->_IO_write_ptr = __p, \ (__fp)->_wide_data->_IO_write_end = (__ep)) -#define _IO_have_backup(fp) ((fp)->_IO_save_base != NULL) -#define _IO_have_wbackup(fp) ((fp)->_wide_data->_IO_save_base != NULL) +#define _IO_have_backup(fp) ((fp)->_IO_backup_base != NULL) +#define _IO_have_wbackup(fp) ((fp)->_wide_data->_IO_backup_base != NULL) #define _IO_in_backup(fp) ((fp)->_flags & _IO_IN_BACKUP) #define _IO_have_markers(fp) ((fp)->_markers != NULL) #define _IO_blen(fp) ((fp)->_IO_buf_end - (fp)->_IO_buf_base) diff --git a/libio/tst-closeall.c b/libio/tst-closeall.c new file mode 100644 index 0000000000..34f5246490 --- /dev/null +++ b/libio/tst-closeall.c @@ -0,0 +1,34 @@ +/* Test that opening a file when all files are closed does not crash (bug 31963) + Copyright (C) 2024 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 + <https://www.gnu.org/licenses/>. */ + +#include <support/check.h> +#include <support/xstdio.h> + +static int +do_test (void) +{ + xfclose (stdin); + xfclose (stdout); + xfclose (stderr); + FILE *f = xfopen ("/dev/null", "w"); + fprintf (f, "final\n"); + xfclose (f); + return 0; +} + +#include <support/test-driver.c> diff --git a/libio/tst-fclose-unopened.c b/libio/tst-fclose-unopened.c new file mode 100644 index 0000000000..1f1cad042d --- /dev/null +++ b/libio/tst-fclose-unopened.c @@ -0,0 +1,40 @@ +/* Test using fclose on an unopened file. + Copyright (C) 2024 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 + <https://www.gnu.org/licenses/>. */ + +#include <stdio.h> +#include <support/check.h> + +/* Verify that fclose on an unopened file returns EOF. This is not part + of the fclose external contract but there are dependancies on this + behaviour. */ + +static int +do_test (void) +{ + TEST_COMPARE (fclose (stdin), 0); + + /* Attempt to close the unopened file and verify that EOF is returned. + Calling fclose on a file twice normally causes a use-after-free bug, + however the standard streams are an exception since they are not + deallocated by fclose. */ + TEST_COMPARE (fclose (stdin), EOF); + + return 0; +} + +#include <support/test-driver.c> diff --git a/libio/tst-getdelim.c b/libio/tst-getdelim.c index e6dd964b49..db15bf9285 100644 --- a/libio/tst-getdelim.c +++ b/libio/tst-getdelim.c @@ -1,4 +1,6 @@ -/* Check that getdelim sets error indicator on error (BZ #29917) +/* Test getdelim conforming to POSIX specifications. + + Note: Most getdelim use cases are covered by stdio-common/tst-getline. Copyright (C) 2023-2024 Free Software Foundation, Inc. This file is part of the GNU C Library. @@ -18,18 +20,36 @@ <https://www.gnu.org/licenses/>. */ #include <stdio.h> +#include <stdlib.h> #include <errno.h> #include <support/check.h> +#include <support/support.h> +#include <support/test-driver.h> static int do_test (void) { + /* Check that getdelim sets error indicator on error (BZ #29917) */ clearerr (stdin); TEST_VERIFY (getdelim (0, 0, '\n', stdin) == -1); TEST_VERIFY (ferror (stdin) != 0); TEST_VERIFY (errno == EINVAL); + /* Test getdelim with NUL as delimiter */ + verbose_printf ("Testing NUL delimiter\n"); + char *lineptr = NULL; + size_t linelen = 0; + char membuf[] = "abc\0d\nef\0"; + FILE *memstream = fmemopen (membuf, sizeof (membuf), "r"); + TEST_VERIFY_EXIT (memstream != NULL); + TEST_VERIFY (getdelim (&lineptr, &linelen, '\0', memstream) != -1); + TEST_COMPARE_BLOB (lineptr, 4, "abc\0", 4); + TEST_VERIFY (getdelim (&lineptr, &linelen, '\0', memstream) != -1); + TEST_COMPARE_BLOB (lineptr, 5, "d\nef\0", 5); + fclose (memstream); + free (lineptr); + return 0; } diff --git a/locale/tst-localedef-path-norm.c b/locale/tst-localedef-path-norm.c index ffe8cbd467..f592b9a960 100644 --- a/locale/tst-localedef-path-norm.c +++ b/locale/tst-localedef-path-norm.c @@ -84,7 +84,7 @@ run_test (void *closure) support_capture_subprocess_free (&result); /* Verify path is present and is a directory. */ - xstat (path, &fs); + xstat64 (path, &fs); if (!S_ISDIR (fs.st_mode)) { support_record_failure (); diff --git a/localedata/tst-ctype.c b/localedata/tst-ctype.c index 9de979a2d7..a23689719c 100644 --- a/localedata/tst-ctype.c +++ b/localedata/tst-ctype.c @@ -21,6 +21,8 @@ #include <stdio.h> #include <string.h> +#include <support/check.h> + static const char lower[] = "abcdefghijklmnopqrstuvwxyz"; static const char upper[] = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; @@ -53,19 +55,11 @@ static struct classes #define nclasses (sizeof (classes) / sizeof (classes[0])) -#define FAIL(str, args...) \ - { \ - printf (" " str "\n", ##args); \ - ++errors; \ - } - - static int do_test (void) { const char *cp; const char *cp2; - int errors = 0; char *inpline = NULL; size_t inplinelen = 0; char *resline = NULL; @@ -394,11 +388,8 @@ punct = %04x alnum = %04x\n", { if (((__ctype_b[(unsigned int) *inp] & classes[n].mask) != 0) != (*resp != '0')) - { - printf (" is%s('%c' = '\\x%02x') %s true\n", inpline, - *inp, *inp, *resp == '1' ? "not" : "is"); - ++errors; - } + FAIL (" is%s('%c' = '\\x%02x') %s true\n", inpline, + *inp, *inp, *resp == '1' ? "not" : "is"); ++inp; ++resp; } @@ -408,11 +399,8 @@ punct = %04x alnum = %04x\n", while (*inp != '\0') { if (tolower (*inp) != *resp) - { - printf (" tolower('%c' = '\\x%02x') != '%c'\n", - *inp, *inp, *resp); - ++errors; - } + FAIL (" tolower('%c' = '\\x%02x') != '%c'\n", + *inp, *inp, *resp); ++inp; ++resp; } @@ -422,11 +410,8 @@ punct = %04x alnum = %04x\n", while (*inp != '\0') { if (toupper (*inp) != *resp) - { - printf (" toupper('%c' = '\\x%02x') != '%c'\n", - *inp, *inp, *resp); - ++errors; - } + FAIL (" toupper('%c' = '\\x%02x') != '%c'\n", + *inp, *inp, *resp); ++inp; ++resp; } @@ -436,14 +421,7 @@ punct = %04x alnum = %04x\n", } - if (errors != 0) - { - printf (" %d error%s for `%s' locale\n\n\n", errors, - errors == 1 ? "" : "s", setlocale (LC_ALL, NULL)); - return 1; - } - - printf (" No errors for `%s' locale\n\n\n", setlocale (LC_ALL, NULL)); + printf ("Completed testing for `%s' locale\n\n\n", setlocale (LC_ALL, NULL)); return 0; } diff --git a/localedata/tst-localedef-hardlinks.c b/localedata/tst-localedef-hardlinks.c index e88215a150..23927b462f 100644 --- a/localedata/tst-localedef-hardlinks.c +++ b/localedata/tst-localedef-hardlinks.c @@ -62,7 +62,7 @@ check_link (struct test_data step) char *output; output = xasprintf ("%s/%s", support_complocaledir_prefix, step.output); - xstat (output, &locale); + xstat64 (output, &locale); free (output); TEST_COMPARE (locale.st_nlink, step.st_nlink); } diff --git a/login/Makefile b/login/Makefile index 84563230ef..679a69e4d9 100644 --- a/login/Makefile +++ b/login/Makefile @@ -23,29 +23,71 @@ subdir := login include ../Makeconfig -headers := utmp.h bits/utmp.h lastlog.h pty.h - -routines := getlogin getlogin_r setlogin getlogin_r_chk \ - getutent getutent_r getutid getutline getutid_r getutline_r \ - utmp_file utmpname updwtmp getpt grantpt unlockpt ptsname \ - ptsname_r_chk login login_tty logout logwtmp openpty forkpty +headers := \ + bits/utmp.h \ + lastlog.h \ + pty.h \ + utmp.h \ + # headers + +routines := \ + forkpty \ + getlogin \ + getlogin_r \ + getlogin_r_chk \ + getpt \ + getutent \ + getutent_r \ + getutid \ + getutid_r \ + getutline \ + getutline_r \ + grantpt \ + login \ + login_tty \ + logout \ + logwtmp \ + openpty \ + ptsname \ + ptsname_r_chk \ + setlogin \ + unlockpt \ + updwtmp \ + utmp_file \ + utmpname \ + # routines CFLAGS-grantpt.c += -DLIBEXECDIR='"$(libexecdir)"' others = utmpdump ifeq (yes,$(build-pt-chown)) -others += pt_chown -others-pie = pt_chown +others += \ + pt_chown \ + # others +others-pie = \ + pt_chown \ + # others-pie install-others-programs = $(inst_libexecdir)/pt_chown endif subdir-dirs = programs vpath %.c programs -tests := tst-utmp tst-utmpx tst-grantpt tst-ptsname tst-getlogin tst-updwtmpx \ - tst-pututxline-lockfail tst-pututxline-cache tst-utmp-size tst-utmp-size-64 \ - tst-utmp-unsigned tst-utmp-unsigned-64 +tests := \ + tst-getlogin \ + tst-grantpt \ + tst-ptsname \ + tst-pututxline-cache \ + tst-pututxline-lockfail \ + tst-updwtmpx \ + tst-utmp \ + tst-utmp-size \ + tst-utmp-size-64 \ + tst-utmp-unsigned \ + tst-utmp-unsigned-64 \ + tst-utmpx \ + # tests CFLAGS-tst-utmp-size-64.c += -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 CFLAGS-tst-utmp-unsigned-64.c += -D_FILE_OFFSET_BITS=64 -D_TIME_BITS=64 diff --git a/malloc/Makefile b/malloc/Makefile index 02aff1bd1d..1630aaf6ac 100644 --- a/malloc/Makefile +++ b/malloc/Makefile @@ -28,6 +28,8 @@ tests := \ mallocbug \ tst-aligned-alloc \ tst-aligned-alloc-random \ + tst-aligned-alloc-random-thread \ + tst-aligned-alloc-random-thread-cross \ tst-alloc_buffer \ tst-calloc \ tst-free-errno \ @@ -151,6 +153,8 @@ ifeq ($(have-GLIBC_2.23)$(build-shared),yesyes) # the tests expect specific internal behavior that is changed due to linking to # libmcheck.a. tests-exclude-mcheck = \ + tst-aligned-alloc-random-thread \ + tst-aligned-alloc-random-thread-cross \ tst-compathooks-off \ tst-compathooks-on \ tst-malloc-backtrace \ @@ -415,7 +419,19 @@ $(objpfx)tst-mallocstate: $(objpfx)libc_malloc_debug.so $(objpfx)tst-mallocstate-malloc-check: $(objpfx)libc_malloc_debug.so $(objpfx)tst-aligned-alloc-random.out: $(objpfx)tst-aligned_alloc-lib.so +$(objpfx)tst-aligned-alloc-random-thread: $(shared-thread-library) +$(objpfx)tst-aligned-alloc-random-thread-malloc-check: $(shared-thread-library) +$(objpfx)tst-aligned-alloc-random-thread-malloc-hugetlb1: $(shared-thread-library) +$(objpfx)tst-aligned-alloc-random-thread-malloc-hugetlb2: $(shared-thread-library) +$(objpfx)tst-aligned-alloc-random-thread.out: $(objpfx)tst-aligned_alloc-lib.so +$(objpfx)tst-aligned-alloc-random-thread-cross: $(shared-thread-library) +$(objpfx)tst-aligned-alloc-random-thread-cross-malloc-check: $(shared-thread-library) +$(objpfx)tst-aligned-alloc-random-thread-cross-malloc-hugetlb1: $(shared-thread-library) +$(objpfx)tst-aligned-alloc-random-thread-cross-malloc-hugetlb2: $(shared-thread-library) +$(objpfx)tst-aligned-alloc-random-thread-cross.out: $(objpfx)tst-aligned_alloc-lib.so $(objpfx)tst-malloc-random.out: $(objpfx)tst-aligned_alloc-lib.so tst-aligned-alloc-random-ENV = LD_PRELOAD=$(objpfx)tst-aligned_alloc-lib.so +tst-aligned-alloc-random-thread-ENV = LD_PRELOAD=$(objpfx)tst-aligned_alloc-lib.so +tst-aligned-alloc-random-thread-cross-ENV = LD_PRELOAD=$(objpfx)tst-aligned_alloc-lib.so tst-malloc-random-ENV = LD_PRELOAD=$(objpfx)tst-aligned_alloc-lib.so diff --git a/malloc/memusage.c b/malloc/memusage.c index e8ae80dc74..f80225b95a 100644 --- a/malloc/memusage.c +++ b/malloc/memusage.c @@ -172,7 +172,7 @@ update_data (struct header *result, size_t len, size_t old_len) start_sp = __thread_stack_pointer (); uintptr_t sp = __thread_stack_pointer (); -#ifdef _STACK_GROWS_UP +#if _STACK_GROWS_UP /* This can happen in threads where we didn't catch the thread's stack early enough. */ if (__glibc_unlikely (sp < start_sp)) diff --git a/malloc/tst-aligned-alloc-random-thread-cross.c b/malloc/tst-aligned-alloc-random-thread-cross.c new file mode 100644 index 0000000000..360ecc56ee --- /dev/null +++ b/malloc/tst-aligned-alloc-random-thread-cross.c @@ -0,0 +1,19 @@ +/* multi-threaded memory allocation and cross-thread deallocation test. + Copyright (C) 2024 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; see the file COPYING.LIB. If + not, see <https://www.gnu.org/licenses/>. */ +#define CROSS_THREAD_DEALLOC +#include "tst-aligned-alloc-random-thread.c" diff --git a/malloc/tst-aligned-alloc-random-thread.c b/malloc/tst-aligned-alloc-random-thread.c new file mode 100644 index 0000000000..e95f79250a --- /dev/null +++ b/malloc/tst-aligned-alloc-random-thread.c @@ -0,0 +1,145 @@ +/* multi-threaded memory allocation/deallocation test. + Copyright (C) 2024 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; see the file COPYING.LIB. If + not, see <https://www.gnu.org/licenses/>. */ + +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <support/check.h> +#include <support/support.h> +#include <support/xthread.h> +#include <support/test-driver.h> +#include <sys/sysinfo.h> +#include <unistd.h> + +#ifndef ITERATIONS +# define ITERATIONS 16 +#endif + +#ifndef NUM_THREADS +# define NUM_THREADS 8 +#endif + +#ifndef NUM_ALLOCATIONS +# define NUM_ALLOCATIONS 2048 +#endif + +static pthread_barrier_t barrier; + +__thread unsigned int seed; + +typedef struct +{ + int id; + pthread_t thread; +} thread; + +thread threads[NUM_THREADS]; + +void *allocations[NUM_THREADS][NUM_ALLOCATIONS]; + +void +run_thread_dealloc (int id) +{ + for (int i = 0; i < NUM_ALLOCATIONS; i++) + { + free (allocations[id][i]); + allocations[id][i] = NULL; + } +} + +void +run_thread_alloc (int id) +{ + size_t msb, size; + for (int i = 0; i < NUM_ALLOCATIONS; i++) + { + msb = 1 << rand_r (&seed) % 16; + size = msb + rand_r (&seed) % msb; + allocations[id][i] = malloc (size); + TEST_VERIFY_EXIT (allocations[id][i] != NULL); + } +} + +void * +run_allocations (void *arg) +{ + int id = *((int *) arg); + seed = time (NULL) + id; + + /* Stage 1: First half o the threads allocating memory and the second + * half waiting for them to finish + */ + if (id < NUM_THREADS / 2) + run_thread_alloc (id); + + xpthread_barrier_wait (&barrier); + + /* Stage 2: Half of the threads allocationg memory and the other + * half deallocating: + * - In the non cross-thread dealloc scenario the first half will be + * deallocating the memory allocated by themselves in stage 1 and the + * second half will be allocating memory. + * - In the cross-thread dealloc scenario the first half will continue + * to allocate memory and the second half will deallocate the memory + * allocated by the first half in stage 1. + */ + if (id < NUM_THREADS / 2) +#ifndef CROSS_THREAD_DEALLOC + run_thread_dealloc (id); +#else + run_thread_alloc (id + NUM_THREADS / 2); +#endif + else +#ifndef CROSS_THREAD_DEALLOC + run_thread_alloc (id); +#else + run_thread_dealloc (id - NUM_THREADS / 2); +#endif + + xpthread_barrier_wait (&barrier); + + // Stage 3: Second half of the threads deallocating and the first half + // waiting for them to finish. + if (id >= NUM_THREADS / 2) + run_thread_dealloc (id); + + return NULL; +} + +static int +do_test (void) +{ + xpthread_barrier_init (&barrier, NULL, NUM_THREADS); + + for (int i = 0; i < ITERATIONS; i++) + { + for (int t = 0; t < NUM_THREADS; t++) + { + threads[t].id = t; + threads[t].thread + = xpthread_create (NULL, run_allocations, &threads[t].id); + } + + for (int t = 0; t < NUM_THREADS; t++) + xpthread_join (threads[t].thread); + } + + return 0; +} + +#include <support/test-driver.c> diff --git a/malloc/tst-aligned_alloc-lib.c b/malloc/tst-aligned_alloc-lib.c index 0205df5acf..9ef1f839c1 100644 --- a/malloc/tst-aligned_alloc-lib.c +++ b/malloc/tst-aligned_alloc-lib.c @@ -17,37 +17,38 @@ License along with the GNU C Library; see the file COPYING.LIB. If not, see <https://www.gnu.org/licenses/>. */ -#include <array_length.h> #include <libc-symbols.h> #include <stdlib.h> +#include <time.h> extern void *__libc_malloc (size_t size); extern void *__libc_calloc (size_t n, size_t size); +__thread unsigned int seed = 0; + int aligned_alloc_count = 0; int libc_malloc_count = 0; int libc_calloc_count = 0; -/* Get a random alignment value. Biased towards the smaller values. Must be - a power of 2. */ -static size_t get_random_alignment (void) -{ - size_t aligns[] = { - 1, 2, 4, 8, 16, 32, 64, 128, 256, 512, 1024, 2048, 4096, 8192, 16384 - }; - - return aligns[random () % array_length (aligns)]; -} - -static void *get_random_alloc (size_t size) +static void * +get_random_alloc (size_t size) { void *retval; size_t align; + struct timespec tp; + + if (seed == 0) + { + clock_gettime (CLOCK_REALTIME, &tp); + seed = tp.tv_nsec; + } - switch (random() % 3) - { + switch (rand_r (&seed) % 3) + { case 1: - align = get_random_alignment (); + /* Get a random alignment value. Biased towards the smaller + * values up to 16384. Must be a power of 2. */ + align = 1 << rand_r (&seed) % 15; retval = aligned_alloc (align, size); aligned_alloc_count++; break; @@ -59,13 +60,13 @@ static void *get_random_alloc (size_t size) retval = __libc_malloc (size); libc_malloc_count++; break; - } + } return retval; } - -void * __random_malloc (size_t size) +void * +__random_malloc (size_t size) { return get_random_alloc (size); } diff --git a/manual/Makefile b/manual/Makefile index b5fda4a7ae..a6c05db540 100644 --- a/manual/Makefile +++ b/manual/Makefile @@ -117,6 +117,7 @@ $(objpfx)stamp-pkgvers: $(common-objpfx)config.make echo "@set PKGVERSION_DEFAULT" >> $(objpfx)pkgvers-tmp; \ fi echo "@set REPORT_BUGS_TO $(REPORT_BUGS_TEXI)" >> $(objpfx)pkgvers-tmp + echo "@set man_pages_version $(man-pages-version)" >> $(objpfx)pkgvers-tmp; \ echo "@end ifclear" >> $(objpfx)pkgvers-tmp $(move-if-change) $(objpfx)pkgvers-tmp $(objpfx)pkgvers.texi touch $@ diff --git a/manual/contrib.texi b/manual/contrib.texi index 5b2710f0ba..d947166f0f 100644 --- a/manual/contrib.texi +++ b/manual/contrib.texi @@ -16,6 +16,9 @@ Nick Alcock for contributing fixes to allow @theglibc{} to be built with the stack smashing protector enabled. @item +Amrita H. S. for contributions to the PowerPC port. + +@item John David Anglin for various fixes to the hppa port. @item @@ -180,6 +183,9 @@ for ISO 14651, for updating the library Unicode support, and for many locale updates and fixes. @item +Gabi Falk for various fixes. + +@item Tulio Magno Quites Machado Filho for adding a new class of installed headers for low-level platform-specific functionality, including the low-level platform-specific headers for PowerPC, for their maintainership @@ -224,6 +230,9 @@ Torbj@"orn Granlund for fast implementations of many of the string functions (@code{memcpy}, @code{strlen}, etc.). @item +Evan Green for work on the RISC-V port. + +@item Vineet Gupta for their maintainership of the ARC port. @item @@ -349,7 +358,7 @@ Hongjiu Lu for providing the support for a Linux 32-bit runtime environment under x86-64 (x32), for porting to Linux on IA64, for improved string functions, a framework for testing IFUNC implementations, for implementing Intel Control-Flow Enforcement -Technology, and many bug fixes. +Technology, many x86-64 improvements, and many bug fixes. @item Rafa@l{} Lu@dotaccent{z}y@'nski @@ -370,6 +379,9 @@ function and writing the @file{tar.h} header. Lukasz Majewski for Y2038 related fixes. @item +Manjunath Matti for contributions to the PowerPC port. + +@item Greg McGary for adding runtime support for bounds checking. @item @@ -382,6 +394,9 @@ fixes and reviewing of contributions. Allan McRae for various fixes. @item +Meng Qinggang for contributions to the LoongArch port. + +@item Jason Merrill for the port to the Sequent Symmetry running Dynix version 3 (@code{i386-sequent-bsd}). @@ -439,7 +454,7 @@ and his direction as FSF Project Steward for @theglibc{}. Marko Myllynen for various fixes. @item -Szabolcs Nagy for various fixes and contributions to AArch64. +Szabolcs Nagy for many fixes and contributions to AArch64. @item Nab for various fixes. @@ -461,12 +476,15 @@ safety documentation in the manual, for his direction as FSF Project Maintainer and for various fixes. @item -Sunil K. Pandey for various fixes. +Sunil K. Pandey for many fixes. @item Ronan Pigott for various fixes. @item +Andrew Pinski for contributions to the AArch64 port. + +@item Paul Pluzhnikov for various fixes. @item @@ -605,7 +623,7 @@ fixes. Mark Wielaard for various fixes. @item -Xi Ruoyao for various fixes. +Xi Ruoyao for various fixes and work on the loongarch port. @item Qixing ksyx Xue for various fixes. @@ -617,12 +635,18 @@ Adam Yi for various fixes. Eric Youngdale for implementing versioning of objects on the symbol level. @item +YunQiang Su for work on the MIPS port. + +@item Adhemerval Zanella for optimized functions on PowerPC, ISO C threads support, -the work on tunables, and numerous contributions and fixes. +the work on tunables, fortify improvements, and numerous contributions and fixes. @item Xuelei Zhang for optimized functions on AArch64. +@item +Junxian Zhu for work on the MIPS port. + @end itemize Some code in @theglibc{} comes from other projects and might be under diff --git a/manual/dynlink.texi b/manual/dynlink.texi index 03565d4fb0..1500a53de6 100644 --- a/manual/dynlink.texi +++ b/manual/dynlink.texi @@ -993,21 +993,21 @@ The dynamic segment should also mention @code{BIND_NOW} on the enough). @item -For shared objects (not main programs), if the program header has a -@code{PT_TLS} segment, the dynamic segment (as shown by @samp{readelf --dW}) should contain the @code{STATIC_TLS} flag on the @code{FLAGS} -line. - -If @code{STATIC_TLS} is missing in shared objects, ensure that the -appropriate relocations for GNU2 TLS descriptors are used (for example, +Ensure that only static TLS relocations (thread-pointer relative offset +locations) are used, for example @code{R_AARCH64_TLS_TPREL} and +@code{X86_64_TPOFF64}. As the second-best option, and only if +compatibility with non-hardened applications using @code{dlopen} is +needed, GNU2 TLS descriptor relocations can be used (for example, @code{R_AARCH64_TLSDESC} or @code{R_X86_64_TLSDESC}). @item -There should not be a reference to the symbols @code{__tls_get_addr}, -@code{__tls_get_offset}, @code{__tls_get_addr_opt} in the dynamic symbol -table (in the @samp{readelf -sDW} output). Thread-local storage must be -accessed using the initial-exec (static) model, or using GNU2 TLS -descriptors. +There should not be references to the traditional TLS function symbols +@code{__tls_get_addr}, @code{__tls_get_offset}, +@code{__tls_get_addr_opt} in the dynamic symbol table (in the +@samp{readelf -sDW} output). Supporting global dynamic TLS relocations +(such as @code{R_AARCH64_TLS_DTPMOD}, @code{R_AARCH64_TLS_DTPREL}, +@code{R_X86_64_DTPMOD64}, @code{R_X86_64_DTPOFF64}) should not be used, +either. @item Likewise, the functions @code{dlopen}, @code{dlmopen}, @code{dlclose} diff --git a/manual/filesys.texi b/manual/filesys.texi index 47d929744e..aabb68385b 100644 --- a/manual/filesys.texi +++ b/manual/filesys.texi @@ -15,6 +15,7 @@ access permissions and modification times. @menu * Working Directory:: This is used to resolve relative file names. +* Descriptor-Relative Access:: Ways to control file name lookup. * Accessing Directories:: Finding out what files a directory contains. * Working with Directory Trees:: Apply actions to all files or a selectable @@ -206,6 +207,151 @@ An I/O error occurred. @end table @end deftypefun +@node Descriptor-Relative Access +@section Descriptor-Relative Access +@cindex file name resolution based on descriptors +@cindex descriptor-based file name resolution +@cindex @code{@dots{}at} functions + +Many functions that accept file names have @code{@dots{}at} variants +which accept a file descriptor and a file name argument instead of just +a file name argument. For example, @code{fstatat} is the +descriptor-based variant of the @code{fstat} function. Most such +functions also accept an additional flags argument which changes the +behavior of the file name lookup based on the passed @code{AT_@dots{}} +flags. + +There are several reasons to use descriptor-relative access: + +@itemize @bullet +@item +The working directory is a process-wide resource, so individual threads +cannot change it without affecting other threads in the process. +Explicitly specifying the directory against which relative paths are +resolved can be a thread-safe alternative to changing the working +directory. + +@item +If a program wishes to access a directory tree which is being modified +concurrently, perhaps even by a different user on the system, the +program must avoid looking up file names with multiple components, in +order to detect symbolic links, using the @code{O_NOFOLLOW} flag +(@pxref{Open-time Flags}) or the @code{AT_SYMLINK_FOLLOW} flag +(described below). Without directory-relative access, it is necessary +to use the @code{fchdir} function to change the working directory +(@pxref{Working Directory}), which is not thread-safe. + +@item +Listing directory contents using the @code{readdir} or @code{readdir64} +functions (@pxref{Reading/Closing Directory}) does not provide full file +name paths. Using @code{@dots{}at} functions, it is possible to use the +file names directly, without having to construct such full paths. + +@item +Additional flags available with some of the @code{@dots{}at} functions +provide access to functionality which is not available otherwise. +@end itemize + +The file descriptor used by these @code{@dots{}at} functions has the +following uses: + +@itemize @bullet +@item +It can be a file descriptor referring to a directory. Such a descriptor +can be created explicitly using the @code{open} function and the +@code{O_RDONLY} file access mode, with or without the @code{O_DIRECTORY} +flag. @xref{Opening and Closing Files}. Or it can be created +implicitly by @code{opendir} and retrieved using the @code{dirfd} +function. @xref{Opening a Directory}. + +If a directory descriptor is used with one of the @code{@dots{}at} +functions, a relative file name argument is resolved relative to +directory referred to by the file descriptor, just as if that directory +were the current working directory. Absolute file name arguments +(starting with @samp{/}) are resolved against the file system root, and +the descriptor argument is effectively ignored. + +This means that file name lookup is not constrained to the directory of +the descriptor. For example, it is possible to access a file +@file{example} in the descriptor's parent directory using a file name +argument @code{"../example"}, or in the root directory using +@code{"/example"}. + +If the file descriptor refers to a directory, the empty string @code{""} +is not a valid file name argument. It is possible to use @code{"."} to +refer to the directory itself. Also see @code{AT_EMPTY_PATH} below. + +@item +@vindex @code{AT_FDCWD} +The special value @code{AT_FDCWD}. This means that the current working +directory is used for the lookup if the file name is a relative. For +@code{@dots{}at} functions with an @code{AT_@dots{}} flags argument, +this provides a shortcut to use those flags with regular (not +descriptor-based) file name lookups. + +If @code{AT_FDCWD} is used, the empty string @code{""} is not a valid +file name argument. + +@item +An arbitrary file descriptor, along with an empty string @code{""} as +the file name argument, and the @code{AT_EMPTY_PATH} flag. In this +case, the operation uses the file descriptor directly, without further +file name resolution. On Linux, this allows operations on descriptors +opened with the @code{O_PATH} flag. For regular descriptors (opened +without @code{O_PATH}), the same functionality is also available through +the plain descriptor-based functions (for example, @code{fstat} instead +of @code{fstatat}). + +This is a GNU extension. +@end itemize + +@cindex file name resolution flags +@cindex @code{AT_*} file name resolution flags +The flags argument in @code{@dots{}at} functions can be a combination of +the following flags, defined in @file{fcntl.h}. Not all such functions +support all flags, and some (such as @code{openat}) do not accept a +flags argument at all. + +In the flag descriptions below, the @dfn{effective final path component} +refers to the final component (basename) of the full path constructed +from the descriptor and file name arguments, using file name lookup, as +described above. + +@vtable @code +@item AT_EMPTY_PATH +This flag is used with an empty file name @code{""} and a descriptor +which does not necessarily refer to a directory. It is most useful with +@code{O_PATH} descriptors, as described above. This flag is a GNU +extension. + +@item AT_NO_AUTOMOUNT +If the effective final path component refers to a potential file system +mount point controlled by an auto-mounting service, the operation does +not trigger auto-mounting and refers to the unmounted mount point +instead. @xref{Mount-Unmount-Remount}. If a file system has already +been mounted at the effective final path component, the operation +applies to the file or directory in the mounted file system, not the +underlying file system that was mounted over. This flag is a GNU +extension. + +@item AT_SYMLINK_FOLLOW +If the effective final path component is a symbolic link, the +operation follows the symbolic link and operates on its target. (For +most functions, this is the default behavior.) + +@item AT_SYMLINK_NOFOLLOW +If the effective final path component is a symbolic link, the +operation operates on the symbolic link, without following it. The +difference in behavior enabled by this flag is similar to the difference +between the @code{lstat} and @code{stat} functions, or the behavior +activated by the @code{O_NOFOLLOW} argument to the @code{open} function. +Even with the @code{AT_SYMLINK_NOFOLLOW} flag present, symbolic links in +a non-final component of the file name are still followed. +@end vtable + +@strong{Note:} There is no relationship between these flags and the type +argument to the @code{getauxval} function (with @code{AT_@dots{}} +constants defined in @file{elf.h}). @xref{Auxiliary Vector}. @node Accessing Directories @section Accessing Directories @@ -1250,10 +1396,11 @@ A hardware error occurred while trying to read or write the to filesystem. The @code{linkat} function is analogous to the @code{link} function, except that it identifies its source and target using a combination of a -file descriptor (referring to a directory) and a pathname. If a -pathnames is not absolute, it is resolved relative to the corresponding -file descriptor. The special file descriptor @code{AT_FDCWD} denotes -the current directory. +file descriptor (referring to a directory) and a file name. +@xref{Descriptor-Relative Access}. For @code{linkat}, if a file name is +not absolute, it is resolved relative to the corresponding file +descriptor. As usual, the special value @code{AT_FDCWD} denotes the +current directory. The @var{flags} argument is a combination of the following flags: @@ -2091,9 +2238,44 @@ function is available under the name @code{fstat} and so transparently replaces the interface for small files on 32-bit machines. @end deftypefun -@c fstatat will call alloca and snprintf if the syscall is not -@c available. -@c @safety{@mtsafe{}@asunsafe{@ascuheap{}}@acunsafe{@acsmem{}}} +@deftypefun int fstatat (int @var{filedes}, const char *@var{filename}, struct stat *@var{buf}, int @var{flags}) +@standards{POSIX.1, sys/stat.h} +@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}} +This function is a descriptor-relative version of the @code{fstat} +function above. @xref{Descriptor-Relative Access}. The @var{flags} +argument can contain a combination of the flags @code{AT_EMPTY_PATH}, +@code{AT_NO_AUTOMOUNT}, @code{AT_SYMLINK_NOFOLLOW}. + +Compared to @code{fstat}, the following additional error conditions can +occur: + +@table @code +@item EBADF +The @var{filedes} argument is not a valid file descriptor. + +@item EINVAL +The @var{flags} argument is not valid for this function. + +@item ENOTDIR +The descriptor @var{filedes} is not associated with a directory, and +@var{filename} is a relative file name. +@end table + +When the sources are compiled with @code{_FILE_OFFSET_BITS == 64} this +function is in fact @code{fstatat64} since the LFS interface transparently +replaces the normal implementation. +@end deftypefun + +@deftypefun int fstatat64 (int @var{filedes}, const char *@var{filename}, struct stat64 *@var{buf}, int @var{flags}) +@standards{GNU, sys/stat.h} +@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}} +This function is the large-file variant of @code{fstatat}, similar to +how @code{fstat64} is the variant of @code{fstat}. + +When the sources are compiled with @code{_FILE_OFFSET_BITS == 64} this +function is available under the name @code{fstatat} and so transparently +replaces the interface for small files on 32-bit machines. +@end deftypefun @deftypefun int lstat (const char *@var{filename}, struct stat *@var{buf}) @standards{BSD, sys/stat.h} diff --git a/manual/install.texi b/manual/install.texi index a7847b02c0..3e68a3d823 100644 --- a/manual/install.texi +++ b/manual/install.texi @@ -527,7 +527,7 @@ GCC 6.2 or newer GCC 6.2 or higher is required. In general it is recommended to use the newest version of the compiler that is known to work for building @theglibc{}, as newer compilers usually produce better code. As of -release time, GCC 13.2 is the newest compiler verified to work to build +release time, GCC 14.1 is the newest compiler verified to work to build @theglibc{}. For PowerPC 64-bits little-endian (powerpc64le), a GCC version with support @@ -582,7 +582,7 @@ To correctly translate and install the Texinfo documentation you need this version of the @code{texinfo} package. Earlier versions do not understand all the tags used in the document, and the installation mechanism for the info files is not present or works differently. -As of release time, @code{texinfo} 7.0.3 is the newest verified to work +As of release time, @code{texinfo} 7.1 is the newest verified to work to build @theglibc{}. @item @@ -591,7 +591,7 @@ GNU @code{awk} 3.1.2, or higher @code{awk} is used in several places to generate files. Some @code{gawk} extensions are used, including the @code{asorti} function, which was introduced in version 3.1.2 of @code{gawk}. -As of release time, @code{gawk} version 5.2.2 is the newest verified +As of release time, @code{gawk} version 5.3.0 is the newest verified to work to build @theglibc{}. @item @@ -606,7 +606,7 @@ Perl 5 Perl is not required, but if present it is used in some tests and the @code{mtrace} program, to build the @glibcadj{} manual. As of release -time @code{perl} version 5.38.2 is the newest verified to work to +time @code{perl} version 5.40.0 is the newest verified to work to build @theglibc{}. @item @@ -620,7 +620,7 @@ with any version of @code{sed}. As of release time, @code{sed} version Python 3.4 or later Python is required to build @theglibc{}. As of release time, Python -3.11 is the newest verified to work for building and testing +3.12 is the newest verified to work for building and testing @theglibc{}. @item PExpect 4.0 @@ -628,7 +628,7 @@ Python is required to build @theglibc{}. As of release time, Python The pretty printer tests drive GDB through test programs and compare its output to the printers'. PExpect is used to capture the output of GDB, and should be compatible with the Python version in your system. -As of release time PExpect 4.8.0 is the newest verified to work to test +As of release time PExpect 4.9.0 is the newest verified to work to test the pretty printers. @item @@ -646,7 +646,7 @@ GDB itself needs to be configured with Python support in order to use the pretty printers. Notice that your system having Python available doesn't imply that GDB supports it, nor that your system's Python and GDB's have the same version. As of release time GNU @code{debugger} -13.2 is the newest verified to work to test the pretty printers. +14.2 is the newest verified to work to test the pretty printers. Unless Python, PExpect and GDB with Python support are present, the printer tests will report themselves as @code{UNSUPPORTED}. Notice @@ -669,7 +669,7 @@ and if you change any of the message translation files you will need @item GNU @code{gettext} 0.10.36 or later -As of release time, GNU @code{gettext} version 0.21.1 is the newest +As of release time, GNU @code{gettext} version 0.22.4 is the newest version verified to work to build @theglibc{}. @end itemize @@ -721,7 +721,7 @@ if you configure @theglibc{} with @samp{--prefix=/usr}. If you set some other prefix or allow it to default to @file{/usr/local}, then all the components are installed there. -As of release time, Linux version 6.1.5 is the newest stable version verified +As of release time, Linux version 6.6 is the newest stable version verified to work to build @theglibc{}. @node Reporting Bugs diff --git a/manual/intro.texi b/manual/intro.texi index ff43c5a7fb..879c1b38d9 100644 --- a/manual/intro.texi +++ b/manual/intro.texi @@ -85,6 +85,7 @@ standards each function or symbol comes from. * Berkeley Unix:: BSD and SunOS. * SVID:: The System V Interface Description. * XPG:: The X/Open Portability Guide. +* Linux Kernel:: The Linux kernel. @end menu @node ISO C, POSIX, , Standards and Portability @@ -941,7 +942,7 @@ inter-process communication and shared memory, the @code{hsearch} and @code{drand48} families of functions, @code{fmtmsg} and several of the mathematical functions. -@node XPG, , SVID, Standards and Portability +@node XPG, Linux Kernel, SVID, Standards and Portability @subsection XPG (The X/Open Portability Guide) The X/Open Portability Guide, published by the X/Open Company, Ltd., is @@ -960,6 +961,20 @@ fulfilling the XPG standard with the Unix extensions is a precondition for getting the Unix brand chances are good that the functionality is available on commercial systems. +@node Linux Kernel, , XPG, Standards and Portability +@subsection Linux (The Linux Kernel) + +@Theglibc{} includes by reference the Linux man-pages +@value{man_pages_version} documentation to document the listed +syscalls for the Linux kernel. For reference purposes only the latest +@uref{https://www.kernel.org/doc/man-pages/,Linux man-pages Project} +documentation can be accessed from the +@uref{https://www.kernel.org,Linux kernel} website. Where the syscall +has more specific documentation in this manual that more specific +documentation is considered authoritative. + +Additional details on the Linux system call interface can be found in +@xref{System Calls}. @node Using the Library, Roadmap to the Manual, Standards and Portability, Introduction @section Using the Library diff --git a/manual/llio.texi b/manual/llio.texi index 78c7c79913..a035c3e20f 100644 --- a/manual/llio.texi +++ b/manual/llio.texi @@ -65,6 +65,7 @@ directly.) * Interrupt Input:: Getting an asynchronous signal when input arrives. * IOCTLs:: Generic I/O Control operations. +* Other Low-Level I/O APIs:: Other low-level-I/O-related functions. @end menu @@ -180,6 +181,43 @@ new, extended API using 64 bit file sizes and offsets transparently replaces the old API. @end deftypefun +@deftypefun int openat (int @var{filedes}, const char *@var{filename}, int @var{flags}[, mode_t @var{mode}]) +@standards{POSIX.1, fcntl.h} +@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{@acsfd{}}} +This function is the descriptor-relative variant of the @code{open} +function. @xref{Descriptor-Relative Access}. + +Note that the @var{flags} argument of @code{openat} does not accept +@code{AT_@dots{}} flags, only the flags described for the @code{open} +function above. + +The @code{openat} function can fail for additional reasons: + +@table @code +@item EBADF +The @var{filedes} argument is not a valid file descriptor. + +@item ENOTDIR +The descriptor @var{filedes} is not associated with a directory, and +@var{filename} is a relative file name. +@end table + +When the sources are compiled with @code{_FILE_OFFSET_BITS == 64} this +function is in fact @code{openat64} since the LFS interface transparently +replaces the normal implementation. +@end deftypefun + +@deftypefun int openat64 (int @var{filedes}, const char *@var{filename}, int @var{flags}[, mode_t @var{mode}]) +@standards{GNU, fcntl.h} +The large-file variant of the @code{openat}, similar to how +@code{open64} is the large-file variant of @code{open}. + +When the sources are translated with @code{_FILE_OFFSET_BITS == 64} this +function is actually available under the name @code{openat}. I.e., the +new, extended API using 64 bit file sizes and offsets transparently +replaces the old API. +@end deftypefun + @deftypefn {Obsolete function} int creat (const char *@var{filename}, mode_t @var{mode}) @standards{POSIX.1, fcntl.h} @safety{@prelim{}@mtsafe{}@assafe{}@acsafe{@acsfd{}}} @@ -1891,7 +1929,7 @@ There is no existing mapping in at least part of the given region. @end deftypefun -@deftypefun {void *} mremap (void *@var{address}, size_t @var{length}, size_t @var{new_length}, int @var{flag}) +@deftypefun {void *} mremap (void *@var{address}, size_t @var{length}, size_t @var{new_length}, int @var{flag}, ... /* void *@var{new_address} */) @standards{GNU, sys/mman.h} @safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}} @@ -1900,12 +1938,40 @@ area. @var{address} and @var{length} must cover a region entirely mapped in the same @code{mmap} statement. A new mapping with the same characteristics will be returned with the length @var{new_length}. -One option is possible, @code{MREMAP_MAYMOVE}. If it is given in -@var{flags}, the system may remove the existing mapping and create a new -one of the desired length in another location. +Possible flags are -The address of the resulting mapping is returned, or @math{-1}. Possible -error codes include: +@table @code + +@item MREMAP_MAYMOVE +If it is given in @var{flags}, the system may remove the existing mapping +and create a new one of the desired length in another location. + +@item MREMAP_FIXED +If it is given in @var{flags}, @code{mremap} accepts a fifth argument, +@code{void *new_address}, which specifies a page-aligned address to +which the mapping must be moved. Any previous mapping at the address +range specified by @var{new_address} and @var{new_size} is unmapped. + +@code{MREMAP_FIXED} must be used together with @code{MREMAP_MAYMOVE}. + +@item MREMAP_DONTUNMAP +If it is given in @var{flags}, @code{mremap} accepts a fifth argument, +@code{void *new_address}, which specifies a page-aligned address. Any +previous mapping at the address range specified by @var{new_address} and +@var{new_size} is unmapped. If @var{new_address} is @code{NULL}, the +kernel chooses the page-aligned address at which to create the mapping. +Otherwise, the kernel takes it as a hint about where to place the mapping. +The mapping at the address range specified by @var{old_address} and +@var{old_size} isn't unmapped. + +@code{MREMAP_DONTUNMAP} must be used together with @code{MREMAP_MAYMOVE}. +@var{old_size} must be the same as @var{new_size}. This flag bit is +Linux-specific. + +@end table + +The address of the resulting mapping is returned, or @code{MAP_FAILED}. +Possible error codes include: @table @code @@ -1914,7 +1980,7 @@ There is no existing mapping in at least part of the original region, or the region covers two or more distinct mappings. @item EINVAL -The address given is misaligned or inappropriate. +Any arguments are inappropriate, including unknown @var{flags} values. @item EAGAIN The region has pages locked, and if extended it would exceed the @@ -2324,6 +2390,8 @@ file descriptor, or until the timeout period expires. There is another example showing the use of @code{select} to multiplex input from multiple sockets in @ref{Server Example}. +For an alternate interface to this functionality, see @code{poll} +(@pxref{Other Low-Level I/O APIs}). @node Synchronizing I/O @section Synchronizing I/O operations @@ -3407,7 +3475,9 @@ require additional arguments to be supplied. These additional arguments and the return value and error conditions are given in the detailed descriptions of the individual commands. -Briefly, here is a list of what the various commands are. +Briefly, here is a list of what the various commands are. For an +exhaustive list of kernel-specific options, please see @xref{System +Calls}. @vtable @code @item F_DUPFD @@ -3774,7 +3844,9 @@ contains it is still needed), and permissions are checked when the descriptor is used later on. For example, such descriptors can be used with the @code{fexecve} -function (@pxref{Executing a File}). +function (@pxref{Executing a File}). Other applications involve the +@samp{*at} function variants, along with the @code{AT_EMPTY_PATH} flag. +@xref{Descriptor-Relative Access}. This access mode is specific to Linux. On @gnuhurdsystems{}, it is possible to use @code{O_EXEC} explicitly, or specify no access modes @@ -4743,5 +4815,28 @@ Most IOCTLs are OS-specific and/or only used in special system utilities, and are thus beyond the scope of this document. For an example of the use of an IOCTL, see @ref{Out-of-Band Data}. -@c FIXME this is undocumented: -@c dup3 +@node Other Low-Level I/O APIs +@section Other low-level-I/O-related functions + +@deftp {Data Type} {struct pollfd} +@standards{POSIX.1,poll.h} +@end deftp + +@deftp {Data Type} {struct epoll_event} +@standards{Linux,sys/epoll.h} +@end deftp + +@deftypefun int poll (struct pollfd *@var{fds}, nfds_t @var{nfds}, int @var{timeout}) + +@manpagefunctionstub{poll,2} +@end deftypefun + +@deftypefun int epoll_create(int @var{size}) + +@manpagefunctionstub{epoll_create,2} +@end deftypefun + +@deftypefun int epoll_wait(int @var{epfd}, struct epoll_event *@var{events}, int @var{maxevents}, int @var{timeout}) + +@manpagefunctionstub{epoll_wait,2} +@end deftypefun diff --git a/manual/macros.texi b/manual/macros.texi index 4a2e22f473..579da3fb81 100644 --- a/manual/macros.texi +++ b/manual/macros.texi @@ -282,4 +282,11 @@ cwd\comments\ @macro standardsx {element, standard, header} @end macro +@macro manpagefunctionstub {func,sec} +This documentation is a stub. For additional information on this +function, consult the manual page +@url{https://man7.org/linux/man-pages/man\sec\/\func\.\sec\.html}. +@xref{Linux Kernel}. +@end macro + @end ifclear diff --git a/manual/resource.texi b/manual/resource.texi index c9b21dedeb..25966bcb64 100644 --- a/manual/resource.texi +++ b/manual/resource.texi @@ -192,8 +192,8 @@ If the sources are compiled with @code{_FILE_OFFSET_BITS == 64} on a @standards{BSD, sys/resource.h} @safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}} @c Direct syscall on most systems; lock-taking critical section on HURD. -Store the current and maximum limits for the resource @var{resource} -in @code{*@var{rlp}}. +Change the current and maximum limits of the process for the resource +@var{resource} to the values provided in @code{*@var{rlp}}. The return value is @code{0} on success and @code{-1} on failure. The following @code{errno} error condition is possible: diff --git a/manual/socket.texi b/manual/socket.texi index f0e35d9e13..8708cbb07c 100644 --- a/manual/socket.texi +++ b/manual/socket.texi @@ -41,6 +41,7 @@ aren't documented either so far. is to make it work with Inetd. * Socket Options:: Miscellaneous low-level socket options. * Networks Database:: Accessing the database of network names. +* Other Socket APIs:: Other socket-related functions. @end menu @node Socket Concepts @@ -3134,38 +3135,8 @@ You can use plain @code{recv} (@pxref{Receiving Data}) instead of treat all possible senders alike). Even @code{read} can be used if you don't want to specify @var{flags} (@pxref{I/O Primitives}). -@ignore -@c sendmsg and recvmsg are like readv and writev in that they -@c use a series of buffers. It's not clear this is worth -@c supporting or that we support them. -@c !!! they can do more; it is hairy - -@deftp {Data Type} {struct msghdr} -@standards{BSD, sys/socket.h} -@end deftp - -@deftypefun ssize_t sendmsg (int @var{socket}, const struct msghdr *@var{message}, int @var{flags}) -@standards{BSD, sys/socket.h} -@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}} - -This function is defined as a cancellation point in multi-threaded -programs, so one has to be prepared for this and make sure that -allocated resources (like memory, files descriptors, semaphores or -whatever) are freed even if the thread is cancel. -@c @xref{pthread_cleanup_push}, for a method how to do this. -@end deftypefun - -@deftypefun ssize_t recvmsg (int @var{socket}, struct msghdr *@var{message}, int @var{flags}) -@standards{BSD, sys/socket.h} -@safety{@prelim{}@mtsafe{}@assafe{}@acsafe{}} - -This function is defined as a cancellation point in multi-threaded -programs, so one has to be prepared for this and make sure that -allocated resources (like memory, files descriptors, semaphores or -whatever) are freed even if the thread is canceled. -@c @xref{pthread_cleanup_push}, for a method how to do this. -@end deftypefun -@end ignore +If you need more flexibility and/or control over sending and receiving +packets, see @code{sendmsg} and @code{recvmsg} (@pxref{Other Socket APIs}). @node Datagram Example @subsection Datagram Socket Example @@ -3664,3 +3635,20 @@ returns a null pointer if there are no more entries. @c libc_lock_unlock @aculock This function closes the networks database. @end deftypefun + +@node Other Socket APIs +@section Other Socket APIs + +@deftp {Data Type} {struct msghdr} +@standards{BSD, sys/socket.h} +@end deftp + +@deftypefun ssize_t sendmsg (int @var{socket}, const struct msghdr *@var{message}, int @var{flags}) + +@manpagefunctionstub{sendmsg,2} +@end deftypefun + +@deftypefun ssize_t recvmsg (int @var{socket}, struct msghdr *@var{message}, int @var{flags}) + +@manpagefunctionstub{recvmsg,2} +@end deftypefun diff --git a/manual/startup.texi b/manual/startup.texi index 224dd98c1e..8ac3b97eed 100644 --- a/manual/startup.texi +++ b/manual/startup.texi @@ -664,8 +664,12 @@ basis there may be information that is not available any other way. This function is used to inquire about the entries in the auxiliary vector. The @var{type} argument should be one of the @samp{AT_} symbols defined in @file{elf.h}. If a matching entry is found, the value is -returned; if the entry is not found, zero is returned and @code{errno} is -set to @code{ENOENT}. +returned; if the entry is not found, zero is returned and @code{errno} +is set to @code{ENOENT}. + +@strong{Note:} There is no relationship between the @samp{AT_} contants +defined in @file{elf.h} and the file name lookup flags in +@file{fcntl.h}. @xref{Descriptor-Relative Access}. @end deftypefun For some platforms, the key @code{AT_HWCAP} is the easiest way to inquire @@ -689,7 +693,25 @@ you don't need to know about it because you can just use @theglibc{}'s @code{chmod} function. @cindex kernel call -System calls are sometimes called kernel calls. +System calls are sometimes called syscalls or kernel calls, and this +interface is mostly a purely mechanical translation from the kernel's +ABI to the C ABI. For the set of syscalls where we do not guarantee +POSIX Thread cancellation the wrappers only organize the incoming +arguments from the C calling convention to the calling convention of +the target kernel. For the set of syscalls where we provided POSIX +Thread cancellation the wrappers set some internal state in the +library to support cancellation, but this does not impact the +behaviour of the syscall provided by the kernel. + +In some cases, if @theglibc{} detects that a system call has been +superseded by a more capable one, the wrapper may map the old call to +the new one. For example, @code{dup2} is implemented via @code{dup3} +by passing an additional empty flags argument, and @code{open} calls +@code{openat} passing the additional @code{AT_FDCWD}. Sometimes even +more is done, such as converting between 32-bit and 64-bit time +values. In general, though, such processing is only to make the +system call better match the C ABI, rather than change its +functionality. However, there are times when you want to make a system call explicitly, and for that, @theglibc{} provides the @code{syscall} function. @@ -711,6 +733,8 @@ we won't describe it here either because anyone who is coding library source code as a specification of the interface between them anyway. +@code{syscall} does not provide cancellation logic, even if the system +call you're calling is listed as cancellable above. @code{syscall} is declared in @file{unistd.h}. diff --git a/manual/stdio.texi b/manual/stdio.texi index f5e289d58a..29888a361f 100644 --- a/manual/stdio.texi +++ b/manual/stdio.texi @@ -903,21 +903,17 @@ This function is a GNU extension. @deftypefun int putc (int @var{c}, FILE *@var{stream}) @standards{ISO, stdio.h} @safety{@prelim{}@mtsafe{}@asunsafe{@asucorrupt{}}@acunsafe{@acucorrupt{} @aculock{}}} -This is just like @code{fputc}, except that most systems implement it as -a macro, making it faster. One consequence is that it may evaluate the -@var{stream} argument more than once, which is an exception to the -general rule for macros. @code{putc} is usually the best function to -use for writing a single character. +This is just like @code{fputc}, except that it may be implemented as +a macro and may evaluate the @var{stream} argument more than once. +Therefore, @var{stream} should never be an expression with side-effects. @end deftypefun @deftypefun wint_t putwc (wchar_t @var{wc}, FILE *@var{stream}) @standards{ISO, wchar.h} @safety{@prelim{}@mtsafe{}@asunsafe{@asucorrupt{}}@acunsafe{@acucorrupt{} @aculock{}}} -This is just like @code{fputwc}, except that it can be implement as -a macro, making it faster. One consequence is that it may evaluate the -@var{stream} argument more than once, which is an exception to the -general rule for macros. @code{putwc} is usually the best function to -use for writing a single wide character. +This is just like @code{fputwc}, except that it may be implemented as +a macro and may evaluate the @var{stream} argument more than once. +Therefore, @var{stream} should never be an expression with side-effects. @end deftypefun @deftypefun int putc_unlocked (int @var{c}, FILE *@var{stream}) @@ -1110,20 +1106,17 @@ This function is a GNU extension. @deftypefun int getc (FILE *@var{stream}) @standards{ISO, stdio.h} @safety{@prelim{}@mtsafe{}@asunsafe{@asucorrupt{}}@acunsafe{@aculock{} @acucorrupt{}}} -This is just like @code{fgetc}, except that it is permissible (and -typical) for it to be implemented as a macro that evaluates the -@var{stream} argument more than once. @code{getc} is often highly -optimized, so it is usually the best function to use to read a single -character. +This is just like @code{fgetc}, except that it may be implemented as +a macro and may evaluate the @var{stream} argument more than once. +Therefore, @var{stream} should never be an expression with side-effects. @end deftypefun @deftypefun wint_t getwc (FILE *@var{stream}) @standards{ISO, wchar.h} @safety{@prelim{}@mtsafe{}@asunsafe{@asucorrupt{}}@acunsafe{@aculock{} @acucorrupt{}}} -This is just like @code{fgetwc}, except that it is permissible for it to -be implemented as a macro that evaluates the @var{stream} argument more -than once. @code{getwc} can be highly optimized, so it is usually the -best function to use to read a single wide character. +This is just like @code{fgetwc}, except that it may be implemented as +a macro and may evaluate the @var{stream} argument more than once. +Therefore, @var{stream} should never be an expression with side-effects. @end deftypefun @deftypefun int getc_unlocked (FILE *@var{stream}) @@ -1474,11 +1467,9 @@ program; usually @code{ungetc} is used only to unread a character that was just read from the same stream. @Theglibc{} supports this even on files opened in binary mode, but other systems might not. -@Theglibc{} only supports one character of pushback---in other -words, it does not work to call @code{ungetc} twice without doing input -in between. Other systems might let you push back multiple characters; -then reading from the stream retrieves the characters in the reverse -order that they were pushed. +@Theglibc{} supports pushing back multiple characters; subsequently +reading from the stream retrieves the characters in the reverse order +that they were pushed. Pushing back characters doesn't alter the file; only the internal buffering for the stream is affected. If a file positioning function @@ -2363,6 +2354,29 @@ the easiest way to make sure you have all the right prototypes is to just include @file{stdio.h}. @pindex stdio.h +The @code{printf} family shares the error codes listed below. +Individual functions may report additional @code{errno} values if they +fail. + +@table @code +@item EOVERFLOW +The number of written bytes would have exceeded @code{INT_MAX}, and thus +could not be represented in the return type @code{int}. + +@item ENOMEM +The function could not allocate memory during processing. Long argument +lists and certain floating point conversions may require memory +allocation, as does initialization of an output stream upon first use. + +@item EILSEQ +POSIX specifies this error code should be used if a wide character is +encountered that does not have a matching valid character. @Theglibc{} +always performs transliteration, using a replacement character if +necessary, so this error condition cannot occur on output. However, +@theglibc{} uses @code{EILSEQ} to indicate that an input character +sequence (wide or multi-byte) could not be converted successfully. +@end table + @deftypefun int printf (const char *@var{template}, @dots{}) @standards{ISO, stdio.h} @safety{@prelim{}@mtsafe{@mtslocale{}}@asunsafe{@asucorrupt{} @ascuheap{}}@acunsafe{@acsmem{} @aculock{} @acucorrupt{}}} @@ -2509,6 +2523,26 @@ store the result in which case @code{-1} is returned. This was changed in order to comply with the @w{ISO C99} standard. @end deftypefun +@deftypefun dprintf (int @var{fd}, @var{template}, ...) +@standards{POSIX, stdio.h} +@safety{@mtsafe{@mtslocale{}}@asunsafe{@ascuheap{}}@acunsafe{@acsmem{}}} +This function formats its arguments according to @var{template} and +writes the result to the file descriptor @var{fd}, using the +@code{write} function. It returns the number of bytes written, or a +negative value if there was an error. In the error case, @code{errno} +is set appropriately. The possible @code{errno} values depend on the +type of the file descriptor @var{fd}, in addition to the general +@code{printf} error codes. + +The number of calls to @code{write} is unspecified, and some @code{write} +calls may have happened even if @code{dprintf} returns with an error. + +@strong{Portability Note:} POSIX does not require that this function is +async-signal-safe, and @theglibc{} implementation is not. However, some +other systems offer this function as an async-signal-safe alternative to +@code{fprintf}. @xref{POSIX Safety Concepts}. +@end deftypefun + @node Dynamic Output @subsection Dynamically Allocating Formatted Output @@ -2722,6 +2756,13 @@ The @code{obstack_vprintf} function is the equivalent of as for @code{vprintf}. @end deftypefun +@deftypefun int vdprintf (int @var{fd}, const char *@var{template}, va_list @var{ap}) +@standards{POSIX, stdio.h} +@safety{@mtsafe{@mtslocale{}}@asunsafe{@ascuheap{}}@acunsafe{@acsmem{}}} +The @code{vdprintf} is the equivalent of @code{dprintf}, but processes +an argument list. +@end deftypefun + Here's an example showing how you might use @code{vfprintf}. This is a function that prints error messages to the stream @code{stderr}, along with a prefix indicating the name of the program diff --git a/manual/threads.texi b/manual/threads.texi index e5544ff3da..25e99c9606 100644 --- a/manual/threads.texi +++ b/manual/threads.texi @@ -1007,8 +1007,12 @@ This variable is either zero (if restartable sequence registration failed or has been disabled) or the size of the restartable sequence registration. This can be different from the size of @code{struct rseq} if the kernel has extended the size of the registration. If -registration is successful, @code{__rseq_size} is at least 32 (the -initial size of @code{struct rseq}). +registration is successful, @code{__rseq_size} is at least 20 (the +initially active size of @code{struct rseq}). + +Previous versions of @theglibc{} set this to 32 even if the kernel only +supported the initial area of 20 bytes because the value included unused +padding at the end of the restartable sequence area. @end deftypevar @deftypevar {unsigned int} __rseq_flags diff --git a/math/Makefile b/math/Makefile index f06d370383..b64c3eedd5 100644 --- a/math/Makefile +++ b/math/Makefile @@ -1077,6 +1077,7 @@ CFLAGS-test-flt-eval-method.c += -fexcess-precision=standard CFLAGS-test-fe-snans-always-signal.c += $(config-cflags-signaling-nans) CFLAGS-test-nan-const.c += -fno-builtin +CFLAGS-test-nan-payload.c += -fno-builtin CFLAGS-test-ceil-except-2.c += -fno-builtin CFLAGS-test-floor-except-2.c += -fno-builtin diff --git a/math/auto-libm-test-in b/math/auto-libm-test-in index 8f0c3d87bb..b570e88e78 100644 --- a/math/auto-libm-test-in +++ b/math/auto-libm-test-in @@ -5348,6 +5348,30 @@ exp10m1 0x1p-16384 exp10m1 -0x1p-128 exp10m1 -0x1p-1024 exp10m1 -0x1p-16384 +# the next values yield large errors on x86_64 for binary32 +exp10m1 0x1.e4fb5ap-2 +exp10m1 0x1.cc3352p-2 +exp10m1 0x1.c8a6e6p-2 +exp10m1 -0x1.c03a7ep-8 +# the next values yield large errors on x86_64 for binary64 +exp10m1 0x1.e880c5bafbd41p-2 +exp10m1 0x1.ce521eafe0f21p-2 +exp10m1 0x1.ce21fffa5aed8p-2 +exp10m1 -0x1.bcb951df89248p-15 +# the next values yield large errors on x86_64 for intel96 +exp10m1 0x2.6882b807049f54ap-4 +exp10m1 -0x6.f6469fc524a1de1p-12 +exp10m1 0x2.cf6c5a8ec5919c0cp-4 +exp10m1 0x2.d08614068c3c5514p-4 +exp10m1 0x2.c7fd02fd98797bf4p-4 +exp10m1 -0x6.f36b2669aee2d2e8p-12 +exp10m1 0x2.c83d897086a4e644p-4 +exp10m1 0x2.b47fd78c73d7fa7cp-4 +# the next values yield large errors on x86_64 for binary128 +exp10m1 0xb.2ee9062818e91afe8e80fae1818p-4 +exp10m1 0xb.2e822db54f357c3f65ad743758bp-4 +exp10m1 0xb.2edd92a794cbc6f81f5f4f82c14p-4 +exp10m1 0xb.2eca344f0d4f0af54bdbd5974858p-4 exp2 0 exp2 -0 @@ -5553,6 +5577,30 @@ exp2m1 0x1p-16381 exp2m1 -0x1p-125 exp2m1 -0x1p-1021 exp2m1 -0x1p-16381 +# the next values yield large errors on x86_64 for binary32 +exp2m1 0x1.9cac28p-1 +exp2m1 -0x1.715546p-15 +exp2m1 0x1.fffffep-1 +exp2m1 -0x1.720d9ap-8 +# the next values yield large errors on x86_64 for binary64 +exp2m1 0x1.d047583a6c6dp-1 +exp2m1 0x1.fff7be96c5276p-1 +exp2m1 -0x1.715bd8586d057p-12 +exp2m1 0x1.ffffb5c6996fp-1 +# the next values yield large errors on x86_64 for intel96 +exp2m1 0x9.58009dd25960a7bp-4 +exp2m1 -0x1.7159454d13d4e3fap-12 +exp2m1 0x9.5a4e825121e5782p-4 +exp2m1 0x9.3e34e79efaa18cfp-4 +exp2m1 0x9.3754a635820f937p-4 +exp2m1 -0x1.71573dd150de9ccap-8 +exp2m1 0x9.3d27303441ac81fp-4 +exp2m1 0x8.fe7f91d947a1cfdp-4 +# the next values yield large errors on x86_64 for binary128 +exp2m1 0x9.1217d12087d76b2ca347683e4b5p-4 +exp2m1 0x8.80db492a604297e1a3816aeec568p-4 +exp2m1 0x8.872e307510a80e501665a37c218p-4 +exp2m1 0x9.10b9251f0cc9bdc81d6ab13bb74p-4 expm1 0 expm1 -0 no-mathvec @@ -6833,6 +6881,30 @@ log10p1 -0x4.f37d3c9ce0b14bdd86eb157df5d4p-4 log10p1 0x7.2eca50c4d93196362b4f37f6e8dcp-4 log10p1 -0x6.3fef3067427e43dfcde9e48f74bcp-4 log10p1 0x6.af53d00fd2845d4772260ef5adc4p-4 +# the next values generate large errors on x86_64 for binary32 +log10p1 0x1.ce84ep+0 +log10p1 -0x1.c9bc9cp-3 +log10p1 0x1.3b8ad4p+106 +log10p1 -0x1.2611b2p-8 +# the next values generate large errors on x86_64 for binary64 +log10p1 -0x1.4c2971893052fp-1 +log10p1 -0x1.000196a3d9e18p-2 +log10p1 -0x1.26975ba3e6553p-43 +log10p1 0x1.00d67bdd93083p+53 +# the next values generate large errors on x86_64 for intel96 +log10p1 0x4.a486e7fa771f839p-4 +log10p1 0x4.f974ef417a9fe778p-4 +log10p1 0x5.006dfbf1945a6648p-4 +log10p1 0x4.f6e989b93bb1cd78p-4 +log10p1 0x4.ab40181dbc47cdfp-4 +log10p1 0x5.2876604a22752338p-4 +log10p1 0x4.a422197a61a14128p-4 +log10p1 0x5.48bb2c181e72e838p-4 +# the next values generate large errors on x86_64 for binary128 +log10p1 -0x6.eec527c6a8d6e31ca9f0dcdd747cp-4 +log10p1 0xc.42dd6485aeceeca7f23b39ad0518p-4 +log10p1 0xa.78451e366c2303f4f67b1178e628p-4 +log10p1 -0x6.fe3adf062a38696216fa72657104p-4 log1p 0 log1p -0 no-mathvec @@ -6955,6 +7027,30 @@ log2p1 0x1p100 log2p1 0x1p1000 log2p1 0x6.a0cf42befce9ed4085ef59254b48p-4 log2p1 max +# the following inputs yield large errors on x86_64 for binary32 +log2p1 0x1.a69b4ap-2 +log2p1 -0x1.2516d6p-2 +log2p1 -0x1.5ffeaep-15 +log2p1 0x1.fa9f4cp+63 +# the following inputs yield large errors on x86_64 for binary64 +log2p1 0x1.a7b725780ff2cp-2 +log2p1 -0x1.2bcacac1db278p-2 +log2p1 -0x1.61d589bf42045p-30 +log2p1 0x1.f7b1d1fa54e5ep+1023 +# the following inputs yield large errors on x86_64 for intel96 +log2p1 0x5.dda3a1f4c4020ebp-4 +log2p1 0x4.a90a8d35a43eef98p-4 +log2p1 0x4.cd0c83636c3eec48p-4 +log2p1 0x4.a438707de6d1ba58p-4 +log2p1 0x5.843d01be597f38fp-4 +log2p1 0x4.a4fa45b26be621b8p-4 +log2p1 0x5.86a6205c56dda348p-4 +log2p1 0x4.a45c98a3ade2dcb8p-4 +# the following inputs yield large errors on x86_64 for binary128 +log2p1 -0x7.fff3a57fdd2666bcecba33bd89f4p-4 +log2p1 0xf.ffea148f0646fb70b8e8c4dae998p-4 +log2p1 -0x7.ffdfd0a8ad0496b2ee0e1c8e382cp-4 +log2p1 0x6.a9a5ea3f87fe4bc20f7a0e83cf2cp-4 log2p1 0x7.2a4368p-4 log2p1 0x6.d3a118p-4 diff --git a/math/auto-libm-test-out-exp10m1 b/math/auto-libm-test-out-exp10m1 index 8e7d321ecb..dc0f89ecda 100644 --- a/math/auto-libm-test-out-exp10m1 +++ b/math/auto-libm-test-out-exp10m1 @@ -4489,3 +4489,1783 @@ exp10m1 -0x1p-16384 = exp10m1 tonearest binary128 -0x1p-16384 : -0x2.4d763776aaa2b05ba95b58ae0b4cp-16384 : inexact-ok underflow errno-erange-ok = exp10m1 towardzero binary128 -0x1p-16384 : -0x2.4d763776aaa2b05ba95b58ae0b4cp-16384 : inexact-ok underflow errno-erange-ok = exp10m1 upward binary128 -0x1p-16384 : -0x2.4d763776aaa2b05ba95b58ae0b4cp-16384 : inexact-ok underflow errno-erange-ok +exp10m1 0x1.e4fb5ap-2 += exp10m1 downward binary32 0x7.93ed68p-4 : 0x1.f9d31ep+0 : inexact-ok += exp10m1 tonearest binary32 0x7.93ed68p-4 : 0x1.f9d32p+0 : inexact-ok += exp10m1 towardzero binary32 0x7.93ed68p-4 : 0x1.f9d31ep+0 : inexact-ok += exp10m1 upward binary32 0x7.93ed68p-4 : 0x1.f9d32p+0 : inexact-ok += exp10m1 downward binary64 0x7.93ed68p-4 : 0x1.f9d31f17a3cfcp+0 : inexact-ok += exp10m1 tonearest binary64 0x7.93ed68p-4 : 0x1.f9d31f17a3cfcp+0 : inexact-ok += exp10m1 towardzero binary64 0x7.93ed68p-4 : 0x1.f9d31f17a3cfcp+0 : inexact-ok += exp10m1 upward binary64 0x7.93ed68p-4 : 0x1.f9d31f17a3cfdp+0 : inexact-ok += exp10m1 downward intel96 0x7.93ed68p-4 : 0x1.f9d31f17a3cfc21cp+0 : inexact-ok += exp10m1 tonearest intel96 0x7.93ed68p-4 : 0x1.f9d31f17a3cfc21ep+0 : inexact-ok += exp10m1 towardzero intel96 0x7.93ed68p-4 : 0x1.f9d31f17a3cfc21cp+0 : inexact-ok += exp10m1 upward intel96 0x7.93ed68p-4 : 0x1.f9d31f17a3cfc21ep+0 : inexact-ok += exp10m1 downward m68k96 0x7.93ed68p-4 : 0x1.f9d31f17a3cfc21cp+0 : inexact-ok += exp10m1 tonearest m68k96 0x7.93ed68p-4 : 0x1.f9d31f17a3cfc21ep+0 : inexact-ok += exp10m1 towardzero m68k96 0x7.93ed68p-4 : 0x1.f9d31f17a3cfc21cp+0 : inexact-ok += exp10m1 upward m68k96 0x7.93ed68p-4 : 0x1.f9d31f17a3cfc21ep+0 : inexact-ok += exp10m1 downward binary128 0x7.93ed68p-4 : 0x1.f9d31f17a3cfc21d5b38a404bc83p+0 : inexact-ok += exp10m1 tonearest binary128 0x7.93ed68p-4 : 0x1.f9d31f17a3cfc21d5b38a404bc83p+0 : inexact-ok += exp10m1 towardzero binary128 0x7.93ed68p-4 : 0x1.f9d31f17a3cfc21d5b38a404bc83p+0 : inexact-ok += exp10m1 upward binary128 0x7.93ed68p-4 : 0x1.f9d31f17a3cfc21d5b38a404bc84p+0 : inexact-ok += exp10m1 downward ibm128 0x7.93ed68p-4 : 0x1.f9d31f17a3cfc21d5b38a404bc8p+0 : inexact-ok += exp10m1 tonearest ibm128 0x7.93ed68p-4 : 0x1.f9d31f17a3cfc21d5b38a404bc8p+0 : inexact-ok += exp10m1 towardzero ibm128 0x7.93ed68p-4 : 0x1.f9d31f17a3cfc21d5b38a404bc8p+0 : inexact-ok += exp10m1 upward ibm128 0x7.93ed68p-4 : 0x1.f9d31f17a3cfc21d5b38a404bdp+0 : inexact-ok +exp10m1 0x1.cc3352p-2 += exp10m1 downward binary32 0x7.30cd48p-4 : 0x1.d088b4p+0 : inexact-ok += exp10m1 tonearest binary32 0x7.30cd48p-4 : 0x1.d088b6p+0 : inexact-ok += exp10m1 towardzero binary32 0x7.30cd48p-4 : 0x1.d088b4p+0 : inexact-ok += exp10m1 upward binary32 0x7.30cd48p-4 : 0x1.d088b6p+0 : inexact-ok += exp10m1 downward binary64 0x7.30cd48p-4 : 0x1.d088b5178a43bp+0 : inexact-ok += exp10m1 tonearest binary64 0x7.30cd48p-4 : 0x1.d088b5178a43bp+0 : inexact-ok += exp10m1 towardzero binary64 0x7.30cd48p-4 : 0x1.d088b5178a43bp+0 : inexact-ok += exp10m1 upward binary64 0x7.30cd48p-4 : 0x1.d088b5178a43cp+0 : inexact-ok += exp10m1 downward intel96 0x7.30cd48p-4 : 0x1.d088b5178a43b4b2p+0 : inexact-ok += exp10m1 tonearest intel96 0x7.30cd48p-4 : 0x1.d088b5178a43b4b2p+0 : inexact-ok += exp10m1 towardzero intel96 0x7.30cd48p-4 : 0x1.d088b5178a43b4b2p+0 : inexact-ok += exp10m1 upward intel96 0x7.30cd48p-4 : 0x1.d088b5178a43b4b4p+0 : inexact-ok += exp10m1 downward m68k96 0x7.30cd48p-4 : 0x1.d088b5178a43b4b2p+0 : inexact-ok += exp10m1 tonearest m68k96 0x7.30cd48p-4 : 0x1.d088b5178a43b4b2p+0 : inexact-ok += exp10m1 towardzero m68k96 0x7.30cd48p-4 : 0x1.d088b5178a43b4b2p+0 : inexact-ok += exp10m1 upward m68k96 0x7.30cd48p-4 : 0x1.d088b5178a43b4b4p+0 : inexact-ok += exp10m1 downward binary128 0x7.30cd48p-4 : 0x1.d088b5178a43b4b2c75b6ca196a1p+0 : inexact-ok += exp10m1 tonearest binary128 0x7.30cd48p-4 : 0x1.d088b5178a43b4b2c75b6ca196a1p+0 : inexact-ok += exp10m1 towardzero binary128 0x7.30cd48p-4 : 0x1.d088b5178a43b4b2c75b6ca196a1p+0 : inexact-ok += exp10m1 upward binary128 0x7.30cd48p-4 : 0x1.d088b5178a43b4b2c75b6ca196a2p+0 : inexact-ok += exp10m1 downward ibm128 0x7.30cd48p-4 : 0x1.d088b5178a43b4b2c75b6ca1968p+0 : inexact-ok += exp10m1 tonearest ibm128 0x7.30cd48p-4 : 0x1.d088b5178a43b4b2c75b6ca1968p+0 : inexact-ok += exp10m1 towardzero ibm128 0x7.30cd48p-4 : 0x1.d088b5178a43b4b2c75b6ca1968p+0 : inexact-ok += exp10m1 upward ibm128 0x7.30cd48p-4 : 0x1.d088b5178a43b4b2c75b6ca197p+0 : inexact-ok +exp10m1 0x1.c8a6e6p-2 += exp10m1 downward binary32 0x7.229b98p-4 : 0x1.cacebap+0 : inexact-ok += exp10m1 tonearest binary32 0x7.229b98p-4 : 0x1.cacebcp+0 : inexact-ok += exp10m1 towardzero binary32 0x7.229b98p-4 : 0x1.cacebap+0 : inexact-ok += exp10m1 upward binary32 0x7.229b98p-4 : 0x1.cacebcp+0 : inexact-ok += exp10m1 downward binary64 0x7.229b98p-4 : 0x1.cacebbbd63af6p+0 : inexact-ok += exp10m1 tonearest binary64 0x7.229b98p-4 : 0x1.cacebbbd63af6p+0 : inexact-ok += exp10m1 towardzero binary64 0x7.229b98p-4 : 0x1.cacebbbd63af6p+0 : inexact-ok += exp10m1 upward binary64 0x7.229b98p-4 : 0x1.cacebbbd63af7p+0 : inexact-ok += exp10m1 downward intel96 0x7.229b98p-4 : 0x1.cacebbbd63af67f8p+0 : inexact-ok += exp10m1 tonearest intel96 0x7.229b98p-4 : 0x1.cacebbbd63af67fap+0 : inexact-ok += exp10m1 towardzero intel96 0x7.229b98p-4 : 0x1.cacebbbd63af67f8p+0 : inexact-ok += exp10m1 upward intel96 0x7.229b98p-4 : 0x1.cacebbbd63af67fap+0 : inexact-ok += exp10m1 downward m68k96 0x7.229b98p-4 : 0x1.cacebbbd63af67f8p+0 : inexact-ok += exp10m1 tonearest m68k96 0x7.229b98p-4 : 0x1.cacebbbd63af67fap+0 : inexact-ok += exp10m1 towardzero m68k96 0x7.229b98p-4 : 0x1.cacebbbd63af67f8p+0 : inexact-ok += exp10m1 upward m68k96 0x7.229b98p-4 : 0x1.cacebbbd63af67fap+0 : inexact-ok += exp10m1 downward binary128 0x7.229b98p-4 : 0x1.cacebbbd63af67f9d352dcb78f3ap+0 : inexact-ok += exp10m1 tonearest binary128 0x7.229b98p-4 : 0x1.cacebbbd63af67f9d352dcb78f3bp+0 : inexact-ok += exp10m1 towardzero binary128 0x7.229b98p-4 : 0x1.cacebbbd63af67f9d352dcb78f3ap+0 : inexact-ok += exp10m1 upward binary128 0x7.229b98p-4 : 0x1.cacebbbd63af67f9d352dcb78f3bp+0 : inexact-ok += exp10m1 downward ibm128 0x7.229b98p-4 : 0x1.cacebbbd63af67f9d352dcb78fp+0 : inexact-ok += exp10m1 tonearest ibm128 0x7.229b98p-4 : 0x1.cacebbbd63af67f9d352dcb78fp+0 : inexact-ok += exp10m1 towardzero ibm128 0x7.229b98p-4 : 0x1.cacebbbd63af67f9d352dcb78fp+0 : inexact-ok += exp10m1 upward ibm128 0x7.229b98p-4 : 0x1.cacebbbd63af67f9d352dcb78f8p+0 : inexact-ok +exp10m1 -0x1.c03a7ep-8 += exp10m1 downward binary32 -0x1.c03a7ep-8 : -0x3.fffffcp-8 : inexact-ok += exp10m1 tonearest binary32 -0x1.c03a7ep-8 : -0x3.fffff8p-8 : inexact-ok += exp10m1 towardzero binary32 -0x1.c03a7ep-8 : -0x3.fffff8p-8 : inexact-ok += exp10m1 upward binary32 -0x1.c03a7ep-8 : -0x3.fffff8p-8 : inexact-ok += exp10m1 downward binary64 -0x1.c03a7ep-8 : -0x3.fffff9ec4667p-8 : inexact-ok += exp10m1 tonearest binary64 -0x1.c03a7ep-8 : -0x3.fffff9ec4667p-8 : inexact-ok += exp10m1 towardzero binary64 -0x1.c03a7ep-8 : -0x3.fffff9ec4666ep-8 : inexact-ok += exp10m1 upward binary64 -0x1.c03a7ep-8 : -0x3.fffff9ec4666ep-8 : inexact-ok += exp10m1 downward intel96 -0x1.c03a7ep-8 : -0x3.fffff9ec4666f87p-8 : inexact-ok += exp10m1 tonearest intel96 -0x1.c03a7ep-8 : -0x3.fffff9ec4666f86cp-8 : inexact-ok += exp10m1 towardzero intel96 -0x1.c03a7ep-8 : -0x3.fffff9ec4666f86cp-8 : inexact-ok += exp10m1 upward intel96 -0x1.c03a7ep-8 : -0x3.fffff9ec4666f86cp-8 : inexact-ok += exp10m1 downward m68k96 -0x1.c03a7ep-8 : -0x3.fffff9ec4666f87p-8 : inexact-ok += exp10m1 tonearest m68k96 -0x1.c03a7ep-8 : -0x3.fffff9ec4666f86cp-8 : inexact-ok += exp10m1 towardzero m68k96 -0x1.c03a7ep-8 : -0x3.fffff9ec4666f86cp-8 : inexact-ok += exp10m1 upward m68k96 -0x1.c03a7ep-8 : -0x3.fffff9ec4666f86cp-8 : inexact-ok += exp10m1 downward binary128 -0x1.c03a7ep-8 : -0x3.fffff9ec4666f86dcd353ddd472p-8 : inexact-ok += exp10m1 tonearest binary128 -0x1.c03a7ep-8 : -0x3.fffff9ec4666f86dcd353ddd471ep-8 : inexact-ok += exp10m1 towardzero binary128 -0x1.c03a7ep-8 : -0x3.fffff9ec4666f86dcd353ddd471ep-8 : inexact-ok += exp10m1 upward binary128 -0x1.c03a7ep-8 : -0x3.fffff9ec4666f86dcd353ddd471ep-8 : inexact-ok += exp10m1 downward ibm128 -0x1.c03a7ep-8 : -0x3.fffff9ec4666f86dcd353ddd48p-8 : inexact-ok += exp10m1 tonearest ibm128 -0x1.c03a7ep-8 : -0x3.fffff9ec4666f86dcd353ddd47p-8 : inexact-ok += exp10m1 towardzero ibm128 -0x1.c03a7ep-8 : -0x3.fffff9ec4666f86dcd353ddd47p-8 : inexact-ok += exp10m1 upward ibm128 -0x1.c03a7ep-8 : -0x3.fffff9ec4666f86dcd353ddd47p-8 : inexact-ok +exp10m1 0x1.e880c5bafbd41p-2 += exp10m1 downward binary32 0x7.a20318p-4 : 0x1.ffe16ep+0 : inexact-ok += exp10m1 tonearest binary32 0x7.a20318p-4 : 0x1.ffe17p+0 : inexact-ok += exp10m1 towardzero binary32 0x7.a20318p-4 : 0x1.ffe16ep+0 : inexact-ok += exp10m1 upward binary32 0x7.a20318p-4 : 0x1.ffe17p+0 : inexact-ok += exp10m1 downward binary64 0x7.a20318p-4 : 0x1.ffe16f2ad12c9p+0 : inexact-ok += exp10m1 tonearest binary64 0x7.a20318p-4 : 0x1.ffe16f2ad12cap+0 : inexact-ok += exp10m1 towardzero binary64 0x7.a20318p-4 : 0x1.ffe16f2ad12c9p+0 : inexact-ok += exp10m1 upward binary64 0x7.a20318p-4 : 0x1.ffe16f2ad12cap+0 : inexact-ok += exp10m1 downward intel96 0x7.a20318p-4 : 0x1.ffe16f2ad12c9f0ep+0 : inexact-ok += exp10m1 tonearest intel96 0x7.a20318p-4 : 0x1.ffe16f2ad12c9f1p+0 : inexact-ok += exp10m1 towardzero intel96 0x7.a20318p-4 : 0x1.ffe16f2ad12c9f0ep+0 : inexact-ok += exp10m1 upward intel96 0x7.a20318p-4 : 0x1.ffe16f2ad12c9f1p+0 : inexact-ok += exp10m1 downward m68k96 0x7.a20318p-4 : 0x1.ffe16f2ad12c9f0ep+0 : inexact-ok += exp10m1 tonearest m68k96 0x7.a20318p-4 : 0x1.ffe16f2ad12c9f1p+0 : inexact-ok += exp10m1 towardzero m68k96 0x7.a20318p-4 : 0x1.ffe16f2ad12c9f0ep+0 : inexact-ok += exp10m1 upward m68k96 0x7.a20318p-4 : 0x1.ffe16f2ad12c9f1p+0 : inexact-ok += exp10m1 downward binary128 0x7.a20318p-4 : 0x1.ffe16f2ad12c9f0f15a8f27ed835p+0 : inexact-ok += exp10m1 tonearest binary128 0x7.a20318p-4 : 0x1.ffe16f2ad12c9f0f15a8f27ed835p+0 : inexact-ok += exp10m1 towardzero binary128 0x7.a20318p-4 : 0x1.ffe16f2ad12c9f0f15a8f27ed835p+0 : inexact-ok += exp10m1 upward binary128 0x7.a20318p-4 : 0x1.ffe16f2ad12c9f0f15a8f27ed836p+0 : inexact-ok += exp10m1 downward ibm128 0x7.a20318p-4 : 0x1.ffe16f2ad12c9f0f15a8f27ed8p+0 : inexact-ok += exp10m1 tonearest ibm128 0x7.a20318p-4 : 0x1.ffe16f2ad12c9f0f15a8f27ed8p+0 : inexact-ok += exp10m1 towardzero ibm128 0x7.a20318p-4 : 0x1.ffe16f2ad12c9f0f15a8f27ed8p+0 : inexact-ok += exp10m1 upward ibm128 0x7.a20318p-4 : 0x1.ffe16f2ad12c9f0f15a8f27ed88p+0 : inexact-ok += exp10m1 downward binary32 0x7.a2031p-4 : 0x1.ffe16ap+0 : inexact-ok += exp10m1 tonearest binary32 0x7.a2031p-4 : 0x1.ffe16cp+0 : inexact-ok += exp10m1 towardzero binary32 0x7.a2031p-4 : 0x1.ffe16ap+0 : inexact-ok += exp10m1 upward binary32 0x7.a2031p-4 : 0x1.ffe16cp+0 : inexact-ok += exp10m1 downward binary64 0x7.a2031p-4 : 0x1.ffe16bb6c30c1p+0 : inexact-ok += exp10m1 tonearest binary64 0x7.a2031p-4 : 0x1.ffe16bb6c30c1p+0 : inexact-ok += exp10m1 towardzero binary64 0x7.a2031p-4 : 0x1.ffe16bb6c30c1p+0 : inexact-ok += exp10m1 upward binary64 0x7.a2031p-4 : 0x1.ffe16bb6c30c2p+0 : inexact-ok += exp10m1 downward intel96 0x7.a2031p-4 : 0x1.ffe16bb6c30c15e4p+0 : inexact-ok += exp10m1 tonearest intel96 0x7.a2031p-4 : 0x1.ffe16bb6c30c15e6p+0 : inexact-ok += exp10m1 towardzero intel96 0x7.a2031p-4 : 0x1.ffe16bb6c30c15e4p+0 : inexact-ok += exp10m1 upward intel96 0x7.a2031p-4 : 0x1.ffe16bb6c30c15e6p+0 : inexact-ok += exp10m1 downward m68k96 0x7.a2031p-4 : 0x1.ffe16bb6c30c15e4p+0 : inexact-ok += exp10m1 tonearest m68k96 0x7.a2031p-4 : 0x1.ffe16bb6c30c15e6p+0 : inexact-ok += exp10m1 towardzero m68k96 0x7.a2031p-4 : 0x1.ffe16bb6c30c15e4p+0 : inexact-ok += exp10m1 upward m68k96 0x7.a2031p-4 : 0x1.ffe16bb6c30c15e6p+0 : inexact-ok += exp10m1 downward binary128 0x7.a2031p-4 : 0x1.ffe16bb6c30c15e576291c8f2538p+0 : inexact-ok += exp10m1 tonearest binary128 0x7.a2031p-4 : 0x1.ffe16bb6c30c15e576291c8f2539p+0 : inexact-ok += exp10m1 towardzero binary128 0x7.a2031p-4 : 0x1.ffe16bb6c30c15e576291c8f2538p+0 : inexact-ok += exp10m1 upward binary128 0x7.a2031p-4 : 0x1.ffe16bb6c30c15e576291c8f2539p+0 : inexact-ok += exp10m1 downward ibm128 0x7.a2031p-4 : 0x1.ffe16bb6c30c15e576291c8f25p+0 : inexact-ok += exp10m1 tonearest ibm128 0x7.a2031p-4 : 0x1.ffe16bb6c30c15e576291c8f25p+0 : inexact-ok += exp10m1 towardzero ibm128 0x7.a2031p-4 : 0x1.ffe16bb6c30c15e576291c8f25p+0 : inexact-ok += exp10m1 upward ibm128 0x7.a2031p-4 : 0x1.ffe16bb6c30c15e576291c8f258p+0 : inexact-ok += exp10m1 downward binary64 0x7.a20316ebef504p-4 : 0x1.ffe16eb3a611p+0 : inexact-ok += exp10m1 tonearest binary64 0x7.a20316ebef504p-4 : 0x1.ffe16eb3a611p+0 : inexact-ok += exp10m1 towardzero binary64 0x7.a20316ebef504p-4 : 0x1.ffe16eb3a611p+0 : inexact-ok += exp10m1 upward binary64 0x7.a20316ebef504p-4 : 0x1.ffe16eb3a6111p+0 : inexact-ok += exp10m1 downward intel96 0x7.a20316ebef504p-4 : 0x1.ffe16eb3a611076p+0 : inexact-ok += exp10m1 tonearest intel96 0x7.a20316ebef504p-4 : 0x1.ffe16eb3a6110762p+0 : inexact-ok += exp10m1 towardzero intel96 0x7.a20316ebef504p-4 : 0x1.ffe16eb3a611076p+0 : inexact-ok += exp10m1 upward intel96 0x7.a20316ebef504p-4 : 0x1.ffe16eb3a6110762p+0 : inexact-ok += exp10m1 downward m68k96 0x7.a20316ebef504p-4 : 0x1.ffe16eb3a611076p+0 : inexact-ok += exp10m1 tonearest m68k96 0x7.a20316ebef504p-4 : 0x1.ffe16eb3a6110762p+0 : inexact-ok += exp10m1 towardzero m68k96 0x7.a20316ebef504p-4 : 0x1.ffe16eb3a611076p+0 : inexact-ok += exp10m1 upward m68k96 0x7.a20316ebef504p-4 : 0x1.ffe16eb3a6110762p+0 : inexact-ok += exp10m1 downward binary128 0x7.a20316ebef504p-4 : 0x1.ffe16eb3a61107617724c0383dc1p+0 : inexact-ok += exp10m1 tonearest binary128 0x7.a20316ebef504p-4 : 0x1.ffe16eb3a61107617724c0383dc2p+0 : inexact-ok += exp10m1 towardzero binary128 0x7.a20316ebef504p-4 : 0x1.ffe16eb3a61107617724c0383dc1p+0 : inexact-ok += exp10m1 upward binary128 0x7.a20316ebef504p-4 : 0x1.ffe16eb3a61107617724c0383dc2p+0 : inexact-ok += exp10m1 downward ibm128 0x7.a20316ebef504p-4 : 0x1.ffe16eb3a61107617724c0383d8p+0 : inexact-ok += exp10m1 tonearest ibm128 0x7.a20316ebef504p-4 : 0x1.ffe16eb3a61107617724c0383ep+0 : inexact-ok += exp10m1 towardzero ibm128 0x7.a20316ebef504p-4 : 0x1.ffe16eb3a61107617724c0383d8p+0 : inexact-ok += exp10m1 upward ibm128 0x7.a20316ebef504p-4 : 0x1.ffe16eb3a61107617724c0383ep+0 : inexact-ok +exp10m1 0x1.ce521eafe0f21p-2 += exp10m1 downward binary32 0x7.39488p-4 : 0x1.d3fa42p+0 : inexact-ok += exp10m1 tonearest binary32 0x7.39488p-4 : 0x1.d3fa44p+0 : inexact-ok += exp10m1 towardzero binary32 0x7.39488p-4 : 0x1.d3fa42p+0 : inexact-ok += exp10m1 upward binary32 0x7.39488p-4 : 0x1.d3fa44p+0 : inexact-ok += exp10m1 downward binary64 0x7.39488p-4 : 0x1.d3fa433c9154fp+0 : inexact-ok += exp10m1 tonearest binary64 0x7.39488p-4 : 0x1.d3fa433c9155p+0 : inexact-ok += exp10m1 towardzero binary64 0x7.39488p-4 : 0x1.d3fa433c9154fp+0 : inexact-ok += exp10m1 upward binary64 0x7.39488p-4 : 0x1.d3fa433c9155p+0 : inexact-ok += exp10m1 downward intel96 0x7.39488p-4 : 0x1.d3fa433c9154f89cp+0 : inexact-ok += exp10m1 tonearest intel96 0x7.39488p-4 : 0x1.d3fa433c9154f89cp+0 : inexact-ok += exp10m1 towardzero intel96 0x7.39488p-4 : 0x1.d3fa433c9154f89cp+0 : inexact-ok += exp10m1 upward intel96 0x7.39488p-4 : 0x1.d3fa433c9154f89ep+0 : inexact-ok += exp10m1 downward m68k96 0x7.39488p-4 : 0x1.d3fa433c9154f89cp+0 : inexact-ok += exp10m1 tonearest m68k96 0x7.39488p-4 : 0x1.d3fa433c9154f89cp+0 : inexact-ok += exp10m1 towardzero m68k96 0x7.39488p-4 : 0x1.d3fa433c9154f89cp+0 : inexact-ok += exp10m1 upward m68k96 0x7.39488p-4 : 0x1.d3fa433c9154f89ep+0 : inexact-ok += exp10m1 downward binary128 0x7.39488p-4 : 0x1.d3fa433c9154f89cc21985b8d89ep+0 : inexact-ok += exp10m1 tonearest binary128 0x7.39488p-4 : 0x1.d3fa433c9154f89cc21985b8d89fp+0 : inexact-ok += exp10m1 towardzero binary128 0x7.39488p-4 : 0x1.d3fa433c9154f89cc21985b8d89ep+0 : inexact-ok += exp10m1 upward binary128 0x7.39488p-4 : 0x1.d3fa433c9154f89cc21985b8d89fp+0 : inexact-ok += exp10m1 downward ibm128 0x7.39488p-4 : 0x1.d3fa433c9154f89cc21985b8d88p+0 : inexact-ok += exp10m1 tonearest ibm128 0x7.39488p-4 : 0x1.d3fa433c9154f89cc21985b8d88p+0 : inexact-ok += exp10m1 towardzero ibm128 0x7.39488p-4 : 0x1.d3fa433c9154f89cc21985b8d88p+0 : inexact-ok += exp10m1 upward ibm128 0x7.39488p-4 : 0x1.d3fa433c9154f89cc21985b8d9p+0 : inexact-ok += exp10m1 downward binary32 0x7.394878p-4 : 0x1.d3fa3ep+0 : inexact-ok += exp10m1 tonearest binary32 0x7.394878p-4 : 0x1.d3fa4p+0 : inexact-ok += exp10m1 towardzero binary32 0x7.394878p-4 : 0x1.d3fa3ep+0 : inexact-ok += exp10m1 upward binary32 0x7.394878p-4 : 0x1.d3fa4p+0 : inexact-ok += exp10m1 downward binary64 0x7.394878p-4 : 0x1.d3fa3ffb0ec76p+0 : inexact-ok += exp10m1 tonearest binary64 0x7.394878p-4 : 0x1.d3fa3ffb0ec76p+0 : inexact-ok += exp10m1 towardzero binary64 0x7.394878p-4 : 0x1.d3fa3ffb0ec76p+0 : inexact-ok += exp10m1 upward binary64 0x7.394878p-4 : 0x1.d3fa3ffb0ec77p+0 : inexact-ok += exp10m1 downward intel96 0x7.394878p-4 : 0x1.d3fa3ffb0ec7649p+0 : inexact-ok += exp10m1 tonearest intel96 0x7.394878p-4 : 0x1.d3fa3ffb0ec7649p+0 : inexact-ok += exp10m1 towardzero intel96 0x7.394878p-4 : 0x1.d3fa3ffb0ec7649p+0 : inexact-ok += exp10m1 upward intel96 0x7.394878p-4 : 0x1.d3fa3ffb0ec76492p+0 : inexact-ok += exp10m1 downward m68k96 0x7.394878p-4 : 0x1.d3fa3ffb0ec7649p+0 : inexact-ok += exp10m1 tonearest m68k96 0x7.394878p-4 : 0x1.d3fa3ffb0ec7649p+0 : inexact-ok += exp10m1 towardzero m68k96 0x7.394878p-4 : 0x1.d3fa3ffb0ec7649p+0 : inexact-ok += exp10m1 upward m68k96 0x7.394878p-4 : 0x1.d3fa3ffb0ec76492p+0 : inexact-ok += exp10m1 downward binary128 0x7.394878p-4 : 0x1.d3fa3ffb0ec76490ffb29fcc35d2p+0 : inexact-ok += exp10m1 tonearest binary128 0x7.394878p-4 : 0x1.d3fa3ffb0ec76490ffb29fcc35d3p+0 : inexact-ok += exp10m1 towardzero binary128 0x7.394878p-4 : 0x1.d3fa3ffb0ec76490ffb29fcc35d2p+0 : inexact-ok += exp10m1 upward binary128 0x7.394878p-4 : 0x1.d3fa3ffb0ec76490ffb29fcc35d3p+0 : inexact-ok += exp10m1 downward ibm128 0x7.394878p-4 : 0x1.d3fa3ffb0ec76490ffb29fcc358p+0 : inexact-ok += exp10m1 tonearest ibm128 0x7.394878p-4 : 0x1.d3fa3ffb0ec76490ffb29fcc36p+0 : inexact-ok += exp10m1 towardzero ibm128 0x7.394878p-4 : 0x1.d3fa3ffb0ec76490ffb29fcc358p+0 : inexact-ok += exp10m1 upward ibm128 0x7.394878p-4 : 0x1.d3fa3ffb0ec76490ffb29fcc36p+0 : inexact-ok += exp10m1 downward binary64 0x7.39487abf83c84p-4 : 0x1.d3fa411961198p+0 : inexact-ok += exp10m1 tonearest binary64 0x7.39487abf83c84p-4 : 0x1.d3fa411961199p+0 : inexact-ok += exp10m1 towardzero binary64 0x7.39487abf83c84p-4 : 0x1.d3fa411961198p+0 : inexact-ok += exp10m1 upward binary64 0x7.39487abf83c84p-4 : 0x1.d3fa411961199p+0 : inexact-ok += exp10m1 downward intel96 0x7.39487abf83c84p-4 : 0x1.d3fa411961198b28p+0 : inexact-ok += exp10m1 tonearest intel96 0x7.39487abf83c84p-4 : 0x1.d3fa411961198b2ap+0 : inexact-ok += exp10m1 towardzero intel96 0x7.39487abf83c84p-4 : 0x1.d3fa411961198b28p+0 : inexact-ok += exp10m1 upward intel96 0x7.39487abf83c84p-4 : 0x1.d3fa411961198b2ap+0 : inexact-ok += exp10m1 downward m68k96 0x7.39487abf83c84p-4 : 0x1.d3fa411961198b28p+0 : inexact-ok += exp10m1 tonearest m68k96 0x7.39487abf83c84p-4 : 0x1.d3fa411961198b2ap+0 : inexact-ok += exp10m1 towardzero m68k96 0x7.39487abf83c84p-4 : 0x1.d3fa411961198b28p+0 : inexact-ok += exp10m1 upward m68k96 0x7.39487abf83c84p-4 : 0x1.d3fa411961198b2ap+0 : inexact-ok += exp10m1 downward binary128 0x7.39487abf83c84p-4 : 0x1.d3fa411961198b2909c5ff77fcccp+0 : inexact-ok += exp10m1 tonearest binary128 0x7.39487abf83c84p-4 : 0x1.d3fa411961198b2909c5ff77fccdp+0 : inexact-ok += exp10m1 towardzero binary128 0x7.39487abf83c84p-4 : 0x1.d3fa411961198b2909c5ff77fcccp+0 : inexact-ok += exp10m1 upward binary128 0x7.39487abf83c84p-4 : 0x1.d3fa411961198b2909c5ff77fccdp+0 : inexact-ok += exp10m1 downward ibm128 0x7.39487abf83c84p-4 : 0x1.d3fa411961198b2909c5ff77fc8p+0 : inexact-ok += exp10m1 tonearest ibm128 0x7.39487abf83c84p-4 : 0x1.d3fa411961198b2909c5ff77fdp+0 : inexact-ok += exp10m1 towardzero ibm128 0x7.39487abf83c84p-4 : 0x1.d3fa411961198b2909c5ff77fc8p+0 : inexact-ok += exp10m1 upward ibm128 0x7.39487abf83c84p-4 : 0x1.d3fa411961198b2909c5ff77fdp+0 : inexact-ok +exp10m1 0x1.ce21fffa5aed8p-2 += exp10m1 downward binary32 0x7.3888p-4 : 0x1.d3abeep+0 : inexact-ok += exp10m1 tonearest binary32 0x7.3888p-4 : 0x1.d3abfp+0 : inexact-ok += exp10m1 towardzero binary32 0x7.3888p-4 : 0x1.d3abeep+0 : inexact-ok += exp10m1 upward binary32 0x7.3888p-4 : 0x1.d3abfp+0 : inexact-ok += exp10m1 downward binary64 0x7.3888p-4 : 0x1.d3abef240072ep+0 : inexact-ok += exp10m1 tonearest binary64 0x7.3888p-4 : 0x1.d3abef240072ep+0 : inexact-ok += exp10m1 towardzero binary64 0x7.3888p-4 : 0x1.d3abef240072ep+0 : inexact-ok += exp10m1 upward binary64 0x7.3888p-4 : 0x1.d3abef240072fp+0 : inexact-ok += exp10m1 downward intel96 0x7.3888p-4 : 0x1.d3abef240072e1a6p+0 : inexact-ok += exp10m1 tonearest intel96 0x7.3888p-4 : 0x1.d3abef240072e1a8p+0 : inexact-ok += exp10m1 towardzero intel96 0x7.3888p-4 : 0x1.d3abef240072e1a6p+0 : inexact-ok += exp10m1 upward intel96 0x7.3888p-4 : 0x1.d3abef240072e1a8p+0 : inexact-ok += exp10m1 downward m68k96 0x7.3888p-4 : 0x1.d3abef240072e1a6p+0 : inexact-ok += exp10m1 tonearest m68k96 0x7.3888p-4 : 0x1.d3abef240072e1a8p+0 : inexact-ok += exp10m1 towardzero m68k96 0x7.3888p-4 : 0x1.d3abef240072e1a6p+0 : inexact-ok += exp10m1 upward m68k96 0x7.3888p-4 : 0x1.d3abef240072e1a8p+0 : inexact-ok += exp10m1 downward binary128 0x7.3888p-4 : 0x1.d3abef240072e1a78e290fdd18c3p+0 : inexact-ok += exp10m1 tonearest binary128 0x7.3888p-4 : 0x1.d3abef240072e1a78e290fdd18c4p+0 : inexact-ok += exp10m1 towardzero binary128 0x7.3888p-4 : 0x1.d3abef240072e1a78e290fdd18c3p+0 : inexact-ok += exp10m1 upward binary128 0x7.3888p-4 : 0x1.d3abef240072e1a78e290fdd18c4p+0 : inexact-ok += exp10m1 downward ibm128 0x7.3888p-4 : 0x1.d3abef240072e1a78e290fdd188p+0 : inexact-ok += exp10m1 tonearest ibm128 0x7.3888p-4 : 0x1.d3abef240072e1a78e290fdd19p+0 : inexact-ok += exp10m1 towardzero ibm128 0x7.3888p-4 : 0x1.d3abef240072e1a78e290fdd188p+0 : inexact-ok += exp10m1 upward ibm128 0x7.3888p-4 : 0x1.d3abef240072e1a78e290fdd19p+0 : inexact-ok += exp10m1 downward binary32 0x7.3887f8p-4 : 0x1.d3abeap+0 : inexact-ok += exp10m1 tonearest binary32 0x7.3887f8p-4 : 0x1.d3abecp+0 : inexact-ok += exp10m1 towardzero binary32 0x7.3887f8p-4 : 0x1.d3abeap+0 : inexact-ok += exp10m1 upward binary32 0x7.3887f8p-4 : 0x1.d3abecp+0 : inexact-ok += exp10m1 downward binary64 0x7.3887f8p-4 : 0x1.d3abebe2d8132p+0 : inexact-ok += exp10m1 tonearest binary64 0x7.3887f8p-4 : 0x1.d3abebe2d8132p+0 : inexact-ok += exp10m1 towardzero binary64 0x7.3887f8p-4 : 0x1.d3abebe2d8132p+0 : inexact-ok += exp10m1 upward binary64 0x7.3887f8p-4 : 0x1.d3abebe2d8133p+0 : inexact-ok += exp10m1 downward intel96 0x7.3887f8p-4 : 0x1.d3abebe2d8132188p+0 : inexact-ok += exp10m1 tonearest intel96 0x7.3887f8p-4 : 0x1.d3abebe2d8132188p+0 : inexact-ok += exp10m1 towardzero intel96 0x7.3887f8p-4 : 0x1.d3abebe2d8132188p+0 : inexact-ok += exp10m1 upward intel96 0x7.3887f8p-4 : 0x1.d3abebe2d813218ap+0 : inexact-ok += exp10m1 downward m68k96 0x7.3887f8p-4 : 0x1.d3abebe2d8132188p+0 : inexact-ok += exp10m1 tonearest m68k96 0x7.3887f8p-4 : 0x1.d3abebe2d8132188p+0 : inexact-ok += exp10m1 towardzero m68k96 0x7.3887f8p-4 : 0x1.d3abebe2d8132188p+0 : inexact-ok += exp10m1 upward m68k96 0x7.3887f8p-4 : 0x1.d3abebe2d813218ap+0 : inexact-ok += exp10m1 downward binary128 0x7.3887f8p-4 : 0x1.d3abebe2d813218868185d978062p+0 : inexact-ok += exp10m1 tonearest binary128 0x7.3887f8p-4 : 0x1.d3abebe2d813218868185d978063p+0 : inexact-ok += exp10m1 towardzero binary128 0x7.3887f8p-4 : 0x1.d3abebe2d813218868185d978062p+0 : inexact-ok += exp10m1 upward binary128 0x7.3887f8p-4 : 0x1.d3abebe2d813218868185d978063p+0 : inexact-ok += exp10m1 downward ibm128 0x7.3887f8p-4 : 0x1.d3abebe2d813218868185d978p+0 : inexact-ok += exp10m1 tonearest ibm128 0x7.3887f8p-4 : 0x1.d3abebe2d813218868185d97808p+0 : inexact-ok += exp10m1 towardzero ibm128 0x7.3887f8p-4 : 0x1.d3abebe2d813218868185d978p+0 : inexact-ok += exp10m1 upward ibm128 0x7.3887f8p-4 : 0x1.d3abebe2d813218868185d97808p+0 : inexact-ok += exp10m1 downward binary64 0x7.3887ffe96bb6p-4 : 0x1.d3abef1ad0f04p+0 : inexact-ok += exp10m1 tonearest binary64 0x7.3887ffe96bb6p-4 : 0x1.d3abef1ad0f05p+0 : inexact-ok += exp10m1 towardzero binary64 0x7.3887ffe96bb6p-4 : 0x1.d3abef1ad0f04p+0 : inexact-ok += exp10m1 upward binary64 0x7.3887ffe96bb6p-4 : 0x1.d3abef1ad0f05p+0 : inexact-ok += exp10m1 downward intel96 0x7.3887ffe96bb6p-4 : 0x1.d3abef1ad0f04f7ap+0 : inexact-ok += exp10m1 tonearest intel96 0x7.3887ffe96bb6p-4 : 0x1.d3abef1ad0f04f7cp+0 : inexact-ok += exp10m1 towardzero intel96 0x7.3887ffe96bb6p-4 : 0x1.d3abef1ad0f04f7ap+0 : inexact-ok += exp10m1 upward intel96 0x7.3887ffe96bb6p-4 : 0x1.d3abef1ad0f04f7cp+0 : inexact-ok += exp10m1 downward m68k96 0x7.3887ffe96bb6p-4 : 0x1.d3abef1ad0f04f7ap+0 : inexact-ok += exp10m1 tonearest m68k96 0x7.3887ffe96bb6p-4 : 0x1.d3abef1ad0f04f7cp+0 : inexact-ok += exp10m1 towardzero m68k96 0x7.3887ffe96bb6p-4 : 0x1.d3abef1ad0f04f7ap+0 : inexact-ok += exp10m1 upward m68k96 0x7.3887ffe96bb6p-4 : 0x1.d3abef1ad0f04f7cp+0 : inexact-ok += exp10m1 downward binary128 0x7.3887ffe96bb6p-4 : 0x1.d3abef1ad0f04f7ba9c1df751f65p+0 : inexact-ok += exp10m1 tonearest binary128 0x7.3887ffe96bb6p-4 : 0x1.d3abef1ad0f04f7ba9c1df751f65p+0 : inexact-ok += exp10m1 towardzero binary128 0x7.3887ffe96bb6p-4 : 0x1.d3abef1ad0f04f7ba9c1df751f65p+0 : inexact-ok += exp10m1 upward binary128 0x7.3887ffe96bb6p-4 : 0x1.d3abef1ad0f04f7ba9c1df751f66p+0 : inexact-ok += exp10m1 downward ibm128 0x7.3887ffe96bb6p-4 : 0x1.d3abef1ad0f04f7ba9c1df751fp+0 : inexact-ok += exp10m1 tonearest ibm128 0x7.3887ffe96bb6p-4 : 0x1.d3abef1ad0f04f7ba9c1df751f8p+0 : inexact-ok += exp10m1 towardzero ibm128 0x7.3887ffe96bb6p-4 : 0x1.d3abef1ad0f04f7ba9c1df751fp+0 : inexact-ok += exp10m1 upward ibm128 0x7.3887ffe96bb6p-4 : 0x1.d3abef1ad0f04f7ba9c1df751f8p+0 : inexact-ok +exp10m1 -0x1.bcb951df89248p-15 += exp10m1 downward binary32 -0x3.7972ap-16 : -0x7.ffe778p-16 : inexact-ok += exp10m1 tonearest binary32 -0x3.7972ap-16 : -0x7.ffe778p-16 : inexact-ok += exp10m1 towardzero binary32 -0x3.7972ap-16 : -0x7.ffe77p-16 : inexact-ok += exp10m1 upward binary32 -0x3.7972ap-16 : -0x7.ffe77p-16 : inexact-ok += exp10m1 downward binary64 -0x3.7972ap-16 : -0x7.ffe775c354418p-16 : inexact-ok += exp10m1 tonearest binary64 -0x3.7972ap-16 : -0x7.ffe775c354414p-16 : inexact-ok += exp10m1 towardzero binary64 -0x3.7972ap-16 : -0x7.ffe775c354414p-16 : inexact-ok += exp10m1 upward binary64 -0x3.7972ap-16 : -0x7.ffe775c354414p-16 : inexact-ok += exp10m1 downward intel96 -0x3.7972ap-16 : -0x7.ffe775c3544149a8p-16 : inexact-ok += exp10m1 tonearest intel96 -0x3.7972ap-16 : -0x7.ffe775c3544149ap-16 : inexact-ok += exp10m1 towardzero intel96 -0x3.7972ap-16 : -0x7.ffe775c3544149ap-16 : inexact-ok += exp10m1 upward intel96 -0x3.7972ap-16 : -0x7.ffe775c3544149ap-16 : inexact-ok += exp10m1 downward m68k96 -0x3.7972ap-16 : -0x7.ffe775c3544149a8p-16 : inexact-ok += exp10m1 tonearest m68k96 -0x3.7972ap-16 : -0x7.ffe775c3544149ap-16 : inexact-ok += exp10m1 towardzero m68k96 -0x3.7972ap-16 : -0x7.ffe775c3544149ap-16 : inexact-ok += exp10m1 upward m68k96 -0x3.7972ap-16 : -0x7.ffe775c3544149ap-16 : inexact-ok += exp10m1 downward binary128 -0x3.7972ap-16 : -0x7.ffe775c3544149a2e761d052890cp-16 : inexact-ok += exp10m1 tonearest binary128 -0x3.7972ap-16 : -0x7.ffe775c3544149a2e761d0528908p-16 : inexact-ok += exp10m1 towardzero binary128 -0x3.7972ap-16 : -0x7.ffe775c3544149a2e761d0528908p-16 : inexact-ok += exp10m1 upward binary128 -0x3.7972ap-16 : -0x7.ffe775c3544149a2e761d0528908p-16 : inexact-ok += exp10m1 downward ibm128 -0x3.7972ap-16 : -0x7.ffe775c3544149a2e761d0528ap-16 : inexact-ok += exp10m1 tonearest ibm128 -0x3.7972ap-16 : -0x7.ffe775c3544149a2e761d0528ap-16 : inexact-ok += exp10m1 towardzero ibm128 -0x3.7972ap-16 : -0x7.ffe775c3544149a2e761d05288p-16 : inexact-ok += exp10m1 upward ibm128 -0x3.7972ap-16 : -0x7.ffe775c3544149a2e761d05288p-16 : inexact-ok += exp10m1 downward binary32 -0x3.7972a4p-16 : -0x7.ffe78p-16 : inexact-ok += exp10m1 tonearest binary32 -0x3.7972a4p-16 : -0x7.ffe78p-16 : inexact-ok += exp10m1 towardzero binary32 -0x3.7972a4p-16 : -0x7.ffe778p-16 : inexact-ok += exp10m1 upward binary32 -0x3.7972a4p-16 : -0x7.ffe778p-16 : inexact-ok += exp10m1 downward binary64 -0x3.7972a4p-16 : -0x7.ffe77ef8e3714p-16 : inexact-ok += exp10m1 tonearest binary64 -0x3.7972a4p-16 : -0x7.ffe77ef8e3714p-16 : inexact-ok += exp10m1 towardzero binary64 -0x3.7972a4p-16 : -0x7.ffe77ef8e371p-16 : inexact-ok += exp10m1 upward binary64 -0x3.7972a4p-16 : -0x7.ffe77ef8e371p-16 : inexact-ok += exp10m1 downward intel96 -0x3.7972a4p-16 : -0x7.ffe77ef8e3713f4p-16 : inexact-ok += exp10m1 tonearest intel96 -0x3.7972a4p-16 : -0x7.ffe77ef8e3713f38p-16 : inexact-ok += exp10m1 towardzero intel96 -0x3.7972a4p-16 : -0x7.ffe77ef8e3713f38p-16 : inexact-ok += exp10m1 upward intel96 -0x3.7972a4p-16 : -0x7.ffe77ef8e3713f38p-16 : inexact-ok += exp10m1 downward m68k96 -0x3.7972a4p-16 : -0x7.ffe77ef8e3713f4p-16 : inexact-ok += exp10m1 tonearest m68k96 -0x3.7972a4p-16 : -0x7.ffe77ef8e3713f38p-16 : inexact-ok += exp10m1 towardzero m68k96 -0x3.7972a4p-16 : -0x7.ffe77ef8e3713f38p-16 : inexact-ok += exp10m1 upward m68k96 -0x3.7972a4p-16 : -0x7.ffe77ef8e3713f38p-16 : inexact-ok += exp10m1 downward binary128 -0x3.7972a4p-16 : -0x7.ffe77ef8e3713f39be5968edbc74p-16 : inexact-ok += exp10m1 tonearest binary128 -0x3.7972a4p-16 : -0x7.ffe77ef8e3713f39be5968edbc74p-16 : inexact-ok += exp10m1 towardzero binary128 -0x3.7972a4p-16 : -0x7.ffe77ef8e3713f39be5968edbc7p-16 : inexact-ok += exp10m1 upward binary128 -0x3.7972a4p-16 : -0x7.ffe77ef8e3713f39be5968edbc7p-16 : inexact-ok += exp10m1 downward ibm128 -0x3.7972a4p-16 : -0x7.ffe77ef8e3713f39be5968edbep-16 : inexact-ok += exp10m1 tonearest ibm128 -0x3.7972a4p-16 : -0x7.ffe77ef8e3713f39be5968edbcp-16 : inexact-ok += exp10m1 towardzero ibm128 -0x3.7972a4p-16 : -0x7.ffe77ef8e3713f39be5968edbcp-16 : inexact-ok += exp10m1 upward ibm128 -0x3.7972a4p-16 : -0x7.ffe77ef8e3713f39be5968edbcp-16 : inexact-ok += exp10m1 downward binary64 -0x3.7972a3bf1249p-16 : -0x7.ffe77e636733cp-16 : inexact-ok += exp10m1 tonearest binary64 -0x3.7972a3bf1249p-16 : -0x7.ffe77e6367338p-16 : inexact-ok += exp10m1 towardzero binary64 -0x3.7972a3bf1249p-16 : -0x7.ffe77e6367338p-16 : inexact-ok += exp10m1 upward binary64 -0x3.7972a3bf1249p-16 : -0x7.ffe77e6367338p-16 : inexact-ok += exp10m1 downward intel96 -0x3.7972a3bf1249p-16 : -0x7.ffe77e63673389b8p-16 : inexact-ok += exp10m1 tonearest intel96 -0x3.7972a3bf1249p-16 : -0x7.ffe77e63673389bp-16 : inexact-ok += exp10m1 towardzero intel96 -0x3.7972a3bf1249p-16 : -0x7.ffe77e63673389bp-16 : inexact-ok += exp10m1 upward intel96 -0x3.7972a3bf1249p-16 : -0x7.ffe77e63673389bp-16 : inexact-ok += exp10m1 downward m68k96 -0x3.7972a3bf1249p-16 : -0x7.ffe77e63673389b8p-16 : inexact-ok += exp10m1 tonearest m68k96 -0x3.7972a3bf1249p-16 : -0x7.ffe77e63673389bp-16 : inexact-ok += exp10m1 towardzero m68k96 -0x3.7972a3bf1249p-16 : -0x7.ffe77e63673389bp-16 : inexact-ok += exp10m1 upward m68k96 -0x3.7972a3bf1249p-16 : -0x7.ffe77e63673389bp-16 : inexact-ok += exp10m1 downward binary128 -0x3.7972a3bf1249p-16 : -0x7.ffe77e63673389b26c5e71b0ac34p-16 : inexact-ok += exp10m1 tonearest binary128 -0x3.7972a3bf1249p-16 : -0x7.ffe77e63673389b26c5e71b0ac3p-16 : inexact-ok += exp10m1 towardzero binary128 -0x3.7972a3bf1249p-16 : -0x7.ffe77e63673389b26c5e71b0ac3p-16 : inexact-ok += exp10m1 upward binary128 -0x3.7972a3bf1249p-16 : -0x7.ffe77e63673389b26c5e71b0ac3p-16 : inexact-ok += exp10m1 downward ibm128 -0x3.7972a3bf1249p-16 : -0x7.ffe77e63673389b26c5e71b0aep-16 : inexact-ok += exp10m1 tonearest ibm128 -0x3.7972a3bf1249p-16 : -0x7.ffe77e63673389b26c5e71b0acp-16 : inexact-ok += exp10m1 towardzero ibm128 -0x3.7972a3bf1249p-16 : -0x7.ffe77e63673389b26c5e71b0acp-16 : inexact-ok += exp10m1 upward ibm128 -0x3.7972a3bf1249p-16 : -0x7.ffe77e63673389b26c5e71b0acp-16 : inexact-ok +exp10m1 0x2.6882b807049f54ap-4 += exp10m1 downward binary32 0x2.6882bcp-4 : 0x6.a09f7p-4 : inexact-ok += exp10m1 tonearest binary32 0x2.6882bcp-4 : 0x6.a09f7p-4 : inexact-ok += exp10m1 towardzero binary32 0x2.6882bcp-4 : 0x6.a09f7p-4 : inexact-ok += exp10m1 upward binary32 0x2.6882bcp-4 : 0x6.a09f78p-4 : inexact-ok += exp10m1 downward binary64 0x2.6882bcp-4 : 0x6.a09f714394d2cp-4 : inexact-ok += exp10m1 tonearest binary64 0x2.6882bcp-4 : 0x6.a09f714394d3p-4 : inexact-ok += exp10m1 towardzero binary64 0x2.6882bcp-4 : 0x6.a09f714394d2cp-4 : inexact-ok += exp10m1 upward binary64 0x2.6882bcp-4 : 0x6.a09f714394d3p-4 : inexact-ok += exp10m1 downward intel96 0x2.6882bcp-4 : 0x6.a09f714394d2e71p-4 : inexact-ok += exp10m1 tonearest intel96 0x2.6882bcp-4 : 0x6.a09f714394d2e71p-4 : inexact-ok += exp10m1 towardzero intel96 0x2.6882bcp-4 : 0x6.a09f714394d2e71p-4 : inexact-ok += exp10m1 upward intel96 0x2.6882bcp-4 : 0x6.a09f714394d2e718p-4 : inexact-ok += exp10m1 downward m68k96 0x2.6882bcp-4 : 0x6.a09f714394d2e71p-4 : inexact-ok += exp10m1 tonearest m68k96 0x2.6882bcp-4 : 0x6.a09f714394d2e71p-4 : inexact-ok += exp10m1 towardzero m68k96 0x2.6882bcp-4 : 0x6.a09f714394d2e71p-4 : inexact-ok += exp10m1 upward m68k96 0x2.6882bcp-4 : 0x6.a09f714394d2e718p-4 : inexact-ok += exp10m1 downward binary128 0x2.6882bcp-4 : 0x6.a09f714394d2e713fa389ff1c154p-4 : inexact-ok += exp10m1 tonearest binary128 0x2.6882bcp-4 : 0x6.a09f714394d2e713fa389ff1c158p-4 : inexact-ok += exp10m1 towardzero binary128 0x2.6882bcp-4 : 0x6.a09f714394d2e713fa389ff1c154p-4 : inexact-ok += exp10m1 upward binary128 0x2.6882bcp-4 : 0x6.a09f714394d2e713fa389ff1c158p-4 : inexact-ok += exp10m1 downward ibm128 0x2.6882bcp-4 : 0x6.a09f714394d2e713fa389ff1cp-4 : inexact-ok += exp10m1 tonearest ibm128 0x2.6882bcp-4 : 0x6.a09f714394d2e713fa389ff1c2p-4 : inexact-ok += exp10m1 towardzero ibm128 0x2.6882bcp-4 : 0x6.a09f714394d2e713fa389ff1cp-4 : inexact-ok += exp10m1 upward ibm128 0x2.6882bcp-4 : 0x6.a09f714394d2e713fa389ff1c2p-4 : inexact-ok += exp10m1 downward binary32 0x2.6882b8p-4 : 0x6.a09f6p-4 : inexact-ok += exp10m1 tonearest binary32 0x2.6882b8p-4 : 0x6.a09f68p-4 : inexact-ok += exp10m1 towardzero binary32 0x2.6882b8p-4 : 0x6.a09f6p-4 : inexact-ok += exp10m1 upward binary32 0x2.6882b8p-4 : 0x6.a09f68p-4 : inexact-ok += exp10m1 downward binary64 0x2.6882b8p-4 : 0x6.a09f643d14648p-4 : inexact-ok += exp10m1 tonearest binary64 0x2.6882b8p-4 : 0x6.a09f643d1464cp-4 : inexact-ok += exp10m1 towardzero binary64 0x2.6882b8p-4 : 0x6.a09f643d14648p-4 : inexact-ok += exp10m1 upward binary64 0x2.6882b8p-4 : 0x6.a09f643d1464cp-4 : inexact-ok += exp10m1 downward intel96 0x2.6882b8p-4 : 0x6.a09f643d1464a148p-4 : inexact-ok += exp10m1 tonearest intel96 0x2.6882b8p-4 : 0x6.a09f643d1464a15p-4 : inexact-ok += exp10m1 towardzero intel96 0x2.6882b8p-4 : 0x6.a09f643d1464a148p-4 : inexact-ok += exp10m1 upward intel96 0x2.6882b8p-4 : 0x6.a09f643d1464a15p-4 : inexact-ok += exp10m1 downward m68k96 0x2.6882b8p-4 : 0x6.a09f643d1464a148p-4 : inexact-ok += exp10m1 tonearest m68k96 0x2.6882b8p-4 : 0x6.a09f643d1464a15p-4 : inexact-ok += exp10m1 towardzero m68k96 0x2.6882b8p-4 : 0x6.a09f643d1464a148p-4 : inexact-ok += exp10m1 upward m68k96 0x2.6882b8p-4 : 0x6.a09f643d1464a15p-4 : inexact-ok += exp10m1 downward binary128 0x2.6882b8p-4 : 0x6.a09f643d1464a14e88d45f679d6cp-4 : inexact-ok += exp10m1 tonearest binary128 0x2.6882b8p-4 : 0x6.a09f643d1464a14e88d45f679d7p-4 : inexact-ok += exp10m1 towardzero binary128 0x2.6882b8p-4 : 0x6.a09f643d1464a14e88d45f679d6cp-4 : inexact-ok += exp10m1 upward binary128 0x2.6882b8p-4 : 0x6.a09f643d1464a14e88d45f679d7p-4 : inexact-ok += exp10m1 downward ibm128 0x2.6882b8p-4 : 0x6.a09f643d1464a14e88d45f679cp-4 : inexact-ok += exp10m1 tonearest ibm128 0x2.6882b8p-4 : 0x6.a09f643d1464a14e88d45f679ep-4 : inexact-ok += exp10m1 towardzero ibm128 0x2.6882b8p-4 : 0x6.a09f643d1464a14e88d45f679cp-4 : inexact-ok += exp10m1 upward ibm128 0x2.6882b8p-4 : 0x6.a09f643d1464a14e88d45f679ep-4 : inexact-ok += exp10m1 downward binary64 0x2.6882b807049f6p-4 : 0x6.a09f6453eed2cp-4 : inexact-ok += exp10m1 tonearest binary64 0x2.6882b807049f6p-4 : 0x6.a09f6453eed2cp-4 : inexact-ok += exp10m1 towardzero binary64 0x2.6882b807049f6p-4 : 0x6.a09f6453eed2cp-4 : inexact-ok += exp10m1 upward binary64 0x2.6882b807049f6p-4 : 0x6.a09f6453eed3p-4 : inexact-ok += exp10m1 downward intel96 0x2.6882b807049f6p-4 : 0x6.a09f6453eed2d738p-4 : inexact-ok += exp10m1 tonearest intel96 0x2.6882b807049f6p-4 : 0x6.a09f6453eed2d738p-4 : inexact-ok += exp10m1 towardzero intel96 0x2.6882b807049f6p-4 : 0x6.a09f6453eed2d738p-4 : inexact-ok += exp10m1 upward intel96 0x2.6882b807049f6p-4 : 0x6.a09f6453eed2d74p-4 : inexact-ok += exp10m1 downward m68k96 0x2.6882b807049f6p-4 : 0x6.a09f6453eed2d738p-4 : inexact-ok += exp10m1 tonearest m68k96 0x2.6882b807049f6p-4 : 0x6.a09f6453eed2d738p-4 : inexact-ok += exp10m1 towardzero m68k96 0x2.6882b807049f6p-4 : 0x6.a09f6453eed2d738p-4 : inexact-ok += exp10m1 upward m68k96 0x2.6882b807049f6p-4 : 0x6.a09f6453eed2d74p-4 : inexact-ok += exp10m1 downward binary128 0x2.6882b807049f6p-4 : 0x6.a09f6453eed2d73bb88cc23d5618p-4 : inexact-ok += exp10m1 tonearest binary128 0x2.6882b807049f6p-4 : 0x6.a09f6453eed2d73bb88cc23d5618p-4 : inexact-ok += exp10m1 towardzero binary128 0x2.6882b807049f6p-4 : 0x6.a09f6453eed2d73bb88cc23d5618p-4 : inexact-ok += exp10m1 upward binary128 0x2.6882b807049f6p-4 : 0x6.a09f6453eed2d73bb88cc23d561cp-4 : inexact-ok += exp10m1 downward ibm128 0x2.6882b807049f6p-4 : 0x6.a09f6453eed2d73bb88cc23d56p-4 : inexact-ok += exp10m1 tonearest ibm128 0x2.6882b807049f6p-4 : 0x6.a09f6453eed2d73bb88cc23d56p-4 : inexact-ok += exp10m1 towardzero ibm128 0x2.6882b807049f6p-4 : 0x6.a09f6453eed2d73bb88cc23d56p-4 : inexact-ok += exp10m1 upward ibm128 0x2.6882b807049f6p-4 : 0x6.a09f6453eed2d73bb88cc23d58p-4 : inexact-ok += exp10m1 downward binary64 0x2.6882b807049f4p-4 : 0x6.a09f6453eed24p-4 : inexact-ok += exp10m1 tonearest binary64 0x2.6882b807049f4p-4 : 0x6.a09f6453eed28p-4 : inexact-ok += exp10m1 towardzero binary64 0x2.6882b807049f4p-4 : 0x6.a09f6453eed24p-4 : inexact-ok += exp10m1 upward binary64 0x2.6882b807049f4p-4 : 0x6.a09f6453eed28p-4 : inexact-ok += exp10m1 downward intel96 0x2.6882b807049f4p-4 : 0x6.a09f6453eed26fp-4 : inexact-ok += exp10m1 tonearest intel96 0x2.6882b807049f4p-4 : 0x6.a09f6453eed26f08p-4 : inexact-ok += exp10m1 towardzero intel96 0x2.6882b807049f4p-4 : 0x6.a09f6453eed26fp-4 : inexact-ok += exp10m1 upward intel96 0x2.6882b807049f4p-4 : 0x6.a09f6453eed26f08p-4 : inexact-ok += exp10m1 downward m68k96 0x2.6882b807049f4p-4 : 0x6.a09f6453eed26fp-4 : inexact-ok += exp10m1 tonearest m68k96 0x2.6882b807049f4p-4 : 0x6.a09f6453eed26f08p-4 : inexact-ok += exp10m1 towardzero m68k96 0x2.6882b807049f4p-4 : 0x6.a09f6453eed26fp-4 : inexact-ok += exp10m1 upward m68k96 0x2.6882b807049f4p-4 : 0x6.a09f6453eed26f08p-4 : inexact-ok += exp10m1 downward binary128 0x2.6882b807049f4p-4 : 0x6.a09f6453eed26f07b53828ccddf4p-4 : inexact-ok += exp10m1 tonearest binary128 0x2.6882b807049f4p-4 : 0x6.a09f6453eed26f07b53828ccddf8p-4 : inexact-ok += exp10m1 towardzero binary128 0x2.6882b807049f4p-4 : 0x6.a09f6453eed26f07b53828ccddf4p-4 : inexact-ok += exp10m1 upward binary128 0x2.6882b807049f4p-4 : 0x6.a09f6453eed26f07b53828ccddf8p-4 : inexact-ok += exp10m1 downward ibm128 0x2.6882b807049f4p-4 : 0x6.a09f6453eed26f07b53828ccdcp-4 : inexact-ok += exp10m1 tonearest ibm128 0x2.6882b807049f4p-4 : 0x6.a09f6453eed26f07b53828ccdep-4 : inexact-ok += exp10m1 towardzero ibm128 0x2.6882b807049f4p-4 : 0x6.a09f6453eed26f07b53828ccdcp-4 : inexact-ok += exp10m1 upward ibm128 0x2.6882b807049f4p-4 : 0x6.a09f6453eed26f07b53828ccdep-4 : inexact-ok += exp10m1 downward intel96 0x2.6882b807049f54ap-4 : 0x6.a09f6453eed2b23p-4 : inexact-ok += exp10m1 tonearest intel96 0x2.6882b807049f54ap-4 : 0x6.a09f6453eed2b23p-4 : inexact-ok += exp10m1 towardzero intel96 0x2.6882b807049f54ap-4 : 0x6.a09f6453eed2b23p-4 : inexact-ok += exp10m1 upward intel96 0x2.6882b807049f54ap-4 : 0x6.a09f6453eed2b238p-4 : inexact-ok += exp10m1 downward m68k96 0x2.6882b807049f54ap-4 : 0x6.a09f6453eed2b23p-4 : inexact-ok += exp10m1 tonearest m68k96 0x2.6882b807049f54ap-4 : 0x6.a09f6453eed2b23p-4 : inexact-ok += exp10m1 towardzero m68k96 0x2.6882b807049f54ap-4 : 0x6.a09f6453eed2b23p-4 : inexact-ok += exp10m1 upward m68k96 0x2.6882b807049f54ap-4 : 0x6.a09f6453eed2b238p-4 : inexact-ok += exp10m1 downward binary128 0x2.6882b807049f54ap-4 : 0x6.a09f6453eed2b2313b5dafb25b2cp-4 : inexact-ok += exp10m1 tonearest binary128 0x2.6882b807049f54ap-4 : 0x6.a09f6453eed2b2313b5dafb25b3p-4 : inexact-ok += exp10m1 towardzero binary128 0x2.6882b807049f54ap-4 : 0x6.a09f6453eed2b2313b5dafb25b2cp-4 : inexact-ok += exp10m1 upward binary128 0x2.6882b807049f54ap-4 : 0x6.a09f6453eed2b2313b5dafb25b3p-4 : inexact-ok += exp10m1 downward ibm128 0x2.6882b807049f54ap-4 : 0x6.a09f6453eed2b2313b5dafb25ap-4 : inexact-ok += exp10m1 tonearest ibm128 0x2.6882b807049f54ap-4 : 0x6.a09f6453eed2b2313b5dafb25cp-4 : inexact-ok += exp10m1 towardzero ibm128 0x2.6882b807049f54ap-4 : 0x6.a09f6453eed2b2313b5dafb25ap-4 : inexact-ok += exp10m1 upward ibm128 0x2.6882b807049f54ap-4 : 0x6.a09f6453eed2b2313b5dafb25cp-4 : inexact-ok +exp10m1 -0x6.f6469fc524a1de1p-12 += exp10m1 downward binary32 -0x6.f64698p-12 : -0xf.ffd25p-12 : inexact-ok += exp10m1 tonearest binary32 -0x6.f64698p-12 : -0xf.ffd24p-12 : inexact-ok += exp10m1 towardzero binary32 -0x6.f64698p-12 : -0xf.ffd24p-12 : inexact-ok += exp10m1 upward binary32 -0x6.f64698p-12 : -0xf.ffd24p-12 : inexact-ok += exp10m1 downward binary64 -0x6.f64698p-12 : -0xf.ffd246f38986p-12 : inexact-ok += exp10m1 tonearest binary64 -0x6.f64698p-12 : -0xf.ffd246f38986p-12 : inexact-ok += exp10m1 towardzero binary64 -0x6.f64698p-12 : -0xf.ffd246f389858p-12 : inexact-ok += exp10m1 upward binary64 -0x6.f64698p-12 : -0xf.ffd246f389858p-12 : inexact-ok += exp10m1 downward intel96 -0x6.f64698p-12 : -0xf.ffd246f38985ec2p-12 : inexact-ok += exp10m1 tonearest intel96 -0x6.f64698p-12 : -0xf.ffd246f38985ec2p-12 : inexact-ok += exp10m1 towardzero intel96 -0x6.f64698p-12 : -0xf.ffd246f38985ec1p-12 : inexact-ok += exp10m1 upward intel96 -0x6.f64698p-12 : -0xf.ffd246f38985ec1p-12 : inexact-ok += exp10m1 downward m68k96 -0x6.f64698p-12 : -0xf.ffd246f38985ec2p-12 : inexact-ok += exp10m1 tonearest m68k96 -0x6.f64698p-12 : -0xf.ffd246f38985ec2p-12 : inexact-ok += exp10m1 towardzero m68k96 -0x6.f64698p-12 : -0xf.ffd246f38985ec1p-12 : inexact-ok += exp10m1 upward m68k96 -0x6.f64698p-12 : -0xf.ffd246f38985ec1p-12 : inexact-ok += exp10m1 downward binary128 -0x6.f64698p-12 : -0xf.ffd246f38985ec1afd25a3825c9p-12 : inexact-ok += exp10m1 tonearest binary128 -0x6.f64698p-12 : -0xf.ffd246f38985ec1afd25a3825c9p-12 : inexact-ok += exp10m1 towardzero binary128 -0x6.f64698p-12 : -0xf.ffd246f38985ec1afd25a3825c88p-12 : inexact-ok += exp10m1 upward binary128 -0x6.f64698p-12 : -0xf.ffd246f38985ec1afd25a3825c88p-12 : inexact-ok += exp10m1 downward ibm128 -0x6.f64698p-12 : -0xf.ffd246f38985ec1afd25a3826p-12 : inexact-ok += exp10m1 tonearest ibm128 -0x6.f64698p-12 : -0xf.ffd246f38985ec1afd25a3825cp-12 : inexact-ok += exp10m1 towardzero ibm128 -0x6.f64698p-12 : -0xf.ffd246f38985ec1afd25a3825cp-12 : inexact-ok += exp10m1 upward ibm128 -0x6.f64698p-12 : -0xf.ffd246f38985ec1afd25a3825cp-12 : inexact-ok += exp10m1 downward binary32 -0x6.f646ap-12 : -0xf.ffd26p-12 : inexact-ok += exp10m1 tonearest binary32 -0x6.f646ap-12 : -0xf.ffd26p-12 : inexact-ok += exp10m1 towardzero binary32 -0x6.f646ap-12 : -0xf.ffd25p-12 : inexact-ok += exp10m1 upward binary32 -0x6.f646ap-12 : -0xf.ffd25p-12 : inexact-ok += exp10m1 downward binary64 -0x6.f646ap-12 : -0xf.ffd2594ccfc48p-12 : inexact-ok += exp10m1 tonearest binary64 -0x6.f646ap-12 : -0xf.ffd2594ccfc48p-12 : inexact-ok += exp10m1 towardzero binary64 -0x6.f646ap-12 : -0xf.ffd2594ccfc4p-12 : inexact-ok += exp10m1 upward binary64 -0x6.f646ap-12 : -0xf.ffd2594ccfc4p-12 : inexact-ok += exp10m1 downward intel96 -0x6.f646ap-12 : -0xf.ffd2594ccfc47f2p-12 : inexact-ok += exp10m1 tonearest intel96 -0x6.f646ap-12 : -0xf.ffd2594ccfc47f2p-12 : inexact-ok += exp10m1 towardzero intel96 -0x6.f646ap-12 : -0xf.ffd2594ccfc47f1p-12 : inexact-ok += exp10m1 upward intel96 -0x6.f646ap-12 : -0xf.ffd2594ccfc47f1p-12 : inexact-ok += exp10m1 downward m68k96 -0x6.f646ap-12 : -0xf.ffd2594ccfc47f2p-12 : inexact-ok += exp10m1 tonearest m68k96 -0x6.f646ap-12 : -0xf.ffd2594ccfc47f2p-12 : inexact-ok += exp10m1 towardzero m68k96 -0x6.f646ap-12 : -0xf.ffd2594ccfc47f1p-12 : inexact-ok += exp10m1 upward m68k96 -0x6.f646ap-12 : -0xf.ffd2594ccfc47f1p-12 : inexact-ok += exp10m1 downward binary128 -0x6.f646ap-12 : -0xf.ffd2594ccfc47f1a35c7f15f0ac8p-12 : inexact-ok += exp10m1 tonearest binary128 -0x6.f646ap-12 : -0xf.ffd2594ccfc47f1a35c7f15f0acp-12 : inexact-ok += exp10m1 towardzero binary128 -0x6.f646ap-12 : -0xf.ffd2594ccfc47f1a35c7f15f0acp-12 : inexact-ok += exp10m1 upward binary128 -0x6.f646ap-12 : -0xf.ffd2594ccfc47f1a35c7f15f0acp-12 : inexact-ok += exp10m1 downward ibm128 -0x6.f646ap-12 : -0xf.ffd2594ccfc47f1a35c7f15f0cp-12 : inexact-ok += exp10m1 tonearest ibm128 -0x6.f646ap-12 : -0xf.ffd2594ccfc47f1a35c7f15f0cp-12 : inexact-ok += exp10m1 towardzero ibm128 -0x6.f646ap-12 : -0xf.ffd2594ccfc47f1a35c7f15f08p-12 : inexact-ok += exp10m1 upward ibm128 -0x6.f646ap-12 : -0xf.ffd2594ccfc47f1a35c7f15f08p-12 : inexact-ok += exp10m1 downward binary64 -0x6.f6469fc524a1cp-12 : -0xf.ffd258c5d1638p-12 : inexact-ok += exp10m1 tonearest binary64 -0x6.f6469fc524a1cp-12 : -0xf.ffd258c5d163p-12 : inexact-ok += exp10m1 towardzero binary64 -0x6.f6469fc524a1cp-12 : -0xf.ffd258c5d163p-12 : inexact-ok += exp10m1 upward binary64 -0x6.f6469fc524a1cp-12 : -0xf.ffd258c5d163p-12 : inexact-ok += exp10m1 downward intel96 -0x6.f6469fc524a1cp-12 : -0xf.ffd258c5d1632b1p-12 : inexact-ok += exp10m1 tonearest intel96 -0x6.f6469fc524a1cp-12 : -0xf.ffd258c5d1632bp-12 : inexact-ok += exp10m1 towardzero intel96 -0x6.f6469fc524a1cp-12 : -0xf.ffd258c5d1632bp-12 : inexact-ok += exp10m1 upward intel96 -0x6.f6469fc524a1cp-12 : -0xf.ffd258c5d1632bp-12 : inexact-ok += exp10m1 downward m68k96 -0x6.f6469fc524a1cp-12 : -0xf.ffd258c5d1632b1p-12 : inexact-ok += exp10m1 tonearest m68k96 -0x6.f6469fc524a1cp-12 : -0xf.ffd258c5d1632bp-12 : inexact-ok += exp10m1 towardzero m68k96 -0x6.f6469fc524a1cp-12 : -0xf.ffd258c5d1632bp-12 : inexact-ok += exp10m1 upward m68k96 -0x6.f6469fc524a1cp-12 : -0xf.ffd258c5d1632bp-12 : inexact-ok += exp10m1 downward binary128 -0x6.f6469fc524a1cp-12 : -0xf.ffd258c5d1632b076bdff24a456p-12 : inexact-ok += exp10m1 tonearest binary128 -0x6.f6469fc524a1cp-12 : -0xf.ffd258c5d1632b076bdff24a4558p-12 : inexact-ok += exp10m1 towardzero binary128 -0x6.f6469fc524a1cp-12 : -0xf.ffd258c5d1632b076bdff24a4558p-12 : inexact-ok += exp10m1 upward binary128 -0x6.f6469fc524a1cp-12 : -0xf.ffd258c5d1632b076bdff24a4558p-12 : inexact-ok += exp10m1 downward ibm128 -0x6.f6469fc524a1cp-12 : -0xf.ffd258c5d1632b076bdff24a48p-12 : inexact-ok += exp10m1 tonearest ibm128 -0x6.f6469fc524a1cp-12 : -0xf.ffd258c5d1632b076bdff24a44p-12 : inexact-ok += exp10m1 towardzero ibm128 -0x6.f6469fc524a1cp-12 : -0xf.ffd258c5d1632b076bdff24a44p-12 : inexact-ok += exp10m1 upward ibm128 -0x6.f6469fc524a1cp-12 : -0xf.ffd258c5d1632b076bdff24a44p-12 : inexact-ok += exp10m1 downward binary64 -0x6.f6469fc524a2p-12 : -0xf.ffd258c5d164p-12 : inexact-ok += exp10m1 tonearest binary64 -0x6.f6469fc524a2p-12 : -0xf.ffd258c5d1638p-12 : inexact-ok += exp10m1 towardzero binary64 -0x6.f6469fc524a2p-12 : -0xf.ffd258c5d1638p-12 : inexact-ok += exp10m1 upward binary64 -0x6.f6469fc524a2p-12 : -0xf.ffd258c5d1638p-12 : inexact-ok += exp10m1 downward intel96 -0x6.f6469fc524a2p-12 : -0xf.ffd258c5d163bdep-12 : inexact-ok += exp10m1 tonearest intel96 -0x6.f6469fc524a2p-12 : -0xf.ffd258c5d163bddp-12 : inexact-ok += exp10m1 towardzero intel96 -0x6.f6469fc524a2p-12 : -0xf.ffd258c5d163bddp-12 : inexact-ok += exp10m1 upward intel96 -0x6.f6469fc524a2p-12 : -0xf.ffd258c5d163bddp-12 : inexact-ok += exp10m1 downward m68k96 -0x6.f6469fc524a2p-12 : -0xf.ffd258c5d163bdep-12 : inexact-ok += exp10m1 tonearest m68k96 -0x6.f6469fc524a2p-12 : -0xf.ffd258c5d163bddp-12 : inexact-ok += exp10m1 towardzero m68k96 -0x6.f6469fc524a2p-12 : -0xf.ffd258c5d163bddp-12 : inexact-ok += exp10m1 upward m68k96 -0x6.f6469fc524a2p-12 : -0xf.ffd258c5d163bddp-12 : inexact-ok += exp10m1 downward binary128 -0x6.f6469fc524a2p-12 : -0xf.ffd258c5d163bdd19dd43a9fa16p-12 : inexact-ok += exp10m1 tonearest binary128 -0x6.f6469fc524a2p-12 : -0xf.ffd258c5d163bdd19dd43a9fa16p-12 : inexact-ok += exp10m1 towardzero binary128 -0x6.f6469fc524a2p-12 : -0xf.ffd258c5d163bdd19dd43a9fa158p-12 : inexact-ok += exp10m1 upward binary128 -0x6.f6469fc524a2p-12 : -0xf.ffd258c5d163bdd19dd43a9fa158p-12 : inexact-ok += exp10m1 downward ibm128 -0x6.f6469fc524a2p-12 : -0xf.ffd258c5d163bdd19dd43a9fa4p-12 : inexact-ok += exp10m1 tonearest ibm128 -0x6.f6469fc524a2p-12 : -0xf.ffd258c5d163bdd19dd43a9fap-12 : inexact-ok += exp10m1 towardzero ibm128 -0x6.f6469fc524a2p-12 : -0xf.ffd258c5d163bdd19dd43a9fap-12 : inexact-ok += exp10m1 upward ibm128 -0x6.f6469fc524a2p-12 : -0xf.ffd258c5d163bdd19dd43a9fap-12 : inexact-ok += exp10m1 downward intel96 -0x6.f6469fc524a1de1p-12 : -0xf.ffd258c5d1637p-12 : inexact-ok += exp10m1 tonearest intel96 -0x6.f6469fc524a1de1p-12 : -0xf.ffd258c5d1637p-12 : inexact-ok += exp10m1 towardzero intel96 -0x6.f6469fc524a1de1p-12 : -0xf.ffd258c5d1636ffp-12 : inexact-ok += exp10m1 upward intel96 -0x6.f6469fc524a1de1p-12 : -0xf.ffd258c5d1636ffp-12 : inexact-ok += exp10m1 downward m68k96 -0x6.f6469fc524a1de1p-12 : -0xf.ffd258c5d1637p-12 : inexact-ok += exp10m1 tonearest m68k96 -0x6.f6469fc524a1de1p-12 : -0xf.ffd258c5d1637p-12 : inexact-ok += exp10m1 towardzero m68k96 -0x6.f6469fc524a1de1p-12 : -0xf.ffd258c5d1636ffp-12 : inexact-ok += exp10m1 upward m68k96 -0x6.f6469fc524a1de1p-12 : -0xf.ffd258c5d1636ffp-12 : inexact-ok += exp10m1 downward binary128 -0x6.f6469fc524a1de1p-12 : -0xf.ffd258c5d1636ffae5d6f1445dd8p-12 : inexact-ok += exp10m1 tonearest binary128 -0x6.f6469fc524a1de1p-12 : -0xf.ffd258c5d1636ffae5d6f1445dd8p-12 : inexact-ok += exp10m1 towardzero binary128 -0x6.f6469fc524a1de1p-12 : -0xf.ffd258c5d1636ffae5d6f1445ddp-12 : inexact-ok += exp10m1 upward binary128 -0x6.f6469fc524a1de1p-12 : -0xf.ffd258c5d1636ffae5d6f1445ddp-12 : inexact-ok += exp10m1 downward ibm128 -0x6.f6469fc524a1de1p-12 : -0xf.ffd258c5d1636ffae5d6f1446p-12 : inexact-ok += exp10m1 tonearest ibm128 -0x6.f6469fc524a1de1p-12 : -0xf.ffd258c5d1636ffae5d6f1445cp-12 : inexact-ok += exp10m1 towardzero ibm128 -0x6.f6469fc524a1de1p-12 : -0xf.ffd258c5d1636ffae5d6f1445cp-12 : inexact-ok += exp10m1 upward ibm128 -0x6.f6469fc524a1de1p-12 : -0xf.ffd258c5d1636ffae5d6f1445cp-12 : inexact-ok +exp10m1 0x2.cf6c5a8ec5919c0cp-4 += exp10m1 downward binary32 0x2.cf6c5cp-4 : 0x7.f9a028p-4 : inexact-ok += exp10m1 tonearest binary32 0x2.cf6c5cp-4 : 0x7.f9a028p-4 : inexact-ok += exp10m1 towardzero binary32 0x2.cf6c5cp-4 : 0x7.f9a028p-4 : inexact-ok += exp10m1 upward binary32 0x2.cf6c5cp-4 : 0x7.f9a03p-4 : inexact-ok += exp10m1 downward binary64 0x2.cf6c5cp-4 : 0x7.f9a02b4d4df64p-4 : inexact-ok += exp10m1 tonearest binary64 0x2.cf6c5cp-4 : 0x7.f9a02b4d4df68p-4 : inexact-ok += exp10m1 towardzero binary64 0x2.cf6c5cp-4 : 0x7.f9a02b4d4df64p-4 : inexact-ok += exp10m1 upward binary64 0x2.cf6c5cp-4 : 0x7.f9a02b4d4df68p-4 : inexact-ok += exp10m1 downward intel96 0x2.cf6c5cp-4 : 0x7.f9a02b4d4df67d9p-4 : inexact-ok += exp10m1 tonearest intel96 0x2.cf6c5cp-4 : 0x7.f9a02b4d4df67d9p-4 : inexact-ok += exp10m1 towardzero intel96 0x2.cf6c5cp-4 : 0x7.f9a02b4d4df67d9p-4 : inexact-ok += exp10m1 upward intel96 0x2.cf6c5cp-4 : 0x7.f9a02b4d4df67d98p-4 : inexact-ok += exp10m1 downward m68k96 0x2.cf6c5cp-4 : 0x7.f9a02b4d4df67d9p-4 : inexact-ok += exp10m1 tonearest m68k96 0x2.cf6c5cp-4 : 0x7.f9a02b4d4df67d9p-4 : inexact-ok += exp10m1 towardzero m68k96 0x2.cf6c5cp-4 : 0x7.f9a02b4d4df67d9p-4 : inexact-ok += exp10m1 upward m68k96 0x2.cf6c5cp-4 : 0x7.f9a02b4d4df67d98p-4 : inexact-ok += exp10m1 downward binary128 0x2.cf6c5cp-4 : 0x7.f9a02b4d4df67d939b8b028ee91p-4 : inexact-ok += exp10m1 tonearest binary128 0x2.cf6c5cp-4 : 0x7.f9a02b4d4df67d939b8b028ee91p-4 : inexact-ok += exp10m1 towardzero binary128 0x2.cf6c5cp-4 : 0x7.f9a02b4d4df67d939b8b028ee91p-4 : inexact-ok += exp10m1 upward binary128 0x2.cf6c5cp-4 : 0x7.f9a02b4d4df67d939b8b028ee914p-4 : inexact-ok += exp10m1 downward ibm128 0x2.cf6c5cp-4 : 0x7.f9a02b4d4df67d939b8b028ee8p-4 : inexact-ok += exp10m1 tonearest ibm128 0x2.cf6c5cp-4 : 0x7.f9a02b4d4df67d939b8b028eeap-4 : inexact-ok += exp10m1 towardzero ibm128 0x2.cf6c5cp-4 : 0x7.f9a02b4d4df67d939b8b028ee8p-4 : inexact-ok += exp10m1 upward ibm128 0x2.cf6c5cp-4 : 0x7.f9a02b4d4df67d939b8b028eeap-4 : inexact-ok += exp10m1 downward binary32 0x2.cf6c58p-4 : 0x7.f9a018p-4 : inexact-ok += exp10m1 tonearest binary32 0x2.cf6c58p-4 : 0x7.f9a02p-4 : inexact-ok += exp10m1 towardzero binary32 0x2.cf6c58p-4 : 0x7.f9a018p-4 : inexact-ok += exp10m1 upward binary32 0x2.cf6c58p-4 : 0x7.f9a02p-4 : inexact-ok += exp10m1 downward binary64 0x2.cf6c58p-4 : 0x7.f9a01d803409p-4 : inexact-ok += exp10m1 tonearest binary64 0x2.cf6c58p-4 : 0x7.f9a01d8034094p-4 : inexact-ok += exp10m1 towardzero binary64 0x2.cf6c58p-4 : 0x7.f9a01d803409p-4 : inexact-ok += exp10m1 upward binary64 0x2.cf6c58p-4 : 0x7.f9a01d8034094p-4 : inexact-ok += exp10m1 downward intel96 0x2.cf6c58p-4 : 0x7.f9a01d80340929a8p-4 : inexact-ok += exp10m1 tonearest intel96 0x2.cf6c58p-4 : 0x7.f9a01d80340929a8p-4 : inexact-ok += exp10m1 towardzero intel96 0x2.cf6c58p-4 : 0x7.f9a01d80340929a8p-4 : inexact-ok += exp10m1 upward intel96 0x2.cf6c58p-4 : 0x7.f9a01d80340929bp-4 : inexact-ok += exp10m1 downward m68k96 0x2.cf6c58p-4 : 0x7.f9a01d80340929a8p-4 : inexact-ok += exp10m1 tonearest m68k96 0x2.cf6c58p-4 : 0x7.f9a01d80340929a8p-4 : inexact-ok += exp10m1 towardzero m68k96 0x2.cf6c58p-4 : 0x7.f9a01d80340929a8p-4 : inexact-ok += exp10m1 upward m68k96 0x2.cf6c58p-4 : 0x7.f9a01d80340929bp-4 : inexact-ok += exp10m1 downward binary128 0x2.cf6c58p-4 : 0x7.f9a01d80340929aa989cfbe06a3cp-4 : inexact-ok += exp10m1 tonearest binary128 0x2.cf6c58p-4 : 0x7.f9a01d80340929aa989cfbe06a4p-4 : inexact-ok += exp10m1 towardzero binary128 0x2.cf6c58p-4 : 0x7.f9a01d80340929aa989cfbe06a3cp-4 : inexact-ok += exp10m1 upward binary128 0x2.cf6c58p-4 : 0x7.f9a01d80340929aa989cfbe06a4p-4 : inexact-ok += exp10m1 downward ibm128 0x2.cf6c58p-4 : 0x7.f9a01d80340929aa989cfbe06ap-4 : inexact-ok += exp10m1 tonearest ibm128 0x2.cf6c58p-4 : 0x7.f9a01d80340929aa989cfbe06ap-4 : inexact-ok += exp10m1 towardzero ibm128 0x2.cf6c58p-4 : 0x7.f9a01d80340929aa989cfbe06ap-4 : inexact-ok += exp10m1 upward ibm128 0x2.cf6c58p-4 : 0x7.f9a01d80340929aa989cfbe06cp-4 : inexact-ok += exp10m1 downward binary64 0x2.cf6c5a8ec591ap-4 : 0x7.f9a026535bc3p-4 : inexact-ok += exp10m1 tonearest binary64 0x2.cf6c5a8ec591ap-4 : 0x7.f9a026535bc3p-4 : inexact-ok += exp10m1 towardzero binary64 0x2.cf6c5a8ec591ap-4 : 0x7.f9a026535bc3p-4 : inexact-ok += exp10m1 upward binary64 0x2.cf6c5a8ec591ap-4 : 0x7.f9a026535bc34p-4 : inexact-ok += exp10m1 downward intel96 0x2.cf6c5a8ec591ap-4 : 0x7.f9a026535bc30228p-4 : inexact-ok += exp10m1 tonearest intel96 0x2.cf6c5a8ec591ap-4 : 0x7.f9a026535bc3023p-4 : inexact-ok += exp10m1 towardzero intel96 0x2.cf6c5a8ec591ap-4 : 0x7.f9a026535bc30228p-4 : inexact-ok += exp10m1 upward intel96 0x2.cf6c5a8ec591ap-4 : 0x7.f9a026535bc3023p-4 : inexact-ok += exp10m1 downward m68k96 0x2.cf6c5a8ec591ap-4 : 0x7.f9a026535bc30228p-4 : inexact-ok += exp10m1 tonearest m68k96 0x2.cf6c5a8ec591ap-4 : 0x7.f9a026535bc3023p-4 : inexact-ok += exp10m1 towardzero m68k96 0x2.cf6c5a8ec591ap-4 : 0x7.f9a026535bc30228p-4 : inexact-ok += exp10m1 upward m68k96 0x2.cf6c5a8ec591ap-4 : 0x7.f9a026535bc3023p-4 : inexact-ok += exp10m1 downward binary128 0x2.cf6c5a8ec591ap-4 : 0x7.f9a026535bc3022cbc121cf66e28p-4 : inexact-ok += exp10m1 tonearest binary128 0x2.cf6c5a8ec591ap-4 : 0x7.f9a026535bc3022cbc121cf66e28p-4 : inexact-ok += exp10m1 towardzero binary128 0x2.cf6c5a8ec591ap-4 : 0x7.f9a026535bc3022cbc121cf66e28p-4 : inexact-ok += exp10m1 upward binary128 0x2.cf6c5a8ec591ap-4 : 0x7.f9a026535bc3022cbc121cf66e2cp-4 : inexact-ok += exp10m1 downward ibm128 0x2.cf6c5a8ec591ap-4 : 0x7.f9a026535bc3022cbc121cf66ep-4 : inexact-ok += exp10m1 tonearest ibm128 0x2.cf6c5a8ec591ap-4 : 0x7.f9a026535bc3022cbc121cf66ep-4 : inexact-ok += exp10m1 towardzero ibm128 0x2.cf6c5a8ec591ap-4 : 0x7.f9a026535bc3022cbc121cf66ep-4 : inexact-ok += exp10m1 upward ibm128 0x2.cf6c5a8ec591ap-4 : 0x7.f9a026535bc3022cbc121cf67p-4 : inexact-ok += exp10m1 downward binary64 0x2.cf6c5a8ec5918p-4 : 0x7.f9a026535bc28p-4 : inexact-ok += exp10m1 tonearest binary64 0x2.cf6c5a8ec5918p-4 : 0x7.f9a026535bc28p-4 : inexact-ok += exp10m1 towardzero binary64 0x2.cf6c5a8ec5918p-4 : 0x7.f9a026535bc28p-4 : inexact-ok += exp10m1 upward binary64 0x2.cf6c5a8ec5918p-4 : 0x7.f9a026535bc2cp-4 : inexact-ok += exp10m1 downward intel96 0x2.cf6c5a8ec5918p-4 : 0x7.f9a026535bc293cp-4 : inexact-ok += exp10m1 tonearest intel96 0x2.cf6c5a8ec5918p-4 : 0x7.f9a026535bc293cp-4 : inexact-ok += exp10m1 towardzero intel96 0x2.cf6c5a8ec5918p-4 : 0x7.f9a026535bc293cp-4 : inexact-ok += exp10m1 upward intel96 0x2.cf6c5a8ec5918p-4 : 0x7.f9a026535bc293c8p-4 : inexact-ok += exp10m1 downward m68k96 0x2.cf6c5a8ec5918p-4 : 0x7.f9a026535bc293cp-4 : inexact-ok += exp10m1 tonearest m68k96 0x2.cf6c5a8ec5918p-4 : 0x7.f9a026535bc293cp-4 : inexact-ok += exp10m1 towardzero m68k96 0x2.cf6c5a8ec5918p-4 : 0x7.f9a026535bc293cp-4 : inexact-ok += exp10m1 upward m68k96 0x2.cf6c5a8ec5918p-4 : 0x7.f9a026535bc293c8p-4 : inexact-ok += exp10m1 downward binary128 0x2.cf6c5a8ec5918p-4 : 0x7.f9a026535bc293c3ec9ea1273a64p-4 : inexact-ok += exp10m1 tonearest binary128 0x2.cf6c5a8ec5918p-4 : 0x7.f9a026535bc293c3ec9ea1273a68p-4 : inexact-ok += exp10m1 towardzero binary128 0x2.cf6c5a8ec5918p-4 : 0x7.f9a026535bc293c3ec9ea1273a64p-4 : inexact-ok += exp10m1 upward binary128 0x2.cf6c5a8ec5918p-4 : 0x7.f9a026535bc293c3ec9ea1273a68p-4 : inexact-ok += exp10m1 downward ibm128 0x2.cf6c5a8ec5918p-4 : 0x7.f9a026535bc293c3ec9ea1273ap-4 : inexact-ok += exp10m1 tonearest ibm128 0x2.cf6c5a8ec5918p-4 : 0x7.f9a026535bc293c3ec9ea1273ap-4 : inexact-ok += exp10m1 towardzero ibm128 0x2.cf6c5a8ec5918p-4 : 0x7.f9a026535bc293c3ec9ea1273ap-4 : inexact-ok += exp10m1 upward ibm128 0x2.cf6c5a8ec5918p-4 : 0x7.f9a026535bc293c3ec9ea1273cp-4 : inexact-ok += exp10m1 downward intel96 0x2.cf6c5a8ec5919c0cp-4 : 0x7.f9a026535bc2f488p-4 : inexact-ok += exp10m1 tonearest intel96 0x2.cf6c5a8ec5919c0cp-4 : 0x7.f9a026535bc2f488p-4 : inexact-ok += exp10m1 towardzero intel96 0x2.cf6c5a8ec5919c0cp-4 : 0x7.f9a026535bc2f488p-4 : inexact-ok += exp10m1 upward intel96 0x2.cf6c5a8ec5919c0cp-4 : 0x7.f9a026535bc2f49p-4 : inexact-ok += exp10m1 downward m68k96 0x2.cf6c5a8ec5919c0cp-4 : 0x7.f9a026535bc2f488p-4 : inexact-ok += exp10m1 tonearest m68k96 0x2.cf6c5a8ec5919c0cp-4 : 0x7.f9a026535bc2f488p-4 : inexact-ok += exp10m1 towardzero m68k96 0x2.cf6c5a8ec5919c0cp-4 : 0x7.f9a026535bc2f488p-4 : inexact-ok += exp10m1 upward m68k96 0x2.cf6c5a8ec5919c0cp-4 : 0x7.f9a026535bc2f49p-4 : inexact-ok += exp10m1 downward binary128 0x2.cf6c5a8ec5919c0cp-4 : 0x7.f9a026535bc2f489097178caf548p-4 : inexact-ok += exp10m1 tonearest binary128 0x2.cf6c5a8ec5919c0cp-4 : 0x7.f9a026535bc2f489097178caf548p-4 : inexact-ok += exp10m1 towardzero binary128 0x2.cf6c5a8ec5919c0cp-4 : 0x7.f9a026535bc2f489097178caf548p-4 : inexact-ok += exp10m1 upward binary128 0x2.cf6c5a8ec5919c0cp-4 : 0x7.f9a026535bc2f489097178caf54cp-4 : inexact-ok += exp10m1 downward ibm128 0x2.cf6c5a8ec5919c0cp-4 : 0x7.f9a026535bc2f489097178caf4p-4 : inexact-ok += exp10m1 tonearest ibm128 0x2.cf6c5a8ec5919c0cp-4 : 0x7.f9a026535bc2f489097178caf6p-4 : inexact-ok += exp10m1 towardzero ibm128 0x2.cf6c5a8ec5919c0cp-4 : 0x7.f9a026535bc2f489097178caf4p-4 : inexact-ok += exp10m1 upward ibm128 0x2.cf6c5a8ec5919c0cp-4 : 0x7.f9a026535bc2f489097178caf6p-4 : inexact-ok +exp10m1 0x2.d08614068c3c5514p-4 += exp10m1 downward binary32 0x2.d08618p-4 : 0x7.fd6c88p-4 : inexact-ok += exp10m1 tonearest binary32 0x2.d08618p-4 : 0x7.fd6c88p-4 : inexact-ok += exp10m1 towardzero binary32 0x2.d08618p-4 : 0x7.fd6c88p-4 : inexact-ok += exp10m1 upward binary32 0x2.d08618p-4 : 0x7.fd6c9p-4 : inexact-ok += exp10m1 downward binary64 0x2.d08618p-4 : 0x7.fd6c8951bc818p-4 : inexact-ok += exp10m1 tonearest binary64 0x2.d08618p-4 : 0x7.fd6c8951bc818p-4 : inexact-ok += exp10m1 towardzero binary64 0x2.d08618p-4 : 0x7.fd6c8951bc818p-4 : inexact-ok += exp10m1 upward binary64 0x2.d08618p-4 : 0x7.fd6c8951bc81cp-4 : inexact-ok += exp10m1 downward intel96 0x2.d08618p-4 : 0x7.fd6c8951bc81812p-4 : inexact-ok += exp10m1 tonearest intel96 0x2.d08618p-4 : 0x7.fd6c8951bc81812p-4 : inexact-ok += exp10m1 towardzero intel96 0x2.d08618p-4 : 0x7.fd6c8951bc81812p-4 : inexact-ok += exp10m1 upward intel96 0x2.d08618p-4 : 0x7.fd6c8951bc818128p-4 : inexact-ok += exp10m1 downward m68k96 0x2.d08618p-4 : 0x7.fd6c8951bc81812p-4 : inexact-ok += exp10m1 tonearest m68k96 0x2.d08618p-4 : 0x7.fd6c8951bc81812p-4 : inexact-ok += exp10m1 towardzero m68k96 0x2.d08618p-4 : 0x7.fd6c8951bc81812p-4 : inexact-ok += exp10m1 upward m68k96 0x2.d08618p-4 : 0x7.fd6c8951bc818128p-4 : inexact-ok += exp10m1 downward binary128 0x2.d08618p-4 : 0x7.fd6c8951bc8181226d7670311a64p-4 : inexact-ok += exp10m1 tonearest binary128 0x2.d08618p-4 : 0x7.fd6c8951bc8181226d7670311a68p-4 : inexact-ok += exp10m1 towardzero binary128 0x2.d08618p-4 : 0x7.fd6c8951bc8181226d7670311a64p-4 : inexact-ok += exp10m1 upward binary128 0x2.d08618p-4 : 0x7.fd6c8951bc8181226d7670311a68p-4 : inexact-ok += exp10m1 downward ibm128 0x2.d08618p-4 : 0x7.fd6c8951bc8181226d7670311ap-4 : inexact-ok += exp10m1 tonearest ibm128 0x2.d08618p-4 : 0x7.fd6c8951bc8181226d7670311ap-4 : inexact-ok += exp10m1 towardzero ibm128 0x2.d08618p-4 : 0x7.fd6c8951bc8181226d7670311ap-4 : inexact-ok += exp10m1 upward ibm128 0x2.d08618p-4 : 0x7.fd6c8951bc8181226d7670311cp-4 : inexact-ok += exp10m1 downward binary32 0x2.d08614p-4 : 0x7.fd6c78p-4 : inexact-ok += exp10m1 tonearest binary32 0x2.d08614p-4 : 0x7.fd6c78p-4 : inexact-ok += exp10m1 towardzero binary32 0x2.d08614p-4 : 0x7.fd6c78p-4 : inexact-ok += exp10m1 upward binary32 0x2.d08614p-4 : 0x7.fd6c8p-4 : inexact-ok += exp10m1 downward binary64 0x2.d08614p-4 : 0x7.fd6c7b8272d6cp-4 : inexact-ok += exp10m1 tonearest binary64 0x2.d08614p-4 : 0x7.fd6c7b8272d6cp-4 : inexact-ok += exp10m1 towardzero binary64 0x2.d08614p-4 : 0x7.fd6c7b8272d6cp-4 : inexact-ok += exp10m1 upward binary64 0x2.d08614p-4 : 0x7.fd6c7b8272d7p-4 : inexact-ok += exp10m1 downward intel96 0x2.d08614p-4 : 0x7.fd6c7b8272d6d848p-4 : inexact-ok += exp10m1 tonearest intel96 0x2.d08614p-4 : 0x7.fd6c7b8272d6d85p-4 : inexact-ok += exp10m1 towardzero intel96 0x2.d08614p-4 : 0x7.fd6c7b8272d6d848p-4 : inexact-ok += exp10m1 upward intel96 0x2.d08614p-4 : 0x7.fd6c7b8272d6d85p-4 : inexact-ok += exp10m1 downward m68k96 0x2.d08614p-4 : 0x7.fd6c7b8272d6d848p-4 : inexact-ok += exp10m1 tonearest m68k96 0x2.d08614p-4 : 0x7.fd6c7b8272d6d85p-4 : inexact-ok += exp10m1 towardzero m68k96 0x2.d08614p-4 : 0x7.fd6c7b8272d6d848p-4 : inexact-ok += exp10m1 upward m68k96 0x2.d08614p-4 : 0x7.fd6c7b8272d6d85p-4 : inexact-ok += exp10m1 downward binary128 0x2.d08614p-4 : 0x7.fd6c7b8272d6d84db1ddfaf49e8cp-4 : inexact-ok += exp10m1 tonearest binary128 0x2.d08614p-4 : 0x7.fd6c7b8272d6d84db1ddfaf49e9p-4 : inexact-ok += exp10m1 towardzero binary128 0x2.d08614p-4 : 0x7.fd6c7b8272d6d84db1ddfaf49e8cp-4 : inexact-ok += exp10m1 upward binary128 0x2.d08614p-4 : 0x7.fd6c7b8272d6d84db1ddfaf49e9p-4 : inexact-ok += exp10m1 downward ibm128 0x2.d08614p-4 : 0x7.fd6c7b8272d6d84db1ddfaf49ep-4 : inexact-ok += exp10m1 tonearest ibm128 0x2.d08614p-4 : 0x7.fd6c7b8272d6d84db1ddfaf49ep-4 : inexact-ok += exp10m1 towardzero ibm128 0x2.d08614p-4 : 0x7.fd6c7b8272d6d84db1ddfaf49ep-4 : inexact-ok += exp10m1 upward ibm128 0x2.d08614p-4 : 0x7.fd6c7b8272d6d84db1ddfaf4ap-4 : inexact-ok += exp10m1 downward binary64 0x2.d08614068c3c6p-4 : 0x7.fd6c7b990deccp-4 : inexact-ok += exp10m1 tonearest binary64 0x2.d08614068c3c6p-4 : 0x7.fd6c7b990deccp-4 : inexact-ok += exp10m1 towardzero binary64 0x2.d08614068c3c6p-4 : 0x7.fd6c7b990deccp-4 : inexact-ok += exp10m1 upward binary64 0x2.d08614068c3c6p-4 : 0x7.fd6c7b990dedp-4 : inexact-ok += exp10m1 downward intel96 0x2.d08614068c3c6p-4 : 0x7.fd6c7b990decd4e8p-4 : inexact-ok += exp10m1 tonearest intel96 0x2.d08614068c3c6p-4 : 0x7.fd6c7b990decd4e8p-4 : inexact-ok += exp10m1 towardzero intel96 0x2.d08614068c3c6p-4 : 0x7.fd6c7b990decd4e8p-4 : inexact-ok += exp10m1 upward intel96 0x2.d08614068c3c6p-4 : 0x7.fd6c7b990decd4fp-4 : inexact-ok += exp10m1 downward m68k96 0x2.d08614068c3c6p-4 : 0x7.fd6c7b990decd4e8p-4 : inexact-ok += exp10m1 tonearest m68k96 0x2.d08614068c3c6p-4 : 0x7.fd6c7b990decd4e8p-4 : inexact-ok += exp10m1 towardzero m68k96 0x2.d08614068c3c6p-4 : 0x7.fd6c7b990decd4e8p-4 : inexact-ok += exp10m1 upward m68k96 0x2.d08614068c3c6p-4 : 0x7.fd6c7b990decd4fp-4 : inexact-ok += exp10m1 downward binary128 0x2.d08614068c3c6p-4 : 0x7.fd6c7b990decd4e8ec49a40a89d8p-4 : inexact-ok += exp10m1 tonearest binary128 0x2.d08614068c3c6p-4 : 0x7.fd6c7b990decd4e8ec49a40a89dcp-4 : inexact-ok += exp10m1 towardzero binary128 0x2.d08614068c3c6p-4 : 0x7.fd6c7b990decd4e8ec49a40a89d8p-4 : inexact-ok += exp10m1 upward binary128 0x2.d08614068c3c6p-4 : 0x7.fd6c7b990decd4e8ec49a40a89dcp-4 : inexact-ok += exp10m1 downward ibm128 0x2.d08614068c3c6p-4 : 0x7.fd6c7b990decd4e8ec49a40a88p-4 : inexact-ok += exp10m1 tonearest ibm128 0x2.d08614068c3c6p-4 : 0x7.fd6c7b990decd4e8ec49a40a8ap-4 : inexact-ok += exp10m1 towardzero ibm128 0x2.d08614068c3c6p-4 : 0x7.fd6c7b990decd4e8ec49a40a88p-4 : inexact-ok += exp10m1 upward ibm128 0x2.d08614068c3c6p-4 : 0x7.fd6c7b990decd4e8ec49a40a8ap-4 : inexact-ok += exp10m1 downward binary64 0x2.d08614068c3c4p-4 : 0x7.fd6c7b990dec4p-4 : inexact-ok += exp10m1 tonearest binary64 0x2.d08614068c3c4p-4 : 0x7.fd6c7b990dec8p-4 : inexact-ok += exp10m1 towardzero binary64 0x2.d08614068c3c4p-4 : 0x7.fd6c7b990dec4p-4 : inexact-ok += exp10m1 upward binary64 0x2.d08614068c3c4p-4 : 0x7.fd6c7b990dec8p-4 : inexact-ok += exp10m1 downward intel96 0x2.d08614068c3c4p-4 : 0x7.fd6c7b990dec6668p-4 : inexact-ok += exp10m1 tonearest intel96 0x2.d08614068c3c4p-4 : 0x7.fd6c7b990dec667p-4 : inexact-ok += exp10m1 towardzero intel96 0x2.d08614068c3c4p-4 : 0x7.fd6c7b990dec6668p-4 : inexact-ok += exp10m1 upward intel96 0x2.d08614068c3c4p-4 : 0x7.fd6c7b990dec667p-4 : inexact-ok += exp10m1 downward m68k96 0x2.d08614068c3c4p-4 : 0x7.fd6c7b990dec6668p-4 : inexact-ok += exp10m1 tonearest m68k96 0x2.d08614068c3c4p-4 : 0x7.fd6c7b990dec667p-4 : inexact-ok += exp10m1 towardzero m68k96 0x2.d08614068c3c4p-4 : 0x7.fd6c7b990dec6668p-4 : inexact-ok += exp10m1 upward m68k96 0x2.d08614068c3c4p-4 : 0x7.fd6c7b990dec667p-4 : inexact-ok += exp10m1 downward binary128 0x2.d08614068c3c4p-4 : 0x7.fd6c7b990dec666e9f13c1972eap-4 : inexact-ok += exp10m1 tonearest binary128 0x2.d08614068c3c4p-4 : 0x7.fd6c7b990dec666e9f13c1972ea4p-4 : inexact-ok += exp10m1 towardzero binary128 0x2.d08614068c3c4p-4 : 0x7.fd6c7b990dec666e9f13c1972eap-4 : inexact-ok += exp10m1 upward binary128 0x2.d08614068c3c4p-4 : 0x7.fd6c7b990dec666e9f13c1972ea4p-4 : inexact-ok += exp10m1 downward ibm128 0x2.d08614068c3c4p-4 : 0x7.fd6c7b990dec666e9f13c1972ep-4 : inexact-ok += exp10m1 tonearest ibm128 0x2.d08614068c3c4p-4 : 0x7.fd6c7b990dec666e9f13c1972ep-4 : inexact-ok += exp10m1 towardzero ibm128 0x2.d08614068c3c4p-4 : 0x7.fd6c7b990dec666e9f13c1972ep-4 : inexact-ok += exp10m1 upward ibm128 0x2.d08614068c3c4p-4 : 0x7.fd6c7b990dec666e9f13c1973p-4 : inexact-ok += exp10m1 downward intel96 0x2.d08614068c3c5514p-4 : 0x7.fd6c7b990decaf3p-4 : inexact-ok += exp10m1 tonearest intel96 0x2.d08614068c3c5514p-4 : 0x7.fd6c7b990decaf3p-4 : inexact-ok += exp10m1 towardzero intel96 0x2.d08614068c3c5514p-4 : 0x7.fd6c7b990decaf3p-4 : inexact-ok += exp10m1 upward intel96 0x2.d08614068c3c5514p-4 : 0x7.fd6c7b990decaf38p-4 : inexact-ok += exp10m1 downward m68k96 0x2.d08614068c3c5514p-4 : 0x7.fd6c7b990decaf3p-4 : inexact-ok += exp10m1 tonearest m68k96 0x2.d08614068c3c5514p-4 : 0x7.fd6c7b990decaf3p-4 : inexact-ok += exp10m1 towardzero m68k96 0x2.d08614068c3c5514p-4 : 0x7.fd6c7b990decaf3p-4 : inexact-ok += exp10m1 upward m68k96 0x2.d08614068c3c5514p-4 : 0x7.fd6c7b990decaf38p-4 : inexact-ok += exp10m1 downward binary128 0x2.d08614068c3c5514p-4 : 0x7.fd6c7b990decaf33ee2f5fe06a6p-4 : inexact-ok += exp10m1 tonearest binary128 0x2.d08614068c3c5514p-4 : 0x7.fd6c7b990decaf33ee2f5fe06a6p-4 : inexact-ok += exp10m1 towardzero binary128 0x2.d08614068c3c5514p-4 : 0x7.fd6c7b990decaf33ee2f5fe06a6p-4 : inexact-ok += exp10m1 upward binary128 0x2.d08614068c3c5514p-4 : 0x7.fd6c7b990decaf33ee2f5fe06a64p-4 : inexact-ok += exp10m1 downward ibm128 0x2.d08614068c3c5514p-4 : 0x7.fd6c7b990decaf33ee2f5fe06ap-4 : inexact-ok += exp10m1 tonearest ibm128 0x2.d08614068c3c5514p-4 : 0x7.fd6c7b990decaf33ee2f5fe06ap-4 : inexact-ok += exp10m1 towardzero ibm128 0x2.d08614068c3c5514p-4 : 0x7.fd6c7b990decaf33ee2f5fe06ap-4 : inexact-ok += exp10m1 upward ibm128 0x2.d08614068c3c5514p-4 : 0x7.fd6c7b990decaf33ee2f5fe06cp-4 : inexact-ok +exp10m1 0x2.c7fd02fd98797bf4p-4 += exp10m1 downward binary32 0x2.c7fd04p-4 : 0x7.e006cp-4 : inexact-ok += exp10m1 tonearest binary32 0x2.c7fd04p-4 : 0x7.e006c8p-4 : inexact-ok += exp10m1 towardzero binary32 0x2.c7fd04p-4 : 0x7.e006cp-4 : inexact-ok += exp10m1 upward binary32 0x2.c7fd04p-4 : 0x7.e006c8p-4 : inexact-ok += exp10m1 downward binary64 0x2.c7fd04p-4 : 0x7.e006c7223f228p-4 : inexact-ok += exp10m1 tonearest binary64 0x2.c7fd04p-4 : 0x7.e006c7223f228p-4 : inexact-ok += exp10m1 towardzero binary64 0x2.c7fd04p-4 : 0x7.e006c7223f228p-4 : inexact-ok += exp10m1 upward binary64 0x2.c7fd04p-4 : 0x7.e006c7223f22cp-4 : inexact-ok += exp10m1 downward intel96 0x2.c7fd04p-4 : 0x7.e006c7223f2282e8p-4 : inexact-ok += exp10m1 tonearest intel96 0x2.c7fd04p-4 : 0x7.e006c7223f2282e8p-4 : inexact-ok += exp10m1 towardzero intel96 0x2.c7fd04p-4 : 0x7.e006c7223f2282e8p-4 : inexact-ok += exp10m1 upward intel96 0x2.c7fd04p-4 : 0x7.e006c7223f2282fp-4 : inexact-ok += exp10m1 downward m68k96 0x2.c7fd04p-4 : 0x7.e006c7223f2282e8p-4 : inexact-ok += exp10m1 tonearest m68k96 0x2.c7fd04p-4 : 0x7.e006c7223f2282e8p-4 : inexact-ok += exp10m1 towardzero m68k96 0x2.c7fd04p-4 : 0x7.e006c7223f2282e8p-4 : inexact-ok += exp10m1 upward m68k96 0x2.c7fd04p-4 : 0x7.e006c7223f2282fp-4 : inexact-ok += exp10m1 downward binary128 0x2.c7fd04p-4 : 0x7.e006c7223f2282e9ed7495b64cap-4 : inexact-ok += exp10m1 tonearest binary128 0x2.c7fd04p-4 : 0x7.e006c7223f2282e9ed7495b64cap-4 : inexact-ok += exp10m1 towardzero binary128 0x2.c7fd04p-4 : 0x7.e006c7223f2282e9ed7495b64cap-4 : inexact-ok += exp10m1 upward binary128 0x2.c7fd04p-4 : 0x7.e006c7223f2282e9ed7495b64ca4p-4 : inexact-ok += exp10m1 downward ibm128 0x2.c7fd04p-4 : 0x7.e006c7223f2282e9ed7495b64cp-4 : inexact-ok += exp10m1 tonearest ibm128 0x2.c7fd04p-4 : 0x7.e006c7223f2282e9ed7495b64cp-4 : inexact-ok += exp10m1 towardzero ibm128 0x2.c7fd04p-4 : 0x7.e006c7223f2282e9ed7495b64cp-4 : inexact-ok += exp10m1 upward ibm128 0x2.c7fd04p-4 : 0x7.e006c7223f2282e9ed7495b64ep-4 : inexact-ok += exp10m1 downward binary32 0x2.c7fdp-4 : 0x7.e006b8p-4 : inexact-ok += exp10m1 tonearest binary32 0x2.c7fdp-4 : 0x7.e006b8p-4 : inexact-ok += exp10m1 towardzero binary32 0x2.c7fdp-4 : 0x7.e006b8p-4 : inexact-ok += exp10m1 upward binary32 0x2.c7fdp-4 : 0x7.e006cp-4 : inexact-ok += exp10m1 downward binary64 0x2.c7fdp-4 : 0x7.e006b963e1a48p-4 : inexact-ok += exp10m1 tonearest binary64 0x2.c7fdp-4 : 0x7.e006b963e1a48p-4 : inexact-ok += exp10m1 towardzero binary64 0x2.c7fdp-4 : 0x7.e006b963e1a48p-4 : inexact-ok += exp10m1 upward binary64 0x2.c7fdp-4 : 0x7.e006b963e1a4cp-4 : inexact-ok += exp10m1 downward intel96 0x2.c7fdp-4 : 0x7.e006b963e1a4988p-4 : inexact-ok += exp10m1 tonearest intel96 0x2.c7fdp-4 : 0x7.e006b963e1a49888p-4 : inexact-ok += exp10m1 towardzero intel96 0x2.c7fdp-4 : 0x7.e006b963e1a4988p-4 : inexact-ok += exp10m1 upward intel96 0x2.c7fdp-4 : 0x7.e006b963e1a49888p-4 : inexact-ok += exp10m1 downward m68k96 0x2.c7fdp-4 : 0x7.e006b963e1a4988p-4 : inexact-ok += exp10m1 tonearest m68k96 0x2.c7fdp-4 : 0x7.e006b963e1a49888p-4 : inexact-ok += exp10m1 towardzero m68k96 0x2.c7fdp-4 : 0x7.e006b963e1a4988p-4 : inexact-ok += exp10m1 upward m68k96 0x2.c7fdp-4 : 0x7.e006b963e1a49888p-4 : inexact-ok += exp10m1 downward binary128 0x2.c7fdp-4 : 0x7.e006b963e1a49886ef4084032054p-4 : inexact-ok += exp10m1 tonearest binary128 0x2.c7fdp-4 : 0x7.e006b963e1a49886ef4084032054p-4 : inexact-ok += exp10m1 towardzero binary128 0x2.c7fdp-4 : 0x7.e006b963e1a49886ef4084032054p-4 : inexact-ok += exp10m1 upward binary128 0x2.c7fdp-4 : 0x7.e006b963e1a49886ef4084032058p-4 : inexact-ok += exp10m1 downward ibm128 0x2.c7fdp-4 : 0x7.e006b963e1a49886ef4084032p-4 : inexact-ok += exp10m1 tonearest ibm128 0x2.c7fdp-4 : 0x7.e006b963e1a49886ef4084032p-4 : inexact-ok += exp10m1 towardzero ibm128 0x2.c7fdp-4 : 0x7.e006b963e1a49886ef4084032p-4 : inexact-ok += exp10m1 upward ibm128 0x2.c7fdp-4 : 0x7.e006b963e1a49886ef40840322p-4 : inexact-ok += exp10m1 downward binary64 0x2.c7fd02fd98798p-4 : 0x7.e006c3aa64df8p-4 : inexact-ok += exp10m1 tonearest binary64 0x2.c7fd02fd98798p-4 : 0x7.e006c3aa64df8p-4 : inexact-ok += exp10m1 towardzero binary64 0x2.c7fd02fd98798p-4 : 0x7.e006c3aa64df8p-4 : inexact-ok += exp10m1 upward binary64 0x2.c7fd02fd98798p-4 : 0x7.e006c3aa64dfcp-4 : inexact-ok += exp10m1 downward intel96 0x2.c7fd02fd98798p-4 : 0x7.e006c3aa64df81d8p-4 : inexact-ok += exp10m1 tonearest intel96 0x2.c7fd02fd98798p-4 : 0x7.e006c3aa64df81d8p-4 : inexact-ok += exp10m1 towardzero intel96 0x2.c7fd02fd98798p-4 : 0x7.e006c3aa64df81d8p-4 : inexact-ok += exp10m1 upward intel96 0x2.c7fd02fd98798p-4 : 0x7.e006c3aa64df81ep-4 : inexact-ok += exp10m1 downward m68k96 0x2.c7fd02fd98798p-4 : 0x7.e006c3aa64df81d8p-4 : inexact-ok += exp10m1 tonearest m68k96 0x2.c7fd02fd98798p-4 : 0x7.e006c3aa64df81d8p-4 : inexact-ok += exp10m1 towardzero m68k96 0x2.c7fd02fd98798p-4 : 0x7.e006c3aa64df81d8p-4 : inexact-ok += exp10m1 upward m68k96 0x2.c7fd02fd98798p-4 : 0x7.e006c3aa64df81ep-4 : inexact-ok += exp10m1 downward binary128 0x2.c7fd02fd98798p-4 : 0x7.e006c3aa64df81db0ea807695964p-4 : inexact-ok += exp10m1 tonearest binary128 0x2.c7fd02fd98798p-4 : 0x7.e006c3aa64df81db0ea807695964p-4 : inexact-ok += exp10m1 towardzero binary128 0x2.c7fd02fd98798p-4 : 0x7.e006c3aa64df81db0ea807695964p-4 : inexact-ok += exp10m1 upward binary128 0x2.c7fd02fd98798p-4 : 0x7.e006c3aa64df81db0ea807695968p-4 : inexact-ok += exp10m1 downward ibm128 0x2.c7fd02fd98798p-4 : 0x7.e006c3aa64df81db0ea8076958p-4 : inexact-ok += exp10m1 tonearest ibm128 0x2.c7fd02fd98798p-4 : 0x7.e006c3aa64df81db0ea807695ap-4 : inexact-ok += exp10m1 towardzero ibm128 0x2.c7fd02fd98798p-4 : 0x7.e006c3aa64df81db0ea8076958p-4 : inexact-ok += exp10m1 upward ibm128 0x2.c7fd02fd98798p-4 : 0x7.e006c3aa64df81db0ea807695ap-4 : inexact-ok += exp10m1 downward binary64 0x2.c7fd02fd98796p-4 : 0x7.e006c3aa64dfp-4 : inexact-ok += exp10m1 tonearest binary64 0x2.c7fd02fd98796p-4 : 0x7.e006c3aa64dfp-4 : inexact-ok += exp10m1 towardzero binary64 0x2.c7fd02fd98796p-4 : 0x7.e006c3aa64dfp-4 : inexact-ok += exp10m1 upward binary64 0x2.c7fd02fd98796p-4 : 0x7.e006c3aa64df4p-4 : inexact-ok += exp10m1 downward intel96 0x2.c7fd02fd98796p-4 : 0x7.e006c3aa64df13e8p-4 : inexact-ok += exp10m1 tonearest intel96 0x2.c7fd02fd98796p-4 : 0x7.e006c3aa64df13e8p-4 : inexact-ok += exp10m1 towardzero intel96 0x2.c7fd02fd98796p-4 : 0x7.e006c3aa64df13e8p-4 : inexact-ok += exp10m1 upward intel96 0x2.c7fd02fd98796p-4 : 0x7.e006c3aa64df13fp-4 : inexact-ok += exp10m1 downward m68k96 0x2.c7fd02fd98796p-4 : 0x7.e006c3aa64df13e8p-4 : inexact-ok += exp10m1 tonearest m68k96 0x2.c7fd02fd98796p-4 : 0x7.e006c3aa64df13e8p-4 : inexact-ok += exp10m1 towardzero m68k96 0x2.c7fd02fd98796p-4 : 0x7.e006c3aa64df13e8p-4 : inexact-ok += exp10m1 upward m68k96 0x2.c7fd02fd98796p-4 : 0x7.e006c3aa64df13fp-4 : inexact-ok += exp10m1 downward binary128 0x2.c7fd02fd98796p-4 : 0x7.e006c3aa64df13e822a907b1e7e4p-4 : inexact-ok += exp10m1 tonearest binary128 0x2.c7fd02fd98796p-4 : 0x7.e006c3aa64df13e822a907b1e7e4p-4 : inexact-ok += exp10m1 towardzero binary128 0x2.c7fd02fd98796p-4 : 0x7.e006c3aa64df13e822a907b1e7e4p-4 : inexact-ok += exp10m1 upward binary128 0x2.c7fd02fd98796p-4 : 0x7.e006c3aa64df13e822a907b1e7e8p-4 : inexact-ok += exp10m1 downward ibm128 0x2.c7fd02fd98796p-4 : 0x7.e006c3aa64df13e822a907b1e6p-4 : inexact-ok += exp10m1 tonearest ibm128 0x2.c7fd02fd98796p-4 : 0x7.e006c3aa64df13e822a907b1e8p-4 : inexact-ok += exp10m1 towardzero ibm128 0x2.c7fd02fd98796p-4 : 0x7.e006c3aa64df13e822a907b1e6p-4 : inexact-ok += exp10m1 upward ibm128 0x2.c7fd02fd98796p-4 : 0x7.e006c3aa64df13e822a907b1e8p-4 : inexact-ok += exp10m1 downward intel96 0x2.c7fd02fd98797bf4p-4 : 0x7.e006c3aa64df73fp-4 : inexact-ok += exp10m1 tonearest intel96 0x2.c7fd02fd98797bf4p-4 : 0x7.e006c3aa64df73fp-4 : inexact-ok += exp10m1 towardzero intel96 0x2.c7fd02fd98797bf4p-4 : 0x7.e006c3aa64df73fp-4 : inexact-ok += exp10m1 upward intel96 0x2.c7fd02fd98797bf4p-4 : 0x7.e006c3aa64df73f8p-4 : inexact-ok += exp10m1 downward m68k96 0x2.c7fd02fd98797bf4p-4 : 0x7.e006c3aa64df73fp-4 : inexact-ok += exp10m1 tonearest m68k96 0x2.c7fd02fd98797bf4p-4 : 0x7.e006c3aa64df73fp-4 : inexact-ok += exp10m1 towardzero m68k96 0x2.c7fd02fd98797bf4p-4 : 0x7.e006c3aa64df73fp-4 : inexact-ok += exp10m1 upward m68k96 0x2.c7fd02fd98797bf4p-4 : 0x7.e006c3aa64df73f8p-4 : inexact-ok += exp10m1 downward binary128 0x2.c7fd02fd98797bf4p-4 : 0x7.e006c3aa64df73f3760fa7d2864cp-4 : inexact-ok += exp10m1 tonearest binary128 0x2.c7fd02fd98797bf4p-4 : 0x7.e006c3aa64df73f3760fa7d2864cp-4 : inexact-ok += exp10m1 towardzero binary128 0x2.c7fd02fd98797bf4p-4 : 0x7.e006c3aa64df73f3760fa7d2864cp-4 : inexact-ok += exp10m1 upward binary128 0x2.c7fd02fd98797bf4p-4 : 0x7.e006c3aa64df73f3760fa7d2865p-4 : inexact-ok += exp10m1 downward ibm128 0x2.c7fd02fd98797bf4p-4 : 0x7.e006c3aa64df73f3760fa7d286p-4 : inexact-ok += exp10m1 tonearest ibm128 0x2.c7fd02fd98797bf4p-4 : 0x7.e006c3aa64df73f3760fa7d286p-4 : inexact-ok += exp10m1 towardzero ibm128 0x2.c7fd02fd98797bf4p-4 : 0x7.e006c3aa64df73f3760fa7d286p-4 : inexact-ok += exp10m1 upward ibm128 0x2.c7fd02fd98797bf4p-4 : 0x7.e006c3aa64df73f3760fa7d288p-4 : inexact-ok +exp10m1 -0x6.f36b2669aee2d2e8p-12 += exp10m1 downward binary32 -0x6.f36b2p-12 : -0xf.f944ap-12 : inexact-ok += exp10m1 tonearest binary32 -0x6.f36b2p-12 : -0xf.f9449p-12 : inexact-ok += exp10m1 towardzero binary32 -0x6.f36b2p-12 : -0xf.f9449p-12 : inexact-ok += exp10m1 upward binary32 -0x6.f36b2p-12 : -0xf.f9449p-12 : inexact-ok += exp10m1 downward binary64 -0x6.f36b2p-12 : -0xf.f94494ece3a2p-12 : inexact-ok += exp10m1 tonearest binary64 -0x6.f36b2p-12 : -0xf.f94494ece3a2p-12 : inexact-ok += exp10m1 towardzero binary64 -0x6.f36b2p-12 : -0xf.f94494ece3a18p-12 : inexact-ok += exp10m1 upward binary64 -0x6.f36b2p-12 : -0xf.f94494ece3a18p-12 : inexact-ok += exp10m1 downward intel96 -0x6.f36b2p-12 : -0xf.f94494ece3a1cb8p-12 : inexact-ok += exp10m1 tonearest intel96 -0x6.f36b2p-12 : -0xf.f94494ece3a1cb8p-12 : inexact-ok += exp10m1 towardzero intel96 -0x6.f36b2p-12 : -0xf.f94494ece3a1cb7p-12 : inexact-ok += exp10m1 upward intel96 -0x6.f36b2p-12 : -0xf.f94494ece3a1cb7p-12 : inexact-ok += exp10m1 downward m68k96 -0x6.f36b2p-12 : -0xf.f94494ece3a1cb8p-12 : inexact-ok += exp10m1 tonearest m68k96 -0x6.f36b2p-12 : -0xf.f94494ece3a1cb8p-12 : inexact-ok += exp10m1 towardzero m68k96 -0x6.f36b2p-12 : -0xf.f94494ece3a1cb7p-12 : inexact-ok += exp10m1 upward m68k96 -0x6.f36b2p-12 : -0xf.f94494ece3a1cb7p-12 : inexact-ok += exp10m1 downward binary128 -0x6.f36b2p-12 : -0xf.f94494ece3a1cb7c1ad5adebd0c8p-12 : inexact-ok += exp10m1 tonearest binary128 -0x6.f36b2p-12 : -0xf.f94494ece3a1cb7c1ad5adebd0cp-12 : inexact-ok += exp10m1 towardzero binary128 -0x6.f36b2p-12 : -0xf.f94494ece3a1cb7c1ad5adebd0cp-12 : inexact-ok += exp10m1 upward binary128 -0x6.f36b2p-12 : -0xf.f94494ece3a1cb7c1ad5adebd0cp-12 : inexact-ok += exp10m1 downward ibm128 -0x6.f36b2p-12 : -0xf.f94494ece3a1cb7c1ad5adebd4p-12 : inexact-ok += exp10m1 tonearest ibm128 -0x6.f36b2p-12 : -0xf.f94494ece3a1cb7c1ad5adebdp-12 : inexact-ok += exp10m1 towardzero ibm128 -0x6.f36b2p-12 : -0xf.f94494ece3a1cb7c1ad5adebdp-12 : inexact-ok += exp10m1 upward ibm128 -0x6.f36b2p-12 : -0xf.f94494ece3a1cb7c1ad5adebdp-12 : inexact-ok += exp10m1 downward binary32 -0x6.f36b28p-12 : -0xf.f944bp-12 : inexact-ok += exp10m1 tonearest binary32 -0x6.f36b28p-12 : -0xf.f944ap-12 : inexact-ok += exp10m1 towardzero binary32 -0x6.f36b28p-12 : -0xf.f944ap-12 : inexact-ok += exp10m1 upward binary32 -0x6.f36b28p-12 : -0xf.f944ap-12 : inexact-ok += exp10m1 downward binary64 -0x6.f36b28p-12 : -0xf.f944a746316cp-12 : inexact-ok += exp10m1 tonearest binary64 -0x6.f36b28p-12 : -0xf.f944a746316cp-12 : inexact-ok += exp10m1 towardzero binary64 -0x6.f36b28p-12 : -0xf.f944a746316b8p-12 : inexact-ok += exp10m1 upward binary64 -0x6.f36b28p-12 : -0xf.f944a746316b8p-12 : inexact-ok += exp10m1 downward intel96 -0x6.f36b28p-12 : -0xf.f944a746316be33p-12 : inexact-ok += exp10m1 tonearest intel96 -0x6.f36b28p-12 : -0xf.f944a746316be32p-12 : inexact-ok += exp10m1 towardzero intel96 -0x6.f36b28p-12 : -0xf.f944a746316be32p-12 : inexact-ok += exp10m1 upward intel96 -0x6.f36b28p-12 : -0xf.f944a746316be32p-12 : inexact-ok += exp10m1 downward m68k96 -0x6.f36b28p-12 : -0xf.f944a746316be33p-12 : inexact-ok += exp10m1 tonearest m68k96 -0x6.f36b28p-12 : -0xf.f944a746316be32p-12 : inexact-ok += exp10m1 towardzero m68k96 -0x6.f36b28p-12 : -0xf.f944a746316be32p-12 : inexact-ok += exp10m1 upward m68k96 -0x6.f36b28p-12 : -0xf.f944a746316be32p-12 : inexact-ok += exp10m1 downward binary128 -0x6.f36b28p-12 : -0xf.f944a746316be325b9f6276506ap-12 : inexact-ok += exp10m1 tonearest binary128 -0x6.f36b28p-12 : -0xf.f944a746316be325b9f627650698p-12 : inexact-ok += exp10m1 towardzero binary128 -0x6.f36b28p-12 : -0xf.f944a746316be325b9f627650698p-12 : inexact-ok += exp10m1 upward binary128 -0x6.f36b28p-12 : -0xf.f944a746316be325b9f627650698p-12 : inexact-ok += exp10m1 downward ibm128 -0x6.f36b28p-12 : -0xf.f944a746316be325b9f6276508p-12 : inexact-ok += exp10m1 tonearest ibm128 -0x6.f36b28p-12 : -0xf.f944a746316be325b9f6276508p-12 : inexact-ok += exp10m1 towardzero ibm128 -0x6.f36b28p-12 : -0xf.f944a746316be325b9f6276504p-12 : inexact-ok += exp10m1 upward ibm128 -0x6.f36b28p-12 : -0xf.f944a746316be325b9f6276504p-12 : inexact-ok += exp10m1 downward binary64 -0x6.f36b2669aee2cp-12 : -0xf.f944a3a24335p-12 : inexact-ok += exp10m1 tonearest binary64 -0x6.f36b2669aee2cp-12 : -0xf.f944a3a24335p-12 : inexact-ok += exp10m1 towardzero binary64 -0x6.f36b2669aee2cp-12 : -0xf.f944a3a243348p-12 : inexact-ok += exp10m1 upward binary64 -0x6.f36b2669aee2cp-12 : -0xf.f944a3a243348p-12 : inexact-ok += exp10m1 downward intel96 -0x6.f36b2669aee2cp-12 : -0xf.f944a3a24334ca9p-12 : inexact-ok += exp10m1 tonearest intel96 -0x6.f36b2669aee2cp-12 : -0xf.f944a3a24334ca8p-12 : inexact-ok += exp10m1 towardzero intel96 -0x6.f36b2669aee2cp-12 : -0xf.f944a3a24334ca8p-12 : inexact-ok += exp10m1 upward intel96 -0x6.f36b2669aee2cp-12 : -0xf.f944a3a24334ca8p-12 : inexact-ok += exp10m1 downward m68k96 -0x6.f36b2669aee2cp-12 : -0xf.f944a3a24334ca9p-12 : inexact-ok += exp10m1 tonearest m68k96 -0x6.f36b2669aee2cp-12 : -0xf.f944a3a24334ca8p-12 : inexact-ok += exp10m1 towardzero m68k96 -0x6.f36b2669aee2cp-12 : -0xf.f944a3a24334ca8p-12 : inexact-ok += exp10m1 upward m68k96 -0x6.f36b2669aee2cp-12 : -0xf.f944a3a24334ca8p-12 : inexact-ok += exp10m1 downward binary128 -0x6.f36b2669aee2cp-12 : -0xf.f944a3a24334ca8046d4256c8598p-12 : inexact-ok += exp10m1 tonearest binary128 -0x6.f36b2669aee2cp-12 : -0xf.f944a3a24334ca8046d4256c859p-12 : inexact-ok += exp10m1 towardzero binary128 -0x6.f36b2669aee2cp-12 : -0xf.f944a3a24334ca8046d4256c859p-12 : inexact-ok += exp10m1 upward binary128 -0x6.f36b2669aee2cp-12 : -0xf.f944a3a24334ca8046d4256c859p-12 : inexact-ok += exp10m1 downward ibm128 -0x6.f36b2669aee2cp-12 : -0xf.f944a3a24334ca8046d4256c88p-12 : inexact-ok += exp10m1 tonearest ibm128 -0x6.f36b2669aee2cp-12 : -0xf.f944a3a24334ca8046d4256c84p-12 : inexact-ok += exp10m1 towardzero ibm128 -0x6.f36b2669aee2cp-12 : -0xf.f944a3a24334ca8046d4256c84p-12 : inexact-ok += exp10m1 upward ibm128 -0x6.f36b2669aee2cp-12 : -0xf.f944a3a24334ca8046d4256c84p-12 : inexact-ok += exp10m1 downward binary64 -0x6.f36b2669aee3p-12 : -0xf.f944a3a243358p-12 : inexact-ok += exp10m1 tonearest binary64 -0x6.f36b2669aee3p-12 : -0xf.f944a3a243358p-12 : inexact-ok += exp10m1 towardzero binary64 -0x6.f36b2669aee3p-12 : -0xf.f944a3a24335p-12 : inexact-ok += exp10m1 upward binary64 -0x6.f36b2669aee3p-12 : -0xf.f944a3a24335p-12 : inexact-ok += exp10m1 downward intel96 -0x6.f36b2669aee3p-12 : -0xf.f944a3a243355d5p-12 : inexact-ok += exp10m1 tonearest intel96 -0x6.f36b2669aee3p-12 : -0xf.f944a3a243355d5p-12 : inexact-ok += exp10m1 towardzero intel96 -0x6.f36b2669aee3p-12 : -0xf.f944a3a243355d4p-12 : inexact-ok += exp10m1 upward intel96 -0x6.f36b2669aee3p-12 : -0xf.f944a3a243355d4p-12 : inexact-ok += exp10m1 downward m68k96 -0x6.f36b2669aee3p-12 : -0xf.f944a3a243355d5p-12 : inexact-ok += exp10m1 tonearest m68k96 -0x6.f36b2669aee3p-12 : -0xf.f944a3a243355d5p-12 : inexact-ok += exp10m1 towardzero m68k96 -0x6.f36b2669aee3p-12 : -0xf.f944a3a243355d4p-12 : inexact-ok += exp10m1 upward m68k96 -0x6.f36b2669aee3p-12 : -0xf.f944a3a243355d4p-12 : inexact-ok += exp10m1 downward binary128 -0x6.f36b2669aee3p-12 : -0xf.f944a3a243355d4ab524afc10218p-12 : inexact-ok += exp10m1 tonearest binary128 -0x6.f36b2669aee3p-12 : -0xf.f944a3a243355d4ab524afc1021p-12 : inexact-ok += exp10m1 towardzero binary128 -0x6.f36b2669aee3p-12 : -0xf.f944a3a243355d4ab524afc1021p-12 : inexact-ok += exp10m1 upward binary128 -0x6.f36b2669aee3p-12 : -0xf.f944a3a243355d4ab524afc1021p-12 : inexact-ok += exp10m1 downward ibm128 -0x6.f36b2669aee3p-12 : -0xf.f944a3a243355d4ab524afc104p-12 : inexact-ok += exp10m1 tonearest ibm128 -0x6.f36b2669aee3p-12 : -0xf.f944a3a243355d4ab524afc104p-12 : inexact-ok += exp10m1 towardzero ibm128 -0x6.f36b2669aee3p-12 : -0xf.f944a3a243355d4ab524afc1p-12 : inexact-ok += exp10m1 upward ibm128 -0x6.f36b2669aee3p-12 : -0xf.f944a3a243355d4ab524afc1p-12 : inexact-ok += exp10m1 downward intel96 -0x6.f36b2669aee2d2e8p-12 : -0xf.f944a3a24334f5ep-12 : inexact-ok += exp10m1 tonearest intel96 -0x6.f36b2669aee2d2e8p-12 : -0xf.f944a3a24334f5ep-12 : inexact-ok += exp10m1 towardzero intel96 -0x6.f36b2669aee2d2e8p-12 : -0xf.f944a3a24334f5dp-12 : inexact-ok += exp10m1 upward intel96 -0x6.f36b2669aee2d2e8p-12 : -0xf.f944a3a24334f5dp-12 : inexact-ok += exp10m1 downward m68k96 -0x6.f36b2669aee2d2e8p-12 : -0xf.f944a3a24334f5ep-12 : inexact-ok += exp10m1 tonearest m68k96 -0x6.f36b2669aee2d2e8p-12 : -0xf.f944a3a24334f5ep-12 : inexact-ok += exp10m1 towardzero m68k96 -0x6.f36b2669aee2d2e8p-12 : -0xf.f944a3a24334f5dp-12 : inexact-ok += exp10m1 upward m68k96 -0x6.f36b2669aee2d2e8p-12 : -0xf.f944a3a24334f5dp-12 : inexact-ok += exp10m1 downward binary128 -0x6.f36b2669aee2d2e8p-12 : -0xf.f944a3a24334f5dd53aab049baep-12 : inexact-ok += exp10m1 tonearest binary128 -0x6.f36b2669aee2d2e8p-12 : -0xf.f944a3a24334f5dd53aab049bad8p-12 : inexact-ok += exp10m1 towardzero binary128 -0x6.f36b2669aee2d2e8p-12 : -0xf.f944a3a24334f5dd53aab049bad8p-12 : inexact-ok += exp10m1 upward binary128 -0x6.f36b2669aee2d2e8p-12 : -0xf.f944a3a24334f5dd53aab049bad8p-12 : inexact-ok += exp10m1 downward ibm128 -0x6.f36b2669aee2d2e8p-12 : -0xf.f944a3a24334f5dd53aab049bcp-12 : inexact-ok += exp10m1 tonearest ibm128 -0x6.f36b2669aee2d2e8p-12 : -0xf.f944a3a24334f5dd53aab049bcp-12 : inexact-ok += exp10m1 towardzero ibm128 -0x6.f36b2669aee2d2e8p-12 : -0xf.f944a3a24334f5dd53aab049b8p-12 : inexact-ok += exp10m1 upward ibm128 -0x6.f36b2669aee2d2e8p-12 : -0xf.f944a3a24334f5dd53aab049b8p-12 : inexact-ok +exp10m1 0x2.c83d897086a4e644p-4 += exp10m1 downward binary32 0x2.c83d8cp-4 : 0x7.e0e48p-4 : inexact-ok += exp10m1 tonearest binary32 0x2.c83d8cp-4 : 0x7.e0e488p-4 : inexact-ok += exp10m1 towardzero binary32 0x2.c83d8cp-4 : 0x7.e0e48p-4 : inexact-ok += exp10m1 upward binary32 0x2.c83d8cp-4 : 0x7.e0e488p-4 : inexact-ok += exp10m1 downward binary64 0x2.c83d8cp-4 : 0x7.e0e4844861344p-4 : inexact-ok += exp10m1 tonearest binary64 0x2.c83d8cp-4 : 0x7.e0e4844861344p-4 : inexact-ok += exp10m1 towardzero binary64 0x2.c83d8cp-4 : 0x7.e0e4844861344p-4 : inexact-ok += exp10m1 upward binary64 0x2.c83d8cp-4 : 0x7.e0e4844861348p-4 : inexact-ok += exp10m1 downward intel96 0x2.c83d8cp-4 : 0x7.e0e48448613442cp-4 : inexact-ok += exp10m1 tonearest intel96 0x2.c83d8cp-4 : 0x7.e0e48448613442c8p-4 : inexact-ok += exp10m1 towardzero intel96 0x2.c83d8cp-4 : 0x7.e0e48448613442cp-4 : inexact-ok += exp10m1 upward intel96 0x2.c83d8cp-4 : 0x7.e0e48448613442c8p-4 : inexact-ok += exp10m1 downward m68k96 0x2.c83d8cp-4 : 0x7.e0e48448613442cp-4 : inexact-ok += exp10m1 tonearest m68k96 0x2.c83d8cp-4 : 0x7.e0e48448613442c8p-4 : inexact-ok += exp10m1 towardzero m68k96 0x2.c83d8cp-4 : 0x7.e0e48448613442cp-4 : inexact-ok += exp10m1 upward m68k96 0x2.c83d8cp-4 : 0x7.e0e48448613442c8p-4 : inexact-ok += exp10m1 downward binary128 0x2.c83d8cp-4 : 0x7.e0e48448613442c6c74b8ebd8744p-4 : inexact-ok += exp10m1 tonearest binary128 0x2.c83d8cp-4 : 0x7.e0e48448613442c6c74b8ebd8744p-4 : inexact-ok += exp10m1 towardzero binary128 0x2.c83d8cp-4 : 0x7.e0e48448613442c6c74b8ebd8744p-4 : inexact-ok += exp10m1 upward binary128 0x2.c83d8cp-4 : 0x7.e0e48448613442c6c74b8ebd8748p-4 : inexact-ok += exp10m1 downward ibm128 0x2.c83d8cp-4 : 0x7.e0e48448613442c6c74b8ebd86p-4 : inexact-ok += exp10m1 tonearest ibm128 0x2.c83d8cp-4 : 0x7.e0e48448613442c6c74b8ebd88p-4 : inexact-ok += exp10m1 towardzero ibm128 0x2.c83d8cp-4 : 0x7.e0e48448613442c6c74b8ebd86p-4 : inexact-ok += exp10m1 upward ibm128 0x2.c83d8cp-4 : 0x7.e0e48448613442c6c74b8ebd88p-4 : inexact-ok += exp10m1 downward binary32 0x2.c83d88p-4 : 0x7.e0e47p-4 : inexact-ok += exp10m1 tonearest binary32 0x2.c83d88p-4 : 0x7.e0e478p-4 : inexact-ok += exp10m1 towardzero binary32 0x2.c83d88p-4 : 0x7.e0e47p-4 : inexact-ok += exp10m1 upward binary32 0x2.c83d88p-4 : 0x7.e0e478p-4 : inexact-ok += exp10m1 downward binary64 0x2.c83d88p-4 : 0x7.e0e4768984118p-4 : inexact-ok += exp10m1 tonearest binary64 0x2.c83d88p-4 : 0x7.e0e476898411cp-4 : inexact-ok += exp10m1 towardzero binary64 0x2.c83d88p-4 : 0x7.e0e4768984118p-4 : inexact-ok += exp10m1 upward binary64 0x2.c83d88p-4 : 0x7.e0e476898411cp-4 : inexact-ok += exp10m1 downward intel96 0x2.c83d88p-4 : 0x7.e0e476898411b308p-4 : inexact-ok += exp10m1 tonearest intel96 0x2.c83d88p-4 : 0x7.e0e476898411b308p-4 : inexact-ok += exp10m1 towardzero intel96 0x2.c83d88p-4 : 0x7.e0e476898411b308p-4 : inexact-ok += exp10m1 upward intel96 0x2.c83d88p-4 : 0x7.e0e476898411b31p-4 : inexact-ok += exp10m1 downward m68k96 0x2.c83d88p-4 : 0x7.e0e476898411b308p-4 : inexact-ok += exp10m1 tonearest m68k96 0x2.c83d88p-4 : 0x7.e0e476898411b308p-4 : inexact-ok += exp10m1 towardzero m68k96 0x2.c83d88p-4 : 0x7.e0e476898411b308p-4 : inexact-ok += exp10m1 upward m68k96 0x2.c83d88p-4 : 0x7.e0e476898411b31p-4 : inexact-ok += exp10m1 downward binary128 0x2.c83d88p-4 : 0x7.e0e476898411b30aed81bd802038p-4 : inexact-ok += exp10m1 tonearest binary128 0x2.c83d88p-4 : 0x7.e0e476898411b30aed81bd802038p-4 : inexact-ok += exp10m1 towardzero binary128 0x2.c83d88p-4 : 0x7.e0e476898411b30aed81bd802038p-4 : inexact-ok += exp10m1 upward binary128 0x2.c83d88p-4 : 0x7.e0e476898411b30aed81bd80203cp-4 : inexact-ok += exp10m1 downward ibm128 0x2.c83d88p-4 : 0x7.e0e476898411b30aed81bd802p-4 : inexact-ok += exp10m1 tonearest ibm128 0x2.c83d88p-4 : 0x7.e0e476898411b30aed81bd802p-4 : inexact-ok += exp10m1 towardzero ibm128 0x2.c83d88p-4 : 0x7.e0e476898411b30aed81bd802p-4 : inexact-ok += exp10m1 upward ibm128 0x2.c83d88p-4 : 0x7.e0e476898411b30aed81bd8022p-4 : inexact-ok += exp10m1 downward binary64 0x2.c83d897086a5p-4 : 0x7.e0e47b7bea3ap-4 : inexact-ok += exp10m1 tonearest binary64 0x2.c83d897086a5p-4 : 0x7.e0e47b7bea3a4p-4 : inexact-ok += exp10m1 towardzero binary64 0x2.c83d897086a5p-4 : 0x7.e0e47b7bea3ap-4 : inexact-ok += exp10m1 upward binary64 0x2.c83d897086a5p-4 : 0x7.e0e47b7bea3a4p-4 : inexact-ok += exp10m1 downward intel96 0x2.c83d897086a5p-4 : 0x7.e0e47b7bea3a2688p-4 : inexact-ok += exp10m1 tonearest intel96 0x2.c83d897086a5p-4 : 0x7.e0e47b7bea3a2688p-4 : inexact-ok += exp10m1 towardzero intel96 0x2.c83d897086a5p-4 : 0x7.e0e47b7bea3a2688p-4 : inexact-ok += exp10m1 upward intel96 0x2.c83d897086a5p-4 : 0x7.e0e47b7bea3a269p-4 : inexact-ok += exp10m1 downward m68k96 0x2.c83d897086a5p-4 : 0x7.e0e47b7bea3a2688p-4 : inexact-ok += exp10m1 tonearest m68k96 0x2.c83d897086a5p-4 : 0x7.e0e47b7bea3a2688p-4 : inexact-ok += exp10m1 towardzero m68k96 0x2.c83d897086a5p-4 : 0x7.e0e47b7bea3a2688p-4 : inexact-ok += exp10m1 upward m68k96 0x2.c83d897086a5p-4 : 0x7.e0e47b7bea3a269p-4 : inexact-ok += exp10m1 downward binary128 0x2.c83d897086a5p-4 : 0x7.e0e47b7bea3a268829fb4be87c0cp-4 : inexact-ok += exp10m1 tonearest binary128 0x2.c83d897086a5p-4 : 0x7.e0e47b7bea3a268829fb4be87c0cp-4 : inexact-ok += exp10m1 towardzero binary128 0x2.c83d897086a5p-4 : 0x7.e0e47b7bea3a268829fb4be87c0cp-4 : inexact-ok += exp10m1 upward binary128 0x2.c83d897086a5p-4 : 0x7.e0e47b7bea3a268829fb4be87c1p-4 : inexact-ok += exp10m1 downward ibm128 0x2.c83d897086a5p-4 : 0x7.e0e47b7bea3a268829fb4be87cp-4 : inexact-ok += exp10m1 tonearest ibm128 0x2.c83d897086a5p-4 : 0x7.e0e47b7bea3a268829fb4be87cp-4 : inexact-ok += exp10m1 towardzero ibm128 0x2.c83d897086a5p-4 : 0x7.e0e47b7bea3a268829fb4be87cp-4 : inexact-ok += exp10m1 upward ibm128 0x2.c83d897086a5p-4 : 0x7.e0e47b7bea3a268829fb4be87ep-4 : inexact-ok += exp10m1 downward binary64 0x2.c83d897086a4ep-4 : 0x7.e0e47b7bea398p-4 : inexact-ok += exp10m1 tonearest binary64 0x2.c83d897086a4ep-4 : 0x7.e0e47b7bea39cp-4 : inexact-ok += exp10m1 towardzero binary64 0x2.c83d897086a4ep-4 : 0x7.e0e47b7bea398p-4 : inexact-ok += exp10m1 upward binary64 0x2.c83d897086a4ep-4 : 0x7.e0e47b7bea39cp-4 : inexact-ok += exp10m1 downward intel96 0x2.c83d897086a4ep-4 : 0x7.e0e47b7bea39b89p-4 : inexact-ok += exp10m1 tonearest intel96 0x2.c83d897086a4ep-4 : 0x7.e0e47b7bea39b89p-4 : inexact-ok += exp10m1 towardzero intel96 0x2.c83d897086a4ep-4 : 0x7.e0e47b7bea39b89p-4 : inexact-ok += exp10m1 upward intel96 0x2.c83d897086a4ep-4 : 0x7.e0e47b7bea39b898p-4 : inexact-ok += exp10m1 downward m68k96 0x2.c83d897086a4ep-4 : 0x7.e0e47b7bea39b89p-4 : inexact-ok += exp10m1 tonearest m68k96 0x2.c83d897086a4ep-4 : 0x7.e0e47b7bea39b89p-4 : inexact-ok += exp10m1 towardzero m68k96 0x2.c83d897086a4ep-4 : 0x7.e0e47b7bea39b89p-4 : inexact-ok += exp10m1 upward m68k96 0x2.c83d897086a4ep-4 : 0x7.e0e47b7bea39b898p-4 : inexact-ok += exp10m1 downward binary128 0x2.c83d897086a4ep-4 : 0x7.e0e47b7bea39b89140efac89b774p-4 : inexact-ok += exp10m1 tonearest binary128 0x2.c83d897086a4ep-4 : 0x7.e0e47b7bea39b89140efac89b778p-4 : inexact-ok += exp10m1 towardzero binary128 0x2.c83d897086a4ep-4 : 0x7.e0e47b7bea39b89140efac89b774p-4 : inexact-ok += exp10m1 upward binary128 0x2.c83d897086a4ep-4 : 0x7.e0e47b7bea39b89140efac89b778p-4 : inexact-ok += exp10m1 downward ibm128 0x2.c83d897086a4ep-4 : 0x7.e0e47b7bea39b89140efac89b6p-4 : inexact-ok += exp10m1 tonearest ibm128 0x2.c83d897086a4ep-4 : 0x7.e0e47b7bea39b89140efac89b8p-4 : inexact-ok += exp10m1 towardzero ibm128 0x2.c83d897086a4ep-4 : 0x7.e0e47b7bea39b89140efac89b6p-4 : inexact-ok += exp10m1 upward ibm128 0x2.c83d897086a4ep-4 : 0x7.e0e47b7bea39b89140efac89b8p-4 : inexact-ok += exp10m1 downward intel96 0x2.c83d897086a4e644p-4 : 0x7.e0e47b7bea39ce18p-4 : inexact-ok += exp10m1 tonearest intel96 0x2.c83d897086a4e644p-4 : 0x7.e0e47b7bea39ce18p-4 : inexact-ok += exp10m1 towardzero intel96 0x2.c83d897086a4e644p-4 : 0x7.e0e47b7bea39ce18p-4 : inexact-ok += exp10m1 upward intel96 0x2.c83d897086a4e644p-4 : 0x7.e0e47b7bea39ce2p-4 : inexact-ok += exp10m1 downward m68k96 0x2.c83d897086a4e644p-4 : 0x7.e0e47b7bea39ce18p-4 : inexact-ok += exp10m1 tonearest m68k96 0x2.c83d897086a4e644p-4 : 0x7.e0e47b7bea39ce18p-4 : inexact-ok += exp10m1 towardzero m68k96 0x2.c83d897086a4e644p-4 : 0x7.e0e47b7bea39ce18p-4 : inexact-ok += exp10m1 upward m68k96 0x2.c83d897086a4e644p-4 : 0x7.e0e47b7bea39ce2p-4 : inexact-ok += exp10m1 downward binary128 0x2.c83d897086a4e644p-4 : 0x7.e0e47b7bea39ce193951131e258cp-4 : inexact-ok += exp10m1 tonearest binary128 0x2.c83d897086a4e644p-4 : 0x7.e0e47b7bea39ce193951131e258cp-4 : inexact-ok += exp10m1 towardzero binary128 0x2.c83d897086a4e644p-4 : 0x7.e0e47b7bea39ce193951131e258cp-4 : inexact-ok += exp10m1 upward binary128 0x2.c83d897086a4e644p-4 : 0x7.e0e47b7bea39ce193951131e259p-4 : inexact-ok += exp10m1 downward ibm128 0x2.c83d897086a4e644p-4 : 0x7.e0e47b7bea39ce193951131e24p-4 : inexact-ok += exp10m1 tonearest ibm128 0x2.c83d897086a4e644p-4 : 0x7.e0e47b7bea39ce193951131e26p-4 : inexact-ok += exp10m1 towardzero ibm128 0x2.c83d897086a4e644p-4 : 0x7.e0e47b7bea39ce193951131e24p-4 : inexact-ok += exp10m1 upward ibm128 0x2.c83d897086a4e644p-4 : 0x7.e0e47b7bea39ce193951131e26p-4 : inexact-ok +exp10m1 0x2.b47fd78c73d7fa7cp-4 += exp10m1 downward binary32 0x2.b47fd8p-4 : 0x7.9d6ep-4 : inexact-ok += exp10m1 tonearest binary32 0x2.b47fd8p-4 : 0x7.9d6e08p-4 : inexact-ok += exp10m1 towardzero binary32 0x2.b47fd8p-4 : 0x7.9d6ep-4 : inexact-ok += exp10m1 upward binary32 0x2.b47fd8p-4 : 0x7.9d6e08p-4 : inexact-ok += exp10m1 downward binary64 0x2.b47fd8p-4 : 0x7.9d6e06bb03e48p-4 : inexact-ok += exp10m1 tonearest binary64 0x2.b47fd8p-4 : 0x7.9d6e06bb03e4cp-4 : inexact-ok += exp10m1 towardzero binary64 0x2.b47fd8p-4 : 0x7.9d6e06bb03e48p-4 : inexact-ok += exp10m1 upward binary64 0x2.b47fd8p-4 : 0x7.9d6e06bb03e4cp-4 : inexact-ok += exp10m1 downward intel96 0x2.b47fd8p-4 : 0x7.9d6e06bb03e4a0cp-4 : inexact-ok += exp10m1 tonearest intel96 0x2.b47fd8p-4 : 0x7.9d6e06bb03e4a0cp-4 : inexact-ok += exp10m1 towardzero intel96 0x2.b47fd8p-4 : 0x7.9d6e06bb03e4a0cp-4 : inexact-ok += exp10m1 upward intel96 0x2.b47fd8p-4 : 0x7.9d6e06bb03e4a0c8p-4 : inexact-ok += exp10m1 downward m68k96 0x2.b47fd8p-4 : 0x7.9d6e06bb03e4a0cp-4 : inexact-ok += exp10m1 tonearest m68k96 0x2.b47fd8p-4 : 0x7.9d6e06bb03e4a0cp-4 : inexact-ok += exp10m1 towardzero m68k96 0x2.b47fd8p-4 : 0x7.9d6e06bb03e4a0cp-4 : inexact-ok += exp10m1 upward m68k96 0x2.b47fd8p-4 : 0x7.9d6e06bb03e4a0c8p-4 : inexact-ok += exp10m1 downward binary128 0x2.b47fd8p-4 : 0x7.9d6e06bb03e4a0c3b0bd4795a234p-4 : inexact-ok += exp10m1 tonearest binary128 0x2.b47fd8p-4 : 0x7.9d6e06bb03e4a0c3b0bd4795a234p-4 : inexact-ok += exp10m1 towardzero binary128 0x2.b47fd8p-4 : 0x7.9d6e06bb03e4a0c3b0bd4795a234p-4 : inexact-ok += exp10m1 upward binary128 0x2.b47fd8p-4 : 0x7.9d6e06bb03e4a0c3b0bd4795a238p-4 : inexact-ok += exp10m1 downward ibm128 0x2.b47fd8p-4 : 0x7.9d6e06bb03e4a0c3b0bd4795a2p-4 : inexact-ok += exp10m1 tonearest ibm128 0x2.b47fd8p-4 : 0x7.9d6e06bb03e4a0c3b0bd4795a2p-4 : inexact-ok += exp10m1 towardzero ibm128 0x2.b47fd8p-4 : 0x7.9d6e06bb03e4a0c3b0bd4795a2p-4 : inexact-ok += exp10m1 upward ibm128 0x2.b47fd8p-4 : 0x7.9d6e06bb03e4a0c3b0bd4795a4p-4 : inexact-ok += exp10m1 downward binary32 0x2.b47fd4p-4 : 0x7.9d6df8p-4 : inexact-ok += exp10m1 tonearest binary32 0x2.b47fd4p-4 : 0x7.9d6df8p-4 : inexact-ok += exp10m1 towardzero binary32 0x2.b47fd4p-4 : 0x7.9d6df8p-4 : inexact-ok += exp10m1 upward binary32 0x2.b47fd4p-4 : 0x7.9d6ep-4 : inexact-ok += exp10m1 downward binary64 0x2.b47fd4p-4 : 0x7.9d6df922fc738p-4 : inexact-ok += exp10m1 tonearest binary64 0x2.b47fd4p-4 : 0x7.9d6df922fc738p-4 : inexact-ok += exp10m1 towardzero binary64 0x2.b47fd4p-4 : 0x7.9d6df922fc738p-4 : inexact-ok += exp10m1 upward binary64 0x2.b47fd4p-4 : 0x7.9d6df922fc73cp-4 : inexact-ok += exp10m1 downward intel96 0x2.b47fd4p-4 : 0x7.9d6df922fc738c5p-4 : inexact-ok += exp10m1 tonearest intel96 0x2.b47fd4p-4 : 0x7.9d6df922fc738c5p-4 : inexact-ok += exp10m1 towardzero intel96 0x2.b47fd4p-4 : 0x7.9d6df922fc738c5p-4 : inexact-ok += exp10m1 upward intel96 0x2.b47fd4p-4 : 0x7.9d6df922fc738c58p-4 : inexact-ok += exp10m1 downward m68k96 0x2.b47fd4p-4 : 0x7.9d6df922fc738c5p-4 : inexact-ok += exp10m1 tonearest m68k96 0x2.b47fd4p-4 : 0x7.9d6df922fc738c5p-4 : inexact-ok += exp10m1 towardzero m68k96 0x2.b47fd4p-4 : 0x7.9d6df922fc738c5p-4 : inexact-ok += exp10m1 upward m68k96 0x2.b47fd4p-4 : 0x7.9d6df922fc738c58p-4 : inexact-ok += exp10m1 downward binary128 0x2.b47fd4p-4 : 0x7.9d6df922fc738c50bdebf7e427f4p-4 : inexact-ok += exp10m1 tonearest binary128 0x2.b47fd4p-4 : 0x7.9d6df922fc738c50bdebf7e427f8p-4 : inexact-ok += exp10m1 towardzero binary128 0x2.b47fd4p-4 : 0x7.9d6df922fc738c50bdebf7e427f4p-4 : inexact-ok += exp10m1 upward binary128 0x2.b47fd4p-4 : 0x7.9d6df922fc738c50bdebf7e427f8p-4 : inexact-ok += exp10m1 downward ibm128 0x2.b47fd4p-4 : 0x7.9d6df922fc738c50bdebf7e426p-4 : inexact-ok += exp10m1 tonearest ibm128 0x2.b47fd4p-4 : 0x7.9d6df922fc738c50bdebf7e428p-4 : inexact-ok += exp10m1 towardzero ibm128 0x2.b47fd4p-4 : 0x7.9d6df922fc738c50bdebf7e426p-4 : inexact-ok += exp10m1 upward ibm128 0x2.b47fd4p-4 : 0x7.9d6df922fc738c50bdebf7e428p-4 : inexact-ok += exp10m1 downward binary64 0x2.b47fd78c73d8p-4 : 0x7.9d6e053254bd4p-4 : inexact-ok += exp10m1 tonearest binary64 0x2.b47fd78c73d8p-4 : 0x7.9d6e053254bd4p-4 : inexact-ok += exp10m1 towardzero binary64 0x2.b47fd78c73d8p-4 : 0x7.9d6e053254bd4p-4 : inexact-ok += exp10m1 upward binary64 0x2.b47fd78c73d8p-4 : 0x7.9d6e053254bd8p-4 : inexact-ok += exp10m1 downward intel96 0x2.b47fd78c73d8p-4 : 0x7.9d6e053254bd54bp-4 : inexact-ok += exp10m1 tonearest intel96 0x2.b47fd78c73d8p-4 : 0x7.9d6e053254bd54bp-4 : inexact-ok += exp10m1 towardzero intel96 0x2.b47fd78c73d8p-4 : 0x7.9d6e053254bd54bp-4 : inexact-ok += exp10m1 upward intel96 0x2.b47fd78c73d8p-4 : 0x7.9d6e053254bd54b8p-4 : inexact-ok += exp10m1 downward m68k96 0x2.b47fd78c73d8p-4 : 0x7.9d6e053254bd54bp-4 : inexact-ok += exp10m1 tonearest m68k96 0x2.b47fd78c73d8p-4 : 0x7.9d6e053254bd54bp-4 : inexact-ok += exp10m1 towardzero m68k96 0x2.b47fd78c73d8p-4 : 0x7.9d6e053254bd54bp-4 : inexact-ok += exp10m1 upward m68k96 0x2.b47fd78c73d8p-4 : 0x7.9d6e053254bd54b8p-4 : inexact-ok += exp10m1 downward binary128 0x2.b47fd78c73d8p-4 : 0x7.9d6e053254bd54b26d08446e74bcp-4 : inexact-ok += exp10m1 tonearest binary128 0x2.b47fd78c73d8p-4 : 0x7.9d6e053254bd54b26d08446e74bcp-4 : inexact-ok += exp10m1 towardzero binary128 0x2.b47fd78c73d8p-4 : 0x7.9d6e053254bd54b26d08446e74bcp-4 : inexact-ok += exp10m1 upward binary128 0x2.b47fd78c73d8p-4 : 0x7.9d6e053254bd54b26d08446e74cp-4 : inexact-ok += exp10m1 downward ibm128 0x2.b47fd78c73d8p-4 : 0x7.9d6e053254bd54b26d08446e74p-4 : inexact-ok += exp10m1 tonearest ibm128 0x2.b47fd78c73d8p-4 : 0x7.9d6e053254bd54b26d08446e74p-4 : inexact-ok += exp10m1 towardzero ibm128 0x2.b47fd78c73d8p-4 : 0x7.9d6e053254bd54b26d08446e74p-4 : inexact-ok += exp10m1 upward ibm128 0x2.b47fd78c73d8p-4 : 0x7.9d6e053254bd54b26d08446e76p-4 : inexact-ok += exp10m1 downward binary64 0x2.b47fd78c73d7ep-4 : 0x7.9d6e053254bccp-4 : inexact-ok += exp10m1 tonearest binary64 0x2.b47fd78c73d7ep-4 : 0x7.9d6e053254bdp-4 : inexact-ok += exp10m1 towardzero binary64 0x2.b47fd78c73d7ep-4 : 0x7.9d6e053254bccp-4 : inexact-ok += exp10m1 upward binary64 0x2.b47fd78c73d7ep-4 : 0x7.9d6e053254bdp-4 : inexact-ok += exp10m1 downward intel96 0x2.b47fd78c73d7ep-4 : 0x7.9d6e053254bce7fp-4 : inexact-ok += exp10m1 tonearest intel96 0x2.b47fd78c73d7ep-4 : 0x7.9d6e053254bce7fp-4 : inexact-ok += exp10m1 towardzero intel96 0x2.b47fd78c73d7ep-4 : 0x7.9d6e053254bce7fp-4 : inexact-ok += exp10m1 upward intel96 0x2.b47fd78c73d7ep-4 : 0x7.9d6e053254bce7f8p-4 : inexact-ok += exp10m1 downward m68k96 0x2.b47fd78c73d7ep-4 : 0x7.9d6e053254bce7fp-4 : inexact-ok += exp10m1 tonearest m68k96 0x2.b47fd78c73d7ep-4 : 0x7.9d6e053254bce7fp-4 : inexact-ok += exp10m1 towardzero m68k96 0x2.b47fd78c73d7ep-4 : 0x7.9d6e053254bce7fp-4 : inexact-ok += exp10m1 upward m68k96 0x2.b47fd78c73d7ep-4 : 0x7.9d6e053254bce7f8p-4 : inexact-ok += exp10m1 downward binary128 0x2.b47fd78c73d7ep-4 : 0x7.9d6e053254bce7f2316764275e0cp-4 : inexact-ok += exp10m1 tonearest binary128 0x2.b47fd78c73d7ep-4 : 0x7.9d6e053254bce7f2316764275e0cp-4 : inexact-ok += exp10m1 towardzero binary128 0x2.b47fd78c73d7ep-4 : 0x7.9d6e053254bce7f2316764275e0cp-4 : inexact-ok += exp10m1 upward binary128 0x2.b47fd78c73d7ep-4 : 0x7.9d6e053254bce7f2316764275e1p-4 : inexact-ok += exp10m1 downward ibm128 0x2.b47fd78c73d7ep-4 : 0x7.9d6e053254bce7f2316764275ep-4 : inexact-ok += exp10m1 tonearest ibm128 0x2.b47fd78c73d7ep-4 : 0x7.9d6e053254bce7f2316764275ep-4 : inexact-ok += exp10m1 towardzero ibm128 0x2.b47fd78c73d7ep-4 : 0x7.9d6e053254bce7f2316764275ep-4 : inexact-ok += exp10m1 upward ibm128 0x2.b47fd78c73d7ep-4 : 0x7.9d6e053254bce7f2316764276p-4 : inexact-ok += exp10m1 downward intel96 0x2.b47fd78c73d7fa7cp-4 : 0x7.9d6e053254bd41fp-4 : inexact-ok += exp10m1 tonearest intel96 0x2.b47fd78c73d7fa7cp-4 : 0x7.9d6e053254bd41fp-4 : inexact-ok += exp10m1 towardzero intel96 0x2.b47fd78c73d7fa7cp-4 : 0x7.9d6e053254bd41fp-4 : inexact-ok += exp10m1 upward intel96 0x2.b47fd78c73d7fa7cp-4 : 0x7.9d6e053254bd41f8p-4 : inexact-ok += exp10m1 downward m68k96 0x2.b47fd78c73d7fa7cp-4 : 0x7.9d6e053254bd41fp-4 : inexact-ok += exp10m1 tonearest m68k96 0x2.b47fd78c73d7fa7cp-4 : 0x7.9d6e053254bd41fp-4 : inexact-ok += exp10m1 towardzero m68k96 0x2.b47fd78c73d7fa7cp-4 : 0x7.9d6e053254bd41fp-4 : inexact-ok += exp10m1 upward m68k96 0x2.b47fd78c73d7fa7cp-4 : 0x7.9d6e053254bd41f8p-4 : inexact-ok += exp10m1 downward binary128 0x2.b47fd78c73d7fa7cp-4 : 0x7.9d6e053254bd41f3cac129c633ccp-4 : inexact-ok += exp10m1 tonearest binary128 0x2.b47fd78c73d7fa7cp-4 : 0x7.9d6e053254bd41f3cac129c633dp-4 : inexact-ok += exp10m1 towardzero binary128 0x2.b47fd78c73d7fa7cp-4 : 0x7.9d6e053254bd41f3cac129c633ccp-4 : inexact-ok += exp10m1 upward binary128 0x2.b47fd78c73d7fa7cp-4 : 0x7.9d6e053254bd41f3cac129c633dp-4 : inexact-ok += exp10m1 downward ibm128 0x2.b47fd78c73d7fa7cp-4 : 0x7.9d6e053254bd41f3cac129c632p-4 : inexact-ok += exp10m1 tonearest ibm128 0x2.b47fd78c73d7fa7cp-4 : 0x7.9d6e053254bd41f3cac129c634p-4 : inexact-ok += exp10m1 towardzero ibm128 0x2.b47fd78c73d7fa7cp-4 : 0x7.9d6e053254bd41f3cac129c632p-4 : inexact-ok += exp10m1 upward ibm128 0x2.b47fd78c73d7fa7cp-4 : 0x7.9d6e053254bd41f3cac129c634p-4 : inexact-ok +exp10m1 0xb.2ee9062818e91afe8e80fae1818p-4 += exp10m1 downward binary32 0xb.2ee91p-4 : 0x3.fff2f8p+0 : inexact-ok += exp10m1 tonearest binary32 0xb.2ee91p-4 : 0x3.fff2f8p+0 : inexact-ok += exp10m1 towardzero binary32 0xb.2ee91p-4 : 0x3.fff2f8p+0 : inexact-ok += exp10m1 upward binary32 0xb.2ee91p-4 : 0x3.fff2fcp+0 : inexact-ok += exp10m1 downward binary64 0xb.2ee91p-4 : 0x3.fff2f84ee8532p+0 : inexact-ok += exp10m1 tonearest binary64 0xb.2ee91p-4 : 0x3.fff2f84ee8534p+0 : inexact-ok += exp10m1 towardzero binary64 0xb.2ee91p-4 : 0x3.fff2f84ee8532p+0 : inexact-ok += exp10m1 upward binary64 0xb.2ee91p-4 : 0x3.fff2f84ee8534p+0 : inexact-ok += exp10m1 downward intel96 0xb.2ee91p-4 : 0x3.fff2f84ee8533d8cp+0 : inexact-ok += exp10m1 tonearest intel96 0xb.2ee91p-4 : 0x3.fff2f84ee8533d8cp+0 : inexact-ok += exp10m1 towardzero intel96 0xb.2ee91p-4 : 0x3.fff2f84ee8533d8cp+0 : inexact-ok += exp10m1 upward intel96 0xb.2ee91p-4 : 0x3.fff2f84ee8533d9p+0 : inexact-ok += exp10m1 downward m68k96 0xb.2ee91p-4 : 0x3.fff2f84ee8533d8cp+0 : inexact-ok += exp10m1 tonearest m68k96 0xb.2ee91p-4 : 0x3.fff2f84ee8533d8cp+0 : inexact-ok += exp10m1 towardzero m68k96 0xb.2ee91p-4 : 0x3.fff2f84ee8533d8cp+0 : inexact-ok += exp10m1 upward m68k96 0xb.2ee91p-4 : 0x3.fff2f84ee8533d9p+0 : inexact-ok += exp10m1 downward binary128 0xb.2ee91p-4 : 0x3.fff2f84ee8533d8c86f161cd78f8p+0 : inexact-ok += exp10m1 tonearest binary128 0xb.2ee91p-4 : 0x3.fff2f84ee8533d8c86f161cd78fap+0 : inexact-ok += exp10m1 towardzero binary128 0xb.2ee91p-4 : 0x3.fff2f84ee8533d8c86f161cd78f8p+0 : inexact-ok += exp10m1 upward binary128 0xb.2ee91p-4 : 0x3.fff2f84ee8533d8c86f161cd78fap+0 : inexact-ok += exp10m1 downward ibm128 0xb.2ee91p-4 : 0x3.fff2f84ee8533d8c86f161cd78p+0 : inexact-ok += exp10m1 tonearest ibm128 0xb.2ee91p-4 : 0x3.fff2f84ee8533d8c86f161cd79p+0 : inexact-ok += exp10m1 towardzero ibm128 0xb.2ee91p-4 : 0x3.fff2f84ee8533d8c86f161cd78p+0 : inexact-ok += exp10m1 upward ibm128 0xb.2ee91p-4 : 0x3.fff2f84ee8533d8c86f161cd79p+0 : inexact-ok += exp10m1 downward binary32 0xb.2ee9p-4 : 0x3.fff2ecp+0 : inexact-ok += exp10m1 tonearest binary32 0xb.2ee9p-4 : 0x3.fff2ecp+0 : inexact-ok += exp10m1 towardzero binary32 0xb.2ee9p-4 : 0x3.fff2ecp+0 : inexact-ok += exp10m1 upward binary32 0xb.2ee9p-4 : 0x3.fff2fp+0 : inexact-ok += exp10m1 downward binary64 0xb.2ee9p-4 : 0x3.fff2eccbb74bep+0 : inexact-ok += exp10m1 tonearest binary64 0xb.2ee9p-4 : 0x3.fff2eccbb74bep+0 : inexact-ok += exp10m1 towardzero binary64 0xb.2ee9p-4 : 0x3.fff2eccbb74bep+0 : inexact-ok += exp10m1 upward binary64 0xb.2ee9p-4 : 0x3.fff2eccbb74cp+0 : inexact-ok += exp10m1 downward intel96 0xb.2ee9p-4 : 0x3.fff2eccbb74be41cp+0 : inexact-ok += exp10m1 tonearest intel96 0xb.2ee9p-4 : 0x3.fff2eccbb74be41cp+0 : inexact-ok += exp10m1 towardzero intel96 0xb.2ee9p-4 : 0x3.fff2eccbb74be41cp+0 : inexact-ok += exp10m1 upward intel96 0xb.2ee9p-4 : 0x3.fff2eccbb74be42p+0 : inexact-ok += exp10m1 downward m68k96 0xb.2ee9p-4 : 0x3.fff2eccbb74be41cp+0 : inexact-ok += exp10m1 tonearest m68k96 0xb.2ee9p-4 : 0x3.fff2eccbb74be41cp+0 : inexact-ok += exp10m1 towardzero m68k96 0xb.2ee9p-4 : 0x3.fff2eccbb74be41cp+0 : inexact-ok += exp10m1 upward m68k96 0xb.2ee9p-4 : 0x3.fff2eccbb74be42p+0 : inexact-ok += exp10m1 downward binary128 0xb.2ee9p-4 : 0x3.fff2eccbb74be41d8bc5c653dd24p+0 : inexact-ok += exp10m1 tonearest binary128 0xb.2ee9p-4 : 0x3.fff2eccbb74be41d8bc5c653dd24p+0 : inexact-ok += exp10m1 towardzero binary128 0xb.2ee9p-4 : 0x3.fff2eccbb74be41d8bc5c653dd24p+0 : inexact-ok += exp10m1 upward binary128 0xb.2ee9p-4 : 0x3.fff2eccbb74be41d8bc5c653dd26p+0 : inexact-ok += exp10m1 downward ibm128 0xb.2ee9p-4 : 0x3.fff2eccbb74be41d8bc5c653ddp+0 : inexact-ok += exp10m1 tonearest ibm128 0xb.2ee9p-4 : 0x3.fff2eccbb74be41d8bc5c653ddp+0 : inexact-ok += exp10m1 towardzero ibm128 0xb.2ee9p-4 : 0x3.fff2eccbb74be41d8bc5c653ddp+0 : inexact-ok += exp10m1 upward ibm128 0xb.2ee9p-4 : 0x3.fff2eccbb74be41d8bc5c653dep+0 : inexact-ok += exp10m1 downward binary64 0xb.2ee9062818e98p-4 : 0x3.fff2f139c392ep+0 : inexact-ok += exp10m1 tonearest binary64 0xb.2ee9062818e98p-4 : 0x3.fff2f139c392ep+0 : inexact-ok += exp10m1 towardzero binary64 0xb.2ee9062818e98p-4 : 0x3.fff2f139c392ep+0 : inexact-ok += exp10m1 upward binary64 0xb.2ee9062818e98p-4 : 0x3.fff2f139c393p+0 : inexact-ok += exp10m1 downward intel96 0xb.2ee9062818e98p-4 : 0x3.fff2f139c392e0e8p+0 : inexact-ok += exp10m1 tonearest intel96 0xb.2ee9062818e98p-4 : 0x3.fff2f139c392e0e8p+0 : inexact-ok += exp10m1 towardzero intel96 0xb.2ee9062818e98p-4 : 0x3.fff2f139c392e0e8p+0 : inexact-ok += exp10m1 upward intel96 0xb.2ee9062818e98p-4 : 0x3.fff2f139c392e0ecp+0 : inexact-ok += exp10m1 downward m68k96 0xb.2ee9062818e98p-4 : 0x3.fff2f139c392e0e8p+0 : inexact-ok += exp10m1 tonearest m68k96 0xb.2ee9062818e98p-4 : 0x3.fff2f139c392e0e8p+0 : inexact-ok += exp10m1 towardzero m68k96 0xb.2ee9062818e98p-4 : 0x3.fff2f139c392e0e8p+0 : inexact-ok += exp10m1 upward m68k96 0xb.2ee9062818e98p-4 : 0x3.fff2f139c392e0ecp+0 : inexact-ok += exp10m1 downward binary128 0xb.2ee9062818e98p-4 : 0x3.fff2f139c392e0e9ea8fed841a26p+0 : inexact-ok += exp10m1 tonearest binary128 0xb.2ee9062818e98p-4 : 0x3.fff2f139c392e0e9ea8fed841a28p+0 : inexact-ok += exp10m1 towardzero binary128 0xb.2ee9062818e98p-4 : 0x3.fff2f139c392e0e9ea8fed841a26p+0 : inexact-ok += exp10m1 upward binary128 0xb.2ee9062818e98p-4 : 0x3.fff2f139c392e0e9ea8fed841a28p+0 : inexact-ok += exp10m1 downward ibm128 0xb.2ee9062818e98p-4 : 0x3.fff2f139c392e0e9ea8fed841ap+0 : inexact-ok += exp10m1 tonearest ibm128 0xb.2ee9062818e98p-4 : 0x3.fff2f139c392e0e9ea8fed841ap+0 : inexact-ok += exp10m1 towardzero ibm128 0xb.2ee9062818e98p-4 : 0x3.fff2f139c392e0e9ea8fed841ap+0 : inexact-ok += exp10m1 upward ibm128 0xb.2ee9062818e98p-4 : 0x3.fff2f139c392e0e9ea8fed841bp+0 : inexact-ok += exp10m1 downward binary64 0xb.2ee9062818e9p-4 : 0x3.fff2f139c3928p+0 : inexact-ok += exp10m1 tonearest binary64 0xb.2ee9062818e9p-4 : 0x3.fff2f139c3928p+0 : inexact-ok += exp10m1 towardzero binary64 0xb.2ee9062818e9p-4 : 0x3.fff2f139c3928p+0 : inexact-ok += exp10m1 upward binary64 0xb.2ee9062818e9p-4 : 0x3.fff2f139c392ap+0 : inexact-ok += exp10m1 downward intel96 0xb.2ee9062818e9p-4 : 0x3.fff2f139c39284dp+0 : inexact-ok += exp10m1 tonearest intel96 0xb.2ee9062818e9p-4 : 0x3.fff2f139c39284dp+0 : inexact-ok += exp10m1 towardzero intel96 0xb.2ee9062818e9p-4 : 0x3.fff2f139c39284dp+0 : inexact-ok += exp10m1 upward intel96 0xb.2ee9062818e9p-4 : 0x3.fff2f139c39284d4p+0 : inexact-ok += exp10m1 downward m68k96 0xb.2ee9062818e9p-4 : 0x3.fff2f139c39284dp+0 : inexact-ok += exp10m1 tonearest m68k96 0xb.2ee9062818e9p-4 : 0x3.fff2f139c39284dp+0 : inexact-ok += exp10m1 towardzero m68k96 0xb.2ee9062818e9p-4 : 0x3.fff2f139c39284dp+0 : inexact-ok += exp10m1 upward m68k96 0xb.2ee9062818e9p-4 : 0x3.fff2f139c39284d4p+0 : inexact-ok += exp10m1 downward binary128 0xb.2ee9062818e9p-4 : 0x3.fff2f139c39284d0626d90bfba14p+0 : inexact-ok += exp10m1 tonearest binary128 0xb.2ee9062818e9p-4 : 0x3.fff2f139c39284d0626d90bfba14p+0 : inexact-ok += exp10m1 towardzero binary128 0xb.2ee9062818e9p-4 : 0x3.fff2f139c39284d0626d90bfba14p+0 : inexact-ok += exp10m1 upward binary128 0xb.2ee9062818e9p-4 : 0x3.fff2f139c39284d0626d90bfba16p+0 : inexact-ok += exp10m1 downward ibm128 0xb.2ee9062818e9p-4 : 0x3.fff2f139c39284d0626d90bfbap+0 : inexact-ok += exp10m1 tonearest ibm128 0xb.2ee9062818e9p-4 : 0x3.fff2f139c39284d0626d90bfbap+0 : inexact-ok += exp10m1 towardzero ibm128 0xb.2ee9062818e9p-4 : 0x3.fff2f139c39284d0626d90bfbap+0 : inexact-ok += exp10m1 upward ibm128 0xb.2ee9062818e9p-4 : 0x3.fff2f139c39284d0626d90bfbbp+0 : inexact-ok += exp10m1 downward intel96 0xb.2ee9062818e91bp-4 : 0x3.fff2f139c392983cp+0 : inexact-ok += exp10m1 tonearest intel96 0xb.2ee9062818e91bp-4 : 0x3.fff2f139c392983cp+0 : inexact-ok += exp10m1 towardzero intel96 0xb.2ee9062818e91bp-4 : 0x3.fff2f139c392983cp+0 : inexact-ok += exp10m1 upward intel96 0xb.2ee9062818e91bp-4 : 0x3.fff2f139c392984p+0 : inexact-ok += exp10m1 downward m68k96 0xb.2ee9062818e91bp-4 : 0x3.fff2f139c392983cp+0 : inexact-ok += exp10m1 tonearest m68k96 0xb.2ee9062818e91bp-4 : 0x3.fff2f139c392983cp+0 : inexact-ok += exp10m1 towardzero m68k96 0xb.2ee9062818e91bp-4 : 0x3.fff2f139c392983cp+0 : inexact-ok += exp10m1 upward m68k96 0xb.2ee9062818e91bp-4 : 0x3.fff2f139c392984p+0 : inexact-ok += exp10m1 downward binary128 0xb.2ee9062818e91bp-4 : 0x3.fff2f139c392983dc524d05125cap+0 : inexact-ok += exp10m1 tonearest binary128 0xb.2ee9062818e91bp-4 : 0x3.fff2f139c392983dc524d05125ccp+0 : inexact-ok += exp10m1 towardzero binary128 0xb.2ee9062818e91bp-4 : 0x3.fff2f139c392983dc524d05125cap+0 : inexact-ok += exp10m1 upward binary128 0xb.2ee9062818e91bp-4 : 0x3.fff2f139c392983dc524d05125ccp+0 : inexact-ok += exp10m1 downward ibm128 0xb.2ee9062818e91bp-4 : 0x3.fff2f139c392983dc524d05125p+0 : inexact-ok += exp10m1 tonearest ibm128 0xb.2ee9062818e91bp-4 : 0x3.fff2f139c392983dc524d05126p+0 : inexact-ok += exp10m1 towardzero ibm128 0xb.2ee9062818e91bp-4 : 0x3.fff2f139c392983dc524d05125p+0 : inexact-ok += exp10m1 upward ibm128 0xb.2ee9062818e91bp-4 : 0x3.fff2f139c392983dc524d05126p+0 : inexact-ok += exp10m1 downward intel96 0xb.2ee9062818e91afp-4 : 0x3.fff2f139c392983p+0 : inexact-ok += exp10m1 tonearest intel96 0xb.2ee9062818e91afp-4 : 0x3.fff2f139c3929834p+0 : inexact-ok += exp10m1 towardzero intel96 0xb.2ee9062818e91afp-4 : 0x3.fff2f139c392983p+0 : inexact-ok += exp10m1 upward intel96 0xb.2ee9062818e91afp-4 : 0x3.fff2f139c3929834p+0 : inexact-ok += exp10m1 downward m68k96 0xb.2ee9062818e91afp-4 : 0x3.fff2f139c392983p+0 : inexact-ok += exp10m1 tonearest m68k96 0xb.2ee9062818e91afp-4 : 0x3.fff2f139c3929834p+0 : inexact-ok += exp10m1 towardzero m68k96 0xb.2ee9062818e91afp-4 : 0x3.fff2f139c392983p+0 : inexact-ok += exp10m1 upward m68k96 0xb.2ee9062818e91afp-4 : 0x3.fff2f139c3929834p+0 : inexact-ok += exp10m1 downward binary128 0xb.2ee9062818e91afp-4 : 0x3.fff2f139c392983241f3cc058d3ep+0 : inexact-ok += exp10m1 tonearest binary128 0xb.2ee9062818e91afp-4 : 0x3.fff2f139c392983241f3cc058d4p+0 : inexact-ok += exp10m1 towardzero binary128 0xb.2ee9062818e91afp-4 : 0x3.fff2f139c392983241f3cc058d3ep+0 : inexact-ok += exp10m1 upward binary128 0xb.2ee9062818e91afp-4 : 0x3.fff2f139c392983241f3cc058d4p+0 : inexact-ok += exp10m1 downward ibm128 0xb.2ee9062818e91afp-4 : 0x3.fff2f139c392983241f3cc058dp+0 : inexact-ok += exp10m1 tonearest ibm128 0xb.2ee9062818e91afp-4 : 0x3.fff2f139c392983241f3cc058dp+0 : inexact-ok += exp10m1 towardzero ibm128 0xb.2ee9062818e91afp-4 : 0x3.fff2f139c392983241f3cc058dp+0 : inexact-ok += exp10m1 upward ibm128 0xb.2ee9062818e91afp-4 : 0x3.fff2f139c392983241f3cc058ep+0 : inexact-ok += exp10m1 downward binary128 0xb.2ee9062818e91afe8e80fae1818p-4 : 0x3.fff2f139c392983cbb47d0da13f2p+0 : inexact-ok += exp10m1 tonearest binary128 0xb.2ee9062818e91afe8e80fae1818p-4 : 0x3.fff2f139c392983cbb47d0da13f2p+0 : inexact-ok += exp10m1 towardzero binary128 0xb.2ee9062818e91afe8e80fae1818p-4 : 0x3.fff2f139c392983cbb47d0da13f2p+0 : inexact-ok += exp10m1 upward binary128 0xb.2ee9062818e91afe8e80fae1818p-4 : 0x3.fff2f139c392983cbb47d0da13f4p+0 : inexact-ok += exp10m1 downward binary128 0xb.2ee9062818e91afe8e80fae184p-4 : 0x3.fff2f139c392983cbb47d0da15bep+0 : inexact-ok += exp10m1 tonearest binary128 0xb.2ee9062818e91afe8e80fae184p-4 : 0x3.fff2f139c392983cbb47d0da15bep+0 : inexact-ok += exp10m1 towardzero binary128 0xb.2ee9062818e91afe8e80fae184p-4 : 0x3.fff2f139c392983cbb47d0da15bep+0 : inexact-ok += exp10m1 upward binary128 0xb.2ee9062818e91afe8e80fae184p-4 : 0x3.fff2f139c392983cbb47d0da15cp+0 : inexact-ok += exp10m1 downward ibm128 0xb.2ee9062818e91afe8e80fae184p-4 : 0x3.fff2f139c392983cbb47d0da15p+0 : inexact-ok += exp10m1 tonearest ibm128 0xb.2ee9062818e91afe8e80fae184p-4 : 0x3.fff2f139c392983cbb47d0da16p+0 : inexact-ok += exp10m1 towardzero ibm128 0xb.2ee9062818e91afe8e80fae184p-4 : 0x3.fff2f139c392983cbb47d0da15p+0 : inexact-ok += exp10m1 upward ibm128 0xb.2ee9062818e91afe8e80fae184p-4 : 0x3.fff2f139c392983cbb47d0da16p+0 : inexact-ok += exp10m1 downward binary128 0xb.2ee9062818e91afe8e80fae18p-4 : 0x3.fff2f139c392983cbb47d0da12dep+0 : inexact-ok += exp10m1 tonearest binary128 0xb.2ee9062818e91afe8e80fae18p-4 : 0x3.fff2f139c392983cbb47d0da12dep+0 : inexact-ok += exp10m1 towardzero binary128 0xb.2ee9062818e91afe8e80fae18p-4 : 0x3.fff2f139c392983cbb47d0da12dep+0 : inexact-ok += exp10m1 upward binary128 0xb.2ee9062818e91afe8e80fae18p-4 : 0x3.fff2f139c392983cbb47d0da12ep+0 : inexact-ok += exp10m1 downward ibm128 0xb.2ee9062818e91afe8e80fae18p-4 : 0x3.fff2f139c392983cbb47d0da12p+0 : inexact-ok += exp10m1 tonearest ibm128 0xb.2ee9062818e91afe8e80fae18p-4 : 0x3.fff2f139c392983cbb47d0da13p+0 : inexact-ok += exp10m1 towardzero ibm128 0xb.2ee9062818e91afe8e80fae18p-4 : 0x3.fff2f139c392983cbb47d0da12p+0 : inexact-ok += exp10m1 upward ibm128 0xb.2ee9062818e91afe8e80fae18p-4 : 0x3.fff2f139c392983cbb47d0da13p+0 : inexact-ok +exp10m1 0xb.2e822db54f357c3f65ad743758bp-4 += exp10m1 downward binary32 0xb.2e823p-4 : 0x3.ffa8f4p+0 : inexact-ok += exp10m1 tonearest binary32 0xb.2e823p-4 : 0x3.ffa8f4p+0 : inexact-ok += exp10m1 towardzero binary32 0xb.2e823p-4 : 0x3.ffa8f4p+0 : inexact-ok += exp10m1 upward binary32 0xb.2e823p-4 : 0x3.ffa8f8p+0 : inexact-ok += exp10m1 downward binary64 0xb.2e823p-4 : 0x3.ffa8f4ed3c334p+0 : inexact-ok += exp10m1 tonearest binary64 0xb.2e823p-4 : 0x3.ffa8f4ed3c334p+0 : inexact-ok += exp10m1 towardzero binary64 0xb.2e823p-4 : 0x3.ffa8f4ed3c334p+0 : inexact-ok += exp10m1 upward binary64 0xb.2e823p-4 : 0x3.ffa8f4ed3c336p+0 : inexact-ok += exp10m1 downward intel96 0xb.2e823p-4 : 0x3.ffa8f4ed3c334e78p+0 : inexact-ok += exp10m1 tonearest intel96 0xb.2e823p-4 : 0x3.ffa8f4ed3c334e78p+0 : inexact-ok += exp10m1 towardzero intel96 0xb.2e823p-4 : 0x3.ffa8f4ed3c334e78p+0 : inexact-ok += exp10m1 upward intel96 0xb.2e823p-4 : 0x3.ffa8f4ed3c334e7cp+0 : inexact-ok += exp10m1 downward m68k96 0xb.2e823p-4 : 0x3.ffa8f4ed3c334e78p+0 : inexact-ok += exp10m1 tonearest m68k96 0xb.2e823p-4 : 0x3.ffa8f4ed3c334e78p+0 : inexact-ok += exp10m1 towardzero m68k96 0xb.2e823p-4 : 0x3.ffa8f4ed3c334e78p+0 : inexact-ok += exp10m1 upward m68k96 0xb.2e823p-4 : 0x3.ffa8f4ed3c334e7cp+0 : inexact-ok += exp10m1 downward binary128 0xb.2e823p-4 : 0x3.ffa8f4ed3c334e78107062758ad4p+0 : inexact-ok += exp10m1 tonearest binary128 0xb.2e823p-4 : 0x3.ffa8f4ed3c334e78107062758ad6p+0 : inexact-ok += exp10m1 towardzero binary128 0xb.2e823p-4 : 0x3.ffa8f4ed3c334e78107062758ad4p+0 : inexact-ok += exp10m1 upward binary128 0xb.2e823p-4 : 0x3.ffa8f4ed3c334e78107062758ad6p+0 : inexact-ok += exp10m1 downward ibm128 0xb.2e823p-4 : 0x3.ffa8f4ed3c334e78107062758ap+0 : inexact-ok += exp10m1 tonearest ibm128 0xb.2e823p-4 : 0x3.ffa8f4ed3c334e78107062758bp+0 : inexact-ok += exp10m1 towardzero ibm128 0xb.2e823p-4 : 0x3.ffa8f4ed3c334e78107062758ap+0 : inexact-ok += exp10m1 upward ibm128 0xb.2e823p-4 : 0x3.ffa8f4ed3c334e78107062758bp+0 : inexact-ok += exp10m1 downward binary32 0xb.2e822p-4 : 0x3.ffa8e8p+0 : inexact-ok += exp10m1 tonearest binary32 0xb.2e822p-4 : 0x3.ffa8e8p+0 : inexact-ok += exp10m1 towardzero binary32 0xb.2e822p-4 : 0x3.ffa8e8p+0 : inexact-ok += exp10m1 upward binary32 0xb.2e822p-4 : 0x3.ffa8ecp+0 : inexact-ok += exp10m1 downward binary64 0xb.2e822p-4 : 0x3.ffa8e96ab597ep+0 : inexact-ok += exp10m1 tonearest binary64 0xb.2e822p-4 : 0x3.ffa8e96ab597ep+0 : inexact-ok += exp10m1 towardzero binary64 0xb.2e822p-4 : 0x3.ffa8e96ab597ep+0 : inexact-ok += exp10m1 upward binary64 0xb.2e822p-4 : 0x3.ffa8e96ab598p+0 : inexact-ok += exp10m1 downward intel96 0xb.2e822p-4 : 0x3.ffa8e96ab597e994p+0 : inexact-ok += exp10m1 tonearest intel96 0xb.2e822p-4 : 0x3.ffa8e96ab597e994p+0 : inexact-ok += exp10m1 towardzero intel96 0xb.2e822p-4 : 0x3.ffa8e96ab597e994p+0 : inexact-ok += exp10m1 upward intel96 0xb.2e822p-4 : 0x3.ffa8e96ab597e998p+0 : inexact-ok += exp10m1 downward m68k96 0xb.2e822p-4 : 0x3.ffa8e96ab597e994p+0 : inexact-ok += exp10m1 tonearest m68k96 0xb.2e822p-4 : 0x3.ffa8e96ab597e994p+0 : inexact-ok += exp10m1 towardzero m68k96 0xb.2e822p-4 : 0x3.ffa8e96ab597e994p+0 : inexact-ok += exp10m1 upward m68k96 0xb.2e822p-4 : 0x3.ffa8e96ab597e998p+0 : inexact-ok += exp10m1 downward binary128 0xb.2e822p-4 : 0x3.ffa8e96ab597e995f46a62a480acp+0 : inexact-ok += exp10m1 tonearest binary128 0xb.2e822p-4 : 0x3.ffa8e96ab597e995f46a62a480acp+0 : inexact-ok += exp10m1 towardzero binary128 0xb.2e822p-4 : 0x3.ffa8e96ab597e995f46a62a480acp+0 : inexact-ok += exp10m1 upward binary128 0xb.2e822p-4 : 0x3.ffa8e96ab597e995f46a62a480aep+0 : inexact-ok += exp10m1 downward ibm128 0xb.2e822p-4 : 0x3.ffa8e96ab597e995f46a62a48p+0 : inexact-ok += exp10m1 tonearest ibm128 0xb.2e822p-4 : 0x3.ffa8e96ab597e995f46a62a481p+0 : inexact-ok += exp10m1 towardzero ibm128 0xb.2e822p-4 : 0x3.ffa8e96ab597e995f46a62a48p+0 : inexact-ok += exp10m1 upward ibm128 0xb.2e822p-4 : 0x3.ffa8e96ab597e995f46a62a481p+0 : inexact-ok += exp10m1 downward binary64 0xb.2e822db54f358p-4 : 0x3.ffa8f34730822p+0 : inexact-ok += exp10m1 tonearest binary64 0xb.2e822db54f358p-4 : 0x3.ffa8f34730824p+0 : inexact-ok += exp10m1 towardzero binary64 0xb.2e822db54f358p-4 : 0x3.ffa8f34730822p+0 : inexact-ok += exp10m1 upward binary64 0xb.2e822db54f358p-4 : 0x3.ffa8f34730824p+0 : inexact-ok += exp10m1 downward intel96 0xb.2e822db54f358p-4 : 0x3.ffa8f34730823e34p+0 : inexact-ok += exp10m1 tonearest intel96 0xb.2e822db54f358p-4 : 0x3.ffa8f34730823e38p+0 : inexact-ok += exp10m1 towardzero intel96 0xb.2e822db54f358p-4 : 0x3.ffa8f34730823e34p+0 : inexact-ok += exp10m1 upward intel96 0xb.2e822db54f358p-4 : 0x3.ffa8f34730823e38p+0 : inexact-ok += exp10m1 downward m68k96 0xb.2e822db54f358p-4 : 0x3.ffa8f34730823e34p+0 : inexact-ok += exp10m1 tonearest m68k96 0xb.2e822db54f358p-4 : 0x3.ffa8f34730823e38p+0 : inexact-ok += exp10m1 towardzero m68k96 0xb.2e822db54f358p-4 : 0x3.ffa8f34730823e34p+0 : inexact-ok += exp10m1 upward m68k96 0xb.2e822db54f358p-4 : 0x3.ffa8f34730823e38p+0 : inexact-ok += exp10m1 downward binary128 0xb.2e822db54f358p-4 : 0x3.ffa8f34730823e375b2f6757b778p+0 : inexact-ok += exp10m1 tonearest binary128 0xb.2e822db54f358p-4 : 0x3.ffa8f34730823e375b2f6757b778p+0 : inexact-ok += exp10m1 towardzero binary128 0xb.2e822db54f358p-4 : 0x3.ffa8f34730823e375b2f6757b778p+0 : inexact-ok += exp10m1 upward binary128 0xb.2e822db54f358p-4 : 0x3.ffa8f34730823e375b2f6757b77ap+0 : inexact-ok += exp10m1 downward ibm128 0xb.2e822db54f358p-4 : 0x3.ffa8f34730823e375b2f6757b7p+0 : inexact-ok += exp10m1 tonearest ibm128 0xb.2e822db54f358p-4 : 0x3.ffa8f34730823e375b2f6757b7p+0 : inexact-ok += exp10m1 towardzero ibm128 0xb.2e822db54f358p-4 : 0x3.ffa8f34730823e375b2f6757b7p+0 : inexact-ok += exp10m1 upward ibm128 0xb.2e822db54f358p-4 : 0x3.ffa8f34730823e375b2f6757b8p+0 : inexact-ok += exp10m1 downward binary64 0xb.2e822db54f35p-4 : 0x3.ffa8f3473081ep+0 : inexact-ok += exp10m1 tonearest binary64 0xb.2e822db54f35p-4 : 0x3.ffa8f3473081ep+0 : inexact-ok += exp10m1 towardzero binary64 0xb.2e822db54f35p-4 : 0x3.ffa8f3473081ep+0 : inexact-ok += exp10m1 upward binary64 0xb.2e822db54f35p-4 : 0x3.ffa8f3473082p+0 : inexact-ok += exp10m1 downward intel96 0xb.2e822db54f35p-4 : 0x3.ffa8f3473081e22p+0 : inexact-ok += exp10m1 tonearest intel96 0xb.2e822db54f35p-4 : 0x3.ffa8f3473081e224p+0 : inexact-ok += exp10m1 towardzero intel96 0xb.2e822db54f35p-4 : 0x3.ffa8f3473081e22p+0 : inexact-ok += exp10m1 upward intel96 0xb.2e822db54f35p-4 : 0x3.ffa8f3473081e224p+0 : inexact-ok += exp10m1 downward m68k96 0xb.2e822db54f35p-4 : 0x3.ffa8f3473081e22p+0 : inexact-ok += exp10m1 tonearest m68k96 0xb.2e822db54f35p-4 : 0x3.ffa8f3473081e224p+0 : inexact-ok += exp10m1 towardzero m68k96 0xb.2e822db54f35p-4 : 0x3.ffa8f3473081e22p+0 : inexact-ok += exp10m1 upward m68k96 0xb.2e822db54f35p-4 : 0x3.ffa8f3473081e224p+0 : inexact-ok += exp10m1 downward binary128 0xb.2e822db54f35p-4 : 0x3.ffa8f3473081e22326089c239bccp+0 : inexact-ok += exp10m1 tonearest binary128 0xb.2e822db54f35p-4 : 0x3.ffa8f3473081e22326089c239bcep+0 : inexact-ok += exp10m1 towardzero binary128 0xb.2e822db54f35p-4 : 0x3.ffa8f3473081e22326089c239bccp+0 : inexact-ok += exp10m1 upward binary128 0xb.2e822db54f35p-4 : 0x3.ffa8f3473081e22326089c239bcep+0 : inexact-ok += exp10m1 downward ibm128 0xb.2e822db54f35p-4 : 0x3.ffa8f3473081e22326089c239bp+0 : inexact-ok += exp10m1 tonearest ibm128 0xb.2e822db54f35p-4 : 0x3.ffa8f3473081e22326089c239cp+0 : inexact-ok += exp10m1 towardzero ibm128 0xb.2e822db54f35p-4 : 0x3.ffa8f3473081e22326089c239bp+0 : inexact-ok += exp10m1 upward ibm128 0xb.2e822db54f35p-4 : 0x3.ffa8f3473081e22326089c239cp+0 : inexact-ok += exp10m1 downward intel96 0xb.2e822db54f357c4p-4 : 0x3.ffa8f34730823b84p+0 : inexact-ok += exp10m1 tonearest intel96 0xb.2e822db54f357c4p-4 : 0x3.ffa8f34730823b84p+0 : inexact-ok += exp10m1 towardzero intel96 0xb.2e822db54f357c4p-4 : 0x3.ffa8f34730823b84p+0 : inexact-ok += exp10m1 upward intel96 0xb.2e822db54f357c4p-4 : 0x3.ffa8f34730823b88p+0 : inexact-ok += exp10m1 downward m68k96 0xb.2e822db54f357c4p-4 : 0x3.ffa8f34730823b84p+0 : inexact-ok += exp10m1 tonearest m68k96 0xb.2e822db54f357c4p-4 : 0x3.ffa8f34730823b84p+0 : inexact-ok += exp10m1 towardzero m68k96 0xb.2e822db54f357c4p-4 : 0x3.ffa8f34730823b84p+0 : inexact-ok += exp10m1 upward m68k96 0xb.2e822db54f357c4p-4 : 0x3.ffa8f34730823b88p+0 : inexact-ok += exp10m1 downward binary128 0xb.2e822db54f357c4p-4 : 0x3.ffa8f34730823b84c3a0c463b09p+0 : inexact-ok += exp10m1 tonearest binary128 0xb.2e822db54f357c4p-4 : 0x3.ffa8f34730823b84c3a0c463b09p+0 : inexact-ok += exp10m1 towardzero binary128 0xb.2e822db54f357c4p-4 : 0x3.ffa8f34730823b84c3a0c463b09p+0 : inexact-ok += exp10m1 upward binary128 0xb.2e822db54f357c4p-4 : 0x3.ffa8f34730823b84c3a0c463b092p+0 : inexact-ok += exp10m1 downward ibm128 0xb.2e822db54f357c4p-4 : 0x3.ffa8f34730823b84c3a0c463bp+0 : inexact-ok += exp10m1 tonearest ibm128 0xb.2e822db54f357c4p-4 : 0x3.ffa8f34730823b84c3a0c463b1p+0 : inexact-ok += exp10m1 towardzero ibm128 0xb.2e822db54f357c4p-4 : 0x3.ffa8f34730823b84c3a0c463bp+0 : inexact-ok += exp10m1 upward ibm128 0xb.2e822db54f357c4p-4 : 0x3.ffa8f34730823b84c3a0c463b1p+0 : inexact-ok += exp10m1 downward intel96 0xb.2e822db54f357c3p-4 : 0x3.ffa8f34730823b78p+0 : inexact-ok += exp10m1 tonearest intel96 0xb.2e822db54f357c3p-4 : 0x3.ffa8f34730823b78p+0 : inexact-ok += exp10m1 towardzero intel96 0xb.2e822db54f357c3p-4 : 0x3.ffa8f34730823b78p+0 : inexact-ok += exp10m1 upward intel96 0xb.2e822db54f357c3p-4 : 0x3.ffa8f34730823b7cp+0 : inexact-ok += exp10m1 downward m68k96 0xb.2e822db54f357c3p-4 : 0x3.ffa8f34730823b78p+0 : inexact-ok += exp10m1 tonearest m68k96 0xb.2e822db54f357c3p-4 : 0x3.ffa8f34730823b78p+0 : inexact-ok += exp10m1 towardzero m68k96 0xb.2e822db54f357c3p-4 : 0x3.ffa8f34730823b78p+0 : inexact-ok += exp10m1 upward m68k96 0xb.2e822db54f357c3p-4 : 0x3.ffa8f34730823b7cp+0 : inexact-ok += exp10m1 downward binary128 0xb.2e822db54f357c3p-4 : 0x3.ffa8f34730823b79411a1f8a4a0cp+0 : inexact-ok += exp10m1 tonearest binary128 0xb.2e822db54f357c3p-4 : 0x3.ffa8f34730823b79411a1f8a4a0ep+0 : inexact-ok += exp10m1 towardzero binary128 0xb.2e822db54f357c3p-4 : 0x3.ffa8f34730823b79411a1f8a4a0cp+0 : inexact-ok += exp10m1 upward binary128 0xb.2e822db54f357c3p-4 : 0x3.ffa8f34730823b79411a1f8a4a0ep+0 : inexact-ok += exp10m1 downward ibm128 0xb.2e822db54f357c3p-4 : 0x3.ffa8f34730823b79411a1f8a4ap+0 : inexact-ok += exp10m1 tonearest ibm128 0xb.2e822db54f357c3p-4 : 0x3.ffa8f34730823b79411a1f8a4ap+0 : inexact-ok += exp10m1 towardzero ibm128 0xb.2e822db54f357c3p-4 : 0x3.ffa8f34730823b79411a1f8a4ap+0 : inexact-ok += exp10m1 upward ibm128 0xb.2e822db54f357c3p-4 : 0x3.ffa8f34730823b79411a1f8a4bp+0 : inexact-ok += exp10m1 downward binary128 0xb.2e822db54f357c3f65ad743758bp-4 : 0x3.ffa8f34730823b84549d12f0ad94p+0 : inexact-ok += exp10m1 tonearest binary128 0xb.2e822db54f357c3f65ad743758bp-4 : 0x3.ffa8f34730823b84549d12f0ad94p+0 : inexact-ok += exp10m1 towardzero binary128 0xb.2e822db54f357c3f65ad743758bp-4 : 0x3.ffa8f34730823b84549d12f0ad94p+0 : inexact-ok += exp10m1 upward binary128 0xb.2e822db54f357c3f65ad743758bp-4 : 0x3.ffa8f34730823b84549d12f0ad96p+0 : inexact-ok += exp10m1 downward binary128 0xb.2e822db54f357c3f65ad74375cp-4 : 0x3.ffa8f34730823b84549d12f0aff6p+0 : inexact-ok += exp10m1 tonearest binary128 0xb.2e822db54f357c3f65ad74375cp-4 : 0x3.ffa8f34730823b84549d12f0aff8p+0 : inexact-ok += exp10m1 towardzero binary128 0xb.2e822db54f357c3f65ad74375cp-4 : 0x3.ffa8f34730823b84549d12f0aff6p+0 : inexact-ok += exp10m1 upward binary128 0xb.2e822db54f357c3f65ad74375cp-4 : 0x3.ffa8f34730823b84549d12f0aff8p+0 : inexact-ok += exp10m1 downward ibm128 0xb.2e822db54f357c3f65ad74375cp-4 : 0x3.ffa8f34730823b84549d12f0afp+0 : inexact-ok += exp10m1 tonearest ibm128 0xb.2e822db54f357c3f65ad74375cp-4 : 0x3.ffa8f34730823b84549d12f0bp+0 : inexact-ok += exp10m1 towardzero ibm128 0xb.2e822db54f357c3f65ad74375cp-4 : 0x3.ffa8f34730823b84549d12f0afp+0 : inexact-ok += exp10m1 upward ibm128 0xb.2e822db54f357c3f65ad74375cp-4 : 0x3.ffa8f34730823b84549d12f0bp+0 : inexact-ok += exp10m1 downward binary128 0xb.2e822db54f357c3f65ad743758p-4 : 0x3.ffa8f34730823b84549d12f0ad16p+0 : inexact-ok += exp10m1 tonearest binary128 0xb.2e822db54f357c3f65ad743758p-4 : 0x3.ffa8f34730823b84549d12f0ad16p+0 : inexact-ok += exp10m1 towardzero binary128 0xb.2e822db54f357c3f65ad743758p-4 : 0x3.ffa8f34730823b84549d12f0ad16p+0 : inexact-ok += exp10m1 upward binary128 0xb.2e822db54f357c3f65ad743758p-4 : 0x3.ffa8f34730823b84549d12f0ad18p+0 : inexact-ok += exp10m1 downward ibm128 0xb.2e822db54f357c3f65ad743758p-4 : 0x3.ffa8f34730823b84549d12f0adp+0 : inexact-ok += exp10m1 tonearest ibm128 0xb.2e822db54f357c3f65ad743758p-4 : 0x3.ffa8f34730823b84549d12f0adp+0 : inexact-ok += exp10m1 towardzero ibm128 0xb.2e822db54f357c3f65ad743758p-4 : 0x3.ffa8f34730823b84549d12f0adp+0 : inexact-ok += exp10m1 upward ibm128 0xb.2e822db54f357c3f65ad743758p-4 : 0x3.ffa8f34730823b84549d12f0aep+0 : inexact-ok +exp10m1 0xb.2edd92a794cbc6f81f5f4f82c14p-4 += exp10m1 downward binary32 0xb.2eddap-4 : 0x3.ffeabcp+0 : inexact-ok += exp10m1 tonearest binary32 0xb.2eddap-4 : 0x3.ffeabcp+0 : inexact-ok += exp10m1 towardzero binary32 0xb.2eddap-4 : 0x3.ffeabcp+0 : inexact-ok += exp10m1 upward binary32 0xb.2eddap-4 : 0x3.ffeacp+0 : inexact-ok += exp10m1 downward binary64 0xb.2eddap-4 : 0x3.ffeabd8d98738p+0 : inexact-ok += exp10m1 tonearest binary64 0xb.2eddap-4 : 0x3.ffeabd8d9873ap+0 : inexact-ok += exp10m1 towardzero binary64 0xb.2eddap-4 : 0x3.ffeabd8d98738p+0 : inexact-ok += exp10m1 upward binary64 0xb.2eddap-4 : 0x3.ffeabd8d9873ap+0 : inexact-ok += exp10m1 downward intel96 0xb.2eddap-4 : 0x3.ffeabd8d987395c8p+0 : inexact-ok += exp10m1 tonearest intel96 0xb.2eddap-4 : 0x3.ffeabd8d987395ccp+0 : inexact-ok += exp10m1 towardzero intel96 0xb.2eddap-4 : 0x3.ffeabd8d987395c8p+0 : inexact-ok += exp10m1 upward intel96 0xb.2eddap-4 : 0x3.ffeabd8d987395ccp+0 : inexact-ok += exp10m1 downward m68k96 0xb.2eddap-4 : 0x3.ffeabd8d987395c8p+0 : inexact-ok += exp10m1 tonearest m68k96 0xb.2eddap-4 : 0x3.ffeabd8d987395ccp+0 : inexact-ok += exp10m1 towardzero m68k96 0xb.2eddap-4 : 0x3.ffeabd8d987395c8p+0 : inexact-ok += exp10m1 upward m68k96 0xb.2eddap-4 : 0x3.ffeabd8d987395ccp+0 : inexact-ok += exp10m1 downward binary128 0xb.2eddap-4 : 0x3.ffeabd8d987395cacb6d649ed616p+0 : inexact-ok += exp10m1 tonearest binary128 0xb.2eddap-4 : 0x3.ffeabd8d987395cacb6d649ed616p+0 : inexact-ok += exp10m1 towardzero binary128 0xb.2eddap-4 : 0x3.ffeabd8d987395cacb6d649ed616p+0 : inexact-ok += exp10m1 upward binary128 0xb.2eddap-4 : 0x3.ffeabd8d987395cacb6d649ed618p+0 : inexact-ok += exp10m1 downward ibm128 0xb.2eddap-4 : 0x3.ffeabd8d987395cacb6d649ed6p+0 : inexact-ok += exp10m1 tonearest ibm128 0xb.2eddap-4 : 0x3.ffeabd8d987395cacb6d649ed6p+0 : inexact-ok += exp10m1 towardzero ibm128 0xb.2eddap-4 : 0x3.ffeabd8d987395cacb6d649ed6p+0 : inexact-ok += exp10m1 upward ibm128 0xb.2eddap-4 : 0x3.ffeabd8d987395cacb6d649ed7p+0 : inexact-ok += exp10m1 downward binary32 0xb.2edd9p-4 : 0x3.ffeabp+0 : inexact-ok += exp10m1 tonearest binary32 0xb.2edd9p-4 : 0x3.ffeab4p+0 : inexact-ok += exp10m1 towardzero binary32 0xb.2edd9p-4 : 0x3.ffeabp+0 : inexact-ok += exp10m1 upward binary32 0xb.2edd9p-4 : 0x3.ffeab4p+0 : inexact-ok += exp10m1 downward binary64 0xb.2edd9p-4 : 0x3.ffeab20a7a5f2p+0 : inexact-ok += exp10m1 tonearest binary64 0xb.2edd9p-4 : 0x3.ffeab20a7a5f4p+0 : inexact-ok += exp10m1 towardzero binary64 0xb.2edd9p-4 : 0x3.ffeab20a7a5f2p+0 : inexact-ok += exp10m1 upward binary64 0xb.2edd9p-4 : 0x3.ffeab20a7a5f4p+0 : inexact-ok += exp10m1 downward intel96 0xb.2edd9p-4 : 0x3.ffeab20a7a5f37e8p+0 : inexact-ok += exp10m1 tonearest intel96 0xb.2edd9p-4 : 0x3.ffeab20a7a5f37e8p+0 : inexact-ok += exp10m1 towardzero intel96 0xb.2edd9p-4 : 0x3.ffeab20a7a5f37e8p+0 : inexact-ok += exp10m1 upward intel96 0xb.2edd9p-4 : 0x3.ffeab20a7a5f37ecp+0 : inexact-ok += exp10m1 downward m68k96 0xb.2edd9p-4 : 0x3.ffeab20a7a5f37e8p+0 : inexact-ok += exp10m1 tonearest m68k96 0xb.2edd9p-4 : 0x3.ffeab20a7a5f37e8p+0 : inexact-ok += exp10m1 towardzero m68k96 0xb.2edd9p-4 : 0x3.ffeab20a7a5f37e8p+0 : inexact-ok += exp10m1 upward m68k96 0xb.2edd9p-4 : 0x3.ffeab20a7a5f37ecp+0 : inexact-ok += exp10m1 downward binary128 0xb.2edd9p-4 : 0x3.ffeab20a7a5f37e84fdae554036ep+0 : inexact-ok += exp10m1 tonearest binary128 0xb.2edd9p-4 : 0x3.ffeab20a7a5f37e84fdae554037p+0 : inexact-ok += exp10m1 towardzero binary128 0xb.2edd9p-4 : 0x3.ffeab20a7a5f37e84fdae554036ep+0 : inexact-ok += exp10m1 upward binary128 0xb.2edd9p-4 : 0x3.ffeab20a7a5f37e84fdae554037p+0 : inexact-ok += exp10m1 downward ibm128 0xb.2edd9p-4 : 0x3.ffeab20a7a5f37e84fdae55403p+0 : inexact-ok += exp10m1 tonearest ibm128 0xb.2edd9p-4 : 0x3.ffeab20a7a5f37e84fdae55403p+0 : inexact-ok += exp10m1 towardzero ibm128 0xb.2edd9p-4 : 0x3.ffeab20a7a5f37e84fdae55403p+0 : inexact-ok += exp10m1 upward ibm128 0xb.2edd9p-4 : 0x3.ffeab20a7a5f37e84fdae55404p+0 : inexact-ok += exp10m1 downward binary64 0xb.2edd92a794ccp-4 : 0x3.ffeab3f371b98p+0 : inexact-ok += exp10m1 tonearest binary64 0xb.2edd92a794ccp-4 : 0x3.ffeab3f371b98p+0 : inexact-ok += exp10m1 towardzero binary64 0xb.2edd92a794ccp-4 : 0x3.ffeab3f371b98p+0 : inexact-ok += exp10m1 upward binary64 0xb.2edd92a794ccp-4 : 0x3.ffeab3f371b9ap+0 : inexact-ok += exp10m1 downward intel96 0xb.2edd92a794ccp-4 : 0x3.ffeab3f371b980a8p+0 : inexact-ok += exp10m1 tonearest intel96 0xb.2edd92a794ccp-4 : 0x3.ffeab3f371b980a8p+0 : inexact-ok += exp10m1 towardzero intel96 0xb.2edd92a794ccp-4 : 0x3.ffeab3f371b980a8p+0 : inexact-ok += exp10m1 upward intel96 0xb.2edd92a794ccp-4 : 0x3.ffeab3f371b980acp+0 : inexact-ok += exp10m1 downward m68k96 0xb.2edd92a794ccp-4 : 0x3.ffeab3f371b980a8p+0 : inexact-ok += exp10m1 tonearest m68k96 0xb.2edd92a794ccp-4 : 0x3.ffeab3f371b980a8p+0 : inexact-ok += exp10m1 towardzero m68k96 0xb.2edd92a794ccp-4 : 0x3.ffeab3f371b980a8p+0 : inexact-ok += exp10m1 upward m68k96 0xb.2edd92a794ccp-4 : 0x3.ffeab3f371b980acp+0 : inexact-ok += exp10m1 downward binary128 0xb.2edd92a794ccp-4 : 0x3.ffeab3f371b980a95883ac4e410ep+0 : inexact-ok += exp10m1 tonearest binary128 0xb.2edd92a794ccp-4 : 0x3.ffeab3f371b980a95883ac4e410ep+0 : inexact-ok += exp10m1 towardzero binary128 0xb.2edd92a794ccp-4 : 0x3.ffeab3f371b980a95883ac4e410ep+0 : inexact-ok += exp10m1 upward binary128 0xb.2edd92a794ccp-4 : 0x3.ffeab3f371b980a95883ac4e411p+0 : inexact-ok += exp10m1 downward ibm128 0xb.2edd92a794ccp-4 : 0x3.ffeab3f371b980a95883ac4e41p+0 : inexact-ok += exp10m1 tonearest ibm128 0xb.2edd92a794ccp-4 : 0x3.ffeab3f371b980a95883ac4e41p+0 : inexact-ok += exp10m1 towardzero ibm128 0xb.2edd92a794ccp-4 : 0x3.ffeab3f371b980a95883ac4e41p+0 : inexact-ok += exp10m1 upward ibm128 0xb.2edd92a794ccp-4 : 0x3.ffeab3f371b980a95883ac4e42p+0 : inexact-ok += exp10m1 downward binary64 0xb.2edd92a794cb8p-4 : 0x3.ffeab3f371b92p+0 : inexact-ok += exp10m1 tonearest binary64 0xb.2edd92a794cb8p-4 : 0x3.ffeab3f371b92p+0 : inexact-ok += exp10m1 towardzero binary64 0xb.2edd92a794cb8p-4 : 0x3.ffeab3f371b92p+0 : inexact-ok += exp10m1 upward binary64 0xb.2edd92a794cb8p-4 : 0x3.ffeab3f371b94p+0 : inexact-ok += exp10m1 downward intel96 0xb.2edd92a794cb8p-4 : 0x3.ffeab3f371b9249p+0 : inexact-ok += exp10m1 tonearest intel96 0xb.2edd92a794cb8p-4 : 0x3.ffeab3f371b9249p+0 : inexact-ok += exp10m1 towardzero intel96 0xb.2edd92a794cb8p-4 : 0x3.ffeab3f371b9249p+0 : inexact-ok += exp10m1 upward intel96 0xb.2edd92a794cb8p-4 : 0x3.ffeab3f371b92494p+0 : inexact-ok += exp10m1 downward m68k96 0xb.2edd92a794cb8p-4 : 0x3.ffeab3f371b9249p+0 : inexact-ok += exp10m1 tonearest m68k96 0xb.2edd92a794cb8p-4 : 0x3.ffeab3f371b9249p+0 : inexact-ok += exp10m1 towardzero m68k96 0xb.2edd92a794cb8p-4 : 0x3.ffeab3f371b9249p+0 : inexact-ok += exp10m1 upward m68k96 0xb.2edd92a794cb8p-4 : 0x3.ffeab3f371b92494p+0 : inexact-ok += exp10m1 downward binary128 0xb.2edd92a794cb8p-4 : 0x3.ffeab3f371b9249068279617969ep+0 : inexact-ok += exp10m1 tonearest binary128 0xb.2edd92a794cb8p-4 : 0x3.ffeab3f371b924906827961796ap+0 : inexact-ok += exp10m1 towardzero binary128 0xb.2edd92a794cb8p-4 : 0x3.ffeab3f371b9249068279617969ep+0 : inexact-ok += exp10m1 upward binary128 0xb.2edd92a794cb8p-4 : 0x3.ffeab3f371b924906827961796ap+0 : inexact-ok += exp10m1 downward ibm128 0xb.2edd92a794cb8p-4 : 0x3.ffeab3f371b924906827961796p+0 : inexact-ok += exp10m1 tonearest ibm128 0xb.2edd92a794cb8p-4 : 0x3.ffeab3f371b924906827961797p+0 : inexact-ok += exp10m1 towardzero ibm128 0xb.2edd92a794cb8p-4 : 0x3.ffeab3f371b924906827961796p+0 : inexact-ok += exp10m1 upward ibm128 0xb.2edd92a794cb8p-4 : 0x3.ffeab3f371b924906827961797p+0 : inexact-ok += exp10m1 downward intel96 0xb.2edd92a794cbc7p-4 : 0x3.ffeab3f371b957a4p+0 : inexact-ok += exp10m1 tonearest intel96 0xb.2edd92a794cbc7p-4 : 0x3.ffeab3f371b957a8p+0 : inexact-ok += exp10m1 towardzero intel96 0xb.2edd92a794cbc7p-4 : 0x3.ffeab3f371b957a4p+0 : inexact-ok += exp10m1 upward intel96 0xb.2edd92a794cbc7p-4 : 0x3.ffeab3f371b957a8p+0 : inexact-ok += exp10m1 downward m68k96 0xb.2edd92a794cbc7p-4 : 0x3.ffeab3f371b957a4p+0 : inexact-ok += exp10m1 tonearest m68k96 0xb.2edd92a794cbc7p-4 : 0x3.ffeab3f371b957a8p+0 : inexact-ok += exp10m1 towardzero m68k96 0xb.2edd92a794cbc7p-4 : 0x3.ffeab3f371b957a4p+0 : inexact-ok += exp10m1 upward m68k96 0xb.2edd92a794cbc7p-4 : 0x3.ffeab3f371b957a8p+0 : inexact-ok += exp10m1 downward binary128 0xb.2edd92a794cbc7p-4 : 0x3.ffeab3f371b957a63d7aaa69e856p+0 : inexact-ok += exp10m1 tonearest binary128 0xb.2edd92a794cbc7p-4 : 0x3.ffeab3f371b957a63d7aaa69e858p+0 : inexact-ok += exp10m1 towardzero binary128 0xb.2edd92a794cbc7p-4 : 0x3.ffeab3f371b957a63d7aaa69e856p+0 : inexact-ok += exp10m1 upward binary128 0xb.2edd92a794cbc7p-4 : 0x3.ffeab3f371b957a63d7aaa69e858p+0 : inexact-ok += exp10m1 downward ibm128 0xb.2edd92a794cbc7p-4 : 0x3.ffeab3f371b957a63d7aaa69e8p+0 : inexact-ok += exp10m1 tonearest ibm128 0xb.2edd92a794cbc7p-4 : 0x3.ffeab3f371b957a63d7aaa69e8p+0 : inexact-ok += exp10m1 towardzero ibm128 0xb.2edd92a794cbc7p-4 : 0x3.ffeab3f371b957a63d7aaa69e8p+0 : inexact-ok += exp10m1 upward ibm128 0xb.2edd92a794cbc7p-4 : 0x3.ffeab3f371b957a63d7aaa69e9p+0 : inexact-ok += exp10m1 downward intel96 0xb.2edd92a794cbc6fp-4 : 0x3.ffeab3f371b95798p+0 : inexact-ok += exp10m1 tonearest intel96 0xb.2edd92a794cbc6fp-4 : 0x3.ffeab3f371b9579cp+0 : inexact-ok += exp10m1 towardzero intel96 0xb.2edd92a794cbc6fp-4 : 0x3.ffeab3f371b95798p+0 : inexact-ok += exp10m1 upward intel96 0xb.2edd92a794cbc6fp-4 : 0x3.ffeab3f371b9579cp+0 : inexact-ok += exp10m1 downward m68k96 0xb.2edd92a794cbc6fp-4 : 0x3.ffeab3f371b95798p+0 : inexact-ok += exp10m1 tonearest m68k96 0xb.2edd92a794cbc6fp-4 : 0x3.ffeab3f371b9579cp+0 : inexact-ok += exp10m1 towardzero m68k96 0xb.2edd92a794cbc6fp-4 : 0x3.ffeab3f371b95798p+0 : inexact-ok += exp10m1 upward m68k96 0xb.2edd92a794cbc6fp-4 : 0x3.ffeab3f371b9579cp+0 : inexact-ok += exp10m1 downward binary128 0xb.2edd92a794cbc6fp-4 : 0x3.ffeab3f371b9579aba5c9ee7218p+0 : inexact-ok += exp10m1 tonearest binary128 0xb.2edd92a794cbc6fp-4 : 0x3.ffeab3f371b9579aba5c9ee72182p+0 : inexact-ok += exp10m1 towardzero binary128 0xb.2edd92a794cbc6fp-4 : 0x3.ffeab3f371b9579aba5c9ee7218p+0 : inexact-ok += exp10m1 upward binary128 0xb.2edd92a794cbc6fp-4 : 0x3.ffeab3f371b9579aba5c9ee72182p+0 : inexact-ok += exp10m1 downward ibm128 0xb.2edd92a794cbc6fp-4 : 0x3.ffeab3f371b9579aba5c9ee721p+0 : inexact-ok += exp10m1 tonearest ibm128 0xb.2edd92a794cbc6fp-4 : 0x3.ffeab3f371b9579aba5c9ee722p+0 : inexact-ok += exp10m1 towardzero ibm128 0xb.2edd92a794cbc6fp-4 : 0x3.ffeab3f371b9579aba5c9ee721p+0 : inexact-ok += exp10m1 upward ibm128 0xb.2edd92a794cbc6fp-4 : 0x3.ffeab3f371b9579aba5c9ee722p+0 : inexact-ok += exp10m1 downward binary128 0xb.2edd92a794cbc6f81f5f4f82c14p-4 : 0x3.ffeab3f371b957a0927e4296af5ep+0 : inexact-ok += exp10m1 tonearest binary128 0xb.2edd92a794cbc6f81f5f4f82c14p-4 : 0x3.ffeab3f371b957a0927e4296af6p+0 : inexact-ok += exp10m1 towardzero binary128 0xb.2edd92a794cbc6f81f5f4f82c14p-4 : 0x3.ffeab3f371b957a0927e4296af5ep+0 : inexact-ok += exp10m1 upward binary128 0xb.2edd92a794cbc6f81f5f4f82c14p-4 : 0x3.ffeab3f371b957a0927e4296af6p+0 : inexact-ok += exp10m1 downward binary128 0xb.2edd92a794cbc6f81f5f4f82c4p-4 : 0x3.ffeab3f371b957a0927e4296b158p+0 : inexact-ok += exp10m1 tonearest binary128 0xb.2edd92a794cbc6f81f5f4f82c4p-4 : 0x3.ffeab3f371b957a0927e4296b15ap+0 : inexact-ok += exp10m1 towardzero binary128 0xb.2edd92a794cbc6f81f5f4f82c4p-4 : 0x3.ffeab3f371b957a0927e4296b158p+0 : inexact-ok += exp10m1 upward binary128 0xb.2edd92a794cbc6f81f5f4f82c4p-4 : 0x3.ffeab3f371b957a0927e4296b15ap+0 : inexact-ok += exp10m1 downward ibm128 0xb.2edd92a794cbc6f81f5f4f82c4p-4 : 0x3.ffeab3f371b957a0927e4296b1p+0 : inexact-ok += exp10m1 tonearest ibm128 0xb.2edd92a794cbc6f81f5f4f82c4p-4 : 0x3.ffeab3f371b957a0927e4296b1p+0 : inexact-ok += exp10m1 towardzero ibm128 0xb.2edd92a794cbc6f81f5f4f82c4p-4 : 0x3.ffeab3f371b957a0927e4296b1p+0 : inexact-ok += exp10m1 upward ibm128 0xb.2edd92a794cbc6f81f5f4f82c4p-4 : 0x3.ffeab3f371b957a0927e4296b2p+0 : inexact-ok += exp10m1 downward binary128 0xb.2edd92a794cbc6f81f5f4f82cp-4 : 0x3.ffeab3f371b957a0927e4296ae78p+0 : inexact-ok += exp10m1 tonearest binary128 0xb.2edd92a794cbc6f81f5f4f82cp-4 : 0x3.ffeab3f371b957a0927e4296ae78p+0 : inexact-ok += exp10m1 towardzero binary128 0xb.2edd92a794cbc6f81f5f4f82cp-4 : 0x3.ffeab3f371b957a0927e4296ae78p+0 : inexact-ok += exp10m1 upward binary128 0xb.2edd92a794cbc6f81f5f4f82cp-4 : 0x3.ffeab3f371b957a0927e4296ae7ap+0 : inexact-ok += exp10m1 downward ibm128 0xb.2edd92a794cbc6f81f5f4f82cp-4 : 0x3.ffeab3f371b957a0927e4296aep+0 : inexact-ok += exp10m1 tonearest ibm128 0xb.2edd92a794cbc6f81f5f4f82cp-4 : 0x3.ffeab3f371b957a0927e4296aep+0 : inexact-ok += exp10m1 towardzero ibm128 0xb.2edd92a794cbc6f81f5f4f82cp-4 : 0x3.ffeab3f371b957a0927e4296aep+0 : inexact-ok += exp10m1 upward ibm128 0xb.2edd92a794cbc6f81f5f4f82cp-4 : 0x3.ffeab3f371b957a0927e4296afp+0 : inexact-ok +exp10m1 0xb.2eca344f0d4f0af54bdbd5974858p-4 += exp10m1 downward binary32 0xb.2eca4p-4 : 0x3.ffdcccp+0 : inexact-ok += exp10m1 tonearest binary32 0xb.2eca4p-4 : 0x3.ffdcccp+0 : inexact-ok += exp10m1 towardzero binary32 0xb.2eca4p-4 : 0x3.ffdcccp+0 : inexact-ok += exp10m1 upward binary32 0xb.2eca4p-4 : 0x3.ffdcdp+0 : inexact-ok += exp10m1 downward binary64 0xb.2eca4p-4 : 0x3.ffdcccda8b0d8p+0 : inexact-ok += exp10m1 tonearest binary64 0xb.2eca4p-4 : 0x3.ffdcccda8b0d8p+0 : inexact-ok += exp10m1 towardzero binary64 0xb.2eca4p-4 : 0x3.ffdcccda8b0d8p+0 : inexact-ok += exp10m1 upward binary64 0xb.2eca4p-4 : 0x3.ffdcccda8b0dap+0 : inexact-ok += exp10m1 downward intel96 0xb.2eca4p-4 : 0x3.ffdcccda8b0d8224p+0 : inexact-ok += exp10m1 tonearest intel96 0xb.2eca4p-4 : 0x3.ffdcccda8b0d8224p+0 : inexact-ok += exp10m1 towardzero intel96 0xb.2eca4p-4 : 0x3.ffdcccda8b0d8224p+0 : inexact-ok += exp10m1 upward intel96 0xb.2eca4p-4 : 0x3.ffdcccda8b0d8228p+0 : inexact-ok += exp10m1 downward m68k96 0xb.2eca4p-4 : 0x3.ffdcccda8b0d8224p+0 : inexact-ok += exp10m1 tonearest m68k96 0xb.2eca4p-4 : 0x3.ffdcccda8b0d8224p+0 : inexact-ok += exp10m1 towardzero m68k96 0xb.2eca4p-4 : 0x3.ffdcccda8b0d8224p+0 : inexact-ok += exp10m1 upward m68k96 0xb.2eca4p-4 : 0x3.ffdcccda8b0d8228p+0 : inexact-ok += exp10m1 downward binary128 0xb.2eca4p-4 : 0x3.ffdcccda8b0d8225e50838b0dbecp+0 : inexact-ok += exp10m1 tonearest binary128 0xb.2eca4p-4 : 0x3.ffdcccda8b0d8225e50838b0dbecp+0 : inexact-ok += exp10m1 towardzero binary128 0xb.2eca4p-4 : 0x3.ffdcccda8b0d8225e50838b0dbecp+0 : inexact-ok += exp10m1 upward binary128 0xb.2eca4p-4 : 0x3.ffdcccda8b0d8225e50838b0dbeep+0 : inexact-ok += exp10m1 downward ibm128 0xb.2eca4p-4 : 0x3.ffdcccda8b0d8225e50838b0dbp+0 : inexact-ok += exp10m1 tonearest ibm128 0xb.2eca4p-4 : 0x3.ffdcccda8b0d8225e50838b0dcp+0 : inexact-ok += exp10m1 towardzero ibm128 0xb.2eca4p-4 : 0x3.ffdcccda8b0d8225e50838b0dbp+0 : inexact-ok += exp10m1 upward ibm128 0xb.2eca4p-4 : 0x3.ffdcccda8b0d8225e50838b0dcp+0 : inexact-ok += exp10m1 downward binary32 0xb.2eca3p-4 : 0x3.ffdccp+0 : inexact-ok += exp10m1 tonearest binary32 0xb.2eca3p-4 : 0x3.ffdccp+0 : inexact-ok += exp10m1 towardzero binary32 0xb.2eca3p-4 : 0x3.ffdccp+0 : inexact-ok += exp10m1 upward binary32 0xb.2eca3p-4 : 0x3.ffdcc4p+0 : inexact-ok += exp10m1 downward binary64 0xb.2eca3p-4 : 0x3.ffdcc1578d126p+0 : inexact-ok += exp10m1 tonearest binary64 0xb.2eca3p-4 : 0x3.ffdcc1578d126p+0 : inexact-ok += exp10m1 towardzero binary64 0xb.2eca3p-4 : 0x3.ffdcc1578d126p+0 : inexact-ok += exp10m1 upward binary64 0xb.2eca3p-4 : 0x3.ffdcc1578d128p+0 : inexact-ok += exp10m1 downward intel96 0xb.2eca3p-4 : 0x3.ffdcc1578d126008p+0 : inexact-ok += exp10m1 tonearest intel96 0xb.2eca3p-4 : 0x3.ffdcc1578d12600cp+0 : inexact-ok += exp10m1 towardzero intel96 0xb.2eca3p-4 : 0x3.ffdcc1578d126008p+0 : inexact-ok += exp10m1 upward intel96 0xb.2eca3p-4 : 0x3.ffdcc1578d12600cp+0 : inexact-ok += exp10m1 downward m68k96 0xb.2eca3p-4 : 0x3.ffdcc1578d126008p+0 : inexact-ok += exp10m1 tonearest m68k96 0xb.2eca3p-4 : 0x3.ffdcc1578d12600cp+0 : inexact-ok += exp10m1 towardzero m68k96 0xb.2eca3p-4 : 0x3.ffdcc1578d126008p+0 : inexact-ok += exp10m1 upward m68k96 0xb.2eca3p-4 : 0x3.ffdcc1578d12600cp+0 : inexact-ok += exp10m1 downward binary128 0xb.2eca3p-4 : 0x3.ffdcc1578d12600bfdc2756d3d12p+0 : inexact-ok += exp10m1 tonearest binary128 0xb.2eca3p-4 : 0x3.ffdcc1578d12600bfdc2756d3d14p+0 : inexact-ok += exp10m1 towardzero binary128 0xb.2eca3p-4 : 0x3.ffdcc1578d12600bfdc2756d3d12p+0 : inexact-ok += exp10m1 upward binary128 0xb.2eca3p-4 : 0x3.ffdcc1578d12600bfdc2756d3d14p+0 : inexact-ok += exp10m1 downward ibm128 0xb.2eca3p-4 : 0x3.ffdcc1578d12600bfdc2756d3dp+0 : inexact-ok += exp10m1 tonearest ibm128 0xb.2eca3p-4 : 0x3.ffdcc1578d12600bfdc2756d3dp+0 : inexact-ok += exp10m1 towardzero ibm128 0xb.2eca3p-4 : 0x3.ffdcc1578d12600bfdc2756d3dp+0 : inexact-ok += exp10m1 upward ibm128 0xb.2eca3p-4 : 0x3.ffdcc1578d12600bfdc2756d3ep+0 : inexact-ok += exp10m1 downward binary64 0xb.2eca344f0d4f8p-4 : 0x3.ffdcc4712ce82p+0 : inexact-ok += exp10m1 tonearest binary64 0xb.2eca344f0d4f8p-4 : 0x3.ffdcc4712ce84p+0 : inexact-ok += exp10m1 towardzero binary64 0xb.2eca344f0d4f8p-4 : 0x3.ffdcc4712ce82p+0 : inexact-ok += exp10m1 upward binary64 0xb.2eca344f0d4f8p-4 : 0x3.ffdcc4712ce84p+0 : inexact-ok += exp10m1 downward intel96 0xb.2eca344f0d4f8p-4 : 0x3.ffdcc4712ce8362p+0 : inexact-ok += exp10m1 tonearest intel96 0xb.2eca344f0d4f8p-4 : 0x3.ffdcc4712ce8362p+0 : inexact-ok += exp10m1 towardzero intel96 0xb.2eca344f0d4f8p-4 : 0x3.ffdcc4712ce8362p+0 : inexact-ok += exp10m1 upward intel96 0xb.2eca344f0d4f8p-4 : 0x3.ffdcc4712ce83624p+0 : inexact-ok += exp10m1 downward m68k96 0xb.2eca344f0d4f8p-4 : 0x3.ffdcc4712ce8362p+0 : inexact-ok += exp10m1 tonearest m68k96 0xb.2eca344f0d4f8p-4 : 0x3.ffdcc4712ce8362p+0 : inexact-ok += exp10m1 towardzero m68k96 0xb.2eca344f0d4f8p-4 : 0x3.ffdcc4712ce8362p+0 : inexact-ok += exp10m1 upward m68k96 0xb.2eca344f0d4f8p-4 : 0x3.ffdcc4712ce83624p+0 : inexact-ok += exp10m1 downward binary128 0xb.2eca344f0d4f8p-4 : 0x3.ffdcc4712ce83621f85f85768a54p+0 : inexact-ok += exp10m1 tonearest binary128 0xb.2eca344f0d4f8p-4 : 0x3.ffdcc4712ce83621f85f85768a54p+0 : inexact-ok += exp10m1 towardzero binary128 0xb.2eca344f0d4f8p-4 : 0x3.ffdcc4712ce83621f85f85768a54p+0 : inexact-ok += exp10m1 upward binary128 0xb.2eca344f0d4f8p-4 : 0x3.ffdcc4712ce83621f85f85768a56p+0 : inexact-ok += exp10m1 downward ibm128 0xb.2eca344f0d4f8p-4 : 0x3.ffdcc4712ce83621f85f85768ap+0 : inexact-ok += exp10m1 tonearest ibm128 0xb.2eca344f0d4f8p-4 : 0x3.ffdcc4712ce83621f85f85768ap+0 : inexact-ok += exp10m1 towardzero ibm128 0xb.2eca344f0d4f8p-4 : 0x3.ffdcc4712ce83621f85f85768ap+0 : inexact-ok += exp10m1 upward ibm128 0xb.2eca344f0d4f8p-4 : 0x3.ffdcc4712ce83621f85f85768bp+0 : inexact-ok += exp10m1 downward binary64 0xb.2eca344f0d4fp-4 : 0x3.ffdcc4712ce7cp+0 : inexact-ok += exp10m1 tonearest binary64 0xb.2eca344f0d4fp-4 : 0x3.ffdcc4712ce7ep+0 : inexact-ok += exp10m1 towardzero binary64 0xb.2eca344f0d4fp-4 : 0x3.ffdcc4712ce7cp+0 : inexact-ok += exp10m1 upward binary64 0xb.2eca344f0d4fp-4 : 0x3.ffdcc4712ce7ep+0 : inexact-ok += exp10m1 downward intel96 0xb.2eca344f0d4fp-4 : 0x3.ffdcc4712ce7da08p+0 : inexact-ok += exp10m1 tonearest intel96 0xb.2eca344f0d4fp-4 : 0x3.ffdcc4712ce7da0cp+0 : inexact-ok += exp10m1 towardzero intel96 0xb.2eca344f0d4fp-4 : 0x3.ffdcc4712ce7da08p+0 : inexact-ok += exp10m1 upward intel96 0xb.2eca344f0d4fp-4 : 0x3.ffdcc4712ce7da0cp+0 : inexact-ok += exp10m1 downward m68k96 0xb.2eca344f0d4fp-4 : 0x3.ffdcc4712ce7da08p+0 : inexact-ok += exp10m1 tonearest m68k96 0xb.2eca344f0d4fp-4 : 0x3.ffdcc4712ce7da0cp+0 : inexact-ok += exp10m1 towardzero m68k96 0xb.2eca344f0d4fp-4 : 0x3.ffdcc4712ce7da08p+0 : inexact-ok += exp10m1 upward m68k96 0xb.2eca344f0d4fp-4 : 0x3.ffdcc4712ce7da0cp+0 : inexact-ok += exp10m1 downward binary128 0xb.2eca344f0d4fp-4 : 0x3.ffdcc4712ce7da0a08b7605a3f52p+0 : inexact-ok += exp10m1 tonearest binary128 0xb.2eca344f0d4fp-4 : 0x3.ffdcc4712ce7da0a08b7605a3f52p+0 : inexact-ok += exp10m1 towardzero binary128 0xb.2eca344f0d4fp-4 : 0x3.ffdcc4712ce7da0a08b7605a3f52p+0 : inexact-ok += exp10m1 upward binary128 0xb.2eca344f0d4fp-4 : 0x3.ffdcc4712ce7da0a08b7605a3f54p+0 : inexact-ok += exp10m1 downward ibm128 0xb.2eca344f0d4fp-4 : 0x3.ffdcc4712ce7da0a08b7605a3fp+0 : inexact-ok += exp10m1 tonearest ibm128 0xb.2eca344f0d4fp-4 : 0x3.ffdcc4712ce7da0a08b7605a3fp+0 : inexact-ok += exp10m1 towardzero ibm128 0xb.2eca344f0d4fp-4 : 0x3.ffdcc4712ce7da0a08b7605a3fp+0 : inexact-ok += exp10m1 upward ibm128 0xb.2eca344f0d4fp-4 : 0x3.ffdcc4712ce7da0a08b7605a4p+0 : inexact-ok += exp10m1 downward intel96 0xb.2eca344f0d4f0bp-4 : 0x3.ffdcc4712ce7e1f4p+0 : inexact-ok += exp10m1 tonearest intel96 0xb.2eca344f0d4f0bp-4 : 0x3.ffdcc4712ce7e1f4p+0 : inexact-ok += exp10m1 towardzero intel96 0xb.2eca344f0d4f0bp-4 : 0x3.ffdcc4712ce7e1f4p+0 : inexact-ok += exp10m1 upward intel96 0xb.2eca344f0d4f0bp-4 : 0x3.ffdcc4712ce7e1f8p+0 : inexact-ok += exp10m1 downward m68k96 0xb.2eca344f0d4f0bp-4 : 0x3.ffdcc4712ce7e1f4p+0 : inexact-ok += exp10m1 tonearest m68k96 0xb.2eca344f0d4f0bp-4 : 0x3.ffdcc4712ce7e1f4p+0 : inexact-ok += exp10m1 towardzero m68k96 0xb.2eca344f0d4f0bp-4 : 0x3.ffdcc4712ce7e1f4p+0 : inexact-ok += exp10m1 upward m68k96 0xb.2eca344f0d4f0bp-4 : 0x3.ffdcc4712ce7e1f8p+0 : inexact-ok += exp10m1 downward binary128 0xb.2eca344f0d4f0bp-4 : 0x3.ffdcc4712ce7e1f4174fd38aad8p+0 : inexact-ok += exp10m1 tonearest binary128 0xb.2eca344f0d4f0bp-4 : 0x3.ffdcc4712ce7e1f4174fd38aad82p+0 : inexact-ok += exp10m1 towardzero binary128 0xb.2eca344f0d4f0bp-4 : 0x3.ffdcc4712ce7e1f4174fd38aad8p+0 : inexact-ok += exp10m1 upward binary128 0xb.2eca344f0d4f0bp-4 : 0x3.ffdcc4712ce7e1f4174fd38aad82p+0 : inexact-ok += exp10m1 downward ibm128 0xb.2eca344f0d4f0bp-4 : 0x3.ffdcc4712ce7e1f4174fd38aadp+0 : inexact-ok += exp10m1 tonearest ibm128 0xb.2eca344f0d4f0bp-4 : 0x3.ffdcc4712ce7e1f4174fd38aaep+0 : inexact-ok += exp10m1 towardzero ibm128 0xb.2eca344f0d4f0bp-4 : 0x3.ffdcc4712ce7e1f4174fd38aadp+0 : inexact-ok += exp10m1 upward ibm128 0xb.2eca344f0d4f0bp-4 : 0x3.ffdcc4712ce7e1f4174fd38aaep+0 : inexact-ok += exp10m1 downward intel96 0xb.2eca344f0d4f0afp-4 : 0x3.ffdcc4712ce7e1e8p+0 : inexact-ok += exp10m1 tonearest intel96 0xb.2eca344f0d4f0afp-4 : 0x3.ffdcc4712ce7e1e8p+0 : inexact-ok += exp10m1 towardzero intel96 0xb.2eca344f0d4f0afp-4 : 0x3.ffdcc4712ce7e1e8p+0 : inexact-ok += exp10m1 upward intel96 0xb.2eca344f0d4f0afp-4 : 0x3.ffdcc4712ce7e1ecp+0 : inexact-ok += exp10m1 downward m68k96 0xb.2eca344f0d4f0afp-4 : 0x3.ffdcc4712ce7e1e8p+0 : inexact-ok += exp10m1 tonearest m68k96 0xb.2eca344f0d4f0afp-4 : 0x3.ffdcc4712ce7e1e8p+0 : inexact-ok += exp10m1 towardzero m68k96 0xb.2eca344f0d4f0afp-4 : 0x3.ffdcc4712ce7e1e8p+0 : inexact-ok += exp10m1 upward m68k96 0xb.2eca344f0d4f0afp-4 : 0x3.ffdcc4712ce7e1ecp+0 : inexact-ok += exp10m1 downward binary128 0xb.2eca344f0d4f0afp-4 : 0x3.ffdcc4712ce7e1e89451de8609f8p+0 : inexact-ok += exp10m1 tonearest binary128 0xb.2eca344f0d4f0afp-4 : 0x3.ffdcc4712ce7e1e89451de8609f8p+0 : inexact-ok += exp10m1 towardzero binary128 0xb.2eca344f0d4f0afp-4 : 0x3.ffdcc4712ce7e1e89451de8609f8p+0 : inexact-ok += exp10m1 upward binary128 0xb.2eca344f0d4f0afp-4 : 0x3.ffdcc4712ce7e1e89451de8609fap+0 : inexact-ok += exp10m1 downward ibm128 0xb.2eca344f0d4f0afp-4 : 0x3.ffdcc4712ce7e1e89451de8609p+0 : inexact-ok += exp10m1 tonearest ibm128 0xb.2eca344f0d4f0afp-4 : 0x3.ffdcc4712ce7e1e89451de860ap+0 : inexact-ok += exp10m1 towardzero ibm128 0xb.2eca344f0d4f0afp-4 : 0x3.ffdcc4712ce7e1e89451de8609p+0 : inexact-ok += exp10m1 upward ibm128 0xb.2eca344f0d4f0afp-4 : 0x3.ffdcc4712ce7e1e89451de860ap+0 : inexact-ok += exp10m1 downward binary128 0xb.2eca344f0d4f0af54bdbd5974858p-4 : 0x3.ffdcc4712ce7e1ec63d56c24b998p+0 : inexact-ok += exp10m1 tonearest binary128 0xb.2eca344f0d4f0af54bdbd5974858p-4 : 0x3.ffdcc4712ce7e1ec63d56c24b998p+0 : inexact-ok += exp10m1 towardzero binary128 0xb.2eca344f0d4f0af54bdbd5974858p-4 : 0x3.ffdcc4712ce7e1ec63d56c24b998p+0 : inexact-ok += exp10m1 upward binary128 0xb.2eca344f0d4f0af54bdbd5974858p-4 : 0x3.ffdcc4712ce7e1ec63d56c24b99ap+0 : inexact-ok += exp10m1 downward binary128 0xb.2eca344f0d4f0af54bdbd5974cp-4 : 0x3.ffdcc4712ce7e1ec63d56c24bc3ap+0 : inexact-ok += exp10m1 tonearest binary128 0xb.2eca344f0d4f0af54bdbd5974cp-4 : 0x3.ffdcc4712ce7e1ec63d56c24bc3ap+0 : inexact-ok += exp10m1 towardzero binary128 0xb.2eca344f0d4f0af54bdbd5974cp-4 : 0x3.ffdcc4712ce7e1ec63d56c24bc3ap+0 : inexact-ok += exp10m1 upward binary128 0xb.2eca344f0d4f0af54bdbd5974cp-4 : 0x3.ffdcc4712ce7e1ec63d56c24bc3cp+0 : inexact-ok += exp10m1 downward ibm128 0xb.2eca344f0d4f0af54bdbd5974cp-4 : 0x3.ffdcc4712ce7e1ec63d56c24bcp+0 : inexact-ok += exp10m1 tonearest ibm128 0xb.2eca344f0d4f0af54bdbd5974cp-4 : 0x3.ffdcc4712ce7e1ec63d56c24bcp+0 : inexact-ok += exp10m1 towardzero ibm128 0xb.2eca344f0d4f0af54bdbd5974cp-4 : 0x3.ffdcc4712ce7e1ec63d56c24bcp+0 : inexact-ok += exp10m1 upward ibm128 0xb.2eca344f0d4f0af54bdbd5974cp-4 : 0x3.ffdcc4712ce7e1ec63d56c24bdp+0 : inexact-ok += exp10m1 downward binary128 0xb.2eca344f0d4f0af54bdbd59748p-4 : 0x3.ffdcc4712ce7e1ec63d56c24b958p+0 : inexact-ok += exp10m1 tonearest binary128 0xb.2eca344f0d4f0af54bdbd59748p-4 : 0x3.ffdcc4712ce7e1ec63d56c24b95ap+0 : inexact-ok += exp10m1 towardzero binary128 0xb.2eca344f0d4f0af54bdbd59748p-4 : 0x3.ffdcc4712ce7e1ec63d56c24b958p+0 : inexact-ok += exp10m1 upward binary128 0xb.2eca344f0d4f0af54bdbd59748p-4 : 0x3.ffdcc4712ce7e1ec63d56c24b95ap+0 : inexact-ok += exp10m1 downward ibm128 0xb.2eca344f0d4f0af54bdbd59748p-4 : 0x3.ffdcc4712ce7e1ec63d56c24b9p+0 : inexact-ok += exp10m1 tonearest ibm128 0xb.2eca344f0d4f0af54bdbd59748p-4 : 0x3.ffdcc4712ce7e1ec63d56c24b9p+0 : inexact-ok += exp10m1 towardzero ibm128 0xb.2eca344f0d4f0af54bdbd59748p-4 : 0x3.ffdcc4712ce7e1ec63d56c24b9p+0 : inexact-ok += exp10m1 upward ibm128 0xb.2eca344f0d4f0af54bdbd59748p-4 : 0x3.ffdcc4712ce7e1ec63d56c24bap+0 : inexact-ok diff --git a/math/auto-libm-test-out-exp2m1 b/math/auto-libm-test-out-exp2m1 index 70b641ea44..d5fc77ec4a 100644 --- a/math/auto-libm-test-out-exp2m1 +++ b/math/auto-libm-test-out-exp2m1 @@ -4346,3 +4346,1783 @@ exp2m1 -0x1p-16381 = exp2m1 tonearest binary128 -0x8p-16384 : -0x5.8b90bfbe8e7bcd5e4f1d9cc01f98p-16384 : inexact-ok = exp2m1 towardzero binary128 -0x8p-16384 : -0x5.8b90bfbe8e7bcd5e4f1d9cc01f94p-16384 : inexact-ok = exp2m1 upward binary128 -0x8p-16384 : -0x5.8b90bfbe8e7bcd5e4f1d9cc01f94p-16384 : inexact-ok +exp2m1 0x1.9cac28p-1 += exp2m1 downward binary32 0xc.e5614p-4 : 0xb.f946ap-4 : inexact-ok += exp2m1 tonearest binary32 0xc.e5614p-4 : 0xb.f946ap-4 : inexact-ok += exp2m1 towardzero binary32 0xc.e5614p-4 : 0xb.f946ap-4 : inexact-ok += exp2m1 upward binary32 0xc.e5614p-4 : 0xb.f946bp-4 : inexact-ok += exp2m1 downward binary64 0xc.e5614p-4 : 0xb.f946a591567cp-4 : inexact-ok += exp2m1 tonearest binary64 0xc.e5614p-4 : 0xb.f946a591567c8p-4 : inexact-ok += exp2m1 towardzero binary64 0xc.e5614p-4 : 0xb.f946a591567cp-4 : inexact-ok += exp2m1 upward binary64 0xc.e5614p-4 : 0xb.f946a591567c8p-4 : inexact-ok += exp2m1 downward intel96 0xc.e5614p-4 : 0xb.f946a591567c6c4p-4 : inexact-ok += exp2m1 tonearest intel96 0xc.e5614p-4 : 0xb.f946a591567c6c4p-4 : inexact-ok += exp2m1 towardzero intel96 0xc.e5614p-4 : 0xb.f946a591567c6c4p-4 : inexact-ok += exp2m1 upward intel96 0xc.e5614p-4 : 0xb.f946a591567c6c5p-4 : inexact-ok += exp2m1 downward m68k96 0xc.e5614p-4 : 0xb.f946a591567c6c4p-4 : inexact-ok += exp2m1 tonearest m68k96 0xc.e5614p-4 : 0xb.f946a591567c6c4p-4 : inexact-ok += exp2m1 towardzero m68k96 0xc.e5614p-4 : 0xb.f946a591567c6c4p-4 : inexact-ok += exp2m1 upward m68k96 0xc.e5614p-4 : 0xb.f946a591567c6c5p-4 : inexact-ok += exp2m1 downward binary128 0xc.e5614p-4 : 0xb.f946a591567c6c442926a7a2bb3p-4 : inexact-ok += exp2m1 tonearest binary128 0xc.e5614p-4 : 0xb.f946a591567c6c442926a7a2bb3p-4 : inexact-ok += exp2m1 towardzero binary128 0xc.e5614p-4 : 0xb.f946a591567c6c442926a7a2bb3p-4 : inexact-ok += exp2m1 upward binary128 0xc.e5614p-4 : 0xb.f946a591567c6c442926a7a2bb38p-4 : inexact-ok += exp2m1 downward ibm128 0xc.e5614p-4 : 0xb.f946a591567c6c442926a7a2b8p-4 : inexact-ok += exp2m1 tonearest ibm128 0xc.e5614p-4 : 0xb.f946a591567c6c442926a7a2bcp-4 : inexact-ok += exp2m1 towardzero ibm128 0xc.e5614p-4 : 0xb.f946a591567c6c442926a7a2b8p-4 : inexact-ok += exp2m1 upward ibm128 0xc.e5614p-4 : 0xb.f946a591567c6c442926a7a2bcp-4 : inexact-ok +exp2m1 -0x1.715546p-15 += exp2m1 downward binary32 -0x2.e2aa8cp-16 : -0x1.ffff2p-16 : inexact-ok += exp2m1 tonearest binary32 -0x2.e2aa8cp-16 : -0x1.ffff2p-16 : inexact-ok += exp2m1 towardzero binary32 -0x2.e2aa8cp-16 : -0x1.ffff1ep-16 : inexact-ok += exp2m1 upward binary32 -0x2.e2aa8cp-16 : -0x1.ffff1ep-16 : inexact-ok += exp2m1 downward binary64 -0x2.e2aa8cp-16 : -0x1.ffff1fe5d00ddp-16 : inexact-ok += exp2m1 tonearest binary64 -0x2.e2aa8cp-16 : -0x1.ffff1fe5d00ddp-16 : inexact-ok += exp2m1 towardzero binary64 -0x2.e2aa8cp-16 : -0x1.ffff1fe5d00dcp-16 : inexact-ok += exp2m1 upward binary64 -0x2.e2aa8cp-16 : -0x1.ffff1fe5d00dcp-16 : inexact-ok += exp2m1 downward intel96 -0x2.e2aa8cp-16 : -0x1.ffff1fe5d00dcad2p-16 : inexact-ok += exp2m1 tonearest intel96 -0x2.e2aa8cp-16 : -0x1.ffff1fe5d00dcadp-16 : inexact-ok += exp2m1 towardzero intel96 -0x2.e2aa8cp-16 : -0x1.ffff1fe5d00dcadp-16 : inexact-ok += exp2m1 upward intel96 -0x2.e2aa8cp-16 : -0x1.ffff1fe5d00dcadp-16 : inexact-ok += exp2m1 downward m68k96 -0x2.e2aa8cp-16 : -0x1.ffff1fe5d00dcad2p-16 : inexact-ok += exp2m1 tonearest m68k96 -0x2.e2aa8cp-16 : -0x1.ffff1fe5d00dcadp-16 : inexact-ok += exp2m1 towardzero m68k96 -0x2.e2aa8cp-16 : -0x1.ffff1fe5d00dcadp-16 : inexact-ok += exp2m1 upward m68k96 -0x2.e2aa8cp-16 : -0x1.ffff1fe5d00dcadp-16 : inexact-ok += exp2m1 downward binary128 -0x2.e2aa8cp-16 : -0x1.ffff1fe5d00dcad024e1e12d2511p-16 : inexact-ok += exp2m1 tonearest binary128 -0x2.e2aa8cp-16 : -0x1.ffff1fe5d00dcad024e1e12d2511p-16 : inexact-ok += exp2m1 towardzero binary128 -0x2.e2aa8cp-16 : -0x1.ffff1fe5d00dcad024e1e12d251p-16 : inexact-ok += exp2m1 upward binary128 -0x2.e2aa8cp-16 : -0x1.ffff1fe5d00dcad024e1e12d251p-16 : inexact-ok += exp2m1 downward ibm128 -0x2.e2aa8cp-16 : -0x1.ffff1fe5d00dcad024e1e12d258p-16 : inexact-ok += exp2m1 tonearest ibm128 -0x2.e2aa8cp-16 : -0x1.ffff1fe5d00dcad024e1e12d25p-16 : inexact-ok += exp2m1 towardzero ibm128 -0x2.e2aa8cp-16 : -0x1.ffff1fe5d00dcad024e1e12d25p-16 : inexact-ok += exp2m1 upward ibm128 -0x2.e2aa8cp-16 : -0x1.ffff1fe5d00dcad024e1e12d25p-16 : inexact-ok +exp2m1 0x1.fffffep-1 += exp2m1 downward binary32 0xf.fffffp-4 : 0xf.ffffep-4 : inexact-ok += exp2m1 tonearest binary32 0xf.fffffp-4 : 0xf.fffffp-4 : inexact-ok += exp2m1 towardzero binary32 0xf.fffffp-4 : 0xf.ffffep-4 : inexact-ok += exp2m1 upward binary32 0xf.fffffp-4 : 0xf.fffffp-4 : inexact-ok += exp2m1 downward binary64 0xf.fffffp-4 : 0xf.ffffe9d1bd088p-4 : inexact-ok += exp2m1 tonearest binary64 0xf.fffffp-4 : 0xf.ffffe9d1bd088p-4 : inexact-ok += exp2m1 towardzero binary64 0xf.fffffp-4 : 0xf.ffffe9d1bd088p-4 : inexact-ok += exp2m1 upward binary64 0xf.fffffp-4 : 0xf.ffffe9d1bd09p-4 : inexact-ok += exp2m1 downward intel96 0xf.fffffp-4 : 0xf.ffffe9d1bd08b5bp-4 : inexact-ok += exp2m1 tonearest intel96 0xf.fffffp-4 : 0xf.ffffe9d1bd08b5bp-4 : inexact-ok += exp2m1 towardzero intel96 0xf.fffffp-4 : 0xf.ffffe9d1bd08b5bp-4 : inexact-ok += exp2m1 upward intel96 0xf.fffffp-4 : 0xf.ffffe9d1bd08b5cp-4 : inexact-ok += exp2m1 downward m68k96 0xf.fffffp-4 : 0xf.ffffe9d1bd08b5bp-4 : inexact-ok += exp2m1 tonearest m68k96 0xf.fffffp-4 : 0xf.ffffe9d1bd08b5bp-4 : inexact-ok += exp2m1 towardzero m68k96 0xf.fffffp-4 : 0xf.ffffe9d1bd08b5bp-4 : inexact-ok += exp2m1 upward m68k96 0xf.fffffp-4 : 0xf.ffffe9d1bd08b5cp-4 : inexact-ok += exp2m1 downward binary128 0xf.fffffp-4 : 0xf.ffffe9d1bd08b5b58ee4879a1228p-4 : inexact-ok += exp2m1 tonearest binary128 0xf.fffffp-4 : 0xf.ffffe9d1bd08b5b58ee4879a1228p-4 : inexact-ok += exp2m1 towardzero binary128 0xf.fffffp-4 : 0xf.ffffe9d1bd08b5b58ee4879a1228p-4 : inexact-ok += exp2m1 upward binary128 0xf.fffffp-4 : 0xf.ffffe9d1bd08b5b58ee4879a123p-4 : inexact-ok += exp2m1 downward ibm128 0xf.fffffp-4 : 0xf.ffffe9d1bd08b5b58ee4879a1p-4 : inexact-ok += exp2m1 tonearest ibm128 0xf.fffffp-4 : 0xf.ffffe9d1bd08b5b58ee4879a14p-4 : inexact-ok += exp2m1 towardzero ibm128 0xf.fffffp-4 : 0xf.ffffe9d1bd08b5b58ee4879a1p-4 : inexact-ok += exp2m1 upward ibm128 0xf.fffffp-4 : 0xf.ffffe9d1bd08b5b58ee4879a14p-4 : inexact-ok +exp2m1 -0x1.720d9ap-8 += exp2m1 downward binary32 -0x1.720d9ap-8 : -0xf.fffffp-12 : inexact-ok += exp2m1 tonearest binary32 -0x1.720d9ap-8 : -0xf.fffffp-12 : inexact-ok += exp2m1 towardzero binary32 -0x1.720d9ap-8 : -0xf.ffffep-12 : inexact-ok += exp2m1 upward binary32 -0x1.720d9ap-8 : -0xf.ffffep-12 : inexact-ok += exp2m1 downward binary64 -0x1.720d9ap-8 : -0xf.ffffe99e60cb8p-12 : inexact-ok += exp2m1 tonearest binary64 -0x1.720d9ap-8 : -0xf.ffffe99e60cb8p-12 : inexact-ok += exp2m1 towardzero binary64 -0x1.720d9ap-8 : -0xf.ffffe99e60cbp-12 : inexact-ok += exp2m1 upward binary64 -0x1.720d9ap-8 : -0xf.ffffe99e60cbp-12 : inexact-ok += exp2m1 downward intel96 -0x1.720d9ap-8 : -0xf.ffffe99e60cb578p-12 : inexact-ok += exp2m1 tonearest intel96 -0x1.720d9ap-8 : -0xf.ffffe99e60cb578p-12 : inexact-ok += exp2m1 towardzero intel96 -0x1.720d9ap-8 : -0xf.ffffe99e60cb577p-12 : inexact-ok += exp2m1 upward intel96 -0x1.720d9ap-8 : -0xf.ffffe99e60cb577p-12 : inexact-ok += exp2m1 downward m68k96 -0x1.720d9ap-8 : -0xf.ffffe99e60cb578p-12 : inexact-ok += exp2m1 tonearest m68k96 -0x1.720d9ap-8 : -0xf.ffffe99e60cb578p-12 : inexact-ok += exp2m1 towardzero m68k96 -0x1.720d9ap-8 : -0xf.ffffe99e60cb577p-12 : inexact-ok += exp2m1 upward m68k96 -0x1.720d9ap-8 : -0xf.ffffe99e60cb577p-12 : inexact-ok += exp2m1 downward binary128 -0x1.720d9ap-8 : -0xf.ffffe99e60cb57787675a459d2p-12 : inexact-ok += exp2m1 tonearest binary128 -0x1.720d9ap-8 : -0xf.ffffe99e60cb57787675a459d1f8p-12 : inexact-ok += exp2m1 towardzero binary128 -0x1.720d9ap-8 : -0xf.ffffe99e60cb57787675a459d1f8p-12 : inexact-ok += exp2m1 upward binary128 -0x1.720d9ap-8 : -0xf.ffffe99e60cb57787675a459d1f8p-12 : inexact-ok += exp2m1 downward ibm128 -0x1.720d9ap-8 : -0xf.ffffe99e60cb57787675a459d4p-12 : inexact-ok += exp2m1 tonearest ibm128 -0x1.720d9ap-8 : -0xf.ffffe99e60cb57787675a459dp-12 : inexact-ok += exp2m1 towardzero ibm128 -0x1.720d9ap-8 : -0xf.ffffe99e60cb57787675a459dp-12 : inexact-ok += exp2m1 upward ibm128 -0x1.720d9ap-8 : -0xf.ffffe99e60cb57787675a459dp-12 : inexact-ok +exp2m1 0x1.d047583a6c6dp-1 += exp2m1 downward binary32 0xe.823adp-4 : 0xd.ff7cdp-4 : inexact-ok += exp2m1 tonearest binary32 0xe.823adp-4 : 0xd.ff7cep-4 : inexact-ok += exp2m1 towardzero binary32 0xe.823adp-4 : 0xd.ff7cdp-4 : inexact-ok += exp2m1 upward binary32 0xe.823adp-4 : 0xd.ff7cep-4 : inexact-ok += exp2m1 downward binary64 0xe.823adp-4 : 0xd.ff7cde638771p-4 : inexact-ok += exp2m1 tonearest binary64 0xe.823adp-4 : 0xd.ff7cde638771p-4 : inexact-ok += exp2m1 towardzero binary64 0xe.823adp-4 : 0xd.ff7cde638771p-4 : inexact-ok += exp2m1 upward binary64 0xe.823adp-4 : 0xd.ff7cde6387718p-4 : inexact-ok += exp2m1 downward intel96 0xe.823adp-4 : 0xd.ff7cde638771128p-4 : inexact-ok += exp2m1 tonearest intel96 0xe.823adp-4 : 0xd.ff7cde638771129p-4 : inexact-ok += exp2m1 towardzero intel96 0xe.823adp-4 : 0xd.ff7cde638771128p-4 : inexact-ok += exp2m1 upward intel96 0xe.823adp-4 : 0xd.ff7cde638771129p-4 : inexact-ok += exp2m1 downward m68k96 0xe.823adp-4 : 0xd.ff7cde638771128p-4 : inexact-ok += exp2m1 tonearest m68k96 0xe.823adp-4 : 0xd.ff7cde638771129p-4 : inexact-ok += exp2m1 towardzero m68k96 0xe.823adp-4 : 0xd.ff7cde638771128p-4 : inexact-ok += exp2m1 upward m68k96 0xe.823adp-4 : 0xd.ff7cde638771129p-4 : inexact-ok += exp2m1 downward binary128 0xe.823adp-4 : 0xd.ff7cde638771128ab8a54647fe7p-4 : inexact-ok += exp2m1 tonearest binary128 0xe.823adp-4 : 0xd.ff7cde638771128ab8a54647fe78p-4 : inexact-ok += exp2m1 towardzero binary128 0xe.823adp-4 : 0xd.ff7cde638771128ab8a54647fe7p-4 : inexact-ok += exp2m1 upward binary128 0xe.823adp-4 : 0xd.ff7cde638771128ab8a54647fe78p-4 : inexact-ok += exp2m1 downward ibm128 0xe.823adp-4 : 0xd.ff7cde638771128ab8a54647fcp-4 : inexact-ok += exp2m1 tonearest ibm128 0xe.823adp-4 : 0xd.ff7cde638771128ab8a54648p-4 : inexact-ok += exp2m1 towardzero ibm128 0xe.823adp-4 : 0xd.ff7cde638771128ab8a54647fcp-4 : inexact-ok += exp2m1 upward ibm128 0xe.823adp-4 : 0xd.ff7cde638771128ab8a54648p-4 : inexact-ok += exp2m1 downward binary32 0xe.823acp-4 : 0xd.ff7ccp-4 : inexact-ok += exp2m1 tonearest binary32 0xe.823acp-4 : 0xd.ff7cdp-4 : inexact-ok += exp2m1 towardzero binary32 0xe.823acp-4 : 0xd.ff7ccp-4 : inexact-ok += exp2m1 upward binary32 0xe.823acp-4 : 0xd.ff7cdp-4 : inexact-ok += exp2m1 downward binary64 0xe.823acp-4 : 0xd.ff7cc998838d8p-4 : inexact-ok += exp2m1 tonearest binary64 0xe.823acp-4 : 0xd.ff7cc998838ep-4 : inexact-ok += exp2m1 towardzero binary64 0xe.823acp-4 : 0xd.ff7cc998838d8p-4 : inexact-ok += exp2m1 upward binary64 0xe.823acp-4 : 0xd.ff7cc998838ep-4 : inexact-ok += exp2m1 downward intel96 0xe.823acp-4 : 0xd.ff7cc998838deb3p-4 : inexact-ok += exp2m1 tonearest intel96 0xe.823acp-4 : 0xd.ff7cc998838deb3p-4 : inexact-ok += exp2m1 towardzero intel96 0xe.823acp-4 : 0xd.ff7cc998838deb3p-4 : inexact-ok += exp2m1 upward intel96 0xe.823acp-4 : 0xd.ff7cc998838deb4p-4 : inexact-ok += exp2m1 downward m68k96 0xe.823acp-4 : 0xd.ff7cc998838deb3p-4 : inexact-ok += exp2m1 tonearest m68k96 0xe.823acp-4 : 0xd.ff7cc998838deb3p-4 : inexact-ok += exp2m1 towardzero m68k96 0xe.823acp-4 : 0xd.ff7cc998838deb3p-4 : inexact-ok += exp2m1 upward m68k96 0xe.823acp-4 : 0xd.ff7cc998838deb4p-4 : inexact-ok += exp2m1 downward binary128 0xe.823acp-4 : 0xd.ff7cc998838deb336cc36bcaf2cp-4 : inexact-ok += exp2m1 tonearest binary128 0xe.823acp-4 : 0xd.ff7cc998838deb336cc36bcaf2c8p-4 : inexact-ok += exp2m1 towardzero binary128 0xe.823acp-4 : 0xd.ff7cc998838deb336cc36bcaf2cp-4 : inexact-ok += exp2m1 upward binary128 0xe.823acp-4 : 0xd.ff7cc998838deb336cc36bcaf2c8p-4 : inexact-ok += exp2m1 downward ibm128 0xe.823acp-4 : 0xd.ff7cc998838deb336cc36bcafp-4 : inexact-ok += exp2m1 tonearest ibm128 0xe.823acp-4 : 0xd.ff7cc998838deb336cc36bcaf4p-4 : inexact-ok += exp2m1 towardzero ibm128 0xe.823acp-4 : 0xd.ff7cc998838deb336cc36bcafp-4 : inexact-ok += exp2m1 upward ibm128 0xe.823acp-4 : 0xd.ff7cc998838deb336cc36bcaf4p-4 : inexact-ok += exp2m1 downward binary64 0xe.823ac1d36368p-4 : 0xd.ff7ccbf7ea3d8p-4 : inexact-ok += exp2m1 tonearest binary64 0xe.823ac1d36368p-4 : 0xd.ff7ccbf7ea3ep-4 : inexact-ok += exp2m1 towardzero binary64 0xe.823ac1d36368p-4 : 0xd.ff7ccbf7ea3d8p-4 : inexact-ok += exp2m1 upward binary64 0xe.823ac1d36368p-4 : 0xd.ff7ccbf7ea3ep-4 : inexact-ok += exp2m1 downward intel96 0xe.823ac1d36368p-4 : 0xd.ff7ccbf7ea3df66p-4 : inexact-ok += exp2m1 tonearest intel96 0xe.823ac1d36368p-4 : 0xd.ff7ccbf7ea3df67p-4 : inexact-ok += exp2m1 towardzero intel96 0xe.823ac1d36368p-4 : 0xd.ff7ccbf7ea3df66p-4 : inexact-ok += exp2m1 upward intel96 0xe.823ac1d36368p-4 : 0xd.ff7ccbf7ea3df67p-4 : inexact-ok += exp2m1 downward m68k96 0xe.823ac1d36368p-4 : 0xd.ff7ccbf7ea3df66p-4 : inexact-ok += exp2m1 tonearest m68k96 0xe.823ac1d36368p-4 : 0xd.ff7ccbf7ea3df67p-4 : inexact-ok += exp2m1 towardzero m68k96 0xe.823ac1d36368p-4 : 0xd.ff7ccbf7ea3df66p-4 : inexact-ok += exp2m1 upward m68k96 0xe.823ac1d36368p-4 : 0xd.ff7ccbf7ea3df67p-4 : inexact-ok += exp2m1 downward binary128 0xe.823ac1d36368p-4 : 0xd.ff7ccbf7ea3df66976db9b12a4c8p-4 : inexact-ok += exp2m1 tonearest binary128 0xe.823ac1d36368p-4 : 0xd.ff7ccbf7ea3df66976db9b12a4dp-4 : inexact-ok += exp2m1 towardzero binary128 0xe.823ac1d36368p-4 : 0xd.ff7ccbf7ea3df66976db9b12a4c8p-4 : inexact-ok += exp2m1 upward binary128 0xe.823ac1d36368p-4 : 0xd.ff7ccbf7ea3df66976db9b12a4dp-4 : inexact-ok += exp2m1 downward ibm128 0xe.823ac1d36368p-4 : 0xd.ff7ccbf7ea3df66976db9b12a4p-4 : inexact-ok += exp2m1 tonearest ibm128 0xe.823ac1d36368p-4 : 0xd.ff7ccbf7ea3df66976db9b12a4p-4 : inexact-ok += exp2m1 towardzero ibm128 0xe.823ac1d36368p-4 : 0xd.ff7ccbf7ea3df66976db9b12a4p-4 : inexact-ok += exp2m1 upward ibm128 0xe.823ac1d36368p-4 : 0xd.ff7ccbf7ea3df66976db9b12a8p-4 : inexact-ok +exp2m1 0x1.fff7be96c5276p-1 += exp2m1 downward binary32 0xf.ffbep-4 : 0xf.ffa48p-4 : inexact-ok += exp2m1 tonearest binary32 0xf.ffbep-4 : 0xf.ffa48p-4 : inexact-ok += exp2m1 towardzero binary32 0xf.ffbep-4 : 0xf.ffa48p-4 : inexact-ok += exp2m1 upward binary32 0xf.ffbep-4 : 0xf.ffa49p-4 : inexact-ok += exp2m1 downward binary64 0xf.ffbep-4 : 0xf.ffa481ae7162p-4 : inexact-ok += exp2m1 tonearest binary64 0xf.ffbep-4 : 0xf.ffa481ae71628p-4 : inexact-ok += exp2m1 towardzero binary64 0xf.ffbep-4 : 0xf.ffa481ae7162p-4 : inexact-ok += exp2m1 upward binary64 0xf.ffbep-4 : 0xf.ffa481ae71628p-4 : inexact-ok += exp2m1 downward intel96 0xf.ffbep-4 : 0xf.ffa481ae716262dp-4 : inexact-ok += exp2m1 tonearest intel96 0xf.ffbep-4 : 0xf.ffa481ae716262ep-4 : inexact-ok += exp2m1 towardzero intel96 0xf.ffbep-4 : 0xf.ffa481ae716262dp-4 : inexact-ok += exp2m1 upward intel96 0xf.ffbep-4 : 0xf.ffa481ae716262ep-4 : inexact-ok += exp2m1 downward m68k96 0xf.ffbep-4 : 0xf.ffa481ae716262dp-4 : inexact-ok += exp2m1 tonearest m68k96 0xf.ffbep-4 : 0xf.ffa481ae716262ep-4 : inexact-ok += exp2m1 towardzero m68k96 0xf.ffbep-4 : 0xf.ffa481ae716262dp-4 : inexact-ok += exp2m1 upward m68k96 0xf.ffbep-4 : 0xf.ffa481ae716262ep-4 : inexact-ok += exp2m1 downward binary128 0xf.ffbep-4 : 0xf.ffa481ae716262de8acb8406b22p-4 : inexact-ok += exp2m1 tonearest binary128 0xf.ffbep-4 : 0xf.ffa481ae716262de8acb8406b22p-4 : inexact-ok += exp2m1 towardzero binary128 0xf.ffbep-4 : 0xf.ffa481ae716262de8acb8406b22p-4 : inexact-ok += exp2m1 upward binary128 0xf.ffbep-4 : 0xf.ffa481ae716262de8acb8406b228p-4 : inexact-ok += exp2m1 downward ibm128 0xf.ffbep-4 : 0xf.ffa481ae716262de8acb8406bp-4 : inexact-ok += exp2m1 tonearest ibm128 0xf.ffbep-4 : 0xf.ffa481ae716262de8acb8406b4p-4 : inexact-ok += exp2m1 towardzero ibm128 0xf.ffbep-4 : 0xf.ffa481ae716262de8acb8406bp-4 : inexact-ok += exp2m1 upward ibm128 0xf.ffbep-4 : 0xf.ffa481ae716262de8acb8406b4p-4 : inexact-ok += exp2m1 downward binary32 0xf.ffbdfp-4 : 0xf.ffa46p-4 : inexact-ok += exp2m1 tonearest binary32 0xf.ffbdfp-4 : 0xf.ffa47p-4 : inexact-ok += exp2m1 towardzero binary32 0xf.ffbdfp-4 : 0xf.ffa46p-4 : inexact-ok += exp2m1 upward binary32 0xf.ffbdfp-4 : 0xf.ffa47p-4 : inexact-ok += exp2m1 downward binary64 0xf.ffbdfp-4 : 0xf.ffa46b806dd6p-4 : inexact-ok += exp2m1 tonearest binary64 0xf.ffbdfp-4 : 0xf.ffa46b806dd6p-4 : inexact-ok += exp2m1 towardzero binary64 0xf.ffbdfp-4 : 0xf.ffa46b806dd6p-4 : inexact-ok += exp2m1 upward binary64 0xf.ffbdfp-4 : 0xf.ffa46b806dd68p-4 : inexact-ok += exp2m1 downward intel96 0xf.ffbdfp-4 : 0xf.ffa46b806dd635bp-4 : inexact-ok += exp2m1 tonearest intel96 0xf.ffbdfp-4 : 0xf.ffa46b806dd635bp-4 : inexact-ok += exp2m1 towardzero intel96 0xf.ffbdfp-4 : 0xf.ffa46b806dd635bp-4 : inexact-ok += exp2m1 upward intel96 0xf.ffbdfp-4 : 0xf.ffa46b806dd635cp-4 : inexact-ok += exp2m1 downward m68k96 0xf.ffbdfp-4 : 0xf.ffa46b806dd635bp-4 : inexact-ok += exp2m1 tonearest m68k96 0xf.ffbdfp-4 : 0xf.ffa46b806dd635bp-4 : inexact-ok += exp2m1 towardzero m68k96 0xf.ffbdfp-4 : 0xf.ffa46b806dd635bp-4 : inexact-ok += exp2m1 upward m68k96 0xf.ffbdfp-4 : 0xf.ffa46b806dd635cp-4 : inexact-ok += exp2m1 downward binary128 0xf.ffbdfp-4 : 0xf.ffa46b806dd635b2f6b342811bdp-4 : inexact-ok += exp2m1 tonearest binary128 0xf.ffbdfp-4 : 0xf.ffa46b806dd635b2f6b342811bdp-4 : inexact-ok += exp2m1 towardzero binary128 0xf.ffbdfp-4 : 0xf.ffa46b806dd635b2f6b342811bdp-4 : inexact-ok += exp2m1 upward binary128 0xf.ffbdfp-4 : 0xf.ffa46b806dd635b2f6b342811bd8p-4 : inexact-ok += exp2m1 downward ibm128 0xf.ffbdfp-4 : 0xf.ffa46b806dd635b2f6b3428118p-4 : inexact-ok += exp2m1 tonearest ibm128 0xf.ffbdfp-4 : 0xf.ffa46b806dd635b2f6b342811cp-4 : inexact-ok += exp2m1 towardzero ibm128 0xf.ffbdfp-4 : 0xf.ffa46b806dd635b2f6b3428118p-4 : inexact-ok += exp2m1 upward ibm128 0xf.ffbdfp-4 : 0xf.ffa46b806dd635b2f6b342811cp-4 : inexact-ok += exp2m1 downward binary64 0xf.ffbdf4b6293bp-4 : 0xf.ffa4720873478p-4 : inexact-ok += exp2m1 tonearest binary64 0xf.ffbdf4b6293bp-4 : 0xf.ffa4720873478p-4 : inexact-ok += exp2m1 towardzero binary64 0xf.ffbdf4b6293bp-4 : 0xf.ffa4720873478p-4 : inexact-ok += exp2m1 upward binary64 0xf.ffbdf4b6293bp-4 : 0xf.ffa472087348p-4 : inexact-ok += exp2m1 downward intel96 0xf.ffbdf4b6293bp-4 : 0xf.ffa472087347b56p-4 : inexact-ok += exp2m1 tonearest intel96 0xf.ffbdf4b6293bp-4 : 0xf.ffa472087347b57p-4 : inexact-ok += exp2m1 towardzero intel96 0xf.ffbdf4b6293bp-4 : 0xf.ffa472087347b56p-4 : inexact-ok += exp2m1 upward intel96 0xf.ffbdf4b6293bp-4 : 0xf.ffa472087347b57p-4 : inexact-ok += exp2m1 downward m68k96 0xf.ffbdf4b6293bp-4 : 0xf.ffa472087347b56p-4 : inexact-ok += exp2m1 tonearest m68k96 0xf.ffbdf4b6293bp-4 : 0xf.ffa472087347b57p-4 : inexact-ok += exp2m1 towardzero m68k96 0xf.ffbdf4b6293bp-4 : 0xf.ffa472087347b56p-4 : inexact-ok += exp2m1 upward m68k96 0xf.ffbdf4b6293bp-4 : 0xf.ffa472087347b57p-4 : inexact-ok += exp2m1 downward binary128 0xf.ffbdf4b6293bp-4 : 0xf.ffa472087347b56d7f3ec806acc8p-4 : inexact-ok += exp2m1 tonearest binary128 0xf.ffbdf4b6293bp-4 : 0xf.ffa472087347b56d7f3ec806acc8p-4 : inexact-ok += exp2m1 towardzero binary128 0xf.ffbdf4b6293bp-4 : 0xf.ffa472087347b56d7f3ec806acc8p-4 : inexact-ok += exp2m1 upward binary128 0xf.ffbdf4b6293bp-4 : 0xf.ffa472087347b56d7f3ec806acdp-4 : inexact-ok += exp2m1 downward ibm128 0xf.ffbdf4b6293bp-4 : 0xf.ffa472087347b56d7f3ec806acp-4 : inexact-ok += exp2m1 tonearest ibm128 0xf.ffbdf4b6293bp-4 : 0xf.ffa472087347b56d7f3ec806acp-4 : inexact-ok += exp2m1 towardzero ibm128 0xf.ffbdf4b6293bp-4 : 0xf.ffa472087347b56d7f3ec806acp-4 : inexact-ok += exp2m1 upward ibm128 0xf.ffbdf4b6293bp-4 : 0xf.ffa472087347b56d7f3ec806bp-4 : inexact-ok +exp2m1 -0x1.715bd8586d057p-12 += exp2m1 downward binary32 -0x1.715bd8p-12 : -0xf.ffd1ep-16 : inexact-ok += exp2m1 tonearest binary32 -0x1.715bd8p-12 : -0xf.ffd1ep-16 : inexact-ok += exp2m1 towardzero binary32 -0x1.715bd8p-12 : -0xf.ffd1dp-16 : inexact-ok += exp2m1 upward binary32 -0x1.715bd8p-12 : -0xf.ffd1dp-16 : inexact-ok += exp2m1 downward binary64 -0x1.715bd8p-12 : -0xf.ffd1dabcd4a5p-16 : inexact-ok += exp2m1 tonearest binary64 -0x1.715bd8p-12 : -0xf.ffd1dabcd4a5p-16 : inexact-ok += exp2m1 towardzero binary64 -0x1.715bd8p-12 : -0xf.ffd1dabcd4a48p-16 : inexact-ok += exp2m1 upward binary64 -0x1.715bd8p-12 : -0xf.ffd1dabcd4a48p-16 : inexact-ok += exp2m1 downward intel96 -0x1.715bd8p-12 : -0xf.ffd1dabcd4a4db5p-16 : inexact-ok += exp2m1 tonearest intel96 -0x1.715bd8p-12 : -0xf.ffd1dabcd4a4db4p-16 : inexact-ok += exp2m1 towardzero intel96 -0x1.715bd8p-12 : -0xf.ffd1dabcd4a4db4p-16 : inexact-ok += exp2m1 upward intel96 -0x1.715bd8p-12 : -0xf.ffd1dabcd4a4db4p-16 : inexact-ok += exp2m1 downward m68k96 -0x1.715bd8p-12 : -0xf.ffd1dabcd4a4db5p-16 : inexact-ok += exp2m1 tonearest m68k96 -0x1.715bd8p-12 : -0xf.ffd1dabcd4a4db4p-16 : inexact-ok += exp2m1 towardzero m68k96 -0x1.715bd8p-12 : -0xf.ffd1dabcd4a4db4p-16 : inexact-ok += exp2m1 upward m68k96 -0x1.715bd8p-12 : -0xf.ffd1dabcd4a4db4p-16 : inexact-ok += exp2m1 downward binary128 -0x1.715bd8p-12 : -0xf.ffd1dabcd4a4db40fb8eb396224p-16 : inexact-ok += exp2m1 tonearest binary128 -0x1.715bd8p-12 : -0xf.ffd1dabcd4a4db40fb8eb396224p-16 : inexact-ok += exp2m1 towardzero binary128 -0x1.715bd8p-12 : -0xf.ffd1dabcd4a4db40fb8eb3962238p-16 : inexact-ok += exp2m1 upward binary128 -0x1.715bd8p-12 : -0xf.ffd1dabcd4a4db40fb8eb3962238p-16 : inexact-ok += exp2m1 downward ibm128 -0x1.715bd8p-12 : -0xf.ffd1dabcd4a4db40fb8eb39624p-16 : inexact-ok += exp2m1 tonearest ibm128 -0x1.715bd8p-12 : -0xf.ffd1dabcd4a4db40fb8eb39624p-16 : inexact-ok += exp2m1 towardzero ibm128 -0x1.715bd8p-12 : -0xf.ffd1dabcd4a4db40fb8eb3962p-16 : inexact-ok += exp2m1 upward ibm128 -0x1.715bd8p-12 : -0xf.ffd1dabcd4a4db40fb8eb3962p-16 : inexact-ok += exp2m1 downward binary32 -0x1.715bdap-12 : -0xf.ffd2p-16 : inexact-ok += exp2m1 tonearest binary32 -0x1.715bdap-12 : -0xf.ffd1fp-16 : inexact-ok += exp2m1 towardzero binary32 -0x1.715bdap-12 : -0xf.ffd1fp-16 : inexact-ok += exp2m1 upward binary32 -0x1.715bdap-12 : -0xf.ffd1fp-16 : inexact-ok += exp2m1 downward binary64 -0x1.715bdap-12 : -0xf.ffd1f0e9b4c4p-16 : inexact-ok += exp2m1 tonearest binary64 -0x1.715bdap-12 : -0xf.ffd1f0e9b4c38p-16 : inexact-ok += exp2m1 towardzero binary64 -0x1.715bdap-12 : -0xf.ffd1f0e9b4c38p-16 : inexact-ok += exp2m1 upward binary64 -0x1.715bdap-12 : -0xf.ffd1f0e9b4c38p-16 : inexact-ok += exp2m1 downward intel96 -0x1.715bdap-12 : -0xf.ffd1f0e9b4c3a42p-16 : inexact-ok += exp2m1 tonearest intel96 -0x1.715bdap-12 : -0xf.ffd1f0e9b4c3a42p-16 : inexact-ok += exp2m1 towardzero intel96 -0x1.715bdap-12 : -0xf.ffd1f0e9b4c3a41p-16 : inexact-ok += exp2m1 upward intel96 -0x1.715bdap-12 : -0xf.ffd1f0e9b4c3a41p-16 : inexact-ok += exp2m1 downward m68k96 -0x1.715bdap-12 : -0xf.ffd1f0e9b4c3a42p-16 : inexact-ok += exp2m1 tonearest m68k96 -0x1.715bdap-12 : -0xf.ffd1f0e9b4c3a42p-16 : inexact-ok += exp2m1 towardzero m68k96 -0x1.715bdap-12 : -0xf.ffd1f0e9b4c3a41p-16 : inexact-ok += exp2m1 upward m68k96 -0x1.715bdap-12 : -0xf.ffd1f0e9b4c3a41p-16 : inexact-ok += exp2m1 downward binary128 -0x1.715bdap-12 : -0xf.ffd1f0e9b4c3a41fe3f1f444d02p-16 : inexact-ok += exp2m1 tonearest binary128 -0x1.715bdap-12 : -0xf.ffd1f0e9b4c3a41fe3f1f444d02p-16 : inexact-ok += exp2m1 towardzero binary128 -0x1.715bdap-12 : -0xf.ffd1f0e9b4c3a41fe3f1f444d018p-16 : inexact-ok += exp2m1 upward binary128 -0x1.715bdap-12 : -0xf.ffd1f0e9b4c3a41fe3f1f444d018p-16 : inexact-ok += exp2m1 downward ibm128 -0x1.715bdap-12 : -0xf.ffd1f0e9b4c3a41fe3f1f444d4p-16 : inexact-ok += exp2m1 tonearest ibm128 -0x1.715bdap-12 : -0xf.ffd1f0e9b4c3a41fe3f1f444dp-16 : inexact-ok += exp2m1 towardzero ibm128 -0x1.715bdap-12 : -0xf.ffd1f0e9b4c3a41fe3f1f444dp-16 : inexact-ok += exp2m1 upward ibm128 -0x1.715bdap-12 : -0xf.ffd1f0e9b4c3a41fe3f1f444dp-16 : inexact-ok += exp2m1 downward binary64 -0x1.715bd8586d057p-12 : -0xf.ffd1de9143f48p-16 : inexact-ok += exp2m1 tonearest binary64 -0x1.715bd8586d057p-12 : -0xf.ffd1de9143f4p-16 : inexact-ok += exp2m1 towardzero binary64 -0x1.715bd8586d057p-12 : -0xf.ffd1de9143f4p-16 : inexact-ok += exp2m1 upward binary64 -0x1.715bd8586d057p-12 : -0xf.ffd1de9143f4p-16 : inexact-ok += exp2m1 downward intel96 -0x1.715bd8586d057p-12 : -0xf.ffd1de9143f4268p-16 : inexact-ok += exp2m1 tonearest intel96 -0x1.715bd8586d057p-12 : -0xf.ffd1de9143f4268p-16 : inexact-ok += exp2m1 towardzero intel96 -0x1.715bd8586d057p-12 : -0xf.ffd1de9143f4267p-16 : inexact-ok += exp2m1 upward intel96 -0x1.715bd8586d057p-12 : -0xf.ffd1de9143f4267p-16 : inexact-ok += exp2m1 downward m68k96 -0x1.715bd8586d057p-12 : -0xf.ffd1de9143f4268p-16 : inexact-ok += exp2m1 tonearest m68k96 -0x1.715bd8586d057p-12 : -0xf.ffd1de9143f4268p-16 : inexact-ok += exp2m1 towardzero m68k96 -0x1.715bd8586d057p-12 : -0xf.ffd1de9143f4267p-16 : inexact-ok += exp2m1 upward m68k96 -0x1.715bd8586d057p-12 : -0xf.ffd1de9143f4267p-16 : inexact-ok += exp2m1 downward binary128 -0x1.715bd8586d057p-12 : -0xf.ffd1de9143f42679861d7bed9a6p-16 : inexact-ok += exp2m1 tonearest binary128 -0x1.715bd8586d057p-12 : -0xf.ffd1de9143f42679861d7bed9a6p-16 : inexact-ok += exp2m1 towardzero binary128 -0x1.715bd8586d057p-12 : -0xf.ffd1de9143f42679861d7bed9a58p-16 : inexact-ok += exp2m1 upward binary128 -0x1.715bd8586d057p-12 : -0xf.ffd1de9143f42679861d7bed9a58p-16 : inexact-ok += exp2m1 downward ibm128 -0x1.715bd8586d057p-12 : -0xf.ffd1de9143f42679861d7bed9cp-16 : inexact-ok += exp2m1 tonearest ibm128 -0x1.715bd8586d057p-12 : -0xf.ffd1de9143f42679861d7bed9cp-16 : inexact-ok += exp2m1 towardzero ibm128 -0x1.715bd8586d057p-12 : -0xf.ffd1de9143f42679861d7bed98p-16 : inexact-ok += exp2m1 upward ibm128 -0x1.715bd8586d057p-12 : -0xf.ffd1de9143f42679861d7bed98p-16 : inexact-ok +exp2m1 0x1.ffffb5c6996fp-1 += exp2m1 downward binary32 0xf.fffdbp-4 : 0xf.fffccp-4 : inexact-ok += exp2m1 tonearest binary32 0xf.fffdbp-4 : 0xf.fffcdp-4 : inexact-ok += exp2m1 towardzero binary32 0xf.fffdbp-4 : 0xf.fffccp-4 : inexact-ok += exp2m1 upward binary32 0xf.fffdbp-4 : 0xf.fffcdp-4 : inexact-ok += exp2m1 downward binary64 0xf.fffdbp-4 : 0xf.fffccb507a418p-4 : inexact-ok += exp2m1 tonearest binary64 0xf.fffdbp-4 : 0xf.fffccb507a418p-4 : inexact-ok += exp2m1 towardzero binary64 0xf.fffdbp-4 : 0xf.fffccb507a418p-4 : inexact-ok += exp2m1 upward binary64 0xf.fffdbp-4 : 0xf.fffccb507a42p-4 : inexact-ok += exp2m1 downward intel96 0xf.fffdbp-4 : 0xf.fffccb507a41acp-4 : inexact-ok += exp2m1 tonearest intel96 0xf.fffdbp-4 : 0xf.fffccb507a41acp-4 : inexact-ok += exp2m1 towardzero intel96 0xf.fffdbp-4 : 0xf.fffccb507a41acp-4 : inexact-ok += exp2m1 upward intel96 0xf.fffdbp-4 : 0xf.fffccb507a41ac1p-4 : inexact-ok += exp2m1 downward m68k96 0xf.fffdbp-4 : 0xf.fffccb507a41acp-4 : inexact-ok += exp2m1 tonearest m68k96 0xf.fffdbp-4 : 0xf.fffccb507a41acp-4 : inexact-ok += exp2m1 towardzero m68k96 0xf.fffdbp-4 : 0xf.fffccb507a41acp-4 : inexact-ok += exp2m1 upward m68k96 0xf.fffdbp-4 : 0xf.fffccb507a41ac1p-4 : inexact-ok += exp2m1 downward binary128 0xf.fffdbp-4 : 0xf.fffccb507a41ac03d77fa3f5fc7p-4 : inexact-ok += exp2m1 tonearest binary128 0xf.fffdbp-4 : 0xf.fffccb507a41ac03d77fa3f5fc78p-4 : inexact-ok += exp2m1 towardzero binary128 0xf.fffdbp-4 : 0xf.fffccb507a41ac03d77fa3f5fc7p-4 : inexact-ok += exp2m1 upward binary128 0xf.fffdbp-4 : 0xf.fffccb507a41ac03d77fa3f5fc78p-4 : inexact-ok += exp2m1 downward ibm128 0xf.fffdbp-4 : 0xf.fffccb507a41ac03d77fa3f5fcp-4 : inexact-ok += exp2m1 tonearest ibm128 0xf.fffdbp-4 : 0xf.fffccb507a41ac03d77fa3f5fcp-4 : inexact-ok += exp2m1 towardzero ibm128 0xf.fffdbp-4 : 0xf.fffccb507a41ac03d77fa3f5fcp-4 : inexact-ok += exp2m1 upward ibm128 0xf.fffdbp-4 : 0xf.fffccb507a41ac03d77fa3f6p-4 : inexact-ok += exp2m1 downward binary32 0xf.fffdap-4 : 0xf.fffcbp-4 : inexact-ok += exp2m1 tonearest binary32 0xf.fffdap-4 : 0xf.fffcbp-4 : inexact-ok += exp2m1 towardzero binary32 0xf.fffdap-4 : 0xf.fffcbp-4 : inexact-ok += exp2m1 upward binary32 0xf.fffdap-4 : 0xf.fffccp-4 : inexact-ok += exp2m1 downward binary64 0xf.fffdap-4 : 0xf.fffcb5223983p-4 : inexact-ok += exp2m1 tonearest binary64 0xf.fffdap-4 : 0xf.fffcb5223983p-4 : inexact-ok += exp2m1 towardzero binary64 0xf.fffdap-4 : 0xf.fffcb5223983p-4 : inexact-ok += exp2m1 upward binary64 0xf.fffdap-4 : 0xf.fffcb52239838p-4 : inexact-ok += exp2m1 downward intel96 0xf.fffdap-4 : 0xf.fffcb52239833cdp-4 : inexact-ok += exp2m1 tonearest intel96 0xf.fffdap-4 : 0xf.fffcb52239833cdp-4 : inexact-ok += exp2m1 towardzero intel96 0xf.fffdap-4 : 0xf.fffcb52239833cdp-4 : inexact-ok += exp2m1 upward intel96 0xf.fffdap-4 : 0xf.fffcb52239833cep-4 : inexact-ok += exp2m1 downward m68k96 0xf.fffdap-4 : 0xf.fffcb52239833cdp-4 : inexact-ok += exp2m1 tonearest m68k96 0xf.fffdap-4 : 0xf.fffcb52239833cdp-4 : inexact-ok += exp2m1 towardzero m68k96 0xf.fffdap-4 : 0xf.fffcb52239833cdp-4 : inexact-ok += exp2m1 upward m68k96 0xf.fffdap-4 : 0xf.fffcb52239833cep-4 : inexact-ok += exp2m1 downward binary128 0xf.fffdap-4 : 0xf.fffcb52239833cd7199f7598ab28p-4 : inexact-ok += exp2m1 tonearest binary128 0xf.fffdap-4 : 0xf.fffcb52239833cd7199f7598ab28p-4 : inexact-ok += exp2m1 towardzero binary128 0xf.fffdap-4 : 0xf.fffcb52239833cd7199f7598ab28p-4 : inexact-ok += exp2m1 upward binary128 0xf.fffdap-4 : 0xf.fffcb52239833cd7199f7598ab3p-4 : inexact-ok += exp2m1 downward ibm128 0xf.fffdap-4 : 0xf.fffcb52239833cd7199f7598a8p-4 : inexact-ok += exp2m1 tonearest ibm128 0xf.fffdap-4 : 0xf.fffcb52239833cd7199f7598acp-4 : inexact-ok += exp2m1 towardzero ibm128 0xf.fffdap-4 : 0xf.fffcb52239833cd7199f7598a8p-4 : inexact-ok += exp2m1 upward ibm128 0xf.fffdap-4 : 0xf.fffcb52239833cd7199f7598acp-4 : inexact-ok += exp2m1 downward binary64 0xf.fffdae34cb78p-4 : 0xf.fffcc8d3e28c8p-4 : inexact-ok += exp2m1 tonearest binary64 0xf.fffdae34cb78p-4 : 0xf.fffcc8d3e28c8p-4 : inexact-ok += exp2m1 towardzero binary64 0xf.fffdae34cb78p-4 : 0xf.fffcc8d3e28c8p-4 : inexact-ok += exp2m1 upward binary64 0xf.fffdae34cb78p-4 : 0xf.fffcc8d3e28dp-4 : inexact-ok += exp2m1 downward intel96 0xf.fffdae34cb78p-4 : 0xf.fffcc8d3e28cb57p-4 : inexact-ok += exp2m1 tonearest intel96 0xf.fffdae34cb78p-4 : 0xf.fffcc8d3e28cb58p-4 : inexact-ok += exp2m1 towardzero intel96 0xf.fffdae34cb78p-4 : 0xf.fffcc8d3e28cb57p-4 : inexact-ok += exp2m1 upward intel96 0xf.fffdae34cb78p-4 : 0xf.fffcc8d3e28cb58p-4 : inexact-ok += exp2m1 downward m68k96 0xf.fffdae34cb78p-4 : 0xf.fffcc8d3e28cb57p-4 : inexact-ok += exp2m1 tonearest m68k96 0xf.fffdae34cb78p-4 : 0xf.fffcc8d3e28cb58p-4 : inexact-ok += exp2m1 towardzero m68k96 0xf.fffdae34cb78p-4 : 0xf.fffcc8d3e28cb57p-4 : inexact-ok += exp2m1 upward m68k96 0xf.fffdae34cb78p-4 : 0xf.fffcc8d3e28cb58p-4 : inexact-ok += exp2m1 downward binary128 0xf.fffdae34cb78p-4 : 0xf.fffcc8d3e28cb579058d0242ddep-4 : inexact-ok += exp2m1 tonearest binary128 0xf.fffdae34cb78p-4 : 0xf.fffcc8d3e28cb579058d0242ddep-4 : inexact-ok += exp2m1 towardzero binary128 0xf.fffdae34cb78p-4 : 0xf.fffcc8d3e28cb579058d0242ddep-4 : inexact-ok += exp2m1 upward binary128 0xf.fffdae34cb78p-4 : 0xf.fffcc8d3e28cb579058d0242dde8p-4 : inexact-ok += exp2m1 downward ibm128 0xf.fffdae34cb78p-4 : 0xf.fffcc8d3e28cb579058d0242dcp-4 : inexact-ok += exp2m1 tonearest ibm128 0xf.fffdae34cb78p-4 : 0xf.fffcc8d3e28cb579058d0242dcp-4 : inexact-ok += exp2m1 towardzero ibm128 0xf.fffdae34cb78p-4 : 0xf.fffcc8d3e28cb579058d0242dcp-4 : inexact-ok += exp2m1 upward ibm128 0xf.fffdae34cb78p-4 : 0xf.fffcc8d3e28cb579058d0242ep-4 : inexact-ok +exp2m1 0x9.58009dd25960a7bp-4 += exp2m1 downward binary32 0x9.5800ap-4 : 0x7.fbd6ap-4 : inexact-ok += exp2m1 tonearest binary32 0x9.5800ap-4 : 0x7.fbd6ap-4 : inexact-ok += exp2m1 towardzero binary32 0x9.5800ap-4 : 0x7.fbd6ap-4 : inexact-ok += exp2m1 upward binary32 0x9.5800ap-4 : 0x7.fbd6a8p-4 : inexact-ok += exp2m1 downward binary64 0x9.5800ap-4 : 0x7.fbd6a1e924c7p-4 : inexact-ok += exp2m1 tonearest binary64 0x9.5800ap-4 : 0x7.fbd6a1e924c7p-4 : inexact-ok += exp2m1 towardzero binary64 0x9.5800ap-4 : 0x7.fbd6a1e924c7p-4 : inexact-ok += exp2m1 upward binary64 0x9.5800ap-4 : 0x7.fbd6a1e924c74p-4 : inexact-ok += exp2m1 downward intel96 0x9.5800ap-4 : 0x7.fbd6a1e924c702fp-4 : inexact-ok += exp2m1 tonearest intel96 0x9.5800ap-4 : 0x7.fbd6a1e924c702f8p-4 : inexact-ok += exp2m1 towardzero intel96 0x9.5800ap-4 : 0x7.fbd6a1e924c702fp-4 : inexact-ok += exp2m1 upward intel96 0x9.5800ap-4 : 0x7.fbd6a1e924c702f8p-4 : inexact-ok += exp2m1 downward m68k96 0x9.5800ap-4 : 0x7.fbd6a1e924c702fp-4 : inexact-ok += exp2m1 tonearest m68k96 0x9.5800ap-4 : 0x7.fbd6a1e924c702f8p-4 : inexact-ok += exp2m1 towardzero m68k96 0x9.5800ap-4 : 0x7.fbd6a1e924c702fp-4 : inexact-ok += exp2m1 upward m68k96 0x9.5800ap-4 : 0x7.fbd6a1e924c702f8p-4 : inexact-ok += exp2m1 downward binary128 0x9.5800ap-4 : 0x7.fbd6a1e924c702f6150eef68cec8p-4 : inexact-ok += exp2m1 tonearest binary128 0x9.5800ap-4 : 0x7.fbd6a1e924c702f6150eef68ceccp-4 : inexact-ok += exp2m1 towardzero binary128 0x9.5800ap-4 : 0x7.fbd6a1e924c702f6150eef68cec8p-4 : inexact-ok += exp2m1 upward binary128 0x9.5800ap-4 : 0x7.fbd6a1e924c702f6150eef68ceccp-4 : inexact-ok += exp2m1 downward ibm128 0x9.5800ap-4 : 0x7.fbd6a1e924c702f6150eef68cep-4 : inexact-ok += exp2m1 tonearest ibm128 0x9.5800ap-4 : 0x7.fbd6a1e924c702f6150eef68cep-4 : inexact-ok += exp2m1 towardzero ibm128 0x9.5800ap-4 : 0x7.fbd6a1e924c702f6150eef68cep-4 : inexact-ok += exp2m1 upward ibm128 0x9.5800ap-4 : 0x7.fbd6a1e924c702f6150eef68dp-4 : inexact-ok += exp2m1 downward binary32 0x9.58009p-4 : 0x7.fbd69p-4 : inexact-ok += exp2m1 tonearest binary32 0x9.58009p-4 : 0x7.fbd69p-4 : inexact-ok += exp2m1 towardzero binary32 0x9.58009p-4 : 0x7.fbd69p-4 : inexact-ok += exp2m1 upward binary32 0x9.58009p-4 : 0x7.fbd698p-4 : inexact-ok += exp2m1 downward binary64 0x9.58009p-4 : 0x7.fbd6914955024p-4 : inexact-ok += exp2m1 tonearest binary64 0x9.58009p-4 : 0x7.fbd6914955028p-4 : inexact-ok += exp2m1 towardzero binary64 0x9.58009p-4 : 0x7.fbd6914955024p-4 : inexact-ok += exp2m1 upward binary64 0x9.58009p-4 : 0x7.fbd6914955028p-4 : inexact-ok += exp2m1 downward intel96 0x9.58009p-4 : 0x7.fbd69149550267bp-4 : inexact-ok += exp2m1 tonearest intel96 0x9.58009p-4 : 0x7.fbd69149550267bp-4 : inexact-ok += exp2m1 towardzero intel96 0x9.58009p-4 : 0x7.fbd69149550267bp-4 : inexact-ok += exp2m1 upward intel96 0x9.58009p-4 : 0x7.fbd69149550267b8p-4 : inexact-ok += exp2m1 downward m68k96 0x9.58009p-4 : 0x7.fbd69149550267bp-4 : inexact-ok += exp2m1 tonearest m68k96 0x9.58009p-4 : 0x7.fbd69149550267bp-4 : inexact-ok += exp2m1 towardzero m68k96 0x9.58009p-4 : 0x7.fbd69149550267bp-4 : inexact-ok += exp2m1 upward m68k96 0x9.58009p-4 : 0x7.fbd69149550267b8p-4 : inexact-ok += exp2m1 downward binary128 0x9.58009p-4 : 0x7.fbd69149550267b0d946bd6c88bp-4 : inexact-ok += exp2m1 tonearest binary128 0x9.58009p-4 : 0x7.fbd69149550267b0d946bd6c88bp-4 : inexact-ok += exp2m1 towardzero binary128 0x9.58009p-4 : 0x7.fbd69149550267b0d946bd6c88bp-4 : inexact-ok += exp2m1 upward binary128 0x9.58009p-4 : 0x7.fbd69149550267b0d946bd6c88b4p-4 : inexact-ok += exp2m1 downward ibm128 0x9.58009p-4 : 0x7.fbd69149550267b0d946bd6c88p-4 : inexact-ok += exp2m1 tonearest ibm128 0x9.58009p-4 : 0x7.fbd69149550267b0d946bd6c88p-4 : inexact-ok += exp2m1 towardzero ibm128 0x9.58009p-4 : 0x7.fbd69149550267b0d946bd6c88p-4 : inexact-ok += exp2m1 upward ibm128 0x9.58009p-4 : 0x7.fbd69149550267b0d946bd6c8ap-4 : inexact-ok += exp2m1 downward binary64 0x9.58009dd25961p-4 : 0x7.fbd69fa5bc36p-4 : inexact-ok += exp2m1 tonearest binary64 0x9.58009dd25961p-4 : 0x7.fbd69fa5bc364p-4 : inexact-ok += exp2m1 towardzero binary64 0x9.58009dd25961p-4 : 0x7.fbd69fa5bc36p-4 : inexact-ok += exp2m1 upward binary64 0x9.58009dd25961p-4 : 0x7.fbd69fa5bc364p-4 : inexact-ok += exp2m1 downward intel96 0x9.58009dd25961p-4 : 0x7.fbd69fa5bc362968p-4 : inexact-ok += exp2m1 tonearest intel96 0x9.58009dd25961p-4 : 0x7.fbd69fa5bc362968p-4 : inexact-ok += exp2m1 towardzero intel96 0x9.58009dd25961p-4 : 0x7.fbd69fa5bc362968p-4 : inexact-ok += exp2m1 upward intel96 0x9.58009dd25961p-4 : 0x7.fbd69fa5bc36297p-4 : inexact-ok += exp2m1 downward m68k96 0x9.58009dd25961p-4 : 0x7.fbd69fa5bc362968p-4 : inexact-ok += exp2m1 tonearest m68k96 0x9.58009dd25961p-4 : 0x7.fbd69fa5bc362968p-4 : inexact-ok += exp2m1 towardzero m68k96 0x9.58009dd25961p-4 : 0x7.fbd69fa5bc362968p-4 : inexact-ok += exp2m1 upward m68k96 0x9.58009dd25961p-4 : 0x7.fbd69fa5bc36297p-4 : inexact-ok += exp2m1 downward binary128 0x9.58009dd25961p-4 : 0x7.fbd69fa5bc36296843f49965e7acp-4 : inexact-ok += exp2m1 tonearest binary128 0x9.58009dd25961p-4 : 0x7.fbd69fa5bc36296843f49965e7acp-4 : inexact-ok += exp2m1 towardzero binary128 0x9.58009dd25961p-4 : 0x7.fbd69fa5bc36296843f49965e7acp-4 : inexact-ok += exp2m1 upward binary128 0x9.58009dd25961p-4 : 0x7.fbd69fa5bc36296843f49965e7bp-4 : inexact-ok += exp2m1 downward ibm128 0x9.58009dd25961p-4 : 0x7.fbd69fa5bc36296843f49965e6p-4 : inexact-ok += exp2m1 tonearest ibm128 0x9.58009dd25961p-4 : 0x7.fbd69fa5bc36296843f49965e8p-4 : inexact-ok += exp2m1 towardzero ibm128 0x9.58009dd25961p-4 : 0x7.fbd69fa5bc36296843f49965e6p-4 : inexact-ok += exp2m1 upward ibm128 0x9.58009dd25961p-4 : 0x7.fbd69fa5bc36296843f49965e8p-4 : inexact-ok += exp2m1 downward binary64 0x9.58009dd259608p-4 : 0x7.fbd69fa5bc358p-4 : inexact-ok += exp2m1 tonearest binary64 0x9.58009dd259608p-4 : 0x7.fbd69fa5bc35cp-4 : inexact-ok += exp2m1 towardzero binary64 0x9.58009dd259608p-4 : 0x7.fbd69fa5bc358p-4 : inexact-ok += exp2m1 upward binary64 0x9.58009dd259608p-4 : 0x7.fbd69fa5bc35cp-4 : inexact-ok += exp2m1 downward intel96 0x9.58009dd259608p-4 : 0x7.fbd69fa5bc35a468p-4 : inexact-ok += exp2m1 tonearest intel96 0x9.58009dd259608p-4 : 0x7.fbd69fa5bc35a468p-4 : inexact-ok += exp2m1 towardzero intel96 0x9.58009dd259608p-4 : 0x7.fbd69fa5bc35a468p-4 : inexact-ok += exp2m1 upward intel96 0x9.58009dd259608p-4 : 0x7.fbd69fa5bc35a47p-4 : inexact-ok += exp2m1 downward m68k96 0x9.58009dd259608p-4 : 0x7.fbd69fa5bc35a468p-4 : inexact-ok += exp2m1 tonearest m68k96 0x9.58009dd259608p-4 : 0x7.fbd69fa5bc35a468p-4 : inexact-ok += exp2m1 towardzero m68k96 0x9.58009dd259608p-4 : 0x7.fbd69fa5bc35a468p-4 : inexact-ok += exp2m1 upward m68k96 0x9.58009dd259608p-4 : 0x7.fbd69fa5bc35a47p-4 : inexact-ok += exp2m1 downward binary128 0x9.58009dd259608p-4 : 0x7.fbd69fa5bc35a469c5ae348abd98p-4 : inexact-ok += exp2m1 tonearest binary128 0x9.58009dd259608p-4 : 0x7.fbd69fa5bc35a469c5ae348abd9cp-4 : inexact-ok += exp2m1 towardzero binary128 0x9.58009dd259608p-4 : 0x7.fbd69fa5bc35a469c5ae348abd98p-4 : inexact-ok += exp2m1 upward binary128 0x9.58009dd259608p-4 : 0x7.fbd69fa5bc35a469c5ae348abd9cp-4 : inexact-ok += exp2m1 downward ibm128 0x9.58009dd259608p-4 : 0x7.fbd69fa5bc35a469c5ae348abcp-4 : inexact-ok += exp2m1 tonearest ibm128 0x9.58009dd259608p-4 : 0x7.fbd69fa5bc35a469c5ae348abep-4 : inexact-ok += exp2m1 towardzero ibm128 0x9.58009dd259608p-4 : 0x7.fbd69fa5bc35a469c5ae348abcp-4 : inexact-ok += exp2m1 upward ibm128 0x9.58009dd259608p-4 : 0x7.fbd69fa5bc35a469c5ae348abep-4 : inexact-ok += exp2m1 downward intel96 0x9.58009dd25960a7bp-4 : 0x7.fbd69fa5bc35cdap-4 : inexact-ok += exp2m1 tonearest intel96 0x9.58009dd25960a7bp-4 : 0x7.fbd69fa5bc35cda8p-4 : inexact-ok += exp2m1 towardzero intel96 0x9.58009dd25960a7bp-4 : 0x7.fbd69fa5bc35cdap-4 : inexact-ok += exp2m1 upward intel96 0x9.58009dd25960a7bp-4 : 0x7.fbd69fa5bc35cda8p-4 : inexact-ok += exp2m1 downward m68k96 0x9.58009dd25960a7bp-4 : 0x7.fbd69fa5bc35cdap-4 : inexact-ok += exp2m1 tonearest m68k96 0x9.58009dd25960a7bp-4 : 0x7.fbd69fa5bc35cda8p-4 : inexact-ok += exp2m1 towardzero m68k96 0x9.58009dd25960a7bp-4 : 0x7.fbd69fa5bc35cdap-4 : inexact-ok += exp2m1 upward m68k96 0x9.58009dd25960a7bp-4 : 0x7.fbd69fa5bc35cda8p-4 : inexact-ok += exp2m1 downward binary128 0x9.58009dd25960a7bp-4 : 0x7.fbd69fa5bc35cda62e1548103174p-4 : inexact-ok += exp2m1 tonearest binary128 0x9.58009dd25960a7bp-4 : 0x7.fbd69fa5bc35cda62e1548103178p-4 : inexact-ok += exp2m1 towardzero binary128 0x9.58009dd25960a7bp-4 : 0x7.fbd69fa5bc35cda62e1548103174p-4 : inexact-ok += exp2m1 upward binary128 0x9.58009dd25960a7bp-4 : 0x7.fbd69fa5bc35cda62e1548103178p-4 : inexact-ok += exp2m1 downward ibm128 0x9.58009dd25960a7bp-4 : 0x7.fbd69fa5bc35cda62e1548103p-4 : inexact-ok += exp2m1 tonearest ibm128 0x9.58009dd25960a7bp-4 : 0x7.fbd69fa5bc35cda62e15481032p-4 : inexact-ok += exp2m1 towardzero ibm128 0x9.58009dd25960a7bp-4 : 0x7.fbd69fa5bc35cda62e1548103p-4 : inexact-ok += exp2m1 upward ibm128 0x9.58009dd25960a7bp-4 : 0x7.fbd69fa5bc35cda62e15481032p-4 : inexact-ok +exp2m1 -0x1.7159454d13d4e3fap-12 += exp2m1 downward binary32 -0x1.715944p-12 : -0xf.ffb55p-16 : inexact-ok += exp2m1 tonearest binary32 -0x1.715944p-12 : -0xf.ffb54p-16 : inexact-ok += exp2m1 towardzero binary32 -0x1.715944p-12 : -0xf.ffb54p-16 : inexact-ok += exp2m1 upward binary32 -0x1.715944p-12 : -0xf.ffb54p-16 : inexact-ok += exp2m1 downward binary64 -0x1.715944p-12 : -0xf.ffb544e3eb5c8p-16 : inexact-ok += exp2m1 tonearest binary64 -0x1.715944p-12 : -0xf.ffb544e3eb5cp-16 : inexact-ok += exp2m1 towardzero binary64 -0x1.715944p-12 : -0xf.ffb544e3eb5cp-16 : inexact-ok += exp2m1 upward binary64 -0x1.715944p-12 : -0xf.ffb544e3eb5cp-16 : inexact-ok += exp2m1 downward intel96 -0x1.715944p-12 : -0xf.ffb544e3eb5c05dp-16 : inexact-ok += exp2m1 tonearest intel96 -0x1.715944p-12 : -0xf.ffb544e3eb5c05cp-16 : inexact-ok += exp2m1 towardzero intel96 -0x1.715944p-12 : -0xf.ffb544e3eb5c05cp-16 : inexact-ok += exp2m1 upward intel96 -0x1.715944p-12 : -0xf.ffb544e3eb5c05cp-16 : inexact-ok += exp2m1 downward m68k96 -0x1.715944p-12 : -0xf.ffb544e3eb5c05dp-16 : inexact-ok += exp2m1 tonearest m68k96 -0x1.715944p-12 : -0xf.ffb544e3eb5c05cp-16 : inexact-ok += exp2m1 towardzero m68k96 -0x1.715944p-12 : -0xf.ffb544e3eb5c05cp-16 : inexact-ok += exp2m1 upward m68k96 -0x1.715944p-12 : -0xf.ffb544e3eb5c05cp-16 : inexact-ok += exp2m1 downward binary128 -0x1.715944p-12 : -0xf.ffb544e3eb5c05c51c23cb4e2d18p-16 : inexact-ok += exp2m1 tonearest binary128 -0x1.715944p-12 : -0xf.ffb544e3eb5c05c51c23cb4e2d18p-16 : inexact-ok += exp2m1 towardzero binary128 -0x1.715944p-12 : -0xf.ffb544e3eb5c05c51c23cb4e2d1p-16 : inexact-ok += exp2m1 upward binary128 -0x1.715944p-12 : -0xf.ffb544e3eb5c05c51c23cb4e2d1p-16 : inexact-ok += exp2m1 downward ibm128 -0x1.715944p-12 : -0xf.ffb544e3eb5c05c51c23cb4e3p-16 : inexact-ok += exp2m1 tonearest ibm128 -0x1.715944p-12 : -0xf.ffb544e3eb5c05c51c23cb4e2cp-16 : inexact-ok += exp2m1 towardzero ibm128 -0x1.715944p-12 : -0xf.ffb544e3eb5c05c51c23cb4e2cp-16 : inexact-ok += exp2m1 upward ibm128 -0x1.715944p-12 : -0xf.ffb544e3eb5c05c51c23cb4e2cp-16 : inexact-ok += exp2m1 downward binary32 -0x1.715946p-12 : -0xf.ffb56p-16 : inexact-ok += exp2m1 tonearest binary32 -0x1.715946p-12 : -0xf.ffb56p-16 : inexact-ok += exp2m1 towardzero binary32 -0x1.715946p-12 : -0xf.ffb55p-16 : inexact-ok += exp2m1 upward binary32 -0x1.715946p-12 : -0xf.ffb55p-16 : inexact-ok += exp2m1 downward binary64 -0x1.715946p-12 : -0xf.ffb55b10cb7d8p-16 : inexact-ok += exp2m1 tonearest binary64 -0x1.715946p-12 : -0xf.ffb55b10cb7d8p-16 : inexact-ok += exp2m1 towardzero binary64 -0x1.715946p-12 : -0xf.ffb55b10cb7dp-16 : inexact-ok += exp2m1 upward binary64 -0x1.715946p-12 : -0xf.ffb55b10cb7dp-16 : inexact-ok += exp2m1 downward intel96 -0x1.715946p-12 : -0xf.ffb55b10cb7d48bp-16 : inexact-ok += exp2m1 tonearest intel96 -0x1.715946p-12 : -0xf.ffb55b10cb7d48bp-16 : inexact-ok += exp2m1 towardzero intel96 -0x1.715946p-12 : -0xf.ffb55b10cb7d48ap-16 : inexact-ok += exp2m1 upward intel96 -0x1.715946p-12 : -0xf.ffb55b10cb7d48ap-16 : inexact-ok += exp2m1 downward m68k96 -0x1.715946p-12 : -0xf.ffb55b10cb7d48bp-16 : inexact-ok += exp2m1 tonearest m68k96 -0x1.715946p-12 : -0xf.ffb55b10cb7d48bp-16 : inexact-ok += exp2m1 towardzero m68k96 -0x1.715946p-12 : -0xf.ffb55b10cb7d48ap-16 : inexact-ok += exp2m1 upward m68k96 -0x1.715946p-12 : -0xf.ffb55b10cb7d48ap-16 : inexact-ok += exp2m1 downward binary128 -0x1.715946p-12 : -0xf.ffb55b10cb7d48af10a7a81e3d4p-16 : inexact-ok += exp2m1 tonearest binary128 -0x1.715946p-12 : -0xf.ffb55b10cb7d48af10a7a81e3d38p-16 : inexact-ok += exp2m1 towardzero binary128 -0x1.715946p-12 : -0xf.ffb55b10cb7d48af10a7a81e3d38p-16 : inexact-ok += exp2m1 upward binary128 -0x1.715946p-12 : -0xf.ffb55b10cb7d48af10a7a81e3d38p-16 : inexact-ok += exp2m1 downward ibm128 -0x1.715946p-12 : -0xf.ffb55b10cb7d48af10a7a81e4p-16 : inexact-ok += exp2m1 tonearest ibm128 -0x1.715946p-12 : -0xf.ffb55b10cb7d48af10a7a81e3cp-16 : inexact-ok += exp2m1 towardzero ibm128 -0x1.715946p-12 : -0xf.ffb55b10cb7d48af10a7a81e3cp-16 : inexact-ok += exp2m1 upward ibm128 -0x1.715946p-12 : -0xf.ffb55b10cb7d48af10a7a81e3cp-16 : inexact-ok += exp2m1 downward binary64 -0x1.7159454d13d4ep-12 : -0xf.ffb55350f7048p-16 : inexact-ok += exp2m1 tonearest binary64 -0x1.7159454d13d4ep-12 : -0xf.ffb55350f7048p-16 : inexact-ok += exp2m1 towardzero binary64 -0x1.7159454d13d4ep-12 : -0xf.ffb55350f704p-16 : inexact-ok += exp2m1 upward binary64 -0x1.7159454d13d4ep-12 : -0xf.ffb55350f704p-16 : inexact-ok += exp2m1 downward intel96 -0x1.7159454d13d4ep-12 : -0xf.ffb55350f70441bp-16 : inexact-ok += exp2m1 tonearest intel96 -0x1.7159454d13d4ep-12 : -0xf.ffb55350f70441bp-16 : inexact-ok += exp2m1 towardzero intel96 -0x1.7159454d13d4ep-12 : -0xf.ffb55350f70441ap-16 : inexact-ok += exp2m1 upward intel96 -0x1.7159454d13d4ep-12 : -0xf.ffb55350f70441ap-16 : inexact-ok += exp2m1 downward m68k96 -0x1.7159454d13d4ep-12 : -0xf.ffb55350f70441bp-16 : inexact-ok += exp2m1 tonearest m68k96 -0x1.7159454d13d4ep-12 : -0xf.ffb55350f70441bp-16 : inexact-ok += exp2m1 towardzero m68k96 -0x1.7159454d13d4ep-12 : -0xf.ffb55350f70441ap-16 : inexact-ok += exp2m1 upward m68k96 -0x1.7159454d13d4ep-12 : -0xf.ffb55350f70441ap-16 : inexact-ok += exp2m1 downward binary128 -0x1.7159454d13d4ep-12 : -0xf.ffb55350f70441adfe6df9952598p-16 : inexact-ok += exp2m1 tonearest binary128 -0x1.7159454d13d4ep-12 : -0xf.ffb55350f70441adfe6df995259p-16 : inexact-ok += exp2m1 towardzero binary128 -0x1.7159454d13d4ep-12 : -0xf.ffb55350f70441adfe6df995259p-16 : inexact-ok += exp2m1 upward binary128 -0x1.7159454d13d4ep-12 : -0xf.ffb55350f70441adfe6df995259p-16 : inexact-ok += exp2m1 downward ibm128 -0x1.7159454d13d4ep-12 : -0xf.ffb55350f70441adfe6df99528p-16 : inexact-ok += exp2m1 tonearest ibm128 -0x1.7159454d13d4ep-12 : -0xf.ffb55350f70441adfe6df99524p-16 : inexact-ok += exp2m1 towardzero ibm128 -0x1.7159454d13d4ep-12 : -0xf.ffb55350f70441adfe6df99524p-16 : inexact-ok += exp2m1 upward ibm128 -0x1.7159454d13d4ep-12 : -0xf.ffb55350f70441adfe6df99524p-16 : inexact-ok += exp2m1 downward binary64 -0x1.7159454d13d4fp-12 : -0xf.ffb55350f705p-16 : inexact-ok += exp2m1 tonearest binary64 -0x1.7159454d13d4fp-12 : -0xf.ffb55350f705p-16 : inexact-ok += exp2m1 towardzero binary64 -0x1.7159454d13d4fp-12 : -0xf.ffb55350f7048p-16 : inexact-ok += exp2m1 upward binary64 -0x1.7159454d13d4fp-12 : -0xf.ffb55350f7048p-16 : inexact-ok += exp2m1 downward intel96 -0x1.7159454d13d4fp-12 : -0xf.ffb55350f704f32p-16 : inexact-ok += exp2m1 tonearest intel96 -0x1.7159454d13d4fp-12 : -0xf.ffb55350f704f31p-16 : inexact-ok += exp2m1 towardzero intel96 -0x1.7159454d13d4fp-12 : -0xf.ffb55350f704f31p-16 : inexact-ok += exp2m1 upward intel96 -0x1.7159454d13d4fp-12 : -0xf.ffb55350f704f31p-16 : inexact-ok += exp2m1 downward m68k96 -0x1.7159454d13d4fp-12 : -0xf.ffb55350f704f32p-16 : inexact-ok += exp2m1 tonearest m68k96 -0x1.7159454d13d4fp-12 : -0xf.ffb55350f704f31p-16 : inexact-ok += exp2m1 towardzero m68k96 -0x1.7159454d13d4fp-12 : -0xf.ffb55350f704f31p-16 : inexact-ok += exp2m1 upward m68k96 -0x1.7159454d13d4fp-12 : -0xf.ffb55350f704f31p-16 : inexact-ok += exp2m1 downward binary128 -0x1.7159454d13d4fp-12 : -0xf.ffb55350f704f314ff780e946b4p-16 : inexact-ok += exp2m1 tonearest binary128 -0x1.7159454d13d4fp-12 : -0xf.ffb55350f704f314ff780e946b4p-16 : inexact-ok += exp2m1 towardzero binary128 -0x1.7159454d13d4fp-12 : -0xf.ffb55350f704f314ff780e946b38p-16 : inexact-ok += exp2m1 upward binary128 -0x1.7159454d13d4fp-12 : -0xf.ffb55350f704f314ff780e946b38p-16 : inexact-ok += exp2m1 downward ibm128 -0x1.7159454d13d4fp-12 : -0xf.ffb55350f704f314ff780e946cp-16 : inexact-ok += exp2m1 tonearest ibm128 -0x1.7159454d13d4fp-12 : -0xf.ffb55350f704f314ff780e946cp-16 : inexact-ok += exp2m1 towardzero ibm128 -0x1.7159454d13d4fp-12 : -0xf.ffb55350f704f314ff780e9468p-16 : inexact-ok += exp2m1 upward ibm128 -0x1.7159454d13d4fp-12 : -0xf.ffb55350f704f314ff780e9468p-16 : inexact-ok += exp2m1 downward intel96 -0x1.7159454d13d4e3fap-12 : -0xf.ffb55350f7046ddp-16 : inexact-ok += exp2m1 tonearest intel96 -0x1.7159454d13d4e3fap-12 : -0xf.ffb55350f7046dcp-16 : inexact-ok += exp2m1 towardzero intel96 -0x1.7159454d13d4e3fap-12 : -0xf.ffb55350f7046dcp-16 : inexact-ok += exp2m1 upward intel96 -0x1.7159454d13d4e3fap-12 : -0xf.ffb55350f7046dcp-16 : inexact-ok += exp2m1 downward m68k96 -0x1.7159454d13d4e3fap-12 : -0xf.ffb55350f7046ddp-16 : inexact-ok += exp2m1 tonearest m68k96 -0x1.7159454d13d4e3fap-12 : -0xf.ffb55350f7046dcp-16 : inexact-ok += exp2m1 towardzero m68k96 -0x1.7159454d13d4e3fap-12 : -0xf.ffb55350f7046dcp-16 : inexact-ok += exp2m1 upward m68k96 -0x1.7159454d13d4e3fap-12 : -0xf.ffb55350f7046dcp-16 : inexact-ok += exp2m1 downward binary128 -0x1.7159454d13d4e3fap-12 : -0xf.ffb55350f7046dc538101b0d1748p-16 : inexact-ok += exp2m1 tonearest binary128 -0x1.7159454d13d4e3fap-12 : -0xf.ffb55350f7046dc538101b0d174p-16 : inexact-ok += exp2m1 towardzero binary128 -0x1.7159454d13d4e3fap-12 : -0xf.ffb55350f7046dc538101b0d174p-16 : inexact-ok += exp2m1 upward binary128 -0x1.7159454d13d4e3fap-12 : -0xf.ffb55350f7046dc538101b0d174p-16 : inexact-ok += exp2m1 downward ibm128 -0x1.7159454d13d4e3fap-12 : -0xf.ffb55350f7046dc538101b0d18p-16 : inexact-ok += exp2m1 tonearest ibm128 -0x1.7159454d13d4e3fap-12 : -0xf.ffb55350f7046dc538101b0d18p-16 : inexact-ok += exp2m1 towardzero ibm128 -0x1.7159454d13d4e3fap-12 : -0xf.ffb55350f7046dc538101b0d14p-16 : inexact-ok += exp2m1 upward ibm128 -0x1.7159454d13d4e3fap-12 : -0xf.ffb55350f7046dc538101b0d14p-16 : inexact-ok +exp2m1 0x9.5a4e825121e5782p-4 += exp2m1 downward binary32 0x9.5a4e9p-4 : 0x7.fe3bbp-4 : inexact-ok += exp2m1 tonearest binary32 0x9.5a4e9p-4 : 0x7.fe3bb8p-4 : inexact-ok += exp2m1 towardzero binary32 0x9.5a4e9p-4 : 0x7.fe3bbp-4 : inexact-ok += exp2m1 upward binary32 0x9.5a4e9p-4 : 0x7.fe3bb8p-4 : inexact-ok += exp2m1 downward binary64 0x9.5a4e9p-4 : 0x7.fe3bb4f14c088p-4 : inexact-ok += exp2m1 tonearest binary64 0x9.5a4e9p-4 : 0x7.fe3bb4f14c08cp-4 : inexact-ok += exp2m1 towardzero binary64 0x9.5a4e9p-4 : 0x7.fe3bb4f14c088p-4 : inexact-ok += exp2m1 upward binary64 0x9.5a4e9p-4 : 0x7.fe3bb4f14c08cp-4 : inexact-ok += exp2m1 downward intel96 0x9.5a4e9p-4 : 0x7.fe3bb4f14c08aecp-4 : inexact-ok += exp2m1 tonearest intel96 0x9.5a4e9p-4 : 0x7.fe3bb4f14c08aecp-4 : inexact-ok += exp2m1 towardzero intel96 0x9.5a4e9p-4 : 0x7.fe3bb4f14c08aecp-4 : inexact-ok += exp2m1 upward intel96 0x9.5a4e9p-4 : 0x7.fe3bb4f14c08aec8p-4 : inexact-ok += exp2m1 downward m68k96 0x9.5a4e9p-4 : 0x7.fe3bb4f14c08aecp-4 : inexact-ok += exp2m1 tonearest m68k96 0x9.5a4e9p-4 : 0x7.fe3bb4f14c08aecp-4 : inexact-ok += exp2m1 towardzero m68k96 0x9.5a4e9p-4 : 0x7.fe3bb4f14c08aecp-4 : inexact-ok += exp2m1 upward m68k96 0x9.5a4e9p-4 : 0x7.fe3bb4f14c08aec8p-4 : inexact-ok += exp2m1 downward binary128 0x9.5a4e9p-4 : 0x7.fe3bb4f14c08aec268c800635a94p-4 : inexact-ok += exp2m1 tonearest binary128 0x9.5a4e9p-4 : 0x7.fe3bb4f14c08aec268c800635a94p-4 : inexact-ok += exp2m1 towardzero binary128 0x9.5a4e9p-4 : 0x7.fe3bb4f14c08aec268c800635a94p-4 : inexact-ok += exp2m1 upward binary128 0x9.5a4e9p-4 : 0x7.fe3bb4f14c08aec268c800635a98p-4 : inexact-ok += exp2m1 downward ibm128 0x9.5a4e9p-4 : 0x7.fe3bb4f14c08aec268c800635ap-4 : inexact-ok += exp2m1 tonearest ibm128 0x9.5a4e9p-4 : 0x7.fe3bb4f14c08aec268c800635ap-4 : inexact-ok += exp2m1 towardzero ibm128 0x9.5a4e9p-4 : 0x7.fe3bb4f14c08aec268c800635ap-4 : inexact-ok += exp2m1 upward ibm128 0x9.5a4e9p-4 : 0x7.fe3bb4f14c08aec268c800635cp-4 : inexact-ok += exp2m1 downward binary32 0x9.5a4e8p-4 : 0x7.fe3bap-4 : inexact-ok += exp2m1 tonearest binary32 0x9.5a4e8p-4 : 0x7.fe3ba8p-4 : inexact-ok += exp2m1 towardzero binary32 0x9.5a4e8p-4 : 0x7.fe3bap-4 : inexact-ok += exp2m1 upward binary32 0x9.5a4e8p-4 : 0x7.fe3ba8p-4 : inexact-ok += exp2m1 downward binary64 0x9.5a4e8p-4 : 0x7.fe3ba44fd3508p-4 : inexact-ok += exp2m1 tonearest binary64 0x9.5a4e8p-4 : 0x7.fe3ba44fd350cp-4 : inexact-ok += exp2m1 towardzero binary64 0x9.5a4e8p-4 : 0x7.fe3ba44fd3508p-4 : inexact-ok += exp2m1 upward binary64 0x9.5a4e8p-4 : 0x7.fe3ba44fd350cp-4 : inexact-ok += exp2m1 downward intel96 0x9.5a4e8p-4 : 0x7.fe3ba44fd350af88p-4 : inexact-ok += exp2m1 tonearest intel96 0x9.5a4e8p-4 : 0x7.fe3ba44fd350af9p-4 : inexact-ok += exp2m1 towardzero intel96 0x9.5a4e8p-4 : 0x7.fe3ba44fd350af88p-4 : inexact-ok += exp2m1 upward intel96 0x9.5a4e8p-4 : 0x7.fe3ba44fd350af9p-4 : inexact-ok += exp2m1 downward m68k96 0x9.5a4e8p-4 : 0x7.fe3ba44fd350af88p-4 : inexact-ok += exp2m1 tonearest m68k96 0x9.5a4e8p-4 : 0x7.fe3ba44fd350af9p-4 : inexact-ok += exp2m1 towardzero m68k96 0x9.5a4e8p-4 : 0x7.fe3ba44fd350af88p-4 : inexact-ok += exp2m1 upward m68k96 0x9.5a4e8p-4 : 0x7.fe3ba44fd350af9p-4 : inexact-ok += exp2m1 downward binary128 0x9.5a4e8p-4 : 0x7.fe3ba44fd350af8d7c652eab6f4p-4 : inexact-ok += exp2m1 tonearest binary128 0x9.5a4e8p-4 : 0x7.fe3ba44fd350af8d7c652eab6f4p-4 : inexact-ok += exp2m1 towardzero binary128 0x9.5a4e8p-4 : 0x7.fe3ba44fd350af8d7c652eab6f4p-4 : inexact-ok += exp2m1 upward binary128 0x9.5a4e8p-4 : 0x7.fe3ba44fd350af8d7c652eab6f44p-4 : inexact-ok += exp2m1 downward ibm128 0x9.5a4e8p-4 : 0x7.fe3ba44fd350af8d7c652eab6ep-4 : inexact-ok += exp2m1 tonearest ibm128 0x9.5a4e8p-4 : 0x7.fe3ba44fd350af8d7c652eab7p-4 : inexact-ok += exp2m1 towardzero ibm128 0x9.5a4e8p-4 : 0x7.fe3ba44fd350af8d7c652eab6ep-4 : inexact-ok += exp2m1 upward ibm128 0x9.5a4e8p-4 : 0x7.fe3ba44fd350af8d7c652eab7p-4 : inexact-ok += exp2m1 downward binary64 0x9.5a4e825121e58p-4 : 0x7.fe3ba6b857158p-4 : inexact-ok += exp2m1 tonearest binary64 0x9.5a4e825121e58p-4 : 0x7.fe3ba6b85715cp-4 : inexact-ok += exp2m1 towardzero binary64 0x9.5a4e825121e58p-4 : 0x7.fe3ba6b857158p-4 : inexact-ok += exp2m1 upward binary64 0x9.5a4e825121e58p-4 : 0x7.fe3ba6b85715cp-4 : inexact-ok += exp2m1 downward intel96 0x9.5a4e825121e58p-4 : 0x7.fe3ba6b85715b148p-4 : inexact-ok += exp2m1 tonearest intel96 0x9.5a4e825121e58p-4 : 0x7.fe3ba6b85715b15p-4 : inexact-ok += exp2m1 towardzero intel96 0x9.5a4e825121e58p-4 : 0x7.fe3ba6b85715b148p-4 : inexact-ok += exp2m1 upward intel96 0x9.5a4e825121e58p-4 : 0x7.fe3ba6b85715b15p-4 : inexact-ok += exp2m1 downward m68k96 0x9.5a4e825121e58p-4 : 0x7.fe3ba6b85715b148p-4 : inexact-ok += exp2m1 tonearest m68k96 0x9.5a4e825121e58p-4 : 0x7.fe3ba6b85715b15p-4 : inexact-ok += exp2m1 towardzero m68k96 0x9.5a4e825121e58p-4 : 0x7.fe3ba6b85715b148p-4 : inexact-ok += exp2m1 upward m68k96 0x9.5a4e825121e58p-4 : 0x7.fe3ba6b85715b15p-4 : inexact-ok += exp2m1 downward binary128 0x9.5a4e825121e58p-4 : 0x7.fe3ba6b85715b14d077bb6f78b48p-4 : inexact-ok += exp2m1 tonearest binary128 0x9.5a4e825121e58p-4 : 0x7.fe3ba6b85715b14d077bb6f78b48p-4 : inexact-ok += exp2m1 towardzero binary128 0x9.5a4e825121e58p-4 : 0x7.fe3ba6b85715b14d077bb6f78b48p-4 : inexact-ok += exp2m1 upward binary128 0x9.5a4e825121e58p-4 : 0x7.fe3ba6b85715b14d077bb6f78b4cp-4 : inexact-ok += exp2m1 downward ibm128 0x9.5a4e825121e58p-4 : 0x7.fe3ba6b85715b14d077bb6f78ap-4 : inexact-ok += exp2m1 tonearest ibm128 0x9.5a4e825121e58p-4 : 0x7.fe3ba6b85715b14d077bb6f78cp-4 : inexact-ok += exp2m1 towardzero ibm128 0x9.5a4e825121e58p-4 : 0x7.fe3ba6b85715b14d077bb6f78ap-4 : inexact-ok += exp2m1 upward ibm128 0x9.5a4e825121e58p-4 : 0x7.fe3ba6b85715b14d077bb6f78cp-4 : inexact-ok += exp2m1 downward binary64 0x9.5a4e825121e5p-4 : 0x7.fe3ba6b85715p-4 : inexact-ok += exp2m1 tonearest binary64 0x9.5a4e825121e5p-4 : 0x7.fe3ba6b857154p-4 : inexact-ok += exp2m1 towardzero binary64 0x9.5a4e825121e5p-4 : 0x7.fe3ba6b85715p-4 : inexact-ok += exp2m1 upward binary64 0x9.5a4e825121e5p-4 : 0x7.fe3ba6b857154p-4 : inexact-ok += exp2m1 downward intel96 0x9.5a4e825121e5p-4 : 0x7.fe3ba6b857152c4p-4 : inexact-ok += exp2m1 tonearest intel96 0x9.5a4e825121e5p-4 : 0x7.fe3ba6b857152c4p-4 : inexact-ok += exp2m1 towardzero intel96 0x9.5a4e825121e5p-4 : 0x7.fe3ba6b857152c4p-4 : inexact-ok += exp2m1 upward intel96 0x9.5a4e825121e5p-4 : 0x7.fe3ba6b857152c48p-4 : inexact-ok += exp2m1 downward m68k96 0x9.5a4e825121e5p-4 : 0x7.fe3ba6b857152c4p-4 : inexact-ok += exp2m1 tonearest m68k96 0x9.5a4e825121e5p-4 : 0x7.fe3ba6b857152c4p-4 : inexact-ok += exp2m1 towardzero m68k96 0x9.5a4e825121e5p-4 : 0x7.fe3ba6b857152c4p-4 : inexact-ok += exp2m1 upward m68k96 0x9.5a4e825121e5p-4 : 0x7.fe3ba6b857152c48p-4 : inexact-ok += exp2m1 downward binary128 0x9.5a4e825121e5p-4 : 0x7.fe3ba6b857152c4141dc7ed8ddbcp-4 : inexact-ok += exp2m1 tonearest binary128 0x9.5a4e825121e5p-4 : 0x7.fe3ba6b857152c4141dc7ed8ddbcp-4 : inexact-ok += exp2m1 towardzero binary128 0x9.5a4e825121e5p-4 : 0x7.fe3ba6b857152c4141dc7ed8ddbcp-4 : inexact-ok += exp2m1 upward binary128 0x9.5a4e825121e5p-4 : 0x7.fe3ba6b857152c4141dc7ed8ddcp-4 : inexact-ok += exp2m1 downward ibm128 0x9.5a4e825121e5p-4 : 0x7.fe3ba6b857152c4141dc7ed8dcp-4 : inexact-ok += exp2m1 tonearest ibm128 0x9.5a4e825121e5p-4 : 0x7.fe3ba6b857152c4141dc7ed8dep-4 : inexact-ok += exp2m1 towardzero ibm128 0x9.5a4e825121e5p-4 : 0x7.fe3ba6b857152c4141dc7ed8dcp-4 : inexact-ok += exp2m1 upward ibm128 0x9.5a4e825121e5p-4 : 0x7.fe3ba6b857152c4141dc7ed8dep-4 : inexact-ok += exp2m1 downward intel96 0x9.5a4e825121e5782p-4 : 0x7.fe3ba6b85715a918p-4 : inexact-ok += exp2m1 tonearest intel96 0x9.5a4e825121e5782p-4 : 0x7.fe3ba6b85715a92p-4 : inexact-ok += exp2m1 towardzero intel96 0x9.5a4e825121e5782p-4 : 0x7.fe3ba6b85715a918p-4 : inexact-ok += exp2m1 upward intel96 0x9.5a4e825121e5782p-4 : 0x7.fe3ba6b85715a92p-4 : inexact-ok += exp2m1 downward m68k96 0x9.5a4e825121e5782p-4 : 0x7.fe3ba6b85715a918p-4 : inexact-ok += exp2m1 tonearest m68k96 0x9.5a4e825121e5782p-4 : 0x7.fe3ba6b85715a92p-4 : inexact-ok += exp2m1 towardzero m68k96 0x9.5a4e825121e5782p-4 : 0x7.fe3ba6b85715a918p-4 : inexact-ok += exp2m1 upward m68k96 0x9.5a4e825121e5782p-4 : 0x7.fe3ba6b85715a92p-4 : inexact-ok += exp2m1 downward binary128 0x9.5a4e825121e5782p-4 : 0x7.fe3ba6b85715a91d8e132b43a804p-4 : inexact-ok += exp2m1 tonearest binary128 0x9.5a4e825121e5782p-4 : 0x7.fe3ba6b85715a91d8e132b43a804p-4 : inexact-ok += exp2m1 towardzero binary128 0x9.5a4e825121e5782p-4 : 0x7.fe3ba6b85715a91d8e132b43a804p-4 : inexact-ok += exp2m1 upward binary128 0x9.5a4e825121e5782p-4 : 0x7.fe3ba6b85715a91d8e132b43a808p-4 : inexact-ok += exp2m1 downward ibm128 0x9.5a4e825121e5782p-4 : 0x7.fe3ba6b85715a91d8e132b43a8p-4 : inexact-ok += exp2m1 tonearest ibm128 0x9.5a4e825121e5782p-4 : 0x7.fe3ba6b85715a91d8e132b43a8p-4 : inexact-ok += exp2m1 towardzero ibm128 0x9.5a4e825121e5782p-4 : 0x7.fe3ba6b85715a91d8e132b43a8p-4 : inexact-ok += exp2m1 upward ibm128 0x9.5a4e825121e5782p-4 : 0x7.fe3ba6b85715a91d8e132b43aap-4 : inexact-ok +exp2m1 0x9.3e34e79efaa18cfp-4 += exp2m1 downward binary32 0x9.3e34fp-4 : 0x7.e11838p-4 : inexact-ok += exp2m1 tonearest binary32 0x9.3e34fp-4 : 0x7.e1184p-4 : inexact-ok += exp2m1 towardzero binary32 0x9.3e34fp-4 : 0x7.e11838p-4 : inexact-ok += exp2m1 upward binary32 0x9.3e34fp-4 : 0x7.e1184p-4 : inexact-ok += exp2m1 downward binary64 0x9.3e34fp-4 : 0x7.e1183f0069974p-4 : inexact-ok += exp2m1 tonearest binary64 0x9.3e34fp-4 : 0x7.e1183f0069974p-4 : inexact-ok += exp2m1 towardzero binary64 0x9.3e34fp-4 : 0x7.e1183f0069974p-4 : inexact-ok += exp2m1 upward binary64 0x9.3e34fp-4 : 0x7.e1183f0069978p-4 : inexact-ok += exp2m1 downward intel96 0x9.3e34fp-4 : 0x7.e1183f006997522p-4 : inexact-ok += exp2m1 tonearest intel96 0x9.3e34fp-4 : 0x7.e1183f0069975228p-4 : inexact-ok += exp2m1 towardzero intel96 0x9.3e34fp-4 : 0x7.e1183f006997522p-4 : inexact-ok += exp2m1 upward intel96 0x9.3e34fp-4 : 0x7.e1183f0069975228p-4 : inexact-ok += exp2m1 downward m68k96 0x9.3e34fp-4 : 0x7.e1183f006997522p-4 : inexact-ok += exp2m1 tonearest m68k96 0x9.3e34fp-4 : 0x7.e1183f0069975228p-4 : inexact-ok += exp2m1 towardzero m68k96 0x9.3e34fp-4 : 0x7.e1183f006997522p-4 : inexact-ok += exp2m1 upward m68k96 0x9.3e34fp-4 : 0x7.e1183f0069975228p-4 : inexact-ok += exp2m1 downward binary128 0x9.3e34fp-4 : 0x7.e1183f006997522797491e99bbf8p-4 : inexact-ok += exp2m1 tonearest binary128 0x9.3e34fp-4 : 0x7.e1183f006997522797491e99bbf8p-4 : inexact-ok += exp2m1 towardzero binary128 0x9.3e34fp-4 : 0x7.e1183f006997522797491e99bbf8p-4 : inexact-ok += exp2m1 upward binary128 0x9.3e34fp-4 : 0x7.e1183f006997522797491e99bbfcp-4 : inexact-ok += exp2m1 downward ibm128 0x9.3e34fp-4 : 0x7.e1183f006997522797491e99bap-4 : inexact-ok += exp2m1 tonearest ibm128 0x9.3e34fp-4 : 0x7.e1183f006997522797491e99bcp-4 : inexact-ok += exp2m1 towardzero ibm128 0x9.3e34fp-4 : 0x7.e1183f006997522797491e99bap-4 : inexact-ok += exp2m1 upward ibm128 0x9.3e34fp-4 : 0x7.e1183f006997522797491e99bcp-4 : inexact-ok += exp2m1 downward binary32 0x9.3e34ep-4 : 0x7.e11828p-4 : inexact-ok += exp2m1 tonearest binary32 0x9.3e34ep-4 : 0x7.e1183p-4 : inexact-ok += exp2m1 towardzero binary32 0x9.3e34ep-4 : 0x7.e11828p-4 : inexact-ok += exp2m1 upward binary32 0x9.3e34ep-4 : 0x7.e1183p-4 : inexact-ok += exp2m1 downward binary64 0x9.3e34ep-4 : 0x7.e1182e7323604p-4 : inexact-ok += exp2m1 tonearest binary64 0x9.3e34ep-4 : 0x7.e1182e7323604p-4 : inexact-ok += exp2m1 towardzero binary64 0x9.3e34ep-4 : 0x7.e1182e7323604p-4 : inexact-ok += exp2m1 upward binary64 0x9.3e34ep-4 : 0x7.e1182e7323608p-4 : inexact-ok += exp2m1 downward intel96 0x9.3e34ep-4 : 0x7.e1182e7323605c68p-4 : inexact-ok += exp2m1 tonearest intel96 0x9.3e34ep-4 : 0x7.e1182e7323605c68p-4 : inexact-ok += exp2m1 towardzero intel96 0x9.3e34ep-4 : 0x7.e1182e7323605c68p-4 : inexact-ok += exp2m1 upward intel96 0x9.3e34ep-4 : 0x7.e1182e7323605c7p-4 : inexact-ok += exp2m1 downward m68k96 0x9.3e34ep-4 : 0x7.e1182e7323605c68p-4 : inexact-ok += exp2m1 tonearest m68k96 0x9.3e34ep-4 : 0x7.e1182e7323605c68p-4 : inexact-ok += exp2m1 towardzero m68k96 0x9.3e34ep-4 : 0x7.e1182e7323605c68p-4 : inexact-ok += exp2m1 upward m68k96 0x9.3e34ep-4 : 0x7.e1182e7323605c7p-4 : inexact-ok += exp2m1 downward binary128 0x9.3e34ep-4 : 0x7.e1182e7323605c693b51061f20dcp-4 : inexact-ok += exp2m1 tonearest binary128 0x9.3e34ep-4 : 0x7.e1182e7323605c693b51061f20dcp-4 : inexact-ok += exp2m1 towardzero binary128 0x9.3e34ep-4 : 0x7.e1182e7323605c693b51061f20dcp-4 : inexact-ok += exp2m1 upward binary128 0x9.3e34ep-4 : 0x7.e1182e7323605c693b51061f20ep-4 : inexact-ok += exp2m1 downward ibm128 0x9.3e34ep-4 : 0x7.e1182e7323605c693b51061f2p-4 : inexact-ok += exp2m1 tonearest ibm128 0x9.3e34ep-4 : 0x7.e1182e7323605c693b51061f2p-4 : inexact-ok += exp2m1 towardzero ibm128 0x9.3e34ep-4 : 0x7.e1182e7323605c693b51061f2p-4 : inexact-ok += exp2m1 upward ibm128 0x9.3e34ep-4 : 0x7.e1182e7323605c693b51061f22p-4 : inexact-ok += exp2m1 downward binary64 0x9.3e34e79efaa2p-4 : 0x7.e118365568734p-4 : inexact-ok += exp2m1 tonearest binary64 0x9.3e34e79efaa2p-4 : 0x7.e118365568734p-4 : inexact-ok += exp2m1 towardzero binary64 0x9.3e34e79efaa2p-4 : 0x7.e118365568734p-4 : inexact-ok += exp2m1 upward binary64 0x9.3e34e79efaa2p-4 : 0x7.e118365568738p-4 : inexact-ok += exp2m1 downward intel96 0x9.3e34e79efaa2p-4 : 0x7.e1183655687357d8p-4 : inexact-ok += exp2m1 tonearest intel96 0x9.3e34e79efaa2p-4 : 0x7.e1183655687357d8p-4 : inexact-ok += exp2m1 towardzero intel96 0x9.3e34e79efaa2p-4 : 0x7.e1183655687357d8p-4 : inexact-ok += exp2m1 upward intel96 0x9.3e34e79efaa2p-4 : 0x7.e1183655687357ep-4 : inexact-ok += exp2m1 downward m68k96 0x9.3e34e79efaa2p-4 : 0x7.e1183655687357d8p-4 : inexact-ok += exp2m1 tonearest m68k96 0x9.3e34e79efaa2p-4 : 0x7.e1183655687357d8p-4 : inexact-ok += exp2m1 towardzero m68k96 0x9.3e34e79efaa2p-4 : 0x7.e1183655687357d8p-4 : inexact-ok += exp2m1 upward m68k96 0x9.3e34e79efaa2p-4 : 0x7.e1183655687357ep-4 : inexact-ok += exp2m1 downward binary128 0x9.3e34e79efaa2p-4 : 0x7.e1183655687357da14c6602e5bbp-4 : inexact-ok += exp2m1 tonearest binary128 0x9.3e34e79efaa2p-4 : 0x7.e1183655687357da14c6602e5bbp-4 : inexact-ok += exp2m1 towardzero binary128 0x9.3e34e79efaa2p-4 : 0x7.e1183655687357da14c6602e5bbp-4 : inexact-ok += exp2m1 upward binary128 0x9.3e34e79efaa2p-4 : 0x7.e1183655687357da14c6602e5bb4p-4 : inexact-ok += exp2m1 downward ibm128 0x9.3e34e79efaa2p-4 : 0x7.e1183655687357da14c6602e5ap-4 : inexact-ok += exp2m1 tonearest ibm128 0x9.3e34e79efaa2p-4 : 0x7.e1183655687357da14c6602e5cp-4 : inexact-ok += exp2m1 towardzero ibm128 0x9.3e34e79efaa2p-4 : 0x7.e1183655687357da14c6602e5ap-4 : inexact-ok += exp2m1 upward ibm128 0x9.3e34e79efaa2p-4 : 0x7.e1183655687357da14c6602e5cp-4 : inexact-ok += exp2m1 downward binary64 0x9.3e34e79efaa18p-4 : 0x7.e11836556872cp-4 : inexact-ok += exp2m1 tonearest binary64 0x9.3e34e79efaa18p-4 : 0x7.e11836556872cp-4 : inexact-ok += exp2m1 towardzero binary64 0x9.3e34e79efaa18p-4 : 0x7.e11836556872cp-4 : inexact-ok += exp2m1 upward binary64 0x9.3e34e79efaa18p-4 : 0x7.e11836556873p-4 : inexact-ok += exp2m1 downward intel96 0x9.3e34e79efaa18p-4 : 0x7.e11836556872d368p-4 : inexact-ok += exp2m1 tonearest intel96 0x9.3e34e79efaa18p-4 : 0x7.e11836556872d37p-4 : inexact-ok += exp2m1 towardzero intel96 0x9.3e34e79efaa18p-4 : 0x7.e11836556872d368p-4 : inexact-ok += exp2m1 upward intel96 0x9.3e34e79efaa18p-4 : 0x7.e11836556872d37p-4 : inexact-ok += exp2m1 downward m68k96 0x9.3e34e79efaa18p-4 : 0x7.e11836556872d368p-4 : inexact-ok += exp2m1 tonearest m68k96 0x9.3e34e79efaa18p-4 : 0x7.e11836556872d37p-4 : inexact-ok += exp2m1 towardzero m68k96 0x9.3e34e79efaa18p-4 : 0x7.e11836556872d368p-4 : inexact-ok += exp2m1 upward m68k96 0x9.3e34e79efaa18p-4 : 0x7.e11836556872d37p-4 : inexact-ok += exp2m1 downward binary128 0x9.3e34e79efaa18p-4 : 0x7.e11836556872d36fe310dec9713cp-4 : inexact-ok += exp2m1 tonearest binary128 0x9.3e34e79efaa18p-4 : 0x7.e11836556872d36fe310dec9713cp-4 : inexact-ok += exp2m1 towardzero binary128 0x9.3e34e79efaa18p-4 : 0x7.e11836556872d36fe310dec9713cp-4 : inexact-ok += exp2m1 upward binary128 0x9.3e34e79efaa18p-4 : 0x7.e11836556872d36fe310dec9714p-4 : inexact-ok += exp2m1 downward ibm128 0x9.3e34e79efaa18p-4 : 0x7.e11836556872d36fe310dec97p-4 : inexact-ok += exp2m1 tonearest ibm128 0x9.3e34e79efaa18p-4 : 0x7.e11836556872d36fe310dec972p-4 : inexact-ok += exp2m1 towardzero ibm128 0x9.3e34e79efaa18p-4 : 0x7.e11836556872d36fe310dec97p-4 : inexact-ok += exp2m1 upward ibm128 0x9.3e34e79efaa18p-4 : 0x7.e11836556872d36fe310dec972p-4 : inexact-ok += exp2m1 downward intel96 0x9.3e34e79efaa18cfp-4 : 0x7.e11836556872e0dp-4 : inexact-ok += exp2m1 tonearest intel96 0x9.3e34e79efaa18cfp-4 : 0x7.e11836556872e0dp-4 : inexact-ok += exp2m1 towardzero intel96 0x9.3e34e79efaa18cfp-4 : 0x7.e11836556872e0dp-4 : inexact-ok += exp2m1 upward intel96 0x9.3e34e79efaa18cfp-4 : 0x7.e11836556872e0d8p-4 : inexact-ok += exp2m1 downward m68k96 0x9.3e34e79efaa18cfp-4 : 0x7.e11836556872e0dp-4 : inexact-ok += exp2m1 tonearest m68k96 0x9.3e34e79efaa18cfp-4 : 0x7.e11836556872e0dp-4 : inexact-ok += exp2m1 towardzero m68k96 0x9.3e34e79efaa18cfp-4 : 0x7.e11836556872e0dp-4 : inexact-ok += exp2m1 upward m68k96 0x9.3e34e79efaa18cfp-4 : 0x7.e11836556872e0d8p-4 : inexact-ok += exp2m1 downward binary128 0x9.3e34e79efaa18cfp-4 : 0x7.e11836556872e0d21ed7173d844cp-4 : inexact-ok += exp2m1 tonearest binary128 0x9.3e34e79efaa18cfp-4 : 0x7.e11836556872e0d21ed7173d845p-4 : inexact-ok += exp2m1 towardzero binary128 0x9.3e34e79efaa18cfp-4 : 0x7.e11836556872e0d21ed7173d844cp-4 : inexact-ok += exp2m1 upward binary128 0x9.3e34e79efaa18cfp-4 : 0x7.e11836556872e0d21ed7173d845p-4 : inexact-ok += exp2m1 downward ibm128 0x9.3e34e79efaa18cfp-4 : 0x7.e11836556872e0d21ed7173d84p-4 : inexact-ok += exp2m1 tonearest ibm128 0x9.3e34e79efaa18cfp-4 : 0x7.e11836556872e0d21ed7173d84p-4 : inexact-ok += exp2m1 towardzero ibm128 0x9.3e34e79efaa18cfp-4 : 0x7.e11836556872e0d21ed7173d84p-4 : inexact-ok += exp2m1 upward ibm128 0x9.3e34e79efaa18cfp-4 : 0x7.e11836556872e0d21ed7173d86p-4 : inexact-ok +exp2m1 0x9.3754a635820f937p-4 += exp2m1 downward binary32 0x9.3754bp-4 : 0x7.d9fc5p-4 : inexact-ok += exp2m1 tonearest binary32 0x9.3754bp-4 : 0x7.d9fc58p-4 : inexact-ok += exp2m1 towardzero binary32 0x9.3754bp-4 : 0x7.d9fc5p-4 : inexact-ok += exp2m1 upward binary32 0x9.3754bp-4 : 0x7.d9fc58p-4 : inexact-ok += exp2m1 downward binary64 0x9.3754bp-4 : 0x7.d9fc57b8e5e8p-4 : inexact-ok += exp2m1 tonearest binary64 0x9.3754bp-4 : 0x7.d9fc57b8e5e84p-4 : inexact-ok += exp2m1 towardzero binary64 0x9.3754bp-4 : 0x7.d9fc57b8e5e8p-4 : inexact-ok += exp2m1 upward binary64 0x9.3754bp-4 : 0x7.d9fc57b8e5e84p-4 : inexact-ok += exp2m1 downward intel96 0x9.3754bp-4 : 0x7.d9fc57b8e5e83238p-4 : inexact-ok += exp2m1 tonearest intel96 0x9.3754bp-4 : 0x7.d9fc57b8e5e8324p-4 : inexact-ok += exp2m1 towardzero intel96 0x9.3754bp-4 : 0x7.d9fc57b8e5e83238p-4 : inexact-ok += exp2m1 upward intel96 0x9.3754bp-4 : 0x7.d9fc57b8e5e8324p-4 : inexact-ok += exp2m1 downward m68k96 0x9.3754bp-4 : 0x7.d9fc57b8e5e83238p-4 : inexact-ok += exp2m1 tonearest m68k96 0x9.3754bp-4 : 0x7.d9fc57b8e5e8324p-4 : inexact-ok += exp2m1 towardzero m68k96 0x9.3754bp-4 : 0x7.d9fc57b8e5e83238p-4 : inexact-ok += exp2m1 upward m68k96 0x9.3754bp-4 : 0x7.d9fc57b8e5e8324p-4 : inexact-ok += exp2m1 downward binary128 0x9.3754bp-4 : 0x7.d9fc57b8e5e8323e41ac02296cecp-4 : inexact-ok += exp2m1 tonearest binary128 0x9.3754bp-4 : 0x7.d9fc57b8e5e8323e41ac02296cecp-4 : inexact-ok += exp2m1 towardzero binary128 0x9.3754bp-4 : 0x7.d9fc57b8e5e8323e41ac02296cecp-4 : inexact-ok += exp2m1 upward binary128 0x9.3754bp-4 : 0x7.d9fc57b8e5e8323e41ac02296cfp-4 : inexact-ok += exp2m1 downward ibm128 0x9.3754bp-4 : 0x7.d9fc57b8e5e8323e41ac02296cp-4 : inexact-ok += exp2m1 tonearest ibm128 0x9.3754bp-4 : 0x7.d9fc57b8e5e8323e41ac02296cp-4 : inexact-ok += exp2m1 towardzero ibm128 0x9.3754bp-4 : 0x7.d9fc57b8e5e8323e41ac02296cp-4 : inexact-ok += exp2m1 upward ibm128 0x9.3754bp-4 : 0x7.d9fc57b8e5e8323e41ac02296ep-4 : inexact-ok += exp2m1 downward binary32 0x9.3754ap-4 : 0x7.d9fc4p-4 : inexact-ok += exp2m1 tonearest binary32 0x9.3754ap-4 : 0x7.d9fc48p-4 : inexact-ok += exp2m1 towardzero binary32 0x9.3754ap-4 : 0x7.d9fc4p-4 : inexact-ok += exp2m1 upward binary32 0x9.3754ap-4 : 0x7.d9fc48p-4 : inexact-ok += exp2m1 downward binary64 0x9.3754ap-4 : 0x7.d9fc47308d27p-4 : inexact-ok += exp2m1 tonearest binary64 0x9.3754ap-4 : 0x7.d9fc47308d274p-4 : inexact-ok += exp2m1 towardzero binary64 0x9.3754ap-4 : 0x7.d9fc47308d27p-4 : inexact-ok += exp2m1 upward binary64 0x9.3754ap-4 : 0x7.d9fc47308d274p-4 : inexact-ok += exp2m1 downward intel96 0x9.3754ap-4 : 0x7.d9fc47308d273a98p-4 : inexact-ok += exp2m1 tonearest intel96 0x9.3754ap-4 : 0x7.d9fc47308d273aap-4 : inexact-ok += exp2m1 towardzero intel96 0x9.3754ap-4 : 0x7.d9fc47308d273a98p-4 : inexact-ok += exp2m1 upward intel96 0x9.3754ap-4 : 0x7.d9fc47308d273aap-4 : inexact-ok += exp2m1 downward m68k96 0x9.3754ap-4 : 0x7.d9fc47308d273a98p-4 : inexact-ok += exp2m1 tonearest m68k96 0x9.3754ap-4 : 0x7.d9fc47308d273aap-4 : inexact-ok += exp2m1 towardzero m68k96 0x9.3754ap-4 : 0x7.d9fc47308d273a98p-4 : inexact-ok += exp2m1 upward m68k96 0x9.3754ap-4 : 0x7.d9fc47308d273aap-4 : inexact-ok += exp2m1 downward binary128 0x9.3754ap-4 : 0x7.d9fc47308d273a9e2125ae738ce8p-4 : inexact-ok += exp2m1 tonearest binary128 0x9.3754ap-4 : 0x7.d9fc47308d273a9e2125ae738cecp-4 : inexact-ok += exp2m1 towardzero binary128 0x9.3754ap-4 : 0x7.d9fc47308d273a9e2125ae738ce8p-4 : inexact-ok += exp2m1 upward binary128 0x9.3754ap-4 : 0x7.d9fc47308d273a9e2125ae738cecp-4 : inexact-ok += exp2m1 downward ibm128 0x9.3754ap-4 : 0x7.d9fc47308d273a9e2125ae738cp-4 : inexact-ok += exp2m1 tonearest ibm128 0x9.3754ap-4 : 0x7.d9fc47308d273a9e2125ae738cp-4 : inexact-ok += exp2m1 towardzero ibm128 0x9.3754ap-4 : 0x7.d9fc47308d273a9e2125ae738cp-4 : inexact-ok += exp2m1 upward ibm128 0x9.3754ap-4 : 0x7.d9fc47308d273a9e2125ae738ep-4 : inexact-ok += exp2m1 downward binary64 0x9.3754a635821p-4 : 0x7.d9fc4d9af8788p-4 : inexact-ok += exp2m1 tonearest binary64 0x9.3754a635821p-4 : 0x7.d9fc4d9af8788p-4 : inexact-ok += exp2m1 towardzero binary64 0x9.3754a635821p-4 : 0x7.d9fc4d9af8788p-4 : inexact-ok += exp2m1 upward binary64 0x9.3754a635821p-4 : 0x7.d9fc4d9af878cp-4 : inexact-ok += exp2m1 downward intel96 0x9.3754a635821p-4 : 0x7.d9fc4d9af87893dp-4 : inexact-ok += exp2m1 tonearest intel96 0x9.3754a635821p-4 : 0x7.d9fc4d9af87893dp-4 : inexact-ok += exp2m1 towardzero intel96 0x9.3754a635821p-4 : 0x7.d9fc4d9af87893dp-4 : inexact-ok += exp2m1 upward intel96 0x9.3754a635821p-4 : 0x7.d9fc4d9af87893d8p-4 : inexact-ok += exp2m1 downward m68k96 0x9.3754a635821p-4 : 0x7.d9fc4d9af87893dp-4 : inexact-ok += exp2m1 tonearest m68k96 0x9.3754a635821p-4 : 0x7.d9fc4d9af87893dp-4 : inexact-ok += exp2m1 towardzero m68k96 0x9.3754a635821p-4 : 0x7.d9fc4d9af87893dp-4 : inexact-ok += exp2m1 upward m68k96 0x9.3754a635821p-4 : 0x7.d9fc4d9af87893d8p-4 : inexact-ok += exp2m1 downward binary128 0x9.3754a635821p-4 : 0x7.d9fc4d9af87893d39a20e3919a3cp-4 : inexact-ok += exp2m1 tonearest binary128 0x9.3754a635821p-4 : 0x7.d9fc4d9af87893d39a20e3919a3cp-4 : inexact-ok += exp2m1 towardzero binary128 0x9.3754a635821p-4 : 0x7.d9fc4d9af87893d39a20e3919a3cp-4 : inexact-ok += exp2m1 upward binary128 0x9.3754a635821p-4 : 0x7.d9fc4d9af87893d39a20e3919a4p-4 : inexact-ok += exp2m1 downward ibm128 0x9.3754a635821p-4 : 0x7.d9fc4d9af87893d39a20e3919ap-4 : inexact-ok += exp2m1 tonearest ibm128 0x9.3754a635821p-4 : 0x7.d9fc4d9af87893d39a20e3919ap-4 : inexact-ok += exp2m1 towardzero ibm128 0x9.3754a635821p-4 : 0x7.d9fc4d9af87893d39a20e3919ap-4 : inexact-ok += exp2m1 upward ibm128 0x9.3754a635821p-4 : 0x7.d9fc4d9af87893d39a20e3919cp-4 : inexact-ok += exp2m1 downward binary64 0x9.3754a635820f8p-4 : 0x7.d9fc4d9af878p-4 : inexact-ok += exp2m1 tonearest binary64 0x9.3754a635820f8p-4 : 0x7.d9fc4d9af878p-4 : inexact-ok += exp2m1 towardzero binary64 0x9.3754a635820f8p-4 : 0x7.d9fc4d9af878p-4 : inexact-ok += exp2m1 upward binary64 0x9.3754a635820f8p-4 : 0x7.d9fc4d9af8784p-4 : inexact-ok += exp2m1 downward intel96 0x9.3754a635820f8p-4 : 0x7.d9fc4d9af8780f9p-4 : inexact-ok += exp2m1 tonearest intel96 0x9.3754a635820f8p-4 : 0x7.d9fc4d9af8780f9p-4 : inexact-ok += exp2m1 towardzero intel96 0x9.3754a635820f8p-4 : 0x7.d9fc4d9af8780f9p-4 : inexact-ok += exp2m1 upward intel96 0x9.3754a635820f8p-4 : 0x7.d9fc4d9af8780f98p-4 : inexact-ok += exp2m1 downward m68k96 0x9.3754a635820f8p-4 : 0x7.d9fc4d9af8780f9p-4 : inexact-ok += exp2m1 tonearest m68k96 0x9.3754a635820f8p-4 : 0x7.d9fc4d9af8780f9p-4 : inexact-ok += exp2m1 towardzero m68k96 0x9.3754a635820f8p-4 : 0x7.d9fc4d9af8780f9p-4 : inexact-ok += exp2m1 upward m68k96 0x9.3754a635820f8p-4 : 0x7.d9fc4d9af8780f98p-4 : inexact-ok += exp2m1 downward binary128 0x9.3754a635820f8p-4 : 0x7.d9fc4d9af8780f90d423699d908p-4 : inexact-ok += exp2m1 tonearest binary128 0x9.3754a635820f8p-4 : 0x7.d9fc4d9af8780f90d423699d908p-4 : inexact-ok += exp2m1 towardzero binary128 0x9.3754a635820f8p-4 : 0x7.d9fc4d9af8780f90d423699d908p-4 : inexact-ok += exp2m1 upward binary128 0x9.3754a635820f8p-4 : 0x7.d9fc4d9af8780f90d423699d9084p-4 : inexact-ok += exp2m1 downward ibm128 0x9.3754a635820f8p-4 : 0x7.d9fc4d9af8780f90d423699d9p-4 : inexact-ok += exp2m1 tonearest ibm128 0x9.3754a635820f8p-4 : 0x7.d9fc4d9af8780f90d423699d9p-4 : inexact-ok += exp2m1 towardzero ibm128 0x9.3754a635820f8p-4 : 0x7.d9fc4d9af8780f90d423699d9p-4 : inexact-ok += exp2m1 upward ibm128 0x9.3754a635820f8p-4 : 0x7.d9fc4d9af8780f90d423699d92p-4 : inexact-ok += exp2m1 downward intel96 0x9.3754a635820f937p-4 : 0x7.d9fc4d9af87823ap-4 : inexact-ok += exp2m1 tonearest intel96 0x9.3754a635820f937p-4 : 0x7.d9fc4d9af87823a8p-4 : inexact-ok += exp2m1 towardzero intel96 0x9.3754a635820f937p-4 : 0x7.d9fc4d9af87823ap-4 : inexact-ok += exp2m1 upward intel96 0x9.3754a635820f937p-4 : 0x7.d9fc4d9af87823a8p-4 : inexact-ok += exp2m1 downward m68k96 0x9.3754a635820f937p-4 : 0x7.d9fc4d9af87823ap-4 : inexact-ok += exp2m1 tonearest m68k96 0x9.3754a635820f937p-4 : 0x7.d9fc4d9af87823a8p-4 : inexact-ok += exp2m1 towardzero m68k96 0x9.3754a635820f937p-4 : 0x7.d9fc4d9af87823ap-4 : inexact-ok += exp2m1 upward m68k96 0x9.3754a635820f937p-4 : 0x7.d9fc4d9af87823a8p-4 : inexact-ok += exp2m1 downward binary128 0x9.3754a635820f937p-4 : 0x7.d9fc4d9af87823a677f447827f4cp-4 : inexact-ok += exp2m1 tonearest binary128 0x9.3754a635820f937p-4 : 0x7.d9fc4d9af87823a677f447827f4cp-4 : inexact-ok += exp2m1 towardzero binary128 0x9.3754a635820f937p-4 : 0x7.d9fc4d9af87823a677f447827f4cp-4 : inexact-ok += exp2m1 upward binary128 0x9.3754a635820f937p-4 : 0x7.d9fc4d9af87823a677f447827f5p-4 : inexact-ok += exp2m1 downward ibm128 0x9.3754a635820f937p-4 : 0x7.d9fc4d9af87823a677f447827ep-4 : inexact-ok += exp2m1 tonearest ibm128 0x9.3754a635820f937p-4 : 0x7.d9fc4d9af87823a677f447828p-4 : inexact-ok += exp2m1 towardzero ibm128 0x9.3754a635820f937p-4 : 0x7.d9fc4d9af87823a677f447827ep-4 : inexact-ok += exp2m1 upward ibm128 0x9.3754a635820f937p-4 : 0x7.d9fc4d9af87823a677f447828p-4 : inexact-ok +exp2m1 -0x1.71573dd150de9ccap-8 += exp2m1 downward binary32 -0x1.71573cp-8 : -0xf.f8215p-12 : inexact-ok += exp2m1 tonearest binary32 -0x1.71573cp-8 : -0xf.f8215p-12 : inexact-ok += exp2m1 towardzero binary32 -0x1.71573cp-8 : -0xf.f8214p-12 : inexact-ok += exp2m1 upward binary32 -0x1.71573cp-8 : -0xf.f8214p-12 : inexact-ok += exp2m1 downward binary64 -0x1.71573cp-8 : -0xf.f82149e2517d8p-12 : inexact-ok += exp2m1 tonearest binary64 -0x1.71573cp-8 : -0xf.f82149e2517d8p-12 : inexact-ok += exp2m1 towardzero binary64 -0x1.71573cp-8 : -0xf.f82149e2517dp-12 : inexact-ok += exp2m1 upward binary64 -0x1.71573cp-8 : -0xf.f82149e2517dp-12 : inexact-ok += exp2m1 downward intel96 -0x1.71573cp-8 : -0xf.f82149e2517d5ebp-12 : inexact-ok += exp2m1 tonearest intel96 -0x1.71573cp-8 : -0xf.f82149e2517d5ebp-12 : inexact-ok += exp2m1 towardzero intel96 -0x1.71573cp-8 : -0xf.f82149e2517d5eap-12 : inexact-ok += exp2m1 upward intel96 -0x1.71573cp-8 : -0xf.f82149e2517d5eap-12 : inexact-ok += exp2m1 downward m68k96 -0x1.71573cp-8 : -0xf.f82149e2517d5ebp-12 : inexact-ok += exp2m1 tonearest m68k96 -0x1.71573cp-8 : -0xf.f82149e2517d5ebp-12 : inexact-ok += exp2m1 towardzero m68k96 -0x1.71573cp-8 : -0xf.f82149e2517d5eap-12 : inexact-ok += exp2m1 upward m68k96 -0x1.71573cp-8 : -0xf.f82149e2517d5eap-12 : inexact-ok += exp2m1 downward binary128 -0x1.71573cp-8 : -0xf.f82149e2517d5eaf2e0a20fdb4ap-12 : inexact-ok += exp2m1 tonearest binary128 -0x1.71573cp-8 : -0xf.f82149e2517d5eaf2e0a20fdb4ap-12 : inexact-ok += exp2m1 towardzero binary128 -0x1.71573cp-8 : -0xf.f82149e2517d5eaf2e0a20fdb498p-12 : inexact-ok += exp2m1 upward binary128 -0x1.71573cp-8 : -0xf.f82149e2517d5eaf2e0a20fdb498p-12 : inexact-ok += exp2m1 downward ibm128 -0x1.71573cp-8 : -0xf.f82149e2517d5eaf2e0a20fdb8p-12 : inexact-ok += exp2m1 tonearest ibm128 -0x1.71573cp-8 : -0xf.f82149e2517d5eaf2e0a20fdb4p-12 : inexact-ok += exp2m1 towardzero ibm128 -0x1.71573cp-8 : -0xf.f82149e2517d5eaf2e0a20fdb4p-12 : inexact-ok += exp2m1 upward ibm128 -0x1.71573cp-8 : -0xf.f82149e2517d5eaf2e0a20fdb4p-12 : inexact-ok += exp2m1 downward binary32 -0x1.71573ep-8 : -0xf.f8216p-12 : inexact-ok += exp2m1 tonearest binary32 -0x1.71573ep-8 : -0xf.f8216p-12 : inexact-ok += exp2m1 towardzero binary32 -0x1.71573ep-8 : -0xf.f8215p-12 : inexact-ok += exp2m1 upward binary32 -0x1.71573ep-8 : -0xf.f8215p-12 : inexact-ok += exp2m1 downward binary64 -0x1.71573ep-8 : -0xf.f8215ffa71228p-12 : inexact-ok += exp2m1 tonearest binary64 -0x1.71573ep-8 : -0xf.f8215ffa71228p-12 : inexact-ok += exp2m1 towardzero binary64 -0x1.71573ep-8 : -0xf.f8215ffa7122p-12 : inexact-ok += exp2m1 upward binary64 -0x1.71573ep-8 : -0xf.f8215ffa7122p-12 : inexact-ok += exp2m1 downward intel96 -0x1.71573ep-8 : -0xf.f8215ffa7122465p-12 : inexact-ok += exp2m1 tonearest intel96 -0x1.71573ep-8 : -0xf.f8215ffa7122464p-12 : inexact-ok += exp2m1 towardzero intel96 -0x1.71573ep-8 : -0xf.f8215ffa7122464p-12 : inexact-ok += exp2m1 upward intel96 -0x1.71573ep-8 : -0xf.f8215ffa7122464p-12 : inexact-ok += exp2m1 downward m68k96 -0x1.71573ep-8 : -0xf.f8215ffa7122465p-12 : inexact-ok += exp2m1 tonearest m68k96 -0x1.71573ep-8 : -0xf.f8215ffa7122464p-12 : inexact-ok += exp2m1 towardzero m68k96 -0x1.71573ep-8 : -0xf.f8215ffa7122464p-12 : inexact-ok += exp2m1 upward m68k96 -0x1.71573ep-8 : -0xf.f8215ffa7122464p-12 : inexact-ok += exp2m1 downward binary128 -0x1.71573ep-8 : -0xf.f8215ffa71224646dbc2f07be028p-12 : inexact-ok += exp2m1 tonearest binary128 -0x1.71573ep-8 : -0xf.f8215ffa71224646dbc2f07be02p-12 : inexact-ok += exp2m1 towardzero binary128 -0x1.71573ep-8 : -0xf.f8215ffa71224646dbc2f07be02p-12 : inexact-ok += exp2m1 upward binary128 -0x1.71573ep-8 : -0xf.f8215ffa71224646dbc2f07be02p-12 : inexact-ok += exp2m1 downward ibm128 -0x1.71573ep-8 : -0xf.f8215ffa71224646dbc2f07be4p-12 : inexact-ok += exp2m1 tonearest ibm128 -0x1.71573ep-8 : -0xf.f8215ffa71224646dbc2f07bep-12 : inexact-ok += exp2m1 towardzero ibm128 -0x1.71573ep-8 : -0xf.f8215ffa71224646dbc2f07bep-12 : inexact-ok += exp2m1 upward ibm128 -0x1.71573ep-8 : -0xf.f8215ffa71224646dbc2f07bep-12 : inexact-ok += exp2m1 downward binary64 -0x1.71573dd150de9p-8 : -0xf.f8215df6b79a8p-12 : inexact-ok += exp2m1 tonearest binary64 -0x1.71573dd150de9p-8 : -0xf.f8215df6b79a8p-12 : inexact-ok += exp2m1 towardzero binary64 -0x1.71573dd150de9p-8 : -0xf.f8215df6b79ap-12 : inexact-ok += exp2m1 upward binary64 -0x1.71573dd150de9p-8 : -0xf.f8215df6b79ap-12 : inexact-ok += exp2m1 downward intel96 -0x1.71573dd150de9p-8 : -0xf.f8215df6b79a429p-12 : inexact-ok += exp2m1 tonearest intel96 -0x1.71573dd150de9p-8 : -0xf.f8215df6b79a429p-12 : inexact-ok += exp2m1 towardzero intel96 -0x1.71573dd150de9p-8 : -0xf.f8215df6b79a428p-12 : inexact-ok += exp2m1 upward intel96 -0x1.71573dd150de9p-8 : -0xf.f8215df6b79a428p-12 : inexact-ok += exp2m1 downward m68k96 -0x1.71573dd150de9p-8 : -0xf.f8215df6b79a429p-12 : inexact-ok += exp2m1 tonearest m68k96 -0x1.71573dd150de9p-8 : -0xf.f8215df6b79a429p-12 : inexact-ok += exp2m1 towardzero m68k96 -0x1.71573dd150de9p-8 : -0xf.f8215df6b79a428p-12 : inexact-ok += exp2m1 upward m68k96 -0x1.71573dd150de9p-8 : -0xf.f8215df6b79a428p-12 : inexact-ok += exp2m1 downward binary128 -0x1.71573dd150de9p-8 : -0xf.f8215df6b79a428ee6c75a3db64p-12 : inexact-ok += exp2m1 tonearest binary128 -0x1.71573dd150de9p-8 : -0xf.f8215df6b79a428ee6c75a3db64p-12 : inexact-ok += exp2m1 towardzero binary128 -0x1.71573dd150de9p-8 : -0xf.f8215df6b79a428ee6c75a3db638p-12 : inexact-ok += exp2m1 upward binary128 -0x1.71573dd150de9p-8 : -0xf.f8215df6b79a428ee6c75a3db638p-12 : inexact-ok += exp2m1 downward ibm128 -0x1.71573dd150de9p-8 : -0xf.f8215df6b79a428ee6c75a3db8p-12 : inexact-ok += exp2m1 tonearest ibm128 -0x1.71573dd150de9p-8 : -0xf.f8215df6b79a428ee6c75a3db8p-12 : inexact-ok += exp2m1 towardzero ibm128 -0x1.71573dd150de9p-8 : -0xf.f8215df6b79a428ee6c75a3db4p-12 : inexact-ok += exp2m1 upward ibm128 -0x1.71573dd150de9p-8 : -0xf.f8215df6b79a428ee6c75a3db4p-12 : inexact-ok += exp2m1 downward binary64 -0x1.71573dd150deap-8 : -0xf.f8215df6b79bp-12 : inexact-ok += exp2m1 tonearest binary64 -0x1.71573dd150deap-8 : -0xf.f8215df6b79bp-12 : inexact-ok += exp2m1 towardzero binary64 -0x1.71573dd150deap-8 : -0xf.f8215df6b79a8p-12 : inexact-ok += exp2m1 upward binary64 -0x1.71573dd150deap-8 : -0xf.f8215df6b79a8p-12 : inexact-ok += exp2m1 downward intel96 -0x1.71573dd150deap-8 : -0xf.f8215df6b79af35p-12 : inexact-ok += exp2m1 tonearest intel96 -0x1.71573dd150deap-8 : -0xf.f8215df6b79af35p-12 : inexact-ok += exp2m1 towardzero intel96 -0x1.71573dd150deap-8 : -0xf.f8215df6b79af34p-12 : inexact-ok += exp2m1 upward intel96 -0x1.71573dd150deap-8 : -0xf.f8215df6b79af34p-12 : inexact-ok += exp2m1 downward m68k96 -0x1.71573dd150deap-8 : -0xf.f8215df6b79af35p-12 : inexact-ok += exp2m1 tonearest m68k96 -0x1.71573dd150deap-8 : -0xf.f8215df6b79af35p-12 : inexact-ok += exp2m1 towardzero m68k96 -0x1.71573dd150deap-8 : -0xf.f8215df6b79af34p-12 : inexact-ok += exp2m1 upward m68k96 -0x1.71573dd150deap-8 : -0xf.f8215df6b79af34p-12 : inexact-ok += exp2m1 downward binary128 -0x1.71573dd150deap-8 : -0xf.f8215df6b79af34fe3ee32ce808p-12 : inexact-ok += exp2m1 tonearest binary128 -0x1.71573dd150deap-8 : -0xf.f8215df6b79af34fe3ee32ce8078p-12 : inexact-ok += exp2m1 towardzero binary128 -0x1.71573dd150deap-8 : -0xf.f8215df6b79af34fe3ee32ce8078p-12 : inexact-ok += exp2m1 upward binary128 -0x1.71573dd150deap-8 : -0xf.f8215df6b79af34fe3ee32ce8078p-12 : inexact-ok += exp2m1 downward ibm128 -0x1.71573dd150deap-8 : -0xf.f8215df6b79af34fe3ee32ce84p-12 : inexact-ok += exp2m1 tonearest ibm128 -0x1.71573dd150deap-8 : -0xf.f8215df6b79af34fe3ee32ce8p-12 : inexact-ok += exp2m1 towardzero ibm128 -0x1.71573dd150deap-8 : -0xf.f8215df6b79af34fe3ee32ce8p-12 : inexact-ok += exp2m1 upward ibm128 -0x1.71573dd150deap-8 : -0xf.f8215df6b79af34fe3ee32ce8p-12 : inexact-ok += exp2m1 downward intel96 -0x1.71573dd150de9ccap-8 : -0xf.f8215df6b79acfep-12 : inexact-ok += exp2m1 tonearest intel96 -0x1.71573dd150de9ccap-8 : -0xf.f8215df6b79acfdp-12 : inexact-ok += exp2m1 towardzero intel96 -0x1.71573dd150de9ccap-8 : -0xf.f8215df6b79acfdp-12 : inexact-ok += exp2m1 upward intel96 -0x1.71573dd150de9ccap-8 : -0xf.f8215df6b79acfdp-12 : inexact-ok += exp2m1 downward m68k96 -0x1.71573dd150de9ccap-8 : -0xf.f8215df6b79acfep-12 : inexact-ok += exp2m1 tonearest m68k96 -0x1.71573dd150de9ccap-8 : -0xf.f8215df6b79acfdp-12 : inexact-ok += exp2m1 towardzero m68k96 -0x1.71573dd150de9ccap-8 : -0xf.f8215df6b79acfdp-12 : inexact-ok += exp2m1 upward m68k96 -0x1.71573dd150de9ccap-8 : -0xf.f8215df6b79acfdp-12 : inexact-ok += exp2m1 downward binary128 -0x1.71573dd150de9ccap-8 : -0xf.f8215df6b79acfd72920871871e8p-12 : inexact-ok += exp2m1 tonearest binary128 -0x1.71573dd150de9ccap-8 : -0xf.f8215df6b79acfd72920871871ep-12 : inexact-ok += exp2m1 towardzero binary128 -0x1.71573dd150de9ccap-8 : -0xf.f8215df6b79acfd72920871871ep-12 : inexact-ok += exp2m1 upward binary128 -0x1.71573dd150de9ccap-8 : -0xf.f8215df6b79acfd72920871871ep-12 : inexact-ok += exp2m1 downward ibm128 -0x1.71573dd150de9ccap-8 : -0xf.f8215df6b79acfd72920871874p-12 : inexact-ok += exp2m1 tonearest ibm128 -0x1.71573dd150de9ccap-8 : -0xf.f8215df6b79acfd7292087187p-12 : inexact-ok += exp2m1 towardzero ibm128 -0x1.71573dd150de9ccap-8 : -0xf.f8215df6b79acfd7292087187p-12 : inexact-ok += exp2m1 upward ibm128 -0x1.71573dd150de9ccap-8 : -0xf.f8215df6b79acfd7292087187p-12 : inexact-ok +exp2m1 0x9.3d27303441ac81fp-4 += exp2m1 downward binary32 0x9.3d274p-4 : 0x7.e00148p-4 : inexact-ok += exp2m1 tonearest binary32 0x9.3d274p-4 : 0x7.e00148p-4 : inexact-ok += exp2m1 towardzero binary32 0x9.3d274p-4 : 0x7.e00148p-4 : inexact-ok += exp2m1 upward binary32 0x9.3d274p-4 : 0x7.e0015p-4 : inexact-ok += exp2m1 downward binary64 0x9.3d274p-4 : 0x7.e001481f3263cp-4 : inexact-ok += exp2m1 tonearest binary64 0x9.3d274p-4 : 0x7.e001481f3263cp-4 : inexact-ok += exp2m1 towardzero binary64 0x9.3d274p-4 : 0x7.e001481f3263cp-4 : inexact-ok += exp2m1 upward binary64 0x9.3d274p-4 : 0x7.e001481f3264p-4 : inexact-ok += exp2m1 downward intel96 0x9.3d274p-4 : 0x7.e001481f3263d8a8p-4 : inexact-ok += exp2m1 tonearest intel96 0x9.3d274p-4 : 0x7.e001481f3263d8bp-4 : inexact-ok += exp2m1 towardzero intel96 0x9.3d274p-4 : 0x7.e001481f3263d8a8p-4 : inexact-ok += exp2m1 upward intel96 0x9.3d274p-4 : 0x7.e001481f3263d8bp-4 : inexact-ok += exp2m1 downward m68k96 0x9.3d274p-4 : 0x7.e001481f3263d8a8p-4 : inexact-ok += exp2m1 tonearest m68k96 0x9.3d274p-4 : 0x7.e001481f3263d8bp-4 : inexact-ok += exp2m1 towardzero m68k96 0x9.3d274p-4 : 0x7.e001481f3263d8a8p-4 : inexact-ok += exp2m1 upward m68k96 0x9.3d274p-4 : 0x7.e001481f3263d8bp-4 : inexact-ok += exp2m1 downward binary128 0x9.3d274p-4 : 0x7.e001481f3263d8ac6414e72e283p-4 : inexact-ok += exp2m1 tonearest binary128 0x9.3d274p-4 : 0x7.e001481f3263d8ac6414e72e2834p-4 : inexact-ok += exp2m1 towardzero binary128 0x9.3d274p-4 : 0x7.e001481f3263d8ac6414e72e283p-4 : inexact-ok += exp2m1 upward binary128 0x9.3d274p-4 : 0x7.e001481f3263d8ac6414e72e2834p-4 : inexact-ok += exp2m1 downward ibm128 0x9.3d274p-4 : 0x7.e001481f3263d8ac6414e72e28p-4 : inexact-ok += exp2m1 tonearest ibm128 0x9.3d274p-4 : 0x7.e001481f3263d8ac6414e72e28p-4 : inexact-ok += exp2m1 towardzero ibm128 0x9.3d274p-4 : 0x7.e001481f3263d8ac6414e72e28p-4 : inexact-ok += exp2m1 upward ibm128 0x9.3d274p-4 : 0x7.e001481f3263d8ac6414e72e2ap-4 : inexact-ok += exp2m1 downward binary32 0x9.3d273p-4 : 0x7.e0013p-4 : inexact-ok += exp2m1 tonearest binary32 0x9.3d273p-4 : 0x7.e00138p-4 : inexact-ok += exp2m1 towardzero binary32 0x9.3d273p-4 : 0x7.e0013p-4 : inexact-ok += exp2m1 upward binary32 0x9.3d273p-4 : 0x7.e00138p-4 : inexact-ok += exp2m1 downward binary64 0x9.3d273p-4 : 0x7.e0013792ad89cp-4 : inexact-ok += exp2m1 tonearest binary64 0x9.3d273p-4 : 0x7.e0013792ad8ap-4 : inexact-ok += exp2m1 towardzero binary64 0x9.3d273p-4 : 0x7.e0013792ad89cp-4 : inexact-ok += exp2m1 upward binary64 0x9.3d273p-4 : 0x7.e0013792ad8ap-4 : inexact-ok += exp2m1 downward intel96 0x9.3d273p-4 : 0x7.e0013792ad89e87p-4 : inexact-ok += exp2m1 tonearest intel96 0x9.3d273p-4 : 0x7.e0013792ad89e87p-4 : inexact-ok += exp2m1 towardzero intel96 0x9.3d273p-4 : 0x7.e0013792ad89e87p-4 : inexact-ok += exp2m1 upward intel96 0x9.3d273p-4 : 0x7.e0013792ad89e878p-4 : inexact-ok += exp2m1 downward m68k96 0x9.3d273p-4 : 0x7.e0013792ad89e87p-4 : inexact-ok += exp2m1 tonearest m68k96 0x9.3d273p-4 : 0x7.e0013792ad89e87p-4 : inexact-ok += exp2m1 towardzero m68k96 0x9.3d273p-4 : 0x7.e0013792ad89e87p-4 : inexact-ok += exp2m1 upward m68k96 0x9.3d273p-4 : 0x7.e0013792ad89e878p-4 : inexact-ok += exp2m1 downward binary128 0x9.3d273p-4 : 0x7.e0013792ad89e870b49a6c07763cp-4 : inexact-ok += exp2m1 tonearest binary128 0x9.3d273p-4 : 0x7.e0013792ad89e870b49a6c07764p-4 : inexact-ok += exp2m1 towardzero binary128 0x9.3d273p-4 : 0x7.e0013792ad89e870b49a6c07763cp-4 : inexact-ok += exp2m1 upward binary128 0x9.3d273p-4 : 0x7.e0013792ad89e870b49a6c07764p-4 : inexact-ok += exp2m1 downward ibm128 0x9.3d273p-4 : 0x7.e0013792ad89e870b49a6c0776p-4 : inexact-ok += exp2m1 tonearest ibm128 0x9.3d273p-4 : 0x7.e0013792ad89e870b49a6c0776p-4 : inexact-ok += exp2m1 towardzero ibm128 0x9.3d273p-4 : 0x7.e0013792ad89e870b49a6c0776p-4 : inexact-ok += exp2m1 upward ibm128 0x9.3d273p-4 : 0x7.e0013792ad89e870b49a6c0778p-4 : inexact-ok += exp2m1 downward binary64 0x9.3d27303441adp-4 : 0x7.e00137c8ba274p-4 : inexact-ok += exp2m1 tonearest binary64 0x9.3d27303441adp-4 : 0x7.e00137c8ba278p-4 : inexact-ok += exp2m1 towardzero binary64 0x9.3d27303441adp-4 : 0x7.e00137c8ba274p-4 : inexact-ok += exp2m1 upward binary64 0x9.3d27303441adp-4 : 0x7.e00137c8ba278p-4 : inexact-ok += exp2m1 downward intel96 0x9.3d27303441adp-4 : 0x7.e00137c8ba27655p-4 : inexact-ok += exp2m1 tonearest intel96 0x9.3d27303441adp-4 : 0x7.e00137c8ba27655p-4 : inexact-ok += exp2m1 towardzero intel96 0x9.3d27303441adp-4 : 0x7.e00137c8ba27655p-4 : inexact-ok += exp2m1 upward intel96 0x9.3d27303441adp-4 : 0x7.e00137c8ba276558p-4 : inexact-ok += exp2m1 downward m68k96 0x9.3d27303441adp-4 : 0x7.e00137c8ba27655p-4 : inexact-ok += exp2m1 tonearest m68k96 0x9.3d27303441adp-4 : 0x7.e00137c8ba27655p-4 : inexact-ok += exp2m1 towardzero m68k96 0x9.3d27303441adp-4 : 0x7.e00137c8ba27655p-4 : inexact-ok += exp2m1 upward m68k96 0x9.3d27303441adp-4 : 0x7.e00137c8ba276558p-4 : inexact-ok += exp2m1 downward binary128 0x9.3d27303441adp-4 : 0x7.e00137c8ba27655111252e3b6824p-4 : inexact-ok += exp2m1 tonearest binary128 0x9.3d27303441adp-4 : 0x7.e00137c8ba27655111252e3b6828p-4 : inexact-ok += exp2m1 towardzero binary128 0x9.3d27303441adp-4 : 0x7.e00137c8ba27655111252e3b6824p-4 : inexact-ok += exp2m1 upward binary128 0x9.3d27303441adp-4 : 0x7.e00137c8ba27655111252e3b6828p-4 : inexact-ok += exp2m1 downward ibm128 0x9.3d27303441adp-4 : 0x7.e00137c8ba27655111252e3b68p-4 : inexact-ok += exp2m1 tonearest ibm128 0x9.3d27303441adp-4 : 0x7.e00137c8ba27655111252e3b68p-4 : inexact-ok += exp2m1 towardzero ibm128 0x9.3d27303441adp-4 : 0x7.e00137c8ba27655111252e3b68p-4 : inexact-ok += exp2m1 upward ibm128 0x9.3d27303441adp-4 : 0x7.e00137c8ba27655111252e3b6ap-4 : inexact-ok += exp2m1 downward binary64 0x9.3d27303441ac8p-4 : 0x7.e00137c8ba26cp-4 : inexact-ok += exp2m1 tonearest binary64 0x9.3d27303441ac8p-4 : 0x7.e00137c8ba27p-4 : inexact-ok += exp2m1 towardzero binary64 0x9.3d27303441ac8p-4 : 0x7.e00137c8ba26cp-4 : inexact-ok += exp2m1 upward binary64 0x9.3d27303441ac8p-4 : 0x7.e00137c8ba27p-4 : inexact-ok += exp2m1 downward intel96 0x9.3d27303441ac8p-4 : 0x7.e00137c8ba26e0e8p-4 : inexact-ok += exp2m1 tonearest intel96 0x9.3d27303441ac8p-4 : 0x7.e00137c8ba26e0fp-4 : inexact-ok += exp2m1 towardzero intel96 0x9.3d27303441ac8p-4 : 0x7.e00137c8ba26e0e8p-4 : inexact-ok += exp2m1 upward intel96 0x9.3d27303441ac8p-4 : 0x7.e00137c8ba26e0fp-4 : inexact-ok += exp2m1 downward m68k96 0x9.3d27303441ac8p-4 : 0x7.e00137c8ba26e0e8p-4 : inexact-ok += exp2m1 tonearest m68k96 0x9.3d27303441ac8p-4 : 0x7.e00137c8ba26e0fp-4 : inexact-ok += exp2m1 towardzero m68k96 0x9.3d27303441ac8p-4 : 0x7.e00137c8ba26e0e8p-4 : inexact-ok += exp2m1 upward m68k96 0x9.3d27303441ac8p-4 : 0x7.e00137c8ba26e0fp-4 : inexact-ok += exp2m1 downward binary128 0x9.3d27303441ac8p-4 : 0x7.e00137c8ba26e0ecea8262c755ep-4 : inexact-ok += exp2m1 tonearest binary128 0x9.3d27303441ac8p-4 : 0x7.e00137c8ba26e0ecea8262c755e4p-4 : inexact-ok += exp2m1 towardzero binary128 0x9.3d27303441ac8p-4 : 0x7.e00137c8ba26e0ecea8262c755ep-4 : inexact-ok += exp2m1 upward binary128 0x9.3d27303441ac8p-4 : 0x7.e00137c8ba26e0ecea8262c755e4p-4 : inexact-ok += exp2m1 downward ibm128 0x9.3d27303441ac8p-4 : 0x7.e00137c8ba26e0ecea8262c754p-4 : inexact-ok += exp2m1 tonearest ibm128 0x9.3d27303441ac8p-4 : 0x7.e00137c8ba26e0ecea8262c756p-4 : inexact-ok += exp2m1 towardzero ibm128 0x9.3d27303441ac8p-4 : 0x7.e00137c8ba26e0ecea8262c754p-4 : inexact-ok += exp2m1 upward ibm128 0x9.3d27303441ac8p-4 : 0x7.e00137c8ba26e0ecea8262c756p-4 : inexact-ok += exp2m1 downward intel96 0x9.3d27303441ac81fp-4 : 0x7.e00137c8ba26e2e8p-4 : inexact-ok += exp2m1 tonearest intel96 0x9.3d27303441ac81fp-4 : 0x7.e00137c8ba26e2fp-4 : inexact-ok += exp2m1 towardzero intel96 0x9.3d27303441ac81fp-4 : 0x7.e00137c8ba26e2e8p-4 : inexact-ok += exp2m1 upward intel96 0x9.3d27303441ac81fp-4 : 0x7.e00137c8ba26e2fp-4 : inexact-ok += exp2m1 downward m68k96 0x9.3d27303441ac81fp-4 : 0x7.e00137c8ba26e2e8p-4 : inexact-ok += exp2m1 tonearest m68k96 0x9.3d27303441ac81fp-4 : 0x7.e00137c8ba26e2fp-4 : inexact-ok += exp2m1 towardzero m68k96 0x9.3d27303441ac81fp-4 : 0x7.e00137c8ba26e2e8p-4 : inexact-ok += exp2m1 upward m68k96 0x9.3d27303441ac81fp-4 : 0x7.e00137c8ba26e2fp-4 : inexact-ok += exp2m1 downward binary128 0x9.3d27303441ac81fp-4 : 0x7.e00137c8ba26e2edee98199bb7a4p-4 : inexact-ok += exp2m1 tonearest binary128 0x9.3d27303441ac81fp-4 : 0x7.e00137c8ba26e2edee98199bb7a4p-4 : inexact-ok += exp2m1 towardzero binary128 0x9.3d27303441ac81fp-4 : 0x7.e00137c8ba26e2edee98199bb7a4p-4 : inexact-ok += exp2m1 upward binary128 0x9.3d27303441ac81fp-4 : 0x7.e00137c8ba26e2edee98199bb7a8p-4 : inexact-ok += exp2m1 downward ibm128 0x9.3d27303441ac81fp-4 : 0x7.e00137c8ba26e2edee98199bb6p-4 : inexact-ok += exp2m1 tonearest ibm128 0x9.3d27303441ac81fp-4 : 0x7.e00137c8ba26e2edee98199bb8p-4 : inexact-ok += exp2m1 towardzero ibm128 0x9.3d27303441ac81fp-4 : 0x7.e00137c8ba26e2edee98199bb6p-4 : inexact-ok += exp2m1 upward ibm128 0x9.3d27303441ac81fp-4 : 0x7.e00137c8ba26e2edee98199bb8p-4 : inexact-ok +exp2m1 0x8.fe7f91d947a1cfdp-4 += exp2m1 downward binary32 0x8.fe7fap-4 : 0x7.9f8b08p-4 : inexact-ok += exp2m1 tonearest binary32 0x8.fe7fap-4 : 0x7.9f8b08p-4 : inexact-ok += exp2m1 towardzero binary32 0x8.fe7fap-4 : 0x7.9f8b08p-4 : inexact-ok += exp2m1 upward binary32 0x8.fe7fap-4 : 0x7.9f8b1p-4 : inexact-ok += exp2m1 downward binary64 0x8.fe7fap-4 : 0x7.9f8b08c74330cp-4 : inexact-ok += exp2m1 tonearest binary64 0x8.fe7fap-4 : 0x7.9f8b08c74330cp-4 : inexact-ok += exp2m1 towardzero binary64 0x8.fe7fap-4 : 0x7.9f8b08c74330cp-4 : inexact-ok += exp2m1 upward binary64 0x8.fe7fap-4 : 0x7.9f8b08c74331p-4 : inexact-ok += exp2m1 downward intel96 0x8.fe7fap-4 : 0x7.9f8b08c74330d558p-4 : inexact-ok += exp2m1 tonearest intel96 0x8.fe7fap-4 : 0x7.9f8b08c74330d558p-4 : inexact-ok += exp2m1 towardzero intel96 0x8.fe7fap-4 : 0x7.9f8b08c74330d558p-4 : inexact-ok += exp2m1 upward intel96 0x8.fe7fap-4 : 0x7.9f8b08c74330d56p-4 : inexact-ok += exp2m1 downward m68k96 0x8.fe7fap-4 : 0x7.9f8b08c74330d558p-4 : inexact-ok += exp2m1 tonearest m68k96 0x8.fe7fap-4 : 0x7.9f8b08c74330d558p-4 : inexact-ok += exp2m1 towardzero m68k96 0x8.fe7fap-4 : 0x7.9f8b08c74330d558p-4 : inexact-ok += exp2m1 upward m68k96 0x8.fe7fap-4 : 0x7.9f8b08c74330d56p-4 : inexact-ok += exp2m1 downward binary128 0x8.fe7fap-4 : 0x7.9f8b08c74330d5593c2878f3ef0cp-4 : inexact-ok += exp2m1 tonearest binary128 0x8.fe7fap-4 : 0x7.9f8b08c74330d5593c2878f3ef0cp-4 : inexact-ok += exp2m1 towardzero binary128 0x8.fe7fap-4 : 0x7.9f8b08c74330d5593c2878f3ef0cp-4 : inexact-ok += exp2m1 upward binary128 0x8.fe7fap-4 : 0x7.9f8b08c74330d5593c2878f3ef1p-4 : inexact-ok += exp2m1 downward ibm128 0x8.fe7fap-4 : 0x7.9f8b08c74330d5593c2878f3eep-4 : inexact-ok += exp2m1 tonearest ibm128 0x8.fe7fap-4 : 0x7.9f8b08c74330d5593c2878f3fp-4 : inexact-ok += exp2m1 towardzero ibm128 0x8.fe7fap-4 : 0x7.9f8b08c74330d5593c2878f3eep-4 : inexact-ok += exp2m1 upward ibm128 0x8.fe7fap-4 : 0x7.9f8b08c74330d5593c2878f3fp-4 : inexact-ok += exp2m1 downward binary32 0x8.fe7f9p-4 : 0x7.9f8af8p-4 : inexact-ok += exp2m1 tonearest binary32 0x8.fe7f9p-4 : 0x7.9f8af8p-4 : inexact-ok += exp2m1 towardzero binary32 0x8.fe7f9p-4 : 0x7.9f8af8p-4 : inexact-ok += exp2m1 upward binary32 0x8.fe7f9p-4 : 0x7.9f8bp-4 : inexact-ok += exp2m1 downward binary64 0x8.fe7f9p-4 : 0x7.9f8af8676cd34p-4 : inexact-ok += exp2m1 tonearest binary64 0x8.fe7f9p-4 : 0x7.9f8af8676cd34p-4 : inexact-ok += exp2m1 towardzero binary64 0x8.fe7f9p-4 : 0x7.9f8af8676cd34p-4 : inexact-ok += exp2m1 upward binary64 0x8.fe7f9p-4 : 0x7.9f8af8676cd38p-4 : inexact-ok += exp2m1 downward intel96 0x8.fe7f9p-4 : 0x7.9f8af8676cd352a8p-4 : inexact-ok += exp2m1 tonearest intel96 0x8.fe7f9p-4 : 0x7.9f8af8676cd352a8p-4 : inexact-ok += exp2m1 towardzero intel96 0x8.fe7f9p-4 : 0x7.9f8af8676cd352a8p-4 : inexact-ok += exp2m1 upward intel96 0x8.fe7f9p-4 : 0x7.9f8af8676cd352bp-4 : inexact-ok += exp2m1 downward m68k96 0x8.fe7f9p-4 : 0x7.9f8af8676cd352a8p-4 : inexact-ok += exp2m1 tonearest m68k96 0x8.fe7f9p-4 : 0x7.9f8af8676cd352a8p-4 : inexact-ok += exp2m1 towardzero m68k96 0x8.fe7f9p-4 : 0x7.9f8af8676cd352a8p-4 : inexact-ok += exp2m1 upward m68k96 0x8.fe7f9p-4 : 0x7.9f8af8676cd352bp-4 : inexact-ok += exp2m1 downward binary128 0x8.fe7f9p-4 : 0x7.9f8af8676cd352a96d4d7a035208p-4 : inexact-ok += exp2m1 tonearest binary128 0x8.fe7f9p-4 : 0x7.9f8af8676cd352a96d4d7a03520cp-4 : inexact-ok += exp2m1 towardzero binary128 0x8.fe7f9p-4 : 0x7.9f8af8676cd352a96d4d7a035208p-4 : inexact-ok += exp2m1 upward binary128 0x8.fe7f9p-4 : 0x7.9f8af8676cd352a96d4d7a03520cp-4 : inexact-ok += exp2m1 downward ibm128 0x8.fe7f9p-4 : 0x7.9f8af8676cd352a96d4d7a0352p-4 : inexact-ok += exp2m1 tonearest ibm128 0x8.fe7f9p-4 : 0x7.9f8af8676cd352a96d4d7a0352p-4 : inexact-ok += exp2m1 towardzero ibm128 0x8.fe7f9p-4 : 0x7.9f8af8676cd352a96d4d7a0352p-4 : inexact-ok += exp2m1 upward ibm128 0x8.fe7f9p-4 : 0x7.9f8af8676cd352a96d4d7a0354p-4 : inexact-ok += exp2m1 downward binary64 0x8.fe7f91d947a2p-4 : 0x7.9f8afa4bc752cp-4 : inexact-ok += exp2m1 tonearest binary64 0x8.fe7f91d947a2p-4 : 0x7.9f8afa4bc753p-4 : inexact-ok += exp2m1 towardzero binary64 0x8.fe7f91d947a2p-4 : 0x7.9f8afa4bc752cp-4 : inexact-ok += exp2m1 upward binary64 0x8.fe7f91d947a2p-4 : 0x7.9f8afa4bc753p-4 : inexact-ok += exp2m1 downward intel96 0x8.fe7f91d947a2p-4 : 0x7.9f8afa4bc752fc3p-4 : inexact-ok += exp2m1 tonearest intel96 0x8.fe7f91d947a2p-4 : 0x7.9f8afa4bc752fc3p-4 : inexact-ok += exp2m1 towardzero intel96 0x8.fe7f91d947a2p-4 : 0x7.9f8afa4bc752fc3p-4 : inexact-ok += exp2m1 upward intel96 0x8.fe7f91d947a2p-4 : 0x7.9f8afa4bc752fc38p-4 : inexact-ok += exp2m1 downward m68k96 0x8.fe7f91d947a2p-4 : 0x7.9f8afa4bc752fc3p-4 : inexact-ok += exp2m1 tonearest m68k96 0x8.fe7f91d947a2p-4 : 0x7.9f8afa4bc752fc3p-4 : inexact-ok += exp2m1 towardzero m68k96 0x8.fe7f91d947a2p-4 : 0x7.9f8afa4bc752fc3p-4 : inexact-ok += exp2m1 upward m68k96 0x8.fe7f91d947a2p-4 : 0x7.9f8afa4bc752fc38p-4 : inexact-ok += exp2m1 downward binary128 0x8.fe7f91d947a2p-4 : 0x7.9f8afa4bc752fc327492264c85a4p-4 : inexact-ok += exp2m1 tonearest binary128 0x8.fe7f91d947a2p-4 : 0x7.9f8afa4bc752fc327492264c85a4p-4 : inexact-ok += exp2m1 towardzero binary128 0x8.fe7f91d947a2p-4 : 0x7.9f8afa4bc752fc327492264c85a4p-4 : inexact-ok += exp2m1 upward binary128 0x8.fe7f91d947a2p-4 : 0x7.9f8afa4bc752fc327492264c85a8p-4 : inexact-ok += exp2m1 downward ibm128 0x8.fe7f91d947a2p-4 : 0x7.9f8afa4bc752fc327492264c84p-4 : inexact-ok += exp2m1 tonearest ibm128 0x8.fe7f91d947a2p-4 : 0x7.9f8afa4bc752fc327492264c86p-4 : inexact-ok += exp2m1 towardzero ibm128 0x8.fe7f91d947a2p-4 : 0x7.9f8afa4bc752fc327492264c84p-4 : inexact-ok += exp2m1 upward ibm128 0x8.fe7f91d947a2p-4 : 0x7.9f8afa4bc752fc327492264c86p-4 : inexact-ok += exp2m1 downward binary64 0x8.fe7f91d947a18p-4 : 0x7.9f8afa4bc7524p-4 : inexact-ok += exp2m1 tonearest binary64 0x8.fe7f91d947a18p-4 : 0x7.9f8afa4bc7528p-4 : inexact-ok += exp2m1 towardzero binary64 0x8.fe7f91d947a18p-4 : 0x7.9f8afa4bc7524p-4 : inexact-ok += exp2m1 upward binary64 0x8.fe7f91d947a18p-4 : 0x7.9f8afa4bc7528p-4 : inexact-ok += exp2m1 downward intel96 0x8.fe7f91d947a18p-4 : 0x7.9f8afa4bc752793p-4 : inexact-ok += exp2m1 tonearest intel96 0x8.fe7f91d947a18p-4 : 0x7.9f8afa4bc752793p-4 : inexact-ok += exp2m1 towardzero intel96 0x8.fe7f91d947a18p-4 : 0x7.9f8afa4bc752793p-4 : inexact-ok += exp2m1 upward intel96 0x8.fe7f91d947a18p-4 : 0x7.9f8afa4bc7527938p-4 : inexact-ok += exp2m1 downward m68k96 0x8.fe7f91d947a18p-4 : 0x7.9f8afa4bc752793p-4 : inexact-ok += exp2m1 tonearest m68k96 0x8.fe7f91d947a18p-4 : 0x7.9f8afa4bc752793p-4 : inexact-ok += exp2m1 towardzero m68k96 0x8.fe7f91d947a18p-4 : 0x7.9f8afa4bc752793p-4 : inexact-ok += exp2m1 upward m68k96 0x8.fe7f91d947a18p-4 : 0x7.9f8afa4bc7527938p-4 : inexact-ok += exp2m1 downward binary128 0x8.fe7f91d947a18p-4 : 0x7.9f8afa4bc7527933c1c8f9383df4p-4 : inexact-ok += exp2m1 tonearest binary128 0x8.fe7f91d947a18p-4 : 0x7.9f8afa4bc7527933c1c8f9383df4p-4 : inexact-ok += exp2m1 towardzero binary128 0x8.fe7f91d947a18p-4 : 0x7.9f8afa4bc7527933c1c8f9383df4p-4 : inexact-ok += exp2m1 upward binary128 0x8.fe7f91d947a18p-4 : 0x7.9f8afa4bc7527933c1c8f9383df8p-4 : inexact-ok += exp2m1 downward ibm128 0x8.fe7f91d947a18p-4 : 0x7.9f8afa4bc7527933c1c8f9383cp-4 : inexact-ok += exp2m1 tonearest ibm128 0x8.fe7f91d947a18p-4 : 0x7.9f8afa4bc7527933c1c8f9383ep-4 : inexact-ok += exp2m1 towardzero ibm128 0x8.fe7f91d947a18p-4 : 0x7.9f8afa4bc7527933c1c8f9383cp-4 : inexact-ok += exp2m1 upward ibm128 0x8.fe7f91d947a18p-4 : 0x7.9f8afa4bc7527933c1c8f9383ep-4 : inexact-ok += exp2m1 downward intel96 0x8.fe7f91d947a1cfdp-4 : 0x7.9f8afa4bc752caep-4 : inexact-ok += exp2m1 tonearest intel96 0x8.fe7f91d947a1cfdp-4 : 0x7.9f8afa4bc752caep-4 : inexact-ok += exp2m1 towardzero intel96 0x8.fe7f91d947a1cfdp-4 : 0x7.9f8afa4bc752caep-4 : inexact-ok += exp2m1 upward intel96 0x8.fe7f91d947a1cfdp-4 : 0x7.9f8afa4bc752cae8p-4 : inexact-ok += exp2m1 downward m68k96 0x8.fe7f91d947a1cfdp-4 : 0x7.9f8afa4bc752caep-4 : inexact-ok += exp2m1 tonearest m68k96 0x8.fe7f91d947a1cfdp-4 : 0x7.9f8afa4bc752caep-4 : inexact-ok += exp2m1 towardzero m68k96 0x8.fe7f91d947a1cfdp-4 : 0x7.9f8afa4bc752caep-4 : inexact-ok += exp2m1 upward m68k96 0x8.fe7f91d947a1cfdp-4 : 0x7.9f8afa4bc752cae8p-4 : inexact-ok += exp2m1 downward binary128 0x8.fe7f91d947a1cfdp-4 : 0x7.9f8afa4bc752cae1d203a9f402dp-4 : inexact-ok += exp2m1 tonearest binary128 0x8.fe7f91d947a1cfdp-4 : 0x7.9f8afa4bc752cae1d203a9f402d4p-4 : inexact-ok += exp2m1 towardzero binary128 0x8.fe7f91d947a1cfdp-4 : 0x7.9f8afa4bc752cae1d203a9f402dp-4 : inexact-ok += exp2m1 upward binary128 0x8.fe7f91d947a1cfdp-4 : 0x7.9f8afa4bc752cae1d203a9f402d4p-4 : inexact-ok += exp2m1 downward ibm128 0x8.fe7f91d947a1cfdp-4 : 0x7.9f8afa4bc752cae1d203a9f402p-4 : inexact-ok += exp2m1 tonearest ibm128 0x8.fe7f91d947a1cfdp-4 : 0x7.9f8afa4bc752cae1d203a9f402p-4 : inexact-ok += exp2m1 towardzero ibm128 0x8.fe7f91d947a1cfdp-4 : 0x7.9f8afa4bc752cae1d203a9f402p-4 : inexact-ok += exp2m1 upward ibm128 0x8.fe7f91d947a1cfdp-4 : 0x7.9f8afa4bc752cae1d203a9f404p-4 : inexact-ok +exp2m1 0x9.1217d12087d76b2ca347683e4b5p-4 += exp2m1 downward binary32 0x9.1217ep-4 : 0x7.b3a128p-4 : inexact-ok += exp2m1 tonearest binary32 0x9.1217ep-4 : 0x7.b3a13p-4 : inexact-ok += exp2m1 towardzero binary32 0x9.1217ep-4 : 0x7.b3a128p-4 : inexact-ok += exp2m1 upward binary32 0x9.1217ep-4 : 0x7.b3a13p-4 : inexact-ok += exp2m1 downward binary64 0x9.1217ep-4 : 0x7.b3a12ca1e033p-4 : inexact-ok += exp2m1 tonearest binary64 0x9.1217ep-4 : 0x7.b3a12ca1e0334p-4 : inexact-ok += exp2m1 towardzero binary64 0x9.1217ep-4 : 0x7.b3a12ca1e033p-4 : inexact-ok += exp2m1 upward binary64 0x9.1217ep-4 : 0x7.b3a12ca1e0334p-4 : inexact-ok += exp2m1 downward intel96 0x9.1217ep-4 : 0x7.b3a12ca1e0333df8p-4 : inexact-ok += exp2m1 tonearest intel96 0x9.1217ep-4 : 0x7.b3a12ca1e0333df8p-4 : inexact-ok += exp2m1 towardzero intel96 0x9.1217ep-4 : 0x7.b3a12ca1e0333df8p-4 : inexact-ok += exp2m1 upward intel96 0x9.1217ep-4 : 0x7.b3a12ca1e0333ep-4 : inexact-ok += exp2m1 downward m68k96 0x9.1217ep-4 : 0x7.b3a12ca1e0333df8p-4 : inexact-ok += exp2m1 tonearest m68k96 0x9.1217ep-4 : 0x7.b3a12ca1e0333df8p-4 : inexact-ok += exp2m1 towardzero m68k96 0x9.1217ep-4 : 0x7.b3a12ca1e0333df8p-4 : inexact-ok += exp2m1 upward m68k96 0x9.1217ep-4 : 0x7.b3a12ca1e0333ep-4 : inexact-ok += exp2m1 downward binary128 0x9.1217ep-4 : 0x7.b3a12ca1e0333dfa0d1166a048cp-4 : inexact-ok += exp2m1 tonearest binary128 0x9.1217ep-4 : 0x7.b3a12ca1e0333dfa0d1166a048cp-4 : inexact-ok += exp2m1 towardzero binary128 0x9.1217ep-4 : 0x7.b3a12ca1e0333dfa0d1166a048cp-4 : inexact-ok += exp2m1 upward binary128 0x9.1217ep-4 : 0x7.b3a12ca1e0333dfa0d1166a048c4p-4 : inexact-ok += exp2m1 downward ibm128 0x9.1217ep-4 : 0x7.b3a12ca1e0333dfa0d1166a048p-4 : inexact-ok += exp2m1 tonearest ibm128 0x9.1217ep-4 : 0x7.b3a12ca1e0333dfa0d1166a048p-4 : inexact-ok += exp2m1 towardzero ibm128 0x9.1217ep-4 : 0x7.b3a12ca1e0333dfa0d1166a048p-4 : inexact-ok += exp2m1 upward ibm128 0x9.1217ep-4 : 0x7.b3a12ca1e0333dfa0d1166a04ap-4 : inexact-ok += exp2m1 downward binary32 0x9.1217dp-4 : 0x7.b3a118p-4 : inexact-ok += exp2m1 tonearest binary32 0x9.1217dp-4 : 0x7.b3a12p-4 : inexact-ok += exp2m1 towardzero binary32 0x9.1217dp-4 : 0x7.b3a118p-4 : inexact-ok += exp2m1 upward binary32 0x9.1217dp-4 : 0x7.b3a12p-4 : inexact-ok += exp2m1 downward binary64 0x9.1217dp-4 : 0x7.b3a11c341d93p-4 : inexact-ok += exp2m1 tonearest binary64 0x9.1217dp-4 : 0x7.b3a11c341d934p-4 : inexact-ok += exp2m1 towardzero binary64 0x9.1217dp-4 : 0x7.b3a11c341d93p-4 : inexact-ok += exp2m1 upward binary64 0x9.1217dp-4 : 0x7.b3a11c341d934p-4 : inexact-ok += exp2m1 downward intel96 0x9.1217dp-4 : 0x7.b3a11c341d93389p-4 : inexact-ok += exp2m1 tonearest intel96 0x9.1217dp-4 : 0x7.b3a11c341d93389p-4 : inexact-ok += exp2m1 towardzero intel96 0x9.1217dp-4 : 0x7.b3a11c341d93389p-4 : inexact-ok += exp2m1 upward intel96 0x9.1217dp-4 : 0x7.b3a11c341d933898p-4 : inexact-ok += exp2m1 downward m68k96 0x9.1217dp-4 : 0x7.b3a11c341d93389p-4 : inexact-ok += exp2m1 tonearest m68k96 0x9.1217dp-4 : 0x7.b3a11c341d93389p-4 : inexact-ok += exp2m1 towardzero m68k96 0x9.1217dp-4 : 0x7.b3a11c341d93389p-4 : inexact-ok += exp2m1 upward m68k96 0x9.1217dp-4 : 0x7.b3a11c341d933898p-4 : inexact-ok += exp2m1 downward binary128 0x9.1217dp-4 : 0x7.b3a11c341d933890914aa5f4fe2p-4 : inexact-ok += exp2m1 tonearest binary128 0x9.1217dp-4 : 0x7.b3a11c341d933890914aa5f4fe2p-4 : inexact-ok += exp2m1 towardzero binary128 0x9.1217dp-4 : 0x7.b3a11c341d933890914aa5f4fe2p-4 : inexact-ok += exp2m1 upward binary128 0x9.1217dp-4 : 0x7.b3a11c341d933890914aa5f4fe24p-4 : inexact-ok += exp2m1 downward ibm128 0x9.1217dp-4 : 0x7.b3a11c341d933890914aa5f4fep-4 : inexact-ok += exp2m1 tonearest ibm128 0x9.1217dp-4 : 0x7.b3a11c341d933890914aa5f4fep-4 : inexact-ok += exp2m1 towardzero ibm128 0x9.1217dp-4 : 0x7.b3a11c341d933890914aa5f4fep-4 : inexact-ok += exp2m1 upward ibm128 0x9.1217dp-4 : 0x7.b3a11c341d933890914aa5f5p-4 : inexact-ok += exp2m1 downward binary64 0x9.1217d12087d78p-4 : 0x7.b3a11d5c60bd4p-4 : inexact-ok += exp2m1 tonearest binary64 0x9.1217d12087d78p-4 : 0x7.b3a11d5c60bd8p-4 : inexact-ok += exp2m1 towardzero binary64 0x9.1217d12087d78p-4 : 0x7.b3a11d5c60bd4p-4 : inexact-ok += exp2m1 upward binary64 0x9.1217d12087d78p-4 : 0x7.b3a11d5c60bd8p-4 : inexact-ok += exp2m1 downward intel96 0x9.1217d12087d78p-4 : 0x7.b3a11d5c60bd79f8p-4 : inexact-ok += exp2m1 tonearest intel96 0x9.1217d12087d78p-4 : 0x7.b3a11d5c60bd79f8p-4 : inexact-ok += exp2m1 towardzero intel96 0x9.1217d12087d78p-4 : 0x7.b3a11d5c60bd79f8p-4 : inexact-ok += exp2m1 upward intel96 0x9.1217d12087d78p-4 : 0x7.b3a11d5c60bd7ap-4 : inexact-ok += exp2m1 downward m68k96 0x9.1217d12087d78p-4 : 0x7.b3a11d5c60bd79f8p-4 : inexact-ok += exp2m1 tonearest m68k96 0x9.1217d12087d78p-4 : 0x7.b3a11d5c60bd79f8p-4 : inexact-ok += exp2m1 towardzero m68k96 0x9.1217d12087d78p-4 : 0x7.b3a11d5c60bd79f8p-4 : inexact-ok += exp2m1 upward m68k96 0x9.1217d12087d78p-4 : 0x7.b3a11d5c60bd7ap-4 : inexact-ok += exp2m1 downward binary128 0x9.1217d12087d78p-4 : 0x7.b3a11d5c60bd79fbddf335019f84p-4 : inexact-ok += exp2m1 tonearest binary128 0x9.1217d12087d78p-4 : 0x7.b3a11d5c60bd79fbddf335019f88p-4 : inexact-ok += exp2m1 towardzero binary128 0x9.1217d12087d78p-4 : 0x7.b3a11d5c60bd79fbddf335019f84p-4 : inexact-ok += exp2m1 upward binary128 0x9.1217d12087d78p-4 : 0x7.b3a11d5c60bd79fbddf335019f88p-4 : inexact-ok += exp2m1 downward ibm128 0x9.1217d12087d78p-4 : 0x7.b3a11d5c60bd79fbddf335019ep-4 : inexact-ok += exp2m1 tonearest ibm128 0x9.1217d12087d78p-4 : 0x7.b3a11d5c60bd79fbddf33501ap-4 : inexact-ok += exp2m1 towardzero ibm128 0x9.1217d12087d78p-4 : 0x7.b3a11d5c60bd79fbddf335019ep-4 : inexact-ok += exp2m1 upward ibm128 0x9.1217d12087d78p-4 : 0x7.b3a11d5c60bd79fbddf33501ap-4 : inexact-ok += exp2m1 downward binary64 0x9.1217d12087d7p-4 : 0x7.b3a11d5c60bccp-4 : inexact-ok += exp2m1 tonearest binary64 0x9.1217d12087d7p-4 : 0x7.b3a11d5c60bdp-4 : inexact-ok += exp2m1 towardzero binary64 0x9.1217d12087d7p-4 : 0x7.b3a11d5c60bccp-4 : inexact-ok += exp2m1 upward binary64 0x9.1217d12087d7p-4 : 0x7.b3a11d5c60bdp-4 : inexact-ok += exp2m1 downward intel96 0x9.1217d12087d7p-4 : 0x7.b3a11d5c60bcf688p-4 : inexact-ok += exp2m1 tonearest intel96 0x9.1217d12087d7p-4 : 0x7.b3a11d5c60bcf69p-4 : inexact-ok += exp2m1 towardzero intel96 0x9.1217d12087d7p-4 : 0x7.b3a11d5c60bcf688p-4 : inexact-ok += exp2m1 upward intel96 0x9.1217d12087d7p-4 : 0x7.b3a11d5c60bcf69p-4 : inexact-ok += exp2m1 downward m68k96 0x9.1217d12087d7p-4 : 0x7.b3a11d5c60bcf688p-4 : inexact-ok += exp2m1 tonearest m68k96 0x9.1217d12087d7p-4 : 0x7.b3a11d5c60bcf69p-4 : inexact-ok += exp2m1 towardzero m68k96 0x9.1217d12087d7p-4 : 0x7.b3a11d5c60bcf688p-4 : inexact-ok += exp2m1 upward m68k96 0x9.1217d12087d7p-4 : 0x7.b3a11d5c60bcf69p-4 : inexact-ok += exp2m1 downward binary128 0x9.1217d12087d7p-4 : 0x7.b3a11d5c60bcf68dc91a2bb9dadcp-4 : inexact-ok += exp2m1 tonearest binary128 0x9.1217d12087d7p-4 : 0x7.b3a11d5c60bcf68dc91a2bb9daep-4 : inexact-ok += exp2m1 towardzero binary128 0x9.1217d12087d7p-4 : 0x7.b3a11d5c60bcf68dc91a2bb9dadcp-4 : inexact-ok += exp2m1 upward binary128 0x9.1217d12087d7p-4 : 0x7.b3a11d5c60bcf68dc91a2bb9daep-4 : inexact-ok += exp2m1 downward ibm128 0x9.1217d12087d7p-4 : 0x7.b3a11d5c60bcf68dc91a2bb9dap-4 : inexact-ok += exp2m1 tonearest ibm128 0x9.1217d12087d7p-4 : 0x7.b3a11d5c60bcf68dc91a2bb9dap-4 : inexact-ok += exp2m1 towardzero ibm128 0x9.1217d12087d7p-4 : 0x7.b3a11d5c60bcf68dc91a2bb9dap-4 : inexact-ok += exp2m1 upward ibm128 0x9.1217d12087d7p-4 : 0x7.b3a11d5c60bcf68dc91a2bb9dcp-4 : inexact-ok += exp2m1 downward intel96 0x9.1217d12087d76b3p-4 : 0x7.b3a11d5c60bd6498p-4 : inexact-ok += exp2m1 tonearest intel96 0x9.1217d12087d76b3p-4 : 0x7.b3a11d5c60bd64ap-4 : inexact-ok += exp2m1 towardzero intel96 0x9.1217d12087d76b3p-4 : 0x7.b3a11d5c60bd6498p-4 : inexact-ok += exp2m1 upward intel96 0x9.1217d12087d76b3p-4 : 0x7.b3a11d5c60bd64ap-4 : inexact-ok += exp2m1 downward m68k96 0x9.1217d12087d76b3p-4 : 0x7.b3a11d5c60bd6498p-4 : inexact-ok += exp2m1 tonearest m68k96 0x9.1217d12087d76b3p-4 : 0x7.b3a11d5c60bd64ap-4 : inexact-ok += exp2m1 towardzero m68k96 0x9.1217d12087d76b3p-4 : 0x7.b3a11d5c60bd6498p-4 : inexact-ok += exp2m1 upward m68k96 0x9.1217d12087d76b3p-4 : 0x7.b3a11d5c60bd64ap-4 : inexact-ok += exp2m1 downward binary128 0x9.1217d12087d76b3p-4 : 0x7.b3a11d5c60bd649d17cf6adf53f8p-4 : inexact-ok += exp2m1 tonearest binary128 0x9.1217d12087d76b3p-4 : 0x7.b3a11d5c60bd649d17cf6adf53fcp-4 : inexact-ok += exp2m1 towardzero binary128 0x9.1217d12087d76b3p-4 : 0x7.b3a11d5c60bd649d17cf6adf53f8p-4 : inexact-ok += exp2m1 upward binary128 0x9.1217d12087d76b3p-4 : 0x7.b3a11d5c60bd649d17cf6adf53fcp-4 : inexact-ok += exp2m1 downward ibm128 0x9.1217d12087d76b3p-4 : 0x7.b3a11d5c60bd649d17cf6adf52p-4 : inexact-ok += exp2m1 tonearest ibm128 0x9.1217d12087d76b3p-4 : 0x7.b3a11d5c60bd649d17cf6adf54p-4 : inexact-ok += exp2m1 towardzero ibm128 0x9.1217d12087d76b3p-4 : 0x7.b3a11d5c60bd649d17cf6adf52p-4 : inexact-ok += exp2m1 upward ibm128 0x9.1217d12087d76b3p-4 : 0x7.b3a11d5c60bd649d17cf6adf54p-4 : inexact-ok += exp2m1 downward intel96 0x9.1217d12087d76b2p-4 : 0x7.b3a11d5c60bd6488p-4 : inexact-ok += exp2m1 tonearest intel96 0x9.1217d12087d76b2p-4 : 0x7.b3a11d5c60bd649p-4 : inexact-ok += exp2m1 towardzero intel96 0x9.1217d12087d76b2p-4 : 0x7.b3a11d5c60bd6488p-4 : inexact-ok += exp2m1 upward intel96 0x9.1217d12087d76b2p-4 : 0x7.b3a11d5c60bd649p-4 : inexact-ok += exp2m1 downward m68k96 0x9.1217d12087d76b2p-4 : 0x7.b3a11d5c60bd6488p-4 : inexact-ok += exp2m1 tonearest m68k96 0x9.1217d12087d76b2p-4 : 0x7.b3a11d5c60bd649p-4 : inexact-ok += exp2m1 towardzero m68k96 0x9.1217d12087d76b2p-4 : 0x7.b3a11d5c60bd6488p-4 : inexact-ok += exp2m1 upward m68k96 0x9.1217d12087d76b2p-4 : 0x7.b3a11d5c60bd649p-4 : inexact-ok += exp2m1 downward binary128 0x9.1217d12087d76b2p-4 : 0x7.b3a11d5c60bd648caa0ccfbe2bp-4 : inexact-ok += exp2m1 tonearest binary128 0x9.1217d12087d76b2p-4 : 0x7.b3a11d5c60bd648caa0ccfbe2b04p-4 : inexact-ok += exp2m1 towardzero binary128 0x9.1217d12087d76b2p-4 : 0x7.b3a11d5c60bd648caa0ccfbe2bp-4 : inexact-ok += exp2m1 upward binary128 0x9.1217d12087d76b2p-4 : 0x7.b3a11d5c60bd648caa0ccfbe2b04p-4 : inexact-ok += exp2m1 downward ibm128 0x9.1217d12087d76b2p-4 : 0x7.b3a11d5c60bd648caa0ccfbe2ap-4 : inexact-ok += exp2m1 tonearest ibm128 0x9.1217d12087d76b2p-4 : 0x7.b3a11d5c60bd648caa0ccfbe2cp-4 : inexact-ok += exp2m1 towardzero ibm128 0x9.1217d12087d76b2p-4 : 0x7.b3a11d5c60bd648caa0ccfbe2ap-4 : inexact-ok += exp2m1 upward ibm128 0x9.1217d12087d76b2p-4 : 0x7.b3a11d5c60bd648caa0ccfbe2cp-4 : inexact-ok += exp2m1 downward binary128 0x9.1217d12087d76b2ca347683e4b5p-4 : 0x7.b3a11d5c60bd6499a40644bc6388p-4 : inexact-ok += exp2m1 tonearest binary128 0x9.1217d12087d76b2ca347683e4b5p-4 : 0x7.b3a11d5c60bd6499a40644bc6388p-4 : inexact-ok += exp2m1 towardzero binary128 0x9.1217d12087d76b2ca347683e4b5p-4 : 0x7.b3a11d5c60bd6499a40644bc6388p-4 : inexact-ok += exp2m1 upward binary128 0x9.1217d12087d76b2ca347683e4b5p-4 : 0x7.b3a11d5c60bd6499a40644bc638cp-4 : inexact-ok += exp2m1 downward binary128 0x9.1217d12087d76b2ca347683e4cp-4 : 0x7.b3a11d5c60bd6499a40644bc643cp-4 : inexact-ok += exp2m1 tonearest binary128 0x9.1217d12087d76b2ca347683e4cp-4 : 0x7.b3a11d5c60bd6499a40644bc643cp-4 : inexact-ok += exp2m1 towardzero binary128 0x9.1217d12087d76b2ca347683e4cp-4 : 0x7.b3a11d5c60bd6499a40644bc643cp-4 : inexact-ok += exp2m1 upward binary128 0x9.1217d12087d76b2ca347683e4cp-4 : 0x7.b3a11d5c60bd6499a40644bc644p-4 : inexact-ok += exp2m1 downward ibm128 0x9.1217d12087d76b2ca347683e4cp-4 : 0x7.b3a11d5c60bd6499a40644bc64p-4 : inexact-ok += exp2m1 tonearest ibm128 0x9.1217d12087d76b2ca347683e4cp-4 : 0x7.b3a11d5c60bd6499a40644bc64p-4 : inexact-ok += exp2m1 towardzero ibm128 0x9.1217d12087d76b2ca347683e4cp-4 : 0x7.b3a11d5c60bd6499a40644bc64p-4 : inexact-ok += exp2m1 upward ibm128 0x9.1217d12087d76b2ca347683e4cp-4 : 0x7.b3a11d5c60bd6499a40644bc66p-4 : inexact-ok += exp2m1 downward binary128 0x9.1217d12087d76b2ca347683e48p-4 : 0x7.b3a11d5c60bd6499a40644bc602p-4 : inexact-ok += exp2m1 tonearest binary128 0x9.1217d12087d76b2ca347683e48p-4 : 0x7.b3a11d5c60bd6499a40644bc6024p-4 : inexact-ok += exp2m1 towardzero binary128 0x9.1217d12087d76b2ca347683e48p-4 : 0x7.b3a11d5c60bd6499a40644bc602p-4 : inexact-ok += exp2m1 upward binary128 0x9.1217d12087d76b2ca347683e48p-4 : 0x7.b3a11d5c60bd6499a40644bc6024p-4 : inexact-ok += exp2m1 downward ibm128 0x9.1217d12087d76b2ca347683e48p-4 : 0x7.b3a11d5c60bd6499a40644bc6p-4 : inexact-ok += exp2m1 tonearest ibm128 0x9.1217d12087d76b2ca347683e48p-4 : 0x7.b3a11d5c60bd6499a40644bc6p-4 : inexact-ok += exp2m1 towardzero ibm128 0x9.1217d12087d76b2ca347683e48p-4 : 0x7.b3a11d5c60bd6499a40644bc6p-4 : inexact-ok += exp2m1 upward ibm128 0x9.1217d12087d76b2ca347683e48p-4 : 0x7.b3a11d5c60bd6499a40644bc62p-4 : inexact-ok +exp2m1 0x8.80db492a604297e1a3816aeec568p-4 += exp2m1 downward binary32 0x8.80db5p-4 : 0x7.205198p-4 : inexact-ok += exp2m1 tonearest binary32 0x8.80db5p-4 : 0x7.2051ap-4 : inexact-ok += exp2m1 towardzero binary32 0x8.80db5p-4 : 0x7.205198p-4 : inexact-ok += exp2m1 upward binary32 0x8.80db5p-4 : 0x7.2051ap-4 : inexact-ok += exp2m1 downward binary64 0x8.80db5p-4 : 0x7.20519dbc87ff4p-4 : inexact-ok += exp2m1 tonearest binary64 0x8.80db5p-4 : 0x7.20519dbc87ff4p-4 : inexact-ok += exp2m1 towardzero binary64 0x8.80db5p-4 : 0x7.20519dbc87ff4p-4 : inexact-ok += exp2m1 upward binary64 0x8.80db5p-4 : 0x7.20519dbc87ff8p-4 : inexact-ok += exp2m1 downward intel96 0x8.80db5p-4 : 0x7.20519dbc87ff4b18p-4 : inexact-ok += exp2m1 tonearest intel96 0x8.80db5p-4 : 0x7.20519dbc87ff4b2p-4 : inexact-ok += exp2m1 towardzero intel96 0x8.80db5p-4 : 0x7.20519dbc87ff4b18p-4 : inexact-ok += exp2m1 upward intel96 0x8.80db5p-4 : 0x7.20519dbc87ff4b2p-4 : inexact-ok += exp2m1 downward m68k96 0x8.80db5p-4 : 0x7.20519dbc87ff4b18p-4 : inexact-ok += exp2m1 tonearest m68k96 0x8.80db5p-4 : 0x7.20519dbc87ff4b2p-4 : inexact-ok += exp2m1 towardzero m68k96 0x8.80db5p-4 : 0x7.20519dbc87ff4b18p-4 : inexact-ok += exp2m1 upward m68k96 0x8.80db5p-4 : 0x7.20519dbc87ff4b2p-4 : inexact-ok += exp2m1 downward binary128 0x8.80db5p-4 : 0x7.20519dbc87ff4b1d68fc5fab89e8p-4 : inexact-ok += exp2m1 tonearest binary128 0x8.80db5p-4 : 0x7.20519dbc87ff4b1d68fc5fab89ecp-4 : inexact-ok += exp2m1 towardzero binary128 0x8.80db5p-4 : 0x7.20519dbc87ff4b1d68fc5fab89e8p-4 : inexact-ok += exp2m1 upward binary128 0x8.80db5p-4 : 0x7.20519dbc87ff4b1d68fc5fab89ecp-4 : inexact-ok += exp2m1 downward ibm128 0x8.80db5p-4 : 0x7.20519dbc87ff4b1d68fc5fab88p-4 : inexact-ok += exp2m1 tonearest ibm128 0x8.80db5p-4 : 0x7.20519dbc87ff4b1d68fc5fab8ap-4 : inexact-ok += exp2m1 towardzero ibm128 0x8.80db5p-4 : 0x7.20519dbc87ff4b1d68fc5fab88p-4 : inexact-ok += exp2m1 upward ibm128 0x8.80db5p-4 : 0x7.20519dbc87ff4b1d68fc5fab8ap-4 : inexact-ok += exp2m1 downward binary32 0x8.80db4p-4 : 0x7.205188p-4 : inexact-ok += exp2m1 tonearest binary32 0x8.80db4p-4 : 0x7.20519p-4 : inexact-ok += exp2m1 towardzero binary32 0x8.80db4p-4 : 0x7.205188p-4 : inexact-ok += exp2m1 upward binary32 0x8.80db4p-4 : 0x7.20519p-4 : inexact-ok += exp2m1 downward binary64 0x8.80db4p-4 : 0x7.20518db4e108p-4 : inexact-ok += exp2m1 tonearest binary64 0x8.80db4p-4 : 0x7.20518db4e1084p-4 : inexact-ok += exp2m1 towardzero binary64 0x8.80db4p-4 : 0x7.20518db4e108p-4 : inexact-ok += exp2m1 upward binary64 0x8.80db4p-4 : 0x7.20518db4e1084p-4 : inexact-ok += exp2m1 downward intel96 0x8.80db4p-4 : 0x7.20518db4e108274p-4 : inexact-ok += exp2m1 tonearest intel96 0x8.80db4p-4 : 0x7.20518db4e1082748p-4 : inexact-ok += exp2m1 towardzero intel96 0x8.80db4p-4 : 0x7.20518db4e108274p-4 : inexact-ok += exp2m1 upward intel96 0x8.80db4p-4 : 0x7.20518db4e1082748p-4 : inexact-ok += exp2m1 downward m68k96 0x8.80db4p-4 : 0x7.20518db4e108274p-4 : inexact-ok += exp2m1 tonearest m68k96 0x8.80db4p-4 : 0x7.20518db4e1082748p-4 : inexact-ok += exp2m1 towardzero m68k96 0x8.80db4p-4 : 0x7.20518db4e108274p-4 : inexact-ok += exp2m1 upward m68k96 0x8.80db4p-4 : 0x7.20518db4e1082748p-4 : inexact-ok += exp2m1 downward binary128 0x8.80db4p-4 : 0x7.20518db4e10827450e628bf8696p-4 : inexact-ok += exp2m1 tonearest binary128 0x8.80db4p-4 : 0x7.20518db4e10827450e628bf86964p-4 : inexact-ok += exp2m1 towardzero binary128 0x8.80db4p-4 : 0x7.20518db4e10827450e628bf8696p-4 : inexact-ok += exp2m1 upward binary128 0x8.80db4p-4 : 0x7.20518db4e10827450e628bf86964p-4 : inexact-ok += exp2m1 downward ibm128 0x8.80db4p-4 : 0x7.20518db4e10827450e628bf868p-4 : inexact-ok += exp2m1 tonearest ibm128 0x8.80db4p-4 : 0x7.20518db4e10827450e628bf86ap-4 : inexact-ok += exp2m1 towardzero ibm128 0x8.80db4p-4 : 0x7.20518db4e10827450e628bf868p-4 : inexact-ok += exp2m1 upward ibm128 0x8.80db4p-4 : 0x7.20518db4e10827450e628bf86ap-4 : inexact-ok += exp2m1 downward binary64 0x8.80db492a6043p-4 : 0x7.205196e3a379p-4 : inexact-ok += exp2m1 tonearest binary64 0x8.80db492a6043p-4 : 0x7.205196e3a3794p-4 : inexact-ok += exp2m1 towardzero binary64 0x8.80db492a6043p-4 : 0x7.205196e3a379p-4 : inexact-ok += exp2m1 upward binary64 0x8.80db492a6043p-4 : 0x7.205196e3a3794p-4 : inexact-ok += exp2m1 downward intel96 0x8.80db492a6043p-4 : 0x7.205196e3a37922p-4 : inexact-ok += exp2m1 tonearest intel96 0x8.80db492a6043p-4 : 0x7.205196e3a37922p-4 : inexact-ok += exp2m1 towardzero intel96 0x8.80db492a6043p-4 : 0x7.205196e3a37922p-4 : inexact-ok += exp2m1 upward intel96 0x8.80db492a6043p-4 : 0x7.205196e3a3792208p-4 : inexact-ok += exp2m1 downward m68k96 0x8.80db492a6043p-4 : 0x7.205196e3a37922p-4 : inexact-ok += exp2m1 tonearest m68k96 0x8.80db492a6043p-4 : 0x7.205196e3a37922p-4 : inexact-ok += exp2m1 towardzero m68k96 0x8.80db492a6043p-4 : 0x7.205196e3a37922p-4 : inexact-ok += exp2m1 upward m68k96 0x8.80db492a6043p-4 : 0x7.205196e3a3792208p-4 : inexact-ok += exp2m1 downward binary128 0x8.80db492a6043p-4 : 0x7.205196e3a3792200f7c9c53af1ep-4 : inexact-ok += exp2m1 tonearest binary128 0x8.80db492a6043p-4 : 0x7.205196e3a3792200f7c9c53af1ep-4 : inexact-ok += exp2m1 towardzero binary128 0x8.80db492a6043p-4 : 0x7.205196e3a3792200f7c9c53af1ep-4 : inexact-ok += exp2m1 upward binary128 0x8.80db492a6043p-4 : 0x7.205196e3a3792200f7c9c53af1e4p-4 : inexact-ok += exp2m1 downward ibm128 0x8.80db492a6043p-4 : 0x7.205196e3a3792200f7c9c53afp-4 : inexact-ok += exp2m1 tonearest ibm128 0x8.80db492a6043p-4 : 0x7.205196e3a3792200f7c9c53af2p-4 : inexact-ok += exp2m1 towardzero ibm128 0x8.80db492a6043p-4 : 0x7.205196e3a3792200f7c9c53afp-4 : inexact-ok += exp2m1 upward ibm128 0x8.80db492a6043p-4 : 0x7.205196e3a3792200f7c9c53af2p-4 : inexact-ok += exp2m1 downward binary64 0x8.80db492a60428p-4 : 0x7.205196e3a3788p-4 : inexact-ok += exp2m1 tonearest binary64 0x8.80db492a60428p-4 : 0x7.205196e3a378cp-4 : inexact-ok += exp2m1 towardzero binary64 0x8.80db492a60428p-4 : 0x7.205196e3a3788p-4 : inexact-ok += exp2m1 upward binary64 0x8.80db492a60428p-4 : 0x7.205196e3a378cp-4 : inexact-ok += exp2m1 downward intel96 0x8.80db492a60428p-4 : 0x7.205196e3a378a1cp-4 : inexact-ok += exp2m1 tonearest intel96 0x8.80db492a60428p-4 : 0x7.205196e3a378a1cp-4 : inexact-ok += exp2m1 towardzero intel96 0x8.80db492a60428p-4 : 0x7.205196e3a378a1cp-4 : inexact-ok += exp2m1 upward intel96 0x8.80db492a60428p-4 : 0x7.205196e3a378a1c8p-4 : inexact-ok += exp2m1 downward m68k96 0x8.80db492a60428p-4 : 0x7.205196e3a378a1cp-4 : inexact-ok += exp2m1 tonearest m68k96 0x8.80db492a60428p-4 : 0x7.205196e3a378a1cp-4 : inexact-ok += exp2m1 towardzero m68k96 0x8.80db492a60428p-4 : 0x7.205196e3a378a1cp-4 : inexact-ok += exp2m1 upward m68k96 0x8.80db492a60428p-4 : 0x7.205196e3a378a1c8p-4 : inexact-ok += exp2m1 downward binary128 0x8.80db492a60428p-4 : 0x7.205196e3a378a1c3c00a2cd488b4p-4 : inexact-ok += exp2m1 tonearest binary128 0x8.80db492a60428p-4 : 0x7.205196e3a378a1c3c00a2cd488b8p-4 : inexact-ok += exp2m1 towardzero binary128 0x8.80db492a60428p-4 : 0x7.205196e3a378a1c3c00a2cd488b4p-4 : inexact-ok += exp2m1 upward binary128 0x8.80db492a60428p-4 : 0x7.205196e3a378a1c3c00a2cd488b8p-4 : inexact-ok += exp2m1 downward ibm128 0x8.80db492a60428p-4 : 0x7.205196e3a378a1c3c00a2cd488p-4 : inexact-ok += exp2m1 tonearest ibm128 0x8.80db492a60428p-4 : 0x7.205196e3a378a1c3c00a2cd488p-4 : inexact-ok += exp2m1 towardzero ibm128 0x8.80db492a60428p-4 : 0x7.205196e3a378a1c3c00a2cd488p-4 : inexact-ok += exp2m1 upward ibm128 0x8.80db492a60428p-4 : 0x7.205196e3a378a1c3c00a2cd48ap-4 : inexact-ok += exp2m1 downward intel96 0x8.80db492a604297fp-4 : 0x7.205196e3a378b9b8p-4 : inexact-ok += exp2m1 tonearest intel96 0x8.80db492a604297fp-4 : 0x7.205196e3a378b9cp-4 : inexact-ok += exp2m1 towardzero intel96 0x8.80db492a604297fp-4 : 0x7.205196e3a378b9b8p-4 : inexact-ok += exp2m1 upward intel96 0x8.80db492a604297fp-4 : 0x7.205196e3a378b9cp-4 : inexact-ok += exp2m1 downward m68k96 0x8.80db492a604297fp-4 : 0x7.205196e3a378b9b8p-4 : inexact-ok += exp2m1 tonearest m68k96 0x8.80db492a604297fp-4 : 0x7.205196e3a378b9cp-4 : inexact-ok += exp2m1 towardzero m68k96 0x8.80db492a604297fp-4 : 0x7.205196e3a378b9b8p-4 : inexact-ok += exp2m1 upward m68k96 0x8.80db492a604297fp-4 : 0x7.205196e3a378b9cp-4 : inexact-ok += exp2m1 downward binary128 0x8.80db492a604297fp-4 : 0x7.205196e3a378b9bf32d72174af6cp-4 : inexact-ok += exp2m1 tonearest binary128 0x8.80db492a604297fp-4 : 0x7.205196e3a378b9bf32d72174af6cp-4 : inexact-ok += exp2m1 towardzero binary128 0x8.80db492a604297fp-4 : 0x7.205196e3a378b9bf32d72174af6cp-4 : inexact-ok += exp2m1 upward binary128 0x8.80db492a604297fp-4 : 0x7.205196e3a378b9bf32d72174af7p-4 : inexact-ok += exp2m1 downward ibm128 0x8.80db492a604297fp-4 : 0x7.205196e3a378b9bf32d72174aep-4 : inexact-ok += exp2m1 tonearest ibm128 0x8.80db492a604297fp-4 : 0x7.205196e3a378b9bf32d72174bp-4 : inexact-ok += exp2m1 towardzero ibm128 0x8.80db492a604297fp-4 : 0x7.205196e3a378b9bf32d72174aep-4 : inexact-ok += exp2m1 upward ibm128 0x8.80db492a604297fp-4 : 0x7.205196e3a378b9bf32d72174bp-4 : inexact-ok += exp2m1 downward intel96 0x8.80db492a604297ep-4 : 0x7.205196e3a378b9a8p-4 : inexact-ok += exp2m1 tonearest intel96 0x8.80db492a604297ep-4 : 0x7.205196e3a378b9bp-4 : inexact-ok += exp2m1 towardzero intel96 0x8.80db492a604297ep-4 : 0x7.205196e3a378b9a8p-4 : inexact-ok += exp2m1 upward intel96 0x8.80db492a604297ep-4 : 0x7.205196e3a378b9bp-4 : inexact-ok += exp2m1 downward m68k96 0x8.80db492a604297ep-4 : 0x7.205196e3a378b9a8p-4 : inexact-ok += exp2m1 tonearest m68k96 0x8.80db492a604297ep-4 : 0x7.205196e3a378b9bp-4 : inexact-ok += exp2m1 towardzero m68k96 0x8.80db492a604297ep-4 : 0x7.205196e3a378b9a8p-4 : inexact-ok += exp2m1 upward m68k96 0x8.80db492a604297ep-4 : 0x7.205196e3a378b9bp-4 : inexact-ok += exp2m1 downward binary128 0x8.80db492a604297ep-4 : 0x7.205196e3a378b9af2b302981a29cp-4 : inexact-ok += exp2m1 tonearest binary128 0x8.80db492a604297ep-4 : 0x7.205196e3a378b9af2b302981a2ap-4 : inexact-ok += exp2m1 towardzero binary128 0x8.80db492a604297ep-4 : 0x7.205196e3a378b9af2b302981a29cp-4 : inexact-ok += exp2m1 upward binary128 0x8.80db492a604297ep-4 : 0x7.205196e3a378b9af2b302981a2ap-4 : inexact-ok += exp2m1 downward ibm128 0x8.80db492a604297ep-4 : 0x7.205196e3a378b9af2b302981a2p-4 : inexact-ok += exp2m1 tonearest ibm128 0x8.80db492a604297ep-4 : 0x7.205196e3a378b9af2b302981a2p-4 : inexact-ok += exp2m1 towardzero ibm128 0x8.80db492a604297ep-4 : 0x7.205196e3a378b9af2b302981a2p-4 : inexact-ok += exp2m1 upward ibm128 0x8.80db492a604297ep-4 : 0x7.205196e3a378b9af2b302981a4p-4 : inexact-ok += exp2m1 downward binary128 0x8.80db492a604297e1a3816aeec568p-4 : 0x7.205196e3a378b9b0cf7a36d2e858p-4 : inexact-ok += exp2m1 tonearest binary128 0x8.80db492a604297e1a3816aeec568p-4 : 0x7.205196e3a378b9b0cf7a36d2e85cp-4 : inexact-ok += exp2m1 towardzero binary128 0x8.80db492a604297e1a3816aeec568p-4 : 0x7.205196e3a378b9b0cf7a36d2e858p-4 : inexact-ok += exp2m1 upward binary128 0x8.80db492a604297e1a3816aeec568p-4 : 0x7.205196e3a378b9b0cf7a36d2e85cp-4 : inexact-ok += exp2m1 downward binary128 0x8.80db492a604297e1a3816aeec8p-4 : 0x7.205196e3a378b9b0cf7a36d2eaf4p-4 : inexact-ok += exp2m1 tonearest binary128 0x8.80db492a604297e1a3816aeec8p-4 : 0x7.205196e3a378b9b0cf7a36d2eaf4p-4 : inexact-ok += exp2m1 towardzero binary128 0x8.80db492a604297e1a3816aeec8p-4 : 0x7.205196e3a378b9b0cf7a36d2eaf4p-4 : inexact-ok += exp2m1 upward binary128 0x8.80db492a604297e1a3816aeec8p-4 : 0x7.205196e3a378b9b0cf7a36d2eaf8p-4 : inexact-ok += exp2m1 downward ibm128 0x8.80db492a604297e1a3816aeec8p-4 : 0x7.205196e3a378b9b0cf7a36d2eap-4 : inexact-ok += exp2m1 tonearest ibm128 0x8.80db492a604297e1a3816aeec8p-4 : 0x7.205196e3a378b9b0cf7a36d2eap-4 : inexact-ok += exp2m1 towardzero ibm128 0x8.80db492a604297e1a3816aeec8p-4 : 0x7.205196e3a378b9b0cf7a36d2eap-4 : inexact-ok += exp2m1 upward ibm128 0x8.80db492a604297e1a3816aeec8p-4 : 0x7.205196e3a378b9b0cf7a36d2ecp-4 : inexact-ok += exp2m1 downward binary128 0x8.80db492a604297e1a3816aeec4p-4 : 0x7.205196e3a378b9b0cf7a36d2e6fp-4 : inexact-ok += exp2m1 tonearest binary128 0x8.80db492a604297e1a3816aeec4p-4 : 0x7.205196e3a378b9b0cf7a36d2e6f4p-4 : inexact-ok += exp2m1 towardzero binary128 0x8.80db492a604297e1a3816aeec4p-4 : 0x7.205196e3a378b9b0cf7a36d2e6fp-4 : inexact-ok += exp2m1 upward binary128 0x8.80db492a604297e1a3816aeec4p-4 : 0x7.205196e3a378b9b0cf7a36d2e6f4p-4 : inexact-ok += exp2m1 downward ibm128 0x8.80db492a604297e1a3816aeec4p-4 : 0x7.205196e3a378b9b0cf7a36d2e6p-4 : inexact-ok += exp2m1 tonearest ibm128 0x8.80db492a604297e1a3816aeec4p-4 : 0x7.205196e3a378b9b0cf7a36d2e6p-4 : inexact-ok += exp2m1 towardzero ibm128 0x8.80db492a604297e1a3816aeec4p-4 : 0x7.205196e3a378b9b0cf7a36d2e6p-4 : inexact-ok += exp2m1 upward ibm128 0x8.80db492a604297e1a3816aeec4p-4 : 0x7.205196e3a378b9b0cf7a36d2e8p-4 : inexact-ok +exp2m1 0x8.872e307510a80e501665a37c218p-4 += exp2m1 downward binary32 0x8.872e4p-4 : 0x7.26a87p-4 : inexact-ok += exp2m1 tonearest binary32 0x8.872e4p-4 : 0x7.26a87p-4 : inexact-ok += exp2m1 towardzero binary32 0x8.872e4p-4 : 0x7.26a87p-4 : inexact-ok += exp2m1 upward binary32 0x8.872e4p-4 : 0x7.26a878p-4 : inexact-ok += exp2m1 downward binary64 0x8.872e4p-4 : 0x7.26a872486f444p-4 : inexact-ok += exp2m1 tonearest binary64 0x8.872e4p-4 : 0x7.26a872486f448p-4 : inexact-ok += exp2m1 towardzero binary64 0x8.872e4p-4 : 0x7.26a872486f444p-4 : inexact-ok += exp2m1 upward binary64 0x8.872e4p-4 : 0x7.26a872486f448p-4 : inexact-ok += exp2m1 downward intel96 0x8.872e4p-4 : 0x7.26a872486f447ep-4 : inexact-ok += exp2m1 tonearest intel96 0x8.872e4p-4 : 0x7.26a872486f447e08p-4 : inexact-ok += exp2m1 towardzero intel96 0x8.872e4p-4 : 0x7.26a872486f447ep-4 : inexact-ok += exp2m1 upward intel96 0x8.872e4p-4 : 0x7.26a872486f447e08p-4 : inexact-ok += exp2m1 downward m68k96 0x8.872e4p-4 : 0x7.26a872486f447ep-4 : inexact-ok += exp2m1 tonearest m68k96 0x8.872e4p-4 : 0x7.26a872486f447e08p-4 : inexact-ok += exp2m1 towardzero m68k96 0x8.872e4p-4 : 0x7.26a872486f447ep-4 : inexact-ok += exp2m1 upward m68k96 0x8.872e4p-4 : 0x7.26a872486f447e08p-4 : inexact-ok += exp2m1 downward binary128 0x8.872e4p-4 : 0x7.26a872486f447e078a3ee325eaecp-4 : inexact-ok += exp2m1 tonearest binary128 0x8.872e4p-4 : 0x7.26a872486f447e078a3ee325eafp-4 : inexact-ok += exp2m1 towardzero binary128 0x8.872e4p-4 : 0x7.26a872486f447e078a3ee325eaecp-4 : inexact-ok += exp2m1 upward binary128 0x8.872e4p-4 : 0x7.26a872486f447e078a3ee325eafp-4 : inexact-ok += exp2m1 downward ibm128 0x8.872e4p-4 : 0x7.26a872486f447e078a3ee325eap-4 : inexact-ok += exp2m1 tonearest ibm128 0x8.872e4p-4 : 0x7.26a872486f447e078a3ee325eap-4 : inexact-ok += exp2m1 towardzero ibm128 0x8.872e4p-4 : 0x7.26a872486f447e078a3ee325eap-4 : inexact-ok += exp2m1 upward ibm128 0x8.872e4p-4 : 0x7.26a872486f447e078a3ee325ecp-4 : inexact-ok += exp2m1 downward binary32 0x8.872e3p-4 : 0x7.26a86p-4 : inexact-ok += exp2m1 tonearest binary32 0x8.872e3p-4 : 0x7.26a86p-4 : inexact-ok += exp2m1 towardzero binary32 0x8.872e3p-4 : 0x7.26a86p-4 : inexact-ok += exp2m1 upward binary32 0x8.872e3p-4 : 0x7.26a868p-4 : inexact-ok += exp2m1 downward binary64 0x8.872e3p-4 : 0x7.26a8623c6371p-4 : inexact-ok += exp2m1 tonearest binary64 0x8.872e3p-4 : 0x7.26a8623c63714p-4 : inexact-ok += exp2m1 towardzero binary64 0x8.872e3p-4 : 0x7.26a8623c6371p-4 : inexact-ok += exp2m1 upward binary64 0x8.872e3p-4 : 0x7.26a8623c63714p-4 : inexact-ok += exp2m1 downward intel96 0x8.872e3p-4 : 0x7.26a8623c6371246p-4 : inexact-ok += exp2m1 tonearest intel96 0x8.872e3p-4 : 0x7.26a8623c6371246p-4 : inexact-ok += exp2m1 towardzero intel96 0x8.872e3p-4 : 0x7.26a8623c6371246p-4 : inexact-ok += exp2m1 upward intel96 0x8.872e3p-4 : 0x7.26a8623c63712468p-4 : inexact-ok += exp2m1 downward m68k96 0x8.872e3p-4 : 0x7.26a8623c6371246p-4 : inexact-ok += exp2m1 tonearest m68k96 0x8.872e3p-4 : 0x7.26a8623c6371246p-4 : inexact-ok += exp2m1 towardzero m68k96 0x8.872e3p-4 : 0x7.26a8623c6371246p-4 : inexact-ok += exp2m1 upward m68k96 0x8.872e3p-4 : 0x7.26a8623c63712468p-4 : inexact-ok += exp2m1 downward binary128 0x8.872e3p-4 : 0x7.26a8623c63712463c2eefe5a36f4p-4 : inexact-ok += exp2m1 tonearest binary128 0x8.872e3p-4 : 0x7.26a8623c63712463c2eefe5a36f8p-4 : inexact-ok += exp2m1 towardzero binary128 0x8.872e3p-4 : 0x7.26a8623c63712463c2eefe5a36f4p-4 : inexact-ok += exp2m1 upward binary128 0x8.872e3p-4 : 0x7.26a8623c63712463c2eefe5a36f8p-4 : inexact-ok += exp2m1 downward ibm128 0x8.872e3p-4 : 0x7.26a8623c63712463c2eefe5a36p-4 : inexact-ok += exp2m1 tonearest ibm128 0x8.872e3p-4 : 0x7.26a8623c63712463c2eefe5a36p-4 : inexact-ok += exp2m1 towardzero ibm128 0x8.872e3p-4 : 0x7.26a8623c63712463c2eefe5a36p-4 : inexact-ok += exp2m1 upward ibm128 0x8.872e3p-4 : 0x7.26a8623c63712463c2eefe5a38p-4 : inexact-ok += exp2m1 downward binary64 0x8.872e307510a88p-4 : 0x7.26a862b1cc3c8p-4 : inexact-ok += exp2m1 tonearest binary64 0x8.872e307510a88p-4 : 0x7.26a862b1cc3c8p-4 : inexact-ok += exp2m1 towardzero binary64 0x8.872e307510a88p-4 : 0x7.26a862b1cc3c8p-4 : inexact-ok += exp2m1 upward binary64 0x8.872e307510a88p-4 : 0x7.26a862b1cc3ccp-4 : inexact-ok += exp2m1 downward intel96 0x8.872e307510a88p-4 : 0x7.26a862b1cc3c8108p-4 : inexact-ok += exp2m1 tonearest intel96 0x8.872e307510a88p-4 : 0x7.26a862b1cc3c8108p-4 : inexact-ok += exp2m1 towardzero intel96 0x8.872e307510a88p-4 : 0x7.26a862b1cc3c8108p-4 : inexact-ok += exp2m1 upward intel96 0x8.872e307510a88p-4 : 0x7.26a862b1cc3c811p-4 : inexact-ok += exp2m1 downward m68k96 0x8.872e307510a88p-4 : 0x7.26a862b1cc3c8108p-4 : inexact-ok += exp2m1 tonearest m68k96 0x8.872e307510a88p-4 : 0x7.26a862b1cc3c8108p-4 : inexact-ok += exp2m1 towardzero m68k96 0x8.872e307510a88p-4 : 0x7.26a862b1cc3c8108p-4 : inexact-ok += exp2m1 upward m68k96 0x8.872e307510a88p-4 : 0x7.26a862b1cc3c811p-4 : inexact-ok += exp2m1 downward binary128 0x8.872e307510a88p-4 : 0x7.26a862b1cc3c810bf7b30b834f38p-4 : inexact-ok += exp2m1 tonearest binary128 0x8.872e307510a88p-4 : 0x7.26a862b1cc3c810bf7b30b834f3cp-4 : inexact-ok += exp2m1 towardzero binary128 0x8.872e307510a88p-4 : 0x7.26a862b1cc3c810bf7b30b834f38p-4 : inexact-ok += exp2m1 upward binary128 0x8.872e307510a88p-4 : 0x7.26a862b1cc3c810bf7b30b834f3cp-4 : inexact-ok += exp2m1 downward ibm128 0x8.872e307510a88p-4 : 0x7.26a862b1cc3c810bf7b30b834ep-4 : inexact-ok += exp2m1 tonearest ibm128 0x8.872e307510a88p-4 : 0x7.26a862b1cc3c810bf7b30b835p-4 : inexact-ok += exp2m1 towardzero ibm128 0x8.872e307510a88p-4 : 0x7.26a862b1cc3c810bf7b30b834ep-4 : inexact-ok += exp2m1 upward ibm128 0x8.872e307510a88p-4 : 0x7.26a862b1cc3c810bf7b30b835p-4 : inexact-ok += exp2m1 downward binary64 0x8.872e307510a8p-4 : 0x7.26a862b1cc3cp-4 : inexact-ok += exp2m1 tonearest binary64 0x8.872e307510a8p-4 : 0x7.26a862b1cc3cp-4 : inexact-ok += exp2m1 towardzero binary64 0x8.872e307510a8p-4 : 0x7.26a862b1cc3cp-4 : inexact-ok += exp2m1 upward binary64 0x8.872e307510a8p-4 : 0x7.26a862b1cc3c4p-4 : inexact-ok += exp2m1 downward intel96 0x8.872e307510a8p-4 : 0x7.26a862b1cc3c00a8p-4 : inexact-ok += exp2m1 tonearest intel96 0x8.872e307510a8p-4 : 0x7.26a862b1cc3c00a8p-4 : inexact-ok += exp2m1 towardzero intel96 0x8.872e307510a8p-4 : 0x7.26a862b1cc3c00a8p-4 : inexact-ok += exp2m1 upward intel96 0x8.872e307510a8p-4 : 0x7.26a862b1cc3c00bp-4 : inexact-ok += exp2m1 downward m68k96 0x8.872e307510a8p-4 : 0x7.26a862b1cc3c00a8p-4 : inexact-ok += exp2m1 tonearest m68k96 0x8.872e307510a8p-4 : 0x7.26a862b1cc3c00a8p-4 : inexact-ok += exp2m1 towardzero m68k96 0x8.872e307510a8p-4 : 0x7.26a862b1cc3c00a8p-4 : inexact-ok += exp2m1 upward m68k96 0x8.872e307510a8p-4 : 0x7.26a862b1cc3c00bp-4 : inexact-ok += exp2m1 downward binary128 0x8.872e307510a8p-4 : 0x7.26a862b1cc3c00ab99423142fae8p-4 : inexact-ok += exp2m1 tonearest binary128 0x8.872e307510a8p-4 : 0x7.26a862b1cc3c00ab99423142fae8p-4 : inexact-ok += exp2m1 towardzero binary128 0x8.872e307510a8p-4 : 0x7.26a862b1cc3c00ab99423142fae8p-4 : inexact-ok += exp2m1 upward binary128 0x8.872e307510a8p-4 : 0x7.26a862b1cc3c00ab99423142faecp-4 : inexact-ok += exp2m1 downward ibm128 0x8.872e307510a8p-4 : 0x7.26a862b1cc3c00ab99423142fap-4 : inexact-ok += exp2m1 tonearest ibm128 0x8.872e307510a8p-4 : 0x7.26a862b1cc3c00ab99423142fap-4 : inexact-ok += exp2m1 towardzero ibm128 0x8.872e307510a8p-4 : 0x7.26a862b1cc3c00ab99423142fap-4 : inexact-ok += exp2m1 upward ibm128 0x8.872e307510a8p-4 : 0x7.26a862b1cc3c00ab99423142fcp-4 : inexact-ok += exp2m1 downward intel96 0x8.872e307510a80e6p-4 : 0x7.26a862b1cc3c0f1p-4 : inexact-ok += exp2m1 tonearest intel96 0x8.872e307510a80e6p-4 : 0x7.26a862b1cc3c0f18p-4 : inexact-ok += exp2m1 towardzero intel96 0x8.872e307510a80e6p-4 : 0x7.26a862b1cc3c0f1p-4 : inexact-ok += exp2m1 upward intel96 0x8.872e307510a80e6p-4 : 0x7.26a862b1cc3c0f18p-4 : inexact-ok += exp2m1 downward m68k96 0x8.872e307510a80e6p-4 : 0x7.26a862b1cc3c0f1p-4 : inexact-ok += exp2m1 tonearest m68k96 0x8.872e307510a80e6p-4 : 0x7.26a862b1cc3c0f18p-4 : inexact-ok += exp2m1 towardzero m68k96 0x8.872e307510a80e6p-4 : 0x7.26a862b1cc3c0f1p-4 : inexact-ok += exp2m1 upward m68k96 0x8.872e307510a80e6p-4 : 0x7.26a862b1cc3c0f18p-4 : inexact-ok += exp2m1 downward binary128 0x8.872e307510a80e6p-4 : 0x7.26a862b1cc3c0f166bdd5dc5b43cp-4 : inexact-ok += exp2m1 tonearest binary128 0x8.872e307510a80e6p-4 : 0x7.26a862b1cc3c0f166bdd5dc5b44p-4 : inexact-ok += exp2m1 towardzero binary128 0x8.872e307510a80e6p-4 : 0x7.26a862b1cc3c0f166bdd5dc5b43cp-4 : inexact-ok += exp2m1 upward binary128 0x8.872e307510a80e6p-4 : 0x7.26a862b1cc3c0f166bdd5dc5b44p-4 : inexact-ok += exp2m1 downward ibm128 0x8.872e307510a80e6p-4 : 0x7.26a862b1cc3c0f166bdd5dc5b4p-4 : inexact-ok += exp2m1 tonearest ibm128 0x8.872e307510a80e6p-4 : 0x7.26a862b1cc3c0f166bdd5dc5b4p-4 : inexact-ok += exp2m1 towardzero ibm128 0x8.872e307510a80e6p-4 : 0x7.26a862b1cc3c0f166bdd5dc5b4p-4 : inexact-ok += exp2m1 upward ibm128 0x8.872e307510a80e6p-4 : 0x7.26a862b1cc3c0f166bdd5dc5b6p-4 : inexact-ok += exp2m1 downward intel96 0x8.872e307510a80e5p-4 : 0x7.26a862b1cc3c0fp-4 : inexact-ok += exp2m1 tonearest intel96 0x8.872e307510a80e5p-4 : 0x7.26a862b1cc3c0f08p-4 : inexact-ok += exp2m1 towardzero intel96 0x8.872e307510a80e5p-4 : 0x7.26a862b1cc3c0fp-4 : inexact-ok += exp2m1 upward intel96 0x8.872e307510a80e5p-4 : 0x7.26a862b1cc3c0f08p-4 : inexact-ok += exp2m1 downward m68k96 0x8.872e307510a80e5p-4 : 0x7.26a862b1cc3c0fp-4 : inexact-ok += exp2m1 tonearest m68k96 0x8.872e307510a80e5p-4 : 0x7.26a862b1cc3c0f08p-4 : inexact-ok += exp2m1 towardzero m68k96 0x8.872e307510a80e5p-4 : 0x7.26a862b1cc3c0fp-4 : inexact-ok += exp2m1 upward m68k96 0x8.872e307510a80e5p-4 : 0x7.26a862b1cc3c0f08p-4 : inexact-ok += exp2m1 downward binary128 0x8.872e307510a80e5p-4 : 0x7.26a862b1cc3c0f065fd18faa6c3p-4 : inexact-ok += exp2m1 tonearest binary128 0x8.872e307510a80e5p-4 : 0x7.26a862b1cc3c0f065fd18faa6c34p-4 : inexact-ok += exp2m1 towardzero binary128 0x8.872e307510a80e5p-4 : 0x7.26a862b1cc3c0f065fd18faa6c3p-4 : inexact-ok += exp2m1 upward binary128 0x8.872e307510a80e5p-4 : 0x7.26a862b1cc3c0f065fd18faa6c34p-4 : inexact-ok += exp2m1 downward ibm128 0x8.872e307510a80e5p-4 : 0x7.26a862b1cc3c0f065fd18faa6cp-4 : inexact-ok += exp2m1 tonearest ibm128 0x8.872e307510a80e5p-4 : 0x7.26a862b1cc3c0f065fd18faa6cp-4 : inexact-ok += exp2m1 towardzero ibm128 0x8.872e307510a80e5p-4 : 0x7.26a862b1cc3c0f065fd18faa6cp-4 : inexact-ok += exp2m1 upward ibm128 0x8.872e307510a80e5p-4 : 0x7.26a862b1cc3c0f065fd18faa6ep-4 : inexact-ok += exp2m1 downward binary128 0x8.872e307510a80e501665a37c218p-4 : 0x7.26a862b1cc3c0f0676480fe78df8p-4 : inexact-ok += exp2m1 tonearest binary128 0x8.872e307510a80e501665a37c218p-4 : 0x7.26a862b1cc3c0f0676480fe78dfcp-4 : inexact-ok += exp2m1 towardzero binary128 0x8.872e307510a80e501665a37c218p-4 : 0x7.26a862b1cc3c0f0676480fe78df8p-4 : inexact-ok += exp2m1 upward binary128 0x8.872e307510a80e501665a37c218p-4 : 0x7.26a862b1cc3c0f0676480fe78dfcp-4 : inexact-ok += exp2m1 downward binary128 0x8.872e307510a80e501665a37c24p-4 : 0x7.26a862b1cc3c0f0676480fe7907cp-4 : inexact-ok += exp2m1 tonearest binary128 0x8.872e307510a80e501665a37c24p-4 : 0x7.26a862b1cc3c0f0676480fe7907cp-4 : inexact-ok += exp2m1 towardzero binary128 0x8.872e307510a80e501665a37c24p-4 : 0x7.26a862b1cc3c0f0676480fe7907cp-4 : inexact-ok += exp2m1 upward binary128 0x8.872e307510a80e501665a37c24p-4 : 0x7.26a862b1cc3c0f0676480fe7908p-4 : inexact-ok += exp2m1 downward ibm128 0x8.872e307510a80e501665a37c24p-4 : 0x7.26a862b1cc3c0f0676480fe79p-4 : inexact-ok += exp2m1 tonearest ibm128 0x8.872e307510a80e501665a37c24p-4 : 0x7.26a862b1cc3c0f0676480fe79p-4 : inexact-ok += exp2m1 towardzero ibm128 0x8.872e307510a80e501665a37c24p-4 : 0x7.26a862b1cc3c0f0676480fe79p-4 : inexact-ok += exp2m1 upward ibm128 0x8.872e307510a80e501665a37c24p-4 : 0x7.26a862b1cc3c0f0676480fe792p-4 : inexact-ok += exp2m1 downward binary128 0x8.872e307510a80e501665a37c2p-4 : 0x7.26a862b1cc3c0f0676480fe78c78p-4 : inexact-ok += exp2m1 tonearest binary128 0x8.872e307510a80e501665a37c2p-4 : 0x7.26a862b1cc3c0f0676480fe78c7cp-4 : inexact-ok += exp2m1 towardzero binary128 0x8.872e307510a80e501665a37c2p-4 : 0x7.26a862b1cc3c0f0676480fe78c78p-4 : inexact-ok += exp2m1 upward binary128 0x8.872e307510a80e501665a37c2p-4 : 0x7.26a862b1cc3c0f0676480fe78c7cp-4 : inexact-ok += exp2m1 downward ibm128 0x8.872e307510a80e501665a37c2p-4 : 0x7.26a862b1cc3c0f0676480fe78cp-4 : inexact-ok += exp2m1 tonearest ibm128 0x8.872e307510a80e501665a37c2p-4 : 0x7.26a862b1cc3c0f0676480fe78cp-4 : inexact-ok += exp2m1 towardzero ibm128 0x8.872e307510a80e501665a37c2p-4 : 0x7.26a862b1cc3c0f0676480fe78cp-4 : inexact-ok += exp2m1 upward ibm128 0x8.872e307510a80e501665a37c2p-4 : 0x7.26a862b1cc3c0f0676480fe78ep-4 : inexact-ok +exp2m1 0x9.10b9251f0cc9bdc81d6ab13bb74p-4 += exp2m1 downward binary32 0x9.10b93p-4 : 0x7.b2392p-4 : inexact-ok += exp2m1 tonearest binary32 0x9.10b93p-4 : 0x7.b2392p-4 : inexact-ok += exp2m1 towardzero binary32 0x9.10b93p-4 : 0x7.b2392p-4 : inexact-ok += exp2m1 upward binary32 0x9.10b93p-4 : 0x7.b23928p-4 : inexact-ok += exp2m1 downward binary64 0x9.10b93p-4 : 0x7.b2392197a9c44p-4 : inexact-ok += exp2m1 tonearest binary64 0x9.10b93p-4 : 0x7.b2392197a9c48p-4 : inexact-ok += exp2m1 towardzero binary64 0x9.10b93p-4 : 0x7.b2392197a9c44p-4 : inexact-ok += exp2m1 upward binary64 0x9.10b93p-4 : 0x7.b2392197a9c48p-4 : inexact-ok += exp2m1 downward intel96 0x9.10b93p-4 : 0x7.b2392197a9c47dp-4 : inexact-ok += exp2m1 tonearest intel96 0x9.10b93p-4 : 0x7.b2392197a9c47dp-4 : inexact-ok += exp2m1 towardzero intel96 0x9.10b93p-4 : 0x7.b2392197a9c47dp-4 : inexact-ok += exp2m1 upward intel96 0x9.10b93p-4 : 0x7.b2392197a9c47d08p-4 : inexact-ok += exp2m1 downward m68k96 0x9.10b93p-4 : 0x7.b2392197a9c47dp-4 : inexact-ok += exp2m1 tonearest m68k96 0x9.10b93p-4 : 0x7.b2392197a9c47dp-4 : inexact-ok += exp2m1 towardzero m68k96 0x9.10b93p-4 : 0x7.b2392197a9c47dp-4 : inexact-ok += exp2m1 upward m68k96 0x9.10b93p-4 : 0x7.b2392197a9c47d08p-4 : inexact-ok += exp2m1 downward binary128 0x9.10b93p-4 : 0x7.b2392197a9c47d03c426172aa2dp-4 : inexact-ok += exp2m1 tonearest binary128 0x9.10b93p-4 : 0x7.b2392197a9c47d03c426172aa2dp-4 : inexact-ok += exp2m1 towardzero binary128 0x9.10b93p-4 : 0x7.b2392197a9c47d03c426172aa2dp-4 : inexact-ok += exp2m1 upward binary128 0x9.10b93p-4 : 0x7.b2392197a9c47d03c426172aa2d4p-4 : inexact-ok += exp2m1 downward ibm128 0x9.10b93p-4 : 0x7.b2392197a9c47d03c426172aa2p-4 : inexact-ok += exp2m1 tonearest ibm128 0x9.10b93p-4 : 0x7.b2392197a9c47d03c426172aa2p-4 : inexact-ok += exp2m1 towardzero ibm128 0x9.10b93p-4 : 0x7.b2392197a9c47d03c426172aa2p-4 : inexact-ok += exp2m1 upward ibm128 0x9.10b93p-4 : 0x7.b2392197a9c47d03c426172aa4p-4 : inexact-ok += exp2m1 downward binary32 0x9.10b92p-4 : 0x7.b2391p-4 : inexact-ok += exp2m1 tonearest binary32 0x9.10b92p-4 : 0x7.b2391p-4 : inexact-ok += exp2m1 towardzero binary32 0x9.10b92p-4 : 0x7.b2391p-4 : inexact-ok += exp2m1 upward binary32 0x9.10b92p-4 : 0x7.b23918p-4 : inexact-ok += exp2m1 downward binary64 0x9.10b92p-4 : 0x7.b239112ae0b48p-4 : inexact-ok += exp2m1 tonearest binary64 0x9.10b92p-4 : 0x7.b239112ae0b48p-4 : inexact-ok += exp2m1 towardzero binary64 0x9.10b92p-4 : 0x7.b239112ae0b48p-4 : inexact-ok += exp2m1 upward binary64 0x9.10b92p-4 : 0x7.b239112ae0b4cp-4 : inexact-ok += exp2m1 downward intel96 0x9.10b92p-4 : 0x7.b239112ae0b48ffp-4 : inexact-ok += exp2m1 tonearest intel96 0x9.10b92p-4 : 0x7.b239112ae0b48ffp-4 : inexact-ok += exp2m1 towardzero intel96 0x9.10b92p-4 : 0x7.b239112ae0b48ffp-4 : inexact-ok += exp2m1 upward intel96 0x9.10b92p-4 : 0x7.b239112ae0b48ff8p-4 : inexact-ok += exp2m1 downward m68k96 0x9.10b92p-4 : 0x7.b239112ae0b48ffp-4 : inexact-ok += exp2m1 tonearest m68k96 0x9.10b92p-4 : 0x7.b239112ae0b48ffp-4 : inexact-ok += exp2m1 towardzero m68k96 0x9.10b92p-4 : 0x7.b239112ae0b48ffp-4 : inexact-ok += exp2m1 upward m68k96 0x9.10b92p-4 : 0x7.b239112ae0b48ff8p-4 : inexact-ok += exp2m1 downward binary128 0x9.10b92p-4 : 0x7.b239112ae0b48ff380e96789ee3p-4 : inexact-ok += exp2m1 tonearest binary128 0x9.10b92p-4 : 0x7.b239112ae0b48ff380e96789ee3p-4 : inexact-ok += exp2m1 towardzero binary128 0x9.10b92p-4 : 0x7.b239112ae0b48ff380e96789ee3p-4 : inexact-ok += exp2m1 upward binary128 0x9.10b92p-4 : 0x7.b239112ae0b48ff380e96789ee34p-4 : inexact-ok += exp2m1 downward ibm128 0x9.10b92p-4 : 0x7.b239112ae0b48ff380e96789eep-4 : inexact-ok += exp2m1 tonearest ibm128 0x9.10b92p-4 : 0x7.b239112ae0b48ff380e96789eep-4 : inexact-ok += exp2m1 towardzero ibm128 0x9.10b92p-4 : 0x7.b239112ae0b48ff380e96789eep-4 : inexact-ok += exp2m1 upward ibm128 0x9.10b92p-4 : 0x7.b239112ae0b48ff380e96789fp-4 : inexact-ok += exp2m1 downward binary64 0x9.10b9251f0ccap-4 : 0x7.b239166cbf6ecp-4 : inexact-ok += exp2m1 tonearest binary64 0x9.10b9251f0ccap-4 : 0x7.b239166cbf6ecp-4 : inexact-ok += exp2m1 towardzero binary64 0x9.10b9251f0ccap-4 : 0x7.b239166cbf6ecp-4 : inexact-ok += exp2m1 upward binary64 0x9.10b9251f0ccap-4 : 0x7.b239166cbf6fp-4 : inexact-ok += exp2m1 downward intel96 0x9.10b9251f0ccap-4 : 0x7.b239166cbf6ecffp-4 : inexact-ok += exp2m1 tonearest intel96 0x9.10b9251f0ccap-4 : 0x7.b239166cbf6ecff8p-4 : inexact-ok += exp2m1 towardzero intel96 0x9.10b9251f0ccap-4 : 0x7.b239166cbf6ecffp-4 : inexact-ok += exp2m1 upward intel96 0x9.10b9251f0ccap-4 : 0x7.b239166cbf6ecff8p-4 : inexact-ok += exp2m1 downward m68k96 0x9.10b9251f0ccap-4 : 0x7.b239166cbf6ecffp-4 : inexact-ok += exp2m1 tonearest m68k96 0x9.10b9251f0ccap-4 : 0x7.b239166cbf6ecff8p-4 : inexact-ok += exp2m1 towardzero m68k96 0x9.10b9251f0ccap-4 : 0x7.b239166cbf6ecffp-4 : inexact-ok += exp2m1 upward m68k96 0x9.10b9251f0ccap-4 : 0x7.b239166cbf6ecff8p-4 : inexact-ok += exp2m1 downward binary128 0x9.10b9251f0ccap-4 : 0x7.b239166cbf6ecff5787297250098p-4 : inexact-ok += exp2m1 tonearest binary128 0x9.10b9251f0ccap-4 : 0x7.b239166cbf6ecff5787297250098p-4 : inexact-ok += exp2m1 towardzero binary128 0x9.10b9251f0ccap-4 : 0x7.b239166cbf6ecff5787297250098p-4 : inexact-ok += exp2m1 upward binary128 0x9.10b9251f0ccap-4 : 0x7.b239166cbf6ecff578729725009cp-4 : inexact-ok += exp2m1 downward ibm128 0x9.10b9251f0ccap-4 : 0x7.b239166cbf6ecff578729725p-4 : inexact-ok += exp2m1 tonearest ibm128 0x9.10b9251f0ccap-4 : 0x7.b239166cbf6ecff578729725p-4 : inexact-ok += exp2m1 towardzero ibm128 0x9.10b9251f0ccap-4 : 0x7.b239166cbf6ecff578729725p-4 : inexact-ok += exp2m1 upward ibm128 0x9.10b9251f0ccap-4 : 0x7.b239166cbf6ecff57872972502p-4 : inexact-ok += exp2m1 downward binary64 0x9.10b9251f0cc98p-4 : 0x7.b239166cbf6e4p-4 : inexact-ok += exp2m1 tonearest binary64 0x9.10b9251f0cc98p-4 : 0x7.b239166cbf6e4p-4 : inexact-ok += exp2m1 towardzero binary64 0x9.10b9251f0cc98p-4 : 0x7.b239166cbf6e4p-4 : inexact-ok += exp2m1 upward binary64 0x9.10b9251f0cc98p-4 : 0x7.b239166cbf6e8p-4 : inexact-ok += exp2m1 downward intel96 0x9.10b9251f0cc98p-4 : 0x7.b239166cbf6e4c88p-4 : inexact-ok += exp2m1 tonearest intel96 0x9.10b9251f0cc98p-4 : 0x7.b239166cbf6e4c9p-4 : inexact-ok += exp2m1 towardzero intel96 0x9.10b9251f0cc98p-4 : 0x7.b239166cbf6e4c88p-4 : inexact-ok += exp2m1 upward intel96 0x9.10b9251f0cc98p-4 : 0x7.b239166cbf6e4c9p-4 : inexact-ok += exp2m1 downward m68k96 0x9.10b9251f0cc98p-4 : 0x7.b239166cbf6e4c88p-4 : inexact-ok += exp2m1 tonearest m68k96 0x9.10b9251f0cc98p-4 : 0x7.b239166cbf6e4c9p-4 : inexact-ok += exp2m1 towardzero m68k96 0x9.10b9251f0cc98p-4 : 0x7.b239166cbf6e4c88p-4 : inexact-ok += exp2m1 upward m68k96 0x9.10b9251f0cc98p-4 : 0x7.b239166cbf6e4c9p-4 : inexact-ok += exp2m1 downward binary128 0x9.10b9251f0cc98p-4 : 0x7.b239166cbf6e4c8f300391b05004p-4 : inexact-ok += exp2m1 tonearest binary128 0x9.10b9251f0cc98p-4 : 0x7.b239166cbf6e4c8f300391b05008p-4 : inexact-ok += exp2m1 towardzero binary128 0x9.10b9251f0cc98p-4 : 0x7.b239166cbf6e4c8f300391b05004p-4 : inexact-ok += exp2m1 upward binary128 0x9.10b9251f0cc98p-4 : 0x7.b239166cbf6e4c8f300391b05008p-4 : inexact-ok += exp2m1 downward ibm128 0x9.10b9251f0cc98p-4 : 0x7.b239166cbf6e4c8f300391b05p-4 : inexact-ok += exp2m1 tonearest ibm128 0x9.10b9251f0cc98p-4 : 0x7.b239166cbf6e4c8f300391b05p-4 : inexact-ok += exp2m1 towardzero ibm128 0x9.10b9251f0cc98p-4 : 0x7.b239166cbf6e4c8f300391b05p-4 : inexact-ok += exp2m1 upward ibm128 0x9.10b9251f0cc98p-4 : 0x7.b239166cbf6e4c8f300391b052p-4 : inexact-ok += exp2m1 downward intel96 0x9.10b9251f0cc9bddp-4 : 0x7.b239166cbf6e8cp-4 : inexact-ok += exp2m1 tonearest intel96 0x9.10b9251f0cc9bddp-4 : 0x7.b239166cbf6e8cp-4 : inexact-ok += exp2m1 towardzero intel96 0x9.10b9251f0cc9bddp-4 : 0x7.b239166cbf6e8cp-4 : inexact-ok += exp2m1 upward intel96 0x9.10b9251f0cc9bddp-4 : 0x7.b239166cbf6e8c08p-4 : inexact-ok += exp2m1 downward m68k96 0x9.10b9251f0cc9bddp-4 : 0x7.b239166cbf6e8cp-4 : inexact-ok += exp2m1 tonearest m68k96 0x9.10b9251f0cc9bddp-4 : 0x7.b239166cbf6e8cp-4 : inexact-ok += exp2m1 towardzero m68k96 0x9.10b9251f0cc9bddp-4 : 0x7.b239166cbf6e8cp-4 : inexact-ok += exp2m1 upward m68k96 0x9.10b9251f0cc9bddp-4 : 0x7.b239166cbf6e8c08p-4 : inexact-ok += exp2m1 downward binary128 0x9.10b9251f0cc9bddp-4 : 0x7.b239166cbf6e8c0374be2eb2c97p-4 : inexact-ok += exp2m1 tonearest binary128 0x9.10b9251f0cc9bddp-4 : 0x7.b239166cbf6e8c0374be2eb2c97p-4 : inexact-ok += exp2m1 towardzero binary128 0x9.10b9251f0cc9bddp-4 : 0x7.b239166cbf6e8c0374be2eb2c97p-4 : inexact-ok += exp2m1 upward binary128 0x9.10b9251f0cc9bddp-4 : 0x7.b239166cbf6e8c0374be2eb2c974p-4 : inexact-ok += exp2m1 downward ibm128 0x9.10b9251f0cc9bddp-4 : 0x7.b239166cbf6e8c0374be2eb2c8p-4 : inexact-ok += exp2m1 tonearest ibm128 0x9.10b9251f0cc9bddp-4 : 0x7.b239166cbf6e8c0374be2eb2cap-4 : inexact-ok += exp2m1 towardzero ibm128 0x9.10b9251f0cc9bddp-4 : 0x7.b239166cbf6e8c0374be2eb2c8p-4 : inexact-ok += exp2m1 upward ibm128 0x9.10b9251f0cc9bddp-4 : 0x7.b239166cbf6e8c0374be2eb2cap-4 : inexact-ok += exp2m1 downward intel96 0x9.10b9251f0cc9bdcp-4 : 0x7.b239166cbf6e8bfp-4 : inexact-ok += exp2m1 tonearest intel96 0x9.10b9251f0cc9bdcp-4 : 0x7.b239166cbf6e8bfp-4 : inexact-ok += exp2m1 towardzero intel96 0x9.10b9251f0cc9bdcp-4 : 0x7.b239166cbf6e8bfp-4 : inexact-ok += exp2m1 upward intel96 0x9.10b9251f0cc9bdcp-4 : 0x7.b239166cbf6e8bf8p-4 : inexact-ok += exp2m1 downward m68k96 0x9.10b9251f0cc9bdcp-4 : 0x7.b239166cbf6e8bfp-4 : inexact-ok += exp2m1 tonearest m68k96 0x9.10b9251f0cc9bdcp-4 : 0x7.b239166cbf6e8bfp-4 : inexact-ok += exp2m1 towardzero m68k96 0x9.10b9251f0cc9bdcp-4 : 0x7.b239166cbf6e8bfp-4 : inexact-ok += exp2m1 upward m68k96 0x9.10b9251f0cc9bdcp-4 : 0x7.b239166cbf6e8bf8p-4 : inexact-ok += exp2m1 downward binary128 0x9.10b9251f0cc9bdcp-4 : 0x7.b239166cbf6e8bf307f520d21ad8p-4 : inexact-ok += exp2m1 tonearest binary128 0x9.10b9251f0cc9bdcp-4 : 0x7.b239166cbf6e8bf307f520d21adcp-4 : inexact-ok += exp2m1 towardzero binary128 0x9.10b9251f0cc9bdcp-4 : 0x7.b239166cbf6e8bf307f520d21ad8p-4 : inexact-ok += exp2m1 upward binary128 0x9.10b9251f0cc9bdcp-4 : 0x7.b239166cbf6e8bf307f520d21adcp-4 : inexact-ok += exp2m1 downward ibm128 0x9.10b9251f0cc9bdcp-4 : 0x7.b239166cbf6e8bf307f520d21ap-4 : inexact-ok += exp2m1 tonearest ibm128 0x9.10b9251f0cc9bdcp-4 : 0x7.b239166cbf6e8bf307f520d21ap-4 : inexact-ok += exp2m1 towardzero ibm128 0x9.10b9251f0cc9bdcp-4 : 0x7.b239166cbf6e8bf307f520d21ap-4 : inexact-ok += exp2m1 upward ibm128 0x9.10b9251f0cc9bdcp-4 : 0x7.b239166cbf6e8bf307f520d21cp-4 : inexact-ok += exp2m1 downward binary128 0x9.10b9251f0cc9bdc81d6ab13bb74p-4 : 0x7.b239166cbf6e8bfb5c8c5ad052bcp-4 : inexact-ok += exp2m1 tonearest binary128 0x9.10b9251f0cc9bdc81d6ab13bb74p-4 : 0x7.b239166cbf6e8bfb5c8c5ad052cp-4 : inexact-ok += exp2m1 towardzero binary128 0x9.10b9251f0cc9bdc81d6ab13bb74p-4 : 0x7.b239166cbf6e8bfb5c8c5ad052bcp-4 : inexact-ok += exp2m1 upward binary128 0x9.10b9251f0cc9bdc81d6ab13bb74p-4 : 0x7.b239166cbf6e8bfb5c8c5ad052cp-4 : inexact-ok += exp2m1 downward binary128 0x9.10b9251f0cc9bdc81d6ab13bb8p-4 : 0x7.b239166cbf6e8bfb5c8c5ad05384p-4 : inexact-ok += exp2m1 tonearest binary128 0x9.10b9251f0cc9bdc81d6ab13bb8p-4 : 0x7.b239166cbf6e8bfb5c8c5ad05384p-4 : inexact-ok += exp2m1 towardzero binary128 0x9.10b9251f0cc9bdc81d6ab13bb8p-4 : 0x7.b239166cbf6e8bfb5c8c5ad05384p-4 : inexact-ok += exp2m1 upward binary128 0x9.10b9251f0cc9bdc81d6ab13bb8p-4 : 0x7.b239166cbf6e8bfb5c8c5ad05388p-4 : inexact-ok += exp2m1 downward ibm128 0x9.10b9251f0cc9bdc81d6ab13bb8p-4 : 0x7.b239166cbf6e8bfb5c8c5ad052p-4 : inexact-ok += exp2m1 tonearest ibm128 0x9.10b9251f0cc9bdc81d6ab13bb8p-4 : 0x7.b239166cbf6e8bfb5c8c5ad054p-4 : inexact-ok += exp2m1 towardzero ibm128 0x9.10b9251f0cc9bdc81d6ab13bb8p-4 : 0x7.b239166cbf6e8bfb5c8c5ad052p-4 : inexact-ok += exp2m1 upward ibm128 0x9.10b9251f0cc9bdc81d6ab13bb8p-4 : 0x7.b239166cbf6e8bfb5c8c5ad054p-4 : inexact-ok += exp2m1 downward binary128 0x9.10b9251f0cc9bdc81d6ab13bb4p-4 : 0x7.b239166cbf6e8bfb5c8c5ad04f68p-4 : inexact-ok += exp2m1 tonearest binary128 0x9.10b9251f0cc9bdc81d6ab13bb4p-4 : 0x7.b239166cbf6e8bfb5c8c5ad04f68p-4 : inexact-ok += exp2m1 towardzero binary128 0x9.10b9251f0cc9bdc81d6ab13bb4p-4 : 0x7.b239166cbf6e8bfb5c8c5ad04f68p-4 : inexact-ok += exp2m1 upward binary128 0x9.10b9251f0cc9bdc81d6ab13bb4p-4 : 0x7.b239166cbf6e8bfb5c8c5ad04f6cp-4 : inexact-ok += exp2m1 downward ibm128 0x9.10b9251f0cc9bdc81d6ab13bb4p-4 : 0x7.b239166cbf6e8bfb5c8c5ad04ep-4 : inexact-ok += exp2m1 tonearest ibm128 0x9.10b9251f0cc9bdc81d6ab13bb4p-4 : 0x7.b239166cbf6e8bfb5c8c5ad05p-4 : inexact-ok += exp2m1 towardzero ibm128 0x9.10b9251f0cc9bdc81d6ab13bb4p-4 : 0x7.b239166cbf6e8bfb5c8c5ad04ep-4 : inexact-ok += exp2m1 upward ibm128 0x9.10b9251f0cc9bdc81d6ab13bb4p-4 : 0x7.b239166cbf6e8bfb5c8c5ad05p-4 : inexact-ok diff --git a/math/auto-libm-test-out-log10p1 b/math/auto-libm-test-out-log10p1 index 3102161374..87bdb0bcde 100644 --- a/math/auto-libm-test-out-log10p1 +++ b/math/auto-libm-test-out-log10p1 @@ -3061,3 +3061,1783 @@ log10p1 0x6.af53d00fd2845d4772260ef5adc4p-4 = log10p1 tonearest ibm128 0x6.af53d00fd2845d4772260ef5acp-4 : 0x2.6d054768927fc902a40b9d653dp-4 : inexact-ok = log10p1 towardzero ibm128 0x6.af53d00fd2845d4772260ef5acp-4 : 0x2.6d054768927fc902a40b9d653cp-4 : inexact-ok = log10p1 upward ibm128 0x6.af53d00fd2845d4772260ef5acp-4 : 0x2.6d054768927fc902a40b9d653dp-4 : inexact-ok +log10p1 0x1.ce84ep+0 += log10p1 downward binary32 0x1.ce84ep+0 : 0x7.2bd1f8p-4 : inexact-ok += log10p1 tonearest binary32 0x1.ce84ep+0 : 0x7.2bd2p-4 : inexact-ok += log10p1 towardzero binary32 0x1.ce84ep+0 : 0x7.2bd1f8p-4 : inexact-ok += log10p1 upward binary32 0x1.ce84ep+0 : 0x7.2bd2p-4 : inexact-ok += log10p1 downward binary64 0x1.ce84ep+0 : 0x7.2bd1ffb952e14p-4 : inexact-ok += log10p1 tonearest binary64 0x1.ce84ep+0 : 0x7.2bd1ffb952e14p-4 : inexact-ok += log10p1 towardzero binary64 0x1.ce84ep+0 : 0x7.2bd1ffb952e14p-4 : inexact-ok += log10p1 upward binary64 0x1.ce84ep+0 : 0x7.2bd1ffb952e18p-4 : inexact-ok += log10p1 downward intel96 0x1.ce84ep+0 : 0x7.2bd1ffb952e142ep-4 : inexact-ok += log10p1 tonearest intel96 0x1.ce84ep+0 : 0x7.2bd1ffb952e142ep-4 : inexact-ok += log10p1 towardzero intel96 0x1.ce84ep+0 : 0x7.2bd1ffb952e142ep-4 : inexact-ok += log10p1 upward intel96 0x1.ce84ep+0 : 0x7.2bd1ffb952e142e8p-4 : inexact-ok += log10p1 downward m68k96 0x1.ce84ep+0 : 0x7.2bd1ffb952e142ep-4 : inexact-ok += log10p1 tonearest m68k96 0x1.ce84ep+0 : 0x7.2bd1ffb952e142ep-4 : inexact-ok += log10p1 towardzero m68k96 0x1.ce84ep+0 : 0x7.2bd1ffb952e142ep-4 : inexact-ok += log10p1 upward m68k96 0x1.ce84ep+0 : 0x7.2bd1ffb952e142e8p-4 : inexact-ok += log10p1 downward binary128 0x1.ce84ep+0 : 0x7.2bd1ffb952e142e24995a6fa7bf8p-4 : inexact-ok += log10p1 tonearest binary128 0x1.ce84ep+0 : 0x7.2bd1ffb952e142e24995a6fa7bfcp-4 : inexact-ok += log10p1 towardzero binary128 0x1.ce84ep+0 : 0x7.2bd1ffb952e142e24995a6fa7bf8p-4 : inexact-ok += log10p1 upward binary128 0x1.ce84ep+0 : 0x7.2bd1ffb952e142e24995a6fa7bfcp-4 : inexact-ok += log10p1 downward ibm128 0x1.ce84ep+0 : 0x7.2bd1ffb952e142e24995a6fa7ap-4 : inexact-ok += log10p1 tonearest ibm128 0x1.ce84ep+0 : 0x7.2bd1ffb952e142e24995a6fa7cp-4 : inexact-ok += log10p1 towardzero ibm128 0x1.ce84ep+0 : 0x7.2bd1ffb952e142e24995a6fa7ap-4 : inexact-ok += log10p1 upward ibm128 0x1.ce84ep+0 : 0x7.2bd1ffb952e142e24995a6fa7cp-4 : inexact-ok +log10p1 -0x1.c9bc9cp-3 += log10p1 downward binary32 -0x3.937938p-4 : -0x1.c1fd8ap-4 : inexact-ok += log10p1 tonearest binary32 -0x3.937938p-4 : -0x1.c1fd8ap-4 : inexact-ok += log10p1 towardzero binary32 -0x3.937938p-4 : -0x1.c1fd88p-4 : inexact-ok += log10p1 upward binary32 -0x3.937938p-4 : -0x1.c1fd88p-4 : inexact-ok += log10p1 downward binary64 -0x3.937938p-4 : -0x1.c1fd891b0bcd1p-4 : inexact-ok += log10p1 tonearest binary64 -0x3.937938p-4 : -0x1.c1fd891b0bcd1p-4 : inexact-ok += log10p1 towardzero binary64 -0x3.937938p-4 : -0x1.c1fd891b0bcdp-4 : inexact-ok += log10p1 upward binary64 -0x3.937938p-4 : -0x1.c1fd891b0bcdp-4 : inexact-ok += log10p1 downward intel96 -0x3.937938p-4 : -0x1.c1fd891b0bcd0b96p-4 : inexact-ok += log10p1 tonearest intel96 -0x3.937938p-4 : -0x1.c1fd891b0bcd0b94p-4 : inexact-ok += log10p1 towardzero intel96 -0x3.937938p-4 : -0x1.c1fd891b0bcd0b94p-4 : inexact-ok += log10p1 upward intel96 -0x3.937938p-4 : -0x1.c1fd891b0bcd0b94p-4 : inexact-ok += log10p1 downward m68k96 -0x3.937938p-4 : -0x1.c1fd891b0bcd0b96p-4 : inexact-ok += log10p1 tonearest m68k96 -0x3.937938p-4 : -0x1.c1fd891b0bcd0b94p-4 : inexact-ok += log10p1 towardzero m68k96 -0x3.937938p-4 : -0x1.c1fd891b0bcd0b94p-4 : inexact-ok += log10p1 upward m68k96 -0x3.937938p-4 : -0x1.c1fd891b0bcd0b94p-4 : inexact-ok += log10p1 downward binary128 -0x3.937938p-4 : -0x1.c1fd891b0bcd0b94889ccced124ep-4 : inexact-ok += log10p1 tonearest binary128 -0x3.937938p-4 : -0x1.c1fd891b0bcd0b94889ccced124dp-4 : inexact-ok += log10p1 towardzero binary128 -0x3.937938p-4 : -0x1.c1fd891b0bcd0b94889ccced124dp-4 : inexact-ok += log10p1 upward binary128 -0x3.937938p-4 : -0x1.c1fd891b0bcd0b94889ccced124dp-4 : inexact-ok += log10p1 downward ibm128 -0x3.937938p-4 : -0x1.c1fd891b0bcd0b94889ccced128p-4 : inexact-ok += log10p1 tonearest ibm128 -0x3.937938p-4 : -0x1.c1fd891b0bcd0b94889ccced128p-4 : inexact-ok += log10p1 towardzero ibm128 -0x3.937938p-4 : -0x1.c1fd891b0bcd0b94889ccced12p-4 : inexact-ok += log10p1 upward ibm128 -0x3.937938p-4 : -0x1.c1fd891b0bcd0b94889ccced12p-4 : inexact-ok +log10p1 0x1.3b8ad4p+106 += log10p1 downward binary32 0x4.ee2b5p+104 : 0x1.fffffcp+4 : inexact-ok += log10p1 tonearest binary32 0x4.ee2b5p+104 : 0x1.fffffep+4 : inexact-ok += log10p1 towardzero binary32 0x4.ee2b5p+104 : 0x1.fffffcp+4 : inexact-ok += log10p1 upward binary32 0x4.ee2b5p+104 : 0x1.fffffep+4 : inexact-ok += log10p1 downward binary64 0x4.ee2b5p+104 : 0x1.fffffd052babdp+4 : inexact-ok += log10p1 tonearest binary64 0x4.ee2b5p+104 : 0x1.fffffd052babdp+4 : inexact-ok += log10p1 towardzero binary64 0x4.ee2b5p+104 : 0x1.fffffd052babdp+4 : inexact-ok += log10p1 upward binary64 0x4.ee2b5p+104 : 0x1.fffffd052babep+4 : inexact-ok += log10p1 downward intel96 0x4.ee2b5p+104 : 0x1.fffffd052babd1c2p+4 : inexact-ok += log10p1 tonearest intel96 0x4.ee2b5p+104 : 0x1.fffffd052babd1c2p+4 : inexact-ok += log10p1 towardzero intel96 0x4.ee2b5p+104 : 0x1.fffffd052babd1c2p+4 : inexact-ok += log10p1 upward intel96 0x4.ee2b5p+104 : 0x1.fffffd052babd1c4p+4 : inexact-ok += log10p1 downward m68k96 0x4.ee2b5p+104 : 0x1.fffffd052babd1c2p+4 : inexact-ok += log10p1 tonearest m68k96 0x4.ee2b5p+104 : 0x1.fffffd052babd1c2p+4 : inexact-ok += log10p1 towardzero m68k96 0x4.ee2b5p+104 : 0x1.fffffd052babd1c2p+4 : inexact-ok += log10p1 upward m68k96 0x4.ee2b5p+104 : 0x1.fffffd052babd1c4p+4 : inexact-ok += log10p1 downward binary128 0x4.ee2b5p+104 : 0x1.fffffd052babd1c25129c68ee885p+4 : inexact-ok += log10p1 tonearest binary128 0x4.ee2b5p+104 : 0x1.fffffd052babd1c25129c68ee886p+4 : inexact-ok += log10p1 towardzero binary128 0x4.ee2b5p+104 : 0x1.fffffd052babd1c25129c68ee885p+4 : inexact-ok += log10p1 upward binary128 0x4.ee2b5p+104 : 0x1.fffffd052babd1c25129c68ee886p+4 : inexact-ok += log10p1 downward ibm128 0x4.ee2b5p+104 : 0x1.fffffd052babd1c25129c68ee88p+4 : inexact-ok += log10p1 tonearest ibm128 0x4.ee2b5p+104 : 0x1.fffffd052babd1c25129c68ee88p+4 : inexact-ok += log10p1 towardzero ibm128 0x4.ee2b5p+104 : 0x1.fffffd052babd1c25129c68ee88p+4 : inexact-ok += log10p1 upward ibm128 0x4.ee2b5p+104 : 0x1.fffffd052babd1c25129c68ee9p+4 : inexact-ok +log10p1 -0x1.2611b2p-8 += log10p1 downward binary32 -0x1.2611b2p-8 : -0x7.fffff8p-12 : inexact-ok += log10p1 tonearest binary32 -0x1.2611b2p-8 : -0x7.fffff8p-12 : inexact-ok += log10p1 towardzero binary32 -0x1.2611b2p-8 : -0x7.fffffp-12 : inexact-ok += log10p1 upward binary32 -0x1.2611b2p-8 : -0x7.fffffp-12 : inexact-ok += log10p1 downward binary64 -0x1.2611b2p-8 : -0x7.fffff4b2fae1p-12 : inexact-ok += log10p1 tonearest binary64 -0x1.2611b2p-8 : -0x7.fffff4b2fae0cp-12 : inexact-ok += log10p1 towardzero binary64 -0x1.2611b2p-8 : -0x7.fffff4b2fae0cp-12 : inexact-ok += log10p1 upward binary64 -0x1.2611b2p-8 : -0x7.fffff4b2fae0cp-12 : inexact-ok += log10p1 downward intel96 -0x1.2611b2p-8 : -0x7.fffff4b2fae0d0a8p-12 : inexact-ok += log10p1 tonearest intel96 -0x1.2611b2p-8 : -0x7.fffff4b2fae0d0a8p-12 : inexact-ok += log10p1 towardzero intel96 -0x1.2611b2p-8 : -0x7.fffff4b2fae0d0ap-12 : inexact-ok += log10p1 upward intel96 -0x1.2611b2p-8 : -0x7.fffff4b2fae0d0ap-12 : inexact-ok += log10p1 downward m68k96 -0x1.2611b2p-8 : -0x7.fffff4b2fae0d0a8p-12 : inexact-ok += log10p1 tonearest m68k96 -0x1.2611b2p-8 : -0x7.fffff4b2fae0d0a8p-12 : inexact-ok += log10p1 towardzero m68k96 -0x1.2611b2p-8 : -0x7.fffff4b2fae0d0ap-12 : inexact-ok += log10p1 upward m68k96 -0x1.2611b2p-8 : -0x7.fffff4b2fae0d0ap-12 : inexact-ok += log10p1 downward binary128 -0x1.2611b2p-8 : -0x7.fffff4b2fae0d0a481d66feb59a4p-12 : inexact-ok += log10p1 tonearest binary128 -0x1.2611b2p-8 : -0x7.fffff4b2fae0d0a481d66feb59ap-12 : inexact-ok += log10p1 towardzero binary128 -0x1.2611b2p-8 : -0x7.fffff4b2fae0d0a481d66feb59ap-12 : inexact-ok += log10p1 upward binary128 -0x1.2611b2p-8 : -0x7.fffff4b2fae0d0a481d66feb59ap-12 : inexact-ok += log10p1 downward ibm128 -0x1.2611b2p-8 : -0x7.fffff4b2fae0d0a481d66feb5ap-12 : inexact-ok += log10p1 tonearest ibm128 -0x1.2611b2p-8 : -0x7.fffff4b2fae0d0a481d66feb5ap-12 : inexact-ok += log10p1 towardzero ibm128 -0x1.2611b2p-8 : -0x7.fffff4b2fae0d0a481d66feb58p-12 : inexact-ok += log10p1 upward ibm128 -0x1.2611b2p-8 : -0x7.fffff4b2fae0d0a481d66feb58p-12 : inexact-ok +log10p1 -0x1.4c2971893052fp-1 += log10p1 downward binary32 -0xa.614b8p-4 : -0x7.452c9p-4 : inexact-ok += log10p1 tonearest binary32 -0xa.614b8p-4 : -0x7.452c88p-4 : inexact-ok += log10p1 towardzero binary32 -0xa.614b8p-4 : -0x7.452c88p-4 : inexact-ok += log10p1 upward binary32 -0xa.614b8p-4 : -0x7.452c88p-4 : inexact-ok += log10p1 downward binary64 -0xa.614b8p-4 : -0x7.452c880146554p-4 : inexact-ok += log10p1 tonearest binary64 -0xa.614b8p-4 : -0x7.452c88014655p-4 : inexact-ok += log10p1 towardzero binary64 -0xa.614b8p-4 : -0x7.452c88014655p-4 : inexact-ok += log10p1 upward binary64 -0xa.614b8p-4 : -0x7.452c88014655p-4 : inexact-ok += log10p1 downward intel96 -0xa.614b8p-4 : -0x7.452c880146550798p-4 : inexact-ok += log10p1 tonearest intel96 -0xa.614b8p-4 : -0x7.452c880146550798p-4 : inexact-ok += log10p1 towardzero intel96 -0xa.614b8p-4 : -0x7.452c88014655079p-4 : inexact-ok += log10p1 upward intel96 -0xa.614b8p-4 : -0x7.452c88014655079p-4 : inexact-ok += log10p1 downward m68k96 -0xa.614b8p-4 : -0x7.452c880146550798p-4 : inexact-ok += log10p1 tonearest m68k96 -0xa.614b8p-4 : -0x7.452c880146550798p-4 : inexact-ok += log10p1 towardzero m68k96 -0xa.614b8p-4 : -0x7.452c88014655079p-4 : inexact-ok += log10p1 upward m68k96 -0xa.614b8p-4 : -0x7.452c88014655079p-4 : inexact-ok += log10p1 downward binary128 -0xa.614b8p-4 : -0x7.452c880146550794fabcb7b37038p-4 : inexact-ok += log10p1 tonearest binary128 -0xa.614b8p-4 : -0x7.452c880146550794fabcb7b37038p-4 : inexact-ok += log10p1 towardzero binary128 -0xa.614b8p-4 : -0x7.452c880146550794fabcb7b37034p-4 : inexact-ok += log10p1 upward binary128 -0xa.614b8p-4 : -0x7.452c880146550794fabcb7b37034p-4 : inexact-ok += log10p1 downward ibm128 -0xa.614b8p-4 : -0x7.452c880146550794fabcb7b372p-4 : inexact-ok += log10p1 tonearest ibm128 -0xa.614b8p-4 : -0x7.452c880146550794fabcb7b37p-4 : inexact-ok += log10p1 towardzero ibm128 -0xa.614b8p-4 : -0x7.452c880146550794fabcb7b37p-4 : inexact-ok += log10p1 upward ibm128 -0xa.614b8p-4 : -0x7.452c880146550794fabcb7b37p-4 : inexact-ok += log10p1 downward binary32 -0xa.614b9p-4 : -0x7.452cap-4 : inexact-ok += log10p1 tonearest binary32 -0xa.614b9p-4 : -0x7.452c98p-4 : inexact-ok += log10p1 towardzero binary32 -0xa.614b9p-4 : -0x7.452c98p-4 : inexact-ok += log10p1 upward binary32 -0xa.614b9p-4 : -0x7.452c98p-4 : inexact-ok += log10p1 downward binary64 -0xa.614b9p-4 : -0x7.452c9bc9ba11cp-4 : inexact-ok += log10p1 tonearest binary64 -0xa.614b9p-4 : -0x7.452c9bc9ba118p-4 : inexact-ok += log10p1 towardzero binary64 -0xa.614b9p-4 : -0x7.452c9bc9ba118p-4 : inexact-ok += log10p1 upward binary64 -0xa.614b9p-4 : -0x7.452c9bc9ba118p-4 : inexact-ok += log10p1 downward intel96 -0xa.614b9p-4 : -0x7.452c9bc9ba119b2p-4 : inexact-ok += log10p1 tonearest intel96 -0xa.614b9p-4 : -0x7.452c9bc9ba119b2p-4 : inexact-ok += log10p1 towardzero intel96 -0xa.614b9p-4 : -0x7.452c9bc9ba119b18p-4 : inexact-ok += log10p1 upward intel96 -0xa.614b9p-4 : -0x7.452c9bc9ba119b18p-4 : inexact-ok += log10p1 downward m68k96 -0xa.614b9p-4 : -0x7.452c9bc9ba119b2p-4 : inexact-ok += log10p1 tonearest m68k96 -0xa.614b9p-4 : -0x7.452c9bc9ba119b2p-4 : inexact-ok += log10p1 towardzero m68k96 -0xa.614b9p-4 : -0x7.452c9bc9ba119b18p-4 : inexact-ok += log10p1 upward m68k96 -0xa.614b9p-4 : -0x7.452c9bc9ba119b18p-4 : inexact-ok += log10p1 downward binary128 -0xa.614b9p-4 : -0x7.452c9bc9ba119b1e2088198026fcp-4 : inexact-ok += log10p1 tonearest binary128 -0xa.614b9p-4 : -0x7.452c9bc9ba119b1e2088198026fcp-4 : inexact-ok += log10p1 towardzero binary128 -0xa.614b9p-4 : -0x7.452c9bc9ba119b1e2088198026f8p-4 : inexact-ok += log10p1 upward binary128 -0xa.614b9p-4 : -0x7.452c9bc9ba119b1e2088198026f8p-4 : inexact-ok += log10p1 downward ibm128 -0xa.614b9p-4 : -0x7.452c9bc9ba119b1e2088198028p-4 : inexact-ok += log10p1 tonearest ibm128 -0xa.614b9p-4 : -0x7.452c9bc9ba119b1e2088198026p-4 : inexact-ok += log10p1 towardzero ibm128 -0xa.614b9p-4 : -0x7.452c9bc9ba119b1e2088198026p-4 : inexact-ok += log10p1 upward ibm128 -0xa.614b9p-4 : -0x7.452c9bc9ba119b1e2088198026p-4 : inexact-ok += log10p1 downward binary64 -0xa.614b8c4982978p-4 : -0x7.452c973281258p-4 : inexact-ok += log10p1 tonearest binary64 -0xa.614b8c4982978p-4 : -0x7.452c973281258p-4 : inexact-ok += log10p1 towardzero binary64 -0xa.614b8c4982978p-4 : -0x7.452c973281254p-4 : inexact-ok += log10p1 upward binary64 -0xa.614b8c4982978p-4 : -0x7.452c973281254p-4 : inexact-ok += log10p1 downward intel96 -0xa.614b8c4982978p-4 : -0x7.452c973281257c5p-4 : inexact-ok += log10p1 tonearest intel96 -0xa.614b8c4982978p-4 : -0x7.452c973281257c48p-4 : inexact-ok += log10p1 towardzero intel96 -0xa.614b8c4982978p-4 : -0x7.452c973281257c48p-4 : inexact-ok += log10p1 upward intel96 -0xa.614b8c4982978p-4 : -0x7.452c973281257c48p-4 : inexact-ok += log10p1 downward m68k96 -0xa.614b8c4982978p-4 : -0x7.452c973281257c5p-4 : inexact-ok += log10p1 tonearest m68k96 -0xa.614b8c4982978p-4 : -0x7.452c973281257c48p-4 : inexact-ok += log10p1 towardzero m68k96 -0xa.614b8c4982978p-4 : -0x7.452c973281257c48p-4 : inexact-ok += log10p1 upward m68k96 -0xa.614b8c4982978p-4 : -0x7.452c973281257c48p-4 : inexact-ok += log10p1 downward binary128 -0xa.614b8c4982978p-4 : -0x7.452c973281257c4809b2670f6b1p-4 : inexact-ok += log10p1 tonearest binary128 -0xa.614b8c4982978p-4 : -0x7.452c973281257c4809b2670f6b1p-4 : inexact-ok += log10p1 towardzero binary128 -0xa.614b8c4982978p-4 : -0x7.452c973281257c4809b2670f6b0cp-4 : inexact-ok += log10p1 upward binary128 -0xa.614b8c4982978p-4 : -0x7.452c973281257c4809b2670f6b0cp-4 : inexact-ok += log10p1 downward ibm128 -0xa.614b8c4982978p-4 : -0x7.452c973281257c4809b2670f6cp-4 : inexact-ok += log10p1 tonearest ibm128 -0xa.614b8c4982978p-4 : -0x7.452c973281257c4809b2670f6cp-4 : inexact-ok += log10p1 towardzero ibm128 -0xa.614b8c4982978p-4 : -0x7.452c973281257c4809b2670f6ap-4 : inexact-ok += log10p1 upward ibm128 -0xa.614b8c4982978p-4 : -0x7.452c973281257c4809b2670f6ap-4 : inexact-ok +log10p1 -0x1.000196a3d9e18p-2 += log10p1 downward binary32 -0x4.000658p-4 : -0x1.ffc37p-4 : inexact-ok += log10p1 tonearest binary32 -0x4.000658p-4 : -0x1.ffc37p-4 : inexact-ok += log10p1 towardzero binary32 -0x4.000658p-4 : -0x1.ffc36ep-4 : inexact-ok += log10p1 upward binary32 -0x4.000658p-4 : -0x1.ffc36ep-4 : inexact-ok += log10p1 downward binary64 -0x4.000658p-4 : -0x1.ffc36f212f082p-4 : inexact-ok += log10p1 tonearest binary64 -0x4.000658p-4 : -0x1.ffc36f212f081p-4 : inexact-ok += log10p1 towardzero binary64 -0x4.000658p-4 : -0x1.ffc36f212f081p-4 : inexact-ok += log10p1 upward binary64 -0x4.000658p-4 : -0x1.ffc36f212f081p-4 : inexact-ok += log10p1 downward intel96 -0x4.000658p-4 : -0x1.ffc36f212f081438p-4 : inexact-ok += log10p1 tonearest intel96 -0x4.000658p-4 : -0x1.ffc36f212f081438p-4 : inexact-ok += log10p1 towardzero intel96 -0x4.000658p-4 : -0x1.ffc36f212f081436p-4 : inexact-ok += log10p1 upward intel96 -0x4.000658p-4 : -0x1.ffc36f212f081436p-4 : inexact-ok += log10p1 downward m68k96 -0x4.000658p-4 : -0x1.ffc36f212f081438p-4 : inexact-ok += log10p1 tonearest m68k96 -0x4.000658p-4 : -0x1.ffc36f212f081438p-4 : inexact-ok += log10p1 towardzero m68k96 -0x4.000658p-4 : -0x1.ffc36f212f081436p-4 : inexact-ok += log10p1 upward m68k96 -0x4.000658p-4 : -0x1.ffc36f212f081436p-4 : inexact-ok += log10p1 downward binary128 -0x4.000658p-4 : -0x1.ffc36f212f08143774e798701578p-4 : inexact-ok += log10p1 tonearest binary128 -0x4.000658p-4 : -0x1.ffc36f212f08143774e798701578p-4 : inexact-ok += log10p1 towardzero binary128 -0x4.000658p-4 : -0x1.ffc36f212f08143774e798701577p-4 : inexact-ok += log10p1 upward binary128 -0x4.000658p-4 : -0x1.ffc36f212f08143774e798701577p-4 : inexact-ok += log10p1 downward ibm128 -0x4.000658p-4 : -0x1.ffc36f212f08143774e79870158p-4 : inexact-ok += log10p1 tonearest ibm128 -0x4.000658p-4 : -0x1.ffc36f212f08143774e79870158p-4 : inexact-ok += log10p1 towardzero ibm128 -0x4.000658p-4 : -0x1.ffc36f212f08143774e7987015p-4 : inexact-ok += log10p1 upward ibm128 -0x4.000658p-4 : -0x1.ffc36f212f08143774e7987015p-4 : inexact-ok += log10p1 downward binary32 -0x4.00066p-4 : -0x1.ffc374p-4 : inexact-ok += log10p1 tonearest binary32 -0x4.00066p-4 : -0x1.ffc374p-4 : inexact-ok += log10p1 towardzero binary32 -0x4.00066p-4 : -0x1.ffc372p-4 : inexact-ok += log10p1 upward binary32 -0x4.00066p-4 : -0x1.ffc372p-4 : inexact-ok += log10p1 downward binary64 -0x4.00066p-4 : -0x1.ffc373c31b557p-4 : inexact-ok += log10p1 tonearest binary64 -0x4.00066p-4 : -0x1.ffc373c31b557p-4 : inexact-ok += log10p1 towardzero binary64 -0x4.00066p-4 : -0x1.ffc373c31b556p-4 : inexact-ok += log10p1 upward binary64 -0x4.00066p-4 : -0x1.ffc373c31b556p-4 : inexact-ok += log10p1 downward intel96 -0x4.00066p-4 : -0x1.ffc373c31b556a44p-4 : inexact-ok += log10p1 tonearest intel96 -0x4.00066p-4 : -0x1.ffc373c31b556a42p-4 : inexact-ok += log10p1 towardzero intel96 -0x4.00066p-4 : -0x1.ffc373c31b556a42p-4 : inexact-ok += log10p1 upward intel96 -0x4.00066p-4 : -0x1.ffc373c31b556a42p-4 : inexact-ok += log10p1 downward m68k96 -0x4.00066p-4 : -0x1.ffc373c31b556a44p-4 : inexact-ok += log10p1 tonearest m68k96 -0x4.00066p-4 : -0x1.ffc373c31b556a42p-4 : inexact-ok += log10p1 towardzero m68k96 -0x4.00066p-4 : -0x1.ffc373c31b556a42p-4 : inexact-ok += log10p1 upward m68k96 -0x4.00066p-4 : -0x1.ffc373c31b556a42p-4 : inexact-ok += log10p1 downward binary128 -0x4.00066p-4 : -0x1.ffc373c31b556a429e0a8abf81b8p-4 : inexact-ok += log10p1 tonearest binary128 -0x4.00066p-4 : -0x1.ffc373c31b556a429e0a8abf81b7p-4 : inexact-ok += log10p1 towardzero binary128 -0x4.00066p-4 : -0x1.ffc373c31b556a429e0a8abf81b7p-4 : inexact-ok += log10p1 upward binary128 -0x4.00066p-4 : -0x1.ffc373c31b556a429e0a8abf81b7p-4 : inexact-ok += log10p1 downward ibm128 -0x4.00066p-4 : -0x1.ffc373c31b556a429e0a8abf82p-4 : inexact-ok += log10p1 tonearest ibm128 -0x4.00066p-4 : -0x1.ffc373c31b556a429e0a8abf818p-4 : inexact-ok += log10p1 towardzero ibm128 -0x4.00066p-4 : -0x1.ffc373c31b556a429e0a8abf818p-4 : inexact-ok += log10p1 upward ibm128 -0x4.00066p-4 : -0x1.ffc373c31b556a429e0a8abf818p-4 : inexact-ok += log10p1 downward binary64 -0x4.00065a8f6786p-4 : -0x1.ffc3709cb46d6p-4 : inexact-ok += log10p1 tonearest binary64 -0x4.00065a8f6786p-4 : -0x1.ffc3709cb46d5p-4 : inexact-ok += log10p1 towardzero binary64 -0x4.00065a8f6786p-4 : -0x1.ffc3709cb46d5p-4 : inexact-ok += log10p1 upward binary64 -0x4.00065a8f6786p-4 : -0x1.ffc3709cb46d5p-4 : inexact-ok += log10p1 downward intel96 -0x4.00065a8f6786p-4 : -0x1.ffc3709cb46d54b2p-4 : inexact-ok += log10p1 tonearest intel96 -0x4.00065a8f6786p-4 : -0x1.ffc3709cb46d54bp-4 : inexact-ok += log10p1 towardzero intel96 -0x4.00065a8f6786p-4 : -0x1.ffc3709cb46d54bp-4 : inexact-ok += log10p1 upward intel96 -0x4.00065a8f6786p-4 : -0x1.ffc3709cb46d54bp-4 : inexact-ok += log10p1 downward m68k96 -0x4.00065a8f6786p-4 : -0x1.ffc3709cb46d54b2p-4 : inexact-ok += log10p1 tonearest m68k96 -0x4.00065a8f6786p-4 : -0x1.ffc3709cb46d54bp-4 : inexact-ok += log10p1 towardzero m68k96 -0x4.00065a8f6786p-4 : -0x1.ffc3709cb46d54bp-4 : inexact-ok += log10p1 upward m68k96 -0x4.00065a8f6786p-4 : -0x1.ffc3709cb46d54bp-4 : inexact-ok += log10p1 downward binary128 -0x4.00065a8f6786p-4 : -0x1.ffc3709cb46d54b0382186cd3923p-4 : inexact-ok += log10p1 tonearest binary128 -0x4.00065a8f6786p-4 : -0x1.ffc3709cb46d54b0382186cd3922p-4 : inexact-ok += log10p1 towardzero binary128 -0x4.00065a8f6786p-4 : -0x1.ffc3709cb46d54b0382186cd3922p-4 : inexact-ok += log10p1 upward binary128 -0x4.00065a8f6786p-4 : -0x1.ffc3709cb46d54b0382186cd3922p-4 : inexact-ok += log10p1 downward ibm128 -0x4.00065a8f6786p-4 : -0x1.ffc3709cb46d54b0382186cd398p-4 : inexact-ok += log10p1 tonearest ibm128 -0x4.00065a8f6786p-4 : -0x1.ffc3709cb46d54b0382186cd39p-4 : inexact-ok += log10p1 towardzero ibm128 -0x4.00065a8f6786p-4 : -0x1.ffc3709cb46d54b0382186cd39p-4 : inexact-ok += log10p1 upward ibm128 -0x4.00065a8f6786p-4 : -0x1.ffc3709cb46d54b0382186cd39p-4 : inexact-ok +log10p1 -0x1.26975ba3e6553p-43 += log10p1 downward binary32 -0x2.4d2eb4p-44 : -0xf.fe0f2p-48 : inexact-ok += log10p1 tonearest binary32 -0x2.4d2eb4p-44 : -0xf.fe0f1p-48 : inexact-ok += log10p1 towardzero binary32 -0x2.4d2eb4p-44 : -0xf.fe0f1p-48 : inexact-ok += log10p1 upward binary32 -0x2.4d2eb4p-44 : -0xf.fe0f1p-48 : inexact-ok += log10p1 downward binary64 -0x2.4d2eb4p-44 : -0xf.fe0f12b6b65ep-48 : inexact-ok += log10p1 tonearest binary64 -0x2.4d2eb4p-44 : -0xf.fe0f12b6b65ep-48 : inexact-ok += log10p1 towardzero binary64 -0x2.4d2eb4p-44 : -0xf.fe0f12b6b65d8p-48 : inexact-ok += log10p1 upward binary64 -0x2.4d2eb4p-44 : -0xf.fe0f12b6b65d8p-48 : inexact-ok += log10p1 downward intel96 -0x2.4d2eb4p-44 : -0xf.fe0f12b6b65dfebp-48 : inexact-ok += log10p1 tonearest intel96 -0x2.4d2eb4p-44 : -0xf.fe0f12b6b65dfeap-48 : inexact-ok += log10p1 towardzero intel96 -0x2.4d2eb4p-44 : -0xf.fe0f12b6b65dfeap-48 : inexact-ok += log10p1 upward intel96 -0x2.4d2eb4p-44 : -0xf.fe0f12b6b65dfeap-48 : inexact-ok += log10p1 downward m68k96 -0x2.4d2eb4p-44 : -0xf.fe0f12b6b65dfebp-48 : inexact-ok += log10p1 tonearest m68k96 -0x2.4d2eb4p-44 : -0xf.fe0f12b6b65dfeap-48 : inexact-ok += log10p1 towardzero m68k96 -0x2.4d2eb4p-44 : -0xf.fe0f12b6b65dfeap-48 : inexact-ok += log10p1 upward m68k96 -0x2.4d2eb4p-44 : -0xf.fe0f12b6b65dfeap-48 : inexact-ok += log10p1 downward binary128 -0x2.4d2eb4p-44 : -0xf.fe0f12b6b65dfea5beb60145ad48p-48 : inexact-ok += log10p1 tonearest binary128 -0x2.4d2eb4p-44 : -0xf.fe0f12b6b65dfea5beb60145ad48p-48 : inexact-ok += log10p1 towardzero binary128 -0x2.4d2eb4p-44 : -0xf.fe0f12b6b65dfea5beb60145ad4p-48 : inexact-ok += log10p1 upward binary128 -0x2.4d2eb4p-44 : -0xf.fe0f12b6b65dfea5beb60145ad4p-48 : inexact-ok += log10p1 downward ibm128 -0x2.4d2eb4p-44 : -0xf.fe0f12b6b65dfea5beb60145bp-48 : inexact-ok += log10p1 tonearest ibm128 -0x2.4d2eb4p-44 : -0xf.fe0f12b6b65dfea5beb60145acp-48 : inexact-ok += log10p1 towardzero ibm128 -0x2.4d2eb4p-44 : -0xf.fe0f12b6b65dfea5beb60145acp-48 : inexact-ok += log10p1 upward ibm128 -0x2.4d2eb4p-44 : -0xf.fe0f12b6b65dfea5beb60145acp-48 : inexact-ok += log10p1 downward binary32 -0x2.4d2eb8p-44 : -0xf.fe0f3p-48 : inexact-ok += log10p1 tonearest binary32 -0x2.4d2eb8p-44 : -0xf.fe0f3p-48 : inexact-ok += log10p1 towardzero binary32 -0x2.4d2eb8p-44 : -0xf.fe0f2p-48 : inexact-ok += log10p1 upward binary32 -0x2.4d2eb8p-44 : -0xf.fe0f2p-48 : inexact-ok += log10p1 downward binary64 -0x2.4d2eb8p-44 : -0xf.fe0f2e8231738p-48 : inexact-ok += log10p1 tonearest binary64 -0x2.4d2eb8p-44 : -0xf.fe0f2e823173p-48 : inexact-ok += log10p1 towardzero binary64 -0x2.4d2eb8p-44 : -0xf.fe0f2e823173p-48 : inexact-ok += log10p1 upward binary64 -0x2.4d2eb8p-44 : -0xf.fe0f2e823173p-48 : inexact-ok += log10p1 downward intel96 -0x2.4d2eb8p-44 : -0xf.fe0f2e823173259p-48 : inexact-ok += log10p1 tonearest intel96 -0x2.4d2eb8p-44 : -0xf.fe0f2e823173259p-48 : inexact-ok += log10p1 towardzero intel96 -0x2.4d2eb8p-44 : -0xf.fe0f2e823173258p-48 : inexact-ok += log10p1 upward intel96 -0x2.4d2eb8p-44 : -0xf.fe0f2e823173258p-48 : inexact-ok += log10p1 downward m68k96 -0x2.4d2eb8p-44 : -0xf.fe0f2e823173259p-48 : inexact-ok += log10p1 tonearest m68k96 -0x2.4d2eb8p-44 : -0xf.fe0f2e823173259p-48 : inexact-ok += log10p1 towardzero m68k96 -0x2.4d2eb8p-44 : -0xf.fe0f2e823173258p-48 : inexact-ok += log10p1 upward m68k96 -0x2.4d2eb8p-44 : -0xf.fe0f2e823173258p-48 : inexact-ok += log10p1 downward binary128 -0x2.4d2eb8p-44 : -0xf.fe0f2e823173258ecc6c70183fep-48 : inexact-ok += log10p1 tonearest binary128 -0x2.4d2eb8p-44 : -0xf.fe0f2e823173258ecc6c70183fep-48 : inexact-ok += log10p1 towardzero binary128 -0x2.4d2eb8p-44 : -0xf.fe0f2e823173258ecc6c70183fd8p-48 : inexact-ok += log10p1 upward binary128 -0x2.4d2eb8p-44 : -0xf.fe0f2e823173258ecc6c70183fd8p-48 : inexact-ok += log10p1 downward ibm128 -0x2.4d2eb8p-44 : -0xf.fe0f2e823173258ecc6c70184p-48 : inexact-ok += log10p1 tonearest ibm128 -0x2.4d2eb8p-44 : -0xf.fe0f2e823173258ecc6c70184p-48 : inexact-ok += log10p1 towardzero ibm128 -0x2.4d2eb8p-44 : -0xf.fe0f2e823173258ecc6c70183cp-48 : inexact-ok += log10p1 upward ibm128 -0x2.4d2eb8p-44 : -0xf.fe0f2e823173258ecc6c70183cp-48 : inexact-ok += log10p1 downward binary64 -0x2.4d2eb747ccaa6p-44 : -0xf.fe0f29823cap-48 : inexact-ok += log10p1 tonearest binary64 -0x2.4d2eb747ccaa6p-44 : -0xf.fe0f29823cap-48 : inexact-ok += log10p1 towardzero binary64 -0x2.4d2eb747ccaa6p-44 : -0xf.fe0f29823c9f8p-48 : inexact-ok += log10p1 upward binary64 -0x2.4d2eb747ccaa6p-44 : -0xf.fe0f29823c9f8p-48 : inexact-ok += log10p1 downward intel96 -0x2.4d2eb747ccaa6p-44 : -0xf.fe0f29823c9ffb9p-48 : inexact-ok += log10p1 tonearest intel96 -0x2.4d2eb747ccaa6p-44 : -0xf.fe0f29823c9ffb8p-48 : inexact-ok += log10p1 towardzero intel96 -0x2.4d2eb747ccaa6p-44 : -0xf.fe0f29823c9ffb8p-48 : inexact-ok += log10p1 upward intel96 -0x2.4d2eb747ccaa6p-44 : -0xf.fe0f29823c9ffb8p-48 : inexact-ok += log10p1 downward m68k96 -0x2.4d2eb747ccaa6p-44 : -0xf.fe0f29823c9ffb9p-48 : inexact-ok += log10p1 tonearest m68k96 -0x2.4d2eb747ccaa6p-44 : -0xf.fe0f29823c9ffb8p-48 : inexact-ok += log10p1 towardzero m68k96 -0x2.4d2eb747ccaa6p-44 : -0xf.fe0f29823c9ffb8p-48 : inexact-ok += log10p1 upward m68k96 -0x2.4d2eb747ccaa6p-44 : -0xf.fe0f29823c9ffb8p-48 : inexact-ok += log10p1 downward binary128 -0x2.4d2eb747ccaa6p-44 : -0xf.fe0f29823c9ffb807f114c07a48p-48 : inexact-ok += log10p1 tonearest binary128 -0x2.4d2eb747ccaa6p-44 : -0xf.fe0f29823c9ffb807f114c07a48p-48 : inexact-ok += log10p1 towardzero binary128 -0x2.4d2eb747ccaa6p-44 : -0xf.fe0f29823c9ffb807f114c07a478p-48 : inexact-ok += log10p1 upward binary128 -0x2.4d2eb747ccaa6p-44 : -0xf.fe0f29823c9ffb807f114c07a478p-48 : inexact-ok += log10p1 downward ibm128 -0x2.4d2eb747ccaa6p-44 : -0xf.fe0f29823c9ffb807f114c07a8p-48 : inexact-ok += log10p1 tonearest ibm128 -0x2.4d2eb747ccaa6p-44 : -0xf.fe0f29823c9ffb807f114c07a4p-48 : inexact-ok += log10p1 towardzero ibm128 -0x2.4d2eb747ccaa6p-44 : -0xf.fe0f29823c9ffb807f114c07a4p-48 : inexact-ok += log10p1 upward ibm128 -0x2.4d2eb747ccaa6p-44 : -0xf.fe0f29823c9ffb807f114c07a4p-48 : inexact-ok +log10p1 0x1.00d67bdd93083p+53 += log10p1 downward binary32 0x2.01acf8p+52 : 0xf.f4bcfp+0 : inexact-ok += log10p1 tonearest binary32 0x2.01acf8p+52 : 0xf.f4bdp+0 : inexact-ok += log10p1 towardzero binary32 0x2.01acf8p+52 : 0xf.f4bcfp+0 : inexact-ok += log10p1 upward binary32 0x2.01acf8p+52 : 0xf.f4bdp+0 : inexact-ok += log10p1 downward binary64 0x2.01acf8p+52 : 0xf.f4bcfe12112ap+0 : inexact-ok += log10p1 tonearest binary64 0x2.01acf8p+52 : 0xf.f4bcfe12112ap+0 : inexact-ok += log10p1 towardzero binary64 0x2.01acf8p+52 : 0xf.f4bcfe12112ap+0 : inexact-ok += log10p1 upward binary64 0x2.01acf8p+52 : 0xf.f4bcfe12112a8p+0 : inexact-ok += log10p1 downward intel96 0x2.01acf8p+52 : 0xf.f4bcfe12112a1ddp+0 : inexact-ok += log10p1 tonearest intel96 0x2.01acf8p+52 : 0xf.f4bcfe12112a1dep+0 : inexact-ok += log10p1 towardzero intel96 0x2.01acf8p+52 : 0xf.f4bcfe12112a1ddp+0 : inexact-ok += log10p1 upward intel96 0x2.01acf8p+52 : 0xf.f4bcfe12112a1dep+0 : inexact-ok += log10p1 downward m68k96 0x2.01acf8p+52 : 0xf.f4bcfe12112a1ddp+0 : inexact-ok += log10p1 tonearest m68k96 0x2.01acf8p+52 : 0xf.f4bcfe12112a1dep+0 : inexact-ok += log10p1 towardzero m68k96 0x2.01acf8p+52 : 0xf.f4bcfe12112a1ddp+0 : inexact-ok += log10p1 upward m68k96 0x2.01acf8p+52 : 0xf.f4bcfe12112a1dep+0 : inexact-ok += log10p1 downward binary128 0x2.01acf8p+52 : 0xf.f4bcfe12112a1ddc16a5db61635p+0 : inexact-ok += log10p1 tonearest binary128 0x2.01acf8p+52 : 0xf.f4bcfe12112a1ddc16a5db61635p+0 : inexact-ok += log10p1 towardzero binary128 0x2.01acf8p+52 : 0xf.f4bcfe12112a1ddc16a5db61635p+0 : inexact-ok += log10p1 upward binary128 0x2.01acf8p+52 : 0xf.f4bcfe12112a1ddc16a5db616358p+0 : inexact-ok += log10p1 downward ibm128 0x2.01acf8p+52 : 0xf.f4bcfe12112a1ddc16a5db616p+0 : inexact-ok += log10p1 tonearest ibm128 0x2.01acf8p+52 : 0xf.f4bcfe12112a1ddc16a5db6164p+0 : inexact-ok += log10p1 towardzero ibm128 0x2.01acf8p+52 : 0xf.f4bcfe12112a1ddc16a5db616p+0 : inexact-ok += log10p1 upward ibm128 0x2.01acf8p+52 : 0xf.f4bcfe12112a1ddc16a5db6164p+0 : inexact-ok += log10p1 downward binary32 0x2.01acf4p+52 : 0xf.f4bcfp+0 : inexact-ok += log10p1 tonearest binary32 0x2.01acf4p+52 : 0xf.f4bdp+0 : inexact-ok += log10p1 towardzero binary32 0x2.01acf4p+52 : 0xf.f4bcfp+0 : inexact-ok += log10p1 upward binary32 0x2.01acf4p+52 : 0xf.f4bdp+0 : inexact-ok += log10p1 downward binary64 0x2.01acf4p+52 : 0xf.f4bcfd346f01p+0 : inexact-ok += log10p1 tonearest binary64 0x2.01acf4p+52 : 0xf.f4bcfd346f018p+0 : inexact-ok += log10p1 towardzero binary64 0x2.01acf4p+52 : 0xf.f4bcfd346f01p+0 : inexact-ok += log10p1 upward binary64 0x2.01acf4p+52 : 0xf.f4bcfd346f018p+0 : inexact-ok += log10p1 downward intel96 0x2.01acf4p+52 : 0xf.f4bcfd346f017f8p+0 : inexact-ok += log10p1 tonearest intel96 0x2.01acf4p+52 : 0xf.f4bcfd346f017f8p+0 : inexact-ok += log10p1 towardzero intel96 0x2.01acf4p+52 : 0xf.f4bcfd346f017f8p+0 : inexact-ok += log10p1 upward intel96 0x2.01acf4p+52 : 0xf.f4bcfd346f017f9p+0 : inexact-ok += log10p1 downward m68k96 0x2.01acf4p+52 : 0xf.f4bcfd346f017f8p+0 : inexact-ok += log10p1 tonearest m68k96 0x2.01acf4p+52 : 0xf.f4bcfd346f017f8p+0 : inexact-ok += log10p1 towardzero m68k96 0x2.01acf4p+52 : 0xf.f4bcfd346f017f8p+0 : inexact-ok += log10p1 upward m68k96 0x2.01acf4p+52 : 0xf.f4bcfd346f017f9p+0 : inexact-ok += log10p1 downward binary128 0x2.01acf4p+52 : 0xf.f4bcfd346f017f82d0a6f7ea5d68p+0 : inexact-ok += log10p1 tonearest binary128 0x2.01acf4p+52 : 0xf.f4bcfd346f017f82d0a6f7ea5d68p+0 : inexact-ok += log10p1 towardzero binary128 0x2.01acf4p+52 : 0xf.f4bcfd346f017f82d0a6f7ea5d68p+0 : inexact-ok += log10p1 upward binary128 0x2.01acf4p+52 : 0xf.f4bcfd346f017f82d0a6f7ea5d7p+0 : inexact-ok += log10p1 downward ibm128 0x2.01acf4p+52 : 0xf.f4bcfd346f017f82d0a6f7ea5cp+0 : inexact-ok += log10p1 tonearest ibm128 0x2.01acf4p+52 : 0xf.f4bcfd346f017f82d0a6f7ea5cp+0 : inexact-ok += log10p1 towardzero ibm128 0x2.01acf4p+52 : 0xf.f4bcfd346f017f82d0a6f7ea5cp+0 : inexact-ok += log10p1 upward ibm128 0x2.01acf4p+52 : 0xf.f4bcfd346f017f82d0a6f7ea6p+0 : inexact-ok += log10p1 downward binary64 0x2.01acf7bb26106p+52 : 0xf.f4bcfe032a398p+0 : inexact-ok += log10p1 tonearest binary64 0x2.01acf7bb26106p+52 : 0xf.f4bcfe032a3ap+0 : inexact-ok += log10p1 towardzero binary64 0x2.01acf7bb26106p+52 : 0xf.f4bcfe032a398p+0 : inexact-ok += log10p1 upward binary64 0x2.01acf7bb26106p+52 : 0xf.f4bcfe032a3ap+0 : inexact-ok += log10p1 downward intel96 0x2.01acf7bb26106p+52 : 0xf.f4bcfe032a39fedp+0 : inexact-ok += log10p1 tonearest intel96 0x2.01acf7bb26106p+52 : 0xf.f4bcfe032a39feep+0 : inexact-ok += log10p1 towardzero intel96 0x2.01acf7bb26106p+52 : 0xf.f4bcfe032a39fedp+0 : inexact-ok += log10p1 upward intel96 0x2.01acf7bb26106p+52 : 0xf.f4bcfe032a39feep+0 : inexact-ok += log10p1 downward m68k96 0x2.01acf7bb26106p+52 : 0xf.f4bcfe032a39fedp+0 : inexact-ok += log10p1 tonearest m68k96 0x2.01acf7bb26106p+52 : 0xf.f4bcfe032a39feep+0 : inexact-ok += log10p1 towardzero m68k96 0x2.01acf7bb26106p+52 : 0xf.f4bcfe032a39fedp+0 : inexact-ok += log10p1 upward m68k96 0x2.01acf7bb26106p+52 : 0xf.f4bcfe032a39feep+0 : inexact-ok += log10p1 downward binary128 0x2.01acf7bb26106p+52 : 0xf.f4bcfe032a39fedd1bf742d3df58p+0 : inexact-ok += log10p1 tonearest binary128 0x2.01acf7bb26106p+52 : 0xf.f4bcfe032a39fedd1bf742d3df6p+0 : inexact-ok += log10p1 towardzero binary128 0x2.01acf7bb26106p+52 : 0xf.f4bcfe032a39fedd1bf742d3df58p+0 : inexact-ok += log10p1 upward binary128 0x2.01acf7bb26106p+52 : 0xf.f4bcfe032a39fedd1bf742d3df6p+0 : inexact-ok += log10p1 downward ibm128 0x2.01acf7bb26106p+52 : 0xf.f4bcfe032a39fedd1bf742d3dcp+0 : inexact-ok += log10p1 tonearest ibm128 0x2.01acf7bb26106p+52 : 0xf.f4bcfe032a39fedd1bf742d3ep+0 : inexact-ok += log10p1 towardzero ibm128 0x2.01acf7bb26106p+52 : 0xf.f4bcfe032a39fedd1bf742d3dcp+0 : inexact-ok += log10p1 upward ibm128 0x2.01acf7bb26106p+52 : 0xf.f4bcfe032a39fedd1bf742d3ep+0 : inexact-ok +log10p1 0x4.a486e7fa771f839p-4 += log10p1 downward binary32 0x4.a486e8p-4 : 0x1.c534eap-4 : inexact-ok += log10p1 tonearest binary32 0x4.a486e8p-4 : 0x1.c534ecp-4 : inexact-ok += log10p1 towardzero binary32 0x4.a486e8p-4 : 0x1.c534eap-4 : inexact-ok += log10p1 upward binary32 0x4.a486e8p-4 : 0x1.c534ecp-4 : inexact-ok += log10p1 downward binary64 0x4.a486e8p-4 : 0x1.c534eb760c7c1p-4 : inexact-ok += log10p1 tonearest binary64 0x4.a486e8p-4 : 0x1.c534eb760c7c2p-4 : inexact-ok += log10p1 towardzero binary64 0x4.a486e8p-4 : 0x1.c534eb760c7c1p-4 : inexact-ok += log10p1 upward binary64 0x4.a486e8p-4 : 0x1.c534eb760c7c2p-4 : inexact-ok += log10p1 downward intel96 0x4.a486e8p-4 : 0x1.c534eb760c7c1ceap-4 : inexact-ok += log10p1 tonearest intel96 0x4.a486e8p-4 : 0x1.c534eb760c7c1ceap-4 : inexact-ok += log10p1 towardzero intel96 0x4.a486e8p-4 : 0x1.c534eb760c7c1ceap-4 : inexact-ok += log10p1 upward intel96 0x4.a486e8p-4 : 0x1.c534eb760c7c1cecp-4 : inexact-ok += log10p1 downward m68k96 0x4.a486e8p-4 : 0x1.c534eb760c7c1ceap-4 : inexact-ok += log10p1 tonearest m68k96 0x4.a486e8p-4 : 0x1.c534eb760c7c1ceap-4 : inexact-ok += log10p1 towardzero m68k96 0x4.a486e8p-4 : 0x1.c534eb760c7c1ceap-4 : inexact-ok += log10p1 upward m68k96 0x4.a486e8p-4 : 0x1.c534eb760c7c1cecp-4 : inexact-ok += log10p1 downward binary128 0x4.a486e8p-4 : 0x1.c534eb760c7c1ceadf2475ea6737p-4 : inexact-ok += log10p1 tonearest binary128 0x4.a486e8p-4 : 0x1.c534eb760c7c1ceadf2475ea6737p-4 : inexact-ok += log10p1 towardzero binary128 0x4.a486e8p-4 : 0x1.c534eb760c7c1ceadf2475ea6737p-4 : inexact-ok += log10p1 upward binary128 0x4.a486e8p-4 : 0x1.c534eb760c7c1ceadf2475ea6738p-4 : inexact-ok += log10p1 downward ibm128 0x4.a486e8p-4 : 0x1.c534eb760c7c1ceadf2475ea67p-4 : inexact-ok += log10p1 tonearest ibm128 0x4.a486e8p-4 : 0x1.c534eb760c7c1ceadf2475ea67p-4 : inexact-ok += log10p1 towardzero ibm128 0x4.a486e8p-4 : 0x1.c534eb760c7c1ceadf2475ea67p-4 : inexact-ok += log10p1 upward ibm128 0x4.a486e8p-4 : 0x1.c534eb760c7c1ceadf2475ea678p-4 : inexact-ok += log10p1 downward binary32 0x4.a486ep-4 : 0x1.c534e8p-4 : inexact-ok += log10p1 tonearest binary32 0x4.a486ep-4 : 0x1.c534e8p-4 : inexact-ok += log10p1 towardzero binary32 0x4.a486ep-4 : 0x1.c534e8p-4 : inexact-ok += log10p1 upward binary32 0x4.a486ep-4 : 0x1.c534eap-4 : inexact-ok += log10p1 downward binary64 0x4.a486ep-4 : 0x1.c534e8c4a760bp-4 : inexact-ok += log10p1 tonearest binary64 0x4.a486ep-4 : 0x1.c534e8c4a760cp-4 : inexact-ok += log10p1 towardzero binary64 0x4.a486ep-4 : 0x1.c534e8c4a760bp-4 : inexact-ok += log10p1 upward binary64 0x4.a486ep-4 : 0x1.c534e8c4a760cp-4 : inexact-ok += log10p1 downward intel96 0x4.a486ep-4 : 0x1.c534e8c4a760b88ep-4 : inexact-ok += log10p1 tonearest intel96 0x4.a486ep-4 : 0x1.c534e8c4a760b89p-4 : inexact-ok += log10p1 towardzero intel96 0x4.a486ep-4 : 0x1.c534e8c4a760b88ep-4 : inexact-ok += log10p1 upward intel96 0x4.a486ep-4 : 0x1.c534e8c4a760b89p-4 : inexact-ok += log10p1 downward m68k96 0x4.a486ep-4 : 0x1.c534e8c4a760b88ep-4 : inexact-ok += log10p1 tonearest m68k96 0x4.a486ep-4 : 0x1.c534e8c4a760b89p-4 : inexact-ok += log10p1 towardzero m68k96 0x4.a486ep-4 : 0x1.c534e8c4a760b88ep-4 : inexact-ok += log10p1 upward m68k96 0x4.a486ep-4 : 0x1.c534e8c4a760b89p-4 : inexact-ok += log10p1 downward binary128 0x4.a486ep-4 : 0x1.c534e8c4a760b88fd417ef35d94ap-4 : inexact-ok += log10p1 tonearest binary128 0x4.a486ep-4 : 0x1.c534e8c4a760b88fd417ef35d94bp-4 : inexact-ok += log10p1 towardzero binary128 0x4.a486ep-4 : 0x1.c534e8c4a760b88fd417ef35d94ap-4 : inexact-ok += log10p1 upward binary128 0x4.a486ep-4 : 0x1.c534e8c4a760b88fd417ef35d94bp-4 : inexact-ok += log10p1 downward ibm128 0x4.a486ep-4 : 0x1.c534e8c4a760b88fd417ef35d9p-4 : inexact-ok += log10p1 tonearest ibm128 0x4.a486ep-4 : 0x1.c534e8c4a760b88fd417ef35d98p-4 : inexact-ok += log10p1 towardzero ibm128 0x4.a486ep-4 : 0x1.c534e8c4a760b88fd417ef35d9p-4 : inexact-ok += log10p1 upward ibm128 0x4.a486ep-4 : 0x1.c534e8c4a760b88fd417ef35d98p-4 : inexact-ok += log10p1 downward binary64 0x4.a486e7fa771fcp-4 : 0x1.c534eb742f89bp-4 : inexact-ok += log10p1 tonearest binary64 0x4.a486e7fa771fcp-4 : 0x1.c534eb742f89cp-4 : inexact-ok += log10p1 towardzero binary64 0x4.a486e7fa771fcp-4 : 0x1.c534eb742f89bp-4 : inexact-ok += log10p1 upward binary64 0x4.a486e7fa771fcp-4 : 0x1.c534eb742f89cp-4 : inexact-ok += log10p1 downward intel96 0x4.a486e7fa771fcp-4 : 0x1.c534eb742f89b8bcp-4 : inexact-ok += log10p1 tonearest intel96 0x4.a486e7fa771fcp-4 : 0x1.c534eb742f89b8bcp-4 : inexact-ok += log10p1 towardzero intel96 0x4.a486e7fa771fcp-4 : 0x1.c534eb742f89b8bcp-4 : inexact-ok += log10p1 upward intel96 0x4.a486e7fa771fcp-4 : 0x1.c534eb742f89b8bep-4 : inexact-ok += log10p1 downward m68k96 0x4.a486e7fa771fcp-4 : 0x1.c534eb742f89b8bcp-4 : inexact-ok += log10p1 tonearest m68k96 0x4.a486e7fa771fcp-4 : 0x1.c534eb742f89b8bcp-4 : inexact-ok += log10p1 towardzero m68k96 0x4.a486e7fa771fcp-4 : 0x1.c534eb742f89b8bcp-4 : inexact-ok += log10p1 upward m68k96 0x4.a486e7fa771fcp-4 : 0x1.c534eb742f89b8bep-4 : inexact-ok += log10p1 downward binary128 0x4.a486e7fa771fcp-4 : 0x1.c534eb742f89b8bc7fd39365cac1p-4 : inexact-ok += log10p1 tonearest binary128 0x4.a486e7fa771fcp-4 : 0x1.c534eb742f89b8bc7fd39365cac2p-4 : inexact-ok += log10p1 towardzero binary128 0x4.a486e7fa771fcp-4 : 0x1.c534eb742f89b8bc7fd39365cac1p-4 : inexact-ok += log10p1 upward binary128 0x4.a486e7fa771fcp-4 : 0x1.c534eb742f89b8bc7fd39365cac2p-4 : inexact-ok += log10p1 downward ibm128 0x4.a486e7fa771fcp-4 : 0x1.c534eb742f89b8bc7fd39365ca8p-4 : inexact-ok += log10p1 tonearest ibm128 0x4.a486e7fa771fcp-4 : 0x1.c534eb742f89b8bc7fd39365cbp-4 : inexact-ok += log10p1 towardzero ibm128 0x4.a486e7fa771fcp-4 : 0x1.c534eb742f89b8bc7fd39365ca8p-4 : inexact-ok += log10p1 upward ibm128 0x4.a486e7fa771fcp-4 : 0x1.c534eb742f89b8bc7fd39365cbp-4 : inexact-ok += log10p1 downward binary64 0x4.a486e7fa771f8p-4 : 0x1.c534eb742f89ap-4 : inexact-ok += log10p1 tonearest binary64 0x4.a486e7fa771f8p-4 : 0x1.c534eb742f89ap-4 : inexact-ok += log10p1 towardzero binary64 0x4.a486e7fa771f8p-4 : 0x1.c534eb742f89ap-4 : inexact-ok += log10p1 upward binary64 0x4.a486e7fa771f8p-4 : 0x1.c534eb742f89bp-4 : inexact-ok += log10p1 downward intel96 0x4.a486e7fa771f8p-4 : 0x1.c534eb742f89a33p-4 : inexact-ok += log10p1 tonearest intel96 0x4.a486e7fa771f8p-4 : 0x1.c534eb742f89a332p-4 : inexact-ok += log10p1 towardzero intel96 0x4.a486e7fa771f8p-4 : 0x1.c534eb742f89a33p-4 : inexact-ok += log10p1 upward intel96 0x4.a486e7fa771f8p-4 : 0x1.c534eb742f89a332p-4 : inexact-ok += log10p1 downward m68k96 0x4.a486e7fa771f8p-4 : 0x1.c534eb742f89a33p-4 : inexact-ok += log10p1 tonearest m68k96 0x4.a486e7fa771f8p-4 : 0x1.c534eb742f89a332p-4 : inexact-ok += log10p1 towardzero m68k96 0x4.a486e7fa771f8p-4 : 0x1.c534eb742f89a33p-4 : inexact-ok += log10p1 upward m68k96 0x4.a486e7fa771f8p-4 : 0x1.c534eb742f89a332p-4 : inexact-ok += log10p1 downward binary128 0x4.a486e7fa771f8p-4 : 0x1.c534eb742f89a33156fc97777c46p-4 : inexact-ok += log10p1 tonearest binary128 0x4.a486e7fa771f8p-4 : 0x1.c534eb742f89a33156fc97777c47p-4 : inexact-ok += log10p1 towardzero binary128 0x4.a486e7fa771f8p-4 : 0x1.c534eb742f89a33156fc97777c46p-4 : inexact-ok += log10p1 upward binary128 0x4.a486e7fa771f8p-4 : 0x1.c534eb742f89a33156fc97777c47p-4 : inexact-ok += log10p1 downward ibm128 0x4.a486e7fa771f8p-4 : 0x1.c534eb742f89a33156fc97777cp-4 : inexact-ok += log10p1 tonearest ibm128 0x4.a486e7fa771f8p-4 : 0x1.c534eb742f89a33156fc97777c8p-4 : inexact-ok += log10p1 towardzero ibm128 0x4.a486e7fa771f8p-4 : 0x1.c534eb742f89a33156fc97777cp-4 : inexact-ok += log10p1 upward ibm128 0x4.a486e7fa771f8p-4 : 0x1.c534eb742f89a33156fc97777c8p-4 : inexact-ok += log10p1 downward intel96 0x4.a486e7fa771f839p-4 : 0x1.c534eb742f89a464p-4 : inexact-ok += log10p1 tonearest intel96 0x4.a486e7fa771f839p-4 : 0x1.c534eb742f89a464p-4 : inexact-ok += log10p1 towardzero intel96 0x4.a486e7fa771f839p-4 : 0x1.c534eb742f89a464p-4 : inexact-ok += log10p1 upward intel96 0x4.a486e7fa771f839p-4 : 0x1.c534eb742f89a466p-4 : inexact-ok += log10p1 downward m68k96 0x4.a486e7fa771f839p-4 : 0x1.c534eb742f89a464p-4 : inexact-ok += log10p1 tonearest m68k96 0x4.a486e7fa771f839p-4 : 0x1.c534eb742f89a464p-4 : inexact-ok += log10p1 towardzero m68k96 0x4.a486e7fa771f839p-4 : 0x1.c534eb742f89a464p-4 : inexact-ok += log10p1 upward m68k96 0x4.a486e7fa771f839p-4 : 0x1.c534eb742f89a466p-4 : inexact-ok += log10p1 downward binary128 0x4.a486e7fa771f839p-4 : 0x1.c534eb742f89a46456028efd8027p-4 : inexact-ok += log10p1 tonearest binary128 0x4.a486e7fa771f839p-4 : 0x1.c534eb742f89a46456028efd8027p-4 : inexact-ok += log10p1 towardzero binary128 0x4.a486e7fa771f839p-4 : 0x1.c534eb742f89a46456028efd8027p-4 : inexact-ok += log10p1 upward binary128 0x4.a486e7fa771f839p-4 : 0x1.c534eb742f89a46456028efd8028p-4 : inexact-ok += log10p1 downward ibm128 0x4.a486e7fa771f839p-4 : 0x1.c534eb742f89a46456028efd8p-4 : inexact-ok += log10p1 tonearest ibm128 0x4.a486e7fa771f839p-4 : 0x1.c534eb742f89a46456028efd8p-4 : inexact-ok += log10p1 towardzero ibm128 0x4.a486e7fa771f839p-4 : 0x1.c534eb742f89a46456028efd8p-4 : inexact-ok += log10p1 upward ibm128 0x4.a486e7fa771f839p-4 : 0x1.c534eb742f89a46456028efd808p-4 : inexact-ok +log10p1 0x4.f974ef417a9fe778p-4 += log10p1 downward binary32 0x4.f974fp-4 : 0x1.e1918p-4 : inexact-ok += log10p1 tonearest binary32 0x4.f974fp-4 : 0x1.e1918p-4 : inexact-ok += log10p1 towardzero binary32 0x4.f974fp-4 : 0x1.e1918p-4 : inexact-ok += log10p1 upward binary32 0x4.f974fp-4 : 0x1.e19182p-4 : inexact-ok += log10p1 downward binary64 0x4.f974fp-4 : 0x1.e19180e6f3e0cp-4 : inexact-ok += log10p1 tonearest binary64 0x4.f974fp-4 : 0x1.e19180e6f3e0dp-4 : inexact-ok += log10p1 towardzero binary64 0x4.f974fp-4 : 0x1.e19180e6f3e0cp-4 : inexact-ok += log10p1 upward binary64 0x4.f974fp-4 : 0x1.e19180e6f3e0dp-4 : inexact-ok += log10p1 downward intel96 0x4.f974fp-4 : 0x1.e19180e6f3e0cd24p-4 : inexact-ok += log10p1 tonearest intel96 0x4.f974fp-4 : 0x1.e19180e6f3e0cd26p-4 : inexact-ok += log10p1 towardzero intel96 0x4.f974fp-4 : 0x1.e19180e6f3e0cd24p-4 : inexact-ok += log10p1 upward intel96 0x4.f974fp-4 : 0x1.e19180e6f3e0cd26p-4 : inexact-ok += log10p1 downward m68k96 0x4.f974fp-4 : 0x1.e19180e6f3e0cd24p-4 : inexact-ok += log10p1 tonearest m68k96 0x4.f974fp-4 : 0x1.e19180e6f3e0cd26p-4 : inexact-ok += log10p1 towardzero m68k96 0x4.f974fp-4 : 0x1.e19180e6f3e0cd24p-4 : inexact-ok += log10p1 upward m68k96 0x4.f974fp-4 : 0x1.e19180e6f3e0cd26p-4 : inexact-ok += log10p1 downward binary128 0x4.f974fp-4 : 0x1.e19180e6f3e0cd25ffb0ee710a71p-4 : inexact-ok += log10p1 tonearest binary128 0x4.f974fp-4 : 0x1.e19180e6f3e0cd25ffb0ee710a72p-4 : inexact-ok += log10p1 towardzero binary128 0x4.f974fp-4 : 0x1.e19180e6f3e0cd25ffb0ee710a71p-4 : inexact-ok += log10p1 upward binary128 0x4.f974fp-4 : 0x1.e19180e6f3e0cd25ffb0ee710a72p-4 : inexact-ok += log10p1 downward ibm128 0x4.f974fp-4 : 0x1.e19180e6f3e0cd25ffb0ee710ap-4 : inexact-ok += log10p1 tonearest ibm128 0x4.f974fp-4 : 0x1.e19180e6f3e0cd25ffb0ee710a8p-4 : inexact-ok += log10p1 towardzero ibm128 0x4.f974fp-4 : 0x1.e19180e6f3e0cd25ffb0ee710ap-4 : inexact-ok += log10p1 upward ibm128 0x4.f974fp-4 : 0x1.e19180e6f3e0cd25ffb0ee710a8p-4 : inexact-ok += log10p1 downward binary32 0x4.f974e8p-4 : 0x1.e1917ep-4 : inexact-ok += log10p1 tonearest binary32 0x4.f974e8p-4 : 0x1.e1917ep-4 : inexact-ok += log10p1 towardzero binary32 0x4.f974e8p-4 : 0x1.e1917ep-4 : inexact-ok += log10p1 upward binary32 0x4.f974e8p-4 : 0x1.e1918p-4 : inexact-ok += log10p1 downward binary64 0x4.f974e8p-4 : 0x1.e1917e407645cp-4 : inexact-ok += log10p1 tonearest binary64 0x4.f974e8p-4 : 0x1.e1917e407645dp-4 : inexact-ok += log10p1 towardzero binary64 0x4.f974e8p-4 : 0x1.e1917e407645cp-4 : inexact-ok += log10p1 upward binary64 0x4.f974e8p-4 : 0x1.e1917e407645dp-4 : inexact-ok += log10p1 downward intel96 0x4.f974e8p-4 : 0x1.e1917e407645cb64p-4 : inexact-ok += log10p1 tonearest intel96 0x4.f974e8p-4 : 0x1.e1917e407645cb66p-4 : inexact-ok += log10p1 towardzero intel96 0x4.f974e8p-4 : 0x1.e1917e407645cb64p-4 : inexact-ok += log10p1 upward intel96 0x4.f974e8p-4 : 0x1.e1917e407645cb66p-4 : inexact-ok += log10p1 downward m68k96 0x4.f974e8p-4 : 0x1.e1917e407645cb64p-4 : inexact-ok += log10p1 tonearest m68k96 0x4.f974e8p-4 : 0x1.e1917e407645cb66p-4 : inexact-ok += log10p1 towardzero m68k96 0x4.f974e8p-4 : 0x1.e1917e407645cb64p-4 : inexact-ok += log10p1 upward m68k96 0x4.f974e8p-4 : 0x1.e1917e407645cb66p-4 : inexact-ok += log10p1 downward binary128 0x4.f974e8p-4 : 0x1.e1917e407645cb654c9822c68ba1p-4 : inexact-ok += log10p1 tonearest binary128 0x4.f974e8p-4 : 0x1.e1917e407645cb654c9822c68ba2p-4 : inexact-ok += log10p1 towardzero binary128 0x4.f974e8p-4 : 0x1.e1917e407645cb654c9822c68ba1p-4 : inexact-ok += log10p1 upward binary128 0x4.f974e8p-4 : 0x1.e1917e407645cb654c9822c68ba2p-4 : inexact-ok += log10p1 downward ibm128 0x4.f974e8p-4 : 0x1.e1917e407645cb654c9822c68b8p-4 : inexact-ok += log10p1 tonearest ibm128 0x4.f974e8p-4 : 0x1.e1917e407645cb654c9822c68b8p-4 : inexact-ok += log10p1 towardzero ibm128 0x4.f974e8p-4 : 0x1.e1917e407645cb654c9822c68b8p-4 : inexact-ok += log10p1 upward ibm128 0x4.f974e8p-4 : 0x1.e1917e407645cb654c9822c68cp-4 : inexact-ok += log10p1 downward binary64 0x4.f974ef417aap-4 : 0x1.e19180a7d58ap-4 : inexact-ok += log10p1 tonearest binary64 0x4.f974ef417aap-4 : 0x1.e19180a7d58ap-4 : inexact-ok += log10p1 towardzero binary64 0x4.f974ef417aap-4 : 0x1.e19180a7d58ap-4 : inexact-ok += log10p1 upward binary64 0x4.f974ef417aap-4 : 0x1.e19180a7d58a1p-4 : inexact-ok += log10p1 downward intel96 0x4.f974ef417aap-4 : 0x1.e19180a7d58a0092p-4 : inexact-ok += log10p1 tonearest intel96 0x4.f974ef417aap-4 : 0x1.e19180a7d58a0092p-4 : inexact-ok += log10p1 towardzero intel96 0x4.f974ef417aap-4 : 0x1.e19180a7d58a0092p-4 : inexact-ok += log10p1 upward intel96 0x4.f974ef417aap-4 : 0x1.e19180a7d58a0094p-4 : inexact-ok += log10p1 downward m68k96 0x4.f974ef417aap-4 : 0x1.e19180a7d58a0092p-4 : inexact-ok += log10p1 tonearest m68k96 0x4.f974ef417aap-4 : 0x1.e19180a7d58a0092p-4 : inexact-ok += log10p1 towardzero m68k96 0x4.f974ef417aap-4 : 0x1.e19180a7d58a0092p-4 : inexact-ok += log10p1 upward m68k96 0x4.f974ef417aap-4 : 0x1.e19180a7d58a0094p-4 : inexact-ok += log10p1 downward binary128 0x4.f974ef417aap-4 : 0x1.e19180a7d58a0092fa65673bb135p-4 : inexact-ok += log10p1 tonearest binary128 0x4.f974ef417aap-4 : 0x1.e19180a7d58a0092fa65673bb136p-4 : inexact-ok += log10p1 towardzero binary128 0x4.f974ef417aap-4 : 0x1.e19180a7d58a0092fa65673bb135p-4 : inexact-ok += log10p1 upward binary128 0x4.f974ef417aap-4 : 0x1.e19180a7d58a0092fa65673bb136p-4 : inexact-ok += log10p1 downward ibm128 0x4.f974ef417aap-4 : 0x1.e19180a7d58a0092fa65673bb1p-4 : inexact-ok += log10p1 tonearest ibm128 0x4.f974ef417aap-4 : 0x1.e19180a7d58a0092fa65673bb1p-4 : inexact-ok += log10p1 towardzero ibm128 0x4.f974ef417aap-4 : 0x1.e19180a7d58a0092fa65673bb1p-4 : inexact-ok += log10p1 upward ibm128 0x4.f974ef417aap-4 : 0x1.e19180a7d58a0092fa65673bb18p-4 : inexact-ok += log10p1 downward binary64 0x4.f974ef417a9fcp-4 : 0x1.e19180a7d589ep-4 : inexact-ok += log10p1 tonearest binary64 0x4.f974ef417a9fcp-4 : 0x1.e19180a7d589fp-4 : inexact-ok += log10p1 towardzero binary64 0x4.f974ef417a9fcp-4 : 0x1.e19180a7d589ep-4 : inexact-ok += log10p1 upward binary64 0x4.f974ef417a9fcp-4 : 0x1.e19180a7d589fp-4 : inexact-ok += log10p1 downward intel96 0x4.f974ef417a9fcp-4 : 0x1.e19180a7d589eb5ep-4 : inexact-ok += log10p1 tonearest intel96 0x4.f974ef417a9fcp-4 : 0x1.e19180a7d589eb6p-4 : inexact-ok += log10p1 towardzero intel96 0x4.f974ef417a9fcp-4 : 0x1.e19180a7d589eb5ep-4 : inexact-ok += log10p1 upward intel96 0x4.f974ef417a9fcp-4 : 0x1.e19180a7d589eb6p-4 : inexact-ok += log10p1 downward m68k96 0x4.f974ef417a9fcp-4 : 0x1.e19180a7d589eb5ep-4 : inexact-ok += log10p1 tonearest m68k96 0x4.f974ef417a9fcp-4 : 0x1.e19180a7d589eb6p-4 : inexact-ok += log10p1 towardzero m68k96 0x4.f974ef417a9fcp-4 : 0x1.e19180a7d589eb5ep-4 : inexact-ok += log10p1 upward m68k96 0x4.f974ef417a9fcp-4 : 0x1.e19180a7d589eb6p-4 : inexact-ok += log10p1 downward binary128 0x4.f974ef417a9fcp-4 : 0x1.e19180a7d589eb5f0d90a3c420fbp-4 : inexact-ok += log10p1 tonearest binary128 0x4.f974ef417a9fcp-4 : 0x1.e19180a7d589eb5f0d90a3c420fcp-4 : inexact-ok += log10p1 towardzero binary128 0x4.f974ef417a9fcp-4 : 0x1.e19180a7d589eb5f0d90a3c420fbp-4 : inexact-ok += log10p1 upward binary128 0x4.f974ef417a9fcp-4 : 0x1.e19180a7d589eb5f0d90a3c420fcp-4 : inexact-ok += log10p1 downward ibm128 0x4.f974ef417a9fcp-4 : 0x1.e19180a7d589eb5f0d90a3c4208p-4 : inexact-ok += log10p1 tonearest ibm128 0x4.f974ef417a9fcp-4 : 0x1.e19180a7d589eb5f0d90a3c421p-4 : inexact-ok += log10p1 towardzero ibm128 0x4.f974ef417a9fcp-4 : 0x1.e19180a7d589eb5f0d90a3c4208p-4 : inexact-ok += log10p1 upward ibm128 0x4.f974ef417a9fcp-4 : 0x1.e19180a7d589eb5f0d90a3c421p-4 : inexact-ok += log10p1 downward intel96 0x4.f974ef417a9fe778p-4 : 0x1.e19180a7d589f872p-4 : inexact-ok += log10p1 tonearest intel96 0x4.f974ef417a9fe778p-4 : 0x1.e19180a7d589f872p-4 : inexact-ok += log10p1 towardzero intel96 0x4.f974ef417a9fe778p-4 : 0x1.e19180a7d589f872p-4 : inexact-ok += log10p1 upward intel96 0x4.f974ef417a9fe778p-4 : 0x1.e19180a7d589f874p-4 : inexact-ok += log10p1 downward m68k96 0x4.f974ef417a9fe778p-4 : 0x1.e19180a7d589f872p-4 : inexact-ok += log10p1 tonearest m68k96 0x4.f974ef417a9fe778p-4 : 0x1.e19180a7d589f872p-4 : inexact-ok += log10p1 towardzero m68k96 0x4.f974ef417a9fe778p-4 : 0x1.e19180a7d589f872p-4 : inexact-ok += log10p1 upward m68k96 0x4.f974ef417a9fe778p-4 : 0x1.e19180a7d589f874p-4 : inexact-ok += log10p1 downward binary128 0x4.f974ef417a9fe778p-4 : 0x1.e19180a7d589f872733e59cf7d15p-4 : inexact-ok += log10p1 tonearest binary128 0x4.f974ef417a9fe778p-4 : 0x1.e19180a7d589f872733e59cf7d15p-4 : inexact-ok += log10p1 towardzero binary128 0x4.f974ef417a9fe778p-4 : 0x1.e19180a7d589f872733e59cf7d15p-4 : inexact-ok += log10p1 upward binary128 0x4.f974ef417a9fe778p-4 : 0x1.e19180a7d589f872733e59cf7d16p-4 : inexact-ok += log10p1 downward ibm128 0x4.f974ef417a9fe778p-4 : 0x1.e19180a7d589f872733e59cf7dp-4 : inexact-ok += log10p1 tonearest ibm128 0x4.f974ef417a9fe778p-4 : 0x1.e19180a7d589f872733e59cf7dp-4 : inexact-ok += log10p1 towardzero ibm128 0x4.f974ef417a9fe778p-4 : 0x1.e19180a7d589f872733e59cf7dp-4 : inexact-ok += log10p1 upward ibm128 0x4.f974ef417a9fe778p-4 : 0x1.e19180a7d589f872733e59cf7d8p-4 : inexact-ok +log10p1 0x5.006dfbf1945a6648p-4 += log10p1 downward binary32 0x5.006ep-4 : 0x1.e3e08p-4 : inexact-ok += log10p1 tonearest binary32 0x5.006ep-4 : 0x1.e3e08p-4 : inexact-ok += log10p1 towardzero binary32 0x5.006ep-4 : 0x1.e3e08p-4 : inexact-ok += log10p1 upward binary32 0x5.006ep-4 : 0x1.e3e082p-4 : inexact-ok += log10p1 downward binary64 0x5.006ep-4 : 0x1.e3e08035c9193p-4 : inexact-ok += log10p1 tonearest binary64 0x5.006ep-4 : 0x1.e3e08035c9193p-4 : inexact-ok += log10p1 towardzero binary64 0x5.006ep-4 : 0x1.e3e08035c9193p-4 : inexact-ok += log10p1 upward binary64 0x5.006ep-4 : 0x1.e3e08035c9194p-4 : inexact-ok += log10p1 downward intel96 0x5.006ep-4 : 0x1.e3e08035c919321p-4 : inexact-ok += log10p1 tonearest intel96 0x5.006ep-4 : 0x1.e3e08035c9193212p-4 : inexact-ok += log10p1 towardzero intel96 0x5.006ep-4 : 0x1.e3e08035c919321p-4 : inexact-ok += log10p1 upward intel96 0x5.006ep-4 : 0x1.e3e08035c9193212p-4 : inexact-ok += log10p1 downward m68k96 0x5.006ep-4 : 0x1.e3e08035c919321p-4 : inexact-ok += log10p1 tonearest m68k96 0x5.006ep-4 : 0x1.e3e08035c9193212p-4 : inexact-ok += log10p1 towardzero m68k96 0x5.006ep-4 : 0x1.e3e08035c919321p-4 : inexact-ok += log10p1 upward m68k96 0x5.006ep-4 : 0x1.e3e08035c9193212p-4 : inexact-ok += log10p1 downward binary128 0x5.006ep-4 : 0x1.e3e08035c919321123df8ebe559bp-4 : inexact-ok += log10p1 tonearest binary128 0x5.006ep-4 : 0x1.e3e08035c919321123df8ebe559cp-4 : inexact-ok += log10p1 towardzero binary128 0x5.006ep-4 : 0x1.e3e08035c919321123df8ebe559bp-4 : inexact-ok += log10p1 upward binary128 0x5.006ep-4 : 0x1.e3e08035c919321123df8ebe559cp-4 : inexact-ok += log10p1 downward ibm128 0x5.006ep-4 : 0x1.e3e08035c919321123df8ebe558p-4 : inexact-ok += log10p1 tonearest ibm128 0x5.006ep-4 : 0x1.e3e08035c919321123df8ebe558p-4 : inexact-ok += log10p1 towardzero ibm128 0x5.006ep-4 : 0x1.e3e08035c919321123df8ebe558p-4 : inexact-ok += log10p1 upward ibm128 0x5.006ep-4 : 0x1.e3e08035c919321123df8ebe56p-4 : inexact-ok += log10p1 downward binary32 0x5.006df8p-4 : 0x1.e3e07cp-4 : inexact-ok += log10p1 tonearest binary32 0x5.006df8p-4 : 0x1.e3e07ep-4 : inexact-ok += log10p1 towardzero binary32 0x5.006df8p-4 : 0x1.e3e07cp-4 : inexact-ok += log10p1 upward binary32 0x5.006df8p-4 : 0x1.e3e07ep-4 : inexact-ok += log10p1 downward binary64 0x5.006df8p-4 : 0x1.e3e07d902cc34p-4 : inexact-ok += log10p1 tonearest binary64 0x5.006df8p-4 : 0x1.e3e07d902cc35p-4 : inexact-ok += log10p1 towardzero binary64 0x5.006df8p-4 : 0x1.e3e07d902cc34p-4 : inexact-ok += log10p1 upward binary64 0x5.006df8p-4 : 0x1.e3e07d902cc35p-4 : inexact-ok += log10p1 downward intel96 0x5.006df8p-4 : 0x1.e3e07d902cc34de8p-4 : inexact-ok += log10p1 tonearest intel96 0x5.006df8p-4 : 0x1.e3e07d902cc34de8p-4 : inexact-ok += log10p1 towardzero intel96 0x5.006df8p-4 : 0x1.e3e07d902cc34de8p-4 : inexact-ok += log10p1 upward intel96 0x5.006df8p-4 : 0x1.e3e07d902cc34deap-4 : inexact-ok += log10p1 downward m68k96 0x5.006df8p-4 : 0x1.e3e07d902cc34de8p-4 : inexact-ok += log10p1 tonearest m68k96 0x5.006df8p-4 : 0x1.e3e07d902cc34de8p-4 : inexact-ok += log10p1 towardzero m68k96 0x5.006df8p-4 : 0x1.e3e07d902cc34de8p-4 : inexact-ok += log10p1 upward m68k96 0x5.006df8p-4 : 0x1.e3e07d902cc34deap-4 : inexact-ok += log10p1 downward binary128 0x5.006df8p-4 : 0x1.e3e07d902cc34de898ac36f69e3bp-4 : inexact-ok += log10p1 tonearest binary128 0x5.006df8p-4 : 0x1.e3e07d902cc34de898ac36f69e3bp-4 : inexact-ok += log10p1 towardzero binary128 0x5.006df8p-4 : 0x1.e3e07d902cc34de898ac36f69e3bp-4 : inexact-ok += log10p1 upward binary128 0x5.006df8p-4 : 0x1.e3e07d902cc34de898ac36f69e3cp-4 : inexact-ok += log10p1 downward ibm128 0x5.006df8p-4 : 0x1.e3e07d902cc34de898ac36f69ep-4 : inexact-ok += log10p1 tonearest ibm128 0x5.006df8p-4 : 0x1.e3e07d902cc34de898ac36f69ep-4 : inexact-ok += log10p1 towardzero ibm128 0x5.006df8p-4 : 0x1.e3e07d902cc34de898ac36f69ep-4 : inexact-ok += log10p1 upward ibm128 0x5.006df8p-4 : 0x1.e3e07d902cc34de898ac36f69e8p-4 : inexact-ok += log10p1 downward binary64 0x5.006dfbf1945a8p-4 : 0x1.e3e07ede357efp-4 : inexact-ok += log10p1 tonearest binary64 0x5.006dfbf1945a8p-4 : 0x1.e3e07ede357fp-4 : inexact-ok += log10p1 towardzero binary64 0x5.006dfbf1945a8p-4 : 0x1.e3e07ede357efp-4 : inexact-ok += log10p1 upward binary64 0x5.006dfbf1945a8p-4 : 0x1.e3e07ede357fp-4 : inexact-ok += log10p1 downward intel96 0x5.006dfbf1945a8p-4 : 0x1.e3e07ede357efcep-4 : inexact-ok += log10p1 tonearest intel96 0x5.006dfbf1945a8p-4 : 0x1.e3e07ede357efcep-4 : inexact-ok += log10p1 towardzero intel96 0x5.006dfbf1945a8p-4 : 0x1.e3e07ede357efcep-4 : inexact-ok += log10p1 upward intel96 0x5.006dfbf1945a8p-4 : 0x1.e3e07ede357efce2p-4 : inexact-ok += log10p1 downward m68k96 0x5.006dfbf1945a8p-4 : 0x1.e3e07ede357efcep-4 : inexact-ok += log10p1 tonearest m68k96 0x5.006dfbf1945a8p-4 : 0x1.e3e07ede357efcep-4 : inexact-ok += log10p1 towardzero m68k96 0x5.006dfbf1945a8p-4 : 0x1.e3e07ede357efcep-4 : inexact-ok += log10p1 upward m68k96 0x5.006dfbf1945a8p-4 : 0x1.e3e07ede357efce2p-4 : inexact-ok += log10p1 downward binary128 0x5.006dfbf1945a8p-4 : 0x1.e3e07ede357efce0b41ef2ef5f98p-4 : inexact-ok += log10p1 tonearest binary128 0x5.006dfbf1945a8p-4 : 0x1.e3e07ede357efce0b41ef2ef5f98p-4 : inexact-ok += log10p1 towardzero binary128 0x5.006dfbf1945a8p-4 : 0x1.e3e07ede357efce0b41ef2ef5f98p-4 : inexact-ok += log10p1 upward binary128 0x5.006dfbf1945a8p-4 : 0x1.e3e07ede357efce0b41ef2ef5f99p-4 : inexact-ok += log10p1 downward ibm128 0x5.006dfbf1945a8p-4 : 0x1.e3e07ede357efce0b41ef2ef5f8p-4 : inexact-ok += log10p1 tonearest ibm128 0x5.006dfbf1945a8p-4 : 0x1.e3e07ede357efce0b41ef2ef5f8p-4 : inexact-ok += log10p1 towardzero ibm128 0x5.006dfbf1945a8p-4 : 0x1.e3e07ede357efce0b41ef2ef5f8p-4 : inexact-ok += log10p1 upward ibm128 0x5.006dfbf1945a8p-4 : 0x1.e3e07ede357efce0b41ef2ef6p-4 : inexact-ok += log10p1 downward binary64 0x5.006dfbf1945a4p-4 : 0x1.e3e07ede357eep-4 : inexact-ok += log10p1 tonearest binary64 0x5.006dfbf1945a4p-4 : 0x1.e3e07ede357eep-4 : inexact-ok += log10p1 towardzero binary64 0x5.006dfbf1945a4p-4 : 0x1.e3e07ede357eep-4 : inexact-ok += log10p1 upward binary64 0x5.006dfbf1945a4p-4 : 0x1.e3e07ede357efp-4 : inexact-ok += log10p1 downward intel96 0x5.006dfbf1945a4p-4 : 0x1.e3e07ede357ee7b2p-4 : inexact-ok += log10p1 tonearest intel96 0x5.006dfbf1945a4p-4 : 0x1.e3e07ede357ee7b4p-4 : inexact-ok += log10p1 towardzero intel96 0x5.006dfbf1945a4p-4 : 0x1.e3e07ede357ee7b2p-4 : inexact-ok += log10p1 upward intel96 0x5.006dfbf1945a4p-4 : 0x1.e3e07ede357ee7b4p-4 : inexact-ok += log10p1 downward m68k96 0x5.006dfbf1945a4p-4 : 0x1.e3e07ede357ee7b2p-4 : inexact-ok += log10p1 tonearest m68k96 0x5.006dfbf1945a4p-4 : 0x1.e3e07ede357ee7b4p-4 : inexact-ok += log10p1 towardzero m68k96 0x5.006dfbf1945a4p-4 : 0x1.e3e07ede357ee7b2p-4 : inexact-ok += log10p1 upward m68k96 0x5.006dfbf1945a4p-4 : 0x1.e3e07ede357ee7b4p-4 : inexact-ok += log10p1 downward binary128 0x5.006dfbf1945a4p-4 : 0x1.e3e07ede357ee7b3d16fc320da3ap-4 : inexact-ok += log10p1 tonearest binary128 0x5.006dfbf1945a4p-4 : 0x1.e3e07ede357ee7b3d16fc320da3bp-4 : inexact-ok += log10p1 towardzero binary128 0x5.006dfbf1945a4p-4 : 0x1.e3e07ede357ee7b3d16fc320da3ap-4 : inexact-ok += log10p1 upward binary128 0x5.006dfbf1945a4p-4 : 0x1.e3e07ede357ee7b3d16fc320da3bp-4 : inexact-ok += log10p1 downward ibm128 0x5.006dfbf1945a4p-4 : 0x1.e3e07ede357ee7b3d16fc320dap-4 : inexact-ok += log10p1 tonearest ibm128 0x5.006dfbf1945a4p-4 : 0x1.e3e07ede357ee7b3d16fc320dap-4 : inexact-ok += log10p1 towardzero ibm128 0x5.006dfbf1945a4p-4 : 0x1.e3e07ede357ee7b3d16fc320dap-4 : inexact-ok += log10p1 upward ibm128 0x5.006dfbf1945a4p-4 : 0x1.e3e07ede357ee7b3d16fc320da8p-4 : inexact-ok += log10p1 downward intel96 0x5.006dfbf1945a6648p-4 : 0x1.e3e07ede357ef45ep-4 : inexact-ok += log10p1 tonearest intel96 0x5.006dfbf1945a6648p-4 : 0x1.e3e07ede357ef45ep-4 : inexact-ok += log10p1 towardzero intel96 0x5.006dfbf1945a6648p-4 : 0x1.e3e07ede357ef45ep-4 : inexact-ok += log10p1 upward intel96 0x5.006dfbf1945a6648p-4 : 0x1.e3e07ede357ef46p-4 : inexact-ok += log10p1 downward m68k96 0x5.006dfbf1945a6648p-4 : 0x1.e3e07ede357ef45ep-4 : inexact-ok += log10p1 tonearest m68k96 0x5.006dfbf1945a6648p-4 : 0x1.e3e07ede357ef45ep-4 : inexact-ok += log10p1 towardzero m68k96 0x5.006dfbf1945a6648p-4 : 0x1.e3e07ede357ef45ep-4 : inexact-ok += log10p1 upward m68k96 0x5.006dfbf1945a6648p-4 : 0x1.e3e07ede357ef46p-4 : inexact-ok += log10p1 downward binary128 0x5.006dfbf1945a6648p-4 : 0x1.e3e07ede357ef45e4a86cc9941c8p-4 : inexact-ok += log10p1 tonearest binary128 0x5.006dfbf1945a6648p-4 : 0x1.e3e07ede357ef45e4a86cc9941c8p-4 : inexact-ok += log10p1 towardzero binary128 0x5.006dfbf1945a6648p-4 : 0x1.e3e07ede357ef45e4a86cc9941c8p-4 : inexact-ok += log10p1 upward binary128 0x5.006dfbf1945a6648p-4 : 0x1.e3e07ede357ef45e4a86cc9941c9p-4 : inexact-ok += log10p1 downward ibm128 0x5.006dfbf1945a6648p-4 : 0x1.e3e07ede357ef45e4a86cc99418p-4 : inexact-ok += log10p1 tonearest ibm128 0x5.006dfbf1945a6648p-4 : 0x1.e3e07ede357ef45e4a86cc9942p-4 : inexact-ok += log10p1 towardzero ibm128 0x5.006dfbf1945a6648p-4 : 0x1.e3e07ede357ef45e4a86cc99418p-4 : inexact-ok += log10p1 upward ibm128 0x5.006dfbf1945a6648p-4 : 0x1.e3e07ede357ef45e4a86cc9942p-4 : inexact-ok +log10p1 0x4.f6e989b93bb1cd78p-4 += log10p1 downward binary32 0x4.f6e99p-4 : 0x1.e0b9a6p-4 : inexact-ok += log10p1 tonearest binary32 0x4.f6e99p-4 : 0x1.e0b9a8p-4 : inexact-ok += log10p1 towardzero binary32 0x4.f6e99p-4 : 0x1.e0b9a6p-4 : inexact-ok += log10p1 upward binary32 0x4.f6e99p-4 : 0x1.e0b9a8p-4 : inexact-ok += log10p1 downward binary64 0x4.f6e99p-4 : 0x1.e0b9a7d429fc7p-4 : inexact-ok += log10p1 tonearest binary64 0x4.f6e99p-4 : 0x1.e0b9a7d429fc8p-4 : inexact-ok += log10p1 towardzero binary64 0x4.f6e99p-4 : 0x1.e0b9a7d429fc7p-4 : inexact-ok += log10p1 upward binary64 0x4.f6e99p-4 : 0x1.e0b9a7d429fc8p-4 : inexact-ok += log10p1 downward intel96 0x4.f6e99p-4 : 0x1.e0b9a7d429fc79b6p-4 : inexact-ok += log10p1 tonearest intel96 0x4.f6e99p-4 : 0x1.e0b9a7d429fc79b6p-4 : inexact-ok += log10p1 towardzero intel96 0x4.f6e99p-4 : 0x1.e0b9a7d429fc79b6p-4 : inexact-ok += log10p1 upward intel96 0x4.f6e99p-4 : 0x1.e0b9a7d429fc79b8p-4 : inexact-ok += log10p1 downward m68k96 0x4.f6e99p-4 : 0x1.e0b9a7d429fc79b6p-4 : inexact-ok += log10p1 tonearest m68k96 0x4.f6e99p-4 : 0x1.e0b9a7d429fc79b6p-4 : inexact-ok += log10p1 towardzero m68k96 0x4.f6e99p-4 : 0x1.e0b9a7d429fc79b6p-4 : inexact-ok += log10p1 upward m68k96 0x4.f6e99p-4 : 0x1.e0b9a7d429fc79b8p-4 : inexact-ok += log10p1 downward binary128 0x4.f6e99p-4 : 0x1.e0b9a7d429fc79b60d6ad621b1adp-4 : inexact-ok += log10p1 tonearest binary128 0x4.f6e99p-4 : 0x1.e0b9a7d429fc79b60d6ad621b1adp-4 : inexact-ok += log10p1 towardzero binary128 0x4.f6e99p-4 : 0x1.e0b9a7d429fc79b60d6ad621b1adp-4 : inexact-ok += log10p1 upward binary128 0x4.f6e99p-4 : 0x1.e0b9a7d429fc79b60d6ad621b1aep-4 : inexact-ok += log10p1 downward ibm128 0x4.f6e99p-4 : 0x1.e0b9a7d429fc79b60d6ad621b18p-4 : inexact-ok += log10p1 tonearest ibm128 0x4.f6e99p-4 : 0x1.e0b9a7d429fc79b60d6ad621b18p-4 : inexact-ok += log10p1 towardzero ibm128 0x4.f6e99p-4 : 0x1.e0b9a7d429fc79b60d6ad621b18p-4 : inexact-ok += log10p1 upward ibm128 0x4.f6e99p-4 : 0x1.e0b9a7d429fc79b60d6ad621b2p-4 : inexact-ok += log10p1 downward binary32 0x4.f6e988p-4 : 0x1.e0b9a4p-4 : inexact-ok += log10p1 tonearest binary32 0x4.f6e988p-4 : 0x1.e0b9a6p-4 : inexact-ok += log10p1 towardzero binary32 0x4.f6e988p-4 : 0x1.e0b9a4p-4 : inexact-ok += log10p1 upward binary32 0x4.f6e988p-4 : 0x1.e0b9a6p-4 : inexact-ok += log10p1 downward binary64 0x4.f6e988p-4 : 0x1.e0b9a52d5a088p-4 : inexact-ok += log10p1 tonearest binary64 0x4.f6e988p-4 : 0x1.e0b9a52d5a088p-4 : inexact-ok += log10p1 towardzero binary64 0x4.f6e988p-4 : 0x1.e0b9a52d5a088p-4 : inexact-ok += log10p1 upward binary64 0x4.f6e988p-4 : 0x1.e0b9a52d5a089p-4 : inexact-ok += log10p1 downward intel96 0x4.f6e988p-4 : 0x1.e0b9a52d5a0881c4p-4 : inexact-ok += log10p1 tonearest intel96 0x4.f6e988p-4 : 0x1.e0b9a52d5a0881c6p-4 : inexact-ok += log10p1 towardzero intel96 0x4.f6e988p-4 : 0x1.e0b9a52d5a0881c4p-4 : inexact-ok += log10p1 upward intel96 0x4.f6e988p-4 : 0x1.e0b9a52d5a0881c6p-4 : inexact-ok += log10p1 downward m68k96 0x4.f6e988p-4 : 0x1.e0b9a52d5a0881c4p-4 : inexact-ok += log10p1 tonearest m68k96 0x4.f6e988p-4 : 0x1.e0b9a52d5a0881c6p-4 : inexact-ok += log10p1 towardzero m68k96 0x4.f6e988p-4 : 0x1.e0b9a52d5a0881c4p-4 : inexact-ok += log10p1 upward m68k96 0x4.f6e988p-4 : 0x1.e0b9a52d5a0881c6p-4 : inexact-ok += log10p1 downward binary128 0x4.f6e988p-4 : 0x1.e0b9a52d5a0881c5e3d23aa6e148p-4 : inexact-ok += log10p1 tonearest binary128 0x4.f6e988p-4 : 0x1.e0b9a52d5a0881c5e3d23aa6e149p-4 : inexact-ok += log10p1 towardzero binary128 0x4.f6e988p-4 : 0x1.e0b9a52d5a0881c5e3d23aa6e148p-4 : inexact-ok += log10p1 upward binary128 0x4.f6e988p-4 : 0x1.e0b9a52d5a0881c5e3d23aa6e149p-4 : inexact-ok += log10p1 downward ibm128 0x4.f6e988p-4 : 0x1.e0b9a52d5a0881c5e3d23aa6e1p-4 : inexact-ok += log10p1 tonearest ibm128 0x4.f6e988p-4 : 0x1.e0b9a52d5a0881c5e3d23aa6e18p-4 : inexact-ok += log10p1 towardzero ibm128 0x4.f6e988p-4 : 0x1.e0b9a52d5a0881c5e3d23aa6e1p-4 : inexact-ok += log10p1 upward ibm128 0x4.f6e988p-4 : 0x1.e0b9a52d5a0881c5e3d23aa6e18p-4 : inexact-ok += log10p1 downward binary64 0x4.f6e989b93bb2p-4 : 0x1.e0b9a5bf99593p-4 : inexact-ok += log10p1 tonearest binary64 0x4.f6e989b93bb2p-4 : 0x1.e0b9a5bf99594p-4 : inexact-ok += log10p1 towardzero binary64 0x4.f6e989b93bb2p-4 : 0x1.e0b9a5bf99593p-4 : inexact-ok += log10p1 upward binary64 0x4.f6e989b93bb2p-4 : 0x1.e0b9a5bf99594p-4 : inexact-ok += log10p1 downward intel96 0x4.f6e989b93bb2p-4 : 0x1.e0b9a5bf99593da8p-4 : inexact-ok += log10p1 tonearest intel96 0x4.f6e989b93bb2p-4 : 0x1.e0b9a5bf99593da8p-4 : inexact-ok += log10p1 towardzero intel96 0x4.f6e989b93bb2p-4 : 0x1.e0b9a5bf99593da8p-4 : inexact-ok += log10p1 upward intel96 0x4.f6e989b93bb2p-4 : 0x1.e0b9a5bf99593daap-4 : inexact-ok += log10p1 downward m68k96 0x4.f6e989b93bb2p-4 : 0x1.e0b9a5bf99593da8p-4 : inexact-ok += log10p1 tonearest m68k96 0x4.f6e989b93bb2p-4 : 0x1.e0b9a5bf99593da8p-4 : inexact-ok += log10p1 towardzero m68k96 0x4.f6e989b93bb2p-4 : 0x1.e0b9a5bf99593da8p-4 : inexact-ok += log10p1 upward m68k96 0x4.f6e989b93bb2p-4 : 0x1.e0b9a5bf99593daap-4 : inexact-ok += log10p1 downward binary128 0x4.f6e989b93bb2p-4 : 0x1.e0b9a5bf99593da8108be7669edp-4 : inexact-ok += log10p1 tonearest binary128 0x4.f6e989b93bb2p-4 : 0x1.e0b9a5bf99593da8108be7669ed1p-4 : inexact-ok += log10p1 towardzero binary128 0x4.f6e989b93bb2p-4 : 0x1.e0b9a5bf99593da8108be7669edp-4 : inexact-ok += log10p1 upward binary128 0x4.f6e989b93bb2p-4 : 0x1.e0b9a5bf99593da8108be7669ed1p-4 : inexact-ok += log10p1 downward ibm128 0x4.f6e989b93bb2p-4 : 0x1.e0b9a5bf99593da8108be7669e8p-4 : inexact-ok += log10p1 tonearest ibm128 0x4.f6e989b93bb2p-4 : 0x1.e0b9a5bf99593da8108be7669fp-4 : inexact-ok += log10p1 towardzero ibm128 0x4.f6e989b93bb2p-4 : 0x1.e0b9a5bf99593da8108be7669e8p-4 : inexact-ok += log10p1 upward ibm128 0x4.f6e989b93bb2p-4 : 0x1.e0b9a5bf99593da8108be7669fp-4 : inexact-ok += log10p1 downward binary64 0x4.f6e989b93bb1cp-4 : 0x1.e0b9a5bf99592p-4 : inexact-ok += log10p1 tonearest binary64 0x4.f6e989b93bb1cp-4 : 0x1.e0b9a5bf99593p-4 : inexact-ok += log10p1 towardzero binary64 0x4.f6e989b93bb1cp-4 : 0x1.e0b9a5bf99592p-4 : inexact-ok += log10p1 upward binary64 0x4.f6e989b93bb1cp-4 : 0x1.e0b9a5bf99593p-4 : inexact-ok += log10p1 downward intel96 0x4.f6e989b93bb1cp-4 : 0x1.e0b9a5bf9959287p-4 : inexact-ok += log10p1 tonearest intel96 0x4.f6e989b93bb1cp-4 : 0x1.e0b9a5bf99592872p-4 : inexact-ok += log10p1 towardzero intel96 0x4.f6e989b93bb1cp-4 : 0x1.e0b9a5bf9959287p-4 : inexact-ok += log10p1 upward intel96 0x4.f6e989b93bb1cp-4 : 0x1.e0b9a5bf99592872p-4 : inexact-ok += log10p1 downward m68k96 0x4.f6e989b93bb1cp-4 : 0x1.e0b9a5bf9959287p-4 : inexact-ok += log10p1 tonearest m68k96 0x4.f6e989b93bb1cp-4 : 0x1.e0b9a5bf99592872p-4 : inexact-ok += log10p1 towardzero m68k96 0x4.f6e989b93bb1cp-4 : 0x1.e0b9a5bf9959287p-4 : inexact-ok += log10p1 upward m68k96 0x4.f6e989b93bb1cp-4 : 0x1.e0b9a5bf99592872p-4 : inexact-ok += log10p1 downward binary128 0x4.f6e989b93bb1cp-4 : 0x1.e0b9a5bf9959287190e9da397558p-4 : inexact-ok += log10p1 tonearest binary128 0x4.f6e989b93bb1cp-4 : 0x1.e0b9a5bf9959287190e9da397559p-4 : inexact-ok += log10p1 towardzero binary128 0x4.f6e989b93bb1cp-4 : 0x1.e0b9a5bf9959287190e9da397558p-4 : inexact-ok += log10p1 upward binary128 0x4.f6e989b93bb1cp-4 : 0x1.e0b9a5bf9959287190e9da397559p-4 : inexact-ok += log10p1 downward ibm128 0x4.f6e989b93bb1cp-4 : 0x1.e0b9a5bf9959287190e9da3975p-4 : inexact-ok += log10p1 tonearest ibm128 0x4.f6e989b93bb1cp-4 : 0x1.e0b9a5bf9959287190e9da39758p-4 : inexact-ok += log10p1 towardzero ibm128 0x4.f6e989b93bb1cp-4 : 0x1.e0b9a5bf9959287190e9da3975p-4 : inexact-ok += log10p1 upward ibm128 0x4.f6e989b93bb1cp-4 : 0x1.e0b9a5bf9959287190e9da39758p-4 : inexact-ok += log10p1 downward intel96 0x4.f6e989b93bb1cd78p-4 : 0x1.e0b9a5bf99592ce8p-4 : inexact-ok += log10p1 tonearest intel96 0x4.f6e989b93bb1cd78p-4 : 0x1.e0b9a5bf99592ce8p-4 : inexact-ok += log10p1 towardzero intel96 0x4.f6e989b93bb1cd78p-4 : 0x1.e0b9a5bf99592ce8p-4 : inexact-ok += log10p1 upward intel96 0x4.f6e989b93bb1cd78p-4 : 0x1.e0b9a5bf99592ceap-4 : inexact-ok += log10p1 downward m68k96 0x4.f6e989b93bb1cd78p-4 : 0x1.e0b9a5bf99592ce8p-4 : inexact-ok += log10p1 tonearest m68k96 0x4.f6e989b93bb1cd78p-4 : 0x1.e0b9a5bf99592ce8p-4 : inexact-ok += log10p1 towardzero m68k96 0x4.f6e989b93bb1cd78p-4 : 0x1.e0b9a5bf99592ce8p-4 : inexact-ok += log10p1 upward m68k96 0x4.f6e989b93bb1cd78p-4 : 0x1.e0b9a5bf99592ceap-4 : inexact-ok += log10p1 downward binary128 0x4.f6e989b93bb1cd78p-4 : 0x1.e0b9a5bf99592ce8690614bf5678p-4 : inexact-ok += log10p1 tonearest binary128 0x4.f6e989b93bb1cd78p-4 : 0x1.e0b9a5bf99592ce8690614bf5678p-4 : inexact-ok += log10p1 towardzero binary128 0x4.f6e989b93bb1cd78p-4 : 0x1.e0b9a5bf99592ce8690614bf5678p-4 : inexact-ok += log10p1 upward binary128 0x4.f6e989b93bb1cd78p-4 : 0x1.e0b9a5bf99592ce8690614bf5679p-4 : inexact-ok += log10p1 downward ibm128 0x4.f6e989b93bb1cd78p-4 : 0x1.e0b9a5bf99592ce8690614bf56p-4 : inexact-ok += log10p1 tonearest ibm128 0x4.f6e989b93bb1cd78p-4 : 0x1.e0b9a5bf99592ce8690614bf568p-4 : inexact-ok += log10p1 towardzero ibm128 0x4.f6e989b93bb1cd78p-4 : 0x1.e0b9a5bf99592ce8690614bf56p-4 : inexact-ok += log10p1 upward ibm128 0x4.f6e989b93bb1cd78p-4 : 0x1.e0b9a5bf99592ce8690614bf568p-4 : inexact-ok +log10p1 0x4.ab40181dbc47cdfp-4 += log10p1 downward binary32 0x4.ab402p-4 : 0x1.c777f2p-4 : inexact-ok += log10p1 tonearest binary32 0x4.ab402p-4 : 0x1.c777f2p-4 : inexact-ok += log10p1 towardzero binary32 0x4.ab402p-4 : 0x1.c777f2p-4 : inexact-ok += log10p1 upward binary32 0x4.ab402p-4 : 0x1.c777f4p-4 : inexact-ok += log10p1 downward binary64 0x4.ab402p-4 : 0x1.c777f21f17dfdp-4 : inexact-ok += log10p1 tonearest binary64 0x4.ab402p-4 : 0x1.c777f21f17dfep-4 : inexact-ok += log10p1 towardzero binary64 0x4.ab402p-4 : 0x1.c777f21f17dfdp-4 : inexact-ok += log10p1 upward binary64 0x4.ab402p-4 : 0x1.c777f21f17dfep-4 : inexact-ok += log10p1 downward intel96 0x4.ab402p-4 : 0x1.c777f21f17dfdb22p-4 : inexact-ok += log10p1 tonearest intel96 0x4.ab402p-4 : 0x1.c777f21f17dfdb24p-4 : inexact-ok += log10p1 towardzero intel96 0x4.ab402p-4 : 0x1.c777f21f17dfdb22p-4 : inexact-ok += log10p1 upward intel96 0x4.ab402p-4 : 0x1.c777f21f17dfdb24p-4 : inexact-ok += log10p1 downward m68k96 0x4.ab402p-4 : 0x1.c777f21f17dfdb22p-4 : inexact-ok += log10p1 tonearest m68k96 0x4.ab402p-4 : 0x1.c777f21f17dfdb24p-4 : inexact-ok += log10p1 towardzero m68k96 0x4.ab402p-4 : 0x1.c777f21f17dfdb22p-4 : inexact-ok += log10p1 upward m68k96 0x4.ab402p-4 : 0x1.c777f21f17dfdb24p-4 : inexact-ok += log10p1 downward binary128 0x4.ab402p-4 : 0x1.c777f21f17dfdb23ad3ec32ea76fp-4 : inexact-ok += log10p1 tonearest binary128 0x4.ab402p-4 : 0x1.c777f21f17dfdb23ad3ec32ea77p-4 : inexact-ok += log10p1 towardzero binary128 0x4.ab402p-4 : 0x1.c777f21f17dfdb23ad3ec32ea76fp-4 : inexact-ok += log10p1 upward binary128 0x4.ab402p-4 : 0x1.c777f21f17dfdb23ad3ec32ea77p-4 : inexact-ok += log10p1 downward ibm128 0x4.ab402p-4 : 0x1.c777f21f17dfdb23ad3ec32ea7p-4 : inexact-ok += log10p1 tonearest ibm128 0x4.ab402p-4 : 0x1.c777f21f17dfdb23ad3ec32ea78p-4 : inexact-ok += log10p1 towardzero ibm128 0x4.ab402p-4 : 0x1.c777f21f17dfdb23ad3ec32ea7p-4 : inexact-ok += log10p1 upward ibm128 0x4.ab402p-4 : 0x1.c777f21f17dfdb23ad3ec32ea78p-4 : inexact-ok += log10p1 downward binary32 0x4.ab4018p-4 : 0x1.c777eep-4 : inexact-ok += log10p1 tonearest binary32 0x4.ab4018p-4 : 0x1.c777fp-4 : inexact-ok += log10p1 towardzero binary32 0x4.ab4018p-4 : 0x1.c777eep-4 : inexact-ok += log10p1 upward binary32 0x4.ab4018p-4 : 0x1.c777fp-4 : inexact-ok += log10p1 downward binary64 0x4.ab4018p-4 : 0x1.c777ef6e93063p-4 : inexact-ok += log10p1 tonearest binary64 0x4.ab4018p-4 : 0x1.c777ef6e93064p-4 : inexact-ok += log10p1 towardzero binary64 0x4.ab4018p-4 : 0x1.c777ef6e93063p-4 : inexact-ok += log10p1 upward binary64 0x4.ab4018p-4 : 0x1.c777ef6e93064p-4 : inexact-ok += log10p1 downward intel96 0x4.ab4018p-4 : 0x1.c777ef6e93063c28p-4 : inexact-ok += log10p1 tonearest intel96 0x4.ab4018p-4 : 0x1.c777ef6e93063c28p-4 : inexact-ok += log10p1 towardzero intel96 0x4.ab4018p-4 : 0x1.c777ef6e93063c28p-4 : inexact-ok += log10p1 upward intel96 0x4.ab4018p-4 : 0x1.c777ef6e93063c2ap-4 : inexact-ok += log10p1 downward m68k96 0x4.ab4018p-4 : 0x1.c777ef6e93063c28p-4 : inexact-ok += log10p1 tonearest m68k96 0x4.ab4018p-4 : 0x1.c777ef6e93063c28p-4 : inexact-ok += log10p1 towardzero m68k96 0x4.ab4018p-4 : 0x1.c777ef6e93063c28p-4 : inexact-ok += log10p1 upward m68k96 0x4.ab4018p-4 : 0x1.c777ef6e93063c2ap-4 : inexact-ok += log10p1 downward binary128 0x4.ab4018p-4 : 0x1.c777ef6e93063c280d64ea084a97p-4 : inexact-ok += log10p1 tonearest binary128 0x4.ab4018p-4 : 0x1.c777ef6e93063c280d64ea084a97p-4 : inexact-ok += log10p1 towardzero binary128 0x4.ab4018p-4 : 0x1.c777ef6e93063c280d64ea084a97p-4 : inexact-ok += log10p1 upward binary128 0x4.ab4018p-4 : 0x1.c777ef6e93063c280d64ea084a98p-4 : inexact-ok += log10p1 downward ibm128 0x4.ab4018p-4 : 0x1.c777ef6e93063c280d64ea084a8p-4 : inexact-ok += log10p1 tonearest ibm128 0x4.ab4018p-4 : 0x1.c777ef6e93063c280d64ea084a8p-4 : inexact-ok += log10p1 towardzero ibm128 0x4.ab4018p-4 : 0x1.c777ef6e93063c280d64ea084a8p-4 : inexact-ok += log10p1 upward ibm128 0x4.ab4018p-4 : 0x1.c777ef6e93063c280d64ea084bp-4 : inexact-ok += log10p1 downward binary64 0x4.ab40181dbc48p-4 : 0x1.c777ef7892343p-4 : inexact-ok += log10p1 tonearest binary64 0x4.ab40181dbc48p-4 : 0x1.c777ef7892344p-4 : inexact-ok += log10p1 towardzero binary64 0x4.ab40181dbc48p-4 : 0x1.c777ef7892343p-4 : inexact-ok += log10p1 upward binary64 0x4.ab40181dbc48p-4 : 0x1.c777ef7892344p-4 : inexact-ok += log10p1 downward intel96 0x4.ab40181dbc48p-4 : 0x1.c777ef7892343996p-4 : inexact-ok += log10p1 tonearest intel96 0x4.ab40181dbc48p-4 : 0x1.c777ef7892343996p-4 : inexact-ok += log10p1 towardzero intel96 0x4.ab40181dbc48p-4 : 0x1.c777ef7892343996p-4 : inexact-ok += log10p1 upward intel96 0x4.ab40181dbc48p-4 : 0x1.c777ef7892343998p-4 : inexact-ok += log10p1 downward m68k96 0x4.ab40181dbc48p-4 : 0x1.c777ef7892343996p-4 : inexact-ok += log10p1 tonearest m68k96 0x4.ab40181dbc48p-4 : 0x1.c777ef7892343996p-4 : inexact-ok += log10p1 towardzero m68k96 0x4.ab40181dbc48p-4 : 0x1.c777ef7892343996p-4 : inexact-ok += log10p1 upward m68k96 0x4.ab40181dbc48p-4 : 0x1.c777ef7892343998p-4 : inexact-ok += log10p1 downward binary128 0x4.ab40181dbc48p-4 : 0x1.c777ef78923439963090fcc2c6c8p-4 : inexact-ok += log10p1 tonearest binary128 0x4.ab40181dbc48p-4 : 0x1.c777ef78923439963090fcc2c6c8p-4 : inexact-ok += log10p1 towardzero binary128 0x4.ab40181dbc48p-4 : 0x1.c777ef78923439963090fcc2c6c8p-4 : inexact-ok += log10p1 upward binary128 0x4.ab40181dbc48p-4 : 0x1.c777ef78923439963090fcc2c6c9p-4 : inexact-ok += log10p1 downward ibm128 0x4.ab40181dbc48p-4 : 0x1.c777ef78923439963090fcc2c68p-4 : inexact-ok += log10p1 tonearest ibm128 0x4.ab40181dbc48p-4 : 0x1.c777ef78923439963090fcc2c7p-4 : inexact-ok += log10p1 towardzero ibm128 0x4.ab40181dbc48p-4 : 0x1.c777ef78923439963090fcc2c68p-4 : inexact-ok += log10p1 upward ibm128 0x4.ab40181dbc48p-4 : 0x1.c777ef78923439963090fcc2c7p-4 : inexact-ok += log10p1 downward binary64 0x4.ab40181dbc47cp-4 : 0x1.c777ef7892342p-4 : inexact-ok += log10p1 tonearest binary64 0x4.ab40181dbc47cp-4 : 0x1.c777ef7892342p-4 : inexact-ok += log10p1 towardzero binary64 0x4.ab40181dbc47cp-4 : 0x1.c777ef7892342p-4 : inexact-ok += log10p1 upward binary64 0x4.ab40181dbc47cp-4 : 0x1.c777ef7892343p-4 : inexact-ok += log10p1 downward intel96 0x4.ab40181dbc47cp-4 : 0x1.c777ef7892342412p-4 : inexact-ok += log10p1 tonearest intel96 0x4.ab40181dbc47cp-4 : 0x1.c777ef7892342412p-4 : inexact-ok += log10p1 towardzero intel96 0x4.ab40181dbc47cp-4 : 0x1.c777ef7892342412p-4 : inexact-ok += log10p1 upward intel96 0x4.ab40181dbc47cp-4 : 0x1.c777ef7892342414p-4 : inexact-ok += log10p1 downward m68k96 0x4.ab40181dbc47cp-4 : 0x1.c777ef7892342412p-4 : inexact-ok += log10p1 tonearest m68k96 0x4.ab40181dbc47cp-4 : 0x1.c777ef7892342412p-4 : inexact-ok += log10p1 towardzero m68k96 0x4.ab40181dbc47cp-4 : 0x1.c777ef7892342412p-4 : inexact-ok += log10p1 upward m68k96 0x4.ab40181dbc47cp-4 : 0x1.c777ef7892342414p-4 : inexact-ok += log10p1 downward binary128 0x4.ab40181dbc47cp-4 : 0x1.c777ef789234241209bff9e0309ep-4 : inexact-ok += log10p1 tonearest binary128 0x4.ab40181dbc47cp-4 : 0x1.c777ef789234241209bff9e0309ep-4 : inexact-ok += log10p1 towardzero binary128 0x4.ab40181dbc47cp-4 : 0x1.c777ef789234241209bff9e0309ep-4 : inexact-ok += log10p1 upward binary128 0x4.ab40181dbc47cp-4 : 0x1.c777ef789234241209bff9e0309fp-4 : inexact-ok += log10p1 downward ibm128 0x4.ab40181dbc47cp-4 : 0x1.c777ef789234241209bff9e0308p-4 : inexact-ok += log10p1 tonearest ibm128 0x4.ab40181dbc47cp-4 : 0x1.c777ef789234241209bff9e0308p-4 : inexact-ok += log10p1 towardzero ibm128 0x4.ab40181dbc47cp-4 : 0x1.c777ef789234241209bff9e0308p-4 : inexact-ok += log10p1 upward ibm128 0x4.ab40181dbc47cp-4 : 0x1.c777ef789234241209bff9e031p-4 : inexact-ok += log10p1 downward intel96 0x4.ab40181dbc47cdfp-4 : 0x1.c777ef78923428cp-4 : inexact-ok += log10p1 tonearest intel96 0x4.ab40181dbc47cdfp-4 : 0x1.c777ef78923428c2p-4 : inexact-ok += log10p1 towardzero intel96 0x4.ab40181dbc47cdfp-4 : 0x1.c777ef78923428cp-4 : inexact-ok += log10p1 upward intel96 0x4.ab40181dbc47cdfp-4 : 0x1.c777ef78923428c2p-4 : inexact-ok += log10p1 downward m68k96 0x4.ab40181dbc47cdfp-4 : 0x1.c777ef78923428cp-4 : inexact-ok += log10p1 tonearest m68k96 0x4.ab40181dbc47cdfp-4 : 0x1.c777ef78923428c2p-4 : inexact-ok += log10p1 towardzero m68k96 0x4.ab40181dbc47cdfp-4 : 0x1.c777ef78923428cp-4 : inexact-ok += log10p1 upward m68k96 0x4.ab40181dbc47cdfp-4 : 0x1.c777ef78923428c2p-4 : inexact-ok += log10p1 downward binary128 0x4.ab40181dbc47cdfp-4 : 0x1.c777ef78923428c19133fe4108d7p-4 : inexact-ok += log10p1 tonearest binary128 0x4.ab40181dbc47cdfp-4 : 0x1.c777ef78923428c19133fe4108d7p-4 : inexact-ok += log10p1 towardzero binary128 0x4.ab40181dbc47cdfp-4 : 0x1.c777ef78923428c19133fe4108d7p-4 : inexact-ok += log10p1 upward binary128 0x4.ab40181dbc47cdfp-4 : 0x1.c777ef78923428c19133fe4108d8p-4 : inexact-ok += log10p1 downward ibm128 0x4.ab40181dbc47cdfp-4 : 0x1.c777ef78923428c19133fe41088p-4 : inexact-ok += log10p1 tonearest ibm128 0x4.ab40181dbc47cdfp-4 : 0x1.c777ef78923428c19133fe4109p-4 : inexact-ok += log10p1 towardzero ibm128 0x4.ab40181dbc47cdfp-4 : 0x1.c777ef78923428c19133fe41088p-4 : inexact-ok += log10p1 upward ibm128 0x4.ab40181dbc47cdfp-4 : 0x1.c777ef78923428c19133fe4109p-4 : inexact-ok +log10p1 0x5.2876604a22752338p-4 += log10p1 downward binary32 0x5.287668p-4 : 0x1.f112c6p-4 : inexact-ok += log10p1 tonearest binary32 0x5.287668p-4 : 0x1.f112c6p-4 : inexact-ok += log10p1 towardzero binary32 0x5.287668p-4 : 0x1.f112c6p-4 : inexact-ok += log10p1 upward binary32 0x5.287668p-4 : 0x1.f112c8p-4 : inexact-ok += log10p1 downward binary64 0x5.287668p-4 : 0x1.f112c617b6601p-4 : inexact-ok += log10p1 tonearest binary64 0x5.287668p-4 : 0x1.f112c617b6601p-4 : inexact-ok += log10p1 towardzero binary64 0x5.287668p-4 : 0x1.f112c617b6601p-4 : inexact-ok += log10p1 upward binary64 0x5.287668p-4 : 0x1.f112c617b6602p-4 : inexact-ok += log10p1 downward intel96 0x5.287668p-4 : 0x1.f112c617b6601222p-4 : inexact-ok += log10p1 tonearest intel96 0x5.287668p-4 : 0x1.f112c617b6601224p-4 : inexact-ok += log10p1 towardzero intel96 0x5.287668p-4 : 0x1.f112c617b6601222p-4 : inexact-ok += log10p1 upward intel96 0x5.287668p-4 : 0x1.f112c617b6601224p-4 : inexact-ok += log10p1 downward m68k96 0x5.287668p-4 : 0x1.f112c617b6601222p-4 : inexact-ok += log10p1 tonearest m68k96 0x5.287668p-4 : 0x1.f112c617b6601224p-4 : inexact-ok += log10p1 towardzero m68k96 0x5.287668p-4 : 0x1.f112c617b6601222p-4 : inexact-ok += log10p1 upward m68k96 0x5.287668p-4 : 0x1.f112c617b6601224p-4 : inexact-ok += log10p1 downward binary128 0x5.287668p-4 : 0x1.f112c617b6601223356514e35a4ap-4 : inexact-ok += log10p1 tonearest binary128 0x5.287668p-4 : 0x1.f112c617b6601223356514e35a4bp-4 : inexact-ok += log10p1 towardzero binary128 0x5.287668p-4 : 0x1.f112c617b6601223356514e35a4ap-4 : inexact-ok += log10p1 upward binary128 0x5.287668p-4 : 0x1.f112c617b6601223356514e35a4bp-4 : inexact-ok += log10p1 downward ibm128 0x5.287668p-4 : 0x1.f112c617b6601223356514e35ap-4 : inexact-ok += log10p1 tonearest ibm128 0x5.287668p-4 : 0x1.f112c617b6601223356514e35a8p-4 : inexact-ok += log10p1 towardzero ibm128 0x5.287668p-4 : 0x1.f112c617b6601223356514e35ap-4 : inexact-ok += log10p1 upward ibm128 0x5.287668p-4 : 0x1.f112c617b6601223356514e35a8p-4 : inexact-ok += log10p1 downward binary32 0x5.28766p-4 : 0x1.f112c2p-4 : inexact-ok += log10p1 tonearest binary32 0x5.28766p-4 : 0x1.f112c4p-4 : inexact-ok += log10p1 towardzero binary32 0x5.28766p-4 : 0x1.f112c2p-4 : inexact-ok += log10p1 upward binary32 0x5.28766p-4 : 0x1.f112c4p-4 : inexact-ok += log10p1 downward binary64 0x5.28766p-4 : 0x1.f112c3771c22fp-4 : inexact-ok += log10p1 tonearest binary64 0x5.28766p-4 : 0x1.f112c3771c23p-4 : inexact-ok += log10p1 towardzero binary64 0x5.28766p-4 : 0x1.f112c3771c22fp-4 : inexact-ok += log10p1 upward binary64 0x5.28766p-4 : 0x1.f112c3771c23p-4 : inexact-ok += log10p1 downward intel96 0x5.28766p-4 : 0x1.f112c3771c22faap-4 : inexact-ok += log10p1 tonearest intel96 0x5.28766p-4 : 0x1.f112c3771c22faap-4 : inexact-ok += log10p1 towardzero intel96 0x5.28766p-4 : 0x1.f112c3771c22faap-4 : inexact-ok += log10p1 upward intel96 0x5.28766p-4 : 0x1.f112c3771c22faa2p-4 : inexact-ok += log10p1 downward m68k96 0x5.28766p-4 : 0x1.f112c3771c22faap-4 : inexact-ok += log10p1 tonearest m68k96 0x5.28766p-4 : 0x1.f112c3771c22faap-4 : inexact-ok += log10p1 towardzero m68k96 0x5.28766p-4 : 0x1.f112c3771c22faap-4 : inexact-ok += log10p1 upward m68k96 0x5.28766p-4 : 0x1.f112c3771c22faa2p-4 : inexact-ok += log10p1 downward binary128 0x5.28766p-4 : 0x1.f112c3771c22faa0af131f5e8a03p-4 : inexact-ok += log10p1 tonearest binary128 0x5.28766p-4 : 0x1.f112c3771c22faa0af131f5e8a03p-4 : inexact-ok += log10p1 towardzero binary128 0x5.28766p-4 : 0x1.f112c3771c22faa0af131f5e8a03p-4 : inexact-ok += log10p1 upward binary128 0x5.28766p-4 : 0x1.f112c3771c22faa0af131f5e8a04p-4 : inexact-ok += log10p1 downward ibm128 0x5.28766p-4 : 0x1.f112c3771c22faa0af131f5e8ap-4 : inexact-ok += log10p1 tonearest ibm128 0x5.28766p-4 : 0x1.f112c3771c22faa0af131f5e8ap-4 : inexact-ok += log10p1 towardzero ibm128 0x5.28766p-4 : 0x1.f112c3771c22faa0af131f5e8ap-4 : inexact-ok += log10p1 upward ibm128 0x5.28766p-4 : 0x1.f112c3771c22faa0af131f5e8a8p-4 : inexact-ok += log10p1 downward binary64 0x5.2876604a22754p-4 : 0x1.f112c38f7506cp-4 : inexact-ok += log10p1 tonearest binary64 0x5.2876604a22754p-4 : 0x1.f112c38f7506cp-4 : inexact-ok += log10p1 towardzero binary64 0x5.2876604a22754p-4 : 0x1.f112c38f7506cp-4 : inexact-ok += log10p1 upward binary64 0x5.2876604a22754p-4 : 0x1.f112c38f7506dp-4 : inexact-ok += log10p1 downward intel96 0x5.2876604a22754p-4 : 0x1.f112c38f7506c582p-4 : inexact-ok += log10p1 tonearest intel96 0x5.2876604a22754p-4 : 0x1.f112c38f7506c582p-4 : inexact-ok += log10p1 towardzero intel96 0x5.2876604a22754p-4 : 0x1.f112c38f7506c582p-4 : inexact-ok += log10p1 upward intel96 0x5.2876604a22754p-4 : 0x1.f112c38f7506c584p-4 : inexact-ok += log10p1 downward m68k96 0x5.2876604a22754p-4 : 0x1.f112c38f7506c582p-4 : inexact-ok += log10p1 tonearest m68k96 0x5.2876604a22754p-4 : 0x1.f112c38f7506c582p-4 : inexact-ok += log10p1 towardzero m68k96 0x5.2876604a22754p-4 : 0x1.f112c38f7506c582p-4 : inexact-ok += log10p1 upward m68k96 0x5.2876604a22754p-4 : 0x1.f112c38f7506c584p-4 : inexact-ok += log10p1 downward binary128 0x5.2876604a22754p-4 : 0x1.f112c38f7506c5820b54a16686e2p-4 : inexact-ok += log10p1 tonearest binary128 0x5.2876604a22754p-4 : 0x1.f112c38f7506c5820b54a16686e3p-4 : inexact-ok += log10p1 towardzero binary128 0x5.2876604a22754p-4 : 0x1.f112c38f7506c5820b54a16686e2p-4 : inexact-ok += log10p1 upward binary128 0x5.2876604a22754p-4 : 0x1.f112c38f7506c5820b54a16686e3p-4 : inexact-ok += log10p1 downward ibm128 0x5.2876604a22754p-4 : 0x1.f112c38f7506c5820b54a166868p-4 : inexact-ok += log10p1 tonearest ibm128 0x5.2876604a22754p-4 : 0x1.f112c38f7506c5820b54a16687p-4 : inexact-ok += log10p1 towardzero ibm128 0x5.2876604a22754p-4 : 0x1.f112c38f7506c5820b54a166868p-4 : inexact-ok += log10p1 upward ibm128 0x5.2876604a22754p-4 : 0x1.f112c38f7506c5820b54a16687p-4 : inexact-ok += log10p1 downward binary64 0x5.2876604a2275p-4 : 0x1.f112c38f7506bp-4 : inexact-ok += log10p1 tonearest binary64 0x5.2876604a2275p-4 : 0x1.f112c38f7506bp-4 : inexact-ok += log10p1 towardzero binary64 0x5.2876604a2275p-4 : 0x1.f112c38f7506bp-4 : inexact-ok += log10p1 upward binary64 0x5.2876604a2275p-4 : 0x1.f112c38f7506cp-4 : inexact-ok += log10p1 downward intel96 0x5.2876604a2275p-4 : 0x1.f112c38f7506b07cp-4 : inexact-ok += log10p1 tonearest intel96 0x5.2876604a2275p-4 : 0x1.f112c38f7506b07ep-4 : inexact-ok += log10p1 towardzero intel96 0x5.2876604a2275p-4 : 0x1.f112c38f7506b07cp-4 : inexact-ok += log10p1 upward intel96 0x5.2876604a2275p-4 : 0x1.f112c38f7506b07ep-4 : inexact-ok += log10p1 downward m68k96 0x5.2876604a2275p-4 : 0x1.f112c38f7506b07cp-4 : inexact-ok += log10p1 tonearest m68k96 0x5.2876604a2275p-4 : 0x1.f112c38f7506b07ep-4 : inexact-ok += log10p1 towardzero m68k96 0x5.2876604a2275p-4 : 0x1.f112c38f7506b07cp-4 : inexact-ok += log10p1 upward m68k96 0x5.2876604a2275p-4 : 0x1.f112c38f7506b07ep-4 : inexact-ok += log10p1 downward binary128 0x5.2876604a2275p-4 : 0x1.f112c38f7506b07d396835b4e9a2p-4 : inexact-ok += log10p1 tonearest binary128 0x5.2876604a2275p-4 : 0x1.f112c38f7506b07d396835b4e9a2p-4 : inexact-ok += log10p1 towardzero binary128 0x5.2876604a2275p-4 : 0x1.f112c38f7506b07d396835b4e9a2p-4 : inexact-ok += log10p1 upward binary128 0x5.2876604a2275p-4 : 0x1.f112c38f7506b07d396835b4e9a3p-4 : inexact-ok += log10p1 downward ibm128 0x5.2876604a2275p-4 : 0x1.f112c38f7506b07d396835b4e98p-4 : inexact-ok += log10p1 tonearest ibm128 0x5.2876604a2275p-4 : 0x1.f112c38f7506b07d396835b4e98p-4 : inexact-ok += log10p1 towardzero ibm128 0x5.2876604a2275p-4 : 0x1.f112c38f7506b07d396835b4e98p-4 : inexact-ok += log10p1 upward ibm128 0x5.2876604a2275p-4 : 0x1.f112c38f7506b07d396835b4eap-4 : inexact-ok += log10p1 downward intel96 0x5.2876604a22752338p-4 : 0x1.f112c38f7506bc0ep-4 : inexact-ok += log10p1 tonearest intel96 0x5.2876604a22752338p-4 : 0x1.f112c38f7506bc0ep-4 : inexact-ok += log10p1 towardzero intel96 0x5.2876604a22752338p-4 : 0x1.f112c38f7506bc0ep-4 : inexact-ok += log10p1 upward intel96 0x5.2876604a22752338p-4 : 0x1.f112c38f7506bc1p-4 : inexact-ok += log10p1 downward m68k96 0x5.2876604a22752338p-4 : 0x1.f112c38f7506bc0ep-4 : inexact-ok += log10p1 tonearest m68k96 0x5.2876604a22752338p-4 : 0x1.f112c38f7506bc0ep-4 : inexact-ok += log10p1 towardzero m68k96 0x5.2876604a22752338p-4 : 0x1.f112c38f7506bc0ep-4 : inexact-ok += log10p1 upward m68k96 0x5.2876604a22752338p-4 : 0x1.f112c38f7506bc1p-4 : inexact-ok += log10p1 downward binary128 0x5.2876604a22752338p-4 : 0x1.f112c38f7506bc0e406d2f784713p-4 : inexact-ok += log10p1 tonearest binary128 0x5.2876604a22752338p-4 : 0x1.f112c38f7506bc0e406d2f784713p-4 : inexact-ok += log10p1 towardzero binary128 0x5.2876604a22752338p-4 : 0x1.f112c38f7506bc0e406d2f784713p-4 : inexact-ok += log10p1 upward binary128 0x5.2876604a22752338p-4 : 0x1.f112c38f7506bc0e406d2f784714p-4 : inexact-ok += log10p1 downward ibm128 0x5.2876604a22752338p-4 : 0x1.f112c38f7506bc0e406d2f7847p-4 : inexact-ok += log10p1 tonearest ibm128 0x5.2876604a22752338p-4 : 0x1.f112c38f7506bc0e406d2f7847p-4 : inexact-ok += log10p1 towardzero ibm128 0x5.2876604a22752338p-4 : 0x1.f112c38f7506bc0e406d2f7847p-4 : inexact-ok += log10p1 upward ibm128 0x5.2876604a22752338p-4 : 0x1.f112c38f7506bc0e406d2f78478p-4 : inexact-ok +log10p1 0x4.a422197a61a14128p-4 += log10p1 downward binary32 0x4.a4222p-4 : 0x1.c512fep-4 : inexact-ok += log10p1 tonearest binary32 0x4.a4222p-4 : 0x1.c512fep-4 : inexact-ok += log10p1 towardzero binary32 0x4.a4222p-4 : 0x1.c512fep-4 : inexact-ok += log10p1 upward binary32 0x4.a4222p-4 : 0x1.c513p-4 : inexact-ok += log10p1 downward binary64 0x4.a4222p-4 : 0x1.c512fe608ba88p-4 : inexact-ok += log10p1 tonearest binary64 0x4.a4222p-4 : 0x1.c512fe608ba88p-4 : inexact-ok += log10p1 towardzero binary64 0x4.a4222p-4 : 0x1.c512fe608ba88p-4 : inexact-ok += log10p1 upward binary64 0x4.a4222p-4 : 0x1.c512fe608ba89p-4 : inexact-ok += log10p1 downward intel96 0x4.a4222p-4 : 0x1.c512fe608ba8814ap-4 : inexact-ok += log10p1 tonearest intel96 0x4.a4222p-4 : 0x1.c512fe608ba8814cp-4 : inexact-ok += log10p1 towardzero intel96 0x4.a4222p-4 : 0x1.c512fe608ba8814ap-4 : inexact-ok += log10p1 upward intel96 0x4.a4222p-4 : 0x1.c512fe608ba8814cp-4 : inexact-ok += log10p1 downward m68k96 0x4.a4222p-4 : 0x1.c512fe608ba8814ap-4 : inexact-ok += log10p1 tonearest m68k96 0x4.a4222p-4 : 0x1.c512fe608ba8814cp-4 : inexact-ok += log10p1 towardzero m68k96 0x4.a4222p-4 : 0x1.c512fe608ba8814ap-4 : inexact-ok += log10p1 upward m68k96 0x4.a4222p-4 : 0x1.c512fe608ba8814cp-4 : inexact-ok += log10p1 downward binary128 0x4.a4222p-4 : 0x1.c512fe608ba8814be2a2427f9523p-4 : inexact-ok += log10p1 tonearest binary128 0x4.a4222p-4 : 0x1.c512fe608ba8814be2a2427f9523p-4 : inexact-ok += log10p1 towardzero binary128 0x4.a4222p-4 : 0x1.c512fe608ba8814be2a2427f9523p-4 : inexact-ok += log10p1 upward binary128 0x4.a4222p-4 : 0x1.c512fe608ba8814be2a2427f9524p-4 : inexact-ok += log10p1 downward ibm128 0x4.a4222p-4 : 0x1.c512fe608ba8814be2a2427f95p-4 : inexact-ok += log10p1 tonearest ibm128 0x4.a4222p-4 : 0x1.c512fe608ba8814be2a2427f95p-4 : inexact-ok += log10p1 towardzero ibm128 0x4.a4222p-4 : 0x1.c512fe608ba8814be2a2427f95p-4 : inexact-ok += log10p1 upward ibm128 0x4.a4222p-4 : 0x1.c512fe608ba8814be2a2427f958p-4 : inexact-ok += log10p1 downward binary32 0x4.a42218p-4 : 0x1.c512fap-4 : inexact-ok += log10p1 tonearest binary32 0x4.a42218p-4 : 0x1.c512fcp-4 : inexact-ok += log10p1 towardzero binary32 0x4.a42218p-4 : 0x1.c512fap-4 : inexact-ok += log10p1 upward binary32 0x4.a42218p-4 : 0x1.c512fcp-4 : inexact-ok += log10p1 downward binary64 0x4.a42218p-4 : 0x1.c512fbaf19671p-4 : inexact-ok += log10p1 tonearest binary64 0x4.a42218p-4 : 0x1.c512fbaf19672p-4 : inexact-ok += log10p1 towardzero binary64 0x4.a42218p-4 : 0x1.c512fbaf19671p-4 : inexact-ok += log10p1 upward binary64 0x4.a42218p-4 : 0x1.c512fbaf19672p-4 : inexact-ok += log10p1 downward intel96 0x4.a42218p-4 : 0x1.c512fbaf19671d12p-4 : inexact-ok += log10p1 tonearest intel96 0x4.a42218p-4 : 0x1.c512fbaf19671d14p-4 : inexact-ok += log10p1 towardzero intel96 0x4.a42218p-4 : 0x1.c512fbaf19671d12p-4 : inexact-ok += log10p1 upward intel96 0x4.a42218p-4 : 0x1.c512fbaf19671d14p-4 : inexact-ok += log10p1 downward m68k96 0x4.a42218p-4 : 0x1.c512fbaf19671d12p-4 : inexact-ok += log10p1 tonearest m68k96 0x4.a42218p-4 : 0x1.c512fbaf19671d14p-4 : inexact-ok += log10p1 towardzero m68k96 0x4.a42218p-4 : 0x1.c512fbaf19671d12p-4 : inexact-ok += log10p1 upward m68k96 0x4.a42218p-4 : 0x1.c512fbaf19671d14p-4 : inexact-ok += log10p1 downward binary128 0x4.a42218p-4 : 0x1.c512fbaf19671d138230de4eefbcp-4 : inexact-ok += log10p1 tonearest binary128 0x4.a42218p-4 : 0x1.c512fbaf19671d138230de4eefbcp-4 : inexact-ok += log10p1 towardzero binary128 0x4.a42218p-4 : 0x1.c512fbaf19671d138230de4eefbcp-4 : inexact-ok += log10p1 upward binary128 0x4.a42218p-4 : 0x1.c512fbaf19671d138230de4eefbdp-4 : inexact-ok += log10p1 downward ibm128 0x4.a42218p-4 : 0x1.c512fbaf19671d138230de4eef8p-4 : inexact-ok += log10p1 tonearest ibm128 0x4.a42218p-4 : 0x1.c512fbaf19671d138230de4eef8p-4 : inexact-ok += log10p1 towardzero ibm128 0x4.a42218p-4 : 0x1.c512fbaf19671d138230de4eef8p-4 : inexact-ok += log10p1 upward ibm128 0x4.a42218p-4 : 0x1.c512fbaf19671d138230de4efp-4 : inexact-ok += log10p1 downward binary64 0x4.a422197a61a18p-4 : 0x1.c512fc2e7a9bap-4 : inexact-ok += log10p1 tonearest binary64 0x4.a422197a61a18p-4 : 0x1.c512fc2e7a9bbp-4 : inexact-ok += log10p1 towardzero binary64 0x4.a422197a61a18p-4 : 0x1.c512fc2e7a9bap-4 : inexact-ok += log10p1 upward binary64 0x4.a422197a61a18p-4 : 0x1.c512fc2e7a9bbp-4 : inexact-ok += log10p1 downward intel96 0x4.a422197a61a18p-4 : 0x1.c512fc2e7a9baa7ep-4 : inexact-ok += log10p1 tonearest intel96 0x4.a422197a61a18p-4 : 0x1.c512fc2e7a9baa7ep-4 : inexact-ok += log10p1 towardzero intel96 0x4.a422197a61a18p-4 : 0x1.c512fc2e7a9baa7ep-4 : inexact-ok += log10p1 upward intel96 0x4.a422197a61a18p-4 : 0x1.c512fc2e7a9baa8p-4 : inexact-ok += log10p1 downward m68k96 0x4.a422197a61a18p-4 : 0x1.c512fc2e7a9baa7ep-4 : inexact-ok += log10p1 tonearest m68k96 0x4.a422197a61a18p-4 : 0x1.c512fc2e7a9baa7ep-4 : inexact-ok += log10p1 towardzero m68k96 0x4.a422197a61a18p-4 : 0x1.c512fc2e7a9baa7ep-4 : inexact-ok += log10p1 upward m68k96 0x4.a422197a61a18p-4 : 0x1.c512fc2e7a9baa8p-4 : inexact-ok += log10p1 downward binary128 0x4.a422197a61a18p-4 : 0x1.c512fc2e7a9baa7e0e1799a85f59p-4 : inexact-ok += log10p1 tonearest binary128 0x4.a422197a61a18p-4 : 0x1.c512fc2e7a9baa7e0e1799a85f59p-4 : inexact-ok += log10p1 towardzero binary128 0x4.a422197a61a18p-4 : 0x1.c512fc2e7a9baa7e0e1799a85f59p-4 : inexact-ok += log10p1 upward binary128 0x4.a422197a61a18p-4 : 0x1.c512fc2e7a9baa7e0e1799a85f5ap-4 : inexact-ok += log10p1 downward ibm128 0x4.a422197a61a18p-4 : 0x1.c512fc2e7a9baa7e0e1799a85fp-4 : inexact-ok += log10p1 tonearest ibm128 0x4.a422197a61a18p-4 : 0x1.c512fc2e7a9baa7e0e1799a85f8p-4 : inexact-ok += log10p1 towardzero ibm128 0x4.a422197a61a18p-4 : 0x1.c512fc2e7a9baa7e0e1799a85fp-4 : inexact-ok += log10p1 upward ibm128 0x4.a422197a61a18p-4 : 0x1.c512fc2e7a9baa7e0e1799a85f8p-4 : inexact-ok += log10p1 downward binary64 0x4.a422197a61a14p-4 : 0x1.c512fc2e7a9b9p-4 : inexact-ok += log10p1 tonearest binary64 0x4.a422197a61a14p-4 : 0x1.c512fc2e7a9b9p-4 : inexact-ok += log10p1 towardzero binary64 0x4.a422197a61a14p-4 : 0x1.c512fc2e7a9b9p-4 : inexact-ok += log10p1 upward binary64 0x4.a422197a61a14p-4 : 0x1.c512fc2e7a9bap-4 : inexact-ok += log10p1 downward intel96 0x4.a422197a61a14p-4 : 0x1.c512fc2e7a9b94f2p-4 : inexact-ok += log10p1 tonearest intel96 0x4.a422197a61a14p-4 : 0x1.c512fc2e7a9b94f2p-4 : inexact-ok += log10p1 towardzero intel96 0x4.a422197a61a14p-4 : 0x1.c512fc2e7a9b94f2p-4 : inexact-ok += log10p1 upward intel96 0x4.a422197a61a14p-4 : 0x1.c512fc2e7a9b94f4p-4 : inexact-ok += log10p1 downward m68k96 0x4.a422197a61a14p-4 : 0x1.c512fc2e7a9b94f2p-4 : inexact-ok += log10p1 tonearest m68k96 0x4.a422197a61a14p-4 : 0x1.c512fc2e7a9b94f2p-4 : inexact-ok += log10p1 towardzero m68k96 0x4.a422197a61a14p-4 : 0x1.c512fc2e7a9b94f2p-4 : inexact-ok += log10p1 upward m68k96 0x4.a422197a61a14p-4 : 0x1.c512fc2e7a9b94f4p-4 : inexact-ok += log10p1 downward binary128 0x4.a422197a61a14p-4 : 0x1.c512fc2e7a9b94f27c09d6000a3ap-4 : inexact-ok += log10p1 tonearest binary128 0x4.a422197a61a14p-4 : 0x1.c512fc2e7a9b94f27c09d6000a3ap-4 : inexact-ok += log10p1 towardzero binary128 0x4.a422197a61a14p-4 : 0x1.c512fc2e7a9b94f27c09d6000a3ap-4 : inexact-ok += log10p1 upward binary128 0x4.a422197a61a14p-4 : 0x1.c512fc2e7a9b94f27c09d6000a3bp-4 : inexact-ok += log10p1 downward ibm128 0x4.a422197a61a14p-4 : 0x1.c512fc2e7a9b94f27c09d6000ap-4 : inexact-ok += log10p1 tonearest ibm128 0x4.a422197a61a14p-4 : 0x1.c512fc2e7a9b94f27c09d6000ap-4 : inexact-ok += log10p1 towardzero ibm128 0x4.a422197a61a14p-4 : 0x1.c512fc2e7a9b94f27c09d6000ap-4 : inexact-ok += log10p1 upward ibm128 0x4.a422197a61a14p-4 : 0x1.c512fc2e7a9b94f27c09d6000a8p-4 : inexact-ok += log10p1 downward intel96 0x4.a422197a61a14128p-4 : 0x1.c512fc2e7a9b9556p-4 : inexact-ok += log10p1 tonearest intel96 0x4.a422197a61a14128p-4 : 0x1.c512fc2e7a9b9556p-4 : inexact-ok += log10p1 towardzero intel96 0x4.a422197a61a14128p-4 : 0x1.c512fc2e7a9b9556p-4 : inexact-ok += log10p1 upward intel96 0x4.a422197a61a14128p-4 : 0x1.c512fc2e7a9b9558p-4 : inexact-ok += log10p1 downward m68k96 0x4.a422197a61a14128p-4 : 0x1.c512fc2e7a9b9556p-4 : inexact-ok += log10p1 tonearest m68k96 0x4.a422197a61a14128p-4 : 0x1.c512fc2e7a9b9556p-4 : inexact-ok += log10p1 towardzero m68k96 0x4.a422197a61a14128p-4 : 0x1.c512fc2e7a9b9556p-4 : inexact-ok += log10p1 upward m68k96 0x4.a422197a61a14128p-4 : 0x1.c512fc2e7a9b9558p-4 : inexact-ok += log10p1 downward binary128 0x4.a422197a61a14128p-4 : 0x1.c512fc2e7a9b9556218d55a8f4c4p-4 : inexact-ok += log10p1 tonearest binary128 0x4.a422197a61a14128p-4 : 0x1.c512fc2e7a9b9556218d55a8f4c5p-4 : inexact-ok += log10p1 towardzero binary128 0x4.a422197a61a14128p-4 : 0x1.c512fc2e7a9b9556218d55a8f4c4p-4 : inexact-ok += log10p1 upward binary128 0x4.a422197a61a14128p-4 : 0x1.c512fc2e7a9b9556218d55a8f4c5p-4 : inexact-ok += log10p1 downward ibm128 0x4.a422197a61a14128p-4 : 0x1.c512fc2e7a9b9556218d55a8f48p-4 : inexact-ok += log10p1 tonearest ibm128 0x4.a422197a61a14128p-4 : 0x1.c512fc2e7a9b9556218d55a8f5p-4 : inexact-ok += log10p1 towardzero ibm128 0x4.a422197a61a14128p-4 : 0x1.c512fc2e7a9b9556218d55a8f48p-4 : inexact-ok += log10p1 upward ibm128 0x4.a422197a61a14128p-4 : 0x1.c512fc2e7a9b9556218d55a8f5p-4 : inexact-ok +log10p1 0x5.48bb2c181e72e838p-4 += log10p1 downward binary32 0x5.48bb3p-4 : 0x1.fba3b8p-4 : inexact-ok += log10p1 tonearest binary32 0x5.48bb3p-4 : 0x1.fba3bap-4 : inexact-ok += log10p1 towardzero binary32 0x5.48bb3p-4 : 0x1.fba3b8p-4 : inexact-ok += log10p1 upward binary32 0x5.48bb3p-4 : 0x1.fba3bap-4 : inexact-ok += log10p1 downward binary64 0x5.48bb3p-4 : 0x1.fba3b9318d56bp-4 : inexact-ok += log10p1 tonearest binary64 0x5.48bb3p-4 : 0x1.fba3b9318d56cp-4 : inexact-ok += log10p1 towardzero binary64 0x5.48bb3p-4 : 0x1.fba3b9318d56bp-4 : inexact-ok += log10p1 upward binary64 0x5.48bb3p-4 : 0x1.fba3b9318d56cp-4 : inexact-ok += log10p1 downward intel96 0x5.48bb3p-4 : 0x1.fba3b9318d56baaap-4 : inexact-ok += log10p1 tonearest intel96 0x5.48bb3p-4 : 0x1.fba3b9318d56baaap-4 : inexact-ok += log10p1 towardzero intel96 0x5.48bb3p-4 : 0x1.fba3b9318d56baaap-4 : inexact-ok += log10p1 upward intel96 0x5.48bb3p-4 : 0x1.fba3b9318d56baacp-4 : inexact-ok += log10p1 downward m68k96 0x5.48bb3p-4 : 0x1.fba3b9318d56baaap-4 : inexact-ok += log10p1 tonearest m68k96 0x5.48bb3p-4 : 0x1.fba3b9318d56baaap-4 : inexact-ok += log10p1 towardzero m68k96 0x5.48bb3p-4 : 0x1.fba3b9318d56baaap-4 : inexact-ok += log10p1 upward m68k96 0x5.48bb3p-4 : 0x1.fba3b9318d56baacp-4 : inexact-ok += log10p1 downward binary128 0x5.48bb3p-4 : 0x1.fba3b9318d56baaa7e48036ef2aep-4 : inexact-ok += log10p1 tonearest binary128 0x5.48bb3p-4 : 0x1.fba3b9318d56baaa7e48036ef2afp-4 : inexact-ok += log10p1 towardzero binary128 0x5.48bb3p-4 : 0x1.fba3b9318d56baaa7e48036ef2aep-4 : inexact-ok += log10p1 upward binary128 0x5.48bb3p-4 : 0x1.fba3b9318d56baaa7e48036ef2afp-4 : inexact-ok += log10p1 downward ibm128 0x5.48bb3p-4 : 0x1.fba3b9318d56baaa7e48036ef28p-4 : inexact-ok += log10p1 tonearest ibm128 0x5.48bb3p-4 : 0x1.fba3b9318d56baaa7e48036ef28p-4 : inexact-ok += log10p1 towardzero ibm128 0x5.48bb3p-4 : 0x1.fba3b9318d56baaa7e48036ef28p-4 : inexact-ok += log10p1 upward ibm128 0x5.48bb3p-4 : 0x1.fba3b9318d56baaa7e48036ef3p-4 : inexact-ok += log10p1 downward binary32 0x5.48bb28p-4 : 0x1.fba3b6p-4 : inexact-ok += log10p1 tonearest binary32 0x5.48bb28p-4 : 0x1.fba3b6p-4 : inexact-ok += log10p1 towardzero binary32 0x5.48bb28p-4 : 0x1.fba3b6p-4 : inexact-ok += log10p1 upward binary32 0x5.48bb28p-4 : 0x1.fba3b8p-4 : inexact-ok += log10p1 downward binary64 0x5.48bb28p-4 : 0x1.fba3b694eed3ep-4 : inexact-ok += log10p1 tonearest binary64 0x5.48bb28p-4 : 0x1.fba3b694eed3fp-4 : inexact-ok += log10p1 towardzero binary64 0x5.48bb28p-4 : 0x1.fba3b694eed3ep-4 : inexact-ok += log10p1 upward binary64 0x5.48bb28p-4 : 0x1.fba3b694eed3fp-4 : inexact-ok += log10p1 downward intel96 0x5.48bb28p-4 : 0x1.fba3b694eed3edbep-4 : inexact-ok += log10p1 tonearest intel96 0x5.48bb28p-4 : 0x1.fba3b694eed3edbep-4 : inexact-ok += log10p1 towardzero intel96 0x5.48bb28p-4 : 0x1.fba3b694eed3edbep-4 : inexact-ok += log10p1 upward intel96 0x5.48bb28p-4 : 0x1.fba3b694eed3edcp-4 : inexact-ok += log10p1 downward m68k96 0x5.48bb28p-4 : 0x1.fba3b694eed3edbep-4 : inexact-ok += log10p1 tonearest m68k96 0x5.48bb28p-4 : 0x1.fba3b694eed3edbep-4 : inexact-ok += log10p1 towardzero m68k96 0x5.48bb28p-4 : 0x1.fba3b694eed3edbep-4 : inexact-ok += log10p1 upward m68k96 0x5.48bb28p-4 : 0x1.fba3b694eed3edcp-4 : inexact-ok += log10p1 downward binary128 0x5.48bb28p-4 : 0x1.fba3b694eed3edbe6b6b9bc9cb1fp-4 : inexact-ok += log10p1 tonearest binary128 0x5.48bb28p-4 : 0x1.fba3b694eed3edbe6b6b9bc9cb2p-4 : inexact-ok += log10p1 towardzero binary128 0x5.48bb28p-4 : 0x1.fba3b694eed3edbe6b6b9bc9cb1fp-4 : inexact-ok += log10p1 upward binary128 0x5.48bb28p-4 : 0x1.fba3b694eed3edbe6b6b9bc9cb2p-4 : inexact-ok += log10p1 downward ibm128 0x5.48bb28p-4 : 0x1.fba3b694eed3edbe6b6b9bc9cbp-4 : inexact-ok += log10p1 tonearest ibm128 0x5.48bb28p-4 : 0x1.fba3b694eed3edbe6b6b9bc9cbp-4 : inexact-ok += log10p1 towardzero ibm128 0x5.48bb28p-4 : 0x1.fba3b694eed3edbe6b6b9bc9cbp-4 : inexact-ok += log10p1 upward ibm128 0x5.48bb28p-4 : 0x1.fba3b694eed3edbe6b6b9bc9cb8p-4 : inexact-ok += log10p1 downward binary64 0x5.48bb2c181e73p-4 : 0x1.fba3b7eb1de1dp-4 : inexact-ok += log10p1 tonearest binary64 0x5.48bb2c181e73p-4 : 0x1.fba3b7eb1de1ep-4 : inexact-ok += log10p1 towardzero binary64 0x5.48bb2c181e73p-4 : 0x1.fba3b7eb1de1dp-4 : inexact-ok += log10p1 upward binary64 0x5.48bb2c181e73p-4 : 0x1.fba3b7eb1de1ep-4 : inexact-ok += log10p1 downward intel96 0x5.48bb2c181e73p-4 : 0x1.fba3b7eb1de1d9dp-4 : inexact-ok += log10p1 tonearest intel96 0x5.48bb2c181e73p-4 : 0x1.fba3b7eb1de1d9d2p-4 : inexact-ok += log10p1 towardzero intel96 0x5.48bb2c181e73p-4 : 0x1.fba3b7eb1de1d9dp-4 : inexact-ok += log10p1 upward intel96 0x5.48bb2c181e73p-4 : 0x1.fba3b7eb1de1d9d2p-4 : inexact-ok += log10p1 downward m68k96 0x5.48bb2c181e73p-4 : 0x1.fba3b7eb1de1d9dp-4 : inexact-ok += log10p1 tonearest m68k96 0x5.48bb2c181e73p-4 : 0x1.fba3b7eb1de1d9d2p-4 : inexact-ok += log10p1 towardzero m68k96 0x5.48bb2c181e73p-4 : 0x1.fba3b7eb1de1d9dp-4 : inexact-ok += log10p1 upward m68k96 0x5.48bb2c181e73p-4 : 0x1.fba3b7eb1de1d9d2p-4 : inexact-ok += log10p1 downward binary128 0x5.48bb2c181e73p-4 : 0x1.fba3b7eb1de1d9d1d866d315feffp-4 : inexact-ok += log10p1 tonearest binary128 0x5.48bb2c181e73p-4 : 0x1.fba3b7eb1de1d9d1d866d315feffp-4 : inexact-ok += log10p1 towardzero binary128 0x5.48bb2c181e73p-4 : 0x1.fba3b7eb1de1d9d1d866d315feffp-4 : inexact-ok += log10p1 upward binary128 0x5.48bb2c181e73p-4 : 0x1.fba3b7eb1de1d9d1d866d315ffp-4 : inexact-ok += log10p1 downward ibm128 0x5.48bb2c181e73p-4 : 0x1.fba3b7eb1de1d9d1d866d315fe8p-4 : inexact-ok += log10p1 tonearest ibm128 0x5.48bb2c181e73p-4 : 0x1.fba3b7eb1de1d9d1d866d315ffp-4 : inexact-ok += log10p1 towardzero ibm128 0x5.48bb2c181e73p-4 : 0x1.fba3b7eb1de1d9d1d866d315fe8p-4 : inexact-ok += log10p1 upward ibm128 0x5.48bb2c181e73p-4 : 0x1.fba3b7eb1de1d9d1d866d315ffp-4 : inexact-ok += log10p1 downward binary64 0x5.48bb2c181e72cp-4 : 0x1.fba3b7eb1de1cp-4 : inexact-ok += log10p1 tonearest binary64 0x5.48bb2c181e72cp-4 : 0x1.fba3b7eb1de1cp-4 : inexact-ok += log10p1 towardzero binary64 0x5.48bb2c181e72cp-4 : 0x1.fba3b7eb1de1cp-4 : inexact-ok += log10p1 upward binary64 0x5.48bb2c181e72cp-4 : 0x1.fba3b7eb1de1dp-4 : inexact-ok += log10p1 downward intel96 0x5.48bb2c181e72cp-4 : 0x1.fba3b7eb1de1c4ecp-4 : inexact-ok += log10p1 tonearest intel96 0x5.48bb2c181e72cp-4 : 0x1.fba3b7eb1de1c4ecp-4 : inexact-ok += log10p1 towardzero intel96 0x5.48bb2c181e72cp-4 : 0x1.fba3b7eb1de1c4ecp-4 : inexact-ok += log10p1 upward intel96 0x5.48bb2c181e72cp-4 : 0x1.fba3b7eb1de1c4eep-4 : inexact-ok += log10p1 downward m68k96 0x5.48bb2c181e72cp-4 : 0x1.fba3b7eb1de1c4ecp-4 : inexact-ok += log10p1 tonearest m68k96 0x5.48bb2c181e72cp-4 : 0x1.fba3b7eb1de1c4ecp-4 : inexact-ok += log10p1 towardzero m68k96 0x5.48bb2c181e72cp-4 : 0x1.fba3b7eb1de1c4ecp-4 : inexact-ok += log10p1 upward m68k96 0x5.48bb2c181e72cp-4 : 0x1.fba3b7eb1de1c4eep-4 : inexact-ok += log10p1 downward binary128 0x5.48bb2c181e72cp-4 : 0x1.fba3b7eb1de1c4ece4508362ca0ep-4 : inexact-ok += log10p1 tonearest binary128 0x5.48bb2c181e72cp-4 : 0x1.fba3b7eb1de1c4ece4508362ca0fp-4 : inexact-ok += log10p1 towardzero binary128 0x5.48bb2c181e72cp-4 : 0x1.fba3b7eb1de1c4ece4508362ca0ep-4 : inexact-ok += log10p1 upward binary128 0x5.48bb2c181e72cp-4 : 0x1.fba3b7eb1de1c4ece4508362ca0fp-4 : inexact-ok += log10p1 downward ibm128 0x5.48bb2c181e72cp-4 : 0x1.fba3b7eb1de1c4ece4508362cap-4 : inexact-ok += log10p1 tonearest ibm128 0x5.48bb2c181e72cp-4 : 0x1.fba3b7eb1de1c4ece4508362cap-4 : inexact-ok += log10p1 towardzero ibm128 0x5.48bb2c181e72cp-4 : 0x1.fba3b7eb1de1c4ece4508362cap-4 : inexact-ok += log10p1 upward ibm128 0x5.48bb2c181e72cp-4 : 0x1.fba3b7eb1de1c4ece4508362ca8p-4 : inexact-ok += log10p1 downward intel96 0x5.48bb2c181e72e838p-4 : 0x1.fba3b7eb1de1d20ep-4 : inexact-ok += log10p1 tonearest intel96 0x5.48bb2c181e72e838p-4 : 0x1.fba3b7eb1de1d20ep-4 : inexact-ok += log10p1 towardzero intel96 0x5.48bb2c181e72e838p-4 : 0x1.fba3b7eb1de1d20ep-4 : inexact-ok += log10p1 upward intel96 0x5.48bb2c181e72e838p-4 : 0x1.fba3b7eb1de1d21p-4 : inexact-ok += log10p1 downward m68k96 0x5.48bb2c181e72e838p-4 : 0x1.fba3b7eb1de1d20ep-4 : inexact-ok += log10p1 tonearest m68k96 0x5.48bb2c181e72e838p-4 : 0x1.fba3b7eb1de1d20ep-4 : inexact-ok += log10p1 towardzero m68k96 0x5.48bb2c181e72e838p-4 : 0x1.fba3b7eb1de1d20ep-4 : inexact-ok += log10p1 upward m68k96 0x5.48bb2c181e72e838p-4 : 0x1.fba3b7eb1de1d21p-4 : inexact-ok += log10p1 downward binary128 0x5.48bb2c181e72e838p-4 : 0x1.fba3b7eb1de1d20e453408b887fap-4 : inexact-ok += log10p1 tonearest binary128 0x5.48bb2c181e72e838p-4 : 0x1.fba3b7eb1de1d20e453408b887fbp-4 : inexact-ok += log10p1 towardzero binary128 0x5.48bb2c181e72e838p-4 : 0x1.fba3b7eb1de1d20e453408b887fap-4 : inexact-ok += log10p1 upward binary128 0x5.48bb2c181e72e838p-4 : 0x1.fba3b7eb1de1d20e453408b887fbp-4 : inexact-ok += log10p1 downward ibm128 0x5.48bb2c181e72e838p-4 : 0x1.fba3b7eb1de1d20e453408b8878p-4 : inexact-ok += log10p1 tonearest ibm128 0x5.48bb2c181e72e838p-4 : 0x1.fba3b7eb1de1d20e453408b888p-4 : inexact-ok += log10p1 towardzero ibm128 0x5.48bb2c181e72e838p-4 : 0x1.fba3b7eb1de1d20e453408b8878p-4 : inexact-ok += log10p1 upward ibm128 0x5.48bb2c181e72e838p-4 : 0x1.fba3b7eb1de1d20e453408b888p-4 : inexact-ok +log10p1 -0x6.eec527c6a8d6e31ca9f0dcdd747cp-4 += log10p1 downward binary32 -0x6.eec52p-4 : -0x3.f23ea8p-4 : inexact-ok += log10p1 tonearest binary32 -0x6.eec52p-4 : -0x3.f23ea4p-4 : inexact-ok += log10p1 towardzero binary32 -0x6.eec52p-4 : -0x3.f23ea4p-4 : inexact-ok += log10p1 upward binary32 -0x6.eec52p-4 : -0x3.f23ea4p-4 : inexact-ok += log10p1 downward binary64 -0x6.eec52p-4 : -0x3.f23ea5d2646bap-4 : inexact-ok += log10p1 tonearest binary64 -0x6.eec52p-4 : -0x3.f23ea5d2646bap-4 : inexact-ok += log10p1 towardzero binary64 -0x6.eec52p-4 : -0x3.f23ea5d2646b8p-4 : inexact-ok += log10p1 upward binary64 -0x6.eec52p-4 : -0x3.f23ea5d2646b8p-4 : inexact-ok += log10p1 downward intel96 -0x6.eec52p-4 : -0x3.f23ea5d2646b92dp-4 : inexact-ok += log10p1 tonearest intel96 -0x6.eec52p-4 : -0x3.f23ea5d2646b92ccp-4 : inexact-ok += log10p1 towardzero intel96 -0x6.eec52p-4 : -0x3.f23ea5d2646b92ccp-4 : inexact-ok += log10p1 upward intel96 -0x6.eec52p-4 : -0x3.f23ea5d2646b92ccp-4 : inexact-ok += log10p1 downward m68k96 -0x6.eec52p-4 : -0x3.f23ea5d2646b92dp-4 : inexact-ok += log10p1 tonearest m68k96 -0x6.eec52p-4 : -0x3.f23ea5d2646b92ccp-4 : inexact-ok += log10p1 towardzero m68k96 -0x6.eec52p-4 : -0x3.f23ea5d2646b92ccp-4 : inexact-ok += log10p1 upward m68k96 -0x6.eec52p-4 : -0x3.f23ea5d2646b92ccp-4 : inexact-ok += log10p1 downward binary128 -0x6.eec52p-4 : -0x3.f23ea5d2646b92cc62452aedff0ap-4 : inexact-ok += log10p1 tonearest binary128 -0x6.eec52p-4 : -0x3.f23ea5d2646b92cc62452aedff0ap-4 : inexact-ok += log10p1 towardzero binary128 -0x6.eec52p-4 : -0x3.f23ea5d2646b92cc62452aedff08p-4 : inexact-ok += log10p1 upward binary128 -0x6.eec52p-4 : -0x3.f23ea5d2646b92cc62452aedff08p-4 : inexact-ok += log10p1 downward ibm128 -0x6.eec52p-4 : -0x3.f23ea5d2646b92cc62452aeep-4 : inexact-ok += log10p1 tonearest ibm128 -0x6.eec52p-4 : -0x3.f23ea5d2646b92cc62452aedffp-4 : inexact-ok += log10p1 towardzero ibm128 -0x6.eec52p-4 : -0x3.f23ea5d2646b92cc62452aedffp-4 : inexact-ok += log10p1 upward ibm128 -0x6.eec52p-4 : -0x3.f23ea5d2646b92cc62452aedffp-4 : inexact-ok += log10p1 downward binary32 -0x6.eec528p-4 : -0x3.f23eacp-4 : inexact-ok += log10p1 tonearest binary32 -0x6.eec528p-4 : -0x3.f23eacp-4 : inexact-ok += log10p1 towardzero binary32 -0x6.eec528p-4 : -0x3.f23ea8p-4 : inexact-ok += log10p1 upward binary32 -0x6.eec528p-4 : -0x3.f23ea8p-4 : inexact-ok += log10p1 downward binary64 -0x6.eec528p-4 : -0x3.f23eabf3df8bep-4 : inexact-ok += log10p1 tonearest binary64 -0x6.eec528p-4 : -0x3.f23eabf3df8bep-4 : inexact-ok += log10p1 towardzero binary64 -0x6.eec528p-4 : -0x3.f23eabf3df8bcp-4 : inexact-ok += log10p1 upward binary64 -0x6.eec528p-4 : -0x3.f23eabf3df8bcp-4 : inexact-ok += log10p1 downward intel96 -0x6.eec528p-4 : -0x3.f23eabf3df8bd9bp-4 : inexact-ok += log10p1 tonearest intel96 -0x6.eec528p-4 : -0x3.f23eabf3df8bd9bp-4 : inexact-ok += log10p1 towardzero intel96 -0x6.eec528p-4 : -0x3.f23eabf3df8bd9acp-4 : inexact-ok += log10p1 upward intel96 -0x6.eec528p-4 : -0x3.f23eabf3df8bd9acp-4 : inexact-ok += log10p1 downward m68k96 -0x6.eec528p-4 : -0x3.f23eabf3df8bd9bp-4 : inexact-ok += log10p1 tonearest m68k96 -0x6.eec528p-4 : -0x3.f23eabf3df8bd9bp-4 : inexact-ok += log10p1 towardzero m68k96 -0x6.eec528p-4 : -0x3.f23eabf3df8bd9acp-4 : inexact-ok += log10p1 upward m68k96 -0x6.eec528p-4 : -0x3.f23eabf3df8bd9acp-4 : inexact-ok += log10p1 downward binary128 -0x6.eec528p-4 : -0x3.f23eabf3df8bd9aec00032ab17a4p-4 : inexact-ok += log10p1 tonearest binary128 -0x6.eec528p-4 : -0x3.f23eabf3df8bd9aec00032ab17a4p-4 : inexact-ok += log10p1 towardzero binary128 -0x6.eec528p-4 : -0x3.f23eabf3df8bd9aec00032ab17a2p-4 : inexact-ok += log10p1 upward binary128 -0x6.eec528p-4 : -0x3.f23eabf3df8bd9aec00032ab17a2p-4 : inexact-ok += log10p1 downward ibm128 -0x6.eec528p-4 : -0x3.f23eabf3df8bd9aec00032ab18p-4 : inexact-ok += log10p1 tonearest ibm128 -0x6.eec528p-4 : -0x3.f23eabf3df8bd9aec00032ab18p-4 : inexact-ok += log10p1 towardzero ibm128 -0x6.eec528p-4 : -0x3.f23eabf3df8bd9aec00032ab17p-4 : inexact-ok += log10p1 upward ibm128 -0x6.eec528p-4 : -0x3.f23eabf3df8bd9aec00032ab17p-4 : inexact-ok += log10p1 downward binary64 -0x6.eec527c6a8d6cp-4 : -0x3.f23eabc7ee32ep-4 : inexact-ok += log10p1 tonearest binary64 -0x6.eec527c6a8d6cp-4 : -0x3.f23eabc7ee32cp-4 : inexact-ok += log10p1 towardzero binary64 -0x6.eec527c6a8d6cp-4 : -0x3.f23eabc7ee32cp-4 : inexact-ok += log10p1 upward binary64 -0x6.eec527c6a8d6cp-4 : -0x3.f23eabc7ee32cp-4 : inexact-ok += log10p1 downward intel96 -0x6.eec527c6a8d6cp-4 : -0x3.f23eabc7ee32c94p-4 : inexact-ok += log10p1 tonearest intel96 -0x6.eec527c6a8d6cp-4 : -0x3.f23eabc7ee32c93cp-4 : inexact-ok += log10p1 towardzero intel96 -0x6.eec527c6a8d6cp-4 : -0x3.f23eabc7ee32c93cp-4 : inexact-ok += log10p1 upward intel96 -0x6.eec527c6a8d6cp-4 : -0x3.f23eabc7ee32c93cp-4 : inexact-ok += log10p1 downward m68k96 -0x6.eec527c6a8d6cp-4 : -0x3.f23eabc7ee32c94p-4 : inexact-ok += log10p1 tonearest m68k96 -0x6.eec527c6a8d6cp-4 : -0x3.f23eabc7ee32c93cp-4 : inexact-ok += log10p1 towardzero m68k96 -0x6.eec527c6a8d6cp-4 : -0x3.f23eabc7ee32c93cp-4 : inexact-ok += log10p1 upward m68k96 -0x6.eec527c6a8d6cp-4 : -0x3.f23eabc7ee32c93cp-4 : inexact-ok += log10p1 downward binary128 -0x6.eec527c6a8d6cp-4 : -0x3.f23eabc7ee32c93c2a58b5639944p-4 : inexact-ok += log10p1 tonearest binary128 -0x6.eec527c6a8d6cp-4 : -0x3.f23eabc7ee32c93c2a58b5639944p-4 : inexact-ok += log10p1 towardzero binary128 -0x6.eec527c6a8d6cp-4 : -0x3.f23eabc7ee32c93c2a58b5639942p-4 : inexact-ok += log10p1 upward binary128 -0x6.eec527c6a8d6cp-4 : -0x3.f23eabc7ee32c93c2a58b5639942p-4 : inexact-ok += log10p1 downward ibm128 -0x6.eec527c6a8d6cp-4 : -0x3.f23eabc7ee32c93c2a58b5639ap-4 : inexact-ok += log10p1 tonearest ibm128 -0x6.eec527c6a8d6cp-4 : -0x3.f23eabc7ee32c93c2a58b56399p-4 : inexact-ok += log10p1 towardzero ibm128 -0x6.eec527c6a8d6cp-4 : -0x3.f23eabc7ee32c93c2a58b56399p-4 : inexact-ok += log10p1 upward ibm128 -0x6.eec527c6a8d6cp-4 : -0x3.f23eabc7ee32c93c2a58b56399p-4 : inexact-ok += log10p1 downward binary64 -0x6.eec527c6a8d7p-4 : -0x3.f23eabc7ee33p-4 : inexact-ok += log10p1 tonearest binary64 -0x6.eec527c6a8d7p-4 : -0x3.f23eabc7ee33p-4 : inexact-ok += log10p1 towardzero binary64 -0x6.eec527c6a8d7p-4 : -0x3.f23eabc7ee32ep-4 : inexact-ok += log10p1 upward binary64 -0x6.eec527c6a8d7p-4 : -0x3.f23eabc7ee32ep-4 : inexact-ok += log10p1 downward intel96 -0x6.eec527c6a8d7p-4 : -0x3.f23eabc7ee32fa4cp-4 : inexact-ok += log10p1 tonearest intel96 -0x6.eec527c6a8d7p-4 : -0x3.f23eabc7ee32fa48p-4 : inexact-ok += log10p1 towardzero intel96 -0x6.eec527c6a8d7p-4 : -0x3.f23eabc7ee32fa48p-4 : inexact-ok += log10p1 upward intel96 -0x6.eec527c6a8d7p-4 : -0x3.f23eabc7ee32fa48p-4 : inexact-ok += log10p1 downward m68k96 -0x6.eec527c6a8d7p-4 : -0x3.f23eabc7ee32fa4cp-4 : inexact-ok += log10p1 tonearest m68k96 -0x6.eec527c6a8d7p-4 : -0x3.f23eabc7ee32fa48p-4 : inexact-ok += log10p1 towardzero m68k96 -0x6.eec527c6a8d7p-4 : -0x3.f23eabc7ee32fa48p-4 : inexact-ok += log10p1 upward m68k96 -0x6.eec527c6a8d7p-4 : -0x3.f23eabc7ee32fa48p-4 : inexact-ok += log10p1 downward binary128 -0x6.eec527c6a8d7p-4 : -0x3.f23eabc7ee32fa48036f594173dcp-4 : inexact-ok += log10p1 tonearest binary128 -0x6.eec527c6a8d7p-4 : -0x3.f23eabc7ee32fa48036f594173dap-4 : inexact-ok += log10p1 towardzero binary128 -0x6.eec527c6a8d7p-4 : -0x3.f23eabc7ee32fa48036f594173dap-4 : inexact-ok += log10p1 upward binary128 -0x6.eec527c6a8d7p-4 : -0x3.f23eabc7ee32fa48036f594173dap-4 : inexact-ok += log10p1 downward ibm128 -0x6.eec527c6a8d7p-4 : -0x3.f23eabc7ee32fa48036f594174p-4 : inexact-ok += log10p1 tonearest ibm128 -0x6.eec527c6a8d7p-4 : -0x3.f23eabc7ee32fa48036f594174p-4 : inexact-ok += log10p1 towardzero ibm128 -0x6.eec527c6a8d7p-4 : -0x3.f23eabc7ee32fa48036f594173p-4 : inexact-ok += log10p1 upward ibm128 -0x6.eec527c6a8d7p-4 : -0x3.f23eabc7ee32fa48036f594173p-4 : inexact-ok += log10p1 downward intel96 -0x6.eec527c6a8d6e318p-4 : -0x3.f23eabc7ee32e424p-4 : inexact-ok += log10p1 tonearest intel96 -0x6.eec527c6a8d6e318p-4 : -0x3.f23eabc7ee32e42p-4 : inexact-ok += log10p1 towardzero intel96 -0x6.eec527c6a8d6e318p-4 : -0x3.f23eabc7ee32e42p-4 : inexact-ok += log10p1 upward intel96 -0x6.eec527c6a8d6e318p-4 : -0x3.f23eabc7ee32e42p-4 : inexact-ok += log10p1 downward m68k96 -0x6.eec527c6a8d6e318p-4 : -0x3.f23eabc7ee32e424p-4 : inexact-ok += log10p1 tonearest m68k96 -0x6.eec527c6a8d6e318p-4 : -0x3.f23eabc7ee32e42p-4 : inexact-ok += log10p1 towardzero m68k96 -0x6.eec527c6a8d6e318p-4 : -0x3.f23eabc7ee32e42p-4 : inexact-ok += log10p1 upward m68k96 -0x6.eec527c6a8d6e318p-4 : -0x3.f23eabc7ee32e42p-4 : inexact-ok += log10p1 downward binary128 -0x6.eec527c6a8d6e318p-4 : -0x3.f23eabc7ee32e42109827f7e5fd6p-4 : inexact-ok += log10p1 tonearest binary128 -0x6.eec527c6a8d6e318p-4 : -0x3.f23eabc7ee32e42109827f7e5fd6p-4 : inexact-ok += log10p1 towardzero binary128 -0x6.eec527c6a8d6e318p-4 : -0x3.f23eabc7ee32e42109827f7e5fd4p-4 : inexact-ok += log10p1 upward binary128 -0x6.eec527c6a8d6e318p-4 : -0x3.f23eabc7ee32e42109827f7e5fd4p-4 : inexact-ok += log10p1 downward ibm128 -0x6.eec527c6a8d6e318p-4 : -0x3.f23eabc7ee32e42109827f7e6p-4 : inexact-ok += log10p1 tonearest ibm128 -0x6.eec527c6a8d6e318p-4 : -0x3.f23eabc7ee32e42109827f7e6p-4 : inexact-ok += log10p1 towardzero ibm128 -0x6.eec527c6a8d6e318p-4 : -0x3.f23eabc7ee32e42109827f7e5fp-4 : inexact-ok += log10p1 upward ibm128 -0x6.eec527c6a8d6e318p-4 : -0x3.f23eabc7ee32e42109827f7e5fp-4 : inexact-ok += log10p1 downward intel96 -0x6.eec527c6a8d6e32p-4 : -0x3.f23eabc7ee32e428p-4 : inexact-ok += log10p1 tonearest intel96 -0x6.eec527c6a8d6e32p-4 : -0x3.f23eabc7ee32e428p-4 : inexact-ok += log10p1 towardzero intel96 -0x6.eec527c6a8d6e32p-4 : -0x3.f23eabc7ee32e424p-4 : inexact-ok += log10p1 upward intel96 -0x6.eec527c6a8d6e32p-4 : -0x3.f23eabc7ee32e424p-4 : inexact-ok += log10p1 downward m68k96 -0x6.eec527c6a8d6e32p-4 : -0x3.f23eabc7ee32e428p-4 : inexact-ok += log10p1 tonearest m68k96 -0x6.eec527c6a8d6e32p-4 : -0x3.f23eabc7ee32e428p-4 : inexact-ok += log10p1 towardzero m68k96 -0x6.eec527c6a8d6e32p-4 : -0x3.f23eabc7ee32e424p-4 : inexact-ok += log10p1 upward m68k96 -0x6.eec527c6a8d6e32p-4 : -0x3.f23eabc7ee32e424p-4 : inexact-ok += log10p1 downward binary128 -0x6.eec527c6a8d6e32p-4 : -0x3.f23eabc7ee32e4272afda252db92p-4 : inexact-ok += log10p1 tonearest binary128 -0x6.eec527c6a8d6e32p-4 : -0x3.f23eabc7ee32e4272afda252db9p-4 : inexact-ok += log10p1 towardzero binary128 -0x6.eec527c6a8d6e32p-4 : -0x3.f23eabc7ee32e4272afda252db9p-4 : inexact-ok += log10p1 upward binary128 -0x6.eec527c6a8d6e32p-4 : -0x3.f23eabc7ee32e4272afda252db9p-4 : inexact-ok += log10p1 downward ibm128 -0x6.eec527c6a8d6e32p-4 : -0x3.f23eabc7ee32e4272afda252dcp-4 : inexact-ok += log10p1 tonearest ibm128 -0x6.eec527c6a8d6e32p-4 : -0x3.f23eabc7ee32e4272afda252dcp-4 : inexact-ok += log10p1 towardzero ibm128 -0x6.eec527c6a8d6e32p-4 : -0x3.f23eabc7ee32e4272afda252dbp-4 : inexact-ok += log10p1 upward ibm128 -0x6.eec527c6a8d6e32p-4 : -0x3.f23eabc7ee32e4272afda252dbp-4 : inexact-ok += log10p1 downward binary128 -0x6.eec527c6a8d6e31ca9f0dcdd747cp-4 : -0x3.f23eabc7ee32e4249c7befd8ebbcp-4 : inexact-ok += log10p1 tonearest binary128 -0x6.eec527c6a8d6e31ca9f0dcdd747cp-4 : -0x3.f23eabc7ee32e4249c7befd8ebbcp-4 : inexact-ok += log10p1 towardzero binary128 -0x6.eec527c6a8d6e31ca9f0dcdd747cp-4 : -0x3.f23eabc7ee32e4249c7befd8ebbap-4 : inexact-ok += log10p1 upward binary128 -0x6.eec527c6a8d6e31ca9f0dcdd747cp-4 : -0x3.f23eabc7ee32e4249c7befd8ebbap-4 : inexact-ok += log10p1 downward binary128 -0x6.eec527c6a8d6e31ca9f0dcdd74p-4 : -0x3.f23eabc7ee32e4249c7befd8eb5ep-4 : inexact-ok += log10p1 tonearest binary128 -0x6.eec527c6a8d6e31ca9f0dcdd74p-4 : -0x3.f23eabc7ee32e4249c7befd8eb5cp-4 : inexact-ok += log10p1 towardzero binary128 -0x6.eec527c6a8d6e31ca9f0dcdd74p-4 : -0x3.f23eabc7ee32e4249c7befd8eb5cp-4 : inexact-ok += log10p1 upward binary128 -0x6.eec527c6a8d6e31ca9f0dcdd74p-4 : -0x3.f23eabc7ee32e4249c7befd8eb5cp-4 : inexact-ok += log10p1 downward ibm128 -0x6.eec527c6a8d6e31ca9f0dcdd74p-4 : -0x3.f23eabc7ee32e4249c7befd8ecp-4 : inexact-ok += log10p1 tonearest ibm128 -0x6.eec527c6a8d6e31ca9f0dcdd74p-4 : -0x3.f23eabc7ee32e4249c7befd8ebp-4 : inexact-ok += log10p1 towardzero ibm128 -0x6.eec527c6a8d6e31ca9f0dcdd74p-4 : -0x3.f23eabc7ee32e4249c7befd8ebp-4 : inexact-ok += log10p1 upward ibm128 -0x6.eec527c6a8d6e31ca9f0dcdd74p-4 : -0x3.f23eabc7ee32e4249c7befd8ebp-4 : inexact-ok += log10p1 downward binary128 -0x6.eec527c6a8d6e31ca9f0dcdd76p-4 : -0x3.f23eabc7ee32e4249c7befd8ece6p-4 : inexact-ok += log10p1 tonearest binary128 -0x6.eec527c6a8d6e31ca9f0dcdd76p-4 : -0x3.f23eabc7ee32e4249c7befd8ece4p-4 : inexact-ok += log10p1 towardzero binary128 -0x6.eec527c6a8d6e31ca9f0dcdd76p-4 : -0x3.f23eabc7ee32e4249c7befd8ece4p-4 : inexact-ok += log10p1 upward binary128 -0x6.eec527c6a8d6e31ca9f0dcdd76p-4 : -0x3.f23eabc7ee32e4249c7befd8ece4p-4 : inexact-ok += log10p1 downward ibm128 -0x6.eec527c6a8d6e31ca9f0dcdd76p-4 : -0x3.f23eabc7ee32e4249c7befd8edp-4 : inexact-ok += log10p1 tonearest ibm128 -0x6.eec527c6a8d6e31ca9f0dcdd76p-4 : -0x3.f23eabc7ee32e4249c7befd8edp-4 : inexact-ok += log10p1 towardzero ibm128 -0x6.eec527c6a8d6e31ca9f0dcdd76p-4 : -0x3.f23eabc7ee32e4249c7befd8ecp-4 : inexact-ok += log10p1 upward ibm128 -0x6.eec527c6a8d6e31ca9f0dcdd76p-4 : -0x3.f23eabc7ee32e4249c7befd8ecp-4 : inexact-ok +log10p1 0xc.42dd6485aeceeca7f23b39ad0518p-4 += log10p1 downward binary32 0xc.42dd7p-4 : 0x3.f4002cp-4 : inexact-ok += log10p1 tonearest binary32 0xc.42dd7p-4 : 0x3.f4002cp-4 : inexact-ok += log10p1 towardzero binary32 0xc.42dd7p-4 : 0x3.f4002cp-4 : inexact-ok += log10p1 upward binary32 0xc.42dd7p-4 : 0x3.f4003p-4 : inexact-ok += log10p1 downward binary64 0xc.42dd7p-4 : 0x3.f4002dd22dd4cp-4 : inexact-ok += log10p1 tonearest binary64 0xc.42dd7p-4 : 0x3.f4002dd22dd4cp-4 : inexact-ok += log10p1 towardzero binary64 0xc.42dd7p-4 : 0x3.f4002dd22dd4cp-4 : inexact-ok += log10p1 upward binary64 0xc.42dd7p-4 : 0x3.f4002dd22dd4ep-4 : inexact-ok += log10p1 downward intel96 0xc.42dd7p-4 : 0x3.f4002dd22dd4c038p-4 : inexact-ok += log10p1 tonearest intel96 0xc.42dd7p-4 : 0x3.f4002dd22dd4c03cp-4 : inexact-ok += log10p1 towardzero intel96 0xc.42dd7p-4 : 0x3.f4002dd22dd4c038p-4 : inexact-ok += log10p1 upward intel96 0xc.42dd7p-4 : 0x3.f4002dd22dd4c03cp-4 : inexact-ok += log10p1 downward m68k96 0xc.42dd7p-4 : 0x3.f4002dd22dd4c038p-4 : inexact-ok += log10p1 tonearest m68k96 0xc.42dd7p-4 : 0x3.f4002dd22dd4c03cp-4 : inexact-ok += log10p1 towardzero m68k96 0xc.42dd7p-4 : 0x3.f4002dd22dd4c038p-4 : inexact-ok += log10p1 upward m68k96 0xc.42dd7p-4 : 0x3.f4002dd22dd4c03cp-4 : inexact-ok += log10p1 downward binary128 0xc.42dd7p-4 : 0x3.f4002dd22dd4c03af3876a46b9eap-4 : inexact-ok += log10p1 tonearest binary128 0xc.42dd7p-4 : 0x3.f4002dd22dd4c03af3876a46b9ecp-4 : inexact-ok += log10p1 towardzero binary128 0xc.42dd7p-4 : 0x3.f4002dd22dd4c03af3876a46b9eap-4 : inexact-ok += log10p1 upward binary128 0xc.42dd7p-4 : 0x3.f4002dd22dd4c03af3876a46b9ecp-4 : inexact-ok += log10p1 downward ibm128 0xc.42dd7p-4 : 0x3.f4002dd22dd4c03af3876a46b9p-4 : inexact-ok += log10p1 tonearest ibm128 0xc.42dd7p-4 : 0x3.f4002dd22dd4c03af3876a46bap-4 : inexact-ok += log10p1 towardzero ibm128 0xc.42dd7p-4 : 0x3.f4002dd22dd4c03af3876a46b9p-4 : inexact-ok += log10p1 upward ibm128 0xc.42dd7p-4 : 0x3.f4002dd22dd4c03af3876a46bap-4 : inexact-ok += log10p1 downward binary32 0xc.42dd6p-4 : 0x3.f40028p-4 : inexact-ok += log10p1 tonearest binary32 0xc.42dd6p-4 : 0x3.f40028p-4 : inexact-ok += log10p1 towardzero binary32 0xc.42dd6p-4 : 0x3.f40028p-4 : inexact-ok += log10p1 upward binary32 0xc.42dd6p-4 : 0x3.f4002cp-4 : inexact-ok += log10p1 downward binary64 0xc.42dd6p-4 : 0x3.f40029e31386ap-4 : inexact-ok += log10p1 tonearest binary64 0xc.42dd6p-4 : 0x3.f40029e31386cp-4 : inexact-ok += log10p1 towardzero binary64 0xc.42dd6p-4 : 0x3.f40029e31386ap-4 : inexact-ok += log10p1 upward binary64 0xc.42dd6p-4 : 0x3.f40029e31386cp-4 : inexact-ok += log10p1 downward intel96 0xc.42dd6p-4 : 0x3.f40029e31386b13cp-4 : inexact-ok += log10p1 tonearest intel96 0xc.42dd6p-4 : 0x3.f40029e31386b14p-4 : inexact-ok += log10p1 towardzero intel96 0xc.42dd6p-4 : 0x3.f40029e31386b13cp-4 : inexact-ok += log10p1 upward intel96 0xc.42dd6p-4 : 0x3.f40029e31386b14p-4 : inexact-ok += log10p1 downward m68k96 0xc.42dd6p-4 : 0x3.f40029e31386b13cp-4 : inexact-ok += log10p1 tonearest m68k96 0xc.42dd6p-4 : 0x3.f40029e31386b14p-4 : inexact-ok += log10p1 towardzero m68k96 0xc.42dd6p-4 : 0x3.f40029e31386b13cp-4 : inexact-ok += log10p1 upward m68k96 0xc.42dd6p-4 : 0x3.f40029e31386b14p-4 : inexact-ok += log10p1 downward binary128 0xc.42dd6p-4 : 0x3.f40029e31386b13e38c44018f8eep-4 : inexact-ok += log10p1 tonearest binary128 0xc.42dd6p-4 : 0x3.f40029e31386b13e38c44018f8fp-4 : inexact-ok += log10p1 towardzero binary128 0xc.42dd6p-4 : 0x3.f40029e31386b13e38c44018f8eep-4 : inexact-ok += log10p1 upward binary128 0xc.42dd6p-4 : 0x3.f40029e31386b13e38c44018f8fp-4 : inexact-ok += log10p1 downward ibm128 0xc.42dd6p-4 : 0x3.f40029e31386b13e38c44018f8p-4 : inexact-ok += log10p1 tonearest ibm128 0xc.42dd6p-4 : 0x3.f40029e31386b13e38c44018f9p-4 : inexact-ok += log10p1 towardzero ibm128 0xc.42dd6p-4 : 0x3.f40029e31386b13e38c44018f8p-4 : inexact-ok += log10p1 upward ibm128 0xc.42dd6p-4 : 0x3.f40029e31386b13e38c44018f9p-4 : inexact-ok += log10p1 downward binary64 0xc.42dd6485aecfp-4 : 0x3.f4002affb8a02p-4 : inexact-ok += log10p1 tonearest binary64 0xc.42dd6485aecfp-4 : 0x3.f4002affb8a04p-4 : inexact-ok += log10p1 towardzero binary64 0xc.42dd6485aecfp-4 : 0x3.f4002affb8a02p-4 : inexact-ok += log10p1 upward binary64 0xc.42dd6485aecfp-4 : 0x3.f4002affb8a04p-4 : inexact-ok += log10p1 downward intel96 0xc.42dd6485aecfp-4 : 0x3.f4002affb8a03b1cp-4 : inexact-ok += log10p1 tonearest intel96 0xc.42dd6485aecfp-4 : 0x3.f4002affb8a03b1cp-4 : inexact-ok += log10p1 towardzero intel96 0xc.42dd6485aecfp-4 : 0x3.f4002affb8a03b1cp-4 : inexact-ok += log10p1 upward intel96 0xc.42dd6485aecfp-4 : 0x3.f4002affb8a03b2p-4 : inexact-ok += log10p1 downward m68k96 0xc.42dd6485aecfp-4 : 0x3.f4002affb8a03b1cp-4 : inexact-ok += log10p1 tonearest m68k96 0xc.42dd6485aecfp-4 : 0x3.f4002affb8a03b1cp-4 : inexact-ok += log10p1 towardzero m68k96 0xc.42dd6485aecfp-4 : 0x3.f4002affb8a03b1cp-4 : inexact-ok += log10p1 upward m68k96 0xc.42dd6485aecfp-4 : 0x3.f4002affb8a03b2p-4 : inexact-ok += log10p1 downward binary128 0xc.42dd6485aecfp-4 : 0x3.f4002affb8a03b1c76babdd2c14p-4 : inexact-ok += log10p1 tonearest binary128 0xc.42dd6485aecfp-4 : 0x3.f4002affb8a03b1c76babdd2c142p-4 : inexact-ok += log10p1 towardzero binary128 0xc.42dd6485aecfp-4 : 0x3.f4002affb8a03b1c76babdd2c14p-4 : inexact-ok += log10p1 upward binary128 0xc.42dd6485aecfp-4 : 0x3.f4002affb8a03b1c76babdd2c142p-4 : inexact-ok += log10p1 downward ibm128 0xc.42dd6485aecfp-4 : 0x3.f4002affb8a03b1c76babdd2c1p-4 : inexact-ok += log10p1 tonearest ibm128 0xc.42dd6485aecfp-4 : 0x3.f4002affb8a03b1c76babdd2c1p-4 : inexact-ok += log10p1 towardzero ibm128 0xc.42dd6485aecfp-4 : 0x3.f4002affb8a03b1c76babdd2c1p-4 : inexact-ok += log10p1 upward ibm128 0xc.42dd6485aecfp-4 : 0x3.f4002affb8a03b1c76babdd2c2p-4 : inexact-ok += log10p1 downward binary64 0xc.42dd6485aece8p-4 : 0x3.f4002affb8ap-4 : inexact-ok += log10p1 tonearest binary64 0xc.42dd6485aece8p-4 : 0x3.f4002affb8a02p-4 : inexact-ok += log10p1 towardzero binary64 0xc.42dd6485aece8p-4 : 0x3.f4002affb8ap-4 : inexact-ok += log10p1 upward binary64 0xc.42dd6485aece8p-4 : 0x3.f4002affb8a02p-4 : inexact-ok += log10p1 downward intel96 0xc.42dd6485aece8p-4 : 0x3.f4002affb8a01bap-4 : inexact-ok += log10p1 tonearest intel96 0xc.42dd6485aece8p-4 : 0x3.f4002affb8a01ba4p-4 : inexact-ok += log10p1 towardzero intel96 0xc.42dd6485aece8p-4 : 0x3.f4002affb8a01bap-4 : inexact-ok += log10p1 upward intel96 0xc.42dd6485aece8p-4 : 0x3.f4002affb8a01ba4p-4 : inexact-ok += log10p1 downward m68k96 0xc.42dd6485aece8p-4 : 0x3.f4002affb8a01bap-4 : inexact-ok += log10p1 tonearest m68k96 0xc.42dd6485aece8p-4 : 0x3.f4002affb8a01ba4p-4 : inexact-ok += log10p1 towardzero m68k96 0xc.42dd6485aece8p-4 : 0x3.f4002affb8a01bap-4 : inexact-ok += log10p1 upward m68k96 0xc.42dd6485aece8p-4 : 0x3.f4002affb8a01ba4p-4 : inexact-ok += log10p1 downward binary128 0xc.42dd6485aece8p-4 : 0x3.f4002affb8a01ba3a44666757846p-4 : inexact-ok += log10p1 tonearest binary128 0xc.42dd6485aece8p-4 : 0x3.f4002affb8a01ba3a44666757846p-4 : inexact-ok += log10p1 towardzero binary128 0xc.42dd6485aece8p-4 : 0x3.f4002affb8a01ba3a44666757846p-4 : inexact-ok += log10p1 upward binary128 0xc.42dd6485aece8p-4 : 0x3.f4002affb8a01ba3a44666757848p-4 : inexact-ok += log10p1 downward ibm128 0xc.42dd6485aece8p-4 : 0x3.f4002affb8a01ba3a446667578p-4 : inexact-ok += log10p1 tonearest ibm128 0xc.42dd6485aece8p-4 : 0x3.f4002affb8a01ba3a446667578p-4 : inexact-ok += log10p1 towardzero ibm128 0xc.42dd6485aece8p-4 : 0x3.f4002affb8a01ba3a446667578p-4 : inexact-ok += log10p1 upward ibm128 0xc.42dd6485aece8p-4 : 0x3.f4002affb8a01ba3a446667579p-4 : inexact-ok += log10p1 downward intel96 0xc.42dd6485aeceecbp-4 : 0x3.f4002affb8a0365cp-4 : inexact-ok += log10p1 tonearest intel96 0xc.42dd6485aeceecbp-4 : 0x3.f4002affb8a0365cp-4 : inexact-ok += log10p1 towardzero intel96 0xc.42dd6485aeceecbp-4 : 0x3.f4002affb8a0365cp-4 : inexact-ok += log10p1 upward intel96 0xc.42dd6485aeceecbp-4 : 0x3.f4002affb8a0366p-4 : inexact-ok += log10p1 downward m68k96 0xc.42dd6485aeceecbp-4 : 0x3.f4002affb8a0365cp-4 : inexact-ok += log10p1 tonearest m68k96 0xc.42dd6485aeceecbp-4 : 0x3.f4002affb8a0365cp-4 : inexact-ok += log10p1 towardzero m68k96 0xc.42dd6485aeceecbp-4 : 0x3.f4002affb8a0365cp-4 : inexact-ok += log10p1 upward m68k96 0xc.42dd6485aeceecbp-4 : 0x3.f4002affb8a0366p-4 : inexact-ok += log10p1 downward binary128 0xc.42dd6485aeceecbp-4 : 0x3.f4002affb8a0365cdbf9f0244e26p-4 : inexact-ok += log10p1 tonearest binary128 0xc.42dd6485aeceecbp-4 : 0x3.f4002affb8a0365cdbf9f0244e28p-4 : inexact-ok += log10p1 towardzero binary128 0xc.42dd6485aeceecbp-4 : 0x3.f4002affb8a0365cdbf9f0244e26p-4 : inexact-ok += log10p1 upward binary128 0xc.42dd6485aeceecbp-4 : 0x3.f4002affb8a0365cdbf9f0244e28p-4 : inexact-ok += log10p1 downward ibm128 0xc.42dd6485aeceecbp-4 : 0x3.f4002affb8a0365cdbf9f0244ep-4 : inexact-ok += log10p1 tonearest ibm128 0xc.42dd6485aeceecbp-4 : 0x3.f4002affb8a0365cdbf9f0244ep-4 : inexact-ok += log10p1 towardzero ibm128 0xc.42dd6485aeceecbp-4 : 0x3.f4002affb8a0365cdbf9f0244ep-4 : inexact-ok += log10p1 upward ibm128 0xc.42dd6485aeceecbp-4 : 0x3.f4002affb8a0365cdbf9f0244fp-4 : inexact-ok += log10p1 downward intel96 0xc.42dd6485aeceecap-4 : 0x3.f4002affb8a03658p-4 : inexact-ok += log10p1 tonearest intel96 0xc.42dd6485aeceecap-4 : 0x3.f4002affb8a03658p-4 : inexact-ok += log10p1 towardzero intel96 0xc.42dd6485aeceecap-4 : 0x3.f4002affb8a03658p-4 : inexact-ok += log10p1 upward intel96 0xc.42dd6485aeceecap-4 : 0x3.f4002affb8a0365cp-4 : inexact-ok += log10p1 downward m68k96 0xc.42dd6485aeceecap-4 : 0x3.f4002affb8a03658p-4 : inexact-ok += log10p1 tonearest m68k96 0xc.42dd6485aeceecap-4 : 0x3.f4002affb8a03658p-4 : inexact-ok += log10p1 towardzero m68k96 0xc.42dd6485aeceecap-4 : 0x3.f4002affb8a03658p-4 : inexact-ok += log10p1 upward m68k96 0xc.42dd6485aeceecap-4 : 0x3.f4002affb8a0365cp-4 : inexact-ok += log10p1 downward binary128 0xc.42dd6485aeceecap-4 : 0x3.f4002affb8a03658ecdfa199627ep-4 : inexact-ok += log10p1 tonearest binary128 0xc.42dd6485aeceecap-4 : 0x3.f4002affb8a03658ecdfa199627ep-4 : inexact-ok += log10p1 towardzero binary128 0xc.42dd6485aeceecap-4 : 0x3.f4002affb8a03658ecdfa199627ep-4 : inexact-ok += log10p1 upward binary128 0xc.42dd6485aeceecap-4 : 0x3.f4002affb8a03658ecdfa199628p-4 : inexact-ok += log10p1 downward ibm128 0xc.42dd6485aeceecap-4 : 0x3.f4002affb8a03658ecdfa19962p-4 : inexact-ok += log10p1 tonearest ibm128 0xc.42dd6485aeceecap-4 : 0x3.f4002affb8a03658ecdfa19962p-4 : inexact-ok += log10p1 towardzero ibm128 0xc.42dd6485aeceecap-4 : 0x3.f4002affb8a03658ecdfa19962p-4 : inexact-ok += log10p1 upward ibm128 0xc.42dd6485aeceecap-4 : 0x3.f4002affb8a03658ecdfa19963p-4 : inexact-ok += log10p1 downward binary128 0xc.42dd6485aeceeca7f23b39ad0518p-4 : 0x3.f4002affb8a0365ae10a21b978aap-4 : inexact-ok += log10p1 tonearest binary128 0xc.42dd6485aeceeca7f23b39ad0518p-4 : 0x3.f4002affb8a0365ae10a21b978aap-4 : inexact-ok += log10p1 towardzero binary128 0xc.42dd6485aeceeca7f23b39ad0518p-4 : 0x3.f4002affb8a0365ae10a21b978aap-4 : inexact-ok += log10p1 upward binary128 0xc.42dd6485aeceeca7f23b39ad0518p-4 : 0x3.f4002affb8a0365ae10a21b978acp-4 : inexact-ok += log10p1 downward binary128 0xc.42dd6485aeceeca7f23b39ad08p-4 : 0x3.f4002affb8a0365ae10a21b9796p-4 : inexact-ok += log10p1 tonearest binary128 0xc.42dd6485aeceeca7f23b39ad08p-4 : 0x3.f4002affb8a0365ae10a21b97962p-4 : inexact-ok += log10p1 towardzero binary128 0xc.42dd6485aeceeca7f23b39ad08p-4 : 0x3.f4002affb8a0365ae10a21b9796p-4 : inexact-ok += log10p1 upward binary128 0xc.42dd6485aeceeca7f23b39ad08p-4 : 0x3.f4002affb8a0365ae10a21b97962p-4 : inexact-ok += log10p1 downward ibm128 0xc.42dd6485aeceeca7f23b39ad08p-4 : 0x3.f4002affb8a0365ae10a21b979p-4 : inexact-ok += log10p1 tonearest ibm128 0xc.42dd6485aeceeca7f23b39ad08p-4 : 0x3.f4002affb8a0365ae10a21b979p-4 : inexact-ok += log10p1 towardzero ibm128 0xc.42dd6485aeceeca7f23b39ad08p-4 : 0x3.f4002affb8a0365ae10a21b979p-4 : inexact-ok += log10p1 upward ibm128 0xc.42dd6485aeceeca7f23b39ad08p-4 : 0x3.f4002affb8a0365ae10a21b97ap-4 : inexact-ok += log10p1 downward binary128 0xc.42dd6485aeceeca7f23b39ad04p-4 : 0x3.f4002affb8a0365ae10a21b97864p-4 : inexact-ok += log10p1 tonearest binary128 0xc.42dd6485aeceeca7f23b39ad04p-4 : 0x3.f4002affb8a0365ae10a21b97866p-4 : inexact-ok += log10p1 towardzero binary128 0xc.42dd6485aeceeca7f23b39ad04p-4 : 0x3.f4002affb8a0365ae10a21b97864p-4 : inexact-ok += log10p1 upward binary128 0xc.42dd6485aeceeca7f23b39ad04p-4 : 0x3.f4002affb8a0365ae10a21b97866p-4 : inexact-ok += log10p1 downward ibm128 0xc.42dd6485aeceeca7f23b39ad04p-4 : 0x3.f4002affb8a0365ae10a21b978p-4 : inexact-ok += log10p1 tonearest ibm128 0xc.42dd6485aeceeca7f23b39ad04p-4 : 0x3.f4002affb8a0365ae10a21b978p-4 : inexact-ok += log10p1 towardzero ibm128 0xc.42dd6485aeceeca7f23b39ad04p-4 : 0x3.f4002affb8a0365ae10a21b978p-4 : inexact-ok += log10p1 upward ibm128 0xc.42dd6485aeceeca7f23b39ad04p-4 : 0x3.f4002affb8a0365ae10a21b979p-4 : inexact-ok +log10p1 0xa.78451e366c2303f4f67b1178e628p-4 += log10p1 downward binary32 0xa.78452p-4 : 0x3.7f82f4p-4 : inexact-ok += log10p1 tonearest binary32 0xa.78452p-4 : 0x3.7f82f8p-4 : inexact-ok += log10p1 towardzero binary32 0xa.78452p-4 : 0x3.7f82f4p-4 : inexact-ok += log10p1 upward binary32 0xa.78452p-4 : 0x3.7f82f8p-4 : inexact-ok += log10p1 downward binary64 0xa.78452p-4 : 0x3.7f82f6846954p-4 : inexact-ok += log10p1 tonearest binary64 0xa.78452p-4 : 0x3.7f82f6846954p-4 : inexact-ok += log10p1 towardzero binary64 0xa.78452p-4 : 0x3.7f82f6846954p-4 : inexact-ok += log10p1 upward binary64 0xa.78452p-4 : 0x3.7f82f68469542p-4 : inexact-ok += log10p1 downward intel96 0xa.78452p-4 : 0x3.7f82f68469540c2cp-4 : inexact-ok += log10p1 tonearest intel96 0xa.78452p-4 : 0x3.7f82f68469540c2cp-4 : inexact-ok += log10p1 towardzero intel96 0xa.78452p-4 : 0x3.7f82f68469540c2cp-4 : inexact-ok += log10p1 upward intel96 0xa.78452p-4 : 0x3.7f82f68469540c3p-4 : inexact-ok += log10p1 downward m68k96 0xa.78452p-4 : 0x3.7f82f68469540c2cp-4 : inexact-ok += log10p1 tonearest m68k96 0xa.78452p-4 : 0x3.7f82f68469540c2cp-4 : inexact-ok += log10p1 towardzero m68k96 0xa.78452p-4 : 0x3.7f82f68469540c2cp-4 : inexact-ok += log10p1 upward m68k96 0xa.78452p-4 : 0x3.7f82f68469540c3p-4 : inexact-ok += log10p1 downward binary128 0xa.78452p-4 : 0x3.7f82f68469540c2c6833dfb30b9ap-4 : inexact-ok += log10p1 tonearest binary128 0xa.78452p-4 : 0x3.7f82f68469540c2c6833dfb30b9ap-4 : inexact-ok += log10p1 towardzero binary128 0xa.78452p-4 : 0x3.7f82f68469540c2c6833dfb30b9ap-4 : inexact-ok += log10p1 upward binary128 0xa.78452p-4 : 0x3.7f82f68469540c2c6833dfb30b9cp-4 : inexact-ok += log10p1 downward ibm128 0xa.78452p-4 : 0x3.7f82f68469540c2c6833dfb30bp-4 : inexact-ok += log10p1 tonearest ibm128 0xa.78452p-4 : 0x3.7f82f68469540c2c6833dfb30cp-4 : inexact-ok += log10p1 towardzero ibm128 0xa.78452p-4 : 0x3.7f82f68469540c2c6833dfb30bp-4 : inexact-ok += log10p1 upward ibm128 0xa.78452p-4 : 0x3.7f82f68469540c2c6833dfb30cp-4 : inexact-ok += log10p1 downward binary32 0xa.78451p-4 : 0x3.7f82fp-4 : inexact-ok += log10p1 tonearest binary32 0xa.78451p-4 : 0x3.7f82f4p-4 : inexact-ok += log10p1 towardzero binary32 0xa.78451p-4 : 0x3.7f82fp-4 : inexact-ok += log10p1 upward binary32 0xa.78451p-4 : 0x3.7f82f4p-4 : inexact-ok += log10p1 downward binary64 0xa.78451p-4 : 0x3.7f82f25126c12p-4 : inexact-ok += log10p1 tonearest binary64 0xa.78451p-4 : 0x3.7f82f25126c14p-4 : inexact-ok += log10p1 towardzero binary64 0xa.78451p-4 : 0x3.7f82f25126c12p-4 : inexact-ok += log10p1 upward binary64 0xa.78451p-4 : 0x3.7f82f25126c14p-4 : inexact-ok += log10p1 downward intel96 0xa.78451p-4 : 0x3.7f82f25126c1335p-4 : inexact-ok += log10p1 tonearest intel96 0xa.78451p-4 : 0x3.7f82f25126c13354p-4 : inexact-ok += log10p1 towardzero intel96 0xa.78451p-4 : 0x3.7f82f25126c1335p-4 : inexact-ok += log10p1 upward intel96 0xa.78451p-4 : 0x3.7f82f25126c13354p-4 : inexact-ok += log10p1 downward m68k96 0xa.78451p-4 : 0x3.7f82f25126c1335p-4 : inexact-ok += log10p1 tonearest m68k96 0xa.78451p-4 : 0x3.7f82f25126c13354p-4 : inexact-ok += log10p1 towardzero m68k96 0xa.78451p-4 : 0x3.7f82f25126c1335p-4 : inexact-ok += log10p1 upward m68k96 0xa.78451p-4 : 0x3.7f82f25126c13354p-4 : inexact-ok += log10p1 downward binary128 0xa.78451p-4 : 0x3.7f82f25126c13352b731e7e0172p-4 : inexact-ok += log10p1 tonearest binary128 0xa.78451p-4 : 0x3.7f82f25126c13352b731e7e0172p-4 : inexact-ok += log10p1 towardzero binary128 0xa.78451p-4 : 0x3.7f82f25126c13352b731e7e0172p-4 : inexact-ok += log10p1 upward binary128 0xa.78451p-4 : 0x3.7f82f25126c13352b731e7e01722p-4 : inexact-ok += log10p1 downward ibm128 0xa.78451p-4 : 0x3.7f82f25126c13352b731e7e017p-4 : inexact-ok += log10p1 tonearest ibm128 0xa.78451p-4 : 0x3.7f82f25126c13352b731e7e017p-4 : inexact-ok += log10p1 towardzero ibm128 0xa.78451p-4 : 0x3.7f82f25126c13352b731e7e017p-4 : inexact-ok += log10p1 upward ibm128 0xa.78451p-4 : 0x3.7f82f25126c13352b731e7e018p-4 : inexact-ok += log10p1 downward binary64 0xa.78451e366c238p-4 : 0x3.7f82f60c4a65cp-4 : inexact-ok += log10p1 tonearest binary64 0xa.78451e366c238p-4 : 0x3.7f82f60c4a65ep-4 : inexact-ok += log10p1 towardzero binary64 0xa.78451e366c238p-4 : 0x3.7f82f60c4a65cp-4 : inexact-ok += log10p1 upward binary64 0xa.78451e366c238p-4 : 0x3.7f82f60c4a65ep-4 : inexact-ok += log10p1 downward intel96 0xa.78451e366c238p-4 : 0x3.7f82f60c4a65d404p-4 : inexact-ok += log10p1 tonearest intel96 0xa.78451e366c238p-4 : 0x3.7f82f60c4a65d408p-4 : inexact-ok += log10p1 towardzero intel96 0xa.78451e366c238p-4 : 0x3.7f82f60c4a65d404p-4 : inexact-ok += log10p1 upward intel96 0xa.78451e366c238p-4 : 0x3.7f82f60c4a65d408p-4 : inexact-ok += log10p1 downward m68k96 0xa.78451e366c238p-4 : 0x3.7f82f60c4a65d404p-4 : inexact-ok += log10p1 tonearest m68k96 0xa.78451e366c238p-4 : 0x3.7f82f60c4a65d408p-4 : inexact-ok += log10p1 towardzero m68k96 0xa.78451e366c238p-4 : 0x3.7f82f60c4a65d404p-4 : inexact-ok += log10p1 upward m68k96 0xa.78451e366c238p-4 : 0x3.7f82f60c4a65d408p-4 : inexact-ok += log10p1 downward binary128 0xa.78451e366c238p-4 : 0x3.7f82f60c4a65d407a1eb99f105c4p-4 : inexact-ok += log10p1 tonearest binary128 0xa.78451e366c238p-4 : 0x3.7f82f60c4a65d407a1eb99f105c4p-4 : inexact-ok += log10p1 towardzero binary128 0xa.78451e366c238p-4 : 0x3.7f82f60c4a65d407a1eb99f105c4p-4 : inexact-ok += log10p1 upward binary128 0xa.78451e366c238p-4 : 0x3.7f82f60c4a65d407a1eb99f105c6p-4 : inexact-ok += log10p1 downward ibm128 0xa.78451e366c238p-4 : 0x3.7f82f60c4a65d407a1eb99f105p-4 : inexact-ok += log10p1 tonearest ibm128 0xa.78451e366c238p-4 : 0x3.7f82f60c4a65d407a1eb99f106p-4 : inexact-ok += log10p1 towardzero ibm128 0xa.78451e366c238p-4 : 0x3.7f82f60c4a65d407a1eb99f105p-4 : inexact-ok += log10p1 upward ibm128 0xa.78451e366c238p-4 : 0x3.7f82f60c4a65d407a1eb99f106p-4 : inexact-ok += log10p1 downward binary64 0xa.78451e366c23p-4 : 0x3.7f82f60c4a65ap-4 : inexact-ok += log10p1 tonearest binary64 0xa.78451e366c23p-4 : 0x3.7f82f60c4a65cp-4 : inexact-ok += log10p1 towardzero binary64 0xa.78451e366c23p-4 : 0x3.7f82f60c4a65ap-4 : inexact-ok += log10p1 upward binary64 0xa.78451e366c23p-4 : 0x3.7f82f60c4a65cp-4 : inexact-ok += log10p1 downward intel96 0xa.78451e366c23p-4 : 0x3.7f82f60c4a65b26cp-4 : inexact-ok += log10p1 tonearest intel96 0xa.78451e366c23p-4 : 0x3.7f82f60c4a65b26cp-4 : inexact-ok += log10p1 towardzero intel96 0xa.78451e366c23p-4 : 0x3.7f82f60c4a65b26cp-4 : inexact-ok += log10p1 upward intel96 0xa.78451e366c23p-4 : 0x3.7f82f60c4a65b27p-4 : inexact-ok += log10p1 downward m68k96 0xa.78451e366c23p-4 : 0x3.7f82f60c4a65b26cp-4 : inexact-ok += log10p1 tonearest m68k96 0xa.78451e366c23p-4 : 0x3.7f82f60c4a65b26cp-4 : inexact-ok += log10p1 towardzero m68k96 0xa.78451e366c23p-4 : 0x3.7f82f60c4a65b26cp-4 : inexact-ok += log10p1 upward m68k96 0xa.78451e366c23p-4 : 0x3.7f82f60c4a65b27p-4 : inexact-ok += log10p1 downward binary128 0xa.78451e366c23p-4 : 0x3.7f82f60c4a65b26d8d5cb6165cdep-4 : inexact-ok += log10p1 tonearest binary128 0xa.78451e366c23p-4 : 0x3.7f82f60c4a65b26d8d5cb6165cep-4 : inexact-ok += log10p1 towardzero binary128 0xa.78451e366c23p-4 : 0x3.7f82f60c4a65b26d8d5cb6165cdep-4 : inexact-ok += log10p1 upward binary128 0xa.78451e366c23p-4 : 0x3.7f82f60c4a65b26d8d5cb6165cep-4 : inexact-ok += log10p1 downward ibm128 0xa.78451e366c23p-4 : 0x3.7f82f60c4a65b26d8d5cb6165cp-4 : inexact-ok += log10p1 tonearest ibm128 0xa.78451e366c23p-4 : 0x3.7f82f60c4a65b26d8d5cb6165dp-4 : inexact-ok += log10p1 towardzero ibm128 0xa.78451e366c23p-4 : 0x3.7f82f60c4a65b26d8d5cb6165cp-4 : inexact-ok += log10p1 upward ibm128 0xa.78451e366c23p-4 : 0x3.7f82f60c4a65b26d8d5cb6165dp-4 : inexact-ok += log10p1 downward intel96 0xa.78451e366c2304p-4 : 0x3.7f82f60c4a65b378p-4 : inexact-ok += log10p1 tonearest intel96 0xa.78451e366c2304p-4 : 0x3.7f82f60c4a65b37cp-4 : inexact-ok += log10p1 towardzero intel96 0xa.78451e366c2304p-4 : 0x3.7f82f60c4a65b378p-4 : inexact-ok += log10p1 upward intel96 0xa.78451e366c2304p-4 : 0x3.7f82f60c4a65b37cp-4 : inexact-ok += log10p1 downward m68k96 0xa.78451e366c2304p-4 : 0x3.7f82f60c4a65b378p-4 : inexact-ok += log10p1 tonearest m68k96 0xa.78451e366c2304p-4 : 0x3.7f82f60c4a65b37cp-4 : inexact-ok += log10p1 towardzero m68k96 0xa.78451e366c2304p-4 : 0x3.7f82f60c4a65b378p-4 : inexact-ok += log10p1 upward m68k96 0xa.78451e366c2304p-4 : 0x3.7f82f60c4a65b37cp-4 : inexact-ok += log10p1 downward binary128 0xa.78451e366c2304p-4 : 0x3.7f82f60c4a65b37a5e012d353228p-4 : inexact-ok += log10p1 tonearest binary128 0xa.78451e366c2304p-4 : 0x3.7f82f60c4a65b37a5e012d353228p-4 : inexact-ok += log10p1 towardzero binary128 0xa.78451e366c2304p-4 : 0x3.7f82f60c4a65b37a5e012d353228p-4 : inexact-ok += log10p1 upward binary128 0xa.78451e366c2304p-4 : 0x3.7f82f60c4a65b37a5e012d35322ap-4 : inexact-ok += log10p1 downward ibm128 0xa.78451e366c2304p-4 : 0x3.7f82f60c4a65b37a5e012d3532p-4 : inexact-ok += log10p1 tonearest ibm128 0xa.78451e366c2304p-4 : 0x3.7f82f60c4a65b37a5e012d3532p-4 : inexact-ok += log10p1 towardzero ibm128 0xa.78451e366c2304p-4 : 0x3.7f82f60c4a65b37a5e012d3532p-4 : inexact-ok += log10p1 upward ibm128 0xa.78451e366c2304p-4 : 0x3.7f82f60c4a65b37a5e012d3533p-4 : inexact-ok += log10p1 downward intel96 0xa.78451e366c2303fp-4 : 0x3.7f82f60c4a65b374p-4 : inexact-ok += log10p1 tonearest intel96 0xa.78451e366c2303fp-4 : 0x3.7f82f60c4a65b378p-4 : inexact-ok += log10p1 towardzero intel96 0xa.78451e366c2303fp-4 : 0x3.7f82f60c4a65b374p-4 : inexact-ok += log10p1 upward intel96 0xa.78451e366c2303fp-4 : 0x3.7f82f60c4a65b378p-4 : inexact-ok += log10p1 downward m68k96 0xa.78451e366c2303fp-4 : 0x3.7f82f60c4a65b374p-4 : inexact-ok += log10p1 tonearest m68k96 0xa.78451e366c2303fp-4 : 0x3.7f82f60c4a65b378p-4 : inexact-ok += log10p1 towardzero m68k96 0xa.78451e366c2303fp-4 : 0x3.7f82f60c4a65b374p-4 : inexact-ok += log10p1 upward m68k96 0xa.78451e366c2303fp-4 : 0x3.7f82f60c4a65b378p-4 : inexact-ok += log10p1 downward binary128 0xa.78451e366c2303fp-4 : 0x3.7f82f60c4a65b3762abe9b58b6d2p-4 : inexact-ok += log10p1 tonearest binary128 0xa.78451e366c2303fp-4 : 0x3.7f82f60c4a65b3762abe9b58b6d4p-4 : inexact-ok += log10p1 towardzero binary128 0xa.78451e366c2303fp-4 : 0x3.7f82f60c4a65b3762abe9b58b6d2p-4 : inexact-ok += log10p1 upward binary128 0xa.78451e366c2303fp-4 : 0x3.7f82f60c4a65b3762abe9b58b6d4p-4 : inexact-ok += log10p1 downward ibm128 0xa.78451e366c2303fp-4 : 0x3.7f82f60c4a65b3762abe9b58b6p-4 : inexact-ok += log10p1 tonearest ibm128 0xa.78451e366c2303fp-4 : 0x3.7f82f60c4a65b3762abe9b58b7p-4 : inexact-ok += log10p1 towardzero ibm128 0xa.78451e366c2303fp-4 : 0x3.7f82f60c4a65b3762abe9b58b6p-4 : inexact-ok += log10p1 upward ibm128 0xa.78451e366c2303fp-4 : 0x3.7f82f60c4a65b3762abe9b58b7p-4 : inexact-ok += log10p1 downward binary128 0xa.78451e366c2303f4f67b1178e628p-4 : 0x3.7f82f60c4a65b3777843adf86878p-4 : inexact-ok += log10p1 tonearest binary128 0xa.78451e366c2303f4f67b1178e628p-4 : 0x3.7f82f60c4a65b3777843adf8687ap-4 : inexact-ok += log10p1 towardzero binary128 0xa.78451e366c2303f4f67b1178e628p-4 : 0x3.7f82f60c4a65b3777843adf86878p-4 : inexact-ok += log10p1 upward binary128 0xa.78451e366c2303f4f67b1178e628p-4 : 0x3.7f82f60c4a65b3777843adf8687ap-4 : inexact-ok += log10p1 downward binary128 0xa.78451e366c2303f4f67b1178e8p-4 : 0x3.7f82f60c4a65b3777843adf868f4p-4 : inexact-ok += log10p1 tonearest binary128 0xa.78451e366c2303f4f67b1178e8p-4 : 0x3.7f82f60c4a65b3777843adf868f6p-4 : inexact-ok += log10p1 towardzero binary128 0xa.78451e366c2303f4f67b1178e8p-4 : 0x3.7f82f60c4a65b3777843adf868f4p-4 : inexact-ok += log10p1 upward binary128 0xa.78451e366c2303f4f67b1178e8p-4 : 0x3.7f82f60c4a65b3777843adf868f6p-4 : inexact-ok += log10p1 downward ibm128 0xa.78451e366c2303f4f67b1178e8p-4 : 0x3.7f82f60c4a65b3777843adf868p-4 : inexact-ok += log10p1 tonearest ibm128 0xa.78451e366c2303f4f67b1178e8p-4 : 0x3.7f82f60c4a65b3777843adf869p-4 : inexact-ok += log10p1 towardzero ibm128 0xa.78451e366c2303f4f67b1178e8p-4 : 0x3.7f82f60c4a65b3777843adf868p-4 : inexact-ok += log10p1 upward ibm128 0xa.78451e366c2303f4f67b1178e8p-4 : 0x3.7f82f60c4a65b3777843adf869p-4 : inexact-ok += log10p1 downward binary128 0xa.78451e366c2303f4f67b1178e4p-4 : 0x3.7f82f60c4a65b3777843adf867e8p-4 : inexact-ok += log10p1 tonearest binary128 0xa.78451e366c2303f4f67b1178e4p-4 : 0x3.7f82f60c4a65b3777843adf867e8p-4 : inexact-ok += log10p1 towardzero binary128 0xa.78451e366c2303f4f67b1178e4p-4 : 0x3.7f82f60c4a65b3777843adf867e8p-4 : inexact-ok += log10p1 upward binary128 0xa.78451e366c2303f4f67b1178e4p-4 : 0x3.7f82f60c4a65b3777843adf867eap-4 : inexact-ok += log10p1 downward ibm128 0xa.78451e366c2303f4f67b1178e4p-4 : 0x3.7f82f60c4a65b3777843adf867p-4 : inexact-ok += log10p1 tonearest ibm128 0xa.78451e366c2303f4f67b1178e4p-4 : 0x3.7f82f60c4a65b3777843adf868p-4 : inexact-ok += log10p1 towardzero ibm128 0xa.78451e366c2303f4f67b1178e4p-4 : 0x3.7f82f60c4a65b3777843adf867p-4 : inexact-ok += log10p1 upward ibm128 0xa.78451e366c2303f4f67b1178e4p-4 : 0x3.7f82f60c4a65b3777843adf868p-4 : inexact-ok +log10p1 -0x6.fe3adf062a38696216fa72657104p-4 += log10p1 downward binary32 -0x6.fe3ad8p-4 : -0x3.fe21ccp-4 : inexact-ok += log10p1 tonearest binary32 -0x6.fe3ad8p-4 : -0x3.fe21c8p-4 : inexact-ok += log10p1 towardzero binary32 -0x6.fe3ad8p-4 : -0x3.fe21c8p-4 : inexact-ok += log10p1 upward binary32 -0x6.fe3ad8p-4 : -0x3.fe21c8p-4 : inexact-ok += log10p1 downward binary64 -0x6.fe3ad8p-4 : -0x3.fe21c881aa0c6p-4 : inexact-ok += log10p1 tonearest binary64 -0x6.fe3ad8p-4 : -0x3.fe21c881aa0c6p-4 : inexact-ok += log10p1 towardzero binary64 -0x6.fe3ad8p-4 : -0x3.fe21c881aa0c4p-4 : inexact-ok += log10p1 upward binary64 -0x6.fe3ad8p-4 : -0x3.fe21c881aa0c4p-4 : inexact-ok += log10p1 downward intel96 -0x6.fe3ad8p-4 : -0x3.fe21c881aa0c5718p-4 : inexact-ok += log10p1 tonearest intel96 -0x6.fe3ad8p-4 : -0x3.fe21c881aa0c5718p-4 : inexact-ok += log10p1 towardzero intel96 -0x6.fe3ad8p-4 : -0x3.fe21c881aa0c5714p-4 : inexact-ok += log10p1 upward intel96 -0x6.fe3ad8p-4 : -0x3.fe21c881aa0c5714p-4 : inexact-ok += log10p1 downward m68k96 -0x6.fe3ad8p-4 : -0x3.fe21c881aa0c5718p-4 : inexact-ok += log10p1 tonearest m68k96 -0x6.fe3ad8p-4 : -0x3.fe21c881aa0c5718p-4 : inexact-ok += log10p1 towardzero m68k96 -0x6.fe3ad8p-4 : -0x3.fe21c881aa0c5714p-4 : inexact-ok += log10p1 upward m68k96 -0x6.fe3ad8p-4 : -0x3.fe21c881aa0c5714p-4 : inexact-ok += log10p1 downward binary128 -0x6.fe3ad8p-4 : -0x3.fe21c881aa0c5716fa7b24f5d89cp-4 : inexact-ok += log10p1 tonearest binary128 -0x6.fe3ad8p-4 : -0x3.fe21c881aa0c5716fa7b24f5d89cp-4 : inexact-ok += log10p1 towardzero binary128 -0x6.fe3ad8p-4 : -0x3.fe21c881aa0c5716fa7b24f5d89ap-4 : inexact-ok += log10p1 upward binary128 -0x6.fe3ad8p-4 : -0x3.fe21c881aa0c5716fa7b24f5d89ap-4 : inexact-ok += log10p1 downward ibm128 -0x6.fe3ad8p-4 : -0x3.fe21c881aa0c5716fa7b24f5d9p-4 : inexact-ok += log10p1 tonearest ibm128 -0x6.fe3ad8p-4 : -0x3.fe21c881aa0c5716fa7b24f5d9p-4 : inexact-ok += log10p1 towardzero ibm128 -0x6.fe3ad8p-4 : -0x3.fe21c881aa0c5716fa7b24f5d8p-4 : inexact-ok += log10p1 upward ibm128 -0x6.fe3ad8p-4 : -0x3.fe21c881aa0c5716fa7b24f5d8p-4 : inexact-ok += log10p1 downward binary32 -0x6.fe3aep-4 : -0x3.fe21dp-4 : inexact-ok += log10p1 tonearest binary32 -0x6.fe3aep-4 : -0x3.fe21dp-4 : inexact-ok += log10p1 towardzero binary32 -0x6.fe3aep-4 : -0x3.fe21ccp-4 : inexact-ok += log10p1 upward binary32 -0x6.fe3aep-4 : -0x3.fe21ccp-4 : inexact-ok += log10p1 downward binary64 -0x6.fe3aep-4 : -0x3.fe21ceadab18ap-4 : inexact-ok += log10p1 tonearest binary64 -0x6.fe3aep-4 : -0x3.fe21ceadab18ap-4 : inexact-ok += log10p1 towardzero binary64 -0x6.fe3aep-4 : -0x3.fe21ceadab188p-4 : inexact-ok += log10p1 upward binary64 -0x6.fe3aep-4 : -0x3.fe21ceadab188p-4 : inexact-ok += log10p1 downward intel96 -0x6.fe3aep-4 : -0x3.fe21ceadab18976cp-4 : inexact-ok += log10p1 tonearest intel96 -0x6.fe3aep-4 : -0x3.fe21ceadab18976cp-4 : inexact-ok += log10p1 towardzero intel96 -0x6.fe3aep-4 : -0x3.fe21ceadab189768p-4 : inexact-ok += log10p1 upward intel96 -0x6.fe3aep-4 : -0x3.fe21ceadab189768p-4 : inexact-ok += log10p1 downward m68k96 -0x6.fe3aep-4 : -0x3.fe21ceadab18976cp-4 : inexact-ok += log10p1 tonearest m68k96 -0x6.fe3aep-4 : -0x3.fe21ceadab18976cp-4 : inexact-ok += log10p1 towardzero m68k96 -0x6.fe3aep-4 : -0x3.fe21ceadab189768p-4 : inexact-ok += log10p1 upward m68k96 -0x6.fe3aep-4 : -0x3.fe21ceadab189768p-4 : inexact-ok += log10p1 downward binary128 -0x6.fe3aep-4 : -0x3.fe21ceadab18976b43938dc6772p-4 : inexact-ok += log10p1 tonearest binary128 -0x6.fe3aep-4 : -0x3.fe21ceadab18976b43938dc6771ep-4 : inexact-ok += log10p1 towardzero binary128 -0x6.fe3aep-4 : -0x3.fe21ceadab18976b43938dc6771ep-4 : inexact-ok += log10p1 upward binary128 -0x6.fe3aep-4 : -0x3.fe21ceadab18976b43938dc6771ep-4 : inexact-ok += log10p1 downward ibm128 -0x6.fe3aep-4 : -0x3.fe21ceadab18976b43938dc678p-4 : inexact-ok += log10p1 tonearest ibm128 -0x6.fe3aep-4 : -0x3.fe21ceadab18976b43938dc677p-4 : inexact-ok += log10p1 towardzero ibm128 -0x6.fe3aep-4 : -0x3.fe21ceadab18976b43938dc677p-4 : inexact-ok += log10p1 upward ibm128 -0x6.fe3aep-4 : -0x3.fe21ceadab18976b43938dc677p-4 : inexact-ok += log10p1 downward binary64 -0x6.fe3adf062a384p-4 : -0x3.fe21cdecec8ap-4 : inexact-ok += log10p1 tonearest binary64 -0x6.fe3adf062a384p-4 : -0x3.fe21cdecec8ap-4 : inexact-ok += log10p1 towardzero binary64 -0x6.fe3adf062a384p-4 : -0x3.fe21cdecec89ep-4 : inexact-ok += log10p1 upward binary64 -0x6.fe3adf062a384p-4 : -0x3.fe21cdecec89ep-4 : inexact-ok += log10p1 downward intel96 -0x6.fe3adf062a384p-4 : -0x3.fe21cdecec89f854p-4 : inexact-ok += log10p1 tonearest intel96 -0x6.fe3adf062a384p-4 : -0x3.fe21cdecec89f85p-4 : inexact-ok += log10p1 towardzero intel96 -0x6.fe3adf062a384p-4 : -0x3.fe21cdecec89f85p-4 : inexact-ok += log10p1 upward intel96 -0x6.fe3adf062a384p-4 : -0x3.fe21cdecec89f85p-4 : inexact-ok += log10p1 downward m68k96 -0x6.fe3adf062a384p-4 : -0x3.fe21cdecec89f854p-4 : inexact-ok += log10p1 tonearest m68k96 -0x6.fe3adf062a384p-4 : -0x3.fe21cdecec89f85p-4 : inexact-ok += log10p1 towardzero m68k96 -0x6.fe3adf062a384p-4 : -0x3.fe21cdecec89f85p-4 : inexact-ok += log10p1 upward m68k96 -0x6.fe3adf062a384p-4 : -0x3.fe21cdecec89f85p-4 : inexact-ok += log10p1 downward binary128 -0x6.fe3adf062a384p-4 : -0x3.fe21cdecec89f850a851576a9aa4p-4 : inexact-ok += log10p1 tonearest binary128 -0x6.fe3adf062a384p-4 : -0x3.fe21cdecec89f850a851576a9aa2p-4 : inexact-ok += log10p1 towardzero binary128 -0x6.fe3adf062a384p-4 : -0x3.fe21cdecec89f850a851576a9aa2p-4 : inexact-ok += log10p1 upward binary128 -0x6.fe3adf062a384p-4 : -0x3.fe21cdecec89f850a851576a9aa2p-4 : inexact-ok += log10p1 downward ibm128 -0x6.fe3adf062a384p-4 : -0x3.fe21cdecec89f850a851576a9bp-4 : inexact-ok += log10p1 tonearest ibm128 -0x6.fe3adf062a384p-4 : -0x3.fe21cdecec89f850a851576a9bp-4 : inexact-ok += log10p1 towardzero ibm128 -0x6.fe3adf062a384p-4 : -0x3.fe21cdecec89f850a851576a9ap-4 : inexact-ok += log10p1 upward ibm128 -0x6.fe3adf062a384p-4 : -0x3.fe21cdecec89f850a851576a9ap-4 : inexact-ok += log10p1 downward binary64 -0x6.fe3adf062a388p-4 : -0x3.fe21cdecec8a4p-4 : inexact-ok += log10p1 tonearest binary64 -0x6.fe3adf062a388p-4 : -0x3.fe21cdecec8a2p-4 : inexact-ok += log10p1 towardzero binary64 -0x6.fe3adf062a388p-4 : -0x3.fe21cdecec8a2p-4 : inexact-ok += log10p1 upward binary64 -0x6.fe3adf062a388p-4 : -0x3.fe21cdecec8a2p-4 : inexact-ok += log10p1 downward intel96 -0x6.fe3adf062a388p-4 : -0x3.fe21cdecec8a29b4p-4 : inexact-ok += log10p1 tonearest intel96 -0x6.fe3adf062a388p-4 : -0x3.fe21cdecec8a29bp-4 : inexact-ok += log10p1 towardzero intel96 -0x6.fe3adf062a388p-4 : -0x3.fe21cdecec8a29bp-4 : inexact-ok += log10p1 upward intel96 -0x6.fe3adf062a388p-4 : -0x3.fe21cdecec8a29bp-4 : inexact-ok += log10p1 downward m68k96 -0x6.fe3adf062a388p-4 : -0x3.fe21cdecec8a29b4p-4 : inexact-ok += log10p1 tonearest m68k96 -0x6.fe3adf062a388p-4 : -0x3.fe21cdecec8a29bp-4 : inexact-ok += log10p1 towardzero m68k96 -0x6.fe3adf062a388p-4 : -0x3.fe21cdecec8a29bp-4 : inexact-ok += log10p1 upward m68k96 -0x6.fe3adf062a388p-4 : -0x3.fe21cdecec8a29bp-4 : inexact-ok += log10p1 downward binary128 -0x6.fe3adf062a388p-4 : -0x3.fe21cdecec8a29b0b0c3edf4aa88p-4 : inexact-ok += log10p1 tonearest binary128 -0x6.fe3adf062a388p-4 : -0x3.fe21cdecec8a29b0b0c3edf4aa88p-4 : inexact-ok += log10p1 towardzero binary128 -0x6.fe3adf062a388p-4 : -0x3.fe21cdecec8a29b0b0c3edf4aa86p-4 : inexact-ok += log10p1 upward binary128 -0x6.fe3adf062a388p-4 : -0x3.fe21cdecec8a29b0b0c3edf4aa86p-4 : inexact-ok += log10p1 downward ibm128 -0x6.fe3adf062a388p-4 : -0x3.fe21cdecec8a29b0b0c3edf4abp-4 : inexact-ok += log10p1 tonearest ibm128 -0x6.fe3adf062a388p-4 : -0x3.fe21cdecec8a29b0b0c3edf4abp-4 : inexact-ok += log10p1 towardzero ibm128 -0x6.fe3adf062a388p-4 : -0x3.fe21cdecec8a29b0b0c3edf4aap-4 : inexact-ok += log10p1 upward ibm128 -0x6.fe3adf062a388p-4 : -0x3.fe21cdecec8a29b0b0c3edf4aap-4 : inexact-ok += log10p1 downward intel96 -0x6.fe3adf062a38696p-4 : -0x3.fe21cdecec8a184p-4 : inexact-ok += log10p1 tonearest intel96 -0x6.fe3adf062a38696p-4 : -0x3.fe21cdecec8a183cp-4 : inexact-ok += log10p1 towardzero intel96 -0x6.fe3adf062a38696p-4 : -0x3.fe21cdecec8a183cp-4 : inexact-ok += log10p1 upward intel96 -0x6.fe3adf062a38696p-4 : -0x3.fe21cdecec8a183cp-4 : inexact-ok += log10p1 downward m68k96 -0x6.fe3adf062a38696p-4 : -0x3.fe21cdecec8a184p-4 : inexact-ok += log10p1 tonearest m68k96 -0x6.fe3adf062a38696p-4 : -0x3.fe21cdecec8a183cp-4 : inexact-ok += log10p1 towardzero m68k96 -0x6.fe3adf062a38696p-4 : -0x3.fe21cdecec8a183cp-4 : inexact-ok += log10p1 upward m68k96 -0x6.fe3adf062a38696p-4 : -0x3.fe21cdecec8a183cp-4 : inexact-ok += log10p1 downward binary128 -0x6.fe3adf062a38696p-4 : -0x3.fe21cdecec8a183c3dc76bbcdbc2p-4 : inexact-ok += log10p1 tonearest binary128 -0x6.fe3adf062a38696p-4 : -0x3.fe21cdecec8a183c3dc76bbcdbcp-4 : inexact-ok += log10p1 towardzero binary128 -0x6.fe3adf062a38696p-4 : -0x3.fe21cdecec8a183c3dc76bbcdbcp-4 : inexact-ok += log10p1 upward binary128 -0x6.fe3adf062a38696p-4 : -0x3.fe21cdecec8a183c3dc76bbcdbcp-4 : inexact-ok += log10p1 downward ibm128 -0x6.fe3adf062a38696p-4 : -0x3.fe21cdecec8a183c3dc76bbcdcp-4 : inexact-ok += log10p1 tonearest ibm128 -0x6.fe3adf062a38696p-4 : -0x3.fe21cdecec8a183c3dc76bbcdcp-4 : inexact-ok += log10p1 towardzero ibm128 -0x6.fe3adf062a38696p-4 : -0x3.fe21cdecec8a183c3dc76bbcdbp-4 : inexact-ok += log10p1 upward ibm128 -0x6.fe3adf062a38696p-4 : -0x3.fe21cdecec8a183c3dc76bbcdbp-4 : inexact-ok += log10p1 downward intel96 -0x6.fe3adf062a386968p-4 : -0x3.fe21cdecec8a1844p-4 : inexact-ok += log10p1 tonearest intel96 -0x6.fe3adf062a386968p-4 : -0x3.fe21cdecec8a1844p-4 : inexact-ok += log10p1 towardzero intel96 -0x6.fe3adf062a386968p-4 : -0x3.fe21cdecec8a184p-4 : inexact-ok += log10p1 upward intel96 -0x6.fe3adf062a386968p-4 : -0x3.fe21cdecec8a184p-4 : inexact-ok += log10p1 downward m68k96 -0x6.fe3adf062a386968p-4 : -0x3.fe21cdecec8a1844p-4 : inexact-ok += log10p1 tonearest m68k96 -0x6.fe3adf062a386968p-4 : -0x3.fe21cdecec8a1844p-4 : inexact-ok += log10p1 towardzero m68k96 -0x6.fe3adf062a386968p-4 : -0x3.fe21cdecec8a184p-4 : inexact-ok += log10p1 upward m68k96 -0x6.fe3adf062a386968p-4 : -0x3.fe21cdecec8a184p-4 : inexact-ok += log10p1 downward binary128 -0x6.fe3adf062a386968p-4 : -0x3.fe21cdecec8a184269c87a0fad04p-4 : inexact-ok += log10p1 tonearest binary128 -0x6.fe3adf062a386968p-4 : -0x3.fe21cdecec8a184269c87a0fad02p-4 : inexact-ok += log10p1 towardzero binary128 -0x6.fe3adf062a386968p-4 : -0x3.fe21cdecec8a184269c87a0fad02p-4 : inexact-ok += log10p1 upward binary128 -0x6.fe3adf062a386968p-4 : -0x3.fe21cdecec8a184269c87a0fad02p-4 : inexact-ok += log10p1 downward ibm128 -0x6.fe3adf062a386968p-4 : -0x3.fe21cdecec8a184269c87a0faep-4 : inexact-ok += log10p1 tonearest ibm128 -0x6.fe3adf062a386968p-4 : -0x3.fe21cdecec8a184269c87a0fadp-4 : inexact-ok += log10p1 towardzero ibm128 -0x6.fe3adf062a386968p-4 : -0x3.fe21cdecec8a184269c87a0fadp-4 : inexact-ok += log10p1 upward ibm128 -0x6.fe3adf062a386968p-4 : -0x3.fe21cdecec8a184269c87a0fadp-4 : inexact-ok += log10p1 downward binary128 -0x6.fe3adf062a38696216fa72657104p-4 : -0x3.fe21cdecec8a183dda81e99b4538p-4 : inexact-ok += log10p1 tonearest binary128 -0x6.fe3adf062a38696216fa72657104p-4 : -0x3.fe21cdecec8a183dda81e99b4536p-4 : inexact-ok += log10p1 towardzero binary128 -0x6.fe3adf062a38696216fa72657104p-4 : -0x3.fe21cdecec8a183dda81e99b4536p-4 : inexact-ok += log10p1 upward binary128 -0x6.fe3adf062a38696216fa72657104p-4 : -0x3.fe21cdecec8a183dda81e99b4536p-4 : inexact-ok += log10p1 downward binary128 -0x6.fe3adf062a38696216fa72657p-4 : -0x3.fe21cdecec8a183dda81e99b447p-4 : inexact-ok += log10p1 tonearest binary128 -0x6.fe3adf062a38696216fa72657p-4 : -0x3.fe21cdecec8a183dda81e99b446ep-4 : inexact-ok += log10p1 towardzero binary128 -0x6.fe3adf062a38696216fa72657p-4 : -0x3.fe21cdecec8a183dda81e99b446ep-4 : inexact-ok += log10p1 upward binary128 -0x6.fe3adf062a38696216fa72657p-4 : -0x3.fe21cdecec8a183dda81e99b446ep-4 : inexact-ok += log10p1 downward ibm128 -0x6.fe3adf062a38696216fa72657p-4 : -0x3.fe21cdecec8a183dda81e99b45p-4 : inexact-ok += log10p1 tonearest ibm128 -0x6.fe3adf062a38696216fa72657p-4 : -0x3.fe21cdecec8a183dda81e99b44p-4 : inexact-ok += log10p1 towardzero ibm128 -0x6.fe3adf062a38696216fa72657p-4 : -0x3.fe21cdecec8a183dda81e99b44p-4 : inexact-ok += log10p1 upward ibm128 -0x6.fe3adf062a38696216fa72657p-4 : -0x3.fe21cdecec8a183dda81e99b44p-4 : inexact-ok += log10p1 downward binary128 -0x6.fe3adf062a38696216fa726572p-4 : -0x3.fe21cdecec8a183dda81e99b45fap-4 : inexact-ok += log10p1 tonearest binary128 -0x6.fe3adf062a38696216fa726572p-4 : -0x3.fe21cdecec8a183dda81e99b45fap-4 : inexact-ok += log10p1 towardzero binary128 -0x6.fe3adf062a38696216fa726572p-4 : -0x3.fe21cdecec8a183dda81e99b45f8p-4 : inexact-ok += log10p1 upward binary128 -0x6.fe3adf062a38696216fa726572p-4 : -0x3.fe21cdecec8a183dda81e99b45f8p-4 : inexact-ok += log10p1 downward ibm128 -0x6.fe3adf062a38696216fa726572p-4 : -0x3.fe21cdecec8a183dda81e99b46p-4 : inexact-ok += log10p1 tonearest ibm128 -0x6.fe3adf062a38696216fa726572p-4 : -0x3.fe21cdecec8a183dda81e99b46p-4 : inexact-ok += log10p1 towardzero ibm128 -0x6.fe3adf062a38696216fa726572p-4 : -0x3.fe21cdecec8a183dda81e99b45p-4 : inexact-ok += log10p1 upward ibm128 -0x6.fe3adf062a38696216fa726572p-4 : -0x3.fe21cdecec8a183dda81e99b45p-4 : inexact-ok diff --git a/math/auto-libm-test-out-log2p1 b/math/auto-libm-test-out-log2p1 index c8ec972d6f..5996315418 100644 --- a/math/auto-libm-test-out-log2p1 +++ b/math/auto-libm-test-out-log2p1 @@ -1439,6 +1439,346 @@ log2p1 max = log2p1 tonearest ibm128 0xf.ffffffffffffbffffffffffffcp+1020 : 0x3.fffffffffffffffa3aae26b51fp+8 : inexact-ok = log2p1 towardzero ibm128 0xf.ffffffffffffbffffffffffffcp+1020 : 0x3.fffffffffffffffa3aae26b51fp+8 : inexact-ok = log2p1 upward ibm128 0xf.ffffffffffffbffffffffffffcp+1020 : 0x3.fffffffffffffffa3aae26b52p+8 : inexact-ok +log2p1 0x1.a69b4ap-2 += log2p1 downward binary32 0x6.9a6d28p-4 : 0x7.f9adfp-4 : inexact-ok += log2p1 tonearest binary32 0x6.9a6d28p-4 : 0x7.f9adf8p-4 : inexact-ok += log2p1 towardzero binary32 0x6.9a6d28p-4 : 0x7.f9adfp-4 : inexact-ok += log2p1 upward binary32 0x6.9a6d28p-4 : 0x7.f9adf8p-4 : inexact-ok += log2p1 downward binary64 0x6.9a6d28p-4 : 0x7.f9adf705b1a88p-4 : inexact-ok += log2p1 tonearest binary64 0x6.9a6d28p-4 : 0x7.f9adf705b1a88p-4 : inexact-ok += log2p1 towardzero binary64 0x6.9a6d28p-4 : 0x7.f9adf705b1a88p-4 : inexact-ok += log2p1 upward binary64 0x6.9a6d28p-4 : 0x7.f9adf705b1a8cp-4 : inexact-ok += log2p1 downward intel96 0x6.9a6d28p-4 : 0x7.f9adf705b1a887p-4 : inexact-ok += log2p1 tonearest intel96 0x6.9a6d28p-4 : 0x7.f9adf705b1a88708p-4 : inexact-ok += log2p1 towardzero intel96 0x6.9a6d28p-4 : 0x7.f9adf705b1a887p-4 : inexact-ok += log2p1 upward intel96 0x6.9a6d28p-4 : 0x7.f9adf705b1a88708p-4 : inexact-ok += log2p1 downward m68k96 0x6.9a6d28p-4 : 0x7.f9adf705b1a887p-4 : inexact-ok += log2p1 tonearest m68k96 0x6.9a6d28p-4 : 0x7.f9adf705b1a88708p-4 : inexact-ok += log2p1 towardzero m68k96 0x6.9a6d28p-4 : 0x7.f9adf705b1a887p-4 : inexact-ok += log2p1 upward m68k96 0x6.9a6d28p-4 : 0x7.f9adf705b1a88708p-4 : inexact-ok += log2p1 downward binary128 0x6.9a6d28p-4 : 0x7.f9adf705b1a8870743c5e1b02544p-4 : inexact-ok += log2p1 tonearest binary128 0x6.9a6d28p-4 : 0x7.f9adf705b1a8870743c5e1b02544p-4 : inexact-ok += log2p1 towardzero binary128 0x6.9a6d28p-4 : 0x7.f9adf705b1a8870743c5e1b02544p-4 : inexact-ok += log2p1 upward binary128 0x6.9a6d28p-4 : 0x7.f9adf705b1a8870743c5e1b02548p-4 : inexact-ok += log2p1 downward ibm128 0x6.9a6d28p-4 : 0x7.f9adf705b1a8870743c5e1b024p-4 : inexact-ok += log2p1 tonearest ibm128 0x6.9a6d28p-4 : 0x7.f9adf705b1a8870743c5e1b026p-4 : inexact-ok += log2p1 towardzero ibm128 0x6.9a6d28p-4 : 0x7.f9adf705b1a8870743c5e1b024p-4 : inexact-ok += log2p1 upward ibm128 0x6.9a6d28p-4 : 0x7.f9adf705b1a8870743c5e1b026p-4 : inexact-ok +log2p1 0x1.a7b725780ff2cp-2 += log2p1 downward binary32 0x6.9edc98p-4 : 0x7.fe351p-4 : inexact-ok += log2p1 tonearest binary32 0x6.9edc98p-4 : 0x7.fe351p-4 : inexact-ok += log2p1 towardzero binary32 0x6.9edc98p-4 : 0x7.fe351p-4 : inexact-ok += log2p1 upward binary32 0x6.9edc98p-4 : 0x7.fe3518p-4 : inexact-ok += log2p1 downward binary64 0x6.9edc98p-4 : 0x7.fe35109dc38fcp-4 : inexact-ok += log2p1 tonearest binary64 0x6.9edc98p-4 : 0x7.fe35109dc38fcp-4 : inexact-ok += log2p1 towardzero binary64 0x6.9edc98p-4 : 0x7.fe35109dc38fcp-4 : inexact-ok += log2p1 upward binary64 0x6.9edc98p-4 : 0x7.fe35109dc39p-4 : inexact-ok += log2p1 downward intel96 0x6.9edc98p-4 : 0x7.fe35109dc38fc32p-4 : inexact-ok += log2p1 tonearest intel96 0x6.9edc98p-4 : 0x7.fe35109dc38fc328p-4 : inexact-ok += log2p1 towardzero intel96 0x6.9edc98p-4 : 0x7.fe35109dc38fc32p-4 : inexact-ok += log2p1 upward intel96 0x6.9edc98p-4 : 0x7.fe35109dc38fc328p-4 : inexact-ok += log2p1 downward m68k96 0x6.9edc98p-4 : 0x7.fe35109dc38fc32p-4 : inexact-ok += log2p1 tonearest m68k96 0x6.9edc98p-4 : 0x7.fe35109dc38fc328p-4 : inexact-ok += log2p1 towardzero m68k96 0x6.9edc98p-4 : 0x7.fe35109dc38fc32p-4 : inexact-ok += log2p1 upward m68k96 0x6.9edc98p-4 : 0x7.fe35109dc38fc328p-4 : inexact-ok += log2p1 downward binary128 0x6.9edc98p-4 : 0x7.fe35109dc38fc3250574e9194664p-4 : inexact-ok += log2p1 tonearest binary128 0x6.9edc98p-4 : 0x7.fe35109dc38fc3250574e9194664p-4 : inexact-ok += log2p1 towardzero binary128 0x6.9edc98p-4 : 0x7.fe35109dc38fc3250574e9194664p-4 : inexact-ok += log2p1 upward binary128 0x6.9edc98p-4 : 0x7.fe35109dc38fc3250574e9194668p-4 : inexact-ok += log2p1 downward ibm128 0x6.9edc98p-4 : 0x7.fe35109dc38fc3250574e91946p-4 : inexact-ok += log2p1 tonearest ibm128 0x6.9edc98p-4 : 0x7.fe35109dc38fc3250574e91946p-4 : inexact-ok += log2p1 towardzero ibm128 0x6.9edc98p-4 : 0x7.fe35109dc38fc3250574e91946p-4 : inexact-ok += log2p1 upward ibm128 0x6.9edc98p-4 : 0x7.fe35109dc38fc3250574e91948p-4 : inexact-ok += log2p1 downward binary32 0x6.9edc9p-4 : 0x7.fe3508p-4 : inexact-ok += log2p1 tonearest binary32 0x6.9edc9p-4 : 0x7.fe3508p-4 : inexact-ok += log2p1 towardzero binary32 0x6.9edc9p-4 : 0x7.fe3508p-4 : inexact-ok += log2p1 upward binary32 0x6.9edc9p-4 : 0x7.fe351p-4 : inexact-ok += log2p1 downward binary64 0x6.9edc9p-4 : 0x7.fe350873e267p-4 : inexact-ok += log2p1 tonearest binary64 0x6.9edc9p-4 : 0x7.fe350873e2674p-4 : inexact-ok += log2p1 towardzero binary64 0x6.9edc9p-4 : 0x7.fe350873e267p-4 : inexact-ok += log2p1 upward binary64 0x6.9edc9p-4 : 0x7.fe350873e2674p-4 : inexact-ok += log2p1 downward intel96 0x6.9edc9p-4 : 0x7.fe350873e267306p-4 : inexact-ok += log2p1 tonearest intel96 0x6.9edc9p-4 : 0x7.fe350873e2673068p-4 : inexact-ok += log2p1 towardzero intel96 0x6.9edc9p-4 : 0x7.fe350873e267306p-4 : inexact-ok += log2p1 upward intel96 0x6.9edc9p-4 : 0x7.fe350873e2673068p-4 : inexact-ok += log2p1 downward m68k96 0x6.9edc9p-4 : 0x7.fe350873e267306p-4 : inexact-ok += log2p1 tonearest m68k96 0x6.9edc9p-4 : 0x7.fe350873e2673068p-4 : inexact-ok += log2p1 towardzero m68k96 0x6.9edc9p-4 : 0x7.fe350873e267306p-4 : inexact-ok += log2p1 upward m68k96 0x6.9edc9p-4 : 0x7.fe350873e2673068p-4 : inexact-ok += log2p1 downward binary128 0x6.9edc9p-4 : 0x7.fe350873e2673065341a8d170d04p-4 : inexact-ok += log2p1 tonearest binary128 0x6.9edc9p-4 : 0x7.fe350873e2673065341a8d170d04p-4 : inexact-ok += log2p1 towardzero binary128 0x6.9edc9p-4 : 0x7.fe350873e2673065341a8d170d04p-4 : inexact-ok += log2p1 upward binary128 0x6.9edc9p-4 : 0x7.fe350873e2673065341a8d170d08p-4 : inexact-ok += log2p1 downward ibm128 0x6.9edc9p-4 : 0x7.fe350873e2673065341a8d170cp-4 : inexact-ok += log2p1 tonearest ibm128 0x6.9edc9p-4 : 0x7.fe350873e2673065341a8d170ep-4 : inexact-ok += log2p1 towardzero ibm128 0x6.9edc9p-4 : 0x7.fe350873e2673065341a8d170cp-4 : inexact-ok += log2p1 upward ibm128 0x6.9edc9p-4 : 0x7.fe350873e2673065341a8d170ep-4 : inexact-ok += log2p1 downward binary64 0x6.9edc95e03fcbp-4 : 0x7.fe350e72e4dap-4 : inexact-ok += log2p1 tonearest binary64 0x6.9edc95e03fcbp-4 : 0x7.fe350e72e4da4p-4 : inexact-ok += log2p1 towardzero binary64 0x6.9edc95e03fcbp-4 : 0x7.fe350e72e4dap-4 : inexact-ok += log2p1 upward binary64 0x6.9edc95e03fcbp-4 : 0x7.fe350e72e4da4p-4 : inexact-ok += log2p1 downward intel96 0x6.9edc95e03fcbp-4 : 0x7.fe350e72e4da3808p-4 : inexact-ok += log2p1 tonearest intel96 0x6.9edc95e03fcbp-4 : 0x7.fe350e72e4da381p-4 : inexact-ok += log2p1 towardzero intel96 0x6.9edc95e03fcbp-4 : 0x7.fe350e72e4da3808p-4 : inexact-ok += log2p1 upward intel96 0x6.9edc95e03fcbp-4 : 0x7.fe350e72e4da381p-4 : inexact-ok += log2p1 downward m68k96 0x6.9edc95e03fcbp-4 : 0x7.fe350e72e4da3808p-4 : inexact-ok += log2p1 tonearest m68k96 0x6.9edc95e03fcbp-4 : 0x7.fe350e72e4da381p-4 : inexact-ok += log2p1 towardzero m68k96 0x6.9edc95e03fcbp-4 : 0x7.fe350e72e4da3808p-4 : inexact-ok += log2p1 upward m68k96 0x6.9edc95e03fcbp-4 : 0x7.fe350e72e4da381p-4 : inexact-ok += log2p1 downward binary128 0x6.9edc95e03fcbp-4 : 0x7.fe350e72e4da380c30e23bd613f8p-4 : inexact-ok += log2p1 tonearest binary128 0x6.9edc95e03fcbp-4 : 0x7.fe350e72e4da380c30e23bd613fcp-4 : inexact-ok += log2p1 towardzero binary128 0x6.9edc95e03fcbp-4 : 0x7.fe350e72e4da380c30e23bd613f8p-4 : inexact-ok += log2p1 upward binary128 0x6.9edc95e03fcbp-4 : 0x7.fe350e72e4da380c30e23bd613fcp-4 : inexact-ok += log2p1 downward ibm128 0x6.9edc95e03fcbp-4 : 0x7.fe350e72e4da380c30e23bd612p-4 : inexact-ok += log2p1 tonearest ibm128 0x6.9edc95e03fcbp-4 : 0x7.fe350e72e4da380c30e23bd614p-4 : inexact-ok += log2p1 towardzero ibm128 0x6.9edc95e03fcbp-4 : 0x7.fe350e72e4da380c30e23bd612p-4 : inexact-ok += log2p1 upward ibm128 0x6.9edc95e03fcbp-4 : 0x7.fe350e72e4da380c30e23bd614p-4 : inexact-ok +log2p1 0x5.dda3a1f4c4020ebp-4 += log2p1 downward binary32 0x5.dda3a8p-4 : 0x7.35ab48p-4 : inexact-ok += log2p1 tonearest binary32 0x5.dda3a8p-4 : 0x7.35ab48p-4 : inexact-ok += log2p1 towardzero binary32 0x5.dda3a8p-4 : 0x7.35ab48p-4 : inexact-ok += log2p1 upward binary32 0x5.dda3a8p-4 : 0x7.35ab5p-4 : inexact-ok += log2p1 downward binary64 0x5.dda3a8p-4 : 0x7.35ab49a4f4be4p-4 : inexact-ok += log2p1 tonearest binary64 0x5.dda3a8p-4 : 0x7.35ab49a4f4be8p-4 : inexact-ok += log2p1 towardzero binary64 0x5.dda3a8p-4 : 0x7.35ab49a4f4be4p-4 : inexact-ok += log2p1 upward binary64 0x5.dda3a8p-4 : 0x7.35ab49a4f4be8p-4 : inexact-ok += log2p1 downward intel96 0x5.dda3a8p-4 : 0x7.35ab49a4f4be745p-4 : inexact-ok += log2p1 tonearest intel96 0x5.dda3a8p-4 : 0x7.35ab49a4f4be7458p-4 : inexact-ok += log2p1 towardzero intel96 0x5.dda3a8p-4 : 0x7.35ab49a4f4be745p-4 : inexact-ok += log2p1 upward intel96 0x5.dda3a8p-4 : 0x7.35ab49a4f4be7458p-4 : inexact-ok += log2p1 downward m68k96 0x5.dda3a8p-4 : 0x7.35ab49a4f4be745p-4 : inexact-ok += log2p1 tonearest m68k96 0x5.dda3a8p-4 : 0x7.35ab49a4f4be7458p-4 : inexact-ok += log2p1 towardzero m68k96 0x5.dda3a8p-4 : 0x7.35ab49a4f4be745p-4 : inexact-ok += log2p1 upward m68k96 0x5.dda3a8p-4 : 0x7.35ab49a4f4be7458p-4 : inexact-ok += log2p1 downward binary128 0x5.dda3a8p-4 : 0x7.35ab49a4f4be74564ad9aacdde74p-4 : inexact-ok += log2p1 tonearest binary128 0x5.dda3a8p-4 : 0x7.35ab49a4f4be74564ad9aacdde74p-4 : inexact-ok += log2p1 towardzero binary128 0x5.dda3a8p-4 : 0x7.35ab49a4f4be74564ad9aacdde74p-4 : inexact-ok += log2p1 upward binary128 0x5.dda3a8p-4 : 0x7.35ab49a4f4be74564ad9aacdde78p-4 : inexact-ok += log2p1 downward ibm128 0x5.dda3a8p-4 : 0x7.35ab49a4f4be74564ad9aacddep-4 : inexact-ok += log2p1 tonearest ibm128 0x5.dda3a8p-4 : 0x7.35ab49a4f4be74564ad9aacddep-4 : inexact-ok += log2p1 towardzero ibm128 0x5.dda3a8p-4 : 0x7.35ab49a4f4be74564ad9aacddep-4 : inexact-ok += log2p1 upward ibm128 0x5.dda3a8p-4 : 0x7.35ab49a4f4be74564ad9aacdep-4 : inexact-ok += log2p1 downward binary32 0x5.dda3ap-4 : 0x7.35ab4p-4 : inexact-ok += log2p1 tonearest binary32 0x5.dda3ap-4 : 0x7.35ab4p-4 : inexact-ok += log2p1 towardzero binary32 0x5.dda3ap-4 : 0x7.35ab4p-4 : inexact-ok += log2p1 upward binary32 0x5.dda3ap-4 : 0x7.35ab48p-4 : inexact-ok += log2p1 downward binary64 0x5.dda3ap-4 : 0x7.35ab4132efd7cp-4 : inexact-ok += log2p1 tonearest binary64 0x5.dda3ap-4 : 0x7.35ab4132efd7cp-4 : inexact-ok += log2p1 towardzero binary64 0x5.dda3ap-4 : 0x7.35ab4132efd7cp-4 : inexact-ok += log2p1 upward binary64 0x5.dda3ap-4 : 0x7.35ab4132efd8p-4 : inexact-ok += log2p1 downward intel96 0x5.dda3ap-4 : 0x7.35ab4132efd7c8ep-4 : inexact-ok += log2p1 tonearest intel96 0x5.dda3ap-4 : 0x7.35ab4132efd7c8e8p-4 : inexact-ok += log2p1 towardzero intel96 0x5.dda3ap-4 : 0x7.35ab4132efd7c8ep-4 : inexact-ok += log2p1 upward intel96 0x5.dda3ap-4 : 0x7.35ab4132efd7c8e8p-4 : inexact-ok += log2p1 downward m68k96 0x5.dda3ap-4 : 0x7.35ab4132efd7c8ep-4 : inexact-ok += log2p1 tonearest m68k96 0x5.dda3ap-4 : 0x7.35ab4132efd7c8e8p-4 : inexact-ok += log2p1 towardzero m68k96 0x5.dda3ap-4 : 0x7.35ab4132efd7c8ep-4 : inexact-ok += log2p1 upward m68k96 0x5.dda3ap-4 : 0x7.35ab4132efd7c8e8p-4 : inexact-ok += log2p1 downward binary128 0x5.dda3ap-4 : 0x7.35ab4132efd7c8e78316d2c38d98p-4 : inexact-ok += log2p1 tonearest binary128 0x5.dda3ap-4 : 0x7.35ab4132efd7c8e78316d2c38d9cp-4 : inexact-ok += log2p1 towardzero binary128 0x5.dda3ap-4 : 0x7.35ab4132efd7c8e78316d2c38d98p-4 : inexact-ok += log2p1 upward binary128 0x5.dda3ap-4 : 0x7.35ab4132efd7c8e78316d2c38d9cp-4 : inexact-ok += log2p1 downward ibm128 0x5.dda3ap-4 : 0x7.35ab4132efd7c8e78316d2c38cp-4 : inexact-ok += log2p1 tonearest ibm128 0x5.dda3ap-4 : 0x7.35ab4132efd7c8e78316d2c38ep-4 : inexact-ok += log2p1 towardzero ibm128 0x5.dda3ap-4 : 0x7.35ab4132efd7c8e78316d2c38cp-4 : inexact-ok += log2p1 upward ibm128 0x5.dda3ap-4 : 0x7.35ab4132efd7c8e78316d2c38ep-4 : inexact-ok += log2p1 downward binary64 0x5.dda3a1f4c4024p-4 : 0x7.35ab434394f6p-4 : inexact-ok += log2p1 tonearest binary64 0x5.dda3a1f4c4024p-4 : 0x7.35ab434394f64p-4 : inexact-ok += log2p1 towardzero binary64 0x5.dda3a1f4c4024p-4 : 0x7.35ab434394f6p-4 : inexact-ok += log2p1 upward binary64 0x5.dda3a1f4c4024p-4 : 0x7.35ab434394f64p-4 : inexact-ok += log2p1 downward intel96 0x5.dda3a1f4c4024p-4 : 0x7.35ab434394f63afp-4 : inexact-ok += log2p1 tonearest intel96 0x5.dda3a1f4c4024p-4 : 0x7.35ab434394f63af8p-4 : inexact-ok += log2p1 towardzero intel96 0x5.dda3a1f4c4024p-4 : 0x7.35ab434394f63afp-4 : inexact-ok += log2p1 upward intel96 0x5.dda3a1f4c4024p-4 : 0x7.35ab434394f63af8p-4 : inexact-ok += log2p1 downward m68k96 0x5.dda3a1f4c4024p-4 : 0x7.35ab434394f63afp-4 : inexact-ok += log2p1 tonearest m68k96 0x5.dda3a1f4c4024p-4 : 0x7.35ab434394f63af8p-4 : inexact-ok += log2p1 towardzero m68k96 0x5.dda3a1f4c4024p-4 : 0x7.35ab434394f63afp-4 : inexact-ok += log2p1 upward m68k96 0x5.dda3a1f4c4024p-4 : 0x7.35ab434394f63af8p-4 : inexact-ok += log2p1 downward binary128 0x5.dda3a1f4c4024p-4 : 0x7.35ab434394f63af6724f8509905p-4 : inexact-ok += log2p1 tonearest binary128 0x5.dda3a1f4c4024p-4 : 0x7.35ab434394f63af6724f85099054p-4 : inexact-ok += log2p1 towardzero binary128 0x5.dda3a1f4c4024p-4 : 0x7.35ab434394f63af6724f8509905p-4 : inexact-ok += log2p1 upward binary128 0x5.dda3a1f4c4024p-4 : 0x7.35ab434394f63af6724f85099054p-4 : inexact-ok += log2p1 downward ibm128 0x5.dda3a1f4c4024p-4 : 0x7.35ab434394f63af6724f85099p-4 : inexact-ok += log2p1 tonearest ibm128 0x5.dda3a1f4c4024p-4 : 0x7.35ab434394f63af6724f85099p-4 : inexact-ok += log2p1 towardzero ibm128 0x5.dda3a1f4c4024p-4 : 0x7.35ab434394f63af6724f85099p-4 : inexact-ok += log2p1 upward ibm128 0x5.dda3a1f4c4024p-4 : 0x7.35ab434394f63af6724f850992p-4 : inexact-ok += log2p1 downward binary64 0x5.dda3a1f4c402p-4 : 0x7.35ab434394f5cp-4 : inexact-ok += log2p1 tonearest binary64 0x5.dda3a1f4c402p-4 : 0x7.35ab434394f6p-4 : inexact-ok += log2p1 towardzero binary64 0x5.dda3a1f4c402p-4 : 0x7.35ab434394f5cp-4 : inexact-ok += log2p1 upward binary64 0x5.dda3a1f4c402p-4 : 0x7.35ab434394f6p-4 : inexact-ok += log2p1 downward intel96 0x5.dda3a1f4c402p-4 : 0x7.35ab434394f5f76p-4 : inexact-ok += log2p1 tonearest intel96 0x5.dda3a1f4c402p-4 : 0x7.35ab434394f5f768p-4 : inexact-ok += log2p1 towardzero intel96 0x5.dda3a1f4c402p-4 : 0x7.35ab434394f5f76p-4 : inexact-ok += log2p1 upward intel96 0x5.dda3a1f4c402p-4 : 0x7.35ab434394f5f768p-4 : inexact-ok += log2p1 downward m68k96 0x5.dda3a1f4c402p-4 : 0x7.35ab434394f5f76p-4 : inexact-ok += log2p1 tonearest m68k96 0x5.dda3a1f4c402p-4 : 0x7.35ab434394f5f768p-4 : inexact-ok += log2p1 towardzero m68k96 0x5.dda3a1f4c402p-4 : 0x7.35ab434394f5f76p-4 : inexact-ok += log2p1 upward m68k96 0x5.dda3a1f4c402p-4 : 0x7.35ab434394f5f768p-4 : inexact-ok += log2p1 downward binary128 0x5.dda3a1f4c402p-4 : 0x7.35ab434394f5f7664b13d8d53cc4p-4 : inexact-ok += log2p1 tonearest binary128 0x5.dda3a1f4c402p-4 : 0x7.35ab434394f5f7664b13d8d53cc4p-4 : inexact-ok += log2p1 towardzero binary128 0x5.dda3a1f4c402p-4 : 0x7.35ab434394f5f7664b13d8d53cc4p-4 : inexact-ok += log2p1 upward binary128 0x5.dda3a1f4c402p-4 : 0x7.35ab434394f5f7664b13d8d53cc8p-4 : inexact-ok += log2p1 downward ibm128 0x5.dda3a1f4c402p-4 : 0x7.35ab434394f5f7664b13d8d53cp-4 : inexact-ok += log2p1 tonearest ibm128 0x5.dda3a1f4c402p-4 : 0x7.35ab434394f5f7664b13d8d53cp-4 : inexact-ok += log2p1 towardzero ibm128 0x5.dda3a1f4c402p-4 : 0x7.35ab434394f5f7664b13d8d53cp-4 : inexact-ok += log2p1 upward ibm128 0x5.dda3a1f4c402p-4 : 0x7.35ab434394f5f7664b13d8d53ep-4 : inexact-ok += log2p1 downward intel96 0x5.dda3a1f4c4020ebp-4 : 0x7.35ab434394f606ep-4 : inexact-ok += log2p1 tonearest intel96 0x5.dda3a1f4c4020ebp-4 : 0x7.35ab434394f606e8p-4 : inexact-ok += log2p1 towardzero intel96 0x5.dda3a1f4c4020ebp-4 : 0x7.35ab434394f606ep-4 : inexact-ok += log2p1 upward intel96 0x5.dda3a1f4c4020ebp-4 : 0x7.35ab434394f606e8p-4 : inexact-ok += log2p1 downward m68k96 0x5.dda3a1f4c4020ebp-4 : 0x7.35ab434394f606ep-4 : inexact-ok += log2p1 tonearest m68k96 0x5.dda3a1f4c4020ebp-4 : 0x7.35ab434394f606e8p-4 : inexact-ok += log2p1 towardzero m68k96 0x5.dda3a1f4c4020ebp-4 : 0x7.35ab434394f606ep-4 : inexact-ok += log2p1 upward m68k96 0x5.dda3a1f4c4020ebp-4 : 0x7.35ab434394f606e8p-4 : inexact-ok += log2p1 downward binary128 0x5.dda3a1f4c4020ebp-4 : 0x7.35ab434394f606e7a014ca9a3fp-4 : inexact-ok += log2p1 tonearest binary128 0x5.dda3a1f4c4020ebp-4 : 0x7.35ab434394f606e7a014ca9a3f04p-4 : inexact-ok += log2p1 towardzero binary128 0x5.dda3a1f4c4020ebp-4 : 0x7.35ab434394f606e7a014ca9a3fp-4 : inexact-ok += log2p1 upward binary128 0x5.dda3a1f4c4020ebp-4 : 0x7.35ab434394f606e7a014ca9a3f04p-4 : inexact-ok += log2p1 downward ibm128 0x5.dda3a1f4c4020ebp-4 : 0x7.35ab434394f606e7a014ca9a3ep-4 : inexact-ok += log2p1 tonearest ibm128 0x5.dda3a1f4c4020ebp-4 : 0x7.35ab434394f606e7a014ca9a4p-4 : inexact-ok += log2p1 towardzero ibm128 0x5.dda3a1f4c4020ebp-4 : 0x7.35ab434394f606e7a014ca9a3ep-4 : inexact-ok += log2p1 upward ibm128 0x5.dda3a1f4c4020ebp-4 : 0x7.35ab434394f606e7a014ca9a4p-4 : inexact-ok +log2p1 -0x7.fff3a57fdd2666bcecba33bd89f4p-4 += log2p1 downward binary32 -0x7.fff3ap-4 : -0xf.ffdc5p-4 : inexact-ok += log2p1 tonearest binary32 -0x7.fff3ap-4 : -0xf.ffdc5p-4 : inexact-ok += log2p1 towardzero binary32 -0x7.fff3ap-4 : -0xf.ffdc4p-4 : inexact-ok += log2p1 upward binary32 -0x7.fff3ap-4 : -0xf.ffdc4p-4 : inexact-ok += log2p1 downward binary64 -0x7.fff3ap-4 : -0xf.ffdc4b312d52p-4 : inexact-ok += log2p1 tonearest binary64 -0x7.fff3ap-4 : -0xf.ffdc4b312d518p-4 : inexact-ok += log2p1 towardzero binary64 -0x7.fff3ap-4 : -0xf.ffdc4b312d518p-4 : inexact-ok += log2p1 upward binary64 -0x7.fff3ap-4 : -0xf.ffdc4b312d518p-4 : inexact-ok += log2p1 downward intel96 -0x7.fff3ap-4 : -0xf.ffdc4b312d5189bp-4 : inexact-ok += log2p1 tonearest intel96 -0x7.fff3ap-4 : -0xf.ffdc4b312d5189ap-4 : inexact-ok += log2p1 towardzero intel96 -0x7.fff3ap-4 : -0xf.ffdc4b312d5189ap-4 : inexact-ok += log2p1 upward intel96 -0x7.fff3ap-4 : -0xf.ffdc4b312d5189ap-4 : inexact-ok += log2p1 downward m68k96 -0x7.fff3ap-4 : -0xf.ffdc4b312d5189bp-4 : inexact-ok += log2p1 tonearest m68k96 -0x7.fff3ap-4 : -0xf.ffdc4b312d5189ap-4 : inexact-ok += log2p1 towardzero m68k96 -0x7.fff3ap-4 : -0xf.ffdc4b312d5189ap-4 : inexact-ok += log2p1 upward m68k96 -0x7.fff3ap-4 : -0xf.ffdc4b312d5189ap-4 : inexact-ok += log2p1 downward binary128 -0x7.fff3ap-4 : -0xf.ffdc4b312d5189a5b749e26cad68p-4 : inexact-ok += log2p1 tonearest binary128 -0x7.fff3ap-4 : -0xf.ffdc4b312d5189a5b749e26cad6p-4 : inexact-ok += log2p1 towardzero binary128 -0x7.fff3ap-4 : -0xf.ffdc4b312d5189a5b749e26cad6p-4 : inexact-ok += log2p1 upward binary128 -0x7.fff3ap-4 : -0xf.ffdc4b312d5189a5b749e26cad6p-4 : inexact-ok += log2p1 downward ibm128 -0x7.fff3ap-4 : -0xf.ffdc4b312d5189a5b749e26cbp-4 : inexact-ok += log2p1 tonearest ibm128 -0x7.fff3ap-4 : -0xf.ffdc4b312d5189a5b749e26cacp-4 : inexact-ok += log2p1 towardzero ibm128 -0x7.fff3ap-4 : -0xf.ffdc4b312d5189a5b749e26cacp-4 : inexact-ok += log2p1 upward ibm128 -0x7.fff3ap-4 : -0xf.ffdc4b312d5189a5b749e26cacp-4 : inexact-ok += log2p1 downward binary32 -0x7.fff3a8p-4 : -0xf.ffdc7p-4 : inexact-ok += log2p1 tonearest binary32 -0x7.fff3a8p-4 : -0xf.ffdc6p-4 : inexact-ok += log2p1 towardzero binary32 -0x7.fff3a8p-4 : -0xf.ffdc6p-4 : inexact-ok += log2p1 upward binary32 -0x7.fff3a8p-4 : -0xf.ffdc6p-4 : inexact-ok += log2p1 downward binary64 -0x7.fff3a8p-4 : -0xf.ffdc6246510ep-4 : inexact-ok += log2p1 tonearest binary64 -0x7.fff3a8p-4 : -0xf.ffdc6246510d8p-4 : inexact-ok += log2p1 towardzero binary64 -0x7.fff3a8p-4 : -0xf.ffdc6246510d8p-4 : inexact-ok += log2p1 upward binary64 -0x7.fff3a8p-4 : -0xf.ffdc6246510d8p-4 : inexact-ok += log2p1 downward intel96 -0x7.fff3a8p-4 : -0xf.ffdc6246510d8c8p-4 : inexact-ok += log2p1 tonearest intel96 -0x7.fff3a8p-4 : -0xf.ffdc6246510d8c7p-4 : inexact-ok += log2p1 towardzero intel96 -0x7.fff3a8p-4 : -0xf.ffdc6246510d8c7p-4 : inexact-ok += log2p1 upward intel96 -0x7.fff3a8p-4 : -0xf.ffdc6246510d8c7p-4 : inexact-ok += log2p1 downward m68k96 -0x7.fff3a8p-4 : -0xf.ffdc6246510d8c8p-4 : inexact-ok += log2p1 tonearest m68k96 -0x7.fff3a8p-4 : -0xf.ffdc6246510d8c7p-4 : inexact-ok += log2p1 towardzero m68k96 -0x7.fff3a8p-4 : -0xf.ffdc6246510d8c7p-4 : inexact-ok += log2p1 upward m68k96 -0x7.fff3a8p-4 : -0xf.ffdc6246510d8c7p-4 : inexact-ok += log2p1 downward binary128 -0x7.fff3a8p-4 : -0xf.ffdc6246510d8c73c0f874f4bb5p-4 : inexact-ok += log2p1 tonearest binary128 -0x7.fff3a8p-4 : -0xf.ffdc6246510d8c73c0f874f4bb48p-4 : inexact-ok += log2p1 towardzero binary128 -0x7.fff3a8p-4 : -0xf.ffdc6246510d8c73c0f874f4bb48p-4 : inexact-ok += log2p1 upward binary128 -0x7.fff3a8p-4 : -0xf.ffdc6246510d8c73c0f874f4bb48p-4 : inexact-ok += log2p1 downward ibm128 -0x7.fff3a8p-4 : -0xf.ffdc6246510d8c73c0f874f4bcp-4 : inexact-ok += log2p1 tonearest ibm128 -0x7.fff3a8p-4 : -0xf.ffdc6246510d8c73c0f874f4bcp-4 : inexact-ok += log2p1 towardzero ibm128 -0x7.fff3a8p-4 : -0xf.ffdc6246510d8c73c0f874f4b8p-4 : inexact-ok += log2p1 upward ibm128 -0x7.fff3a8p-4 : -0xf.ffdc6246510d8c73c0f874f4b8p-4 : inexact-ok += log2p1 downward binary64 -0x7.fff3a57fdd264p-4 : -0xf.ffdc5b0f51528p-4 : inexact-ok += log2p1 tonearest binary64 -0x7.fff3a57fdd264p-4 : -0xf.ffdc5b0f5152p-4 : inexact-ok += log2p1 towardzero binary64 -0x7.fff3a57fdd264p-4 : -0xf.ffdc5b0f5152p-4 : inexact-ok += log2p1 upward binary64 -0x7.fff3a57fdd264p-4 : -0xf.ffdc5b0f5152p-4 : inexact-ok += log2p1 downward intel96 -0x7.fff3a57fdd264p-4 : -0xf.ffdc5b0f5152318p-4 : inexact-ok += log2p1 tonearest intel96 -0x7.fff3a57fdd264p-4 : -0xf.ffdc5b0f5152318p-4 : inexact-ok += log2p1 towardzero intel96 -0x7.fff3a57fdd264p-4 : -0xf.ffdc5b0f5152317p-4 : inexact-ok += log2p1 upward intel96 -0x7.fff3a57fdd264p-4 : -0xf.ffdc5b0f5152317p-4 : inexact-ok += log2p1 downward m68k96 -0x7.fff3a57fdd264p-4 : -0xf.ffdc5b0f5152318p-4 : inexact-ok += log2p1 tonearest m68k96 -0x7.fff3a57fdd264p-4 : -0xf.ffdc5b0f5152318p-4 : inexact-ok += log2p1 towardzero m68k96 -0x7.fff3a57fdd264p-4 : -0xf.ffdc5b0f5152317p-4 : inexact-ok += log2p1 upward m68k96 -0x7.fff3a57fdd264p-4 : -0xf.ffdc5b0f5152317p-4 : inexact-ok += log2p1 downward binary128 -0x7.fff3a57fdd264p-4 : -0xf.ffdc5b0f5152317b50908372a87p-4 : inexact-ok += log2p1 tonearest binary128 -0x7.fff3a57fdd264p-4 : -0xf.ffdc5b0f5152317b50908372a87p-4 : inexact-ok += log2p1 towardzero binary128 -0x7.fff3a57fdd264p-4 : -0xf.ffdc5b0f5152317b50908372a868p-4 : inexact-ok += log2p1 upward binary128 -0x7.fff3a57fdd264p-4 : -0xf.ffdc5b0f5152317b50908372a868p-4 : inexact-ok += log2p1 downward ibm128 -0x7.fff3a57fdd264p-4 : -0xf.ffdc5b0f5152317b50908372acp-4 : inexact-ok += log2p1 tonearest ibm128 -0x7.fff3a57fdd264p-4 : -0xf.ffdc5b0f5152317b50908372a8p-4 : inexact-ok += log2p1 towardzero ibm128 -0x7.fff3a57fdd264p-4 : -0xf.ffdc5b0f5152317b50908372a8p-4 : inexact-ok += log2p1 upward ibm128 -0x7.fff3a57fdd264p-4 : -0xf.ffdc5b0f5152317b50908372a8p-4 : inexact-ok += log2p1 downward binary64 -0x7.fff3a57fdd268p-4 : -0xf.ffdc5b0f5153p-4 : inexact-ok += log2p1 tonearest binary64 -0x7.fff3a57fdd268p-4 : -0xf.ffdc5b0f5153p-4 : inexact-ok += log2p1 towardzero binary64 -0x7.fff3a57fdd268p-4 : -0xf.ffdc5b0f51528p-4 : inexact-ok += log2p1 upward binary64 -0x7.fff3a57fdd268p-4 : -0xf.ffdc5b0f51528p-4 : inexact-ok += log2p1 downward intel96 -0x7.fff3a57fdd268p-4 : -0xf.ffdc5b0f5152ea3p-4 : inexact-ok += log2p1 tonearest intel96 -0x7.fff3a57fdd268p-4 : -0xf.ffdc5b0f5152ea2p-4 : inexact-ok += log2p1 towardzero intel96 -0x7.fff3a57fdd268p-4 : -0xf.ffdc5b0f5152ea2p-4 : inexact-ok += log2p1 upward intel96 -0x7.fff3a57fdd268p-4 : -0xf.ffdc5b0f5152ea2p-4 : inexact-ok += log2p1 downward m68k96 -0x7.fff3a57fdd268p-4 : -0xf.ffdc5b0f5152ea3p-4 : inexact-ok += log2p1 tonearest m68k96 -0x7.fff3a57fdd268p-4 : -0xf.ffdc5b0f5152ea2p-4 : inexact-ok += log2p1 towardzero m68k96 -0x7.fff3a57fdd268p-4 : -0xf.ffdc5b0f5152ea2p-4 : inexact-ok += log2p1 upward m68k96 -0x7.fff3a57fdd268p-4 : -0xf.ffdc5b0f5152ea2p-4 : inexact-ok += log2p1 downward binary128 -0x7.fff3a57fdd268p-4 : -0xf.ffdc5b0f5152ea246e93363ea06p-4 : inexact-ok += log2p1 tonearest binary128 -0x7.fff3a57fdd268p-4 : -0xf.ffdc5b0f5152ea246e93363ea058p-4 : inexact-ok += log2p1 towardzero binary128 -0x7.fff3a57fdd268p-4 : -0xf.ffdc5b0f5152ea246e93363ea058p-4 : inexact-ok += log2p1 upward binary128 -0x7.fff3a57fdd268p-4 : -0xf.ffdc5b0f5152ea246e93363ea058p-4 : inexact-ok += log2p1 downward ibm128 -0x7.fff3a57fdd268p-4 : -0xf.ffdc5b0f5152ea246e93363ea4p-4 : inexact-ok += log2p1 tonearest ibm128 -0x7.fff3a57fdd268p-4 : -0xf.ffdc5b0f5152ea246e93363eap-4 : inexact-ok += log2p1 towardzero ibm128 -0x7.fff3a57fdd268p-4 : -0xf.ffdc5b0f5152ea246e93363eap-4 : inexact-ok += log2p1 upward ibm128 -0x7.fff3a57fdd268p-4 : -0xf.ffdc5b0f5152ea246e93363eap-4 : inexact-ok += log2p1 downward intel96 -0x7.fff3a57fdd2666b8p-4 : -0xf.ffdc5b0f5152a14p-4 : inexact-ok += log2p1 tonearest intel96 -0x7.fff3a57fdd2666b8p-4 : -0xf.ffdc5b0f5152a13p-4 : inexact-ok += log2p1 towardzero intel96 -0x7.fff3a57fdd2666b8p-4 : -0xf.ffdc5b0f5152a13p-4 : inexact-ok += log2p1 upward intel96 -0x7.fff3a57fdd2666b8p-4 : -0xf.ffdc5b0f5152a13p-4 : inexact-ok += log2p1 downward m68k96 -0x7.fff3a57fdd2666b8p-4 : -0xf.ffdc5b0f5152a14p-4 : inexact-ok += log2p1 tonearest m68k96 -0x7.fff3a57fdd2666b8p-4 : -0xf.ffdc5b0f5152a13p-4 : inexact-ok += log2p1 towardzero m68k96 -0x7.fff3a57fdd2666b8p-4 : -0xf.ffdc5b0f5152a13p-4 : inexact-ok += log2p1 upward m68k96 -0x7.fff3a57fdd2666b8p-4 : -0xf.ffdc5b0f5152a13p-4 : inexact-ok += log2p1 downward binary128 -0x7.fff3a57fdd2666b8p-4 : -0xf.ffdc5b0f5152a132a098655dcd6p-4 : inexact-ok += log2p1 tonearest binary128 -0x7.fff3a57fdd2666b8p-4 : -0xf.ffdc5b0f5152a132a098655dcd58p-4 : inexact-ok += log2p1 towardzero binary128 -0x7.fff3a57fdd2666b8p-4 : -0xf.ffdc5b0f5152a132a098655dcd58p-4 : inexact-ok += log2p1 upward binary128 -0x7.fff3a57fdd2666b8p-4 : -0xf.ffdc5b0f5152a132a098655dcd58p-4 : inexact-ok += log2p1 downward ibm128 -0x7.fff3a57fdd2666b8p-4 : -0xf.ffdc5b0f5152a132a098655ddp-4 : inexact-ok += log2p1 tonearest ibm128 -0x7.fff3a57fdd2666b8p-4 : -0xf.ffdc5b0f5152a132a098655dccp-4 : inexact-ok += log2p1 towardzero ibm128 -0x7.fff3a57fdd2666b8p-4 : -0xf.ffdc5b0f5152a132a098655dccp-4 : inexact-ok += log2p1 upward ibm128 -0x7.fff3a57fdd2666b8p-4 : -0xf.ffdc5b0f5152a132a098655dccp-4 : inexact-ok += log2p1 downward intel96 -0x7.fff3a57fdd2666cp-4 : -0xf.ffdc5b0f5152a15p-4 : inexact-ok += log2p1 tonearest intel96 -0x7.fff3a57fdd2666cp-4 : -0xf.ffdc5b0f5152a15p-4 : inexact-ok += log2p1 towardzero intel96 -0x7.fff3a57fdd2666cp-4 : -0xf.ffdc5b0f5152a14p-4 : inexact-ok += log2p1 upward intel96 -0x7.fff3a57fdd2666cp-4 : -0xf.ffdc5b0f5152a14p-4 : inexact-ok += log2p1 downward m68k96 -0x7.fff3a57fdd2666cp-4 : -0xf.ffdc5b0f5152a15p-4 : inexact-ok += log2p1 tonearest m68k96 -0x7.fff3a57fdd2666cp-4 : -0xf.ffdc5b0f5152a15p-4 : inexact-ok += log2p1 towardzero m68k96 -0x7.fff3a57fdd2666cp-4 : -0xf.ffdc5b0f5152a14p-4 : inexact-ok += log2p1 upward m68k96 -0x7.fff3a57fdd2666cp-4 : -0xf.ffdc5b0f5152a14p-4 : inexact-ok += log2p1 downward binary128 -0x7.fff3a57fdd2666cp-4 : -0xf.ffdc5b0f5152a149b5bc25b426ep-4 : inexact-ok += log2p1 tonearest binary128 -0x7.fff3a57fdd2666cp-4 : -0xf.ffdc5b0f5152a149b5bc25b426d8p-4 : inexact-ok += log2p1 towardzero binary128 -0x7.fff3a57fdd2666cp-4 : -0xf.ffdc5b0f5152a149b5bc25b426d8p-4 : inexact-ok += log2p1 upward binary128 -0x7.fff3a57fdd2666cp-4 : -0xf.ffdc5b0f5152a149b5bc25b426d8p-4 : inexact-ok += log2p1 downward ibm128 -0x7.fff3a57fdd2666cp-4 : -0xf.ffdc5b0f5152a149b5bc25b428p-4 : inexact-ok += log2p1 tonearest ibm128 -0x7.fff3a57fdd2666cp-4 : -0xf.ffdc5b0f5152a149b5bc25b428p-4 : inexact-ok += log2p1 towardzero ibm128 -0x7.fff3a57fdd2666cp-4 : -0xf.ffdc5b0f5152a149b5bc25b424p-4 : inexact-ok += log2p1 upward ibm128 -0x7.fff3a57fdd2666cp-4 : -0xf.ffdc5b0f5152a149b5bc25b424p-4 : inexact-ok += log2p1 downward binary128 -0x7.fff3a57fdd2666bcecba33bd89f4p-4 : -0xf.ffdc5b0f5152a140d63324fbcaa8p-4 : inexact-ok += log2p1 tonearest binary128 -0x7.fff3a57fdd2666bcecba33bd89f4p-4 : -0xf.ffdc5b0f5152a140d63324fbcaap-4 : inexact-ok += log2p1 towardzero binary128 -0x7.fff3a57fdd2666bcecba33bd89f4p-4 : -0xf.ffdc5b0f5152a140d63324fbcaap-4 : inexact-ok += log2p1 upward binary128 -0x7.fff3a57fdd2666bcecba33bd89f4p-4 : -0xf.ffdc5b0f5152a140d63324fbcaap-4 : inexact-ok += log2p1 downward binary128 -0x7.fff3a57fdd2666bcecba33bd88p-4 : -0xf.ffdc5b0f5152a140d63324fbc508p-4 : inexact-ok += log2p1 tonearest binary128 -0x7.fff3a57fdd2666bcecba33bd88p-4 : -0xf.ffdc5b0f5152a140d63324fbc5p-4 : inexact-ok += log2p1 towardzero binary128 -0x7.fff3a57fdd2666bcecba33bd88p-4 : -0xf.ffdc5b0f5152a140d63324fbc5p-4 : inexact-ok += log2p1 upward binary128 -0x7.fff3a57fdd2666bcecba33bd88p-4 : -0xf.ffdc5b0f5152a140d63324fbc5p-4 : inexact-ok += log2p1 downward ibm128 -0x7.fff3a57fdd2666bcecba33bd88p-4 : -0xf.ffdc5b0f5152a140d63324fbc8p-4 : inexact-ok += log2p1 tonearest ibm128 -0x7.fff3a57fdd2666bcecba33bd88p-4 : -0xf.ffdc5b0f5152a140d63324fbc4p-4 : inexact-ok += log2p1 towardzero ibm128 -0x7.fff3a57fdd2666bcecba33bd88p-4 : -0xf.ffdc5b0f5152a140d63324fbc4p-4 : inexact-ok += log2p1 upward ibm128 -0x7.fff3a57fdd2666bcecba33bd88p-4 : -0xf.ffdc5b0f5152a140d63324fbc4p-4 : inexact-ok += log2p1 downward binary128 -0x7.fff3a57fdd2666bcecba33bd8ap-4 : -0xf.ffdc5b0f5152a140d63324fbcac8p-4 : inexact-ok += log2p1 tonearest binary128 -0x7.fff3a57fdd2666bcecba33bd8ap-4 : -0xf.ffdc5b0f5152a140d63324fbcac8p-4 : inexact-ok += log2p1 towardzero binary128 -0x7.fff3a57fdd2666bcecba33bd8ap-4 : -0xf.ffdc5b0f5152a140d63324fbcacp-4 : inexact-ok += log2p1 upward binary128 -0x7.fff3a57fdd2666bcecba33bd8ap-4 : -0xf.ffdc5b0f5152a140d63324fbcacp-4 : inexact-ok += log2p1 downward ibm128 -0x7.fff3a57fdd2666bcecba33bd8ap-4 : -0xf.ffdc5b0f5152a140d63324fbccp-4 : inexact-ok += log2p1 tonearest ibm128 -0x7.fff3a57fdd2666bcecba33bd8ap-4 : -0xf.ffdc5b0f5152a140d63324fbccp-4 : inexact-ok += log2p1 towardzero ibm128 -0x7.fff3a57fdd2666bcecba33bd8ap-4 : -0xf.ffdc5b0f5152a140d63324fbc8p-4 : inexact-ok += log2p1 upward ibm128 -0x7.fff3a57fdd2666bcecba33bd8ap-4 : -0xf.ffdc5b0f5152a140d63324fbc8p-4 : inexact-ok log2p1 0x7.2a4368p-4 = log2p1 downward binary32 0x7.2a4368p-4 : 0x8.8ac63p-4 : inexact-ok = log2p1 tonearest binary32 0x7.2a4368p-4 : 0x8.8ac64p-4 : inexact-ok diff --git a/math/test-nan-payload.c b/math/test-nan-payload.c index 4a81dc348b..413791e09f 100644 --- a/math/test-nan-payload.c +++ b/math/test-nan-payload.c @@ -16,6 +16,9 @@ License along with the GNU C Library; if not, see <https://www.gnu.org/licenses/>. */ +#define _LIBC_TEST 1 +#define __STDC_WANT_IEC_60559_TYPES_EXT__ +#include <errno.h> #include <float.h> #include <math.h> #include <stdio.h> @@ -31,7 +34,7 @@ #define CHECK_IS_NAN(TYPE, A) \ do \ { \ - if (isnan (A)) \ + if (isnan (A) && !issignaling (A)) \ puts ("PASS: " #TYPE " " #A); \ else \ { \ @@ -41,6 +44,19 @@ } \ while (0) +#define CHECK_PAYLOAD(TYPE, FUNC, A, P) \ + do \ + { \ + if (FUNC (&(A)) == (P)) \ + puts ("PASS: " #TYPE " payload " #A); \ + else \ + { \ + puts ("FAIL: " #TYPE " payload " #A); \ + result = 1; \ + } \ + } \ + while (0) + #define CHECK_SAME_NAN(TYPE, A, B) \ do \ { \ @@ -67,33 +83,97 @@ } \ while (0) +#define CLEAR_ERRNO \ + do \ + { \ + errno = 12345; \ + } \ + while (0) + +#define CHECK_ERRNO(TYPE, A) \ + do \ + { \ + if (errno == 12345) \ + puts ("PASS: " #TYPE " " #A " errno"); \ + else \ + { \ + puts ("FAIL: " #TYPE " " #A " errno"); \ + result = 1; \ + } \ + } \ + while (0) + /* Cannot test payloads by memcmp for formats where NaNs have padding bits. */ #define CAN_TEST_EQ(MANT_DIG) ((MANT_DIG) != 64 && (MANT_DIG) != 106) -#define RUN_TESTS(TYPE, SFUNC, FUNC, MANT_DIG) \ +#define RUN_TESTS(TYPE, SFUNC, FUNC, PLFUNC, MANT_DIG) \ do \ { \ + CLEAR_ERRNO; \ TYPE n123 = WRAP_NAN (FUNC, "123"); \ + CHECK_ERRNO (TYPE, n123); \ CHECK_IS_NAN (TYPE, n123); \ + CLEAR_ERRNO; \ TYPE s123 = WRAP_STRTO (SFUNC, "NAN(123)"); \ + CHECK_ERRNO (TYPE, s123); \ CHECK_IS_NAN (TYPE, s123); \ + CLEAR_ERRNO; \ TYPE n456 = WRAP_NAN (FUNC, "456"); \ + CHECK_ERRNO (TYPE, n456); \ CHECK_IS_NAN (TYPE, n456); \ + CLEAR_ERRNO; \ TYPE s456 = WRAP_STRTO (SFUNC, "NAN(456)"); \ + CHECK_ERRNO (TYPE, s456); \ CHECK_IS_NAN (TYPE, s456); \ + CLEAR_ERRNO; \ + TYPE nh123 = WRAP_NAN (FUNC, "0x123"); \ + CHECK_ERRNO (TYPE, nh123); \ + CHECK_IS_NAN (TYPE, nh123); \ + CLEAR_ERRNO; \ + TYPE sh123 = WRAP_STRTO (SFUNC, "NAN(0x123)"); \ + CHECK_ERRNO (TYPE, sh123); \ + CHECK_IS_NAN (TYPE, sh123); \ + CLEAR_ERRNO; \ TYPE n123x = WRAP_NAN (FUNC, "123)"); \ + CHECK_ERRNO (TYPE, n123x); \ CHECK_IS_NAN (TYPE, n123x); \ + CLEAR_ERRNO; \ TYPE nemp = WRAP_NAN (FUNC, ""); \ + CHECK_ERRNO (TYPE, nemp); \ CHECK_IS_NAN (TYPE, nemp); \ + CLEAR_ERRNO; \ TYPE semp = WRAP_STRTO (SFUNC, "NAN()"); \ + CHECK_ERRNO (TYPE, semp); \ CHECK_IS_NAN (TYPE, semp); \ + CLEAR_ERRNO; \ TYPE sx = WRAP_STRTO (SFUNC, "NAN"); \ + CHECK_ERRNO (TYPE, sx); \ CHECK_IS_NAN (TYPE, sx); \ + CLEAR_ERRNO; \ + TYPE novf = WRAP_NAN (FUNC, "9999999999" \ + "99999999999999999999" \ + "9999999999"); \ + CHECK_ERRNO (TYPE, novf); \ + CHECK_IS_NAN (TYPE, novf); \ + CLEAR_ERRNO; \ + TYPE sovf = WRAP_STRTO (SFUNC, "NAN(9999999999" \ + "99999999999999999999" \ + "9999999999)"); \ + CHECK_ERRNO (TYPE, sovf); \ + CHECK_IS_NAN (TYPE, sovf); \ if (CAN_TEST_EQ (MANT_DIG)) \ CHECK_SAME_NAN (TYPE, n123, s123); \ + CHECK_PAYLOAD (TYPE, PLFUNC, n123, 123); \ + CHECK_PAYLOAD (TYPE, PLFUNC, s123, 123); \ if (CAN_TEST_EQ (MANT_DIG)) \ CHECK_SAME_NAN (TYPE, n456, s456); \ + CHECK_PAYLOAD (TYPE, PLFUNC, n456, 456); \ + CHECK_PAYLOAD (TYPE, PLFUNC, s456, 456); \ + if (CAN_TEST_EQ (MANT_DIG)) \ + CHECK_SAME_NAN (TYPE, nh123, sh123); \ + CHECK_PAYLOAD (TYPE, PLFUNC, nh123, 0x123); \ + CHECK_PAYLOAD (TYPE, PLFUNC, sh123, 0x123); \ if (CAN_TEST_EQ (MANT_DIG)) \ CHECK_SAME_NAN (TYPE, nemp, semp); \ if (CAN_TEST_EQ (MANT_DIG)) \ @@ -110,9 +190,31 @@ static int do_test (void) { int result = 0; - RUN_TESTS (float, strtof, nanf, FLT_MANT_DIG); - RUN_TESTS (double, strtod, nan, DBL_MANT_DIG); - RUN_TESTS (long double, strtold, nanl, LDBL_MANT_DIG); + RUN_TESTS (float, strtof, nanf, getpayloadf, FLT_MANT_DIG); + RUN_TESTS (double, strtod, nan, getpayload, DBL_MANT_DIG); + RUN_TESTS (long double, strtold, nanl, getpayloadl, LDBL_MANT_DIG); +#if __HAVE_FLOAT16 + RUN_TESTS (_Float16, strtof16, nanf16, getpayloadf16, FLT16_MANT_DIG); +#endif +#if __HAVE_FLOAT32 + RUN_TESTS (_Float32, strtof32, nanf32, getpayloadf32, FLT32_MANT_DIG); +#endif +#if __HAVE_FLOAT64 + RUN_TESTS (_Float64, strtof64, nanf64, getpayloadf64, FLT64_MANT_DIG); +#endif +#if __HAVE_FLOAT128 + RUN_TESTS (_Float128, strtof128, nanf128, getpayloadf128, FLT128_MANT_DIG); +#endif +#if __HAVE_FLOAT32X + RUN_TESTS (_Float32x, strtof32x, nanf32x, getpayloadf32x, FLT32X_MANT_DIG); +#endif +#if __HAVE_FLOAT64X + RUN_TESTS (_Float64x, strtof64x, nanf64x, getpayloadf64x, FLT64X_MANT_DIG); +#endif +#if __HAVE_FLOAT128X + RUN_TESTS (_Float128x, strtof128x, nanf128x, getpayloadf128x, + FLT128X_MANT_DIG); +#endif return result; } diff --git a/math/test-tgmath2.c b/math/test-tgmath2.c index 37afa8a08a..4aeb877b8e 100644 --- a/math/test-tgmath2.c +++ b/math/test-tgmath2.c @@ -24,6 +24,8 @@ #include <string.h> #include <tgmath.h> +#include <support/check.h> + //#define DEBUG typedef complex float cfloat; @@ -87,13 +89,6 @@ enum int count; int counts[Tlast][C_last]; -#define FAIL(str) \ - do \ - { \ - printf ("%s failure on line %d\n", (str), __LINE__); \ - result = 1; \ - } \ - while (0) #define TEST_TYPE_ONLY(expr, rettype) \ do \ { \ @@ -133,8 +128,6 @@ int counts[Tlast][C_last]; int test_cos (const int Vint4, const long long int Vllong4) { - int result = 0; - TEST (cos (vfloat1), float, cos); TEST (cos (vdouble1), double, cos); TEST (cos (vldouble1), ldouble, cos); @@ -152,7 +145,7 @@ test_cos (const int Vint4, const long long int Vllong4) TEST (cos (Vcdouble1), cdouble, cos); TEST (cos (Vcldouble1), cldouble, cos); - return result; + return 0; } int diff --git a/misc/Makefile b/misc/Makefile index 5d17c562fe..7b7f8351bf 100644 --- a/misc/Makefile +++ b/misc/Makefile @@ -257,6 +257,8 @@ tests := \ tst-mntent-blank-passno \ tst-mntent-escape \ tst-mntent2 \ + tst-mremap1 \ + tst-mremap2 \ tst-preadvwritev \ tst-preadvwritev2 \ tst-preadvwritev64 \ diff --git a/misc/tst-mremap1.c b/misc/tst-mremap1.c new file mode 100644 index 0000000000..0469991a6c --- /dev/null +++ b/misc/tst-mremap1.c @@ -0,0 +1,46 @@ +/* Test mremap with MREMAP_MAYMOVE. + Copyright (C) 2024 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 + <https://www.gnu.org/licenses/>. */ + +#include <errno.h> +#include <sys/mman.h> +#include <support/xstdlib.h> +#include <support/xunistd.h> +#include <support/check.h> +#include <support/test-driver.h> + +static int +do_test (void) +{ + size_t old_size = getpagesize (); + char *old_addr = xmmap (NULL, old_size, PROT_READ | PROT_WRITE, + MAP_PRIVATE | MAP_ANONYMOUS, -1); + old_addr[0] = 1; + old_addr[old_size - 1] = 2; + + /* Test MREMAP_MAYMOVE. */ + size_t new_size = old_size + old_size; + char *new_addr = mremap (old_addr, old_size, new_size, MREMAP_MAYMOVE); + TEST_VERIFY_EXIT (new_addr != MAP_FAILED); + new_addr[0] = 1; + new_addr[new_size - 1] = 2; + xmunmap (new_addr, new_size); + + return 0; +} + +#include <support/test-driver.c> diff --git a/misc/tst-mremap2.c b/misc/tst-mremap2.c new file mode 100644 index 0000000000..45be7f0369 --- /dev/null +++ b/misc/tst-mremap2.c @@ -0,0 +1,54 @@ +/* Test mremap with MREMAP_FIXED. + Copyright (C) 2024 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 + <https://www.gnu.org/licenses/>. */ + +#include <errno.h> +#include <sys/mman.h> +#include <support/xstdlib.h> +#include <support/xunistd.h> +#include <support/test-driver.h> +#include <mremap-failure.h> + +static int +do_test (void) +{ + size_t old_size = getpagesize (); + size_t new_size = old_size + old_size; + char *old_addr = xmmap (NULL, old_size, PROT_READ | PROT_WRITE, + MAP_PRIVATE | MAP_ANONYMOUS, -1); + old_addr[0] = 1; + old_addr[old_size - 1] = 2; + + char *fixed_addr = xmmap (NULL, new_size, PROT_READ | PROT_WRITE, + MAP_PRIVATE | MAP_ANONYMOUS, -1); + fixed_addr[0] = 1; + fixed_addr[new_size - 1] = 2; + + /* Test MREMAP_FIXED. */ + char *new_addr = mremap (old_addr, old_size, new_size, + MREMAP_FIXED | MREMAP_MAYMOVE, + fixed_addr); + if (new_addr == MAP_FAILED) + return mremap_failure_exit (errno); + new_addr[0] = 1; + new_addr[new_size - 1] = 2; + xmunmap (new_addr, new_size); + + return 0; +} + +#include <support/test-driver.c> diff --git a/nptl/Makefile b/nptl/Makefile index c4c27e0d23..bf4c29b6ed 100644 --- a/nptl/Makefile +++ b/nptl/Makefile @@ -204,6 +204,7 @@ routines = \ sem_timedwait \ sem_unlink \ sem_wait \ + syscall_cancel \ tpp \ unwind \ vars \ @@ -235,7 +236,8 @@ CFLAGS-pthread_setcanceltype.c += -fexceptions -fasynchronous-unwind-tables # These are internal functions which similar functionality as setcancelstate # and setcanceltype. -CFLAGS-cancellation.c += -fasynchronous-unwind-tables +CFLAGS-cancellation.c += -fexceptions -fasynchronous-unwind-tables +CFLAGS-syscall_cancel.c += -fexceptions -fasynchronous-unwind-tables # Calling pthread_exit() must cause the registered cancel handlers to # be executed. Therefore exceptions have to be thrown through this @@ -279,6 +281,7 @@ tests = \ tst-cancel7 \ tst-cancel17 \ tst-cancel24 \ + tst-cancel31 \ tst-cond26 \ tst-context1 \ tst-default-attr \ @@ -404,7 +407,10 @@ xtests += tst-eintr1 test-srcs = tst-oddstacklimit -gen-as-const-headers = unwindbuf.sym +gen-as-const-headers = \ + descr-const.sym \ + unwindbuf.sym \ + # gen-as-const-headers gen-py-const-headers := nptl_lock_constants.pysym pretty-printers := nptl-printers.py diff --git a/nptl/allocatestack.c b/nptl/allocatestack.c index f35a8369bd..2cb562f8ea 100644 --- a/nptl/allocatestack.c +++ b/nptl/allocatestack.c @@ -139,7 +139,7 @@ get_cached_stack (size_t *sizep, void **memp) memset (dtv, '\0', (dtv[-1].counter + 1) * sizeof (dtv_t)); /* Re-initialize the TLS. */ - _dl_allocate_tls_init (TLS_TPADJ (result), true); + _dl_allocate_tls_init (TLS_TPADJ (result), false); return result; } diff --git a/nptl/cancellation.c b/nptl/cancellation.c index 7ce60e70d0..e71008b58b 100644 --- a/nptl/cancellation.c +++ b/nptl/cancellation.c @@ -18,74 +18,93 @@ #include <setjmp.h> #include <stdlib.h> #include "pthreadP.h" -#include <futex-internal.h> - -/* The next two functions are similar to pthread_setcanceltype() but - more specialized for the use in the cancelable functions like write(). - They do not need to check parameters etc. These functions must be - AS-safe, with the exception of the actual cancellation, because they - are called by wrappers around AS-safe functions like write().*/ -int -__pthread_enable_asynccancel (void) +/* Called by the INTERNAL_SYSCALL_CANCEL macro, check for cancellation and + returns the syscall value or its negative error code. */ +long int +__internal_syscall_cancel (__syscall_arg_t a1, __syscall_arg_t a2, + __syscall_arg_t a3, __syscall_arg_t a4, + __syscall_arg_t a5, __syscall_arg_t a6, + __SYSCALL_CANCEL7_ARG_DEF + __syscall_arg_t nr) { - struct pthread *self = THREAD_SELF; - int oldval = atomic_load_relaxed (&self->cancelhandling); + long int result; + struct pthread *pd = THREAD_SELF; - while (1) + /* If cancellation is not enabled, call the syscall directly and also + for thread terminatation to avoid call __syscall_do_cancel while + executing cleanup handlers. */ + int ch = atomic_load_relaxed (&pd->cancelhandling); + if (SINGLE_THREAD_P || !cancel_enabled (ch) || cancel_exiting (ch)) { - int newval = oldval | CANCELTYPE_BITMASK; - - if (newval == oldval) - break; + result = INTERNAL_SYSCALL_NCS_CALL (nr, a1, a2, a3, a4, a5, a6 + __SYSCALL_CANCEL7_ARCH_ARG7); + if (INTERNAL_SYSCALL_ERROR_P (result)) + return -INTERNAL_SYSCALL_ERRNO (result); + return result; + } - if (atomic_compare_exchange_weak_acquire (&self->cancelhandling, - &oldval, newval)) - { - if (cancel_enabled_and_canceled_and_async (newval)) - { - self->result = PTHREAD_CANCELED; - __do_cancel (); - } + /* Call the arch-specific entry points that contains the globals markers + to be checked by SIGCANCEL handler. */ + result = __syscall_cancel_arch (&pd->cancelhandling, nr, a1, a2, a3, a4, a5, + a6 __SYSCALL_CANCEL7_ARCH_ARG7); - break; - } - } + /* If the cancellable syscall was interrupted by SIGCANCEL and it has no + side-effect, cancel the thread if cancellation is enabled. */ + ch = atomic_load_relaxed (&pd->cancelhandling); + /* The behaviour here assumes that EINTR is returned only if there are no + visible side effects. POSIX Issue 7 has not yet provided any stronger + language for close, and in theory the close syscall could return EINTR + and leave the file descriptor open (conforming and leaks). It expects + that no such kernel is used with glibc. */ + if (result == -EINTR && cancel_enabled_and_canceled (ch)) + __syscall_do_cancel (); - return oldval; + return result; } -libc_hidden_def (__pthread_enable_asynccancel) -/* See the comment for __pthread_enable_asynccancel regarding - the AS-safety of this function. */ -void -__pthread_disable_asynccancel (int oldtype) +/* Called by the SYSCALL_CANCEL macro, check for cancellation and return the + syscall expected success value (usually 0) or, in case of failure, -1 and + sets errno to syscall return value. */ +long int +__syscall_cancel (__syscall_arg_t a1, __syscall_arg_t a2, + __syscall_arg_t a3, __syscall_arg_t a4, + __syscall_arg_t a5, __syscall_arg_t a6, + __SYSCALL_CANCEL7_ARG_DEF __syscall_arg_t nr) { - /* If asynchronous cancellation was enabled before we do not have - anything to do. */ - if (oldtype & CANCELTYPE_BITMASK) - return; + int r = __internal_syscall_cancel (a1, a2, a3, a4, a5, a6, + __SYSCALL_CANCEL7_ARG nr); + return __glibc_unlikely (INTERNAL_SYSCALL_ERROR_P (r)) + ? SYSCALL_ERROR_LABEL (INTERNAL_SYSCALL_ERRNO (r)) + : r; +} +/* Called by __syscall_cancel_arch or function above start the thread + cancellation. */ +_Noreturn void +__syscall_do_cancel (void) +{ struct pthread *self = THREAD_SELF; - int newval; + + /* Disable thread cancellation to avoid cancellable entrypoints calling + __syscall_do_cancel recursively. We atomic load relaxed to check the + state of cancelhandling, there is no particular ordering requirement + between the syscall call and the other thread setting our cancelhandling + with a atomic store acquire. + + POSIX Issue 7 notes that the cancellation occurs asynchronously on the + target thread, that implies there is no ordering requirements. It does + not need a MO release store here. */ int oldval = atomic_load_relaxed (&self->cancelhandling); - do + while (1) { - newval = oldval & ~CANCELTYPE_BITMASK; + int newval = oldval | CANCELSTATE_BITMASK; + if (oldval == newval) + break; + if (atomic_compare_exchange_weak_acquire (&self->cancelhandling, + &oldval, newval)) + break; } - while (!atomic_compare_exchange_weak_acquire (&self->cancelhandling, - &oldval, newval)); - /* We cannot return when we are being canceled. Upon return the - thread might be things which would have to be undone. The - following loop should loop until the cancellation signal is - delivered. */ - while (__glibc_unlikely ((newval & (CANCELING_BITMASK | CANCELED_BITMASK)) - == CANCELING_BITMASK)) - { - futex_wait_simple ((unsigned int *) &self->cancelhandling, newval, - FUTEX_PRIVATE); - newval = atomic_load_relaxed (&self->cancelhandling); - } + __do_cancel (PTHREAD_CANCELED); } -libc_hidden_def (__pthread_disable_asynccancel) diff --git a/nptl/cleanup_defer.c b/nptl/cleanup_defer.c index dc08eda003..db32c4fc26 100644 --- a/nptl/cleanup_defer.c +++ b/nptl/cleanup_defer.c @@ -82,10 +82,7 @@ ___pthread_unregister_cancel_restore (__pthread_unwind_buf_t *buf) &cancelhandling, newval)); if (cancel_enabled_and_canceled (cancelhandling)) - { - self->result = PTHREAD_CANCELED; - __do_cancel (); - } + __do_cancel (PTHREAD_CANCELED); } } versioned_symbol (libc, ___pthread_unregister_cancel_restore, diff --git a/nptl/descr-const.sym b/nptl/descr-const.sym new file mode 100644 index 0000000000..8608248354 --- /dev/null +++ b/nptl/descr-const.sym @@ -0,0 +1,6 @@ +#include <tls.h> + +-- Not strictly offsets, these values are using thread cancellation by arch +-- specific cancel entrypoint. +TCB_CANCELED_BIT CANCELED_BIT +TCB_CANCELED_BITMASK CANCELED_BITMASK diff --git a/nptl/descr.h b/nptl/descr.h index 8cef95810c..65d3baaee3 100644 --- a/nptl/descr.h +++ b/nptl/descr.h @@ -426,6 +426,24 @@ struct pthread } __attribute ((aligned (TCB_ALIGNMENT))); static inline bool +cancel_enabled (int value) +{ + return (value & CANCELSTATE_BITMASK) == 0; +} + +static inline bool +cancel_async_enabled (int value) +{ + return (value & CANCELTYPE_BITMASK) != 0; +} + +static inline bool +cancel_exiting (int value) +{ + return (value & EXITING_BITMASK) != 0; +} + +static inline bool cancel_enabled_and_canceled (int value) { return (value & (CANCELSTATE_BITMASK | CANCELED_BITMASK | EXITING_BITMASK diff --git a/nptl/libc-cleanup.c b/nptl/libc-cleanup.c index fe042c85aa..20d746cbb7 100644 --- a/nptl/libc-cleanup.c +++ b/nptl/libc-cleanup.c @@ -69,10 +69,7 @@ __libc_cleanup_pop_restore (struct _pthread_cleanup_buffer *buffer) &cancelhandling, newval)); if (cancel_enabled_and_canceled (cancelhandling)) - { - self->result = PTHREAD_CANCELED; - __do_cancel (); - } + __do_cancel (PTHREAD_CANCELED); } } libc_hidden_def (__libc_cleanup_pop_restore) diff --git a/nptl/pthread_cancel.c b/nptl/pthread_cancel.c index 69701db6f9..012c4ebeb8 100644 --- a/nptl/pthread_cancel.c +++ b/nptl/pthread_cancel.c @@ -23,6 +23,7 @@ #include <sysdep.h> #include <unistd.h> #include <unwind-link.h> +#include <cancellation-pc-check.h> #include <stdio.h> #include <gnu/lib-names.h> #include <sys/single_threaded.h> @@ -40,31 +41,16 @@ sigcancel_handler (int sig, siginfo_t *si, void *ctx) || si->si_code != SI_TKILL) return; + /* Check if asynchronous cancellation mode is set or if interrupted + instruction pointer falls within the cancellable syscall bridge. For + interruptable syscalls with external side-effects (i.e. partial reads), + the kernel will set the IP to after __syscall_cancel_arch_end, thus + disabling the cancellation and allowing the process to handle such + conditions. */ struct pthread *self = THREAD_SELF; - int oldval = atomic_load_relaxed (&self->cancelhandling); - while (1) - { - /* We are canceled now. When canceled by another thread this flag - is already set but if the signal is directly send (internally or - from another process) is has to be done here. */ - int newval = oldval | CANCELING_BITMASK | CANCELED_BITMASK; - - if (oldval == newval || (oldval & EXITING_BITMASK) != 0) - /* Already canceled or exiting. */ - break; - - if (atomic_compare_exchange_weak_acquire (&self->cancelhandling, - &oldval, newval)) - { - self->result = PTHREAD_CANCELED; - - /* Make sure asynchronous cancellation is still enabled. */ - if ((oldval & CANCELTYPE_BITMASK) != 0) - /* Run the registered destructors and terminate the thread. */ - __do_cancel (); - } - } + if (cancel_async_enabled (oldval) || cancellation_pc_check (ctx)) + __syscall_do_cancel (); } int @@ -106,15 +92,13 @@ __pthread_cancel (pthread_t th) /* Some syscalls are never restarted after being interrupted by a signal handler, regardless of the use of SA_RESTART (they always fail with EINTR). So pthread_cancel cannot send SIGCANCEL unless the cancellation - is enabled and set as asynchronous (in this case the cancellation will - be acted in the cancellation handler instead by the syscall wrapper). - Otherwise the target thread is set as 'cancelling' (CANCELING_BITMASK) + is enabled. + In this case the target thread is set as 'cancelled' (CANCELED_BITMASK) by atomically setting 'cancelhandling' and the cancelation will be acted upon on next cancellation entrypoing in the target thread. - It also requires to atomically check if cancellation is enabled and - asynchronous, so both cancellation state and type are tracked on - 'cancelhandling'. */ + It also requires to atomically check if cancellation is enabled, so the + state are also tracked on 'cancelhandling'. */ int result = 0; int oldval = atomic_load_relaxed (&pd->cancelhandling); @@ -122,19 +106,17 @@ __pthread_cancel (pthread_t th) do { again: - newval = oldval | CANCELING_BITMASK | CANCELED_BITMASK; + newval = oldval | CANCELED_BITMASK; if (oldval == newval) break; - /* If the cancellation is handled asynchronously just send a - signal. We avoid this if possible since it's more - expensive. */ - if (cancel_enabled_and_canceled_and_async (newval)) + /* Only send the SIGANCEL signal if cancellation is enabled, since some + syscalls are never restarted even with SA_RESTART. The signal + will act iff async cancellation is enabled. */ + if (cancel_enabled (newval)) { - /* Mark the cancellation as "in progress". */ - int newval2 = oldval | CANCELING_BITMASK; if (!atomic_compare_exchange_weak_acquire (&pd->cancelhandling, - &oldval, newval2)) + &oldval, newval)) goto again; if (pd == THREAD_SELF) @@ -143,9 +125,8 @@ __pthread_cancel (pthread_t th) pthread_create, so the signal handler may not have been set up for a self-cancel. */ { - pd->result = PTHREAD_CANCELED; - if ((newval & CANCELTYPE_BITMASK) != 0) - __do_cancel (); + if (cancel_async_enabled (newval)) + __do_cancel (PTHREAD_CANCELED); } else /* The cancellation handler will take care of marking the @@ -154,19 +135,18 @@ __pthread_cancel (pthread_t th) break; } - - /* A single-threaded process should be able to kill itself, since - there is nothing in the POSIX specification that says that it - cannot. So we set multiple_threads to true so that cancellation - points get executed. */ - THREAD_SETMEM (THREAD_SELF, header.multiple_threads, 1); -#ifndef TLS_MULTIPLE_THREADS_IN_TCB - __libc_single_threaded_internal = 0; -#endif } while (!atomic_compare_exchange_weak_acquire (&pd->cancelhandling, &oldval, newval)); + /* A single-threaded process should be able to kill itself, since there is + nothing in the POSIX specification that says that it cannot. So we set + multiple_threads to true so that cancellation points get executed. */ + THREAD_SETMEM (THREAD_SELF, header.multiple_threads, 1); +#ifndef TLS_MULTIPLE_THREADS_IN_TCB + __libc_single_threaded_internal = 0; +#endif + return result; } versioned_symbol (libc, __pthread_cancel, pthread_cancel, GLIBC_2_34); diff --git a/nptl/pthread_exit.c b/nptl/pthread_exit.c index dc2635f827..600ab036d9 100644 --- a/nptl/pthread_exit.c +++ b/nptl/pthread_exit.c @@ -31,9 +31,7 @@ __pthread_exit (void *value) " must be installed for pthread_exit to work\n"); } - THREAD_SETMEM (THREAD_SELF, result, value); - - __do_cancel (); + __do_cancel (value); } libc_hidden_def (__pthread_exit) weak_alias (__pthread_exit, pthread_exit) diff --git a/nptl/pthread_setcancelstate.c b/nptl/pthread_setcancelstate.c index 18fb42a5c4..787c45a32b 100644 --- a/nptl/pthread_setcancelstate.c +++ b/nptl/pthread_setcancelstate.c @@ -48,7 +48,7 @@ __pthread_setcancelstate (int state, int *oldstate) &oldval, newval)) { if (cancel_enabled_and_canceled_and_async (newval)) - __do_cancel (); + __do_cancel (PTHREAD_CANCELED); break; } diff --git a/nptl/pthread_setcanceltype.c b/nptl/pthread_setcanceltype.c index cf441cef91..3b5b0346ef 100644 --- a/nptl/pthread_setcanceltype.c +++ b/nptl/pthread_setcanceltype.c @@ -48,7 +48,7 @@ __pthread_setcanceltype (int type, int *oldtype) if (cancel_enabled_and_canceled_and_async (newval)) { THREAD_SETMEM (self, result, PTHREAD_CANCELED); - __do_cancel (); + __do_cancel (PTHREAD_CANCELED); } break; diff --git a/nptl/pthread_testcancel.c b/nptl/pthread_testcancel.c index a0197b5312..be0e8d5a78 100644 --- a/nptl/pthread_testcancel.c +++ b/nptl/pthread_testcancel.c @@ -25,10 +25,7 @@ ___pthread_testcancel (void) struct pthread *self = THREAD_SELF; int cancelhandling = atomic_load_relaxed (&self->cancelhandling); if (cancel_enabled_and_canceled (cancelhandling)) - { - self->result = PTHREAD_CANCELED; - __do_cancel (); - } + __do_cancel (PTHREAD_CANCELED); } versioned_symbol (libc, ___pthread_testcancel, pthread_testcancel, GLIBC_2_34); libc_hidden_ver (___pthread_testcancel, __pthread_testcancel) diff --git a/nptl/tst-cancel31.c b/nptl/tst-cancel31.c new file mode 100644 index 0000000000..f9cc8245e1 --- /dev/null +++ b/nptl/tst-cancel31.c @@ -0,0 +1,100 @@ +/* Verify side-effects of cancellable syscalls (BZ #12683). + Copyright (C) 2023 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 + <https://www.gnu.org/licenses/>. */ + +/* This testcase checks if there is resource leakage if the syscall has + returned from kernelspace, but before userspace saves the return + value. The 'leaker' thread should be able to close the file descriptor + if the resource is already allocated, meaning that if the cancellation + signal arrives *after* the open syscal return from kernel, the + side-effect should be visible to application. */ + +#include <sys/types.h> +#include <sys/stat.h> +#include <fcntl.h> +#include <unistd.h> +#include <stdlib.h> + +#include <support/xunistd.h> +#include <support/xthread.h> +#include <support/check.h> +#include <support/temp_file.h> +#include <support/support.h> +#include <support/descriptors.h> + +static void * +writeopener (void *arg) +{ + int fd; + for (;;) + { + fd = open (arg, O_WRONLY); + xclose (fd); + } + return NULL; +} + +static void * +leaker (void *arg) +{ + int fd = open (arg, O_RDONLY); + TEST_VERIFY_EXIT (fd > 0); + pthread_setcancelstate (PTHREAD_CANCEL_DISABLE, 0); + xclose (fd); + return NULL; +} + +static int +do_test (void) +{ + enum { + iter_count = 1000 + }; + + char *dir = support_create_temp_directory ("tst-cancel28"); + char *name = xasprintf ("%s/fifo", dir); + TEST_COMPARE (mkfifo (name, 0600), 0); + add_temp_file (name); + + struct support_descriptors *descrs = support_descriptors_list (); + + srand (1); + + xpthread_create (NULL, writeopener, name); + for (int i = 0; i < iter_count; i++) + { + pthread_t td = xpthread_create (NULL, leaker, name); + struct timespec ts = + { .tv_nsec = rand () % 100000, .tv_sec = 0 }; + nanosleep (&ts, NULL); + /* Ignore pthread_cancel result because it might be the + case when pthread_cancel is called when thread is already + exited. */ + pthread_cancel (td); + xpthread_join (td); + } + + support_descriptors_check (descrs); + + support_descriptors_free (descrs); + + free (name); + + return 0; +} + +#include <support/test-driver.c> diff --git a/nptl/tst-cancel7.c b/nptl/tst-cancel7.c index d2350bde20..3f874c2a3c 100644 --- a/nptl/tst-cancel7.c +++ b/nptl/tst-cancel7.c @@ -38,6 +38,8 @@ static char *semfilename; static sem_t *sem; +static void do_cleanup (void); + static void * tf (void *arg) { @@ -57,9 +59,6 @@ sl (void) fprintf (f, "%lld\n", (long long) getpid ()); fflush (f); - if (sem_post (sem) != 0) - FAIL_EXIT1 ("sem_post: %m"); - struct flock fl = { .l_type = F_WRLCK, @@ -70,6 +69,9 @@ sl (void) if (fcntl (fileno (f), F_SETLK, &fl) != 0) FAIL_EXIT1 ("fcntl (F_SETFL): %m"); + if (sem_post (sem) != 0) + FAIL_EXIT1 ("sem_post: %m"); + sigset_t ss; sigfillset (&ss); sigsuspend (&ss); @@ -108,6 +110,8 @@ do_prepare (int argc, char *argv[]) xwrite (fd, " ", 1); xclose (fd); + + atexit (do_cleanup); } @@ -116,7 +120,7 @@ do_test (void) { pthread_t th = xpthread_create (NULL, tf, NULL); - /* Wait to cancel until after the pid is written. */ + /* Wait to cancel until after the pid is written and file locked. */ if (sem_wait (sem) != 0) FAIL_EXIT1 ("sem_wait: %m"); diff --git a/nptl/tst-sem11.c b/nptl/tst-sem11.c index 1a2dbafd89..a82bb737d5 100644 --- a/nptl/tst-sem11.c +++ b/nptl/tst-sem11.c @@ -1,3 +1,21 @@ +/* Test of semaphores. + Copyright (C) 2007-2024 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 + <https://www.gnu.org/licenses/>. */ + #include <semaphore.h> #include <stdio.h> #include <unistd.h> @@ -11,15 +29,15 @@ static void * tf (void *arg) { -#ifdef PREPARE - PREPARE +#ifdef TF_PREPARE + TF_PREPARE #endif SEM_WAIT (arg); return NULL; } int -main (void) +do_test (void) { int tries = 5; pthread_t th; @@ -83,3 +101,5 @@ main (void) return 0; } + +#include <support/test-driver.c> diff --git a/nptl/tst-sem12.c b/nptl/tst-sem12.c index 71d02b70e9..d4e22d9a8e 100644 --- a/nptl/tst-sem12.c +++ b/nptl/tst-sem12.c @@ -1,8 +1,26 @@ +/* Test of semaphores. + Copyright (C) 2007-2024 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 + <https://www.gnu.org/licenses/>. */ + #include <time.h> #include <sys/time.h> -#define PREPARE \ +#define TF_PREPARE \ struct timespec ts; \ struct timeval tv; \ gettimeofday (&tv, NULL); \ diff --git a/nss/tst-nss-gai-actions.c b/nss/tst-nss-gai-actions.c index efca6cd183..e42bbd6cae 100644 --- a/nss/tst-nss-gai-actions.c +++ b/nss/tst-nss-gai-actions.c @@ -92,6 +92,7 @@ do_one_test (int action, int family, bool canon) printf ("merge unexpectedly succeeded:\n %s\n", formatted); support_record_failure (); free (formatted); + break; } else return; diff --git a/po/be.po b/po/be.po index de261adbfa..a8587e7250 100644 --- a/po/be.po +++ b/po/be.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: libc 2.38.9000\n" -"POT-Creation-Date: 2024-06-19 22:30+0200\n" +"POT-Creation-Date: 2024-07-21 00:32+0200\n" "PO-Revision-Date: 2024-02-05 20:42+0300\n" "Last-Translator: Viktar SiarhiejÄyk <vics@eq.by>\n" "Language-Team: Belarusian <debian-l10n-belarusian@lists.debian.org>\n" @@ -147,7 +147,7 @@ msgstr "" "-o ВЫХОДÐЫ-ФÐЙЛ [УВÐХОДÐЫ-ФÐЙЛ]...\n" "[ВЫХОДÐЫ-ФÐЙЛ [УВÐХОДÐЫ-ФÐЙЛ]...]" -#: catgets/gencat.c:230 debug/pcprofiledump.c:208 elf/ldconfig.c:216 +#: catgets/gencat.c:230 debug/pcprofiledump.c:208 elf/ldconfig.c:217 #: elf/pldd.c:246 elf/sln.c:77 elf/sprof.c:371 iconv/iconv_prog.c:387 #: iconv/iconvconfig.c:380 locale/programs/locale.c:275 #: locale/programs/localedef.c:437 login/programs/pt_chown.c:88 @@ -162,7 +162,7 @@ msgstr "" "%s.\n" #: catgets/gencat.c:246 debug/pcprofiledump.c:224 debug/xtrace.sh:63 -#: elf/ldconfig.c:232 elf/ldd.bash.in:38 elf/pldd.c:262 elf/sotruss.sh:75 +#: elf/ldconfig.c:233 elf/ldd.bash.in:38 elf/pldd.c:262 elf/sotruss.sh:75 #: elf/sprof.c:388 iconv/iconv_prog.c:404 iconv/iconvconfig.c:397 #: locale/programs/locale.c:292 locale/programs/localedef.c:459 #: login/programs/pt_chown.c:62 malloc/memusage.sh:70 malloc/memusagestat.c:582 @@ -178,7 +178,7 @@ msgstr "" " ÐІЯКІХ нÑма; у тым ліку працаздольнаÑці ці прыдатнаÑці Ð´Ð»Ñ Ð¿Ñўнай мÑÑ‚Ñ‹.\n" #: catgets/gencat.c:251 debug/pcprofiledump.c:229 debug/xtrace.sh:67 -#: elf/ldconfig.c:237 elf/pldd.c:267 elf/sprof.c:394 iconv/iconv_prog.c:409 +#: elf/ldconfig.c:238 elf/pldd.c:267 elf/sprof.c:394 iconv/iconv_prog.c:409 #: iconv/iconvconfig.c:402 locale/programs/locale.c:297 #: locale/programs/localedef.c:464 malloc/memusage.sh:74 #: malloc/memusagestat.c:587 nscd/nscd.c:526 nss/getent.c:97 nss/makedb.c:392 @@ -393,7 +393,7 @@ msgstr "Файл кÑша мае нÑправільны парадак байтРmsgid "Cache generated by: " msgstr "КÑш Ñтвораны: " -#: elf/cache.c:296 elf/ldconfig.c:1249 +#: elf/cache.c:296 elf/ldconfig.c:1239 #, c-format msgid "Can't open cache file %s\n" msgstr "Ðемагчыма адкрыць файл кÑшу %s\n" @@ -704,7 +704,7 @@ msgstr "не ўдалоÑÑ ÑžÐ¶Ñ‹Ñ†ÑŒ дадатковую ахову памÑÑ msgid "RTLD_NEXT used in code not dynamically loaded" msgstr "RTLD_NEXT выкарыÑтаны Ñž кодзе, Ñкі не загружаны дынамічна" -#: elf/dl-tls.c:1059 +#: elf/dl-tls.c:1136 msgid "cannot create TLS data structures" msgstr "немагчыма Ñтварыць Ñтруктуры даных TLS" @@ -720,216 +720,216 @@ msgstr "не ўдалоÑÑ Ð²Ñ‹Ð´Ð·ÐµÐ»Ñ–Ñ†ÑŒ памÑць Ð´Ð»Ñ Ñ‚Ð°Ð±Ð»Ñ–Ñ†Ñ msgid "DT_RELR without GLIBC_ABI_DT_RELR dependency" msgstr "DT_RELR без залежнаÑці GLIBC_ABI_DT_RELR" -#: elf/ldconfig.c:124 +#: elf/ldconfig.c:125 msgid "Print cache" msgstr "Ðадрукаваць кÑш" -#: elf/ldconfig.c:125 +#: elf/ldconfig.c:126 msgid "Generate verbose messages" msgstr "Стварае шматÑÐ»Ð¾ÑžÐ½Ñ‹Ñ Ð¿Ð°Ð²ÐµÐ´Ð°Ð¼Ð»ÐµÐ½ÑŒÐ½Ñ–" -#: elf/ldconfig.c:126 +#: elf/ldconfig.c:127 msgid "Don't build cache" msgstr "Ðе будаваць кÑш" -#: elf/ldconfig.c:127 +#: elf/ldconfig.c:128 msgid "Don't update symbolic links" msgstr "Ðе абнаўлÑць ÑÑ–Ð¼Ð²Ð°Ð»Ñ–Ñ‡Ð½Ñ‹Ñ ÑпаÑылкі" -#: elf/ldconfig.c:128 +#: elf/ldconfig.c:129 msgid "Change to and use ROOT as root directory" msgstr "ПерайÑці Ñž КОРÐÐЬ Ñ– ўжыць Ñго Ñк каранёвы каталог" -#: elf/ldconfig.c:128 +#: elf/ldconfig.c:129 msgid "ROOT" msgstr "КОРÐÐЬ" -#: elf/ldconfig.c:129 +#: elf/ldconfig.c:130 msgid "CACHE" msgstr "КÐШ" -#: elf/ldconfig.c:129 +#: elf/ldconfig.c:130 msgid "Use CACHE as cache file" msgstr "Ужываць КÐШ у ÑкаÑці кÑш-файла" -#: elf/ldconfig.c:130 +#: elf/ldconfig.c:131 msgid "CONF" msgstr "КÐÐФ" -#: elf/ldconfig.c:130 +#: elf/ldconfig.c:131 msgid "Use CONF as configuration file" msgstr "Ужыць КÐÐФ у ÑкаÑці канфігурацыйнага файла" -#: elf/ldconfig.c:131 +#: elf/ldconfig.c:132 msgid "Only process directories specified on the command line. Don't build cache." msgstr "Ðпрацаваць толькі каталогі Ñž камандным радку. Ðе Ñтвараць кÑш." -#: elf/ldconfig.c:132 +#: elf/ldconfig.c:133 msgid "Manually link individual libraries." msgstr "Злучыць аÑÐ¾Ð±Ð½Ñ‹Ñ Ð±Ñ–Ð±Ð»Ñ–ÑÑ‚Ñкі ўручную з" -#: elf/ldconfig.c:133 +#: elf/ldconfig.c:134 msgid "FORMAT" msgstr "ФÐÐ ÐœÐТ" -#: elf/ldconfig.c:133 +#: elf/ldconfig.c:134 msgid "Format to use: new (default), old, or compat" msgstr "Фармат Ð´Ð»Ñ Ð²Ñ‹ÐºÐ°Ñ€Ñ‹ÑтаннÑ: новы (па змаўчанні), Ñтары або ÑумÑшчальны" -#: elf/ldconfig.c:134 +#: elf/ldconfig.c:135 msgid "Ignore auxiliary cache file" msgstr "Ігнараваць дапаможны кÑш-файл" -#: elf/ldconfig.c:142 +#: elf/ldconfig.c:143 msgid "Configure Dynamic Linker Run Time Bindings." msgstr "Cканфігураваць ÑувÑзі Ð¿Ð°Ð´Ñ‡Ð°Ñ Ð²Ñ‹ÐºÐ°Ð½Ð°Ð½Ð½Ñ Ð´Ð»Ñ Ð´Ñ‹Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð°Ð³Ð° лінкера" -#: elf/ldconfig.c:276 +#: elf/ldconfig.c:277 #, c-format msgid "Path `%s' given more than once" msgstr "ШлÑÑ… `%s' пададзены некалькі разоў" -#: elf/ldconfig.c:277 +#: elf/ldconfig.c:278 #, c-format msgid "(from %s:%d and %s:%d)\n" msgstr "(з %s:%d Ñ– %s:%d)\n" -#: elf/ldconfig.c:309 elf/ldconfig.c:350 +#: elf/ldconfig.c:310 elf/ldconfig.c:351 #, c-format msgid "Could not form glibc-hwcaps path" msgstr "Ðе ўдалоÑÑ Ñфармаваць шлÑÑ… glibc-hwcaps" -#: elf/ldconfig.c:323 +#: elf/ldconfig.c:324 #, c-format msgid "Listing directory %s" msgstr "ПраглÑд каталога %s" -#: elf/ldconfig.c:405 +#: elf/ldconfig.c:406 #, c-format msgid "Can't stat %s" msgstr "Ðемагчыма зрабіць stat %s" -#: elf/ldconfig.c:486 +#: elf/ldconfig.c:487 #, c-format msgid "Can't stat %s\n" msgstr "Ðемагчыма зрабіць stat %s\n" -#: elf/ldconfig.c:496 +#: elf/ldconfig.c:497 #, c-format msgid "%s is not a symbolic link\n" msgstr "%s - гÑта не ÑÑ–Ð¼Ð²Ð°Ð»ÑŒÐ½Ð°Ñ ÑпаÑылка\n" -#: elf/ldconfig.c:515 +#: elf/ldconfig.c:516 #, c-format msgid "Can't unlink %s" msgstr "Ðемагчыма зрабіць unlink %s" -#: elf/ldconfig.c:521 +#: elf/ldconfig.c:522 #, c-format msgid "Can't link %s to %s" msgstr "Ðемагчыма зрабіць ÑпаÑылку %s на %s" -#: elf/ldconfig.c:527 +#: elf/ldconfig.c:528 msgid " (changed)\n" msgstr " (зьменена)\n" -#: elf/ldconfig.c:529 +#: elf/ldconfig.c:530 msgid " (SKIPPED)\n" msgstr " (ПРÐПУШЧÐÐÐ)\n" -#: elf/ldconfig.c:584 +#: elf/ldconfig.c:585 #, c-format msgid "Can't find %s" msgstr "Ðемагчыма знайÑці %s" -#: elf/ldconfig.c:600 elf/ldconfig.c:770 elf/ldconfig.c:837 +#: elf/ldconfig.c:601 elf/ldconfig.c:760 elf/ldconfig.c:827 #, c-format msgid "Cannot lstat %s" msgstr "Ðемагчыма зрабіць lstat %s" -#: elf/ldconfig.c:606 +#: elf/ldconfig.c:607 #, c-format msgid "Ignored file %s since it is not a regular file." msgstr "Файл %s праігнараваны, бо ён не Ñ‘Ñць звычайным файлам." -#: elf/ldconfig.c:614 +#: elf/ldconfig.c:615 #, c-format msgid "No link created since soname could not be found for %s" msgstr "СпаÑылка не ÑтворанаÑ, бо не знойдзены soname Ð´Ð»Ñ %s" -#: elf/ldconfig.c:711 +#: elf/ldconfig.c:701 #, c-format msgid " (from %s:%d)\n" msgstr " (з %s:%d)\n" -#: elf/ldconfig.c:726 +#: elf/ldconfig.c:716 #, c-format msgid "Can't open directory %s" msgstr "Ðемагчыма адкрыць каталог %s" -#: elf/ldconfig.c:753 elf/ldconfig.c:758 +#: elf/ldconfig.c:743 elf/ldconfig.c:748 #, c-format msgid "Could not form library path" msgstr "Ðе атрымалаÑÑ Ñфармаваць шлÑÑ… да бібліÑÑ‚Ñкі" -#: elf/ldconfig.c:787 elf/ldconfig.c:825 elf/readlib.c:78 +#: elf/ldconfig.c:777 elf/ldconfig.c:815 elf/readlib.c:81 #, c-format msgid "Input file %s not found.\n" msgstr "Файл уводу %s не адшуканы.\n" -#: elf/ldconfig.c:794 +#: elf/ldconfig.c:784 #, c-format msgid "Cannot stat %s" msgstr "Ðемагчыма зрабіць stat %s" -#: elf/ldconfig.c:913 +#: elf/ldconfig.c:903 #, c-format msgid "libc6 library %s in wrong directory" msgstr "libc6-бібліÑÑ‚Ñка %s у неадпаведным каталогу" -#: elf/ldconfig.c:932 +#: elf/ldconfig.c:922 #, c-format msgid "libraries %s and %s in directory %s have same soname but different type." msgstr "бібліÑÑ‚Ñкі %s Ñ– %s у каталогу %s маюць аднолькавы soname, але Ð°Ð´Ñ€Ð¾Ð·Ð½Ñ‹Ñ Ñ‚Ñ‹Ð¿Ñ‹." -#: elf/ldconfig.c:1061 +#: elf/ldconfig.c:1051 #, c-format msgid "Warning: ignoring configuration file that cannot be opened: %s" msgstr "ПапÑÑ€Ñджаньне: ігнаруецца канфігурацыйны файл, Ñкі немагчыма адкрыць: %s" -#: elf/ldconfig.c:1109 +#: elf/ldconfig.c:1099 #, c-format msgid "%s:%u: hwcap directive ignored" msgstr "%s:%u: дырÑктыва hwcap ігнаруецца" -#: elf/ldconfig.c:1128 +#: elf/ldconfig.c:1118 #, c-format msgid "need absolute file name for configuration file when using -r" msgstr "пры ўжыванні -r патрÑбна абÑÐ°Ð»ÑŽÑ‚Ð½Ð°Ñ Ð½Ð°Ð·Ð²Ð° канфігурацыйнага файла" -#: elf/ldconfig.c:1135 locale/programs/xasprintf.c:31 +#: elf/ldconfig.c:1125 locale/programs/xasprintf.c:31 #: locale/programs/xmalloc.c:63 malloc/obstack.c:416 malloc/obstack.c:418 #: posix/getconf.c:460 posix/getconf.c:699 #, c-format msgid "memory exhausted" msgstr "памÑць вычарпана" -#: elf/ldconfig.c:1168 +#: elf/ldconfig.c:1158 #, c-format msgid "%s:%u: cannot read directory %s" msgstr "%s:%u: немагчыма прачытаць каталог %s" -#: elf/ldconfig.c:1206 +#: elf/ldconfig.c:1196 #, c-format msgid "relative path `%s' used to build cache" msgstr "пры ÑтварÑнні кÑшу ўжыты адноÑны шлÑÑ… `%s'" -#: elf/ldconfig.c:1228 +#: elf/ldconfig.c:1218 #, c-format msgid "Can't chdir to /" msgstr "Ðемагчыма перайÑці Ñž каталог /" -#: elf/ldconfig.c:1269 +#: elf/ldconfig.c:1259 #, c-format msgid "Can't open cache file directory %s\n" msgstr "Ðемагчыма адкрыць каталог кÑш-файла %s\n" @@ -1123,27 +1123,27 @@ msgstr "%s не Ñ‘Ñць абагуленым аб'ектным файлам (Т msgid "more than one dynamic segment\n" msgstr "больш за адзін дынамічны Ñегмент\n" -#: elf/readlib.c:84 +#: elf/readlib.c:87 #, c-format msgid "Cannot fstat file %s.\n" msgstr "Ðемагчыма зрабіць fstat файла %s.\n" -#: elf/readlib.c:95 +#: elf/readlib.c:98 #, c-format msgid "File %s is empty, not checked." msgstr "Файл %s пуÑÑ‚Ñ‹, не правераны." -#: elf/readlib.c:101 +#: elf/readlib.c:104 #, c-format msgid "File %s is too small, not checked." msgstr "Файл %s замалы, не правераны." -#: elf/readlib.c:111 +#: elf/readlib.c:114 #, c-format msgid "Cannot mmap file %s.\n" msgstr "Ðемагчыма зрабіць mmap файла %s.\n" -#: elf/readlib.c:149 +#: elf/readlib.c:152 #, c-format msgid "%s is not an ELF file - it has the wrong magic bytes at the start.\n" msgstr "%s - гÑта не ELF файл - ён мае памылковы \"чароўны байт\" на пачатку файлу.\n" diff --git a/po/bg.po b/po/bg.po index 875ea57eb6..81b4bfad3f 100644 --- a/po/bg.po +++ b/po/bg.po @@ -10,9 +10,9 @@ # msgid "" msgstr "" -"Project-Id-Version: libc 2.38.9000\n" -"POT-Creation-Date: 2024-06-19 22:30+0200\n" -"PO-Revision-Date: 2024-01-04 09:04+0300\n" +"Project-Id-Version: libc 2.39.9000\n" +"POT-Creation-Date: 2024-07-21 00:32+0200\n" +"PO-Revision-Date: 2024-07-01 08:04+0300\n" "Last-Translator: Roumen Petrov <transl@roumenpetrov.info>\n" "Language-Team: Bulgarian <dict@ludost.net>\n" "Language: bg\n" @@ -153,7 +153,7 @@ msgstr "" "-o ИЗХОДЕÐ-ФÐЙЛ [ВХОДЕÐ_ФÐЙЛ]...\n" "[ИЗХОДЕÐ-ФÐЙЛ [ВХОДЕÐ_ФÐЙЛ]...]" -#: catgets/gencat.c:230 debug/pcprofiledump.c:208 elf/ldconfig.c:216 +#: catgets/gencat.c:230 debug/pcprofiledump.c:208 elf/ldconfig.c:217 #: elf/pldd.c:246 elf/sln.c:77 elf/sprof.c:371 iconv/iconv_prog.c:387 #: iconv/iconvconfig.c:380 locale/programs/locale.c:275 #: locale/programs/localedef.c:437 login/programs/pt_chown.c:88 @@ -168,7 +168,7 @@ msgstr "" "%s.\n" #: catgets/gencat.c:246 debug/pcprofiledump.c:224 debug/xtrace.sh:63 -#: elf/ldconfig.c:232 elf/ldd.bash.in:38 elf/pldd.c:262 elf/sotruss.sh:75 +#: elf/ldconfig.c:233 elf/ldd.bash.in:38 elf/pldd.c:262 elf/sotruss.sh:75 #: elf/sprof.c:388 iconv/iconv_prog.c:404 iconv/iconvconfig.c:397 #: locale/programs/locale.c:292 locale/programs/localedef.c:459 #: login/programs/pt_chown.c:62 malloc/memusage.sh:70 malloc/memusagestat.c:582 @@ -184,7 +184,7 @@ msgstr "" "ГÐÐ ÐÐЦИИ, включително без предполагаемите гаранции за полезноÑÑ‚ и пригодноÑÑ‚.\n" #: catgets/gencat.c:251 debug/pcprofiledump.c:229 debug/xtrace.sh:67 -#: elf/ldconfig.c:237 elf/pldd.c:267 elf/sprof.c:394 iconv/iconv_prog.c:409 +#: elf/ldconfig.c:238 elf/pldd.c:267 elf/sprof.c:394 iconv/iconv_prog.c:409 #: iconv/iconvconfig.c:402 locale/programs/locale.c:297 #: locale/programs/localedef.c:464 malloc/memusage.sh:74 #: malloc/memusagestat.c:587 nscd/nscd.c:526 nss/getent.c:97 nss/makedb.c:392 @@ -400,7 +400,7 @@ msgstr "Файла за Ñкладиране е грешен порÑдък на msgid "Cache generated by: " msgstr "Складът е Ñъздаден от: " -#: elf/cache.c:296 elf/ldconfig.c:1249 +#: elf/cache.c:296 elf/ldconfig.c:1239 #, c-format msgid "Can't open cache file %s\n" msgstr "Ðе може да Ñе отвори файлът за Ñкладиране %s\n" @@ -711,7 +711,7 @@ msgstr "Ñлед премеÑтването не може да Ñе поÑтав msgid "RTLD_NEXT used in code not dynamically loaded" msgstr "RTLD_NEXT е използван в код, който не е за динамично Ñвързване" -#: elf/dl-tls.c:1059 +#: elf/dl-tls.c:1136 msgid "cannot create TLS data structures" msgstr "не може да Ñе Ñъздадат Ñтруктури за TLS данни" @@ -727,216 +727,216 @@ msgstr "не може да Ñе Ñъздаде таблица Ñ Ð¿Ñ€ÐµÐ¿Ñ€Ð°Ñ‚Ð msgid "DT_RELR without GLIBC_ABI_DT_RELR dependency" msgstr "DT_RELR без GLIBC_ABI_DT_RELR завиÑимоÑÑ‚" -#: elf/ldconfig.c:124 +#: elf/ldconfig.c:125 msgid "Print cache" msgstr "Разпечатване на Ñклад" -#: elf/ldconfig.c:125 +#: elf/ldconfig.c:126 msgid "Generate verbose messages" msgstr "Извеждане на допълнителни ÑъобщениÑ" -#: elf/ldconfig.c:126 +#: elf/ldconfig.c:127 msgid "Don't build cache" msgstr "Да не Ñе Ñъздава Ñклад" -#: elf/ldconfig.c:127 +#: elf/ldconfig.c:128 msgid "Don't update symbolic links" msgstr "Да не Ñе обновÑват Ñимволни връзки" -#: elf/ldconfig.c:128 +#: elf/ldconfig.c:129 msgid "Change to and use ROOT as root directory" msgstr "ПремеÑтване в и използване на ГЛÐВЕРкато \"коренова\" директориÑ" -#: elf/ldconfig.c:128 +#: elf/ldconfig.c:129 msgid "ROOT" msgstr "ГЛÐВЕÐ" -#: elf/ldconfig.c:129 +#: elf/ldconfig.c:130 msgid "CACHE" msgstr "КЕШ" -#: elf/ldconfig.c:129 +#: elf/ldconfig.c:130 msgid "Use CACHE as cache file" msgstr "Използване на КЕШ като файл за Ñкладиране" -#: elf/ldconfig.c:130 +#: elf/ldconfig.c:131 msgid "CONF" msgstr "ÐÐСТ" -#: elf/ldconfig.c:130 +#: elf/ldconfig.c:131 msgid "Use CONF as configuration file" msgstr "Използване на ÐÐСТ за наÑтройващ файл" -#: elf/ldconfig.c:131 +#: elf/ldconfig.c:132 msgid "Only process directories specified on the command line. Don't build cache." msgstr "Да Ñе обработÑÑ‚ Ñамо директориите зададени от ÐºÐ¾Ð¼Ð°Ð½Ð´Ð½Ð¸Ñ Ñ€ÐµÐ´. Да не Ñе Ñъздава Ñклад." -#: elf/ldconfig.c:132 +#: elf/ldconfig.c:133 msgid "Manually link individual libraries." msgstr "Ръчно ще Ñе Ñъздадат връзки за отделните библиотеки." -#: elf/ldconfig.c:133 +#: elf/ldconfig.c:134 msgid "FORMAT" msgstr "ФОРМÐТ" -#: elf/ldconfig.c:133 +#: elf/ldconfig.c:134 msgid "Format to use: new (default), old, or compat" msgstr "Използване на формат: new(по подразбиране), old или compat" -#: elf/ldconfig.c:134 +#: elf/ldconfig.c:135 msgid "Ignore auxiliary cache file" msgstr "Игнориране на помощниÑÑ‚ файл за Ñкладиране" -#: elf/ldconfig.c:142 +#: elf/ldconfig.c:143 msgid "Configure Dynamic Linker Run Time Bindings." msgstr "ÐаÑтройване на Ñвръзките при изпълнение на програмата за динамично Ñвързване." -#: elf/ldconfig.c:276 +#: elf/ldconfig.c:277 #, c-format msgid "Path `%s' given more than once" msgstr "ПътÑÑ‚ \"%s\" е зададен повече от един веднъж" -#: elf/ldconfig.c:277 +#: elf/ldconfig.c:278 #, c-format msgid "(from %s:%d and %s:%d)\n" msgstr "(от %s:%d и %s:%d)\n" -#: elf/ldconfig.c:309 elf/ldconfig.c:350 +#: elf/ldconfig.c:310 elf/ldconfig.c:351 #, c-format msgid "Could not form glibc-hwcaps path" msgstr "Ðе може да Ñе Ñъздаде път за hwcaps" -#: elf/ldconfig.c:323 +#: elf/ldconfig.c:324 #, c-format msgid "Listing directory %s" msgstr "ИзброÑване на Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ '%s'" -#: elf/ldconfig.c:405 +#: elf/ldconfig.c:406 #, c-format msgid "Can't stat %s" msgstr "Ðе може да Ñе определÑÑ‚ атрибутите на %s" -#: elf/ldconfig.c:486 +#: elf/ldconfig.c:487 #, c-format msgid "Can't stat %s\n" msgstr "Ðе може да Ñе определÑÑ‚ атрибутите на %s\n" -#: elf/ldconfig.c:496 +#: elf/ldconfig.c:497 #, c-format msgid "%s is not a symbolic link\n" msgstr "%s не е Ñимволна връзка\n" -#: elf/ldconfig.c:515 +#: elf/ldconfig.c:516 #, c-format msgid "Can't unlink %s" msgstr "Ðе може да Ñе развърже(изтрие) %s" -#: elf/ldconfig.c:521 +#: elf/ldconfig.c:522 #, c-format msgid "Can't link %s to %s" msgstr "Ðе може да Ñе Ñъздаде Ñимволна връзка от %s към %s" -#: elf/ldconfig.c:527 +#: elf/ldconfig.c:528 msgid " (changed)\n" msgstr " (променен)\n" -#: elf/ldconfig.c:529 +#: elf/ldconfig.c:530 msgid " (SKIPPED)\n" msgstr " (ПРЕСКОЧЕÐ)\n" -#: elf/ldconfig.c:584 +#: elf/ldconfig.c:585 #, c-format msgid "Can't find %s" msgstr "%s не е открит" -#: elf/ldconfig.c:600 elf/ldconfig.c:770 elf/ldconfig.c:837 +#: elf/ldconfig.c:601 elf/ldconfig.c:760 elf/ldconfig.c:827 #, c-format msgid "Cannot lstat %s" msgstr "Ðе може да Ñе определÑÑ‚ атрибутите(lstat) на %s" -#: elf/ldconfig.c:606 +#: elf/ldconfig.c:607 #, c-format msgid "Ignored file %s since it is not a regular file." msgstr "Пренебрегване на файл %s, защото не е обикновен." -#: elf/ldconfig.c:614 +#: elf/ldconfig.c:615 #, c-format msgid "No link created since soname could not be found for %s" msgstr "Ðе е Ñъздадена връзка, защото не е намерен soname за %s" -#: elf/ldconfig.c:711 +#: elf/ldconfig.c:701 #, c-format msgid " (from %s:%d)\n" msgstr " (от %s:%d)\n" -#: elf/ldconfig.c:726 +#: elf/ldconfig.c:716 #, c-format msgid "Can't open directory %s" msgstr "Ðе може да Ñе отвори Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ %s" -#: elf/ldconfig.c:753 elf/ldconfig.c:758 +#: elf/ldconfig.c:743 elf/ldconfig.c:748 #, c-format msgid "Could not form library path" msgstr "Ðе може да Ñе образува път към библиотека" -#: elf/ldconfig.c:787 elf/ldconfig.c:825 elf/readlib.c:78 +#: elf/ldconfig.c:777 elf/ldconfig.c:815 elf/readlib.c:81 #, c-format msgid "Input file %s not found.\n" msgstr "Ð’Ñ…Ð¾Ð´Ð½Ð¸Ñ Ñ„Ð°Ð¹Ð» %s не е намерен.\n" -#: elf/ldconfig.c:794 +#: elf/ldconfig.c:784 #, c-format msgid "Cannot stat %s" msgstr "Ðе може да Ñе определÑÑ‚ атрибутите на %s" -#: elf/ldconfig.c:913 +#: elf/ldconfig.c:903 #, c-format msgid "libc6 library %s in wrong directory" msgstr "libc6 библиотека %s в неправилна директориÑ" -#: elf/ldconfig.c:932 +#: elf/ldconfig.c:922 #, c-format msgid "libraries %s and %s in directory %s have same soname but different type." msgstr "библиотеките %s и %s от Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ %s Ñа Ñ ÐµÐ´Ð½Ð°ÐºÐ²Ð¾ SONAME, но Ñ Ñ€Ð°Ð·Ð»Ð¸Ñ‡ÐµÐ½ тип." -#: elf/ldconfig.c:1061 +#: elf/ldconfig.c:1051 #, c-format msgid "Warning: ignoring configuration file that cannot be opened: %s" msgstr "Предупреждение: пренебрегване на файл Ñ Ð½Ð°Ñтройки, който не може да Ñе отвори: %s" -#: elf/ldconfig.c:1109 +#: elf/ldconfig.c:1099 #, c-format msgid "%s:%u: hwcap directive ignored" msgstr "%s:%u: пренебрегнато hwcap напътÑтвие" -#: elf/ldconfig.c:1128 +#: elf/ldconfig.c:1118 #, c-format msgid "need absolute file name for configuration file when using -r" msgstr "изиÑква Ñе абÑолютно име на наÑтройващ файл когато Ñе използва -r" -#: elf/ldconfig.c:1135 locale/programs/xasprintf.c:31 +#: elf/ldconfig.c:1125 locale/programs/xasprintf.c:31 #: locale/programs/xmalloc.c:63 malloc/obstack.c:416 malloc/obstack.c:418 #: posix/getconf.c:460 posix/getconf.c:699 #, c-format msgid "memory exhausted" msgstr "паметта е изчерпана" -#: elf/ldconfig.c:1168 +#: elf/ldconfig.c:1158 #, c-format msgid "%s:%u: cannot read directory %s" msgstr "%s:%u: не може да Ñе чете директориÑта %s " -#: elf/ldconfig.c:1206 +#: elf/ldconfig.c:1196 #, c-format msgid "relative path `%s' used to build cache" msgstr "използван е отноÑителен път %s за Ñъздаване на Ñклад" -#: elf/ldconfig.c:1228 +#: elf/ldconfig.c:1218 #, c-format msgid "Can't chdir to /" msgstr "Ðе може да Ñе Ñмени директориÑта на /" -#: elf/ldconfig.c:1269 +#: elf/ldconfig.c:1259 #, c-format msgid "Can't open cache file directory %s\n" msgstr "Ðе може да Ñе отвори директориÑта '%s' Ñ Ñ„Ð°Ð¹Ð» за Ñкладиране\n" @@ -1134,27 +1134,27 @@ msgstr "%s не е файл за Ñподелен обект (Тип: %d).\n" msgid "more than one dynamic segment\n" msgstr "повече от един дÑл за динамично Ñвързване\n" -#: elf/readlib.c:84 +#: elf/readlib.c:87 #, c-format msgid "Cannot fstat file %s.\n" msgstr "Ðе може да Ñе определÑÑ‚ атрибутите(fstat) на файлът %s.\n" -#: elf/readlib.c:95 +#: elf/readlib.c:98 #, c-format msgid "File %s is empty, not checked." msgstr "Файлът %s е празен и не е проверен." -#: elf/readlib.c:101 +#: elf/readlib.c:104 #, c-format msgid "File %s is too small, not checked." msgstr "Файлът %s е много ÐºÑŠÑ Ð¸ не е проверен." -#: elf/readlib.c:111 +#: elf/readlib.c:114 #, c-format msgid "Cannot mmap file %s.\n" msgstr "Файлът %s не може да Ñе изобрази в паметта(mmap).\n" -#: elf/readlib.c:149 +#: elf/readlib.c:152 #, c-format msgid "%s is not an ELF file - it has the wrong magic bytes at the start.\n" msgstr "%s не е ELF файл - започва Ñ Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»Ð½Ð¸ магичеÑки байтове.\n" @@ -4689,7 +4689,7 @@ msgstr "" #: nss/makedb.c:229 #, c-format msgid "cannot open database file `%s'" -msgstr "не може да Ñе отвори файлът на базата данни: \"%s\"" +msgstr "не може да Ñе отвори файлът на базата данни: '%s'" #: nss/makedb.c:274 #, c-format @@ -6545,6 +6545,26 @@ msgstr "не може да Ñе забрани разрешенната подр msgid "can't disable SHSTK" msgstr "не може да Ñе забрани разрешенната подръжка на SHSTK" +#: timezone/zdump.c:131 +#, c-format +msgid "%s: size overflow\n" +msgstr "%s: препълване на ÑтойноÑтта за размер\n" + +#: timezone/zdump.c:170 +#, c-format +msgid "%s: Memory exhausted\n" +msgstr "%s: Изчерпана памет\n" + +#: timezone/zdump.c:257 +#, c-format +msgid "%s: setenv: %s\n" +msgstr "%s: уÑтановÑване на обкръжение: %s\n" + +#: timezone/zdump.c:337 timezone/zdump.c:604 +#, c-format +msgid "%s: unknown timezone '%s': %s\n" +msgstr "%s: неизвеÑтно времева зона '%s': %s\n" + #: timezone/zdump.c:402 msgid "has characters other than ASCII alphanumerics, '-' or '+'" msgstr "е Ñ Ð±ÑƒÐºÐ²Ð¸ извън ASCII букви или цифри, '-' или '+'" @@ -6599,6 +6619,16 @@ msgstr "%s: безумен -c аргумент %s\n" msgid "%s: wild -t argument %s\n" msgstr "%s: безумен -t аргумент %s\n" +#: timezone/zdump.c:857 +#, c-format +msgid " (gmtime failed)" +msgstr " (пропадна gmtime)" + +#: timezone/zdump.c:867 +#, c-format +msgid " (localtime failed)" +msgstr " (пропадна localtime)" + #: timezone/zic.c:463 #, c-format msgid "%s: Memory exhausted: %s\n" @@ -6635,11 +6665,50 @@ msgstr " (правило от \"%s\", ред %<PRIdMAX>)" msgid "warning: " msgstr "предупреждение: " +#: timezone/zic.c:669 +#, c-format +msgid "" +"%s: usage is %s [ --version ] [ --help ] [ -v ] \\\n" +"\t[ -b {slim|fat} ] [ -d directory ] [ -l localtime ] [ -L leapseconds ] \\\n" +"\t[ -p posixrules ] [ -r '[@lo][/@hi]' ] [ -R '@hi' ] \\\n" +"\t[ -t localtime-link ] \\\n" +"\t[ filename ... ]\n" +"\n" +"Report bugs to %s.\n" +msgstr "" +"%s: употребата е %s [ --version ] [ --help ] [ -v ] \\\n" +"\t[ -b {slim|fat} ] [ -d Ð´Ð¸Ñ€ÐµÐºÑ‚Ð¾Ñ€Ð¸Ñ ] [ -l меÑтновреме ] [ -L виÑокоÑниÑекунди ]\\\n" +"\t[ -p posix_правило ] [ -r '[@lo][/@hi]' ] [ -R '@hi' ] \\\n" +"\t[ -t връзка–към–меÑтновреме ] \\\n" +"\t[ именафайл ... ]\n" +"\n" +"Докладване на грешки към %s.\n" + #: timezone/zic.c:695 #, c-format msgid "%s: Can't chdir to %s: %s\n" msgstr "%s: Ðе може да Ñе Ñмени директориÑта на %s: %s\n" +#: timezone/zic.c:786 +#, c-format +msgid "\"Link %s %s\" is part of a link cycle" +msgstr "\"Връзката %s %s\" е чаÑÑ‚ от цикъл Ñ Ð²Ñ€ÑŠÐ·ÐºÐ¸" + +#: timezone/zic.c:797 +#, c-format +msgid "link %s targets itself" +msgstr "връзката %s е към Ñебе Ñи" + +#: timezone/zic.c:817 +#, c-format +msgid "link %s targeting link %s mishandled by pre-2023 zic" +msgstr "zic, преди 2023, не Ñе ÑÐ¿Ñ€Ð°Ð²Ñ Ð´Ð¾Ð±Ñ€Ðµ при връзка %s целÑща връзка %s" + +#: timezone/zic.c:821 +#, c-format +msgid "link %s targeting link %s" +msgstr "връка %s към връзка %s" + #: timezone/zic.c:992 msgid "wild compilation-time specification of zic_t" msgstr "при компилирането е зададен безумен тип за zic_t" @@ -6673,6 +6742,10 @@ msgstr "%s: Зададена е повече от една Ð¾Ð¿Ñ†Ð¸Ñ -p\n" msgid "%s: More than one -t option specified\n" msgstr "%s: Зададена е повече от една Ð¾Ð¿Ñ†Ð¸Ñ -t\n" +#: timezone/zic.c:1064 +msgid "-y ignored" +msgstr "-y пренебрегнат" + #: timezone/zic.c:1071 #, c-format msgid "%s: More than one -L option specified\n" @@ -6688,10 +6761,20 @@ msgstr "%s: Зададена е повече от една Ð¾Ð¿Ñ†Ð¸Ñ -r\n" msgid "%s: invalid time range: %s\n" msgstr "%s: неправилен времеви диапазон: %s\n" +#: timezone/zic.c:1098 +#, c-format +msgid "%s: invalid time: %s\n" +msgstr "%s: неправилно време: %s\n" + #: timezone/zic.c:1104 msgid "-s ignored" msgstr "-s пренебрегнат" +#: timezone/zic.c:1110 +#, c-format +msgid "%s: -R time exceeds -r cutoff\n" +msgstr "%s: -R 'време' превишава -r 'отрÑзък'\n" + #: timezone/zic.c:1171 msgid "empty file name" msgstr "празно име на файл" @@ -6731,11 +6814,21 @@ msgstr "името на файла '%s' Ñъдържа байт '\\%o'" msgid "%s: Can't create %s/%s: %s\n" msgstr "%s: Ðе може да Ñе Ñъздаде %s/%s: %s\n" +#: timezone/zic.c:1388 +#, c-format +msgid "%s: rename to %s/%s: %s\n" +msgstr "%s: преименуване на %s/%s: %s\n" + #: timezone/zic.c:1463 #, c-format msgid "%s: Can't remove %s/%s: %s\n" msgstr "%s: Ðе може да Ñе изтрие %s/%s: %s\n" +#: timezone/zic.c:1507 +#, c-format +msgid "%s: Can't link %s/%s to %s/%s: %s\n" +msgstr "%s: Ðе може да Ñе Ñвърже %s/%s към %s/%s: %s\n" + #: timezone/zic.c:1536 #, c-format msgid "symbolic link used because hard link failed: %s" @@ -6765,6 +6858,18 @@ msgstr "едно и Ñъщо име на правило в много файло msgid "%s in ruleless zone" msgstr "%s в зона без правила" +#: timezone/zic.c:1674 +msgid "input error" +msgstr "входна грешка" + +#: timezone/zic.c:1679 +msgid "unterminated line" +msgstr "незавършен ред" + +#: timezone/zic.c:1683 +msgid "NUL input byte" +msgstr "NUL входÑщ байт" + #: timezone/zic.c:1688 msgid "line too long" msgstr "Твърде дълъг ред" @@ -6899,6 +7004,15 @@ msgstr "многократни редове Expires" msgid "wrong number of fields on Link line" msgstr "неправилен брой полета на ред за Link" +#: timezone/zic.c:2129 +msgid "blank TARGET field on Link line" +msgstr "празно поле TARGET на ред за Link" + +#: timezone/zic.c:2192 +#, c-format +msgid "FROM year \"%s\" is obsolete; treated as %d" +msgstr "'от година' \"%s\" е отживелица, замеÑтено Ñ %d" + #: timezone/zic.c:2199 msgid "invalid starting year" msgstr "неправилна начална година" @@ -6911,6 +7025,11 @@ msgstr "неправилна крайна година" msgid "starting year greater than ending year" msgstr "началната година е по-голÑма от крайната" +#: timezone/zic.c:2222 +#, c-format +msgid "year type \"%s\" is unsupported; use \"-\" instead" +msgstr "тип на годината \"%s\" не Ñе поддържа, да Ñе използва \"-\"" + #: timezone/zic.c:2257 msgid "invalid weekday name" msgstr "неправилно име на ден от Ñедмицата" @@ -6924,6 +7043,16 @@ msgstr "нÑкой клиенти, Ñе ÑправÑÑ‚ зле при повечРmsgid "pre-2014 clients may mishandle more than 1200 transition times" msgstr "клиенти преди 2014, може да не Ñе ÑправÑÑ‚ правилно при повече от 1200 прехода" +#: timezone/zic.c:2480 +#, c-format +msgid "%s: pre-2021b clients may mishandle leap second expiry" +msgstr "%s: клиенти преди 2021b , може да не Ñе ÑправÑÑ‚ Ñ Ð¸Ð·Ñ‚Ð¸Ñ‡Ð°Ð½ÐµÑ‚Ð¾ на дългата Ñекунда" + +#: timezone/zic.c:2488 +#, c-format +msgid "%s: pre-2021b clients may mishandle leap second table truncation" +msgstr "%s: клиенти преди 2021b , може да не Ñе ÑправÑÑ‚ ÑÑŠÑ Ñъкращаването на таблицата Ñ Ð´ÑŠÐ»Ð³Ð¸ Ñекунди" + #: timezone/zic.c:2537 msgid "too many transition times" msgstr "твърде много типове за преход" @@ -6933,6 +7062,10 @@ msgstr "твърде много типове за преход" msgid "%%z UT offset magnitude exceeds 99:59:59" msgstr "%%z ОтмеÑтването ÑпрÑмо универÑалноте време превишава 99:59:59" +#: timezone/zic.c:3180 +msgid "no POSIX.1-2017 environment variable for zone" +msgstr "в обкръжението, липÑва POSIX.1-2017 променлива за зона" + #: timezone/zic.c:3187 #, c-format msgid "%s: pre-%d clients may mishandle distant timestamps" @@ -6958,6 +7091,10 @@ msgstr "твърде много типове за меÑтно време" msgid "too many leap seconds" msgstr "твърде много виÑокоÑни Ñекунди" +#: timezone/zic.c:3535 +msgid "Rolling leap seconds not supported with -r" +msgstr "Претълкалване на дълга Ñекунда не Ñе поддръжа Ñ -r" + #: timezone/zic.c:3562 msgid "Leap seconds too close together" msgstr "твърде близки виÑокоÑни Ñекунди" @@ -6980,6 +7117,10 @@ msgstr "\"%s\" е двуÑмиÑлен за zic от преди 2017c" msgid "Odd number of quotation marks" msgstr "Ðеочакван брой кавички" +#: timezone/zic.c:3750 +msgid "Too many input fields" +msgstr "Твърде много входÑщи полета" + #: timezone/zic.c:3839 msgid "use of 2/29 in non leap-year" msgstr "използване на 29.2 за невиÑокоÑна година" diff --git a/po/ca.po b/po/ca.po index db2b17e424..06555c2499 100644 --- a/po/ca.po +++ b/po/ca.po @@ -48,7 +48,7 @@ msgid "" msgstr "" "Project-Id-Version: libc 2.37.9000\n" -"POT-Creation-Date: 2024-06-19 22:30+0200\n" +"POT-Creation-Date: 2024-07-21 00:32+0200\n" "PO-Revision-Date: 2023-08-21 18:12+0200\n" "Last-Translator: Ivan Vilata i Balaguer <ivan@selidor.net>\n" "Language-Team: Catalan <ca@dodds.net>\n" @@ -196,7 +196,7 @@ msgstr "" "[FITXER_EIXIDA [FITXER_ENTRADA]…]" # L’adreça es veu millor aixÃ. ivb -#: catgets/gencat.c:230 debug/pcprofiledump.c:208 elf/ldconfig.c:216 +#: catgets/gencat.c:230 debug/pcprofiledump.c:208 elf/ldconfig.c:217 #: elf/pldd.c:246 elf/sln.c:77 elf/sprof.c:371 iconv/iconv_prog.c:387 #: iconv/iconvconfig.c:380 locale/programs/locale.c:275 #: locale/programs/localedef.c:437 login/programs/pt_chown.c:88 @@ -211,7 +211,7 @@ msgstr "" "<%s>.\n" #: catgets/gencat.c:246 debug/pcprofiledump.c:224 debug/xtrace.sh:63 -#: elf/ldconfig.c:232 elf/ldd.bash.in:38 elf/pldd.c:262 elf/sotruss.sh:75 +#: elf/ldconfig.c:233 elf/ldd.bash.in:38 elf/pldd.c:262 elf/sotruss.sh:75 #: elf/sprof.c:388 iconv/iconv_prog.c:404 iconv/iconvconfig.c:397 #: locale/programs/locale.c:292 locale/programs/localedef.c:459 #: login/programs/pt_chown.c:62 malloc/memusage.sh:70 malloc/memusagestat.c:582 @@ -228,7 +228,7 @@ msgstr "" "ADEQUACIÓ PER A UN PROPÃ’SIT PARTICULAR.\n" #: catgets/gencat.c:251 debug/pcprofiledump.c:229 debug/xtrace.sh:67 -#: elf/ldconfig.c:237 elf/pldd.c:267 elf/sprof.c:394 iconv/iconv_prog.c:409 +#: elf/ldconfig.c:238 elf/pldd.c:267 elf/sprof.c:394 iconv/iconv_prog.c:409 #: iconv/iconvconfig.c:402 locale/programs/locale.c:297 #: locale/programs/localedef.c:464 malloc/memusage.sh:74 #: malloc/memusagestat.c:587 nscd/nscd.c:526 nss/getent.c:97 nss/makedb.c:392 @@ -451,7 +451,7 @@ msgstr "l’ordenació d’octets de la memòria cau no és correcta\n" msgid "Cache generated by: " msgstr "Memòria cau generada per: " -#: elf/cache.c:296 elf/ldconfig.c:1249 +#: elf/cache.c:296 elf/ldconfig.c:1239 #, c-format msgid "Can't open cache file %s\n" msgstr "no s’ha pogut obrir el fitxer «%s» de memòria cau\n" @@ -775,7 +775,7 @@ msgstr "no s’ha pogut protegir la memòria després de reubicar" msgid "RTLD_NEXT used in code not dynamically loaded" msgstr "s’ha emprat RTLD_NEXT en un codi no carregat dinà micament" -#: elf/dl-tls.c:1059 +#: elf/dl-tls.c:1136 msgid "cannot create TLS data structures" msgstr "no s’han pogut crear les estructures de dades TLS" @@ -792,227 +792,227 @@ msgid "DT_RELR without GLIBC_ABI_DT_RELR dependency" msgstr "s’ha trobat una entrada DT_RELR sense dependència GLIBC_ABI_DT_RELR" # Més ajudes. ivb -#: elf/ldconfig.c:124 +#: elf/ldconfig.c:125 msgid "Print cache" msgstr "Mostra la memòria cau." -#: elf/ldconfig.c:125 +#: elf/ldconfig.c:126 msgid "Generate verbose messages" msgstr "Genera missatges detallats." -#: elf/ldconfig.c:126 +#: elf/ldconfig.c:127 msgid "Don't build cache" msgstr "No construeix la memòria cau." -#: elf/ldconfig.c:127 +#: elf/ldconfig.c:128 msgid "Don't update symbolic links" msgstr "No actualitza els enllaços simbòlics." -#: elf/ldconfig.c:128 +#: elf/ldconfig.c:129 msgid "Change to and use ROOT as root directory" msgstr "Canvia a i empra ARREL com a directori arrel." -#: elf/ldconfig.c:128 +#: elf/ldconfig.c:129 msgid "ROOT" msgstr "ARREL" -#: elf/ldconfig.c:129 +#: elf/ldconfig.c:130 msgid "CACHE" msgstr "CACHE" -#: elf/ldconfig.c:129 +#: elf/ldconfig.c:130 msgid "Use CACHE as cache file" msgstr "Empra CACHE com a fitxer de memòria cau." -#: elf/ldconfig.c:130 +#: elf/ldconfig.c:131 msgid "CONF" msgstr "CONF" -#: elf/ldconfig.c:130 +#: elf/ldconfig.c:131 msgid "Use CONF as configuration file" msgstr "Empra CONF com a fitxer de configuració." -#: elf/ldconfig.c:131 +#: elf/ldconfig.c:132 msgid "Only process directories specified on the command line. Don't build cache." msgstr "Només processa els directoris especificats a la lÃnia d’ordres. No construeix la memòria cau." -#: elf/ldconfig.c:132 +#: elf/ldconfig.c:133 msgid "Manually link individual libraries." msgstr "Per a enllaçar les biblioteques manualment." -#: elf/ldconfig.c:133 +#: elf/ldconfig.c:134 msgid "FORMAT" msgstr "FORMAT" -#: elf/ldconfig.c:133 +#: elf/ldconfig.c:134 msgid "Format to use: new (default), old, or compat" msgstr "FORMAT a emprar: «new» (nou, per defecte), «old» (antic) o «compat» (compatible)." -#: elf/ldconfig.c:134 +#: elf/ldconfig.c:135 msgid "Ignore auxiliary cache file" msgstr "No té en compte el fitxer de memòria cau auxiliar." -#: elf/ldconfig.c:142 +#: elf/ldconfig.c:143 msgid "Configure Dynamic Linker Run Time Bindings." msgstr "Configura els vincles en temps d’execució de l’enllaçador dinà mic." -#: elf/ldconfig.c:276 +#: elf/ldconfig.c:277 #, c-format msgid "Path `%s' given more than once" msgstr "s’ha indicat el camà «%s» més d’una volta" # Continua l’error anterior; NOM_DE_FITXER:LÃNIA. ivb # No usa quote(). ivb -#: elf/ldconfig.c:277 +#: elf/ldconfig.c:278 #, c-format msgid "(from %s:%d and %s:%d)\n" msgstr "(a «%s»:%d i a «%s»:%d)\n" -#: elf/ldconfig.c:309 elf/ldconfig.c:350 +#: elf/ldconfig.c:310 elf/ldconfig.c:351 #, c-format msgid "Could not form glibc-hwcaps path" msgstr "no s’ha pogut construir el camà «glibc-hwcaps»" # Missatge d’error. ivb # No usa quote(). ivb -#: elf/ldconfig.c:323 +#: elf/ldconfig.c:324 #, c-format msgid "Listing directory %s" msgstr "en llistar el directori «%s»" -#: elf/ldconfig.c:405 +#: elf/ldconfig.c:406 #, c-format msgid "Can't stat %s" msgstr "ha fallat stat() sobre «%s»" -#: elf/ldconfig.c:486 +#: elf/ldconfig.c:487 #, c-format msgid "Can't stat %s\n" msgstr "ha fallat stat() sobre «%s»\n" -#: elf/ldconfig.c:496 +#: elf/ldconfig.c:497 #, c-format msgid "%s is not a symbolic link\n" msgstr "«%s» no és un enllaç simbòlic\n" -#: elf/ldconfig.c:515 +#: elf/ldconfig.c:516 #, c-format msgid "Can't unlink %s" msgstr "no s’ha pogut desenllaçar «%s»" -#: elf/ldconfig.c:521 +#: elf/ldconfig.c:522 #, c-format msgid "Can't link %s to %s" msgstr "no s’ha pogut crear un enllaç des de «%s» cap a «%s»" # ivb (2001/10/28) # ivb Es refereix a un enllaç -> masculÃ. -#: elf/ldconfig.c:527 +#: elf/ldconfig.c:528 msgid " (changed)\n" msgstr " (canviat)\n" # ivb (2001/10/28) # ivb Es refereix a fer o no l'enllaç, no importa el gènere. -#: elf/ldconfig.c:529 +#: elf/ldconfig.c:530 msgid " (SKIPPED)\n" msgstr " (SALTAT)\n" -#: elf/ldconfig.c:584 +#: elf/ldconfig.c:585 #, c-format msgid "Can't find %s" msgstr "no s’ha pogut trobar «%s»" -#: elf/ldconfig.c:600 elf/ldconfig.c:770 elf/ldconfig.c:837 +#: elf/ldconfig.c:601 elf/ldconfig.c:760 elf/ldconfig.c:827 #, c-format msgid "Cannot lstat %s" msgstr "ha fallat lstat() sobre «%s»" -#: elf/ldconfig.c:606 +#: elf/ldconfig.c:607 #, c-format msgid "Ignored file %s since it is not a regular file." msgstr "es descarta el fitxer «%s» que no és un fitxer ordinari" -#: elf/ldconfig.c:614 +#: elf/ldconfig.c:615 #, c-format msgid "No link created since soname could not be found for %s" msgstr "no s’ha creat l’enllaç perquè no s’ha trobat el nom d’objecte compartit de «%s»" # Continua un missatge de diagnòstic anterior; NOM_DE_FITXER:LÃNIA. ivb # No usa quote(). ivb -#: elf/ldconfig.c:711 +#: elf/ldconfig.c:701 #, c-format msgid " (from %s:%d)\n" msgstr " (a «%s»:%d)\n" -#: elf/ldconfig.c:726 +#: elf/ldconfig.c:716 #, c-format msgid "Can't open directory %s" msgstr "no s’ha pogut obrir el directori «%s»" # Es refereix a la cadena de carà cters. ivb -#: elf/ldconfig.c:753 elf/ldconfig.c:758 +#: elf/ldconfig.c:743 elf/ldconfig.c:748 #, c-format msgid "Could not form library path" msgstr "no s’ha pogut formar el camà de biblioteques" -#: elf/ldconfig.c:787 elf/ldconfig.c:825 elf/readlib.c:78 +#: elf/ldconfig.c:777 elf/ldconfig.c:815 elf/readlib.c:81 #, c-format msgid "Input file %s not found.\n" msgstr "no s’ha trobat el fitxer d’entrada «%s»\n" -#: elf/ldconfig.c:794 +#: elf/ldconfig.c:784 #, c-format msgid "Cannot stat %s" msgstr "ha fallat stat() sobre «%s»" -#: elf/ldconfig.c:913 +#: elf/ldconfig.c:903 #, c-format msgid "libc6 library %s in wrong directory" msgstr "la biblioteca «%s» per a libc6 es troba en un directori incorrecte" -#: elf/ldconfig.c:932 +#: elf/ldconfig.c:922 #, c-format msgid "libraries %s and %s in directory %s have same soname but different type." msgstr "les biblioteques «%s» i «%s» del directori «%s» tenen el mateix nom d’objecte compartit però diferent tipus." -#: elf/ldconfig.c:1061 +#: elf/ldconfig.c:1051 #, c-format msgid "Warning: ignoring configuration file that cannot be opened: %s" msgstr "avÃs: es descarta el fitxer de configuració que no s’ha pogut obrir: %s" -#: elf/ldconfig.c:1109 +#: elf/ldconfig.c:1099 #, c-format msgid "%s:%u: hwcap directive ignored" msgstr "%s:%u: es descarta la directiva «hwcap»" -#: elf/ldconfig.c:1128 +#: elf/ldconfig.c:1118 #, c-format msgid "need absolute file name for configuration file when using -r" msgstr "cal indicar el camà absolut del fitxer de configuració en emprar «-r»" -#: elf/ldconfig.c:1135 locale/programs/xasprintf.c:31 +#: elf/ldconfig.c:1125 locale/programs/xasprintf.c:31 #: locale/programs/xmalloc.c:63 malloc/obstack.c:416 malloc/obstack.c:418 #: posix/getconf.c:460 posix/getconf.c:699 #, c-format msgid "memory exhausted" msgstr "la memòria s’ha exhaurit" -#: elf/ldconfig.c:1168 +#: elf/ldconfig.c:1158 #, c-format msgid "%s:%u: cannot read directory %s" msgstr "%s:%u: no s’ha pogut llegir el directori «%s»" -#: elf/ldconfig.c:1206 +#: elf/ldconfig.c:1196 #, c-format msgid "relative path `%s' used to build cache" msgstr "s’ha indicat el camà relatiu «%s» per a construir la memòria cau" -#: elf/ldconfig.c:1228 +#: elf/ldconfig.c:1218 #, c-format msgid "Can't chdir to /" msgstr "no s’ha pogut canviar al directori arrel" -#: elf/ldconfig.c:1269 +#: elf/ldconfig.c:1259 #, c-format msgid "Can't open cache file directory %s\n" msgstr "no s’ha pogut obrir el directori «%s» de fitxers de memòria cau\n" @@ -1224,27 +1224,27 @@ msgstr "«%s» no és un fitxer d’objecte compartit (tipus: %d)\n" msgid "more than one dynamic segment\n" msgstr "hi ha més d’un segment dinà mic\n" -#: elf/readlib.c:84 +#: elf/readlib.c:87 #, c-format msgid "Cannot fstat file %s.\n" msgstr "ha fallat fstat() sobre el fitxer «%s»\n" -#: elf/readlib.c:95 +#: elf/readlib.c:98 #, c-format msgid "File %s is empty, not checked." msgstr "el fitxer «%s» és buit, no es comprova" -#: elf/readlib.c:101 +#: elf/readlib.c:104 #, c-format msgid "File %s is too small, not checked." msgstr "el fitxer «%s» és massa menut, no es comprova" -#: elf/readlib.c:111 +#: elf/readlib.c:114 #, c-format msgid "Cannot mmap file %s.\n" msgstr "ha fallat mmap() sobre el fitxer «%s»\n" -#: elf/readlib.c:149 +#: elf/readlib.c:152 #, c-format msgid "%s is not an ELF file - it has the wrong magic bytes at the start.\n" msgstr "«%s» no és un fitxer ELF: els octets mà gics del començament no són correctes\n" diff --git a/po/cs.po b/po/cs.po index 6cdaa8017b..0505728f96 100644 --- a/po/cs.po +++ b/po/cs.po @@ -26,7 +26,7 @@ msgid "" msgstr "" "Project-Id-Version: libc 2.39.9000\n" -"POT-Creation-Date: 2024-06-19 22:30+0200\n" +"POT-Creation-Date: 2024-07-21 00:32+0200\n" "PO-Revision-Date: 2024-06-23 12:41+02:00\n" "Last-Translator: Petr Pisar <petr.pisar@atlas.cz>\n" "Language-Team: Czech <translation-team-cs@lists.sourceforge.net>\n" @@ -171,7 +171,7 @@ msgstr "" "-o VÃSTUPNÃ_SOUBOR [VSTUPNÃ_SOUBOR]…\n" "[ VÃSTUPNÃ_SOUBOR [VSTUPNÃ_SOUBOR]…]" -#: catgets/gencat.c:230 debug/pcprofiledump.c:208 elf/ldconfig.c:216 +#: catgets/gencat.c:230 debug/pcprofiledump.c:208 elf/ldconfig.c:217 #: elf/pldd.c:246 elf/sln.c:77 elf/sprof.c:371 iconv/iconv_prog.c:387 #: iconv/iconvconfig.c:380 locale/programs/locale.c:275 #: locale/programs/localedef.c:437 login/programs/pt_chown.c:88 @@ -186,7 +186,7 @@ msgstr "" "%s.\n" #: catgets/gencat.c:246 debug/pcprofiledump.c:224 debug/xtrace.sh:63 -#: elf/ldconfig.c:232 elf/ldd.bash.in:38 elf/pldd.c:262 elf/sotruss.sh:75 +#: elf/ldconfig.c:233 elf/ldd.bash.in:38 elf/pldd.c:262 elf/sotruss.sh:75 #: elf/sprof.c:388 iconv/iconv_prog.c:404 iconv/iconvconfig.c:397 #: locale/programs/locale.c:292 locale/programs/localedef.c:459 #: login/programs/pt_chown.c:62 malloc/memusage.sh:70 malloc/memusagestat.c:582 @@ -203,7 +203,7 @@ msgstr "" "a to i bez záruky PRODEJNOSTI nebo VHODNOSTI PRO NÄšJAKà KONKRÉTNà ÚČEL.\n" #: catgets/gencat.c:251 debug/pcprofiledump.c:229 debug/xtrace.sh:67 -#: elf/ldconfig.c:237 elf/pldd.c:267 elf/sprof.c:394 iconv/iconv_prog.c:409 +#: elf/ldconfig.c:238 elf/pldd.c:267 elf/sprof.c:394 iconv/iconv_prog.c:409 #: iconv/iconvconfig.c:402 locale/programs/locale.c:297 #: locale/programs/localedef.c:464 malloc/memusage.sh:74 #: malloc/memusagestat.c:587 nscd/nscd.c:526 nss/getent.c:97 nss/makedb.c:392 @@ -420,7 +420,7 @@ msgstr "Soubor s keÅ¡Ã má nesprávnou endianitu.\n" msgid "Cache generated by: " msgstr "KeÅ¡ vytvoÅ™il: " -#: elf/cache.c:296 elf/ldconfig.c:1249 +#: elf/cache.c:296 elf/ldconfig.c:1239 #, c-format msgid "Can't open cache file %s\n" msgstr "Soubor s keÅ¡Ã %s nelze otevÅ™Ãt\n" @@ -731,7 +731,7 @@ msgstr "po pÅ™emÃstÄ›nà nelze nelze uplatnit dodateÄnou ochranu pamÄ›ti" msgid "RTLD_NEXT used in code not dynamically loaded" msgstr "RTLD_NEXT je použito pro kód, který nenà dynamicky zaveden" -#: elf/dl-tls.c:1059 +#: elf/dl-tls.c:1136 msgid "cannot create TLS data structures" msgstr "datové struktury TLS nelze vytvoÅ™it" @@ -747,216 +747,216 @@ msgstr "tabulku odkazů na verze nelze alokovat" msgid "DT_RELR without GLIBC_ABI_DT_RELR dependency" msgstr "DT_RELR bez závislosti GLIBC_ABI_DT_RELR" -#: elf/ldconfig.c:124 +#: elf/ldconfig.c:125 msgid "Print cache" msgstr "Vypsat keÅ¡" -#: elf/ldconfig.c:125 +#: elf/ldconfig.c:126 msgid "Generate verbose messages" msgstr "Vypisuje podrobné zprávy" -#: elf/ldconfig.c:126 +#: elf/ldconfig.c:127 msgid "Don't build cache" msgstr "Nevybuduje keÅ¡" -#: elf/ldconfig.c:127 +#: elf/ldconfig.c:128 msgid "Don't update symbolic links" msgstr "Neaktualizuje symbolické odkazy" -#: elf/ldconfig.c:128 +#: elf/ldconfig.c:129 msgid "Change to and use ROOT as root directory" msgstr "PÅ™epne se do a použije KOŘEN jako koÅ™enový adresář" -#: elf/ldconfig.c:128 +#: elf/ldconfig.c:129 msgid "ROOT" msgstr "KOŘEN" -#: elf/ldconfig.c:129 +#: elf/ldconfig.c:130 msgid "CACHE" msgstr "KEÅ " -#: elf/ldconfig.c:129 +#: elf/ldconfig.c:130 msgid "Use CACHE as cache file" msgstr "Použije KEÅ jako soubor s keÅ¡Ã" -#: elf/ldconfig.c:130 +#: elf/ldconfig.c:131 msgid "CONF" msgstr "KONFIG" -#: elf/ldconfig.c:130 +#: elf/ldconfig.c:131 msgid "Use CONF as configuration file" msgstr "Použije KONFIG jako konfiguraÄnà soubor" -#: elf/ldconfig.c:131 +#: elf/ldconfig.c:132 msgid "Only process directories specified on the command line. Don't build cache." msgstr "Zpracuje jen adresáře uvedené na pÅ™Ãkazovém řádku. Nevybuduje keÅ¡." -#: elf/ldconfig.c:132 +#: elf/ldconfig.c:133 msgid "Manually link individual libraries." msgstr "RuÄnÄ› odkazuje jednotlivé knihovny." -#: elf/ldconfig.c:133 +#: elf/ldconfig.c:134 msgid "FORMAT" msgstr "FORMÃT" -#: elf/ldconfig.c:133 +#: elf/ldconfig.c:134 msgid "Format to use: new (default), old, or compat" msgstr "Který formát použije: new [nový] (výchozÃ), old [starý] nebo compat [kompatibilnÃ]" -#: elf/ldconfig.c:134 +#: elf/ldconfig.c:135 msgid "Ignore auxiliary cache file" msgstr "Ignoruje pomocné soubory s keÅ¡Ã" -#: elf/ldconfig.c:142 +#: elf/ldconfig.c:143 msgid "Configure Dynamic Linker Run Time Bindings." msgstr "Nastavà vazby dynamického linkeru pro dobu bÄ›hu" -#: elf/ldconfig.c:276 +#: elf/ldconfig.c:277 #, c-format msgid "Path `%s' given more than once" msgstr "Cesta „%s“ zadána vÃce krát" -#: elf/ldconfig.c:277 +#: elf/ldconfig.c:278 #, c-format msgid "(from %s:%d and %s:%d)\n" msgstr "(z %s:%d a %s:%d)\n" -#: elf/ldconfig.c:309 elf/ldconfig.c:350 +#: elf/ldconfig.c:310 elf/ldconfig.c:351 #, c-format msgid "Could not form glibc-hwcaps path" msgstr "Cestu ke glibc-hwcaps nebylo možné sestavit" -#: elf/ldconfig.c:323 +#: elf/ldconfig.c:324 #, c-format msgid "Listing directory %s" msgstr "Výpis adresáře %s" -#: elf/ldconfig.c:405 +#: elf/ldconfig.c:406 #, c-format msgid "Can't stat %s" msgstr "Nelze zÃskat informace o %s" -#: elf/ldconfig.c:486 +#: elf/ldconfig.c:487 #, c-format msgid "Can't stat %s\n" msgstr "Nelze zÃskat informace o %s\n" -#: elf/ldconfig.c:496 +#: elf/ldconfig.c:497 #, c-format msgid "%s is not a symbolic link\n" msgstr "%s nenà symbolický odkaz\n" -#: elf/ldconfig.c:515 +#: elf/ldconfig.c:516 #, c-format msgid "Can't unlink %s" msgstr "Nelze smazat odkaz na %s" -#: elf/ldconfig.c:521 +#: elf/ldconfig.c:522 #, c-format msgid "Can't link %s to %s" msgstr "Odkaz na %2$s z %1$s nelze vytvoÅ™it" -#: elf/ldconfig.c:527 +#: elf/ldconfig.c:528 msgid " (changed)\n" msgstr " (zmÄ›nÄ›no)\n" -#: elf/ldconfig.c:529 +#: elf/ldconfig.c:530 msgid " (SKIPPED)\n" msgstr " (PŘESKOÄŒENO)\n" -#: elf/ldconfig.c:584 +#: elf/ldconfig.c:585 #, c-format msgid "Can't find %s" msgstr "%s nezle nalézt" -#: elf/ldconfig.c:600 elf/ldconfig.c:770 elf/ldconfig.c:837 +#: elf/ldconfig.c:601 elf/ldconfig.c:760 elf/ldconfig.c:827 #, c-format msgid "Cannot lstat %s" msgstr "Informace o symbolickém odkazu %s nelze zÃskat" -#: elf/ldconfig.c:606 +#: elf/ldconfig.c:607 #, c-format msgid "Ignored file %s since it is not a regular file." msgstr "Soubor %s ignorován, neb se nejedná o obyÄejný soubor." -#: elf/ldconfig.c:614 +#: elf/ldconfig.c:615 #, c-format msgid "No link created since soname could not be found for %s" msgstr "Protože nebyl nalezen název sdÃlené knihovny (soname) %s, žádný odkaz nebyl vytvoÅ™eni." -#: elf/ldconfig.c:711 +#: elf/ldconfig.c:701 #, c-format msgid " (from %s:%d)\n" msgstr " (z %s:%d)\n" -#: elf/ldconfig.c:726 +#: elf/ldconfig.c:716 #, c-format msgid "Can't open directory %s" msgstr "Adresář %s nelze otevÅ™Ãt" -#: elf/ldconfig.c:753 elf/ldconfig.c:758 +#: elf/ldconfig.c:743 elf/ldconfig.c:748 #, c-format msgid "Could not form library path" msgstr "Cestu ke knihovnÄ› nebylo možné vytvoÅ™it" -#: elf/ldconfig.c:787 elf/ldconfig.c:825 elf/readlib.c:78 +#: elf/ldconfig.c:777 elf/ldconfig.c:815 elf/readlib.c:81 #, c-format msgid "Input file %s not found.\n" msgstr "Vstupnà soubor %s nebyl nalezen.\n" -#: elf/ldconfig.c:794 +#: elf/ldconfig.c:784 #, c-format msgid "Cannot stat %s" msgstr "Informace o %s nelze zÃskat" -#: elf/ldconfig.c:913 +#: elf/ldconfig.c:903 #, c-format msgid "libc6 library %s in wrong directory" msgstr "libc6 knihovna %s je ve Å¡patném adresáři" -#: elf/ldconfig.c:932 +#: elf/ldconfig.c:922 #, c-format msgid "libraries %s and %s in directory %s have same soname but different type." msgstr "knihovny %s a %s z adresáře %s majà stejný název (soname), ale rozdÃlný typ." -#: elf/ldconfig.c:1061 +#: elf/ldconfig.c:1051 #, c-format msgid "Warning: ignoring configuration file that cannot be opened: %s" msgstr "Pozor: soubor, který nelze otevÅ™Ãt, bude ignorován: %s" -#: elf/ldconfig.c:1109 +#: elf/ldconfig.c:1099 #, c-format msgid "%s:%u: hwcap directive ignored" msgstr "%s:%u: direktiva hwcap ignorována" -#: elf/ldconfig.c:1128 +#: elf/ldconfig.c:1118 #, c-format msgid "need absolute file name for configuration file when using -r" msgstr "PÅ™i použità -r je tÅ™eba zadat absolutnà jméno konfiguraÄnÃho souboru" -#: elf/ldconfig.c:1135 locale/programs/xasprintf.c:31 +#: elf/ldconfig.c:1125 locale/programs/xasprintf.c:31 #: locale/programs/xmalloc.c:63 malloc/obstack.c:416 malloc/obstack.c:418 #: posix/getconf.c:460 posix/getconf.c:699 #, c-format msgid "memory exhausted" msgstr "paměť vyÄerpána" -#: elf/ldconfig.c:1168 +#: elf/ldconfig.c:1158 #, c-format msgid "%s:%u: cannot read directory %s" msgstr "%s:%u: adresář %s nelze naÄÃst" -#: elf/ldconfig.c:1206 +#: elf/ldconfig.c:1196 #, c-format msgid "relative path `%s' used to build cache" msgstr "pro vybudovánà keÅ¡e byla použita relativnà cesta „%s“" -#: elf/ldconfig.c:1228 +#: elf/ldconfig.c:1218 #, c-format msgid "Can't chdir to /" msgstr "Nelze se pÅ™epnout do adresáře /" -#: elf/ldconfig.c:1269 +#: elf/ldconfig.c:1259 #, c-format msgid "Can't open cache file directory %s\n" msgstr "Adresář %s se soubory keÅ¡Ã nelze otevÅ™Ãt\n" @@ -1155,27 +1155,27 @@ msgstr "%s nenà sdÃleným objektovým souborem (typ: %d).\n" msgid "more than one dynamic segment\n" msgstr "vÃce jak jeden dynamický segment\n" -#: elf/readlib.c:84 +#: elf/readlib.c:87 #, c-format msgid "Cannot fstat file %s.\n" msgstr "O souboru %s nelze zÃskat informace službou fstat().\n" -#: elf/readlib.c:95 +#: elf/readlib.c:98 #, c-format msgid "File %s is empty, not checked." msgstr "Soubor %s je prázdný, nezkontrolováno." -#: elf/readlib.c:101 +#: elf/readlib.c:104 #, c-format msgid "File %s is too small, not checked." msgstr "Soubor %s je pÅ™ÃliÅ¡ malý, nezkontrolováno." -#: elf/readlib.c:111 +#: elf/readlib.c:114 #, c-format msgid "Cannot mmap file %s.\n" msgstr "Soubor %s nelze namapovat.\n" -#: elf/readlib.c:149 +#: elf/readlib.c:152 #, c-format msgid "%s is not an ELF file - it has the wrong magic bytes at the start.\n" msgstr "%s nenà soubor typu ELF – na svém zaÄátku má chybné magické bajty.\n" diff --git a/po/da.po b/po/da.po index 169d5b3e99..d5913d2d79 100644 --- a/po/da.po +++ b/po/da.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: libc-2.11.1\n" -"POT-Creation-Date: 2024-06-19 22:30+0200\n" +"POT-Creation-Date: 2024-07-21 00:32+0200\n" "PO-Revision-Date: 2010-11-01 10:37+0100\n" "Last-Translator: Keld Simonsen <keld@keldix.com>\n" "Language-Team: Danish <dansk@dansk-gruppen.dk>\n" @@ -127,7 +127,7 @@ msgstr "" "[UDFIL [INDFIL]...]" #: catgets/gencat.c:246 debug/pcprofiledump.c:224 debug/xtrace.sh:63 -#: elf/ldconfig.c:232 elf/ldd.bash.in:38 elf/pldd.c:262 elf/sotruss.sh:75 +#: elf/ldconfig.c:233 elf/ldd.bash.in:38 elf/pldd.c:262 elf/sotruss.sh:75 #: elf/sprof.c:388 iconv/iconv_prog.c:404 iconv/iconvconfig.c:397 #: locale/programs/locale.c:292 locale/programs/localedef.c:459 #: login/programs/pt_chown.c:62 malloc/memusage.sh:70 malloc/memusagestat.c:582 @@ -144,7 +144,7 @@ msgstr "" "TIL NOGEN SPECIEL OPGAVE.\n" #: catgets/gencat.c:251 debug/pcprofiledump.c:229 debug/xtrace.sh:67 -#: elf/ldconfig.c:237 elf/pldd.c:267 elf/sprof.c:394 iconv/iconv_prog.c:409 +#: elf/ldconfig.c:238 elf/pldd.c:267 elf/sprof.c:394 iconv/iconv_prog.c:409 #: iconv/iconvconfig.c:402 locale/programs/locale.c:297 #: locale/programs/localedef.c:464 malloc/memusage.sh:74 #: malloc/memusagestat.c:587 nscd/nscd.c:526 nss/getent.c:97 nss/makedb.c:392 @@ -327,7 +327,7 @@ msgstr "ugyldig tilstand" msgid "invalid mode parameter" msgstr "ugyldig tilstandsparameter" -#: elf/cache.c:296 elf/ldconfig.c:1249 +#: elf/cache.c:296 elf/ldconfig.c:1239 #, c-format msgid "Can't open cache file %s\n" msgstr "Kan ikke Ã¥bne hurtigbufferfil %s\n" @@ -596,7 +596,7 @@ msgstr "kan ikke udføre yderligere hukommelsesbeskyttelser efter flytning" msgid "RTLD_NEXT used in code not dynamically loaded" msgstr "RTLD_NEXT brugt i kode er ikke dynamisk indlæst" -#: elf/dl-tls.c:1059 +#: elf/dl-tls.c:1136 msgid "cannot create TLS data structures" msgstr "kan ikke oprette datastrukturer for TLS" @@ -604,173 +604,173 @@ msgstr "kan ikke oprette datastrukturer for TLS" msgid "cannot allocate version reference table" msgstr "kan ikke allokere versionsreferencetabel" -#: elf/ldconfig.c:124 +#: elf/ldconfig.c:125 msgid "Print cache" msgstr "Udskriftsbuffer" -#: elf/ldconfig.c:125 +#: elf/ldconfig.c:126 msgid "Generate verbose messages" msgstr "Skriv udførlige meddelelser" -#: elf/ldconfig.c:126 +#: elf/ldconfig.c:127 msgid "Don't build cache" msgstr "Byg ikke hurtigbuffer" -#: elf/ldconfig.c:128 +#: elf/ldconfig.c:129 msgid "Change to and use ROOT as root directory" msgstr "Skift til og brug ROOT som rod-katalog" -#: elf/ldconfig.c:128 +#: elf/ldconfig.c:129 msgid "ROOT" msgstr "ROOT" -#: elf/ldconfig.c:129 +#: elf/ldconfig.c:130 msgid "CACHE" msgstr "CACHE" -#: elf/ldconfig.c:129 +#: elf/ldconfig.c:130 msgid "Use CACHE as cache file" msgstr "Brug CACHE som bufferfil" -#: elf/ldconfig.c:130 +#: elf/ldconfig.c:131 msgid "CONF" msgstr "CONF" -#: elf/ldconfig.c:130 +#: elf/ldconfig.c:131 msgid "Use CONF as configuration file" msgstr "Brug CONF som konfigurationsfil" -#: elf/ldconfig.c:131 +#: elf/ldconfig.c:132 msgid "Only process directories specified on the command line. Don't build cache." msgstr "Kun proces-kataloger angivet pÃ¥ kommandolinjen. Undlad at bygge buffer." -#: elf/ldconfig.c:132 +#: elf/ldconfig.c:133 msgid "Manually link individual libraries." msgstr "Lænk manuelt individuelle biblioteker" -#: elf/ldconfig.c:133 +#: elf/ldconfig.c:134 msgid "FORMAT" msgstr "FORMAT" -#: elf/ldconfig.c:134 +#: elf/ldconfig.c:135 msgid "Ignore auxiliary cache file" msgstr "Ignorér ekstern bufferfil" -#: elf/ldconfig.c:142 +#: elf/ldconfig.c:143 msgid "Configure Dynamic Linker Run Time Bindings." msgstr "Konfigurér kørselsværdier til Dynamisk Lænker" -#: elf/ldconfig.c:276 +#: elf/ldconfig.c:277 #, c-format msgid "Path `%s' given more than once" msgstr "Stien '%s' givet mere end én gang" -#: elf/ldconfig.c:405 +#: elf/ldconfig.c:406 #, c-format msgid "Can't stat %s" msgstr "Kan ikke stat() %s" -#: elf/ldconfig.c:486 +#: elf/ldconfig.c:487 #, c-format msgid "Can't stat %s\n" msgstr "Kan ikke stat() %s\n" -#: elf/ldconfig.c:496 +#: elf/ldconfig.c:497 #, c-format msgid "%s is not a symbolic link\n" msgstr "%s er ikke en symbolsk lænke\n" -#: elf/ldconfig.c:515 +#: elf/ldconfig.c:516 #, c-format msgid "Can't unlink %s" msgstr "Kan ikke aflænke %s" -#: elf/ldconfig.c:521 +#: elf/ldconfig.c:522 #, c-format msgid "Can't link %s to %s" msgstr "Kan ikke lænke %s til %s" -#: elf/ldconfig.c:527 +#: elf/ldconfig.c:528 msgid " (changed)\n" msgstr " (ændret)\n" -#: elf/ldconfig.c:529 +#: elf/ldconfig.c:530 msgid " (SKIPPED)\n" msgstr " (UDELADT)\n" -#: elf/ldconfig.c:584 +#: elf/ldconfig.c:585 #, c-format msgid "Can't find %s" msgstr "Kan ikke finde %s" -#: elf/ldconfig.c:600 elf/ldconfig.c:770 elf/ldconfig.c:837 +#: elf/ldconfig.c:601 elf/ldconfig.c:760 elf/ldconfig.c:827 #, c-format msgid "Cannot lstat %s" msgstr "Kan ikke lstat %s" -#: elf/ldconfig.c:606 +#: elf/ldconfig.c:607 #, c-format msgid "Ignored file %s since it is not a regular file." msgstr "Ignorerede filen %s da den ikke er en almindelig fil." -#: elf/ldconfig.c:614 +#: elf/ldconfig.c:615 #, c-format msgid "No link created since soname could not be found for %s" msgstr "Ingen lænke oprettet da .so-navn ikke kunne findes for %s" -#: elf/ldconfig.c:726 +#: elf/ldconfig.c:716 #, c-format msgid "Can't open directory %s" msgstr "Kan ikke Ã¥bne katalog %s" -#: elf/ldconfig.c:787 elf/ldconfig.c:825 elf/readlib.c:78 +#: elf/ldconfig.c:777 elf/ldconfig.c:815 elf/readlib.c:81 #, c-format msgid "Input file %s not found.\n" msgstr "Inddatafilen %s ikke fundet\n" -#: elf/ldconfig.c:794 +#: elf/ldconfig.c:784 #, c-format msgid "Cannot stat %s" msgstr "Kan ikke stat() %s" -#: elf/ldconfig.c:913 +#: elf/ldconfig.c:903 #, c-format msgid "libc6 library %s in wrong directory" msgstr "libc6-bibliotek %s i forkert katalog" -#: elf/ldconfig.c:932 +#: elf/ldconfig.c:922 #, c-format msgid "libraries %s and %s in directory %s have same soname but different type." msgstr "bibliotekerne %s og %s i kataloget %s har samme .so-navn, men forskellig type" -#: elf/ldconfig.c:1128 +#: elf/ldconfig.c:1118 #, c-format msgid "need absolute file name for configuration file when using -r" msgstr "behøver fuldt filnavn for konfigurationsfil nÃ¥r -r bruges" -#: elf/ldconfig.c:1135 locale/programs/xasprintf.c:31 +#: elf/ldconfig.c:1125 locale/programs/xasprintf.c:31 #: locale/programs/xmalloc.c:63 malloc/obstack.c:416 malloc/obstack.c:418 #: posix/getconf.c:460 posix/getconf.c:699 #, c-format msgid "memory exhausted" msgstr "hukommelsen opbrugt" -#: elf/ldconfig.c:1168 +#: elf/ldconfig.c:1158 #, c-format msgid "%s:%u: cannot read directory %s" msgstr "%s:%u: kan ikke læse katalog %s" -#: elf/ldconfig.c:1206 +#: elf/ldconfig.c:1196 #, c-format msgid "relative path `%s' used to build cache" msgstr "relativ søgesti \"%s\" brugt til at bygge hurtigbuffer" -#: elf/ldconfig.c:1228 +#: elf/ldconfig.c:1218 #, c-format msgid "Can't chdir to /" msgstr "Kan ikke chdir til /" -#: elf/ldconfig.c:1269 +#: elf/ldconfig.c:1259 #, c-format msgid "Can't open cache file directory %s\n" msgstr "Kan ikke Ã¥bne hurtigbuffer-katalog %s\n" @@ -870,27 +870,27 @@ msgstr "%s er ikke en delt objektfil (Type: %d).\n" msgid "more than one dynamic segment\n" msgstr "mere end ét dynamisk segment\n" -#: elf/readlib.c:84 +#: elf/readlib.c:87 #, c-format msgid "Cannot fstat file %s.\n" msgstr "Kan ikke fstat() fil %s\n" -#: elf/readlib.c:95 +#: elf/readlib.c:98 #, c-format msgid "File %s is empty, not checked." msgstr "Fil %s er tom, ikke afprøvet." -#: elf/readlib.c:101 +#: elf/readlib.c:104 #, c-format msgid "File %s is too small, not checked." msgstr "Fil %s er for lille, ikke afprøvet." -#: elf/readlib.c:111 +#: elf/readlib.c:114 #, c-format msgid "Cannot mmap file %s.\n" msgstr "Kan ikke mmap fil %s\n" -#: elf/readlib.c:149 +#: elf/readlib.c:152 #, c-format msgid "%s is not an ELF file - it has the wrong magic bytes at the start.\n" msgstr "%s er ikke en ELF-fil - den har de forkerte signaturtegn i starten.\n" diff --git a/po/de.po b/po/de.po index 8ddd23b9bb..f31b581c6f 100644 --- a/po/de.po +++ b/po/de.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: GNU libc 2.39.9000\n" -"POT-Creation-Date: 2024-06-19 22:30+0200\n" +"POT-Creation-Date: 2024-07-21 00:32+0200\n" "PO-Revision-Date: 2024-06-22 15:54+0200\n" "Last-Translator: Jochen Hein <jochen@jochen.org>\n" "Language-Team: German <translation-team-de@lists.sourceforge.net>\n" @@ -149,7 +149,7 @@ msgstr "" "-o AUSGABEDATEI [EINGABEDATEI]...\n" "[AUSGABEDATEI [EINGABEDATEI]...]" -#: catgets/gencat.c:230 debug/pcprofiledump.c:208 elf/ldconfig.c:216 +#: catgets/gencat.c:230 debug/pcprofiledump.c:208 elf/ldconfig.c:217 #: elf/pldd.c:246 elf/sln.c:77 elf/sprof.c:371 iconv/iconv_prog.c:387 #: iconv/iconvconfig.c:380 locale/programs/locale.c:275 #: locale/programs/localedef.c:437 login/programs/pt_chown.c:88 @@ -164,7 +164,7 @@ msgstr "" "%s.\n" #: catgets/gencat.c:246 debug/pcprofiledump.c:224 debug/xtrace.sh:63 -#: elf/ldconfig.c:232 elf/ldd.bash.in:38 elf/pldd.c:262 elf/sotruss.sh:75 +#: elf/ldconfig.c:233 elf/ldd.bash.in:38 elf/pldd.c:262 elf/sotruss.sh:75 #: elf/sprof.c:388 iconv/iconv_prog.c:404 iconv/iconvconfig.c:397 #: locale/programs/locale.c:292 locale/programs/localedef.c:459 #: login/programs/pt_chown.c:62 malloc/memusage.sh:70 malloc/memusagestat.c:582 @@ -181,7 +181,7 @@ msgstr "" "VERWENDBARKEIT FÃœR EINEN ANGEGEBENEN ZWECK.\n" #: catgets/gencat.c:251 debug/pcprofiledump.c:229 debug/xtrace.sh:67 -#: elf/ldconfig.c:237 elf/pldd.c:267 elf/sprof.c:394 iconv/iconv_prog.c:409 +#: elf/ldconfig.c:238 elf/pldd.c:267 elf/sprof.c:394 iconv/iconv_prog.c:409 #: iconv/iconvconfig.c:402 locale/programs/locale.c:297 #: locale/programs/localedef.c:464 malloc/memusage.sh:74 #: malloc/memusagestat.c:587 nscd/nscd.c:526 nss/getent.c:97 nss/makedb.c:392 @@ -396,7 +396,7 @@ msgstr "Die Cachedatei hat die falsche Endianess.\n" msgid "Cache generated by: " msgstr "Der Cache wurde generiert von: " -#: elf/cache.c:296 elf/ldconfig.c:1249 +#: elf/cache.c:296 elf/ldconfig.c:1239 #, c-format msgid "Can't open cache file %s\n" msgstr "Kann die Cachedatei »%s« nicht öffnen\n" @@ -712,7 +712,7 @@ msgstr "Kann den Speicherschutz nach Relozierung nicht ändern" msgid "RTLD_NEXT used in code not dynamically loaded" msgstr "»RTLD_NEXT« wird in Code verwendet, der nicht dynamisch geladen ist" -#: elf/dl-tls.c:1059 +#: elf/dl-tls.c:1136 msgid "cannot create TLS data structures" msgstr "Kann keine TLS Datenstrukturen erzeugen" @@ -728,216 +728,216 @@ msgstr "Nicht genügend Hauptspeicher für die Versions-Referenz-Tabelle verfüg msgid "DT_RELR without GLIBC_ABI_DT_RELR dependency" msgstr "DT_RELR ohne GLIBC_ABI_DT_RELR Abhängigkeit" -#: elf/ldconfig.c:124 +#: elf/ldconfig.c:125 msgid "Print cache" msgstr "Cache ausgeben" -#: elf/ldconfig.c:125 +#: elf/ldconfig.c:126 msgid "Generate verbose messages" msgstr "Mehr Nachrichten ausgeben" -#: elf/ldconfig.c:126 +#: elf/ldconfig.c:127 msgid "Don't build cache" msgstr "Keinen Cache anlegen" -#: elf/ldconfig.c:127 +#: elf/ldconfig.c:128 msgid "Don't update symbolic links" msgstr "Symbolische Links nicht aktualisieren" -#: elf/ldconfig.c:128 +#: elf/ldconfig.c:129 msgid "Change to and use ROOT as root directory" msgstr "Wechsel in das Verzeichnis ROOT und verwende dieses als Wurzelverzeichnis" -#: elf/ldconfig.c:128 +#: elf/ldconfig.c:129 msgid "ROOT" msgstr "ROOT" -#: elf/ldconfig.c:129 +#: elf/ldconfig.c:130 msgid "CACHE" msgstr "CACHE" -#: elf/ldconfig.c:129 +#: elf/ldconfig.c:130 msgid "Use CACHE as cache file" msgstr "CACHE als Cache-Datei verwenden" -#: elf/ldconfig.c:130 +#: elf/ldconfig.c:131 msgid "CONF" msgstr "CONF" -#: elf/ldconfig.c:130 +#: elf/ldconfig.c:131 msgid "Use CONF as configuration file" msgstr "CONF als Konfigurationsdatei verwenden" -#: elf/ldconfig.c:131 +#: elf/ldconfig.c:132 msgid "Only process directories specified on the command line. Don't build cache." msgstr "Verarbeite nur die als Parameter angegebenen Verzeichnisse. Keinen Cache erstellen." -#: elf/ldconfig.c:132 +#: elf/ldconfig.c:133 msgid "Manually link individual libraries." msgstr "Einzelne Bibliotheken manuell einbinden." -#: elf/ldconfig.c:133 +#: elf/ldconfig.c:134 msgid "FORMAT" msgstr "FORMAT" -#: elf/ldconfig.c:133 +#: elf/ldconfig.c:134 msgid "Format to use: new (default), old, or compat" msgstr "Zu verwendendes Format: »new« (Vorgabe), »old« oder »compat«" -#: elf/ldconfig.c:134 +#: elf/ldconfig.c:135 msgid "Ignore auxiliary cache file" msgstr "Ignoriere die zusätzliche Cache-Datei" -#: elf/ldconfig.c:142 +#: elf/ldconfig.c:143 msgid "Configure Dynamic Linker Run Time Bindings." msgstr "Konfigurieren der Runtime-Bindungen des dynamischen Linkers" -#: elf/ldconfig.c:276 +#: elf/ldconfig.c:277 #, c-format msgid "Path `%s' given more than once" msgstr "Pfad »%s« mehrfach angegeben" -#: elf/ldconfig.c:277 +#: elf/ldconfig.c:278 #, c-format msgid "(from %s:%d and %s:%d)\n" msgstr "(in %s:%d und %s:%d)\n" -#: elf/ldconfig.c:309 elf/ldconfig.c:350 +#: elf/ldconfig.c:310 elf/ldconfig.c:351 #, c-format msgid "Could not form glibc-hwcaps path" msgstr "Kann den Pfad für glibc-hwcaps nicht generieren" -#: elf/ldconfig.c:323 +#: elf/ldconfig.c:324 #, c-format msgid "Listing directory %s" msgstr "Anzeige des Verzeichnisses »%s«" -#: elf/ldconfig.c:405 +#: elf/ldconfig.c:406 #, c-format msgid "Can't stat %s" msgstr "Kann »stat()« für »%s« nicht aufrufen" -#: elf/ldconfig.c:486 +#: elf/ldconfig.c:487 #, c-format msgid "Can't stat %s\n" msgstr "Kann »stat« für »%s« nicht aufrufen\n" -#: elf/ldconfig.c:496 +#: elf/ldconfig.c:497 #, c-format msgid "%s is not a symbolic link\n" msgstr "%s ist kein symbolischer Link\n" -#: elf/ldconfig.c:515 +#: elf/ldconfig.c:516 #, c-format msgid "Can't unlink %s" msgstr "Kann den Verzeichniseintrag »%s« nicht löschen (unlink)" -#: elf/ldconfig.c:521 +#: elf/ldconfig.c:522 #, c-format msgid "Can't link %s to %s" msgstr "Es ist nicht möglich, von »%s« nach »%s« zu linken" -#: elf/ldconfig.c:527 +#: elf/ldconfig.c:528 msgid " (changed)\n" msgstr " (geändert)\n" -#: elf/ldconfig.c:529 +#: elf/ldconfig.c:530 msgid " (SKIPPED)\n" msgstr " (ÃœBERSPRUNGEN)\n" -#: elf/ldconfig.c:584 +#: elf/ldconfig.c:585 #, c-format msgid "Can't find %s" msgstr "%s ist nicht zu finden" -#: elf/ldconfig.c:600 elf/ldconfig.c:770 elf/ldconfig.c:837 +#: elf/ldconfig.c:601 elf/ldconfig.c:760 elf/ldconfig.c:827 #, c-format msgid "Cannot lstat %s" msgstr "Es ist nicht möglich, den Status (lstat()) der Datei %s zu lesen" -#: elf/ldconfig.c:606 +#: elf/ldconfig.c:607 #, c-format msgid "Ignored file %s since it is not a regular file." msgstr "Datei %s übergangen, da sie keine reguläre Datei ist." -#: elf/ldconfig.c:614 +#: elf/ldconfig.c:615 #, c-format msgid "No link created since soname could not be found for %s" msgstr "Keinen Link angelegt, da »soname« für %s nicht zu finden ist" -#: elf/ldconfig.c:711 +#: elf/ldconfig.c:701 #, c-format msgid " (from %s:%d)\n" msgstr " (in %s:%d)\n" -#: elf/ldconfig.c:726 +#: elf/ldconfig.c:716 #, c-format msgid "Can't open directory %s" msgstr "Kann das Verzeichnis »%s« nicht öffnen" -#: elf/ldconfig.c:753 elf/ldconfig.c:758 +#: elf/ldconfig.c:743 elf/ldconfig.c:748 #, c-format msgid "Could not form library path" msgstr "Es ist nicht möglich, den Bibliothekspfad zu bilden" -#: elf/ldconfig.c:787 elf/ldconfig.c:825 elf/readlib.c:78 +#: elf/ldconfig.c:777 elf/ldconfig.c:815 elf/readlib.c:81 #, c-format msgid "Input file %s not found.\n" msgstr "Die Eingabedatei %s wurde nicht gefunden.\n" -#: elf/ldconfig.c:794 +#: elf/ldconfig.c:784 #, c-format msgid "Cannot stat %s" msgstr "Es ist nicht möglich, den Status (stat()) der Datei %s zu lesen" -#: elf/ldconfig.c:913 +#: elf/ldconfig.c:903 #, c-format msgid "libc6 library %s in wrong directory" msgstr "libc6-Bibliothek %s im falschen Verzeichnis" -#: elf/ldconfig.c:932 +#: elf/ldconfig.c:922 #, c-format msgid "libraries %s and %s in directory %s have same soname but different type." msgstr "Die Bibliotheken »%s« und »%s« im Verzeichnis %s haben den gleichen soname, aber verschiedene Typen." -#: elf/ldconfig.c:1061 +#: elf/ldconfig.c:1051 #, c-format msgid "Warning: ignoring configuration file that cannot be opened: %s" msgstr "Warnung: ignoriere Datei, die nicht geöffnet werden kann: %s" -#: elf/ldconfig.c:1109 +#: elf/ldconfig.c:1099 #, c-format msgid "%s:%u: hwcap directive ignored" msgstr "%s:%u: hwcap Anweisung ignoriert" -#: elf/ldconfig.c:1128 +#: elf/ldconfig.c:1118 #, c-format msgid "need absolute file name for configuration file when using -r" msgstr "Für »-r« muß der absolute Name der Konfigurationsdatei angegeben werden" -#: elf/ldconfig.c:1135 locale/programs/xasprintf.c:31 +#: elf/ldconfig.c:1125 locale/programs/xasprintf.c:31 #: locale/programs/xmalloc.c:63 malloc/obstack.c:416 malloc/obstack.c:418 #: posix/getconf.c:460 posix/getconf.c:699 #, c-format msgid "memory exhausted" msgstr "Hauptspeicher erschöpft" -#: elf/ldconfig.c:1168 +#: elf/ldconfig.c:1158 #, c-format msgid "%s:%u: cannot read directory %s" msgstr "%s:%u: Kann das Verzeichnis »%s« nicht lesen" -#: elf/ldconfig.c:1206 +#: elf/ldconfig.c:1196 #, c-format msgid "relative path `%s' used to build cache" msgstr "Der relative Pfad »%s« wird zum Erstellen des Caches verwendet" -#: elf/ldconfig.c:1228 +#: elf/ldconfig.c:1218 #, c-format msgid "Can't chdir to /" msgstr "Wechsel in das Verzeichnis / nicht möglich" -#: elf/ldconfig.c:1269 +#: elf/ldconfig.c:1259 #, c-format msgid "Can't open cache file directory %s\n" msgstr "Kann das Cache-Verzeichnis »%s« nicht öffnen\n" @@ -1140,27 +1140,27 @@ msgstr "%s ist keine Shared-Object-Datei (Typ: %d).\n" msgid "more than one dynamic segment\n" msgstr "mehr als ein dynamisches Segment\n" -#: elf/readlib.c:84 +#: elf/readlib.c:87 #, c-format msgid "Cannot fstat file %s.\n" msgstr "Es ist nicht möglich, den Status (fstat()) der Datei %s zu lesen.\n" -#: elf/readlib.c:95 +#: elf/readlib.c:98 #, c-format msgid "File %s is empty, not checked." msgstr "Datei %s ist leer; keine Ãœberprüfung." -#: elf/readlib.c:101 +#: elf/readlib.c:104 #, c-format msgid "File %s is too small, not checked." msgstr "Datei %s ist zu klein; keine Ãœberprüfung." -#: elf/readlib.c:111 +#: elf/readlib.c:114 #, c-format msgid "Cannot mmap file %s.\n" msgstr "Kann die Datei »%s« nicht »mmap«-en.\n" -#: elf/readlib.c:149 +#: elf/readlib.c:152 #, c-format msgid "%s is not an ELF file - it has the wrong magic bytes at the start.\n" msgstr "%s ist keine ELF-Datei - sie weist falsche »magische Bytes« am Beginn auf.\n" diff --git a/po/el.po b/po/el.po index 37ab4251b7..7e4985349e 100644 --- a/po/el.po +++ b/po/el.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: libc 2.2.3\n" -"POT-Creation-Date: 2024-06-19 22:30+0200\n" +"POT-Creation-Date: 2024-07-21 00:32+0200\n" "PO-Revision-Date: 2001-05-21 19:20:31+0000\n" "Last-Translator: Nikos Mavroyanopoulos <nmav@hellug.gr>\n" "Language-Team: Greek <nls@tux.hellug.gr>\n" @@ -117,7 +117,7 @@ msgstr "" "[ΑΡΧΕΙΟ-ΕΞΟΔΟΥ [ΑΡΧΕΙΟ-ΕΙΣΟΔΟΥ]...]" #: catgets/gencat.c:246 debug/pcprofiledump.c:224 debug/xtrace.sh:63 -#: elf/ldconfig.c:232 elf/ldd.bash.in:38 elf/pldd.c:262 elf/sotruss.sh:75 +#: elf/ldconfig.c:233 elf/ldd.bash.in:38 elf/pldd.c:262 elf/sotruss.sh:75 #: elf/sprof.c:388 iconv/iconv_prog.c:404 iconv/iconvconfig.c:397 #: locale/programs/locale.c:292 locale/programs/localedef.c:459 #: login/programs/pt_chown.c:62 malloc/memusage.sh:70 malloc/memusagestat.c:582 @@ -134,7 +134,7 @@ msgstr "" "ΚΑΠΟΙΟ ΣΥΓΚΕΚΡΙΜΕÎΟ ΣΚΟΠΟ.\n" #: catgets/gencat.c:251 debug/pcprofiledump.c:229 debug/xtrace.sh:67 -#: elf/ldconfig.c:237 elf/pldd.c:267 elf/sprof.c:394 iconv/iconv_prog.c:409 +#: elf/ldconfig.c:238 elf/pldd.c:267 elf/sprof.c:394 iconv/iconv_prog.c:409 #: iconv/iconvconfig.c:402 locale/programs/locale.c:297 #: locale/programs/localedef.c:464 malloc/memusage.sh:74 #: malloc/memusagestat.c:587 nscd/nscd.c:526 nss/getent.c:97 nss/makedb.c:392 @@ -209,16 +209,16 @@ msgstr "μη ÎγκυÏη κατάσταση για την dlopen()" msgid "RTLD_NEXT used in code not dynamically loaded" msgstr "Το RTLD_NEXT που χÏησιμοποιείται στον κώδικα δεν φοÏτώθηκε δυναμικά" -#: elf/ldconfig.c:496 +#: elf/ldconfig.c:497 #, c-format msgid "%s is not a symbolic link\n" msgstr "το %s δεν είναι συμβολικός σÏνδεσμος\n" -#: elf/ldconfig.c:527 +#: elf/ldconfig.c:528 msgid " (changed)\n" msgstr " (άλλαξε)\n" -#: elf/ldconfig.c:1135 locale/programs/xasprintf.c:31 +#: elf/ldconfig.c:1125 locale/programs/xasprintf.c:31 #: locale/programs/xmalloc.c:63 malloc/obstack.c:416 malloc/obstack.c:418 #: posix/getconf.c:460 posix/getconf.c:699 #, c-format @@ -236,7 +236,7 @@ msgstr "Δεν υπάÏχει Ï„Îτοιο αÏχείο ή κατάλογος" msgid "not regular file" msgstr "δεν είναι κανονικό αÏχείο" -#: elf/readlib.c:111 +#: elf/readlib.c:114 #, c-format msgid "Cannot mmap file %s.\n" msgstr "Αδυναμία μεταφοÏάς στη μνήμη (mmap) του αÏχείου %s.\n" diff --git a/po/eo.po b/po/eo.po index fc81b98b96..35127c2075 100644 --- a/po/eo.po +++ b/po/eo.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: libc 2.31.9000\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-06-19 22:30+0200\n" +"POT-Creation-Date: 2024-07-21 00:32+0200\n" "PO-Revision-Date: 2020-12-30 12:07+0100\n" "Last-Translator: Benno Schulenberg <vertaling@coevern.nl>\n" "Language-Team: Esperanto <translation-team-eo@lists.sourceforge.net>\n" @@ -152,7 +152,7 @@ msgstr "" "-o ELIGDOSIERO [ENIGDOSIERO...]\n" "[ELIGDOSIERO [ENIGDOSIERO...]]" -#: catgets/gencat.c:230 debug/pcprofiledump.c:208 elf/ldconfig.c:216 +#: catgets/gencat.c:230 debug/pcprofiledump.c:208 elf/ldconfig.c:217 #: elf/pldd.c:246 elf/sln.c:77 elf/sprof.c:371 iconv/iconv_prog.c:387 #: iconv/iconvconfig.c:380 locale/programs/locale.c:275 #: locale/programs/localedef.c:437 login/programs/pt_chown.c:88 @@ -167,7 +167,7 @@ msgstr "" " %s.\n" #: catgets/gencat.c:246 debug/pcprofiledump.c:224 debug/xtrace.sh:63 -#: elf/ldconfig.c:232 elf/ldd.bash.in:38 elf/pldd.c:262 elf/sotruss.sh:75 +#: elf/ldconfig.c:233 elf/ldd.bash.in:38 elf/pldd.c:262 elf/sotruss.sh:75 #: elf/sprof.c:388 iconv/iconv_prog.c:404 iconv/iconvconfig.c:397 #: locale/programs/locale.c:292 locale/programs/localedef.c:459 #: login/programs/pt_chown.c:62 malloc/memusage.sh:70 malloc/memusagestat.c:582 @@ -183,7 +183,7 @@ msgstr "" "DoniÄas NENIA GARANTIO; eĉ ne por KOMERCKVALITO aÅ ADEKVATECO POR IU CELO.\n" #: catgets/gencat.c:251 debug/pcprofiledump.c:229 debug/xtrace.sh:67 -#: elf/ldconfig.c:237 elf/pldd.c:267 elf/sprof.c:394 iconv/iconv_prog.c:409 +#: elf/ldconfig.c:238 elf/pldd.c:267 elf/sprof.c:394 iconv/iconv_prog.c:409 #: iconv/iconvconfig.c:402 locale/programs/locale.c:297 #: locale/programs/localedef.c:464 malloc/memusage.sh:74 #: malloc/memusagestat.c:587 nscd/nscd.c:526 nss/getent.c:97 nss/makedb.c:392 @@ -348,7 +348,7 @@ msgstr "nevalida moduso" msgid "invalid mode parameter" msgstr "nevalida modusa argumento" -#: elf/cache.c:296 elf/ldconfig.c:1249 +#: elf/cache.c:296 elf/ldconfig.c:1239 #, c-format msgid "Can't open cache file %s\n" msgstr "Ne eblas malfermi kaÅmemoran dosieron %s\n" @@ -457,179 +457,179 @@ msgstr "ne eblas malfermi komunan objektdosieron" msgid "invalid mode for dlopen()" msgstr "nevalida moduso por 'dlopen()'" -#: elf/ldconfig.c:124 +#: elf/ldconfig.c:125 msgid "Print cache" msgstr "eligi kaÅmemoron" -#: elf/ldconfig.c:125 +#: elf/ldconfig.c:126 msgid "Generate verbose messages" msgstr "eligi detalajn mesaÄojn" -#: elf/ldconfig.c:126 +#: elf/ldconfig.c:127 msgid "Don't build cache" msgstr "ne krei kaÅmemoron" -#: elf/ldconfig.c:127 +#: elf/ldconfig.c:128 msgid "Don't update symbolic links" msgstr "ne Äisdatigi simbolajn ligojn" -#: elf/ldconfig.c:128 +#: elf/ldconfig.c:129 msgid "Change to and use ROOT as root directory" msgstr "ÅanÄi al RADIKO kaj uzi Äin kiel radikan dosierujon" -#: elf/ldconfig.c:128 +#: elf/ldconfig.c:129 msgid "ROOT" msgstr "RADIKO" -#: elf/ldconfig.c:129 +#: elf/ldconfig.c:130 msgid "CACHE" msgstr "KAÅœMEMORO" -#: elf/ldconfig.c:129 +#: elf/ldconfig.c:130 msgid "Use CACHE as cache file" msgstr "uzi KAÅœMEMOROn kiel kaÅmemoran dosieron" -#: elf/ldconfig.c:130 +#: elf/ldconfig.c:131 msgid "CONF" msgstr "AGORDDOSIERO" -#: elf/ldconfig.c:130 +#: elf/ldconfig.c:131 msgid "Use CONF as configuration file" msgstr "uzi AGORDDOSIEROn kiel agordan dosieron" -#: elf/ldconfig.c:131 +#: elf/ldconfig.c:132 msgid "Only process directories specified on the command line. Don't build cache." msgstr "nur trakti dosierujojn kiuj indikatas en komandlinio; ne krei kaÅmemoron" -#: elf/ldconfig.c:132 +#: elf/ldconfig.c:133 msgid "Manually link individual libraries." msgstr "mane ligi individuajn bibliotekojn" -#: elf/ldconfig.c:133 +#: elf/ldconfig.c:134 msgid "FORMAT" msgstr "ARANÄœO" -#: elf/ldconfig.c:133 +#: elf/ldconfig.c:134 msgid "Format to use: new (default), old, or compat" msgstr "uzenda aranÄo: 'new' (nova, defaÅlte), 'old' (malnova), aÅ 'compat' (kongrua)" -#: elf/ldconfig.c:134 +#: elf/ldconfig.c:135 msgid "Ignore auxiliary cache file" msgstr "ignori neĉefan kaÅmemoran dosieron" -#: elf/ldconfig.c:142 +#: elf/ldconfig.c:143 msgid "Configure Dynamic Linker Run Time Bindings." msgstr "" " \n" "Agordas la dinamika bindilo." -#: elf/ldconfig.c:276 +#: elf/ldconfig.c:277 #, c-format msgid "Path `%s' given more than once" msgstr "pado '%s' indikatas plurfoje" -#: elf/ldconfig.c:405 +#: elf/ldconfig.c:406 #, c-format msgid "Can't stat %s" msgstr "malsukcesis eltrovi statinformon pri %s" -#: elf/ldconfig.c:486 +#: elf/ldconfig.c:487 #, c-format msgid "Can't stat %s\n" msgstr "malsukcesis eltrovi statinformon pri %s\n" -#: elf/ldconfig.c:496 +#: elf/ldconfig.c:497 #, c-format msgid "%s is not a symbolic link\n" msgstr "%s ne estas simbola ligo\n" -#: elf/ldconfig.c:515 +#: elf/ldconfig.c:516 #, c-format msgid "Can't unlink %s" msgstr "ne eblas malligi %s" -#: elf/ldconfig.c:521 +#: elf/ldconfig.c:522 #, c-format msgid "Can't link %s to %s" msgstr "ne eblas ligi %s al %s" # SIGWINCH 28,28,20 Ign Window resize signal (4.3 BSD, Sun) -#: elf/ldconfig.c:527 +#: elf/ldconfig.c:528 msgid " (changed)\n" msgstr " (ÅanÄiÄis)\n" -#: elf/ldconfig.c:529 +#: elf/ldconfig.c:530 msgid " (SKIPPED)\n" msgstr " (TRANSSALTITA)\n" -#: elf/ldconfig.c:584 +#: elf/ldconfig.c:585 #, c-format msgid "Can't find %s" msgstr "malsukcesis trovi %s" -#: elf/ldconfig.c:600 elf/ldconfig.c:770 elf/ldconfig.c:837 +#: elf/ldconfig.c:601 elf/ldconfig.c:760 elf/ldconfig.c:827 #, c-format msgid "Cannot lstat %s" msgstr "malsukcesis eltrovi statinformon pri %s" -#: elf/ldconfig.c:606 +#: elf/ldconfig.c:607 #, c-format msgid "Ignored file %s since it is not a regular file." msgstr "Dosiero %s ignoriÄis ĉar Äi ne estas normala dosiero." -#: elf/ldconfig.c:711 +#: elf/ldconfig.c:701 #, c-format msgid " (from %s:%d)\n" msgstr " (elde %s:%d)\n" -#: elf/ldconfig.c:726 +#: elf/ldconfig.c:716 #, c-format msgid "Can't open directory %s" msgstr "ne eblas malfermi dosierujon %s" -#: elf/ldconfig.c:787 elf/ldconfig.c:825 elf/readlib.c:78 +#: elf/ldconfig.c:777 elf/ldconfig.c:815 elf/readlib.c:81 #, c-format msgid "Input file %s not found.\n" msgstr "Eniga dosiero %s ne troviÄas.\n" -#: elf/ldconfig.c:794 +#: elf/ldconfig.c:784 #, c-format msgid "Cannot stat %s" msgstr "malsukcesis eltrovi statinformon pri %s" -#: elf/ldconfig.c:913 +#: elf/ldconfig.c:903 #, c-format msgid "libc6 library %s in wrong directory" msgstr "libc6-biblioteko %s estas en malÄusta dosierujo" -#: elf/ldconfig.c:1061 +#: elf/ldconfig.c:1051 #, c-format msgid "Warning: ignoring configuration file that cannot be opened: %s" msgstr "Averto: ignoriÄas agorda dosiero kiu ne malfermeblas: %s" -#: elf/ldconfig.c:1135 locale/programs/xasprintf.c:31 +#: elf/ldconfig.c:1125 locale/programs/xasprintf.c:31 #: locale/programs/xmalloc.c:63 malloc/obstack.c:416 malloc/obstack.c:418 #: posix/getconf.c:460 posix/getconf.c:699 #, c-format msgid "memory exhausted" msgstr "mankas sufiĉa memoro" -#: elf/ldconfig.c:1168 +#: elf/ldconfig.c:1158 #, c-format msgid "%s:%u: cannot read directory %s" msgstr "%s:%u: ne eblas legi dosierujon %s" -#: elf/ldconfig.c:1206 +#: elf/ldconfig.c:1196 #, c-format msgid "relative path `%s' used to build cache" msgstr "uziÄas relativa pado '%s' por krei kaÅmemoron" -#: elf/ldconfig.c:1228 +#: elf/ldconfig.c:1218 #, c-format msgid "Can't chdir to /" msgstr "malsukcesis ÅanÄi aktualan dosierujon al «/»" -#: elf/ldconfig.c:1269 +#: elf/ldconfig.c:1259 #, c-format msgid "Can't open cache file directory %s\n" msgstr "malsukcesis malfermi kaÅmemoran dosierujon %s\n" @@ -761,22 +761,22 @@ msgstr "dosiero %s trunkiÄis\n" msgid "more than one dynamic segment\n" msgstr "pli ol unu dinamika segmento\n" -#: elf/readlib.c:84 +#: elf/readlib.c:87 #, c-format msgid "Cannot fstat file %s.\n" msgstr "Malsukcesis eltrovi statinformon pri %s.\n" -#: elf/readlib.c:95 +#: elf/readlib.c:98 #, c-format msgid "File %s is empty, not checked." msgstr "Dosiero %s vakas; ne kontroliÄas." -#: elf/readlib.c:101 +#: elf/readlib.c:104 #, c-format msgid "File %s is too small, not checked." msgstr "Dosiero %s tro malgrandas; ne kontroliÄas." -#: elf/readlib.c:111 +#: elf/readlib.c:114 #, c-format msgid "Cannot mmap file %s.\n" msgstr "Malsukcesis meti tutan dosieron %s en memoro.\n" diff --git a/po/es.po b/po/es.po index 5b0fc50e5c..dbe8c439e3 100644 --- a/po/es.po +++ b/po/es.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: GNU libc 2.19.90\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-06-19 22:30+0200\n" +"POT-Creation-Date: 2024-07-21 00:32+0200\n" "PO-Revision-Date: 2014-08-25 16:18-0700\n" "Last-Translator: Santiago Vila Doncel <sanvila@unex.es>\n" "Language-Team: Spanish <es@tp.org.es>\n" @@ -146,7 +146,7 @@ msgstr "" "-o FICHERO-SALIDA [FICHERO-ENTRADA]...\n" "[FICHERO-SALIDA [FICHERO-ENTRADA]...]" -#: catgets/gencat.c:230 debug/pcprofiledump.c:208 elf/ldconfig.c:216 +#: catgets/gencat.c:230 debug/pcprofiledump.c:208 elf/ldconfig.c:217 #: elf/pldd.c:246 elf/sln.c:77 elf/sprof.c:371 iconv/iconv_prog.c:387 #: iconv/iconvconfig.c:380 locale/programs/locale.c:275 #: locale/programs/localedef.c:437 login/programs/pt_chown.c:88 @@ -161,7 +161,7 @@ msgstr "" "%s.\n" #: catgets/gencat.c:246 debug/pcprofiledump.c:224 debug/xtrace.sh:63 -#: elf/ldconfig.c:232 elf/ldd.bash.in:38 elf/pldd.c:262 elf/sotruss.sh:75 +#: elf/ldconfig.c:233 elf/ldd.bash.in:38 elf/pldd.c:262 elf/sotruss.sh:75 #: elf/sprof.c:388 iconv/iconv_prog.c:404 iconv/iconvconfig.c:397 #: locale/programs/locale.c:292 locale/programs/localedef.c:459 #: login/programs/pt_chown.c:62 malloc/memusage.sh:70 malloc/memusagestat.c:582 @@ -178,7 +178,7 @@ msgstr "" "FIN DETERMINADO.\n" #: catgets/gencat.c:251 debug/pcprofiledump.c:229 debug/xtrace.sh:67 -#: elf/ldconfig.c:237 elf/pldd.c:267 elf/sprof.c:394 iconv/iconv_prog.c:409 +#: elf/ldconfig.c:238 elf/pldd.c:267 elf/sprof.c:394 iconv/iconv_prog.c:409 #: iconv/iconvconfig.c:402 locale/programs/locale.c:297 #: locale/programs/localedef.c:464 malloc/memusage.sh:74 #: malloc/memusagestat.c:587 nscd/nscd.c:526 nss/getent.c:97 nss/makedb.c:392 @@ -380,7 +380,7 @@ msgstr "modo inválido" msgid "invalid mode parameter" msgstr "parámetro de modo inválido" -#: elf/cache.c:296 elf/ldconfig.c:1249 +#: elf/cache.c:296 elf/ldconfig.c:1239 #, c-format msgid "Can't open cache file %s\n" msgstr "No se puede abrir el fichero de caché %s\n" @@ -659,7 +659,7 @@ msgstr "no se pueden aplicar protecciones de memoria adicionales después de rel msgid "RTLD_NEXT used in code not dynamically loaded" msgstr "Se ha usado RTLD_NEXT en una parte del código que no se cargó dinámicamente" -#: elf/dl-tls.c:1059 +#: elf/dl-tls.c:1136 msgid "cannot create TLS data structures" msgstr "no se pueden crear las estructuras de datos TLS" @@ -671,182 +671,182 @@ msgstr "error de búsqueda de versión" msgid "cannot allocate version reference table" msgstr "no se puede asignar espacio para la tabla de versiones de referencia" -#: elf/ldconfig.c:124 +#: elf/ldconfig.c:125 msgid "Print cache" msgstr "Muestra la caché" -#: elf/ldconfig.c:125 +#: elf/ldconfig.c:126 msgid "Generate verbose messages" msgstr "Genera mensajes explicativos" -#: elf/ldconfig.c:126 +#: elf/ldconfig.c:127 msgid "Don't build cache" msgstr "No crea caché" -#: elf/ldconfig.c:128 +#: elf/ldconfig.c:129 msgid "Change to and use ROOT as root directory" msgstr "Cambia a RAÃZ y lo utiliza como directorio raÃz" -#: elf/ldconfig.c:128 +#: elf/ldconfig.c:129 msgid "ROOT" msgstr "RAÃZ" -#: elf/ldconfig.c:129 +#: elf/ldconfig.c:130 msgid "CACHE" msgstr "CACHÉ" -#: elf/ldconfig.c:129 +#: elf/ldconfig.c:130 msgid "Use CACHE as cache file" msgstr "Utiliza CACHE como fichero de caché" -#: elf/ldconfig.c:130 +#: elf/ldconfig.c:131 msgid "CONF" msgstr "CONF" -#: elf/ldconfig.c:130 +#: elf/ldconfig.c:131 msgid "Use CONF as configuration file" msgstr "Utiliza CONF como fichero de configuración" -#: elf/ldconfig.c:131 +#: elf/ldconfig.c:132 msgid "Only process directories specified on the command line. Don't build cache." msgstr "" "Procesa únicamente los directorios especificados en la lÃnea de órdenes.\n" "No crea la caché." -#: elf/ldconfig.c:132 +#: elf/ldconfig.c:133 msgid "Manually link individual libraries." msgstr "Enlace bibliotecas individuales manualmente." -#: elf/ldconfig.c:133 +#: elf/ldconfig.c:134 msgid "FORMAT" msgstr "FORMATO" # Antes decÃa: .rhosts no es un fichero regular -#: elf/ldconfig.c:134 +#: elf/ldconfig.c:135 msgid "Ignore auxiliary cache file" msgstr "Descarta el fichero de caché auxiliar" # FIXME: Why So Many Uppercase Letters? sv -#: elf/ldconfig.c:142 +#: elf/ldconfig.c:143 msgid "Configure Dynamic Linker Run Time Bindings." msgstr "Configura las asociaciones de tiempo de ejecución del enlazador dinámico" -#: elf/ldconfig.c:276 +#: elf/ldconfig.c:277 #, c-format msgid "Path `%s' given more than once" msgstr "Se ha dado la ruta `%s' más de una vez" -#: elf/ldconfig.c:405 +#: elf/ldconfig.c:406 #, c-format msgid "Can't stat %s" msgstr "No se puede efectuar `stat' sobre %s" -#: elf/ldconfig.c:486 +#: elf/ldconfig.c:487 #, c-format msgid "Can't stat %s\n" msgstr "No se puede efectuar `stat' sobre %s\n" -#: elf/ldconfig.c:496 +#: elf/ldconfig.c:497 #, c-format msgid "%s is not a symbolic link\n" msgstr "%s no es un enlace simbólico\n" -#: elf/ldconfig.c:515 +#: elf/ldconfig.c:516 #, c-format msgid "Can't unlink %s" msgstr "No se puede efectuar `unlink' sobre %s" -#: elf/ldconfig.c:521 +#: elf/ldconfig.c:522 #, c-format msgid "Can't link %s to %s" msgstr "No se puede crear un enlace de %s a %s" -#: elf/ldconfig.c:527 +#: elf/ldconfig.c:528 msgid " (changed)\n" msgstr " (cambiado)\n" -#: elf/ldconfig.c:529 +#: elf/ldconfig.c:530 msgid " (SKIPPED)\n" msgstr " (SALTADO)\n" -#: elf/ldconfig.c:584 +#: elf/ldconfig.c:585 #, c-format msgid "Can't find %s" msgstr "No se encuentra %s" -#: elf/ldconfig.c:600 elf/ldconfig.c:770 elf/ldconfig.c:837 +#: elf/ldconfig.c:601 elf/ldconfig.c:760 elf/ldconfig.c:827 #, c-format msgid "Cannot lstat %s" msgstr "No se puede efectuar `lstat' sobre %s" -#: elf/ldconfig.c:606 +#: elf/ldconfig.c:607 #, c-format msgid "Ignored file %s since it is not a regular file." msgstr "Descartado el fichero %s dado que no es un fichero regular." -#: elf/ldconfig.c:614 +#: elf/ldconfig.c:615 #, c-format msgid "No link created since soname could not be found for %s" msgstr "No se creó el enlace ya que no se encontró el soname para %s" -#: elf/ldconfig.c:726 +#: elf/ldconfig.c:716 #, c-format msgid "Can't open directory %s" msgstr "No se puede abrir el directorio %s" -#: elf/ldconfig.c:787 elf/ldconfig.c:825 elf/readlib.c:78 +#: elf/ldconfig.c:777 elf/ldconfig.c:815 elf/readlib.c:81 #, c-format msgid "Input file %s not found.\n" msgstr "No se encontró el fichero de entrada %s.\n" -#: elf/ldconfig.c:794 +#: elf/ldconfig.c:784 #, c-format msgid "Cannot stat %s" msgstr "No se puede efectuar `stat' sobre %s" -#: elf/ldconfig.c:913 +#: elf/ldconfig.c:903 #, c-format msgid "libc6 library %s in wrong directory" msgstr "biblioteca libc6 %s en un directorio equivocado" -#: elf/ldconfig.c:932 +#: elf/ldconfig.c:922 #, c-format msgid "libraries %s and %s in directory %s have same soname but different type." msgstr "las bibliotecas %s y %s en el directorio %s tienen el mismo soname pero distinto tipo." -#: elf/ldconfig.c:1061 +#: elf/ldconfig.c:1051 #, c-format msgid "Warning: ignoring configuration file that cannot be opened: %s" msgstr "Atención: no se tendrá en cuenta el fichero de configuración que no se puede abrir: %s" -#: elf/ldconfig.c:1128 +#: elf/ldconfig.c:1118 #, c-format msgid "need absolute file name for configuration file when using -r" msgstr "se necesita un nombre de fichero absoluto para el fichero de configuración cuando se utiliza -r" -#: elf/ldconfig.c:1135 locale/programs/xasprintf.c:31 +#: elf/ldconfig.c:1125 locale/programs/xasprintf.c:31 #: locale/programs/xmalloc.c:63 malloc/obstack.c:416 malloc/obstack.c:418 #: posix/getconf.c:460 posix/getconf.c:699 #, c-format msgid "memory exhausted" msgstr "memoria agotada" -#: elf/ldconfig.c:1168 +#: elf/ldconfig.c:1158 #, c-format msgid "%s:%u: cannot read directory %s" msgstr "%s:%u: no se puede leer el directorio %s" -#: elf/ldconfig.c:1206 +#: elf/ldconfig.c:1196 #, c-format msgid "relative path `%s' used to build cache" msgstr "se usa el camino relativo `%s' para construir el caché" -#: elf/ldconfig.c:1228 +#: elf/ldconfig.c:1218 #, c-format msgid "Can't chdir to /" msgstr "No se puede cambiar al directorio /" -#: elf/ldconfig.c:1269 +#: elf/ldconfig.c:1259 #, c-format msgid "Can't open cache file directory %s\n" msgstr "No se puede leer el directorio de ficheros de caché %s\n" @@ -1035,27 +1035,27 @@ msgstr "%s no es un fichero `shared object' (Tipo: %d).\n" msgid "more than one dynamic segment\n" msgstr "más de un segmento dinámico\n" -#: elf/readlib.c:84 +#: elf/readlib.c:87 #, c-format msgid "Cannot fstat file %s.\n" msgstr "No se puede efectuar `fstat' sobre el fichero %s.\n" -#: elf/readlib.c:95 +#: elf/readlib.c:98 #, c-format msgid "File %s is empty, not checked." msgstr "El fichero %s está vacÃo, no se comprueba." -#: elf/readlib.c:101 +#: elf/readlib.c:104 #, c-format msgid "File %s is too small, not checked." msgstr "El fichero %s es demasiado pequeño, no se comprueba." -#: elf/readlib.c:111 +#: elf/readlib.c:114 #, c-format msgid "Cannot mmap file %s.\n" msgstr "No se puede efectuar `mmap' sobre el fichero %s.\n" -#: elf/readlib.c:149 +#: elf/readlib.c:152 #, c-format msgid "%s is not an ELF file - it has the wrong magic bytes at the start.\n" msgstr "%s no es un fichero ELF - tiene los bytes mágicos equivocados en el comienzo.\n" diff --git a/po/fi.po b/po/fi.po index 35143eaf38..31937184c9 100644 --- a/po/fi.po +++ b/po/fi.po @@ -25,7 +25,7 @@ msgid "" msgstr "" "Project-Id-Version: libc 2.30.9000\n" -"POT-Creation-Date: 2024-06-19 22:30+0200\n" +"POT-Creation-Date: 2024-07-21 00:32+0200\n" "PO-Revision-Date: 2020-01-10 23:26+0200\n" "Last-Translator: Lauri Nurmi <lanurmi@iki.fi>\n" "Language-Team: Finnish <translation-team-fi@lists.sourceforge.net>\n" @@ -167,7 +167,7 @@ msgstr "" "-o TULOSTIEDOSTO [SYÖTETIEDOSTO]...\n" "[TULOSTIEDOSTO [SYÖTETIEDOSTO]...]" -#: catgets/gencat.c:230 debug/pcprofiledump.c:208 elf/ldconfig.c:216 +#: catgets/gencat.c:230 debug/pcprofiledump.c:208 elf/ldconfig.c:217 #: elf/pldd.c:246 elf/sln.c:77 elf/sprof.c:371 iconv/iconv_prog.c:387 #: iconv/iconvconfig.c:380 locale/programs/locale.c:275 #: locale/programs/localedef.c:437 login/programs/pt_chown.c:88 @@ -182,7 +182,7 @@ msgstr "" "%s.\n" #: catgets/gencat.c:246 debug/pcprofiledump.c:224 debug/xtrace.sh:63 -#: elf/ldconfig.c:232 elf/ldd.bash.in:38 elf/pldd.c:262 elf/sotruss.sh:75 +#: elf/ldconfig.c:233 elf/ldd.bash.in:38 elf/pldd.c:262 elf/sotruss.sh:75 #: elf/sprof.c:388 iconv/iconv_prog.c:404 iconv/iconvconfig.c:397 #: locale/programs/locale.c:292 locale/programs/localedef.c:459 #: login/programs/pt_chown.c:62 malloc/memusage.sh:70 malloc/memusagestat.c:582 @@ -198,7 +198,7 @@ msgstr "" "ole, ei edes KAUPALLISESTI HYVÄKSYTTÄVÄSTÄ LAADUSTA tai SOPIVUUDESTA TIETTYYN TARKOITUKSEEN.\n" #: catgets/gencat.c:251 debug/pcprofiledump.c:229 debug/xtrace.sh:67 -#: elf/ldconfig.c:237 elf/pldd.c:267 elf/sprof.c:394 iconv/iconv_prog.c:409 +#: elf/ldconfig.c:238 elf/pldd.c:267 elf/sprof.c:394 iconv/iconv_prog.c:409 #: iconv/iconvconfig.c:402 locale/programs/locale.c:297 #: locale/programs/localedef.c:464 malloc/memusage.sh:74 #: malloc/memusagestat.c:587 nscd/nscd.c:526 nss/getent.c:97 nss/makedb.c:392 @@ -385,7 +385,7 @@ msgstr "virheellinen tila" msgid "invalid mode parameter" msgstr "virheellinen tilaparametri" -#: elf/cache.c:296 elf/ldconfig.c:1249 +#: elf/cache.c:296 elf/ldconfig.c:1239 #, c-format msgid "Can't open cache file %s\n" msgstr "Välimuistitiedostoa %s ei voi avata\n" @@ -615,7 +615,7 @@ msgstr "segmentin suojausta ei voi palauttaa uudelleensijoituksen jälkeen" msgid "RTLD_NEXT used in code not dynamically loaded" msgstr "RTLD_NEXT:iä käytetty koodissa, jota ei ole ladattu dynaamisesti" -#: elf/dl-tls.c:1059 +#: elf/dl-tls.c:1136 msgid "cannot create TLS data structures" msgstr "TLS-tietorakenteita ei voi luoda" @@ -627,169 +627,169 @@ msgstr "virhe version selvittämisessä" msgid "cannot allocate version reference table" msgstr "versioviitetaulukolle ei voi varata muistia" -#: elf/ldconfig.c:124 +#: elf/ldconfig.c:125 msgid "Print cache" msgstr "Näytä välimuisti" -#: elf/ldconfig.c:125 +#: elf/ldconfig.c:126 msgid "Generate verbose messages" msgstr "Luo monisanaiset viestit" -#: elf/ldconfig.c:126 +#: elf/ldconfig.c:127 msgid "Don't build cache" msgstr "Älä luo välimuistia" -#: elf/ldconfig.c:127 +#: elf/ldconfig.c:128 msgid "Don't update symbolic links" msgstr "Älä päivitä symbolisia linkkejä" -#: elf/ldconfig.c:128 +#: elf/ldconfig.c:129 msgid "Change to and use ROOT as root directory" msgstr "Siirry ja käytä ROOTia juurihakemistona" -#: elf/ldconfig.c:128 +#: elf/ldconfig.c:129 msgid "ROOT" msgstr "JUURI" -#: elf/ldconfig.c:129 +#: elf/ldconfig.c:130 msgid "Use CACHE as cache file" msgstr "Käytä CACHEa välimuistitiedostona" -#: elf/ldconfig.c:130 +#: elf/ldconfig.c:131 msgid "Use CONF as configuration file" msgstr "Käytä CONFia asetustiedostona" -#: elf/ldconfig.c:131 +#: elf/ldconfig.c:132 msgid "Only process directories specified on the command line. Don't build cache." msgstr "Käsittele vain komentorivillä annetut hakemistot. Älä luo välimuistia." -#: elf/ldconfig.c:132 +#: elf/ldconfig.c:133 msgid "Manually link individual libraries." msgstr "Linkitä yksittäisiä kirjastoja käsin." -#: elf/ldconfig.c:133 +#: elf/ldconfig.c:134 msgid "FORMAT" msgstr "MUOTO" -#: elf/ldconfig.c:134 +#: elf/ldconfig.c:135 msgid "Ignore auxiliary cache file" msgstr "Jätä huomiotta apuvälimuistitiedosto" -#: elf/ldconfig.c:142 +#: elf/ldconfig.c:143 msgid "Configure Dynamic Linker Run Time Bindings." msgstr "Säädä dynaamisen linkittäjän ajonaikaiset sidonnat." -#: elf/ldconfig.c:276 +#: elf/ldconfig.c:277 #, c-format msgid "Path `%s' given more than once" msgstr "Polku â€%s†on annettu useammin kuin kerran" -#: elf/ldconfig.c:405 +#: elf/ldconfig.c:406 #, c-format msgid "Can't stat %s" msgstr "Tiedoston %s tilaa ei voi lukea" -#: elf/ldconfig.c:486 +#: elf/ldconfig.c:487 #, c-format msgid "Can't stat %s\n" msgstr "Tiedoston %s tilaa ei voi lukea\n" -#: elf/ldconfig.c:496 +#: elf/ldconfig.c:497 #, c-format msgid "%s is not a symbolic link\n" msgstr "%s ei ole symbolinen linkki\n" -#: elf/ldconfig.c:515 +#: elf/ldconfig.c:516 #, c-format msgid "Can't unlink %s" msgstr "Tiedoston %s linkitystä ei voi poistaa" -#: elf/ldconfig.c:521 +#: elf/ldconfig.c:522 #, c-format msgid "Can't link %s to %s" msgstr "Linkitys %s -> %s ei onnistu" -#: elf/ldconfig.c:527 +#: elf/ldconfig.c:528 msgid " (changed)\n" msgstr " (muutettu)\n" -#: elf/ldconfig.c:529 +#: elf/ldconfig.c:530 msgid " (SKIPPED)\n" msgstr " (OHITETTU)\n" -#: elf/ldconfig.c:584 +#: elf/ldconfig.c:585 #, c-format msgid "Can't find %s" msgstr "%s ei löydy" -#: elf/ldconfig.c:600 elf/ldconfig.c:770 elf/ldconfig.c:837 +#: elf/ldconfig.c:601 elf/ldconfig.c:760 elf/ldconfig.c:827 #, c-format msgid "Cannot lstat %s" msgstr "Tiedoston %s tilaa ei voi lukea" -#: elf/ldconfig.c:606 +#: elf/ldconfig.c:607 #, c-format msgid "Ignored file %s since it is not a regular file." msgstr "Tiedostoa %s ei huomioitu, koska se ei ole tavallinen tiedosto." -#: elf/ldconfig.c:614 +#: elf/ldconfig.c:615 #, c-format msgid "No link created since soname could not be found for %s" msgstr "Linkkiä ei luotu, koska tiedostolle %s ei löytynyt so-nimeä" -#: elf/ldconfig.c:726 +#: elf/ldconfig.c:716 #, c-format msgid "Can't open directory %s" msgstr "Hakemistoa %s ei voi avata" -#: elf/ldconfig.c:787 elf/ldconfig.c:825 elf/readlib.c:78 +#: elf/ldconfig.c:777 elf/ldconfig.c:815 elf/readlib.c:81 #, c-format msgid "Input file %s not found.\n" msgstr "Syötetiedostoa %s ei löydy.\n" -#: elf/ldconfig.c:794 +#: elf/ldconfig.c:784 #, c-format msgid "Cannot stat %s" msgstr "Tiedoston %s tilaa ei voi lukea" -#: elf/ldconfig.c:913 +#: elf/ldconfig.c:903 #, c-format msgid "libc6 library %s in wrong directory" msgstr "libc6-kirjasto %s on väärässä hakemistossa" -#: elf/ldconfig.c:932 +#: elf/ldconfig.c:922 #, c-format msgid "libraries %s and %s in directory %s have same soname but different type." msgstr "kirjastoilla %s ja %s hakemistossa %s on sama so-nimi, mutta eri tyypit." -#: elf/ldconfig.c:1061 +#: elf/ldconfig.c:1051 #, c-format msgid "Warning: ignoring configuration file that cannot be opened: %s" msgstr "Varoitus: jätetään huomioimatta asetustiedosto, jota ei voi avata: %s" -#: elf/ldconfig.c:1135 locale/programs/xasprintf.c:31 +#: elf/ldconfig.c:1125 locale/programs/xasprintf.c:31 #: locale/programs/xmalloc.c:63 malloc/obstack.c:416 malloc/obstack.c:418 #: posix/getconf.c:460 posix/getconf.c:699 #, c-format msgid "memory exhausted" msgstr "muisti lopussa" -#: elf/ldconfig.c:1168 +#: elf/ldconfig.c:1158 #, c-format msgid "%s:%u: cannot read directory %s" msgstr "%s:%u: hakemistoa %s ei voi lukea" -#: elf/ldconfig.c:1206 +#: elf/ldconfig.c:1196 #, c-format msgid "relative path `%s' used to build cache" msgstr "suhteellista polkua â€%s†käytetään välimuistin luomiseen" -#: elf/ldconfig.c:1228 +#: elf/ldconfig.c:1218 #, c-format msgid "Can't chdir to /" msgstr "Juurihakemistoon / siirtyminen ei onnistu" -#: elf/ldconfig.c:1269 +#: elf/ldconfig.c:1259 #, c-format msgid "Can't open cache file directory %s\n" msgstr "Välimuistihakemistoa %s ei voi avata\n" @@ -934,27 +934,27 @@ msgstr "%s ei ole jaettu objektitiedosto (Tyyppi: %d).\n" msgid "more than one dynamic segment\n" msgstr "useampi kuin yksi dynaaminen segmentti\n" -#: elf/readlib.c:84 +#: elf/readlib.c:87 #, c-format msgid "Cannot fstat file %s.\n" msgstr "Tiedoston %s tilaa ei voi lukea.\n" -#: elf/readlib.c:95 +#: elf/readlib.c:98 #, c-format msgid "File %s is empty, not checked." msgstr "Tiedosto %s on tyhjä, ei tarkastettu." -#: elf/readlib.c:101 +#: elf/readlib.c:104 #, c-format msgid "File %s is too small, not checked." msgstr "Tiedosto %s on liian pieni, ei tarkastettu." -#: elf/readlib.c:111 +#: elf/readlib.c:114 #, c-format msgid "Cannot mmap file %s.\n" msgstr "Tiedoston %s muistikartoitus epäonnistui.\n" -#: elf/readlib.c:149 +#: elf/readlib.c:152 #, c-format msgid "%s is not an ELF file - it has the wrong magic bytes at the start.\n" msgstr "%s ei ole ELF-tiedosto - sen alussa on väärät taikatavut.\n" diff --git a/po/fr.po b/po/fr.po index 3000b36e09..20e21a5a17 100644 --- a/po/fr.po +++ b/po/fr.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: libc-2.37.9000\n" -"POT-Creation-Date: 2024-06-19 22:30+0200\n" +"POT-Creation-Date: 2024-07-21 00:32+0200\n" "PO-Revision-Date: 2023-11-22 20:08+0100\n" "Last-Translator: Stéphane Aulery <lkppo@free.fr>\n" "Language-Team: French <traduc@traduc.org>\n" @@ -153,7 +153,7 @@ msgstr "" "-o FICHIER_DE_SORTIE [FICHIER_D_ENTRÉE]...\n" "[FICHIER_DE_SORTIE [FICHIER_D_ENTRÉE]...]" -#: catgets/gencat.c:230 debug/pcprofiledump.c:208 elf/ldconfig.c:216 +#: catgets/gencat.c:230 debug/pcprofiledump.c:208 elf/ldconfig.c:217 #: elf/pldd.c:246 elf/sln.c:77 elf/sprof.c:371 iconv/iconv_prog.c:387 #: iconv/iconvconfig.c:380 locale/programs/locale.c:275 #: locale/programs/localedef.c:437 login/programs/pt_chown.c:88 @@ -168,7 +168,7 @@ msgstr "" "%s.\n" #: catgets/gencat.c:246 debug/pcprofiledump.c:224 debug/xtrace.sh:63 -#: elf/ldconfig.c:232 elf/ldd.bash.in:38 elf/pldd.c:262 elf/sotruss.sh:75 +#: elf/ldconfig.c:233 elf/ldd.bash.in:38 elf/pldd.c:262 elf/sotruss.sh:75 #: elf/sprof.c:388 iconv/iconv_prog.c:404 iconv/iconvconfig.c:397 #: locale/programs/locale.c:292 locale/programs/localedef.c:459 #: login/programs/pt_chown.c:62 malloc/memusage.sh:70 malloc/memusagestat.c:582 @@ -185,7 +185,7 @@ msgstr "" "COMMERCIALES que pour RÉPONDRE À UN BESOIN PARTICULIER.\n" #: catgets/gencat.c:251 debug/pcprofiledump.c:229 debug/xtrace.sh:67 -#: elf/ldconfig.c:237 elf/pldd.c:267 elf/sprof.c:394 iconv/iconv_prog.c:409 +#: elf/ldconfig.c:238 elf/pldd.c:267 elf/sprof.c:394 iconv/iconv_prog.c:409 #: iconv/iconvconfig.c:402 locale/programs/locale.c:297 #: locale/programs/localedef.c:464 malloc/memusage.sh:74 #: malloc/memusagestat.c:587 nscd/nscd.c:526 nss/getent.c:97 nss/makedb.c:392 @@ -392,7 +392,7 @@ msgstr "Boutisme incorrect du fichier de cache.\n" msgid "Cache generated by: " msgstr "Cache généré par : " -#: elf/cache.c:296 elf/ldconfig.c:1249 +#: elf/cache.c:296 elf/ldconfig.c:1239 #, c-format msgid "Can't open cache file %s\n" msgstr "Ne peut ouvrir le fichier de cache %s\n" @@ -695,7 +695,7 @@ msgstr "ne peut appliquer les protections additionnelle de mémoire après la rà msgid "RTLD_NEXT used in code not dynamically loaded" msgstr "RTLD_NEXT est utilisé dans du code qui n'est pas chargé dynamiquement" -#: elf/dl-tls.c:1059 +#: elf/dl-tls.c:1136 msgid "cannot create TLS data structures" msgstr "ne peut créer les structures de données TLS" @@ -707,211 +707,211 @@ msgstr "erreur de recherche de version" msgid "cannot allocate version reference table" msgstr "ne peut allouer la table de référence des versions" -#: elf/ldconfig.c:124 +#: elf/ldconfig.c:125 msgid "Print cache" msgstr "Imprimer le cache" -#: elf/ldconfig.c:125 +#: elf/ldconfig.c:126 msgid "Generate verbose messages" msgstr "Afficher des messages en mode verbeux" -#: elf/ldconfig.c:126 +#: elf/ldconfig.c:127 msgid "Don't build cache" msgstr "Ne pas construire le cache" -#: elf/ldconfig.c:127 +#: elf/ldconfig.c:128 msgid "Don't update symbolic links" msgstr "Ne pas mettre à jour de liens symboliques" -#: elf/ldconfig.c:128 +#: elf/ldconfig.c:129 msgid "Change to and use ROOT as root directory" msgstr "Positionner dans, et utiliser le dossier racine ROOT" -#: elf/ldconfig.c:128 +#: elf/ldconfig.c:129 msgid "ROOT" msgstr "ROOT" -#: elf/ldconfig.c:129 +#: elf/ldconfig.c:130 msgid "CACHE" msgstr "CACHE" -#: elf/ldconfig.c:129 +#: elf/ldconfig.c:130 msgid "Use CACHE as cache file" msgstr "Utiliser CACHE comme ficher de cache" -#: elf/ldconfig.c:130 +#: elf/ldconfig.c:131 msgid "CONF" msgstr "CONF" -#: elf/ldconfig.c:130 +#: elf/ldconfig.c:131 msgid "Use CONF as configuration file" msgstr "Utiliser CONF comme fichier de configuration" -#: elf/ldconfig.c:131 +#: elf/ldconfig.c:132 msgid "Only process directories specified on the command line. Don't build cache." msgstr "Traiter uniquement les répertoires spécifiés sur la ligne de commande. Ne pas construire de cache." -#: elf/ldconfig.c:132 +#: elf/ldconfig.c:133 msgid "Manually link individual libraries." msgstr "Lier manuellement les librairies individuelles ." -#: elf/ldconfig.c:133 +#: elf/ldconfig.c:134 msgid "FORMAT" msgstr "FORMAT" -#: elf/ldconfig.c:133 +#: elf/ldconfig.c:134 msgid "Format to use: new (default), old, or compat" msgstr "Format à utiliser : nouveau (par défaut), ancien ou compatible" -#: elf/ldconfig.c:134 +#: elf/ldconfig.c:135 msgid "Ignore auxiliary cache file" msgstr "Ignore le fichier cache auxiliaire" -#: elf/ldconfig.c:142 +#: elf/ldconfig.c:143 msgid "Configure Dynamic Linker Run Time Bindings." msgstr "Configuration dynamique des éditions de liens lors de l'exécution." -#: elf/ldconfig.c:276 +#: elf/ldconfig.c:277 #, c-format msgid "Path `%s' given more than once" msgstr "Chemin « %s » donné plus d'une fois" -#: elf/ldconfig.c:277 +#: elf/ldconfig.c:278 #, c-format msgid "(from %s:%d and %s:%d)\n" msgstr "(de %s:%d et %s:%d)\n" -#: elf/ldconfig.c:309 elf/ldconfig.c:350 +#: elf/ldconfig.c:310 elf/ldconfig.c:351 #, c-format msgid "Could not form glibc-hwcaps path" msgstr "Impossible de construire le chemin glibc-hwcaps" -#: elf/ldconfig.c:323 +#: elf/ldconfig.c:324 #, c-format msgid "Listing directory %s" msgstr "Listage du répertoire %s" -#: elf/ldconfig.c:405 +#: elf/ldconfig.c:406 #, c-format msgid "Can't stat %s" msgstr "Ne peut évaluer par stat %s" -#: elf/ldconfig.c:486 +#: elf/ldconfig.c:487 #, c-format msgid "Can't stat %s\n" msgstr "Ne peut évaluer par stat %s\n" -#: elf/ldconfig.c:496 +#: elf/ldconfig.c:497 #, c-format msgid "%s is not a symbolic link\n" msgstr "%s n'est pas un lien symbolique\n" -#: elf/ldconfig.c:515 +#: elf/ldconfig.c:516 #, c-format msgid "Can't unlink %s" msgstr "Ne peut enlever le lien (unlink) %s" -#: elf/ldconfig.c:521 +#: elf/ldconfig.c:522 #, c-format msgid "Can't link %s to %s" msgstr "Ne peut établir un lien entre %s et %s" -#: elf/ldconfig.c:527 +#: elf/ldconfig.c:528 msgid " (changed)\n" msgstr " (a été modifié)\n" -#: elf/ldconfig.c:529 +#: elf/ldconfig.c:530 msgid " (SKIPPED)\n" msgstr " (ESCAMOTÉ)\n" -#: elf/ldconfig.c:584 +#: elf/ldconfig.c:585 #, c-format msgid "Can't find %s" msgstr "Ne peut repérer %s" -#: elf/ldconfig.c:600 elf/ldconfig.c:770 elf/ldconfig.c:837 +#: elf/ldconfig.c:601 elf/ldconfig.c:760 elf/ldconfig.c:827 #, c-format msgid "Cannot lstat %s" msgstr "Ne peut évaluer par lstat %s" -#: elf/ldconfig.c:606 +#: elf/ldconfig.c:607 #, c-format msgid "Ignored file %s since it is not a regular file." msgstr "A ignoré le fichier %s parce que ce n'est pas un fichier régulier." -#: elf/ldconfig.c:614 +#: elf/ldconfig.c:615 #, c-format msgid "No link created since soname could not be found for %s" msgstr "Aucun lien créé étant donné que n'a pas été repéré %s" -#: elf/ldconfig.c:711 +#: elf/ldconfig.c:701 #, c-format msgid " (from %s:%d)\n" msgstr " (de %s:%d)\n" -#: elf/ldconfig.c:726 +#: elf/ldconfig.c:716 #, c-format msgid "Can't open directory %s" msgstr "Ne peut ouvrir le dossier %s" -#: elf/ldconfig.c:787 elf/ldconfig.c:825 elf/readlib.c:78 +#: elf/ldconfig.c:777 elf/ldconfig.c:815 elf/readlib.c:81 #, c-format msgid "Input file %s not found.\n" msgstr "Fichier d'entrée %s non repéré\n" -#: elf/ldconfig.c:794 +#: elf/ldconfig.c:784 #, c-format msgid "Cannot stat %s" msgstr "Ne peut évaluer par stat %s" -#: elf/ldconfig.c:913 +#: elf/ldconfig.c:903 #, c-format msgid "libc6 library %s in wrong directory" msgstr "librairie libc6 %s est dans le mauvais dossier" -#: elf/ldconfig.c:932 +#: elf/ldconfig.c:922 #, c-format msgid "libraries %s and %s in directory %s have same soname but different type." msgstr "Les librairies %s et %s du dossier %s ont le même nom mais sont de types différents." -#: elf/ldconfig.c:1061 +#: elf/ldconfig.c:1051 #, c-format msgid "Warning: ignoring configuration file that cannot be opened: %s" msgstr "Attention : ignore tout fichier de configuration qui ne peut s'ouvrir : %s" -#: elf/ldconfig.c:1109 +#: elf/ldconfig.c:1099 #, c-format msgid "%s:%u: hwcap directive ignored" msgstr "%s:%u: directive hwcap ignorée" -#: elf/ldconfig.c:1128 +#: elf/ldconfig.c:1118 #, c-format msgid "need absolute file name for configuration file when using -r" msgstr "nécessite un nom de fichier absolu pour le fichier de configuration quand on utilise -r" -#: elf/ldconfig.c:1135 locale/programs/xasprintf.c:31 +#: elf/ldconfig.c:1125 locale/programs/xasprintf.c:31 #: locale/programs/xmalloc.c:63 malloc/obstack.c:416 malloc/obstack.c:418 #: posix/getconf.c:460 posix/getconf.c:699 #, c-format msgid "memory exhausted" msgstr "mémoire épuisée" -#: elf/ldconfig.c:1168 +#: elf/ldconfig.c:1158 #, c-format msgid "%s:%u: cannot read directory %s" msgstr "%s:%u : ne peut lire le dossier %s" -#: elf/ldconfig.c:1206 +#: elf/ldconfig.c:1196 #, c-format msgid "relative path `%s' used to build cache" msgstr "chemin relatif `%s' utilisé pour construire le cache" -#: elf/ldconfig.c:1228 +#: elf/ldconfig.c:1218 #, c-format msgid "Can't chdir to /" msgstr "Ne peut se positionner (chdir) dans /" -#: elf/ldconfig.c:1269 +#: elf/ldconfig.c:1259 #, c-format msgid "Can't open cache file directory %s\n" msgstr "Ne peut ouvrir le dossier des fichiers de cache %s\n" @@ -1109,27 +1109,27 @@ msgstr "%s n'est pas un fichier objet partagé (Type : %d).\n" msgid "more than one dynamic segment\n" msgstr "plus d'un segment dynamique\n" -#: elf/readlib.c:84 +#: elf/readlib.c:87 #, c-format msgid "Cannot fstat file %s.\n" msgstr "Ne peut évaluer par fstat() %s\n" -#: elf/readlib.c:95 +#: elf/readlib.c:98 #, c-format msgid "File %s is empty, not checked." msgstr "Fichier %s est vide, n'a pas été vérifié." -#: elf/readlib.c:101 +#: elf/readlib.c:104 #, c-format msgid "File %s is too small, not checked." msgstr "Fichier %s trop petit, n'a pas été vérifié." -#: elf/readlib.c:111 +#: elf/readlib.c:114 #, c-format msgid "Cannot mmap file %s.\n" msgstr "Erreur de la procédure mmap sur le fichier %s\n" -#: elf/readlib.c:149 +#: elf/readlib.c:152 #, c-format msgid "%s is not an ELF file - it has the wrong magic bytes at the start.\n" msgstr "%s n'est pas un fichier de type ELF - il a un octet magique au début incorrect.\n" diff --git a/po/gl.po b/po/gl.po index 80d5a382e6..14762002bc 100644 --- a/po/gl.po +++ b/po/gl.po @@ -5,7 +5,7 @@ msgid "" msgstr "" "Project-Id-Version: libc 2.3.2\n" -"POT-Creation-Date: 2024-06-19 22:30+0200\n" +"POT-Creation-Date: 2024-07-21 00:32+0200\n" "PO-Revision-Date: 2003-03-03 20:13+0100\n" "Last-Translator: Jacobo Tarrio <jtarrio@trasno.net>\n" "Language-Team: Galician <gpul-traduccion@ceu.fi.udc.es>\n" @@ -125,7 +125,7 @@ msgstr "" "[FICHEIRO-SAÃDA [FICHEIRO-ENTRADA]...]" #: catgets/gencat.c:246 debug/pcprofiledump.c:224 debug/xtrace.sh:63 -#: elf/ldconfig.c:232 elf/ldd.bash.in:38 elf/pldd.c:262 elf/sotruss.sh:75 +#: elf/ldconfig.c:233 elf/ldd.bash.in:38 elf/pldd.c:262 elf/sotruss.sh:75 #: elf/sprof.c:388 iconv/iconv_prog.c:404 iconv/iconvconfig.c:397 #: locale/programs/locale.c:292 locale/programs/localedef.c:459 #: login/programs/pt_chown.c:62 malloc/memusage.sh:70 malloc/memusagestat.c:582 @@ -141,7 +141,7 @@ msgstr "" "garantÃa; nin sequera de COMERCIABILIDADE ou APTITUDE PARA UN FIN DETERMINADO.\n" #: catgets/gencat.c:251 debug/pcprofiledump.c:229 debug/xtrace.sh:67 -#: elf/ldconfig.c:237 elf/pldd.c:267 elf/sprof.c:394 iconv/iconv_prog.c:409 +#: elf/ldconfig.c:238 elf/pldd.c:267 elf/sprof.c:394 iconv/iconv_prog.c:409 #: iconv/iconvconfig.c:402 locale/programs/locale.c:297 #: locale/programs/localedef.c:464 malloc/memusage.sh:74 #: malloc/memusagestat.c:587 nscd/nscd.c:526 nss/getent.c:97 nss/makedb.c:392 @@ -261,7 +261,7 @@ msgstr "non se pode le-la cabeceira" msgid "invalid pointer size" msgstr "tamaño de punteiro non válido" -#: elf/cache.c:296 elf/ldconfig.c:1249 +#: elf/cache.c:296 elf/ldconfig.c:1239 #, c-format msgid "Can't open cache file %s\n" msgstr "Non se puido abri-lo ficheiro de caché %s\n" @@ -467,7 +467,7 @@ msgstr "non se pode restaura-la protección do segmento despois de movelo" msgid "RTLD_NEXT used in code not dynamically loaded" msgstr "Úsase RTLD_NEXT en código non cargado dinamicamente" -#: elf/dl-tls.c:1059 +#: elf/dl-tls.c:1136 msgid "cannot create TLS data structures" msgstr "non se poden crea-las estructuras de datos TLS" @@ -475,138 +475,138 @@ msgstr "non se poden crea-las estructuras de datos TLS" msgid "cannot allocate version reference table" msgstr "non se pode localiza-la táboa de referencias de versións" -#: elf/ldconfig.c:124 +#: elf/ldconfig.c:125 msgid "Print cache" msgstr "Amosa-la caché" -#: elf/ldconfig.c:125 +#: elf/ldconfig.c:126 msgid "Generate verbose messages" msgstr "Visualizar máis mensaxes" -#: elf/ldconfig.c:126 +#: elf/ldconfig.c:127 msgid "Don't build cache" msgstr "Non construÃ-la caché" -#: elf/ldconfig.c:128 +#: elf/ldconfig.c:129 msgid "Change to and use ROOT as root directory" msgstr "Cambiar a e empregar RAÃZ coma directorio raÃz" -#: elf/ldconfig.c:129 +#: elf/ldconfig.c:130 msgid "Use CACHE as cache file" msgstr "Empregar CACHÉ coma un ficheiro de caché" -#: elf/ldconfig.c:130 +#: elf/ldconfig.c:131 msgid "Use CONF as configuration file" msgstr "Empregar CONF coma un ficheiro de configuración" -#: elf/ldconfig.c:131 +#: elf/ldconfig.c:132 msgid "Only process directories specified on the command line. Don't build cache." msgstr "Nó se procesan os directorios especificados na liña de comando. Non se constrúen as cachés." -#: elf/ldconfig.c:132 +#: elf/ldconfig.c:133 msgid "Manually link individual libraries." msgstr "Ligue as bibliotecas individuais manualmente." -#: elf/ldconfig.c:142 +#: elf/ldconfig.c:143 msgid "Configure Dynamic Linker Run Time Bindings." msgstr "Configura-las Asignacións de Tempo de Execución do Ligador Dinámico" -#: elf/ldconfig.c:276 +#: elf/ldconfig.c:277 #, c-format msgid "Path `%s' given more than once" msgstr "Proporcionouse a ruta `%s' máis dunha vez" -#: elf/ldconfig.c:405 +#: elf/ldconfig.c:406 #, c-format msgid "Can't stat %s" msgstr "Non se puido executar `stat' sobre %s" -#: elf/ldconfig.c:486 +#: elf/ldconfig.c:487 #, c-format msgid "Can't stat %s\n" msgstr "Non se puido executar `stat' sobre %s\n" -#: elf/ldconfig.c:496 +#: elf/ldconfig.c:497 #, c-format msgid "%s is not a symbolic link\n" msgstr "%s non é unha ligazón simbólica\n" -#: elf/ldconfig.c:515 +#: elf/ldconfig.c:516 #, c-format msgid "Can't unlink %s" msgstr "Non se puido borrar %s" -#: elf/ldconfig.c:521 +#: elf/ldconfig.c:522 #, c-format msgid "Can't link %s to %s" msgstr "Non se puido ligar %s a %s" -#: elf/ldconfig.c:527 +#: elf/ldconfig.c:528 msgid " (changed)\n" msgstr " (cambiou)\n" -#: elf/ldconfig.c:529 +#: elf/ldconfig.c:530 msgid " (SKIPPED)\n" msgstr " (OMITIDO)\n" -#: elf/ldconfig.c:584 +#: elf/ldconfig.c:585 #, c-format msgid "Can't find %s" msgstr "Non se pode atopar %s" -#: elf/ldconfig.c:600 elf/ldconfig.c:770 elf/ldconfig.c:837 +#: elf/ldconfig.c:601 elf/ldconfig.c:760 elf/ldconfig.c:827 #, c-format msgid "Cannot lstat %s" msgstr "Non se pode facer lstat sobre %s" -#: elf/ldconfig.c:606 +#: elf/ldconfig.c:607 #, c-format msgid "Ignored file %s since it is not a regular file." msgstr "Ignorouse o ficheiro %s porque non é un ficheiro normal" -#: elf/ldconfig.c:614 +#: elf/ldconfig.c:615 #, c-format msgid "No link created since soname could not be found for %s" msgstr "Non se creou unha ligazón porque non se atopou o soname para %s" -#: elf/ldconfig.c:726 +#: elf/ldconfig.c:716 #, c-format msgid "Can't open directory %s" msgstr "Non se puido abri-lo directorio %s" -#: elf/ldconfig.c:787 elf/ldconfig.c:825 elf/readlib.c:78 +#: elf/ldconfig.c:777 elf/ldconfig.c:815 elf/readlib.c:81 #, c-format msgid "Input file %s not found.\n" msgstr "Non se atopou o ficheiro de entrada %s.\n" -#: elf/ldconfig.c:794 +#: elf/ldconfig.c:784 #, c-format msgid "Cannot stat %s" msgstr "Non se pode executar `stat' sobre %s" -#: elf/ldconfig.c:913 +#: elf/ldconfig.c:903 #, c-format msgid "libc6 library %s in wrong directory" msgstr "biblioteca libc6 %s nun directorio incorrecto" -#: elf/ldconfig.c:932 +#: elf/ldconfig.c:922 #, c-format msgid "libraries %s and %s in directory %s have same soname but different type." msgstr "as bibliotecas %s e %s do directorio %s teñen o mesmo soname pero diferente tipo." -#: elf/ldconfig.c:1135 locale/programs/xasprintf.c:31 +#: elf/ldconfig.c:1125 locale/programs/xasprintf.c:31 #: locale/programs/xmalloc.c:63 malloc/obstack.c:416 malloc/obstack.c:418 #: posix/getconf.c:460 posix/getconf.c:699 #, c-format msgid "memory exhausted" msgstr "memoria esgotada" -#: elf/ldconfig.c:1228 +#: elf/ldconfig.c:1218 #, c-format msgid "Can't chdir to /" msgstr "Non se pode cambiar ao directorio /" -#: elf/ldconfig.c:1269 +#: elf/ldconfig.c:1259 #, c-format msgid "Can't open cache file directory %s\n" msgstr "Non se puido abri-lo directorio de ficheiros caché %s\n" @@ -652,22 +652,22 @@ msgstr "%s non é un ficheiro de obxecto compartido (Tipo: %d).\n" msgid "more than one dynamic segment\n" msgstr "máis dun segmento dinámico\n" -#: elf/readlib.c:84 +#: elf/readlib.c:87 #, c-format msgid "Cannot fstat file %s.\n" msgstr "Non se puido executar fstat sobre o ficheiro %s.\n" -#: elf/readlib.c:101 +#: elf/readlib.c:104 #, c-format msgid "File %s is too small, not checked." msgstr "O ficheiro %s é pequeno de máis, non se comproba." -#: elf/readlib.c:111 +#: elf/readlib.c:114 #, c-format msgid "Cannot mmap file %s.\n" msgstr "Non se puido executar mmap sobre o ficheiro %s.\n" -#: elf/readlib.c:149 +#: elf/readlib.c:152 #, c-format msgid "%s is not an ELF file - it has the wrong magic bytes at the start.\n" msgstr "%s non é un ficheiro ELF - non ten os bytes máxicos correctos ao principio.\n" diff --git a/po/hr.po b/po/hr.po index 8167117c6c..cb9ddf0ea0 100644 --- a/po/hr.po +++ b/po/hr.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: libc-2.39.9000\n" -"POT-Creation-Date: 2024-06-19 22:30+0200\n" +"POT-Creation-Date: 2024-07-21 00:32+0200\n" "PO-Revision-Date: 2024-06-23 13:39-0700\n" "Last-Translator: Božidar Putanec <bozidarp@yahoo.com>\n" "Language-Team: Croatian <lokalizacija@linux.hr>\n" @@ -155,7 +155,7 @@ msgstr "" "-o IZLAZNA-DATOTEKA [ULAZNA-DATOTEKA]...\n" "[IZLAZNA-DATOTEKA [ULAZNA-DATOTEKA]...]" -#: catgets/gencat.c:230 debug/pcprofiledump.c:208 elf/ldconfig.c:216 +#: catgets/gencat.c:230 debug/pcprofiledump.c:208 elf/ldconfig.c:217 #: elf/pldd.c:246 elf/sln.c:77 elf/sprof.c:371 iconv/iconv_prog.c:387 #: iconv/iconvconfig.c:380 locale/programs/locale.c:275 #: locale/programs/localedef.c:437 login/programs/pt_chown.c:88 @@ -170,7 +170,7 @@ msgstr "" "%s.\n" #: catgets/gencat.c:246 debug/pcprofiledump.c:224 debug/xtrace.sh:63 -#: elf/ldconfig.c:232 elf/ldd.bash.in:38 elf/pldd.c:262 elf/sotruss.sh:75 +#: elf/ldconfig.c:233 elf/ldd.bash.in:38 elf/pldd.c:262 elf/sotruss.sh:75 #: elf/sprof.c:388 iconv/iconv_prog.c:404 iconv/iconvconfig.c:397 #: locale/programs/locale.c:292 locale/programs/localedef.c:459 #: login/programs/pt_chown.c:62 malloc/memusage.sh:70 malloc/memusagestat.c:582 @@ -186,7 +186,7 @@ msgstr "" "NEMA jamstava; Äak ni za PRODAJU ili UPOTREBU ZA ODREÄENU NAMJENU.\n" #: catgets/gencat.c:251 debug/pcprofiledump.c:229 debug/xtrace.sh:67 -#: elf/ldconfig.c:237 elf/pldd.c:267 elf/sprof.c:394 iconv/iconv_prog.c:409 +#: elf/ldconfig.c:238 elf/pldd.c:267 elf/sprof.c:394 iconv/iconv_prog.c:409 #: iconv/iconvconfig.c:402 locale/programs/locale.c:297 #: locale/programs/localedef.c:464 malloc/memusage.sh:74 #: malloc/memusagestat.c:587 nscd/nscd.c:526 nss/getent.c:97 nss/makedb.c:392 @@ -401,7 +401,7 @@ msgstr "Datoteka predmemorije ima loÅ¡ endian.\n" msgid "Cache generated by: " msgstr "Predmemoriju je generiao: " -#: elf/cache.c:296 elf/ldconfig.c:1249 +#: elf/cache.c:296 elf/ldconfig.c:1239 #, c-format msgid "Can't open cache file %s\n" msgstr "Nije moguće otvoriti cache-datoteku %s\n" @@ -714,7 +714,7 @@ msgstr "nije moguće primijeniti dodatnu zaÅ¡titu memorije nakon premjeÅ¡tanja" msgid "RTLD_NEXT used in code not dynamically loaded" msgstr "RTLD_NEXT koriÅ¡ten u kodu nije dinamiÄki uÄitan" -#: elf/dl-tls.c:1059 +#: elf/dl-tls.c:1136 msgid "cannot create TLS data structures" msgstr "nije moguće stvoriti TLS podatkovne strukture" @@ -730,218 +730,218 @@ msgstr "nije moguće dodijeliti memoriju za tablicu referencija inaÄica" msgid "DT_RELR without GLIBC_ABI_DT_RELR dependency" msgstr "DT_RELR bez GLIBC_ABI_DT_RELR ovisnosti" -#: elf/ldconfig.c:124 +#: elf/ldconfig.c:125 msgid "Print cache" msgstr "pregled sadržaja predmemorije (cache)" -#: elf/ldconfig.c:125 +#: elf/ldconfig.c:126 msgid "Generate verbose messages" msgstr "generira opÅ¡irne poruke" -#: elf/ldconfig.c:126 +#: elf/ldconfig.c:127 msgid "Don't build cache" msgstr "ne gradi predmemoriju (cache)" -#: elf/ldconfig.c:127 +#: elf/ldconfig.c:128 msgid "Don't update symbolic links" msgstr "ne ažurira simboliÄne poveznice" -#: elf/ldconfig.c:128 +#: elf/ldconfig.c:129 msgid "Change to and use ROOT as root directory" msgstr "promijeni direktorij u ROOT i koristi ga kao root direktorij" -#: elf/ldconfig.c:128 +#: elf/ldconfig.c:129 msgid "ROOT" msgstr "ROOT" -#: elf/ldconfig.c:129 +#: elf/ldconfig.c:130 msgid "CACHE" msgstr "PREDMEMORIJA" -#: elf/ldconfig.c:129 +#: elf/ldconfig.c:130 msgid "Use CACHE as cache file" msgstr "rabi PREDMEMORIJU kao cache-datoteku" -#: elf/ldconfig.c:130 +#: elf/ldconfig.c:131 msgid "CONF" msgstr "KONFIG" -#: elf/ldconfig.c:130 +#: elf/ldconfig.c:131 msgid "Use CONF as configuration file" msgstr "rabi KONFIG kao konfiguracijsku datoteku" -#: elf/ldconfig.c:131 +#: elf/ldconfig.c:132 msgid "Only process directories specified on the command line. Don't build cache." msgstr "obradi samo direktorije navedene u naredbenom retku i ne gradi predmemoriju" -#: elf/ldconfig.c:132 +#: elf/ldconfig.c:133 msgid "Manually link individual libraries." msgstr "ruÄno poveže pojedine biblioteke" -#: elf/ldconfig.c:133 +#: elf/ldconfig.c:134 msgid "FORMAT" msgstr "FORMAT" -#: elf/ldconfig.c:133 +#: elf/ldconfig.c:134 msgid "Format to use: new (default), old, or compat" msgstr "koristi se jedan od formata: new (zadano), old ili compat" -#: elf/ldconfig.c:134 +#: elf/ldconfig.c:135 msgid "Ignore auxiliary cache file" msgstr "zanemari datoteku pomoćne predmemorije" -#: elf/ldconfig.c:142 +#: elf/ldconfig.c:143 msgid "Configure Dynamic Linker Run Time Bindings." msgstr "Konfigurira dinamiÄki linker." -#: elf/ldconfig.c:276 +#: elf/ldconfig.c:277 #, c-format msgid "Path `%s' given more than once" msgstr "Staza „%s“ navedena je viÅ¡e puta" -#: elf/ldconfig.c:277 +#: elf/ldconfig.c:278 #, c-format msgid "(from %s:%d and %s:%d)\n" msgstr "(od %s:%d i %s:%d)\n" -#: elf/ldconfig.c:309 elf/ldconfig.c:350 +#: elf/ldconfig.c:310 elf/ldconfig.c:351 #, c-format msgid "Could not form glibc-hwcaps path" msgstr "Nije moguće formirati glibc-hwcaps stazu" -#: elf/ldconfig.c:323 +#: elf/ldconfig.c:324 #, c-format msgid "Listing directory %s" msgstr "Nije moguće proÄitati stazu %s" -#: elf/ldconfig.c:405 +#: elf/ldconfig.c:406 #, c-format msgid "Can't stat %s" msgstr "Nije moguće dobiti status %s" -#: elf/ldconfig.c:486 +#: elf/ldconfig.c:487 #, c-format msgid "Can't stat %s\n" msgstr "Nije moguće dobiti status %s\n" -#: elf/ldconfig.c:496 +#: elf/ldconfig.c:497 #, c-format msgid "%s is not a symbolic link\n" msgstr "%s nije simboliÄna poveznica\n" -#: elf/ldconfig.c:515 +#: elf/ldconfig.c:516 #, c-format msgid "Can't unlink %s" msgstr "Nije moguće ukloniti (unlink) vezu %s" -#: elf/ldconfig.c:521 +#: elf/ldconfig.c:522 #, c-format msgid "Can't link %s to %s" msgstr "Nije moguće napraviti vezu (link) %s na %s" -#: elf/ldconfig.c:527 +#: elf/ldconfig.c:528 msgid " (changed)\n" msgstr " (promijenjeno)\n" -#: elf/ldconfig.c:529 +#: elf/ldconfig.c:530 msgid " (SKIPPED)\n" msgstr " (PRESKOÄŒENO)\n" -#: elf/ldconfig.c:584 +#: elf/ldconfig.c:585 #, c-format msgid "Can't find %s" msgstr "Nije moguće pronaći %s" -#: elf/ldconfig.c:600 elf/ldconfig.c:770 elf/ldconfig.c:837 +#: elf/ldconfig.c:601 elf/ldconfig.c:760 elf/ldconfig.c:827 #, c-format msgid "Cannot lstat %s" msgstr "Nije moguće dobiti status veze %s" -#: elf/ldconfig.c:606 +#: elf/ldconfig.c:607 #, c-format msgid "Ignored file %s since it is not a regular file." msgstr "%s datoteka je zanemarena jer nije obiÄna datoteka." -#: elf/ldconfig.c:614 +#: elf/ldconfig.c:615 #, c-format msgid "No link created since soname could not be found for %s" msgstr "Nijedna poveznica nije stvorena jer soname nije bilo moguće naći za %s" -#: elf/ldconfig.c:711 +#: elf/ldconfig.c:701 #, c-format msgid " (from %s:%d)\n" msgstr " (od %s:%d)\n" -#: elf/ldconfig.c:726 +#: elf/ldconfig.c:716 #, c-format msgid "Can't open directory %s" msgstr "Nije moguće otvoriti direktorij %s" -#: elf/ldconfig.c:753 elf/ldconfig.c:758 +#: elf/ldconfig.c:743 elf/ldconfig.c:748 #, c-format msgid "Could not form library path" msgstr "Nije bilo moguće formirati stazu biblioteke" -#: elf/ldconfig.c:787 elf/ldconfig.c:825 elf/readlib.c:78 +#: elf/ldconfig.c:777 elf/ldconfig.c:815 elf/readlib.c:81 #, c-format msgid "Input file %s not found.\n" msgstr "Ulazna datoteka %s nije pronaÄ‘ena.\n" -#: elf/ldconfig.c:794 +#: elf/ldconfig.c:784 #, c-format msgid "Cannot stat %s" msgstr "Nije moguće stat %s" -#: elf/ldconfig.c:913 +#: elf/ldconfig.c:903 #, c-format msgid "libc6 library %s in wrong directory" msgstr "libc6 biblioteka %s je u krivom direktoriju" -#: elf/ldconfig.c:932 +#: elf/ldconfig.c:922 #, c-format msgid "libraries %s and %s in directory %s have same soname but different type." msgstr "Biblioteke %s i %s u direktoriju %s imaju isti soname ali su razliÄite vrste." -#: elf/ldconfig.c:1061 +#: elf/ldconfig.c:1051 #, c-format msgid "Warning: ignoring configuration file that cannot be opened: %s" msgstr "" "Upozorenje: zanemarena konfiguracijska datoteka\n" " koju nije moguće otvoriti: %s" -#: elf/ldconfig.c:1109 +#: elf/ldconfig.c:1099 #, c-format msgid "%s:%u: hwcap directive ignored" msgstr "%s:%u: hwcap direktiva -- zanemareno" -#: elf/ldconfig.c:1128 +#: elf/ldconfig.c:1118 #, c-format msgid "need absolute file name for configuration file when using -r" msgstr "treba apsolutno ime datoteke za konfiguracijsku datoteku kad se koristi -r" -#: elf/ldconfig.c:1135 locale/programs/xasprintf.c:31 +#: elf/ldconfig.c:1125 locale/programs/xasprintf.c:31 #: locale/programs/xmalloc.c:63 malloc/obstack.c:416 malloc/obstack.c:418 #: posix/getconf.c:460 posix/getconf.c:699 #, c-format msgid "memory exhausted" msgstr "nema dovoljno memorije" -#: elf/ldconfig.c:1168 +#: elf/ldconfig.c:1158 #, c-format msgid "%s:%u: cannot read directory %s" msgstr "%s:%u: nije moguće Äitati direktorij %s" -#: elf/ldconfig.c:1206 +#: elf/ldconfig.c:1196 #, c-format msgid "relative path `%s' used to build cache" msgstr "relativna staza „%s“ koriÅ¡tena je za izgradnju predmemorije" -#: elf/ldconfig.c:1228 +#: elf/ldconfig.c:1218 #, c-format msgid "Can't chdir to /" msgstr "Nije moguće promijeniti direktorij u / (root)" -#: elf/ldconfig.c:1269 +#: elf/ldconfig.c:1259 #, c-format msgid "Can't open cache file directory %s\n" msgstr "Nije moguće otvoriti direktorij %s s cache-datotekom\n" @@ -1141,27 +1141,27 @@ msgstr "%s nije datoteka dijeljenog objekta (Vrsta: %d).\n" msgid "more than one dynamic segment\n" msgstr "viÅ¡e od jedan dinamiÄki segment\n" -#: elf/readlib.c:84 +#: elf/readlib.c:87 #, c-format msgid "Cannot fstat file %s.\n" msgstr "Nije moguće dobiti status (fstat) od %s.\n" -#: elf/readlib.c:95 +#: elf/readlib.c:98 #, c-format msgid "File %s is empty, not checked." msgstr "Datoteka %s je prazna; nije provjerena." -#: elf/readlib.c:101 +#: elf/readlib.c:104 #, c-format msgid "File %s is too small, not checked." msgstr "Datoteka %s je premalena; nije provjerena." -#: elf/readlib.c:111 +#: elf/readlib.c:114 #, c-format msgid "Cannot mmap file %s.\n" msgstr "Nije moguće mapirati (mmap) datoteku %s u memoriju.\n" -#: elf/readlib.c:149 +#: elf/readlib.c:152 #, c-format msgid "%s is not an ELF file - it has the wrong magic bytes at the start.\n" msgstr "%s nije ELF datoteka -- na poÄetku ima pogreÅ¡ne magiÄne bajtove.\n" diff --git a/po/hu.po b/po/hu.po index efd8d72902..c3e25efcfb 100644 --- a/po/hu.po +++ b/po/hu.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: libc 2.10.1\n" -"POT-Creation-Date: 2024-06-19 22:30+0200\n" +"POT-Creation-Date: 2024-07-21 00:32+0200\n" "PO-Revision-Date: 2009-08-04 02:23+0200\n" "Last-Translator: Gabor Kelemen <kelemeng@gnome.hu>\n" "Language-Team: Hungarian <translation-team-hu@lists.sourceforge.net>\n" @@ -128,7 +128,7 @@ msgstr "" "[KIMENETIFÃJL [BEMENETIFÃJL]...]" #: catgets/gencat.c:246 debug/pcprofiledump.c:224 debug/xtrace.sh:63 -#: elf/ldconfig.c:232 elf/ldd.bash.in:38 elf/pldd.c:262 elf/sotruss.sh:75 +#: elf/ldconfig.c:233 elf/ldd.bash.in:38 elf/pldd.c:262 elf/sotruss.sh:75 #: elf/sprof.c:388 iconv/iconv_prog.c:404 iconv/iconvconfig.c:397 #: locale/programs/locale.c:292 locale/programs/localedef.c:459 #: login/programs/pt_chown.c:62 malloc/memusage.sh:70 malloc/memusagestat.c:582 @@ -144,7 +144,7 @@ msgstr "" "garancia, még az ADOTT CÉLRE VALÓ ELADHATÓSÃGRA VAGY MEGFELELÅSÉGRE SEM.\n" #: catgets/gencat.c:251 debug/pcprofiledump.c:229 debug/xtrace.sh:67 -#: elf/ldconfig.c:237 elf/pldd.c:267 elf/sprof.c:394 iconv/iconv_prog.c:409 +#: elf/ldconfig.c:238 elf/pldd.c:267 elf/sprof.c:394 iconv/iconv_prog.c:409 #: iconv/iconvconfig.c:402 locale/programs/locale.c:297 #: locale/programs/localedef.c:464 malloc/memusage.sh:74 #: malloc/memusagestat.c:587 nscd/nscd.c:526 nss/getent.c:97 nss/makedb.c:392 @@ -328,7 +328,7 @@ msgstr "érvénytelen mód" msgid "invalid mode parameter" msgstr "érvénytelen módparaméter" -#: elf/cache.c:296 elf/ldconfig.c:1249 +#: elf/cache.c:296 elf/ldconfig.c:1239 #, c-format msgid "Can't open cache file %s\n" msgstr "Nem nyitható meg a gyorsÃtótárfájl (%s)\n" @@ -550,7 +550,7 @@ msgstr "szimbólumkikeresési hiba" msgid "cannot extend global scope" msgstr "a globális hatáskör nem bÅ‘vÃthetÅ‘" -#: elf/ldconfig.c:1135 locale/programs/xasprintf.c:31 +#: elf/ldconfig.c:1125 locale/programs/xasprintf.c:31 #: locale/programs/xmalloc.c:63 malloc/obstack.c:416 malloc/obstack.c:418 #: posix/getconf.c:460 posix/getconf.c:699 #, c-format diff --git a/po/ia.po b/po/ia.po index 383a04430a..d17f4d77b3 100644 --- a/po/ia.po +++ b/po/ia.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: libc 2.17-pre1\n" -"POT-Creation-Date: 2024-06-19 22:30+0200\n" +"POT-Creation-Date: 2024-07-21 00:32+0200\n" "PO-Revision-Date: 2013-04-26 04:10+0400\n" "Last-Translator: Nik Kalach <nik.kalach@inbox.ru>\n" "Language-Team: Interlingua <translation-team-ia@lists.sourceforge.net>\n" @@ -134,7 +134,7 @@ msgstr "" "-o FILE-OUTPUT [FILE-INPUT]...\n" "[FILE-OUTPUT [FILE-INPUT]...]" -#: catgets/gencat.c:230 debug/pcprofiledump.c:208 elf/ldconfig.c:216 +#: catgets/gencat.c:230 debug/pcprofiledump.c:208 elf/ldconfig.c:217 #: elf/pldd.c:246 elf/sln.c:77 elf/sprof.c:371 iconv/iconv_prog.c:387 #: iconv/iconvconfig.c:380 locale/programs/locale.c:275 #: locale/programs/localedef.c:437 login/programs/pt_chown.c:88 @@ -149,7 +149,7 @@ msgstr "" "%s.\n" #: catgets/gencat.c:246 debug/pcprofiledump.c:224 debug/xtrace.sh:63 -#: elf/ldconfig.c:232 elf/ldd.bash.in:38 elf/pldd.c:262 elf/sotruss.sh:75 +#: elf/ldconfig.c:233 elf/ldd.bash.in:38 elf/pldd.c:262 elf/sotruss.sh:75 #: elf/sprof.c:388 iconv/iconv_prog.c:404 iconv/iconvconfig.c:397 #: locale/programs/locale.c:292 locale/programs/localedef.c:459 #: login/programs/pt_chown.c:62 malloc/memusage.sh:70 malloc/memusagestat.c:582 @@ -165,7 +165,7 @@ msgstr "" "NULLE garantia; atque pro MERCABILETATE o APTITUDE PRO UN PROPOSITO PARTICULAR.\n" #: catgets/gencat.c:251 debug/pcprofiledump.c:229 debug/xtrace.sh:67 -#: elf/ldconfig.c:237 elf/pldd.c:267 elf/sprof.c:394 iconv/iconv_prog.c:409 +#: elf/ldconfig.c:238 elf/pldd.c:267 elf/sprof.c:394 iconv/iconv_prog.c:409 #: iconv/iconvconfig.c:402 locale/programs/locale.c:297 #: locale/programs/localedef.c:464 malloc/memusage.sh:74 #: malloc/memusagestat.c:587 nscd/nscd.c:526 nss/getent.c:97 nss/makedb.c:392 @@ -363,7 +363,7 @@ msgstr "modo invalide" msgid "invalid mode parameter" msgstr "parametro de modo incorrecte" -#: elf/cache.c:296 elf/ldconfig.c:1249 +#: elf/cache.c:296 elf/ldconfig.c:1239 #, c-format msgid "Can't open cache file %s\n" msgstr "Impossibile de aperir le file de cache %s\n" @@ -634,7 +634,7 @@ msgstr "impossibile de applicar le protection de memoria additional post le relo msgid "RTLD_NEXT used in code not dynamically loaded" msgstr "RTLD_NEXT usate in le codice non cargate dynamicamente" -#: elf/dl-tls.c:1059 +#: elf/dl-tls.c:1136 msgid "cannot create TLS data structures" msgstr "impossibile de crear structuras de datos TLS" @@ -646,178 +646,178 @@ msgstr "error de cerca de version" msgid "cannot allocate version reference table" msgstr "impossibile de allocar le tabula de referentias a versiones" -#: elf/ldconfig.c:124 +#: elf/ldconfig.c:125 msgid "Print cache" msgstr "Monstrar le cache" -#: elf/ldconfig.c:125 +#: elf/ldconfig.c:126 msgid "Generate verbose messages" msgstr "Monstrar messages in modo verbose" -#: elf/ldconfig.c:126 +#: elf/ldconfig.c:127 msgid "Don't build cache" msgstr "Non construer le cache" -#: elf/ldconfig.c:128 +#: elf/ldconfig.c:129 msgid "Change to and use ROOT as root directory" msgstr "Passar a RADICE e utilisar lo como un directorio de radice" -#: elf/ldconfig.c:128 +#: elf/ldconfig.c:129 msgid "ROOT" msgstr "RADICE" -#: elf/ldconfig.c:129 +#: elf/ldconfig.c:130 msgid "CACHE" msgstr "CACHE" -#: elf/ldconfig.c:129 +#: elf/ldconfig.c:130 msgid "Use CACHE as cache file" msgstr "Utilisar CACHE como un file de cache" -#: elf/ldconfig.c:130 +#: elf/ldconfig.c:131 msgid "CONF" msgstr "CONF" -#: elf/ldconfig.c:130 +#: elf/ldconfig.c:131 msgid "Use CONF as configuration file" msgstr "Utilisar CONF como un file de configuration" -#: elf/ldconfig.c:131 +#: elf/ldconfig.c:132 msgid "Only process directories specified on the command line. Don't build cache." msgstr "Tractar solo le directorios specificate in le linea de commando. Non construer le cache." -#: elf/ldconfig.c:132 +#: elf/ldconfig.c:133 msgid "Manually link individual libraries." msgstr "Ligar manualmente le bibliothecas individual." -#: elf/ldconfig.c:133 +#: elf/ldconfig.c:134 msgid "FORMAT" msgstr "FORMATO" -#: elf/ldconfig.c:134 +#: elf/ldconfig.c:135 msgid "Ignore auxiliary cache file" msgstr "Ignorar le file de cache auxiliar" -#: elf/ldconfig.c:142 +#: elf/ldconfig.c:143 msgid "Configure Dynamic Linker Run Time Bindings." msgstr "Configurar le associationes de tempore de execution del editor de ligamines dynamic." -#: elf/ldconfig.c:276 +#: elf/ldconfig.c:277 #, c-format msgid "Path `%s' given more than once" msgstr "Percurso `%s' fornite plus de un vice" -#: elf/ldconfig.c:405 +#: elf/ldconfig.c:406 #, c-format msgid "Can't stat %s" msgstr "Impossibile de effectuar stat sur %s" -#: elf/ldconfig.c:486 +#: elf/ldconfig.c:487 #, c-format msgid "Can't stat %s\n" msgstr "Impossibile de effectuar stat sur %s\n" -#: elf/ldconfig.c:496 +#: elf/ldconfig.c:497 #, c-format msgid "%s is not a symbolic link\n" msgstr "%s non es un ligamine symbolic\n" -#: elf/ldconfig.c:515 +#: elf/ldconfig.c:516 #, c-format msgid "Can't unlink %s" msgstr "Impossibile de efectuar unlink sur %s" -#: elf/ldconfig.c:521 +#: elf/ldconfig.c:522 #, c-format msgid "Can't link %s to %s" msgstr "Impossibile de crear un ligamine de %s a %s" -#: elf/ldconfig.c:527 +#: elf/ldconfig.c:528 msgid " (changed)\n" msgstr " (cambiate)\n" -#: elf/ldconfig.c:529 +#: elf/ldconfig.c:530 msgid " (SKIPPED)\n" msgstr " (OMITTITE)\n" -#: elf/ldconfig.c:584 +#: elf/ldconfig.c:585 #, c-format msgid "Can't find %s" msgstr "Impossibile de trovar %s" -#: elf/ldconfig.c:600 elf/ldconfig.c:770 elf/ldconfig.c:837 +#: elf/ldconfig.c:601 elf/ldconfig.c:760 elf/ldconfig.c:827 #, c-format msgid "Cannot lstat %s" msgstr "Impossibile de effectuar lstat sur %s" -#: elf/ldconfig.c:606 +#: elf/ldconfig.c:607 #, c-format msgid "Ignored file %s since it is not a regular file." msgstr "Le file %s es ignorate proque illo non es un file regular." -#: elf/ldconfig.c:614 +#: elf/ldconfig.c:615 #, c-format msgid "No link created since soname could not be found for %s" msgstr "Ligamine non create proque il non esseva possibile trovar le so-nomine pro %s" -#: elf/ldconfig.c:726 +#: elf/ldconfig.c:716 #, c-format msgid "Can't open directory %s" msgstr "Impossibile de aperir le directorio %s" -#: elf/ldconfig.c:787 elf/ldconfig.c:825 elf/readlib.c:78 +#: elf/ldconfig.c:777 elf/ldconfig.c:815 elf/readlib.c:81 #, c-format msgid "Input file %s not found.\n" msgstr "Le file de entrata %s non trovate.\n" -#: elf/ldconfig.c:794 +#: elf/ldconfig.c:784 #, c-format msgid "Cannot stat %s" msgstr "Impossibile de effectuar stat sur %s" -#: elf/ldconfig.c:913 +#: elf/ldconfig.c:903 #, c-format msgid "libc6 library %s in wrong directory" msgstr "bibliotheca libc6 %s es in un directorio incorrecte" -#: elf/ldconfig.c:932 +#: elf/ldconfig.c:922 #, c-format msgid "libraries %s and %s in directory %s have same soname but different type." msgstr "Le bibliothecas %s e %s es in le directorio %s ha le mesme so-nomine, ma lor typo es differente." -#: elf/ldconfig.c:1061 +#: elf/ldconfig.c:1051 #, c-format msgid "Warning: ignoring configuration file that cannot be opened: %s" msgstr "Advertimento: ignorar le file de configuration que non pote esser aperite: %s" -#: elf/ldconfig.c:1128 +#: elf/ldconfig.c:1118 #, c-format msgid "need absolute file name for configuration file when using -r" msgstr "il es necessari usar le nomine absolute pro le file de configuration quando on utilisa -r" -#: elf/ldconfig.c:1135 locale/programs/xasprintf.c:31 +#: elf/ldconfig.c:1125 locale/programs/xasprintf.c:31 #: locale/programs/xmalloc.c:63 malloc/obstack.c:416 malloc/obstack.c:418 #: posix/getconf.c:460 posix/getconf.c:699 #, c-format msgid "memory exhausted" msgstr "memoria exhaurite" -#: elf/ldconfig.c:1168 +#: elf/ldconfig.c:1158 #, c-format msgid "%s:%u: cannot read directory %s" msgstr "%s:%u: impossibile de leger le directorio %s" -#: elf/ldconfig.c:1206 +#: elf/ldconfig.c:1196 #, c-format msgid "relative path `%s' used to build cache" msgstr "percurso relative `%s' usate pro construer le cache" -#: elf/ldconfig.c:1228 +#: elf/ldconfig.c:1218 #, c-format msgid "Can't chdir to /" msgstr "Impossibile de effectuar chdir a /" -#: elf/ldconfig.c:1269 +#: elf/ldconfig.c:1259 #, c-format msgid "Can't open cache file directory %s\n" msgstr "Impossibile de aperir le directorio de files de cache %s\n" @@ -1005,27 +1005,27 @@ msgstr "%s non es un file de objectos condivise (Typo: %d).\n" msgid "more than one dynamic segment\n" msgstr "plus de un segmento dynamic\n" -#: elf/readlib.c:84 +#: elf/readlib.c:87 #, c-format msgid "Cannot fstat file %s.\n" msgstr "Impossibile de effectuar fstat sur le file %s.\n" -#: elf/readlib.c:95 +#: elf/readlib.c:98 #, c-format msgid "File %s is empty, not checked." msgstr "Le file %s es vacue, non controlate." -#: elf/readlib.c:101 +#: elf/readlib.c:104 #, c-format msgid "File %s is too small, not checked." msgstr "Le file %s es troppo parve, non controlate." -#: elf/readlib.c:111 +#: elf/readlib.c:114 #, c-format msgid "Cannot mmap file %s.\n" msgstr "Impossible de effectuar mmap sur le file %s.\n" -#: elf/readlib.c:149 +#: elf/readlib.c:152 #, c-format msgid "%s is not an ELF file - it has the wrong magic bytes at the start.\n" msgstr "%s non es un file ELF - illo ha le bytes magic incorrecte al testa.\n" diff --git a/po/id.po b/po/id.po index f9cf58bf4f..58307df77c 100644 --- a/po/id.po +++ b/po/id.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: libc 2.10.1\n" -"POT-Creation-Date: 2024-06-19 22:30+0200\n" +"POT-Creation-Date: 2024-07-21 00:32+0200\n" "PO-Revision-Date: 2009-06-23 12:30+0700\n" "Last-Translator: Arif E. Nugroho <arif_endro@yahoo.com>\n" "Language-Team: Indonesian <translation-team-id@lists.sourceforge.net>\n" @@ -126,7 +126,7 @@ msgstr "" "[BERKAS-KELUARAN [BERKAS-MASUKAN]...]" #: catgets/gencat.c:246 debug/pcprofiledump.c:224 debug/xtrace.sh:63 -#: elf/ldconfig.c:232 elf/ldd.bash.in:38 elf/pldd.c:262 elf/sotruss.sh:75 +#: elf/ldconfig.c:233 elf/ldd.bash.in:38 elf/pldd.c:262 elf/sotruss.sh:75 #: elf/sprof.c:388 iconv/iconv_prog.c:404 iconv/iconvconfig.c:397 #: locale/programs/locale.c:292 locale/programs/localedef.c:459 #: login/programs/pt_chown.c:62 malloc/memusage.sh:70 malloc/memusagestat.c:582 @@ -142,7 +142,7 @@ msgstr "" "garansi; bahkan untuk PERDAGANGAN atau KECOCOKAN UNTUK SEBUAH TUJUAN TERTENTU.\n" #: catgets/gencat.c:251 debug/pcprofiledump.c:229 debug/xtrace.sh:67 -#: elf/ldconfig.c:237 elf/pldd.c:267 elf/sprof.c:394 iconv/iconv_prog.c:409 +#: elf/ldconfig.c:238 elf/pldd.c:267 elf/sprof.c:394 iconv/iconv_prog.c:409 #: iconv/iconvconfig.c:402 locale/programs/locale.c:297 #: locale/programs/localedef.c:464 malloc/memusage.sh:74 #: malloc/memusagestat.c:587 nscd/nscd.c:526 nss/getent.c:97 nss/makedb.c:392 @@ -326,7 +326,7 @@ msgstr "mode tidak valid" msgid "invalid mode parameter" msgstr "mode parameter tidak valid" -#: elf/cache.c:296 elf/ldconfig.c:1249 +#: elf/cache.c:296 elf/ldconfig.c:1239 #, c-format msgid "Can't open cache file %s\n" msgstr "Tidak dapat membuka berkas cache %s\n" @@ -593,7 +593,7 @@ msgstr "tidak dapat mengaplikasikan proteksi memori tambahan setelah relokasi" msgid "RTLD_NEXT used in code not dynamically loaded" msgstr "RTLD_NEXT digunakan dalam kode yang tidak secara dinamis diangkut" -#: elf/dl-tls.c:1059 +#: elf/dl-tls.c:1136 msgid "cannot create TLS data structures" msgstr "tidak dapat membuat struktur data TLS" @@ -601,173 +601,173 @@ msgstr "tidak dapat membuat struktur data TLS" msgid "cannot allocate version reference table" msgstr "tidak dapat mengalokasikan tabel referensi versi" -#: elf/ldconfig.c:124 +#: elf/ldconfig.c:125 msgid "Print cache" msgstr "Menampilkan cache" -#: elf/ldconfig.c:125 +#: elf/ldconfig.c:126 msgid "Generate verbose messages" msgstr "Menghasilkan pesan verbose" -#: elf/ldconfig.c:126 +#: elf/ldconfig.c:127 msgid "Don't build cache" msgstr "Jangan membuat cache" -#: elf/ldconfig.c:128 +#: elf/ldconfig.c:129 msgid "Change to and use ROOT as root directory" msgstr "Ubah ke dan gunakan ROOT sebagai direktori root" -#: elf/ldconfig.c:128 +#: elf/ldconfig.c:129 msgid "ROOT" msgstr "ROOT" -#: elf/ldconfig.c:129 +#: elf/ldconfig.c:130 msgid "CACHE" msgstr "CACHE" -#: elf/ldconfig.c:129 +#: elf/ldconfig.c:130 msgid "Use CACHE as cache file" msgstr "Gunakan CACHE sebagai berkas cache" -#: elf/ldconfig.c:130 +#: elf/ldconfig.c:131 msgid "CONF" msgstr "CONF" -#: elf/ldconfig.c:130 +#: elf/ldconfig.c:131 msgid "Use CONF as configuration file" msgstr "Gunakan CONF sebagai berkas konfigurasi" -#: elf/ldconfig.c:131 +#: elf/ldconfig.c:132 msgid "Only process directories specified on the command line. Don't build cache." msgstr "Hanya proses direktori yang dispesifikasikan dalam baris perintah. Jangan buat cache." -#: elf/ldconfig.c:132 +#: elf/ldconfig.c:133 msgid "Manually link individual libraries." msgstr "Secara manual hubungkan perpustakaan individu." -#: elf/ldconfig.c:133 +#: elf/ldconfig.c:134 msgid "FORMAT" msgstr "FORMAT" -#: elf/ldconfig.c:134 +#: elf/ldconfig.c:135 msgid "Ignore auxiliary cache file" msgstr "Abaikan berkas cache tambahan" -#: elf/ldconfig.c:142 +#: elf/ldconfig.c:143 msgid "Configure Dynamic Linker Run Time Bindings." msgstr "Konfigurasi Linker Dinamis Ikatan Waktu Jalan." -#: elf/ldconfig.c:276 +#: elf/ldconfig.c:277 #, c-format msgid "Path `%s' given more than once" msgstr "Jalur `%s' diberikan lebih dari sekali" -#: elf/ldconfig.c:405 +#: elf/ldconfig.c:406 #, c-format msgid "Can't stat %s" msgstr "Tidak dapat memperoleh statistik %s" -#: elf/ldconfig.c:486 +#: elf/ldconfig.c:487 #, c-format msgid "Can't stat %s\n" msgstr "Tidak dapat memperoleh statistik %s\n" -#: elf/ldconfig.c:496 +#: elf/ldconfig.c:497 #, c-format msgid "%s is not a symbolic link\n" msgstr "%s bukan sebuah link simbolis\n" -#: elf/ldconfig.c:515 +#: elf/ldconfig.c:516 #, c-format msgid "Can't unlink %s" msgstr "Tidak dapat memutuskan %s" -#: elf/ldconfig.c:521 +#: elf/ldconfig.c:522 #, c-format msgid "Can't link %s to %s" msgstr "Tidak dapat menghubungkan %s ke %s" -#: elf/ldconfig.c:527 +#: elf/ldconfig.c:528 msgid " (changed)\n" msgstr " (berubah)\n" -#: elf/ldconfig.c:529 +#: elf/ldconfig.c:530 msgid " (SKIPPED)\n" msgstr " (DILEWATI)\n" -#: elf/ldconfig.c:584 +#: elf/ldconfig.c:585 #, c-format msgid "Can't find %s" msgstr "Tidak dapat menemukan %s" -#: elf/ldconfig.c:600 elf/ldconfig.c:770 elf/ldconfig.c:837 +#: elf/ldconfig.c:601 elf/ldconfig.c:760 elf/ldconfig.c:827 #, c-format msgid "Cannot lstat %s" msgstr "Tidak dapat lstat %s" -#: elf/ldconfig.c:606 +#: elf/ldconfig.c:607 #, c-format msgid "Ignored file %s since it is not a regular file." msgstr "Mengabaikan berkas %s karena itu bukan sebuah berkas umum." -#: elf/ldconfig.c:614 +#: elf/ldconfig.c:615 #, c-format msgid "No link created since soname could not be found for %s" msgstr "Tidak ada hubungan yang dibuat karena soname tidak dapaat ditemukan untuk %s" -#: elf/ldconfig.c:726 +#: elf/ldconfig.c:716 #, c-format msgid "Can't open directory %s" msgstr "Tidak dapat membuka direktori %s" -#: elf/ldconfig.c:787 elf/ldconfig.c:825 elf/readlib.c:78 +#: elf/ldconfig.c:777 elf/ldconfig.c:815 elf/readlib.c:81 #, c-format msgid "Input file %s not found.\n" msgstr "Berkas masukan %s tidak ditemukan.\n" -#: elf/ldconfig.c:794 +#: elf/ldconfig.c:784 #, c-format msgid "Cannot stat %s" msgstr "Tidak dapat memperoleh statistik %s" -#: elf/ldconfig.c:913 +#: elf/ldconfig.c:903 #, c-format msgid "libc6 library %s in wrong directory" msgstr "perpustakaan libc6 %s berada dalam direktori salah" -#: elf/ldconfig.c:932 +#: elf/ldconfig.c:922 #, c-format msgid "libraries %s and %s in directory %s have same soname but different type." msgstr "perpustakaan %s dan %s berada dalam direktori %s memiliki soname sama tetapi memiliki tipe berbeda." -#: elf/ldconfig.c:1128 +#: elf/ldconfig.c:1118 #, c-format msgid "need absolute file name for configuration file when using -r" msgstr "membutuhkan nama berkas absolut untuk berkas konfigurasi ketika menggunakan -r" -#: elf/ldconfig.c:1135 locale/programs/xasprintf.c:31 +#: elf/ldconfig.c:1125 locale/programs/xasprintf.c:31 #: locale/programs/xmalloc.c:63 malloc/obstack.c:416 malloc/obstack.c:418 #: posix/getconf.c:460 posix/getconf.c:699 #, c-format msgid "memory exhausted" msgstr "kehabisan memori" -#: elf/ldconfig.c:1168 +#: elf/ldconfig.c:1158 #, c-format msgid "%s:%u: cannot read directory %s" msgstr "%s:%u: tidak dapat membaca direktori %s" -#: elf/ldconfig.c:1206 +#: elf/ldconfig.c:1196 #, c-format msgid "relative path `%s' used to build cache" msgstr "jalur relatif `%s' digunakan untuk membuat cache" -#: elf/ldconfig.c:1228 +#: elf/ldconfig.c:1218 #, c-format msgid "Can't chdir to /" msgstr "Tidak dapat chdir ke /" -#: elf/ldconfig.c:1269 +#: elf/ldconfig.c:1259 #, c-format msgid "Can't open cache file directory %s\n" msgstr "Tidak dapat membuat berkas cache direktori %s\n" @@ -867,27 +867,27 @@ msgstr "%s bukan sebuah berkas objek terbagi (Tipe: %d).\n" msgid "more than one dynamic segment\n" msgstr "lebih dari satu segmen dinamis\n" -#: elf/readlib.c:84 +#: elf/readlib.c:87 #, c-format msgid "Cannot fstat file %s.\n" msgstr "Tidak dapat fstat berkas %s.\n" -#: elf/readlib.c:95 +#: elf/readlib.c:98 #, c-format msgid "File %s is empty, not checked." msgstr "Berkas %s kosong, tidak diperiksa." -#: elf/readlib.c:101 +#: elf/readlib.c:104 #, c-format msgid "File %s is too small, not checked." msgstr "Berkas %s terlalu kecil, tidak diperiksa." -#: elf/readlib.c:111 +#: elf/readlib.c:114 #, c-format msgid "Cannot mmap file %s.\n" msgstr "Tidak dapat mmap berkas %s.\n" -#: elf/readlib.c:149 +#: elf/readlib.c:152 #, c-format msgid "%s is not an ELF file - it has the wrong magic bytes at the start.\n" msgstr "%s bukan sebuah berkas ELF - ini memiliki magis bytes salah di awal.\n" diff --git a/po/it.po b/po/it.po index c74afb909e..610e2489d9 100644 --- a/po/it.po +++ b/po/it.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: libc-2.36.9000\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-06-19 22:30+0200\n" +"POT-Creation-Date: 2024-07-21 00:32+0200\n" "PO-Revision-Date: 2023-05-03 15:28+0200\n" "Last-Translator: Sergio Zanchetta <primes2h@ubuntu.com>\n" "Language-Team: Italian <tp@lists.linux.it>\n" @@ -157,7 +157,7 @@ msgstr "" "[FILE-OUTPUT [FILE-INPUT]...]" #: catgets/gencat.c:246 debug/pcprofiledump.c:224 debug/xtrace.sh:63 -#: elf/ldconfig.c:232 elf/ldd.bash.in:38 elf/pldd.c:262 elf/sotruss.sh:75 +#: elf/ldconfig.c:233 elf/ldd.bash.in:38 elf/pldd.c:262 elf/sotruss.sh:75 #: elf/sprof.c:388 iconv/iconv_prog.c:404 iconv/iconvconfig.c:397 #: locale/programs/locale.c:292 locale/programs/localedef.c:459 #: login/programs/pt_chown.c:62 malloc/memusage.sh:70 malloc/memusagestat.c:582 @@ -175,7 +175,7 @@ msgstr "" # lf #: catgets/gencat.c:251 debug/pcprofiledump.c:229 debug/xtrace.sh:67 -#: elf/ldconfig.c:237 elf/pldd.c:267 elf/sprof.c:394 iconv/iconv_prog.c:409 +#: elf/ldconfig.c:238 elf/pldd.c:267 elf/sprof.c:394 iconv/iconv_prog.c:409 #: iconv/iconvconfig.c:402 locale/programs/locale.c:297 #: locale/programs/localedef.c:464 malloc/memusage.sh:74 #: malloc/memusagestat.c:587 nscd/nscd.c:526 nss/getent.c:97 nss/makedb.c:392 @@ -384,7 +384,7 @@ msgstr "modalità non valida" msgid "invalid mode parameter" msgstr "parametro di modalità non valido" -#: elf/cache.c:296 elf/ldconfig.c:1249 +#: elf/cache.c:296 elf/ldconfig.c:1239 #, c-format msgid "Can't open cache file %s\n" msgstr "Impossibile aprire il file di cache %s\n" @@ -698,7 +698,7 @@ msgid "RTLD_NEXT used in code not dynamically loaded" msgstr "RTLD_NEXT usato in codice caricato non dinamicamente" # lf -#: elf/dl-tls.c:1059 +#: elf/dl-tls.c:1136 msgid "cannot create TLS data structures" msgstr "impossibile creare le strutture dati TLS" @@ -712,194 +712,194 @@ msgid "cannot allocate version reference table" msgstr "impossibile allocare la tabella di riferimento versione" # lf -#: elf/ldconfig.c:124 +#: elf/ldconfig.c:125 msgid "Print cache" msgstr "Stampa la cache" -#: elf/ldconfig.c:125 +#: elf/ldconfig.c:126 msgid "Generate verbose messages" msgstr "Genera messaggi prolissi" # lf -#: elf/ldconfig.c:126 +#: elf/ldconfig.c:127 msgid "Don't build cache" msgstr "Non crea la cache" # lf -#: elf/ldconfig.c:128 +#: elf/ldconfig.c:129 msgid "Change to and use ROOT as root directory" msgstr "Passa a RADICE come directory di root" -#: elf/ldconfig.c:128 +#: elf/ldconfig.c:129 msgid "ROOT" msgstr "ROOT" -#: elf/ldconfig.c:129 +#: elf/ldconfig.c:130 msgid "CACHE" msgstr "CACHE" # lf -#: elf/ldconfig.c:129 +#: elf/ldconfig.c:130 msgid "Use CACHE as cache file" msgstr "Usa CACHE come file di cache" -#: elf/ldconfig.c:130 +#: elf/ldconfig.c:131 msgid "CONF" msgstr "CONF" # lf -#: elf/ldconfig.c:130 +#: elf/ldconfig.c:131 msgid "Use CONF as configuration file" msgstr "Usa CONF come file di configurazione" # lf -#: elf/ldconfig.c:131 +#: elf/ldconfig.c:132 msgid "Only process directories specified on the command line. Don't build cache." msgstr "Elabora solo le directory specificate nella riga di comando. Non crea la cache." # lf -#: elf/ldconfig.c:132 +#: elf/ldconfig.c:133 msgid "Manually link individual libraries." msgstr "Crea manualmente i collegamenti alle singole librerie." -#: elf/ldconfig.c:133 +#: elf/ldconfig.c:134 msgid "FORMAT" msgstr "FORMATO" -#: elf/ldconfig.c:133 +#: elf/ldconfig.c:134 msgid "Format to use: new (default), old, or compat" msgstr "Formato da usare: new (predefinito), old o compat" -#: elf/ldconfig.c:134 +#: elf/ldconfig.c:135 msgid "Ignore auxiliary cache file" msgstr "Ignora il file di cache ausiliario" -#: elf/ldconfig.c:142 +#: elf/ldconfig.c:143 msgid "Configure Dynamic Linker Run Time Bindings." msgstr "Configura i binding a runtime del linker dinamico." # lf -#: elf/ldconfig.c:276 +#: elf/ldconfig.c:277 #, c-format msgid "Path `%s' given more than once" msgstr "Percorso \"%s\" fornito più di una volta" -#: elf/ldconfig.c:405 +#: elf/ldconfig.c:406 #, c-format msgid "Can't stat %s" msgstr "Impossibile fare stat di %s" -#: elf/ldconfig.c:486 +#: elf/ldconfig.c:487 #, c-format msgid "Can't stat %s\n" msgstr "Impossibile fare stat di %s\n" # lf -#: elf/ldconfig.c:496 +#: elf/ldconfig.c:497 #, c-format msgid "%s is not a symbolic link\n" msgstr "%s non è un collegamento simbolico\n" # lf -#: elf/ldconfig.c:515 +#: elf/ldconfig.c:516 #, c-format msgid "Can't unlink %s" msgstr "Impossibile eseguire l'unlink di %s" # lf # -#: elf/ldconfig.c:521 +#: elf/ldconfig.c:522 #, c-format msgid "Can't link %s to %s" msgstr "Impossibile collegare %s a %s" -#: elf/ldconfig.c:527 +#: elf/ldconfig.c:528 msgid " (changed)\n" msgstr " (cambiato)\n" -#: elf/ldconfig.c:529 +#: elf/ldconfig.c:530 msgid " (SKIPPED)\n" msgstr " (SALTATO)\n" -#: elf/ldconfig.c:584 +#: elf/ldconfig.c:585 #, c-format msgid "Can't find %s" msgstr "Impossibile trovare %s" -#: elf/ldconfig.c:600 elf/ldconfig.c:770 elf/ldconfig.c:837 +#: elf/ldconfig.c:601 elf/ldconfig.c:760 elf/ldconfig.c:827 #, c-format msgid "Cannot lstat %s" msgstr "Impossibile fare lstat di %s" # lf -#: elf/ldconfig.c:606 +#: elf/ldconfig.c:607 #, c-format msgid "Ignored file %s since it is not a regular file." msgstr "File %s ignorato poiché non è un file normale." # lf # -#: elf/ldconfig.c:614 +#: elf/ldconfig.c:615 #, c-format msgid "No link created since soname could not be found for %s" msgstr "Collegamenti non creati poiché non è stato possibile trovare il soname per %s" -#: elf/ldconfig.c:726 +#: elf/ldconfig.c:716 #, c-format msgid "Can't open directory %s" msgstr "Impossibile aprire la directory %s" -#: elf/ldconfig.c:787 elf/ldconfig.c:825 elf/readlib.c:78 +#: elf/ldconfig.c:777 elf/ldconfig.c:815 elf/readlib.c:81 #, c-format msgid "Input file %s not found.\n" msgstr "File di input %s non trovato.\n" -#: elf/ldconfig.c:794 +#: elf/ldconfig.c:784 #, c-format msgid "Cannot stat %s" msgstr "Impossibile fare stat di %s" # lf -#: elf/ldconfig.c:913 +#: elf/ldconfig.c:903 #, c-format msgid "libc6 library %s in wrong directory" msgstr "libreria libc6 %s nella directory errata" # lf -#: elf/ldconfig.c:932 +#: elf/ldconfig.c:922 #, c-format msgid "libraries %s and %s in directory %s have same soname but different type." msgstr "le librerie %s e %s nella directory %s hanno lo stesso soname, ma di tipo differente." -#: elf/ldconfig.c:1128 +#: elf/ldconfig.c:1118 #, c-format msgid "need absolute file name for configuration file when using -r" msgstr "se viene usato -r è necessario un nome file assoluto per il file di configurazione" -#: elf/ldconfig.c:1135 locale/programs/xasprintf.c:31 +#: elf/ldconfig.c:1125 locale/programs/xasprintf.c:31 #: locale/programs/xmalloc.c:63 malloc/obstack.c:416 malloc/obstack.c:418 #: posix/getconf.c:460 posix/getconf.c:699 #, c-format msgid "memory exhausted" msgstr "memoria esaurita" -#: elf/ldconfig.c:1168 +#: elf/ldconfig.c:1158 #, c-format msgid "%s:%u: cannot read directory %s" msgstr "%s:%u: impossibile leggere la directory %s" # lf -#: elf/ldconfig.c:1206 +#: elf/ldconfig.c:1196 #, c-format msgid "relative path `%s' used to build cache" msgstr "usato il percorso relativo \"%s\" per creare la cache" -#: elf/ldconfig.c:1228 +#: elf/ldconfig.c:1218 #, c-format msgid "Can't chdir to /" msgstr "Impossibile fare chdir a /" -#: elf/ldconfig.c:1269 +#: elf/ldconfig.c:1259 #, c-format msgid "Can't open cache file directory %s\n" msgstr "Impossibile aprire la directory del file di cache %s\n" @@ -1014,27 +1014,27 @@ msgstr "%s non è un file oggetto condiviso (tipo: %d).\n" msgid "more than one dynamic segment\n" msgstr "più di un segmento dinamico\n" -#: elf/readlib.c:84 +#: elf/readlib.c:87 #, c-format msgid "Cannot fstat file %s.\n" msgstr "Impossibile fare fstat di %s.\n" -#: elf/readlib.c:95 +#: elf/readlib.c:98 #, c-format msgid "File %s is empty, not checked." msgstr "Il file %s è vuoto, non controllato." -#: elf/readlib.c:101 +#: elf/readlib.c:104 #, c-format msgid "File %s is too small, not checked." msgstr "Il file %s è troppo piccolo, non controllato." -#: elf/readlib.c:111 +#: elf/readlib.c:114 #, c-format msgid "Cannot mmap file %s.\n" msgstr "Impossibile fare mmap del file %s\n" -#: elf/readlib.c:149 +#: elf/readlib.c:152 #, c-format msgid "%s is not an ELF file - it has the wrong magic bytes at the start.\n" msgstr "%s non è un file ELF - i byte magic iniziali sono sbagliati.\n" diff --git a/po/ja.po b/po/ja.po index cdb5d32505..4d7c7cbd78 100644 --- a/po/ja.po +++ b/po/ja.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: libc 2.36.9000\n" -"POT-Creation-Date: 2024-06-19 22:30+0200\n" +"POT-Creation-Date: 2024-07-21 00:32+0200\n" "PO-Revision-Date: 2023-05-09 08:02+0900\n" "Last-Translator: Takeshi Hamasaki <hmatrjp@users.sourceforge.jp>\n" "Language-Team: Japanese <translation-team-ja@lists.sourceforge.net>\n" @@ -144,7 +144,7 @@ msgstr "" "[OUTPUT-FILE [INPUT-FILE]...]" #: catgets/gencat.c:246 debug/pcprofiledump.c:224 debug/xtrace.sh:63 -#: elf/ldconfig.c:232 elf/ldd.bash.in:38 elf/pldd.c:262 elf/sotruss.sh:75 +#: elf/ldconfig.c:233 elf/ldd.bash.in:38 elf/pldd.c:262 elf/sotruss.sh:75 #: elf/sprof.c:388 iconv/iconv_prog.c:404 iconv/iconvconfig.c:397 #: locale/programs/locale.c:292 locale/programs/localedef.c:459 #: login/programs/pt_chown.c:62 malloc/memusage.sh:70 malloc/memusagestat.c:582 @@ -160,7 +160,7 @@ msgstr "" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" #: catgets/gencat.c:251 debug/pcprofiledump.c:229 debug/xtrace.sh:67 -#: elf/ldconfig.c:237 elf/pldd.c:267 elf/sprof.c:394 iconv/iconv_prog.c:409 +#: elf/ldconfig.c:238 elf/pldd.c:267 elf/sprof.c:394 iconv/iconv_prog.c:409 #: iconv/iconvconfig.c:402 locale/programs/locale.c:297 #: locale/programs/localedef.c:464 malloc/memusage.sh:74 #: malloc/memusagestat.c:587 nscd/nscd.c:526 nss/getent.c:97 nss/makedb.c:392 @@ -352,7 +352,7 @@ msgstr "無効ãªãƒ¢ãƒ¼ãƒ‰ã§ã™" msgid "invalid mode parameter" msgstr "無効ãªãƒ¢ãƒ¼ãƒ‰ãƒ‘ラメータã§ã™" -#: elf/cache.c:296 elf/ldconfig.c:1249 +#: elf/cache.c:296 elf/ldconfig.c:1239 #, c-format msgid "Can't open cache file %s\n" msgstr "ã‚ャッシュファイル %s ã‚’é–‹ã‘ã¾ã›ã‚“\n" @@ -623,7 +623,7 @@ msgstr "å†é…置後ã«è¿½åŠ ã®ãƒ¡ãƒ¢ãƒªä¿è·ã‚’é©ç”¨ã§ãã¾ã›ã‚“" msgid "RTLD_NEXT used in code not dynamically loaded" msgstr "コード内ã§ä½¿ç”¨ã•ã‚Œã¦ã„ã‚‹ RTLD_NEXT ã‚’å‹•çš„ã«ãƒãƒ¼ãƒ‰å‡ºæ¥ã¾ã›ã‚“" -#: elf/dl-tls.c:1059 +#: elf/dl-tls.c:1136 msgid "cannot create TLS data structures" msgstr "TLS ãƒ‡ãƒ¼ã‚¿æ§‹é€ ä½“ã‚’ä½œæˆã§ãã¾ã›ã‚“" @@ -635,173 +635,173 @@ msgstr "ãƒãƒ¼ã‚¸ãƒ§ãƒ³æ¤œç´¢ã‚¨ãƒ©ãƒ¼ã§ã™" msgid "cannot allocate version reference table" msgstr "ãƒãƒ¼ã‚¸ãƒ§ãƒ³å‚照表をé…置出æ¥ã¾ã›ã‚“" -#: elf/ldconfig.c:124 +#: elf/ldconfig.c:125 msgid "Print cache" msgstr "ã‚ャッシュを表示ã—ã¾ã™" -#: elf/ldconfig.c:125 +#: elf/ldconfig.c:126 msgid "Generate verbose messages" msgstr "冗長ãªãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’生æˆã—ã¾ã™" -#: elf/ldconfig.c:126 +#: elf/ldconfig.c:127 msgid "Don't build cache" msgstr "ã‚ャッシュã®æ§‹ç¯‰ã‚’è¡Œã„ã¾ã›ã‚“" -#: elf/ldconfig.c:128 +#: elf/ldconfig.c:129 msgid "Change to and use ROOT as root directory" msgstr "ルートディレクトリを ROOT ã«å¤‰æ›´ã—ã€ä½¿ç”¨ã—ã¾ã™" -#: elf/ldconfig.c:128 +#: elf/ldconfig.c:129 msgid "ROOT" msgstr "ROOT" -#: elf/ldconfig.c:129 +#: elf/ldconfig.c:130 msgid "CACHE" msgstr "CACHE" -#: elf/ldconfig.c:129 +#: elf/ldconfig.c:130 msgid "Use CACHE as cache file" msgstr "ã‚ャッシュファイルã¨ã—㦠CACHE を使用ã—ã¾ã™" -#: elf/ldconfig.c:130 +#: elf/ldconfig.c:131 msgid "CONF" msgstr "CONF" -#: elf/ldconfig.c:130 +#: elf/ldconfig.c:131 msgid "Use CONF as configuration file" msgstr "è¨å®šãƒ•ã‚¡ã‚¤ãƒ«ã¨ã—㦠CONF を使用ã—ã¾ã™" -#: elf/ldconfig.c:131 +#: elf/ldconfig.c:132 msgid "Only process directories specified on the command line. Don't build cache." msgstr "コマンドラインã§æŒ‡å®šã•ã‚ŒãŸãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªã®ã¿å‡¦ç†ã—ã¾ã™ã€‚ã‚ャッシュã¯ä½œæˆã—ã¾ã›ã‚“。" -#: elf/ldconfig.c:132 +#: elf/ldconfig.c:133 msgid "Manually link individual libraries." msgstr "個々ã®ãƒ©ã‚¤ãƒ–ラリを手動ã§ãƒªãƒ³ã‚¯ã—ã¦ãã ã•ã„。" -#: elf/ldconfig.c:133 +#: elf/ldconfig.c:134 msgid "FORMAT" msgstr "FORMAT" -#: elf/ldconfig.c:134 +#: elf/ldconfig.c:135 msgid "Ignore auxiliary cache file" msgstr "補助ã‚ャッシュファイルを無視ã—ã¦ã„ã¾ã™" -#: elf/ldconfig.c:142 +#: elf/ldconfig.c:143 msgid "Configure Dynamic Linker Run Time Bindings." msgstr "動的リンカランタイムã®ãƒã‚¤ãƒ³ãƒ‡ã‚£ãƒ³ã‚°ã‚’è¨å®šã—ã¾ã™ã€‚" -#: elf/ldconfig.c:276 +#: elf/ldconfig.c:277 #, c-format msgid "Path `%s' given more than once" msgstr "パス `%s' ãŒäºŒå›žä»¥ä¸Šä¸Žãˆã‚‰ã‚Œã¾ã—ãŸ" -#: elf/ldconfig.c:405 +#: elf/ldconfig.c:406 #, c-format msgid "Can't stat %s" msgstr "%s ã®æƒ…å ±å–å¾— (stat) ãŒã§ãã¾ã›ã‚“" -#: elf/ldconfig.c:486 +#: elf/ldconfig.c:487 #, c-format msgid "Can't stat %s\n" msgstr "%s ã®æƒ…å ±å–å¾— (stat) ãŒå‡ºæ¥ã¾ã›ã‚“\n" -#: elf/ldconfig.c:496 +#: elf/ldconfig.c:497 #, c-format msgid "%s is not a symbolic link\n" msgstr "%s ã¯ã‚·ãƒ³ãƒœãƒªãƒƒã‚¯ãƒªãƒ³ã‚¯ã§ã¯ã‚ã‚Šã¾ã›ã‚“\n" -#: elf/ldconfig.c:515 +#: elf/ldconfig.c:516 #, c-format msgid "Can't unlink %s" msgstr "%s をリンク解除ã§ãã¾ã›ã‚“" -#: elf/ldconfig.c:521 +#: elf/ldconfig.c:522 #, c-format msgid "Can't link %s to %s" msgstr "%s ã‹ã‚‰ %s ã¸ãƒªãƒ³ã‚¯ã§ãã¾ã›ã‚“" -#: elf/ldconfig.c:527 +#: elf/ldconfig.c:528 msgid " (changed)\n" msgstr " (変更ã•ã‚Œã¾ã—ãŸ)\n" -#: elf/ldconfig.c:529 +#: elf/ldconfig.c:530 msgid " (SKIPPED)\n" msgstr " (スã‚ップã•ã‚Œã¾ã—ãŸ)\n" -#: elf/ldconfig.c:584 +#: elf/ldconfig.c:585 #, c-format msgid "Can't find %s" msgstr "%s を見ã¤ã‘られã¾ã›ã‚“" -#: elf/ldconfig.c:600 elf/ldconfig.c:770 elf/ldconfig.c:837 +#: elf/ldconfig.c:601 elf/ldconfig.c:760 elf/ldconfig.c:827 #, c-format msgid "Cannot lstat %s" msgstr "%s ã®çŠ¶æ…‹å–å¾— (lstat) ãŒå‡ºæ¥ã¾ã›ã‚“" -#: elf/ldconfig.c:606 +#: elf/ldconfig.c:607 #, c-format msgid "Ignored file %s since it is not a regular file." msgstr "通常ファイルã§ãªã„ãŸã‚ファイル %s を無視ã—ã¦ã„ã¾ã™ã€‚" -#: elf/ldconfig.c:614 +#: elf/ldconfig.c:615 #, c-format msgid "No link created since soname could not be found for %s" msgstr "%s 用ã®å‹•çš„ライブラリå (soname) ãŒè¦‹ã¤ã‹ã‚‰ãªã„ãŸã‚リンクãŒä½œæˆã•ã‚Œã¾ã›ã‚“ã§ã—ãŸ" -#: elf/ldconfig.c:726 +#: elf/ldconfig.c:716 #, c-format msgid "Can't open directory %s" msgstr "ディレクトリ %s ã‚’é–‹ã‘ã¾ã›ã‚“" -#: elf/ldconfig.c:787 elf/ldconfig.c:825 elf/readlib.c:78 +#: elf/ldconfig.c:777 elf/ldconfig.c:815 elf/readlib.c:81 #, c-format msgid "Input file %s not found.\n" msgstr "入力ファイル %s ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。\n" -#: elf/ldconfig.c:794 +#: elf/ldconfig.c:784 #, c-format msgid "Cannot stat %s" msgstr "%s ã®çŠ¶æ…‹å–å¾— (stat) ãŒå‡ºæ¥ã¾ã›ã‚“" -#: elf/ldconfig.c:913 +#: elf/ldconfig.c:903 #, c-format msgid "libc6 library %s in wrong directory" msgstr "libc6 ライブラリ %s ãŒèª¤ã£ãŸãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªå†…ã«ã‚ã‚Šã¾ã™" -#: elf/ldconfig.c:932 +#: elf/ldconfig.c:922 #, c-format msgid "libraries %s and %s in directory %s have same soname but different type." msgstr "ディレクトリ %3$s 内ã«ã‚るライブラリ %1$s 㨠%2$s ã¯åŒä¸€ã®å‹•çš„ライブラリå (soname) ã§ã™ãŒç•°ãªã£ãŸåž‹ã§ã™ã€‚" -#: elf/ldconfig.c:1128 +#: elf/ldconfig.c:1118 #, c-format msgid "need absolute file name for configuration file when using -r" msgstr "-r を使用ã—ã¦ã„ã‚‹ã¨ãã¯è¨å®šãƒ•ã‚¡ã‚¤ãƒ«åã¨ã—ã¦çµ¶å¯¾ãƒ‘スã®ãƒ•ã‚¡ã‚¤ãƒ«åãŒå¿…è¦ã§ã™" -#: elf/ldconfig.c:1135 locale/programs/xasprintf.c:31 +#: elf/ldconfig.c:1125 locale/programs/xasprintf.c:31 #: locale/programs/xmalloc.c:63 malloc/obstack.c:416 malloc/obstack.c:418 #: posix/getconf.c:460 posix/getconf.c:699 #, c-format msgid "memory exhausted" msgstr "メモリを使ã„æžœãŸã—ã¾ã—ãŸ" -#: elf/ldconfig.c:1168 +#: elf/ldconfig.c:1158 #, c-format msgid "%s:%u: cannot read directory %s" msgstr "%s:%u: ディレクトリ %s ã‚’èªã¿è¾¼ã‚ã¾ã›ã‚“" -#: elf/ldconfig.c:1206 +#: elf/ldconfig.c:1196 #, c-format msgid "relative path `%s' used to build cache" msgstr "ã‚ャッシュ生æˆæ™‚ã«ç›¸å¯¾ãƒ‘ス `%s' ãŒä½¿ç”¨ã•ã‚Œã¾ã—ãŸ" -#: elf/ldconfig.c:1228 +#: elf/ldconfig.c:1218 #, c-format msgid "Can't chdir to /" msgstr "/ ã¸ãƒ‡ã‚£ãƒ¬ã‚¯ãƒˆãƒªç§»å‹• (chdir) 出æ¥ã¾ã›ã‚“" -#: elf/ldconfig.c:1269 +#: elf/ldconfig.c:1259 #, c-format msgid "Can't open cache file directory %s\n" msgstr "ã‚ャッシュファイルディレクトリ %s ã‚’é–‹ã‘ã¾ã›ã‚“\n" @@ -901,27 +901,27 @@ msgstr "%s ã¯å…±æœ‰ã‚ªãƒ–ジェクトファイルã§ã¯ã‚ã‚Šã¾ã›ã‚“ (åž‹: %d msgid "more than one dynamic segment\n" msgstr "二ã¤ä»¥ä¸Šã®å‹•çš„セグメントãŒã‚ã‚Šã¾ã™\n" -#: elf/readlib.c:84 +#: elf/readlib.c:87 #, c-format msgid "Cannot fstat file %s.\n" msgstr "ファイル %s ã®çŠ¶æ…‹å–å¾— (fstat) ãŒã§ãã¾ã›ã‚“。\n" -#: elf/readlib.c:95 +#: elf/readlib.c:98 #, c-format msgid "File %s is empty, not checked." msgstr "ファイル %s ã¯ç©ºã§ã™ã€‚検査ã•ã‚Œã¾ã›ã‚“。" -#: elf/readlib.c:101 +#: elf/readlib.c:104 #, c-format msgid "File %s is too small, not checked." msgstr "ファイル %s ã¯å°ã•ã™ãŽã¾ã™ã€‚検査ã•ã‚Œã¾ã›ã‚“。" -#: elf/readlib.c:111 +#: elf/readlib.c:114 #, c-format msgid "Cannot mmap file %s.\n" msgstr "ファイル %s ã‚’ mmap ã§ãã¾ã›ã‚“。\n" -#: elf/readlib.c:149 +#: elf/readlib.c:152 #, c-format msgid "%s is not an ELF file - it has the wrong magic bytes at the start.\n" msgstr "%s 㯠ELF ファイルã§ã¯ã‚ã‚Šã¾ã›ã‚“ - å…ˆé ã«èª¤ã£ãŸãƒžã‚¸ãƒƒã‚¯ãƒã‚¤ãƒˆã‚’æŒã£ã¦ã„ã¾ã™ã€‚\n" diff --git a/po/ka.po b/po/ka.po index 37993e528f..a49e6e13d4 100644 --- a/po/ka.po +++ b/po/ka.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: libc 2.36.9000\n" -"POT-Creation-Date: 2024-06-19 22:30+0200\n" +"POT-Creation-Date: 2024-07-21 00:32+0200\n" "PO-Revision-Date: 2023-02-05 14:40+0100\n" "Last-Translator: Temuri Doghonadze <temuri.doghonadze@gmail.com>\n" "Language-Team: Georgian <(nothing)>\n" @@ -149,7 +149,7 @@ msgstr "" "-o გáƒáƒ›áƒáƒ¢áƒáƒœáƒ˜áƒ¡-ფáƒáƒ˜áƒšáƒ˜ [შეტáƒáƒœáƒ˜áƒ¡-ფáƒáƒ˜áƒšáƒ˜]...\n" "[გáƒáƒ›áƒáƒ¢áƒáƒœáƒ˜áƒ¡-ფáƒáƒ˜áƒšáƒ˜ [შეტáƒáƒœáƒ˜áƒ¡-ფáƒáƒ˜áƒšáƒ˜]..]" -#: catgets/gencat.c:230 debug/pcprofiledump.c:208 elf/ldconfig.c:216 +#: catgets/gencat.c:230 debug/pcprofiledump.c:208 elf/ldconfig.c:217 #: elf/pldd.c:246 elf/sln.c:77 elf/sprof.c:371 iconv/iconv_prog.c:387 #: iconv/iconvconfig.c:380 locale/programs/locale.c:275 #: locale/programs/localedef.c:437 login/programs/pt_chown.c:88 @@ -164,7 +164,7 @@ msgstr "" "%s.\n" #: catgets/gencat.c:246 debug/pcprofiledump.c:224 debug/xtrace.sh:63 -#: elf/ldconfig.c:232 elf/ldd.bash.in:38 elf/pldd.c:262 elf/sotruss.sh:75 +#: elf/ldconfig.c:233 elf/ldd.bash.in:38 elf/pldd.c:262 elf/sotruss.sh:75 #: elf/sprof.c:388 iconv/iconv_prog.c:404 iconv/iconvconfig.c:397 #: locale/programs/locale.c:292 locale/programs/localedef.c:459 #: login/programs/pt_chown.c:62 malloc/memusage.sh:70 malloc/memusagestat.c:582 @@ -180,7 +180,7 @@ msgstr "" "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n" #: catgets/gencat.c:251 debug/pcprofiledump.c:229 debug/xtrace.sh:67 -#: elf/ldconfig.c:237 elf/pldd.c:267 elf/sprof.c:394 iconv/iconv_prog.c:409 +#: elf/ldconfig.c:238 elf/pldd.c:267 elf/sprof.c:394 iconv/iconv_prog.c:409 #: iconv/iconvconfig.c:402 locale/programs/locale.c:297 #: locale/programs/localedef.c:464 malloc/memusage.sh:74 #: malloc/memusagestat.c:587 nscd/nscd.c:526 nss/getent.c:97 nss/makedb.c:392 @@ -365,7 +365,7 @@ msgstr "ქეშის ფáƒáƒ˜áƒšáƒ¡ áƒáƒ áƒáƒ¡áƒ¬áƒáƒ ი ბáƒáƒ˜áƒ¢áƒ” msgid "Cache generated by: " msgstr "ქეშის შემქმნელიáƒ: " -#: elf/cache.c:296 elf/ldconfig.c:1249 +#: elf/cache.c:296 elf/ldconfig.c:1239 #, c-format msgid "Can't open cache file %s\n" msgstr "ქეშის ფáƒáƒ˜áƒšáƒ˜áƒ¡ გáƒáƒ®áƒ¡áƒœáƒ˜áƒ¡ შეცდáƒáƒ›áƒ: %s\n" @@ -655,7 +655,7 @@ msgstr "reloc-ის შემდეგ სეგმენტის prot-ის msgid "RTLD_NEXT used in code not dynamically loaded" msgstr "კáƒáƒ“ში გáƒáƒ›áƒáƒ§áƒ”ნებული RTLD_NEXT დინáƒáƒ›áƒ˜áƒ™áƒ£áƒ áƒáƒ“ áƒáƒ იტვირთებáƒ" -#: elf/dl-tls.c:1059 +#: elf/dl-tls.c:1136 msgid "cannot create TLS data structures" msgstr "შეცდáƒáƒ›áƒ TLS-ის მáƒáƒœáƒáƒªáƒ”მების სტრუქტურის შექმნისáƒáƒ¡" @@ -667,173 +667,173 @@ msgstr "ვერსიის მáƒáƒ«áƒ”ბნის შეცდáƒáƒ›áƒ" msgid "cannot allocate version reference table" msgstr "ვერსის ბმების ცხრილის გáƒáƒ›áƒáƒ§áƒáƒ¤áƒ˜áƒ¡ შეცდáƒáƒ›áƒ" -#: elf/ldconfig.c:124 +#: elf/ldconfig.c:125 msgid "Print cache" msgstr "ქეშის დáƒáƒ‘ეáƒáƒ“ვáƒ" -#: elf/ldconfig.c:125 +#: elf/ldconfig.c:126 msgid "Generate verbose messages" msgstr "დáƒáƒ›áƒáƒ¢áƒ”ბითი შეტყáƒáƒ‘ინებების გენერáƒáƒªáƒ˜áƒ" -#: elf/ldconfig.c:126 +#: elf/ldconfig.c:127 msgid "Don't build cache" msgstr "ქეშის áƒáƒ¨áƒ”ნების შეცდáƒáƒ›áƒ" -#: elf/ldconfig.c:127 +#: elf/ldconfig.c:128 msgid "Don't update symbolic links" msgstr "სიმბმულების გáƒáƒœáƒáƒ®áƒšáƒ”ბის შეცდáƒáƒ›áƒ" -#: elf/ldconfig.c:128 +#: elf/ldconfig.c:129 msgid "Change to and use ROOT as root directory" msgstr "გáƒáƒ“áƒáƒ“ით დრგáƒáƒ›áƒáƒ˜áƒ§áƒ”ნეთ ROOT, რáƒáƒ’áƒáƒ ც root სáƒáƒ¥áƒáƒ¦áƒáƒšáƒ“ე" -#: elf/ldconfig.c:128 +#: elf/ldconfig.c:129 msgid "ROOT" msgstr "Root" -#: elf/ldconfig.c:129 +#: elf/ldconfig.c:130 msgid "CACHE" msgstr "კეში" -#: elf/ldconfig.c:129 +#: elf/ldconfig.c:130 msgid "Use CACHE as cache file" msgstr "CACHE-ის ქეშ ფáƒáƒ˜áƒšáƒáƒ“ გáƒáƒ›áƒáƒ§áƒ”ნებáƒ" -#: elf/ldconfig.c:130 +#: elf/ldconfig.c:131 msgid "CONF" msgstr "CONF" -#: elf/ldconfig.c:130 +#: elf/ldconfig.c:131 msgid "Use CONF as configuration file" msgstr "CONF-ის კáƒáƒœáƒ¤áƒ˜áƒ’ურáƒáƒªáƒ˜áƒ˜áƒ¡ ფáƒáƒ˜áƒšáƒáƒ“ გáƒáƒ›áƒáƒ§áƒ”ნებáƒ" -#: elf/ldconfig.c:132 +#: elf/ldconfig.c:133 msgid "Manually link individual libraries." msgstr "ბიბლიáƒáƒ—ეკების სáƒáƒ—ითáƒáƒáƒ“ მიბმáƒ." -#: elf/ldconfig.c:133 +#: elf/ldconfig.c:134 msgid "FORMAT" msgstr "FORMAT" -#: elf/ldconfig.c:133 +#: elf/ldconfig.c:134 msgid "Format to use: new (default), old, or compat" msgstr "ფáƒáƒ მáƒáƒ¢áƒ˜áƒ¡ გáƒáƒ›áƒáƒ§áƒ”ნებáƒ: new (ნáƒáƒ’ულისხმები),old áƒáƒœ compat" -#: elf/ldconfig.c:134 +#: elf/ldconfig.c:135 msgid "Ignore auxiliary cache file" msgstr "ქეშის დáƒáƒ›áƒáƒ¢áƒ”ბითი ფáƒáƒ˜áƒšáƒ˜áƒ¡ იგნáƒáƒ ირებáƒ" -#: elf/ldconfig.c:276 +#: elf/ldconfig.c:277 #, c-format msgid "Path `%s' given more than once" msgstr "ბილიკი '%s' ერთზე მეტჯერáƒáƒ მითითებული" -#: elf/ldconfig.c:277 +#: elf/ldconfig.c:278 #, c-format msgid "(from %s:%d and %s:%d)\n" msgstr "(%s:%d-დáƒáƒœ დრ%s:%d-დáƒáƒœ)\n" -#: elf/ldconfig.c:309 elf/ldconfig.c:350 +#: elf/ldconfig.c:310 elf/ldconfig.c:351 #, c-format msgid "Could not form glibc-hwcaps path" msgstr "\"glibc-hwcaps\" -ის ბილიკის ჩáƒáƒ›áƒáƒ§áƒáƒšáƒ˜áƒ‘ებრშეუძლებელიáƒ" -#: elf/ldconfig.c:323 +#: elf/ldconfig.c:324 #, c-format msgid "Listing directory %s" msgstr "სáƒáƒ¥áƒáƒ¦áƒáƒšáƒ“ის ჩáƒáƒ›áƒáƒœáƒáƒ—ვáƒáƒšáƒ˜ %s" -#: elf/ldconfig.c:405 +#: elf/ldconfig.c:406 #, c-format msgid "Can't stat %s" msgstr "%s-ის stat-ის შეცდáƒáƒ›áƒ" -#: elf/ldconfig.c:486 +#: elf/ldconfig.c:487 #, c-format msgid "Can't stat %s\n" msgstr "%s-ის stat-ის შეცდáƒáƒ›áƒ\n" -#: elf/ldconfig.c:496 +#: elf/ldconfig.c:497 #, c-format msgid "%s is not a symbolic link\n" msgstr "%s სიმბáƒáƒšáƒ£áƒ ბმულს áƒáƒ წáƒáƒ მáƒáƒáƒ“გენს\n" -#: elf/ldconfig.c:515 +#: elf/ldconfig.c:516 #, c-format msgid "Can't unlink %s" msgstr "ბმულის მáƒáƒ®áƒ¡áƒœáƒ˜áƒ¡ შეცდáƒáƒ›áƒ: %s" -#: elf/ldconfig.c:521 +#: elf/ldconfig.c:522 #, c-format msgid "Can't link %s to %s" msgstr "%s-დáƒáƒœ %s-მდე ბმულის შექმნის შეცდáƒáƒ›áƒ" -#: elf/ldconfig.c:527 +#: elf/ldconfig.c:528 msgid " (changed)\n" msgstr " (შეცვლილიáƒ)\n" -#: elf/ldconfig.c:529 +#: elf/ldconfig.c:530 msgid " (SKIPPED)\n" msgstr " (გáƒáƒ›áƒáƒ¢áƒáƒ•áƒ”ბულიáƒ)\n" -#: elf/ldconfig.c:584 +#: elf/ldconfig.c:585 #, c-format msgid "Can't find %s" msgstr "%s-ის პáƒáƒ•áƒœáƒ შეუძლებელიáƒ" -#: elf/ldconfig.c:600 elf/ldconfig.c:770 elf/ldconfig.c:837 +#: elf/ldconfig.c:601 elf/ldconfig.c:760 elf/ldconfig.c:827 #, c-format msgid "Cannot lstat %s" msgstr "%s ის lstat-ის შეცდáƒáƒ›áƒ" -#: elf/ldconfig.c:711 +#: elf/ldconfig.c:701 #, c-format msgid " (from %s:%d)\n" msgstr " (%s:%d-დáƒáƒœ)\n" -#: elf/ldconfig.c:726 +#: elf/ldconfig.c:716 #, c-format msgid "Can't open directory %s" msgstr "სáƒáƒ¥áƒáƒ¦áƒáƒšáƒ“ის გáƒáƒ®áƒ¡áƒœáƒ˜áƒ¡ შეცდáƒáƒ›áƒ: %s" -#: elf/ldconfig.c:787 elf/ldconfig.c:825 elf/readlib.c:78 +#: elf/ldconfig.c:777 elf/ldconfig.c:815 elf/readlib.c:81 #, c-format msgid "Input file %s not found.\n" msgstr "შეყვáƒáƒœáƒ˜áƒ¡ ფáƒáƒ˜áƒšáƒ˜ %s ნáƒáƒžáƒáƒ•áƒœáƒ˜ áƒáƒ áƒáƒ.\n" -#: elf/ldconfig.c:794 +#: elf/ldconfig.c:784 #, c-format msgid "Cannot stat %s" msgstr "%s-ის stat-ის შეცდáƒáƒ›áƒ" -#: elf/ldconfig.c:913 +#: elf/ldconfig.c:903 #, c-format msgid "libc6 library %s in wrong directory" msgstr "libc6 ბიბლიáƒáƒ—ეკრáƒáƒ áƒáƒ¡áƒ¬áƒáƒ სáƒáƒ¥áƒáƒ¦áƒáƒšáƒ“ეშიáƒ: %s" -#: elf/ldconfig.c:1109 +#: elf/ldconfig.c:1099 #, c-format msgid "%s:%u: hwcap directive ignored" msgstr "%s:%u: hwcap დირექტივრიგნáƒáƒ ირებულიáƒ" -#: elf/ldconfig.c:1135 locale/programs/xasprintf.c:31 +#: elf/ldconfig.c:1125 locale/programs/xasprintf.c:31 #: locale/programs/xmalloc.c:63 malloc/obstack.c:416 malloc/obstack.c:418 #: posix/getconf.c:460 posix/getconf.c:699 #, c-format msgid "memory exhausted" msgstr "მეხსიერებრგáƒáƒ“áƒáƒ•áƒ¡áƒ”ბულიáƒ" -#: elf/ldconfig.c:1168 +#: elf/ldconfig.c:1158 #, c-format msgid "%s:%u: cannot read directory %s" msgstr "%s:%u: სáƒáƒ¥áƒáƒ¦áƒáƒšáƒ“ის წáƒáƒ™áƒ˜áƒ—ხვრშეუძლებელირ%s" -#: elf/ldconfig.c:1228 +#: elf/ldconfig.c:1218 #, c-format msgid "Can't chdir to /" msgstr "/-ზე chdir-ის შედáƒáƒ›áƒ" -#: elf/ldconfig.c:1269 +#: elf/ldconfig.c:1259 #, c-format msgid "Can't open cache file directory %s\n" msgstr "ქეშის ფáƒáƒ˜áƒšáƒ˜áƒ¡ სáƒáƒ¥áƒáƒ¦áƒáƒšáƒ“ის (%s) გáƒáƒ®áƒ¡áƒœáƒ˜áƒ¡ შეცდáƒáƒ›áƒ\n" @@ -1004,22 +1004,22 @@ msgstr "უცნáƒáƒ‘ი ELFCLASS ფáƒáƒ˜áƒšáƒ¨áƒ˜ %s.\n" msgid "more than one dynamic segment\n" msgstr "ერთზე მეტი დინáƒáƒ›áƒ˜áƒ™áƒ£áƒ ი სეგმენტი\n" -#: elf/readlib.c:84 +#: elf/readlib.c:87 #, c-format msgid "Cannot fstat file %s.\n" msgstr "ფáƒáƒ˜áƒšáƒ˜áƒ¡ fstat() შეუძლებელიáƒ: %s.\n" -#: elf/readlib.c:95 +#: elf/readlib.c:98 #, c-format msgid "File %s is empty, not checked." msgstr "ფáƒáƒ˜áƒšáƒ˜ ცáƒáƒ იელიáƒ, áƒáƒ შემáƒáƒ¬áƒ›áƒ”ბულáƒ: %s." -#: elf/readlib.c:101 +#: elf/readlib.c:104 #, c-format msgid "File %s is too small, not checked." msgstr "ფáƒáƒ˜áƒšáƒ˜ ძáƒáƒšáƒ˜áƒáƒœ პáƒáƒ¢áƒáƒ áƒáƒ, áƒáƒ შემáƒáƒ¬áƒ›áƒ”ბულáƒ: %s." -#: elf/readlib.c:111 +#: elf/readlib.c:114 #, c-format msgid "Cannot mmap file %s.\n" msgstr "ფáƒáƒ˜áƒšáƒ˜áƒ¡ (%s) mmap-ის შეცდáƒáƒ›áƒ.\n" diff --git a/po/ko.po b/po/ko.po index 050ffcf1c0..a8196e3510 100644 --- a/po/ko.po +++ b/po/ko.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: GNU libc 2.39.9000\n" -"POT-Creation-Date: 2024-06-19 22:30+0200\n" +"POT-Creation-Date: 2024-07-21 00:32+0200\n" "PO-Revision-Date: 2024-06-22 21:30+0900\n" "Last-Translator: Changwoo Ryu <cwryu@debian.org>\n" "Language-Team: Korean <translation-team-ko@googlegroups.com>\n" @@ -147,7 +147,7 @@ msgstr "" "-o <ì¶œë ¥-파ì¼> [<ìž…ë ¥-파ì¼>]...\n" "[<ì¶œë ¥-파ì¼> [<ìž…ë ¥-파ì¼>]...]" -#: catgets/gencat.c:230 debug/pcprofiledump.c:208 elf/ldconfig.c:216 +#: catgets/gencat.c:230 debug/pcprofiledump.c:208 elf/ldconfig.c:217 #: elf/pldd.c:246 elf/sln.c:77 elf/sprof.c:371 iconv/iconv_prog.c:387 #: iconv/iconvconfig.c:380 locale/programs/locale.c:275 #: locale/programs/localedef.c:437 login/programs/pt_chown.c:88 @@ -162,7 +162,7 @@ msgstr "" "%s.\n" #: catgets/gencat.c:246 debug/pcprofiledump.c:224 debug/xtrace.sh:63 -#: elf/ldconfig.c:232 elf/ldd.bash.in:38 elf/pldd.c:262 elf/sotruss.sh:75 +#: elf/ldconfig.c:233 elf/ldd.bash.in:38 elf/pldd.c:262 elf/sotruss.sh:75 #: elf/sprof.c:388 iconv/iconv_prog.c:404 iconv/iconvconfig.c:397 #: locale/programs/locale.c:292 locale/programs/localedef.c:459 #: login/programs/pt_chown.c:62 malloc/memusage.sh:70 malloc/memusagestat.c:582 @@ -178,7 +178,7 @@ msgstr "" "ì´ë‚˜ íŠ¹ì • 목ì ì— ëŒ€í•œ ì í•©ì„±ì„ ë¹„ë¡¯í•˜ì—¬ ì–´ë– í•œ ë³´ì¦ë„ 하지 않습니다.\n" #: catgets/gencat.c:251 debug/pcprofiledump.c:229 debug/xtrace.sh:67 -#: elf/ldconfig.c:237 elf/pldd.c:267 elf/sprof.c:394 iconv/iconv_prog.c:409 +#: elf/ldconfig.c:238 elf/pldd.c:267 elf/sprof.c:394 iconv/iconv_prog.c:409 #: iconv/iconvconfig.c:402 locale/programs/locale.c:297 #: locale/programs/localedef.c:464 malloc/memusage.sh:74 #: malloc/memusagestat.c:587 nscd/nscd.c:526 nss/getent.c:97 nss/makedb.c:392 @@ -393,7 +393,7 @@ msgstr "ìºì‹œ 파ì¼ì˜ 엔디안 ê°’ì´ ìž˜ëª»ë˜ì—ˆìŠµë‹ˆë‹¤.\n" msgid "Cache generated by: " msgstr "ìºì‹œ ìƒì„±: " -#: elf/cache.c:296 elf/ldconfig.c:1249 +#: elf/cache.c:296 elf/ldconfig.c:1239 #, c-format msgid "Can't open cache file %s\n" msgstr "ìºì‹œ íŒŒì¼ `%s'ì„(를) ì—´ 수 없습니다\n" @@ -710,7 +710,7 @@ msgstr "리로케ì´ì…˜ ë’¤ì— ì¶”ê°€ë¡œ 메모리 보호를 ì ìš©í• ìˆ˜ ì—†ìŠ msgid "RTLD_NEXT used in code not dynamically loaded" msgstr "ë™ì 으로 ì 재하지 ì•Šì€ ì½”ë“œì— RTLD_NEXT를 사용함" -#: elf/dl-tls.c:1059 +#: elf/dl-tls.c:1136 msgid "cannot create TLS data structures" msgstr "TLS ë°ì´í„° 구조를 만들 수 없습니다" @@ -726,216 +726,216 @@ msgstr "ë²„ì „ 참조 í…Œì´ë¸”ì„ í• ë‹¹í• ìˆ˜ 없습니다" msgid "DT_RELR without GLIBC_ABI_DT_RELR dependency" msgstr "GLIBC_ABI_DT_RELR ì˜ì¡´ì„± ì—†ì´ DT_RELR 있습니다" -#: elf/ldconfig.c:124 +#: elf/ldconfig.c:125 msgid "Print cache" msgstr "ìºì‹œ 표시" -#: elf/ldconfig.c:125 +#: elf/ldconfig.c:126 msgid "Generate verbose messages" msgstr "ë” ë§Žì€ ë©”ì‹œì§€ 표시" -#: elf/ldconfig.c:126 +#: elf/ldconfig.c:127 msgid "Don't build cache" msgstr "ìºì‹œë¥¼ 만들지 ì•ŠìŒ" -#: elf/ldconfig.c:127 +#: elf/ldconfig.c:128 msgid "Don't update symbolic links" msgstr "ì‹¬ë³¼ë¦ ë§í¬ë¥¼ ì—…ë°ì´íŠ¸í•˜ì§€ 않습니다" -#: elf/ldconfig.c:128 +#: elf/ldconfig.c:129 msgid "Change to and use ROOT as root directory" msgstr "<루트>ë¡œ ì´ë™í•œ ë‹¤ìŒ <루트>를 루트 ë””ë ‰í„°ë¦¬ë¡œ 사용합니다" -#: elf/ldconfig.c:128 +#: elf/ldconfig.c:129 msgid "ROOT" msgstr "<루트>" -#: elf/ldconfig.c:129 +#: elf/ldconfig.c:130 msgid "CACHE" msgstr "<ìºì‹œ>" -#: elf/ldconfig.c:129 +#: elf/ldconfig.c:130 msgid "Use CACHE as cache file" msgstr "ìºì‹œ 파ì¼ë¡œ <ìºì‹œ>를 사용합니다" -#: elf/ldconfig.c:130 +#: elf/ldconfig.c:131 msgid "CONF" msgstr "<ì„¤ì •>" -#: elf/ldconfig.c:130 +#: elf/ldconfig.c:131 msgid "Use CONF as configuration file" msgstr "ì„¤ì • 파ì¼ë¡œ <ì„¤ì •>ì„ ì‚¬ìš©í•©ë‹ˆë‹¤" -#: elf/ldconfig.c:131 +#: elf/ldconfig.c:132 msgid "Only process directories specified on the command line. Don't build cache." msgstr "ëª…ë ¹í–‰ì— ì§€ì •í•œ ë””ë ‰í„°ë¦¬ë§Œ 처리합니다. ìºì‹œë¥¼ 만들지 않습니다." -#: elf/ldconfig.c:132 +#: elf/ldconfig.c:133 msgid "Manually link individual libraries." msgstr "수ë™ìœ¼ë¡œ ê°ê°ì˜ ë¼ì´ë¸ŒëŸ¬ë¦¬ë¥¼ ë§í¬í•˜ì‹ì‹œì˜¤." -#: elf/ldconfig.c:133 +#: elf/ldconfig.c:134 msgid "FORMAT" msgstr "<형ì‹>" -#: elf/ldconfig.c:133 +#: elf/ldconfig.c:134 msgid "Format to use: new (default), old, or compat" msgstr "ì‚¬ìš©í• ìˆ˜ 있는 형ì‹: new (기본값), old, compat" -#: elf/ldconfig.c:134 +#: elf/ldconfig.c:135 msgid "Ignore auxiliary cache file" msgstr "ë³´ì¡° ìºì‹œ íŒŒì¼ ë¬´ì‹œ" -#: elf/ldconfig.c:142 +#: elf/ldconfig.c:143 msgid "Configure Dynamic Linker Run Time Bindings." msgstr "ë™ì ë§ì»¤ì˜ 런타임 ë°”ì¸ë”©ì„ ì„¤ì •í•©ë‹ˆë‹¤." -#: elf/ldconfig.c:276 +#: elf/ldconfig.c:277 #, c-format msgid "Path `%s' given more than once" msgstr "`%s' 경로가 여러번 주어졌습니다" -#: elf/ldconfig.c:277 +#: elf/ldconfig.c:278 #, c-format msgid "(from %s:%d and %s:%d)\n" msgstr "(%s:%d ë° %s:%dì—ì„œ)\n" -#: elf/ldconfig.c:309 elf/ldconfig.c:350 +#: elf/ldconfig.c:310 elf/ldconfig.c:351 #, c-format msgid "Could not form glibc-hwcaps path" msgstr "glibc-hwcaps 경로를 êµ¬ì„±í• ìˆ˜ 없습니다" -#: elf/ldconfig.c:323 +#: elf/ldconfig.c:324 #, c-format msgid "Listing directory %s" msgstr "%s ë””ë ‰í„°ë¦¬ ëª©ë¡ ë³´ê¸°" -#: elf/ldconfig.c:405 +#: elf/ldconfig.c:406 #, c-format msgid "Can't stat %s" msgstr "%sì— stat()í• ìˆ˜ 없습니다" -#: elf/ldconfig.c:486 +#: elf/ldconfig.c:487 #, c-format msgid "Can't stat %s\n" msgstr "%sì— stat()í• ìˆ˜ 없습니다\n" -#: elf/ldconfig.c:496 +#: elf/ldconfig.c:497 #, c-format msgid "%s is not a symbolic link\n" msgstr "%sì€(는) ì‹¬ë³¼ë¦ ë§í¬ê°€ 아닙니다\n" -#: elf/ldconfig.c:515 +#: elf/ldconfig.c:516 #, c-format msgid "Can't unlink %s" msgstr "%sì„(를) 지울 수 없습니다" -#: elf/ldconfig.c:521 +#: elf/ldconfig.c:522 #, c-format msgid "Can't link %s to %s" msgstr "%sì„(를) %s(으)ë¡œ ë§í¬í• 수 없습니다" -#: elf/ldconfig.c:527 +#: elf/ldconfig.c:528 msgid " (changed)\n" msgstr " (바뀜)\n" -#: elf/ldconfig.c:529 +#: elf/ldconfig.c:530 msgid " (SKIPPED)\n" msgstr " (지나침)\n" -#: elf/ldconfig.c:584 +#: elf/ldconfig.c:585 #, c-format msgid "Can't find %s" msgstr "%sì„(를) ì°¾ì„ ìˆ˜ 없습니다" -#: elf/ldconfig.c:600 elf/ldconfig.c:770 elf/ldconfig.c:837 +#: elf/ldconfig.c:601 elf/ldconfig.c:760 elf/ldconfig.c:827 #, c-format msgid "Cannot lstat %s" msgstr "%sì— lstat()í• ìˆ˜ 없습니다" -#: elf/ldconfig.c:606 +#: elf/ldconfig.c:607 #, c-format msgid "Ignored file %s since it is not a regular file." msgstr "ì¼ë°˜ 파ì¼ì´ 아니므로 %s 파ì¼ì„ 무시합니다." -#: elf/ldconfig.c:614 +#: elf/ldconfig.c:615 #, c-format msgid "No link created since soname could not be found for %s" msgstr "%sì— ëŒ€í•œ sonameì„ ì°¾ì„ ìˆ˜ 없으므로 ë§í¬ë¥¼ 만들지 않습니다" -#: elf/ldconfig.c:711 +#: elf/ldconfig.c:701 #, c-format msgid " (from %s:%d)\n" msgstr " (%s:%dì—ì„œ)\n" -#: elf/ldconfig.c:726 +#: elf/ldconfig.c:716 #, c-format msgid "Can't open directory %s" msgstr "ë””ë ‰í„°ë¦¬ %sì„(를) ì—´ 수 없습니다" -#: elf/ldconfig.c:753 elf/ldconfig.c:758 +#: elf/ldconfig.c:743 elf/ldconfig.c:748 #, c-format msgid "Could not form library path" msgstr "ë¼ì´ë¸ŒëŸ¬ë¦¬ 경로를 êµ¬ì„±í• ìˆ˜ 없습니다" -#: elf/ldconfig.c:787 elf/ldconfig.c:825 elf/readlib.c:78 +#: elf/ldconfig.c:777 elf/ldconfig.c:815 elf/readlib.c:81 #, c-format msgid "Input file %s not found.\n" msgstr "ìž…ë ¥ íŒŒì¼ %sì„(를) 찾지 못했습니다.\n" -#: elf/ldconfig.c:794 +#: elf/ldconfig.c:784 #, c-format msgid "Cannot stat %s" msgstr "%sì— stat()í• ìˆ˜ 없습니다" -#: elf/ldconfig.c:913 +#: elf/ldconfig.c:903 #, c-format msgid "libc6 library %s in wrong directory" msgstr "libc6 library %sì´(ê°€) ìž˜ëª»ëœ ë””ë ‰í„°ë¦¬ì— ìžˆìŠµë‹ˆë‹¤" -#: elf/ldconfig.c:932 +#: elf/ldconfig.c:922 #, c-format msgid "libraries %s and %s in directory %s have same soname but different type." msgstr "ë””ë ‰í„°ë¦¬ %sì˜ ë¼ì´ë¸ŒëŸ¬ë¦¬ %sê³¼(와) %sì´(ê°€) ê°™ì€ sonameì„ ê°€ì§€ê³ ìžˆì§€ë§Œ íƒ€ìž…ì´ ë‹¤ë¦…ë‹ˆë‹¤." -#: elf/ldconfig.c:1061 +#: elf/ldconfig.c:1051 #, c-format msgid "Warning: ignoring configuration file that cannot be opened: %s" msgstr "ê²½ê³ : ì—´ 수 없는 ì„¤ì • 파ì¼ì„ 무시합니다: %s" -#: elf/ldconfig.c:1109 +#: elf/ldconfig.c:1099 #, c-format msgid "%s:%u: hwcap directive ignored" msgstr "%s:%u: hwcap 지시어 무시합니다" -#: elf/ldconfig.c:1128 +#: elf/ldconfig.c:1118 #, c-format msgid "need absolute file name for configuration file when using -r" msgstr "-r ì˜µì…˜ì„ ì‚¬ìš©í• ê²½ìš° ì„¤ì • 파ì¼ì˜ ì ˆëŒ€ íŒŒì¼ ì´ë¦„ì´ í•„ìš”í•©ë‹ˆë‹¤" -#: elf/ldconfig.c:1135 locale/programs/xasprintf.c:31 +#: elf/ldconfig.c:1125 locale/programs/xasprintf.c:31 #: locale/programs/xmalloc.c:63 malloc/obstack.c:416 malloc/obstack.c:418 #: posix/getconf.c:460 posix/getconf.c:699 #, c-format msgid "memory exhausted" msgstr "메모리가 바닥남" -#: elf/ldconfig.c:1168 +#: elf/ldconfig.c:1158 #, c-format msgid "%s:%u: cannot read directory %s" msgstr "%s:%u: %s ë””ë ‰í„°ë¦¬ë¥¼ ì½ì„ 수 없습니다" -#: elf/ldconfig.c:1206 +#: elf/ldconfig.c:1196 #, c-format msgid "relative path `%s' used to build cache" msgstr "ìºì‹œë¥¼ ë§Œë“œëŠ”ë° ìƒëŒ€ ê²½ë¡œì¸ `%s' 경로를 사용했습니다" -#: elf/ldconfig.c:1228 +#: elf/ldconfig.c:1218 #, c-format msgid "Can't chdir to /" msgstr "/ë¡œ ë””ë ‰í„°ë¦¬ë¥¼ ì´ë™í• 수 없습니다" -#: elf/ldconfig.c:1269 +#: elf/ldconfig.c:1259 #, c-format msgid "Can't open cache file directory %s\n" msgstr "ìºì‹œ íŒŒì¼ ë””ë ‰í„°ë¦¬ `%s'ì„(를) ì—´ 수 없습니다\n" @@ -1133,27 +1133,27 @@ msgstr "%sì€(는) ë™ì 오브ì 트 파ì¼ì´ 아닙니다(타입: %d).\n" msgid "more than one dynamic segment\n" msgstr "ì—¬ëŸ¬ê°œì˜ ë™ì 세그먼트\n" -#: elf/readlib.c:84 +#: elf/readlib.c:87 #, c-format msgid "Cannot fstat file %s.\n" msgstr "`%s'파ì¼ì— fstat()ì„ í• ìˆ˜ 없습니다.\n" -#: elf/readlib.c:95 +#: elf/readlib.c:98 #, c-format msgid "File %s is empty, not checked." msgstr "%s 파ì¼ì´ 빈 파ì¼ì´ë¯€ë¡œ 검사하지 않습니다." -#: elf/readlib.c:101 +#: elf/readlib.c:104 #, c-format msgid "File %s is too small, not checked." msgstr "%s 파ì¼ì´ 너무 ìž‘ì•„ì„œ 검사하지 않습니다." -#: elf/readlib.c:111 +#: elf/readlib.c:114 #, c-format msgid "Cannot mmap file %s.\n" msgstr "íŒŒì¼ `%s'ì— mmap()í• ìˆ˜ 없습니다.\n" -#: elf/readlib.c:149 +#: elf/readlib.c:152 #, c-format msgid "%s is not an ELF file - it has the wrong magic bytes at the start.\n" msgstr "%sì€(는) ELF 파ì¼ì´ 아닙니다 - ì‹œìž‘ë¶€ë¶„ì˜ ë§¤ì§ ë°”ì´íŠ¸ê°€ í‹€ë ¸ìŠµë‹ˆë‹¤.\n" diff --git a/po/libc.pot b/po/libc.pot index 593ea70600..aed617834f 100644 --- a/po/libc.pot +++ b/po/libc.pot @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: libc 2.39.9000\n" -"POT-Creation-Date: 2024-06-19 22:30+0200\n" +"POT-Creation-Date: 2024-07-21 00:32+0200\n" "PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n" "Last-Translator: FULL NAME <EMAIL@ADDRESS>\n" "Language-Team: LANGUAGE <LL@li.org>\n" @@ -139,7 +139,7 @@ msgid "" "[OUTPUT-FILE [INPUT-FILE]...]" msgstr "" -#: catgets/gencat.c:230 debug/pcprofiledump.c:208 elf/ldconfig.c:216 +#: catgets/gencat.c:230 debug/pcprofiledump.c:208 elf/ldconfig.c:217 #: elf/pldd.c:246 elf/sln.c:77 elf/sprof.c:371 iconv/iconv_prog.c:387 #: iconv/iconvconfig.c:380 locale/programs/locale.c:275 #: locale/programs/localedef.c:437 login/programs/pt_chown.c:88 @@ -152,7 +152,7 @@ msgid "" msgstr "" #: catgets/gencat.c:246 debug/pcprofiledump.c:224 debug/xtrace.sh:63 -#: elf/ldconfig.c:232 elf/ldd.bash.in:38 elf/pldd.c:262 elf/sotruss.sh:75 +#: elf/ldconfig.c:233 elf/ldd.bash.in:38 elf/pldd.c:262 elf/sotruss.sh:75 #: elf/sprof.c:388 iconv/iconv_prog.c:404 iconv/iconvconfig.c:397 #: locale/programs/locale.c:292 locale/programs/localedef.c:459 #: login/programs/pt_chown.c:62 malloc/memusage.sh:70 malloc/memusagestat.c:582 @@ -165,7 +165,7 @@ msgid "" msgstr "" #: catgets/gencat.c:251 debug/pcprofiledump.c:229 debug/xtrace.sh:67 -#: elf/ldconfig.c:237 elf/pldd.c:267 elf/sprof.c:394 iconv/iconv_prog.c:409 +#: elf/ldconfig.c:238 elf/pldd.c:267 elf/sprof.c:394 iconv/iconv_prog.c:409 #: iconv/iconvconfig.c:402 locale/programs/locale.c:297 #: locale/programs/localedef.c:464 malloc/memusage.sh:74 #: malloc/memusagestat.c:587 nscd/nscd.c:526 nss/getent.c:97 nss/makedb.c:392 @@ -372,7 +372,7 @@ msgstr "" msgid "Cache generated by: " msgstr "" -#: elf/cache.c:296 elf/ldconfig.c:1249 +#: elf/cache.c:296 elf/ldconfig.c:1239 #, c-format msgid "Can't open cache file %s\n" msgstr "" @@ -685,7 +685,7 @@ msgstr "" msgid "RTLD_NEXT used in code not dynamically loaded" msgstr "" -#: elf/dl-tls.c:1059 +#: elf/dl-tls.c:1136 msgid "cannot create TLS data structures" msgstr "" @@ -701,218 +701,218 @@ msgstr "" msgid "DT_RELR without GLIBC_ABI_DT_RELR dependency" msgstr "" -#: elf/ldconfig.c:124 +#: elf/ldconfig.c:125 msgid "Print cache" msgstr "" -#: elf/ldconfig.c:125 +#: elf/ldconfig.c:126 msgid "Generate verbose messages" msgstr "" -#: elf/ldconfig.c:126 +#: elf/ldconfig.c:127 msgid "Don't build cache" msgstr "" -#: elf/ldconfig.c:127 +#: elf/ldconfig.c:128 msgid "Don't update symbolic links" msgstr "" -#: elf/ldconfig.c:128 +#: elf/ldconfig.c:129 msgid "Change to and use ROOT as root directory" msgstr "" -#: elf/ldconfig.c:128 +#: elf/ldconfig.c:129 msgid "ROOT" msgstr "" -#: elf/ldconfig.c:129 +#: elf/ldconfig.c:130 msgid "CACHE" msgstr "" -#: elf/ldconfig.c:129 +#: elf/ldconfig.c:130 msgid "Use CACHE as cache file" msgstr "" -#: elf/ldconfig.c:130 +#: elf/ldconfig.c:131 msgid "CONF" msgstr "" -#: elf/ldconfig.c:130 +#: elf/ldconfig.c:131 msgid "Use CONF as configuration file" msgstr "" -#: elf/ldconfig.c:131 +#: elf/ldconfig.c:132 msgid "" "Only process directories specified on the command line. Don't build cache." msgstr "" -#: elf/ldconfig.c:132 +#: elf/ldconfig.c:133 msgid "Manually link individual libraries." msgstr "" -#: elf/ldconfig.c:133 +#: elf/ldconfig.c:134 msgid "FORMAT" msgstr "" -#: elf/ldconfig.c:133 +#: elf/ldconfig.c:134 msgid "Format to use: new (default), old, or compat" msgstr "" -#: elf/ldconfig.c:134 +#: elf/ldconfig.c:135 msgid "Ignore auxiliary cache file" msgstr "" -#: elf/ldconfig.c:142 +#: elf/ldconfig.c:143 msgid "Configure Dynamic Linker Run Time Bindings." msgstr "" -#: elf/ldconfig.c:276 +#: elf/ldconfig.c:277 #, c-format msgid "Path `%s' given more than once" msgstr "" -#: elf/ldconfig.c:277 +#: elf/ldconfig.c:278 #, c-format msgid "(from %s:%d and %s:%d)\n" msgstr "" -#: elf/ldconfig.c:309 elf/ldconfig.c:350 +#: elf/ldconfig.c:310 elf/ldconfig.c:351 #, c-format msgid "Could not form glibc-hwcaps path" msgstr "" -#: elf/ldconfig.c:323 +#: elf/ldconfig.c:324 #, c-format msgid "Listing directory %s" msgstr "" -#: elf/ldconfig.c:405 +#: elf/ldconfig.c:406 #, c-format msgid "Can't stat %s" msgstr "" -#: elf/ldconfig.c:486 +#: elf/ldconfig.c:487 #, c-format msgid "Can't stat %s\n" msgstr "" -#: elf/ldconfig.c:496 +#: elf/ldconfig.c:497 #, c-format msgid "%s is not a symbolic link\n" msgstr "" -#: elf/ldconfig.c:515 +#: elf/ldconfig.c:516 #, c-format msgid "Can't unlink %s" msgstr "" -#: elf/ldconfig.c:521 +#: elf/ldconfig.c:522 #, c-format msgid "Can't link %s to %s" msgstr "" -#: elf/ldconfig.c:527 +#: elf/ldconfig.c:528 msgid " (changed)\n" msgstr "" -#: elf/ldconfig.c:529 +#: elf/ldconfig.c:530 msgid " (SKIPPED)\n" msgstr "" -#: elf/ldconfig.c:584 +#: elf/ldconfig.c:585 #, c-format msgid "Can't find %s" msgstr "" -#: elf/ldconfig.c:600 elf/ldconfig.c:770 elf/ldconfig.c:837 +#: elf/ldconfig.c:601 elf/ldconfig.c:760 elf/ldconfig.c:827 #, c-format msgid "Cannot lstat %s" msgstr "" -#: elf/ldconfig.c:606 +#: elf/ldconfig.c:607 #, c-format msgid "Ignored file %s since it is not a regular file." msgstr "" -#: elf/ldconfig.c:614 +#: elf/ldconfig.c:615 #, c-format msgid "No link created since soname could not be found for %s" msgstr "" -#: elf/ldconfig.c:711 +#: elf/ldconfig.c:701 #, c-format msgid " (from %s:%d)\n" msgstr "" -#: elf/ldconfig.c:726 +#: elf/ldconfig.c:716 #, c-format msgid "Can't open directory %s" msgstr "" -#: elf/ldconfig.c:753 elf/ldconfig.c:758 +#: elf/ldconfig.c:743 elf/ldconfig.c:748 #, c-format msgid "Could not form library path" msgstr "" -#: elf/ldconfig.c:787 elf/ldconfig.c:825 elf/readlib.c:78 +#: elf/ldconfig.c:777 elf/ldconfig.c:815 elf/readlib.c:81 #, c-format msgid "Input file %s not found.\n" msgstr "" -#: elf/ldconfig.c:794 +#: elf/ldconfig.c:784 #, c-format msgid "Cannot stat %s" msgstr "" -#: elf/ldconfig.c:913 +#: elf/ldconfig.c:903 #, c-format msgid "libc6 library %s in wrong directory" msgstr "" -#: elf/ldconfig.c:932 +#: elf/ldconfig.c:922 #, c-format msgid "" "libraries %s and %s in directory %s have same soname but different type." msgstr "" -#: elf/ldconfig.c:1061 +#: elf/ldconfig.c:1051 #, c-format msgid "Warning: ignoring configuration file that cannot be opened: %s" msgstr "" -#: elf/ldconfig.c:1109 +#: elf/ldconfig.c:1099 #, c-format msgid "%s:%u: hwcap directive ignored" msgstr "" -#: elf/ldconfig.c:1128 +#: elf/ldconfig.c:1118 #, c-format msgid "need absolute file name for configuration file when using -r" msgstr "" -#: elf/ldconfig.c:1135 locale/programs/xasprintf.c:31 +#: elf/ldconfig.c:1125 locale/programs/xasprintf.c:31 #: locale/programs/xmalloc.c:63 malloc/obstack.c:416 malloc/obstack.c:418 #: posix/getconf.c:460 posix/getconf.c:699 #, c-format msgid "memory exhausted" msgstr "" -#: elf/ldconfig.c:1168 +#: elf/ldconfig.c:1158 #, c-format msgid "%s:%u: cannot read directory %s" msgstr "" -#: elf/ldconfig.c:1206 +#: elf/ldconfig.c:1196 #, c-format msgid "relative path `%s' used to build cache" msgstr "" -#: elf/ldconfig.c:1228 +#: elf/ldconfig.c:1218 #, c-format msgid "Can't chdir to /" msgstr "" -#: elf/ldconfig.c:1269 +#: elf/ldconfig.c:1259 #, c-format msgid "Can't open cache file directory %s\n" msgstr "" @@ -1103,27 +1103,27 @@ msgstr "" msgid "more than one dynamic segment\n" msgstr "" -#: elf/readlib.c:84 +#: elf/readlib.c:87 #, c-format msgid "Cannot fstat file %s.\n" msgstr "" -#: elf/readlib.c:95 +#: elf/readlib.c:98 #, c-format msgid "File %s is empty, not checked." msgstr "" -#: elf/readlib.c:101 +#: elf/readlib.c:104 #, c-format msgid "File %s is too small, not checked." msgstr "" -#: elf/readlib.c:111 +#: elf/readlib.c:114 #, c-format msgid "Cannot mmap file %s.\n" msgstr "" -#: elf/readlib.c:149 +#: elf/readlib.c:152 #, c-format msgid "%s is not an ELF file - it has the wrong magic bytes at the start.\n" msgstr "" diff --git a/po/lt.po b/po/lt.po index cbde6906b2..18279a6c9c 100644 --- a/po/lt.po +++ b/po/lt.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: libc-2.7\n" -"POT-Creation-Date: 2024-06-19 22:30+0200\n" +"POT-Creation-Date: 2024-07-21 00:32+0200\n" "PO-Revision-Date: 2009-02-12 05:24+0200\n" "Last-Translator: Gintautas Miliauskas <gintas@akl.lt>\n" "Language-Team: Lithuanian <komp_lt@konferencijos.lt>\n" @@ -114,7 +114,7 @@ msgstr "" "[IÅ VEDIMO-FAILAS [DUOMENŲ-FAILAS]...]" #: catgets/gencat.c:251 debug/pcprofiledump.c:229 debug/xtrace.sh:67 -#: elf/ldconfig.c:237 elf/pldd.c:267 elf/sprof.c:394 iconv/iconv_prog.c:409 +#: elf/ldconfig.c:238 elf/pldd.c:267 elf/sprof.c:394 iconv/iconv_prog.c:409 #: iconv/iconvconfig.c:402 locale/programs/locale.c:297 #: locale/programs/localedef.c:464 malloc/memusage.sh:74 #: malloc/memusagestat.c:587 nscd/nscd.c:526 nss/getent.c:97 nss/makedb.c:392 @@ -204,7 +204,7 @@ msgstr "nepalaikoma dlinfo užklausa" msgid "invalid mode" msgstr "netaisyklinga veiksena" -#: elf/cache.c:296 elf/ldconfig.c:1249 +#: elf/cache.c:296 elf/ldconfig.c:1239 #, c-format msgid "Can't open cache file %s\n" msgstr "Nepavyko atverti podÄ—lio failo %s\n" @@ -320,123 +320,123 @@ msgstr "TLS kartų skaitiklis persivertÄ—! PraÅ¡ytume apie tai praneÅ¡ti." msgid "invalid mode for dlopen()" msgstr "netaisyklinga veiksena dlopen()" -#: elf/dl-tls.c:1059 +#: elf/dl-tls.c:1136 msgid "cannot create TLS data structures" msgstr "nepavyko sukurti TLS duomenų struktÅ«rų" -#: elf/ldconfig.c:124 +#: elf/ldconfig.c:125 msgid "Print cache" msgstr "Spausdinti podÄ—lį" -#: elf/ldconfig.c:125 +#: elf/ldconfig.c:126 msgid "Generate verbose messages" msgstr "Generuoti iÅ¡samius praneÅ¡imus" -#: elf/ldconfig.c:126 +#: elf/ldconfig.c:127 msgid "Don't build cache" msgstr "Nekurti podÄ—lio" -#: elf/ldconfig.c:128 +#: elf/ldconfig.c:129 msgid "Change to and use ROOT as root directory" msgstr "Naudoti Å AKNÄ® kaip Å¡akninį aplankÄ…" -#: elf/ldconfig.c:128 +#: elf/ldconfig.c:129 msgid "ROOT" msgstr "Å AKNIS" -#: elf/ldconfig.c:129 +#: elf/ldconfig.c:130 msgid "CACHE" msgstr "PODÄ–LIS" -#: elf/ldconfig.c:129 +#: elf/ldconfig.c:130 msgid "Use CACHE as cache file" msgstr "Naudoti PODÄ–LÄ® kaip podÄ—lio failÄ…" -#: elf/ldconfig.c:130 +#: elf/ldconfig.c:131 msgid "CONF" msgstr "KONF" -#: elf/ldconfig.c:130 +#: elf/ldconfig.c:131 msgid "Use CONF as configuration file" msgstr "Naudoti KONF kaip konfigÅ«racijos failÄ…" -#: elf/ldconfig.c:131 +#: elf/ldconfig.c:132 msgid "Only process directories specified on the command line. Don't build cache." msgstr "Apdoroti tik aplankus, nurodytus komandų eilutÄ—je. Nekurti podÄ—lio." -#: elf/ldconfig.c:132 +#: elf/ldconfig.c:133 msgid "Manually link individual libraries." msgstr "Rankiniu bÅ«du susaistyti (link) atskiras bibliotekas." -#: elf/ldconfig.c:133 +#: elf/ldconfig.c:134 msgid "FORMAT" msgstr "FORMATAS" -#: elf/ldconfig.c:134 +#: elf/ldconfig.c:135 msgid "Ignore auxiliary cache file" msgstr "Ignoruoti pagalbinį podÄ—lio failÄ…" -#: elf/ldconfig.c:276 +#: elf/ldconfig.c:277 #, c-format msgid "Path `%s' given more than once" msgstr "Kelias „%s“ nurodytas daugiau negu vienÄ… kartÄ…" -#: elf/ldconfig.c:496 +#: elf/ldconfig.c:497 #, c-format msgid "%s is not a symbolic link\n" msgstr "%s nÄ—ra simbolinÄ— nuoroda\n" -#: elf/ldconfig.c:521 +#: elf/ldconfig.c:522 #, c-format msgid "Can't link %s to %s" msgstr "Nepavyko susaistyti (link) %s su %s" -#: elf/ldconfig.c:527 +#: elf/ldconfig.c:528 msgid " (changed)\n" msgstr " (pakeista)\n" -#: elf/ldconfig.c:529 +#: elf/ldconfig.c:530 msgid " (SKIPPED)\n" msgstr " (PRALEISTA)\n" -#: elf/ldconfig.c:584 +#: elf/ldconfig.c:585 #, c-format msgid "Can't find %s" msgstr "Nepavyko rasti %s" -#: elf/ldconfig.c:606 +#: elf/ldconfig.c:607 #, c-format msgid "Ignored file %s since it is not a regular file." msgstr "Failas %s praleistas, nes tai nÄ—ra paprastas failas" -#: elf/ldconfig.c:726 +#: elf/ldconfig.c:716 #, c-format msgid "Can't open directory %s" msgstr "Nepavyko atverti aplanko %s" -#: elf/ldconfig.c:787 elf/ldconfig.c:825 elf/readlib.c:78 +#: elf/ldconfig.c:777 elf/ldconfig.c:815 elf/readlib.c:81 #, c-format msgid "Input file %s not found.\n" msgstr "Ä®vedimo failas %s nerastas.\n" -#: elf/ldconfig.c:913 +#: elf/ldconfig.c:903 #, c-format msgid "libc6 library %s in wrong directory" msgstr "libc6 biblioteka %s ne tame aplanke" -#: elf/ldconfig.c:1135 locale/programs/xasprintf.c:31 +#: elf/ldconfig.c:1125 locale/programs/xasprintf.c:31 #: locale/programs/xmalloc.c:63 malloc/obstack.c:416 malloc/obstack.c:418 #: posix/getconf.c:460 posix/getconf.c:699 #, c-format msgid "memory exhausted" msgstr "baigÄ—si atmintis" -#: elf/ldconfig.c:1168 +#: elf/ldconfig.c:1158 #, c-format msgid "%s:%u: cannot read directory %s" msgstr "%s:%u: nepavyko atverti aplanko %s" -#: elf/ldconfig.c:1269 +#: elf/ldconfig.c:1259 #, c-format msgid "Can't open cache file directory %s\n" msgstr "Nepavyko atverti podÄ—lio failo aplanko %s\n" @@ -504,17 +504,17 @@ msgstr "Netaisyklinga ELFCLASS faile %s.\n" msgid "more than one dynamic segment\n" msgstr "daugiau negu vienas dinaminis segmentas\n" -#: elf/readlib.c:95 +#: elf/readlib.c:98 #, c-format msgid "File %s is empty, not checked." msgstr "Failas %s tuÅ¡Äias, todÄ—l netikrintas." -#: elf/readlib.c:101 +#: elf/readlib.c:104 #, c-format msgid "File %s is too small, not checked." msgstr "Failas %s per mažas, todÄ—l netikrintas." -#: elf/readlib.c:149 +#: elf/readlib.c:152 #, c-format msgid "%s is not an ELF file - it has the wrong magic bytes at the start.\n" msgstr "%s nÄ—ra ELF failas - magiÅ¡kieji baitai failo pradžioje neteisingi.\n" diff --git a/po/nb.po b/po/nb.po index f4d5890c7f..b46b1fbc81 100644 --- a/po/nb.po +++ b/po/nb.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: libc 2.3.2\n" -"POT-Creation-Date: 2024-06-19 22:30+0200\n" +"POT-Creation-Date: 2024-07-21 00:32+0200\n" "PO-Revision-Date: 2003-08-28 09:27+0100\n" "Last-Translator: Eivind Tagseth <eivindt@multinet.no>\n" "Language-Team: Norwegian <i18n-nb@lister.ping.uio.no>\n" @@ -114,7 +114,7 @@ msgstr "" "[UTFIL [INNFIL]...]" #: catgets/gencat.c:246 debug/pcprofiledump.c:224 debug/xtrace.sh:63 -#: elf/ldconfig.c:232 elf/ldd.bash.in:38 elf/pldd.c:262 elf/sotruss.sh:75 +#: elf/ldconfig.c:233 elf/ldd.bash.in:38 elf/pldd.c:262 elf/sotruss.sh:75 #: elf/sprof.c:388 iconv/iconv_prog.c:404 iconv/iconvconfig.c:397 #: locale/programs/locale.c:292 locale/programs/localedef.c:459 #: login/programs/pt_chown.c:62 malloc/memusage.sh:70 malloc/memusagestat.c:582 @@ -131,7 +131,7 @@ msgstr "" "TIL NOEN SPESIELL OPPGAVE.\n" #: catgets/gencat.c:251 debug/pcprofiledump.c:229 debug/xtrace.sh:67 -#: elf/ldconfig.c:237 elf/pldd.c:267 elf/sprof.c:394 iconv/iconv_prog.c:409 +#: elf/ldconfig.c:238 elf/pldd.c:267 elf/sprof.c:394 iconv/iconv_prog.c:409 #: iconv/iconvconfig.c:402 locale/programs/locale.c:297 #: locale/programs/localedef.c:464 malloc/memusage.sh:74 #: malloc/memusagestat.c:587 nscd/nscd.c:526 nss/getent.c:97 nss/makedb.c:392 @@ -206,7 +206,7 @@ msgstr "ugyldig modus for dlopen()" msgid "RTLD_NEXT used in code not dynamically loaded" msgstr "RTLD_NEXT brukt i kode som ikke er dynamisk lastet" -#: elf/ldconfig.c:1135 locale/programs/xasprintf.c:31 +#: elf/ldconfig.c:1125 locale/programs/xasprintf.c:31 #: locale/programs/xmalloc.c:63 malloc/obstack.c:416 malloc/obstack.c:418 #: posix/getconf.c:460 posix/getconf.c:699 #, c-format diff --git a/po/nl.po b/po/nl.po index 23b516d3f3..f64e6fc77e 100644 --- a/po/nl.po +++ b/po/nl.po @@ -13,7 +13,7 @@ msgid "" msgstr "" "Project-Id-Version: libc-2.37.9000\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-06-19 22:30+0200\n" +"POT-Creation-Date: 2024-07-21 00:32+0200\n" "PO-Revision-Date: 2023-07-24 09:34+0200\n" "Last-Translator: Benno Schulenberg <vertaling@coevern.nl>\n" "Language-Team: Dutch <vertaling@vrijschrift.org>\n" @@ -159,7 +159,7 @@ msgstr "" "-o UITVOERBESTAND [INVOERBESTAND...]\n" "[UITVOERBESTAND [INVOERBESTAND...]]" -#: catgets/gencat.c:230 debug/pcprofiledump.c:208 elf/ldconfig.c:216 +#: catgets/gencat.c:230 debug/pcprofiledump.c:208 elf/ldconfig.c:217 #: elf/pldd.c:246 elf/sln.c:77 elf/sprof.c:371 iconv/iconv_prog.c:387 #: iconv/iconvconfig.c:380 locale/programs/locale.c:275 #: locale/programs/localedef.c:437 login/programs/pt_chown.c:88 @@ -174,7 +174,7 @@ msgstr "" " %s.\n" #: catgets/gencat.c:246 debug/pcprofiledump.c:224 debug/xtrace.sh:63 -#: elf/ldconfig.c:232 elf/ldd.bash.in:38 elf/pldd.c:262 elf/sotruss.sh:75 +#: elf/ldconfig.c:233 elf/ldd.bash.in:38 elf/pldd.c:262 elf/sotruss.sh:75 #: elf/sprof.c:388 iconv/iconv_prog.c:404 iconv/iconvconfig.c:397 #: locale/programs/locale.c:292 locale/programs/localedef.c:459 #: login/programs/pt_chown.c:62 malloc/memusage.sh:70 malloc/memusagestat.c:582 @@ -191,7 +191,7 @@ msgstr "" "VOOR EEN BEPAALD DOEL.\n" #: catgets/gencat.c:251 debug/pcprofiledump.c:229 debug/xtrace.sh:67 -#: elf/ldconfig.c:237 elf/pldd.c:267 elf/sprof.c:394 iconv/iconv_prog.c:409 +#: elf/ldconfig.c:238 elf/pldd.c:267 elf/sprof.c:394 iconv/iconv_prog.c:409 #: iconv/iconvconfig.c:402 locale/programs/locale.c:297 #: locale/programs/localedef.c:464 malloc/memusage.sh:74 #: malloc/memusagestat.c:587 nscd/nscd.c:526 nss/getent.c:97 nss/makedb.c:392 @@ -402,7 +402,7 @@ msgstr "Cache-bestand heeft verkeerde endianness.\n" msgid "Cache generated by: " msgstr "Cache is gegenereerd door: " -#: elf/cache.c:296 elf/ldconfig.c:1249 +#: elf/cache.c:296 elf/ldconfig.c:1239 #, c-format msgid "Can't open cache file %s\n" msgstr "Kan cachebestand %s niet openen\n" @@ -715,7 +715,7 @@ msgstr "kan extra geheugenbescherming niet toepassen na verplaatsing" msgid "RTLD_NEXT used in code not dynamically loaded" msgstr "RTLD_NEXT is gebruikt in code die niet dynamisch geladen is" -#: elf/dl-tls.c:1059 +#: elf/dl-tls.c:1136 msgid "cannot create TLS data structures" msgstr "kan TLS-gegevensstructuren niet aanmaken" @@ -731,221 +731,221 @@ msgstr "kan geen geheugen reserveren voor tabel met versieverwijzingen" msgid "DT_RELR without GLIBC_ABI_DT_RELR dependency" msgstr "DT_RELR zonder een GLIBC_ABI_DT_RELR-afhankelijkheid" -#: elf/ldconfig.c:124 +#: elf/ldconfig.c:125 msgid "Print cache" msgstr "inhoud van de cache weergeven" -#: elf/ldconfig.c:125 +#: elf/ldconfig.c:126 msgid "Generate verbose messages" msgstr "gedetailleerde uitvoer produceren" -#: elf/ldconfig.c:126 +#: elf/ldconfig.c:127 msgid "Don't build cache" msgstr "geen cache opbouwen" -#: elf/ldconfig.c:127 +#: elf/ldconfig.c:128 msgid "Don't update symbolic links" msgstr "symbolische koppelingen niet bijwerken" -#: elf/ldconfig.c:128 +#: elf/ldconfig.c:129 msgid "Change to and use ROOT as root directory" msgstr "naar deze map gaan en als hoofdmap gebruiken" -#: elf/ldconfig.c:128 +#: elf/ldconfig.c:129 msgid "ROOT" msgstr "BASISMAP" -#: elf/ldconfig.c:129 +#: elf/ldconfig.c:130 msgid "CACHE" msgstr "CACHE-BESTAND" -#: elf/ldconfig.c:129 +#: elf/ldconfig.c:130 msgid "Use CACHE as cache file" msgstr "dit cachebestand gebruiken" -#: elf/ldconfig.c:130 +#: elf/ldconfig.c:131 msgid "CONF" msgstr "CONFIG-BESTAND" -#: elf/ldconfig.c:130 +#: elf/ldconfig.c:131 msgid "Use CONF as configuration file" msgstr "dit configuratiebestand gebruiken" -#: elf/ldconfig.c:131 +#: elf/ldconfig.c:132 msgid "Only process directories specified on the command line. Don't build cache." msgstr "alleen de mappen op de opdrachtregel verwerken; geen cache opbouwen" -#: elf/ldconfig.c:132 +#: elf/ldconfig.c:133 msgid "Manually link individual libraries." msgstr "individuele bibliotheken handmatig koppelen" -#: elf/ldconfig.c:133 +#: elf/ldconfig.c:134 msgid "FORMAT" msgstr "INDELING" -#: elf/ldconfig.c:133 +#: elf/ldconfig.c:134 msgid "Format to use: new (default), old, or compat" msgstr "te gebruiken indeling: 'new' (standaard), 'old', of 'compat'" -#: elf/ldconfig.c:134 +#: elf/ldconfig.c:135 msgid "Ignore auxiliary cache file" msgstr "hulpcachebestand negeren" -#: elf/ldconfig.c:142 +#: elf/ldconfig.c:143 msgid "Configure Dynamic Linker Run Time Bindings." msgstr "" " \n" "Configureren van de dynamische linker." -#: elf/ldconfig.c:276 +#: elf/ldconfig.c:277 #, c-format msgid "Path `%s' given more than once" msgstr "Pad '%s' is meerdere malen opgegeven" -#: elf/ldconfig.c:277 +#: elf/ldconfig.c:278 #, c-format msgid "(from %s:%d and %s:%d)\n" msgstr "(van %s:%d en %s:%d)\n" -#: elf/ldconfig.c:309 elf/ldconfig.c:350 +#: elf/ldconfig.c:310 elf/ldconfig.c:351 #, c-format msgid "Could not form glibc-hwcaps path" msgstr "Kan 'glibc-hwcaps'-pad niet vormen" # Het origineel is te vaag -- feitelijk is er een fout opgetreden tijdens readdir(). -#: elf/ldconfig.c:323 +#: elf/ldconfig.c:324 #, c-format msgid "Listing directory %s" msgstr "Kan map %s niet lezen" -#: elf/ldconfig.c:405 +#: elf/ldconfig.c:406 #, c-format msgid "Can't stat %s" msgstr "Kan status van %s niet opvragen" -#: elf/ldconfig.c:486 +#: elf/ldconfig.c:487 #, c-format msgid "Can't stat %s\n" msgstr "Kan status van %s niet opvragen\n" -#: elf/ldconfig.c:496 +#: elf/ldconfig.c:497 #, c-format msgid "%s is not a symbolic link\n" msgstr "%s is geen symbolische koppeling\n" -#: elf/ldconfig.c:515 +#: elf/ldconfig.c:516 #, c-format msgid "Can't unlink %s" msgstr "Kan %s niet ontkoppelen" -#: elf/ldconfig.c:521 +#: elf/ldconfig.c:522 #, c-format msgid "Can't link %s to %s" msgstr "Kan %s niet aan %s koppelen" -#: elf/ldconfig.c:527 +#: elf/ldconfig.c:528 msgid " (changed)\n" msgstr " (gewijzigd)\n" -#: elf/ldconfig.c:529 +#: elf/ldconfig.c:530 msgid " (SKIPPED)\n" msgstr " (OVERGESLAGEN)\n" -#: elf/ldconfig.c:584 +#: elf/ldconfig.c:585 #, c-format msgid "Can't find %s" msgstr "Kan %s niet vinden" -#: elf/ldconfig.c:600 elf/ldconfig.c:770 elf/ldconfig.c:837 +#: elf/ldconfig.c:601 elf/ldconfig.c:760 elf/ldconfig.c:827 #, c-format msgid "Cannot lstat %s" msgstr "Kan status van link %s niet opvragen" -#: elf/ldconfig.c:606 +#: elf/ldconfig.c:607 #, c-format msgid "Ignored file %s since it is not a regular file." msgstr "Bestand %s wordt genegeerd omdat het geen gewoon bestand is." -#: elf/ldconfig.c:614 +#: elf/ldconfig.c:615 #, c-format msgid "No link created since soname could not be found for %s" msgstr "" "Geen koppeling aangemaakt, want kan van %s de 'soname'\n" "(de naam van het gedeelde object) niet vinden" -#: elf/ldconfig.c:711 +#: elf/ldconfig.c:701 #, c-format msgid " (from %s:%d)\n" msgstr " (van %s:%d)\n" -#: elf/ldconfig.c:726 +#: elf/ldconfig.c:716 #, c-format msgid "Can't open directory %s" msgstr "Kan map %s niet openen" -#: elf/ldconfig.c:753 elf/ldconfig.c:758 +#: elf/ldconfig.c:743 elf/ldconfig.c:748 #, c-format msgid "Could not form library path" msgstr "Kan bibliotheekpad niet vormen" -#: elf/ldconfig.c:787 elf/ldconfig.c:825 elf/readlib.c:78 +#: elf/ldconfig.c:777 elf/ldconfig.c:815 elf/readlib.c:81 #, c-format msgid "Input file %s not found.\n" msgstr "Kan invoerbestand %s niet vinden\n" -#: elf/ldconfig.c:794 +#: elf/ldconfig.c:784 #, c-format msgid "Cannot stat %s" msgstr "Kan status van %s niet opvragen" -#: elf/ldconfig.c:913 +#: elf/ldconfig.c:903 #, c-format msgid "libc6 library %s in wrong directory" msgstr "libc6-bibliotheek %s zit in verkeerde map" -#: elf/ldconfig.c:932 +#: elf/ldconfig.c:922 #, c-format msgid "libraries %s and %s in directory %s have same soname but different type." msgstr "Bibliotheken %s en %s in map %s hebben dezelfde 'soname' maar een verschillende soort" -#: elf/ldconfig.c:1061 +#: elf/ldconfig.c:1051 #, c-format msgid "Warning: ignoring configuration file that cannot be opened: %s" msgstr "Waarschuwing: ontoegankelijk configuratiebestand wordt genegeerd: %s" -#: elf/ldconfig.c:1109 +#: elf/ldconfig.c:1099 #, c-format msgid "%s:%u: hwcap directive ignored" msgstr "%s:%u: hwcap-directief is genegeerd" -#: elf/ldconfig.c:1128 +#: elf/ldconfig.c:1118 #, c-format msgid "need absolute file name for configuration file when using -r" msgstr "bij gebruik van '-r' is voor het configuratiebestand een absoluut pad vereist" -#: elf/ldconfig.c:1135 locale/programs/xasprintf.c:31 +#: elf/ldconfig.c:1125 locale/programs/xasprintf.c:31 #: locale/programs/xmalloc.c:63 malloc/obstack.c:416 malloc/obstack.c:418 #: posix/getconf.c:460 posix/getconf.c:699 #, c-format msgid "memory exhausted" msgstr "onvoldoende geheugen beschikbaar" -#: elf/ldconfig.c:1168 +#: elf/ldconfig.c:1158 #, c-format msgid "%s:%u: cannot read directory %s" msgstr "%s:%u: kan map %s niet lezen" -#: elf/ldconfig.c:1206 +#: elf/ldconfig.c:1196 #, c-format msgid "relative path `%s' used to build cache" msgstr "relatief pad '%s' wordt gebruikt bij opbouwen van cache" -#: elf/ldconfig.c:1228 +#: elf/ldconfig.c:1218 #, c-format msgid "Can't chdir to /" msgstr "Kan niet naar hoofdmap ('/') gaan" -#: elf/ldconfig.c:1269 +#: elf/ldconfig.c:1259 #, c-format msgid "Can't open cache file directory %s\n" msgstr "Kan map %s voor cachebestand niet openen\n" @@ -1146,27 +1146,27 @@ msgstr "%s is niet een gedeeld objectbestand (type = %d)\n" msgid "more than one dynamic segment\n" msgstr "meer dan één dynamisch segment\n" -#: elf/readlib.c:84 +#: elf/readlib.c:87 #, c-format msgid "Cannot fstat file %s.\n" msgstr "Kan status van %s niet opvragen\n" -#: elf/readlib.c:95 +#: elf/readlib.c:98 #, c-format msgid "File %s is empty, not checked." msgstr "Bestand %s is leeg; niet gecontroleerd" -#: elf/readlib.c:101 +#: elf/readlib.c:104 #, c-format msgid "File %s is too small, not checked." msgstr "Bestand %s is te klein; niet gecontroleerd" -#: elf/readlib.c:111 +#: elf/readlib.c:114 #, c-format msgid "Cannot mmap file %s.\n" msgstr "Kan bestand %s niet geheel in het geheugen plaatsen\n" -#: elf/readlib.c:149 +#: elf/readlib.c:152 #, c-format msgid "%s is not an ELF file - it has the wrong magic bytes at the start.\n" msgstr "%s is geen ELF-bestand -- het heeft de verkeerde magische bytes aan het begin\n" diff --git a/po/pl.po b/po/pl.po index 00005edf5c..0ba32d0cce 100644 --- a/po/pl.po +++ b/po/pl.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: libc 2.39.9000\n" -"POT-Creation-Date: 2024-06-19 22:30+0200\n" +"POT-Creation-Date: 2024-07-21 00:32+0200\n" "PO-Revision-Date: 2024-06-22 19:15+0200\n" "Last-Translator: Jakub Bogusz <qboosh@pld-linux.org>\n" "Language-Team: Polish <translation-team-pl@lists.sourceforge.net>\n" @@ -147,7 +147,7 @@ msgstr "" "-o PLIK-WY [PLIK-WE]...\n" "[PLIK-WY [PLIK-WE]...]" -#: catgets/gencat.c:230 debug/pcprofiledump.c:208 elf/ldconfig.c:216 +#: catgets/gencat.c:230 debug/pcprofiledump.c:208 elf/ldconfig.c:217 #: elf/pldd.c:246 elf/sln.c:77 elf/sprof.c:371 iconv/iconv_prog.c:387 #: iconv/iconvconfig.c:380 locale/programs/locale.c:275 #: locale/programs/localedef.c:437 login/programs/pt_chown.c:88 @@ -162,7 +162,7 @@ msgstr "" "%s.\n" #: catgets/gencat.c:246 debug/pcprofiledump.c:224 debug/xtrace.sh:63 -#: elf/ldconfig.c:232 elf/ldd.bash.in:38 elf/pldd.c:262 elf/sotruss.sh:75 +#: elf/ldconfig.c:233 elf/ldd.bash.in:38 elf/pldd.c:262 elf/sotruss.sh:75 #: elf/sprof.c:388 iconv/iconv_prog.c:404 iconv/iconvconfig.c:397 #: locale/programs/locale.c:292 locale/programs/localedef.c:459 #: login/programs/pt_chown.c:62 malloc/memusage.sh:70 malloc/memusagestat.c:582 @@ -180,7 +180,7 @@ msgstr "" # w %s wchodzi nazwisko autora danego programu/procedury -PK #: catgets/gencat.c:251 debug/pcprofiledump.c:229 debug/xtrace.sh:67 -#: elf/ldconfig.c:237 elf/pldd.c:267 elf/sprof.c:394 iconv/iconv_prog.c:409 +#: elf/ldconfig.c:238 elf/pldd.c:267 elf/sprof.c:394 iconv/iconv_prog.c:409 #: iconv/iconvconfig.c:402 locale/programs/locale.c:297 #: locale/programs/localedef.c:464 malloc/memusage.sh:74 #: malloc/memusagestat.c:587 nscd/nscd.c:526 nss/getent.c:97 nss/makedb.c:392 @@ -397,7 +397,7 @@ msgstr "Plik pamiÄ™ci podrÄ™cznej ma niewÅ‚aÅ›ciwÄ… kolejność bajtów.\n" msgid "Cache generated by: " msgstr "Pamięć podrÄ™czna wygenerowana przez: " -#: elf/cache.c:296 elf/ldconfig.c:1249 +#: elf/cache.c:296 elf/ldconfig.c:1239 #, c-format msgid "Can't open cache file %s\n" msgstr "Nie można otworzyć pliku pamiÄ™ci podrÄ™cznej %s\n" @@ -708,7 +708,7 @@ msgstr "nie można naÅ‚ożyć dodatkowej ochrony pamiÄ™ci po relokacji" msgid "RTLD_NEXT used in code not dynamically loaded" msgstr "RTLD_NEXT wystÄ…piÅ‚o w kodzie nie Å‚adowanym dynamicznie" -#: elf/dl-tls.c:1059 +#: elf/dl-tls.c:1136 msgid "cannot create TLS data structures" msgstr "nie można utworzyć struktur danych TLS" @@ -724,216 +724,216 @@ msgstr "nie można przydzielić tablicy odniesieÅ„ do wersji" msgid "DT_RELR without GLIBC_ABI_DT_RELR dependency" msgstr "DT_RELR bez zależnoÅ›ci GLIBC_ABI_DT_RELR" -#: elf/ldconfig.c:124 +#: elf/ldconfig.c:125 msgid "Print cache" msgstr "Wypisanie zawartoÅ›ci pamiÄ™ci podrÄ™cznej" -#: elf/ldconfig.c:125 +#: elf/ldconfig.c:126 msgid "Generate verbose messages" msgstr "WyÅ›wietlanie wiÄ™kszej liczby komunikatów" -#: elf/ldconfig.c:126 +#: elf/ldconfig.c:127 msgid "Don't build cache" msgstr "Niebudowanie pamiÄ™ci podrÄ™cznej" -#: elf/ldconfig.c:127 +#: elf/ldconfig.c:128 msgid "Don't update symbolic links" msgstr "Bez uaktualniania dowiÄ…zaÅ„ symbolicznych" -#: elf/ldconfig.c:128 +#: elf/ldconfig.c:129 msgid "Change to and use ROOT as root directory" msgstr "PrzejÅ›cie do i używanie KATALOGU jako głównego katalogu" -#: elf/ldconfig.c:128 +#: elf/ldconfig.c:129 msgid "ROOT" msgstr "KATALOG" -#: elf/ldconfig.c:129 +#: elf/ldconfig.c:130 msgid "CACHE" msgstr "BUFOR" -#: elf/ldconfig.c:129 +#: elf/ldconfig.c:130 msgid "Use CACHE as cache file" msgstr "Użycie BUFORA jako pliku pamiÄ™ci podrÄ™cznej" -#: elf/ldconfig.c:130 +#: elf/ldconfig.c:131 msgid "CONF" msgstr "KONF" -#: elf/ldconfig.c:130 +#: elf/ldconfig.c:131 msgid "Use CONF as configuration file" msgstr "Użycie KONF jako pliku konfiguracyjnego" -#: elf/ldconfig.c:131 +#: elf/ldconfig.c:132 msgid "Only process directories specified on the command line. Don't build cache." msgstr "Przetwarzanie wyÅ‚Ä…cznie katalogów podanych z linii poleceÅ„; niebudowanie pamiÄ™ci podrÄ™cznej." -#: elf/ldconfig.c:132 +#: elf/ldconfig.c:133 msgid "Manually link individual libraries." msgstr "RÄ™czne tworzenie dowiÄ…zaÅ„ do pojedynczych bibliotek." -#: elf/ldconfig.c:133 +#: elf/ldconfig.c:134 msgid "FORMAT" msgstr "FORMAT" -#: elf/ldconfig.c:133 +#: elf/ldconfig.c:134 msgid "Format to use: new (default), old, or compat" msgstr "Używany format: new (domyÅ›lny), old lub compat" -#: elf/ldconfig.c:134 +#: elf/ldconfig.c:135 msgid "Ignore auxiliary cache file" msgstr "Ignorowanie dodatkowego pliku pamiÄ™ci podrÄ™cznej" -#: elf/ldconfig.c:142 +#: elf/ldconfig.c:143 msgid "Configure Dynamic Linker Run Time Bindings." msgstr "Konfiguracja powiÄ…zaÅ„ dynamicznego linkera." -#: elf/ldconfig.c:276 +#: elf/ldconfig.c:277 #, c-format msgid "Path `%s' given more than once" msgstr "Åšcieżka `%s' podana wiÄ™cej niż raz" -#: elf/ldconfig.c:277 +#: elf/ldconfig.c:278 #, c-format msgid "(from %s:%d and %s:%d)\n" msgstr "(od %s:%d i %s:%d)\n" -#: elf/ldconfig.c:309 elf/ldconfig.c:350 +#: elf/ldconfig.c:310 elf/ldconfig.c:351 #, c-format msgid "Could not form glibc-hwcaps path" msgstr "Nie udaÅ‚o siÄ™ uformować Å›cieżki glibc-hwcaps" -#: elf/ldconfig.c:323 +#: elf/ldconfig.c:324 #, c-format msgid "Listing directory %s" msgstr "Listowanie katalogu %s" -#: elf/ldconfig.c:405 +#: elf/ldconfig.c:406 #, c-format msgid "Can't stat %s" msgstr "Nie można wykonać stat na %s" -#: elf/ldconfig.c:486 +#: elf/ldconfig.c:487 #, c-format msgid "Can't stat %s\n" msgstr "Nie można wykonać stat na %s\n" -#: elf/ldconfig.c:496 +#: elf/ldconfig.c:497 #, c-format msgid "%s is not a symbolic link\n" msgstr "%s nie jest dowiÄ…zaniem symbolicznym\n" -#: elf/ldconfig.c:515 +#: elf/ldconfig.c:516 #, c-format msgid "Can't unlink %s" msgstr "Nie można usunąć %s" -#: elf/ldconfig.c:521 +#: elf/ldconfig.c:522 #, c-format msgid "Can't link %s to %s" msgstr "Nie można dowiÄ…zać %s do %s" -#: elf/ldconfig.c:527 +#: elf/ldconfig.c:528 msgid " (changed)\n" msgstr " (zmieniono)\n" -#: elf/ldconfig.c:529 +#: elf/ldconfig.c:530 msgid " (SKIPPED)\n" msgstr " (POMINIĘTO)\n" -#: elf/ldconfig.c:584 +#: elf/ldconfig.c:585 #, c-format msgid "Can't find %s" msgstr "Nie można znaleźć %s" -#: elf/ldconfig.c:600 elf/ldconfig.c:770 elf/ldconfig.c:837 +#: elf/ldconfig.c:601 elf/ldconfig.c:760 elf/ldconfig.c:827 #, c-format msgid "Cannot lstat %s" msgstr "Nie można wykonać lstat na %s" -#: elf/ldconfig.c:606 +#: elf/ldconfig.c:607 #, c-format msgid "Ignored file %s since it is not a regular file." msgstr "Zignorowano plik %s ponieważ nie jest zwykÅ‚ym plikiem." -#: elf/ldconfig.c:614 +#: elf/ldconfig.c:615 #, c-format msgid "No link created since soname could not be found for %s" msgstr "Nie utworzono dowiÄ…zania ponieważ nie znaleziono soname dla %s" -#: elf/ldconfig.c:711 +#: elf/ldconfig.c:701 #, c-format msgid " (from %s:%d)\n" msgstr " (od %s:%d)\n" -#: elf/ldconfig.c:726 +#: elf/ldconfig.c:716 #, c-format msgid "Can't open directory %s" msgstr "Nie można otworzyć katalogu %s" -#: elf/ldconfig.c:753 elf/ldconfig.c:758 +#: elf/ldconfig.c:743 elf/ldconfig.c:748 #, c-format msgid "Could not form library path" msgstr "Nie można zÅ‚ożyć Å›cieżki biblioteki" -#: elf/ldconfig.c:787 elf/ldconfig.c:825 elf/readlib.c:78 +#: elf/ldconfig.c:777 elf/ldconfig.c:815 elf/readlib.c:81 #, c-format msgid "Input file %s not found.\n" msgstr "Nie znaleziono pliku wejÅ›ciowego %s.\n" -#: elf/ldconfig.c:794 +#: elf/ldconfig.c:784 #, c-format msgid "Cannot stat %s" msgstr "Nie można wykonać stat na %s" -#: elf/ldconfig.c:913 +#: elf/ldconfig.c:903 #, c-format msgid "libc6 library %s in wrong directory" msgstr "biblioteka libc6 %s w zÅ‚ym katalogu" -#: elf/ldconfig.c:932 +#: elf/ldconfig.c:922 #, c-format msgid "libraries %s and %s in directory %s have same soname but different type." msgstr "biblioteki %s i %s w katalogu %s majÄ… to samo soname ale inny rodzaj." -#: elf/ldconfig.c:1061 +#: elf/ldconfig.c:1051 #, c-format msgid "Warning: ignoring configuration file that cannot be opened: %s" msgstr "Uwaga: zignorowano plik konfiguracyjny, którego nie można otworzyć: %s" -#: elf/ldconfig.c:1109 +#: elf/ldconfig.c:1099 #, c-format msgid "%s:%u: hwcap directive ignored" msgstr "%s:%u: zignorowano dyrektywÄ™ hwcap" -#: elf/ldconfig.c:1128 +#: elf/ldconfig.c:1118 #, c-format msgid "need absolute file name for configuration file when using -r" msgstr "opcja -r wymaga bezwzglÄ™dnej Å›cieżki pliku konfiguracyjnego" -#: elf/ldconfig.c:1135 locale/programs/xasprintf.c:31 +#: elf/ldconfig.c:1125 locale/programs/xasprintf.c:31 #: locale/programs/xmalloc.c:63 malloc/obstack.c:416 malloc/obstack.c:418 #: posix/getconf.c:460 posix/getconf.c:699 #, c-format msgid "memory exhausted" msgstr "pamięć wyczerpana" -#: elf/ldconfig.c:1168 +#: elf/ldconfig.c:1158 #, c-format msgid "%s:%u: cannot read directory %s" msgstr "%s:%u: nie można odczytać %s" -#: elf/ldconfig.c:1206 +#: elf/ldconfig.c:1196 #, c-format msgid "relative path `%s' used to build cache" msgstr "użyto wzglÄ™dnej Å›cieżki `%s' do utworzenia pamiÄ™ci podrÄ™cznej" -#: elf/ldconfig.c:1228 +#: elf/ldconfig.c:1218 #, c-format msgid "Can't chdir to /" msgstr "Nie można przejść do katalogu /" -#: elf/ldconfig.c:1269 +#: elf/ldconfig.c:1259 #, c-format msgid "Can't open cache file directory %s\n" msgstr "Nie można otworzyć katalogu pliku pamiÄ™ci podrÄ™cznej %s\n" @@ -1131,27 +1131,27 @@ msgstr "%s nie jest plikiem obiektu dzielonego (Typ: %d).\n" msgid "more than one dynamic segment\n" msgstr "wiÄ™cej niż jeden segment dynamiczny\n" -#: elf/readlib.c:84 +#: elf/readlib.c:87 #, c-format msgid "Cannot fstat file %s.\n" msgstr "Nie można wykonać fstat na pliku %s.\n" -#: elf/readlib.c:95 +#: elf/readlib.c:98 #, c-format msgid "File %s is empty, not checked." msgstr "Plik %s jest pusty, nie sprawdzony." -#: elf/readlib.c:101 +#: elf/readlib.c:104 #, c-format msgid "File %s is too small, not checked." msgstr "Plik %s jest za maÅ‚y, nie sprawdzony." -#: elf/readlib.c:111 +#: elf/readlib.c:114 #, c-format msgid "Cannot mmap file %s.\n" msgstr "Nie można wykonać mmap pliku %s.\n" -#: elf/readlib.c:149 +#: elf/readlib.c:152 #, c-format msgid "%s is not an ELF file - it has the wrong magic bytes at the start.\n" msgstr "%s nie jest plikiem ELF - ma zÅ‚e bajty magiczne na poczÄ…tku.\n" diff --git a/po/pt.po b/po/pt.po index 80d6f9fee6..10d79e75b6 100644 --- a/po/pt.po +++ b/po/pt.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: libc 2.33.9000\n" -"POT-Creation-Date: 2024-06-19 22:30+0200\n" +"POT-Creation-Date: 2024-07-21 00:32+0200\n" "PO-Revision-Date: 2021-09-24 07:28+0100\n" "Last-Translator: Pedro Albuquerque <pmra@protonmail.com>\n" "Language-Team: Portuguese <translation-team-pt@lists.sourceforge.net>\n" @@ -148,7 +148,7 @@ msgstr "" "-o FICH-SAÃDA [FICH-ENTRADA]...\n" "[FICH-SAÃDA [FICH-ENTRADA]...]" -#: catgets/gencat.c:230 debug/pcprofiledump.c:208 elf/ldconfig.c:216 +#: catgets/gencat.c:230 debug/pcprofiledump.c:208 elf/ldconfig.c:217 #: elf/pldd.c:246 elf/sln.c:77 elf/sprof.c:371 iconv/iconv_prog.c:387 #: iconv/iconvconfig.c:380 locale/programs/locale.c:275 #: locale/programs/localedef.c:437 login/programs/pt_chown.c:88 @@ -163,7 +163,7 @@ msgstr "" "%s.\n" #: catgets/gencat.c:246 debug/pcprofiledump.c:224 debug/xtrace.sh:63 -#: elf/ldconfig.c:232 elf/ldd.bash.in:38 elf/pldd.c:262 elf/sotruss.sh:75 +#: elf/ldconfig.c:233 elf/ldd.bash.in:38 elf/pldd.c:262 elf/sotruss.sh:75 #: elf/sprof.c:388 iconv/iconv_prog.c:404 iconv/iconvconfig.c:397 #: locale/programs/locale.c:292 locale/programs/localedef.c:459 #: login/programs/pt_chown.c:62 malloc/memusage.sh:70 malloc/memusagestat.c:582 @@ -180,7 +180,7 @@ msgstr "" "PARTICULAR.\n" #: catgets/gencat.c:251 debug/pcprofiledump.c:229 debug/xtrace.sh:67 -#: elf/ldconfig.c:237 elf/pldd.c:267 elf/sprof.c:394 iconv/iconv_prog.c:409 +#: elf/ldconfig.c:238 elf/pldd.c:267 elf/sprof.c:394 iconv/iconv_prog.c:409 #: iconv/iconvconfig.c:402 locale/programs/locale.c:297 #: locale/programs/localedef.c:464 malloc/memusage.sh:74 #: malloc/memusagestat.c:587 nscd/nscd.c:526 nss/getent.c:97 nss/makedb.c:392 @@ -386,7 +386,7 @@ msgstr "O ficheiro de cache tem a endianness errada.\n" msgid "Cache generated by: " msgstr "Cache gerada por: " -#: elf/cache.c:296 elf/ldconfig.c:1249 +#: elf/cache.c:296 elf/ldconfig.c:1239 #, c-format msgid "Can't open cache file %s\n" msgstr "ImpossÃvel abrir ficheiro de cache %s\n" @@ -689,7 +689,7 @@ msgstr "impossÃvel aplicar protecção adicional de memória após relocalizaç msgid "RTLD_NEXT used in code not dynamically loaded" msgstr "RTLD_NEXT usado no código não foi carregado dinamicamente" -#: elf/dl-tls.c:1059 +#: elf/dl-tls.c:1136 msgid "cannot create TLS data structures" msgstr "impossÃvel criar estruturas de dados TLS" @@ -701,211 +701,211 @@ msgstr "erro de procura da versão" msgid "cannot allocate version reference table" msgstr "impossÃvel alocar tabela de referência da versão" -#: elf/ldconfig.c:124 +#: elf/ldconfig.c:125 msgid "Print cache" msgstr "Imprimir a cache" -#: elf/ldconfig.c:125 +#: elf/ldconfig.c:126 msgid "Generate verbose messages" msgstr "Gerar mensagens verbosas" -#: elf/ldconfig.c:126 +#: elf/ldconfig.c:127 msgid "Don't build cache" msgstr "Não construir cache" -#: elf/ldconfig.c:127 +#: elf/ldconfig.c:128 msgid "Don't update symbolic links" msgstr "Não actualizar ligações simbólicas" -#: elf/ldconfig.c:128 +#: elf/ldconfig.c:129 msgid "Change to and use ROOT as root directory" msgstr "Mudar para e usar RAIZ como pasta raiz" -#: elf/ldconfig.c:128 +#: elf/ldconfig.c:129 msgid "ROOT" msgstr "RAIZ" -#: elf/ldconfig.c:129 +#: elf/ldconfig.c:130 msgid "CACHE" msgstr "CACHE" -#: elf/ldconfig.c:129 +#: elf/ldconfig.c:130 msgid "Use CACHE as cache file" msgstr "Usar CACHE como ficheiro de cache" -#: elf/ldconfig.c:130 +#: elf/ldconfig.c:131 msgid "CONF" msgstr "CONF" -#: elf/ldconfig.c:130 +#: elf/ldconfig.c:131 msgid "Use CONF as configuration file" msgstr "Usar CONF como ficheiro de configuração" -#: elf/ldconfig.c:131 +#: elf/ldconfig.c:132 msgid "Only process directories specified on the command line. Don't build cache." msgstr "Processar só pastas especificadas na linha de comando. Não construir cache." -#: elf/ldconfig.c:132 +#: elf/ldconfig.c:133 msgid "Manually link individual libraries." msgstr "Ligar manualmente bibliotecas individuais." -#: elf/ldconfig.c:133 +#: elf/ldconfig.c:134 msgid "FORMAT" msgstr "FORMATO" -#: elf/ldconfig.c:133 +#: elf/ldconfig.c:134 msgid "Format to use: new (default), old, or compat" msgstr "Formato a usar: new (predefinição), old ou compat" -#: elf/ldconfig.c:134 +#: elf/ldconfig.c:135 msgid "Ignore auxiliary cache file" msgstr "Ignorar ficheiro de cache auxiliar" -#: elf/ldconfig.c:142 +#: elf/ldconfig.c:143 msgid "Configure Dynamic Linker Run Time Bindings." msgstr "Configurar vÃnculos de execução do linker dinâmicos ." -#: elf/ldconfig.c:276 +#: elf/ldconfig.c:277 #, c-format msgid "Path `%s' given more than once" msgstr "Caminho \"%s\" com mais uma oportunidade" -#: elf/ldconfig.c:277 +#: elf/ldconfig.c:278 #, c-format msgid "(from %s:%d and %s:%d)\n" msgstr "(de %s:%d e %s:%d)\n" -#: elf/ldconfig.c:309 elf/ldconfig.c:350 +#: elf/ldconfig.c:310 elf/ldconfig.c:351 #, c-format msgid "Could not form glibc-hwcaps path" msgstr "ImpossÃvel formar o caminho de glibc-hwcaps" -#: elf/ldconfig.c:323 +#: elf/ldconfig.c:324 #, c-format msgid "Listing directory %s" msgstr "A listar a pasta %s" -#: elf/ldconfig.c:405 +#: elf/ldconfig.c:406 #, c-format msgid "Can't stat %s" msgstr "ImpossÃvel analisar %s" -#: elf/ldconfig.c:486 +#: elf/ldconfig.c:487 #, c-format msgid "Can't stat %s\n" msgstr "ImpossÃvel analisar %s\n" -#: elf/ldconfig.c:496 +#: elf/ldconfig.c:497 #, c-format msgid "%s is not a symbolic link\n" msgstr "%s não é ligação simbólica\n" -#: elf/ldconfig.c:515 +#: elf/ldconfig.c:516 #, c-format msgid "Can't unlink %s" msgstr "ImpossÃvel desligar %s" -#: elf/ldconfig.c:521 +#: elf/ldconfig.c:522 #, c-format msgid "Can't link %s to %s" msgstr "ImpossÃvel ligar %s a %s" -#: elf/ldconfig.c:527 +#: elf/ldconfig.c:528 msgid " (changed)\n" msgstr " (alterado)\n" -#: elf/ldconfig.c:529 +#: elf/ldconfig.c:530 msgid " (SKIPPED)\n" msgstr " (SALTADO)\n" -#: elf/ldconfig.c:584 +#: elf/ldconfig.c:585 #, c-format msgid "Can't find %s" msgstr "ImpossÃvel encontrar %s" -#: elf/ldconfig.c:600 elf/ldconfig.c:770 elf/ldconfig.c:837 +#: elf/ldconfig.c:601 elf/ldconfig.c:760 elf/ldconfig.c:827 #, c-format msgid "Cannot lstat %s" msgstr "ImpossÃvel lstat %s" -#: elf/ldconfig.c:606 +#: elf/ldconfig.c:607 #, c-format msgid "Ignored file %s since it is not a regular file." msgstr "Ficheiro %s ignorado por não ser um ficheiro normal." -#: elf/ldconfig.c:614 +#: elf/ldconfig.c:615 #, c-format msgid "No link created since soname could not be found for %s" msgstr "Nenhuma ligação criada por soname não se ter encontrado para %s" -#: elf/ldconfig.c:711 +#: elf/ldconfig.c:701 #, c-format msgid " (from %s:%d)\n" msgstr " (de %s:%d)\n" -#: elf/ldconfig.c:726 +#: elf/ldconfig.c:716 #, c-format msgid "Can't open directory %s" msgstr "ImpossÃvel abrir a pasta %s" -#: elf/ldconfig.c:787 elf/ldconfig.c:825 elf/readlib.c:78 +#: elf/ldconfig.c:777 elf/ldconfig.c:815 elf/readlib.c:81 #, c-format msgid "Input file %s not found.\n" msgstr "Ficheiro de entrada %s não encontrado\n" -#: elf/ldconfig.c:794 +#: elf/ldconfig.c:784 #, c-format msgid "Cannot stat %s" msgstr "ImpossÃvel analisar %s" -#: elf/ldconfig.c:913 +#: elf/ldconfig.c:903 #, c-format msgid "libc6 library %s in wrong directory" msgstr "biblioteca libc6 %s na pasta errada" -#: elf/ldconfig.c:932 +#: elf/ldconfig.c:922 #, c-format msgid "libraries %s and %s in directory %s have same soname but different type." msgstr "bibliotecas %s e %s na pasta %s têm o mesmo soname mas tipos diferentes." -#: elf/ldconfig.c:1061 +#: elf/ldconfig.c:1051 #, c-format msgid "Warning: ignoring configuration file that cannot be opened: %s" msgstr "Aviso: a ignorar ficheiro de configuração que não pode ser aberto: %s" -#: elf/ldconfig.c:1109 +#: elf/ldconfig.c:1099 #, c-format msgid "%s:%u: hwcap directive ignored" msgstr "%s:%u: directiva hwcap ignorada" -#: elf/ldconfig.c:1128 +#: elf/ldconfig.c:1118 #, c-format msgid "need absolute file name for configuration file when using -r" msgstr "nome de ficheiro absoluto requerido para ficheiro de configuração se usar -r" -#: elf/ldconfig.c:1135 locale/programs/xasprintf.c:31 +#: elf/ldconfig.c:1125 locale/programs/xasprintf.c:31 #: locale/programs/xmalloc.c:63 malloc/obstack.c:416 malloc/obstack.c:418 #: posix/getconf.c:460 posix/getconf.c:699 #, c-format msgid "memory exhausted" msgstr "memória esgotada" -#: elf/ldconfig.c:1168 +#: elf/ldconfig.c:1158 #, c-format msgid "%s:%u: cannot read directory %s" msgstr "%s:%u: impossÃvel ler a pasta %s" -#: elf/ldconfig.c:1206 +#: elf/ldconfig.c:1196 #, c-format msgid "relative path `%s' used to build cache" msgstr "caminho relativo \"%s\" usado para construir a cache" -#: elf/ldconfig.c:1228 +#: elf/ldconfig.c:1218 #, c-format msgid "Can't chdir to /" msgstr "ImpossÃvel mudar para /" -#: elf/ldconfig.c:1269 +#: elf/ldconfig.c:1259 #, c-format msgid "Can't open cache file directory %s\n" msgstr "ImpossÃvel abrir a pasta do ficheiro de cache %s\n" @@ -1103,27 +1103,27 @@ msgstr "%s não é um ficheiro de objecto partilhado (tipo: %d).\n" msgid "more than one dynamic segment\n" msgstr "mais de um segmento dinâmico\n" -#: elf/readlib.c:84 +#: elf/readlib.c:87 #, c-format msgid "Cannot fstat file %s.\n" msgstr "ImpossÃvel fstat %s.\n" -#: elf/readlib.c:95 +#: elf/readlib.c:98 #, c-format msgid "File %s is empty, not checked." msgstr "O ficheiro %s está vazio, não verificado." -#: elf/readlib.c:101 +#: elf/readlib.c:104 #, c-format msgid "File %s is too small, not checked." msgstr "O ficheiro %s é muito pequeno, não verificado." -#: elf/readlib.c:111 +#: elf/readlib.c:114 #, c-format msgid "Cannot mmap file %s.\n" msgstr "ImpossÃvel mapear o ficheiro %s.\n" -#: elf/readlib.c:149 +#: elf/readlib.c:152 #, c-format msgid "%s is not an ELF file - it has the wrong magic bytes at the start.\n" msgstr "%s não é um ficheiro ELF - tem os bytes mágicos iniciais errados\n" diff --git a/po/pt_BR.po b/po/pt_BR.po index d8ce424425..50384eff41 100644 --- a/po/pt_BR.po +++ b/po/pt_BR.po @@ -11,7 +11,7 @@ msgid "" msgstr "" "Project-Id-Version: libc 2.33.9000\n" -"POT-Creation-Date: 2024-06-19 22:30+0200\n" +"POT-Creation-Date: 2024-07-21 00:32+0200\n" "PO-Revision-Date: 2021-08-26 04:41-0300\n" "Last-Translator: Rafael Fontenelle <rafaelff@gnome.org>\n" "Language-Team: Brazilian Portuguese <ldpbr-translation@lists.sourceforge.net>\n" @@ -153,7 +153,7 @@ msgstr "" "-o ARQUIVO-SAÃDA [ARQUIVO-ENTRADA]...\n" "[ARQUIVO-SAÃDA [ARQUIVO-ENTRADA...]" -#: catgets/gencat.c:230 debug/pcprofiledump.c:208 elf/ldconfig.c:216 +#: catgets/gencat.c:230 debug/pcprofiledump.c:208 elf/ldconfig.c:217 #: elf/pldd.c:246 elf/sln.c:77 elf/sprof.c:371 iconv/iconv_prog.c:387 #: iconv/iconvconfig.c:380 locale/programs/locale.c:275 #: locale/programs/localedef.c:437 login/programs/pt_chown.c:88 @@ -168,7 +168,7 @@ msgstr "" "%s.\n" #: catgets/gencat.c:246 debug/pcprofiledump.c:224 debug/xtrace.sh:63 -#: elf/ldconfig.c:232 elf/ldd.bash.in:38 elf/pldd.c:262 elf/sotruss.sh:75 +#: elf/ldconfig.c:233 elf/ldd.bash.in:38 elf/pldd.c:262 elf/sotruss.sh:75 #: elf/sprof.c:388 iconv/iconv_prog.c:404 iconv/iconvconfig.c:397 #: locale/programs/locale.c:292 locale/programs/localedef.c:459 #: login/programs/pt_chown.c:62 malloc/memusage.sh:70 malloc/memusagestat.c:582 @@ -185,7 +185,7 @@ msgstr "" "PROPÓSITO EME PARTICULAR.\n" #: catgets/gencat.c:251 debug/pcprofiledump.c:229 debug/xtrace.sh:67 -#: elf/ldconfig.c:237 elf/pldd.c:267 elf/sprof.c:394 iconv/iconv_prog.c:409 +#: elf/ldconfig.c:238 elf/pldd.c:267 elf/sprof.c:394 iconv/iconv_prog.c:409 #: iconv/iconvconfig.c:402 locale/programs/locale.c:297 #: locale/programs/localedef.c:464 malloc/memusage.sh:74 #: malloc/memusagestat.c:587 nscd/nscd.c:526 nss/getent.c:97 nss/makedb.c:392 @@ -392,7 +392,7 @@ msgstr "O arquivo de cache tem endianismo incorreto.\n" msgid "Cache generated by: " msgstr "Cache gerado por: " -#: elf/cache.c:296 elf/ldconfig.c:1249 +#: elf/cache.c:296 elf/ldconfig.c:1239 #, c-format msgid "Can't open cache file %s\n" msgstr "Não foi possÃvel abrir arquivo de cache %s\n" @@ -696,7 +696,7 @@ msgstr "não foi possÃvel aplicar proteção de memória adicional após realoc msgid "RTLD_NEXT used in code not dynamically loaded" msgstr "RTLD_NEXT usado em código não dinamicamente carregado" -#: elf/dl-tls.c:1059 +#: elf/dl-tls.c:1136 msgid "cannot create TLS data structures" msgstr "não é possÃvel criar estruturas de dados TLS" @@ -708,214 +708,214 @@ msgstr "erro na procura por versão" msgid "cannot allocate version reference table" msgstr "não foi possÃvel alocar tabela de referência de versão" -#: elf/ldconfig.c:124 +#: elf/ldconfig.c:125 msgid "Print cache" msgstr "Mostra o cache" -#: elf/ldconfig.c:125 +#: elf/ldconfig.c:126 msgid "Generate verbose messages" msgstr "Gera mensagens detalhadas" -#: elf/ldconfig.c:126 +#: elf/ldconfig.c:127 msgid "Don't build cache" msgstr "Não compila o cache" -#: elf/ldconfig.c:127 +#: elf/ldconfig.c:128 msgid "Don't update symbolic links" msgstr "Não atualiza links simbólicos" -#: elf/ldconfig.c:128 +#: elf/ldconfig.c:129 msgid "Change to and use ROOT as root directory" msgstr "Muda para e usa RAIZ como diretório raiz" -#: elf/ldconfig.c:128 +#: elf/ldconfig.c:129 msgid "ROOT" msgstr "RAIZ" -#: elf/ldconfig.c:129 +#: elf/ldconfig.c:130 msgid "CACHE" msgstr "CACHE" -#: elf/ldconfig.c:129 +#: elf/ldconfig.c:130 msgid "Use CACHE as cache file" msgstr "Usa CACHE como arquivo de cache" -#: elf/ldconfig.c:130 +#: elf/ldconfig.c:131 msgid "CONF" msgstr "CONF" -#: elf/ldconfig.c:130 +#: elf/ldconfig.c:131 msgid "Use CONF as configuration file" msgstr "Usa CONF como arquivo de configuração" -#: elf/ldconfig.c:131 +#: elf/ldconfig.c:132 msgid "Only process directories specified on the command line. Don't build cache." msgstr "Processa apenas diretórios especificados na linha de comando. Não compila o cache." -#: elf/ldconfig.c:132 +#: elf/ldconfig.c:133 msgid "Manually link individual libraries." msgstr "Vincula manualmente bibliotecas individuais." -#: elf/ldconfig.c:133 +#: elf/ldconfig.c:134 msgid "FORMAT" msgstr "FORMATO" -#: elf/ldconfig.c:133 +#: elf/ldconfig.c:134 msgid "Format to use: new (default), old, or compat" msgstr "Formato para usar: new (padrão), old ou compat" -#: elf/ldconfig.c:134 +#: elf/ldconfig.c:135 msgid "Ignore auxiliary cache file" msgstr "Ignora arquivo de cache auxiliar" -#: elf/ldconfig.c:142 +#: elf/ldconfig.c:143 msgid "Configure Dynamic Linker Run Time Bindings." msgstr "Configura associações de tempo real do vinculador dinâmico." -#: elf/ldconfig.c:276 +#: elf/ldconfig.c:277 #, c-format msgid "Path `%s' given more than once" msgstr "Caminho “%s†fornecido mais de uma vez" -#: elf/ldconfig.c:277 +#: elf/ldconfig.c:278 #, c-format msgid "(from %s:%d and %s:%d)\n" msgstr "(de %s:%d e %s:%d)\n" -#: elf/ldconfig.c:309 elf/ldconfig.c:350 +#: elf/ldconfig.c:310 elf/ldconfig.c:351 #, c-format msgid "Could not form glibc-hwcaps path" msgstr "Não foi possÃvel formar o caminho de glibc-hwcaps" -#: elf/ldconfig.c:323 +#: elf/ldconfig.c:324 #, c-format msgid "Listing directory %s" msgstr "Listando o diretório %s" -#: elf/ldconfig.c:405 +#: elf/ldconfig.c:406 #, c-format msgid "Can't stat %s" msgstr "Não foi possÃvel obter estado de %s" -#: elf/ldconfig.c:486 +#: elf/ldconfig.c:487 #, c-format msgid "Can't stat %s\n" msgstr "Não foi possÃvel obter estado de %s\n" -#: elf/ldconfig.c:496 +#: elf/ldconfig.c:497 #, c-format msgid "%s is not a symbolic link\n" msgstr "%s não é um link simbólico\n" -#: elf/ldconfig.c:515 +#: elf/ldconfig.c:516 #, c-format msgid "Can't unlink %s" msgstr "Não foi possÃvel desvincular %s" -#: elf/ldconfig.c:521 +#: elf/ldconfig.c:522 #, c-format msgid "Can't link %s to %s" msgstr "Não foi possÃvel vincular %s a %s" # link alterado -#: elf/ldconfig.c:527 +#: elf/ldconfig.c:528 msgid " (changed)\n" msgstr " (alterado)\n" # link ignorado -#: elf/ldconfig.c:529 +#: elf/ldconfig.c:530 msgid " (SKIPPED)\n" msgstr " (IGNORADO)\n" -#: elf/ldconfig.c:584 +#: elf/ldconfig.c:585 #, c-format msgid "Can't find %s" msgstr "Não foi possÃvel localizar %s" # `lstat' similar a stat(), mas para links; `stat' = obtém estado de arquivo -#: elf/ldconfig.c:600 elf/ldconfig.c:770 elf/ldconfig.c:837 +#: elf/ldconfig.c:601 elf/ldconfig.c:760 elf/ldconfig.c:827 #, c-format msgid "Cannot lstat %s" msgstr "Não foi possÃvel obter estado do link %s" -#: elf/ldconfig.c:606 +#: elf/ldconfig.c:607 #, c-format msgid "Ignored file %s since it is not a regular file." msgstr "Arquivo %s ignorado já que agora não é mais um arquivo comum." -#: elf/ldconfig.c:614 +#: elf/ldconfig.c:615 #, c-format msgid "No link created since soname could not be found for %s" msgstr "Nenhum link foi criado porque um soname não foi encontrado para %s" -#: elf/ldconfig.c:711 +#: elf/ldconfig.c:701 #, c-format msgid " (from %s:%d)\n" msgstr " (de %s:%d)\n" -#: elf/ldconfig.c:726 +#: elf/ldconfig.c:716 #, c-format msgid "Can't open directory %s" msgstr "Não foi possÃvel abrir o diretório %s" -#: elf/ldconfig.c:787 elf/ldconfig.c:825 elf/readlib.c:78 +#: elf/ldconfig.c:777 elf/ldconfig.c:815 elf/readlib.c:81 #, c-format msgid "Input file %s not found.\n" msgstr "Arquivo de entrada %s não foi localizado.\n" -#: elf/ldconfig.c:794 +#: elf/ldconfig.c:784 #, c-format msgid "Cannot stat %s" msgstr "Não foi possÃvel obter estado do arquivo %s" -#: elf/ldconfig.c:913 +#: elf/ldconfig.c:903 #, c-format msgid "libc6 library %s in wrong directory" msgstr "biblioteca libc6 %s em diretório errado" -#: elf/ldconfig.c:932 +#: elf/ldconfig.c:922 #, c-format msgid "libraries %s and %s in directory %s have same soname but different type." msgstr "bibliotecas %s e %s no diretório %s têm o mesmo soname, mas tipos diferentes." -#: elf/ldconfig.c:1061 +#: elf/ldconfig.c:1051 #, c-format msgid "Warning: ignoring configuration file that cannot be opened: %s" msgstr "Aviso: ignorando arquivo de configuração que não pode ser aberto: %s" -#: elf/ldconfig.c:1109 +#: elf/ldconfig.c:1099 #, c-format msgid "%s:%u: hwcap directive ignored" msgstr "%s:%u: diretiva hwcap ignorada" -#: elf/ldconfig.c:1128 +#: elf/ldconfig.c:1118 #, c-format msgid "need absolute file name for configuration file when using -r" msgstr "necessita de nome de arquivo absoluto para arquivo de configuração quando usado -r" -#: elf/ldconfig.c:1135 locale/programs/xasprintf.c:31 +#: elf/ldconfig.c:1125 locale/programs/xasprintf.c:31 #: locale/programs/xmalloc.c:63 malloc/obstack.c:416 malloc/obstack.c:418 #: posix/getconf.c:460 posix/getconf.c:699 #, c-format msgid "memory exhausted" msgstr "memória esgotada" -#: elf/ldconfig.c:1168 +#: elf/ldconfig.c:1158 #, c-format msgid "%s:%u: cannot read directory %s" msgstr "%s:%u: não foi possÃvel ler diretório %s" -#: elf/ldconfig.c:1206 +#: elf/ldconfig.c:1196 #, c-format msgid "relative path `%s' used to build cache" msgstr "caminho relativo “%s†usado para compilar o cache" -#: elf/ldconfig.c:1228 +#: elf/ldconfig.c:1218 #, c-format msgid "Can't chdir to /" msgstr "Não foi possÃvel mudar o diretório para /" -#: elf/ldconfig.c:1269 +#: elf/ldconfig.c:1259 #, c-format msgid "Can't open cache file directory %s\n" msgstr "Não foi possÃvel abrir o diretório de arquivo cache %s\n" @@ -1115,27 +1115,27 @@ msgstr "%s não é um arquivo de objeto compartilhado (Tipo: %d).\n" msgid "more than one dynamic segment\n" msgstr "mais do que um segmento dinâmico\n" -#: elf/readlib.c:84 +#: elf/readlib.c:87 #, c-format msgid "Cannot fstat file %s.\n" msgstr "Não é possÃvel obter estado do arquivo %s.\n" -#: elf/readlib.c:95 +#: elf/readlib.c:98 #, c-format msgid "File %s is empty, not checked." msgstr "Arquivo %s está vazio, não verificado." -#: elf/readlib.c:101 +#: elf/readlib.c:104 #, c-format msgid "File %s is too small, not checked." msgstr "Arquivo %s é pequeno demais, não verificado." -#: elf/readlib.c:111 +#: elf/readlib.c:114 #, c-format msgid "Cannot mmap file %s.\n" msgstr "Não foi possÃvel executar mmap no arquivo %s.\n" -#: elf/readlib.c:149 +#: elf/readlib.c:152 #, c-format msgid "%s is not an ELF file - it has the wrong magic bytes at the start.\n" msgstr "%s não é um arquivo ELF – ele tem os magic bytes errados no inÃcio.\n" diff --git a/po/ro.po b/po/ro.po index 51e1898443..ad7aaf7129 100644 --- a/po/ro.po +++ b/po/ro.po @@ -16,7 +16,7 @@ msgid "" msgstr "" "Project-Id-Version: libc 2.39.9000\n" -"POT-Creation-Date: 2024-06-19 22:30+0200\n" +"POT-Creation-Date: 2024-07-21 00:32+0200\n" "PO-Revision-Date: 2024-06-22 19:05+0200\n" "Last-Translator: Remus-Gabriel Chelu <remusgabriel.chelu@disroot.org>\n" "Language-Team: Romanian <translation-team-ro@lists.sourceforge.net>\n" @@ -158,7 +158,7 @@ msgstr "" "-o FIȘIER-IEȘIRE [FIȘIER-INTRARE]...\n" "[FIȘIER-IEȘIRE [FIȘIER-INTRARE]...]" -#: catgets/gencat.c:230 debug/pcprofiledump.c:208 elf/ldconfig.c:216 +#: catgets/gencat.c:230 debug/pcprofiledump.c:208 elf/ldconfig.c:217 #: elf/pldd.c:246 elf/sln.c:77 elf/sprof.c:371 iconv/iconv_prog.c:387 #: iconv/iconvconfig.c:380 locale/programs/locale.c:275 #: locale/programs/localedef.c:437 login/programs/pt_chown.c:88 @@ -173,7 +173,7 @@ msgstr "" "%s.\n" #: catgets/gencat.c:246 debug/pcprofiledump.c:224 debug/xtrace.sh:63 -#: elf/ldconfig.c:232 elf/ldd.bash.in:38 elf/pldd.c:262 elf/sotruss.sh:75 +#: elf/ldconfig.c:233 elf/ldd.bash.in:38 elf/pldd.c:262 elf/sotruss.sh:75 #: elf/sprof.c:388 iconv/iconv_prog.c:404 iconv/iconvconfig.c:397 #: locale/programs/locale.c:292 locale/programs/localedef.c:459 #: login/programs/pt_chown.c:62 malloc/memusage.sh:70 malloc/memusagestat.c:582 @@ -189,7 +189,7 @@ msgstr "" "garanÈ›ie; nici măcar pentru COMERCIALIZARE sau POTRIVIRE PENTRU UN ANUMIT SCOP.\n" #: catgets/gencat.c:251 debug/pcprofiledump.c:229 debug/xtrace.sh:67 -#: elf/ldconfig.c:237 elf/pldd.c:267 elf/sprof.c:394 iconv/iconv_prog.c:409 +#: elf/ldconfig.c:238 elf/pldd.c:267 elf/sprof.c:394 iconv/iconv_prog.c:409 #: iconv/iconvconfig.c:402 locale/programs/locale.c:297 #: locale/programs/localedef.c:464 malloc/memusage.sh:74 #: malloc/memusagestat.c:587 nscd/nscd.c:526 nss/getent.c:97 nss/makedb.c:392 @@ -412,7 +412,7 @@ msgstr "FiÈ™ierul zonei de prestocare(cache) are tipul de „endianness†greÈ™ msgid "Cache generated by: " msgstr "Zonă de prestocare(cache) generată de către: " -#: elf/cache.c:296 elf/ldconfig.c:1249 +#: elf/cache.c:296 elf/ldconfig.c:1239 #, c-format msgid "Can't open cache file %s\n" msgstr "Nu se poate deschide fiÈ™ierul spaÈ›iului de prestocare(cache) %s\n" @@ -725,7 +725,7 @@ msgstr "nu se poate aplica protecÈ›ia suplimentară de memorie după realocare" msgid "RTLD_NEXT used in code not dynamically loaded" msgstr "RTLD_NEXT utilizat în cod nu s-a încărcat dinamic" -#: elf/dl-tls.c:1059 +#: elf/dl-tls.c:1136 msgid "cannot create TLS data structures" msgstr "nu se pot crea structurile de date TLS" @@ -741,216 +741,216 @@ msgstr "nu se poate aloca tabelul de referință al versiunii" msgid "DT_RELR without GLIBC_ABI_DT_RELR dependency" msgstr "DT_RELR fără dependență de GLIBC_ABI_DT_RELR" -#: elf/ldconfig.c:124 +#: elf/ldconfig.c:125 msgid "Print cache" msgstr "AfiÈ™ează zona de prestocare(cache)" -#: elf/ldconfig.c:125 +#: elf/ldconfig.c:126 msgid "Generate verbose messages" msgstr "Generează mesaje detaliate" -#: elf/ldconfig.c:126 +#: elf/ldconfig.c:127 msgid "Don't build cache" msgstr "Nu construieÈ™te zona de prestocare(cache)" -#: elf/ldconfig.c:127 +#: elf/ldconfig.c:128 msgid "Don't update symbolic links" msgstr "Nu actualizează legăturile simbolice" -#: elf/ldconfig.c:128 +#: elf/ldconfig.c:129 msgid "Change to and use ROOT as root directory" msgstr "Schimbă la ROOT È™i-l utilizează ca director rădăcină" -#: elf/ldconfig.c:128 +#: elf/ldconfig.c:129 msgid "ROOT" msgstr "ROOT" -#: elf/ldconfig.c:129 +#: elf/ldconfig.c:130 msgid "CACHE" msgstr "CACHE" -#: elf/ldconfig.c:129 +#: elf/ldconfig.c:130 msgid "Use CACHE as cache file" msgstr "Utilizează CACHE ca fiÈ™ier de zonă de prestocare(cache)" -#: elf/ldconfig.c:130 +#: elf/ldconfig.c:131 msgid "CONF" msgstr "CONF" -#: elf/ldconfig.c:130 +#: elf/ldconfig.c:131 msgid "Use CONF as configuration file" msgstr "Utilizează CONF ca fiÈ™ier de configurare" -#: elf/ldconfig.c:131 +#: elf/ldconfig.c:132 msgid "Only process directories specified on the command line. Don't build cache." msgstr "Procesează doar directoarele specificate în linia de comandă. Nu construieÈ™te zona de prestocare(cache)." -#: elf/ldconfig.c:132 +#: elf/ldconfig.c:133 msgid "Manually link individual libraries." msgstr "VinculaÈ›i manual biblioteci individuale." -#: elf/ldconfig.c:133 +#: elf/ldconfig.c:134 msgid "FORMAT" msgstr "FORMAT" -#: elf/ldconfig.c:133 +#: elf/ldconfig.c:134 msgid "Format to use: new (default), old, or compat" msgstr "Format de utilizat: „new†(nou) implicit, „old†(vechi) sau „compat†(compatibil)" -#: elf/ldconfig.c:134 +#: elf/ldconfig.c:135 msgid "Ignore auxiliary cache file" msgstr "Ignoră fiÈ™ierul de zonă de prestocare(cache) auxiliar" -#: elf/ldconfig.c:142 +#: elf/ldconfig.c:143 msgid "Configure Dynamic Linker Run Time Bindings." msgstr "Configurează asocierile de timp de execuÈ›ie ale editorului de legături dinamic." -#: elf/ldconfig.c:276 +#: elf/ldconfig.c:277 #, c-format msgid "Path `%s' given more than once" msgstr "Ruta „%s†a fost dată de mai multe ori" -#: elf/ldconfig.c:277 +#: elf/ldconfig.c:278 #, c-format msgid "(from %s:%d and %s:%d)\n" msgstr "(de la %s:%d È™i %s:%d)\n" -#: elf/ldconfig.c:309 elf/ldconfig.c:350 +#: elf/ldconfig.c:310 elf/ldconfig.c:351 #, c-format msgid "Could not form glibc-hwcaps path" msgstr "Nu s-a putut forma ruta glibc-hwcaps" -#: elf/ldconfig.c:323 +#: elf/ldconfig.c:324 #, c-format msgid "Listing directory %s" msgstr "Listare director %s" -#: elf/ldconfig.c:405 +#: elf/ldconfig.c:406 #, c-format msgid "Can't stat %s" msgstr "Nu se poate obÈ›ine starea %s" -#: elf/ldconfig.c:486 +#: elf/ldconfig.c:487 #, c-format msgid "Can't stat %s\n" msgstr "Nu se poate obÈ›ine starea %s\n" -#: elf/ldconfig.c:496 +#: elf/ldconfig.c:497 #, c-format msgid "%s is not a symbolic link\n" msgstr "%s nu este o legătură simbolică\n" -#: elf/ldconfig.c:515 +#: elf/ldconfig.c:516 #, c-format msgid "Can't unlink %s" msgstr "Nu se poate înlătura legătura %s" -#: elf/ldconfig.c:521 +#: elf/ldconfig.c:522 #, c-format msgid "Can't link %s to %s" msgstr "Nu se poate face legătura între %s È™i %s" -#: elf/ldconfig.c:527 +#: elf/ldconfig.c:528 msgid " (changed)\n" msgstr " (schimbat)\n" -#: elf/ldconfig.c:529 +#: elf/ldconfig.c:530 msgid " (SKIPPED)\n" msgstr " (OMIS)\n" -#: elf/ldconfig.c:584 +#: elf/ldconfig.c:585 #, c-format msgid "Can't find %s" msgstr "Nu se poate găsi %s" -#: elf/ldconfig.c:600 elf/ldconfig.c:770 elf/ldconfig.c:837 +#: elf/ldconfig.c:601 elf/ldconfig.c:760 elf/ldconfig.c:827 #, c-format msgid "Cannot lstat %s" msgstr "Nu se poate obÈ›ine starea legăturii %s" -#: elf/ldconfig.c:606 +#: elf/ldconfig.c:607 #, c-format msgid "Ignored file %s since it is not a regular file." msgstr "S-a ignorat fiÈ™ierul %s, deoarece nu este un fiÈ™ier obiÈ™nuit." -#: elf/ldconfig.c:614 +#: elf/ldconfig.c:615 #, c-format msgid "No link created since soname could not be found for %s" msgstr "Nu s-a creat nicio legătură, deoarece „soname†(biblioteca obiectului partajat) nu a fost găsită pentru %s" -#: elf/ldconfig.c:711 +#: elf/ldconfig.c:701 #, c-format msgid " (from %s:%d)\n" msgstr " (de la %s:%d)\n" -#: elf/ldconfig.c:726 +#: elf/ldconfig.c:716 #, c-format msgid "Can't open directory %s" msgstr "Nu se poate deschide directorul %s" -#: elf/ldconfig.c:753 elf/ldconfig.c:758 +#: elf/ldconfig.c:743 elf/ldconfig.c:748 #, c-format msgid "Could not form library path" msgstr "Nu s-a putut forma ruta bibliotecii" -#: elf/ldconfig.c:787 elf/ldconfig.c:825 elf/readlib.c:78 +#: elf/ldconfig.c:777 elf/ldconfig.c:815 elf/readlib.c:81 #, c-format msgid "Input file %s not found.\n" msgstr "FiÈ™ierul de intrare %s nu a fost găsit.\n" -#: elf/ldconfig.c:794 +#: elf/ldconfig.c:784 #, c-format msgid "Cannot stat %s" msgstr "Nu se poate obÈ›ine starea %s" -#: elf/ldconfig.c:913 +#: elf/ldconfig.c:903 #, c-format msgid "libc6 library %s in wrong directory" msgstr "biblioteca libc6 %s este într-un director greÈ™it" -#: elf/ldconfig.c:932 +#: elf/ldconfig.c:922 #, c-format msgid "libraries %s and %s in directory %s have same soname but different type." msgstr "bibliotecile %s È™i %s din directorul %s au acelaÈ™i „sonameâ€, dar tip diferit." -#: elf/ldconfig.c:1061 +#: elf/ldconfig.c:1051 #, c-format msgid "Warning: ignoring configuration file that cannot be opened: %s" msgstr "Avertisment: se ignoră fiÈ™ierul de configurare care nu poate fi deschis: %s" -#: elf/ldconfig.c:1109 +#: elf/ldconfig.c:1099 #, c-format msgid "%s:%u: hwcap directive ignored" msgstr "%s:%u: directiva hwcap a fost ignorată" -#: elf/ldconfig.c:1128 +#: elf/ldconfig.c:1118 #, c-format msgid "need absolute file name for configuration file when using -r" msgstr "este nevoie de numele absolut de fiÈ™ier pentru fiÈ™ierul de configurare atunci când se utilizează opÈ›iunea „-râ€" -#: elf/ldconfig.c:1135 locale/programs/xasprintf.c:31 +#: elf/ldconfig.c:1125 locale/programs/xasprintf.c:31 #: locale/programs/xmalloc.c:63 malloc/obstack.c:416 malloc/obstack.c:418 #: posix/getconf.c:460 posix/getconf.c:699 #, c-format msgid "memory exhausted" msgstr "memorie epuizată" -#: elf/ldconfig.c:1168 +#: elf/ldconfig.c:1158 #, c-format msgid "%s:%u: cannot read directory %s" msgstr "%s:%u: nu se poate citi directorul %s" -#: elf/ldconfig.c:1206 +#: elf/ldconfig.c:1196 #, c-format msgid "relative path `%s' used to build cache" msgstr "ruta relativă „%s†este folosită pentru a construi spaÈ›iul de prestocare (cache)" -#: elf/ldconfig.c:1228 +#: elf/ldconfig.c:1218 #, c-format msgid "Can't chdir to /" msgstr "Nu se poate executa «chdir» la /" -#: elf/ldconfig.c:1269 +#: elf/ldconfig.c:1259 #, c-format msgid "Can't open cache file directory %s\n" msgstr "Nu se poate deschide directorul de fiÈ™iere de spaÈ›iu de prestocare(cache) %s\n" @@ -1148,27 +1148,27 @@ msgstr "%s nu este un fiÈ™ier obiect partajat (Tip: %d).\n" msgid "more than one dynamic segment\n" msgstr "mai mult de un segment dinamic\n" -#: elf/readlib.c:84 +#: elf/readlib.c:87 #, c-format msgid "Cannot fstat file %s.\n" msgstr "Nu se poate evalua de către fstat() fiÈ™ierul %s.\n" -#: elf/readlib.c:95 +#: elf/readlib.c:98 #, c-format msgid "File %s is empty, not checked." msgstr "FiÈ™ierul %s este gol, nu se verifică." -#: elf/readlib.c:101 +#: elf/readlib.c:104 #, c-format msgid "File %s is too small, not checked." msgstr "FiÈ™ierul %s este prea mic, nu se verifică." -#: elf/readlib.c:111 +#: elf/readlib.c:114 #, c-format msgid "Cannot mmap file %s.\n" msgstr "Nu se poate executa mmap asupra fiÈ™ierului %s.\n" -#: elf/readlib.c:149 +#: elf/readlib.c:152 #, c-format msgid "%s is not an ELF file - it has the wrong magic bytes at the start.\n" msgstr "%s nu este un fiÈ™ier ELF - are octeÈ›ii magici greÈ™iÈ›i la început.\n" diff --git a/po/ru.po b/po/ru.po index 09bfab19f4..39be8bcac8 100644 --- a/po/ru.po +++ b/po/ru.po @@ -12,7 +12,7 @@ msgid "" msgstr "" "Project-Id-Version: libc 2.38.9000\n" -"POT-Creation-Date: 2024-06-19 22:30+0200\n" +"POT-Creation-Date: 2024-07-21 00:32+0200\n" "PO-Revision-Date: 2024-06-07 18:04+0300\n" "Last-Translator: Yuri Kozlov <yuray@komyakino.ru>\n" "Language-Team: Russian <gnu@d07.ru>\n" @@ -154,7 +154,7 @@ msgstr "" "-o ВЫХОДÐОЙ-ФÐЙЛ [ВХОДÐОЙ-ФÐЙЛ]…\n" "[ВЫХОДÐОЙ-ФÐЙЛ [ВХОДÐОЙ-ФÐЙЛ]…]" -#: catgets/gencat.c:230 debug/pcprofiledump.c:208 elf/ldconfig.c:216 +#: catgets/gencat.c:230 debug/pcprofiledump.c:208 elf/ldconfig.c:217 #: elf/pldd.c:246 elf/sln.c:77 elf/sprof.c:371 iconv/iconv_prog.c:387 #: iconv/iconvconfig.c:380 locale/programs/locale.c:275 #: locale/programs/localedef.c:437 login/programs/pt_chown.c:88 @@ -169,7 +169,7 @@ msgstr "" "%s.\n" #: catgets/gencat.c:246 debug/pcprofiledump.c:224 debug/xtrace.sh:63 -#: elf/ldconfig.c:232 elf/ldd.bash.in:38 elf/pldd.c:262 elf/sotruss.sh:75 +#: elf/ldconfig.c:233 elf/ldd.bash.in:38 elf/pldd.c:262 elf/sotruss.sh:75 #: elf/sprof.c:388 iconv/iconv_prog.c:404 iconv/iconvconfig.c:397 #: locale/programs/locale.c:292 locale/programs/localedef.c:459 #: login/programs/pt_chown.c:62 malloc/memusage.sh:70 malloc/memusagestat.c:582 @@ -186,7 +186,7 @@ msgstr "" "КОММЕРЧЕСКОЙ ПРИГОДÐОСТИ или ПРИГОДÐОСТИ ДЛЯ КÐКОЙ-ЛИБО ЦЕЛИ.\n" #: catgets/gencat.c:251 debug/pcprofiledump.c:229 debug/xtrace.sh:67 -#: elf/ldconfig.c:237 elf/pldd.c:267 elf/sprof.c:394 iconv/iconv_prog.c:409 +#: elf/ldconfig.c:238 elf/pldd.c:267 elf/sprof.c:394 iconv/iconv_prog.c:409 #: iconv/iconvconfig.c:402 locale/programs/locale.c:297 #: locale/programs/localedef.c:464 malloc/memusage.sh:74 #: malloc/memusagestat.c:587 nscd/nscd.c:526 nss/getent.c:97 nss/makedb.c:392 @@ -402,7 +402,7 @@ msgstr "Ð’ кÑш-файле некорректный порÑдок ÑледоРmsgid "Cache generated by: " msgstr "КÑш Ñгенерирован: " -#: elf/cache.c:296 elf/ldconfig.c:1249 +#: elf/cache.c:296 elf/ldconfig.c:1239 #, c-format msgid "Can't open cache file %s\n" msgstr "Ðевозможно открыть кÑш-файл %s\n" @@ -714,7 +714,7 @@ msgstr "невозможно применить дополнительную зРmsgid "RTLD_NEXT used in code not dynamically loaded" msgstr "RTLD_NEXT иÑпользовано в не динамичеÑки загруженном коде" -#: elf/dl-tls.c:1059 +#: elf/dl-tls.c:1136 msgid "cannot create TLS data structures" msgstr "невозможно Ñоздать Ñтруктуры данных TLS" @@ -730,216 +730,216 @@ msgstr "невозможно выделить памÑÑ‚ÑŒ под таблицу msgid "DT_RELR without GLIBC_ABI_DT_RELR dependency" msgstr "DT_RELR без завиÑимоÑти GLIBC_ABI_DT_RELR" -#: elf/ldconfig.c:124 +#: elf/ldconfig.c:125 msgid "Print cache" msgstr "Ðапечатать кÑш" -#: elf/ldconfig.c:125 +#: elf/ldconfig.c:126 msgid "Generate verbose messages" msgstr "Генерировать подробные ÑообщениÑ" -#: elf/ldconfig.c:126 +#: elf/ldconfig.c:127 msgid "Don't build cache" msgstr "Ðе Ñтроить кÑш" -#: elf/ldconfig.c:127 +#: elf/ldconfig.c:128 msgid "Don't update symbolic links" msgstr "Ðе обновлÑÑ‚ÑŒ Ñимвольные ÑÑылки" -#: elf/ldconfig.c:128 +#: elf/ldconfig.c:129 msgid "Change to and use ROOT as root directory" msgstr "Перейти в КОРЕÐЬ и иÑпользовать его как корневой каталог" -#: elf/ldconfig.c:128 +#: elf/ldconfig.c:129 msgid "ROOT" msgstr "КОРЕÐЬ" -#: elf/ldconfig.c:129 +#: elf/ldconfig.c:130 msgid "CACHE" msgstr "КÐШ" -#: elf/ldconfig.c:129 +#: elf/ldconfig.c:130 msgid "Use CACHE as cache file" msgstr "ИÑпользовать КÐШ в качеÑтве кÑш-файла" -#: elf/ldconfig.c:130 +#: elf/ldconfig.c:131 msgid "CONF" msgstr "КОÐФИГУРÐЦИЯ" -#: elf/ldconfig.c:130 +#: elf/ldconfig.c:131 msgid "Use CONF as configuration file" msgstr "ИÑпользовать КОÐФИГУРÐЦИЯ в качеÑтве конфигурационного файла" -#: elf/ldconfig.c:131 +#: elf/ldconfig.c:132 msgid "Only process directories specified on the command line. Don't build cache." msgstr "Обработать только каталоги, указанные в командной Ñтроке. Ðе Ñтроить кÑш." -#: elf/ldconfig.c:132 +#: elf/ldconfig.c:133 msgid "Manually link individual libraries." msgstr "Вручную Ñкомпоновать отдельные библиотеки." -#: elf/ldconfig.c:133 +#: elf/ldconfig.c:134 msgid "FORMAT" msgstr "FORMAT" -#: elf/ldconfig.c:133 +#: elf/ldconfig.c:134 msgid "Format to use: new (default), old, or compat" msgstr "ИÑпользуемый формат: new (по умолчанию), old или compat" -#: elf/ldconfig.c:134 +#: elf/ldconfig.c:135 msgid "Ignore auxiliary cache file" msgstr "Игнорирование вÑпомогательного файла кÑша" -#: elf/ldconfig.c:142 +#: elf/ldconfig.c:143 msgid "Configure Dynamic Linker Run Time Bindings." msgstr "ÐаÑтраивает ÑвÑзи времени Ð²Ñ‹Ð¿Ð¾Ð»Ð½ÐµÐ½Ð¸Ñ Ð´Ð»Ñ Ð´Ð¸Ð½Ð°Ð¼Ð¸Ñ‡ÐµÑкого компоновщика." -#: elf/ldconfig.c:276 +#: elf/ldconfig.c:277 #, c-format msgid "Path `%s' given more than once" msgstr "Путь «%s» задан неÑколько раз" -#: elf/ldconfig.c:277 +#: elf/ldconfig.c:278 #, c-format msgid "(from %s:%d and %s:%d)\n" msgstr "(из %s:%d и %s:%d)\n" -#: elf/ldconfig.c:309 elf/ldconfig.c:350 +#: elf/ldconfig.c:310 elf/ldconfig.c:351 #, c-format msgid "Could not form glibc-hwcaps path" msgstr "Ðе удалоÑÑŒ Ñформировать путь glibc-hwcaps" -#: elf/ldconfig.c:323 +#: elf/ldconfig.c:324 #, c-format msgid "Listing directory %s" msgstr "ПроÑмотр каталога %s" -#: elf/ldconfig.c:405 +#: elf/ldconfig.c:406 #, c-format msgid "Can't stat %s" msgstr "Ðевозможно выполнить stat %s" -#: elf/ldconfig.c:486 +#: elf/ldconfig.c:487 #, c-format msgid "Can't stat %s\n" msgstr "Ðевозможно выполнить stat %s\n" -#: elf/ldconfig.c:496 +#: elf/ldconfig.c:497 #, c-format msgid "%s is not a symbolic link\n" msgstr "%s не ÑвлÑетÑÑ Ñимвольной ÑÑылкой\n" -#: elf/ldconfig.c:515 +#: elf/ldconfig.c:516 #, c-format msgid "Can't unlink %s" msgstr "Ðевозможно удалить ÑÑылку %s" -#: elf/ldconfig.c:521 +#: elf/ldconfig.c:522 #, c-format msgid "Can't link %s to %s" msgstr "Ðевозможно Ñоздать ÑÑылку Ñ %s на %s" -#: elf/ldconfig.c:527 +#: elf/ldconfig.c:528 msgid " (changed)\n" msgstr " (изменено)\n" -#: elf/ldconfig.c:529 +#: elf/ldconfig.c:530 msgid " (SKIPPED)\n" msgstr " (ПРОПУЩЕÐО)\n" -#: elf/ldconfig.c:584 +#: elf/ldconfig.c:585 #, c-format msgid "Can't find %s" msgstr "Ðевозможно найти %s" -#: elf/ldconfig.c:600 elf/ldconfig.c:770 elf/ldconfig.c:837 +#: elf/ldconfig.c:601 elf/ldconfig.c:760 elf/ldconfig.c:827 #, c-format msgid "Cannot lstat %s" msgstr "Ðевозможно выполнить lstat %s" -#: elf/ldconfig.c:606 +#: elf/ldconfig.c:607 #, c-format msgid "Ignored file %s since it is not a regular file." msgstr "Файл %s проигнорирован, поÑкольку не ÑвлÑетÑÑ Ð¾Ð±Ñ‹Ñ‡Ð½Ñ‹Ð¼ файлом" -#: elf/ldconfig.c:614 +#: elf/ldconfig.c:615 #, c-format msgid "No link created since soname could not be found for %s" msgstr "СÑылка не Ñоздана, поÑкольку Ð´Ð»Ñ %s не было найдено soname" -#: elf/ldconfig.c:711 +#: elf/ldconfig.c:701 #, c-format msgid " (from %s:%d)\n" msgstr " (из %s:%d)\n" -#: elf/ldconfig.c:726 +#: elf/ldconfig.c:716 #, c-format msgid "Can't open directory %s" msgstr "Ðевозможно открыть каталог %s" -#: elf/ldconfig.c:753 elf/ldconfig.c:758 +#: elf/ldconfig.c:743 elf/ldconfig.c:748 #, c-format msgid "Could not form library path" msgstr "Ðе удалоÑÑŒ ÑконÑтруировать путь библиотеки" -#: elf/ldconfig.c:787 elf/ldconfig.c:825 elf/readlib.c:78 +#: elf/ldconfig.c:777 elf/ldconfig.c:815 elf/readlib.c:81 #, c-format msgid "Input file %s not found.\n" msgstr "Входной файл %s не найден.\n" -#: elf/ldconfig.c:794 +#: elf/ldconfig.c:784 #, c-format msgid "Cannot stat %s" msgstr "Ðевозможно выполнить stat %s" -#: elf/ldconfig.c:913 +#: elf/ldconfig.c:903 #, c-format msgid "libc6 library %s in wrong directory" msgstr "libc6-библиотека %s в неправильном каталоге" -#: elf/ldconfig.c:932 +#: elf/ldconfig.c:922 #, c-format msgid "libraries %s and %s in directory %s have same soname but different type." msgstr "библиотеки %s и %s в каталоге %s имеют одинаковый soname, но разные типы." -#: elf/ldconfig.c:1061 +#: elf/ldconfig.c:1051 #, c-format msgid "Warning: ignoring configuration file that cannot be opened: %s" msgstr "Предупреждение: файл наÑтройки игнорируетÑÑ, так как не может быть открыт: %s" -#: elf/ldconfig.c:1109 +#: elf/ldconfig.c:1099 #, c-format msgid "%s:%u: hwcap directive ignored" msgstr "%s:%u: директива hwcap игнорируетÑÑ" -#: elf/ldconfig.c:1128 +#: elf/ldconfig.c:1118 #, c-format msgid "need absolute file name for configuration file when using -r" msgstr "при иÑпользовании -r необходимо задавать абÑолютное Ð¸Ð¼Ñ Ð´Ð»Ñ ÐºÐ¾Ð½Ñ„Ð¸Ð³ÑƒÑ€Ð°Ñ†Ð¸Ð¾Ð½Ð½Ð¾Ð³Ð¾ файла" -#: elf/ldconfig.c:1135 locale/programs/xasprintf.c:31 +#: elf/ldconfig.c:1125 locale/programs/xasprintf.c:31 #: locale/programs/xmalloc.c:63 malloc/obstack.c:416 malloc/obstack.c:418 #: posix/getconf.c:460 posix/getconf.c:699 #, c-format msgid "memory exhausted" msgstr "памÑÑ‚ÑŒ иÑчерпана" -#: elf/ldconfig.c:1168 +#: elf/ldconfig.c:1158 #, c-format msgid "%s:%u: cannot read directory %s" msgstr "%s:%u: невозможно прочитать каталог %s" -#: elf/ldconfig.c:1206 +#: elf/ldconfig.c:1196 #, c-format msgid "relative path `%s' used to build cache" msgstr "Ð´Ð»Ñ Ð¿Ð¾ÑÑ‚Ñ€Ð¾ÐµÐ½Ð¸Ñ ÐºÑша иÑпользован отноÑительный путь «%s»" -#: elf/ldconfig.c:1228 +#: elf/ldconfig.c:1218 #, c-format msgid "Can't chdir to /" msgstr "Ðевозможно перейти в каталог /" -#: elf/ldconfig.c:1269 +#: elf/ldconfig.c:1259 #, c-format msgid "Can't open cache file directory %s\n" msgstr "Ðевозможно открыть каталог кÑш-файла %s\n" @@ -1137,27 +1137,27 @@ msgstr "%s не ÑвлÑетÑÑ Ñ€Ð°Ð·Ð´ÐµÐ»Ñемым объектным фаРmsgid "more than one dynamic segment\n" msgstr "более одного динамичеÑких Ñегментов\n" -#: elf/readlib.c:84 +#: elf/readlib.c:87 #, c-format msgid "Cannot fstat file %s.\n" msgstr "Ðевозможно выполнить fstat Ð´Ð»Ñ Ñ„Ð°Ð¹Ð»Ð° %s.\n" -#: elf/readlib.c:95 +#: elf/readlib.c:98 #, c-format msgid "File %s is empty, not checked." msgstr "Файл %s пуÑÑ‚; не был проверен." -#: elf/readlib.c:101 +#: elf/readlib.c:104 #, c-format msgid "File %s is too small, not checked." msgstr "Файл %s Ñлишком мал; не был проверен." -#: elf/readlib.c:111 +#: elf/readlib.c:114 #, c-format msgid "Cannot mmap file %s.\n" msgstr "Ðевозможно отобразить в памÑÑ‚ÑŒ файл %s.\n" -#: elf/readlib.c:149 +#: elf/readlib.c:152 #, c-format msgid "%s is not an ELF file - it has the wrong magic bytes at the start.\n" msgstr "%s не ÑвлÑетÑÑ Ñ„Ð°Ð¹Ð»Ð¾Ð¼ в формате ELF — Ð½ÐµÐ¿Ñ€Ð°Ð²Ð¸Ð»ÑŒÐ½Ð°Ñ Ñигнатура в начале.\n" diff --git a/po/rw.po b/po/rw.po index 19d3839208..2b9ff3722f 100644 --- a/po/rw.po +++ b/po/rw.po @@ -14,7 +14,7 @@ msgid "" msgstr "" "Project-Id-Version: libc 2.3\n" -"POT-Creation-Date: 2024-06-19 22:30+0200\n" +"POT-Creation-Date: 2024-07-21 00:32+0200\n" "PO-Revision-Date: 2005-04-04 10:55-0700\n" "Last-Translator: Steven Michael Murphy <murf@e-tools.com>\n" "Language-Team: Kinyarwanda <translation-team-rw@lists.sourceforge.net>\n" diff --git a/po/sk.po b/po/sk.po index 89472b5444..6d35519009 100644 --- a/po/sk.po +++ b/po/sk.po @@ -6,7 +6,7 @@ msgid "" msgstr "" "Project-Id-Version: libc 2.3.3\n" -"POT-Creation-Date: 2024-06-19 22:30+0200\n" +"POT-Creation-Date: 2024-07-21 00:32+0200\n" "PO-Revision-Date: 2004-08-05 22:19+0200\n" "Last-Translator: Marcel Telka <marcel@telka.sk>\n" "Language-Team: Slovak <sk-i18n@lists.linux.sk>\n" @@ -125,7 +125,7 @@ msgstr "" "[VÃSTUPNÃ_SÚBOR [VSTUPNÃ_SÚBOR]...]" #: catgets/gencat.c:246 debug/pcprofiledump.c:224 debug/xtrace.sh:63 -#: elf/ldconfig.c:232 elf/ldd.bash.in:38 elf/pldd.c:262 elf/sotruss.sh:75 +#: elf/ldconfig.c:233 elf/ldd.bash.in:38 elf/pldd.c:262 elf/sotruss.sh:75 #: elf/sprof.c:388 iconv/iconv_prog.c:404 iconv/iconvconfig.c:397 #: locale/programs/locale.c:292 locale/programs/localedef.c:459 #: login/programs/pt_chown.c:62 malloc/memusage.sh:70 malloc/memusagestat.c:582 @@ -142,7 +142,7 @@ msgstr "" "NA KONKRÉTNY ÚČEL.\n" #: catgets/gencat.c:251 debug/pcprofiledump.c:229 debug/xtrace.sh:67 -#: elf/ldconfig.c:237 elf/pldd.c:267 elf/sprof.c:394 iconv/iconv_prog.c:409 +#: elf/ldconfig.c:238 elf/pldd.c:267 elf/sprof.c:394 iconv/iconv_prog.c:409 #: iconv/iconvconfig.c:402 locale/programs/locale.c:297 #: locale/programs/localedef.c:464 malloc/memusage.sh:74 #: malloc/memusagestat.c:587 nscd/nscd.c:526 nss/getent.c:97 nss/makedb.c:392 @@ -266,7 +266,7 @@ msgstr "neprÃpustná veľkostÅ¥ ukazovateľa" msgid "unsupported dlinfo request" msgstr "nepodporovaná žiadosÅ¥ dlinfo" -#: elf/cache.c:296 elf/ldconfig.c:1249 +#: elf/cache.c:296 elf/ldconfig.c:1239 #, c-format msgid "Can't open cache file %s\n" msgstr "Nie je možné otvoriÅ¥ cache súbor %s\n" @@ -484,7 +484,7 @@ msgstr "nie je možné obnoviÅ¥ segment prot po reloc" msgid "RTLD_NEXT used in code not dynamically loaded" msgstr "RTLD_NEXT je použité pre kód, ktorý nie je dynamicky zavedený" -#: elf/dl-tls.c:1059 +#: elf/dl-tls.c:1136 msgid "cannot create TLS data structures" msgstr "nie je možné dátové Å¡truktúry TLS" @@ -492,143 +492,143 @@ msgstr "nie je možné dátové Å¡truktúry TLS" msgid "cannot allocate version reference table" msgstr "nie je možné prideliÅ¥ pamäť pre referenÄnú tabuľku verziÃ" -#: elf/ldconfig.c:124 +#: elf/ldconfig.c:125 msgid "Print cache" msgstr "VypÃsaÅ¥ cache" -#: elf/ldconfig.c:125 +#: elf/ldconfig.c:126 msgid "Generate verbose messages" msgstr "VypÃsovaÅ¥ podrobnejÅ¡ie správy" -#: elf/ldconfig.c:126 +#: elf/ldconfig.c:127 msgid "Don't build cache" msgstr "NevytvoriÅ¥ cache" -#: elf/ldconfig.c:128 +#: elf/ldconfig.c:129 msgid "Change to and use ROOT as root directory" msgstr "ZmeniÅ¥ adresár na ROOT a použiÅ¥ ho ako koreňový adresár" -#: elf/ldconfig.c:129 +#: elf/ldconfig.c:130 msgid "Use CACHE as cache file" msgstr "PoužiÅ¥ CACHE ako cache súbor" -#: elf/ldconfig.c:130 +#: elf/ldconfig.c:131 msgid "Use CONF as configuration file" msgstr "PoužiÅ¥ CONF ako konfiguraÄný súbor" -#: elf/ldconfig.c:131 +#: elf/ldconfig.c:132 msgid "Only process directories specified on the command line. Don't build cache." msgstr "Na prÃkazovom riadku sú zadané iba adresáre procesov. NevytváraÅ¥ cache." -#: elf/ldconfig.c:132 +#: elf/ldconfig.c:133 msgid "Manually link individual libraries." msgstr "RuÄne linkovaÅ¥ jednotlivé knižnice." -#: elf/ldconfig.c:142 +#: elf/ldconfig.c:143 msgid "Configure Dynamic Linker Run Time Bindings." msgstr "Konfigurácia runtime väzieb dynamického linkera." -#: elf/ldconfig.c:276 +#: elf/ldconfig.c:277 #, c-format msgid "Path `%s' given more than once" msgstr "Cesta `%s' bola zadaná viac ako raz" -#: elf/ldconfig.c:405 +#: elf/ldconfig.c:406 #, c-format msgid "Can't stat %s" msgstr "Zlyhal stat %s" -#: elf/ldconfig.c:486 +#: elf/ldconfig.c:487 #, c-format msgid "Can't stat %s\n" msgstr "Zlyhal stat %s\n" -#: elf/ldconfig.c:496 +#: elf/ldconfig.c:497 #, c-format msgid "%s is not a symbolic link\n" msgstr "%s nie je symbolický odkaz\n" -#: elf/ldconfig.c:515 +#: elf/ldconfig.c:516 #, c-format msgid "Can't unlink %s" msgstr "Nie je možné odstrániÅ¥ %s" -#: elf/ldconfig.c:521 +#: elf/ldconfig.c:522 #, c-format msgid "Can't link %s to %s" msgstr "Nie je možné vytvoriÅ¥ odkaz %s na %s" -#: elf/ldconfig.c:527 +#: elf/ldconfig.c:528 msgid " (changed)\n" msgstr " (zmenené)\n" -#: elf/ldconfig.c:529 +#: elf/ldconfig.c:530 msgid " (SKIPPED)\n" msgstr " (VYNECHANÉ)\n" -#: elf/ldconfig.c:584 +#: elf/ldconfig.c:585 #, c-format msgid "Can't find %s" msgstr "Nie je možné nájsÅ¥ %s" -#: elf/ldconfig.c:600 elf/ldconfig.c:770 elf/ldconfig.c:837 +#: elf/ldconfig.c:601 elf/ldconfig.c:760 elf/ldconfig.c:827 #, c-format msgid "Cannot lstat %s" msgstr "Zlyhal lstat %s" -#: elf/ldconfig.c:606 +#: elf/ldconfig.c:607 #, c-format msgid "Ignored file %s since it is not a regular file." msgstr "Súbor %s ignorovaný, keÄže nie je regulérnym súborom." -#: elf/ldconfig.c:614 +#: elf/ldconfig.c:615 #, c-format msgid "No link created since soname could not be found for %s" msgstr "Odkaz nebol vytvorený, keÄže pre %s nebolo možné nájsÅ¥ soname" -#: elf/ldconfig.c:726 +#: elf/ldconfig.c:716 #, c-format msgid "Can't open directory %s" msgstr "Nie je možné otvoriÅ¥ adresár %s" -#: elf/ldconfig.c:787 elf/ldconfig.c:825 elf/readlib.c:78 +#: elf/ldconfig.c:777 elf/ldconfig.c:815 elf/readlib.c:81 #, c-format msgid "Input file %s not found.\n" msgstr "Vstupný súbor %s nebol nájdený.\n" -#: elf/ldconfig.c:794 +#: elf/ldconfig.c:784 #, c-format msgid "Cannot stat %s" msgstr "Zlyhal stat %s" -#: elf/ldconfig.c:913 +#: elf/ldconfig.c:903 #, c-format msgid "libc6 library %s in wrong directory" msgstr "libc6 knižnica %s je v nesprávnom adresári" -#: elf/ldconfig.c:932 +#: elf/ldconfig.c:922 #, c-format msgid "libraries %s and %s in directory %s have same soname but different type." msgstr "knižnice %s a %s v adresári %s majú rovnaké soname, ale odliÅ¡ný typ." -#: elf/ldconfig.c:1135 locale/programs/xasprintf.c:31 +#: elf/ldconfig.c:1125 locale/programs/xasprintf.c:31 #: locale/programs/xmalloc.c:63 malloc/obstack.c:416 malloc/obstack.c:418 #: posix/getconf.c:460 posix/getconf.c:699 #, c-format msgid "memory exhausted" msgstr "nedostatok pamäti" -#: elf/ldconfig.c:1206 +#: elf/ldconfig.c:1196 #, c-format msgid "relative path `%s' used to build cache" msgstr "relatÃvna cesta `%s' použitá na vytvorenie cache" -#: elf/ldconfig.c:1228 +#: elf/ldconfig.c:1218 #, c-format msgid "Can't chdir to /" msgstr "Nie je možné zmeniÅ¥ adresár na /" -#: elf/ldconfig.c:1269 +#: elf/ldconfig.c:1259 #, c-format msgid "Can't open cache file directory %s\n" msgstr "Nie je možné otvoriÅ¥ adresár cache súboru %s\n" @@ -674,22 +674,22 @@ msgstr "%s nie je zdieľaný objektový súbor (Typ: %d).\n" msgid "more than one dynamic segment\n" msgstr "viac ako jeden dynamický segment\n" -#: elf/readlib.c:84 +#: elf/readlib.c:87 #, c-format msgid "Cannot fstat file %s.\n" msgstr "Nie je možné vykonaÅ¥ fstat() súboru %s.\n" -#: elf/readlib.c:101 +#: elf/readlib.c:104 #, c-format msgid "File %s is too small, not checked." msgstr "Súbor %s je prÃliÅ¡ krátky, neskontrolovaný." -#: elf/readlib.c:111 +#: elf/readlib.c:114 #, c-format msgid "Cannot mmap file %s.\n" msgstr "Nie je možné mmap-ovaÅ¥ súbor %s.\n" -#: elf/readlib.c:149 +#: elf/readlib.c:152 #, c-format msgid "%s is not an ELF file - it has the wrong magic bytes at the start.\n" msgstr "%s nie je ELF súbor - na zaÄiatku obsahujé chybné magické bajty.\n" diff --git a/po/sl.po b/po/sl.po index 4c71f4e0ca..eee7114006 100644 --- a/po/sl.po +++ b/po/sl.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: libc 2.22-pre1\n" "Report-Msgid-Bugs-To: bug-coreutils@gnu.org\n" -"POT-Creation-Date: 2024-06-19 22:30+0200\n" +"POT-Creation-Date: 2024-07-21 00:32+0200\n" "PO-Revision-Date: 2016-01-04 23:59+0100\n" "Last-Translator: Primož Peterlin <primozz.peterlin@gmail.com>\n" "Language-Team: Slovenian <translation-team-sl@lists.sourceforge.net>\n" @@ -137,7 +137,7 @@ msgstr "" "-o IZHODNA_DATOTEKA [VHODNA_DATOTEKA]...\n" "[IZHODNA_DATOTEKA [VHODNA_DATOTEKA]...]" -#: catgets/gencat.c:230 debug/pcprofiledump.c:208 elf/ldconfig.c:216 +#: catgets/gencat.c:230 debug/pcprofiledump.c:208 elf/ldconfig.c:217 #: elf/pldd.c:246 elf/sln.c:77 elf/sprof.c:371 iconv/iconv_prog.c:387 #: iconv/iconvconfig.c:380 locale/programs/locale.c:275 #: locale/programs/localedef.c:437 login/programs/pt_chown.c:88 @@ -152,7 +152,7 @@ msgstr "" "%s.\n" #: catgets/gencat.c:246 debug/pcprofiledump.c:224 debug/xtrace.sh:63 -#: elf/ldconfig.c:232 elf/ldd.bash.in:38 elf/pldd.c:262 elf/sotruss.sh:75 +#: elf/ldconfig.c:233 elf/ldd.bash.in:38 elf/pldd.c:262 elf/sotruss.sh:75 #: elf/sprof.c:388 iconv/iconv_prog.c:404 iconv/iconvconfig.c:397 #: locale/programs/locale.c:292 locale/programs/localedef.c:459 #: login/programs/pt_chown.c:62 malloc/memusage.sh:70 malloc/memusagestat.c:582 @@ -169,7 +169,7 @@ msgstr "" "niti jamstev USTREZNOSTI ZA PRODAJO ali PRIMERNOSTI ZA RABO.\n" #: catgets/gencat.c:251 debug/pcprofiledump.c:229 debug/xtrace.sh:67 -#: elf/ldconfig.c:237 elf/pldd.c:267 elf/sprof.c:394 iconv/iconv_prog.c:409 +#: elf/ldconfig.c:238 elf/pldd.c:267 elf/sprof.c:394 iconv/iconv_prog.c:409 #: iconv/iconvconfig.c:402 locale/programs/locale.c:297 #: locale/programs/localedef.c:464 malloc/memusage.sh:74 #: malloc/memusagestat.c:587 nscd/nscd.c:526 nss/getent.c:97 nss/makedb.c:392 @@ -365,7 +365,7 @@ msgstr "napaÄna zaÅ¡Äita" msgid "invalid mode parameter" msgstr "napaÄen parameter zaÅ¡Äita" -#: elf/cache.c:296 elf/ldconfig.c:1249 +#: elf/cache.c:296 elf/ldconfig.c:1239 #, c-format msgid "Can't open cache file %s\n" msgstr "Ni mogoÄe odpreti predpomnilniÅ¡ke datoteke %s\n" @@ -636,7 +636,7 @@ msgstr "dodatne zaÅ¡Äite pomnilnika po premiku ni mogoÄe uporabiti" msgid "RTLD_NEXT used in code not dynamically loaded" msgstr "RTLD_NEXT uporabljen v kodi se ni dinamiÄno naložil" -#: elf/dl-tls.c:1059 +#: elf/dl-tls.c:1136 msgid "cannot create TLS data structures" msgstr "podatkovnih struktur TLS ni mogoÄe ustvariti" @@ -648,151 +648,151 @@ msgstr "napaka pri vpogledu v razliÄico" msgid "cannot allocate version reference table" msgstr "ni mogoÄe dodeliti tabele sklicev razliÄic" -#: elf/ldconfig.c:124 +#: elf/ldconfig.c:125 msgid "Print cache" msgstr "IzpiÅ¡i vsebino predpomnilnika" -#: elf/ldconfig.c:125 +#: elf/ldconfig.c:126 msgid "Generate verbose messages" msgstr "Ustvarjaj obÅ¡irna sporoÄila" -#: elf/ldconfig.c:126 +#: elf/ldconfig.c:127 msgid "Don't build cache" msgstr "Ne gradi predpomnilnika" -#: elf/ldconfig.c:128 +#: elf/ldconfig.c:129 msgid "Change to and use ROOT as root directory" msgstr "Spremeni delovni imenik v KOREN in ga uporabi kot korenski imenik" -#: elf/ldconfig.c:128 +#: elf/ldconfig.c:129 msgid "ROOT" msgstr "KOREN" -#: elf/ldconfig.c:129 +#: elf/ldconfig.c:130 msgid "CACHE" msgstr "PREDPOMNILNIK" -#: elf/ldconfig.c:129 +#: elf/ldconfig.c:130 msgid "Use CACHE as cache file" msgstr "Uporabi PREDPOMNILNIK kot predpomnilniÅ¡ko datoteko" -#: elf/ldconfig.c:130 +#: elf/ldconfig.c:131 msgid "CONF" msgstr "KONF" -#: elf/ldconfig.c:130 +#: elf/ldconfig.c:131 msgid "Use CONF as configuration file" msgstr "Uporabi KONF kot nastavitveno datoteko" -#: elf/ldconfig.c:131 +#: elf/ldconfig.c:132 msgid "Only process directories specified on the command line. Don't build cache." msgstr "Obdelaj le imenike, doloÄene v ukazni vrstici. Ne gradi predpomnilnika." -#: elf/ldconfig.c:132 +#: elf/ldconfig.c:133 msgid "Manually link individual libraries." msgstr "RoÄno poveži posamiÄne knjižnice." -#: elf/ldconfig.c:133 +#: elf/ldconfig.c:134 msgid "FORMAT" msgstr "OBLIKA" -#: elf/ldconfig.c:134 +#: elf/ldconfig.c:135 msgid "Ignore auxiliary cache file" msgstr "Ne upoÅ¡tevaj nadomestne predpomnilniÅ¡ke datoteke" -#: elf/ldconfig.c:142 +#: elf/ldconfig.c:143 msgid "Configure Dynamic Linker Run Time Bindings." msgstr "Nastavi izvajalne povezave dinamiÄnega povezovalnika." -#: elf/ldconfig.c:276 +#: elf/ldconfig.c:277 #, c-format msgid "Path `%s' given more than once" msgstr "Pot »%s« je podana veÄ kot enkrat" -#: elf/ldconfig.c:405 +#: elf/ldconfig.c:406 #, c-format msgid "Can't stat %s" msgstr "Statusa %s ni moÄ ugotoviti" -#: elf/ldconfig.c:486 +#: elf/ldconfig.c:487 #, c-format msgid "Can't stat %s\n" msgstr "Statusa %s ni moÄ ugotoviti\n" -#: elf/ldconfig.c:496 +#: elf/ldconfig.c:497 #, c-format msgid "%s is not a symbolic link\n" msgstr "%s ni simbolna povezava\n" -#: elf/ldconfig.c:515 +#: elf/ldconfig.c:516 #, c-format msgid "Can't unlink %s" msgstr "Ni mogoÄe odstraniti povezave %s" -#: elf/ldconfig.c:521 +#: elf/ldconfig.c:522 #, c-format msgid "Can't link %s to %s" msgstr "Ni mogoÄe ustvariti povezave %s na %s" -#: elf/ldconfig.c:527 +#: elf/ldconfig.c:528 msgid " (changed)\n" msgstr " (zamenjano)\n" -#: elf/ldconfig.c:529 +#: elf/ldconfig.c:530 msgid " (SKIPPED)\n" msgstr " (PRESKOÄŒENO)\n" -#: elf/ldconfig.c:584 +#: elf/ldconfig.c:585 #, c-format msgid "Can't find %s" msgstr "Neuspelo iskanje %s" -#: elf/ldconfig.c:600 elf/ldconfig.c:770 elf/ldconfig.c:837 +#: elf/ldconfig.c:601 elf/ldconfig.c:760 elf/ldconfig.c:827 #, c-format msgid "Cannot lstat %s" msgstr "Ni mogoÄe izvesti lstat %s" -#: elf/ldconfig.c:606 +#: elf/ldconfig.c:607 #, c-format msgid "Ignored file %s since it is not a regular file." msgstr "Datoteka %s ni bila upoÅ¡tevana, ker ni navadna datoteka." -#: elf/ldconfig.c:614 +#: elf/ldconfig.c:615 #, c-format msgid "No link created since soname could not be found for %s" msgstr "Povezava ni bila ustvarjena, ker ni bilo moÄ najti soname za %s" -#: elf/ldconfig.c:726 +#: elf/ldconfig.c:716 #, c-format msgid "Can't open directory %s" msgstr "Ni mogoÄe odpreti imenika %s" -#: elf/ldconfig.c:787 elf/ldconfig.c:825 elf/readlib.c:78 +#: elf/ldconfig.c:777 elf/ldconfig.c:815 elf/readlib.c:81 #, c-format msgid "Input file %s not found.\n" msgstr "Vhodne datoteke %s ni moÄ najti.\n" -#: elf/ldconfig.c:794 +#: elf/ldconfig.c:784 #, c-format msgid "Cannot stat %s" msgstr "Statusa %s ni moÄ ugotoviti" -#: elf/ldconfig.c:913 +#: elf/ldconfig.c:903 #, c-format msgid "libc6 library %s in wrong directory" msgstr "knjižnica libc6 %s v napaÄnem imeniku" -#: elf/ldconfig.c:932 +#: elf/ldconfig.c:922 #, c-format msgid "libraries %s and %s in directory %s have same soname but different type." msgstr "knjižnici %s in %s v imeniku %s imata isti soname, a sta razliÄnega tipa." -#: elf/ldconfig.c:1061 +#: elf/ldconfig.c:1051 #, c-format msgid "Warning: ignoring configuration file that cannot be opened: %s" msgstr "Opozorilo: nastavitvene datoteke ni mogoÄe prebrati in se je ne upoÅ¡teva: %s" -#: elf/ldconfig.c:1128 +#: elf/ldconfig.c:1118 #, c-format msgid "need absolute file name for configuration file when using -r" msgstr "ob izbiri -r je potrebo absolutno ime za nastavitveno datoteko" @@ -803,29 +803,29 @@ msgstr "ob izbiri -r je potrebo absolutno ime za nastavitveno datoteko" # ! INEXACT # #-#-#-#-# gettext-tools-0.18.3.sl.po (GNU gettext-tools 0.18.3) #-#-#-#-# # Morda ,,Zmanjkalo pomnilnika''? -#: elf/ldconfig.c:1135 locale/programs/xasprintf.c:31 +#: elf/ldconfig.c:1125 locale/programs/xasprintf.c:31 #: locale/programs/xmalloc.c:63 malloc/obstack.c:416 malloc/obstack.c:418 #: posix/getconf.c:460 posix/getconf.c:699 #, c-format msgid "memory exhausted" msgstr "pomnilnik porabljen" -#: elf/ldconfig.c:1168 +#: elf/ldconfig.c:1158 #, c-format msgid "%s:%u: cannot read directory %s" msgstr "%s:%u: imenika %s ni mogoÄe prebrati" -#: elf/ldconfig.c:1206 +#: elf/ldconfig.c:1196 #, c-format msgid "relative path `%s' used to build cache" msgstr "relativna pot »%s« uporabljena za izgradnjo predpomnilnika" -#: elf/ldconfig.c:1228 +#: elf/ldconfig.c:1218 #, c-format msgid "Can't chdir to /" msgstr "Sprememba imenika na / ni mogoÄa" -#: elf/ldconfig.c:1269 +#: elf/ldconfig.c:1259 #, c-format msgid "Can't open cache file directory %s\n" msgstr "Ni mogoÄe odpreti imenika %s s predpomnilniÅ¡ko datoteko\n" @@ -1018,27 +1018,27 @@ msgstr "%s ni deljena predmetna datoteka (tip: %d).\n" msgid "more than one dynamic segment\n" msgstr "veÄ kot en dinamiÄni segment\n" -#: elf/readlib.c:84 +#: elf/readlib.c:87 #, c-format msgid "Cannot fstat file %s.\n" msgstr "fstat() na datoteki %s ni mogoÄe izvesti.\n" -#: elf/readlib.c:95 +#: elf/readlib.c:98 #, c-format msgid "File %s is empty, not checked." msgstr "Datoteka %s je prazna, brez preverjanja." -#: elf/readlib.c:101 +#: elf/readlib.c:104 #, c-format msgid "File %s is too small, not checked." msgstr "Datoteka %s je premajhna, brez preverjanja." -#: elf/readlib.c:111 +#: elf/readlib.c:114 #, c-format msgid "Cannot mmap file %s.\n" msgstr "mmap() na datoteki %s ni mogoÄe izvesti.\n" -#: elf/readlib.c:149 +#: elf/readlib.c:152 #, c-format msgid "%s is not an ELF file - it has the wrong magic bytes at the start.\n" msgstr "%s ni datoteka ELF - magiÄno zaporedje bajtov na zaÄetku je napaÄno.\n" diff --git a/po/sr.po b/po/sr.po index 44fcb40287..42a588ca87 100644 --- a/po/sr.po +++ b/po/sr.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: libc 2.38.9000\n" "Report-Msgid-Bugs-To: \n" -"POT-Creation-Date: 2024-06-19 22:30+0200\n" +"POT-Creation-Date: 2024-07-21 00:32+0200\n" "PO-Revision-Date: 2024-01-21 08:35+0100\n" "Last-Translator: МироÑлав Ðиколић <miroslavnikolic@rocketmail.com>\n" "Language-Team: Serbian <(nothing)>\n" @@ -148,7 +148,7 @@ msgstr "" "-o ИЗЛÐЗÐÐ-ДÐТОТЕКР[УЛÐЗÐÐ-ДÐТОТЕКÐ]...\n" "[ИЗЛÐЗÐÐ-ДÐТОТЕКР[УЛÐЗÐÐ-ДÐТОТЕКÐ]...]" -#: catgets/gencat.c:230 debug/pcprofiledump.c:208 elf/ldconfig.c:216 +#: catgets/gencat.c:230 debug/pcprofiledump.c:208 elf/ldconfig.c:217 #: elf/pldd.c:246 elf/sln.c:77 elf/sprof.c:371 iconv/iconv_prog.c:387 #: iconv/iconvconfig.c:380 locale/programs/locale.c:275 #: locale/programs/localedef.c:437 login/programs/pt_chown.c:88 @@ -163,7 +163,7 @@ msgstr "" "%s.\n" #: catgets/gencat.c:246 debug/pcprofiledump.c:224 debug/xtrace.sh:63 -#: elf/ldconfig.c:232 elf/ldd.bash.in:38 elf/pldd.c:262 elf/sotruss.sh:75 +#: elf/ldconfig.c:233 elf/ldd.bash.in:38 elf/pldd.c:262 elf/sotruss.sh:75 #: elf/sprof.c:388 iconv/iconv_prog.c:404 iconv/iconvconfig.c:397 #: locale/programs/locale.c:292 locale/programs/localedef.c:459 #: login/programs/pt_chown.c:62 malloc/memusage.sh:70 malloc/memusagestat.c:582 @@ -179,7 +179,7 @@ msgstr "" "ÐИКÐКВРгаранција; чак ни о ТРЖИШÐОЈ ВРЕДÐОСТИ или ПРИЛÐГОЂЕÐОСТИ ОДРЕЂЕÐОЈ ÐÐМЕÐИ.\n" #: catgets/gencat.c:251 debug/pcprofiledump.c:229 debug/xtrace.sh:67 -#: elf/ldconfig.c:237 elf/pldd.c:267 elf/sprof.c:394 iconv/iconv_prog.c:409 +#: elf/ldconfig.c:238 elf/pldd.c:267 elf/sprof.c:394 iconv/iconv_prog.c:409 #: iconv/iconvconfig.c:402 locale/programs/locale.c:297 #: locale/programs/localedef.c:464 malloc/memusage.sh:74 #: malloc/memusagestat.c:587 nscd/nscd.c:526 nss/getent.c:97 nss/makedb.c:392 @@ -395,7 +395,7 @@ msgstr "Датотека оÑтаве има погрешну крајноÑÑ‚.\ msgid "Cache generated by: " msgstr "ОÑтаву је Ñтворио:" -#: elf/cache.c:296 elf/ldconfig.c:1249 +#: elf/cache.c:296 elf/ldconfig.c:1239 #, c-format msgid "Can't open cache file %s\n" msgstr "Ðе могу да отворим датотеку оÑтаве „%s“\n" @@ -706,7 +706,7 @@ msgstr "не могу да применим додатну заштиту мем msgid "RTLD_NEXT used in code not dynamically loaded" msgstr "„RTLD_NEXT“ коришћено у коду није динамички учитано" -#: elf/dl-tls.c:1059 +#: elf/dl-tls.c:1136 msgid "cannot create TLS data structures" msgstr "не могу да направим Ñтруктуре ТЛС података" @@ -722,216 +722,216 @@ msgstr "не могу да доделим табелу упуте издања" msgid "DT_RELR without GLIBC_ABI_DT_RELR dependency" msgstr "„DT_RELR“ без „GLIBC_ABI_DT_RELR“ завиÑноÑти" -#: elf/ldconfig.c:124 +#: elf/ldconfig.c:125 msgid "Print cache" msgstr "ИÑпиÑује оÑтаву" -#: elf/ldconfig.c:125 +#: elf/ldconfig.c:126 msgid "Generate verbose messages" msgstr "Ствара опширне поруке" -#: elf/ldconfig.c:126 +#: elf/ldconfig.c:127 msgid "Don't build cache" msgstr "Ðе гради оÑтаву" -#: elf/ldconfig.c:127 +#: elf/ldconfig.c:128 msgid "Don't update symbolic links" msgstr "Ðе оÑвежава Ñимболичке везе" -#: elf/ldconfig.c:128 +#: elf/ldconfig.c:129 msgid "Change to and use ROOT as root directory" msgstr "Прелази у и кориÑти КОРЕÐИ као корени директоријум" -#: elf/ldconfig.c:128 +#: elf/ldconfig.c:129 msgid "ROOT" msgstr "КОРЕÐИ" -#: elf/ldconfig.c:129 +#: elf/ldconfig.c:130 msgid "CACHE" msgstr "ОСТÐÐ’Ð" -#: elf/ldconfig.c:129 +#: elf/ldconfig.c:130 msgid "Use CACHE as cache file" msgstr "КориÑти ОСТÐВУ као датотеку оÑтаве" -#: elf/ldconfig.c:130 +#: elf/ldconfig.c:131 msgid "CONF" msgstr "ПОДЕШÐÐ’ÐЊÐ" -#: elf/ldconfig.c:130 +#: elf/ldconfig.c:131 msgid "Use CONF as configuration file" msgstr "КориÑти ПОДЕШÐÐ’ÐЊРкао датотеку подешавања" -#: elf/ldconfig.c:131 +#: elf/ldconfig.c:132 msgid "Only process directories specified on the command line. Don't build cache." msgstr "Само обрађује директоријуме наведене на линији наредби. Ðе гради оÑтаву." -#: elf/ldconfig.c:132 +#: elf/ldconfig.c:133 msgid "Manually link individual libraries." msgstr "Ручно Ñвезује појединачне библиотеке." -#: elf/ldconfig.c:133 +#: elf/ldconfig.c:134 msgid "FORMAT" msgstr "ФОРМÐТ" -#: elf/ldconfig.c:133 +#: elf/ldconfig.c:134 msgid "Format to use: new (default), old, or compat" msgstr "Формат за коришћење: „new“ (оÑновно), „old“, или „compat“" -#: elf/ldconfig.c:134 +#: elf/ldconfig.c:135 msgid "Ignore auxiliary cache file" msgstr "Занемарује помоћну датотеку оÑтаве" -#: elf/ldconfig.c:142 +#: elf/ldconfig.c:143 msgid "Configure Dynamic Linker Run Time Bindings." msgstr "Подешава Ñвезивања времена извршења динамичког везача." -#: elf/ldconfig.c:276 +#: elf/ldconfig.c:277 #, c-format msgid "Path `%s' given more than once" msgstr "Путања „%s“ је дата више пута" -#: elf/ldconfig.c:277 +#: elf/ldconfig.c:278 #, c-format msgid "(from %s:%d and %s:%d)\n" msgstr "(од %s:%d и %s:%d)\n" -#: elf/ldconfig.c:309 elf/ldconfig.c:350 +#: elf/ldconfig.c:310 elf/ldconfig.c:351 #, c-format msgid "Could not form glibc-hwcaps path" msgstr "Ðе могу да формирам „glibc-hwcaps“ путању" -#: elf/ldconfig.c:323 +#: elf/ldconfig.c:324 #, c-format msgid "Listing directory %s" msgstr "ИÑпиÑујем директоријум „%s“" -#: elf/ldconfig.c:405 +#: elf/ldconfig.c:406 #, c-format msgid "Can't stat %s" msgstr "Ðе могу да добавим податке за „%s“" -#: elf/ldconfig.c:486 +#: elf/ldconfig.c:487 #, c-format msgid "Can't stat %s\n" msgstr "Ðе могу да добавим податке за „%s“\n" -#: elf/ldconfig.c:496 +#: elf/ldconfig.c:497 #, c-format msgid "%s is not a symbolic link\n" msgstr "„%s“ није Ñимболичка веза\n" -#: elf/ldconfig.c:515 +#: elf/ldconfig.c:516 #, c-format msgid "Can't unlink %s" msgstr "Ðе могу да развежем „%s“" -#: elf/ldconfig.c:521 +#: elf/ldconfig.c:522 #, c-format msgid "Can't link %s to %s" msgstr "Ðе могу да повежем „%s“ Ñа „%s“" -#: elf/ldconfig.c:527 +#: elf/ldconfig.c:528 msgid " (changed)\n" msgstr " (измењено)\n" -#: elf/ldconfig.c:529 +#: elf/ldconfig.c:530 msgid " (SKIPPED)\n" msgstr " (ПРЕСКОЧЕÐО)\n" -#: elf/ldconfig.c:584 +#: elf/ldconfig.c:585 #, c-format msgid "Can't find %s" msgstr "Ðе могу да нађем „%s“" -#: elf/ldconfig.c:600 elf/ldconfig.c:770 elf/ldconfig.c:837 +#: elf/ldconfig.c:601 elf/ldconfig.c:760 elf/ldconfig.c:827 #, c-format msgid "Cannot lstat %s" msgstr "Ðе могу да извршим „lstat“ за „%s“" -#: elf/ldconfig.c:606 +#: elf/ldconfig.c:607 #, c-format msgid "Ignored file %s since it is not a regular file." msgstr "Датотека „%s“ је занемарена јер није обична датотека." -#: elf/ldconfig.c:614 +#: elf/ldconfig.c:615 #, c-format msgid "No link created since soname could not be found for %s" msgstr "Ðије направљена ниједна веза јер не могу да нађем „soname“ за „%s“" -#: elf/ldconfig.c:711 +#: elf/ldconfig.c:701 #, c-format msgid " (from %s:%d)\n" msgstr " (од %s:%d)\n" -#: elf/ldconfig.c:726 +#: elf/ldconfig.c:716 #, c-format msgid "Can't open directory %s" msgstr "Ðе могу да отворим директоријум „%s“" -#: elf/ldconfig.c:753 elf/ldconfig.c:758 +#: elf/ldconfig.c:743 elf/ldconfig.c:748 #, c-format msgid "Could not form library path" msgstr "Ðе могу да направим путању библиотеке" -#: elf/ldconfig.c:787 elf/ldconfig.c:825 elf/readlib.c:78 +#: elf/ldconfig.c:777 elf/ldconfig.c:815 elf/readlib.c:81 #, c-format msgid "Input file %s not found.\n" msgstr "ÐиÑам нашао улазну датотеку „%s“.\n" -#: elf/ldconfig.c:794 +#: elf/ldconfig.c:784 #, c-format msgid "Cannot stat %s" msgstr "Ðе могу да добавим податке за „%s“" -#: elf/ldconfig.c:913 +#: elf/ldconfig.c:903 #, c-format msgid "libc6 library %s in wrong directory" msgstr "„libc6“ библиотека „%s“ је у погрешном директоријуму" -#: elf/ldconfig.c:932 +#: elf/ldconfig.c:922 #, c-format msgid "libraries %s and %s in directory %s have same soname but different type." msgstr "библиотека „%s“ и „%s“ у директоријуму „%s“ имају иÑти „soname“ али различите врÑте." -#: elf/ldconfig.c:1061 +#: elf/ldconfig.c:1051 #, c-format msgid "Warning: ignoring configuration file that cannot be opened: %s" msgstr "Упозорење: занемарујем датотеку подешавања која Ñе не може отворити: %s" -#: elf/ldconfig.c:1109 +#: elf/ldconfig.c:1099 #, c-format msgid "%s:%u: hwcap directive ignored" msgstr "%s:%u: „hwcap“ директива је занемарена" -#: elf/ldconfig.c:1128 +#: elf/ldconfig.c:1118 #, c-format msgid "need absolute file name for configuration file when using -r" msgstr "потребан је апÑолутни назив датотеке за датотеку подешавања када Ñе кориÑти „-r“" -#: elf/ldconfig.c:1135 locale/programs/xasprintf.c:31 +#: elf/ldconfig.c:1125 locale/programs/xasprintf.c:31 #: locale/programs/xmalloc.c:63 malloc/obstack.c:416 malloc/obstack.c:418 #: posix/getconf.c:460 posix/getconf.c:699 #, c-format msgid "memory exhausted" msgstr "меморија је потрошена" -#: elf/ldconfig.c:1168 +#: elf/ldconfig.c:1158 #, c-format msgid "%s:%u: cannot read directory %s" msgstr "%s:%u: не могу да читам директоријум „%s“" -#: elf/ldconfig.c:1206 +#: elf/ldconfig.c:1196 #, c-format msgid "relative path `%s' used to build cache" msgstr "релативна путања „%s“ је коришћена за градњу оÑтаве" -#: elf/ldconfig.c:1228 +#: elf/ldconfig.c:1218 #, c-format msgid "Can't chdir to /" msgstr "Ðе могу да Ñе пребацим у директоријум /" -#: elf/ldconfig.c:1269 +#: elf/ldconfig.c:1259 #, c-format msgid "Can't open cache file directory %s\n" msgstr "Ðе могу да отворим директоријум датотеке оÑтаве „%s“\n" @@ -1129,27 +1129,27 @@ msgstr "„%s“ није датотека дељеног објекта (Ð’Ñ€Ñ msgid "more than one dynamic segment\n" msgstr "више од једног динамичког одломка\n" -#: elf/readlib.c:84 +#: elf/readlib.c:87 #, c-format msgid "Cannot fstat file %s.\n" msgstr "Ðе могу да добијем податке о датотеци „%s“.\n" -#: elf/readlib.c:95 +#: elf/readlib.c:98 #, c-format msgid "File %s is empty, not checked." msgstr "Датотека „%s“ је празна, није проверена." -#: elf/readlib.c:101 +#: elf/readlib.c:104 #, c-format msgid "File %s is too small, not checked." msgstr "Датотека „%s“ је премала, није проверена." -#: elf/readlib.c:111 +#: elf/readlib.c:114 #, c-format msgid "Cannot mmap file %s.\n" msgstr "Ðе могу да м-мапирам датотеку „%s“.\n" -#: elf/readlib.c:149 +#: elf/readlib.c:152 #, c-format msgid "%s is not an ELF file - it has the wrong magic bytes at the start.\n" msgstr "„%s“ није ЕЛФ датотека – има погрешне магичне бајтове на почетку.\n" diff --git a/po/sv.po b/po/sv.po index aec074fbea..66bca84762 100644 --- a/po/sv.po +++ b/po/sv.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: libc 2.39.9000\n" -"POT-Creation-Date: 2024-06-19 22:30+0200\n" +"POT-Creation-Date: 2024-07-21 00:32+0200\n" "PO-Revision-Date: 2024-06-23 09:41+0200\n" "Last-Translator: Göran Uddeborg <goeran@uddeborg.se>\n" "Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n" @@ -151,7 +151,7 @@ msgstr "" "-o UTFIL [INFIL]...\n" "[UTFIL [INFIL]...]" -#: catgets/gencat.c:230 debug/pcprofiledump.c:208 elf/ldconfig.c:216 +#: catgets/gencat.c:230 debug/pcprofiledump.c:208 elf/ldconfig.c:217 #: elf/pldd.c:246 elf/sln.c:77 elf/sprof.c:371 iconv/iconv_prog.c:387 #: iconv/iconvconfig.c:380 locale/programs/locale.c:275 #: locale/programs/localedef.c:437 login/programs/pt_chown.c:88 @@ -167,7 +167,7 @@ msgstr "" "Rapportera fel eller synpunkter pÃ¥ översättningen till <tp-sv@listor.tp-sv.se>.\n" #: catgets/gencat.c:246 debug/pcprofiledump.c:224 debug/xtrace.sh:63 -#: elf/ldconfig.c:232 elf/ldd.bash.in:38 elf/pldd.c:262 elf/sotruss.sh:75 +#: elf/ldconfig.c:233 elf/ldd.bash.in:38 elf/pldd.c:262 elf/sotruss.sh:75 #: elf/sprof.c:388 iconv/iconv_prog.c:404 iconv/iconvconfig.c:397 #: locale/programs/locale.c:292 locale/programs/localedef.c:459 #: login/programs/pt_chown.c:62 malloc/memusage.sh:70 malloc/memusagestat.c:582 @@ -184,7 +184,7 @@ msgstr "" "ÄNDAMÃ…L.\n" #: catgets/gencat.c:251 debug/pcprofiledump.c:229 debug/xtrace.sh:67 -#: elf/ldconfig.c:237 elf/pldd.c:267 elf/sprof.c:394 iconv/iconv_prog.c:409 +#: elf/ldconfig.c:238 elf/pldd.c:267 elf/sprof.c:394 iconv/iconv_prog.c:409 #: iconv/iconvconfig.c:402 locale/programs/locale.c:297 #: locale/programs/localedef.c:464 malloc/memusage.sh:74 #: malloc/memusagestat.c:587 nscd/nscd.c:526 nss/getent.c:97 nss/makedb.c:392 @@ -399,7 +399,7 @@ msgstr "Cache-filen har fel byteordning.\n" msgid "Cache generated by: " msgstr "Cachen genererad av: " -#: elf/cache.c:296 elf/ldconfig.c:1249 +#: elf/cache.c:296 elf/ldconfig.c:1239 #, c-format msgid "Can't open cache file %s\n" msgstr "Kan inte öppna cache-filen %s\n" @@ -712,7 +712,7 @@ msgstr "kan inte applicera extra minnesskydd efter relokering" msgid "RTLD_NEXT used in code not dynamically loaded" msgstr "RTLD_NEXT används i kod som inte är dynamiskt laddad" -#: elf/dl-tls.c:1059 +#: elf/dl-tls.c:1136 msgid "cannot create TLS data structures" msgstr "kan inte skapa datastrukturer för TLS" @@ -728,216 +728,216 @@ msgstr "kan inte allokera tabell för versionsreferenser" msgid "DT_RELR without GLIBC_ABI_DT_RELR dependency" msgstr "DT_RELR utan beroandet GLIBC_ABI_DT_RELR" -#: elf/ldconfig.c:124 +#: elf/ldconfig.c:125 msgid "Print cache" msgstr "Visa cache" -#: elf/ldconfig.c:125 +#: elf/ldconfig.c:126 msgid "Generate verbose messages" msgstr "Använd utförligare meddelanden" -#: elf/ldconfig.c:126 +#: elf/ldconfig.c:127 msgid "Don't build cache" msgstr "Bygg inte cache" -#: elf/ldconfig.c:127 +#: elf/ldconfig.c:128 msgid "Don't update symbolic links" msgstr "Uppdatera inte symboliska länkar" -#: elf/ldconfig.c:128 +#: elf/ldconfig.c:129 msgid "Change to and use ROOT as root directory" msgstr "Byt till och använd ROT som rotkatalog" -#: elf/ldconfig.c:128 +#: elf/ldconfig.c:129 msgid "ROOT" msgstr "ROT" -#: elf/ldconfig.c:129 +#: elf/ldconfig.c:130 msgid "CACHE" msgstr "CACHE" -#: elf/ldconfig.c:129 +#: elf/ldconfig.c:130 msgid "Use CACHE as cache file" msgstr "Använd CACHE som cache-fil" -#: elf/ldconfig.c:130 +#: elf/ldconfig.c:131 msgid "CONF" msgstr "CONF" -#: elf/ldconfig.c:130 +#: elf/ldconfig.c:131 msgid "Use CONF as configuration file" msgstr "Använd CONF som konfigurationsfil" -#: elf/ldconfig.c:131 +#: elf/ldconfig.c:132 msgid "Only process directories specified on the command line. Don't build cache." msgstr "Behandla endast kataloger givna som argument. Bygg inte cache." -#: elf/ldconfig.c:132 +#: elf/ldconfig.c:133 msgid "Manually link individual libraries." msgstr "Länka enskilda bibliotek manuellt." -#: elf/ldconfig.c:133 +#: elf/ldconfig.c:134 msgid "FORMAT" msgstr "FORMAT" -#: elf/ldconfig.c:133 +#: elf/ldconfig.c:134 msgid "Format to use: new (default), old, or compat" msgstr "Format att använda: new (standard), old eller compat" -#: elf/ldconfig.c:134 +#: elf/ldconfig.c:135 msgid "Ignore auxiliary cache file" msgstr "Ignorera hjälpcachefilen" -#: elf/ldconfig.c:142 +#: elf/ldconfig.c:143 msgid "Configure Dynamic Linker Run Time Bindings." msgstr "Konfigurera bindningar för den dynamiska länkaren." -#: elf/ldconfig.c:276 +#: elf/ldconfig.c:277 #, c-format msgid "Path `%s' given more than once" msgstr "Sökväg \"%s\" given mer än en gÃ¥ng" -#: elf/ldconfig.c:277 +#: elf/ldconfig.c:278 #, c-format msgid "(from %s:%d and %s:%d)\n" msgstr "(frÃ¥n %s:%d och %s:%d)\n" -#: elf/ldconfig.c:309 elf/ldconfig.c:350 +#: elf/ldconfig.c:310 elf/ldconfig.c:351 #, c-format msgid "Could not form glibc-hwcaps path" msgstr "Kunde inte forma glibc-hwcaps-sökväg" -#: elf/ldconfig.c:323 +#: elf/ldconfig.c:324 #, c-format msgid "Listing directory %s" msgstr "Listar katalogen %s" -#: elf/ldconfig.c:405 +#: elf/ldconfig.c:406 #, c-format msgid "Can't stat %s" msgstr "Kan inte ta status pÃ¥ %s" -#: elf/ldconfig.c:486 +#: elf/ldconfig.c:487 #, c-format msgid "Can't stat %s\n" msgstr "Kan inte ta status pÃ¥ %s\n" -#: elf/ldconfig.c:496 +#: elf/ldconfig.c:497 #, c-format msgid "%s is not a symbolic link\n" msgstr "%s är inte en symbolisk länk\n" -#: elf/ldconfig.c:515 +#: elf/ldconfig.c:516 #, c-format msgid "Can't unlink %s" msgstr "Kan inte ta bort (unlink) %s" -#: elf/ldconfig.c:521 +#: elf/ldconfig.c:522 #, c-format msgid "Can't link %s to %s" msgstr "Kan inte länka %s till %s" -#: elf/ldconfig.c:527 +#: elf/ldconfig.c:528 msgid " (changed)\n" msgstr " (ändrad)\n" -#: elf/ldconfig.c:529 +#: elf/ldconfig.c:530 msgid " (SKIPPED)\n" msgstr " (HOPPAR ÖVER)\n" -#: elf/ldconfig.c:584 +#: elf/ldconfig.c:585 #, c-format msgid "Can't find %s" msgstr "Kan inte hitta %s" -#: elf/ldconfig.c:600 elf/ldconfig.c:770 elf/ldconfig.c:837 +#: elf/ldconfig.c:601 elf/ldconfig.c:760 elf/ldconfig.c:827 #, c-format msgid "Cannot lstat %s" msgstr "Kan inte ta status (lstat) pÃ¥ %s" -#: elf/ldconfig.c:606 +#: elf/ldconfig.c:607 #, c-format msgid "Ignored file %s since it is not a regular file." msgstr "Ignorerar fil %s eftersom den inte är en vanlig fil." -#: elf/ldconfig.c:614 +#: elf/ldconfig.c:615 #, c-format msgid "No link created since soname could not be found for %s" msgstr "Ingen länk skapad eftersom \"soname\" inte hittades för %s" -#: elf/ldconfig.c:711 +#: elf/ldconfig.c:701 #, c-format msgid " (from %s:%d)\n" msgstr " (frÃ¥n %s:%d)\n" -#: elf/ldconfig.c:726 +#: elf/ldconfig.c:716 #, c-format msgid "Can't open directory %s" msgstr "Kan inte öppna katalog %s" -#: elf/ldconfig.c:753 elf/ldconfig.c:758 +#: elf/ldconfig.c:743 elf/ldconfig.c:748 #, c-format msgid "Could not form library path" msgstr "Kunde inte forma bibliotekssökvägen" -#: elf/ldconfig.c:787 elf/ldconfig.c:825 elf/readlib.c:78 +#: elf/ldconfig.c:777 elf/ldconfig.c:815 elf/readlib.c:81 #, c-format msgid "Input file %s not found.\n" msgstr "Hittar inte infil %s.\n" -#: elf/ldconfig.c:794 +#: elf/ldconfig.c:784 #, c-format msgid "Cannot stat %s" msgstr "Kan inte ta status pÃ¥ %s" -#: elf/ldconfig.c:913 +#: elf/ldconfig.c:903 #, c-format msgid "libc6 library %s in wrong directory" msgstr "libc6-bibliotek %s i fel katalog" -#: elf/ldconfig.c:932 +#: elf/ldconfig.c:922 #, c-format msgid "libraries %s and %s in directory %s have same soname but different type." msgstr "bibliotek %s och %s i katalog %s har samma \"soname\" men olika typ." -#: elf/ldconfig.c:1061 +#: elf/ldconfig.c:1051 #, c-format msgid "Warning: ignoring configuration file that cannot be opened: %s" msgstr "Varning: ignorerar konfigurationsfil som inte kan öppnas: %s" -#: elf/ldconfig.c:1109 +#: elf/ldconfig.c:1099 #, c-format msgid "%s:%u: hwcap directive ignored" msgstr "%s:%u: hwcap-direktivet ignorerades" -#: elf/ldconfig.c:1128 +#: elf/ldconfig.c:1118 #, c-format msgid "need absolute file name for configuration file when using -r" msgstr "behöver absolut filnamn för konfigurationsfil när -r används" -#: elf/ldconfig.c:1135 locale/programs/xasprintf.c:31 +#: elf/ldconfig.c:1125 locale/programs/xasprintf.c:31 #: locale/programs/xmalloc.c:63 malloc/obstack.c:416 malloc/obstack.c:418 #: posix/getconf.c:460 posix/getconf.c:699 #, c-format msgid "memory exhausted" msgstr "minne slut" -#: elf/ldconfig.c:1168 +#: elf/ldconfig.c:1158 #, c-format msgid "%s:%u: cannot read directory %s" msgstr "%s:%u: kan inte läsa katalog %s" -#: elf/ldconfig.c:1206 +#: elf/ldconfig.c:1196 #, c-format msgid "relative path `%s' used to build cache" msgstr "relativ sökväg \"%s\" använd för att bygga cache" -#: elf/ldconfig.c:1228 +#: elf/ldconfig.c:1218 #, c-format msgid "Can't chdir to /" msgstr "Kan inte byta katalog till /" -#: elf/ldconfig.c:1269 +#: elf/ldconfig.c:1259 #, c-format msgid "Can't open cache file directory %s\n" msgstr "Kan inte läsa cache-filkatalog \"%s\"\n" @@ -1135,27 +1135,27 @@ msgstr "%s är inte en delad objektfil (typ: %d).\n" msgid "more than one dynamic segment\n" msgstr "fler än ett dynamiskt segment\n" -#: elf/readlib.c:84 +#: elf/readlib.c:87 #, c-format msgid "Cannot fstat file %s.\n" msgstr "Kan inte ta status (fstat) pÃ¥ fil %s.\n" -#: elf/readlib.c:95 +#: elf/readlib.c:98 #, c-format msgid "File %s is empty, not checked." msgstr "Fil %s är tom, inte kontrollerad." -#: elf/readlib.c:101 +#: elf/readlib.c:104 #, c-format msgid "File %s is too small, not checked." msgstr "Fil %s är för liten, inte kontrollerad." -#: elf/readlib.c:111 +#: elf/readlib.c:114 #, c-format msgid "Cannot mmap file %s.\n" msgstr "Kan inte minnesmappa (mmap) fil %s.\n" -#: elf/readlib.c:149 +#: elf/readlib.c:152 #, c-format msgid "%s is not an ELF file - it has the wrong magic bytes at the start.\n" msgstr "%s är inte en ELF-fil — den har inte rätt magiska byte i början.\n" diff --git a/po/tr.po b/po/tr.po index 6fb78eb2ec..86e0207713 100644 --- a/po/tr.po +++ b/po/tr.po @@ -8,7 +8,7 @@ msgid "" msgstr "" "Project-Id-Version: libc 2.33.9000\n" -"POT-Creation-Date: 2024-06-19 22:30+0200\n" +"POT-Creation-Date: 2024-07-21 00:32+0200\n" "PO-Revision-Date: 2021-07-29 13:23+0300\n" "Last-Translator: Mehmet Kececi <mkececi@mehmetkececi.com>\n" "Language-Team: Turkish <gnome-turk@gnome.org>\n" @@ -150,7 +150,7 @@ msgstr "" "-o ÇIKTI-DOSYASI [GÄ°RDÄ°-DOSYASI]...\n" "[ÇIKTI-DOSYASI [GÄ°RDÄ°-DOSYASI]...]" -#: catgets/gencat.c:230 debug/pcprofiledump.c:208 elf/ldconfig.c:216 +#: catgets/gencat.c:230 debug/pcprofiledump.c:208 elf/ldconfig.c:217 #: elf/pldd.c:246 elf/sln.c:77 elf/sprof.c:371 iconv/iconv_prog.c:387 #: iconv/iconvconfig.c:380 locale/programs/locale.c:275 #: locale/programs/localedef.c:437 login/programs/pt_chown.c:88 @@ -165,7 +165,7 @@ msgstr "" "%s.\n" #: catgets/gencat.c:246 debug/pcprofiledump.c:224 debug/xtrace.sh:63 -#: elf/ldconfig.c:232 elf/ldd.bash.in:38 elf/pldd.c:262 elf/sotruss.sh:75 +#: elf/ldconfig.c:233 elf/ldd.bash.in:38 elf/pldd.c:262 elf/sotruss.sh:75 #: elf/sprof.c:388 iconv/iconv_prog.c:404 iconv/iconvconfig.c:397 #: locale/programs/locale.c:292 locale/programs/localedef.c:459 #: login/programs/pt_chown.c:62 malloc/memusage.sh:70 malloc/memusagestat.c:582 @@ -182,7 +182,7 @@ msgstr "" "UYGUNLUÄžU için bile garanti verilmez.\n" #: catgets/gencat.c:251 debug/pcprofiledump.c:229 debug/xtrace.sh:67 -#: elf/ldconfig.c:237 elf/pldd.c:267 elf/sprof.c:394 iconv/iconv_prog.c:409 +#: elf/ldconfig.c:238 elf/pldd.c:267 elf/sprof.c:394 iconv/iconv_prog.c:409 #: iconv/iconvconfig.c:402 locale/programs/locale.c:297 #: locale/programs/localedef.c:464 malloc/memusage.sh:74 #: malloc/memusagestat.c:587 nscd/nscd.c:526 nss/getent.c:97 nss/makedb.c:392 @@ -390,7 +390,7 @@ msgstr "Önbellek dosyası yanlış sonsuzluÄŸa sahip.\n" msgid "Cache generated by: " msgstr "Önbellek tarafından oluÅŸturulan: " -#: elf/cache.c:296 elf/ldconfig.c:1249 +#: elf/cache.c:296 elf/ldconfig.c:1239 #, c-format msgid "Can't open cache file %s\n" msgstr "Arabellek dosyası %s açılamıyor\n" @@ -693,7 +693,7 @@ msgstr "yeniden ayırma iÅŸleminden sonra ek bellek koruması uygulanamaz" msgid "RTLD_NEXT used in code not dynamically loaded" msgstr "RTLD_NEXT kullanılan kod dinamik olarak yüklenmedi" -#: elf/dl-tls.c:1059 +#: elf/dl-tls.c:1136 msgid "cannot create TLS data structures" msgstr "veri yapıları TLS oluÅŸturulamıyor" @@ -705,211 +705,211 @@ msgstr "sürüm arama hatası" msgid "cannot allocate version reference table" msgstr "sürüm baÅŸvuru tablosu ayrılamadı" -#: elf/ldconfig.c:124 +#: elf/ldconfig.c:125 msgid "Print cache" msgstr "Yazıcı ön belleÄŸi" -#: elf/ldconfig.c:125 +#: elf/ldconfig.c:126 msgid "Generate verbose messages" msgstr "Çok detaylı iletiler üretilir" -#: elf/ldconfig.c:126 +#: elf/ldconfig.c:127 msgid "Don't build cache" msgstr "Arabellek oluÅŸturulamıyor" -#: elf/ldconfig.c:127 +#: elf/ldconfig.c:128 msgid "Don't update symbolic links" msgstr "Sembolik baÄŸlantıları güncellemeyin" -#: elf/ldconfig.c:128 +#: elf/ldconfig.c:129 msgid "Change to and use ROOT as root directory" msgstr "Dizine geçilir ve kök dizin olarak ROOT kullanır" -#: elf/ldconfig.c:128 +#: elf/ldconfig.c:129 msgid "ROOT" msgstr "KÖK" -#: elf/ldconfig.c:129 +#: elf/ldconfig.c:130 msgid "CACHE" msgstr "ARABELLEK" -#: elf/ldconfig.c:129 +#: elf/ldconfig.c:130 msgid "Use CACHE as cache file" msgstr "Arabellek dosyası olarak ARABELLEK kullanılır" -#: elf/ldconfig.c:130 +#: elf/ldconfig.c:131 msgid "CONF" msgstr "YAPL" -#: elf/ldconfig.c:130 +#: elf/ldconfig.c:131 msgid "Use CONF as configuration file" msgstr "Yapılandırma dosyası olarak YAPD kullanılır" -#: elf/ldconfig.c:131 +#: elf/ldconfig.c:132 msgid "Only process directories specified on the command line. Don't build cache." msgstr "Komut satırında sadece süreç dizinleri belirtilmiÅŸ. Önbellek oluÅŸturulamadı." -#: elf/ldconfig.c:132 +#: elf/ldconfig.c:133 msgid "Manually link individual libraries." msgstr "Her bir kitaplığı kendiniz baÄŸlayın." -#: elf/ldconfig.c:133 +#: elf/ldconfig.c:134 msgid "FORMAT" msgstr "BİÇİM" -#: elf/ldconfig.c:133 +#: elf/ldconfig.c:134 msgid "Format to use: new (default), old, or compat" msgstr "Kullanılacak biçim: yeni (varsayılan), eski, veya compat" -#: elf/ldconfig.c:134 +#: elf/ldconfig.c:135 msgid "Ignore auxiliary cache file" msgstr "Yardımcı arabellek dosyası yoksayılır" -#: elf/ldconfig.c:142 +#: elf/ldconfig.c:143 msgid "Configure Dynamic Linker Run Time Bindings." msgstr "Dinamik BaÄŸlayıcının Ä°cra Zamanı Bağıntılarını Yapılandırır." -#: elf/ldconfig.c:276 +#: elf/ldconfig.c:277 #, c-format msgid "Path `%s' given more than once" msgstr "`%s' dosya yolu birden fazla verilmiÅŸ" -#: elf/ldconfig.c:277 +#: elf/ldconfig.c:278 #, c-format msgid "(from %s:%d and %s:%d)\n" msgstr "(%s:%d itibaren ve %s:%d)\n" -#: elf/ldconfig.c:309 elf/ldconfig.c:350 +#: elf/ldconfig.c:310 elf/ldconfig.c:351 #, c-format msgid "Could not form glibc-hwcaps path" msgstr "Glibc-hwcaps yolu oluÅŸturulamadı" -#: elf/ldconfig.c:323 +#: elf/ldconfig.c:324 #, c-format msgid "Listing directory %s" msgstr "Listeleme dizini %s" -#: elf/ldconfig.c:405 +#: elf/ldconfig.c:406 #, c-format msgid "Can't stat %s" msgstr "Stat %s yapılamıyor" -#: elf/ldconfig.c:486 +#: elf/ldconfig.c:487 #, c-format msgid "Can't stat %s\n" msgstr "Stat %s yapılamıyor\n" -#: elf/ldconfig.c:496 +#: elf/ldconfig.c:497 #, c-format msgid "%s is not a symbolic link\n" msgstr "%s bir sembolik baÄŸ deÄŸil\n" -#: elf/ldconfig.c:515 +#: elf/ldconfig.c:516 #, c-format msgid "Can't unlink %s" msgstr "%s bağı kaldırılamadı" -#: elf/ldconfig.c:521 +#: elf/ldconfig.c:522 #, c-format msgid "Can't link %s to %s" msgstr "%s den %s'e baÄŸ yapılamıyor" -#: elf/ldconfig.c:527 +#: elf/ldconfig.c:528 msgid " (changed)\n" msgstr " (deÄŸiÅŸti)\n" -#: elf/ldconfig.c:529 +#: elf/ldconfig.c:530 msgid " (SKIPPED)\n" msgstr " (ATLANDI)\n" -#: elf/ldconfig.c:584 +#: elf/ldconfig.c:585 #, c-format msgid "Can't find %s" msgstr "%s bulunamıyor" -#: elf/ldconfig.c:600 elf/ldconfig.c:770 elf/ldconfig.c:837 +#: elf/ldconfig.c:601 elf/ldconfig.c:760 elf/ldconfig.c:827 #, c-format msgid "Cannot lstat %s" msgstr "Lstat %s yapılamıyor" -#: elf/ldconfig.c:606 +#: elf/ldconfig.c:607 #, c-format msgid "Ignored file %s since it is not a regular file." msgstr "Normal bir dosya olmadığından %s dosyası yoksayıldı." -#: elf/ldconfig.c:614 +#: elf/ldconfig.c:615 #, c-format msgid "No link created since soname could not be found for %s" msgstr "%s için kitaplık ismi bulunamadığından baÄŸ oluÅŸturulmadı" -#: elf/ldconfig.c:711 +#: elf/ldconfig.c:701 #, c-format msgid " (from %s:%d)\n" msgstr " (%s:%d itibaren)\n" -#: elf/ldconfig.c:726 +#: elf/ldconfig.c:716 #, c-format msgid "Can't open directory %s" msgstr "%s dizini açılamıyor" -#: elf/ldconfig.c:787 elf/ldconfig.c:825 elf/readlib.c:78 +#: elf/ldconfig.c:777 elf/ldconfig.c:815 elf/readlib.c:81 #, c-format msgid "Input file %s not found.\n" msgstr "Girdi dosyası %s bulunamadı.\n" -#: elf/ldconfig.c:794 +#: elf/ldconfig.c:784 #, c-format msgid "Cannot stat %s" msgstr "Stat %s yapılamıyor" -#: elf/ldconfig.c:913 +#: elf/ldconfig.c:903 #, c-format msgid "libc6 library %s in wrong directory" msgstr "libc6 kitaplığı %s yanlış dizinde" -#: elf/ldconfig.c:932 +#: elf/ldconfig.c:922 #, c-format msgid "libraries %s and %s in directory %s have same soname but different type." msgstr "%s ve %s kitaplıkları %s dizininde ve aynı isme sahip oldukları halde farklı türde." -#: elf/ldconfig.c:1061 +#: elf/ldconfig.c:1051 #, c-format msgid "Warning: ignoring configuration file that cannot be opened: %s" msgstr "Uyarı: açılmayan yapılandırma dosyası yok sayılıyor: %s" -#: elf/ldconfig.c:1109 +#: elf/ldconfig.c:1099 #, c-format msgid "%s:%u: hwcap directive ignored" msgstr "%s:%u: hwcap yönergesi göz ardı edildi" -#: elf/ldconfig.c:1128 +#: elf/ldconfig.c:1118 #, c-format msgid "need absolute file name for configuration file when using -r" msgstr "-r kullanılırken yapılandırma dosyası için soyut dosya ismi gerekir" -#: elf/ldconfig.c:1135 locale/programs/xasprintf.c:31 +#: elf/ldconfig.c:1125 locale/programs/xasprintf.c:31 #: locale/programs/xmalloc.c:63 malloc/obstack.c:416 malloc/obstack.c:418 #: posix/getconf.c:460 posix/getconf.c:699 #, c-format msgid "memory exhausted" msgstr "bellek tükendi" -#: elf/ldconfig.c:1168 +#: elf/ldconfig.c:1158 #, c-format msgid "%s:%u: cannot read directory %s" msgstr "%s:%u: %s dizini okunamıyor" -#: elf/ldconfig.c:1206 +#: elf/ldconfig.c:1196 #, c-format msgid "relative path `%s' used to build cache" msgstr "arabelleÄŸin oluÅŸturulduÄŸu göreli yol `%s'" -#: elf/ldconfig.c:1228 +#: elf/ldconfig.c:1218 #, c-format msgid "Can't chdir to /" msgstr "Dizin chdir'e geçilemiyor /" -#: elf/ldconfig.c:1269 +#: elf/ldconfig.c:1259 #, c-format msgid "Can't open cache file directory %s\n" msgstr "Arabellek dosyasının dizini %s açılamıyor\n" @@ -1108,27 +1108,27 @@ msgstr "%s paylaşımlı nesne dosyası deÄŸil (Tür: %d).\n" msgid "more than one dynamic segment\n" msgstr "bir dinamik parçadan fazla\n" -#: elf/readlib.c:84 +#: elf/readlib.c:87 #, c-format msgid "Cannot fstat file %s.\n" msgstr "%s dosyası fstat yapılamıyor.\n" -#: elf/readlib.c:95 +#: elf/readlib.c:98 #, c-format msgid "File %s is empty, not checked." msgstr "%s dosyası boÅŸ olduÄŸundan denetlenemiyor." -#: elf/readlib.c:101 +#: elf/readlib.c:104 #, c-format msgid "File %s is too small, not checked." msgstr "%s dosyası çok küçük, kontrol edilemedi." -#: elf/readlib.c:111 +#: elf/readlib.c:114 #, c-format msgid "Cannot mmap file %s.\n" msgstr "%s dosyası mmap yapılamıyor.\n" -#: elf/readlib.c:149 +#: elf/readlib.c:152 #, c-format msgid "%s is not an ELF file - it has the wrong magic bytes at the start.\n" msgstr "%s bir ELF dosyası deÄŸil - BaÅŸlangıcındaki dosya tanımı hatalı.\n" diff --git a/po/uk.po b/po/uk.po index 2674424aea..08fafc1bae 100644 --- a/po/uk.po +++ b/po/uk.po @@ -7,7 +7,7 @@ msgid "" msgstr "" "Project-Id-Version: libc 2.39.9000\n" -"POT-Creation-Date: 2024-06-19 22:30+0200\n" +"POT-Creation-Date: 2024-07-21 00:32+0200\n" "PO-Revision-Date: 2024-06-22 18:34+0300\n" "Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n" "Language-Team: Ukrainian <trans-uk@lists.fedoraproject.org>\n" @@ -149,7 +149,7 @@ msgstr "" "-o ФÐЙЛ-ВИВЕДЕÐÐЯ [ФÐЙЛ-ВХІДÐИХ-ДÐÐИХ]...\n" "[ФÐЙЛ-ВИВЕДЕÐÐЯ [ФÐЙЛ-ВХІДÐИХ-ДÐÐИХ]...]" -#: catgets/gencat.c:230 debug/pcprofiledump.c:208 elf/ldconfig.c:216 +#: catgets/gencat.c:230 debug/pcprofiledump.c:208 elf/ldconfig.c:217 #: elf/pldd.c:246 elf/sln.c:77 elf/sprof.c:371 iconv/iconv_prog.c:387 #: iconv/iconvconfig.c:380 locale/programs/locale.c:275 #: locale/programs/localedef.c:437 login/programs/pt_chown.c:88 @@ -164,7 +164,7 @@ msgstr "" "%s.\n" #: catgets/gencat.c:246 debug/pcprofiledump.c:224 debug/xtrace.sh:63 -#: elf/ldconfig.c:232 elf/ldd.bash.in:38 elf/pldd.c:262 elf/sotruss.sh:75 +#: elf/ldconfig.c:233 elf/ldd.bash.in:38 elf/pldd.c:262 elf/sotruss.sh:75 #: elf/sprof.c:388 iconv/iconv_prog.c:404 iconv/iconvconfig.c:397 #: locale/programs/locale.c:292 locale/programs/localedef.c:459 #: login/programs/pt_chown.c:62 malloc/memusage.sh:70 malloc/memusagestat.c:582 @@ -179,7 +179,7 @@ msgstr "" "Це програмне Ð·Ð°Ð±ÐµÐ·Ð¿ÐµÑ‡ÐµÐ½Ð½Ñ Ñ” вільним, умови ÐºÐ¾Ð¿Ñ–ÑŽÐ²Ð°Ð½Ð½Ñ Ð²Ð¸ÐºÐ»Ð°Ð´ÐµÐ½Ð¾ у його початкових кодах. Умовами Ð»Ñ–Ñ†ÐµÐ½Ð·ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¾Ð³Ñ€Ð°Ð¼Ð¸ ÐЕ передбачено жодних гарантій, зокрема гарантій працездатноÑÑ‚Ñ– або придатноÑÑ‚Ñ– Ð´Ð»Ñ Ð¿ÐµÐ²Ð½Ð¾Ñ— мети.\n" #: catgets/gencat.c:251 debug/pcprofiledump.c:229 debug/xtrace.sh:67 -#: elf/ldconfig.c:237 elf/pldd.c:267 elf/sprof.c:394 iconv/iconv_prog.c:409 +#: elf/ldconfig.c:238 elf/pldd.c:267 elf/sprof.c:394 iconv/iconv_prog.c:409 #: iconv/iconvconfig.c:402 locale/programs/locale.c:297 #: locale/programs/localedef.c:464 malloc/memusage.sh:74 #: malloc/memusagestat.c:587 nscd/nscd.c:526 nss/getent.c:97 nss/makedb.c:392 @@ -395,7 +395,7 @@ msgstr "ПорÑдок байтів у файлі кешу Ñ” помилкови msgid "Cache generated by: " msgstr "ЗаÑіб ÑÑ‚Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ ÐºÐµÑˆÑƒ:" -#: elf/cache.c:296 elf/ldconfig.c:1249 +#: elf/cache.c:296 elf/ldconfig.c:1239 #, c-format msgid "Can't open cache file %s\n" msgstr "Ðе вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ файл кешу %s\n" @@ -706,7 +706,7 @@ msgstr "не вдалоÑÑ Ð·Ð°ÑтоÑувати додатковий захи msgid "RTLD_NEXT used in code not dynamically loaded" msgstr "ВикориÑтаний у коді Ñимвол RTLD_NEXT не завантажуєтьÑÑ Ð´Ð¸Ð½Ð°Ð¼Ñ–Ñ‡Ð½Ð¾" -#: elf/dl-tls.c:1059 +#: elf/dl-tls.c:1136 msgid "cannot create TLS data structures" msgstr "не вдалоÑÑ Ñтворити Ñтруктури даних TLS" @@ -722,216 +722,216 @@ msgstr "не вдалоÑÑ Ñ€Ð¾Ð·Ð¼Ñ–Ñтити таблицю поÑилань msgid "DT_RELR without GLIBC_ABI_DT_RELR dependency" msgstr "DT_RELR без залежноÑÑ‚Ñ– від GLIBC_ABI_DT_RELR" -#: elf/ldconfig.c:124 +#: elf/ldconfig.c:125 msgid "Print cache" msgstr "ВивеÑти кеш" -#: elf/ldconfig.c:125 +#: elf/ldconfig.c:126 msgid "Generate verbose messages" msgstr "Режим докладних повідомлень" -#: elf/ldconfig.c:126 +#: elf/ldconfig.c:127 msgid "Don't build cache" msgstr "Ðе збирати кеш" -#: elf/ldconfig.c:127 +#: elf/ldconfig.c:128 msgid "Don't update symbolic links" msgstr "Ðе оновлювати Ñимволічні поÑиланнÑ" -#: elf/ldconfig.c:128 +#: elf/ldconfig.c:129 msgid "Change to and use ROOT as root directory" msgstr "Перейти до каталогу КОРІÐЬ Ñ– викориÑтовувати його Ñк кореневий" -#: elf/ldconfig.c:128 +#: elf/ldconfig.c:129 msgid "ROOT" msgstr "КОРІÐЬ" -#: elf/ldconfig.c:129 +#: elf/ldconfig.c:130 msgid "CACHE" msgstr "КЕШ" -#: elf/ldconfig.c:129 +#: elf/ldconfig.c:130 msgid "Use CACHE as cache file" msgstr "ВикориÑтовувати КЕШ Ñк файл кешу" -#: elf/ldconfig.c:130 +#: elf/ldconfig.c:131 msgid "CONF" msgstr "КОÐФ" -#: elf/ldconfig.c:130 +#: elf/ldconfig.c:131 msgid "Use CONF as configuration file" msgstr "ВикориÑтовувати КОÐФ Ñк файл налаштувань" -#: elf/ldconfig.c:131 +#: elf/ldconfig.c:132 msgid "Only process directories specified on the command line. Don't build cache." msgstr "ОброблÑти лише каталоги, вказані у командному Ñ€Ñдку. Ðе будувати кеш." -#: elf/ldconfig.c:132 +#: elf/ldconfig.c:133 msgid "Manually link individual libraries." msgstr "Під’єднати окремі бібліотеки вручну." -#: elf/ldconfig.c:133 +#: elf/ldconfig.c:134 msgid "FORMAT" msgstr "ФОРМÐТ" -#: elf/ldconfig.c:133 +#: elf/ldconfig.c:134 msgid "Format to use: new (default), old, or compat" msgstr "Формат, Ñким Ñлід ÑкориÑтатиÑÑ: new (типовий), old або compat" -#: elf/ldconfig.c:134 +#: elf/ldconfig.c:135 msgid "Ignore auxiliary cache file" msgstr "Ігнорувати допоміжний файл кешу" -#: elf/ldconfig.c:142 +#: elf/ldconfig.c:143 msgid "Configure Dynamic Linker Run Time Bindings." msgstr "Ðалаштувати прив’Ñзки динамічного компонувальника під Ñ‡Ð°Ñ Ð²Ð¸ÐºÐ¾Ð½Ð°Ð½Ð½Ñ." -#: elf/ldconfig.c:276 +#: elf/ldconfig.c:277 #, c-format msgid "Path `%s' given more than once" msgstr "ШлÑÑ… «%s» вказано декілька разів" -#: elf/ldconfig.c:277 +#: elf/ldconfig.c:278 #, c-format msgid "(from %s:%d and %s:%d)\n" msgstr "(від %s:%d Ñ– %s:%d)\n" -#: elf/ldconfig.c:309 elf/ldconfig.c:350 +#: elf/ldconfig.c:310 elf/ldconfig.c:351 #, c-format msgid "Could not form glibc-hwcaps path" msgstr "Ðе вдалоÑÑ Ñформувати шлÑÑ… glibc-hwcaps" -#: elf/ldconfig.c:323 +#: elf/ldconfig.c:324 #, c-format msgid "Listing directory %s" msgstr "Будуємо ÑпиÑок каталогу %s" -#: elf/ldconfig.c:405 +#: elf/ldconfig.c:406 #, c-format msgid "Can't stat %s" msgstr "Ðе вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ ÑтатиÑтичні дані щодо %s" -#: elf/ldconfig.c:486 +#: elf/ldconfig.c:487 #, c-format msgid "Can't stat %s\n" msgstr "Ðе вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ ÑтатиÑтичні дані щодо %s\n" -#: elf/ldconfig.c:496 +#: elf/ldconfig.c:497 #, c-format msgid "%s is not a symbolic link\n" msgstr "%s не Ñ” Ñимволічним поÑиланнÑм\n" -#: elf/ldconfig.c:515 +#: elf/ldconfig.c:516 #, c-format msgid "Can't unlink %s" msgstr "Ðе вдалоÑÑ Ð²Ñ–Ð´â€™Ñ”Ð´Ð½Ð°Ñ‚Ð¸ %s" -#: elf/ldconfig.c:521 +#: elf/ldconfig.c:522 #, c-format msgid "Can't link %s to %s" msgstr "Ðе вдалоÑÑ Ð¿Ñ–Ð´â€™Ñ”Ð´Ð½Ð°Ñ‚Ð¸ %s до %s" -#: elf/ldconfig.c:527 +#: elf/ldconfig.c:528 msgid " (changed)\n" msgstr " (змінено)\n" -#: elf/ldconfig.c:529 +#: elf/ldconfig.c:530 msgid " (SKIPPED)\n" msgstr " (ПРОПУЩЕÐО)\n" -#: elf/ldconfig.c:584 +#: elf/ldconfig.c:585 #, c-format msgid "Can't find %s" msgstr "Ðе вдалоÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ %s" -#: elf/ldconfig.c:600 elf/ldconfig.c:770 elf/ldconfig.c:837 +#: elf/ldconfig.c:601 elf/ldconfig.c:760 elf/ldconfig.c:827 #, c-format msgid "Cannot lstat %s" msgstr "Ðе вдалоÑÑ Ð¾Ð±Ñ€Ð¾Ð±Ð¸Ñ‚Ð¸ lstat %s" -#: elf/ldconfig.c:606 +#: elf/ldconfig.c:607 #, c-format msgid "Ignored file %s since it is not a regular file." msgstr "Файл %s проігноровано, оÑкільки він не Ñ” звичайним файлом." -#: elf/ldconfig.c:614 +#: elf/ldconfig.c:615 #, c-format msgid "No link created since soname could not be found for %s" msgstr "Зв’Ñзку не Ñтворено, оÑкільки не вдалоÑÑ Ð·Ð½Ð°Ð¹Ñ‚Ð¸ бібліотеку so Ð´Ð»Ñ %s" -#: elf/ldconfig.c:711 +#: elf/ldconfig.c:701 #, c-format msgid " (from %s:%d)\n" msgstr " (від %s:%d)\n" -#: elf/ldconfig.c:726 +#: elf/ldconfig.c:716 #, c-format msgid "Can't open directory %s" msgstr "Ðе вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ каталог %s" -#: elf/ldconfig.c:753 elf/ldconfig.c:758 +#: elf/ldconfig.c:743 elf/ldconfig.c:748 #, c-format msgid "Could not form library path" msgstr "Ðе вдалоÑÑ Ñформувати шлÑÑ… до бібліотеки" -#: elf/ldconfig.c:787 elf/ldconfig.c:825 elf/readlib.c:78 +#: elf/ldconfig.c:777 elf/ldconfig.c:815 elf/readlib.c:81 #, c-format msgid "Input file %s not found.\n" msgstr "Файл вхідних даних %s не знайдено.\n" -#: elf/ldconfig.c:794 +#: elf/ldconfig.c:784 #, c-format msgid "Cannot stat %s" msgstr "Ðе вдалоÑÑ Ð¾Ñ‚Ñ€Ð¸Ð¼Ð°Ñ‚Ð¸ ÑтатиÑтичні дані щодо %s" -#: elf/ldconfig.c:913 +#: elf/ldconfig.c:903 #, c-format msgid "libc6 library %s in wrong directory" msgstr "Бібліотека libc6 %s зберігаєтьÑÑ Ñƒ помилковому каталозі" -#: elf/ldconfig.c:932 +#: elf/ldconfig.c:922 #, c-format msgid "libraries %s and %s in directory %s have same soname but different type." msgstr "бібліотеки %s Ñ– %s у каталозі %s мають однакові назви so, але належать до різних типів." -#: elf/ldconfig.c:1061 +#: elf/ldconfig.c:1051 #, c-format msgid "Warning: ignoring configuration file that cannot be opened: %s" msgstr "ПопередженнÑ: ігноруємо файл налаштувань, Ñкий не вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸: %s" -#: elf/ldconfig.c:1109 +#: elf/ldconfig.c:1099 #, c-format msgid "%s:%u: hwcap directive ignored" msgstr "%s:%u: інÑтрукцію hwcap проігноровано" -#: elf/ldconfig.c:1128 +#: elf/ldconfig.c:1118 #, c-format msgid "need absolute file name for configuration file when using -r" msgstr "Ñкщо викориÑтано -r, Ñлід вказати абÑолютну назву файла Ð´Ð»Ñ Ñ„Ð°Ð¹Ð»Ð° налаштувань" -#: elf/ldconfig.c:1135 locale/programs/xasprintf.c:31 +#: elf/ldconfig.c:1125 locale/programs/xasprintf.c:31 #: locale/programs/xmalloc.c:63 malloc/obstack.c:416 malloc/obstack.c:418 #: posix/getconf.c:460 posix/getconf.c:699 #, c-format msgid "memory exhausted" msgstr "пам’ÑÑ‚ÑŒ вичерпано" -#: elf/ldconfig.c:1168 +#: elf/ldconfig.c:1158 #, c-format msgid "%s:%u: cannot read directory %s" msgstr "%s:%u: не вдалоÑÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ñ‚Ð¸ каталог %s" -#: elf/ldconfig.c:1206 +#: elf/ldconfig.c:1196 #, c-format msgid "relative path `%s' used to build cache" msgstr "відноÑний шлÑÑ… «%s» викориÑтано Ð´Ð»Ñ Ð·Ð±Ð¸Ñ€Ð°Ð½Ð½Ñ ÐºÐµÑˆÑƒ" -#: elf/ldconfig.c:1228 +#: elf/ldconfig.c:1218 #, c-format msgid "Can't chdir to /" msgstr "Ðе вдалоÑÑ Ð·Ð¼Ñ–Ð½Ð¸Ñ‚Ð¸ каталог на /" -#: elf/ldconfig.c:1269 +#: elf/ldconfig.c:1259 #, c-format msgid "Can't open cache file directory %s\n" msgstr "Ðе вдалоÑÑ Ð²Ñ–Ð´ÐºÑ€Ð¸Ñ‚Ð¸ каталог файлів кешу %s\n" @@ -1129,27 +1129,27 @@ msgstr "%s не Ñ” файлом об’єктів Ñпільного викорРmsgid "more than one dynamic segment\n" msgstr "більш ніж один динамічний Ñегмент\n" -#: elf/readlib.c:84 +#: elf/readlib.c:87 #, c-format msgid "Cannot fstat file %s.\n" msgstr "Ðе вдалоÑÑ Ð¾Ð±Ñ€Ð¾Ð±Ð¸Ñ‚Ð¸ за допомогою fstat файл %s.\n" -#: elf/readlib.c:95 +#: elf/readlib.c:98 #, c-format msgid "File %s is empty, not checked." msgstr "Файл %s Ñ” порожнім, не перевірено." -#: elf/readlib.c:101 +#: elf/readlib.c:104 #, c-format msgid "File %s is too small, not checked." msgstr "Файл %s Ñ” надто малим, не перевірено." -#: elf/readlib.c:111 +#: elf/readlib.c:114 #, c-format msgid "Cannot mmap file %s.\n" msgstr "Ðе вдалоÑÑ Ð²Ð¸ÐºÐ¾Ð½Ð°Ñ‚Ð¸ mmap Ð´Ð»Ñ Ñ„Ð°Ð¹Ð»Ð° %s.\n" -#: elf/readlib.c:149 +#: elf/readlib.c:152 #, c-format msgid "%s is not an ELF file - it has the wrong magic bytes at the start.\n" msgstr "%s не Ñ” файлом ELF. ВиÑвлено помилкові магічні байти на початку файла.\n" diff --git a/po/vi.po b/po/vi.po index 99e34651ec..f10408b75b 100644 --- a/po/vi.po +++ b/po/vi.po @@ -9,7 +9,7 @@ msgid "" msgstr "" "Project-Id-Version: libc 2.37.9000\n" "Report-Msgid-Bugs-To: http://www.gnu.org/software/libc/bugs.html\n" -"POT-Creation-Date: 2024-06-19 22:30+0200\n" +"POT-Creation-Date: 2024-07-21 00:32+0200\n" "PO-Revision-Date: 2023-07-22 10:02+0700\n" "Last-Translator: Trần Ngá»c Quân <vnwildman@gmail.com>\n" "Language-Team: Vietnamese <translation-team-vi@lists.sourceforge.net>\n" @@ -153,7 +153,7 @@ msgstr "" "-o TẬP-TIN-ÄẦU-RA [TẬP-TIN-ÄẦU-VÀO]…\n" "[TẬP-TIN-ÄẦU-RA [TẬP-TIN-ÄẦU-VÀO]…]" -#: catgets/gencat.c:230 debug/pcprofiledump.c:208 elf/ldconfig.c:216 +#: catgets/gencat.c:230 debug/pcprofiledump.c:208 elf/ldconfig.c:217 #: elf/pldd.c:246 elf/sln.c:77 elf/sprof.c:371 iconv/iconv_prog.c:387 #: iconv/iconvconfig.c:380 locale/programs/locale.c:275 #: locale/programs/localedef.c:437 login/programs/pt_chown.c:88 @@ -169,7 +169,7 @@ msgstr "" "Thông báo lá»—i dịch cho: <https://translationproject.org/team/vi.html>.\n" #: catgets/gencat.c:246 debug/pcprofiledump.c:224 debug/xtrace.sh:63 -#: elf/ldconfig.c:232 elf/ldd.bash.in:38 elf/pldd.c:262 elf/sotruss.sh:75 +#: elf/ldconfig.c:233 elf/ldd.bash.in:38 elf/pldd.c:262 elf/sotruss.sh:75 #: elf/sprof.c:388 iconv/iconv_prog.c:404 iconv/iconvconfig.c:397 #: locale/programs/locale.c:292 locale/programs/localedef.c:459 #: login/programs/pt_chown.c:62 malloc/memusage.sh:70 malloc/memusagestat.c:582 @@ -185,7 +185,7 @@ msgstr "" "KHÔNG CÓ BẢO HÀNH GÃŒ CẢ; NGAY CẢ KHI NÓ ÄƯỢC BÃN HAY THÃCH HỢP CHO MỤC ÄÃCH Cà NHÂN.\n" #: catgets/gencat.c:251 debug/pcprofiledump.c:229 debug/xtrace.sh:67 -#: elf/ldconfig.c:237 elf/pldd.c:267 elf/sprof.c:394 iconv/iconv_prog.c:409 +#: elf/ldconfig.c:238 elf/pldd.c:267 elf/sprof.c:394 iconv/iconv_prog.c:409 #: iconv/iconvconfig.c:402 locale/programs/locale.c:297 #: locale/programs/localedef.c:464 malloc/memusage.sh:74 #: malloc/memusagestat.c:587 nscd/nscd.c:526 nss/getent.c:97 nss/makedb.c:392 @@ -396,7 +396,7 @@ msgstr "Táºp tin nhá»› đêm sai endianness.\n" msgid "Cache generated by: " msgstr "Bá»™ nhá»› tạm được tạo bởi: " -#: elf/cache.c:296 elf/ldconfig.c:1249 +#: elf/cache.c:296 elf/ldconfig.c:1239 #, c-format msgid "Can't open cache file %s\n" msgstr "Không thể mở táºp tin nhá»› tạm %s\n" @@ -707,7 +707,7 @@ msgstr "không thể áp dụng sá»± bảo vệ bá»™ nhá»› thêm sau khi tái Ä‘ msgid "RTLD_NEXT used in code not dynamically loaded" msgstr "RTLD_NEXT được dùng trong mã không phải được nạp Ä‘á»™ng" -#: elf/dl-tls.c:1059 +#: elf/dl-tls.c:1136 msgid "cannot create TLS data structures" msgstr "không thể tạo các cấu trúc dữ liệu TLS" @@ -723,216 +723,216 @@ msgstr "không thể cấp phát bảng tham chiếu phiên bản" msgid "DT_RELR without GLIBC_ABI_DT_RELR dependency" msgstr "DT_RELR không phụ thuá»™c GLIBC_ABI_DT_RELR" -#: elf/ldconfig.c:124 +#: elf/ldconfig.c:125 msgid "Print cache" msgstr "In bá»™ nhá»› đệm" -#: elf/ldconfig.c:125 +#: elf/ldconfig.c:126 msgid "Generate verbose messages" msgstr "Tạo thông tin chi tiết" -#: elf/ldconfig.c:126 +#: elf/ldconfig.c:127 msgid "Don't build cache" msgstr "Äừng xây dá»±ng bá»™ nhá»› tạm" -#: elf/ldconfig.c:127 +#: elf/ldconfig.c:128 msgid "Don't update symbolic links" msgstr "Äừng cáºp nháºt các liên kết má»m" -#: elf/ldconfig.c:128 +#: elf/ldconfig.c:129 msgid "Change to and use ROOT as root directory" msgstr "Chuyển đổi và dùng Gá»C là m thÆ° mục gốc" -#: elf/ldconfig.c:128 +#: elf/ldconfig.c:129 msgid "ROOT" msgstr "Gá»C" -#: elf/ldconfig.c:129 +#: elf/ldconfig.c:130 msgid "CACHE" msgstr "NHỚ_ÄỆM" -#: elf/ldconfig.c:129 +#: elf/ldconfig.c:130 msgid "Use CACHE as cache file" msgstr "Dùng cái nà y là m TẬP-TIN nhá»› đệm" -#: elf/ldconfig.c:130 +#: elf/ldconfig.c:131 msgid "CONF" msgstr "CẤU_HÃŒNH" -#: elf/ldconfig.c:130 +#: elf/ldconfig.c:131 msgid "Use CONF as configuration file" msgstr "Dùng CẤU_HÃŒNH là m táºp tin cấu hình" -#: elf/ldconfig.c:131 +#: elf/ldconfig.c:132 msgid "Only process directories specified on the command line. Don't build cache." msgstr "Chỉ xá» lý các thÆ° mục được chỉ ra trên dòng lệnh. Äừng xây dá»±ng bá»™ nhá»› tạm." -#: elf/ldconfig.c:132 +#: elf/ldconfig.c:133 msgid "Manually link individual libraries." msgstr "Liên kết bằng tay các thÆ° viện riêng." -#: elf/ldconfig.c:133 +#: elf/ldconfig.c:134 msgid "FORMAT" msgstr "ÄỊNH_DẠNG" -#: elf/ldconfig.c:133 +#: elf/ldconfig.c:134 msgid "Format to use: new (default), old, or compat" msgstr "Äịnh dạng cần dùng: new (mặc định), old, compat (má»›i,cÅ©,tÆ°Æ¡ng thÃch)" -#: elf/ldconfig.c:134 +#: elf/ldconfig.c:135 msgid "Ignore auxiliary cache file" msgstr "Bá» qua táºp tin nhá»› tạm bổ trợ" -#: elf/ldconfig.c:142 +#: elf/ldconfig.c:143 msgid "Configure Dynamic Linker Run Time Bindings." msgstr "Cấu hình rà ng buá»™c liên kết Ä‘á»™ng khi chạy." -#: elf/ldconfig.c:276 +#: elf/ldconfig.c:277 #, c-format msgid "Path `%s' given more than once" msgstr "ÄÆ°á»ng dẫn “%s†được Ä‘Æ°a ra nhiá»u lần" -#: elf/ldconfig.c:277 +#: elf/ldconfig.c:278 #, c-format msgid "(from %s:%d and %s:%d)\n" msgstr "(từ %s:%d và %s:%d)\n" -#: elf/ldconfig.c:309 elf/ldconfig.c:350 +#: elf/ldconfig.c:310 elf/ldconfig.c:351 #, c-format msgid "Could not form glibc-hwcaps path" msgstr "Không thể tạo thà nh Ä‘Æ°á»ng dẫn glibc-hwcaps" -#: elf/ldconfig.c:323 +#: elf/ldconfig.c:324 #, c-format msgid "Listing directory %s" msgstr "ThÆ° mục liệt kê “%sâ€" -#: elf/ldconfig.c:405 +#: elf/ldconfig.c:406 #, c-format msgid "Can't stat %s" msgstr "Không thể lấy thống kê vá» %s" -#: elf/ldconfig.c:486 +#: elf/ldconfig.c:487 #, c-format msgid "Can't stat %s\n" msgstr "Không thể lấy thống kê vá» %s\n" -#: elf/ldconfig.c:496 +#: elf/ldconfig.c:497 #, c-format msgid "%s is not a symbolic link\n" msgstr "%s không phải là má»™t liên kết má»m\n" -#: elf/ldconfig.c:515 +#: elf/ldconfig.c:516 #, c-format msgid "Can't unlink %s" msgstr "Không thể bá» liên kết %s" -#: elf/ldconfig.c:521 +#: elf/ldconfig.c:522 #, c-format msgid "Can't link %s to %s" msgstr "Không thể liên kết %s tá»›i %s" -#: elf/ldconfig.c:527 +#: elf/ldconfig.c:528 msgid " (changed)\n" msgstr " (đã thay đổi)\n" -#: elf/ldconfig.c:529 +#: elf/ldconfig.c:530 msgid " (SKIPPED)\n" msgstr " (BỊ BỎ QUA)\n" -#: elf/ldconfig.c:584 +#: elf/ldconfig.c:585 #, c-format msgid "Can't find %s" msgstr "Không tìm thấy %s" -#: elf/ldconfig.c:600 elf/ldconfig.c:770 elf/ldconfig.c:837 +#: elf/ldconfig.c:601 elf/ldconfig.c:760 elf/ldconfig.c:827 #, c-format msgid "Cannot lstat %s" msgstr "Không thể lstat %s" -#: elf/ldconfig.c:606 +#: elf/ldconfig.c:607 #, c-format msgid "Ignored file %s since it is not a regular file." msgstr "Äã bá» qua táºp tin %s vì nó không phải là táºp tin thông thÆ°á»ng." -#: elf/ldconfig.c:614 +#: elf/ldconfig.c:615 #, c-format msgid "No link created since soname could not be found for %s" msgstr "ChÆ°a tạo liên kết vì không tìm thấy soname đối vá»›i %s" -#: elf/ldconfig.c:711 +#: elf/ldconfig.c:701 #, c-format msgid " (from %s:%d)\n" msgstr " (từ %s:%d)\n" -#: elf/ldconfig.c:726 +#: elf/ldconfig.c:716 #, c-format msgid "Can't open directory %s" msgstr "Không thể mở thÆ° mục %s" -#: elf/ldconfig.c:753 elf/ldconfig.c:758 +#: elf/ldconfig.c:743 elf/ldconfig.c:748 #, c-format msgid "Could not form library path" msgstr "Không thể tạo Ä‘Æ°á»ng dẫn thÆ° viện" -#: elf/ldconfig.c:787 elf/ldconfig.c:825 elf/readlib.c:78 +#: elf/ldconfig.c:777 elf/ldconfig.c:815 elf/readlib.c:81 #, c-format msgid "Input file %s not found.\n" msgstr "Không tìm thấy táºp tin đầu và o %s.\n" -#: elf/ldconfig.c:794 +#: elf/ldconfig.c:784 #, c-format msgid "Cannot stat %s" msgstr "Không thể lấy trạng thái vá» %s" -#: elf/ldconfig.c:913 +#: elf/ldconfig.c:903 #, c-format msgid "libc6 library %s in wrong directory" msgstr "thÆ° viện libc6 %s nằm trong thÆ° mục không đúng" -#: elf/ldconfig.c:932 +#: elf/ldconfig.c:922 #, c-format msgid "libraries %s and %s in directory %s have same soname but different type." msgstr "thÆ° viện %s và %s trong thÆ° mục %s có cùng má»™t soname còn có kiểu khác nhau." -#: elf/ldconfig.c:1061 +#: elf/ldconfig.c:1051 #, c-format msgid "Warning: ignoring configuration file that cannot be opened: %s" msgstr "Cảnh báo: Ä‘ang bá» qua táºp tin cấu hình, cái mà đã không thể mở được: %s" -#: elf/ldconfig.c:1109 +#: elf/ldconfig.c:1099 #, c-format msgid "%s:%u: hwcap directive ignored" msgstr "%s:%u: chỉ thị hwcap bị bá» qua" -#: elf/ldconfig.c:1128 +#: elf/ldconfig.c:1118 #, c-format msgid "need absolute file name for configuration file when using -r" msgstr "dùng tùy chá»n “-r†thì cÅ©ng cần tên táºp tin tuyệt đối cho táºp tin cấu hình" -#: elf/ldconfig.c:1135 locale/programs/xasprintf.c:31 +#: elf/ldconfig.c:1125 locale/programs/xasprintf.c:31 #: locale/programs/xmalloc.c:63 malloc/obstack.c:416 malloc/obstack.c:418 #: posix/getconf.c:460 posix/getconf.c:699 #, c-format msgid "memory exhausted" msgstr "hết bá»™ nhá»›" -#: elf/ldconfig.c:1168 +#: elf/ldconfig.c:1158 #, c-format msgid "%s:%u: cannot read directory %s" msgstr "%s:%u: không thể Ä‘á»c thÆ° mục %s" -#: elf/ldconfig.c:1206 +#: elf/ldconfig.c:1196 #, c-format msgid "relative path `%s' used to build cache" msgstr "Ä‘Æ°á»ng dẫn tÆ°Æ¡ng đối “%s†được dùng để xây dá»±ng bá»™ nhá»› tạm" -#: elf/ldconfig.c:1228 +#: elf/ldconfig.c:1218 #, c-format msgid "Can't chdir to /" msgstr "Không thể chuyển đổi thÆ° mục (chdir) sang /" -#: elf/ldconfig.c:1269 +#: elf/ldconfig.c:1259 #, c-format msgid "Can't open cache file directory %s\n" msgstr "Không thể mở thÆ° mục nhá»› tạm %s\n" @@ -1130,27 +1130,27 @@ msgstr "%s không phải là táºp tin đối tượng dùng chung (Kiểu: %d). msgid "more than one dynamic segment\n" msgstr "nhiá»u hÆ¡n má»™t Ä‘oạn Ä‘á»™ng\n" -#: elf/readlib.c:84 +#: elf/readlib.c:87 #, c-format msgid "Cannot fstat file %s.\n" msgstr "Không thể lấy thống kê táºp tin %s.\n" -#: elf/readlib.c:95 +#: elf/readlib.c:98 #, c-format msgid "File %s is empty, not checked." msgstr "Táºp tin %s là trống nên không được kiểm tra." -#: elf/readlib.c:101 +#: elf/readlib.c:104 #, c-format msgid "File %s is too small, not checked." msgstr "Táºp tin %s quá nhá» nên không được kiểm tra." -#: elf/readlib.c:111 +#: elf/readlib.c:114 #, c-format msgid "Cannot mmap file %s.\n" msgstr "Không thể mmap táºp tin %s.\n" -#: elf/readlib.c:149 +#: elf/readlib.c:152 #, c-format msgid "%s is not an ELF file - it has the wrong magic bytes at the start.\n" msgstr "%s không phải là táºp tin ELF — có những byte ma thuáºt không đúng tại khởi đầu của nó.\n" diff --git a/po/zh_CN.po b/po/zh_CN.po index 0d9f5bbc24..1f7dab0be9 100644 --- a/po/zh_CN.po +++ b/po/zh_CN.po @@ -15,7 +15,7 @@ msgid "" msgstr "" "Project-Id-Version: libc 2.39.9000\n" -"POT-Creation-Date: 2024-06-19 22:30+0200\n" +"POT-Creation-Date: 2024-07-21 00:32+0200\n" "PO-Revision-Date: 2024-06-22 21:14+0800\n" "Last-Translator: Wenbin Lv <wenbin816@gmail.com>\n" "Language-Team: Chinese (simplified) <i18n-zh@googlegroups.com>\n" @@ -157,7 +157,7 @@ msgstr "" "-o 输出文件 [输入文件]...\n" "[输出文件 [输入文件]...]" -#: catgets/gencat.c:230 debug/pcprofiledump.c:208 elf/ldconfig.c:216 +#: catgets/gencat.c:230 debug/pcprofiledump.c:208 elf/ldconfig.c:217 #: elf/pldd.c:246 elf/sln.c:77 elf/sprof.c:371 iconv/iconv_prog.c:387 #: iconv/iconvconfig.c:380 locale/programs/locale.c:275 #: locale/programs/localedef.c:437 login/programs/pt_chown.c:88 @@ -172,7 +172,7 @@ msgstr "" "%s。\n" #: catgets/gencat.c:246 debug/pcprofiledump.c:224 debug/xtrace.sh:63 -#: elf/ldconfig.c:232 elf/ldd.bash.in:38 elf/pldd.c:262 elf/sotruss.sh:75 +#: elf/ldconfig.c:233 elf/ldd.bash.in:38 elf/pldd.c:262 elf/sotruss.sh:75 #: elf/sprof.c:388 iconv/iconv_prog.c:404 iconv/iconvconfig.c:397 #: locale/programs/locale.c:292 locale/programs/localedef.c:459 #: login/programs/pt_chown.c:62 malloc/memusage.sh:70 malloc/memusagestat.c:582 @@ -188,7 +188,7 @@ msgstr "" "å“è´¨ä¿è¯ï¼›ç”šè‡³ä¸ä¿è¯é€‚销性或是适用于æŸç§ç‰¹å®šç”¨é€”。\n" #: catgets/gencat.c:251 debug/pcprofiledump.c:229 debug/xtrace.sh:67 -#: elf/ldconfig.c:237 elf/pldd.c:267 elf/sprof.c:394 iconv/iconv_prog.c:409 +#: elf/ldconfig.c:238 elf/pldd.c:267 elf/sprof.c:394 iconv/iconv_prog.c:409 #: iconv/iconvconfig.c:402 locale/programs/locale.c:297 #: locale/programs/localedef.c:464 malloc/memusage.sh:74 #: malloc/memusagestat.c:587 nscd/nscd.c:526 nss/getent.c:97 nss/makedb.c:392 @@ -403,7 +403,7 @@ msgstr "缓å˜æ–‡ä»¶ä½¿ç”¨äº†é”™è¯¯çš„å—节顺åºã€‚\n" msgid "Cache generated by: " msgstr "缓å˜ç”Ÿæˆè€…:" -#: elf/cache.c:296 elf/ldconfig.c:1249 +#: elf/cache.c:296 elf/ldconfig.c:1239 #, c-format msgid "Can't open cache file %s\n" msgstr "æ— æ³•æ‰“å¼€ç¼“å˜æ–‡ä»¶ %s\n" @@ -715,7 +715,7 @@ msgstr "æ— æ³•åœ¨é‡å®šä½åŽåº”用é¢å¤–的内å˜ä¿æŠ¤" msgid "RTLD_NEXT used in code not dynamically loaded" msgstr "代ç 所使用的 RTLD_NEXT 没有动æ€åŠ è½½" -#: elf/dl-tls.c:1059 +#: elf/dl-tls.c:1136 msgid "cannot create TLS data structures" msgstr "æ— æ³•åˆ›å»º TLS æ•°æ®ç»“æž„" @@ -731,216 +731,216 @@ msgstr "æ— æ³•åˆ†é…ç‰ˆæœ¬å¼•ç”¨è¡¨æ ¼" msgid "DT_RELR without GLIBC_ABI_DT_RELR dependency" msgstr "DT_RELR 没有 GLIBC_ABI_DT_RELR ä¾èµ–" -#: elf/ldconfig.c:124 +#: elf/ldconfig.c:125 msgid "Print cache" msgstr "打å°ç¼“å˜" -#: elf/ldconfig.c:125 +#: elf/ldconfig.c:126 msgid "Generate verbose messages" msgstr "生æˆè¯¦ç»†æ¶ˆæ¯" -#: elf/ldconfig.c:126 +#: elf/ldconfig.c:127 msgid "Don't build cache" msgstr "ä¸è¦åˆ›å»ºç¼“å˜" -#: elf/ldconfig.c:127 +#: elf/ldconfig.c:128 msgid "Don't update symbolic links" msgstr "ä¸è¦æ›´æ–°ç¬¦å·é“¾æŽ¥" -#: elf/ldconfig.c:128 +#: elf/ldconfig.c:129 msgid "Change to and use ROOT as root directory" msgstr "进入 <æ ¹> ç›®å½•å¹¶å°†å…¶ä½œä¸ºæ ¹ç›®å½•" -#: elf/ldconfig.c:128 +#: elf/ldconfig.c:129 msgid "ROOT" msgstr "æ ¹" -#: elf/ldconfig.c:129 +#: elf/ldconfig.c:130 msgid "CACHE" msgstr "缓å˜" -#: elf/ldconfig.c:129 +#: elf/ldconfig.c:130 msgid "Use CACHE as cache file" msgstr "å°† <缓å˜> 用作缓å˜æ–‡ä»¶" -#: elf/ldconfig.c:130 +#: elf/ldconfig.c:131 msgid "CONF" msgstr "é…ç½®" -#: elf/ldconfig.c:130 +#: elf/ldconfig.c:131 msgid "Use CONF as configuration file" msgstr "å°† <é…ç½®> 用作é…置文件" -#: elf/ldconfig.c:131 +#: elf/ldconfig.c:132 msgid "Only process directories specified on the command line. Don't build cache." msgstr "åªå¤„ç†å‘½ä»¤è¡Œä¸æŒ‡å®šçš„目录。ä¸è¦åˆ›å»ºç¼“å˜ã€‚" -#: elf/ldconfig.c:132 +#: elf/ldconfig.c:133 msgid "Manually link individual libraries." msgstr "手动链接å„个库。" -#: elf/ldconfig.c:133 +#: elf/ldconfig.c:134 msgid "FORMAT" msgstr "æ ¼å¼" -#: elf/ldconfig.c:133 +#: elf/ldconfig.c:134 msgid "Format to use: new (default), old, or compat" msgstr "ä½¿ç”¨çš„æ ¼å¼ï¼šnew(默认)ã€old 或 compat" -#: elf/ldconfig.c:134 +#: elf/ldconfig.c:135 msgid "Ignore auxiliary cache file" msgstr "忽略辅助缓å˜æ–‡ä»¶" -#: elf/ldconfig.c:142 +#: elf/ldconfig.c:143 msgid "Configure Dynamic Linker Run Time Bindings." msgstr "é…置动æ€é“¾æŽ¥å™¨çš„è¿è¡Œæ—¶çš„绑定。" -#: elf/ldconfig.c:276 +#: elf/ldconfig.c:277 #, c-format msgid "Path `%s' given more than once" msgstr "多次给出路径 \"%s\"" -#: elf/ldconfig.c:277 +#: elf/ldconfig.c:278 #, c-format msgid "(from %s:%d and %s:%d)\n" msgstr "(æ¥è‡ª %s:%d å’Œ %s:%d)\n" -#: elf/ldconfig.c:309 elf/ldconfig.c:350 +#: elf/ldconfig.c:310 elf/ldconfig.c:351 #, c-format msgid "Could not form glibc-hwcaps path" msgstr "æ— æ³•å½¢æˆ glibc-hwcaps 路径" -#: elf/ldconfig.c:323 +#: elf/ldconfig.c:324 #, c-format msgid "Listing directory %s" msgstr "æ£åœ¨åˆ—出目录 %s" -#: elf/ldconfig.c:405 +#: elf/ldconfig.c:406 #, c-format msgid "Can't stat %s" msgstr "æ— æ³•å¯¹ %s 进行 stat æ“作" -#: elf/ldconfig.c:486 +#: elf/ldconfig.c:487 #, c-format msgid "Can't stat %s\n" msgstr "æ— æ³•å¯¹ %s 进行 stat æ“作\n" -#: elf/ldconfig.c:496 +#: elf/ldconfig.c:497 #, c-format msgid "%s is not a symbolic link\n" msgstr "%s ä¸æ˜¯ç¬¦å·é“¾æŽ¥\n" -#: elf/ldconfig.c:515 +#: elf/ldconfig.c:516 #, c-format msgid "Can't unlink %s" msgstr "æ— æ³•å–消链接 %s" -#: elf/ldconfig.c:521 +#: elf/ldconfig.c:522 #, c-format msgid "Can't link %s to %s" msgstr "æ— æ³•å°† %s 链接到 %s" -#: elf/ldconfig.c:527 +#: elf/ldconfig.c:528 msgid " (changed)\n" msgstr "(已改å˜ï¼‰\n" -#: elf/ldconfig.c:529 +#: elf/ldconfig.c:530 msgid " (SKIPPED)\n" msgstr "(已跳过)\n" -#: elf/ldconfig.c:584 +#: elf/ldconfig.c:585 #, c-format msgid "Can't find %s" msgstr "æ— æ³•æ‰¾åˆ° %s" -#: elf/ldconfig.c:600 elf/ldconfig.c:770 elf/ldconfig.c:837 +#: elf/ldconfig.c:601 elf/ldconfig.c:760 elf/ldconfig.c:827 #, c-format msgid "Cannot lstat %s" msgstr "æ— æ³•å¯¹ %s 进行 lstat æ“作" -#: elf/ldconfig.c:606 +#: elf/ldconfig.c:607 #, c-format msgid "Ignored file %s since it is not a regular file." msgstr "忽略文件 %sï¼Œå› ä¸ºå®ƒä¸æ˜¯ä¸€ä¸ªæ™®é€šæ–‡ä»¶ã€‚" -#: elf/ldconfig.c:614 +#: elf/ldconfig.c:615 #, c-format msgid "No link created since soname could not be found for %s" msgstr "æœªåˆ›å»ºé“¾æŽ¥ï¼Œå› ä¸º %s æ— æ³•æ‰¾åˆ° soname" -#: elf/ldconfig.c:711 +#: elf/ldconfig.c:701 #, c-format msgid " (from %s:%d)\n" msgstr "(æ¥è‡ª %s:%d)\n" -#: elf/ldconfig.c:726 +#: elf/ldconfig.c:716 #, c-format msgid "Can't open directory %s" msgstr "æ— æ³•æ‰“å¼€ç›®å½• %s" -#: elf/ldconfig.c:753 elf/ldconfig.c:758 +#: elf/ldconfig.c:743 elf/ldconfig.c:748 #, c-format msgid "Could not form library path" msgstr "æ— æ³•å½¢æˆåº“路径" -#: elf/ldconfig.c:787 elf/ldconfig.c:825 elf/readlib.c:78 +#: elf/ldconfig.c:777 elf/ldconfig.c:815 elf/readlib.c:81 #, c-format msgid "Input file %s not found.\n" msgstr "未找到输入文件 %s。\n" -#: elf/ldconfig.c:794 +#: elf/ldconfig.c:784 #, c-format msgid "Cannot stat %s" msgstr "æ— æ³•å¯¹ %s 进行 stat æ“作" -#: elf/ldconfig.c:913 +#: elf/ldconfig.c:903 #, c-format msgid "libc6 library %s in wrong directory" msgstr "libc6 的库 %s 处于错误的目录ä¸" -#: elf/ldconfig.c:932 +#: elf/ldconfig.c:922 #, c-format msgid "libraries %s and %s in directory %s have same soname but different type." msgstr "目录 %3$s ä¸çš„库 %1$s å’Œ %2$s çš„ soname 相åŒä½†ç±»åž‹ä¸åŒã€‚" -#: elf/ldconfig.c:1061 +#: elf/ldconfig.c:1051 #, c-format msgid "Warning: ignoring configuration file that cannot be opened: %s" msgstr "è¦å‘Šï¼šå·²å¿½ç•¥æ— 法打开的é…置文件:%s" -#: elf/ldconfig.c:1109 +#: elf/ldconfig.c:1099 #, c-format msgid "%s:%u: hwcap directive ignored" msgstr "%s:%u: hwcap 指令已忽略" -#: elf/ldconfig.c:1128 +#: elf/ldconfig.c:1118 #, c-format msgid "need absolute file name for configuration file when using -r" msgstr "使用 -r 时,é…置文件的文件å需è¦ä½¿ç”¨ç»å¯¹è·¯å¾„" -#: elf/ldconfig.c:1135 locale/programs/xasprintf.c:31 +#: elf/ldconfig.c:1125 locale/programs/xasprintf.c:31 #: locale/programs/xmalloc.c:63 malloc/obstack.c:416 malloc/obstack.c:418 #: posix/getconf.c:460 posix/getconf.c:699 #, c-format msgid "memory exhausted" msgstr "内å˜è€—å°½" -#: elf/ldconfig.c:1168 +#: elf/ldconfig.c:1158 #, c-format msgid "%s:%u: cannot read directory %s" msgstr "%s:%u: æ— æ³•è¯»å–目录 %s" -#: elf/ldconfig.c:1206 +#: elf/ldconfig.c:1196 #, c-format msgid "relative path `%s' used to build cache" msgstr "用æ¥æž„建缓å˜çš„路径 \"%s\" 是相对路径" -#: elf/ldconfig.c:1228 +#: elf/ldconfig.c:1218 #, c-format msgid "Can't chdir to /" msgstr "æ— æ³•æ”¹å˜ç›®å½•åˆ° /" -#: elf/ldconfig.c:1269 +#: elf/ldconfig.c:1259 #, c-format msgid "Can't open cache file directory %s\n" msgstr "æ— æ³•æ‰“å¼€ç¼“å˜æ–‡ä»¶ç›®å½• %s\n" @@ -1139,27 +1139,27 @@ msgstr "%s ä¸æ˜¯å…±äº«ç›®æ ‡æ–‡ä»¶ï¼ˆç±»åž‹ï¼š%d)。\n" msgid "more than one dynamic segment\n" msgstr "多于一个动æ€æ®µ\n" -#: elf/readlib.c:84 +#: elf/readlib.c:87 #, c-format msgid "Cannot fstat file %s.\n" msgstr "æ— æ³•å¯¹æ–‡ä»¶ %s 进行 fstat æ“作。\n" -#: elf/readlib.c:95 +#: elf/readlib.c:98 #, c-format msgid "File %s is empty, not checked." msgstr "文件 %s 为空,未检查。" -#: elf/readlib.c:101 +#: elf/readlib.c:104 #, c-format msgid "File %s is too small, not checked." msgstr "文件 %s 过å°ï¼Œæœªæ£€æŸ¥ã€‚" -#: elf/readlib.c:111 +#: elf/readlib.c:114 #, c-format msgid "Cannot mmap file %s.\n" msgstr "æ— æ³•å¯¹æ–‡ä»¶ %s 进行 mmap æ“作。\n" -#: elf/readlib.c:149 +#: elf/readlib.c:152 #, c-format msgid "%s is not an ELF file - it has the wrong magic bytes at the start.\n" msgstr "%s ä¸æ˜¯ ELF 文件 - 起始处的é”数有误。\n" diff --git a/po/zh_TW.po b/po/zh_TW.po index 415d635103..d1d2b503d5 100644 --- a/po/zh_TW.po +++ b/po/zh_TW.po @@ -16,7 +16,7 @@ msgid "" msgstr "" "Project-Id-Version: libc 2.37.9000\n" -"POT-Creation-Date: 2024-06-19 22:30+0200\n" +"POT-Creation-Date: 2024-07-21 00:32+0200\n" "PO-Revision-Date: 2023-07-18 23:05+0800\n" "Last-Translator: Yi-Jyun Pan <pan93412@gmail.com>\n" "Language-Team: Chinese (traditional) <zh-l10n@lists.linux.org.tw>\n" @@ -158,7 +158,7 @@ msgstr "" "-o 輸出檔案å稱 [輸入檔案å稱]...\n" "[輸出檔案å稱 [輸入檔案å稱]...]" -#: catgets/gencat.c:230 debug/pcprofiledump.c:208 elf/ldconfig.c:216 +#: catgets/gencat.c:230 debug/pcprofiledump.c:208 elf/ldconfig.c:217 #: elf/pldd.c:246 elf/sln.c:77 elf/sprof.c:371 iconv/iconv_prog.c:387 #: iconv/iconvconfig.c:380 locale/programs/locale.c:275 #: locale/programs/localedef.c:437 login/programs/pt_chown.c:88 @@ -173,7 +173,7 @@ msgstr "" "%s。\n" #: catgets/gencat.c:246 debug/pcprofiledump.c:224 debug/xtrace.sh:63 -#: elf/ldconfig.c:232 elf/ldd.bash.in:38 elf/pldd.c:262 elf/sotruss.sh:75 +#: elf/ldconfig.c:233 elf/ldd.bash.in:38 elf/pldd.c:262 elf/sotruss.sh:75 #: elf/sprof.c:388 iconv/iconv_prog.c:404 iconv/iconvconfig.c:397 #: locale/programs/locale.c:292 locale/programs/localedef.c:459 #: login/programs/pt_chown.c:62 malloc/memusage.sh:70 malloc/memusagestat.c:582 @@ -189,7 +189,7 @@ msgstr "" "售或者é©åˆæŸäº›ç‰¹æ®Šç›®çš„。\n" #: catgets/gencat.c:251 debug/pcprofiledump.c:229 debug/xtrace.sh:67 -#: elf/ldconfig.c:237 elf/pldd.c:267 elf/sprof.c:394 iconv/iconv_prog.c:409 +#: elf/ldconfig.c:238 elf/pldd.c:267 elf/sprof.c:394 iconv/iconv_prog.c:409 #: iconv/iconvconfig.c:402 locale/programs/locale.c:297 #: locale/programs/localedef.c:464 malloc/memusage.sh:74 #: malloc/memusagestat.c:587 nscd/nscd.c:526 nss/getent.c:97 nss/makedb.c:392 @@ -400,7 +400,7 @@ msgstr "å¿«å–檔案的å—ç¯€é †åºæœ‰èª¤ã€‚\n" msgid "Cache generated by: " msgstr "å¿«å–產生者:" -#: elf/cache.c:296 elf/ldconfig.c:1249 +#: elf/cache.c:296 elf/ldconfig.c:1239 #, c-format msgid "Can't open cache file %s\n" msgstr "無法開啟快å–檔 %s\n" @@ -711,7 +711,7 @@ msgstr "é‡å®šå€ä¹‹å¾Œç„¡æ³•å¥—用é¡å¤–記憶體ä¿è·" msgid "RTLD_NEXT used in code not dynamically loaded" msgstr "程å¼ç¢¼æ‰€ä½¿ç”¨çš„ RTLD_NEXT 沒有動態載入" -#: elf/dl-tls.c:1059 +#: elf/dl-tls.c:1136 msgid "cannot create TLS data structures" msgstr "無法建立 TLS 資料çµæ§‹" @@ -727,216 +727,216 @@ msgstr "無法é…置版本åƒç…§è¡¨" msgid "DT_RELR without GLIBC_ABI_DT_RELR dependency" msgstr "DT_RELR 缺少 GLIBC_ABI_DT_RELR ä¾è³´é—œä¿‚" -#: elf/ldconfig.c:124 +#: elf/ldconfig.c:125 msgid "Print cache" msgstr "å°å‡ºå¿«å–" -#: elf/ldconfig.c:125 +#: elf/ldconfig.c:126 msgid "Generate verbose messages" msgstr "產生更多的訊æ¯" -#: elf/ldconfig.c:126 +#: elf/ldconfig.c:127 msgid "Don't build cache" msgstr "ä¸å»ºç«‹å¿«å–" -#: elf/ldconfig.c:127 +#: elf/ldconfig.c:128 msgid "Don't update symbolic links" msgstr "ä¸è¦æ›´æ–°ç¬¦è™Ÿé€£çµ" -#: elf/ldconfig.c:128 +#: elf/ldconfig.c:129 msgid "Change to and use ROOT as root directory" msgstr "變æ›åˆ° ROOT 目錄並以它åšç‚ºæ ¹ç›®éŒ„" -#: elf/ldconfig.c:128 +#: elf/ldconfig.c:129 msgid "ROOT" msgstr "ROOT" -#: elf/ldconfig.c:129 +#: elf/ldconfig.c:130 msgid "CACHE" msgstr "CACHE" -#: elf/ldconfig.c:129 +#: elf/ldconfig.c:130 msgid "Use CACHE as cache file" msgstr "使用 CACHE 當作快å–檔案" -#: elf/ldconfig.c:130 +#: elf/ldconfig.c:131 msgid "CONF" msgstr "CONF" -#: elf/ldconfig.c:130 +#: elf/ldconfig.c:131 msgid "Use CONF as configuration file" msgstr "使用 CONF 當作è¨å®šæª”" -#: elf/ldconfig.c:131 +#: elf/ldconfig.c:132 msgid "Only process directories specified on the command line. Don't build cache." msgstr "åªè™•ç†åœ¨æŒ‡ä»¤åˆ—引數ä¸æœ‰æŒ‡å®šçš„目錄,ä¸å»ºç«‹å¿«å–檔案。" -#: elf/ldconfig.c:132 +#: elf/ldconfig.c:133 msgid "Manually link individual libraries." msgstr "手動個別連çµå‡½å¼åº«" -#: elf/ldconfig.c:133 +#: elf/ldconfig.c:134 msgid "FORMAT" msgstr "FORMAT" -#: elf/ldconfig.c:133 +#: elf/ldconfig.c:134 msgid "Format to use: new (default), old, or compat" msgstr "è¦ä½¿ç”¨çš„æ ¼å¼ï¼šnew (é è¨å€¼)ã€old 或 compat" -#: elf/ldconfig.c:134 +#: elf/ldconfig.c:135 msgid "Ignore auxiliary cache file" msgstr "忽略輔助è¨å‚™å¿«å–檔案" -#: elf/ldconfig.c:142 +#: elf/ldconfig.c:143 msgid "Configure Dynamic Linker Run Time Bindings." msgstr "è¨å®šåŸ·è¡Œæ™‚期動態連接" -#: elf/ldconfig.c:276 +#: elf/ldconfig.c:277 #, c-format msgid "Path `%s' given more than once" msgstr "路徑 `%s' 使用超éŽä¸€æ¬¡" -#: elf/ldconfig.c:277 +#: elf/ldconfig.c:278 #, c-format msgid "(from %s:%d and %s:%d)\n" msgstr "(自 %s:%d å’Œ %s:%d)\n" -#: elf/ldconfig.c:309 elf/ldconfig.c:350 +#: elf/ldconfig.c:310 elf/ldconfig.c:351 #, c-format msgid "Could not form glibc-hwcaps path" msgstr "無法建構 glibc-hwcaps 路徑" -#: elf/ldconfig.c:323 +#: elf/ldconfig.c:324 #, c-format msgid "Listing directory %s" msgstr "列出目錄 %s" -#: elf/ldconfig.c:405 +#: elf/ldconfig.c:406 #, c-format msgid "Can't stat %s" msgstr "無法 stat %s" -#: elf/ldconfig.c:486 +#: elf/ldconfig.c:487 #, c-format msgid "Can't stat %s\n" msgstr "無法 stat %s\n" -#: elf/ldconfig.c:496 +#: elf/ldconfig.c:497 #, c-format msgid "%s is not a symbolic link\n" msgstr "%s ä¸æ˜¯ä¸€å€‹ç¬¦è™Ÿé€£æŽ¥æª”\n" -#: elf/ldconfig.c:515 +#: elf/ldconfig.c:516 #, c-format msgid "Can't unlink %s" msgstr "無法å–æ¶ˆé€£çµ %s" -#: elf/ldconfig.c:521 +#: elf/ldconfig.c:522 #, c-format msgid "Can't link %s to %s" msgstr "無法從 %s 連çµåˆ° %s" -#: elf/ldconfig.c:527 +#: elf/ldconfig.c:528 msgid " (changed)\n" msgstr " (已改變)\n" -#: elf/ldconfig.c:529 +#: elf/ldconfig.c:530 msgid " (SKIPPED)\n" msgstr " (已忽略)\n" -#: elf/ldconfig.c:584 +#: elf/ldconfig.c:585 #, c-format msgid "Can't find %s" msgstr "找ä¸åˆ° %s" -#: elf/ldconfig.c:600 elf/ldconfig.c:770 elf/ldconfig.c:837 +#: elf/ldconfig.c:601 elf/ldconfig.c:760 elf/ldconfig.c:827 #, c-format msgid "Cannot lstat %s" msgstr "無法 lstat %s" -#: elf/ldconfig.c:606 +#: elf/ldconfig.c:607 #, c-format msgid "Ignored file %s since it is not a regular file." msgstr "忽略檔案 %s å› ç‚ºå®ƒä¸æ˜¯ä¸€å€‹æ£å¸¸çš„檔案。" -#: elf/ldconfig.c:614 +#: elf/ldconfig.c:615 #, c-format msgid "No link created since soname could not be found for %s" msgstr "由於找ä¸åˆ° %s 的共用物件å稱,連çµä¸¦æœªè¢«å»ºç«‹" -#: elf/ldconfig.c:711 +#: elf/ldconfig.c:701 #, c-format msgid " (from %s:%d)\n" msgstr " (自 %s:%d)\n" -#: elf/ldconfig.c:726 +#: elf/ldconfig.c:716 #, c-format msgid "Can't open directory %s" msgstr "無法開啟目錄 %s" -#: elf/ldconfig.c:753 elf/ldconfig.c:758 +#: elf/ldconfig.c:743 elf/ldconfig.c:748 #, c-format msgid "Could not form library path" msgstr "無法組織函å¼åº«è·¯å¾‘" -#: elf/ldconfig.c:787 elf/ldconfig.c:825 elf/readlib.c:78 +#: elf/ldconfig.c:777 elf/ldconfig.c:815 elf/readlib.c:81 #, c-format msgid "Input file %s not found.\n" msgstr "輸入檔 %s 找ä¸åˆ°ã€‚\n" -#: elf/ldconfig.c:794 +#: elf/ldconfig.c:784 #, c-format msgid "Cannot stat %s" msgstr "無法顯示狀態 %s" -#: elf/ldconfig.c:913 +#: elf/ldconfig.c:903 #, c-format msgid "libc6 library %s in wrong directory" msgstr "libc6 函å¼åº« %s 擺錯目錄了" -#: elf/ldconfig.c:932 +#: elf/ldconfig.c:922 #, c-format msgid "libraries %s and %s in directory %s have same soname but different type." msgstr "函å¼åº« %s è·Ÿ %s (在目錄 %s 底下) 有共åŒçš„共用函å¼åº«å稱,ä¸éŽå…¶æ ¼å¼å»ä¸åŒ" -#: elf/ldconfig.c:1061 +#: elf/ldconfig.c:1051 #, c-format msgid "Warning: ignoring configuration file that cannot be opened: %s" msgstr "è¦å‘Šï¼šæ£åœ¨å¿½ç•¥ç„¡æ³•é–‹å•Ÿçš„組態檔案:%s" -#: elf/ldconfig.c:1109 +#: elf/ldconfig.c:1099 #, c-format msgid "%s:%u: hwcap directive ignored" msgstr "%s:%u: 忽略 hwcap 指示詞" -#: elf/ldconfig.c:1128 +#: elf/ldconfig.c:1118 #, c-format msgid "need absolute file name for configuration file when using -r" msgstr "需è¦çµ•å°æª”案å稱用於組態檔案時æ£åœ¨ä½¿ç”¨ -r" -#: elf/ldconfig.c:1135 locale/programs/xasprintf.c:31 +#: elf/ldconfig.c:1125 locale/programs/xasprintf.c:31 #: locale/programs/xmalloc.c:63 malloc/obstack.c:416 malloc/obstack.c:418 #: posix/getconf.c:460 posix/getconf.c:699 #, c-format msgid "memory exhausted" msgstr "記憶體用盡" -#: elf/ldconfig.c:1168 +#: elf/ldconfig.c:1158 #, c-format msgid "%s:%u: cannot read directory %s" msgstr "%s:%u: 無法讀å–目錄 %s" -#: elf/ldconfig.c:1206 +#: elf/ldconfig.c:1196 #, c-format msgid "relative path `%s' used to build cache" msgstr "用來建置快å–的相å°è·¯å¾‘ `%s'" -#: elf/ldconfig.c:1228 +#: elf/ldconfig.c:1218 #, c-format msgid "Can't chdir to /" msgstr "無法變更目錄到 /" -#: elf/ldconfig.c:1269 +#: elf/ldconfig.c:1259 #, c-format msgid "Can't open cache file directory %s\n" msgstr "無法開啟快å–檔案目錄 %s\n" @@ -1134,27 +1134,27 @@ msgstr "%s ä¸æ˜¯ä¸€å€‹å…±ç”¨ç‰©ä»¶ (åž‹æ…‹: %d)。\n" msgid "more than one dynamic segment\n" msgstr "超éŽä¸€å€‹çš„å‹•æ…‹å€æ®µ\n" -#: elf/readlib.c:84 +#: elf/readlib.c:87 #, c-format msgid "Cannot fstat file %s.\n" msgstr "無法 fstat 檔案 %s。\n" -#: elf/readlib.c:95 +#: elf/readlib.c:98 #, c-format msgid "File %s is empty, not checked." msgstr "檔案 %s 為空,ä¸åšæª¢æŸ¥ã€‚" -#: elf/readlib.c:101 +#: elf/readlib.c:104 #, c-format msgid "File %s is too small, not checked." msgstr "檔案 %s 太å°ï¼Œä¸åšæª¢æŸ¥ã€‚" -#: elf/readlib.c:111 +#: elf/readlib.c:114 #, c-format msgid "Cannot mmap file %s.\n" msgstr "無法 mmap 檔案 %s。\n" -#: elf/readlib.c:149 +#: elf/readlib.c:152 #, c-format msgid "%s is not an ELF file - it has the wrong magic bytes at the start.\n" msgstr "%s ä¸æ˜¯ä¸€å€‹ ELF 檔 - 其開é çš„é”è¡“ä½å…ƒçµ„是錯的。\n" diff --git a/posix/tst-execveat.c b/posix/tst-execveat.c index 4565d6b19f..dde034a9f1 100644 --- a/posix/tst-execveat.c +++ b/posix/tst-execveat.c @@ -155,7 +155,7 @@ do_test (void) tmp_sh = xasprintf ("%s/tmp_sh", tmp_dir); add_temp_file (tmp_sh); fd_out = xopen (symlink_name, O_CREAT | O_WRONLY, 0); - xstat ("/bin/sh", &st); + xstat64 ("/bin/sh", &st); fd = xopen ("/bin/sh", O_RDONLY, 0); xcopy_file_range (fd, 0, fd_out, 0, st.st_size, 0); xfchmod (fd_out, 0700); diff --git a/posix/tst-truncate-common.c b/posix/tst-truncate-common.c index b774fa46b8..b8c561ffdb 100644 --- a/posix/tst-truncate-common.c +++ b/posix/tst-truncate-common.c @@ -21,6 +21,8 @@ #include <sys/stat.h> #include <unistd.h> +#include <support/check.h> + static void do_prepare (void); #define PREPARE(argc, argv) do_prepare () static int do_test (void); @@ -42,9 +44,6 @@ do_prepare (void) } } -#define FAIL(str) \ - do { printf ("error: %s (line %d)\n", str, __LINE__); return 1; } while (0) - static int do_test_with_offset (off_t offset) { @@ -54,35 +53,35 @@ do_test_with_offset (off_t offset) memset (buf, 0xcf, sizeof (buf)); if (pwrite (temp_fd, buf, sizeof (buf), offset) != sizeof (buf)) - FAIL ("write failed"); + FAIL_RET ("write failed"); if (fstat (temp_fd, &st) < 0 || st.st_size != (offset + sizeof (buf))) - FAIL ("initial size wrong"); + FAIL_RET ("initial size wrong"); if (ftruncate (temp_fd, offset + 800) < 0) - FAIL ("size reduction with ftruncate failed"); + FAIL_RET ("size reduction with ftruncate failed"); if (fstat (temp_fd, &st) < 0 || st.st_size != (offset + 800)) - FAIL ("size after reduction with ftruncate is incorrect"); + FAIL_RET ("size after reduction with ftruncate is incorrect"); /* The following test covers more than POSIX. POSIX does not require that ftruncate() can increase the file size. But we are testing Unix systems. */ if (ftruncate (temp_fd, offset + 1200) < 0) - FAIL ("size increate with ftruncate failed"); + FAIL_RET ("size increate with ftruncate failed"); if (fstat (temp_fd, &st) < 0 || st.st_size != (offset + 1200)) - FAIL ("size after increase is incorrect"); + FAIL_RET ("size after increase is incorrect"); if (truncate (temp_filename, offset + 800) < 0) - FAIL ("size reduction with truncate failed"); + FAIL_RET ("size reduction with truncate failed"); if (fstat (temp_fd, &st) < 0 || st.st_size != (offset + 800)) - FAIL ("size after reduction with truncate incorrect"); + FAIL_RET ("size after reduction with truncate incorrect"); /* The following test covers more than POSIX. POSIX does not require that truncate() can increase the file size. But we are testing Unix systems. */ if (truncate (temp_filename, (offset + 1200)) < 0) - FAIL ("size increase with truncate failed"); + FAIL_RET ("size increase with truncate failed"); if (fstat (temp_fd, &st) < 0 || st.st_size != (offset + 1200)) - FAIL ("size increase with truncate is incorrect"); + FAIL_RET ("size increase with truncate is incorrect"); return 0; } diff --git a/resolv/Makefile b/resolv/Makefile index 5f44f5896b..abff7fc007 100644 --- a/resolv/Makefile +++ b/resolv/Makefile @@ -106,6 +106,8 @@ tests += \ tst-resolv-nondecimal \ tst-resolv-res_init-multi \ tst-resolv-search \ + tst-resolv-semi-failure \ + tst-resolv-short-response \ tst-resolv-trailing \ # This test calls __res_context_send directly, which is not exported @@ -299,6 +301,10 @@ $(objpfx)tst-resolv-nondecimal: $(objpfx)libresolv.so $(shared-thread-library) $(objpfx)tst-resolv-qtypes: $(objpfx)libresolv.so $(shared-thread-library) $(objpfx)tst-resolv-rotate: $(objpfx)libresolv.so $(shared-thread-library) $(objpfx)tst-resolv-search: $(objpfx)libresolv.so $(shared-thread-library) +$(objpfx)tst-resolv-semi-failure: $(objpfx)libresolv.so \ + $(shared-thread-library) +$(objpfx)tst-resolv-short-response: $(objpfx)libresolv.so \ + $(shared-thread-library) $(objpfx)tst-resolv-trailing: $(objpfx)libresolv.so $(shared-thread-library) $(objpfx)tst-resolv-threads: $(objpfx)libresolv.so $(shared-thread-library) $(objpfx)tst-resolv-txnid-collision: $(objpfx)libresolv.a \ diff --git a/resolv/res_init.c b/resolv/res_init.c index 263263d474..b838dc7064 100644 --- a/resolv/res_init.c +++ b/resolv/res_init.c @@ -682,27 +682,30 @@ res_setoptions (struct resolv_conf_parser *parser, const char *options) { char str[22]; uint8_t len; - uint8_t clear; unsigned long int flag; } options[] = { #define STRnLEN(str) str, sizeof (str) - 1 - { STRnLEN ("rotate"), 0, RES_ROTATE }, - { STRnLEN ("edns0"), 0, RES_USE_EDNS0 }, - { STRnLEN ("single-request-reopen"), 0, RES_SNGLKUPREOP }, - { STRnLEN ("single-request"), 0, RES_SNGLKUP }, - { STRnLEN ("no_tld_query"), 0, RES_NOTLDQUERY }, - { STRnLEN ("no-tld-query"), 0, RES_NOTLDQUERY }, - { STRnLEN ("no-reload"), 0, RES_NORELOAD }, - { STRnLEN ("use-vc"), 0, RES_USEVC }, - { STRnLEN ("trust-ad"), 0, RES_TRUSTAD }, - { STRnLEN ("no-aaaa"), 0, RES_NOAAAA }, + { STRnLEN ("rotate"), RES_ROTATE }, + { STRnLEN ("edns0"), RES_USE_EDNS0 }, + { STRnLEN ("single-request-reopen"), RES_SNGLKUPREOP }, + { STRnLEN ("single-request"), RES_SNGLKUP }, + { STRnLEN ("no_tld_query"), RES_NOTLDQUERY }, + { STRnLEN ("no-tld-query"), RES_NOTLDQUERY }, + { STRnLEN ("no-reload"), RES_NORELOAD }, + { STRnLEN ("use-vc"), RES_USEVC }, + { STRnLEN ("trust-ad"), RES_TRUSTAD }, + { STRnLEN ("no-aaaa"), RES_NOAAAA }, + { STRnLEN ("strict-error"), RES_STRICTERR }, }; #define noptions (sizeof (options) / sizeof (options[0])) + bool negate_option = *cp == '-'; + if (negate_option) + ++cp; for (int i = 0; i < noptions; ++i) if (strncmp (cp, options[i].str, options[i].len) == 0) { - if (options[i].clear) - parser->template.options &= options[i].flag; + if (negate_option) + parser->template.options &= ~options[i].flag; else parser->template.options |= options[i].flag; break; diff --git a/resolv/res_send.c b/resolv/res_send.c index ea7cf192b2..9a284ed44a 100644 --- a/resolv/res_send.c +++ b/resolv/res_send.c @@ -1199,19 +1199,30 @@ send_dg(res_state statp, } /* Check for the correct header layout and a matching - question. */ + question. Some recursive resolvers send REFUSED + without copying back the question section + (producing a response that is only HFIXEDSZ bytes + long). Skip query matching in this case. */ + bool thisansp_error = (anhp->rcode == SERVFAIL || + anhp->rcode == NOTIMP || + anhp->rcode == REFUSED); + bool skip_query_match = (*thisresplenp == HFIXEDSZ + && ntohs (anhp->qdcount) == 0 + && thisansp_error); int matching_query = 0; /* Default to no matching query. */ if (!recvresp1 && anhp->id == hp->id - && __libc_res_queriesmatch (buf, buf + buflen, - *thisansp, - *thisansp + *thisanssizp)) + && (skip_query_match + || __libc_res_queriesmatch (buf, buf + buflen, + *thisansp, + *thisansp + *thisanssizp))) matching_query = 1; if (!recvresp2 && anhp->id == hp2->id - && __libc_res_queriesmatch (buf2, buf2 + buflen2, - *thisansp, - *thisansp + *thisanssizp)) + && (skip_query_match + || __libc_res_queriesmatch (buf2, buf2 + buflen2, + *thisansp, + *thisansp + *thisanssizp))) matching_query = 2; if (matching_query == 0) /* Spurious UDP packet. Drop it and continue @@ -1221,25 +1232,40 @@ send_dg(res_state statp, goto wait; } - if (anhp->rcode == SERVFAIL || - anhp->rcode == NOTIMP || - anhp->rcode == REFUSED) { + if (thisansp_error) { next_ns: - if (recvresp1 || (buf2 != NULL && recvresp2)) { - *resplen2 = 0; - return resplen; - } - if (buf2 != NULL) + /* Outside of strict-error mode, use the first + response even if the second response is an + error. This allows parallel resolution to + succeed even if the recursive resolver + always answers with SERVFAIL for AAAA + queries (which still happens in practice + unfortunately). + + In strict-error mode, always switch to the + next server and try to get a response from + there. */ + if ((statp->options & RES_STRICTERR) == 0) { - /* No data from the first reply. */ - resplen = 0; - /* We are waiting for a possible second reply. */ - if (matching_query == 1) - recvresp1 = 1; - else - recvresp2 = 1; - - goto wait; + if (recvresp1 || (buf2 != NULL && recvresp2)) + { + *resplen2 = 0; + return resplen; + } + + if (buf2 != NULL && !single_request) + { + /* No data from the first reply. */ + resplen = 0; + /* We are waiting for a possible + second reply. */ + if (matching_query == 1) + recvresp1 = 1; + else + recvresp2 = 1; + + goto wait; + } } /* don't retry if called from dig */ diff --git a/resolv/resolv.h b/resolv/resolv.h index f40d6c58ce..b8a0f66a5f 100644 --- a/resolv/resolv.h +++ b/resolv/resolv.h @@ -133,6 +133,7 @@ struct res_sym { #define RES_NORELOAD 0x02000000 /* No automatic configuration reload. */ #define RES_TRUSTAD 0x04000000 /* Request AD bit, keep it in responses. */ #define RES_NOAAAA 0x08000000 /* Suppress AAAA queries. */ +#define RES_STRICTERR 0x10000000 /* Report more DNS errors as errors. */ #define RES_DEFAULT (RES_RECURSE|RES_DEFNAMES|RES_DNSRCH) diff --git a/resolv/tst-resolv-res_init-skeleton.c b/resolv/tst-resolv-res_init-skeleton.c index 6bef62cde2..e41bcebd9d 100644 --- a/resolv/tst-resolv-res_init-skeleton.c +++ b/resolv/tst-resolv-res_init-skeleton.c @@ -129,6 +129,7 @@ print_resp (FILE *fp, res_state resp) print_option_flag (fp, &options, RES_NORELOAD, "no-reload"); print_option_flag (fp, &options, RES_TRUSTAD, "trust-ad"); print_option_flag (fp, &options, RES_NOAAAA, "no-aaaa"); + print_option_flag (fp, &options, RES_STRICTERR, "strict-error"); fputc ('\n', fp); if (options != 0) fprintf (fp, "; error: unresolved option bits: 0x%x\n", options); @@ -679,6 +680,16 @@ struct test_case test_cases[] = "; nameserver[0]: [192.0.2.1]:53\n", .res_options = "attempts:5 ndots:3 edns0 ", }, + {.name = "RES_OPTIONS can clear flags", + .conf = "options ndots:2 use-vc no-aaaa edns0\n" + "nameserver 192.0.2.1\n", + .expected = "options ndots:3 use-vc\n" + "search example.com\n" + "; search[0]: example.com\n" + "nameserver 192.0.2.1\n" + "; nameserver[0]: [192.0.2.1]:53\n", + .res_options = "ndots:3 -edns0 -no-aaaa", + }, {.name = "many search list entries (bug 19569)", .conf = "nameserver 192.0.2.1\n" "search corp.example.com support.example.com" @@ -731,6 +742,15 @@ struct test_case test_cases[] = "nameserver 192.0.2.1\n" "; nameserver[0]: [192.0.2.1]:53\n" }, + {.name = "strict-error flag", + .conf = "options strict-error\n" + "nameserver 192.0.2.1\n", + .expected = "options strict-error\n" + "search example.com\n" + "; search[0]: example.com\n" + "nameserver 192.0.2.1\n" + "; nameserver[0]: [192.0.2.1]:53\n" + }, { NULL } }; diff --git a/resolv/tst-resolv-semi-failure.c b/resolv/tst-resolv-semi-failure.c new file mode 100644 index 0000000000..b7681210f4 --- /dev/null +++ b/resolv/tst-resolv-semi-failure.c @@ -0,0 +1,142 @@ +/* Test parallel failure/success responses (bug 30081). + Copyright (C) 2024 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 + <https://www.gnu.org/licenses/>. */ + +#include <resolv.h> +#include <support/check.h> +#include <support/resolv_test.h> +#include <support/check_nss.h> + +/* The rcode in the initial response. */ +static volatile int rcode; + +/* Whether to fail the initial A query (!fail_aaaa) or the initial + AAAA query (fail_aaaa). */ +static volatile bool fail_aaaa; + +static void +response (const struct resolv_response_context *ctx, + struct resolv_response_builder *b, + const char *qname, uint16_t qclass, uint16_t qtype) +{ + /* Handle the failing query. */ + if ((fail_aaaa && qtype == T_AAAA) && ctx->server_index == 0) + { + struct resolv_response_flags flags = {.rcode = rcode}; + resolv_response_init (b, flags); + return; + } + + /* Otherwise produce a response. */ + resolv_response_init (b, (struct resolv_response_flags) {}); + resolv_response_add_question (b, qname, qclass, qtype); + resolv_response_section (b, ns_s_an); + resolv_response_open_record (b, qname, qclass, qtype, 0); + switch (qtype) + { + case T_A: + { + char ipv4[4] = {192, 0, 2, 17}; + resolv_response_add_data (b, &ipv4, sizeof (ipv4)); + } + break; + case T_AAAA: + { + char ipv6[16] + = {0x20, 0x01, 0xd, 0xb8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}; + resolv_response_add_data (b, &ipv6, sizeof (ipv6)); + } + break; + default: + FAIL_EXIT1 ("unexpected TYPE%d query", qtype); + } + resolv_response_close_record (b); +} + +/* Set to 1 if strict error checking is enabled. */ +static int do_strict_error; + +static void +check_one (void) +{ + + /* The buggy 1-second query timeout results in 30 seconds of delay, + which triggers are test timeout failure. */ + for (int i = 0; i < 30; ++i) + { + static const struct addrinfo hints = + { + .ai_family = AF_UNSPEC, + .ai_socktype = SOCK_STREAM, + }; + struct addrinfo *ai; + int ret = getaddrinfo ("www.example", "80", &hints, &ai); + const char *expected; + /* In strict-error mode, a switch to the second name server + happens, and both responses are received, so a single + response is a bug. */ + if (do_strict_error || (ret == 0 && ai->ai_next != NULL)) + expected = ("address: STREAM/TCP 192.0.2.17 80\n" + "address: STREAM/TCP 2001:db8::1 80\n"); + else + /* Only one response because the AAAA lookup failure is + treated as an ignoreable error. */ + expected = "address: STREAM/TCP 192.0.2.17 80\n"; + check_addrinfo ("www.example", ai, ret, expected); + if (ret == 0) + freeaddrinfo (ai); + } +} + +static int +do_test (void) +{ + for (do_strict_error = 0; do_strict_error < 2; ++do_strict_error) + for (int do_single_lookup = 0; do_single_lookup < 2; ++do_single_lookup) + { + struct resolv_test *aux = resolv_test_start + ((struct resolv_redirect_config) + { + .response_callback = response, + }); + + if (do_strict_error) + _res.options |= RES_STRICTERR; + if (do_single_lookup) + _res.options |= RES_SNGLKUP; + + for (int do_fail_aaaa = 0; do_fail_aaaa < 2; ++do_fail_aaaa) + { + fail_aaaa = do_fail_aaaa; + + rcode = 2; /* SERVFAIL. */ + check_one (); + + rcode = 4; /* NOTIMP. */ + check_one (); + + rcode = 5; /* REFUSED. */ + check_one (); + } + + resolv_test_end (aux); + } + + return 0; +} + +#include <support/test-driver.c> diff --git a/resolv/tst-resolv-short-response.c b/resolv/tst-resolv-short-response.c new file mode 100644 index 0000000000..9b06b0c176 --- /dev/null +++ b/resolv/tst-resolv-short-response.c @@ -0,0 +1,126 @@ +/* Test for spurious timeouts with short 12-byte responses (bug 31890). + Copyright (C) 2024 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 + <https://www.gnu.org/licenses/>. */ + +#include <resolv.h> +#include <support/check.h> +#include <support/resolv_test.h> +#include <support/check_nss.h> + +/* The rcode in the initial response. */ +static volatile int rcode; + +static void +response (const struct resolv_response_context *ctx, + struct resolv_response_builder *b, + const char *qname, uint16_t qclass, uint16_t qtype) +{ + switch (ctx->server_index) + { + case 0: + /* First server times out. */ + { + struct resolv_response_flags flags = {.rcode = rcode}; + resolv_response_init (b, flags); + } + break; + case 1: + /* Second server sends reply. */ + resolv_response_init (b, (struct resolv_response_flags) {}); + resolv_response_add_question (b, qname, qclass, qtype); + resolv_response_section (b, ns_s_an); + resolv_response_open_record (b, qname, qclass, qtype, 0); + switch (qtype) + { + case T_A: + { + char ipv4[4] = {192, 0, 2, 17}; + resolv_response_add_data (b, &ipv4, sizeof (ipv4)); + } + break; + case T_AAAA: + { + char ipv6[16] + = {0x20, 0x01, 0xd, 0xb8, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1}; + resolv_response_add_data (b, &ipv6, sizeof (ipv6)); + } + break; + default: + FAIL_EXIT1 ("unexpected TYPE%d query", qtype); + } + resolv_response_close_record (b); + break; + default: + FAIL_EXIT1 ("unexpected query to server %d", ctx->server_index); + } +} + +static void +check_one (void) +{ + + /* The buggy 1-second query timeout results in 30 seconds of delay, + which triggers a test timeout failure. */ + for (int i = 0; i < 10; ++i) + { + check_hostent ("www.example", gethostbyname ("www.example"), + "name: www.example\n" + "address: 192.0.2.17\n"); + check_hostent ("www.example", gethostbyname2 ("www.example", AF_INET6), + "name: www.example\n" + "address: 2001:db8::1\n"); + static const struct addrinfo hints = + { + .ai_family = AF_UNSPEC, + .ai_socktype = SOCK_STREAM, + }; + struct addrinfo *ai; + int ret = getaddrinfo ("www.example", "80", &hints, &ai); + check_addrinfo ("www.example", ai, ret, + "address: STREAM/TCP 192.0.2.17 80\n" + "address: STREAM/TCP 2001:db8::1 80\n"); + if (ret == 0) + freeaddrinfo (ai); + } +} + +static int +do_test (void) +{ + struct resolv_test *aux = resolv_test_start + ((struct resolv_redirect_config) + { + .response_callback = response, + }); + + _res.options |= RES_SNGLKUP; + + rcode = 2; /* SERVFAIL. */ + check_one (); + + rcode = 4; /* NOTIMP. */ + check_one (); + + rcode = 5; /* REFUSED. */ + check_one (); + + resolv_test_end (aux); + + return 0; +} + +#include <support/test-driver.c> diff --git a/scripts/build-many-glibcs.py b/scripts/build-many-glibcs.py index b4e7f953ef..7882d7d6fb 100755 --- a/scripts/build-many-glibcs.py +++ b/scripts/build-many-glibcs.py @@ -830,11 +830,11 @@ class Context(object): def checkout(self, versions): """Check out the desired component versions.""" - default_versions = {'binutils': 'vcs-2.42', + default_versions = {'binutils': 'vcs-2.43', 'gcc': 'vcs-13', 'glibc': 'vcs-mainline', 'gmp': '6.3.0', - 'linux': '6.9', + 'linux': '6.10', 'mpc': '1.3.1', 'mpfr': '4.2.1', 'mig': 'vcs-mainline', diff --git a/scripts/check-local-headers.sh b/scripts/check-local-headers.sh index 5d3e61f889..ad23840333 100755 --- a/scripts/check-local-headers.sh +++ b/scripts/check-local-headers.sh @@ -33,7 +33,7 @@ exec ${AWK} -v includedir="$includedir" ' BEGIN { status = 0 exclude = "^" includedir \ - "/(.*-.*-.*/|.*-.*/|)(asm[-/]|arch|linux/|selinux/|mach/|mach_debug/|device/|hurd/(((hurd|ioctl)_types|paths)\\.h|ioctls\\.defs|ihash\\.h|version\\.h)|gd|nss3/|nspr4?/|c\\+\\+/|sys/(capability|sdt(|-config))\\.h|libaudit\\.h)" + "/(.*-.*-.*/|.*-.*/|)(asm[-/]|arch|linux/|selinux/|mach/|mach_debug/|device/|hurd/(((hurd|ioctl)_types|paths)\\.h|ioctls\\.defs|ihash\\.h|version\\.h)|gd|nss3/|nspr4?/|c\\+\\+/|sys/(capability|sdt(|-config))\\.h|libaudit\\.h|audit(_logging|-records)\\.h)" } /^[^ ]/ && $1 ~ /.*:/ { obj = $1 } { diff --git a/scripts/localplt.awk b/scripts/localplt.awk index fe79ca01ab..621ae7d8e8 100644 --- a/scripts/localplt.awk +++ b/scripts/localplt.awk @@ -10,7 +10,8 @@ BEGIN { } FILENAME != lastfile { - if (lastfile && jmprel_offset == 0 && rela_offset == 0 && rel_offset == 0) { + if (lastfile && jmprel_offset == 0 && rela_offset == 0 && rel_offset == 0 \ + && relr_offset == 0) { print FILENAME ": *** failed to find expected output (readelf -WSdr)"; result = 2; } @@ -22,6 +23,7 @@ FILENAME != lastfile { jmprel_offset = 0; rela_offset = 0; rel_offset = 0; + relr_offset = 0; pltrelsz = -1; delete section_offset_by_address; } @@ -77,6 +79,8 @@ in_relocs && relocs_offset == rel_offset && NF >= 5 { } } +# No need to handle DT_RELR (all packed relocations are relative). + in_relocs { next } $1 == "Relocation" && $2 == "section" && $5 == "offset" { @@ -121,4 +125,14 @@ $2 == "(REL)" { } next } + +$2 == "(RELR)" { + relr_addr = strtonum($3); + if (relr_addr in section_offset_by_address) { + relr_offset = section_offset_by_address[relr_addr]; + } else { + print FILENAME ": *** DT_RELR does not match any section's address"; + result = 2; + } +} END { exit(result) } diff --git a/socket/bits/socket2.h b/socket/bits/socket2.h index 04780f320e..bd91647f37 100644 --- a/socket/bits/socket2.h +++ b/socket/bits/socket2.h @@ -37,14 +37,14 @@ recv (int __fd, __fortify_clang_overload_arg0 (void *, ,__buf), size_t __n, "recv called with bigger length than " "size of destination buffer") { - size_t sz = __glibc_objsize0 (__buf); - if (__glibc_safe_or_unknown_len (__n, sizeof (char), sz)) + size_t __sz = __glibc_objsize0 (__buf); + if (__glibc_safe_or_unknown_len (__n, sizeof (char), __sz)) return __recv_alias (__fd, __buf, __n, __flags); #if !__fortify_use_clang - if (__glibc_unsafe_len (__n, sizeof (char), sz)) - return __recv_chk_warn (__fd, __buf, __n, sz, __flags); + if (__glibc_unsafe_len (__n, sizeof (char), __sz)) + return __recv_chk_warn (__fd, __buf, __n, __sz, __flags); #endif - return __recv_chk (__fd, __buf, __n, sz, __flags); + return __recv_chk (__fd, __buf, __n, __sz, __flags); } extern ssize_t __recvfrom_chk (int __fd, void *__restrict __buf, size_t __n, @@ -71,13 +71,13 @@ recvfrom (int __fd, __fortify_clang_overload_arg0 (void *, __restrict, __buf), "recvfrom called with bigger length " "than size of destination buffer") { - size_t sz = __glibc_objsize0 (__buf); - if (__glibc_safe_or_unknown_len (__n, sizeof (char), sz)) + size_t __sz = __glibc_objsize0 (__buf); + if (__glibc_safe_or_unknown_len (__n, sizeof (char), __sz)) return __recvfrom_alias (__fd, __buf, __n, __flags, __addr, __addr_len); #if !__fortify_use_clang - if (__glibc_unsafe_len (__n, sizeof (char), sz)) - return __recvfrom_chk_warn (__fd, __buf, __n, sz, __flags, __addr, + if (__glibc_unsafe_len (__n, sizeof (char), __sz)) + return __recvfrom_chk_warn (__fd, __buf, __n, __sz, __flags, __addr, __addr_len); #endif - return __recvfrom_chk (__fd, __buf, __n, sz, __flags, __addr, __addr_len); + return __recvfrom_chk (__fd, __buf, __n, __sz, __flags, __addr, __addr_len); } diff --git a/stdio-common/Makefile b/stdio-common/Makefile index a63c05a120..d99e0cbfeb 100644 --- a/stdio-common/Makefile +++ b/stdio-common/Makefile @@ -209,6 +209,7 @@ tests := \ tst-fdopen \ tst-ferror \ tst-fgets \ + tst-fgets2 \ tst-fileno \ tst-fmemopen \ tst-fmemopen2 \ @@ -216,8 +217,14 @@ tests := \ tst-fmemopen4 \ tst-fphex \ tst-fphex-wide \ + tst-freopen2 \ + tst-freopen3 \ + tst-freopen64-2 \ + tst-freopen64-3 \ tst-fseek \ tst-fwrite \ + tst-getline \ + tst-getline-enomem \ tst-gets \ tst-grouping \ tst-grouping2 \ @@ -240,6 +247,7 @@ tests := \ tst-scanf-binary-c23 \ tst-scanf-binary-gnu11 \ tst-scanf-binary-gnu89 \ + tst-scanf-bz27650 \ tst-scanf-intn \ tst-scanf-round \ tst-scanf-to_inpunct \ @@ -253,6 +261,7 @@ tests := \ tst-swscanf \ tst-tmpnam \ tst-ungetc \ + tst-ungetc-leak \ tst-unlockedio \ tst-vfprintf-mbs-prec \ tst-vfprintf-user-type \ @@ -311,14 +320,33 @@ tests-special += \ ifeq (yes,$(build-shared)) ifneq ($(PERL),no) tests-special += \ + $(objpfx)tst-freopen2-mem.out \ + $(objpfx)tst-freopen3-mem.out \ + $(objpfx)tst-freopen64-2-mem.out \ + $(objpfx)tst-freopen64-3-mem.out \ + $(objpfx)tst-getline-enomem-mem.out \ + $(objpfx)tst-getline-mem.out \ $(objpfx)tst-printf-bz18872-mem.out \ $(objpfx)tst-printf-bz25691-mem.out \ $(objpfx)tst-printf-fp-free-mem.out \ $(objpfx)tst-printf-fp-leak-mem.out \ + $(objpfx)tst-ungetc-leak-mem.out \ $(objpfx)tst-vfprintf-width-prec-mem.out \ # tests-special generated += \ + tst-freopen2-mem.out \ + tst-freopen2.mtrace \ + tst-freopen3-mem.out \ + tst-freopen3.mtrace \ + tst-freopen64-2-mem.out \ + tst-freopen64-2.mtrace \ + tst-freopen64-3-mem.out \ + tst-freopen64-3.mtrace \ + tst-getline-enomem-mem.out \ + tst-getline-enomem.mtrace \ + tst-getline-mem.out \ + tst-getline.mtrace \ tst-printf-bz18872-mem.out \ tst-printf-bz18872.c \ tst-printf-bz18872.mtrace \ @@ -328,6 +356,9 @@ generated += \ tst-printf-fp-free.mtrace \ tst-printf-fp-leak-mem.out \ tst-printf-fp-leak.mtrace \ + tst-scanf-bz27650.mtrace \ + tst-ungetc-leak-mem.out \ + tst-ungetc-leak.mtrace \ tst-vfprintf-width-prec-mem.out \ tst-vfprintf-width-prec.mtrace \ # generated @@ -419,6 +450,30 @@ tst-printf-fp-free-ENV = \ tst-printf-fp-leak-ENV = \ MALLOC_TRACE=$(objpfx)tst-printf-fp-leak.mtrace \ LD_PRELOAD=$(common-objpfx)/malloc/libc_malloc_debug.so +tst-scanf-bz27650-ENV = \ + MALLOC_TRACE=$(objpfx)tst-scanf-bz27650.mtrace \ + LD_PRELOAD=$(common-objpfx)malloc/libc_malloc_debug.so +tst-ungetc-leak-ENV = \ + MALLOC_TRACE=$(objpfx)tst-ungetc-leak.mtrace \ + LD_PRELOAD=$(common-objpfx)malloc/libc_malloc_debug.so +tst-getline-ENV = \ + MALLOC_TRACE=$(objpfx)tst-getline.mtrace \ + LD_PRELOAD=$(common-objpfx)malloc/libc_malloc_debug.so +tst-getline-enomem-ENV = \ + MALLOC_TRACE=$(objpfx)tst-getline-enomem.mtrace \ + LD_PRELOAD=$(common-objpfx)malloc/libc_malloc_debug.so +tst-freopen2-ENV = \ + MALLOC_TRACE=$(objpfx)tst-freopen2.mtrace \ + LD_PRELOAD=$(common-objpfx)malloc/libc_malloc_debug.so +tst-freopen64-2-ENV = \ + MALLOC_TRACE=$(objpfx)tst-freopen64-2.mtrace \ + LD_PRELOAD=$(common-objpfx)malloc/libc_malloc_debug.so +tst-freopen3-ENV = \ + MALLOC_TRACE=$(objpfx)tst-freopen3.mtrace \ + LD_PRELOAD=$(common-objpfx)malloc/libc_malloc_debug.so +tst-freopen64-3-ENV = \ + MALLOC_TRACE=$(objpfx)tst-freopen64-3.mtrace \ + LD_PRELOAD=$(common-objpfx)malloc/libc_malloc_debug.so $(objpfx)tst-unbputc.out: tst-unbputc.sh $(objpfx)tst-unbputc $(SHELL) $< $(common-objpfx) '$(test-program-prefix)'; \ diff --git a/stdio-common/tst-fgets2.c b/stdio-common/tst-fgets2.c new file mode 100644 index 0000000000..5b78447ea9 --- /dev/null +++ b/stdio-common/tst-fgets2.c @@ -0,0 +1,253 @@ +/* Test for additional fgets error handling. + Copyright (C) 2024 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 + <https://www.gnu.org/licenses/>. */ + +#include <libc-diag.h> +#include <stdio.h> +#include <error.h> +#include <errno.h> +#include <limits.h> +#include <mcheck.h> +#include <stddef.h> +#include <stdlib.h> +#include <string.h> +#include <ctype.h> +#include <fcntl.h> +#include <unistd.h> +#include <sys/types.h> + +#include <support/support.h> +#include <support/check.h> + +/* This avoids compiler warnings about passing NULL where a valid + pointer is expected. */ +static void *volatile null = NULL; + +/* Implementation of our FILE stream backend. */ + +static int bytes_read; +static int cookie_valid = 0; +struct Cookie { + const char *buffer; + int bufptr; + int bufsz; +}; + +#define VALIDATE_COOKIE() if (! cookie_valid) { \ + FAIL ("call to %s after file closed", __FUNCTION__); \ + return -1; \ + } + +static ssize_t +io_read (void *vcookie, char *buf, size_t size) +{ + struct Cookie *cookie = (struct Cookie *) vcookie; + + VALIDATE_COOKIE (); + + if (size > cookie->bufsz - cookie->bufptr) + size = cookie->bufsz - cookie->bufptr; + + memcpy (buf, cookie->buffer + cookie->bufptr, size); + cookie->bufptr += size; + bytes_read += size; + return size; +} + +static ssize_t +io_write (void *vcookie, const char *buf, size_t size) +{ + VALIDATE_COOKIE (); + FAIL_EXIT1 ("io_write called"); +} + +static int +io_seek (void *vcookie, off64_t *position, int whence) +{ + VALIDATE_COOKIE (); + FAIL_EXIT1 ("io_seek called"); +} + +static int +io_clean (void *vcookie) +{ + struct Cookie *cookie = (struct Cookie *) vcookie; + + VALIDATE_COOKIE (); + + cookie->buffer = NULL; + cookie->bufsz = 0; + cookie->bufptr = 0; + + cookie_valid = 0; + free (cookie); + return 0; +} + +cookie_io_functions_t io_funcs = { + .read = io_read, + .write = io_write, + .seek = io_seek, + .close = io_clean +}; + +FILE * +io_open (const char *buffer, int buflen, const char *mode, void **vcookie) +{ + FILE *f; + struct Cookie *cookie; + + cookie = (struct Cookie *) xcalloc (1, sizeof (struct Cookie)); + *vcookie = cookie; + cookie_valid = 1; + + cookie->buffer = buffer; + cookie->bufsz = buflen; + bytes_read = 0; + + f = fopencookie (cookie, mode, io_funcs); + if (f == NULL) + FAIL_EXIT1 ("fopencookie failed"); + + clearerr (f); + return f; +} + +/* The test cases. */ + +#define my_open(s,l,m) io_open (s, l, m, (void *) &cookie) + +#define TEST_COMPARE_0x11(buf, len) \ + TEST_COMPARE_BLOB (buf + (len), sizeof (buf) - (len), \ + buf2, sizeof (buf) - (len)); + +#define check_flags(f, expected_eof, expected_err) \ + { \ + if (expected_eof) \ + TEST_VERIFY (feof (f) != 0); \ + else \ + TEST_VERIFY (feof (f) == 0); \ + if (expected_err) \ + TEST_VERIFY (ferror (f) != 0); \ + else \ + TEST_VERIFY (ferror (f) == 0); \ + } + +static int +do_test (void) +{ + FILE *f; + struct Cookie *cookie; + char buf [10]; + char buf2 [10]; + char *returned_string; + + memset (buf2, 0x11, sizeof (buf2)); + + printf ("testing base operation...\n"); + f = my_open ("hello\n", 6, "r"); + memset (buf, 0x11, sizeof (buf)); + returned_string = fgets (buf, sizeof (buf) - 1, f); + TEST_VERIFY (returned_string == buf); + TEST_COMPARE_BLOB (buf, bytes_read + 1, "hello\n\0", 7); + TEST_COMPARE_0x11 (buf, bytes_read + 1); + check_flags (f, 0, 0); + + fclose (f); + + printf ("testing zero size file...\n"); + f = my_open ("hello\n", 0, "r"); + memset (buf, 0x11, sizeof (buf)); + returned_string = fgets (buf, sizeof (buf) - 1, f); + TEST_VERIFY (returned_string == NULL); + TEST_VERIFY (bytes_read == 0); + check_flags (f, 1, 0); + fclose (f); + + printf ("testing zero size buffer...\n"); + f = my_open ("hello\n", 6, "r"); + memset (buf, 0x11, sizeof (buf)); + returned_string = fgets (buf, 0, f); + TEST_VERIFY (returned_string == NULL); + TEST_VERIFY (bytes_read == 0); + check_flags (f, 0, 0); + fclose (f); + + printf ("testing NULL buffer with empty stream...\n"); + f = my_open ("hello\n", 0, "r"); + memset (buf, 0x11, sizeof (buf)); + + returned_string = fgets (null, sizeof (buf), f); + + TEST_VERIFY (returned_string == NULL); + TEST_VERIFY (bytes_read == 0); + check_flags (f, 1, 0); + fclose (f); + + printf ("testing embedded NUL...\n"); + f = my_open ("hel\0lo\n", 7, "r"); + memset (buf, 0x11, sizeof (buf)); + returned_string = fgets (buf, sizeof (buf) - 1, f); + TEST_VERIFY (returned_string == buf); + TEST_COMPARE_BLOB (buf, bytes_read + 1, "hel\0lo\n\0", 8); + TEST_COMPARE_0x11 (buf, bytes_read + 1); + check_flags (f, 0, 0); + fclose (f); + + printf ("testing writable stream...\n"); + f = my_open ("hel\0lo\n", 7, "w"); + memset (buf, 0x11, sizeof (buf)); + returned_string = fgets (buf, sizeof (buf) - 1, f); + TEST_VERIFY (returned_string == NULL); + TEST_VERIFY (bytes_read == 0); + check_flags (f, 0, 1); + fclose (f); + + printf ("testing closed fd stream...\n"); + int fd = open ("/dev/null", O_RDONLY); + f = fdopen (fd, "r"); + close (fd); + memset (buf, 0x11, sizeof (buf)); + returned_string = fgets (buf, sizeof (buf) - 1, f); + TEST_VERIFY (returned_string == NULL); + TEST_VERIFY (bytes_read == 0); + check_flags (f, 0, 1); + fclose (f); + +#ifdef IO_DEBUG + /* These tests only pass if glibc is built with -DIO_DEBUG, but are + included for reference. */ + + printf ("testing NULL descriptor...\n"); + memset (buf, 0x11, sizeof (buf)); + returned_string = fgets (buf, sizeof (buf) - 1, null); + TEST_VERIFY (returned_string == NULL); + TEST_VERIFY (bytes_read == 0); + + printf ("testing closed descriptor...\n"); + f = my_open ("hello\n", 7, "r"); + fclose (f); + memset (buf, 0x11, sizeof (buf)); + returned_string = fgets (buf, sizeof (buf) - 1, f); + TEST_VERIFY (returned_string == NULL); + TEST_VERIFY (bytes_read == 0); +#endif + + return 0; +} + +#include <support/test-driver.c> diff --git a/stdio-common/tst-freopen2-main.c b/stdio-common/tst-freopen2-main.c new file mode 100644 index 0000000000..74c3125fca --- /dev/null +++ b/stdio-common/tst-freopen2-main.c @@ -0,0 +1,519 @@ +/* Test freopen. + Copyright (C) 2024 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 + <https://www.gnu.org/licenses/>. */ + +#include <errno.h> +#include <fcntl.h> +#include <mcheck.h> +#include <stdio.h> +#include <stdlib.h> +#include <wchar.h> + +#include <support/check.h> +#include <support/descriptors.h> +#include <support/file_contents.h> +#include <support/support.h> +#include <support/temp_file.h> +#include <support/test-driver.h> +#include <support/xstdio.h> + +#define START_TEST(DESC) \ + do \ + { \ + fds = support_descriptors_list (); \ + verbose_printf (DESC); \ + } \ + while (0) + +#define END_TEST \ + do \ + { \ + support_descriptors_check (fds); \ + support_descriptors_free (fds); \ + } \ + while (0) + +int +do_test (void) +{ + mtrace (); + struct support_descriptors *fds; + char *temp_dir = support_create_temp_directory ("tst-freopen2"); + char *file1 = xasprintf ("%s/file1", temp_dir); + support_write_file_string (file1, "file1"); + add_temp_file (file1); + char *file2 = xasprintf ("%s/file2", temp_dir); + support_write_file_string (file2, "file2"); + add_temp_file (file2); + char *file3 = xasprintf ("%s/file3", temp_dir); + char *file4 = xasprintf ("%s/file4", temp_dir); + char *file1a = xasprintf ("%s/file1a", temp_dir); + FILE *fp; + int ret; + wint_t wc; + + /* Test each pair of old and new modes from r w a. */ + + START_TEST ("Testing r -> r\n"); + fp = xfopen (file1, "r"); + fp = FREOPEN (file2, "r", fp); + TEST_VERIFY_EXIT (fp != NULL); + TEST_COMPARE_FILE_STRING (fp, "file2"); + xfclose (fp); + END_TEST; + + START_TEST ("Testing r -> w\n"); + fp = xfopen (file1, "r"); + fp = FREOPEN (file2, "w", fp); + TEST_VERIFY_EXIT (fp != NULL); + ret = fputs ("File2new", fp); + TEST_VERIFY (ret >= 0); + xfclose (fp); + TEST_OPEN_AND_COMPARE_FILE_STRING (file1, "file1"); + TEST_OPEN_AND_COMPARE_FILE_STRING (file2, "File2new"); + END_TEST; + + START_TEST ("Testing r -> a\n"); + fp = xfopen (file1, "r"); + fp = FREOPEN (file2, "a", fp); + TEST_VERIFY_EXIT (fp != NULL); + ret = fputs ("3", fp); + TEST_VERIFY (ret >= 0); + xfclose (fp); + TEST_OPEN_AND_COMPARE_FILE_STRING (file2, "File2new3"); + END_TEST; + + START_TEST ("Testing w -> r\n"); + fp = xfopen (file1, "w"); + fp = FREOPEN (file2, "r", fp); + TEST_VERIFY_EXIT (fp != NULL); + TEST_COMPARE_FILE_STRING (fp, "File2new3"); + xfclose (fp); + END_TEST; + + START_TEST ("Testing w -> w\n"); + fp = xfopen (file1, "w"); + fp = FREOPEN (file2, "w", fp); + TEST_VERIFY_EXIT (fp != NULL); + ret = fputs ("next", fp); + TEST_VERIFY (ret >= 0); + xfclose (fp); + TEST_OPEN_AND_COMPARE_FILE_STRING (file1, ""); + TEST_OPEN_AND_COMPARE_FILE_STRING (file2, "next"); + END_TEST; + + START_TEST ("Testing w -> a\n"); + fp = xfopen (file1, "w"); + fp = FREOPEN (file2, "a", fp); + TEST_VERIFY_EXIT (fp != NULL); + ret = fputs ("4", fp); + TEST_VERIFY (ret >= 0); + xfclose (fp); + TEST_OPEN_AND_COMPARE_FILE_STRING (file2, "next4"); + END_TEST; + + START_TEST ("Testing a -> r\n"); + fp = xfopen (file1, "a"); + fp = FREOPEN (file2, "r", fp); + TEST_VERIFY_EXIT (fp != NULL); + TEST_COMPARE_FILE_STRING (fp, "next4"); + xfclose (fp); + END_TEST; + + START_TEST ("Testing a -> w\n"); + fp = xfopen (file1, "a"); + fp = FREOPEN (file2, "w", fp); + TEST_VERIFY_EXIT (fp != NULL); + ret = fputs ("another", fp); + TEST_VERIFY (ret >= 0); + xfclose (fp); + TEST_OPEN_AND_COMPARE_FILE_STRING (file2, "another"); + END_TEST; + + START_TEST ("Testing a -> a\n"); + fp = xfopen (file1, "a"); + fp = FREOPEN (file2, "a", fp); + TEST_VERIFY_EXIT (fp != NULL); + ret = fputs ("5", fp); + TEST_VERIFY (ret >= 0); + xfclose (fp); + TEST_OPEN_AND_COMPARE_FILE_STRING (file2, "another5"); + END_TEST; + + /* Test for file originally opened with fopen64. */ + START_TEST ("Testing fopen64 a -> a\n"); + fp = fopen64 (file1, "a"); + TEST_VERIFY_EXIT (fp != NULL); + fp = FREOPEN (file2, "a", fp); + TEST_VERIFY_EXIT (fp != NULL); + ret = fputs ("64", fp); + TEST_VERIFY (ret >= 0); + xfclose (fp); + TEST_OPEN_AND_COMPARE_FILE_STRING (file2, "another564"); + END_TEST; + + /* Test calling freopen more than once on the same FILE *. */ + + START_TEST ("Testing r -> w -> r\n"); + fp = xfopen (file1, "r"); + fp = FREOPEN (file2, "w", fp); + TEST_VERIFY_EXIT (fp != NULL); + ret = fputs ("freopen-twice", fp); + TEST_VERIFY (ret >= 0); + fp = FREOPEN (file2, "r", fp); + TEST_VERIFY_EXIT (fp != NULL); + TEST_COMPARE_FILE_STRING (fp, "freopen-twice"); + xfclose (fp); + TEST_OPEN_AND_COMPARE_FILE_STRING (file2, "freopen-twice"); + END_TEST; + + START_TEST ("Testing r -> w -> r (exactly one freopen64)\n"); + fp = xfopen (file1, "r"); + fp = OTHER_FREOPEN (file2, "w", fp); + TEST_VERIFY_EXIT (fp != NULL); + ret = fputs ("freopen-twice64", fp); + TEST_VERIFY (ret >= 0); + fp = FREOPEN (file2, "r", fp); + TEST_VERIFY_EXIT (fp != NULL); + TEST_COMPARE_FILE_STRING (fp, "freopen-twice64"); + xfclose (fp); + TEST_OPEN_AND_COMPARE_FILE_STRING (file2, "freopen-twice64"); + END_TEST; + + /* Test changing to/from b (binary, no-op). */ + + START_TEST ("Testing rb -> r\n"); + fp = xfopen (file1, "rb"); + fp = FREOPEN (file2, "r", fp); + TEST_VERIFY_EXIT (fp != NULL); + TEST_COMPARE_FILE_STRING (fp, "freopen-twice64"); + xfclose (fp); + END_TEST; + + START_TEST ("Testing r -> rb\n"); + fp = xfopen (file1, "r"); + fp = FREOPEN (file2, "rb", fp); + TEST_VERIFY_EXIT (fp != NULL); + TEST_COMPARE_FILE_STRING (fp, "freopen-twice64"); + xfclose (fp); + END_TEST; + + /* Test changing to/from + (read-and-write). */ + + START_TEST ("Testing r -> w+\n"); + fp = xfopen (file1, "r"); + fp = FREOPEN (file2, "w+", fp); + TEST_VERIFY_EXIT (fp != NULL); + ret = fputs ("latest", fp); + TEST_VERIFY (ret >= 0); + ret = fseek (fp, 0, SEEK_SET); + TEST_COMPARE (ret, 0); + TEST_COMPARE_FILE_STRING (fp, "latest"); + xfclose (fp); + TEST_OPEN_AND_COMPARE_FILE_STRING (file2, "latest"); + END_TEST; + + START_TEST ("Testing w -> a+\n"); + fp = xfopen (file1, "w"); + fp = FREOPEN (file2, "a+", fp); + TEST_VERIFY_EXIT (fp != NULL); + ret = fputs ("suffix", fp); + TEST_VERIFY (ret >= 0); + ret = fseek (fp, 0, SEEK_SET); + TEST_COMPARE (ret, 0); + TEST_COMPARE_FILE_STRING (fp, "latestsuffix"); + xfclose (fp); + TEST_OPEN_AND_COMPARE_FILE_STRING (file2, "latestsuffix"); + END_TEST; + + START_TEST ("Testing a -> r+\n"); + fp = xfopen (file1, "a"); + fp = FREOPEN (file2, "r+", fp); + TEST_VERIFY_EXIT (fp != NULL); + TEST_COMPARE_FILE_STRING (fp, "latestsuffix"); + ret = fseek (fp, 0, SEEK_SET); + TEST_COMPARE (ret, 0); + ret = fputs ("new", fp); + TEST_VERIFY (ret >= 0); + xfclose (fp); + TEST_OPEN_AND_COMPARE_FILE_STRING (file2, "newestsuffix"); + END_TEST; + + START_TEST ("Testing r+ -> w\n"); + fp = xfopen (file1, "r+"); + fp = FREOPEN (file2, "w", fp); + TEST_VERIFY_EXIT (fp != NULL); + ret = fputs ("plusto", fp); + TEST_VERIFY (ret >= 0); + ret = fseek (fp, 0, SEEK_SET); + TEST_COMPARE (ret, 0); + errno = 0; + TEST_COMPARE (fgetc (fp), EOF); + TEST_COMPARE (errno, EBADF); + clearerr (fp); + xfclose (fp); + TEST_OPEN_AND_COMPARE_FILE_STRING (file2, "plusto"); + END_TEST; + + START_TEST ("Testing w+ -> a\n"); + fp = xfopen (file1, "w+"); + fp = FREOPEN (file2, "a", fp); + TEST_VERIFY_EXIT (fp != NULL); + ret = fputs ("more", fp); + TEST_VERIFY (ret >= 0); + ret = fseek (fp, 0, SEEK_SET); + TEST_COMPARE (ret, 0); + errno = 0; + TEST_COMPARE (fgetc (fp), EOF); + TEST_COMPARE (errno, EBADF); + clearerr (fp); + xfclose (fp); + TEST_OPEN_AND_COMPARE_FILE_STRING (file2, "plustomore"); + END_TEST; + + START_TEST ("Testing a+ -> r\n"); + fp = xfopen (file1, "a+"); + fp = FREOPEN (file2, "rr", fp); + TEST_VERIFY_EXIT (fp != NULL); + TEST_COMPARE_FILE_STRING (fp, "plustomore"); + ret = fputs ("2", fp); + TEST_COMPARE (ret, EOF); + clearerr (fp); + xfclose (fp); + TEST_OPEN_AND_COMPARE_FILE_STRING (file2, "plustomore"); + END_TEST; + + /* Test changing to/from e (FD_CLOEXEC). */ + + START_TEST ("Testing re -> r\n"); + fp = xfopen (file1, "re"); + ret = fcntl (fileno (fp), F_GETFD); + TEST_VERIFY (ret != -1); + TEST_COMPARE (ret & FD_CLOEXEC, FD_CLOEXEC); + fp = FREOPEN (file2, "r", fp); + TEST_VERIFY_EXIT (fp != NULL); + ret = fcntl (fileno (fp), F_GETFD); + TEST_VERIFY (ret != -1); + TEST_COMPARE (ret & FD_CLOEXEC, 0); + TEST_COMPARE_FILE_STRING (fp, "plustomore"); + xfclose (fp); + END_TEST; + + START_TEST ("Testing r -> re\n"); + fp = xfopen (file1, "r"); + ret = fcntl (fileno (fp), F_GETFD); + TEST_VERIFY (ret != -1); + TEST_COMPARE (ret & FD_CLOEXEC, 0); + fp = FREOPEN (file2, "re", fp); + TEST_VERIFY_EXIT (fp != NULL); + ret = fcntl (fileno (fp), F_GETFD); + TEST_VERIFY (ret != -1); + TEST_COMPARE (ret & FD_CLOEXEC, FD_CLOEXEC); + TEST_COMPARE_FILE_STRING (fp, "plustomore"); + xfclose (fp); + END_TEST; + + /* Test changing to/from m (mmap) (a no-op as far as testing + semantics is concerned). */ + + START_TEST ("Testing rm -> r\n"); + fp = xfopen (file1, "rm"); + fp = FREOPEN (file2, "r", fp); + TEST_VERIFY_EXIT (fp != NULL); + TEST_COMPARE_FILE_STRING (fp, "plustomore"); + xfclose (fp); + END_TEST; + + START_TEST ("Testing r -> rm\n"); + fp = xfopen (file1, "r"); + fp = FREOPEN (file2, "rm", fp); + TEST_VERIFY_EXIT (fp != NULL); + TEST_COMPARE_FILE_STRING (fp, "plustomore"); + xfclose (fp); + END_TEST; + + /* Test changing to/from x (O_EXCL). */ + + START_TEST ("Testing wx -> w\n"); + fp = xfopen (file3, "wx"); + add_temp_file (file3); + fp = FREOPEN (file2, "w", fp); + TEST_VERIFY_EXIT (fp != NULL); + ret = fputs ("wxtow", fp); + TEST_VERIFY (ret >= 0); + xfclose (fp); + TEST_OPEN_AND_COMPARE_FILE_STRING (file2, "wxtow"); + END_TEST; + + START_TEST ("Testing w -> wx (file does not exist)\n"); + fp = xfopen (file1, "w"); + fp = FREOPEN (file4, "wx", fp); + TEST_VERIFY_EXIT (fp != NULL); + add_temp_file (file4); + ret = fputs ("wtowx", fp); + TEST_VERIFY (ret >= 0); + xfclose (fp); + TEST_OPEN_AND_COMPARE_FILE_STRING (file4, "wtowx"); + END_TEST; + + /* Test with ,ccs=CHARSET. */ + + START_TEST ("testing w,ccs=utf-8 -> r\n"); + fp = xfopen (file1, "w,ccs=utf-8"); + ret = fputws (L"\xc0\xc1", fp); + TEST_VERIFY (ret >= 0); + fp = FREOPEN (file2, "r", fp); + TEST_VERIFY_EXIT (fp != NULL); + TEST_COMPARE_FILE_STRING (fp, "wxtow"); + xfclose (fp); + END_TEST; + + START_TEST ("testing w,ccs=iso-8859-1 -> r,ccs=utf-8\n"); + fp = xfopen (file2, "w,ccs=iso-8859-1"); + ret = fputws (L"\xc0\xc1", fp); + TEST_VERIFY (ret >= 0); + fp = FREOPEN (file1, "r,ccs=utf-8", fp); + TEST_VERIFY_EXIT (fp != NULL); + wc = fgetwc (fp); + TEST_COMPARE (wc, (wint_t) 0xc0); + wc = fgetwc (fp); + TEST_COMPARE (wc, (wint_t) 0xc1); + wc = fgetwc (fp); + TEST_COMPARE (wc, WEOF); + xfclose (fp); + END_TEST; + + START_TEST ("testing r,ccs=utf-8 -> r\n"); + fp = xfopen (file1, "r,ccs=utf-8"); + fp = FREOPEN (file1, "r", fp); + TEST_VERIFY_EXIT (fp != NULL); + TEST_COMPARE_FILE_STRING (fp, "\u00c0\u00c1"); + xfclose (fp); + END_TEST; + + /* Test that errors closing the old file are ignored. */ + + START_TEST ("testing errors closing old file ignored\n"); + fp = xfopen ("/dev/full", "w"); + fputc ('x', fp); + fp = FREOPEN (file1, "r", fp); + TEST_VERIFY_EXIT (fp != NULL); + TEST_COMPARE_FILE_STRING (fp, "\u00c0\u00c1"); + xfclose (fp); + END_TEST; + + /* Test that error / EOF state from the old file are cleared. */ + + START_TEST ("testing error state from old file cleared\n"); + fp = xfopen ("/dev/full", "w"); + fputc ('x', fp); + fflush (fp); + TEST_VERIFY (ferror (fp)); + TEST_VERIFY (!feof (fp)); + fp = FREOPEN (file2, "w", fp); + TEST_VERIFY_EXIT (fp != NULL); + TEST_VERIFY (!ferror (fp)); + TEST_VERIFY (!feof (fp)); + xfclose (fp); + END_TEST; + + START_TEST ("testing EOF state from old file cleared\n"); + fp = xfopen ("/dev/null", "r"); + fgetc (fp); + TEST_VERIFY (!ferror (fp)); + TEST_VERIFY (feof (fp)); + fp = FREOPEN (file2, "r", fp); + TEST_VERIFY_EXIT (fp != NULL); + TEST_VERIFY (!ferror (fp)); + TEST_VERIFY (!feof (fp)); + xfclose (fp); + END_TEST; + + /* Test freopen with NULL, same mode (should flush content and reset + file offset). */ + + START_TEST ("testing freopen with NULL, same mode\n"); + fp = xfopen (file1, "r+"); + ret = fputs ("same mode", fp); + TEST_VERIFY (ret >= 0); + fp = FREOPEN (NULL, "r+", fp); + TEST_VERIFY_EXIT (fp != NULL); + TEST_COMPARE_FILE_STRING (fp, "same mode"); + xfclose (fp); + END_TEST; + + /* Test freopen with NULL, different mode. */ + + START_TEST ("testing freopen with NULL, different mode\n"); + fp = xfopen (file1, "w"); + ret = fputs ("different mode", fp); + TEST_VERIFY (ret >= 0); + fp = FREOPEN (NULL, "r", fp); + TEST_VERIFY_EXIT (fp != NULL); + TEST_COMPARE_FILE_STRING (fp, "different mode"); + xfclose (fp); + END_TEST; + + /* Test freopen with NULL, renamed file. This verifies that + reopening succeeds (and resets the file position indicator to + start of file) even when the original path could no longer be + opened. */ + + START_TEST ("testing freopen with NULL, renamed file\n"); + fp = xfopen (file1, "r+"); + ret = fputs ("file has been renamed", fp); + TEST_VERIFY (ret >= 0); + ret = rename (file1, file1a); + TEST_COMPARE (ret, 0); + fp = FREOPEN (NULL, "r+", fp); + TEST_VERIFY_EXIT (fp != NULL); + TEST_COMPARE_FILE_STRING (fp, "file has been renamed"); + xfclose (fp); + ret = rename (file1a, file1); + TEST_COMPARE (ret, 0); + END_TEST; + + /* Test freopen with NULL, deleted file. This verifies that + reopening succeeds (and resets the file position indicator to + start of file) even when the original path could no longer be + opened. */ + + START_TEST ("testing freopen with NULL, deleted file\n"); + fp = xfopen (file1, "r+"); + ret = fputs ("file has now been deleted", fp); + TEST_VERIFY (ret >= 0); + ret = remove (file1); + TEST_COMPARE (ret, 0); + fp = FREOPEN (NULL, "r+", fp); + TEST_VERIFY_EXIT (fp != NULL); + TEST_COMPARE_FILE_STRING (fp, "file has now been deleted"); + xfclose (fp); + /* Recreate the file so it is present when expected for temporary + file deletion. */ + support_write_file_string (file1, "file1"); + END_TEST; + + free (temp_dir); + free (file1); + free (file2); + free (file3); + free (file4); + free (file1a); + return 0; +} + +#include <support/test-driver.c> diff --git a/stdio-common/tst-freopen2.c b/stdio-common/tst-freopen2.c new file mode 100644 index 0000000000..11ec7a9783 --- /dev/null +++ b/stdio-common/tst-freopen2.c @@ -0,0 +1,3 @@ +#define FREOPEN freopen +#define OTHER_FREOPEN freopen64 +#include <tst-freopen2-main.c> diff --git a/stdio-common/tst-freopen3-main.c b/stdio-common/tst-freopen3-main.c new file mode 100644 index 0000000000..990a6e5921 --- /dev/null +++ b/stdio-common/tst-freopen3-main.c @@ -0,0 +1,92 @@ +/* Test freopen failure. + Copyright (C) 2024 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 + <https://www.gnu.org/licenses/>. */ + +#include <errno.h> +#include <fcntl.h> +#include <mcheck.h> +#include <stdio.h> +#include <stdlib.h> + +#include <support/check.h> +#include <support/descriptors.h> +#include <support/file_contents.h> +#include <support/support.h> +#include <support/temp_file.h> +#include <support/test-driver.h> +#include <support/xstdio.h> + +#define START_TEST(DESC) \ + do \ + { \ + fds = support_descriptors_list (); \ + verbose_printf (DESC); \ + } \ + while (0) + +#define END_TEST \ + do \ + { \ + support_descriptors_check (fds); \ + support_descriptors_free (fds); \ + } \ + while (0) + +int +do_test (void) +{ + mtrace (); + struct support_descriptors *fds; + char *temp_dir = support_create_temp_directory ("tst-freopen3"); + char *file1 = xasprintf ("%s/file1", temp_dir); + support_write_file_string (file1, "file1"); + add_temp_file (file1); + char *file2 = xasprintf ("%s/file2", temp_dir); + support_write_file_string (file2, "file2"); + add_temp_file (file2); + char *file_nodir = xasprintf ("%s/nodir/file", temp_dir); + FILE *fp; + int ret; + int fd; + + START_TEST ("Testing w -> wx (file exists)\n"); + fp = xfopen (file1, "w"); + fp = FREOPEN (file2, "wx", fp); + TEST_VERIFY (fp == NULL); + END_TEST; + + /* Test old file is closed even when opening the new file fails. */ + + START_TEST ("testing r -> r (opening new file fails)\n"); + fp = xfopen (file1, "r"); + fd = fileno (fp); + fp = FREOPEN (file_nodir, "r", fp); + TEST_VERIFY (fp == NULL); + errno = 0; + ret = fcntl (fd, F_GETFL); + TEST_COMPARE (ret, -1); + TEST_COMPARE (errno, EBADF); + END_TEST; + + free (temp_dir); + free (file1); + free (file2); + free (file_nodir); + return 0; +} + +#include <support/test-driver.c> diff --git a/stdio-common/tst-freopen3.c b/stdio-common/tst-freopen3.c new file mode 100644 index 0000000000..5041b6b233 --- /dev/null +++ b/stdio-common/tst-freopen3.c @@ -0,0 +1,2 @@ +#define FREOPEN freopen +#include <tst-freopen3-main.c> diff --git a/stdio-common/tst-freopen64-2.c b/stdio-common/tst-freopen64-2.c new file mode 100644 index 0000000000..88fdc64d8c --- /dev/null +++ b/stdio-common/tst-freopen64-2.c @@ -0,0 +1,3 @@ +#define FREOPEN freopen64 +#define OTHER_FREOPEN freopen +#include <tst-freopen2-main.c> diff --git a/stdio-common/tst-freopen64-3.c b/stdio-common/tst-freopen64-3.c new file mode 100644 index 0000000000..b91b6d2c03 --- /dev/null +++ b/stdio-common/tst-freopen64-3.c @@ -0,0 +1,2 @@ +#define FREOPEN freopen64 +#include <tst-freopen3-main.c> diff --git a/stdio-common/tst-getline-enomem.c b/stdio-common/tst-getline-enomem.c new file mode 100644 index 0000000000..7fc70ea9b5 --- /dev/null +++ b/stdio-common/tst-getline-enomem.c @@ -0,0 +1,78 @@ +/* Test getline: ENOMEM on allocation failure. + Copyright (C) 2024 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 + <https://www.gnu.org/licenses/>. */ + +#include <errno.h> +#include <mcheck.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> +#include <sys/resource.h> + +#include <support/check.h> +#include <support/test-driver.h> + +/* Produce a stream of test data based on data in COOKIE (ignored), + storing up to SIZE bytes in BUF. */ + +static ssize_t +io_read (void *cookie, char *buf, size_t size) +{ + memset (buf, 'x', size); + return size; +} + +/* Set up a test stream with fopencookie. */ + +static FILE * +open_test_stream (void) +{ + static cookie_io_functions_t io_funcs = { .read = io_read }; + static int cookie; + FILE *fp = fopencookie (&cookie, "r", io_funcs); + TEST_VERIFY_EXIT (fp != NULL); + return fp; +} + +int +do_test (void) +{ + FILE *fp; + char *lineptr = NULL; + size_t size = 0; + ssize_t ret; + mtrace (); + /* Test ENOMEM (and error indicator for stream set) for memory + allocation failure. */ + verbose_printf ("Testing memory allocation failure\n"); + fp = open_test_stream (); + struct rlimit limit; + TEST_VERIFY_EXIT (getrlimit (RLIMIT_AS, &limit) == 0); + limit.rlim_cur = 32 * 1024 * 1024; + TEST_VERIFY_EXIT (setrlimit (RLIMIT_AS, &limit) == 0); + errno = 0; + ret = getline (&lineptr, &size, fp); + TEST_COMPARE (ret, -1); + TEST_COMPARE (errno, ENOMEM); + TEST_COMPARE (!!ferror (fp), 1); + TEST_COMPARE (feof (fp), 0); + free (lineptr); + fclose (fp); + return 0; +} + +#include <support/test-driver.c> diff --git a/stdio-common/tst-getline.c b/stdio-common/tst-getline.c new file mode 100644 index 0000000000..29eb7cec0f --- /dev/null +++ b/stdio-common/tst-getline.c @@ -0,0 +1,451 @@ +/* Test getline. + Copyright (C) 2024 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 + <https://www.gnu.org/licenses/>. */ + +#include <errno.h> +#include <fcntl.h> +#include <malloc.h> +#include <mcheck.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#include <support/check.h> +#include <support/test-driver.h> +#include <support/support.h> +#include <support/xstdio.h> +#include <support/xunistd.h> + +static struct test_data +{ + /* Input test data for fopencookie stream. */ + const char *in_data; + + /* The amount of test data left. */ + size_t in_data_left; + + /* Error number for forcing an error on next read. */ + int in_error; + + /* Error number for forcing an error (rather than EOF) after all + bytes read. */ + int in_error_after; +} the_cookie; + +/* Produce a stream of test data based on data in COOKIE, storing up + to SIZE bytes in BUF. */ + +static ssize_t +io_read (void *cookie, char *buf, size_t size) +{ + struct test_data *p = cookie; + if (p->in_error) + { + errno = p->in_error; + return -1; + } + if (size > p->in_data_left) + size = p->in_data_left; + memcpy (buf, p->in_data, size); + p->in_data += size; + p->in_data_left -= size; + if (p->in_data_left == 0) + p->in_error = p->in_error_after; + return size; +} + +/* Set up a test stream with fopencookie. */ + +static FILE * +open_test_stream (const char *in_data, size_t size) +{ + static cookie_io_functions_t io_funcs = { .read = io_read }; + the_cookie.in_data = in_data; + the_cookie.in_data_left = size; + the_cookie.in_error = 0; + the_cookie.in_error_after = 0; + FILE *fp = fopencookie (&the_cookie, "r", io_funcs); + TEST_VERIFY_EXIT (fp != NULL); + return fp; +} + +/* Set up a test stream with fopencookie, using data from a string + literal. */ +#define OPEN_TEST_STREAM(IN_DATA) open_test_stream (IN_DATA, sizeof (IN_DATA)) + +/* Wrap getline to verify that (as per the glibc manual), *LINEPTR is + returned as non-null and with at least *N bytes (even on error or + EOF). Also clear errno for the benefit of tests that check the + value of errno after the call. */ + +ssize_t +wrap_getline (char **lineptr, size_t *n, FILE *stream) +{ + errno = 0; + ssize_t ret = getline (lineptr, n, stream); + if (lineptr != NULL && n != NULL) + { + TEST_VERIFY (*lineptr != NULL); + TEST_VERIFY (malloc_usable_size (*lineptr) >= *n); + } + return ret; +} + +int +do_test (void) +{ + FILE *fp; + char *lineptr = NULL; + size_t size = 0; + ssize_t ret; + mtrace (); + /* Test failure with EINVAL (and error indicator for stream set) if + lineptr is a null pointer. */ + verbose_printf ("Testing lineptr == NULL\n"); + fp = OPEN_TEST_STREAM ("test"); + ret = wrap_getline (NULL, &size, fp); + TEST_COMPARE (ret, -1); + TEST_COMPARE (errno, EINVAL); + TEST_COMPARE (!!ferror (fp), 1); + TEST_COMPARE (feof (fp), 0); + fclose (fp); + /* Test failure with EINVAL (and error indicator for stream set) if + n is a null pointer. */ + verbose_printf ("Testing n == NULL\n"); + fp = OPEN_TEST_STREAM ("test"); + ret = wrap_getline (&lineptr, NULL, fp); + TEST_COMPARE (ret, -1); + TEST_COMPARE (errno, EINVAL); + TEST_COMPARE (!!ferror (fp), 1); + TEST_COMPARE (feof (fp), 0); + fclose (fp); + /* Test failure with EINVAL (and error indicator for stream set) if + both lineptr and n are null pointers. */ + verbose_printf ("Testing lineptr == NULL and n == NULL\n"); + fp = OPEN_TEST_STREAM ("test"); + ret = wrap_getline (NULL, NULL, fp); + TEST_COMPARE (ret, -1); + TEST_COMPARE (errno, EINVAL); + TEST_COMPARE (!!ferror (fp), 1); + TEST_COMPARE (feof (fp), 0); + fclose (fp); + /* Test normal line, fitting in available space (including case with + null bytes). */ + verbose_printf ("Testing normal nonempty input\n"); + lineptr = xmalloc (10); + size = 10; + fp = OPEN_TEST_STREAM ("foo\nbar\0\n\0baz\nte\0st\n"); + ret = wrap_getline (&lineptr, &size, fp); + TEST_COMPARE (ret, 4); + TEST_COMPARE_BLOB (lineptr, 5, "foo\n", 5); + ret = wrap_getline (&lineptr, &size, fp); + TEST_COMPARE (ret, 5); + TEST_COMPARE_BLOB (lineptr, 6, "bar\0\n", 6); + ret = wrap_getline (&lineptr, &size, fp); + TEST_COMPARE (ret, 5); + TEST_COMPARE_BLOB (lineptr, 6, "\0baz\n", 6); + ret = wrap_getline (&lineptr, &size, fp); + TEST_COMPARE (ret, 6); + TEST_COMPARE_BLOB (lineptr, 7, "te\0st\n", 7); + ret = wrap_getline (&lineptr, &size, fp); + TEST_COMPARE (ret, 1); + TEST_COMPARE_BLOB (lineptr, 1, "", 1); + ret = wrap_getline (&lineptr, &size, fp); + TEST_COMPARE (ret, -1); + TEST_COMPARE (ferror (fp), 0); + TEST_COMPARE (!!feof (fp), 1); + fclose (fp); + /* Test normal line, with reallocation (including case with null bytes). */ + verbose_printf ("Testing normal nonempty input with reallocation\n"); + free (lineptr); + lineptr = NULL; + size = 0; + fp = OPEN_TEST_STREAM ("foo\nbar\0\n\0baz\nte\0st\n" + "foo\nbar\0\n\0baz\nte\0st\n"); + ret = wrap_getline (&lineptr, &size, fp); + TEST_COMPARE (ret, 4); + TEST_COMPARE_BLOB (lineptr, 5, "foo\n", 5); + free (lineptr); + lineptr = NULL; + size = 0; + ret = wrap_getline (&lineptr, &size, fp); + TEST_COMPARE (ret, 5); + TEST_COMPARE_BLOB (lineptr, 6, "bar\0\n", 6); + free (lineptr); + lineptr = NULL; + size = 0; + ret = wrap_getline (&lineptr, &size, fp); + TEST_COMPARE (ret, 5); + TEST_COMPARE_BLOB (lineptr, 6, "\0baz\n", 6); + free (lineptr); + lineptr = NULL; + size = 0; + ret = wrap_getline (&lineptr, &size, fp); + TEST_COMPARE (ret, 6); + TEST_COMPARE_BLOB (lineptr, 7, "te\0st\n", 7); + free (lineptr); + lineptr = xmalloc (1); + size = 1; + ret = wrap_getline (&lineptr, &size, fp); + TEST_COMPARE (ret, 4); + TEST_COMPARE_BLOB (lineptr, 5, "foo\n", 5); + free (lineptr); + lineptr = xmalloc (1); + size = 1; + ret = wrap_getline (&lineptr, &size, fp); + TEST_COMPARE (ret, 5); + TEST_COMPARE_BLOB (lineptr, 6, "bar\0\n", 6); + free (lineptr); + lineptr = xmalloc (1); + size = 1; + ret = wrap_getline (&lineptr, &size, fp); + TEST_COMPARE (ret, 5); + TEST_COMPARE_BLOB (lineptr, 6, "\0baz\n", 6); + free (lineptr); + lineptr = xmalloc (1); + size = 1; + ret = wrap_getline (&lineptr, &size, fp); + TEST_COMPARE (ret, 6); + TEST_COMPARE_BLOB (lineptr, 7, "te\0st\n", 7); + ret = wrap_getline (&lineptr, &size, fp); + TEST_COMPARE (ret, 1); + TEST_COMPARE_BLOB (lineptr, 1, "", 1); + ret = wrap_getline (&lineptr, &size, fp); + TEST_COMPARE (ret, -1); + TEST_COMPARE (ferror (fp), 0); + TEST_COMPARE (!!feof (fp), 1); + fclose (fp); + /* Test EOF before delimiter but after some bytes read, fitting in + available space (including case with null bytes). */ + verbose_printf ("Testing EOF before delimiter\n"); + free (lineptr); + lineptr = xmalloc (10); + size = 10; + fp = open_test_stream ("foo", 3); + ret = wrap_getline (&lineptr, &size, fp); + TEST_COMPARE (ret, 3); + TEST_COMPARE_BLOB (lineptr, 4, "foo", 4); + fclose (fp); + free (lineptr); + lineptr = xmalloc (10); + size = 10; + fp = open_test_stream ("bar\0", 4); + ret = wrap_getline (&lineptr, &size, fp); + TEST_COMPARE (ret, 4); + TEST_COMPARE_BLOB (lineptr, 5, "bar\0", 5); + fclose (fp); + free (lineptr); + lineptr = xmalloc (10); + size = 10; + fp = open_test_stream ("\0baz", 4); + ret = wrap_getline (&lineptr, &size, fp); + TEST_COMPARE (ret, 4); + TEST_COMPARE_BLOB (lineptr, 5, "\0baz", 5); + fclose (fp); + free (lineptr); + lineptr = xmalloc (10); + size = 10; + fp = open_test_stream ("te\0st", 5); + ret = wrap_getline (&lineptr, &size, fp); + TEST_COMPARE (ret, 5); + TEST_COMPARE_BLOB (lineptr, 6, "te\0st", 6); + fclose (fp); + /* Test EOF before delimiter but after some bytes read, with + reallocation (including case with null bytes). */ + verbose_printf ("Testing EOF before delimiter with reallocation\n"); + free (lineptr); + lineptr = NULL; + size = 0; + fp = open_test_stream ("foo", 3); + ret = wrap_getline (&lineptr, &size, fp); + TEST_COMPARE (ret, 3); + TEST_COMPARE_BLOB (lineptr, 4, "foo", 4); + fclose (fp); + free (lineptr); + lineptr = NULL; + size = 0; + fp = open_test_stream ("bar\0", 4); + ret = wrap_getline (&lineptr, &size, fp); + TEST_COMPARE (ret, 4); + TEST_COMPARE_BLOB (lineptr, 5, "bar\0", 5); + fclose (fp); + free (lineptr); + lineptr = NULL; + size = 0; + fp = open_test_stream ("\0baz", 4); + ret = wrap_getline (&lineptr, &size, fp); + TEST_COMPARE (ret, 4); + TEST_COMPARE_BLOB (lineptr, 5, "\0baz", 5); + fclose (fp); + free (lineptr); + lineptr = NULL; + size = 0; + fp = open_test_stream ("te\0st", 5); + ret = wrap_getline (&lineptr, &size, fp); + TEST_COMPARE (ret, 5); + TEST_COMPARE_BLOB (lineptr, 6, "te\0st", 6); + fclose (fp); + free (lineptr); + lineptr = xmalloc (1); + size = 1; + fp = open_test_stream ("foo", 3); + ret = wrap_getline (&lineptr, &size, fp); + TEST_COMPARE (ret, 3); + TEST_COMPARE_BLOB (lineptr, 4, "foo", 4); + fclose (fp); + free (lineptr); + lineptr = xmalloc (1); + size = 1; + fp = open_test_stream ("bar\0", 4); + ret = wrap_getline (&lineptr, &size, fp); + TEST_COMPARE (ret, 4); + TEST_COMPARE_BLOB (lineptr, 5, "bar\0", 5); + fclose (fp); + free (lineptr); + lineptr = xmalloc (1); + size = 1; + fp = open_test_stream ("\0baz", 4); + ret = wrap_getline (&lineptr, &size, fp); + TEST_COMPARE (ret, 4); + TEST_COMPARE_BLOB (lineptr, 5, "\0baz", 5); + fclose (fp); + free (lineptr); + lineptr = xmalloc (1); + size = 1; + fp = open_test_stream ("te\0st", 5); + ret = wrap_getline (&lineptr, &size, fp); + TEST_COMPARE (ret, 5); + TEST_COMPARE_BLOB (lineptr, 6, "te\0st", 6); + fclose (fp); + /* Test EOF with no bytes read (nothing is specified about anything + written to the buffer), including EOF again when already at end + of file. */ + verbose_printf ("Testing EOF with no bytes read\n"); + free (lineptr); + lineptr = NULL; + size = 0; + fp = open_test_stream ("", 0); + ret = wrap_getline (&lineptr, &size, fp); + TEST_COMPARE (ret, -1); + TEST_COMPARE (ferror (fp), 0); + TEST_COMPARE (!!feof (fp), 1); + ret = wrap_getline (&lineptr, &size, fp); + TEST_COMPARE (ret, -1); + TEST_COMPARE (ferror (fp), 0); + TEST_COMPARE (!!feof (fp), 1); + fclose (fp); + free (lineptr); + lineptr = xmalloc (1); + size = 1; + fp = open_test_stream ("", 0); + ret = wrap_getline (&lineptr, &size, fp); + TEST_COMPARE (ret, -1); + TEST_COMPARE (ferror (fp), 0); + TEST_COMPARE (!!feof (fp), 1); + ret = wrap_getline (&lineptr, &size, fp); + TEST_COMPARE (ret, -1); + TEST_COMPARE (ferror (fp), 0); + TEST_COMPARE (!!feof (fp), 1); + fclose (fp); + /* Test error occurring with no bytes read, including calling + wrap_getline again while the file is in error state. */ + verbose_printf ("Testing error with no bytes read\n"); + free (lineptr); + lineptr = NULL; + size = 0; + fp = open_test_stream ("", 0); + the_cookie.in_error = EINVAL; + ret = wrap_getline (&lineptr, &size, fp); + TEST_COMPARE (ret, -1); + TEST_COMPARE (errno, EINVAL); + TEST_COMPARE (!!ferror (fp), 1); + TEST_COMPARE (feof (fp), 0); + /* Make sure error state is sticky. */ + the_cookie.in_error = 0; + ret = wrap_getline (&lineptr, &size, fp); + TEST_COMPARE (ret, -1); + TEST_COMPARE (!!ferror (fp), 1); + TEST_COMPARE (feof (fp), 0); + fclose (fp); + /* Test error occurring after some bytes read. Specifications are + ambiguous here; at least in the fopencookie case used for + testing, glibc returns the partial line (but with the error + indicator on the stream set). */ + verbose_printf ("Testing error after some bytes read\n"); + free (lineptr); + lineptr = NULL; + size = 0; + fp = open_test_stream ("foo", 3); + the_cookie.in_error_after = EINVAL; + ret = wrap_getline (&lineptr, &size, fp); + TEST_COMPARE (ret, 3); + TEST_COMPARE_BLOB (lineptr, 4, "foo", 4); + TEST_COMPARE (errno, EINVAL); + TEST_COMPARE (!!ferror (fp), 1); + TEST_COMPARE (feof (fp), 0); + /* Make sure error state is sticky. */ + the_cookie.in_error = 0; + ret = wrap_getline (&lineptr, &size, fp); + TEST_COMPARE (ret, -1); + TEST_COMPARE (!!ferror (fp), 1); + TEST_COMPARE (feof (fp), 0); + fclose (fp); + /* Test EBADF error as a representative example of an fgetc error + resulting in an error from wrap_getline. We don't try to cover all + error cases for fgetc here. */ + verbose_printf ("Testing EBADF error\n"); + free (lineptr); + lineptr = NULL; + size = 0; + fp = xfopen ("/dev/null", "r"); + xclose (fileno (fp)); + ret = wrap_getline (&lineptr, &size, fp); + TEST_COMPARE (ret, -1); + TEST_COMPARE (errno, EBADF); + TEST_COMPARE (!!ferror (fp), 1); + TEST_COMPARE (feof (fp), 0); + fclose (fp); + /* Test EAGAIN error as an example of an fgetc error on a valid file + descriptor. */ + verbose_printf ("Testing EAGAIN error\n"); + free (lineptr); + lineptr = NULL; + size = 0; + int pipefd[2]; + xpipe (pipefd); + ret = fcntl (pipefd[0], F_SETFL, O_NONBLOCK); + TEST_VERIFY_EXIT (ret == 0); + fp = fdopen (pipefd[0], "r"); + TEST_VERIFY_EXIT (fp != NULL); + ret = wrap_getline (&lineptr, &size, fp); + TEST_COMPARE (ret, -1); + TEST_COMPARE (errno, EAGAIN); + TEST_COMPARE (!!ferror (fp), 1); + TEST_COMPARE (feof (fp), 0); + /* Make sure error state is sticky (even after more data is + available to read). */ + xwrite (pipefd[1], "x\n", 2); + ret = wrap_getline (&lineptr, &size, fp); + TEST_COMPARE (ret, -1); + TEST_COMPARE (!!ferror (fp), 1); + TEST_COMPARE (feof (fp), 0); + fclose (fp); + free (lineptr); + return 0; +} + +#include <support/test-driver.c> diff --git a/stdio-common/tst-renameat2.c b/stdio-common/tst-renameat2.c index b65afed75e..7f4345f716 100644 --- a/stdio-common/tst-renameat2.c +++ b/stdio-common/tst-renameat2.c @@ -82,7 +82,7 @@ static void check_size (const char *path, off64_t expected_size) { struct stat64 st; - xstat (path, &st); + xstat64 (path, &st); if (st.st_size != expected_size) FAIL_EXIT1 ("file \"%s\": expected size %lld, actual size %lld", path, (unsigned long long int) expected_size, diff --git a/stdio-common/tst-scanf-bz27650.c b/stdio-common/tst-scanf-bz27650.c new file mode 100644 index 0000000000..3a742bc865 --- /dev/null +++ b/stdio-common/tst-scanf-bz27650.c @@ -0,0 +1,108 @@ +/* Test for BZ #27650, formatted input matching beyond INT_MAX. + Copyright (C) 2024 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 + <https://www.gnu.org/licenses/>. */ + +#include <error.h> +#include <errno.h> +#include <limits.h> +#include <mcheck.h> +#include <stddef.h> +#include <stdio.h> +#include <stdlib.h> +#include <string.h> + +#include <sys/types.h> + +#include <support/check.h> +#include <support/test-driver.h> + +/* Produce a stream of more than INT_MAX characters via buffer BUF of + size SIZE according to bookkeeping in COOKIE and then return EOF. */ + +static ssize_t +io_read (void *cookie, char *buf, size_t size) +{ + unsigned int *written = cookie; + unsigned int w = *written; + + if (w > INT_MAX) + return 0; + + memset (buf, 'a', size); + *written = w + size; + return size; +} + +/* Consume a stream of more than INT_MAX characters from an artificial + input stream of which none is the new line character. The call to + fscanf is supposed to complete upon the EOF condition of input, + however in the presence of BZ #27650 it will terminate prematurely + with characters still outstanding in input. Diagnose the condition + and return status accordingly. */ + +int +do_test (void) +{ + static cookie_io_functions_t io_funcs = { .read = io_read }; + unsigned int written = 0; + FILE *in; + int v; + + mtrace (); + + in = fopencookie (&written, "r", io_funcs); + if (in == NULL) + { + FAIL ("fopencookie: %m"); + goto out; + } + + v = fscanf (in, "%*[^\n]"); + if (ferror (in)) + { + FAIL ("fscanf: input failure, at %u: %m", written); + goto out_close; + } + else if (v == EOF) + { + FAIL ("fscanf: unexpected end of file, at %u", written); + goto out_close; + } + + if (!feof (in)) + { + v = fgetc (in); + if (ferror (in)) + FAIL ("fgetc: input failure: %m"); + else if (v == EOF) + FAIL ("fgetc: unexpected end of file after missing end of file"); + else if (v == '\n') + FAIL ("unexpected new line character received"); + else + FAIL ("character received after end of file expected: \\x%02x", v); + } + +out_close: + if (fclose (in) != 0) + FAIL ("fclose: %m"); + +out: + return EXIT_SUCCESS; +} + +#define TIMEOUT (DEFAULT_TIMEOUT * 8) +#include <support/test-driver.c> diff --git a/stdio-common/tst-ungetc-leak.c b/stdio-common/tst-ungetc-leak.c new file mode 100644 index 0000000000..6c5152b43f --- /dev/null +++ b/stdio-common/tst-ungetc-leak.c @@ -0,0 +1,32 @@ +/* Test for memory leak with ungetc when stream is unused. + Copyright The GNU Toolchain Authors. + 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 + <https://www.gnu.org/licenses/>. */ + +#include <stdio.h> +#include <mcheck.h> +#include <support/check.h> +#include <support/support.h> + +static int +do_test (void) +{ + mtrace (); + TEST_COMPARE (ungetc('y', stdin), 'y'); + return 0; +} + +#include <support/test-driver.c> diff --git a/stdio-common/tst-ungetc.c b/stdio-common/tst-ungetc.c index 1344b2b591..388b202493 100644 --- a/stdio-common/tst-ungetc.c +++ b/stdio-common/tst-ungetc.c @@ -1,70 +1,74 @@ -/* Test for ungetc bugs. */ +/* Test for ungetc bugs. + Copyright (C) 1996-2024 Free Software Foundation, Inc. + Copyright The GNU Toolchain Authors. + 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 + <https://www.gnu.org/licenses/>. */ #include <stdio.h> #include <stdlib.h> -#include <unistd.h> - -#undef assert -#define assert(x) \ - if (!(x)) \ - { \ - fputs ("test failed: " #x "\n", stderr); \ - retval = 1; \ - goto the_end; \ - } +#include <support/check.h> +#include <support/support.h> +#include <support/temp_file.h> +#include <support/xstdio.h> +#include <support/xunistd.h> -int -main (int argc, char *argv[]) +static int +do_test (void) { - char name[] = "/tmp/tst-ungetc.XXXXXX"; + char *name = NULL; FILE *fp = NULL; - int retval = 0; int c; char buffer[64]; - int fd = mkstemp (name); + int fd = create_temp_file ("tst-ungetc.", &name); if (fd == -1) - { - printf ("mkstemp failed: %m\n"); - return 1; - } - close (fd); - fp = fopen (name, "w"); - assert (fp != NULL) - fputs ("bla", fp); - fclose (fp); - fp = NULL; + FAIL_EXIT1 ("cannot create temporary file: %m"); + xclose (fd); - fp = fopen (name, "r"); - assert (fp != NULL); - assert (ungetc ('z', fp) == 'z'); - assert (getc (fp) == 'z'); - assert (getc (fp) == 'b'); - assert (getc (fp) == 'l'); - assert (ungetc ('m', fp) == 'm'); - assert (getc (fp) == 'm'); - assert ((c = getc (fp)) == 'a'); - assert (getc (fp) == EOF); - assert (ungetc (c, fp) == c); - assert (feof (fp) == 0); - assert (getc (fp) == c); - assert (getc (fp) == EOF); - fclose (fp); - fp = NULL; + fp = xfopen (name, "w"); + fputs ("bla", fp); + xfclose (fp); - fp = fopen (name, "r"); - assert (fp != NULL); - assert (getc (fp) == 'b'); - assert (getc (fp) == 'l'); - assert (ungetc ('b', fp) == 'b'); - assert (fread (buffer, 1, 64, fp) == 2); - assert (buffer[0] == 'b'); - assert (buffer[1] == 'a'); + fp = xfopen (name, "r"); + TEST_VERIFY_EXIT (ungetc ('z', fp) == 'z'); + TEST_VERIFY_EXIT (getc (fp) == 'z'); + TEST_VERIFY_EXIT (getc (fp) == 'b'); + TEST_VERIFY_EXIT (getc (fp) == 'l'); + TEST_VERIFY_EXIT (ungetc ('m', fp) == 'm'); + TEST_VERIFY_EXIT (ungetc ('n', fp) == 'n'); + TEST_VERIFY_EXIT (getc (fp) == 'n'); + TEST_VERIFY_EXIT (getc (fp) == 'm'); + TEST_VERIFY_EXIT ((c = getc (fp)) == 'a'); + TEST_VERIFY_EXIT (getc (fp) == EOF); + TEST_VERIFY_EXIT (ungetc (c, fp) == c); + TEST_VERIFY_EXIT (feof (fp) == 0); + TEST_VERIFY_EXIT (getc (fp) == c); + TEST_VERIFY_EXIT (getc (fp) == EOF); + xfclose (fp); -the_end: - if (fp != NULL) - fclose (fp); - unlink (name); + fp = xfopen (name, "r"); + TEST_VERIFY_EXIT (getc (fp) == 'b'); + TEST_VERIFY_EXIT (getc (fp) == 'l'); + TEST_VERIFY_EXIT (ungetc ('b', fp) == 'b'); + TEST_VERIFY_EXIT (fread (buffer, 1, 64, fp) == 2); + TEST_VERIFY_EXIT (buffer[0] == 'b'); + TEST_VERIFY_EXIT (buffer[1] == 'a'); + xfclose (fp); - return retval; + return 0; } + +#include <support/test-driver.c> diff --git a/stdlib/Makefile b/stdlib/Makefile index 8b0ac63ddb..347491de53 100644 --- a/stdlib/Makefile +++ b/stdlib/Makefile @@ -273,6 +273,8 @@ tests := \ tst-bsearch \ tst-bz20544 \ tst-canon-bz26341 \ + tst-concurrent-exit \ + tst-concurrent-quick_exit \ tst-cxa_atexit \ tst-environ \ tst-getrandom \ @@ -623,3 +625,5 @@ $(objpfx)tst-setcontext3.out: tst-setcontext3.sh $(objpfx)tst-setcontext3 $(evaluate-test) $(objpfx)tst-qsort5: $(libm) +$(objpfx)tst-concurrent-exit: $(shared-thread-library) +$(objpfx)tst-concurrent-quick_exit: $(shared-thread-library) diff --git a/stdlib/bits/stdlib.h b/stdlib/bits/stdlib.h index 1557b862b1..9c78ecf458 100644 --- a/stdlib/bits/stdlib.h +++ b/stdlib/bits/stdlib.h @@ -43,16 +43,16 @@ __NTH (realpath (const char *__restrict __name, "bytes long buffer") #endif { - size_t sz = __glibc_objsize (__resolved); + size_t __sz = __glibc_objsize (__resolved); - if (sz == (size_t) -1) + if (__sz == (size_t) -1) return __realpath_alias (__name, __resolved); #if !__fortify_use_clang && defined _LIBC_LIMITS_H_ && defined PATH_MAX - if (__glibc_unsafe_len (PATH_MAX, sizeof (char), sz)) - return __realpath_chk_warn (__name, __resolved, sz); + if (__glibc_unsafe_len (PATH_MAX, sizeof (char), __sz)) + return __realpath_chk_warn (__name, __resolved, __sz); #endif - return __realpath_chk (__name, __resolved, sz); + return __realpath_chk (__name, __resolved, __sz); } diff --git a/stdlib/exit.c b/stdlib/exit.c index 5166c78044..8d7e2e53d0 100644 --- a/stdlib/exit.c +++ b/stdlib/exit.c @@ -28,6 +28,13 @@ __exit_funcs_lock is declared. */ bool __exit_funcs_done = false; +/* The lock handles concurrent exit() and quick_exit(), even though the + C/POSIX standard states that calling exit() more than once is UB. The + recursive lock allows atexit() handlers or destructors to call exit() + itself. In this case, the handler list execution will resume at the + point of the current handler. */ +__libc_lock_define_initialized_recursive (static, __exit_lock) + /* Call all functions registered with `atexit' and `on_exit', in the reverse of the order in which they were registered perform stdio cleanup, and terminate program execution with STATUS. */ @@ -36,6 +43,9 @@ attribute_hidden __run_exit_handlers (int status, struct exit_function_list **listp, bool run_list_atexit, bool run_dtors) { + /* The exit should never return, so there is no need to unlock it. */ + __libc_lock_lock_recursive (__exit_lock); + /* First, call the TLS destructors. */ if (run_dtors) call_function_static_weak (__call_tls_dtors); diff --git a/stdlib/gen-tst-strtod-round.c b/stdlib/gen-tst-strtod-round.c index e48bf4d6ea..7ce735f81d 100644 --- a/stdlib/gen-tst-strtod-round.c +++ b/stdlib/gen-tst-strtod-round.c @@ -46,6 +46,7 @@ static int string_to_fp (mpfr_t f, const char *s, mpfr_rnd_t rnd) { mpfr_clear_overflow (); + mpfr_clear_underflow (); #ifdef WORKAROUND mpfr_t f2; mpfr_init2 (f2, 100000); @@ -53,12 +54,16 @@ string_to_fp (mpfr_t f, const char *s, mpfr_rnd_t rnd) int r = mpfr_set (f, f2, rnd); r |= mpfr_subnormalize (f, r, rnd); mpfr_clear (f2); - return r0 | r; + r |= r0; #else int r = mpfr_strtofr (f, s, NULL, 0, rnd); r |= mpfr_subnormalize (f, r, rnd); - return r; #endif + if (r == 0) + /* The MPFR underflow flag is set for exact subnormal results, + which is not wanted here. */ + mpfr_clear_underflow (); + return r; } void @@ -70,6 +75,21 @@ print_fp (FILE *fout, mpfr_t f, const char *suffix) mpfr_fprintf (fout, "\t%Ra%s", f, suffix); } +static const char * +suffix_to_print (bool overflow, bool underflow, bool underflow_before_rounding, + bool with_comma) +{ + if (overflow) + return with_comma ? ", true, false,\n" : ", true, false"; + if (underflow) + return with_comma ? ", false, true,\n" : ", false, true"; + if (underflow_before_rounding) + return (with_comma + ? ", false, !TININESS_AFTER_ROUNDING,\n" + : ", false, !TININESS_AFTER_ROUNDING"); + return with_comma ? ", false, false,\n" : ", false, false"; +} + static void round_str (FILE *fout, const char *s, int prec, int emin, int emax, bool ibm_ld) @@ -80,8 +100,11 @@ round_str (FILE *fout, const char *s, int prec, int emin, int emax, mpfr_set_emin (emin); mpfr_set_emax (emax); mpfr_init (f); + string_to_fp (f, s, MPFR_RNDZ); + bool underflow_before_rounding = mpfr_underflow_p () != 0; int r = string_to_fp (f, s, MPFR_RNDD); bool overflow = mpfr_overflow_p () != 0; + bool underflow = mpfr_underflow_p () != 0; if (ibm_ld) { assert (prec == 106 && emin == -1073 && emax == 1024); @@ -97,19 +120,27 @@ round_str (FILE *fout, const char *s, int prec, int emin, int emax, } } mpfr_fprintf (fout, "\t%s,\n", r ? "false" : "true"); - print_fp (fout, f, overflow ? ", true,\n" : ", false,\n"); + print_fp (fout, f, + suffix_to_print (overflow, underflow, underflow_before_rounding, + true)); string_to_fp (f, s, MPFR_RNDN); overflow = (mpfr_overflow_p () != 0 || (ibm_ld && mpfr_cmpabs (f, max_value) > 0)); - print_fp (fout, f, overflow ? ", true,\n" : ", false,\n"); + print_fp (fout, f, + suffix_to_print (overflow, underflow, underflow_before_rounding, + true)); string_to_fp (f, s, MPFR_RNDZ); overflow = (mpfr_overflow_p () != 0 || (ibm_ld && mpfr_cmpabs (f, max_value) > 0)); - print_fp (fout, f, overflow ? ", true,\n" : ", false,\n"); + print_fp (fout, f, + suffix_to_print (overflow, underflow, underflow_before_rounding, + true)); string_to_fp (f, s, MPFR_RNDU); overflow = (mpfr_overflow_p () != 0 || (ibm_ld && mpfr_cmpabs (f, max_value) > 0)); - print_fp (fout, f, overflow ? ", true" : ", false"); + print_fp (fout, f, + suffix_to_print (overflow, underflow, underflow_before_rounding, + false)); mpfr_clear (f); if (ibm_ld) mpfr_clear (max_value); diff --git a/stdlib/stdlib.h b/stdlib/stdlib.h index 901926e893..17487c6640 100644 --- a/stdlib/stdlib.h +++ b/stdlib/stdlib.h @@ -727,7 +727,7 @@ extern void *aligned_alloc (size_t __alignment, size_t __size) #endif /* Abort execution and generate a core-dump. */ -extern void abort (void) __THROW __attribute__ ((__noreturn__)); +extern void abort (void) __THROW __attribute__ ((__noreturn__)) __COLD; /* Register a function to be called when `exit' is called. */ diff --git a/stdlib/strtod_l.c b/stdlib/strtod_l.c index be515ce659..beb97b3d0c 100644 --- a/stdlib/strtod_l.c +++ b/stdlib/strtod_l.c @@ -222,6 +222,7 @@ round_and_return (mp_limb_t *retval, intmax_t exponent, int negative, mp_size_t shift = MIN_EXP - 1 - exponent; bool is_tiny = true; + bool old_half_bit = (round_limb & (((mp_limb_t) 1) << round_bit)) != 0; more_bits |= (round_limb & ((((mp_limb_t) 1) << round_bit) - 1)) != 0; if (shift == MANT_DIG) @@ -292,6 +293,7 @@ round_and_return (mp_limb_t *retval, intmax_t exponent, int negative, round_bit = shift - 1; (void) __mpn_rshift (retval, retval, RETURN_LIMB_SIZE, shift); } + more_bits |= old_half_bit; /* This is a hook for the m68k long double format, where the exponent bias is the same for normalized and denormalized numbers. */ diff --git a/stdlib/strtod_nan_main.c b/stdlib/strtod_nan_main.c index 4cb286d2b3..39fb7e9f75 100644 --- a/stdlib/strtod_nan_main.c +++ b/stdlib/strtod_nan_main.c @@ -16,6 +16,7 @@ License along with the GNU C Library; if not, see <https://www.gnu.org/licenses/>. */ +#include <errno.h> #include <ieee754.h> #include <locale.h> #include <math.h> @@ -50,7 +51,9 @@ STRTOD_NAN (const STRING_TYPE *str, STRING_TYPE **endptr, STRING_TYPE endc) STRING_TYPE *endp; unsigned long long int mant; + int save_errno = errno; mant = STRTOULL (str, &endp, 0); + __set_errno (save_errno); if (endp == cp) SET_NAN_PAYLOAD (retval, mant); diff --git a/stdlib/tst-concurrent-exit-skeleton.c b/stdlib/tst-concurrent-exit-skeleton.c new file mode 100644 index 0000000000..cfd5140466 --- /dev/null +++ b/stdlib/tst-concurrent-exit-skeleton.c @@ -0,0 +1,160 @@ +/* Check if exit/quick_exit can be called concurrently by multiple threads. + Copyright (C) 2024 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 + <https://www.gnu.org/licenses/>. */ + +#include <array_length.h> +#include <stdlib.h> +#include <support/check.h> +#include <support/xthread.h> +#include <stdio.h> +#include <support/xunistd.h> +#include <string.h> + +/* A value larger than the minimum required by C/POSIX (32), to trigger a + new block memory allocation. */ +#define MAX_atexit 64 + +static pthread_barrier_t barrier; + +static void * +tf (void *closure) +{ + xpthread_barrier_wait (&barrier); + EXIT (0); + + return NULL; +} + +static const char expected[] = "00000000000000000000000000000000000" + "00000000000000000000003021121130211"; +static char crumbs[sizeof (expected)]; +static int next_slot = 0; + +static void +exit_with_flush (int code) +{ + fflush (stdout); + /* glibc allows recursive EXIT, the ATEXIT handlers execution will be + resumed from the where the previous EXIT was interrupted. */ + EXIT (code); +} + +/* Take some time, so another thread potentially issue EXIT. */ +#define SETUP_NANOSLEEP \ + if (nanosleep (&(struct timespec) { .tv_sec = 0, .tv_nsec = 1000L }, \ + NULL) != 0) \ + FAIL_EXIT1 ("nanosleep: %m") + +static void +fn0 (void) +{ + crumbs[next_slot++] = '0'; + SETUP_NANOSLEEP; +} + +static void +fn1 (void) +{ + crumbs[next_slot++] = '1'; + SETUP_NANOSLEEP; +} + +static void +fn2 (void) +{ + crumbs[next_slot++] = '2'; + ATEXIT (fn1); + SETUP_NANOSLEEP; +} + +static void +fn3 (void) +{ + crumbs[next_slot++] = '3'; + ATEXIT (fn2); + ATEXIT (fn0); + SETUP_NANOSLEEP; +} + +static void +fn_final (void) +{ + TEST_COMPARE_STRING (crumbs, expected); + exit_with_flush (0); +} + +_Noreturn static void +child (void) +{ + enum { nthreads = 8 }; + + xpthread_barrier_init (&barrier, NULL, nthreads + 1); + + pthread_t thr[nthreads]; + for (int i = 0; i < nthreads; i++) + thr[i] = xpthread_create (NULL, tf, NULL); + + xpthread_barrier_wait (&barrier); + + for (int i = 0; i < nthreads; i++) + { + pthread_join (thr[i], NULL); + /* It should not be reached, it means that thread did not exit for + some reason. */ + support_record_failure (); + } + + EXIT (2); +} + +static int +do_test (void) +{ + /* Register a large number of handler that will trigger a heap allocation + for the handle state. On EXIT, each block will be freed after the + handle is processed. */ + int slots_remaining = MAX_atexit; + + /* Register this first so it can verify expected order of the rest. */ + ATEXIT (fn_final); --slots_remaining; + + TEST_VERIFY_EXIT (ATEXIT (fn1) == 0); --slots_remaining; + TEST_VERIFY_EXIT (ATEXIT (fn3) == 0); --slots_remaining; + TEST_VERIFY_EXIT (ATEXIT (fn1) == 0); --slots_remaining; + TEST_VERIFY_EXIT (ATEXIT (fn2) == 0); --slots_remaining; + TEST_VERIFY_EXIT (ATEXIT (fn1) == 0); --slots_remaining; + TEST_VERIFY_EXIT (ATEXIT (fn3) == 0); --slots_remaining; + + while (slots_remaining > 0) + { + TEST_VERIFY_EXIT (ATEXIT (fn0) == 0); --slots_remaining; + } + + pid_t pid = xfork (); + if (pid != 0) + { + int status; + xwaitpid (pid, &status, 0); + TEST_VERIFY (WIFEXITED (status)); + } + else + child (); + + return 0; +} + +#include <support/test-driver.c> diff --git a/stdlib/tst-concurrent-exit.c b/stdlib/tst-concurrent-exit.c new file mode 100644 index 0000000000..421c39d631 --- /dev/null +++ b/stdlib/tst-concurrent-exit.c @@ -0,0 +1,22 @@ +/* Check if exit can be called concurrently by multiple threads. + Copyright (C) 2024 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 + <https://www.gnu.org/licenses/>. */ + +#define EXIT(__r) exit (__r) +#define ATEXIT(__f) atexit (__f) + +#include "tst-concurrent-exit-skeleton.c" diff --git a/stdlib/tst-concurrent-quick_exit.c b/stdlib/tst-concurrent-quick_exit.c new file mode 100644 index 0000000000..3f321668d6 --- /dev/null +++ b/stdlib/tst-concurrent-quick_exit.c @@ -0,0 +1,22 @@ +/* Check if quick_exit can be called concurrently by multiple threads. + Copyright (C) 2024 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 + <https://www.gnu.org/licenses/>. */ + +#define EXIT(__r) quick_exit (__r) +#define ATEXIT(__f) at_quick_exit (__f) + +#include "tst-concurrent-exit-skeleton.c" diff --git a/stdlib/tst-strtod-round-data b/stdlib/tst-strtod-round-data index 84ab705709..9489fbcc9c 100644 --- a/stdlib/tst-strtod-round-data +++ b/stdlib/tst-strtod-round-data @@ -265,3 +265,15 @@ 1.000000000000000000000000000000000385185988877447170611195588516985463707620329643077639047987759113311767578125 1.0000000000000000000000000000000001925929944387235853055977942584927318538101648215388195239938795566558837890625 1.00000000000000000000000000000000009629649721936179265279889712924636592690508241076940976199693977832794189453125 +0x30000002222225p-1077 +0x0.7fffffffffffeap-1022 +0x0.7fffffffffffe9p-1022 +0x0.7ffffd4p-126 +0x0.7ffffffffffffffd4p-16382 +0x0.7ffffffffffffffd4p-16383 +0x0.7ffffffffffffffffffffffffffeap-16382 +0x0.7000004p-126 +0x0.70000000000002p-1022 +0x0.70000000000000004p-16382 +0x0.70000000000000004p-16383 +0x0.70000000000000000000000000002p-16382 diff --git a/stdlib/tst-strtod-round-data.h b/stdlib/tst-strtod-round-data.h index 8899d15f9b..ed50eb2537 100644 --- a/stdlib/tst-strtod-round-data.h +++ b/stdlib/tst-strtod-round-data.h @@ -2,1852 +2,1852 @@ static const struct test tests[] = { TEST ("3.518437208883201171875E+013", false, - 0x2p+44, false, - 0x2p+44, false, - 0x2p+44, false, - 0x2.000004p+44, false, - false, - 0x2.0000000000002p+44, false, - 0x2.0000000000004p+44, false, - 0x2.0000000000002p+44, false, - 0x2.0000000000004p+44, false, - true, - 0x2.0000000000003p+44, false, - 0x2.0000000000003p+44, false, - 0x2.0000000000003p+44, false, - 0x2.0000000000003p+44, false, - true, - 0x2.0000000000003p+44, false, - 0x2.0000000000003p+44, false, - 0x2.0000000000003p+44, false, - 0x2.0000000000003p+44, false, - true, - 0x2.0000000000003p+44, false, - 0x2.0000000000003p+44, false, - 0x2.0000000000003p+44, false, - 0x2.0000000000003p+44, false, - true, - 0x2.0000000000003p+44, false, - 0x2.0000000000003p+44, false, - 0x2.0000000000003p+44, false, - 0x2.0000000000003p+44, false), + 0x2p+44, false, false, + 0x2p+44, false, false, + 0x2p+44, false, false, + 0x2.000004p+44, false, false, + false, + 0x2.0000000000002p+44, false, false, + 0x2.0000000000004p+44, false, false, + 0x2.0000000000002p+44, false, false, + 0x2.0000000000004p+44, false, false, + true, + 0x2.0000000000003p+44, false, false, + 0x2.0000000000003p+44, false, false, + 0x2.0000000000003p+44, false, false, + 0x2.0000000000003p+44, false, false, + true, + 0x2.0000000000003p+44, false, false, + 0x2.0000000000003p+44, false, false, + 0x2.0000000000003p+44, false, false, + 0x2.0000000000003p+44, false, false, + true, + 0x2.0000000000003p+44, false, false, + 0x2.0000000000003p+44, false, false, + 0x2.0000000000003p+44, false, false, + 0x2.0000000000003p+44, false, false, + true, + 0x2.0000000000003p+44, false, false, + 0x2.0000000000003p+44, false, false, + 0x2.0000000000003p+44, false, false, + 0x2.0000000000003p+44, false, false), TEST ("1.00000005960464477550", false, - 0x1p+0, false, - 0x1.000002p+0, false, - 0x1p+0, false, - 0x1.000002p+0, false, - false, - 0x1.000001p+0, false, - 0x1.000001p+0, false, - 0x1.000001p+0, false, - 0x1.0000010000001p+0, false, - false, - 0x1.0000010000000002p+0, false, - 0x1.0000010000000002p+0, false, - 0x1.0000010000000002p+0, false, - 0x1.0000010000000004p+0, false, - false, - 0x1.0000010000000002p+0, false, - 0x1.0000010000000002p+0, false, - 0x1.0000010000000002p+0, false, - 0x1.0000010000000004p+0, false, - false, - 0x1.0000010000000002048242f2ffp+0, false, - 0x1.0000010000000002048242f2ff8p+0, false, - 0x1.0000010000000002048242f2ffp+0, false, - 0x1.0000010000000002048242f2ff8p+0, false, - false, - 0x1.0000010000000002048242f2ff66p+0, false, - 0x1.0000010000000002048242f2ff67p+0, false, - 0x1.0000010000000002048242f2ff66p+0, false, - 0x1.0000010000000002048242f2ff67p+0, false), + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + false, + 0x1.000001p+0, false, false, + 0x1.000001p+0, false, false, + 0x1.000001p+0, false, false, + 0x1.0000010000001p+0, false, false, + false, + 0x1.0000010000000002p+0, false, false, + 0x1.0000010000000002p+0, false, false, + 0x1.0000010000000002p+0, false, false, + 0x1.0000010000000004p+0, false, false, + false, + 0x1.0000010000000002p+0, false, false, + 0x1.0000010000000002p+0, false, false, + 0x1.0000010000000002p+0, false, false, + 0x1.0000010000000004p+0, false, false, + false, + 0x1.0000010000000002048242f2ffp+0, false, false, + 0x1.0000010000000002048242f2ff8p+0, false, false, + 0x1.0000010000000002048242f2ffp+0, false, false, + 0x1.0000010000000002048242f2ff8p+0, false, false, + false, + 0x1.0000010000000002048242f2ff66p+0, false, false, + 0x1.0000010000000002048242f2ff67p+0, false, false, + 0x1.0000010000000002048242f2ff66p+0, false, false, + 0x1.0000010000000002048242f2ff67p+0, false, false), TEST ("1.0000000596046447755", false, - 0x1p+0, false, - 0x1.000002p+0, false, - 0x1p+0, false, - 0x1.000002p+0, false, - false, - 0x1.000001p+0, false, - 0x1.000001p+0, false, - 0x1.000001p+0, false, - 0x1.0000010000001p+0, false, - false, - 0x1.0000010000000002p+0, false, - 0x1.0000010000000002p+0, false, - 0x1.0000010000000002p+0, false, - 0x1.0000010000000004p+0, false, - false, - 0x1.0000010000000002p+0, false, - 0x1.0000010000000002p+0, false, - 0x1.0000010000000002p+0, false, - 0x1.0000010000000004p+0, false, - false, - 0x1.0000010000000002048242f2ffp+0, false, - 0x1.0000010000000002048242f2ff8p+0, false, - 0x1.0000010000000002048242f2ffp+0, false, - 0x1.0000010000000002048242f2ff8p+0, false, - false, - 0x1.0000010000000002048242f2ff66p+0, false, - 0x1.0000010000000002048242f2ff67p+0, false, - 0x1.0000010000000002048242f2ff66p+0, false, - 0x1.0000010000000002048242f2ff67p+0, false), + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + false, + 0x1.000001p+0, false, false, + 0x1.000001p+0, false, false, + 0x1.000001p+0, false, false, + 0x1.0000010000001p+0, false, false, + false, + 0x1.0000010000000002p+0, false, false, + 0x1.0000010000000002p+0, false, false, + 0x1.0000010000000002p+0, false, false, + 0x1.0000010000000004p+0, false, false, + false, + 0x1.0000010000000002p+0, false, false, + 0x1.0000010000000002p+0, false, false, + 0x1.0000010000000002p+0, false, false, + 0x1.0000010000000004p+0, false, false, + false, + 0x1.0000010000000002048242f2ffp+0, false, false, + 0x1.0000010000000002048242f2ff8p+0, false, false, + 0x1.0000010000000002048242f2ffp+0, false, false, + 0x1.0000010000000002048242f2ff8p+0, false, false, + false, + 0x1.0000010000000002048242f2ff66p+0, false, false, + 0x1.0000010000000002048242f2ff67p+0, false, false, + 0x1.0000010000000002048242f2ff66p+0, false, false, + 0x1.0000010000000002048242f2ff67p+0, false, false), TEST ("1.000000059604644776", false, - 0x1p+0, false, - 0x1.000002p+0, false, - 0x1p+0, false, - 0x1.000002p+0, false, - false, - 0x1.000001p+0, false, - 0x1.000001p+0, false, - 0x1.000001p+0, false, - 0x1.0000010000001p+0, false, - false, - 0x1.000001000000000ap+0, false, - 0x1.000001000000000cp+0, false, - 0x1.000001000000000ap+0, false, - 0x1.000001000000000cp+0, false, - false, - 0x1.000001000000000ap+0, false, - 0x1.000001000000000cp+0, false, - 0x1.000001000000000ap+0, false, - 0x1.000001000000000cp+0, false, - false, - 0x1.000001000000000b3db12bdc21p+0, false, - 0x1.000001000000000b3db12bdc21p+0, false, - 0x1.000001000000000b3db12bdc21p+0, false, - 0x1.000001000000000b3db12bdc218p+0, false, - false, - 0x1.000001000000000b3db12bdc213cp+0, false, - 0x1.000001000000000b3db12bdc213dp+0, false, - 0x1.000001000000000b3db12bdc213cp+0, false, - 0x1.000001000000000b3db12bdc213dp+0, false), + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + false, + 0x1.000001p+0, false, false, + 0x1.000001p+0, false, false, + 0x1.000001p+0, false, false, + 0x1.0000010000001p+0, false, false, + false, + 0x1.000001000000000ap+0, false, false, + 0x1.000001000000000cp+0, false, false, + 0x1.000001000000000ap+0, false, false, + 0x1.000001000000000cp+0, false, false, + false, + 0x1.000001000000000ap+0, false, false, + 0x1.000001000000000cp+0, false, false, + 0x1.000001000000000ap+0, false, false, + 0x1.000001000000000cp+0, false, false, + false, + 0x1.000001000000000b3db12bdc21p+0, false, false, + 0x1.000001000000000b3db12bdc21p+0, false, false, + 0x1.000001000000000b3db12bdc21p+0, false, false, + 0x1.000001000000000b3db12bdc218p+0, false, false, + false, + 0x1.000001000000000b3db12bdc213cp+0, false, false, + 0x1.000001000000000b3db12bdc213dp+0, false, false, + 0x1.000001000000000b3db12bdc213cp+0, false, false, + 0x1.000001000000000b3db12bdc213dp+0, false, false), TEST ("1.000000059604644775", false, - 0x1p+0, false, - 0x1p+0, false, - 0x1p+0, false, - 0x1.000002p+0, false, - false, - 0x1.000000fffffffp+0, false, - 0x1.000001p+0, false, - 0x1.000000fffffffp+0, false, - 0x1.000001p+0, false, - false, - 0x1.000000fffffffff8p+0, false, - 0x1.000000fffffffff8p+0, false, - 0x1.000000fffffffff8p+0, false, - 0x1.000000fffffffffap+0, false, - false, - 0x1.000000fffffffff8p+0, false, - 0x1.000000fffffffff8p+0, false, - 0x1.000000fffffffff8p+0, false, - 0x1.000000fffffffffap+0, false, - false, - 0x1.000000fffffffff8cb535a09dd8p+0, false, - 0x1.000000fffffffff8cb535a09dd8p+0, false, - 0x1.000000fffffffff8cb535a09dd8p+0, false, - 0x1.000000fffffffff8cb535a09dep+0, false, - false, - 0x1.000000fffffffff8cb535a09dd9p+0, false, - 0x1.000000fffffffff8cb535a09dd91p+0, false, - 0x1.000000fffffffff8cb535a09dd9p+0, false, - 0x1.000000fffffffff8cb535a09dd91p+0, false), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + false, + 0x1.000000fffffffp+0, false, false, + 0x1.000001p+0, false, false, + 0x1.000000fffffffp+0, false, false, + 0x1.000001p+0, false, false, + false, + 0x1.000000fffffffff8p+0, false, false, + 0x1.000000fffffffff8p+0, false, false, + 0x1.000000fffffffff8p+0, false, false, + 0x1.000000fffffffffap+0, false, false, + false, + 0x1.000000fffffffff8p+0, false, false, + 0x1.000000fffffffff8p+0, false, false, + 0x1.000000fffffffff8p+0, false, false, + 0x1.000000fffffffffap+0, false, false, + false, + 0x1.000000fffffffff8cb535a09dd8p+0, false, false, + 0x1.000000fffffffff8cb535a09dd8p+0, false, false, + 0x1.000000fffffffff8cb535a09dd8p+0, false, false, + 0x1.000000fffffffff8cb535a09dep+0, false, false, + false, + 0x1.000000fffffffff8cb535a09dd9p+0, false, false, + 0x1.000000fffffffff8cb535a09dd91p+0, false, false, + 0x1.000000fffffffff8cb535a09dd9p+0, false, false, + 0x1.000000fffffffff8cb535a09dd91p+0, false, false), TEST ("1.00000005960464478", false, - 0x1p+0, false, - 0x1.000002p+0, false, - 0x1p+0, false, - 0x1.000002p+0, false, - false, - 0x1.000001p+0, false, - 0x1.000001p+0, false, - 0x1.000001p+0, false, - 0x1.0000010000001p+0, false, - false, - 0x1.0000010000000054p+0, false, - 0x1.0000010000000056p+0, false, - 0x1.0000010000000054p+0, false, - 0x1.0000010000000056p+0, false, - false, - 0x1.0000010000000054p+0, false, - 0x1.0000010000000056p+0, false, - 0x1.0000010000000054p+0, false, - 0x1.0000010000000056p+0, false, - false, - 0x1.0000010000000055072873252f8p+0, false, - 0x1.0000010000000055072873253p+0, false, - 0x1.0000010000000055072873252f8p+0, false, - 0x1.0000010000000055072873253p+0, false, - false, - 0x1.0000010000000055072873252febp+0, false, - 0x1.0000010000000055072873252febp+0, false, - 0x1.0000010000000055072873252febp+0, false, - 0x1.0000010000000055072873252fecp+0, false), + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + false, + 0x1.000001p+0, false, false, + 0x1.000001p+0, false, false, + 0x1.000001p+0, false, false, + 0x1.0000010000001p+0, false, false, + false, + 0x1.0000010000000054p+0, false, false, + 0x1.0000010000000056p+0, false, false, + 0x1.0000010000000054p+0, false, false, + 0x1.0000010000000056p+0, false, false, + false, + 0x1.0000010000000054p+0, false, false, + 0x1.0000010000000056p+0, false, false, + 0x1.0000010000000054p+0, false, false, + 0x1.0000010000000056p+0, false, false, + false, + 0x1.0000010000000055072873252f8p+0, false, false, + 0x1.0000010000000055072873253p+0, false, false, + 0x1.0000010000000055072873252f8p+0, false, false, + 0x1.0000010000000055072873253p+0, false, false, + false, + 0x1.0000010000000055072873252febp+0, false, false, + 0x1.0000010000000055072873252febp+0, false, false, + 0x1.0000010000000055072873252febp+0, false, false, + 0x1.0000010000000055072873252fecp+0, false, false), TEST ("1.0000000596046448", false, - 0x1p+0, false, - 0x1.000002p+0, false, - 0x1p+0, false, - 0x1.000002p+0, false, - false, - 0x1.000001p+0, false, - 0x1.000001p+0, false, - 0x1.000001p+0, false, - 0x1.0000010000001p+0, false, - false, - 0x1.00000100000001c4p+0, false, - 0x1.00000100000001c6p+0, false, - 0x1.00000100000001c4p+0, false, - 0x1.00000100000001c6p+0, false, - false, - 0x1.00000100000001c4p+0, false, - 0x1.00000100000001c6p+0, false, - 0x1.00000100000001c4p+0, false, - 0x1.00000100000001c6p+0, false, - false, - 0x1.00000100000001c5f67cd79279p+0, false, - 0x1.00000100000001c5f67cd792798p+0, false, - 0x1.00000100000001c5f67cd79279p+0, false, - 0x1.00000100000001c5f67cd792798p+0, false, - false, - 0x1.00000100000001c5f67cd7927953p+0, false, - 0x1.00000100000001c5f67cd7927954p+0, false, - 0x1.00000100000001c5f67cd7927953p+0, false, - 0x1.00000100000001c5f67cd7927954p+0, false), + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + false, + 0x1.000001p+0, false, false, + 0x1.000001p+0, false, false, + 0x1.000001p+0, false, false, + 0x1.0000010000001p+0, false, false, + false, + 0x1.00000100000001c4p+0, false, false, + 0x1.00000100000001c6p+0, false, false, + 0x1.00000100000001c4p+0, false, false, + 0x1.00000100000001c6p+0, false, false, + false, + 0x1.00000100000001c4p+0, false, false, + 0x1.00000100000001c6p+0, false, false, + 0x1.00000100000001c4p+0, false, false, + 0x1.00000100000001c6p+0, false, false, + false, + 0x1.00000100000001c5f67cd79279p+0, false, false, + 0x1.00000100000001c5f67cd792798p+0, false, false, + 0x1.00000100000001c5f67cd79279p+0, false, false, + 0x1.00000100000001c5f67cd792798p+0, false, false, + false, + 0x1.00000100000001c5f67cd7927953p+0, false, false, + 0x1.00000100000001c5f67cd7927954p+0, false, false, + 0x1.00000100000001c5f67cd7927953p+0, false, false, + 0x1.00000100000001c5f67cd7927954p+0, false, false), TEST ("1.000000059604645", false, - 0x1p+0, false, - 0x1.000002p+0, false, - 0x1p+0, false, - 0x1.000002p+0, false, - false, - 0x1.0000010000001p+0, false, - 0x1.0000010000001p+0, false, - 0x1.0000010000001p+0, false, - 0x1.0000010000002p+0, false, - false, - 0x1.000001000000102ep+0, false, - 0x1.000001000000103p+0, false, - 0x1.000001000000102ep+0, false, - 0x1.000001000000103p+0, false, - false, - 0x1.000001000000102ep+0, false, - 0x1.000001000000103p+0, false, - 0x1.000001000000102ep+0, false, - 0x1.000001000000103p+0, false, - false, - 0x1.000001000000102f4fc8c3d757p+0, false, - 0x1.000001000000102f4fc8c3d7578p+0, false, - 0x1.000001000000102f4fc8c3d757p+0, false, - 0x1.000001000000102f4fc8c3d7578p+0, false, - false, - 0x1.000001000000102f4fc8c3d75769p+0, false, - 0x1.000001000000102f4fc8c3d75769p+0, false, - 0x1.000001000000102f4fc8c3d75769p+0, false, - 0x1.000001000000102f4fc8c3d7576ap+0, false), + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + false, + 0x1.0000010000001p+0, false, false, + 0x1.0000010000001p+0, false, false, + 0x1.0000010000001p+0, false, false, + 0x1.0000010000002p+0, false, false, + false, + 0x1.000001000000102ep+0, false, false, + 0x1.000001000000103p+0, false, false, + 0x1.000001000000102ep+0, false, false, + 0x1.000001000000103p+0, false, false, + false, + 0x1.000001000000102ep+0, false, false, + 0x1.000001000000103p+0, false, false, + 0x1.000001000000102ep+0, false, false, + 0x1.000001000000103p+0, false, false, + false, + 0x1.000001000000102f4fc8c3d757p+0, false, false, + 0x1.000001000000102f4fc8c3d7578p+0, false, false, + 0x1.000001000000102f4fc8c3d757p+0, false, false, + 0x1.000001000000102f4fc8c3d7578p+0, false, false, + false, + 0x1.000001000000102f4fc8c3d75769p+0, false, false, + 0x1.000001000000102f4fc8c3d75769p+0, false, false, + 0x1.000001000000102f4fc8c3d75769p+0, false, false, + 0x1.000001000000102f4fc8c3d7576ap+0, false, false), TEST ("1.00000005960464", false, - 0x1p+0, false, - 0x1p+0, false, - 0x1p+0, false, - 0x1.000002p+0, false, - false, - 0x1.000000fffffeap+0, false, - 0x1.000000fffffeap+0, false, - 0x1.000000fffffeap+0, false, - 0x1.000000fffffebp+0, false, - false, - 0x1.000000fffffea7e4p+0, false, - 0x1.000000fffffea7e6p+0, false, - 0x1.000000fffffea7e4p+0, false, - 0x1.000000fffffea7e6p+0, false, - false, - 0x1.000000fffffea7e4p+0, false, - 0x1.000000fffffea7e6p+0, false, - 0x1.000000fffffea7e4p+0, false, - 0x1.000000fffffea7e6p+0, false, - false, - 0x1.000000fffffea7e5975eb11da7p+0, false, - 0x1.000000fffffea7e5975eb11da78p+0, false, - 0x1.000000fffffea7e5975eb11da7p+0, false, - 0x1.000000fffffea7e5975eb11da78p+0, false, - false, - 0x1.000000fffffea7e5975eb11da74ap+0, false, - 0x1.000000fffffea7e5975eb11da74bp+0, false, - 0x1.000000fffffea7e5975eb11da74ap+0, false, - 0x1.000000fffffea7e5975eb11da74bp+0, false), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + false, + 0x1.000000fffffeap+0, false, false, + 0x1.000000fffffeap+0, false, false, + 0x1.000000fffffeap+0, false, false, + 0x1.000000fffffebp+0, false, false, + false, + 0x1.000000fffffea7e4p+0, false, false, + 0x1.000000fffffea7e6p+0, false, false, + 0x1.000000fffffea7e4p+0, false, false, + 0x1.000000fffffea7e6p+0, false, false, + false, + 0x1.000000fffffea7e4p+0, false, false, + 0x1.000000fffffea7e6p+0, false, false, + 0x1.000000fffffea7e4p+0, false, false, + 0x1.000000fffffea7e6p+0, false, false, + false, + 0x1.000000fffffea7e5975eb11da7p+0, false, false, + 0x1.000000fffffea7e5975eb11da78p+0, false, false, + 0x1.000000fffffea7e5975eb11da7p+0, false, false, + 0x1.000000fffffea7e5975eb11da78p+0, false, false, + false, + 0x1.000000fffffea7e5975eb11da74ap+0, false, false, + 0x1.000000fffffea7e5975eb11da74bp+0, false, false, + 0x1.000000fffffea7e5975eb11da74ap+0, false, false, + 0x1.000000fffffea7e5975eb11da74bp+0, false, false), TEST ("1.0000000596046", false, - 0x1p+0, false, - 0x1p+0, false, - 0x1p+0, false, - 0x1.000002p+0, false, - false, - 0x1.000000fffff36p+0, false, - 0x1.000000fffff36p+0, false, - 0x1.000000fffff36p+0, false, - 0x1.000000fffff37p+0, false, - false, - 0x1.000000fffff36596p+0, false, - 0x1.000000fffff36598p+0, false, - 0x1.000000fffff36596p+0, false, - 0x1.000000fffff36598p+0, false, - false, - 0x1.000000fffff36596p+0, false, - 0x1.000000fffff36598p+0, false, - 0x1.000000fffff36596p+0, false, - 0x1.000000fffff36598p+0, false, - false, - 0x1.000000fffff36597d40e1b5026p+0, false, - 0x1.000000fffff36597d40e1b50268p+0, false, - 0x1.000000fffff36597d40e1b5026p+0, false, - 0x1.000000fffff36597d40e1b50268p+0, false, - false, - 0x1.000000fffff36597d40e1b502655p+0, false, - 0x1.000000fffff36597d40e1b502656p+0, false, - 0x1.000000fffff36597d40e1b502655p+0, false, - 0x1.000000fffff36597d40e1b502656p+0, false), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + false, + 0x1.000000fffff36p+0, false, false, + 0x1.000000fffff36p+0, false, false, + 0x1.000000fffff36p+0, false, false, + 0x1.000000fffff37p+0, false, false, + false, + 0x1.000000fffff36596p+0, false, false, + 0x1.000000fffff36598p+0, false, false, + 0x1.000000fffff36596p+0, false, false, + 0x1.000000fffff36598p+0, false, false, + false, + 0x1.000000fffff36596p+0, false, false, + 0x1.000000fffff36598p+0, false, false, + 0x1.000000fffff36596p+0, false, false, + 0x1.000000fffff36598p+0, false, false, + false, + 0x1.000000fffff36597d40e1b5026p+0, false, false, + 0x1.000000fffff36597d40e1b50268p+0, false, false, + 0x1.000000fffff36597d40e1b5026p+0, false, false, + 0x1.000000fffff36597d40e1b50268p+0, false, false, + false, + 0x1.000000fffff36597d40e1b502655p+0, false, false, + 0x1.000000fffff36597d40e1b502656p+0, false, false, + 0x1.000000fffff36597d40e1b502655p+0, false, false, + 0x1.000000fffff36597d40e1b502656p+0, false, false), TEST ("1.000000059605", false, - 0x1p+0, false, - 0x1.000002p+0, false, - 0x1p+0, false, - 0x1.000002p+0, false, - false, - 0x1.000001000063fp+0, false, - 0x1.000001000064p+0, false, - 0x1.000001000063fp+0, false, - 0x1.000001000064p+0, false, - false, - 0x1.000001000063fcap+0, false, - 0x1.000001000063fca2p+0, false, - 0x1.000001000063fcap+0, false, - 0x1.000001000063fca2p+0, false, - false, - 0x1.000001000063fcap+0, false, - 0x1.000001000063fca2p+0, false, - 0x1.000001000063fcap+0, false, - 0x1.000001000063fca2p+0, false, - false, - 0x1.000001000063fca17533f5572f8p+0, false, - 0x1.000001000063fca17533f5573p+0, false, - 0x1.000001000063fca17533f5572f8p+0, false, - 0x1.000001000063fca17533f5573p+0, false, - false, - 0x1.000001000063fca17533f5572fe9p+0, false, - 0x1.000001000063fca17533f5572feap+0, false, - 0x1.000001000063fca17533f5572fe9p+0, false, - 0x1.000001000063fca17533f5572feap+0, false), + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + false, + 0x1.000001000063fp+0, false, false, + 0x1.000001000064p+0, false, false, + 0x1.000001000063fp+0, false, false, + 0x1.000001000064p+0, false, false, + false, + 0x1.000001000063fcap+0, false, false, + 0x1.000001000063fca2p+0, false, false, + 0x1.000001000063fcap+0, false, false, + 0x1.000001000063fca2p+0, false, false, + false, + 0x1.000001000063fcap+0, false, false, + 0x1.000001000063fca2p+0, false, false, + 0x1.000001000063fcap+0, false, false, + 0x1.000001000063fca2p+0, false, false, + false, + 0x1.000001000063fca17533f5572f8p+0, false, false, + 0x1.000001000063fca17533f5573p+0, false, false, + 0x1.000001000063fca17533f5572f8p+0, false, false, + 0x1.000001000063fca17533f5573p+0, false, false, + false, + 0x1.000001000063fca17533f5572fe9p+0, false, false, + 0x1.000001000063fca17533f5572feap+0, false, false, + 0x1.000001000063fca17533f5572fe9p+0, false, false, + 0x1.000001000063fca17533f5572feap+0, false, false), TEST ("1.00000005960", false, - 0x1p+0, false, - 0x1p+0, false, - 0x1p+0, false, - 0x1.000002p+0, false, - false, - 0x1.000000fffae49p+0, false, - 0x1.000000fffae4ap+0, false, - 0x1.000000fffae49p+0, false, - 0x1.000000fffae4ap+0, false, - false, - 0x1.000000fffae49ca8p+0, false, - 0x1.000000fffae49caap+0, false, - 0x1.000000fffae49ca8p+0, false, - 0x1.000000fffae49caap+0, false, - false, - 0x1.000000fffae49ca8p+0, false, - 0x1.000000fffae49caap+0, false, - 0x1.000000fffae49ca8p+0, false, - 0x1.000000fffae49caap+0, false, - false, - 0x1.000000fffae49ca916dacfff38p+0, false, - 0x1.000000fffae49ca916dacfff38p+0, false, - 0x1.000000fffae49ca916dacfff38p+0, false, - 0x1.000000fffae49ca916dacfff388p+0, false, - false, - 0x1.000000fffae49ca916dacfff382dp+0, false, - 0x1.000000fffae49ca916dacfff382dp+0, false, - 0x1.000000fffae49ca916dacfff382dp+0, false, - 0x1.000000fffae49ca916dacfff382ep+0, false), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + false, + 0x1.000000fffae49p+0, false, false, + 0x1.000000fffae4ap+0, false, false, + 0x1.000000fffae49p+0, false, false, + 0x1.000000fffae4ap+0, false, false, + false, + 0x1.000000fffae49ca8p+0, false, false, + 0x1.000000fffae49caap+0, false, false, + 0x1.000000fffae49ca8p+0, false, false, + 0x1.000000fffae49caap+0, false, false, + false, + 0x1.000000fffae49ca8p+0, false, false, + 0x1.000000fffae49caap+0, false, false, + 0x1.000000fffae49ca8p+0, false, false, + 0x1.000000fffae49caap+0, false, false, + false, + 0x1.000000fffae49ca916dacfff38p+0, false, false, + 0x1.000000fffae49ca916dacfff38p+0, false, false, + 0x1.000000fffae49ca916dacfff38p+0, false, false, + 0x1.000000fffae49ca916dacfff388p+0, false, false, + false, + 0x1.000000fffae49ca916dacfff382dp+0, false, false, + 0x1.000000fffae49ca916dacfff382dp+0, false, false, + 0x1.000000fffae49ca916dacfff382dp+0, false, false, + 0x1.000000fffae49ca916dacfff382ep+0, false, false), TEST ("1.0000000596", false, - 0x1p+0, false, - 0x1p+0, false, - 0x1p+0, false, - 0x1.000002p+0, false, - false, - 0x1.000000fffae49p+0, false, - 0x1.000000fffae4ap+0, false, - 0x1.000000fffae49p+0, false, - 0x1.000000fffae4ap+0, false, - false, - 0x1.000000fffae49ca8p+0, false, - 0x1.000000fffae49caap+0, false, - 0x1.000000fffae49ca8p+0, false, - 0x1.000000fffae49caap+0, false, - false, - 0x1.000000fffae49ca8p+0, false, - 0x1.000000fffae49caap+0, false, - 0x1.000000fffae49ca8p+0, false, - 0x1.000000fffae49caap+0, false, - false, - 0x1.000000fffae49ca916dacfff38p+0, false, - 0x1.000000fffae49ca916dacfff38p+0, false, - 0x1.000000fffae49ca916dacfff38p+0, false, - 0x1.000000fffae49ca916dacfff388p+0, false, - false, - 0x1.000000fffae49ca916dacfff382dp+0, false, - 0x1.000000fffae49ca916dacfff382dp+0, false, - 0x1.000000fffae49ca916dacfff382dp+0, false, - 0x1.000000fffae49ca916dacfff382ep+0, false), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + false, + 0x1.000000fffae49p+0, false, false, + 0x1.000000fffae4ap+0, false, false, + 0x1.000000fffae49p+0, false, false, + 0x1.000000fffae4ap+0, false, false, + false, + 0x1.000000fffae49ca8p+0, false, false, + 0x1.000000fffae49caap+0, false, false, + 0x1.000000fffae49ca8p+0, false, false, + 0x1.000000fffae49caap+0, false, false, + false, + 0x1.000000fffae49ca8p+0, false, false, + 0x1.000000fffae49caap+0, false, false, + 0x1.000000fffae49ca8p+0, false, false, + 0x1.000000fffae49caap+0, false, false, + false, + 0x1.000000fffae49ca916dacfff38p+0, false, false, + 0x1.000000fffae49ca916dacfff38p+0, false, false, + 0x1.000000fffae49ca916dacfff38p+0, false, false, + 0x1.000000fffae49ca916dacfff388p+0, false, false, + false, + 0x1.000000fffae49ca916dacfff382dp+0, false, false, + 0x1.000000fffae49ca916dacfff382dp+0, false, false, + 0x1.000000fffae49ca916dacfff382dp+0, false, false, + 0x1.000000fffae49ca916dacfff382ep+0, false, false), TEST ("1.000000060", false, - 0x1p+0, false, - 0x1.000002p+0, false, - 0x1p+0, false, - 0x1.000002p+0, false, - false, - 0x1.00000101b2b29p+0, false, - 0x1.00000101b2b2ap+0, false, - 0x1.00000101b2b29p+0, false, - 0x1.00000101b2b2ap+0, false, - false, - 0x1.00000101b2b29a46p+0, false, - 0x1.00000101b2b29a46p+0, false, - 0x1.00000101b2b29a46p+0, false, - 0x1.00000101b2b29a48p+0, false, - false, - 0x1.00000101b2b29a46p+0, false, - 0x1.00000101b2b29a46p+0, false, - 0x1.00000101b2b29a46p+0, false, - 0x1.00000101b2b29a48p+0, false, - false, - 0x1.00000101b2b29a4692b67b7ca3p+0, false, - 0x1.00000101b2b29a4692b67b7ca3p+0, false, - 0x1.00000101b2b29a4692b67b7ca3p+0, false, - 0x1.00000101b2b29a4692b67b7ca38p+0, false, - false, - 0x1.00000101b2b29a4692b67b7ca313p+0, false, - 0x1.00000101b2b29a4692b67b7ca314p+0, false, - 0x1.00000101b2b29a4692b67b7ca313p+0, false, - 0x1.00000101b2b29a4692b67b7ca314p+0, false), + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + false, + 0x1.00000101b2b29p+0, false, false, + 0x1.00000101b2b2ap+0, false, false, + 0x1.00000101b2b29p+0, false, false, + 0x1.00000101b2b2ap+0, false, false, + false, + 0x1.00000101b2b29a46p+0, false, false, + 0x1.00000101b2b29a46p+0, false, false, + 0x1.00000101b2b29a46p+0, false, false, + 0x1.00000101b2b29a48p+0, false, false, + false, + 0x1.00000101b2b29a46p+0, false, false, + 0x1.00000101b2b29a46p+0, false, false, + 0x1.00000101b2b29a46p+0, false, false, + 0x1.00000101b2b29a48p+0, false, false, + false, + 0x1.00000101b2b29a4692b67b7ca3p+0, false, false, + 0x1.00000101b2b29a4692b67b7ca3p+0, false, false, + 0x1.00000101b2b29a4692b67b7ca3p+0, false, false, + 0x1.00000101b2b29a4692b67b7ca38p+0, false, false, + false, + 0x1.00000101b2b29a4692b67b7ca313p+0, false, false, + 0x1.00000101b2b29a4692b67b7ca314p+0, false, false, + 0x1.00000101b2b29a4692b67b7ca313p+0, false, false, + 0x1.00000101b2b29a4692b67b7ca314p+0, false, false), TEST ("1.00000006", false, - 0x1p+0, false, - 0x1.000002p+0, false, - 0x1p+0, false, - 0x1.000002p+0, false, - false, - 0x1.00000101b2b29p+0, false, - 0x1.00000101b2b2ap+0, false, - 0x1.00000101b2b29p+0, false, - 0x1.00000101b2b2ap+0, false, - false, - 0x1.00000101b2b29a46p+0, false, - 0x1.00000101b2b29a46p+0, false, - 0x1.00000101b2b29a46p+0, false, - 0x1.00000101b2b29a48p+0, false, - false, - 0x1.00000101b2b29a46p+0, false, - 0x1.00000101b2b29a46p+0, false, - 0x1.00000101b2b29a46p+0, false, - 0x1.00000101b2b29a48p+0, false, - false, - 0x1.00000101b2b29a4692b67b7ca3p+0, false, - 0x1.00000101b2b29a4692b67b7ca3p+0, false, - 0x1.00000101b2b29a4692b67b7ca3p+0, false, - 0x1.00000101b2b29a4692b67b7ca38p+0, false, - false, - 0x1.00000101b2b29a4692b67b7ca313p+0, false, - 0x1.00000101b2b29a4692b67b7ca314p+0, false, - 0x1.00000101b2b29a4692b67b7ca313p+0, false, - 0x1.00000101b2b29a4692b67b7ca314p+0, false), + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + false, + 0x1.00000101b2b29p+0, false, false, + 0x1.00000101b2b2ap+0, false, false, + 0x1.00000101b2b29p+0, false, false, + 0x1.00000101b2b2ap+0, false, false, + false, + 0x1.00000101b2b29a46p+0, false, false, + 0x1.00000101b2b29a46p+0, false, false, + 0x1.00000101b2b29a46p+0, false, false, + 0x1.00000101b2b29a48p+0, false, false, + false, + 0x1.00000101b2b29a46p+0, false, false, + 0x1.00000101b2b29a46p+0, false, false, + 0x1.00000101b2b29a46p+0, false, false, + 0x1.00000101b2b29a48p+0, false, false, + false, + 0x1.00000101b2b29a4692b67b7ca3p+0, false, false, + 0x1.00000101b2b29a4692b67b7ca3p+0, false, false, + 0x1.00000101b2b29a4692b67b7ca3p+0, false, false, + 0x1.00000101b2b29a4692b67b7ca38p+0, false, false, + false, + 0x1.00000101b2b29a4692b67b7ca313p+0, false, false, + 0x1.00000101b2b29a4692b67b7ca314p+0, false, false, + 0x1.00000101b2b29a4692b67b7ca313p+0, false, false, + 0x1.00000101b2b29a4692b67b7ca314p+0, false, false), TEST ("1.0000001", false, - 0x1p+0, false, - 0x1.000002p+0, false, - 0x1p+0, false, - 0x1.000002p+0, false, - false, - 0x1.000001ad7f29ap+0, false, - 0x1.000001ad7f29bp+0, false, - 0x1.000001ad7f29ap+0, false, - 0x1.000001ad7f29bp+0, false, - false, - 0x1.000001ad7f29abcap+0, false, - 0x1.000001ad7f29abcap+0, false, - 0x1.000001ad7f29abcap+0, false, - 0x1.000001ad7f29abccp+0, false, - false, - 0x1.000001ad7f29abcap+0, false, - 0x1.000001ad7f29abcap+0, false, - 0x1.000001ad7f29abcap+0, false, - 0x1.000001ad7f29abccp+0, false, - false, - 0x1.000001ad7f29abcaf485787a65p+0, false, - 0x1.000001ad7f29abcaf485787a65p+0, false, - 0x1.000001ad7f29abcaf485787a65p+0, false, - 0x1.000001ad7f29abcaf485787a658p+0, false, - false, - 0x1.000001ad7f29abcaf485787a652p+0, false, - 0x1.000001ad7f29abcaf485787a6521p+0, false, - 0x1.000001ad7f29abcaf485787a652p+0, false, - 0x1.000001ad7f29abcaf485787a6521p+0, false), + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + false, + 0x1.000001ad7f29ap+0, false, false, + 0x1.000001ad7f29bp+0, false, false, + 0x1.000001ad7f29ap+0, false, false, + 0x1.000001ad7f29bp+0, false, false, + false, + 0x1.000001ad7f29abcap+0, false, false, + 0x1.000001ad7f29abcap+0, false, false, + 0x1.000001ad7f29abcap+0, false, false, + 0x1.000001ad7f29abccp+0, false, false, + false, + 0x1.000001ad7f29abcap+0, false, false, + 0x1.000001ad7f29abcap+0, false, false, + 0x1.000001ad7f29abcap+0, false, false, + 0x1.000001ad7f29abccp+0, false, false, + false, + 0x1.000001ad7f29abcaf485787a65p+0, false, false, + 0x1.000001ad7f29abcaf485787a65p+0, false, false, + 0x1.000001ad7f29abcaf485787a65p+0, false, false, + 0x1.000001ad7f29abcaf485787a658p+0, false, false, + false, + 0x1.000001ad7f29abcaf485787a652p+0, false, false, + 0x1.000001ad7f29abcaf485787a6521p+0, false, false, + 0x1.000001ad7f29abcaf485787a652p+0, false, false, + 0x1.000001ad7f29abcaf485787a6521p+0, false, false), TEST ("1.000000", true, - 0x1p+0, false, - 0x1p+0, false, - 0x1p+0, false, - 0x1p+0, false, - true, - 0x1p+0, false, - 0x1p+0, false, - 0x1p+0, false, - 0x1p+0, false, - true, - 0x1p+0, false, - 0x1p+0, false, - 0x1p+0, false, - 0x1p+0, false, - true, - 0x1p+0, false, - 0x1p+0, false, - 0x1p+0, false, - 0x1p+0, false, - true, - 0x1p+0, false, - 0x1p+0, false, - 0x1p+0, false, - 0x1p+0, false, - true, - 0x1p+0, false, - 0x1p+0, false, - 0x1p+0, false, - 0x1p+0, false), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + true, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + true, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + true, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + true, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + true, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false), TEST ("1.00000000000000011113", false, - 0x1p+0, false, - 0x1p+0, false, - 0x1p+0, false, - 0x1.000002p+0, false, - false, - 0x1p+0, false, - 0x1.0000000000001p+0, false, - 0x1p+0, false, - 0x1.0000000000001p+0, false, - false, - 0x1.00000000000008p+0, false, - 0x1.0000000000000802p+0, false, - 0x1.00000000000008p+0, false, - 0x1.0000000000000802p+0, false, - false, - 0x1.00000000000008p+0, false, - 0x1.0000000000000802p+0, false, - 0x1.00000000000008p+0, false, - 0x1.0000000000000802p+0, false, - false, - 0x1.0000000000000801fc96557232p+0, false, - 0x1.0000000000000801fc96557232p+0, false, - 0x1.0000000000000801fc96557232p+0, false, - 0x1.0000000000000801fc965572328p+0, false, - false, - 0x1.0000000000000801fc9655723222p+0, false, - 0x1.0000000000000801fc9655723222p+0, false, - 0x1.0000000000000801fc9655723222p+0, false, - 0x1.0000000000000801fc9655723223p+0, false), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1.0000000000001p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000001p+0, false, false, + false, + 0x1.00000000000008p+0, false, false, + 0x1.0000000000000802p+0, false, false, + 0x1.00000000000008p+0, false, false, + 0x1.0000000000000802p+0, false, false, + false, + 0x1.00000000000008p+0, false, false, + 0x1.0000000000000802p+0, false, false, + 0x1.00000000000008p+0, false, false, + 0x1.0000000000000802p+0, false, false, + false, + 0x1.0000000000000801fc96557232p+0, false, false, + 0x1.0000000000000801fc96557232p+0, false, false, + 0x1.0000000000000801fc96557232p+0, false, false, + 0x1.0000000000000801fc965572328p+0, false, false, + false, + 0x1.0000000000000801fc9655723222p+0, false, false, + 0x1.0000000000000801fc9655723222p+0, false, false, + 0x1.0000000000000801fc9655723222p+0, false, false, + 0x1.0000000000000801fc9655723223p+0, false, false), TEST ("1.00000000000000011103", false, - 0x1p+0, false, - 0x1p+0, false, - 0x1p+0, false, - 0x1.000002p+0, false, - false, - 0x1p+0, false, - 0x1.0000000000001p+0, false, - 0x1p+0, false, - 0x1.0000000000001p+0, false, - false, - 0x1.00000000000008p+0, false, - 0x1.00000000000008p+0, false, - 0x1.00000000000008p+0, false, - 0x1.0000000000000802p+0, false, - false, - 0x1.00000000000008p+0, false, - 0x1.00000000000008p+0, false, - 0x1.00000000000008p+0, false, - 0x1.0000000000000802p+0, false, - false, - 0x1.00000000000008002459c076c48p+0, false, - 0x1.00000000000008002459c076c5p+0, false, - 0x1.00000000000008002459c076c48p+0, false, - 0x1.00000000000008002459c076c5p+0, false, - false, - 0x1.00000000000008002459c076c4f7p+0, false, - 0x1.00000000000008002459c076c4f8p+0, false, - 0x1.00000000000008002459c076c4f7p+0, false, - 0x1.00000000000008002459c076c4f8p+0, false), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1.0000000000001p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000001p+0, false, false, + false, + 0x1.00000000000008p+0, false, false, + 0x1.00000000000008p+0, false, false, + 0x1.00000000000008p+0, false, false, + 0x1.0000000000000802p+0, false, false, + false, + 0x1.00000000000008p+0, false, false, + 0x1.00000000000008p+0, false, false, + 0x1.00000000000008p+0, false, false, + 0x1.0000000000000802p+0, false, false, + false, + 0x1.00000000000008002459c076c48p+0, false, false, + 0x1.00000000000008002459c076c5p+0, false, false, + 0x1.00000000000008002459c076c48p+0, false, false, + 0x1.00000000000008002459c076c5p+0, false, false, + false, + 0x1.00000000000008002459c076c4f7p+0, false, false, + 0x1.00000000000008002459c076c4f8p+0, false, false, + 0x1.00000000000008002459c076c4f7p+0, false, false, + 0x1.00000000000008002459c076c4f8p+0, false, false), TEST ("1.00000000000000011102", 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, - 0x1.00000000000007fep+0, false, - 0x1.00000000000008p+0, false, - 0x1.00000000000007fep+0, false, - 0x1.00000000000008p+0, false, - false, - 0x1.00000000000007fep+0, false, - 0x1.00000000000008p+0, false, - 0x1.00000000000007fep+0, false, - 0x1.00000000000008p+0, false, - false, - 0x1.00000000000007fff5207e5dap+0, false, - 0x1.00000000000007fff5207e5da08p+0, false, - 0x1.00000000000007fff5207e5dap+0, false, - 0x1.00000000000007fff5207e5da08p+0, false, - false, - 0x1.00000000000007fff5207e5da073p+0, false, - 0x1.00000000000007fff5207e5da073p+0, false, - 0x1.00000000000007fff5207e5da073p+0, false, - 0x1.00000000000007fff5207e5da074p+0, false), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000001p+0, false, false, + false, + 0x1.00000000000007fep+0, false, false, + 0x1.00000000000008p+0, false, false, + 0x1.00000000000007fep+0, false, false, + 0x1.00000000000008p+0, false, false, + false, + 0x1.00000000000007fep+0, false, false, + 0x1.00000000000008p+0, false, false, + 0x1.00000000000007fep+0, false, false, + 0x1.00000000000008p+0, false, false, + false, + 0x1.00000000000007fff5207e5dap+0, false, false, + 0x1.00000000000007fff5207e5da08p+0, false, false, + 0x1.00000000000007fff5207e5dap+0, false, false, + 0x1.00000000000007fff5207e5da08p+0, false, false, + false, + 0x1.00000000000007fff5207e5da073p+0, false, false, + 0x1.00000000000007fff5207e5da073p+0, false, false, + 0x1.00000000000007fff5207e5da073p+0, false, false, + 0x1.00000000000007fff5207e5da074p+0, false, false), TEST ("1.00000000000000011101", 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, - 0x1.00000000000007fep+0, false, - 0x1.00000000000008p+0, false, - 0x1.00000000000007fep+0, false, - 0x1.00000000000008p+0, false, - false, - 0x1.00000000000007fep+0, false, - 0x1.00000000000008p+0, false, - 0x1.00000000000007fep+0, false, - 0x1.00000000000008p+0, false, - false, - 0x1.00000000000007ffc5e73c447b8p+0, false, - 0x1.00000000000007ffc5e73c447cp+0, false, - 0x1.00000000000007ffc5e73c447b8p+0, false, - 0x1.00000000000007ffc5e73c447cp+0, false, - false, - 0x1.00000000000007ffc5e73c447befp+0, false, - 0x1.00000000000007ffc5e73c447befp+0, false, - 0x1.00000000000007ffc5e73c447befp+0, false, - 0x1.00000000000007ffc5e73c447bfp+0, false), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000001p+0, false, false, + false, + 0x1.00000000000007fep+0, false, false, + 0x1.00000000000008p+0, false, false, + 0x1.00000000000007fep+0, false, false, + 0x1.00000000000008p+0, false, false, + false, + 0x1.00000000000007fep+0, false, false, + 0x1.00000000000008p+0, false, false, + 0x1.00000000000007fep+0, false, false, + 0x1.00000000000008p+0, false, false, + false, + 0x1.00000000000007ffc5e73c447b8p+0, false, false, + 0x1.00000000000007ffc5e73c447cp+0, false, false, + 0x1.00000000000007ffc5e73c447b8p+0, false, false, + 0x1.00000000000007ffc5e73c447cp+0, false, false, + false, + 0x1.00000000000007ffc5e73c447befp+0, false, false, + 0x1.00000000000007ffc5e73c447befp+0, false, false, + 0x1.00000000000007ffc5e73c447befp+0, false, false, + 0x1.00000000000007ffc5e73c447bfp+0, false, false), TEST ("1.0000000000000001111", false, - 0x1p+0, false, - 0x1p+0, false, - 0x1p+0, false, - 0x1.000002p+0, false, - false, - 0x1p+0, false, - 0x1.0000000000001p+0, false, - 0x1p+0, false, - 0x1.0000000000001p+0, false, - false, - 0x1.00000000000008p+0, false, - 0x1.0000000000000802p+0, false, - 0x1.00000000000008p+0, false, - 0x1.0000000000000802p+0, false, - false, - 0x1.00000000000008p+0, false, - 0x1.0000000000000802p+0, false, - 0x1.00000000000008p+0, false, - 0x1.0000000000000802p+0, false, - false, - 0x1.00000000000008016eea8f26c48p+0, false, - 0x1.00000000000008016eea8f26c48p+0, false, - 0x1.00000000000008016eea8f26c48p+0, false, - 0x1.00000000000008016eea8f26c5p+0, false, - false, - 0x1.00000000000008016eea8f26c495p+0, false, - 0x1.00000000000008016eea8f26c496p+0, false, - 0x1.00000000000008016eea8f26c495p+0, false, - 0x1.00000000000008016eea8f26c496p+0, false), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1.0000000000001p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000001p+0, false, false, + false, + 0x1.00000000000008p+0, false, false, + 0x1.0000000000000802p+0, false, false, + 0x1.00000000000008p+0, false, false, + 0x1.0000000000000802p+0, false, false, + false, + 0x1.00000000000008p+0, false, false, + 0x1.0000000000000802p+0, false, false, + 0x1.00000000000008p+0, false, false, + 0x1.0000000000000802p+0, false, false, + false, + 0x1.00000000000008016eea8f26c48p+0, false, false, + 0x1.00000000000008016eea8f26c48p+0, false, false, + 0x1.00000000000008016eea8f26c48p+0, false, false, + 0x1.00000000000008016eea8f26c5p+0, false, false, + false, + 0x1.00000000000008016eea8f26c495p+0, false, false, + 0x1.00000000000008016eea8f26c496p+0, false, false, + 0x1.00000000000008016eea8f26c495p+0, false, false, + 0x1.00000000000008016eea8f26c496p+0, false, false), TEST ("1.000000000000000111", 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, - 0x1.00000000000007fep+0, false, - 0x1.00000000000008p+0, false, - 0x1.00000000000007fep+0, false, - 0x1.00000000000008p+0, false, - false, - 0x1.00000000000007fep+0, false, - 0x1.00000000000008p+0, false, - 0x1.00000000000007fep+0, false, - 0x1.00000000000008p+0, false, - false, - 0x1.00000000000007ff96adfa2b57p+0, false, - 0x1.00000000000007ff96adfa2b578p+0, false, - 0x1.00000000000007ff96adfa2b57p+0, false, - 0x1.00000000000007ff96adfa2b578p+0, false, - false, - 0x1.00000000000007ff96adfa2b576ap+0, false, - 0x1.00000000000007ff96adfa2b576bp+0, false, - 0x1.00000000000007ff96adfa2b576ap+0, false, - 0x1.00000000000007ff96adfa2b576bp+0, false), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000001p+0, false, false, + false, + 0x1.00000000000007fep+0, false, false, + 0x1.00000000000008p+0, false, false, + 0x1.00000000000007fep+0, false, false, + 0x1.00000000000008p+0, false, false, + false, + 0x1.00000000000007fep+0, false, false, + 0x1.00000000000008p+0, false, false, + 0x1.00000000000007fep+0, false, false, + 0x1.00000000000008p+0, false, false, + false, + 0x1.00000000000007ff96adfa2b57p+0, false, false, + 0x1.00000000000007ff96adfa2b578p+0, false, false, + 0x1.00000000000007ff96adfa2b57p+0, false, false, + 0x1.00000000000007ff96adfa2b578p+0, false, false, + false, + 0x1.00000000000007ff96adfa2b576ap+0, false, false, + 0x1.00000000000007ff96adfa2b576bp+0, false, false, + 0x1.00000000000007ff96adfa2b576ap+0, false, false, + 0x1.00000000000007ff96adfa2b576bp+0, false, false), TEST ("1.00000000000000011", 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, - 0x1.00000000000007ecp+0, false, - 0x1.00000000000007eep+0, false, - 0x1.00000000000007ecp+0, false, - 0x1.00000000000007eep+0, false, - false, - 0x1.00000000000007ecp+0, false, - 0x1.00000000000007eep+0, false, - 0x1.00000000000007ecp+0, false, - 0x1.00000000000007eep+0, false, - false, - 0x1.00000000000007ed24502859138p+0, false, - 0x1.00000000000007ed24502859138p+0, false, - 0x1.00000000000007ed24502859138p+0, false, - 0x1.00000000000007ed2450285914p+0, false, - false, - 0x1.00000000000007ed2450285913bfp+0, false, - 0x1.00000000000007ed2450285913bfp+0, false, - 0x1.00000000000007ed2450285913bfp+0, false, - 0x1.00000000000007ed2450285913cp+0, false), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000001p+0, false, false, + false, + 0x1.00000000000007ecp+0, false, false, + 0x1.00000000000007eep+0, false, false, + 0x1.00000000000007ecp+0, false, false, + 0x1.00000000000007eep+0, false, false, + false, + 0x1.00000000000007ecp+0, false, false, + 0x1.00000000000007eep+0, false, false, + 0x1.00000000000007ecp+0, false, false, + 0x1.00000000000007eep+0, false, false, + false, + 0x1.00000000000007ed24502859138p+0, false, false, + 0x1.00000000000007ed24502859138p+0, false, false, + 0x1.00000000000007ed24502859138p+0, false, false, + 0x1.00000000000007ed2450285914p+0, false, false, + false, + 0x1.00000000000007ed2450285913bfp+0, false, false, + 0x1.00000000000007ed2450285913bfp+0, false, false, + 0x1.00000000000007ed2450285913bfp+0, false, false, + 0x1.00000000000007ed2450285913cp+0, false, false), TEST ("1.0000000000000001", 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, - 0x1.0000000000000734p+0, false, - 0x1.0000000000000734p+0, false, - 0x1.0000000000000734p+0, false, - 0x1.0000000000000736p+0, false, - false, - 0x1.0000000000000734p+0, false, - 0x1.0000000000000734p+0, false, - 0x1.0000000000000734p+0, false, - 0x1.0000000000000736p+0, false, - false, - 0x1.0000000000000734aca5f6226fp+0, false, - 0x1.0000000000000734aca5f6226fp+0, false, - 0x1.0000000000000734aca5f6226fp+0, false, - 0x1.0000000000000734aca5f6226f8p+0, false, - false, - 0x1.0000000000000734aca5f6226f0ap+0, false, - 0x1.0000000000000734aca5f6226f0bp+0, false, - 0x1.0000000000000734aca5f6226f0ap+0, false, - 0x1.0000000000000734aca5f6226f0bp+0, false), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000001p+0, false, false, + false, + 0x1.0000000000000734p+0, false, false, + 0x1.0000000000000734p+0, false, false, + 0x1.0000000000000734p+0, false, false, + 0x1.0000000000000736p+0, false, false, + false, + 0x1.0000000000000734p+0, false, false, + 0x1.0000000000000734p+0, false, false, + 0x1.0000000000000734p+0, false, false, + 0x1.0000000000000736p+0, false, false, + false, + 0x1.0000000000000734aca5f6226fp+0, false, false, + 0x1.0000000000000734aca5f6226fp+0, false, false, + 0x1.0000000000000734aca5f6226fp+0, false, false, + 0x1.0000000000000734aca5f6226f8p+0, false, false, + false, + 0x1.0000000000000734aca5f6226f0ap+0, false, false, + 0x1.0000000000000734aca5f6226f0bp+0, false, false, + 0x1.0000000000000734aca5f6226f0ap+0, false, false, + 0x1.0000000000000734aca5f6226f0bp+0, false, false), TEST ("3929201589819414e-25", false, - 0x1.b0053p-32, false, - 0x1.b00532p-32, false, - 0x1.b0053p-32, false, - 0x1.b00532p-32, false, - false, - 0x1.b005314e2421ep-32, false, - 0x1.b005314e2421ep-32, false, - 0x1.b005314e2421ep-32, false, - 0x1.b005314e2421fp-32, false, - false, - 0x1.b005314e2421e7fep-32, false, - 0x1.b005314e2421e8p-32, false, - 0x1.b005314e2421e7fep-32, false, - 0x1.b005314e2421e8p-32, false, - false, - 0x1.b005314e2421e7fep-32, false, - 0x1.b005314e2421e8p-32, false, - 0x1.b005314e2421e7fep-32, false, - 0x1.b005314e2421e8p-32, false, - false, - 0x1.b005314e2421e7ffb472840c5ap-32, false, - 0x1.b005314e2421e7ffb472840c5a8p-32, false, - 0x1.b005314e2421e7ffb472840c5ap-32, false, - 0x1.b005314e2421e7ffb472840c5a8p-32, false, - false, - 0x1.b005314e2421e7ffb472840c5a6ep-32, false, - 0x1.b005314e2421e7ffb472840c5a6fp-32, false, - 0x1.b005314e2421e7ffb472840c5a6ep-32, false, - 0x1.b005314e2421e7ffb472840c5a6fp-32, false), + 0x1.b0053p-32, false, false, + 0x1.b00532p-32, false, false, + 0x1.b0053p-32, false, false, + 0x1.b00532p-32, false, false, + false, + 0x1.b005314e2421ep-32, false, false, + 0x1.b005314e2421ep-32, false, false, + 0x1.b005314e2421ep-32, false, false, + 0x1.b005314e2421fp-32, false, false, + false, + 0x1.b005314e2421e7fep-32, false, false, + 0x1.b005314e2421e8p-32, false, false, + 0x1.b005314e2421e7fep-32, false, false, + 0x1.b005314e2421e8p-32, false, false, + false, + 0x1.b005314e2421e7fep-32, false, false, + 0x1.b005314e2421e8p-32, false, false, + 0x1.b005314e2421e7fep-32, false, false, + 0x1.b005314e2421e8p-32, false, false, + false, + 0x1.b005314e2421e7ffb472840c5ap-32, false, false, + 0x1.b005314e2421e7ffb472840c5a8p-32, false, false, + 0x1.b005314e2421e7ffb472840c5ap-32, false, false, + 0x1.b005314e2421e7ffb472840c5a8p-32, false, false, + false, + 0x1.b005314e2421e7ffb472840c5a6ep-32, false, false, + 0x1.b005314e2421e7ffb472840c5a6fp-32, false, false, + 0x1.b005314e2421e7ffb472840c5a6ep-32, false, false, + 0x1.b005314e2421e7ffb472840c5a6fp-32, false, false), TEST ("0.0000000000000000000000000000000000000000000021019476964872" "256063855943749348741969203929128147736576356024258346866240" "28790902229957282543182373046875", false, - 0x8p-152, false, - 0x1p-148, false, - 0x8p-152, false, - 0x1p-148, false, - true, - 0xcp-152, false, - 0xcp-152, false, - 0xcp-152, false, - 0xcp-152, false, - true, - 0xcp-152, false, - 0xcp-152, false, - 0xcp-152, false, - 0xcp-152, false, - true, - 0xcp-152, false, - 0xcp-152, false, - 0xcp-152, false, - 0xcp-152, false, - true, - 0xcp-152, false, - 0xcp-152, false, - 0xcp-152, false, - 0xcp-152, false, - true, - 0xcp-152, false, - 0xcp-152, false, - 0xcp-152, false, - 0xcp-152, false), + 0x8p-152, false, true, + 0x1p-148, false, true, + 0x8p-152, false, true, + 0x1p-148, false, true, + true, + 0xcp-152, false, false, + 0xcp-152, false, false, + 0xcp-152, false, false, + 0xcp-152, false, false, + true, + 0xcp-152, false, false, + 0xcp-152, false, false, + 0xcp-152, false, false, + 0xcp-152, false, false, + true, + 0xcp-152, false, false, + 0xcp-152, false, false, + 0xcp-152, false, false, + 0xcp-152, false, false, + true, + 0xcp-152, false, false, + 0xcp-152, false, false, + 0xcp-152, false, false, + 0xcp-152, false, false, + true, + 0xcp-152, false, false, + 0xcp-152, false, false, + 0xcp-152, false, false, + 0xcp-152, false, false), TEST ("1.00000005960464477539062499", false, - 0x1p+0, false, - 0x1p+0, false, - 0x1p+0, false, - 0x1.000002p+0, false, - false, - 0x1.000000fffffffp+0, false, - 0x1.000001p+0, false, - 0x1.000000fffffffp+0, false, - 0x1.000001p+0, false, - false, - 0x1.000000fffffffffep+0, false, - 0x1.000001p+0, false, - 0x1.000000fffffffffep+0, false, - 0x1.000001p+0, false, - false, - 0x1.000000fffffffffep+0, false, - 0x1.000001p+0, false, - 0x1.000000fffffffffep+0, false, - 0x1.000001p+0, false, - false, - 0x1.000000fffffffffffffffce7b78p+0, false, - 0x1.000000fffffffffffffffce7b8p+0, false, - 0x1.000000fffffffffffffffce7b78p+0, false, - 0x1.000000fffffffffffffffce7b8p+0, false, - false, - 0x1.000000fffffffffffffffce7b7e7p+0, false, - 0x1.000000fffffffffffffffce7b7e7p+0, false, - 0x1.000000fffffffffffffffce7b7e7p+0, false, - 0x1.000000fffffffffffffffce7b7e8p+0, false), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + false, + 0x1.000000fffffffp+0, false, false, + 0x1.000001p+0, false, false, + 0x1.000000fffffffp+0, false, false, + 0x1.000001p+0, false, false, + false, + 0x1.000000fffffffffep+0, false, false, + 0x1.000001p+0, false, false, + 0x1.000000fffffffffep+0, false, false, + 0x1.000001p+0, false, false, + false, + 0x1.000000fffffffffep+0, false, false, + 0x1.000001p+0, false, false, + 0x1.000000fffffffffep+0, false, false, + 0x1.000001p+0, false, false, + false, + 0x1.000000fffffffffffffffce7b78p+0, false, false, + 0x1.000000fffffffffffffffce7b8p+0, false, false, + 0x1.000000fffffffffffffffce7b78p+0, false, false, + 0x1.000000fffffffffffffffce7b8p+0, false, false, + false, + 0x1.000000fffffffffffffffce7b7e7p+0, false, false, + 0x1.000000fffffffffffffffce7b7e7p+0, false, false, + 0x1.000000fffffffffffffffce7b7e7p+0, false, false, + 0x1.000000fffffffffffffffce7b7e8p+0, false, false), TEST ("1.000000059604644775390625", false, - 0x1p+0, false, - 0x1p+0, false, - 0x1p+0, false, - 0x1.000002p+0, false, - true, - 0x1.000001p+0, false, - 0x1.000001p+0, false, - 0x1.000001p+0, false, - 0x1.000001p+0, false, - true, - 0x1.000001p+0, false, - 0x1.000001p+0, false, - 0x1.000001p+0, false, - 0x1.000001p+0, false, - true, - 0x1.000001p+0, false, - 0x1.000001p+0, false, - 0x1.000001p+0, false, - 0x1.000001p+0, false, - true, - 0x1.000001p+0, false, - 0x1.000001p+0, false, - 0x1.000001p+0, false, - 0x1.000001p+0, false, - true, - 0x1.000001p+0, false, - 0x1.000001p+0, false, - 0x1.000001p+0, false, - 0x1.000001p+0, false), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + true, + 0x1.000001p+0, false, false, + 0x1.000001p+0, false, false, + 0x1.000001p+0, false, false, + 0x1.000001p+0, false, false, + true, + 0x1.000001p+0, false, false, + 0x1.000001p+0, false, false, + 0x1.000001p+0, false, false, + 0x1.000001p+0, false, false, + true, + 0x1.000001p+0, false, false, + 0x1.000001p+0, false, false, + 0x1.000001p+0, false, false, + 0x1.000001p+0, false, false, + true, + 0x1.000001p+0, false, false, + 0x1.000001p+0, false, false, + 0x1.000001p+0, false, false, + 0x1.000001p+0, false, false, + true, + 0x1.000001p+0, false, false, + 0x1.000001p+0, false, false, + 0x1.000001p+0, false, false, + 0x1.000001p+0, false, false), TEST ("1.00000005960464477539062501", false, - 0x1p+0, false, - 0x1.000002p+0, false, - 0x1p+0, false, - 0x1.000002p+0, false, - false, - 0x1.000001p+0, false, - 0x1.000001p+0, false, - 0x1.000001p+0, false, - 0x1.0000010000001p+0, false, - false, - 0x1.000001p+0, false, - 0x1.000001p+0, false, - 0x1.000001p+0, false, - 0x1.0000010000000002p+0, false, - false, - 0x1.000001p+0, false, - 0x1.000001p+0, false, - 0x1.000001p+0, false, - 0x1.0000010000000002p+0, false, - false, - 0x1.00000100000000000000031848p+0, false, - 0x1.00000100000000000000031848p+0, false, - 0x1.00000100000000000000031848p+0, false, - 0x1.000001000000000000000318488p+0, false, - false, - 0x1.0000010000000000000003184818p+0, false, - 0x1.0000010000000000000003184819p+0, false, - 0x1.0000010000000000000003184818p+0, false, - 0x1.0000010000000000000003184819p+0, false), + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + false, + 0x1.000001p+0, false, false, + 0x1.000001p+0, false, false, + 0x1.000001p+0, false, false, + 0x1.0000010000001p+0, false, false, + false, + 0x1.000001p+0, false, false, + 0x1.000001p+0, false, false, + 0x1.000001p+0, false, false, + 0x1.0000010000000002p+0, false, false, + false, + 0x1.000001p+0, false, false, + 0x1.000001p+0, false, false, + 0x1.000001p+0, false, false, + 0x1.0000010000000002p+0, false, false, + false, + 0x1.00000100000000000000031848p+0, false, false, + 0x1.00000100000000000000031848p+0, false, false, + 0x1.00000100000000000000031848p+0, false, false, + 0x1.000001000000000000000318488p+0, false, false, + false, + 0x1.0000010000000000000003184818p+0, false, false, + 0x1.0000010000000000000003184819p+0, false, false, + 0x1.0000010000000000000003184818p+0, false, false, + 0x1.0000010000000000000003184819p+0, false, false), TEST ("1.00000011920928955078125", true, - 0x1.000002p+0, false, - 0x1.000002p+0, false, - 0x1.000002p+0, false, - 0x1.000002p+0, false, - true, - 0x1.000002p+0, false, - 0x1.000002p+0, false, - 0x1.000002p+0, false, - 0x1.000002p+0, false, - true, - 0x1.000002p+0, false, - 0x1.000002p+0, false, - 0x1.000002p+0, false, - 0x1.000002p+0, false, - true, - 0x1.000002p+0, false, - 0x1.000002p+0, false, - 0x1.000002p+0, false, - 0x1.000002p+0, false, - true, - 0x1.000002p+0, false, - 0x1.000002p+0, false, - 0x1.000002p+0, false, - 0x1.000002p+0, false, - true, - 0x1.000002p+0, false, - 0x1.000002p+0, false, - 0x1.000002p+0, false, - 0x1.000002p+0, false), + 0x1.000002p+0, false, false, + 0x1.000002p+0, false, false, + 0x1.000002p+0, false, false, + 0x1.000002p+0, false, false, + true, + 0x1.000002p+0, false, false, + 0x1.000002p+0, false, false, + 0x1.000002p+0, false, false, + 0x1.000002p+0, false, false, + true, + 0x1.000002p+0, false, false, + 0x1.000002p+0, false, false, + 0x1.000002p+0, false, false, + 0x1.000002p+0, false, false, + true, + 0x1.000002p+0, false, false, + 0x1.000002p+0, false, false, + 0x1.000002p+0, false, false, + 0x1.000002p+0, false, false, + true, + 0x1.000002p+0, false, false, + 0x1.000002p+0, false, false, + 0x1.000002p+0, false, false, + 0x1.000002p+0, false, false, + true, + 0x1.000002p+0, false, false, + 0x1.000002p+0, false, false, + 0x1.000002p+0, false, false, + 0x1.000002p+0, false, false), TEST ("1.00000017881393432617187499", false, - 0x1.000002p+0, false, - 0x1.000002p+0, false, - 0x1.000002p+0, false, - 0x1.000004p+0, false, - false, - 0x1.000002fffffffp+0, false, - 0x1.000003p+0, false, - 0x1.000002fffffffp+0, false, - 0x1.000003p+0, false, - false, - 0x1.000002fffffffffep+0, false, - 0x1.000003p+0, false, - 0x1.000002fffffffffep+0, false, - 0x1.000003p+0, false, - false, - 0x1.000002fffffffffep+0, false, - 0x1.000003p+0, false, - 0x1.000002fffffffffep+0, false, - 0x1.000003p+0, false, - false, - 0x1.000002fffffffffffffffce7b78p+0, false, - 0x1.000002fffffffffffffffce7b8p+0, false, - 0x1.000002fffffffffffffffce7b78p+0, false, - 0x1.000002fffffffffffffffce7b8p+0, false, - false, - 0x1.000002fffffffffffffffce7b7e7p+0, false, - 0x1.000002fffffffffffffffce7b7e7p+0, false, - 0x1.000002fffffffffffffffce7b7e7p+0, false, - 0x1.000002fffffffffffffffce7b7e8p+0, false), + 0x1.000002p+0, false, false, + 0x1.000002p+0, false, false, + 0x1.000002p+0, false, false, + 0x1.000004p+0, false, false, + false, + 0x1.000002fffffffp+0, false, false, + 0x1.000003p+0, false, false, + 0x1.000002fffffffp+0, false, false, + 0x1.000003p+0, false, false, + false, + 0x1.000002fffffffffep+0, false, false, + 0x1.000003p+0, false, false, + 0x1.000002fffffffffep+0, false, false, + 0x1.000003p+0, false, false, + false, + 0x1.000002fffffffffep+0, false, false, + 0x1.000003p+0, false, false, + 0x1.000002fffffffffep+0, false, false, + 0x1.000003p+0, false, false, + false, + 0x1.000002fffffffffffffffce7b78p+0, false, false, + 0x1.000002fffffffffffffffce7b8p+0, false, false, + 0x1.000002fffffffffffffffce7b78p+0, false, false, + 0x1.000002fffffffffffffffce7b8p+0, false, false, + false, + 0x1.000002fffffffffffffffce7b7e7p+0, false, false, + 0x1.000002fffffffffffffffce7b7e7p+0, false, false, + 0x1.000002fffffffffffffffce7b7e7p+0, false, false, + 0x1.000002fffffffffffffffce7b7e8p+0, false, false), TEST ("1.000000178813934326171875", false, - 0x1.000002p+0, false, - 0x1.000004p+0, false, - 0x1.000002p+0, false, - 0x1.000004p+0, false, - true, - 0x1.000003p+0, false, - 0x1.000003p+0, false, - 0x1.000003p+0, false, - 0x1.000003p+0, false, - true, - 0x1.000003p+0, false, - 0x1.000003p+0, false, - 0x1.000003p+0, false, - 0x1.000003p+0, false, - true, - 0x1.000003p+0, false, - 0x1.000003p+0, false, - 0x1.000003p+0, false, - 0x1.000003p+0, false, - true, - 0x1.000003p+0, false, - 0x1.000003p+0, false, - 0x1.000003p+0, false, - 0x1.000003p+0, false, - true, - 0x1.000003p+0, false, - 0x1.000003p+0, false, - 0x1.000003p+0, false, - 0x1.000003p+0, false), + 0x1.000002p+0, false, false, + 0x1.000004p+0, false, false, + 0x1.000002p+0, false, false, + 0x1.000004p+0, false, false, + true, + 0x1.000003p+0, false, false, + 0x1.000003p+0, false, false, + 0x1.000003p+0, false, false, + 0x1.000003p+0, false, false, + true, + 0x1.000003p+0, false, false, + 0x1.000003p+0, false, false, + 0x1.000003p+0, false, false, + 0x1.000003p+0, false, false, + true, + 0x1.000003p+0, false, false, + 0x1.000003p+0, false, false, + 0x1.000003p+0, false, false, + 0x1.000003p+0, false, false, + true, + 0x1.000003p+0, false, false, + 0x1.000003p+0, false, false, + 0x1.000003p+0, false, false, + 0x1.000003p+0, false, false, + true, + 0x1.000003p+0, false, false, + 0x1.000003p+0, false, false, + 0x1.000003p+0, false, false, + 0x1.000003p+0, false, false), TEST ("1.00000017881393432617187501", false, - 0x1.000002p+0, false, - 0x1.000004p+0, false, - 0x1.000002p+0, false, - 0x1.000004p+0, false, - false, - 0x1.000003p+0, false, - 0x1.000003p+0, false, - 0x1.000003p+0, false, - 0x1.0000030000001p+0, false, - false, - 0x1.000003p+0, false, - 0x1.000003p+0, false, - 0x1.000003p+0, false, - 0x1.0000030000000002p+0, false, - false, - 0x1.000003p+0, false, - 0x1.000003p+0, false, - 0x1.000003p+0, false, - 0x1.0000030000000002p+0, false, - false, - 0x1.00000300000000000000031848p+0, false, - 0x1.00000300000000000000031848p+0, false, - 0x1.00000300000000000000031848p+0, false, - 0x1.000003000000000000000318488p+0, false, - false, - 0x1.0000030000000000000003184818p+0, false, - 0x1.0000030000000000000003184819p+0, false, - 0x1.0000030000000000000003184818p+0, false, - 0x1.0000030000000000000003184819p+0, false), + 0x1.000002p+0, false, false, + 0x1.000004p+0, false, false, + 0x1.000002p+0, false, false, + 0x1.000004p+0, false, false, + false, + 0x1.000003p+0, false, false, + 0x1.000003p+0, false, false, + 0x1.000003p+0, false, false, + 0x1.0000030000001p+0, false, false, + false, + 0x1.000003p+0, false, false, + 0x1.000003p+0, false, false, + 0x1.000003p+0, false, false, + 0x1.0000030000000002p+0, false, false, + false, + 0x1.000003p+0, false, false, + 0x1.000003p+0, false, false, + 0x1.000003p+0, false, false, + 0x1.0000030000000002p+0, false, false, + false, + 0x1.00000300000000000000031848p+0, false, false, + 0x1.00000300000000000000031848p+0, false, false, + 0x1.00000300000000000000031848p+0, false, false, + 0x1.000003000000000000000318488p+0, false, false, + false, + 0x1.0000030000000000000003184818p+0, false, false, + 0x1.0000030000000000000003184819p+0, false, false, + 0x1.0000030000000000000003184818p+0, false, false, + 0x1.0000030000000000000003184819p+0, false, false), TEST ("1.0000002384185791015625", true, - 0x1.000004p+0, false, - 0x1.000004p+0, false, - 0x1.000004p+0, false, - 0x1.000004p+0, false, - true, - 0x1.000004p+0, false, - 0x1.000004p+0, false, - 0x1.000004p+0, false, - 0x1.000004p+0, false, - true, - 0x1.000004p+0, false, - 0x1.000004p+0, false, - 0x1.000004p+0, false, - 0x1.000004p+0, false, - true, - 0x1.000004p+0, false, - 0x1.000004p+0, false, - 0x1.000004p+0, false, - 0x1.000004p+0, false, - true, - 0x1.000004p+0, false, - 0x1.000004p+0, false, - 0x1.000004p+0, false, - 0x1.000004p+0, false, - true, - 0x1.000004p+0, false, - 0x1.000004p+0, false, - 0x1.000004p+0, false, - 0x1.000004p+0, false), + 0x1.000004p+0, false, false, + 0x1.000004p+0, false, false, + 0x1.000004p+0, false, false, + 0x1.000004p+0, false, false, + true, + 0x1.000004p+0, false, false, + 0x1.000004p+0, false, false, + 0x1.000004p+0, false, false, + 0x1.000004p+0, false, false, + true, + 0x1.000004p+0, false, false, + 0x1.000004p+0, false, false, + 0x1.000004p+0, false, false, + 0x1.000004p+0, false, false, + true, + 0x1.000004p+0, false, false, + 0x1.000004p+0, false, false, + 0x1.000004p+0, false, false, + 0x1.000004p+0, false, false, + true, + 0x1.000004p+0, false, false, + 0x1.000004p+0, false, false, + 0x1.000004p+0, false, false, + 0x1.000004p+0, false, false, + true, + 0x1.000004p+0, false, false, + 0x1.000004p+0, false, false, + 0x1.000004p+0, false, false, + 0x1.000004p+0, false, false), TEST ("1.08420217248550443400745280086994171142578125e-19", true, - 0x2p-64, false, - 0x2p-64, false, - 0x2p-64, false, - 0x2p-64, false, - true, - 0x2p-64, false, - 0x2p-64, false, - 0x2p-64, false, - 0x2p-64, false, - true, - 0x2p-64, false, - 0x2p-64, false, - 0x2p-64, false, - 0x2p-64, false, - true, - 0x2p-64, false, - 0x2p-64, false, - 0x2p-64, false, - 0x2p-64, false, - true, - 0x2p-64, false, - 0x2p-64, false, - 0x2p-64, false, - 0x2p-64, false, - true, - 0x2p-64, false, - 0x2p-64, false, - 0x2p-64, false, - 0x2p-64, false), + 0x2p-64, false, false, + 0x2p-64, false, false, + 0x2p-64, false, false, + 0x2p-64, false, false, + true, + 0x2p-64, false, false, + 0x2p-64, false, false, + 0x2p-64, false, false, + 0x2p-64, false, false, + true, + 0x2p-64, false, false, + 0x2p-64, false, false, + 0x2p-64, false, false, + 0x2p-64, false, false, + true, + 0x2p-64, false, false, + 0x2p-64, false, false, + 0x2p-64, false, false, + 0x2p-64, false, false, + true, + 0x2p-64, false, false, + 0x2p-64, false, false, + 0x2p-64, false, false, + 0x2p-64, false, false, + true, + 0x2p-64, false, false, + 0x2p-64, false, false, + 0x2p-64, false, false, + 0x2p-64, false, false), TEST ("1.0842022371089897897127399001987457793916291848290711641311" "645507812499e-19", false, - 0x2p-64, false, - 0x2p-64, false, - 0x2p-64, false, - 0x2.000004p-64, false, - false, - 0x2.000001ffffffep-64, false, - 0x2.000002p-64, false, - 0x2.000001ffffffep-64, false, - 0x2.000002p-64, false, - false, - 0x2.000001fffffffffcp-64, false, - 0x2.000002p-64, false, - 0x2.000001fffffffffcp-64, false, - 0x2.000002p-64, false, - false, - 0x2.000001fffffffffcp-64, false, - 0x2.000002p-64, false, - 0x2.000001fffffffffcp-64, false, - 0x2.000002p-64, false, - false, - 0x2.000001ffffffffffffffffffffp-64, false, - 0x2.000002p-64, false, - 0x2.000001ffffffffffffffffffffp-64, false, - 0x2.000002p-64, false, - false, - 0x2.000001fffffffffffffffffffffep-64, false, - 0x2.000002p-64, false, - 0x2.000001fffffffffffffffffffffep-64, false, - 0x2.000002p-64, false), + 0x2p-64, false, false, + 0x2p-64, false, false, + 0x2p-64, false, false, + 0x2.000004p-64, false, false, + false, + 0x2.000001ffffffep-64, false, false, + 0x2.000002p-64, false, false, + 0x2.000001ffffffep-64, false, false, + 0x2.000002p-64, false, false, + false, + 0x2.000001fffffffffcp-64, false, false, + 0x2.000002p-64, false, false, + 0x2.000001fffffffffcp-64, false, false, + 0x2.000002p-64, false, false, + false, + 0x2.000001fffffffffcp-64, false, false, + 0x2.000002p-64, false, false, + 0x2.000001fffffffffcp-64, false, false, + 0x2.000002p-64, false, false, + false, + 0x2.000001ffffffffffffffffffffp-64, false, false, + 0x2.000002p-64, false, false, + 0x2.000001ffffffffffffffffffffp-64, false, false, + 0x2.000002p-64, false, false, + false, + 0x2.000001fffffffffffffffffffffep-64, false, false, + 0x2.000002p-64, false, false, + 0x2.000001fffffffffffffffffffffep-64, false, false, + 0x2.000002p-64, false, false), TEST ("1.0842022371089897897127399001987457793916291848290711641311" "6455078125e-19", false, - 0x2p-64, false, - 0x2p-64, false, - 0x2p-64, false, - 0x2.000004p-64, false, - true, - 0x2.000002p-64, false, - 0x2.000002p-64, false, - 0x2.000002p-64, false, - 0x2.000002p-64, false, - true, - 0x2.000002p-64, false, - 0x2.000002p-64, false, - 0x2.000002p-64, false, - 0x2.000002p-64, false, - true, - 0x2.000002p-64, false, - 0x2.000002p-64, false, - 0x2.000002p-64, false, - 0x2.000002p-64, false, - true, - 0x2.000002p-64, false, - 0x2.000002p-64, false, - 0x2.000002p-64, false, - 0x2.000002p-64, false, - true, - 0x2.000002p-64, false, - 0x2.000002p-64, false, - 0x2.000002p-64, false, - 0x2.000002p-64, false), + 0x2p-64, false, false, + 0x2p-64, false, false, + 0x2p-64, false, false, + 0x2.000004p-64, false, false, + true, + 0x2.000002p-64, false, false, + 0x2.000002p-64, false, false, + 0x2.000002p-64, false, false, + 0x2.000002p-64, false, false, + true, + 0x2.000002p-64, false, false, + 0x2.000002p-64, false, false, + 0x2.000002p-64, false, false, + 0x2.000002p-64, false, false, + true, + 0x2.000002p-64, false, false, + 0x2.000002p-64, false, false, + 0x2.000002p-64, false, false, + 0x2.000002p-64, false, false, + true, + 0x2.000002p-64, false, false, + 0x2.000002p-64, false, false, + 0x2.000002p-64, false, false, + 0x2.000002p-64, false, false, + true, + 0x2.000002p-64, false, false, + 0x2.000002p-64, false, false, + 0x2.000002p-64, false, false, + 0x2.000002p-64, false, false), TEST ("1.0842022371089897897127399001987457793916291848290711641311" "645507812501e-19", false, - 0x2p-64, false, - 0x2.000004p-64, false, - 0x2p-64, false, - 0x2.000004p-64, false, - false, - 0x2.000002p-64, false, - 0x2.000002p-64, false, - 0x2.000002p-64, false, - 0x2.0000020000002p-64, false, - false, - 0x2.000002p-64, false, - 0x2.000002p-64, false, - 0x2.000002p-64, false, - 0x2.0000020000000004p-64, false, - false, - 0x2.000002p-64, false, - 0x2.000002p-64, false, - 0x2.000002p-64, false, - 0x2.0000020000000004p-64, false, - false, - 0x2.000002p-64, false, - 0x2.000002p-64, false, - 0x2.000002p-64, false, - 0x2.00000200000000000000000001p-64, false, - false, - 0x2.000002p-64, false, - 0x2.000002p-64, false, - 0x2.000002p-64, false, - 0x2.0000020000000000000000000002p-64, false), + 0x2p-64, false, false, + 0x2.000004p-64, false, false, + 0x2p-64, false, false, + 0x2.000004p-64, false, false, + false, + 0x2.000002p-64, false, false, + 0x2.000002p-64, false, false, + 0x2.000002p-64, false, false, + 0x2.0000020000002p-64, false, false, + false, + 0x2.000002p-64, false, false, + 0x2.000002p-64, false, false, + 0x2.000002p-64, false, false, + 0x2.0000020000000004p-64, false, false, + false, + 0x2.000002p-64, false, false, + 0x2.000002p-64, false, false, + 0x2.000002p-64, false, false, + 0x2.0000020000000004p-64, false, false, + false, + 0x2.000002p-64, false, false, + 0x2.000002p-64, false, false, + 0x2.000002p-64, false, false, + 0x2.00000200000000000000000001p-64, false, false, + false, + 0x2.000002p-64, false, false, + 0x2.000002p-64, false, false, + 0x2.000002p-64, false, false, + 0x2.0000020000000000000000000002p-64, false, false), TEST ("1.0842023017324751454180269995275498473574771196581423282623" "291015625e-19", true, - 0x2.000004p-64, false, - 0x2.000004p-64, false, - 0x2.000004p-64, false, - 0x2.000004p-64, false, - true, - 0x2.000004p-64, false, - 0x2.000004p-64, false, - 0x2.000004p-64, false, - 0x2.000004p-64, false, - true, - 0x2.000004p-64, false, - 0x2.000004p-64, false, - 0x2.000004p-64, false, - 0x2.000004p-64, false, - true, - 0x2.000004p-64, false, - 0x2.000004p-64, false, - 0x2.000004p-64, false, - 0x2.000004p-64, false, - true, - 0x2.000004p-64, false, - 0x2.000004p-64, false, - 0x2.000004p-64, false, - 0x2.000004p-64, false, - true, - 0x2.000004p-64, false, - 0x2.000004p-64, false, - 0x2.000004p-64, false, - 0x2.000004p-64, false), + 0x2.000004p-64, false, false, + 0x2.000004p-64, false, false, + 0x2.000004p-64, false, false, + 0x2.000004p-64, false, false, + true, + 0x2.000004p-64, false, false, + 0x2.000004p-64, false, false, + 0x2.000004p-64, false, false, + 0x2.000004p-64, false, false, + true, + 0x2.000004p-64, false, false, + 0x2.000004p-64, false, false, + 0x2.000004p-64, false, false, + 0x2.000004p-64, false, false, + true, + 0x2.000004p-64, false, false, + 0x2.000004p-64, false, false, + 0x2.000004p-64, false, false, + 0x2.000004p-64, false, false, + true, + 0x2.000004p-64, false, false, + 0x2.000004p-64, false, false, + 0x2.000004p-64, false, false, + 0x2.000004p-64, false, false, + true, + 0x2.000004p-64, false, false, + 0x2.000004p-64, false, false, + 0x2.000004p-64, false, false, + 0x2.000004p-64, false, false), TEST ("1.0842023663559605011233140988563539153233250544872134923934" "936523437499e-19", false, - 0x2.000004p-64, false, - 0x2.000004p-64, false, - 0x2.000004p-64, false, - 0x2.000008p-64, false, - false, - 0x2.000005ffffffep-64, false, - 0x2.000006p-64, false, - 0x2.000005ffffffep-64, false, - 0x2.000006p-64, false, - false, - 0x2.000005fffffffffcp-64, false, - 0x2.000006p-64, false, - 0x2.000005fffffffffcp-64, false, - 0x2.000006p-64, false, - false, - 0x2.000005fffffffffcp-64, false, - 0x2.000006p-64, false, - 0x2.000005fffffffffcp-64, false, - 0x2.000006p-64, false, - false, - 0x2.000005ffffffffffffffffffffp-64, false, - 0x2.000006p-64, false, - 0x2.000005ffffffffffffffffffffp-64, false, - 0x2.000006p-64, false, - false, - 0x2.000005fffffffffffffffffffffep-64, false, - 0x2.000006p-64, false, - 0x2.000005fffffffffffffffffffffep-64, false, - 0x2.000006p-64, false), + 0x2.000004p-64, false, false, + 0x2.000004p-64, false, false, + 0x2.000004p-64, false, false, + 0x2.000008p-64, false, false, + false, + 0x2.000005ffffffep-64, false, false, + 0x2.000006p-64, false, false, + 0x2.000005ffffffep-64, false, false, + 0x2.000006p-64, false, false, + false, + 0x2.000005fffffffffcp-64, false, false, + 0x2.000006p-64, false, false, + 0x2.000005fffffffffcp-64, false, false, + 0x2.000006p-64, false, false, + false, + 0x2.000005fffffffffcp-64, false, false, + 0x2.000006p-64, false, false, + 0x2.000005fffffffffcp-64, false, false, + 0x2.000006p-64, false, false, + false, + 0x2.000005ffffffffffffffffffffp-64, false, false, + 0x2.000006p-64, false, false, + 0x2.000005ffffffffffffffffffffp-64, false, false, + 0x2.000006p-64, false, false, + false, + 0x2.000005fffffffffffffffffffffep-64, false, false, + 0x2.000006p-64, false, false, + 0x2.000005fffffffffffffffffffffep-64, false, false, + 0x2.000006p-64, false, false), TEST ("1.0842023663559605011233140988563539153233250544872134923934" "9365234375e-19", false, - 0x2.000004p-64, false, - 0x2.000008p-64, false, - 0x2.000004p-64, false, - 0x2.000008p-64, false, - true, - 0x2.000006p-64, false, - 0x2.000006p-64, false, - 0x2.000006p-64, false, - 0x2.000006p-64, false, - true, - 0x2.000006p-64, false, - 0x2.000006p-64, false, - 0x2.000006p-64, false, - 0x2.000006p-64, false, - true, - 0x2.000006p-64, false, - 0x2.000006p-64, false, - 0x2.000006p-64, false, - 0x2.000006p-64, false, - true, - 0x2.000006p-64, false, - 0x2.000006p-64, false, - 0x2.000006p-64, false, - 0x2.000006p-64, false, - true, - 0x2.000006p-64, false, - 0x2.000006p-64, false, - 0x2.000006p-64, false, - 0x2.000006p-64, false), + 0x2.000004p-64, false, false, + 0x2.000008p-64, false, false, + 0x2.000004p-64, false, false, + 0x2.000008p-64, false, false, + true, + 0x2.000006p-64, false, false, + 0x2.000006p-64, false, false, + 0x2.000006p-64, false, false, + 0x2.000006p-64, false, false, + true, + 0x2.000006p-64, false, false, + 0x2.000006p-64, false, false, + 0x2.000006p-64, false, false, + 0x2.000006p-64, false, false, + true, + 0x2.000006p-64, false, false, + 0x2.000006p-64, false, false, + 0x2.000006p-64, false, false, + 0x2.000006p-64, false, false, + true, + 0x2.000006p-64, false, false, + 0x2.000006p-64, false, false, + 0x2.000006p-64, false, false, + 0x2.000006p-64, false, false, + true, + 0x2.000006p-64, false, false, + 0x2.000006p-64, false, false, + 0x2.000006p-64, false, false, + 0x2.000006p-64, false, false), TEST ("1.0842023663559605011233140988563539153233250544872134923934" "936523437501e-19", false, - 0x2.000004p-64, false, - 0x2.000008p-64, false, - 0x2.000004p-64, false, - 0x2.000008p-64, false, - false, - 0x2.000006p-64, false, - 0x2.000006p-64, false, - 0x2.000006p-64, false, - 0x2.0000060000002p-64, false, - false, - 0x2.000006p-64, false, - 0x2.000006p-64, false, - 0x2.000006p-64, false, - 0x2.0000060000000004p-64, false, - false, - 0x2.000006p-64, false, - 0x2.000006p-64, false, - 0x2.000006p-64, false, - 0x2.0000060000000004p-64, false, - false, - 0x2.000006p-64, false, - 0x2.000006p-64, false, - 0x2.000006p-64, false, - 0x2.00000600000000000000000001p-64, false, - false, - 0x2.000006p-64, false, - 0x2.000006p-64, false, - 0x2.000006p-64, false, - 0x2.0000060000000000000000000002p-64, false), + 0x2.000004p-64, false, false, + 0x2.000008p-64, false, false, + 0x2.000004p-64, false, false, + 0x2.000008p-64, false, false, + false, + 0x2.000006p-64, false, false, + 0x2.000006p-64, false, false, + 0x2.000006p-64, false, false, + 0x2.0000060000002p-64, false, false, + false, + 0x2.000006p-64, false, false, + 0x2.000006p-64, false, false, + 0x2.000006p-64, false, false, + 0x2.0000060000000004p-64, false, false, + false, + 0x2.000006p-64, false, false, + 0x2.000006p-64, false, false, + 0x2.000006p-64, false, false, + 0x2.0000060000000004p-64, false, false, + false, + 0x2.000006p-64, false, false, + 0x2.000006p-64, false, false, + 0x2.000006p-64, false, false, + 0x2.00000600000000000000000001p-64, false, false, + false, + 0x2.000006p-64, false, false, + 0x2.000006p-64, false, false, + 0x2.000006p-64, false, false, + 0x2.0000060000000000000000000002p-64, false, false), TEST ("1.0842024309794458568286011981851579832891729893162846565246" "58203125e-19", true, - 0x2.000008p-64, false, - 0x2.000008p-64, false, - 0x2.000008p-64, false, - 0x2.000008p-64, false, - true, - 0x2.000008p-64, false, - 0x2.000008p-64, false, - 0x2.000008p-64, false, - 0x2.000008p-64, false, - true, - 0x2.000008p-64, false, - 0x2.000008p-64, false, - 0x2.000008p-64, false, - 0x2.000008p-64, false, - true, - 0x2.000008p-64, false, - 0x2.000008p-64, false, - 0x2.000008p-64, false, - 0x2.000008p-64, false, - true, - 0x2.000008p-64, false, - 0x2.000008p-64, false, - 0x2.000008p-64, false, - 0x2.000008p-64, false, - true, - 0x2.000008p-64, false, - 0x2.000008p-64, false, - 0x2.000008p-64, false, - 0x2.000008p-64, false), + 0x2.000008p-64, false, false, + 0x2.000008p-64, false, false, + 0x2.000008p-64, false, false, + 0x2.000008p-64, false, false, + true, + 0x2.000008p-64, false, false, + 0x2.000008p-64, false, false, + 0x2.000008p-64, false, false, + 0x2.000008p-64, false, false, + true, + 0x2.000008p-64, false, false, + 0x2.000008p-64, false, false, + 0x2.000008p-64, false, false, + 0x2.000008p-64, false, false, + true, + 0x2.000008p-64, false, false, + 0x2.000008p-64, false, false, + 0x2.000008p-64, false, false, + 0x2.000008p-64, false, false, + true, + 0x2.000008p-64, false, false, + 0x2.000008p-64, false, false, + 0x2.000008p-64, false, false, + 0x2.000008p-64, false, false, + true, + 0x2.000008p-64, false, false, + 0x2.000008p-64, false, false, + 0x2.000008p-64, false, false, + 0x2.000008p-64, false, false), TEST ("7.5231638452626400509999138382223723380394595633413601376560" "1092018187046051025390625e-37", true, - 0x1p-120, false, - 0x1p-120, false, - 0x1p-120, false, - 0x1p-120, false, - true, - 0x1p-120, false, - 0x1p-120, false, - 0x1p-120, false, - 0x1p-120, false, - true, - 0x1p-120, false, - 0x1p-120, false, - 0x1p-120, false, - 0x1p-120, false, - true, - 0x1p-120, false, - 0x1p-120, false, - 0x1p-120, false, - 0x1p-120, false, - true, - 0x1p-120, false, - 0x1p-120, false, - 0x1p-120, false, - 0x1p-120, false, - true, - 0x1p-120, false, - 0x1p-120, false, - 0x1p-120, false, - 0x1p-120, false), + 0x1p-120, false, false, + 0x1p-120, false, false, + 0x1p-120, false, false, + 0x1p-120, false, false, + true, + 0x1p-120, false, false, + 0x1p-120, false, false, + 0x1p-120, false, false, + 0x1p-120, false, false, + true, + 0x1p-120, false, false, + 0x1p-120, false, false, + 0x1p-120, false, false, + 0x1p-120, false, false, + true, + 0x1p-120, false, false, + 0x1p-120, false, false, + 0x1p-120, false, false, + 0x1p-120, false, false, + true, + 0x1p-120, false, false, + 0x1p-120, false, false, + 0x1p-120, false, false, + 0x1p-120, false, false, + true, + 0x1p-120, false, false, + 0x1p-120, false, false, + 0x1p-120, false, false, + 0x1p-120, false, false), TEST ("7.5231642936781486349413765338158389908126215730251815381410" "578824437213052434003657253924757242202758789062499e-37", false, - 0x1p-120, false, - 0x1p-120, false, - 0x1p-120, false, - 0x1.000002p-120, false, - false, - 0x1.000000fffffffp-120, false, - 0x1.000001p-120, false, - 0x1.000000fffffffp-120, false, - 0x1.000001p-120, false, - false, - 0x1.000000fffffffffep-120, false, - 0x1.000001p-120, false, - 0x1.000000fffffffffep-120, false, - 0x1.000001p-120, false, - false, - 0x1.000000fffffffffep-120, false, - 0x1.000001p-120, false, - 0x1.000000fffffffffep-120, false, - 0x1.000001p-120, false, - false, - 0x1.000000ffffffffffffffffffff8p-120, false, - 0x1.000001p-120, false, - 0x1.000000ffffffffffffffffffff8p-120, false, - 0x1.000001p-120, false, - false, - 0x1.000000ffffffffffffffffffffffp-120, false, - 0x1.000001p-120, false, - 0x1.000000ffffffffffffffffffffffp-120, false, - 0x1.000001p-120, false), + 0x1p-120, false, false, + 0x1p-120, false, false, + 0x1p-120, false, false, + 0x1.000002p-120, false, false, + false, + 0x1.000000fffffffp-120, false, false, + 0x1.000001p-120, false, false, + 0x1.000000fffffffp-120, false, false, + 0x1.000001p-120, false, false, + false, + 0x1.000000fffffffffep-120, false, false, + 0x1.000001p-120, false, false, + 0x1.000000fffffffffep-120, false, false, + 0x1.000001p-120, false, false, + false, + 0x1.000000fffffffffep-120, false, false, + 0x1.000001p-120, false, false, + 0x1.000000fffffffffep-120, false, false, + 0x1.000001p-120, false, false, + false, + 0x1.000000ffffffffffffffffffff8p-120, false, false, + 0x1.000001p-120, false, false, + 0x1.000000ffffffffffffffffffff8p-120, false, false, + 0x1.000001p-120, false, false, + false, + 0x1.000000ffffffffffffffffffffffp-120, false, false, + 0x1.000001p-120, false, false, + 0x1.000000ffffffffffffffffffffffp-120, false, false, + 0x1.000001p-120, false, false), TEST ("7.5231642936781486349413765338158389908126215730251815381410" "5788244372130524340036572539247572422027587890625e-37", false, - 0x1p-120, false, - 0x1p-120, false, - 0x1p-120, false, - 0x1.000002p-120, false, - true, - 0x1.000001p-120, false, - 0x1.000001p-120, false, - 0x1.000001p-120, false, - 0x1.000001p-120, false, - true, - 0x1.000001p-120, false, - 0x1.000001p-120, false, - 0x1.000001p-120, false, - 0x1.000001p-120, false, - true, - 0x1.000001p-120, false, - 0x1.000001p-120, false, - 0x1.000001p-120, false, - 0x1.000001p-120, false, - true, - 0x1.000001p-120, false, - 0x1.000001p-120, false, - 0x1.000001p-120, false, - 0x1.000001p-120, false, - true, - 0x1.000001p-120, false, - 0x1.000001p-120, false, - 0x1.000001p-120, false, - 0x1.000001p-120, false), + 0x1p-120, false, false, + 0x1p-120, false, false, + 0x1p-120, false, false, + 0x1.000002p-120, false, false, + true, + 0x1.000001p-120, false, false, + 0x1.000001p-120, false, false, + 0x1.000001p-120, false, false, + 0x1.000001p-120, false, false, + true, + 0x1.000001p-120, false, false, + 0x1.000001p-120, false, false, + 0x1.000001p-120, false, false, + 0x1.000001p-120, false, false, + true, + 0x1.000001p-120, false, false, + 0x1.000001p-120, false, false, + 0x1.000001p-120, false, false, + 0x1.000001p-120, false, false, + true, + 0x1.000001p-120, false, false, + 0x1.000001p-120, false, false, + 0x1.000001p-120, false, false, + 0x1.000001p-120, false, false, + true, + 0x1.000001p-120, false, false, + 0x1.000001p-120, false, false, + 0x1.000001p-120, false, false, + 0x1.000001p-120, false, false), TEST ("7.5231642936781486349413765338158389908126215730251815381410" "578824437213052434003657253924757242202758789062501e-37", false, - 0x1p-120, false, - 0x1.000002p-120, false, - 0x1p-120, false, - 0x1.000002p-120, false, - false, - 0x1.000001p-120, false, - 0x1.000001p-120, false, - 0x1.000001p-120, false, - 0x1.0000010000001p-120, false, - false, - 0x1.000001p-120, false, - 0x1.000001p-120, false, - 0x1.000001p-120, false, - 0x1.0000010000000002p-120, false, - false, - 0x1.000001p-120, false, - 0x1.000001p-120, false, - 0x1.000001p-120, false, - 0x1.0000010000000002p-120, false, - false, - 0x1.000001p-120, false, - 0x1.000001p-120, false, - 0x1.000001p-120, false, - 0x1.000001000000000000000000008p-120, false, - false, - 0x1.000001p-120, false, - 0x1.000001p-120, false, - 0x1.000001p-120, false, - 0x1.0000010000000000000000000001p-120, false), + 0x1p-120, false, false, + 0x1.000002p-120, false, false, + 0x1p-120, false, false, + 0x1.000002p-120, false, false, + false, + 0x1.000001p-120, false, false, + 0x1.000001p-120, false, false, + 0x1.000001p-120, false, false, + 0x1.0000010000001p-120, false, false, + false, + 0x1.000001p-120, false, false, + 0x1.000001p-120, false, false, + 0x1.000001p-120, false, false, + 0x1.0000010000000002p-120, false, false, + false, + 0x1.000001p-120, false, false, + 0x1.000001p-120, false, false, + 0x1.000001p-120, false, false, + 0x1.0000010000000002p-120, false, false, + false, + 0x1.000001p-120, false, false, + 0x1.000001p-120, false, false, + 0x1.000001p-120, false, false, + 0x1.000001000000000000000000008p-120, false, false, + false, + 0x1.000001p-120, false, false, + 0x1.000001p-120, false, false, + 0x1.000001p-120, false, false, + 0x1.0000010000000000000000000001p-120, false, false), TEST ("7.5231647420936572188828392294093056435857835827090029386261" "048447055721499765468252007849514484405517578125e-37", true, - 0x1.000002p-120, false, - 0x1.000002p-120, false, - 0x1.000002p-120, false, - 0x1.000002p-120, false, - true, - 0x1.000002p-120, false, - 0x1.000002p-120, false, - 0x1.000002p-120, false, - 0x1.000002p-120, false, - true, - 0x1.000002p-120, false, - 0x1.000002p-120, false, - 0x1.000002p-120, false, - 0x1.000002p-120, false, - true, - 0x1.000002p-120, false, - 0x1.000002p-120, false, - 0x1.000002p-120, false, - 0x1.000002p-120, false, - true, - 0x1.000002p-120, false, - 0x1.000002p-120, false, - 0x1.000002p-120, false, - 0x1.000002p-120, false, - true, - 0x1.000002p-120, false, - 0x1.000002p-120, false, - 0x1.000002p-120, false, - 0x1.000002p-120, false), + 0x1.000002p-120, false, false, + 0x1.000002p-120, false, false, + 0x1.000002p-120, false, false, + 0x1.000002p-120, false, false, + true, + 0x1.000002p-120, false, false, + 0x1.000002p-120, false, false, + 0x1.000002p-120, false, false, + 0x1.000002p-120, false, false, + true, + 0x1.000002p-120, false, false, + 0x1.000002p-120, false, false, + 0x1.000002p-120, false, false, + 0x1.000002p-120, false, false, + true, + 0x1.000002p-120, false, false, + 0x1.000002p-120, false, false, + 0x1.000002p-120, false, false, + 0x1.000002p-120, false, false, + true, + 0x1.000002p-120, false, false, + 0x1.000002p-120, false, false, + 0x1.000002p-120, false, false, + 0x1.000002p-120, false, false, + true, + 0x1.000002p-120, false, false, + 0x1.000002p-120, false, false, + 0x1.000002p-120, false, false, + 0x1.000002p-120, false, false), TEST ("7.5231651905091658028243019250027722963589455923928243391111" "518069674229947096932846761774271726608276367187499e-37", false, - 0x1.000002p-120, false, - 0x1.000002p-120, false, - 0x1.000002p-120, false, - 0x1.000004p-120, false, - false, - 0x1.000002fffffffp-120, false, - 0x1.000003p-120, false, - 0x1.000002fffffffp-120, false, - 0x1.000003p-120, false, - false, - 0x1.000002fffffffffep-120, false, - 0x1.000003p-120, false, - 0x1.000002fffffffffep-120, false, - 0x1.000003p-120, false, - false, - 0x1.000002fffffffffep-120, false, - 0x1.000003p-120, false, - 0x1.000002fffffffffep-120, false, - 0x1.000003p-120, false, - false, - 0x1.000002ffffffffffffffffffff8p-120, false, - 0x1.000003p-120, false, - 0x1.000002ffffffffffffffffffff8p-120, false, - 0x1.000003p-120, false, - false, - 0x1.000002ffffffffffffffffffffffp-120, false, - 0x1.000003p-120, false, - 0x1.000002ffffffffffffffffffffffp-120, false, - 0x1.000003p-120, false), + 0x1.000002p-120, false, false, + 0x1.000002p-120, false, false, + 0x1.000002p-120, false, false, + 0x1.000004p-120, false, false, + false, + 0x1.000002fffffffp-120, false, false, + 0x1.000003p-120, false, false, + 0x1.000002fffffffp-120, false, false, + 0x1.000003p-120, false, false, + false, + 0x1.000002fffffffffep-120, false, false, + 0x1.000003p-120, false, false, + 0x1.000002fffffffffep-120, false, false, + 0x1.000003p-120, false, false, + false, + 0x1.000002fffffffffep-120, false, false, + 0x1.000003p-120, false, false, + 0x1.000002fffffffffep-120, false, false, + 0x1.000003p-120, false, false, + false, + 0x1.000002ffffffffffffffffffff8p-120, false, false, + 0x1.000003p-120, false, false, + 0x1.000002ffffffffffffffffffff8p-120, false, false, + 0x1.000003p-120, false, false, + false, + 0x1.000002ffffffffffffffffffffffp-120, false, false, + 0x1.000003p-120, false, false, + 0x1.000002ffffffffffffffffffffffp-120, false, false, + 0x1.000003p-120, false, false), TEST ("7.5231651905091658028243019250027722963589455923928243391111" "5180696742299470969328467617742717266082763671875e-37", false, - 0x1.000002p-120, false, - 0x1.000004p-120, false, - 0x1.000002p-120, false, - 0x1.000004p-120, false, - true, - 0x1.000003p-120, false, - 0x1.000003p-120, false, - 0x1.000003p-120, false, - 0x1.000003p-120, false, - true, - 0x1.000003p-120, false, - 0x1.000003p-120, false, - 0x1.000003p-120, false, - 0x1.000003p-120, false, - true, - 0x1.000003p-120, false, - 0x1.000003p-120, false, - 0x1.000003p-120, false, - 0x1.000003p-120, false, - true, - 0x1.000003p-120, false, - 0x1.000003p-120, false, - 0x1.000003p-120, false, - 0x1.000003p-120, false, - true, - 0x1.000003p-120, false, - 0x1.000003p-120, false, - 0x1.000003p-120, false, - 0x1.000003p-120, false), + 0x1.000002p-120, false, false, + 0x1.000004p-120, false, false, + 0x1.000002p-120, false, false, + 0x1.000004p-120, false, false, + true, + 0x1.000003p-120, false, false, + 0x1.000003p-120, false, false, + 0x1.000003p-120, false, false, + 0x1.000003p-120, false, false, + true, + 0x1.000003p-120, false, false, + 0x1.000003p-120, false, false, + 0x1.000003p-120, false, false, + 0x1.000003p-120, false, false, + true, + 0x1.000003p-120, false, false, + 0x1.000003p-120, false, false, + 0x1.000003p-120, false, false, + 0x1.000003p-120, false, false, + true, + 0x1.000003p-120, false, false, + 0x1.000003p-120, false, false, + 0x1.000003p-120, false, false, + 0x1.000003p-120, false, false, + true, + 0x1.000003p-120, false, false, + 0x1.000003p-120, false, false, + 0x1.000003p-120, false, false, + 0x1.000003p-120, false, false), TEST ("7.5231651905091658028243019250027722963589455923928243391111" "518069674229947096932846761774271726608276367187501e-37", false, - 0x1.000002p-120, false, - 0x1.000004p-120, false, - 0x1.000002p-120, false, - 0x1.000004p-120, false, - false, - 0x1.000003p-120, false, - 0x1.000003p-120, false, - 0x1.000003p-120, false, - 0x1.0000030000001p-120, false, - false, - 0x1.000003p-120, false, - 0x1.000003p-120, false, - 0x1.000003p-120, false, - 0x1.0000030000000002p-120, false, - false, - 0x1.000003p-120, false, - 0x1.000003p-120, false, - 0x1.000003p-120, false, - 0x1.0000030000000002p-120, false, - false, - 0x1.000003p-120, false, - 0x1.000003p-120, false, - 0x1.000003p-120, false, - 0x1.000003000000000000000000008p-120, false, - false, - 0x1.000003p-120, false, - 0x1.000003p-120, false, - 0x1.000003p-120, false, - 0x1.0000030000000000000000000001p-120, false), + 0x1.000002p-120, false, false, + 0x1.000004p-120, false, false, + 0x1.000002p-120, false, false, + 0x1.000004p-120, false, false, + false, + 0x1.000003p-120, false, false, + 0x1.000003p-120, false, false, + 0x1.000003p-120, false, false, + 0x1.0000030000001p-120, false, false, + false, + 0x1.000003p-120, false, false, + 0x1.000003p-120, false, false, + 0x1.000003p-120, false, false, + 0x1.0000030000000002p-120, false, false, + false, + 0x1.000003p-120, false, false, + 0x1.000003p-120, false, false, + 0x1.000003p-120, false, false, + 0x1.0000030000000002p-120, false, false, + false, + 0x1.000003p-120, false, false, + 0x1.000003p-120, false, false, + 0x1.000003p-120, false, false, + 0x1.000003000000000000000000008p-120, false, false, + false, + 0x1.000003p-120, false, false, + 0x1.000003p-120, false, false, + 0x1.000003p-120, false, false, + 0x1.0000030000000000000000000001p-120, false, false), TEST ("7.5231656389246743867657646205962389491321076020766457395961" "98769229273839442839744151569902896881103515625e-37", true, - 0x1.000004p-120, false, - 0x1.000004p-120, false, - 0x1.000004p-120, false, - 0x1.000004p-120, false, - true, - 0x1.000004p-120, false, - 0x1.000004p-120, false, - 0x1.000004p-120, false, - 0x1.000004p-120, false, - true, - 0x1.000004p-120, false, - 0x1.000004p-120, false, - 0x1.000004p-120, false, - 0x1.000004p-120, false, - true, - 0x1.000004p-120, false, - 0x1.000004p-120, false, - 0x1.000004p-120, false, - 0x1.000004p-120, false, - true, - 0x1.000004p-120, false, - 0x1.000004p-120, false, - 0x1.000004p-120, false, - 0x1.000004p-120, false, - true, - 0x1.000004p-120, false, - 0x1.000004p-120, false, - 0x1.000004p-120, false, - 0x1.000004p-120, false), + 0x1.000004p-120, false, false, + 0x1.000004p-120, false, false, + 0x1.000004p-120, false, false, + 0x1.000004p-120, false, false, + true, + 0x1.000004p-120, false, false, + 0x1.000004p-120, false, false, + 0x1.000004p-120, false, false, + 0x1.000004p-120, false, false, + true, + 0x1.000004p-120, false, false, + 0x1.000004p-120, false, false, + 0x1.000004p-120, false, false, + 0x1.000004p-120, false, false, + true, + 0x1.000004p-120, false, false, + 0x1.000004p-120, false, false, + 0x1.000004p-120, false, false, + 0x1.000004p-120, false, false, + true, + 0x1.000004p-120, false, false, + 0x1.000004p-120, false, false, + 0x1.000004p-120, false, false, + 0x1.000004p-120, false, false, + true, + 0x1.000004p-120, false, false, + 0x1.000004p-120, false, false, + 0x1.000004p-120, false, false, + 0x1.000004p-120, false, false), TEST ("340282356779733661637539395458142568447.999", false, - 0xf.fffffp+124, false, - 0xf.fffffp+124, false, - 0xf.fffffp+124, false, - INF, true, - false, - 0xf.fffff7ffffff8p+124, false, - 0xf.fffff8p+124, false, - 0xf.fffff7ffffff8p+124, false, - 0xf.fffff8p+124, false, - false, - 0xf.fffff7fffffffffp+124, false, - 0xf.fffff8p+124, false, - 0xf.fffff7fffffffffp+124, false, - 0xf.fffff8p+124, false, - false, - 0xf.fffff7fffffffffp+124, false, - 0xf.fffff8p+124, false, - 0xf.fffff7fffffffffp+124, false, - 0xf.fffff8p+124, false, - false, - 0xf.fffff7fffffffffffffffffffcp+124, false, - 0xf.fffff8p+124, false, - 0xf.fffff7fffffffffffffffffffcp+124, false, - 0xf.fffff8p+124, false, - false, - 0xf.fffff7fffffffffffffffffffff8p+124, false, - 0xf.fffff8p+124, false, - 0xf.fffff7fffffffffffffffffffff8p+124, false, - 0xf.fffff8p+124, false), + 0xf.fffffp+124, false, false, + 0xf.fffffp+124, false, false, + 0xf.fffffp+124, false, false, + INF, true, false, + false, + 0xf.fffff7ffffff8p+124, false, false, + 0xf.fffff8p+124, false, false, + 0xf.fffff7ffffff8p+124, false, false, + 0xf.fffff8p+124, false, false, + false, + 0xf.fffff7fffffffffp+124, false, false, + 0xf.fffff8p+124, false, false, + 0xf.fffff7fffffffffp+124, false, false, + 0xf.fffff8p+124, false, false, + false, + 0xf.fffff7fffffffffp+124, false, false, + 0xf.fffff8p+124, false, false, + 0xf.fffff7fffffffffp+124, false, false, + 0xf.fffff8p+124, false, false, + false, + 0xf.fffff7fffffffffffffffffffcp+124, false, false, + 0xf.fffff8p+124, false, false, + 0xf.fffff7fffffffffffffffffffcp+124, false, false, + 0xf.fffff8p+124, false, false, + false, + 0xf.fffff7fffffffffffffffffffff8p+124, false, false, + 0xf.fffff8p+124, false, false, + 0xf.fffff7fffffffffffffffffffff8p+124, false, false, + 0xf.fffff8p+124, false, false), TEST ("340282356779733661637539395458142568448", false, - 0xf.fffffp+124, false, - INF, true, - 0xf.fffffp+124, false, - INF, true, - true, - 0xf.fffff8p+124, false, - 0xf.fffff8p+124, false, - 0xf.fffff8p+124, false, - 0xf.fffff8p+124, false, - true, - 0xf.fffff8p+124, false, - 0xf.fffff8p+124, false, - 0xf.fffff8p+124, false, - 0xf.fffff8p+124, false, - true, - 0xf.fffff8p+124, false, - 0xf.fffff8p+124, false, - 0xf.fffff8p+124, false, - 0xf.fffff8p+124, false, - true, - 0xf.fffff8p+124, false, - 0xf.fffff8p+124, false, - 0xf.fffff8p+124, false, - 0xf.fffff8p+124, false, - true, - 0xf.fffff8p+124, false, - 0xf.fffff8p+124, false, - 0xf.fffff8p+124, false, - 0xf.fffff8p+124, false), + 0xf.fffffp+124, false, false, + INF, true, false, + 0xf.fffffp+124, false, false, + INF, true, false, + true, + 0xf.fffff8p+124, false, false, + 0xf.fffff8p+124, false, false, + 0xf.fffff8p+124, false, false, + 0xf.fffff8p+124, false, false, + true, + 0xf.fffff8p+124, false, false, + 0xf.fffff8p+124, false, false, + 0xf.fffff8p+124, false, false, + 0xf.fffff8p+124, false, false, + true, + 0xf.fffff8p+124, false, false, + 0xf.fffff8p+124, false, false, + 0xf.fffff8p+124, false, false, + 0xf.fffff8p+124, false, false, + true, + 0xf.fffff8p+124, false, false, + 0xf.fffff8p+124, false, false, + 0xf.fffff8p+124, false, false, + 0xf.fffff8p+124, false, false, + true, + 0xf.fffff8p+124, false, false, + 0xf.fffff8p+124, false, false, + 0xf.fffff8p+124, false, false, + 0xf.fffff8p+124, false, false), TEST ("340282356779733661637539395458142568448.001", false, - 0xf.fffffp+124, false, - INF, true, - 0xf.fffffp+124, false, - INF, true, - false, - 0xf.fffff8p+124, false, - 0xf.fffff8p+124, false, - 0xf.fffff8p+124, false, - 0xf.fffff80000008p+124, false, - false, - 0xf.fffff8p+124, false, - 0xf.fffff8p+124, false, - 0xf.fffff8p+124, false, - 0xf.fffff8000000001p+124, false, - false, - 0xf.fffff8p+124, false, - 0xf.fffff8p+124, false, - 0xf.fffff8p+124, false, - 0xf.fffff8000000001p+124, false, - false, - 0xf.fffff8p+124, false, - 0xf.fffff8p+124, false, - 0xf.fffff8p+124, false, - 0xf.fffff800000000000000000004p+124, false, - false, - 0xf.fffff8p+124, false, - 0xf.fffff8p+124, false, - 0xf.fffff8p+124, false, - 0xf.fffff80000000000000000000008p+124, false), + 0xf.fffffp+124, false, false, + INF, true, false, + 0xf.fffffp+124, false, false, + INF, true, false, + false, + 0xf.fffff8p+124, false, false, + 0xf.fffff8p+124, false, false, + 0xf.fffff8p+124, false, false, + 0xf.fffff80000008p+124, false, false, + false, + 0xf.fffff8p+124, false, false, + 0xf.fffff8p+124, false, false, + 0xf.fffff8p+124, false, false, + 0xf.fffff8000000001p+124, false, false, + false, + 0xf.fffff8p+124, false, false, + 0xf.fffff8p+124, false, false, + 0xf.fffff8p+124, false, false, + 0xf.fffff8000000001p+124, false, false, + false, + 0xf.fffff8p+124, false, false, + 0xf.fffff8p+124, false, false, + 0xf.fffff8p+124, false, false, + 0xf.fffff800000000000000000004p+124, false, false, + false, + 0xf.fffff8p+124, false, false, + 0xf.fffff8p+124, false, false, + 0xf.fffff8p+124, false, false, + 0xf.fffff80000000000000000000008p+124, false, false), TEST ("-340282356779733661637539395458142568447.999", false, - -INF, true, - -0xf.fffffp+124, false, - -0xf.fffffp+124, false, - -0xf.fffffp+124, false, - false, - -0xf.fffff8p+124, false, - -0xf.fffff8p+124, false, - -0xf.fffff7ffffff8p+124, false, - -0xf.fffff7ffffff8p+124, false, - false, - -0xf.fffff8p+124, false, - -0xf.fffff8p+124, false, - -0xf.fffff7fffffffffp+124, false, - -0xf.fffff7fffffffffp+124, false, - false, - -0xf.fffff8p+124, false, - -0xf.fffff8p+124, false, - -0xf.fffff7fffffffffp+124, false, - -0xf.fffff7fffffffffp+124, false, - false, - -0xf.fffff8p+124, false, - -0xf.fffff8p+124, false, - -0xf.fffff7fffffffffffffffffffcp+124, false, - -0xf.fffff7fffffffffffffffffffcp+124, false, - false, - -0xf.fffff8p+124, false, - -0xf.fffff8p+124, false, - -0xf.fffff7fffffffffffffffffffff8p+124, false, - -0xf.fffff7fffffffffffffffffffff8p+124, false), + -INF, true, false, + -0xf.fffffp+124, false, false, + -0xf.fffffp+124, false, false, + -0xf.fffffp+124, false, false, + false, + -0xf.fffff8p+124, false, false, + -0xf.fffff8p+124, false, false, + -0xf.fffff7ffffff8p+124, false, false, + -0xf.fffff7ffffff8p+124, false, false, + false, + -0xf.fffff8p+124, false, false, + -0xf.fffff8p+124, false, false, + -0xf.fffff7fffffffffp+124, false, false, + -0xf.fffff7fffffffffp+124, false, false, + false, + -0xf.fffff8p+124, false, false, + -0xf.fffff8p+124, false, false, + -0xf.fffff7fffffffffp+124, false, false, + -0xf.fffff7fffffffffp+124, false, false, + false, + -0xf.fffff8p+124, false, false, + -0xf.fffff8p+124, false, false, + -0xf.fffff7fffffffffffffffffffcp+124, false, false, + -0xf.fffff7fffffffffffffffffffcp+124, false, false, + false, + -0xf.fffff8p+124, false, false, + -0xf.fffff8p+124, false, false, + -0xf.fffff7fffffffffffffffffffff8p+124, false, false, + -0xf.fffff7fffffffffffffffffffff8p+124, false, false), TEST ("-340282356779733661637539395458142568448", false, - -INF, true, - -INF, true, - -0xf.fffffp+124, false, - -0xf.fffffp+124, false, - true, - -0xf.fffff8p+124, false, - -0xf.fffff8p+124, false, - -0xf.fffff8p+124, false, - -0xf.fffff8p+124, false, - true, - -0xf.fffff8p+124, false, - -0xf.fffff8p+124, false, - -0xf.fffff8p+124, false, - -0xf.fffff8p+124, false, - true, - -0xf.fffff8p+124, false, - -0xf.fffff8p+124, false, - -0xf.fffff8p+124, false, - -0xf.fffff8p+124, false, - true, - -0xf.fffff8p+124, false, - -0xf.fffff8p+124, false, - -0xf.fffff8p+124, false, - -0xf.fffff8p+124, false, - true, - -0xf.fffff8p+124, false, - -0xf.fffff8p+124, false, - -0xf.fffff8p+124, false, - -0xf.fffff8p+124, false), + -INF, true, false, + -INF, true, false, + -0xf.fffffp+124, false, false, + -0xf.fffffp+124, false, false, + true, + -0xf.fffff8p+124, false, false, + -0xf.fffff8p+124, false, false, + -0xf.fffff8p+124, false, false, + -0xf.fffff8p+124, false, false, + true, + -0xf.fffff8p+124, false, false, + -0xf.fffff8p+124, false, false, + -0xf.fffff8p+124, false, false, + -0xf.fffff8p+124, false, false, + true, + -0xf.fffff8p+124, false, false, + -0xf.fffff8p+124, false, false, + -0xf.fffff8p+124, false, false, + -0xf.fffff8p+124, false, false, + true, + -0xf.fffff8p+124, false, false, + -0xf.fffff8p+124, false, false, + -0xf.fffff8p+124, false, false, + -0xf.fffff8p+124, false, false, + true, + -0xf.fffff8p+124, false, false, + -0xf.fffff8p+124, false, false, + -0xf.fffff8p+124, false, false, + -0xf.fffff8p+124, false, false), TEST ("-340282356779733661637539395458142568448.001", false, - -INF, true, - -INF, true, - -0xf.fffffp+124, false, - -0xf.fffffp+124, false, - false, - -0xf.fffff80000008p+124, false, - -0xf.fffff8p+124, false, - -0xf.fffff8p+124, false, - -0xf.fffff8p+124, false, - false, - -0xf.fffff8000000001p+124, false, - -0xf.fffff8p+124, false, - -0xf.fffff8p+124, false, - -0xf.fffff8p+124, false, - false, - -0xf.fffff8000000001p+124, false, - -0xf.fffff8p+124, false, - -0xf.fffff8p+124, false, - -0xf.fffff8p+124, false, - false, - -0xf.fffff800000000000000000004p+124, false, - -0xf.fffff8p+124, false, - -0xf.fffff8p+124, false, - -0xf.fffff8p+124, false, - false, - -0xf.fffff80000000000000000000008p+124, false, - -0xf.fffff8p+124, false, - -0xf.fffff8p+124, false, - -0xf.fffff8p+124, false), + -INF, true, false, + -INF, true, false, + -0xf.fffffp+124, false, false, + -0xf.fffffp+124, false, false, + false, + -0xf.fffff80000008p+124, false, false, + -0xf.fffff8p+124, false, false, + -0xf.fffff8p+124, false, false, + -0xf.fffff8p+124, false, false, + false, + -0xf.fffff8000000001p+124, false, false, + -0xf.fffff8p+124, false, false, + -0xf.fffff8p+124, false, false, + -0xf.fffff8p+124, false, false, + false, + -0xf.fffff8000000001p+124, false, false, + -0xf.fffff8p+124, false, false, + -0xf.fffff8p+124, false, false, + -0xf.fffff8p+124, false, false, + false, + -0xf.fffff800000000000000000004p+124, false, false, + -0xf.fffff8p+124, false, false, + -0xf.fffff8p+124, false, false, + -0xf.fffff8p+124, false, false, + false, + -0xf.fffff80000000000000000000008p+124, false, false, + -0xf.fffff8p+124, false, false, + -0xf.fffff8p+124, false, false, + -0xf.fffff8p+124, false, false), TEST ("179769313486231580793728971405303415079934132710037826936173" "778980444968292764750946649017977587207096330286416692887910" "946555547851940402630657488671505820681908902000708383676273" @@ -1855,35 +1855,35 @@ static const struct test tests[] = { "936475292719074168444365510704342711559699508093042880177904" "174497791.999", false, - 0xf.fffffp+124, true, - INF, true, - 0xf.fffffp+124, true, - INF, true, - false, - 0xf.ffffffffffff8p+1020, false, - 0xf.ffffffffffff8p+1020, false, - 0xf.ffffffffffff8p+1020, false, - INF, true, - false, - 0xf.ffffffffffffbffp+1020, false, - 0xf.ffffffffffffcp+1020, false, - 0xf.ffffffffffffbffp+1020, false, - 0xf.ffffffffffffcp+1020, false, - false, - 0xf.ffffffffffffbffp+1020, false, - 0xf.ffffffffffffcp+1020, false, - 0xf.ffffffffffffbffp+1020, false, - 0xf.ffffffffffffcp+1020, false, - false, - 0xf.ffffffffffffbffffffffffffcp+1020, false, - 0xf.ffffffffffffcp+1020, true, - 0xf.ffffffffffffbffffffffffffcp+1020, false, - 0xf.ffffffffffffcp+1020, true, - false, - 0xf.ffffffffffffbffffffffffffff8p+1020, false, - 0xf.ffffffffffffcp+1020, false, - 0xf.ffffffffffffbffffffffffffff8p+1020, false, - 0xf.ffffffffffffcp+1020, false), + 0xf.fffffp+124, true, false, + INF, true, false, + 0xf.fffffp+124, true, false, + INF, true, false, + false, + 0xf.ffffffffffff8p+1020, false, false, + 0xf.ffffffffffff8p+1020, false, false, + 0xf.ffffffffffff8p+1020, false, false, + INF, true, false, + false, + 0xf.ffffffffffffbffp+1020, false, false, + 0xf.ffffffffffffcp+1020, false, false, + 0xf.ffffffffffffbffp+1020, false, false, + 0xf.ffffffffffffcp+1020, false, false, + false, + 0xf.ffffffffffffbffp+1020, false, false, + 0xf.ffffffffffffcp+1020, false, false, + 0xf.ffffffffffffbffp+1020, false, false, + 0xf.ffffffffffffcp+1020, false, false, + false, + 0xf.ffffffffffffbffffffffffffcp+1020, false, false, + 0xf.ffffffffffffcp+1020, true, false, + 0xf.ffffffffffffbffffffffffffcp+1020, false, false, + 0xf.ffffffffffffcp+1020, true, false, + false, + 0xf.ffffffffffffbffffffffffffff8p+1020, false, false, + 0xf.ffffffffffffcp+1020, false, false, + 0xf.ffffffffffffbffffffffffffff8p+1020, false, false, + 0xf.ffffffffffffcp+1020, false, false), TEST ("179769313486231580793728971405303415079934132710037826936173" "778980444968292764750946649017977587207096330286416692887910" "946555547851940402630657488671505820681908902000708383676273" @@ -1891,35 +1891,35 @@ static const struct test tests[] = { "936475292719074168444365510704342711559699508093042880177904" "174497792", false, - 0xf.fffffp+124, true, - INF, true, - 0xf.fffffp+124, true, - INF, true, - false, - 0xf.ffffffffffff8p+1020, false, - INF, true, - 0xf.ffffffffffff8p+1020, false, - INF, true, - true, - 0xf.ffffffffffffcp+1020, false, - 0xf.ffffffffffffcp+1020, false, - 0xf.ffffffffffffcp+1020, false, - 0xf.ffffffffffffcp+1020, false, - true, - 0xf.ffffffffffffcp+1020, false, - 0xf.ffffffffffffcp+1020, false, - 0xf.ffffffffffffcp+1020, false, - 0xf.ffffffffffffcp+1020, false, - false, - 0xf.ffffffffffffcp+1020, true, - 0xf.ffffffffffffcp+1020, true, - 0xf.ffffffffffffcp+1020, true, - 0xf.ffffffffffffcp+1020, true, - true, - 0xf.ffffffffffffcp+1020, false, - 0xf.ffffffffffffcp+1020, false, - 0xf.ffffffffffffcp+1020, false, - 0xf.ffffffffffffcp+1020, false), + 0xf.fffffp+124, true, false, + INF, true, false, + 0xf.fffffp+124, true, false, + INF, true, false, + false, + 0xf.ffffffffffff8p+1020, false, false, + INF, true, false, + 0xf.ffffffffffff8p+1020, false, false, + INF, true, false, + true, + 0xf.ffffffffffffcp+1020, false, false, + 0xf.ffffffffffffcp+1020, false, false, + 0xf.ffffffffffffcp+1020, false, false, + 0xf.ffffffffffffcp+1020, false, false, + true, + 0xf.ffffffffffffcp+1020, false, false, + 0xf.ffffffffffffcp+1020, false, false, + 0xf.ffffffffffffcp+1020, false, false, + 0xf.ffffffffffffcp+1020, false, false, + false, + 0xf.ffffffffffffcp+1020, true, false, + 0xf.ffffffffffffcp+1020, true, false, + 0xf.ffffffffffffcp+1020, true, false, + 0xf.ffffffffffffcp+1020, true, false, + true, + 0xf.ffffffffffffcp+1020, false, false, + 0xf.ffffffffffffcp+1020, false, false, + 0xf.ffffffffffffcp+1020, false, false, + 0xf.ffffffffffffcp+1020, false, false), TEST ("179769313486231580793728971405303415079934132710037826936173" "778980444968292764750946649017977587207096330286416692887910" "946555547851940402630657488671505820681908902000708383676273" @@ -1927,35 +1927,35 @@ static const struct test tests[] = { "936475292719074168444365510704342711559699508093042880177904" "174497792.001", false, - 0xf.fffffp+124, true, - INF, true, - 0xf.fffffp+124, true, - INF, true, - false, - 0xf.ffffffffffff8p+1020, false, - INF, true, - 0xf.ffffffffffff8p+1020, false, - INF, true, - false, - 0xf.ffffffffffffcp+1020, false, - 0xf.ffffffffffffcp+1020, false, - 0xf.ffffffffffffcp+1020, false, - 0xf.ffffffffffffc01p+1020, false, - false, - 0xf.ffffffffffffcp+1020, false, - 0xf.ffffffffffffcp+1020, false, - 0xf.ffffffffffffcp+1020, false, - 0xf.ffffffffffffc01p+1020, false, - false, - 0xf.ffffffffffffcp+1020, true, - 0xf.ffffffffffffcp+1020, true, - 0xf.ffffffffffffcp+1020, true, - 0xf.ffffffffffffc0000000000004p+1020, true, - false, - 0xf.ffffffffffffcp+1020, false, - 0xf.ffffffffffffcp+1020, false, - 0xf.ffffffffffffcp+1020, false, - 0xf.ffffffffffffc000000000000008p+1020, false), + 0xf.fffffp+124, true, false, + INF, true, false, + 0xf.fffffp+124, true, false, + INF, true, false, + false, + 0xf.ffffffffffff8p+1020, false, false, + INF, true, false, + 0xf.ffffffffffff8p+1020, false, false, + INF, true, false, + false, + 0xf.ffffffffffffcp+1020, false, false, + 0xf.ffffffffffffcp+1020, false, false, + 0xf.ffffffffffffcp+1020, false, false, + 0xf.ffffffffffffc01p+1020, false, false, + false, + 0xf.ffffffffffffcp+1020, false, false, + 0xf.ffffffffffffcp+1020, false, false, + 0xf.ffffffffffffcp+1020, false, false, + 0xf.ffffffffffffc01p+1020, false, false, + false, + 0xf.ffffffffffffcp+1020, true, false, + 0xf.ffffffffffffcp+1020, true, false, + 0xf.ffffffffffffcp+1020, true, false, + 0xf.ffffffffffffc0000000000004p+1020, true, false, + false, + 0xf.ffffffffffffcp+1020, false, false, + 0xf.ffffffffffffcp+1020, false, false, + 0xf.ffffffffffffcp+1020, false, false, + 0xf.ffffffffffffc000000000000008p+1020, false, false), TEST ("-17976931348623158079372897140530341507993413271003782693617" "377898044496829276475094664901797758720709633028641669288791" "094655554785194040263065748867150582068190890200070838367627" @@ -1963,35 +1963,35 @@ static const struct test tests[] = { "493647529271907416844436551070434271155969950809304288017790" "4174497791.999", false, - -INF, true, - -INF, true, - -0xf.fffffp+124, true, - -0xf.fffffp+124, true, - false, - -INF, true, - -0xf.ffffffffffff8p+1020, false, - -0xf.ffffffffffff8p+1020, false, - -0xf.ffffffffffff8p+1020, false, - false, - -0xf.ffffffffffffcp+1020, false, - -0xf.ffffffffffffcp+1020, false, - -0xf.ffffffffffffbffp+1020, false, - -0xf.ffffffffffffbffp+1020, false, - false, - -0xf.ffffffffffffcp+1020, false, - -0xf.ffffffffffffcp+1020, false, - -0xf.ffffffffffffbffp+1020, false, - -0xf.ffffffffffffbffp+1020, false, - false, - -0xf.ffffffffffffcp+1020, true, - -0xf.ffffffffffffcp+1020, true, - -0xf.ffffffffffffbffffffffffffcp+1020, false, - -0xf.ffffffffffffbffffffffffffcp+1020, false, - false, - -0xf.ffffffffffffcp+1020, false, - -0xf.ffffffffffffcp+1020, false, - -0xf.ffffffffffffbffffffffffffff8p+1020, false, - -0xf.ffffffffffffbffffffffffffff8p+1020, false), + -INF, true, false, + -INF, true, false, + -0xf.fffffp+124, true, false, + -0xf.fffffp+124, true, false, + false, + -INF, true, false, + -0xf.ffffffffffff8p+1020, false, false, + -0xf.ffffffffffff8p+1020, false, false, + -0xf.ffffffffffff8p+1020, false, false, + false, + -0xf.ffffffffffffcp+1020, false, false, + -0xf.ffffffffffffcp+1020, false, false, + -0xf.ffffffffffffbffp+1020, false, false, + -0xf.ffffffffffffbffp+1020, false, false, + false, + -0xf.ffffffffffffcp+1020, false, false, + -0xf.ffffffffffffcp+1020, false, false, + -0xf.ffffffffffffbffp+1020, false, false, + -0xf.ffffffffffffbffp+1020, false, false, + false, + -0xf.ffffffffffffcp+1020, true, false, + -0xf.ffffffffffffcp+1020, true, false, + -0xf.ffffffffffffbffffffffffffcp+1020, false, false, + -0xf.ffffffffffffbffffffffffffcp+1020, false, false, + false, + -0xf.ffffffffffffcp+1020, false, false, + -0xf.ffffffffffffcp+1020, false, false, + -0xf.ffffffffffffbffffffffffffff8p+1020, false, false, + -0xf.ffffffffffffbffffffffffffff8p+1020, false, false), TEST ("-17976931348623158079372897140530341507993413271003782693617" "377898044496829276475094664901797758720709633028641669288791" "094655554785194040263065748867150582068190890200070838367627" @@ -1999,35 +1999,35 @@ static const struct test tests[] = { "493647529271907416844436551070434271155969950809304288017790" "4174497792", false, - -INF, true, - -INF, true, - -0xf.fffffp+124, true, - -0xf.fffffp+124, true, - false, - -INF, true, - -INF, true, - -0xf.ffffffffffff8p+1020, false, - -0xf.ffffffffffff8p+1020, false, - true, - -0xf.ffffffffffffcp+1020, false, - -0xf.ffffffffffffcp+1020, false, - -0xf.ffffffffffffcp+1020, false, - -0xf.ffffffffffffcp+1020, false, - true, - -0xf.ffffffffffffcp+1020, false, - -0xf.ffffffffffffcp+1020, false, - -0xf.ffffffffffffcp+1020, false, - -0xf.ffffffffffffcp+1020, false, - false, - -0xf.ffffffffffffcp+1020, true, - -0xf.ffffffffffffcp+1020, true, - -0xf.ffffffffffffcp+1020, true, - -0xf.ffffffffffffcp+1020, true, - true, - -0xf.ffffffffffffcp+1020, false, - -0xf.ffffffffffffcp+1020, false, - -0xf.ffffffffffffcp+1020, false, - -0xf.ffffffffffffcp+1020, false), + -INF, true, false, + -INF, true, false, + -0xf.fffffp+124, true, false, + -0xf.fffffp+124, true, false, + false, + -INF, true, false, + -INF, true, false, + -0xf.ffffffffffff8p+1020, false, false, + -0xf.ffffffffffff8p+1020, false, false, + true, + -0xf.ffffffffffffcp+1020, false, false, + -0xf.ffffffffffffcp+1020, false, false, + -0xf.ffffffffffffcp+1020, false, false, + -0xf.ffffffffffffcp+1020, false, false, + true, + -0xf.ffffffffffffcp+1020, false, false, + -0xf.ffffffffffffcp+1020, false, false, + -0xf.ffffffffffffcp+1020, false, false, + -0xf.ffffffffffffcp+1020, false, false, + false, + -0xf.ffffffffffffcp+1020, true, false, + -0xf.ffffffffffffcp+1020, true, false, + -0xf.ffffffffffffcp+1020, true, false, + -0xf.ffffffffffffcp+1020, true, false, + true, + -0xf.ffffffffffffcp+1020, false, false, + -0xf.ffffffffffffcp+1020, false, false, + -0xf.ffffffffffffcp+1020, false, false, + -0xf.ffffffffffffcp+1020, false, false), TEST ("-17976931348623158079372897140530341507993413271003782693617" "377898044496829276475094664901797758720709633028641669288791" "094655554785194040263065748867150582068190890200070838367627" @@ -2035,35 +2035,35 @@ static const struct test tests[] = { "493647529271907416844436551070434271155969950809304288017790" "4174497792.001", false, - -INF, true, - -INF, true, - -0xf.fffffp+124, true, - -0xf.fffffp+124, true, - false, - -INF, true, - -INF, true, - -0xf.ffffffffffff8p+1020, false, - -0xf.ffffffffffff8p+1020, false, - false, - -0xf.ffffffffffffc01p+1020, false, - -0xf.ffffffffffffcp+1020, false, - -0xf.ffffffffffffcp+1020, false, - -0xf.ffffffffffffcp+1020, false, - false, - -0xf.ffffffffffffc01p+1020, false, - -0xf.ffffffffffffcp+1020, false, - -0xf.ffffffffffffcp+1020, false, - -0xf.ffffffffffffcp+1020, false, - false, - -0xf.ffffffffffffc0000000000004p+1020, true, - -0xf.ffffffffffffcp+1020, true, - -0xf.ffffffffffffcp+1020, true, - -0xf.ffffffffffffcp+1020, true, - false, - -0xf.ffffffffffffc000000000000008p+1020, false, - -0xf.ffffffffffffcp+1020, false, - -0xf.ffffffffffffcp+1020, false, - -0xf.ffffffffffffcp+1020, false), + -INF, true, false, + -INF, true, false, + -0xf.fffffp+124, true, false, + -0xf.fffffp+124, true, false, + false, + -INF, true, false, + -INF, true, false, + -0xf.ffffffffffff8p+1020, false, false, + -0xf.ffffffffffff8p+1020, false, false, + false, + -0xf.ffffffffffffc01p+1020, false, false, + -0xf.ffffffffffffcp+1020, false, false, + -0xf.ffffffffffffcp+1020, false, false, + -0xf.ffffffffffffcp+1020, false, false, + false, + -0xf.ffffffffffffc01p+1020, false, false, + -0xf.ffffffffffffcp+1020, false, false, + -0xf.ffffffffffffcp+1020, false, false, + -0xf.ffffffffffffcp+1020, false, false, + false, + -0xf.ffffffffffffc0000000000004p+1020, true, false, + -0xf.ffffffffffffcp+1020, true, false, + -0xf.ffffffffffffcp+1020, true, false, + -0xf.ffffffffffffcp+1020, true, false, + false, + -0xf.ffffffffffffc000000000000008p+1020, false, false, + -0xf.ffffffffffffcp+1020, false, false, + -0xf.ffffffffffffcp+1020, false, false, + -0xf.ffffffffffffcp+1020, false, false), TEST ("118973149535723176505351158982948866796625400469556721895649" "927756249918185172720476044944290457046138433056764616744328" "666255526748948793023632513609765434237723241753648908036202" @@ -2148,35 +2148,35 @@ static const struct test tests[] = { "578031503869424406179027994752890226443351619365453243328968" "8740976918527.999", false, - 0xf.fffffp+124, true, - INF, true, - 0xf.fffffp+124, true, - INF, true, - false, - 0xf.ffffffffffff8p+1020, true, - INF, true, - 0xf.ffffffffffff8p+1020, true, - INF, true, - false, - 0xf.fffffffffffffffp+16380, false, - 0xf.fffffffffffffffp+16380, false, - 0xf.fffffffffffffffp+16380, false, - INF, true, - false, - 0xf.fffffffffffffffp+16380, false, - 0xf.fffffffffffffffp+16380, false, - 0xf.fffffffffffffffp+16380, false, - INF, true, - false, - 0xf.fffffffffffffffffffffffffcp+1020, true, - INF, true, - 0xf.fffffffffffffffffffffffffcp+1020, true, - INF, true, - false, - 0xf.fffffffffffffff7fffffffffff8p+16380, false, - 0xf.fffffffffffffff8p+16380, false, - 0xf.fffffffffffffff7fffffffffff8p+16380, false, - 0xf.fffffffffffffff8p+16380, false), + 0xf.fffffp+124, true, false, + INF, true, false, + 0xf.fffffp+124, true, false, + INF, true, false, + false, + 0xf.ffffffffffff8p+1020, true, false, + INF, true, false, + 0xf.ffffffffffff8p+1020, true, false, + INF, true, false, + false, + 0xf.fffffffffffffffp+16380, false, false, + 0xf.fffffffffffffffp+16380, false, false, + 0xf.fffffffffffffffp+16380, false, false, + INF, true, false, + false, + 0xf.fffffffffffffffp+16380, false, false, + 0xf.fffffffffffffffp+16380, false, false, + 0xf.fffffffffffffffp+16380, false, false, + INF, true, false, + false, + 0xf.fffffffffffffffffffffffffcp+1020, true, false, + INF, true, false, + 0xf.fffffffffffffffffffffffffcp+1020, true, false, + INF, true, false, + false, + 0xf.fffffffffffffff7fffffffffff8p+16380, false, false, + 0xf.fffffffffffffff8p+16380, false, false, + 0xf.fffffffffffffff7fffffffffff8p+16380, false, false, + 0xf.fffffffffffffff8p+16380, false, false), TEST ("118973149535723176505351158982948866796625400469556721895649" "927756249918185172720476044944290457046138433056764616744328" "666255526748948793023632513609765434237723241753648908036202" @@ -2261,35 +2261,35 @@ static const struct test tests[] = { "578031503869424406179027994752890226443351619365453243328968" "8740976918528", false, - 0xf.fffffp+124, true, - INF, true, - 0xf.fffffp+124, true, - INF, true, - false, - 0xf.ffffffffffff8p+1020, true, - INF, true, - 0xf.ffffffffffff8p+1020, true, - INF, true, - false, - 0xf.fffffffffffffffp+16380, false, - INF, true, - 0xf.fffffffffffffffp+16380, false, - INF, true, - false, - 0xf.fffffffffffffffp+16380, false, - INF, true, - 0xf.fffffffffffffffp+16380, false, - INF, true, - false, - 0xf.fffffffffffffffffffffffffcp+1020, true, - INF, true, - 0xf.fffffffffffffffffffffffffcp+1020, true, - INF, true, - true, - 0xf.fffffffffffffff8p+16380, false, - 0xf.fffffffffffffff8p+16380, false, - 0xf.fffffffffffffff8p+16380, false, - 0xf.fffffffffffffff8p+16380, false), + 0xf.fffffp+124, true, false, + INF, true, false, + 0xf.fffffp+124, true, false, + INF, true, false, + false, + 0xf.ffffffffffff8p+1020, true, false, + INF, true, false, + 0xf.ffffffffffff8p+1020, true, false, + INF, true, false, + false, + 0xf.fffffffffffffffp+16380, false, false, + INF, true, false, + 0xf.fffffffffffffffp+16380, false, false, + INF, true, false, + false, + 0xf.fffffffffffffffp+16380, false, false, + INF, true, false, + 0xf.fffffffffffffffp+16380, false, false, + INF, true, false, + false, + 0xf.fffffffffffffffffffffffffcp+1020, true, false, + INF, true, false, + 0xf.fffffffffffffffffffffffffcp+1020, true, false, + INF, true, false, + true, + 0xf.fffffffffffffff8p+16380, false, false, + 0xf.fffffffffffffff8p+16380, false, false, + 0xf.fffffffffffffff8p+16380, false, false, + 0xf.fffffffffffffff8p+16380, false, false), TEST ("118973149535723176505351158982948866796625400469556721895649" "927756249918185172720476044944290457046138433056764616744328" "666255526748948793023632513609765434237723241753648908036202" @@ -2374,35 +2374,35 @@ static const struct test tests[] = { "578031503869424406179027994752890226443351619365453243328968" "8740976918528.001", false, - 0xf.fffffp+124, true, - INF, true, - 0xf.fffffp+124, true, - INF, true, - false, - 0xf.ffffffffffff8p+1020, true, - INF, true, - 0xf.ffffffffffff8p+1020, true, - INF, true, - false, - 0xf.fffffffffffffffp+16380, false, - INF, true, - 0xf.fffffffffffffffp+16380, false, - INF, true, - false, - 0xf.fffffffffffffffp+16380, false, - INF, true, - 0xf.fffffffffffffffp+16380, false, - INF, true, - false, - 0xf.fffffffffffffffffffffffffcp+1020, true, - INF, true, - 0xf.fffffffffffffffffffffffffcp+1020, true, - INF, true, - false, - 0xf.fffffffffffffff8p+16380, false, - 0xf.fffffffffffffff8p+16380, false, - 0xf.fffffffffffffff8p+16380, false, - 0xf.fffffffffffffff8000000000008p+16380, false), + 0xf.fffffp+124, true, false, + INF, true, false, + 0xf.fffffp+124, true, false, + INF, true, false, + false, + 0xf.ffffffffffff8p+1020, true, false, + INF, true, false, + 0xf.ffffffffffff8p+1020, true, false, + INF, true, false, + false, + 0xf.fffffffffffffffp+16380, false, false, + INF, true, false, + 0xf.fffffffffffffffp+16380, false, false, + INF, true, false, + false, + 0xf.fffffffffffffffp+16380, false, false, + INF, true, false, + 0xf.fffffffffffffffp+16380, false, false, + INF, true, false, + false, + 0xf.fffffffffffffffffffffffffcp+1020, true, false, + INF, true, false, + 0xf.fffffffffffffffffffffffffcp+1020, true, false, + INF, true, false, + false, + 0xf.fffffffffffffff8p+16380, false, false, + 0xf.fffffffffffffff8p+16380, false, false, + 0xf.fffffffffffffff8p+16380, false, false, + 0xf.fffffffffffffff8000000000008p+16380, false, false), TEST ("-11897314953572317650535115898294886679662540046955672189564" "992775624991818517272047604494429045704613843305676461674432" "866625552674894879302363251360976543423772324175364890803620" @@ -2487,35 +2487,35 @@ static const struct test tests[] = { "557803150386942440617902799475289022644335161936545324332896" "88740976918527.999", false, - -INF, true, - -INF, true, - -0xf.fffffp+124, true, - -0xf.fffffp+124, true, - false, - -INF, true, - -INF, true, - -0xf.ffffffffffff8p+1020, true, - -0xf.ffffffffffff8p+1020, true, - false, - -INF, true, - -0xf.fffffffffffffffp+16380, false, - -0xf.fffffffffffffffp+16380, false, - -0xf.fffffffffffffffp+16380, false, - false, - -INF, true, - -0xf.fffffffffffffffp+16380, false, - -0xf.fffffffffffffffp+16380, false, - -0xf.fffffffffffffffp+16380, false, - false, - -INF, true, - -INF, true, - -0xf.fffffffffffffffffffffffffcp+1020, true, - -0xf.fffffffffffffffffffffffffcp+1020, true, - false, - -0xf.fffffffffffffff8p+16380, false, - -0xf.fffffffffffffff8p+16380, false, - -0xf.fffffffffffffff7fffffffffff8p+16380, false, - -0xf.fffffffffffffff7fffffffffff8p+16380, false), + -INF, true, false, + -INF, true, false, + -0xf.fffffp+124, true, false, + -0xf.fffffp+124, true, false, + false, + -INF, true, false, + -INF, true, false, + -0xf.ffffffffffff8p+1020, true, false, + -0xf.ffffffffffff8p+1020, true, false, + false, + -INF, true, false, + -0xf.fffffffffffffffp+16380, false, false, + -0xf.fffffffffffffffp+16380, false, false, + -0xf.fffffffffffffffp+16380, false, false, + false, + -INF, true, false, + -0xf.fffffffffffffffp+16380, false, false, + -0xf.fffffffffffffffp+16380, false, false, + -0xf.fffffffffffffffp+16380, false, false, + false, + -INF, true, false, + -INF, true, false, + -0xf.fffffffffffffffffffffffffcp+1020, true, false, + -0xf.fffffffffffffffffffffffffcp+1020, true, false, + false, + -0xf.fffffffffffffff8p+16380, false, false, + -0xf.fffffffffffffff8p+16380, false, false, + -0xf.fffffffffffffff7fffffffffff8p+16380, false, false, + -0xf.fffffffffffffff7fffffffffff8p+16380, false, false), TEST ("-11897314953572317650535115898294886679662540046955672189564" "992775624991818517272047604494429045704613843305676461674432" "866625552674894879302363251360976543423772324175364890803620" @@ -2600,35 +2600,35 @@ static const struct test tests[] = { "557803150386942440617902799475289022644335161936545324332896" "88740976918528", false, - -INF, true, - -INF, true, - -0xf.fffffp+124, true, - -0xf.fffffp+124, true, - false, - -INF, true, - -INF, true, - -0xf.ffffffffffff8p+1020, true, - -0xf.ffffffffffff8p+1020, true, - false, - -INF, true, - -INF, true, - -0xf.fffffffffffffffp+16380, false, - -0xf.fffffffffffffffp+16380, false, - false, - -INF, true, - -INF, true, - -0xf.fffffffffffffffp+16380, false, - -0xf.fffffffffffffffp+16380, false, - false, - -INF, true, - -INF, true, - -0xf.fffffffffffffffffffffffffcp+1020, true, - -0xf.fffffffffffffffffffffffffcp+1020, true, - true, - -0xf.fffffffffffffff8p+16380, false, - -0xf.fffffffffffffff8p+16380, false, - -0xf.fffffffffffffff8p+16380, false, - -0xf.fffffffffffffff8p+16380, false), + -INF, true, false, + -INF, true, false, + -0xf.fffffp+124, true, false, + -0xf.fffffp+124, true, false, + false, + -INF, true, false, + -INF, true, false, + -0xf.ffffffffffff8p+1020, true, false, + -0xf.ffffffffffff8p+1020, true, false, + false, + -INF, true, false, + -INF, true, false, + -0xf.fffffffffffffffp+16380, false, false, + -0xf.fffffffffffffffp+16380, false, false, + false, + -INF, true, false, + -INF, true, false, + -0xf.fffffffffffffffp+16380, false, false, + -0xf.fffffffffffffffp+16380, false, false, + false, + -INF, true, false, + -INF, true, false, + -0xf.fffffffffffffffffffffffffcp+1020, true, false, + -0xf.fffffffffffffffffffffffffcp+1020, true, false, + true, + -0xf.fffffffffffffff8p+16380, false, false, + -0xf.fffffffffffffff8p+16380, false, false, + -0xf.fffffffffffffff8p+16380, false, false, + -0xf.fffffffffffffff8p+16380, false, false), TEST ("-11897314953572317650535115898294886679662540046955672189564" "992775624991818517272047604494429045704613843305676461674432" "866625552674894879302363251360976543423772324175364890803620" @@ -2713,35 +2713,35 @@ static const struct test tests[] = { "557803150386942440617902799475289022644335161936545324332896" "88740976918528.001", false, - -INF, true, - -INF, true, - -0xf.fffffp+124, true, - -0xf.fffffp+124, true, - false, - -INF, true, - -INF, true, - -0xf.ffffffffffff8p+1020, true, - -0xf.ffffffffffff8p+1020, true, - false, - -INF, true, - -INF, true, - -0xf.fffffffffffffffp+16380, false, - -0xf.fffffffffffffffp+16380, false, - false, - -INF, true, - -INF, true, - -0xf.fffffffffffffffp+16380, false, - -0xf.fffffffffffffffp+16380, false, - false, - -INF, true, - -INF, true, - -0xf.fffffffffffffffffffffffffcp+1020, true, - -0xf.fffffffffffffffffffffffffcp+1020, true, - false, - -0xf.fffffffffffffff8000000000008p+16380, false, - -0xf.fffffffffffffff8p+16380, false, - -0xf.fffffffffffffff8p+16380, false, - -0xf.fffffffffffffff8p+16380, false), + -INF, true, false, + -INF, true, false, + -0xf.fffffp+124, true, false, + -0xf.fffffp+124, true, false, + false, + -INF, true, false, + -INF, true, false, + -0xf.ffffffffffff8p+1020, true, false, + -0xf.ffffffffffff8p+1020, true, false, + false, + -INF, true, false, + -INF, true, false, + -0xf.fffffffffffffffp+16380, false, false, + -0xf.fffffffffffffffp+16380, false, false, + false, + -INF, true, false, + -INF, true, false, + -0xf.fffffffffffffffp+16380, false, false, + -0xf.fffffffffffffffp+16380, false, false, + false, + -INF, true, false, + -INF, true, false, + -0xf.fffffffffffffffffffffffffcp+1020, true, false, + -0xf.fffffffffffffffffffffffffcp+1020, true, false, + false, + -0xf.fffffffffffffff8000000000008p+16380, false, false, + -0xf.fffffffffffffff8p+16380, false, false, + -0xf.fffffffffffffff8p+16380, false, false, + -0xf.fffffffffffffff8p+16380, false, false), TEST ("118973149535723176508575932662800707347995686986910214150118" "685272271246896789803961473130416053705672050873552479421805" "932646640744124594447361172514341324846716679654551308018400" @@ -2826,35 +2826,35 @@ static const struct test tests[] = { "972233447491583165728635513802591543441145939539353470970452" "5536550715391.999", false, - 0xf.fffffp+124, true, - INF, true, - 0xf.fffffp+124, true, - INF, true, - false, - 0xf.ffffffffffff8p+1020, true, - INF, true, - 0xf.ffffffffffff8p+1020, true, - INF, true, - false, - 0xf.fffffffffffffffp+16380, false, - INF, true, - 0xf.fffffffffffffffp+16380, false, - INF, true, - false, - 0xf.fffffffffffffffp+16380, false, - INF, true, - 0xf.fffffffffffffffp+16380, false, - INF, true, - false, - 0xf.fffffffffffffffffffffffffcp+1020, true, - INF, true, - 0xf.fffffffffffffffffffffffffcp+1020, true, - INF, true, - false, - 0xf.fffffffffffffffffffffffffff8p+16380, false, - 0xf.fffffffffffffffffffffffffff8p+16380, false, - 0xf.fffffffffffffffffffffffffff8p+16380, false, - INF, true), + 0xf.fffffp+124, true, false, + INF, true, false, + 0xf.fffffp+124, true, false, + INF, true, false, + false, + 0xf.ffffffffffff8p+1020, true, false, + INF, true, false, + 0xf.ffffffffffff8p+1020, true, false, + INF, true, false, + false, + 0xf.fffffffffffffffp+16380, false, false, + INF, true, false, + 0xf.fffffffffffffffp+16380, false, false, + INF, true, false, + false, + 0xf.fffffffffffffffp+16380, false, false, + INF, true, false, + 0xf.fffffffffffffffp+16380, false, false, + INF, true, false, + false, + 0xf.fffffffffffffffffffffffffcp+1020, true, false, + INF, true, false, + 0xf.fffffffffffffffffffffffffcp+1020, true, false, + INF, true, false, + false, + 0xf.fffffffffffffffffffffffffff8p+16380, false, false, + 0xf.fffffffffffffffffffffffffff8p+16380, false, false, + 0xf.fffffffffffffffffffffffffff8p+16380, false, false, + INF, true, false), TEST ("118973149535723176508575932662800707347995686986910214150118" "685272271246896789803961473130416053705672050873552479421805" "932646640744124594447361172514341324846716679654551308018400" @@ -2939,35 +2939,35 @@ static const struct test tests[] = { "972233447491583165728635513802591543441145939539353470970452" "5536550715392", false, - 0xf.fffffp+124, true, - INF, true, - 0xf.fffffp+124, true, - INF, true, - false, - 0xf.ffffffffffff8p+1020, true, - INF, true, - 0xf.ffffffffffff8p+1020, true, - INF, true, - false, - 0xf.fffffffffffffffp+16380, false, - INF, true, - 0xf.fffffffffffffffp+16380, false, - INF, true, - false, - 0xf.fffffffffffffffp+16380, false, - INF, true, - 0xf.fffffffffffffffp+16380, false, - INF, true, - false, - 0xf.fffffffffffffffffffffffffcp+1020, true, - INF, true, - 0xf.fffffffffffffffffffffffffcp+1020, true, - INF, true, - false, - 0xf.fffffffffffffffffffffffffff8p+16380, false, - INF, true, - 0xf.fffffffffffffffffffffffffff8p+16380, false, - INF, true), + 0xf.fffffp+124, true, false, + INF, true, false, + 0xf.fffffp+124, true, false, + INF, true, false, + false, + 0xf.ffffffffffff8p+1020, true, false, + INF, true, false, + 0xf.ffffffffffff8p+1020, true, false, + INF, true, false, + false, + 0xf.fffffffffffffffp+16380, false, false, + INF, true, false, + 0xf.fffffffffffffffp+16380, false, false, + INF, true, false, + false, + 0xf.fffffffffffffffp+16380, false, false, + INF, true, false, + 0xf.fffffffffffffffp+16380, false, false, + INF, true, false, + false, + 0xf.fffffffffffffffffffffffffcp+1020, true, false, + INF, true, false, + 0xf.fffffffffffffffffffffffffcp+1020, true, false, + INF, true, false, + false, + 0xf.fffffffffffffffffffffffffff8p+16380, false, false, + INF, true, false, + 0xf.fffffffffffffffffffffffffff8p+16380, false, false, + INF, true, false), TEST ("118973149535723176508575932662800707347995686986910214150118" "685272271246896789803961473130416053705672050873552479421805" "932646640744124594447361172514341324846716679654551308018400" @@ -3052,35 +3052,35 @@ static const struct test tests[] = { "972233447491583165728635513802591543441145939539353470970452" "5536550715392.001", false, - 0xf.fffffp+124, true, - INF, true, - 0xf.fffffp+124, true, - INF, true, - false, - 0xf.ffffffffffff8p+1020, true, - INF, true, - 0xf.ffffffffffff8p+1020, true, - INF, true, - false, - 0xf.fffffffffffffffp+16380, false, - INF, true, - 0xf.fffffffffffffffp+16380, false, - INF, true, - false, - 0xf.fffffffffffffffp+16380, false, - INF, true, - 0xf.fffffffffffffffp+16380, false, - INF, true, - false, - 0xf.fffffffffffffffffffffffffcp+1020, true, - INF, true, - 0xf.fffffffffffffffffffffffffcp+1020, true, - INF, true, - false, - 0xf.fffffffffffffffffffffffffff8p+16380, false, - INF, true, - 0xf.fffffffffffffffffffffffffff8p+16380, false, - INF, true), + 0xf.fffffp+124, true, false, + INF, true, false, + 0xf.fffffp+124, true, false, + INF, true, false, + false, + 0xf.ffffffffffff8p+1020, true, false, + INF, true, false, + 0xf.ffffffffffff8p+1020, true, false, + INF, true, false, + false, + 0xf.fffffffffffffffp+16380, false, false, + INF, true, false, + 0xf.fffffffffffffffp+16380, false, false, + INF, true, false, + false, + 0xf.fffffffffffffffp+16380, false, false, + INF, true, false, + 0xf.fffffffffffffffp+16380, false, false, + INF, true, false, + false, + 0xf.fffffffffffffffffffffffffcp+1020, true, false, + INF, true, false, + 0xf.fffffffffffffffffffffffffcp+1020, true, false, + INF, true, false, + false, + 0xf.fffffffffffffffffffffffffff8p+16380, false, false, + INF, true, false, + 0xf.fffffffffffffffffffffffffff8p+16380, false, false, + INF, true, false), TEST ("-11897314953572317650857593266280070734799568698691021415011" "868527227124689678980396147313041605370567205087355247942180" "593264664074412459444736117251434132484671667965455130801840" @@ -3165,35 +3165,35 @@ static const struct test tests[] = { "097223344749158316572863551380259154344114593953935347097045" "25536550715391.999", false, - -INF, true, - -INF, true, - -0xf.fffffp+124, true, - -0xf.fffffp+124, true, - false, - -INF, true, - -INF, true, - -0xf.ffffffffffff8p+1020, true, - -0xf.ffffffffffff8p+1020, true, - false, - -INF, true, - -INF, true, - -0xf.fffffffffffffffp+16380, false, - -0xf.fffffffffffffffp+16380, false, - false, - -INF, true, - -INF, true, - -0xf.fffffffffffffffp+16380, false, - -0xf.fffffffffffffffp+16380, false, - false, - -INF, true, - -INF, true, - -0xf.fffffffffffffffffffffffffcp+1020, true, - -0xf.fffffffffffffffffffffffffcp+1020, true, - false, - -INF, true, - -0xf.fffffffffffffffffffffffffff8p+16380, false, - -0xf.fffffffffffffffffffffffffff8p+16380, false, - -0xf.fffffffffffffffffffffffffff8p+16380, false), + -INF, true, false, + -INF, true, false, + -0xf.fffffp+124, true, false, + -0xf.fffffp+124, true, false, + false, + -INF, true, false, + -INF, true, false, + -0xf.ffffffffffff8p+1020, true, false, + -0xf.ffffffffffff8p+1020, true, false, + false, + -INF, true, false, + -INF, true, false, + -0xf.fffffffffffffffp+16380, false, false, + -0xf.fffffffffffffffp+16380, false, false, + false, + -INF, true, false, + -INF, true, false, + -0xf.fffffffffffffffp+16380, false, false, + -0xf.fffffffffffffffp+16380, false, false, + false, + -INF, true, false, + -INF, true, false, + -0xf.fffffffffffffffffffffffffcp+1020, true, false, + -0xf.fffffffffffffffffffffffffcp+1020, true, false, + false, + -INF, true, false, + -0xf.fffffffffffffffffffffffffff8p+16380, false, false, + -0xf.fffffffffffffffffffffffffff8p+16380, false, false, + -0xf.fffffffffffffffffffffffffff8p+16380, false, false), TEST ("-11897314953572317650857593266280070734799568698691021415011" "868527227124689678980396147313041605370567205087355247942180" "593264664074412459444736117251434132484671667965455130801840" @@ -3278,35 +3278,35 @@ static const struct test tests[] = { "097223344749158316572863551380259154344114593953935347097045" "25536550715392", false, - -INF, true, - -INF, true, - -0xf.fffffp+124, true, - -0xf.fffffp+124, true, - false, - -INF, true, - -INF, true, - -0xf.ffffffffffff8p+1020, true, - -0xf.ffffffffffff8p+1020, true, - false, - -INF, true, - -INF, true, - -0xf.fffffffffffffffp+16380, false, - -0xf.fffffffffffffffp+16380, false, - false, - -INF, true, - -INF, true, - -0xf.fffffffffffffffp+16380, false, - -0xf.fffffffffffffffp+16380, false, - false, - -INF, true, - -INF, true, - -0xf.fffffffffffffffffffffffffcp+1020, true, - -0xf.fffffffffffffffffffffffffcp+1020, true, - false, - -INF, true, - -INF, true, - -0xf.fffffffffffffffffffffffffff8p+16380, false, - -0xf.fffffffffffffffffffffffffff8p+16380, false), + -INF, true, false, + -INF, true, false, + -0xf.fffffp+124, true, false, + -0xf.fffffp+124, true, false, + false, + -INF, true, false, + -INF, true, false, + -0xf.ffffffffffff8p+1020, true, false, + -0xf.ffffffffffff8p+1020, true, false, + false, + -INF, true, false, + -INF, true, false, + -0xf.fffffffffffffffp+16380, false, false, + -0xf.fffffffffffffffp+16380, false, false, + false, + -INF, true, false, + -INF, true, false, + -0xf.fffffffffffffffp+16380, false, false, + -0xf.fffffffffffffffp+16380, false, false, + false, + -INF, true, false, + -INF, true, false, + -0xf.fffffffffffffffffffffffffcp+1020, true, false, + -0xf.fffffffffffffffffffffffffcp+1020, true, false, + false, + -INF, true, false, + -INF, true, false, + -0xf.fffffffffffffffffffffffffff8p+16380, false, false, + -0xf.fffffffffffffffffffffffffff8p+16380, false, false), TEST ("-11897314953572317650857593266280070734799568698691021415011" "868527227124689678980396147313041605370567205087355247942180" "593264664074412459444736117251434132484671667965455130801840" @@ -3391,419 +3391,419 @@ static const struct test tests[] = { "097223344749158316572863551380259154344114593953935347097045" "25536550715392.001", false, - -INF, true, - -INF, true, - -0xf.fffffp+124, true, - -0xf.fffffp+124, true, - false, - -INF, true, - -INF, true, - -0xf.ffffffffffff8p+1020, true, - -0xf.ffffffffffff8p+1020, true, - false, - -INF, true, - -INF, true, - -0xf.fffffffffffffffp+16380, false, - -0xf.fffffffffffffffp+16380, false, - false, - -INF, true, - -INF, true, - -0xf.fffffffffffffffp+16380, false, - -0xf.fffffffffffffffp+16380, false, - false, - -INF, true, - -INF, true, - -0xf.fffffffffffffffffffffffffcp+1020, true, - -0xf.fffffffffffffffffffffffffcp+1020, true, - false, - -INF, true, - -INF, true, - -0xf.fffffffffffffffffffffffffff8p+16380, false, - -0xf.fffffffffffffffffffffffffff8p+16380, false), + -INF, true, false, + -INF, true, false, + -0xf.fffffp+124, true, false, + -0xf.fffffp+124, true, false, + false, + -INF, true, false, + -INF, true, false, + -0xf.ffffffffffff8p+1020, true, false, + -0xf.ffffffffffff8p+1020, true, false, + false, + -INF, true, false, + -INF, true, false, + -0xf.fffffffffffffffp+16380, false, false, + -0xf.fffffffffffffffp+16380, false, false, + false, + -INF, true, false, + -INF, true, false, + -0xf.fffffffffffffffp+16380, false, false, + -0xf.fffffffffffffffp+16380, false, false, + false, + -INF, true, false, + -INF, true, false, + -0xf.fffffffffffffffffffffffffcp+1020, true, false, + -0xf.fffffffffffffffffffffffffcp+1020, true, false, + false, + -INF, true, false, + -INF, true, false, + -0xf.fffffffffffffffffffffffffff8p+16380, false, false, + -0xf.fffffffffffffffffffffffffff8p+16380, false, false), TEST ("2.1019476964872256063855943749348741969203929128147736576356" "0242583468662402879090222995728254318237304687499e-45", false, - 0x8p-152, false, - 0x8p-152, false, - 0x8p-152, false, - 0x1p-148, false, - false, - 0xb.ffffffffffff8p-152, false, - 0xcp-152, false, - 0xb.ffffffffffff8p-152, false, - 0xcp-152, false, - false, - 0xb.fffffffffffffffp-152, false, - 0xcp-152, false, - 0xb.fffffffffffffffp-152, false, - 0xcp-152, false, - false, - 0xb.fffffffffffffffp-152, false, - 0xcp-152, false, - 0xb.fffffffffffffffp-152, false, - 0xcp-152, false, - false, - 0xb.fffffffffffffffffffffffffcp-152, false, - 0xcp-152, false, - 0xb.fffffffffffffffffffffffffcp-152, false, - 0xcp-152, false, - false, - 0xb.fffffffffffffffffffffffffff8p-152, false, - 0xcp-152, false, - 0xb.fffffffffffffffffffffffffff8p-152, false, - 0xcp-152, false), + 0x8p-152, false, true, + 0x8p-152, false, true, + 0x8p-152, false, true, + 0x1p-148, false, true, + false, + 0xb.ffffffffffff8p-152, false, false, + 0xcp-152, false, false, + 0xb.ffffffffffff8p-152, false, false, + 0xcp-152, false, false, + false, + 0xb.fffffffffffffffp-152, false, false, + 0xcp-152, false, false, + 0xb.fffffffffffffffp-152, false, false, + 0xcp-152, false, false, + false, + 0xb.fffffffffffffffp-152, false, false, + 0xcp-152, false, false, + 0xb.fffffffffffffffp-152, false, false, + 0xcp-152, false, false, + false, + 0xb.fffffffffffffffffffffffffcp-152, false, false, + 0xcp-152, false, false, + 0xb.fffffffffffffffffffffffffcp-152, false, false, + 0xcp-152, false, false, + false, + 0xb.fffffffffffffffffffffffffff8p-152, false, false, + 0xcp-152, false, false, + 0xb.fffffffffffffffffffffffffff8p-152, false, false, + 0xcp-152, false, false), TEST ("2.1019476964872256063855943749348741969203929128147736576356" "02425834686624028790902229957282543182373046875e-45", false, - 0x8p-152, false, - 0x1p-148, false, - 0x8p-152, false, - 0x1p-148, false, - true, - 0xcp-152, false, - 0xcp-152, false, - 0xcp-152, false, - 0xcp-152, false, - true, - 0xcp-152, false, - 0xcp-152, false, - 0xcp-152, false, - 0xcp-152, false, - true, - 0xcp-152, false, - 0xcp-152, false, - 0xcp-152, false, - 0xcp-152, false, - true, - 0xcp-152, false, - 0xcp-152, false, - 0xcp-152, false, - 0xcp-152, false, - true, - 0xcp-152, false, - 0xcp-152, false, - 0xcp-152, false, - 0xcp-152, false), + 0x8p-152, false, true, + 0x1p-148, false, true, + 0x8p-152, false, true, + 0x1p-148, false, true, + true, + 0xcp-152, false, false, + 0xcp-152, false, false, + 0xcp-152, false, false, + 0xcp-152, false, false, + true, + 0xcp-152, false, false, + 0xcp-152, false, false, + 0xcp-152, false, false, + 0xcp-152, false, false, + true, + 0xcp-152, false, false, + 0xcp-152, false, false, + 0xcp-152, false, false, + 0xcp-152, false, false, + true, + 0xcp-152, false, false, + 0xcp-152, false, false, + 0xcp-152, false, false, + 0xcp-152, false, false, + true, + 0xcp-152, false, false, + 0xcp-152, false, false, + 0xcp-152, false, false, + 0xcp-152, false, false), TEST ("2.1019476964872256063855943749348741969203929128147736576356" "0242583468662402879090222995728254318237304687501e-45", false, - 0x8p-152, false, - 0x1p-148, false, - 0x8p-152, false, - 0x1p-148, false, - false, - 0xcp-152, false, - 0xcp-152, false, - 0xcp-152, false, - 0xc.0000000000008p-152, false, - false, - 0xcp-152, false, - 0xcp-152, false, - 0xcp-152, false, - 0xc.000000000000001p-152, false, - false, - 0xcp-152, false, - 0xcp-152, false, - 0xcp-152, false, - 0xc.000000000000001p-152, false, - false, - 0xcp-152, false, - 0xcp-152, false, - 0xcp-152, false, - 0xc.00000000000000000000000004p-152, false, - false, - 0xcp-152, false, - 0xcp-152, false, - 0xcp-152, false, - 0xc.0000000000000000000000000008p-152, false), + 0x8p-152, false, true, + 0x1p-148, false, true, + 0x8p-152, false, true, + 0x1p-148, false, true, + false, + 0xcp-152, false, false, + 0xcp-152, false, false, + 0xcp-152, false, false, + 0xc.0000000000008p-152, false, false, + false, + 0xcp-152, false, false, + 0xcp-152, false, false, + 0xcp-152, false, false, + 0xc.000000000000001p-152, false, false, + false, + 0xcp-152, false, false, + 0xcp-152, false, false, + 0xcp-152, false, false, + 0xc.000000000000001p-152, false, false, + false, + 0xcp-152, false, false, + 0xcp-152, false, false, + 0xcp-152, false, false, + 0xc.00000000000000000000000004p-152, false, false, + false, + 0xcp-152, false, false, + 0xcp-152, false, false, + 0xcp-152, false, false, + 0xc.0000000000000000000000000008p-152, false, false), TEST ("-2.101947696487225606385594374934874196920392912814773657635" "60242583468662402879090222995728254318237304687499e-45", false, - -0x1p-148, false, - -0x8p-152, false, - -0x8p-152, false, - -0x8p-152, false, - false, - -0xcp-152, false, - -0xcp-152, false, - -0xb.ffffffffffff8p-152, false, - -0xb.ffffffffffff8p-152, false, - false, - -0xcp-152, false, - -0xcp-152, false, - -0xb.fffffffffffffffp-152, false, - -0xb.fffffffffffffffp-152, false, - false, - -0xcp-152, false, - -0xcp-152, false, - -0xb.fffffffffffffffp-152, false, - -0xb.fffffffffffffffp-152, false, - false, - -0xcp-152, false, - -0xcp-152, false, - -0xb.fffffffffffffffffffffffffcp-152, false, - -0xb.fffffffffffffffffffffffffcp-152, false, - false, - -0xcp-152, false, - -0xcp-152, false, - -0xb.fffffffffffffffffffffffffff8p-152, false, - -0xb.fffffffffffffffffffffffffff8p-152, false), + -0x1p-148, false, true, + -0x8p-152, false, true, + -0x8p-152, false, true, + -0x8p-152, false, true, + false, + -0xcp-152, false, false, + -0xcp-152, false, false, + -0xb.ffffffffffff8p-152, false, false, + -0xb.ffffffffffff8p-152, false, false, + false, + -0xcp-152, false, false, + -0xcp-152, false, false, + -0xb.fffffffffffffffp-152, false, false, + -0xb.fffffffffffffffp-152, false, false, + false, + -0xcp-152, false, false, + -0xcp-152, false, false, + -0xb.fffffffffffffffp-152, false, false, + -0xb.fffffffffffffffp-152, false, false, + false, + -0xcp-152, false, false, + -0xcp-152, false, false, + -0xb.fffffffffffffffffffffffffcp-152, false, false, + -0xb.fffffffffffffffffffffffffcp-152, false, false, + false, + -0xcp-152, false, false, + -0xcp-152, false, false, + -0xb.fffffffffffffffffffffffffff8p-152, false, false, + -0xb.fffffffffffffffffffffffffff8p-152, false, false), TEST ("-2.101947696487225606385594374934874196920392912814773657635" "602425834686624028790902229957282543182373046875e-45", false, - -0x1p-148, false, - -0x1p-148, false, - -0x8p-152, false, - -0x8p-152, false, - true, - -0xcp-152, false, - -0xcp-152, false, - -0xcp-152, false, - -0xcp-152, false, - true, - -0xcp-152, false, - -0xcp-152, false, - -0xcp-152, false, - -0xcp-152, false, - true, - -0xcp-152, false, - -0xcp-152, false, - -0xcp-152, false, - -0xcp-152, false, - true, - -0xcp-152, false, - -0xcp-152, false, - -0xcp-152, false, - -0xcp-152, false, - true, - -0xcp-152, false, - -0xcp-152, false, - -0xcp-152, false, - -0xcp-152, false), + -0x1p-148, false, true, + -0x1p-148, false, true, + -0x8p-152, false, true, + -0x8p-152, false, true, + true, + -0xcp-152, false, false, + -0xcp-152, false, false, + -0xcp-152, false, false, + -0xcp-152, false, false, + true, + -0xcp-152, false, false, + -0xcp-152, false, false, + -0xcp-152, false, false, + -0xcp-152, false, false, + true, + -0xcp-152, false, false, + -0xcp-152, false, false, + -0xcp-152, false, false, + -0xcp-152, false, false, + true, + -0xcp-152, false, false, + -0xcp-152, false, false, + -0xcp-152, false, false, + -0xcp-152, false, false, + true, + -0xcp-152, false, false, + -0xcp-152, false, false, + -0xcp-152, false, false, + -0xcp-152, false, false), TEST ("-2.101947696487225606385594374934874196920392912814773657635" "60242583468662402879090222995728254318237304687501e-45", false, - -0x1p-148, false, - -0x1p-148, false, - -0x8p-152, false, - -0x8p-152, false, - false, - -0xc.0000000000008p-152, false, - -0xcp-152, false, - -0xcp-152, false, - -0xcp-152, false, - false, - -0xc.000000000000001p-152, false, - -0xcp-152, false, - -0xcp-152, false, - -0xcp-152, false, - false, - -0xc.000000000000001p-152, false, - -0xcp-152, false, - -0xcp-152, false, - -0xcp-152, false, - false, - -0xc.00000000000000000000000004p-152, false, - -0xcp-152, false, - -0xcp-152, false, - -0xcp-152, false, - false, - -0xc.0000000000000000000000000008p-152, false, - -0xcp-152, false, - -0xcp-152, false, - -0xcp-152, false), + -0x1p-148, false, true, + -0x1p-148, false, true, + -0x8p-152, false, true, + -0x8p-152, false, true, + false, + -0xc.0000000000008p-152, false, false, + -0xcp-152, false, false, + -0xcp-152, false, false, + -0xcp-152, false, false, + false, + -0xc.000000000000001p-152, false, false, + -0xcp-152, false, false, + -0xcp-152, false, false, + -0xcp-152, false, false, + false, + -0xc.000000000000001p-152, false, false, + -0xcp-152, false, false, + -0xcp-152, false, false, + -0xcp-152, false, false, + false, + -0xc.00000000000000000000000004p-152, false, false, + -0xcp-152, false, false, + -0xcp-152, false, false, + -0xcp-152, false, false, + false, + -0xc.0000000000000000000000000008p-152, false, false, + -0xcp-152, false, false, + -0xcp-152, false, false, + -0xcp-152, false, false), TEST ("3.5032461608120426773093239582247903282006548546912894293926" "7070972447770671465150371659547090530395507812499e-45", false, - 0x1p-148, false, - 0x1p-148, false, - 0x1p-148, false, - 0x1.8p-148, false, - false, - 0x1.3ffffffffffffp-148, false, - 0x1.4p-148, false, - 0x1.3ffffffffffffp-148, false, - 0x1.4p-148, false, - false, - 0x1.3ffffffffffffffep-148, false, - 0x1.4p-148, false, - 0x1.3ffffffffffffffep-148, false, - 0x1.4p-148, false, - false, - 0x1.3ffffffffffffffep-148, false, - 0x1.4p-148, false, - 0x1.3ffffffffffffffep-148, false, - 0x1.4p-148, false, - false, - 0x1.3fffffffffffffffffffffffff8p-148, false, - 0x1.4p-148, false, - 0x1.3fffffffffffffffffffffffff8p-148, false, - 0x1.4p-148, false, - false, - 0x1.3fffffffffffffffffffffffffffp-148, false, - 0x1.4p-148, false, - 0x1.3fffffffffffffffffffffffffffp-148, false, - 0x1.4p-148, false), + 0x1p-148, false, true, + 0x1p-148, false, true, + 0x1p-148, false, true, + 0x1.8p-148, false, true, + false, + 0x1.3ffffffffffffp-148, false, false, + 0x1.4p-148, false, false, + 0x1.3ffffffffffffp-148, false, false, + 0x1.4p-148, false, false, + false, + 0x1.3ffffffffffffffep-148, false, false, + 0x1.4p-148, false, false, + 0x1.3ffffffffffffffep-148, false, false, + 0x1.4p-148, false, false, + false, + 0x1.3ffffffffffffffep-148, false, false, + 0x1.4p-148, false, false, + 0x1.3ffffffffffffffep-148, false, false, + 0x1.4p-148, false, false, + false, + 0x1.3fffffffffffffffffffffffff8p-148, false, false, + 0x1.4p-148, false, false, + 0x1.3fffffffffffffffffffffffff8p-148, false, false, + 0x1.4p-148, false, false, + false, + 0x1.3fffffffffffffffffffffffffffp-148, false, false, + 0x1.4p-148, false, false, + 0x1.3fffffffffffffffffffffffffffp-148, false, false, + 0x1.4p-148, false, false), TEST ("3.5032461608120426773093239582247903282006548546912894293926" "70709724477706714651503716595470905303955078125e-45", false, - 0x1p-148, false, - 0x1p-148, false, - 0x1p-148, false, - 0x1.8p-148, false, - true, - 0x1.4p-148, false, - 0x1.4p-148, false, - 0x1.4p-148, false, - 0x1.4p-148, false, - true, - 0x1.4p-148, false, - 0x1.4p-148, false, - 0x1.4p-148, false, - 0x1.4p-148, false, - true, - 0x1.4p-148, false, - 0x1.4p-148, false, - 0x1.4p-148, false, - 0x1.4p-148, false, - true, - 0x1.4p-148, false, - 0x1.4p-148, false, - 0x1.4p-148, false, - 0x1.4p-148, false, - true, - 0x1.4p-148, false, - 0x1.4p-148, false, - 0x1.4p-148, false, - 0x1.4p-148, false), + 0x1p-148, false, true, + 0x1p-148, false, true, + 0x1p-148, false, true, + 0x1.8p-148, false, true, + true, + 0x1.4p-148, false, false, + 0x1.4p-148, false, false, + 0x1.4p-148, false, false, + 0x1.4p-148, false, false, + true, + 0x1.4p-148, false, false, + 0x1.4p-148, false, false, + 0x1.4p-148, false, false, + 0x1.4p-148, false, false, + true, + 0x1.4p-148, false, false, + 0x1.4p-148, false, false, + 0x1.4p-148, false, false, + 0x1.4p-148, false, false, + true, + 0x1.4p-148, false, false, + 0x1.4p-148, false, false, + 0x1.4p-148, false, false, + 0x1.4p-148, false, false, + true, + 0x1.4p-148, false, false, + 0x1.4p-148, false, false, + 0x1.4p-148, false, false, + 0x1.4p-148, false, false), TEST ("3.5032461608120426773093239582247903282006548546912894293926" "7070972447770671465150371659547090530395507812501e-45", false, - 0x1p-148, false, - 0x1.8p-148, false, - 0x1p-148, false, - 0x1.8p-148, false, - false, - 0x1.4p-148, false, - 0x1.4p-148, false, - 0x1.4p-148, false, - 0x1.4000000000001p-148, false, - false, - 0x1.4p-148, false, - 0x1.4p-148, false, - 0x1.4p-148, false, - 0x1.4000000000000002p-148, false, - false, - 0x1.4p-148, false, - 0x1.4p-148, false, - 0x1.4p-148, false, - 0x1.4000000000000002p-148, false, - false, - 0x1.4p-148, false, - 0x1.4p-148, false, - 0x1.4p-148, false, - 0x1.400000000000000000000000008p-148, false, - false, - 0x1.4p-148, false, - 0x1.4p-148, false, - 0x1.4p-148, false, - 0x1.4000000000000000000000000001p-148, false), + 0x1p-148, false, true, + 0x1.8p-148, false, true, + 0x1p-148, false, true, + 0x1.8p-148, false, true, + false, + 0x1.4p-148, false, false, + 0x1.4p-148, false, false, + 0x1.4p-148, false, false, + 0x1.4000000000001p-148, false, false, + false, + 0x1.4p-148, false, false, + 0x1.4p-148, false, false, + 0x1.4p-148, false, false, + 0x1.4000000000000002p-148, false, false, + false, + 0x1.4p-148, false, false, + 0x1.4p-148, false, false, + 0x1.4p-148, false, false, + 0x1.4000000000000002p-148, false, false, + false, + 0x1.4p-148, false, false, + 0x1.4p-148, false, false, + 0x1.4p-148, false, false, + 0x1.400000000000000000000000008p-148, false, false, + false, + 0x1.4p-148, false, false, + 0x1.4p-148, false, false, + 0x1.4p-148, false, false, + 0x1.4000000000000000000000000001p-148, false, false), TEST ("-3.503246160812042677309323958224790328200654854691289429392" "67070972447770671465150371659547090530395507812499e-45", false, - -0x1.8p-148, false, - -0x1p-148, false, - -0x1p-148, false, - -0x1p-148, false, - false, - -0x1.4p-148, false, - -0x1.4p-148, false, - -0x1.3ffffffffffffp-148, false, - -0x1.3ffffffffffffp-148, false, - false, - -0x1.4p-148, false, - -0x1.4p-148, false, - -0x1.3ffffffffffffffep-148, false, - -0x1.3ffffffffffffffep-148, false, - false, - -0x1.4p-148, false, - -0x1.4p-148, false, - -0x1.3ffffffffffffffep-148, false, - -0x1.3ffffffffffffffep-148, false, - false, - -0x1.4p-148, false, - -0x1.4p-148, false, - -0x1.3fffffffffffffffffffffffff8p-148, false, - -0x1.3fffffffffffffffffffffffff8p-148, false, - false, - -0x1.4p-148, false, - -0x1.4p-148, false, - -0x1.3fffffffffffffffffffffffffffp-148, false, - -0x1.3fffffffffffffffffffffffffffp-148, false), + -0x1.8p-148, false, true, + -0x1p-148, false, true, + -0x1p-148, false, true, + -0x1p-148, false, true, + false, + -0x1.4p-148, false, false, + -0x1.4p-148, false, false, + -0x1.3ffffffffffffp-148, false, false, + -0x1.3ffffffffffffp-148, false, false, + false, + -0x1.4p-148, false, false, + -0x1.4p-148, false, false, + -0x1.3ffffffffffffffep-148, false, false, + -0x1.3ffffffffffffffep-148, false, false, + false, + -0x1.4p-148, false, false, + -0x1.4p-148, false, false, + -0x1.3ffffffffffffffep-148, false, false, + -0x1.3ffffffffffffffep-148, false, false, + false, + -0x1.4p-148, false, false, + -0x1.4p-148, false, false, + -0x1.3fffffffffffffffffffffffff8p-148, false, false, + -0x1.3fffffffffffffffffffffffff8p-148, false, false, + false, + -0x1.4p-148, false, false, + -0x1.4p-148, false, false, + -0x1.3fffffffffffffffffffffffffffp-148, false, false, + -0x1.3fffffffffffffffffffffffffffp-148, false, false), TEST ("-3.503246160812042677309323958224790328200654854691289429392" "670709724477706714651503716595470905303955078125e-45", false, - -0x1.8p-148, false, - -0x1p-148, false, - -0x1p-148, false, - -0x1p-148, false, - true, - -0x1.4p-148, false, - -0x1.4p-148, false, - -0x1.4p-148, false, - -0x1.4p-148, false, - true, - -0x1.4p-148, false, - -0x1.4p-148, false, - -0x1.4p-148, false, - -0x1.4p-148, false, - true, - -0x1.4p-148, false, - -0x1.4p-148, false, - -0x1.4p-148, false, - -0x1.4p-148, false, - true, - -0x1.4p-148, false, - -0x1.4p-148, false, - -0x1.4p-148, false, - -0x1.4p-148, false, - true, - -0x1.4p-148, false, - -0x1.4p-148, false, - -0x1.4p-148, false, - -0x1.4p-148, false), + -0x1.8p-148, false, true, + -0x1p-148, false, true, + -0x1p-148, false, true, + -0x1p-148, false, true, + true, + -0x1.4p-148, false, false, + -0x1.4p-148, false, false, + -0x1.4p-148, false, false, + -0x1.4p-148, false, false, + true, + -0x1.4p-148, false, false, + -0x1.4p-148, false, false, + -0x1.4p-148, false, false, + -0x1.4p-148, false, false, + true, + -0x1.4p-148, false, false, + -0x1.4p-148, false, false, + -0x1.4p-148, false, false, + -0x1.4p-148, false, false, + true, + -0x1.4p-148, false, false, + -0x1.4p-148, false, false, + -0x1.4p-148, false, false, + -0x1.4p-148, false, false, + true, + -0x1.4p-148, false, false, + -0x1.4p-148, false, false, + -0x1.4p-148, false, false, + -0x1.4p-148, false, false), TEST ("-3.503246160812042677309323958224790328200654854691289429392" "67070972447770671465150371659547090530395507812501e-45", false, - -0x1.8p-148, false, - -0x1.8p-148, false, - -0x1p-148, false, - -0x1p-148, false, - false, - -0x1.4000000000001p-148, false, - -0x1.4p-148, false, - -0x1.4p-148, false, - -0x1.4p-148, false, - false, - -0x1.4000000000000002p-148, false, - -0x1.4p-148, false, - -0x1.4p-148, false, - -0x1.4p-148, false, - false, - -0x1.4000000000000002p-148, false, - -0x1.4p-148, false, - -0x1.4p-148, false, - -0x1.4p-148, false, - false, - -0x1.400000000000000000000000008p-148, false, - -0x1.4p-148, false, - -0x1.4p-148, false, - -0x1.4p-148, false, - false, - -0x1.4000000000000000000000000001p-148, false, - -0x1.4p-148, false, - -0x1.4p-148, false, - -0x1.4p-148, false), + -0x1.8p-148, false, true, + -0x1.8p-148, false, true, + -0x1p-148, false, true, + -0x1p-148, false, true, + false, + -0x1.4000000000001p-148, false, false, + -0x1.4p-148, false, false, + -0x1.4p-148, false, false, + -0x1.4p-148, false, false, + false, + -0x1.4000000000000002p-148, false, false, + -0x1.4p-148, false, false, + -0x1.4p-148, false, false, + -0x1.4p-148, false, false, + false, + -0x1.4000000000000002p-148, false, false, + -0x1.4p-148, false, false, + -0x1.4p-148, false, false, + -0x1.4p-148, false, false, + false, + -0x1.400000000000000000000000008p-148, false, false, + -0x1.4p-148, false, false, + -0x1.4p-148, false, false, + -0x1.4p-148, false, false, + false, + -0x1.4000000000000000000000000001p-148, false, false, + -0x1.4p-148, false, false, + -0x1.4p-148, false, false, + -0x1.4p-148, false, false), TEST ("7.4109846876186981626485318930233205854758970392148714663837" "852375101326090531312779794975454245398856969484704316857659" "638998506553390969459816219401617281718945106978546710679176" @@ -3818,35 +3818,35 @@ static const struct test tests[] = { "337560846003984904972149117463085539556354188641513168478436" "31308023759629577398300170898437499e-324", false, - 0x0p+0, false, - 0x0p+0, false, - 0x0p+0, false, - 0x8p-152, false, - false, - 0x4p-1076, false, - 0x4p-1076, false, - 0x4p-1076, false, - 0x8p-1076, false, - false, - 0x5.fffffffffffffff8p-1076, false, - 0x6p-1076, false, - 0x5.fffffffffffffff8p-1076, false, - 0x6p-1076, false, - false, - 0x5.fffffffffffffff8p-1076, false, - 0x6p-1076, false, - 0x5.fffffffffffffff8p-1076, false, - 0x6p-1076, false, - false, - 0x4p-1076, false, - 0x4p-1076, false, - 0x4p-1076, false, - 0x8p-1076, false, - false, - 0x5.fffffffffffffffffffffffffffcp-1076, false, - 0x6p-1076, false, - 0x5.fffffffffffffffffffffffffffcp-1076, false, - 0x6p-1076, false), + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x8p-152, false, true, + false, + 0x4p-1076, false, true, + 0x4p-1076, false, true, + 0x4p-1076, false, true, + 0x8p-1076, false, true, + false, + 0x5.fffffffffffffff8p-1076, false, false, + 0x6p-1076, false, false, + 0x5.fffffffffffffff8p-1076, false, false, + 0x6p-1076, false, false, + false, + 0x5.fffffffffffffff8p-1076, false, false, + 0x6p-1076, false, false, + 0x5.fffffffffffffff8p-1076, false, false, + 0x6p-1076, false, false, + false, + 0x4p-1076, false, true, + 0x4p-1076, false, true, + 0x4p-1076, false, true, + 0x8p-1076, false, true, + false, + 0x5.fffffffffffffffffffffffffffcp-1076, false, false, + 0x6p-1076, false, false, + 0x5.fffffffffffffffffffffffffffcp-1076, false, false, + 0x6p-1076, false, false), TEST ("7.4109846876186981626485318930233205854758970392148714663837" "852375101326090531312779794975454245398856969484704316857659" "638998506553390969459816219401617281718945106978546710679176" @@ -3861,35 +3861,35 @@ static const struct test tests[] = { "337560846003984904972149117463085539556354188641513168478436" "313080237596295773983001708984375e-324", false, - 0x0p+0, false, - 0x0p+0, false, - 0x0p+0, false, - 0x8p-152, false, - false, - 0x4p-1076, false, - 0x8p-1076, false, - 0x4p-1076, false, - 0x8p-1076, false, - true, - 0x6p-1076, false, - 0x6p-1076, false, - 0x6p-1076, false, - 0x6p-1076, false, - true, - 0x6p-1076, false, - 0x6p-1076, false, - 0x6p-1076, false, - 0x6p-1076, false, - false, - 0x4p-1076, false, - 0x8p-1076, false, - 0x4p-1076, false, - 0x8p-1076, false, - true, - 0x6p-1076, false, - 0x6p-1076, false, - 0x6p-1076, false, - 0x6p-1076, false), + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x8p-152, false, true, + false, + 0x4p-1076, false, true, + 0x8p-1076, false, true, + 0x4p-1076, false, true, + 0x8p-1076, false, true, + true, + 0x6p-1076, false, false, + 0x6p-1076, false, false, + 0x6p-1076, false, false, + 0x6p-1076, false, false, + true, + 0x6p-1076, false, false, + 0x6p-1076, false, false, + 0x6p-1076, false, false, + 0x6p-1076, false, false, + false, + 0x4p-1076, false, true, + 0x8p-1076, false, true, + 0x4p-1076, false, true, + 0x8p-1076, false, true, + true, + 0x6p-1076, false, false, + 0x6p-1076, false, false, + 0x6p-1076, false, false, + 0x6p-1076, false, false), TEST ("7.4109846876186981626485318930233205854758970392148714663837" "852375101326090531312779794975454245398856969484704316857659" "638998506553390969459816219401617281718945106978546710679176" @@ -3904,35 +3904,35 @@ static const struct test tests[] = { "337560846003984904972149117463085539556354188641513168478436" "31308023759629577398300170898437501e-324", false, - 0x0p+0, false, - 0x0p+0, false, - 0x0p+0, false, - 0x8p-152, false, - false, - 0x4p-1076, false, - 0x8p-1076, false, - 0x4p-1076, false, - 0x8p-1076, false, - false, - 0x6p-1076, false, - 0x6p-1076, false, - 0x6p-1076, false, - 0x6.0000000000000008p-1076, false, - false, - 0x6p-1076, false, - 0x6p-1076, false, - 0x6p-1076, false, - 0x6.0000000000000008p-1076, false, - false, - 0x4p-1076, false, - 0x8p-1076, false, - 0x4p-1076, false, - 0x8p-1076, false, - false, - 0x6p-1076, false, - 0x6p-1076, false, - 0x6p-1076, false, - 0x6.0000000000000000000000000004p-1076, false), + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x8p-152, false, true, + false, + 0x4p-1076, false, true, + 0x8p-1076, false, true, + 0x4p-1076, false, true, + 0x8p-1076, false, true, + false, + 0x6p-1076, false, false, + 0x6p-1076, false, false, + 0x6p-1076, false, false, + 0x6.0000000000000008p-1076, false, false, + false, + 0x6p-1076, false, false, + 0x6p-1076, false, false, + 0x6p-1076, false, false, + 0x6.0000000000000008p-1076, false, false, + false, + 0x4p-1076, false, true, + 0x8p-1076, false, true, + 0x4p-1076, false, true, + 0x8p-1076, false, true, + false, + 0x6p-1076, false, false, + 0x6p-1076, false, false, + 0x6p-1076, false, false, + 0x6.0000000000000000000000000004p-1076, false, false), TEST ("-7.410984687618698162648531893023320585475897039214871466383" "785237510132609053131277979497545424539885696948470431685765" "963899850655339096945981621940161728171894510697854671067917" @@ -3947,35 +3947,35 @@ static const struct test tests[] = { "433756084600398490497214911746308553955635418864151316847843" "631308023759629577398300170898437499e-324", false, - -0x8p-152, false, - -0x0p+0, false, - -0x0p+0, false, - -0x0p+0, false, - false, - -0x8p-1076, false, - -0x4p-1076, false, - -0x4p-1076, false, - -0x4p-1076, false, - false, - -0x6p-1076, false, - -0x6p-1076, false, - -0x5.fffffffffffffff8p-1076, false, - -0x5.fffffffffffffff8p-1076, false, - false, - -0x6p-1076, false, - -0x6p-1076, false, - -0x5.fffffffffffffff8p-1076, false, - -0x5.fffffffffffffff8p-1076, false, - false, - -0x8p-1076, false, - -0x4p-1076, false, - -0x4p-1076, false, - -0x4p-1076, false, - false, - -0x6p-1076, false, - -0x6p-1076, false, - -0x5.fffffffffffffffffffffffffffcp-1076, false, - -0x5.fffffffffffffffffffffffffffcp-1076, false), + -0x8p-152, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + false, + -0x8p-1076, false, true, + -0x4p-1076, false, true, + -0x4p-1076, false, true, + -0x4p-1076, false, true, + false, + -0x6p-1076, false, false, + -0x6p-1076, false, false, + -0x5.fffffffffffffff8p-1076, false, false, + -0x5.fffffffffffffff8p-1076, false, false, + false, + -0x6p-1076, false, false, + -0x6p-1076, false, false, + -0x5.fffffffffffffff8p-1076, false, false, + -0x5.fffffffffffffff8p-1076, false, false, + false, + -0x8p-1076, false, true, + -0x4p-1076, false, true, + -0x4p-1076, false, true, + -0x4p-1076, false, true, + false, + -0x6p-1076, false, false, + -0x6p-1076, false, false, + -0x5.fffffffffffffffffffffffffffcp-1076, false, false, + -0x5.fffffffffffffffffffffffffffcp-1076, false, false), TEST ("-7.410984687618698162648531893023320585475897039214871466383" "785237510132609053131277979497545424539885696948470431685765" "963899850655339096945981621940161728171894510697854671067917" @@ -3990,35 +3990,35 @@ static const struct test tests[] = { "433756084600398490497214911746308553955635418864151316847843" "6313080237596295773983001708984375e-324", false, - -0x8p-152, false, - -0x0p+0, false, - -0x0p+0, false, - -0x0p+0, false, - false, - -0x8p-1076, false, - -0x8p-1076, false, - -0x4p-1076, false, - -0x4p-1076, false, - true, - -0x6p-1076, false, - -0x6p-1076, false, - -0x6p-1076, false, - -0x6p-1076, false, - true, - -0x6p-1076, false, - -0x6p-1076, false, - -0x6p-1076, false, - -0x6p-1076, false, - false, - -0x8p-1076, false, - -0x8p-1076, false, - -0x4p-1076, false, - -0x4p-1076, false, - true, - -0x6p-1076, false, - -0x6p-1076, false, - -0x6p-1076, false, - -0x6p-1076, false), + -0x8p-152, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + false, + -0x8p-1076, false, true, + -0x8p-1076, false, true, + -0x4p-1076, false, true, + -0x4p-1076, false, true, + true, + -0x6p-1076, false, false, + -0x6p-1076, false, false, + -0x6p-1076, false, false, + -0x6p-1076, false, false, + true, + -0x6p-1076, false, false, + -0x6p-1076, false, false, + -0x6p-1076, false, false, + -0x6p-1076, false, false, + false, + -0x8p-1076, false, true, + -0x8p-1076, false, true, + -0x4p-1076, false, true, + -0x4p-1076, false, true, + true, + -0x6p-1076, false, false, + -0x6p-1076, false, false, + -0x6p-1076, false, false, + -0x6p-1076, false, false), TEST ("-7.410984687618698162648531893023320585475897039214871466383" "785237510132609053131277979497545424539885696948470431685765" "963899850655339096945981621940161728171894510697854671067917" @@ -4033,35 +4033,35 @@ static const struct test tests[] = { "433756084600398490497214911746308553955635418864151316847843" "631308023759629577398300170898437501e-324", false, - -0x8p-152, false, - -0x0p+0, false, - -0x0p+0, false, - -0x0p+0, false, - false, - -0x8p-1076, false, - -0x8p-1076, false, - -0x4p-1076, false, - -0x4p-1076, false, - false, - -0x6.0000000000000008p-1076, false, - -0x6p-1076, false, - -0x6p-1076, false, - -0x6p-1076, false, - false, - -0x6.0000000000000008p-1076, false, - -0x6p-1076, false, - -0x6p-1076, false, - -0x6p-1076, false, - false, - -0x8p-1076, false, - -0x8p-1076, false, - -0x4p-1076, false, - -0x4p-1076, false, - false, - -0x6.0000000000000000000000000004p-1076, false, - -0x6p-1076, false, - -0x6p-1076, false, - -0x6p-1076, false), + -0x8p-152, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + false, + -0x8p-1076, false, true, + -0x8p-1076, false, true, + -0x4p-1076, false, true, + -0x4p-1076, false, true, + false, + -0x6.0000000000000008p-1076, false, false, + -0x6p-1076, false, false, + -0x6p-1076, false, false, + -0x6p-1076, false, false, + false, + -0x6.0000000000000008p-1076, false, false, + -0x6p-1076, false, false, + -0x6p-1076, false, false, + -0x6p-1076, false, false, + false, + -0x8p-1076, false, true, + -0x8p-1076, false, true, + -0x4p-1076, false, true, + -0x4p-1076, false, true, + false, + -0x6.0000000000000000000000000004p-1076, false, false, + -0x6p-1076, false, false, + -0x6p-1076, false, false, + -0x6p-1076, false, false), TEST ("5.4677992978237119037926089004291297245985762235403450155814" "707305425575329500966052143410629387408077958710210208052966" "529504784489330482549602621133847135082257338717668975178538" @@ -4255,35 +4255,35 @@ static const struct test tests[] = { "866268925981702690270202829595794350800918257913991744455922" "683343374046671669930219650268554687499e-4951", false, - 0x0p+0, false, - 0x0p+0, false, - 0x0p+0, false, - 0x8p-152, false, - false, - 0x0p+0, false, - 0x0p+0, false, - 0x0p+0, false, - 0x4p-1076, false, - false, - 0x8p-16448, false, - 0x8p-16448, false, - 0x8p-16448, false, - 0x1p-16444, false, - false, - 0x8p-16448, false, - 0xcp-16448, false, - 0x8p-16448, false, - 0xcp-16448, false, - false, - 0x0p+0, false, - 0x0p+0, false, - 0x0p+0, false, - 0x4p-1076, false, - false, - 0xb.fffffffffffcp-16448, false, - 0xcp-16448, false, - 0xb.fffffffffffcp-16448, false, - 0xcp-16448, false), + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x8p-152, false, true, + false, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x4p-1076, false, true, + false, + 0x8p-16448, false, true, + 0x8p-16448, false, true, + 0x8p-16448, false, true, + 0x1p-16444, false, true, + false, + 0x8p-16448, false, true, + 0xcp-16448, false, true, + 0x8p-16448, false, true, + 0xcp-16448, false, true, + false, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x4p-1076, false, true, + false, + 0xb.fffffffffffcp-16448, false, true, + 0xcp-16448, false, true, + 0xb.fffffffffffcp-16448, false, true, + 0xcp-16448, false, true), TEST ("5.4677992978237119037926089004291297245985762235403450155814" "707305425575329500966052143410629387408077958710210208052966" "529504784489330482549602621133847135082257338717668975178538" @@ -4477,35 +4477,35 @@ static const struct test tests[] = { "866268925981702690270202829595794350800918257913991744455922" "6833433740466716699302196502685546875e-4951", false, - 0x0p+0, false, - 0x0p+0, false, - 0x0p+0, false, - 0x8p-152, false, - false, - 0x0p+0, false, - 0x0p+0, false, - 0x0p+0, false, - 0x4p-1076, false, - false, - 0x8p-16448, false, - 0x1p-16444, false, - 0x8p-16448, false, - 0x1p-16444, false, - true, - 0xcp-16448, false, - 0xcp-16448, false, - 0xcp-16448, false, - 0xcp-16448, false, - false, - 0x0p+0, false, - 0x0p+0, false, - 0x0p+0, false, - 0x4p-1076, false, - true, - 0xcp-16448, false, - 0xcp-16448, false, - 0xcp-16448, false, - 0xcp-16448, false), + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x8p-152, false, true, + false, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x4p-1076, false, true, + false, + 0x8p-16448, false, true, + 0x1p-16444, false, true, + 0x8p-16448, false, true, + 0x1p-16444, false, true, + true, + 0xcp-16448, false, false, + 0xcp-16448, false, false, + 0xcp-16448, false, false, + 0xcp-16448, false, false, + false, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x4p-1076, false, true, + true, + 0xcp-16448, false, false, + 0xcp-16448, false, false, + 0xcp-16448, false, false, + 0xcp-16448, false, false), TEST ("5.4677992978237119037926089004291297245985762235403450155814" "707305425575329500966052143410629387408077958710210208052966" "529504784489330482549602621133847135082257338717668975178538" @@ -4699,35 +4699,35 @@ static const struct test tests[] = { "866268925981702690270202829595794350800918257913991744455922" "683343374046671669930219650268554687501e-4951", false, - 0x0p+0, false, - 0x0p+0, false, - 0x0p+0, false, - 0x8p-152, false, - false, - 0x0p+0, false, - 0x0p+0, false, - 0x0p+0, false, - 0x4p-1076, false, - false, - 0x8p-16448, false, - 0x1p-16444, false, - 0x8p-16448, false, - 0x1p-16444, false, - false, - 0xcp-16448, false, - 0xcp-16448, false, - 0xcp-16448, false, - 0x1p-16444, false, - false, - 0x0p+0, false, - 0x0p+0, false, - 0x0p+0, false, - 0x4p-1076, false, - false, - 0xcp-16448, false, - 0xcp-16448, false, - 0xcp-16448, false, - 0xc.000000000004p-16448, false), + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x8p-152, false, true, + false, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x4p-1076, false, true, + false, + 0x8p-16448, false, true, + 0x1p-16444, false, true, + 0x8p-16448, false, true, + 0x1p-16444, false, true, + false, + 0xcp-16448, false, true, + 0xcp-16448, false, true, + 0xcp-16448, false, true, + 0x1p-16444, false, true, + false, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x4p-1076, false, true, + false, + 0xcp-16448, false, true, + 0xcp-16448, false, true, + 0xcp-16448, false, true, + 0xc.000000000004p-16448, false, true), TEST ("-5.467799297823711903792608900429129724598576223540345015581" "470730542557532950096605214341062938740807795871021020805296" "652950478448933048254960262113384713508225733871766897517853" @@ -4921,35 +4921,35 @@ static const struct test tests[] = { "386626892598170269027020282959579435080091825791399174445592" "2683343374046671669930219650268554687499e-4951", false, - -0x8p-152, false, - -0x0p+0, false, - -0x0p+0, false, - -0x0p+0, false, - false, - -0x4p-1076, false, - -0x0p+0, false, - -0x0p+0, false, - -0x0p+0, false, - false, - -0x1p-16444, false, - -0x8p-16448, false, - -0x8p-16448, false, - -0x8p-16448, false, - false, - -0xcp-16448, false, - -0xcp-16448, false, - -0x8p-16448, false, - -0x8p-16448, false, - false, - -0x4p-1076, false, - -0x0p+0, false, - -0x0p+0, false, - -0x0p+0, false, - false, - -0xcp-16448, false, - -0xcp-16448, false, - -0xb.fffffffffffcp-16448, false, - -0xb.fffffffffffcp-16448, false), + -0x8p-152, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + false, + -0x4p-1076, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + false, + -0x1p-16444, false, true, + -0x8p-16448, false, true, + -0x8p-16448, false, true, + -0x8p-16448, false, true, + false, + -0xcp-16448, false, true, + -0xcp-16448, false, true, + -0x8p-16448, false, true, + -0x8p-16448, false, true, + false, + -0x4p-1076, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + false, + -0xcp-16448, false, true, + -0xcp-16448, false, true, + -0xb.fffffffffffcp-16448, false, true, + -0xb.fffffffffffcp-16448, false, true), TEST ("-5.467799297823711903792608900429129724598576223540345015581" "470730542557532950096605214341062938740807795871021020805296" "652950478448933048254960262113384713508225733871766897517853" @@ -5143,35 +5143,35 @@ static const struct test tests[] = { "386626892598170269027020282959579435080091825791399174445592" "26833433740466716699302196502685546875e-4951", false, - -0x8p-152, false, - -0x0p+0, false, - -0x0p+0, false, - -0x0p+0, false, - false, - -0x4p-1076, false, - -0x0p+0, false, - -0x0p+0, false, - -0x0p+0, false, - false, - -0x1p-16444, false, - -0x1p-16444, false, - -0x8p-16448, false, - -0x8p-16448, false, - true, - -0xcp-16448, false, - -0xcp-16448, false, - -0xcp-16448, false, - -0xcp-16448, false, - false, - -0x4p-1076, false, - -0x0p+0, false, - -0x0p+0, false, - -0x0p+0, false, - true, - -0xcp-16448, false, - -0xcp-16448, false, - -0xcp-16448, false, - -0xcp-16448, false), + -0x8p-152, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + false, + -0x4p-1076, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + false, + -0x1p-16444, false, true, + -0x1p-16444, false, true, + -0x8p-16448, false, true, + -0x8p-16448, false, true, + true, + -0xcp-16448, false, false, + -0xcp-16448, false, false, + -0xcp-16448, false, false, + -0xcp-16448, false, false, + false, + -0x4p-1076, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + true, + -0xcp-16448, false, false, + -0xcp-16448, false, false, + -0xcp-16448, false, false, + -0xcp-16448, false, false), TEST ("-5.467799297823711903792608900429129724598576223540345015581" "470730542557532950096605214341062938740807795871021020805296" "652950478448933048254960262113384713508225733871766897517853" @@ -5365,35 +5365,35 @@ static const struct test tests[] = { "386626892598170269027020282959579435080091825791399174445592" "2683343374046671669930219650268554687501e-4951", false, - -0x8p-152, false, - -0x0p+0, false, - -0x0p+0, false, - -0x0p+0, false, - false, - -0x4p-1076, false, - -0x0p+0, false, - -0x0p+0, false, - -0x0p+0, false, - false, - -0x1p-16444, false, - -0x1p-16444, false, - -0x8p-16448, false, - -0x8p-16448, false, - false, - -0x1p-16444, false, - -0xcp-16448, false, - -0xcp-16448, false, - -0xcp-16448, false, - false, - -0x4p-1076, false, - -0x0p+0, false, - -0x0p+0, false, - -0x0p+0, false, - false, - -0xc.000000000004p-16448, false, - -0xcp-16448, false, - -0xcp-16448, false, - -0xcp-16448, false), + -0x8p-152, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + false, + -0x4p-1076, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + false, + -0x1p-16444, false, true, + -0x1p-16444, false, true, + -0x8p-16448, false, true, + -0x8p-16448, false, true, + false, + -0x1p-16444, false, true, + -0xcp-16448, false, true, + -0xcp-16448, false, true, + -0xcp-16448, false, true, + false, + -0x4p-1076, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + false, + -0xc.000000000004p-16448, false, true, + -0xcp-16448, false, true, + -0xcp-16448, false, true, + -0xcp-16448, false, true), TEST ("5.4677992978237119037926089004291297245985762235403450155814" "707305425575329500966052143410629387408077958710210208052966" "529504784489330482549602621133847135082257338717668975178538" @@ -5587,35 +5587,35 @@ static const struct test tests[] = { "866268925981702690270202829595794350800918257913991744455922" "683343374046671669930219650268554687499e-4951", false, - 0x0p+0, false, - 0x0p+0, false, - 0x0p+0, false, - 0x8p-152, false, - false, - 0x0p+0, false, - 0x0p+0, false, - 0x0p+0, false, - 0x4p-1076, false, - false, - 0x8p-16448, false, - 0x8p-16448, false, - 0x8p-16448, false, - 0x1p-16444, false, - false, - 0x8p-16448, false, - 0xcp-16448, false, - 0x8p-16448, false, - 0xcp-16448, false, - false, - 0x0p+0, false, - 0x0p+0, false, - 0x0p+0, false, - 0x4p-1076, false, - false, - 0xb.fffffffffffcp-16448, false, - 0xcp-16448, false, - 0xb.fffffffffffcp-16448, false, - 0xcp-16448, false), + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x8p-152, false, true, + false, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x4p-1076, false, true, + false, + 0x8p-16448, false, true, + 0x8p-16448, false, true, + 0x8p-16448, false, true, + 0x1p-16444, false, true, + false, + 0x8p-16448, false, true, + 0xcp-16448, false, true, + 0x8p-16448, false, true, + 0xcp-16448, false, true, + false, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x4p-1076, false, true, + false, + 0xb.fffffffffffcp-16448, false, true, + 0xcp-16448, false, true, + 0xb.fffffffffffcp-16448, false, true, + 0xcp-16448, false, true), TEST ("5.4677992978237119037926089004291297245985762235403450155814" "707305425575329500966052143410629387408077958710210208052966" "529504784489330482549602621133847135082257338717668975178538" @@ -5809,35 +5809,35 @@ static const struct test tests[] = { "866268925981702690270202829595794350800918257913991744455922" "6833433740466716699302196502685546875e-4951", false, - 0x0p+0, false, - 0x0p+0, false, - 0x0p+0, false, - 0x8p-152, false, - false, - 0x0p+0, false, - 0x0p+0, false, - 0x0p+0, false, - 0x4p-1076, false, - false, - 0x8p-16448, false, - 0x1p-16444, false, - 0x8p-16448, false, - 0x1p-16444, false, - true, - 0xcp-16448, false, - 0xcp-16448, false, - 0xcp-16448, false, - 0xcp-16448, false, - false, - 0x0p+0, false, - 0x0p+0, false, - 0x0p+0, false, - 0x4p-1076, false, - true, - 0xcp-16448, false, - 0xcp-16448, false, - 0xcp-16448, false, - 0xcp-16448, false), + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x8p-152, false, true, + false, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x4p-1076, false, true, + false, + 0x8p-16448, false, true, + 0x1p-16444, false, true, + 0x8p-16448, false, true, + 0x1p-16444, false, true, + true, + 0xcp-16448, false, false, + 0xcp-16448, false, false, + 0xcp-16448, false, false, + 0xcp-16448, false, false, + false, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x4p-1076, false, true, + true, + 0xcp-16448, false, false, + 0xcp-16448, false, false, + 0xcp-16448, false, false, + 0xcp-16448, false, false), TEST ("5.4677992978237119037926089004291297245985762235403450155814" "707305425575329500966052143410629387408077958710210208052966" "529504784489330482549602621133847135082257338717668975178538" @@ -6031,35 +6031,35 @@ static const struct test tests[] = { "866268925981702690270202829595794350800918257913991744455922" "683343374046671669930219650268554687501e-4951", false, - 0x0p+0, false, - 0x0p+0, false, - 0x0p+0, false, - 0x8p-152, false, - false, - 0x0p+0, false, - 0x0p+0, false, - 0x0p+0, false, - 0x4p-1076, false, - false, - 0x8p-16448, false, - 0x1p-16444, false, - 0x8p-16448, false, - 0x1p-16444, false, - false, - 0xcp-16448, false, - 0xcp-16448, false, - 0xcp-16448, false, - 0x1p-16444, false, - false, - 0x0p+0, false, - 0x0p+0, false, - 0x0p+0, false, - 0x4p-1076, false, - false, - 0xcp-16448, false, - 0xcp-16448, false, - 0xcp-16448, false, - 0xc.000000000004p-16448, false), + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x8p-152, false, true, + false, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x4p-1076, false, true, + false, + 0x8p-16448, false, true, + 0x1p-16444, false, true, + 0x8p-16448, false, true, + 0x1p-16444, false, true, + false, + 0xcp-16448, false, true, + 0xcp-16448, false, true, + 0xcp-16448, false, true, + 0x1p-16444, false, true, + false, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x4p-1076, false, true, + false, + 0xcp-16448, false, true, + 0xcp-16448, false, true, + 0xcp-16448, false, true, + 0xc.000000000004p-16448, false, true), TEST ("-5.467799297823711903792608900429129724598576223540345015581" "470730542557532950096605214341062938740807795871021020805296" "652950478448933048254960262113384713508225733871766897517853" @@ -6253,35 +6253,35 @@ static const struct test tests[] = { "386626892598170269027020282959579435080091825791399174445592" "2683343374046671669930219650268554687499e-4951", false, - -0x8p-152, false, - -0x0p+0, false, - -0x0p+0, false, - -0x0p+0, false, - false, - -0x4p-1076, false, - -0x0p+0, false, - -0x0p+0, false, - -0x0p+0, false, - false, - -0x1p-16444, false, - -0x8p-16448, false, - -0x8p-16448, false, - -0x8p-16448, false, - false, - -0xcp-16448, false, - -0xcp-16448, false, - -0x8p-16448, false, - -0x8p-16448, false, - false, - -0x4p-1076, false, - -0x0p+0, false, - -0x0p+0, false, - -0x0p+0, false, - false, - -0xcp-16448, false, - -0xcp-16448, false, - -0xb.fffffffffffcp-16448, false, - -0xb.fffffffffffcp-16448, false), + -0x8p-152, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + false, + -0x4p-1076, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + false, + -0x1p-16444, false, true, + -0x8p-16448, false, true, + -0x8p-16448, false, true, + -0x8p-16448, false, true, + false, + -0xcp-16448, false, true, + -0xcp-16448, false, true, + -0x8p-16448, false, true, + -0x8p-16448, false, true, + false, + -0x4p-1076, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + false, + -0xcp-16448, false, true, + -0xcp-16448, false, true, + -0xb.fffffffffffcp-16448, false, true, + -0xb.fffffffffffcp-16448, false, true), TEST ("-5.467799297823711903792608900429129724598576223540345015581" "470730542557532950096605214341062938740807795871021020805296" "652950478448933048254960262113384713508225733871766897517853" @@ -6475,35 +6475,35 @@ static const struct test tests[] = { "386626892598170269027020282959579435080091825791399174445592" "26833433740466716699302196502685546875e-4951", false, - -0x8p-152, false, - -0x0p+0, false, - -0x0p+0, false, - -0x0p+0, false, - false, - -0x4p-1076, false, - -0x0p+0, false, - -0x0p+0, false, - -0x0p+0, false, - false, - -0x1p-16444, false, - -0x1p-16444, false, - -0x8p-16448, false, - -0x8p-16448, false, - true, - -0xcp-16448, false, - -0xcp-16448, false, - -0xcp-16448, false, - -0xcp-16448, false, - false, - -0x4p-1076, false, - -0x0p+0, false, - -0x0p+0, false, - -0x0p+0, false, - true, - -0xcp-16448, false, - -0xcp-16448, false, - -0xcp-16448, false, - -0xcp-16448, false), + -0x8p-152, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + false, + -0x4p-1076, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + false, + -0x1p-16444, false, true, + -0x1p-16444, false, true, + -0x8p-16448, false, true, + -0x8p-16448, false, true, + true, + -0xcp-16448, false, false, + -0xcp-16448, false, false, + -0xcp-16448, false, false, + -0xcp-16448, false, false, + false, + -0x4p-1076, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + true, + -0xcp-16448, false, false, + -0xcp-16448, false, false, + -0xcp-16448, false, false, + -0xcp-16448, false, false), TEST ("-5.467799297823711903792608900429129724598576223540345015581" "470730542557532950096605214341062938740807795871021020805296" "652950478448933048254960262113384713508225733871766897517853" @@ -6697,630 +6697,630 @@ static const struct test tests[] = { "386626892598170269027020282959579435080091825791399174445592" "2683343374046671669930219650268554687501e-4951", false, - -0x8p-152, false, - -0x0p+0, false, - -0x0p+0, false, - -0x0p+0, false, - false, - -0x4p-1076, false, - -0x0p+0, false, - -0x0p+0, false, - -0x0p+0, false, - false, - -0x1p-16444, false, - -0x1p-16444, false, - -0x8p-16448, false, - -0x8p-16448, false, - false, - -0x1p-16444, false, - -0xcp-16448, false, - -0xcp-16448, false, - -0xcp-16448, false, - false, - -0x4p-1076, false, - -0x0p+0, false, - -0x0p+0, false, - -0x0p+0, false, - false, - -0xc.000000000004p-16448, false, - -0xcp-16448, false, - -0xcp-16448, false, - -0xcp-16448, false), + -0x8p-152, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + false, + -0x4p-1076, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + false, + -0x1p-16444, false, true, + -0x1p-16444, false, true, + -0x8p-16448, false, true, + -0x8p-16448, false, true, + false, + -0x1p-16444, false, true, + -0xcp-16448, false, true, + -0xcp-16448, false, true, + -0xcp-16448, false, true, + false, + -0x4p-1076, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + false, + -0xc.000000000004p-16448, false, true, + -0xcp-16448, false, true, + -0xcp-16448, false, true, + -0xcp-16448, false, true), TEST ("-0x0.7p-149", false, - -0x8p-152, false, - -0x0p+0, false, - -0x0p+0, false, - -0x0p+0, false, - true, - -0x3.8p-152, false, - -0x3.8p-152, false, - -0x3.8p-152, false, - -0x3.8p-152, false, - true, - -0x3.8p-152, false, - -0x3.8p-152, false, - -0x3.8p-152, false, - -0x3.8p-152, false, - true, - -0x3.8p-152, false, - -0x3.8p-152, false, - -0x3.8p-152, false, - -0x3.8p-152, false, - true, - -0x3.8p-152, false, - -0x3.8p-152, false, - -0x3.8p-152, false, - -0x3.8p-152, false, - true, - -0x3.8p-152, false, - -0x3.8p-152, false, - -0x3.8p-152, false, - -0x3.8p-152, false), + -0x8p-152, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + true, + -0x3.8p-152, false, false, + -0x3.8p-152, false, false, + -0x3.8p-152, false, false, + -0x3.8p-152, false, false, + true, + -0x3.8p-152, false, false, + -0x3.8p-152, false, false, + -0x3.8p-152, false, false, + -0x3.8p-152, false, false, + true, + -0x3.8p-152, false, false, + -0x3.8p-152, false, false, + -0x3.8p-152, false, false, + -0x3.8p-152, false, false, + true, + -0x3.8p-152, false, false, + -0x3.8p-152, false, false, + -0x3.8p-152, false, false, + -0x3.8p-152, false, false, + true, + -0x3.8p-152, false, false, + -0x3.8p-152, false, false, + -0x3.8p-152, false, false, + -0x3.8p-152, false, false), TEST ("-0x0.7p-1074", false, - -0x8p-152, false, - -0x0p+0, false, - -0x0p+0, false, - -0x0p+0, false, - false, - -0x4p-1076, false, - -0x0p+0, false, - -0x0p+0, false, - -0x0p+0, false, - true, - -0x1.cp-1076, false, - -0x1.cp-1076, false, - -0x1.cp-1076, false, - -0x1.cp-1076, false, - true, - -0x1.cp-1076, false, - -0x1.cp-1076, false, - -0x1.cp-1076, false, - -0x1.cp-1076, false, - false, - -0x4p-1076, false, - -0x0p+0, false, - -0x0p+0, false, - -0x0p+0, false, - true, - -0x1.cp-1076, false, - -0x1.cp-1076, false, - -0x1.cp-1076, false, - -0x1.cp-1076, false), + -0x8p-152, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + false, + -0x4p-1076, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + true, + -0x1.cp-1076, false, false, + -0x1.cp-1076, false, false, + -0x1.cp-1076, false, false, + -0x1.cp-1076, false, false, + true, + -0x1.cp-1076, false, false, + -0x1.cp-1076, false, false, + -0x1.cp-1076, false, false, + -0x1.cp-1076, false, false, + false, + -0x4p-1076, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + true, + -0x1.cp-1076, false, false, + -0x1.cp-1076, false, false, + -0x1.cp-1076, false, false, + -0x1.cp-1076, false, false), TEST ("-0x0.7p-16445", false, - -0x8p-152, false, - -0x0p+0, false, - -0x0p+0, false, - -0x0p+0, false, - false, - -0x4p-1076, false, - -0x0p+0, false, - -0x0p+0, false, - -0x0p+0, false, - false, - -0x8p-16448, false, - -0x0p+0, false, - -0x0p+0, false, - -0x0p+0, false, - false, - -0x4p-16448, false, - -0x4p-16448, false, - -0x0p+0, false, - -0x0p+0, false, - false, - -0x4p-1076, false, - -0x0p+0, false, - -0x0p+0, false, - -0x0p+0, false, - true, - -0x3.8p-16448, false, - -0x3.8p-16448, false, - -0x3.8p-16448, false, - -0x3.8p-16448, false), + -0x8p-152, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + false, + -0x4p-1076, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + false, + -0x8p-16448, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + false, + -0x4p-16448, false, true, + -0x4p-16448, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + false, + -0x4p-1076, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + true, + -0x3.8p-16448, false, false, + -0x3.8p-16448, false, false, + -0x3.8p-16448, false, false, + -0x3.8p-16448, false, false), TEST ("-0x0.7p-16494", false, - -0x8p-152, false, - -0x0p+0, false, - -0x0p+0, false, - -0x0p+0, false, - false, - -0x4p-1076, false, - -0x0p+0, false, - -0x0p+0, false, - -0x0p+0, false, - false, - -0x8p-16448, false, - -0x0p+0, false, - -0x0p+0, false, - -0x0p+0, false, - false, - -0x4p-16448, false, - -0x0p+0, false, - -0x0p+0, false, - -0x0p+0, false, - false, - -0x4p-1076, false, - -0x0p+0, false, - -0x0p+0, false, - -0x0p+0, false, - false, - -0x4p-16496, false, - -0x0p+0, false, - -0x0p+0, false, - -0x0p+0, false), + -0x8p-152, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + false, + -0x4p-1076, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + false, + -0x8p-16448, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + false, + -0x4p-16448, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + false, + -0x4p-1076, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + false, + -0x4p-16496, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true), TEST ("0x1p-150", false, - 0x0p+0, false, - 0x0p+0, false, - 0x0p+0, false, - 0x8p-152, false, - true, - 0x4p-152, false, - 0x4p-152, false, - 0x4p-152, false, - 0x4p-152, false, - true, - 0x4p-152, false, - 0x4p-152, false, - 0x4p-152, false, - 0x4p-152, false, - true, - 0x4p-152, false, - 0x4p-152, false, - 0x4p-152, false, - 0x4p-152, false, - true, - 0x4p-152, false, - 0x4p-152, false, - 0x4p-152, false, - 0x4p-152, false, - true, - 0x4p-152, false, - 0x4p-152, false, - 0x4p-152, false, - 0x4p-152, false), + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x8p-152, false, true, + true, + 0x4p-152, false, false, + 0x4p-152, false, false, + 0x4p-152, false, false, + 0x4p-152, false, false, + true, + 0x4p-152, false, false, + 0x4p-152, false, false, + 0x4p-152, false, false, + 0x4p-152, false, false, + true, + 0x4p-152, false, false, + 0x4p-152, false, false, + 0x4p-152, false, false, + 0x4p-152, false, false, + true, + 0x4p-152, false, false, + 0x4p-152, false, false, + 0x4p-152, false, false, + 0x4p-152, false, false, + true, + 0x4p-152, false, false, + 0x4p-152, false, false, + 0x4p-152, false, false, + 0x4p-152, false, false), TEST ("0x1p-1075", false, - 0x0p+0, false, - 0x0p+0, false, - 0x0p+0, false, - 0x8p-152, false, - false, - 0x0p+0, false, - 0x0p+0, false, - 0x0p+0, false, - 0x4p-1076, false, - true, - 0x2p-1076, false, - 0x2p-1076, false, - 0x2p-1076, false, - 0x2p-1076, false, - true, - 0x2p-1076, false, - 0x2p-1076, false, - 0x2p-1076, false, - 0x2p-1076, false, - false, - 0x0p+0, false, - 0x0p+0, false, - 0x0p+0, false, - 0x4p-1076, false, - true, - 0x2p-1076, false, - 0x2p-1076, false, - 0x2p-1076, false, - 0x2p-1076, false), + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x8p-152, false, true, + false, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x4p-1076, false, true, + true, + 0x2p-1076, false, false, + 0x2p-1076, false, false, + 0x2p-1076, false, false, + 0x2p-1076, false, false, + true, + 0x2p-1076, false, false, + 0x2p-1076, false, false, + 0x2p-1076, false, false, + 0x2p-1076, false, false, + false, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x4p-1076, false, true, + true, + 0x2p-1076, false, false, + 0x2p-1076, false, false, + 0x2p-1076, false, false, + 0x2p-1076, false, false), TEST ("0x1p-16446", false, - 0x0p+0, false, - 0x0p+0, false, - 0x0p+0, false, - 0x8p-152, false, - false, - 0x0p+0, false, - 0x0p+0, false, - 0x0p+0, false, - 0x4p-1076, false, - false, - 0x0p+0, false, - 0x0p+0, false, - 0x0p+0, false, - 0x8p-16448, false, - true, - 0x4p-16448, false, - 0x4p-16448, false, - 0x4p-16448, false, - 0x4p-16448, false, - false, - 0x0p+0, false, - 0x0p+0, false, - 0x0p+0, false, - 0x4p-1076, false, - true, - 0x4p-16448, false, - 0x4p-16448, false, - 0x4p-16448, false, - 0x4p-16448, false), + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x8p-152, false, true, + false, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x4p-1076, false, true, + false, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x8p-16448, false, true, + true, + 0x4p-16448, false, false, + 0x4p-16448, false, false, + 0x4p-16448, false, false, + 0x4p-16448, false, false, + false, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x4p-1076, false, true, + true, + 0x4p-16448, false, false, + 0x4p-16448, false, false, + 0x4p-16448, false, false, + 0x4p-16448, false, false), TEST ("0x1p-16495", false, - 0x0p+0, false, - 0x0p+0, false, - 0x0p+0, false, - 0x8p-152, false, - false, - 0x0p+0, false, - 0x0p+0, false, - 0x0p+0, false, - 0x4p-1076, false, - false, - 0x0p+0, false, - 0x0p+0, false, - 0x0p+0, false, - 0x8p-16448, false, - false, - 0x0p+0, false, - 0x0p+0, false, - 0x0p+0, false, - 0x4p-16448, false, - false, - 0x0p+0, false, - 0x0p+0, false, - 0x0p+0, false, - 0x4p-1076, false, - false, - 0x0p+0, false, - 0x0p+0, false, - 0x0p+0, false, - 0x4p-16496, false), + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x8p-152, false, true, + false, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x4p-1076, false, true, + false, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x8p-16448, false, true, + false, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x4p-16448, false, true, + false, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x4p-1076, false, true, + false, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x4p-16496, false, true), TEST ("-0x1p-150", false, - -0x8p-152, false, - -0x0p+0, false, - -0x0p+0, false, - -0x0p+0, false, - true, - -0x4p-152, false, - -0x4p-152, false, - -0x4p-152, false, - -0x4p-152, false, - true, - -0x4p-152, false, - -0x4p-152, false, - -0x4p-152, false, - -0x4p-152, false, - true, - -0x4p-152, false, - -0x4p-152, false, - -0x4p-152, false, - -0x4p-152, false, - true, - -0x4p-152, false, - -0x4p-152, false, - -0x4p-152, false, - -0x4p-152, false, - true, - -0x4p-152, false, - -0x4p-152, false, - -0x4p-152, false, - -0x4p-152, false), + -0x8p-152, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + true, + -0x4p-152, false, false, + -0x4p-152, false, false, + -0x4p-152, false, false, + -0x4p-152, false, false, + true, + -0x4p-152, false, false, + -0x4p-152, false, false, + -0x4p-152, false, false, + -0x4p-152, false, false, + true, + -0x4p-152, false, false, + -0x4p-152, false, false, + -0x4p-152, false, false, + -0x4p-152, false, false, + true, + -0x4p-152, false, false, + -0x4p-152, false, false, + -0x4p-152, false, false, + -0x4p-152, false, false, + true, + -0x4p-152, false, false, + -0x4p-152, false, false, + -0x4p-152, false, false, + -0x4p-152, false, false), TEST ("-0x1p-1075", false, - -0x8p-152, false, - -0x0p+0, false, - -0x0p+0, false, - -0x0p+0, false, - false, - -0x4p-1076, false, - -0x0p+0, false, - -0x0p+0, false, - -0x0p+0, false, - true, - -0x2p-1076, false, - -0x2p-1076, false, - -0x2p-1076, false, - -0x2p-1076, false, - true, - -0x2p-1076, false, - -0x2p-1076, false, - -0x2p-1076, false, - -0x2p-1076, false, - false, - -0x4p-1076, false, - -0x0p+0, false, - -0x0p+0, false, - -0x0p+0, false, - true, - -0x2p-1076, false, - -0x2p-1076, false, - -0x2p-1076, false, - -0x2p-1076, false), + -0x8p-152, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + false, + -0x4p-1076, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + true, + -0x2p-1076, false, false, + -0x2p-1076, false, false, + -0x2p-1076, false, false, + -0x2p-1076, false, false, + true, + -0x2p-1076, false, false, + -0x2p-1076, false, false, + -0x2p-1076, false, false, + -0x2p-1076, false, false, + false, + -0x4p-1076, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + true, + -0x2p-1076, false, false, + -0x2p-1076, false, false, + -0x2p-1076, false, false, + -0x2p-1076, false, false), TEST ("-0x1p-16446", false, - -0x8p-152, false, - -0x0p+0, false, - -0x0p+0, false, - -0x0p+0, false, - false, - -0x4p-1076, false, - -0x0p+0, false, - -0x0p+0, false, - -0x0p+0, false, - false, - -0x8p-16448, false, - -0x0p+0, false, - -0x0p+0, false, - -0x0p+0, false, - true, - -0x4p-16448, false, - -0x4p-16448, false, - -0x4p-16448, false, - -0x4p-16448, false, - false, - -0x4p-1076, false, - -0x0p+0, false, - -0x0p+0, false, - -0x0p+0, false, - true, - -0x4p-16448, false, - -0x4p-16448, false, - -0x4p-16448, false, - -0x4p-16448, false), + -0x8p-152, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + false, + -0x4p-1076, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + false, + -0x8p-16448, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + true, + -0x4p-16448, false, false, + -0x4p-16448, false, false, + -0x4p-16448, false, false, + -0x4p-16448, false, false, + false, + -0x4p-1076, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + true, + -0x4p-16448, false, false, + -0x4p-16448, false, false, + -0x4p-16448, false, false, + -0x4p-16448, false, false), TEST ("-0x1p-16495", false, - -0x8p-152, false, - -0x0p+0, false, - -0x0p+0, false, - -0x0p+0, false, - false, - -0x4p-1076, false, - -0x0p+0, false, - -0x0p+0, false, - -0x0p+0, false, - false, - -0x8p-16448, false, - -0x0p+0, false, - -0x0p+0, false, - -0x0p+0, false, - false, - -0x4p-16448, false, - -0x0p+0, false, - -0x0p+0, false, - -0x0p+0, false, - false, - -0x4p-1076, false, - -0x0p+0, false, - -0x0p+0, false, - -0x0p+0, false, - false, - -0x4p-16496, false, - -0x0p+0, false, - -0x0p+0, false, - -0x0p+0, false), + -0x8p-152, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + false, + -0x4p-1076, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + false, + -0x8p-16448, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + false, + -0x4p-16448, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + false, + -0x4p-1076, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + false, + -0x4p-16496, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true), TEST (".70064923216240853546186479164495807e-45", false, - 0x0p+0, false, - 0x8p-152, false, - 0x0p+0, false, - 0x8p-152, false, - false, - 0x4p-152, false, - 0x4p-152, false, - 0x4p-152, false, - 0x4.0000000000004p-152, false, - false, - 0x4p-152, false, - 0x4p-152, false, - 0x4p-152, false, - 0x4.0000000000000008p-152, false, - false, - 0x4p-152, false, - 0x4p-152, false, - 0x4p-152, false, - 0x4.0000000000000008p-152, false, - false, - 0x4p-152, false, - 0x4p-152, false, - 0x4p-152, false, - 0x4.00000000000000000000000002p-152, false, - false, - 0x4p-152, false, - 0x4p-152, false, - 0x4p-152, false, - 0x4.0000000000000000000000000004p-152, false), + 0x0p+0, false, true, + 0x8p-152, false, true, + 0x0p+0, false, true, + 0x8p-152, false, true, + false, + 0x4p-152, false, false, + 0x4p-152, false, false, + 0x4p-152, false, false, + 0x4.0000000000004p-152, false, false, + false, + 0x4p-152, false, false, + 0x4p-152, false, false, + 0x4p-152, false, false, + 0x4.0000000000000008p-152, false, false, + false, + 0x4p-152, false, false, + 0x4p-152, false, false, + 0x4p-152, false, false, + 0x4.0000000000000008p-152, false, false, + false, + 0x4p-152, false, false, + 0x4p-152, false, false, + 0x4p-152, false, false, + 0x4.00000000000000000000000002p-152, false, false, + false, + 0x4p-152, false, false, + 0x4p-152, false, false, + 0x4p-152, false, false, + 0x4.0000000000000000000000000004p-152, false, false), TEST ("7.0064923216240853546186479164495806564013097093825788587853" "4141944895541342930300743319094181060791015624e-46", false, - 0x0p+0, false, - 0x0p+0, false, - 0x0p+0, false, - 0x8p-152, false, - false, - 0x3.ffffffffffffep-152, false, - 0x4p-152, false, - 0x3.ffffffffffffep-152, false, - 0x4p-152, false, - false, - 0x3.fffffffffffffffcp-152, false, - 0x4p-152, false, - 0x3.fffffffffffffffcp-152, false, - 0x4p-152, false, - false, - 0x3.fffffffffffffffcp-152, false, - 0x4p-152, false, - 0x3.fffffffffffffffcp-152, false, - 0x4p-152, false, - false, - 0x3.ffffffffffffffffffffffffffp-152, false, - 0x4p-152, false, - 0x3.ffffffffffffffffffffffffffp-152, false, - 0x4p-152, false, - false, - 0x3.fffffffffffffffffffffffffffep-152, false, - 0x4p-152, false, - 0x3.fffffffffffffffffffffffffffep-152, false, - 0x4p-152, false), + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x8p-152, false, true, + false, + 0x3.ffffffffffffep-152, false, false, + 0x4p-152, false, false, + 0x3.ffffffffffffep-152, false, false, + 0x4p-152, false, false, + false, + 0x3.fffffffffffffffcp-152, false, false, + 0x4p-152, false, false, + 0x3.fffffffffffffffcp-152, false, false, + 0x4p-152, false, false, + false, + 0x3.fffffffffffffffcp-152, false, false, + 0x4p-152, false, false, + 0x3.fffffffffffffffcp-152, false, false, + 0x4p-152, false, false, + false, + 0x3.ffffffffffffffffffffffffffp-152, false, false, + 0x4p-152, false, false, + 0x3.ffffffffffffffffffffffffffp-152, false, false, + 0x4p-152, false, false, + false, + 0x3.fffffffffffffffffffffffffffep-152, false, false, + 0x4p-152, false, false, + 0x3.fffffffffffffffffffffffffffep-152, false, false, + 0x4p-152, false, false), TEST ("7.0064923216240853546186479164495806564013097093825788587853" "4141944895541342930300743319094181060791015625e-46", false, - 0x0p+0, false, - 0x0p+0, false, - 0x0p+0, false, - 0x8p-152, false, - true, - 0x4p-152, false, - 0x4p-152, false, - 0x4p-152, false, - 0x4p-152, false, - true, - 0x4p-152, false, - 0x4p-152, false, - 0x4p-152, false, - 0x4p-152, false, - true, - 0x4p-152, false, - 0x4p-152, false, - 0x4p-152, false, - 0x4p-152, false, - true, - 0x4p-152, false, - 0x4p-152, false, - 0x4p-152, false, - 0x4p-152, false, - true, - 0x4p-152, false, - 0x4p-152, false, - 0x4p-152, false, - 0x4p-152, false), + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x8p-152, false, true, + true, + 0x4p-152, false, false, + 0x4p-152, false, false, + 0x4p-152, false, false, + 0x4p-152, false, false, + true, + 0x4p-152, false, false, + 0x4p-152, false, false, + 0x4p-152, false, false, + 0x4p-152, false, false, + true, + 0x4p-152, false, false, + 0x4p-152, false, false, + 0x4p-152, false, false, + 0x4p-152, false, false, + true, + 0x4p-152, false, false, + 0x4p-152, false, false, + 0x4p-152, false, false, + 0x4p-152, false, false, + true, + 0x4p-152, false, false, + 0x4p-152, false, false, + 0x4p-152, false, false, + 0x4p-152, false, false), TEST ("7.0064923216240853546186479164495806564013097093825788587853" "4141944895541342930300743319094181060791015626e-46", false, - 0x0p+0, false, - 0x8p-152, false, - 0x0p+0, false, - 0x8p-152, false, - false, - 0x4p-152, false, - 0x4p-152, false, - 0x4p-152, false, - 0x4.0000000000004p-152, false, - false, - 0x4p-152, false, - 0x4p-152, false, - 0x4p-152, false, - 0x4.0000000000000008p-152, false, - false, - 0x4p-152, false, - 0x4p-152, false, - 0x4p-152, false, - 0x4.0000000000000008p-152, false, - false, - 0x4p-152, false, - 0x4p-152, false, - 0x4p-152, false, - 0x4.00000000000000000000000002p-152, false, - false, - 0x4p-152, false, - 0x4p-152, false, - 0x4p-152, false, - 0x4.0000000000000000000000000004p-152, false), + 0x0p+0, false, true, + 0x8p-152, false, true, + 0x0p+0, false, true, + 0x8p-152, false, true, + false, + 0x4p-152, false, false, + 0x4p-152, false, false, + 0x4p-152, false, false, + 0x4.0000000000004p-152, false, false, + false, + 0x4p-152, false, false, + 0x4p-152, false, false, + 0x4p-152, false, false, + 0x4.0000000000000008p-152, false, false, + false, + 0x4p-152, false, false, + 0x4p-152, false, false, + 0x4p-152, false, false, + 0x4.0000000000000008p-152, false, false, + false, + 0x4p-152, false, false, + 0x4p-152, false, false, + 0x4p-152, false, false, + 0x4.00000000000000000000000002p-152, false, false, + false, + 0x4p-152, false, false, + 0x4p-152, false, false, + 0x4p-152, false, false, + 0x4.0000000000000000000000000004p-152, false, false), TEST ("-7.006492321624085354618647916449580656401309709382578858785" "34141944895541342930300743319094181060791015624e-46", false, - -0x8p-152, false, - -0x0p+0, false, - -0x0p+0, false, - -0x0p+0, false, - false, - -0x4p-152, false, - -0x4p-152, false, - -0x3.ffffffffffffep-152, false, - -0x3.ffffffffffffep-152, false, - false, - -0x4p-152, false, - -0x4p-152, false, - -0x3.fffffffffffffffcp-152, false, - -0x3.fffffffffffffffcp-152, false, - false, - -0x4p-152, false, - -0x4p-152, false, - -0x3.fffffffffffffffcp-152, false, - -0x3.fffffffffffffffcp-152, false, - false, - -0x4p-152, false, - -0x4p-152, false, - -0x3.ffffffffffffffffffffffffffp-152, false, - -0x3.ffffffffffffffffffffffffffp-152, false, - false, - -0x4p-152, false, - -0x4p-152, false, - -0x3.fffffffffffffffffffffffffffep-152, false, - -0x3.fffffffffffffffffffffffffffep-152, false), + -0x8p-152, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + false, + -0x4p-152, false, false, + -0x4p-152, false, false, + -0x3.ffffffffffffep-152, false, false, + -0x3.ffffffffffffep-152, false, false, + false, + -0x4p-152, false, false, + -0x4p-152, false, false, + -0x3.fffffffffffffffcp-152, false, false, + -0x3.fffffffffffffffcp-152, false, false, + false, + -0x4p-152, false, false, + -0x4p-152, false, false, + -0x3.fffffffffffffffcp-152, false, false, + -0x3.fffffffffffffffcp-152, false, false, + false, + -0x4p-152, false, false, + -0x4p-152, false, false, + -0x3.ffffffffffffffffffffffffffp-152, false, false, + -0x3.ffffffffffffffffffffffffffp-152, false, false, + false, + -0x4p-152, false, false, + -0x4p-152, false, false, + -0x3.fffffffffffffffffffffffffffep-152, false, false, + -0x3.fffffffffffffffffffffffffffep-152, false, false), TEST ("-7.006492321624085354618647916449580656401309709382578858785" "34141944895541342930300743319094181060791015625e-46", false, - -0x8p-152, false, - -0x0p+0, false, - -0x0p+0, false, - -0x0p+0, false, - true, - -0x4p-152, false, - -0x4p-152, false, - -0x4p-152, false, - -0x4p-152, false, - true, - -0x4p-152, false, - -0x4p-152, false, - -0x4p-152, false, - -0x4p-152, false, - true, - -0x4p-152, false, - -0x4p-152, false, - -0x4p-152, false, - -0x4p-152, false, - true, - -0x4p-152, false, - -0x4p-152, false, - -0x4p-152, false, - -0x4p-152, false, - true, - -0x4p-152, false, - -0x4p-152, false, - -0x4p-152, false, - -0x4p-152, false), + -0x8p-152, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + true, + -0x4p-152, false, false, + -0x4p-152, false, false, + -0x4p-152, false, false, + -0x4p-152, false, false, + true, + -0x4p-152, false, false, + -0x4p-152, false, false, + -0x4p-152, false, false, + -0x4p-152, false, false, + true, + -0x4p-152, false, false, + -0x4p-152, false, false, + -0x4p-152, false, false, + -0x4p-152, false, false, + true, + -0x4p-152, false, false, + -0x4p-152, false, false, + -0x4p-152, false, false, + -0x4p-152, false, false, + true, + -0x4p-152, false, false, + -0x4p-152, false, false, + -0x4p-152, false, false, + -0x4p-152, false, false), TEST ("-7.006492321624085354618647916449580656401309709382578858785" "34141944895541342930300743319094181060791015626e-46", false, - -0x8p-152, false, - -0x8p-152, false, - -0x0p+0, false, - -0x0p+0, false, - false, - -0x4.0000000000004p-152, false, - -0x4p-152, false, - -0x4p-152, false, - -0x4p-152, false, - false, - -0x4.0000000000000008p-152, false, - -0x4p-152, false, - -0x4p-152, false, - -0x4p-152, false, - false, - -0x4.0000000000000008p-152, false, - -0x4p-152, false, - -0x4p-152, false, - -0x4p-152, false, - false, - -0x4.00000000000000000000000002p-152, false, - -0x4p-152, false, - -0x4p-152, false, - -0x4p-152, false, - false, - -0x4.0000000000000000000000000004p-152, false, - -0x4p-152, false, - -0x4p-152, false, - -0x4p-152, false), + -0x8p-152, false, true, + -0x8p-152, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + false, + -0x4.0000000000004p-152, false, false, + -0x4p-152, false, false, + -0x4p-152, false, false, + -0x4p-152, false, false, + false, + -0x4.0000000000000008p-152, false, false, + -0x4p-152, false, false, + -0x4p-152, false, false, + -0x4p-152, false, false, + false, + -0x4.0000000000000008p-152, false, false, + -0x4p-152, false, false, + -0x4p-152, false, false, + -0x4p-152, false, false, + false, + -0x4.00000000000000000000000002p-152, false, false, + -0x4p-152, false, false, + -0x4p-152, false, false, + -0x4p-152, false, false, + false, + -0x4.0000000000000000000000000004p-152, false, false, + -0x4p-152, false, false, + -0x4p-152, false, false, + -0x4p-152, false, false), TEST ("2.4703282292062327208828439643411068618252990130716238221279" "284125033775363510437593264991818081799618989828234772285886" "546332835517796989819938739800539093906315035659515570226392" @@ -7335,35 +7335,35 @@ static const struct test tests[] = { "779186948667994968324049705821028513185451396213837722826145" "437693412532098591327667236328124e-324", false, - 0x0p+0, false, - 0x0p+0, false, - 0x0p+0, false, - 0x8p-152, false, - false, - 0x0p+0, false, - 0x0p+0, false, - 0x0p+0, false, - 0x4p-1076, false, - false, - 0x1.fffffffffffffffep-1076, false, - 0x2p-1076, false, - 0x1.fffffffffffffffep-1076, false, - 0x2p-1076, false, - false, - 0x1.fffffffffffffffep-1076, false, - 0x2p-1076, false, - 0x1.fffffffffffffffep-1076, false, - 0x2p-1076, false, - false, - 0x0p+0, false, - 0x0p+0, false, - 0x0p+0, false, - 0x4p-1076, false, - false, - 0x1.ffffffffffffffffffffffffffffp-1076, false, - 0x2p-1076, false, - 0x1.ffffffffffffffffffffffffffffp-1076, false, - 0x2p-1076, false), + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x8p-152, false, true, + false, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x4p-1076, false, true, + false, + 0x1.fffffffffffffffep-1076, false, false, + 0x2p-1076, false, false, + 0x1.fffffffffffffffep-1076, false, false, + 0x2p-1076, false, false, + false, + 0x1.fffffffffffffffep-1076, false, false, + 0x2p-1076, false, false, + 0x1.fffffffffffffffep-1076, false, false, + 0x2p-1076, false, false, + false, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x4p-1076, false, true, + false, + 0x1.ffffffffffffffffffffffffffffp-1076, false, false, + 0x2p-1076, false, false, + 0x1.ffffffffffffffffffffffffffffp-1076, false, false, + 0x2p-1076, false, false), TEST ("2.4703282292062327208828439643411068618252990130716238221279" "284125033775363510437593264991818081799618989828234772285886" "546332835517796989819938739800539093906315035659515570226392" @@ -7378,35 +7378,35 @@ static const struct test tests[] = { "779186948667994968324049705821028513185451396213837722826145" "437693412532098591327667236328125e-324", false, - 0x0p+0, false, - 0x0p+0, false, - 0x0p+0, false, - 0x8p-152, false, - false, - 0x0p+0, false, - 0x0p+0, false, - 0x0p+0, false, - 0x4p-1076, false, - true, - 0x2p-1076, false, - 0x2p-1076, false, - 0x2p-1076, false, - 0x2p-1076, false, - true, - 0x2p-1076, false, - 0x2p-1076, false, - 0x2p-1076, false, - 0x2p-1076, false, - false, - 0x0p+0, false, - 0x0p+0, false, - 0x0p+0, false, - 0x4p-1076, false, - true, - 0x2p-1076, false, - 0x2p-1076, false, - 0x2p-1076, false, - 0x2p-1076, false), + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x8p-152, false, true, + false, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x4p-1076, false, true, + true, + 0x2p-1076, false, false, + 0x2p-1076, false, false, + 0x2p-1076, false, false, + 0x2p-1076, false, false, + true, + 0x2p-1076, false, false, + 0x2p-1076, false, false, + 0x2p-1076, false, false, + 0x2p-1076, false, false, + false, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x4p-1076, false, true, + true, + 0x2p-1076, false, false, + 0x2p-1076, false, false, + 0x2p-1076, false, false, + 0x2p-1076, false, false), TEST ("2.4703282292062327208828439643411068618252990130716238221279" "284125033775363510437593264991818081799618989828234772285886" "546332835517796989819938739800539093906315035659515570226392" @@ -7421,35 +7421,35 @@ static const struct test tests[] = { "779186948667994968324049705821028513185451396213837722826145" "437693412532098591327667236328126e-324", false, - 0x0p+0, false, - 0x0p+0, false, - 0x0p+0, false, - 0x8p-152, false, - false, - 0x0p+0, false, - 0x4p-1076, false, - 0x0p+0, false, - 0x4p-1076, false, - false, - 0x2p-1076, false, - 0x2p-1076, false, - 0x2p-1076, false, - 0x2.0000000000000004p-1076, false, - false, - 0x2p-1076, false, - 0x2p-1076, false, - 0x2p-1076, false, - 0x2.0000000000000004p-1076, false, - false, - 0x0p+0, false, - 0x4p-1076, false, - 0x0p+0, false, - 0x4p-1076, false, - false, - 0x2p-1076, false, - 0x2p-1076, false, - 0x2p-1076, false, - 0x2.0000000000000000000000000002p-1076, false), + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x8p-152, false, true, + false, + 0x0p+0, false, true, + 0x4p-1076, false, true, + 0x0p+0, false, true, + 0x4p-1076, false, true, + false, + 0x2p-1076, false, false, + 0x2p-1076, false, false, + 0x2p-1076, false, false, + 0x2.0000000000000004p-1076, false, false, + false, + 0x2p-1076, false, false, + 0x2p-1076, false, false, + 0x2p-1076, false, false, + 0x2.0000000000000004p-1076, false, false, + false, + 0x0p+0, false, true, + 0x4p-1076, false, true, + 0x0p+0, false, true, + 0x4p-1076, false, true, + false, + 0x2p-1076, false, false, + 0x2p-1076, false, false, + 0x2p-1076, false, false, + 0x2.0000000000000000000000000002p-1076, false, false), TEST ("-2.470328229206232720882843964341106861825299013071623822127" "928412503377536351043759326499181808179961898982823477228588" "654633283551779698981993873980053909390631503565951557022639" @@ -7464,35 +7464,35 @@ static const struct test tests[] = { "477918694866799496832404970582102851318545139621383772282614" "5437693412532098591327667236328124e-324", false, - -0x8p-152, false, - -0x0p+0, false, - -0x0p+0, false, - -0x0p+0, false, - false, - -0x4p-1076, false, - -0x0p+0, false, - -0x0p+0, false, - -0x0p+0, false, - false, - -0x2p-1076, false, - -0x2p-1076, false, - -0x1.fffffffffffffffep-1076, false, - -0x1.fffffffffffffffep-1076, false, - false, - -0x2p-1076, false, - -0x2p-1076, false, - -0x1.fffffffffffffffep-1076, false, - -0x1.fffffffffffffffep-1076, false, - false, - -0x4p-1076, false, - -0x0p+0, false, - -0x0p+0, false, - -0x0p+0, false, - false, - -0x2p-1076, false, - -0x2p-1076, false, - -0x1.ffffffffffffffffffffffffffffp-1076, false, - -0x1.ffffffffffffffffffffffffffffp-1076, false), + -0x8p-152, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + false, + -0x4p-1076, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + false, + -0x2p-1076, false, false, + -0x2p-1076, false, false, + -0x1.fffffffffffffffep-1076, false, false, + -0x1.fffffffffffffffep-1076, false, false, + false, + -0x2p-1076, false, false, + -0x2p-1076, false, false, + -0x1.fffffffffffffffep-1076, false, false, + -0x1.fffffffffffffffep-1076, false, false, + false, + -0x4p-1076, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + false, + -0x2p-1076, false, false, + -0x2p-1076, false, false, + -0x1.ffffffffffffffffffffffffffffp-1076, false, false, + -0x1.ffffffffffffffffffffffffffffp-1076, false, false), TEST ("-2.470328229206232720882843964341106861825299013071623822127" "928412503377536351043759326499181808179961898982823477228588" "654633283551779698981993873980053909390631503565951557022639" @@ -7507,35 +7507,35 @@ static const struct test tests[] = { "477918694866799496832404970582102851318545139621383772282614" "5437693412532098591327667236328125e-324", false, - -0x8p-152, false, - -0x0p+0, false, - -0x0p+0, false, - -0x0p+0, false, - false, - -0x4p-1076, false, - -0x0p+0, false, - -0x0p+0, false, - -0x0p+0, false, - true, - -0x2p-1076, false, - -0x2p-1076, false, - -0x2p-1076, false, - -0x2p-1076, false, - true, - -0x2p-1076, false, - -0x2p-1076, false, - -0x2p-1076, false, - -0x2p-1076, false, - false, - -0x4p-1076, false, - -0x0p+0, false, - -0x0p+0, false, - -0x0p+0, false, - true, - -0x2p-1076, false, - -0x2p-1076, false, - -0x2p-1076, false, - -0x2p-1076, false), + -0x8p-152, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + false, + -0x4p-1076, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + true, + -0x2p-1076, false, false, + -0x2p-1076, false, false, + -0x2p-1076, false, false, + -0x2p-1076, false, false, + true, + -0x2p-1076, false, false, + -0x2p-1076, false, false, + -0x2p-1076, false, false, + -0x2p-1076, false, false, + false, + -0x4p-1076, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + true, + -0x2p-1076, false, false, + -0x2p-1076, false, false, + -0x2p-1076, false, false, + -0x2p-1076, false, false), TEST ("-2.470328229206232720882843964341106861825299013071623822127" "928412503377536351043759326499181808179961898982823477228588" "654633283551779698981993873980053909390631503565951557022639" @@ -7550,35 +7550,35 @@ static const struct test tests[] = { "477918694866799496832404970582102851318545139621383772282614" "5437693412532098591327667236328126e-324", false, - -0x8p-152, false, - -0x0p+0, false, - -0x0p+0, false, - -0x0p+0, false, - false, - -0x4p-1076, false, - -0x4p-1076, false, - -0x0p+0, false, - -0x0p+0, false, - false, - -0x2.0000000000000004p-1076, false, - -0x2p-1076, false, - -0x2p-1076, false, - -0x2p-1076, false, - false, - -0x2.0000000000000004p-1076, false, - -0x2p-1076, false, - -0x2p-1076, false, - -0x2p-1076, false, - false, - -0x4p-1076, false, - -0x4p-1076, false, - -0x0p+0, false, - -0x0p+0, false, - false, - -0x2.0000000000000000000000000002p-1076, false, - -0x2p-1076, false, - -0x2p-1076, false, - -0x2p-1076, false), + -0x8p-152, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + false, + -0x4p-1076, false, true, + -0x4p-1076, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + false, + -0x2.0000000000000004p-1076, false, false, + -0x2p-1076, false, false, + -0x2p-1076, false, false, + -0x2p-1076, false, false, + false, + -0x2.0000000000000004p-1076, false, false, + -0x2p-1076, false, false, + -0x2p-1076, false, false, + -0x2p-1076, false, false, + false, + -0x4p-1076, false, true, + -0x4p-1076, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + false, + -0x2.0000000000000000000000000002p-1076, false, false, + -0x2p-1076, false, false, + -0x2p-1076, false, false, + -0x2p-1076, false, false), TEST ("1.8225997659412373012642029668097099081995254078467816718604" "902435141858443166988684047803543129136025986236736736017655" "509834928163110160849867540377949045027419112905889658392846" @@ -7772,35 +7772,35 @@ static const struct test tests[] = { "622089641993900896756734276531931450266972752637997248151974" "2277811246822238899767398834228515624e-4951", false, - 0x0p+0, false, - 0x0p+0, false, - 0x0p+0, false, - 0x8p-152, false, - false, - 0x0p+0, false, - 0x0p+0, false, - 0x0p+0, false, - 0x4p-1076, false, - false, - 0x0p+0, false, - 0x0p+0, false, - 0x0p+0, false, - 0x8p-16448, false, - false, - 0x0p+0, false, - 0x4p-16448, false, - 0x0p+0, false, - 0x4p-16448, false, - false, - 0x0p+0, false, - 0x0p+0, false, - 0x0p+0, false, - 0x4p-1076, false, - false, - 0x3.fffffffffffcp-16448, false, - 0x4p-16448, false, - 0x3.fffffffffffcp-16448, false, - 0x4p-16448, false), + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x8p-152, false, true, + false, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x4p-1076, false, true, + false, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x8p-16448, false, true, + false, + 0x0p+0, false, true, + 0x4p-16448, false, true, + 0x0p+0, false, true, + 0x4p-16448, false, true, + false, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x4p-1076, false, true, + false, + 0x3.fffffffffffcp-16448, false, true, + 0x4p-16448, false, true, + 0x3.fffffffffffcp-16448, false, true, + 0x4p-16448, false, true), TEST ("1.8225997659412373012642029668097099081995254078467816718604" "902435141858443166988684047803543129136025986236736736017655" "509834928163110160849867540377949045027419112905889658392846" @@ -7994,35 +7994,35 @@ static const struct test tests[] = { "622089641993900896756734276531931450266972752637997248151974" "2277811246822238899767398834228515625e-4951", false, - 0x0p+0, false, - 0x0p+0, false, - 0x0p+0, false, - 0x8p-152, false, - false, - 0x0p+0, false, - 0x0p+0, false, - 0x0p+0, false, - 0x4p-1076, false, - false, - 0x0p+0, false, - 0x0p+0, false, - 0x0p+0, false, - 0x8p-16448, false, - true, - 0x4p-16448, false, - 0x4p-16448, false, - 0x4p-16448, false, - 0x4p-16448, false, - false, - 0x0p+0, false, - 0x0p+0, false, - 0x0p+0, false, - 0x4p-1076, false, - true, - 0x4p-16448, false, - 0x4p-16448, false, - 0x4p-16448, false, - 0x4p-16448, false), + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x8p-152, false, true, + false, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x4p-1076, false, true, + false, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x8p-16448, false, true, + true, + 0x4p-16448, false, false, + 0x4p-16448, false, false, + 0x4p-16448, false, false, + 0x4p-16448, false, false, + false, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x4p-1076, false, true, + true, + 0x4p-16448, false, false, + 0x4p-16448, false, false, + 0x4p-16448, false, false, + 0x4p-16448, false, false), TEST ("1.8225997659412373012642029668097099081995254078467816718604" "902435141858443166988684047803543129136025986236736736017655" "509834928163110160849867540377949045027419112905889658392846" @@ -8216,35 +8216,35 @@ static const struct test tests[] = { "622089641993900896756734276531931450266972752637997248151974" "2277811246822238899767398834228515626e-4951", false, - 0x0p+0, false, - 0x0p+0, false, - 0x0p+0, false, - 0x8p-152, false, - false, - 0x0p+0, false, - 0x0p+0, false, - 0x0p+0, false, - 0x4p-1076, false, - false, - 0x0p+0, false, - 0x8p-16448, false, - 0x0p+0, false, - 0x8p-16448, false, - false, - 0x4p-16448, false, - 0x4p-16448, false, - 0x4p-16448, false, - 0x8p-16448, false, - false, - 0x0p+0, false, - 0x0p+0, false, - 0x0p+0, false, - 0x4p-1076, false, - false, - 0x4p-16448, false, - 0x4p-16448, false, - 0x4p-16448, false, - 0x4.000000000004p-16448, false), + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x8p-152, false, true, + false, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x4p-1076, false, true, + false, + 0x0p+0, false, true, + 0x8p-16448, false, true, + 0x0p+0, false, true, + 0x8p-16448, false, true, + false, + 0x4p-16448, false, true, + 0x4p-16448, false, true, + 0x4p-16448, false, true, + 0x8p-16448, false, true, + false, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x4p-1076, false, true, + false, + 0x4p-16448, false, true, + 0x4p-16448, false, true, + 0x4p-16448, false, true, + 0x4.000000000004p-16448, false, true), TEST ("-1.822599765941237301264202966809709908199525407846781671860" "490243514185844316698868404780354312913602598623673673601765" "550983492816311016084986754037794904502741911290588965839284" @@ -8438,35 +8438,35 @@ static const struct test tests[] = { "462208964199390089675673427653193145026697275263799724815197" "42277811246822238899767398834228515624e-4951", false, - -0x8p-152, false, - -0x0p+0, false, - -0x0p+0, false, - -0x0p+0, false, - false, - -0x4p-1076, false, - -0x0p+0, false, - -0x0p+0, false, - -0x0p+0, false, - false, - -0x8p-16448, false, - -0x0p+0, false, - -0x0p+0, false, - -0x0p+0, false, - false, - -0x4p-16448, false, - -0x4p-16448, false, - -0x0p+0, false, - -0x0p+0, false, - false, - -0x4p-1076, false, - -0x0p+0, false, - -0x0p+0, false, - -0x0p+0, false, - false, - -0x4p-16448, false, - -0x4p-16448, false, - -0x3.fffffffffffcp-16448, false, - -0x3.fffffffffffcp-16448, false), + -0x8p-152, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + false, + -0x4p-1076, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + false, + -0x8p-16448, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + false, + -0x4p-16448, false, true, + -0x4p-16448, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + false, + -0x4p-1076, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + false, + -0x4p-16448, false, true, + -0x4p-16448, false, true, + -0x3.fffffffffffcp-16448, false, true, + -0x3.fffffffffffcp-16448, false, true), TEST ("-1.822599765941237301264202966809709908199525407846781671860" "490243514185844316698868404780354312913602598623673673601765" "550983492816311016084986754037794904502741911290588965839284" @@ -8660,35 +8660,35 @@ static const struct test tests[] = { "462208964199390089675673427653193145026697275263799724815197" "42277811246822238899767398834228515625e-4951", false, - -0x8p-152, false, - -0x0p+0, false, - -0x0p+0, false, - -0x0p+0, false, - false, - -0x4p-1076, false, - -0x0p+0, false, - -0x0p+0, false, - -0x0p+0, false, - false, - -0x8p-16448, false, - -0x0p+0, false, - -0x0p+0, false, - -0x0p+0, false, - true, - -0x4p-16448, false, - -0x4p-16448, false, - -0x4p-16448, false, - -0x4p-16448, false, - false, - -0x4p-1076, false, - -0x0p+0, false, - -0x0p+0, false, - -0x0p+0, false, - true, - -0x4p-16448, false, - -0x4p-16448, false, - -0x4p-16448, false, - -0x4p-16448, false), + -0x8p-152, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + false, + -0x4p-1076, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + false, + -0x8p-16448, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + true, + -0x4p-16448, false, false, + -0x4p-16448, false, false, + -0x4p-16448, false, false, + -0x4p-16448, false, false, + false, + -0x4p-1076, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + true, + -0x4p-16448, false, false, + -0x4p-16448, false, false, + -0x4p-16448, false, false, + -0x4p-16448, false, false), TEST ("-1.822599765941237301264202966809709908199525407846781671860" "490243514185844316698868404780354312913602598623673673601765" "550983492816311016084986754037794904502741911290588965839284" @@ -8882,35 +8882,35 @@ static const struct test tests[] = { "462208964199390089675673427653193145026697275263799724815197" "42277811246822238899767398834228515626e-4951", false, - -0x8p-152, false, - -0x0p+0, false, - -0x0p+0, false, - -0x0p+0, false, - false, - -0x4p-1076, false, - -0x0p+0, false, - -0x0p+0, false, - -0x0p+0, false, - false, - -0x8p-16448, false, - -0x8p-16448, false, - -0x0p+0, false, - -0x0p+0, false, - false, - -0x8p-16448, false, - -0x4p-16448, false, - -0x4p-16448, false, - -0x4p-16448, false, - false, - -0x4p-1076, false, - -0x0p+0, false, - -0x0p+0, false, - -0x0p+0, false, - false, - -0x4.000000000004p-16448, false, - -0x4p-16448, false, - -0x4p-16448, false, - -0x4p-16448, false), + -0x8p-152, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + false, + -0x4p-1076, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + false, + -0x8p-16448, false, true, + -0x8p-16448, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + false, + -0x8p-16448, false, true, + -0x4p-16448, false, true, + -0x4p-16448, false, true, + -0x4p-16448, false, true, + false, + -0x4p-1076, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + false, + -0x4.000000000004p-16448, false, true, + -0x4p-16448, false, true, + -0x4p-16448, false, true, + -0x4p-16448, false, true), TEST ("9.1129988297061865063210148340485495409976270392339083593024" "512175709292215834943420239017715645680129931183683680088277" "549174640815550804249337701889745225137095564529448291964230" @@ -9104,35 +9104,35 @@ static const struct test tests[] = { "110448209969504483783671382659657251334863763189986240759871" "1389056234111194498836994171142578124e-4952", false, - 0x0p+0, false, - 0x0p+0, false, - 0x0p+0, false, - 0x8p-152, false, - false, - 0x0p+0, false, - 0x0p+0, false, - 0x0p+0, false, - 0x4p-1076, false, - false, - 0x0p+0, false, - 0x0p+0, false, - 0x0p+0, false, - 0x8p-16448, false, - false, - 0x0p+0, false, - 0x0p+0, false, - 0x0p+0, false, - 0x4p-16448, false, - false, - 0x0p+0, false, - 0x0p+0, false, - 0x0p+0, false, - 0x4p-1076, false, - false, - 0x1.fffffffffffcp-16448, false, - 0x2p-16448, false, - 0x1.fffffffffffcp-16448, false, - 0x2p-16448, false), + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x8p-152, false, true, + false, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x4p-1076, false, true, + false, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x8p-16448, false, true, + false, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x4p-16448, false, true, + false, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x4p-1076, false, true, + false, + 0x1.fffffffffffcp-16448, false, true, + 0x2p-16448, false, true, + 0x1.fffffffffffcp-16448, false, true, + 0x2p-16448, false, true), TEST ("9.1129988297061865063210148340485495409976270392339083593024" "512175709292215834943420239017715645680129931183683680088277" "549174640815550804249337701889745225137095564529448291964230" @@ -9326,35 +9326,35 @@ static const struct test tests[] = { "110448209969504483783671382659657251334863763189986240759871" "1389056234111194498836994171142578125e-4952", false, - 0x0p+0, false, - 0x0p+0, false, - 0x0p+0, false, - 0x8p-152, false, - false, - 0x0p+0, false, - 0x0p+0, false, - 0x0p+0, false, - 0x4p-1076, false, - false, - 0x0p+0, false, - 0x0p+0, false, - 0x0p+0, false, - 0x8p-16448, false, - false, - 0x0p+0, false, - 0x0p+0, false, - 0x0p+0, false, - 0x4p-16448, false, - false, - 0x0p+0, false, - 0x0p+0, false, - 0x0p+0, false, - 0x4p-1076, false, - true, - 0x2p-16448, false, - 0x2p-16448, false, - 0x2p-16448, false, - 0x2p-16448, false), + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x8p-152, false, true, + false, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x4p-1076, false, true, + false, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x8p-16448, false, true, + false, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x4p-16448, false, true, + false, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x4p-1076, false, true, + true, + 0x2p-16448, false, false, + 0x2p-16448, false, false, + 0x2p-16448, false, false, + 0x2p-16448, false, false), TEST ("9.1129988297061865063210148340485495409976270392339083593024" "512175709292215834943420239017715645680129931183683680088277" "549174640815550804249337701889745225137095564529448291964230" @@ -9548,35 +9548,35 @@ static const struct test tests[] = { "110448209969504483783671382659657251334863763189986240759871" "1389056234111194498836994171142578126e-4952", false, - 0x0p+0, false, - 0x0p+0, false, - 0x0p+0, false, - 0x8p-152, false, - false, - 0x0p+0, false, - 0x0p+0, false, - 0x0p+0, false, - 0x4p-1076, false, - false, - 0x0p+0, false, - 0x0p+0, false, - 0x0p+0, false, - 0x8p-16448, false, - false, - 0x0p+0, false, - 0x4p-16448, false, - 0x0p+0, false, - 0x4p-16448, false, - false, - 0x0p+0, false, - 0x0p+0, false, - 0x0p+0, false, - 0x4p-1076, false, - false, - 0x2p-16448, false, - 0x2p-16448, false, - 0x2p-16448, false, - 0x2.000000000004p-16448, false), + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x8p-152, false, true, + false, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x4p-1076, false, true, + false, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x8p-16448, false, true, + false, + 0x0p+0, false, true, + 0x4p-16448, false, true, + 0x0p+0, false, true, + 0x4p-16448, false, true, + false, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x4p-1076, false, true, + false, + 0x2p-16448, false, true, + 0x2p-16448, false, true, + 0x2p-16448, false, true, + 0x2.000000000004p-16448, false, true), TEST ("-9.112998829706186506321014834048549540997627039233908359302" "451217570929221583494342023901771564568012993118368368008827" "754917464081555080424933770188974522513709556452944829196423" @@ -9770,35 +9770,35 @@ static const struct test tests[] = { "311044820996950448378367138265965725133486376318998624075987" "11389056234111194498836994171142578124e-4952", false, - -0x8p-152, false, - -0x0p+0, false, - -0x0p+0, false, - -0x0p+0, false, - false, - -0x4p-1076, false, - -0x0p+0, false, - -0x0p+0, false, - -0x0p+0, false, - false, - -0x8p-16448, false, - -0x0p+0, false, - -0x0p+0, false, - -0x0p+0, false, - false, - -0x4p-16448, false, - -0x0p+0, false, - -0x0p+0, false, - -0x0p+0, false, - false, - -0x4p-1076, false, - -0x0p+0, false, - -0x0p+0, false, - -0x0p+0, false, - false, - -0x2p-16448, false, - -0x2p-16448, false, - -0x1.fffffffffffcp-16448, false, - -0x1.fffffffffffcp-16448, false), + -0x8p-152, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + false, + -0x4p-1076, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + false, + -0x8p-16448, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + false, + -0x4p-16448, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + false, + -0x4p-1076, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + false, + -0x2p-16448, false, true, + -0x2p-16448, false, true, + -0x1.fffffffffffcp-16448, false, true, + -0x1.fffffffffffcp-16448, false, true), TEST ("-9.112998829706186506321014834048549540997627039233908359302" "451217570929221583494342023901771564568012993118368368008827" "754917464081555080424933770188974522513709556452944829196423" @@ -9992,35 +9992,35 @@ static const struct test tests[] = { "311044820996950448378367138265965725133486376318998624075987" "11389056234111194498836994171142578125e-4952", false, - -0x8p-152, false, - -0x0p+0, false, - -0x0p+0, false, - -0x0p+0, false, - false, - -0x4p-1076, false, - -0x0p+0, false, - -0x0p+0, false, - -0x0p+0, false, - false, - -0x8p-16448, false, - -0x0p+0, false, - -0x0p+0, false, - -0x0p+0, false, - false, - -0x4p-16448, false, - -0x0p+0, false, - -0x0p+0, false, - -0x0p+0, false, - false, - -0x4p-1076, false, - -0x0p+0, false, - -0x0p+0, false, - -0x0p+0, false, - true, - -0x2p-16448, false, - -0x2p-16448, false, - -0x2p-16448, false, - -0x2p-16448, false), + -0x8p-152, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + false, + -0x4p-1076, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + false, + -0x8p-16448, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + false, + -0x4p-16448, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + false, + -0x4p-1076, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + true, + -0x2p-16448, false, false, + -0x2p-16448, false, false, + -0x2p-16448, false, false, + -0x2p-16448, false, false), TEST ("-9.112998829706186506321014834048549540997627039233908359302" "451217570929221583494342023901771564568012993118368368008827" "754917464081555080424933770188974522513709556452944829196423" @@ -10214,35 +10214,35 @@ static const struct test tests[] = { "311044820996950448378367138265965725133486376318998624075987" "11389056234111194498836994171142578126e-4952", false, - -0x8p-152, false, - -0x0p+0, false, - -0x0p+0, false, - -0x0p+0, false, - false, - -0x4p-1076, false, - -0x0p+0, false, - -0x0p+0, false, - -0x0p+0, false, - false, - -0x8p-16448, false, - -0x0p+0, false, - -0x0p+0, false, - -0x0p+0, false, - false, - -0x4p-16448, false, - -0x4p-16448, false, - -0x0p+0, false, - -0x0p+0, false, - false, - -0x4p-1076, false, - -0x0p+0, false, - -0x0p+0, false, - -0x0p+0, false, - false, - -0x2.000000000004p-16448, false, - -0x2p-16448, false, - -0x2p-16448, false, - -0x2p-16448, false), + -0x8p-152, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + false, + -0x4p-1076, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + false, + -0x8p-16448, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + false, + -0x4p-16448, false, true, + -0x4p-16448, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + false, + -0x4p-1076, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + false, + -0x2.000000000004p-16448, false, true, + -0x2p-16448, false, true, + -0x2p-16448, false, true, + -0x2p-16448, false, true), TEST ("3.2375875597190125554622194791138232762497846690173405048449" "421945985197700620596855088357456383249701279390707384240598" "382936099431912710233425550359863089915213963553756674672083" @@ -10437,35 +10437,35 @@ static const struct test tests[] = { "182358152808745703724362178773168996492870519432472065091133" "11767578124e-4966", false, - 0x0p+0, false, - 0x0p+0, false, - 0x0p+0, false, - 0x8p-152, false, - false, - 0x0p+0, false, - 0x0p+0, false, - 0x0p+0, false, - 0x4p-1076, false, - false, - 0x0p+0, false, - 0x0p+0, false, - 0x0p+0, false, - 0x8p-16448, false, - false, - 0x0p+0, false, - 0x0p+0, false, - 0x0p+0, false, - 0x4p-16448, false, - false, - 0x0p+0, false, - 0x0p+0, false, - 0x0p+0, false, - 0x4p-1076, false, - false, - 0x0p+0, false, - 0x0p+0, false, - 0x0p+0, false, - 0x4p-16496, false), + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x8p-152, false, true, + false, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x4p-1076, false, true, + false, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x8p-16448, false, true, + false, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x4p-16448, false, true, + false, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x4p-1076, false, true, + false, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x4p-16496, false, true), TEST ("3.2375875597190125554622194791138232762497846690173405048449" "421945985197700620596855088357456383249701279390707384240598" "382936099431912710233425550359863089915213963553756674672083" @@ -10660,35 +10660,35 @@ static const struct test tests[] = { "182358152808745703724362178773168996492870519432472065091133" "11767578125e-4966", false, - 0x0p+0, false, - 0x0p+0, false, - 0x0p+0, false, - 0x8p-152, false, - false, - 0x0p+0, false, - 0x0p+0, false, - 0x0p+0, false, - 0x4p-1076, false, - false, - 0x0p+0, false, - 0x0p+0, false, - 0x0p+0, false, - 0x8p-16448, false, - false, - 0x0p+0, false, - 0x0p+0, false, - 0x0p+0, false, - 0x4p-16448, false, - false, - 0x0p+0, false, - 0x0p+0, false, - 0x0p+0, false, - 0x4p-1076, false, - false, - 0x0p+0, false, - 0x0p+0, false, - 0x0p+0, false, - 0x4p-16496, false), + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x8p-152, false, true, + false, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x4p-1076, false, true, + false, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x8p-16448, false, true, + false, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x4p-16448, false, true, + false, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x4p-1076, false, true, + false, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x4p-16496, false, true), TEST ("3.2375875597190125554622194791138232762497846690173405048449" "421945985197700620596855088357456383249701279390707384240598" "382936099431912710233425550359863089915213963553756674672083" @@ -10883,35 +10883,35 @@ static const struct test tests[] = { "182358152808745703724362178773168996492870519432472065091133" "11767578126e-4966", false, - 0x0p+0, false, - 0x0p+0, false, - 0x0p+0, false, - 0x8p-152, false, - false, - 0x0p+0, false, - 0x0p+0, false, - 0x0p+0, false, - 0x4p-1076, false, - false, - 0x0p+0, false, - 0x0p+0, false, - 0x0p+0, false, - 0x8p-16448, false, - false, - 0x0p+0, false, - 0x0p+0, false, - 0x0p+0, false, - 0x4p-16448, false, - false, - 0x0p+0, false, - 0x0p+0, false, - 0x0p+0, false, - 0x4p-1076, false, - false, - 0x0p+0, false, - 0x4p-16496, false, - 0x0p+0, false, - 0x4p-16496, false), + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x8p-152, false, true, + false, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x4p-1076, false, true, + false, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x8p-16448, false, true, + false, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x4p-16448, false, true, + false, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x4p-1076, false, true, + false, + 0x0p+0, false, true, + 0x4p-16496, false, true, + 0x0p+0, false, true, + 0x4p-16496, false, true), TEST ("-3.237587559719012555462219479113823276249784669017340504844" "942194598519770062059685508835745638324970127939070738424059" "838293609943191271023342555035986308991521396355375667467208" @@ -11106,35 +11106,35 @@ static const struct test tests[] = { "218235815280874570372436217877316899649287051943247206509113" "311767578124e-4966", false, - -0x8p-152, false, - -0x0p+0, false, - -0x0p+0, false, - -0x0p+0, false, - false, - -0x4p-1076, false, - -0x0p+0, false, - -0x0p+0, false, - -0x0p+0, false, - false, - -0x8p-16448, false, - -0x0p+0, false, - -0x0p+0, false, - -0x0p+0, false, - false, - -0x4p-16448, false, - -0x0p+0, false, - -0x0p+0, false, - -0x0p+0, false, - false, - -0x4p-1076, false, - -0x0p+0, false, - -0x0p+0, false, - -0x0p+0, false, - false, - -0x4p-16496, false, - -0x0p+0, false, - -0x0p+0, false, - -0x0p+0, false), + -0x8p-152, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + false, + -0x4p-1076, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + false, + -0x8p-16448, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + false, + -0x4p-16448, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + false, + -0x4p-1076, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + false, + -0x4p-16496, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true), TEST ("-3.237587559719012555462219479113823276249784669017340504844" "942194598519770062059685508835745638324970127939070738424059" "838293609943191271023342555035986308991521396355375667467208" @@ -11329,35 +11329,35 @@ static const struct test tests[] = { "218235815280874570372436217877316899649287051943247206509113" "311767578125e-4966", false, - -0x8p-152, false, - -0x0p+0, false, - -0x0p+0, false, - -0x0p+0, false, - false, - -0x4p-1076, false, - -0x0p+0, false, - -0x0p+0, false, - -0x0p+0, false, - false, - -0x8p-16448, false, - -0x0p+0, false, - -0x0p+0, false, - -0x0p+0, false, - false, - -0x4p-16448, false, - -0x0p+0, false, - -0x0p+0, false, - -0x0p+0, false, - false, - -0x4p-1076, false, - -0x0p+0, false, - -0x0p+0, false, - -0x0p+0, false, - false, - -0x4p-16496, false, - -0x0p+0, false, - -0x0p+0, false, - -0x0p+0, false), + -0x8p-152, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + false, + -0x4p-1076, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + false, + -0x8p-16448, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + false, + -0x4p-16448, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + false, + -0x4p-1076, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + false, + -0x4p-16496, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true), TEST ("-3.237587559719012555462219479113823276249784669017340504844" "942194598519770062059685508835745638324970127939070738424059" "838293609943191271023342555035986308991521396355375667467208" @@ -11552,66 +11552,66 @@ static const struct test tests[] = { "218235815280874570372436217877316899649287051943247206509113" "311767578126e-4966", false, - -0x8p-152, false, - -0x0p+0, false, - -0x0p+0, false, - -0x0p+0, false, - false, - -0x4p-1076, false, - -0x0p+0, false, - -0x0p+0, false, - -0x0p+0, false, - false, - -0x8p-16448, false, - -0x0p+0, false, - -0x0p+0, false, - -0x0p+0, false, - false, - -0x4p-16448, false, - -0x0p+0, false, - -0x0p+0, false, - -0x0p+0, false, - false, - -0x4p-1076, false, - -0x0p+0, false, - -0x0p+0, false, - -0x0p+0, false, - false, - -0x4p-16496, false, - -0x4p-16496, false, - -0x0p+0, false, - -0x0p+0, false), + -0x8p-152, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + false, + -0x4p-1076, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + false, + -0x8p-16448, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + false, + -0x4p-16448, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + false, + -0x4p-1076, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true, + false, + -0x4p-16496, false, true, + -0x4p-16496, false, true, + -0x0p+0, false, true, + -0x0p+0, false, true), TEST ("340282366920938463463374607431768211455", false, - 0xf.fffffp+124, false, - INF, true, - 0xf.fffffp+124, false, - INF, true, - false, - 0xf.ffffffffffff8p+124, false, - 0x1p+128, false, - 0xf.ffffffffffff8p+124, false, - 0x1p+128, false, - false, - 0xf.fffffffffffffffp+124, false, - 0x1p+128, false, - 0xf.fffffffffffffffp+124, false, - 0x1p+128, false, - false, - 0xf.fffffffffffffffp+124, false, - 0x1p+128, false, - 0xf.fffffffffffffffp+124, false, - 0x1p+128, false, - false, - 0xf.fffffffffffffffffffffffffcp+124, false, - 0x1p+128, false, - 0xf.fffffffffffffffffffffffffcp+124, false, - 0x1p+128, false, - false, - 0xf.fffffffffffffffffffffffffff8p+124, false, - 0x1p+128, false, - 0xf.fffffffffffffffffffffffffff8p+124, false, - 0x1p+128, false), + 0xf.fffffp+124, false, false, + INF, true, false, + 0xf.fffffp+124, false, false, + INF, true, false, + false, + 0xf.ffffffffffff8p+124, false, false, + 0x1p+128, false, false, + 0xf.ffffffffffff8p+124, false, false, + 0x1p+128, false, false, + false, + 0xf.fffffffffffffffp+124, false, false, + 0x1p+128, false, false, + 0xf.fffffffffffffffp+124, false, false, + 0x1p+128, false, false, + false, + 0xf.fffffffffffffffp+124, false, false, + 0x1p+128, false, false, + 0xf.fffffffffffffffp+124, false, false, + 0x1p+128, false, false, + false, + 0xf.fffffffffffffffffffffffffcp+124, false, false, + 0x1p+128, false, false, + 0xf.fffffffffffffffffffffffffcp+124, false, false, + 0x1p+128, false, false, + false, + 0xf.fffffffffffffffffffffffffff8p+124, false, false, + 0x1p+128, false, false, + 0xf.fffffffffffffffffffffffffff8p+124, false, false, + 0x1p+128, false, false), TEST ("179769313486231590772930519078902473361797697894230657273430" "081157732675805500963132708477322407536021120113879871393357" "658789768814416622492847430639474124377767893424865485276302" @@ -11619,35 +11619,35 @@ static const struct test tests[] = { "540827237163350510684586298239947245938479716304835356329624" "224137215", false, - 0xf.fffffp+124, true, - INF, true, - 0xf.fffffp+124, true, - INF, true, - false, - 0xf.ffffffffffff8p+1020, false, - INF, true, - 0xf.ffffffffffff8p+1020, false, - INF, true, - false, - 0xf.fffffffffffffffp+1020, false, - 0x1p+1024, false, - 0xf.fffffffffffffffp+1020, false, - 0x1p+1024, false, - false, - 0xf.fffffffffffffffp+1020, false, - 0x1p+1024, false, - 0xf.fffffffffffffffp+1020, false, - 0x1p+1024, false, - false, - 0xf.fffffffffffffffffffffffffcp+1020, true, - INF, true, - 0xf.fffffffffffffffffffffffffcp+1020, true, - INF, true, - false, - 0xf.fffffffffffffffffffffffffff8p+1020, false, - 0x1p+1024, false, - 0xf.fffffffffffffffffffffffffff8p+1020, false, - 0x1p+1024, false), + 0xf.fffffp+124, true, false, + INF, true, false, + 0xf.fffffp+124, true, false, + INF, true, false, + false, + 0xf.ffffffffffff8p+1020, false, false, + INF, true, false, + 0xf.ffffffffffff8p+1020, false, false, + INF, true, false, + false, + 0xf.fffffffffffffffp+1020, false, false, + 0x1p+1024, false, false, + 0xf.fffffffffffffffp+1020, false, false, + 0x1p+1024, false, false, + false, + 0xf.fffffffffffffffp+1020, false, false, + 0x1p+1024, false, false, + 0xf.fffffffffffffffp+1020, false, false, + 0x1p+1024, false, false, + false, + 0xf.fffffffffffffffffffffffffcp+1020, true, false, + INF, true, false, + 0xf.fffffffffffffffffffffffffcp+1020, true, false, + INF, true, false, + false, + 0xf.fffffffffffffffffffffffffff8p+1020, false, false, + 0x1p+1024, false, false, + 0xf.fffffffffffffffffffffffffff8p+1020, false, false, + 0x1p+1024, false, false), TEST ("118973149535723176508575932662800713076344468709651023747267" "482123326135818048368690448859547261203991511543748483930925" "889766738130868742627452469834156500608087163436600489752214" @@ -11732,66 +11732,66 @@ static const struct test tests[] = { "047398248889922809181821393428829567971736994315246044702729" "0669964066815", false, - 0xf.fffffp+124, true, - INF, true, - 0xf.fffffp+124, true, - INF, true, - false, - 0xf.ffffffffffff8p+1020, true, - INF, true, - 0xf.ffffffffffff8p+1020, true, - INF, true, - false, - 0xf.fffffffffffffffp+16380, false, - INF, true, - 0xf.fffffffffffffffp+16380, false, - INF, true, - false, - 0xf.fffffffffffffffp+16380, false, - INF, true, - 0xf.fffffffffffffffp+16380, false, - INF, true, - false, - 0xf.fffffffffffffffffffffffffcp+1020, true, - INF, true, - 0xf.fffffffffffffffffffffffffcp+1020, true, - INF, true, - false, - 0xf.fffffffffffffffffffffffffff8p+16380, false, - INF, true, - 0xf.fffffffffffffffffffffffffff8p+16380, false, - INF, true), + 0xf.fffffp+124, true, false, + INF, true, false, + 0xf.fffffp+124, true, false, + INF, true, false, + false, + 0xf.ffffffffffff8p+1020, true, false, + INF, true, false, + 0xf.ffffffffffff8p+1020, true, false, + INF, true, false, + false, + 0xf.fffffffffffffffp+16380, false, false, + INF, true, false, + 0xf.fffffffffffffffp+16380, false, false, + INF, true, false, + false, + 0xf.fffffffffffffffp+16380, false, false, + INF, true, false, + 0xf.fffffffffffffffp+16380, false, false, + INF, true, false, + false, + 0xf.fffffffffffffffffffffffffcp+1020, true, false, + INF, true, false, + 0xf.fffffffffffffffffffffffffcp+1020, true, false, + INF, true, false, + false, + 0xf.fffffffffffffffffffffffffff8p+16380, false, false, + INF, true, false, + 0xf.fffffffffffffffffffffffffff8p+16380, false, false, + INF, true, false), TEST ("-340282366920938463463374607431768211455", false, - -INF, true, - -INF, true, - -0xf.fffffp+124, false, - -0xf.fffffp+124, false, - false, - -0x1p+128, false, - -0x1p+128, false, - -0xf.ffffffffffff8p+124, false, - -0xf.ffffffffffff8p+124, false, - false, - -0x1p+128, false, - -0x1p+128, false, - -0xf.fffffffffffffffp+124, false, - -0xf.fffffffffffffffp+124, false, - false, - -0x1p+128, false, - -0x1p+128, false, - -0xf.fffffffffffffffp+124, false, - -0xf.fffffffffffffffp+124, false, - false, - -0x1p+128, false, - -0x1p+128, false, - -0xf.fffffffffffffffffffffffffcp+124, false, - -0xf.fffffffffffffffffffffffffcp+124, false, - false, - -0x1p+128, false, - -0x1p+128, false, - -0xf.fffffffffffffffffffffffffff8p+124, false, - -0xf.fffffffffffffffffffffffffff8p+124, false), + -INF, true, false, + -INF, true, false, + -0xf.fffffp+124, false, false, + -0xf.fffffp+124, false, false, + false, + -0x1p+128, false, false, + -0x1p+128, false, false, + -0xf.ffffffffffff8p+124, false, false, + -0xf.ffffffffffff8p+124, false, false, + false, + -0x1p+128, false, false, + -0x1p+128, false, false, + -0xf.fffffffffffffffp+124, false, false, + -0xf.fffffffffffffffp+124, false, false, + false, + -0x1p+128, false, false, + -0x1p+128, false, false, + -0xf.fffffffffffffffp+124, false, false, + -0xf.fffffffffffffffp+124, false, false, + false, + -0x1p+128, false, false, + -0x1p+128, false, false, + -0xf.fffffffffffffffffffffffffcp+124, false, false, + -0xf.fffffffffffffffffffffffffcp+124, false, false, + false, + -0x1p+128, false, false, + -0x1p+128, false, false, + -0xf.fffffffffffffffffffffffffff8p+124, false, false, + -0xf.fffffffffffffffffffffffffff8p+124, false, false), TEST ("-17976931348623159077293051907890247336179769789423065727343" "008115773267580550096313270847732240753602112011387987139335" "765878976881441662249284743063947412437776789342486548527630" @@ -11799,35 +11799,35 @@ static const struct test tests[] = { "054082723716335051068458629823994724593847971630483535632962" "4224137215", false, - -INF, true, - -INF, true, - -0xf.fffffp+124, true, - -0xf.fffffp+124, true, - false, - -INF, true, - -INF, true, - -0xf.ffffffffffff8p+1020, false, - -0xf.ffffffffffff8p+1020, false, - false, - -0x1p+1024, false, - -0x1p+1024, false, - -0xf.fffffffffffffffp+1020, false, - -0xf.fffffffffffffffp+1020, false, - false, - -0x1p+1024, false, - -0x1p+1024, false, - -0xf.fffffffffffffffp+1020, false, - -0xf.fffffffffffffffp+1020, false, - false, - -INF, true, - -INF, true, - -0xf.fffffffffffffffffffffffffcp+1020, true, - -0xf.fffffffffffffffffffffffffcp+1020, true, - false, - -0x1p+1024, false, - -0x1p+1024, false, - -0xf.fffffffffffffffffffffffffff8p+1020, false, - -0xf.fffffffffffffffffffffffffff8p+1020, false), + -INF, true, false, + -INF, true, false, + -0xf.fffffp+124, true, false, + -0xf.fffffp+124, true, false, + false, + -INF, true, false, + -INF, true, false, + -0xf.ffffffffffff8p+1020, false, false, + -0xf.ffffffffffff8p+1020, false, false, + false, + -0x1p+1024, false, false, + -0x1p+1024, false, false, + -0xf.fffffffffffffffp+1020, false, false, + -0xf.fffffffffffffffp+1020, false, false, + false, + -0x1p+1024, false, false, + -0x1p+1024, false, false, + -0xf.fffffffffffffffp+1020, false, false, + -0xf.fffffffffffffffp+1020, false, false, + false, + -INF, true, false, + -INF, true, false, + -0xf.fffffffffffffffffffffffffcp+1020, true, false, + -0xf.fffffffffffffffffffffffffcp+1020, true, false, + false, + -0x1p+1024, false, false, + -0x1p+1024, false, false, + -0xf.fffffffffffffffffffffffffff8p+1020, false, false, + -0xf.fffffffffffffffffffffffffff8p+1020, false, false), TEST ("-11897314953572317650857593266280071307634446870965102374726" "748212332613581804836869044885954726120399151154374848393092" "588976673813086874262745246983415650060808716343660048975221" @@ -11912,3529 +11912,3901 @@ static const struct test tests[] = { "904739824888992280918182139342882956797173699431524604470272" "90669964066815", false, - -INF, true, - -INF, true, - -0xf.fffffp+124, true, - -0xf.fffffp+124, true, - false, - -INF, true, - -INF, true, - -0xf.ffffffffffff8p+1020, true, - -0xf.ffffffffffff8p+1020, true, - false, - -INF, true, - -INF, true, - -0xf.fffffffffffffffp+16380, false, - -0xf.fffffffffffffffp+16380, false, - false, - -INF, true, - -INF, true, - -0xf.fffffffffffffffp+16380, false, - -0xf.fffffffffffffffp+16380, false, - false, - -INF, true, - -INF, true, - -0xf.fffffffffffffffffffffffffcp+1020, true, - -0xf.fffffffffffffffffffffffffcp+1020, true, - false, - -INF, true, - -INF, true, - -0xf.fffffffffffffffffffffffffff8p+16380, false, - -0xf.fffffffffffffffffffffffffff8p+16380, false), + -INF, true, false, + -INF, true, false, + -0xf.fffffp+124, true, false, + -0xf.fffffp+124, true, false, + false, + -INF, true, false, + -INF, true, false, + -0xf.ffffffffffff8p+1020, true, false, + -0xf.ffffffffffff8p+1020, true, false, + false, + -INF, true, false, + -INF, true, false, + -0xf.fffffffffffffffp+16380, false, false, + -0xf.fffffffffffffffp+16380, false, false, + false, + -INF, true, false, + -INF, true, false, + -0xf.fffffffffffffffp+16380, false, false, + -0xf.fffffffffffffffp+16380, false, false, + false, + -INF, true, false, + -INF, true, false, + -0xf.fffffffffffffffffffffffffcp+1020, true, false, + -0xf.fffffffffffffffffffffffffcp+1020, true, false, + false, + -INF, true, false, + -INF, true, false, + -0xf.fffffffffffffffffffffffffff8p+16380, false, false, + -0xf.fffffffffffffffffffffffffff8p+16380, false, false), TEST ("+0x.80000000000000000000000000000001p1025", false, - 0xf.fffffp+124, true, - INF, true, - 0xf.fffffp+124, true, - INF, true, - false, - 0xf.ffffffffffff8p+1020, true, - INF, true, - 0xf.ffffffffffff8p+1020, true, - INF, true, - false, - 0x1p+1024, false, - 0x1p+1024, false, - 0x1p+1024, false, - 0x1.0000000000000002p+1024, false, - false, - 0x1p+1024, false, - 0x1p+1024, false, - 0x1p+1024, false, - 0x1.0000000000000002p+1024, false, - false, - 0xf.fffffffffffffffffffffffffcp+1020, true, - INF, true, - 0xf.fffffffffffffffffffffffffcp+1020, true, - INF, true, - false, - 0x1p+1024, false, - 0x1p+1024, false, - 0x1p+1024, false, - 0x1.0000000000000000000000000001p+1024, false), + 0xf.fffffp+124, true, false, + INF, true, false, + 0xf.fffffp+124, true, false, + INF, true, false, + false, + 0xf.ffffffffffff8p+1020, true, false, + INF, true, false, + 0xf.ffffffffffff8p+1020, true, false, + INF, true, false, + false, + 0x1p+1024, false, false, + 0x1p+1024, false, false, + 0x1p+1024, false, false, + 0x1.0000000000000002p+1024, false, false, + false, + 0x1p+1024, false, false, + 0x1p+1024, false, false, + 0x1p+1024, false, false, + 0x1.0000000000000002p+1024, false, false, + false, + 0xf.fffffffffffffffffffffffffcp+1020, true, false, + INF, true, false, + 0xf.fffffffffffffffffffffffffcp+1020, true, false, + INF, true, false, + false, + 0x1p+1024, false, false, + 0x1p+1024, false, false, + 0x1p+1024, false, false, + 0x1.0000000000000000000000000001p+1024, false, 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), + 0x1.8p+0, false, false, + 0x1.8p+0, false, false, + 0x1.8p+0, false, false, + 0x1.8p+0, false, false, + true, + 0x1.8p+0, false, false, + 0x1.8p+0, false, false, + 0x1.8p+0, false, false, + 0x1.8p+0, false, false, + true, + 0x1.8p+0, false, false, + 0x1.8p+0, false, false, + 0x1.8p+0, false, false, + 0x1.8p+0, false, false, + true, + 0x1.8p+0, false, false, + 0x1.8p+0, false, false, + 0x1.8p+0, false, false, + 0x1.8p+0, false, false, + true, + 0x1.8p+0, false, false, + 0x1.8p+0, false, false, + 0x1.8p+0, false, false, + 0x1.8p+0, false, false, + true, + 0x1.8p+0, false, false, + 0x1.8p+0, false, false, + 0x1.8p+0, false, false, + 0x1.8p+0, false, 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), + 0x1.4p+0, false, false, + 0x1.4p+0, false, false, + 0x1.4p+0, false, false, + 0x1.4p+0, false, false, + true, + 0x1.4p+0, false, false, + 0x1.4p+0, false, false, + 0x1.4p+0, false, false, + 0x1.4p+0, false, false, + true, + 0x1.4p+0, false, false, + 0x1.4p+0, false, false, + 0x1.4p+0, false, false, + 0x1.4p+0, false, false, + true, + 0x1.4p+0, false, false, + 0x1.4p+0, false, false, + 0x1.4p+0, false, false, + 0x1.4p+0, false, false, + true, + 0x1.4p+0, false, false, + 0x1.4p+0, false, false, + 0x1.4p+0, false, false, + 0x1.4p+0, false, false, + true, + 0x1.4p+0, false, false, + 0x1.4p+0, false, false, + 0x1.4p+0, false, false, + 0x1.4p+0, false, 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), + 0x1.2p+0, false, false, + 0x1.2p+0, false, false, + 0x1.2p+0, false, false, + 0x1.2p+0, false, false, + true, + 0x1.2p+0, false, false, + 0x1.2p+0, false, false, + 0x1.2p+0, false, false, + 0x1.2p+0, false, false, + true, + 0x1.2p+0, false, false, + 0x1.2p+0, false, false, + 0x1.2p+0, false, false, + 0x1.2p+0, false, false, + true, + 0x1.2p+0, false, false, + 0x1.2p+0, false, false, + 0x1.2p+0, false, false, + 0x1.2p+0, false, false, + true, + 0x1.2p+0, false, false, + 0x1.2p+0, false, false, + 0x1.2p+0, false, false, + 0x1.2p+0, false, false, + true, + 0x1.2p+0, false, false, + 0x1.2p+0, false, false, + 0x1.2p+0, false, false, + 0x1.2p+0, false, 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), + 0x1.1p+0, false, false, + 0x1.1p+0, false, false, + 0x1.1p+0, false, false, + 0x1.1p+0, false, false, + true, + 0x1.1p+0, false, false, + 0x1.1p+0, false, false, + 0x1.1p+0, false, false, + 0x1.1p+0, false, false, + true, + 0x1.1p+0, false, false, + 0x1.1p+0, false, false, + 0x1.1p+0, false, false, + 0x1.1p+0, false, false, + true, + 0x1.1p+0, false, false, + 0x1.1p+0, false, false, + 0x1.1p+0, false, false, + 0x1.1p+0, false, false, + true, + 0x1.1p+0, false, false, + 0x1.1p+0, false, false, + 0x1.1p+0, false, false, + 0x1.1p+0, false, false, + true, + 0x1.1p+0, false, false, + 0x1.1p+0, false, false, + 0x1.1p+0, false, false, + 0x1.1p+0, false, 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), + 0x1.08p+0, false, false, + 0x1.08p+0, false, false, + 0x1.08p+0, false, false, + 0x1.08p+0, false, false, + true, + 0x1.08p+0, false, false, + 0x1.08p+0, false, false, + 0x1.08p+0, false, false, + 0x1.08p+0, false, false, + true, + 0x1.08p+0, false, false, + 0x1.08p+0, false, false, + 0x1.08p+0, false, false, + 0x1.08p+0, false, false, + true, + 0x1.08p+0, false, false, + 0x1.08p+0, false, false, + 0x1.08p+0, false, false, + 0x1.08p+0, false, false, + true, + 0x1.08p+0, false, false, + 0x1.08p+0, false, false, + 0x1.08p+0, false, false, + 0x1.08p+0, false, false, + true, + 0x1.08p+0, false, false, + 0x1.08p+0, false, false, + 0x1.08p+0, false, false, + 0x1.08p+0, false, 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), + 0x1.04p+0, false, false, + 0x1.04p+0, false, false, + 0x1.04p+0, false, false, + 0x1.04p+0, false, false, + true, + 0x1.04p+0, false, false, + 0x1.04p+0, false, false, + 0x1.04p+0, false, false, + 0x1.04p+0, false, false, + true, + 0x1.04p+0, false, false, + 0x1.04p+0, false, false, + 0x1.04p+0, false, false, + 0x1.04p+0, false, false, + true, + 0x1.04p+0, false, false, + 0x1.04p+0, false, false, + 0x1.04p+0, false, false, + 0x1.04p+0, false, false, + true, + 0x1.04p+0, false, false, + 0x1.04p+0, false, false, + 0x1.04p+0, false, false, + 0x1.04p+0, false, false, + true, + 0x1.04p+0, false, false, + 0x1.04p+0, false, false, + 0x1.04p+0, false, false, + 0x1.04p+0, false, 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), + 0x1.02p+0, false, false, + 0x1.02p+0, false, false, + 0x1.02p+0, false, false, + 0x1.02p+0, false, false, + true, + 0x1.02p+0, false, false, + 0x1.02p+0, false, false, + 0x1.02p+0, false, false, + 0x1.02p+0, false, false, + true, + 0x1.02p+0, false, false, + 0x1.02p+0, false, false, + 0x1.02p+0, false, false, + 0x1.02p+0, false, false, + true, + 0x1.02p+0, false, false, + 0x1.02p+0, false, false, + 0x1.02p+0, false, false, + 0x1.02p+0, false, false, + true, + 0x1.02p+0, false, false, + 0x1.02p+0, false, false, + 0x1.02p+0, false, false, + 0x1.02p+0, false, false, + true, + 0x1.02p+0, false, false, + 0x1.02p+0, false, false, + 0x1.02p+0, false, false, + 0x1.02p+0, false, 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), + 0x1.01p+0, false, false, + 0x1.01p+0, false, false, + 0x1.01p+0, false, false, + 0x1.01p+0, false, false, + true, + 0x1.01p+0, false, false, + 0x1.01p+0, false, false, + 0x1.01p+0, false, false, + 0x1.01p+0, false, false, + true, + 0x1.01p+0, false, false, + 0x1.01p+0, false, false, + 0x1.01p+0, false, false, + 0x1.01p+0, false, false, + true, + 0x1.01p+0, false, false, + 0x1.01p+0, false, false, + 0x1.01p+0, false, false, + 0x1.01p+0, false, false, + true, + 0x1.01p+0, false, false, + 0x1.01p+0, false, false, + 0x1.01p+0, false, false, + 0x1.01p+0, false, false, + true, + 0x1.01p+0, false, false, + 0x1.01p+0, false, false, + 0x1.01p+0, false, false, + 0x1.01p+0, false, 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), + 0x1.008p+0, false, false, + 0x1.008p+0, false, false, + 0x1.008p+0, false, false, + 0x1.008p+0, false, false, + true, + 0x1.008p+0, false, false, + 0x1.008p+0, false, false, + 0x1.008p+0, false, false, + 0x1.008p+0, false, false, + true, + 0x1.008p+0, false, false, + 0x1.008p+0, false, false, + 0x1.008p+0, false, false, + 0x1.008p+0, false, false, + true, + 0x1.008p+0, false, false, + 0x1.008p+0, false, false, + 0x1.008p+0, false, false, + 0x1.008p+0, false, false, + true, + 0x1.008p+0, false, false, + 0x1.008p+0, false, false, + 0x1.008p+0, false, false, + 0x1.008p+0, false, false, + true, + 0x1.008p+0, false, false, + 0x1.008p+0, false, false, + 0x1.008p+0, false, false, + 0x1.008p+0, false, 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), + 0x1.004p+0, false, false, + 0x1.004p+0, false, false, + 0x1.004p+0, false, false, + 0x1.004p+0, false, false, + true, + 0x1.004p+0, false, false, + 0x1.004p+0, false, false, + 0x1.004p+0, false, false, + 0x1.004p+0, false, false, + true, + 0x1.004p+0, false, false, + 0x1.004p+0, false, false, + 0x1.004p+0, false, false, + 0x1.004p+0, false, false, + true, + 0x1.004p+0, false, false, + 0x1.004p+0, false, false, + 0x1.004p+0, false, false, + 0x1.004p+0, false, false, + true, + 0x1.004p+0, false, false, + 0x1.004p+0, false, false, + 0x1.004p+0, false, false, + 0x1.004p+0, false, false, + true, + 0x1.004p+0, false, false, + 0x1.004p+0, false, false, + 0x1.004p+0, false, false, + 0x1.004p+0, false, 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), + 0x1.002p+0, false, false, + 0x1.002p+0, false, false, + 0x1.002p+0, false, false, + 0x1.002p+0, false, false, + true, + 0x1.002p+0, false, false, + 0x1.002p+0, false, false, + 0x1.002p+0, false, false, + 0x1.002p+0, false, false, + true, + 0x1.002p+0, false, false, + 0x1.002p+0, false, false, + 0x1.002p+0, false, false, + 0x1.002p+0, false, false, + true, + 0x1.002p+0, false, false, + 0x1.002p+0, false, false, + 0x1.002p+0, false, false, + 0x1.002p+0, false, false, + true, + 0x1.002p+0, false, false, + 0x1.002p+0, false, false, + 0x1.002p+0, false, false, + 0x1.002p+0, false, false, + true, + 0x1.002p+0, false, false, + 0x1.002p+0, false, false, + 0x1.002p+0, false, false, + 0x1.002p+0, false, 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), + 0x1.001p+0, false, false, + 0x1.001p+0, false, false, + 0x1.001p+0, false, false, + 0x1.001p+0, false, false, + true, + 0x1.001p+0, false, false, + 0x1.001p+0, false, false, + 0x1.001p+0, false, false, + 0x1.001p+0, false, false, + true, + 0x1.001p+0, false, false, + 0x1.001p+0, false, false, + 0x1.001p+0, false, false, + 0x1.001p+0, false, false, + true, + 0x1.001p+0, false, false, + 0x1.001p+0, false, false, + 0x1.001p+0, false, false, + 0x1.001p+0, false, false, + true, + 0x1.001p+0, false, false, + 0x1.001p+0, false, false, + 0x1.001p+0, false, false, + 0x1.001p+0, false, false, + true, + 0x1.001p+0, false, false, + 0x1.001p+0, false, false, + 0x1.001p+0, false, false, + 0x1.001p+0, false, 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), + 0x1.0008p+0, false, false, + 0x1.0008p+0, false, false, + 0x1.0008p+0, false, false, + 0x1.0008p+0, false, false, + true, + 0x1.0008p+0, false, false, + 0x1.0008p+0, false, false, + 0x1.0008p+0, false, false, + 0x1.0008p+0, false, false, + true, + 0x1.0008p+0, false, false, + 0x1.0008p+0, false, false, + 0x1.0008p+0, false, false, + 0x1.0008p+0, false, false, + true, + 0x1.0008p+0, false, false, + 0x1.0008p+0, false, false, + 0x1.0008p+0, false, false, + 0x1.0008p+0, false, false, + true, + 0x1.0008p+0, false, false, + 0x1.0008p+0, false, false, + 0x1.0008p+0, false, false, + 0x1.0008p+0, false, false, + true, + 0x1.0008p+0, false, false, + 0x1.0008p+0, false, false, + 0x1.0008p+0, false, false, + 0x1.0008p+0, false, 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), + 0x1.0004p+0, false, false, + 0x1.0004p+0, false, false, + 0x1.0004p+0, false, false, + 0x1.0004p+0, false, false, + true, + 0x1.0004p+0, false, false, + 0x1.0004p+0, false, false, + 0x1.0004p+0, false, false, + 0x1.0004p+0, false, false, + true, + 0x1.0004p+0, false, false, + 0x1.0004p+0, false, false, + 0x1.0004p+0, false, false, + 0x1.0004p+0, false, false, + true, + 0x1.0004p+0, false, false, + 0x1.0004p+0, false, false, + 0x1.0004p+0, false, false, + 0x1.0004p+0, false, false, + true, + 0x1.0004p+0, false, false, + 0x1.0004p+0, false, false, + 0x1.0004p+0, false, false, + 0x1.0004p+0, false, false, + true, + 0x1.0004p+0, false, false, + 0x1.0004p+0, false, false, + 0x1.0004p+0, false, false, + 0x1.0004p+0, false, 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), + 0x1.0002p+0, false, false, + 0x1.0002p+0, false, false, + 0x1.0002p+0, false, false, + 0x1.0002p+0, false, false, + true, + 0x1.0002p+0, false, false, + 0x1.0002p+0, false, false, + 0x1.0002p+0, false, false, + 0x1.0002p+0, false, false, + true, + 0x1.0002p+0, false, false, + 0x1.0002p+0, false, false, + 0x1.0002p+0, false, false, + 0x1.0002p+0, false, false, + true, + 0x1.0002p+0, false, false, + 0x1.0002p+0, false, false, + 0x1.0002p+0, false, false, + 0x1.0002p+0, false, false, + true, + 0x1.0002p+0, false, false, + 0x1.0002p+0, false, false, + 0x1.0002p+0, false, false, + 0x1.0002p+0, false, false, + true, + 0x1.0002p+0, false, false, + 0x1.0002p+0, false, false, + 0x1.0002p+0, false, false, + 0x1.0002p+0, false, 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), + 0x1.0001p+0, false, false, + 0x1.0001p+0, false, false, + 0x1.0001p+0, false, false, + 0x1.0001p+0, false, false, + true, + 0x1.0001p+0, false, false, + 0x1.0001p+0, false, false, + 0x1.0001p+0, false, false, + 0x1.0001p+0, false, false, + true, + 0x1.0001p+0, false, false, + 0x1.0001p+0, false, false, + 0x1.0001p+0, false, false, + 0x1.0001p+0, false, false, + true, + 0x1.0001p+0, false, false, + 0x1.0001p+0, false, false, + 0x1.0001p+0, false, false, + 0x1.0001p+0, false, false, + true, + 0x1.0001p+0, false, false, + 0x1.0001p+0, false, false, + 0x1.0001p+0, false, false, + 0x1.0001p+0, false, false, + true, + 0x1.0001p+0, false, false, + 0x1.0001p+0, false, false, + 0x1.0001p+0, false, false, + 0x1.0001p+0, false, 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), + 0x1.00008p+0, false, false, + 0x1.00008p+0, false, false, + 0x1.00008p+0, false, false, + 0x1.00008p+0, false, false, + true, + 0x1.00008p+0, false, false, + 0x1.00008p+0, false, false, + 0x1.00008p+0, false, false, + 0x1.00008p+0, false, false, + true, + 0x1.00008p+0, false, false, + 0x1.00008p+0, false, false, + 0x1.00008p+0, false, false, + 0x1.00008p+0, false, false, + true, + 0x1.00008p+0, false, false, + 0x1.00008p+0, false, false, + 0x1.00008p+0, false, false, + 0x1.00008p+0, false, false, + true, + 0x1.00008p+0, false, false, + 0x1.00008p+0, false, false, + 0x1.00008p+0, false, false, + 0x1.00008p+0, false, false, + true, + 0x1.00008p+0, false, false, + 0x1.00008p+0, false, false, + 0x1.00008p+0, false, false, + 0x1.00008p+0, false, 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), + 0x1.00004p+0, false, false, + 0x1.00004p+0, false, false, + 0x1.00004p+0, false, false, + 0x1.00004p+0, false, false, + true, + 0x1.00004p+0, false, false, + 0x1.00004p+0, false, false, + 0x1.00004p+0, false, false, + 0x1.00004p+0, false, false, + true, + 0x1.00004p+0, false, false, + 0x1.00004p+0, false, false, + 0x1.00004p+0, false, false, + 0x1.00004p+0, false, false, + true, + 0x1.00004p+0, false, false, + 0x1.00004p+0, false, false, + 0x1.00004p+0, false, false, + 0x1.00004p+0, false, false, + true, + 0x1.00004p+0, false, false, + 0x1.00004p+0, false, false, + 0x1.00004p+0, false, false, + 0x1.00004p+0, false, false, + true, + 0x1.00004p+0, false, false, + 0x1.00004p+0, false, false, + 0x1.00004p+0, false, false, + 0x1.00004p+0, false, 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), + 0x1.00002p+0, false, false, + 0x1.00002p+0, false, false, + 0x1.00002p+0, false, false, + 0x1.00002p+0, false, false, + true, + 0x1.00002p+0, false, false, + 0x1.00002p+0, false, false, + 0x1.00002p+0, false, false, + 0x1.00002p+0, false, false, + true, + 0x1.00002p+0, false, false, + 0x1.00002p+0, false, false, + 0x1.00002p+0, false, false, + 0x1.00002p+0, false, false, + true, + 0x1.00002p+0, false, false, + 0x1.00002p+0, false, false, + 0x1.00002p+0, false, false, + 0x1.00002p+0, false, false, + true, + 0x1.00002p+0, false, false, + 0x1.00002p+0, false, false, + 0x1.00002p+0, false, false, + 0x1.00002p+0, false, false, + true, + 0x1.00002p+0, false, false, + 0x1.00002p+0, false, false, + 0x1.00002p+0, false, false, + 0x1.00002p+0, false, 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), + 0x1.00001p+0, false, false, + 0x1.00001p+0, false, false, + 0x1.00001p+0, false, false, + 0x1.00001p+0, false, false, + true, + 0x1.00001p+0, false, false, + 0x1.00001p+0, false, false, + 0x1.00001p+0, false, false, + 0x1.00001p+0, false, false, + true, + 0x1.00001p+0, false, false, + 0x1.00001p+0, false, false, + 0x1.00001p+0, false, false, + 0x1.00001p+0, false, false, + true, + 0x1.00001p+0, false, false, + 0x1.00001p+0, false, false, + 0x1.00001p+0, false, false, + 0x1.00001p+0, false, false, + true, + 0x1.00001p+0, false, false, + 0x1.00001p+0, false, false, + 0x1.00001p+0, false, false, + 0x1.00001p+0, false, false, + true, + 0x1.00001p+0, false, false, + 0x1.00001p+0, false, false, + 0x1.00001p+0, false, false, + 0x1.00001p+0, false, 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), + 0x1.000008p+0, false, false, + 0x1.000008p+0, false, false, + 0x1.000008p+0, false, false, + 0x1.000008p+0, false, false, + true, + 0x1.000008p+0, false, false, + 0x1.000008p+0, false, false, + 0x1.000008p+0, false, false, + 0x1.000008p+0, false, false, + true, + 0x1.000008p+0, false, false, + 0x1.000008p+0, false, false, + 0x1.000008p+0, false, false, + 0x1.000008p+0, false, false, + true, + 0x1.000008p+0, false, false, + 0x1.000008p+0, false, false, + 0x1.000008p+0, false, false, + 0x1.000008p+0, false, false, + true, + 0x1.000008p+0, false, false, + 0x1.000008p+0, false, false, + 0x1.000008p+0, false, false, + 0x1.000008p+0, false, false, + true, + 0x1.000008p+0, false, false, + 0x1.000008p+0, false, false, + 0x1.000008p+0, false, false, + 0x1.000008p+0, false, 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), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + true, + 0x1.0000008p+0, false, false, + 0x1.0000008p+0, false, false, + 0x1.0000008p+0, false, false, + 0x1.0000008p+0, false, false, + true, + 0x1.0000008p+0, false, false, + 0x1.0000008p+0, false, false, + 0x1.0000008p+0, false, false, + 0x1.0000008p+0, false, false, + true, + 0x1.0000008p+0, false, false, + 0x1.0000008p+0, false, false, + 0x1.0000008p+0, false, false, + 0x1.0000008p+0, false, false, + true, + 0x1.0000008p+0, false, false, + 0x1.0000008p+0, false, false, + 0x1.0000008p+0, false, false, + 0x1.0000008p+0, false, false, + true, + 0x1.0000008p+0, false, false, + 0x1.0000008p+0, false, false, + 0x1.0000008p+0, false, false, + 0x1.0000008p+0, false, 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), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + true, + 0x1.0000004p+0, false, false, + 0x1.0000004p+0, false, false, + 0x1.0000004p+0, false, false, + 0x1.0000004p+0, false, false, + true, + 0x1.0000004p+0, false, false, + 0x1.0000004p+0, false, false, + 0x1.0000004p+0, false, false, + 0x1.0000004p+0, false, false, + true, + 0x1.0000004p+0, false, false, + 0x1.0000004p+0, false, false, + 0x1.0000004p+0, false, false, + 0x1.0000004p+0, false, false, + true, + 0x1.0000004p+0, false, false, + 0x1.0000004p+0, false, false, + 0x1.0000004p+0, false, false, + 0x1.0000004p+0, false, false, + true, + 0x1.0000004p+0, false, false, + 0x1.0000004p+0, false, false, + 0x1.0000004p+0, false, false, + 0x1.0000004p+0, false, 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), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + true, + 0x1.0000002p+0, false, false, + 0x1.0000002p+0, false, false, + 0x1.0000002p+0, false, false, + 0x1.0000002p+0, false, false, + true, + 0x1.0000002p+0, false, false, + 0x1.0000002p+0, false, false, + 0x1.0000002p+0, false, false, + 0x1.0000002p+0, false, false, + true, + 0x1.0000002p+0, false, false, + 0x1.0000002p+0, false, false, + 0x1.0000002p+0, false, false, + 0x1.0000002p+0, false, false, + true, + 0x1.0000002p+0, false, false, + 0x1.0000002p+0, false, false, + 0x1.0000002p+0, false, false, + 0x1.0000002p+0, false, false, + true, + 0x1.0000002p+0, false, false, + 0x1.0000002p+0, false, false, + 0x1.0000002p+0, false, false, + 0x1.0000002p+0, false, 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), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + true, + 0x1.0000001p+0, false, false, + 0x1.0000001p+0, false, false, + 0x1.0000001p+0, false, false, + 0x1.0000001p+0, false, false, + true, + 0x1.0000001p+0, false, false, + 0x1.0000001p+0, false, false, + 0x1.0000001p+0, false, false, + 0x1.0000001p+0, false, false, + true, + 0x1.0000001p+0, false, false, + 0x1.0000001p+0, false, false, + 0x1.0000001p+0, false, false, + 0x1.0000001p+0, false, false, + true, + 0x1.0000001p+0, false, false, + 0x1.0000001p+0, false, false, + 0x1.0000001p+0, false, false, + 0x1.0000001p+0, false, false, + true, + 0x1.0000001p+0, false, false, + 0x1.0000001p+0, false, false, + 0x1.0000001p+0, false, false, + 0x1.0000001p+0, false, 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), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + true, + 0x1.00000008p+0, false, false, + 0x1.00000008p+0, false, false, + 0x1.00000008p+0, false, false, + 0x1.00000008p+0, false, false, + true, + 0x1.00000008p+0, false, false, + 0x1.00000008p+0, false, false, + 0x1.00000008p+0, false, false, + 0x1.00000008p+0, false, false, + true, + 0x1.00000008p+0, false, false, + 0x1.00000008p+0, false, false, + 0x1.00000008p+0, false, false, + 0x1.00000008p+0, false, false, + true, + 0x1.00000008p+0, false, false, + 0x1.00000008p+0, false, false, + 0x1.00000008p+0, false, false, + 0x1.00000008p+0, false, false, + true, + 0x1.00000008p+0, false, false, + 0x1.00000008p+0, false, false, + 0x1.00000008p+0, false, false, + 0x1.00000008p+0, false, 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), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + true, + 0x1.00000004p+0, false, false, + 0x1.00000004p+0, false, false, + 0x1.00000004p+0, false, false, + 0x1.00000004p+0, false, false, + true, + 0x1.00000004p+0, false, false, + 0x1.00000004p+0, false, false, + 0x1.00000004p+0, false, false, + 0x1.00000004p+0, false, false, + true, + 0x1.00000004p+0, false, false, + 0x1.00000004p+0, false, false, + 0x1.00000004p+0, false, false, + 0x1.00000004p+0, false, false, + true, + 0x1.00000004p+0, false, false, + 0x1.00000004p+0, false, false, + 0x1.00000004p+0, false, false, + 0x1.00000004p+0, false, false, + true, + 0x1.00000004p+0, false, false, + 0x1.00000004p+0, false, false, + 0x1.00000004p+0, false, false, + 0x1.00000004p+0, false, 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), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + true, + 0x1.00000002p+0, false, false, + 0x1.00000002p+0, false, false, + 0x1.00000002p+0, false, false, + 0x1.00000002p+0, false, false, + true, + 0x1.00000002p+0, false, false, + 0x1.00000002p+0, false, false, + 0x1.00000002p+0, false, false, + 0x1.00000002p+0, false, false, + true, + 0x1.00000002p+0, false, false, + 0x1.00000002p+0, false, false, + 0x1.00000002p+0, false, false, + 0x1.00000002p+0, false, false, + true, + 0x1.00000002p+0, false, false, + 0x1.00000002p+0, false, false, + 0x1.00000002p+0, false, false, + 0x1.00000002p+0, false, false, + true, + 0x1.00000002p+0, false, false, + 0x1.00000002p+0, false, false, + 0x1.00000002p+0, false, false, + 0x1.00000002p+0, false, 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), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + true, + 0x1.00000001p+0, false, false, + 0x1.00000001p+0, false, false, + 0x1.00000001p+0, false, false, + 0x1.00000001p+0, false, false, + true, + 0x1.00000001p+0, false, false, + 0x1.00000001p+0, false, false, + 0x1.00000001p+0, false, false, + 0x1.00000001p+0, false, false, + true, + 0x1.00000001p+0, false, false, + 0x1.00000001p+0, false, false, + 0x1.00000001p+0, false, false, + 0x1.00000001p+0, false, false, + true, + 0x1.00000001p+0, false, false, + 0x1.00000001p+0, false, false, + 0x1.00000001p+0, false, false, + 0x1.00000001p+0, false, false, + true, + 0x1.00000001p+0, false, false, + 0x1.00000001p+0, false, false, + 0x1.00000001p+0, false, false, + 0x1.00000001p+0, false, 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), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + true, + 0x1.000000008p+0, false, false, + 0x1.000000008p+0, false, false, + 0x1.000000008p+0, false, false, + 0x1.000000008p+0, false, false, + true, + 0x1.000000008p+0, false, false, + 0x1.000000008p+0, false, false, + 0x1.000000008p+0, false, false, + 0x1.000000008p+0, false, false, + true, + 0x1.000000008p+0, false, false, + 0x1.000000008p+0, false, false, + 0x1.000000008p+0, false, false, + 0x1.000000008p+0, false, false, + true, + 0x1.000000008p+0, false, false, + 0x1.000000008p+0, false, false, + 0x1.000000008p+0, false, false, + 0x1.000000008p+0, false, false, + true, + 0x1.000000008p+0, false, false, + 0x1.000000008p+0, false, false, + 0x1.000000008p+0, false, false, + 0x1.000000008p+0, false, 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), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + true, + 0x1.000000004p+0, false, false, + 0x1.000000004p+0, false, false, + 0x1.000000004p+0, false, false, + 0x1.000000004p+0, false, false, + true, + 0x1.000000004p+0, false, false, + 0x1.000000004p+0, false, false, + 0x1.000000004p+0, false, false, + 0x1.000000004p+0, false, false, + true, + 0x1.000000004p+0, false, false, + 0x1.000000004p+0, false, false, + 0x1.000000004p+0, false, false, + 0x1.000000004p+0, false, false, + true, + 0x1.000000004p+0, false, false, + 0x1.000000004p+0, false, false, + 0x1.000000004p+0, false, false, + 0x1.000000004p+0, false, false, + true, + 0x1.000000004p+0, false, false, + 0x1.000000004p+0, false, false, + 0x1.000000004p+0, false, false, + 0x1.000000004p+0, false, 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), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + true, + 0x1.000000002p+0, false, false, + 0x1.000000002p+0, false, false, + 0x1.000000002p+0, false, false, + 0x1.000000002p+0, false, false, + true, + 0x1.000000002p+0, false, false, + 0x1.000000002p+0, false, false, + 0x1.000000002p+0, false, false, + 0x1.000000002p+0, false, false, + true, + 0x1.000000002p+0, false, false, + 0x1.000000002p+0, false, false, + 0x1.000000002p+0, false, false, + 0x1.000000002p+0, false, false, + true, + 0x1.000000002p+0, false, false, + 0x1.000000002p+0, false, false, + 0x1.000000002p+0, false, false, + 0x1.000000002p+0, false, false, + true, + 0x1.000000002p+0, false, false, + 0x1.000000002p+0, false, false, + 0x1.000000002p+0, false, false, + 0x1.000000002p+0, false, 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), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + true, + 0x1.000000001p+0, false, false, + 0x1.000000001p+0, false, false, + 0x1.000000001p+0, false, false, + 0x1.000000001p+0, false, false, + true, + 0x1.000000001p+0, false, false, + 0x1.000000001p+0, false, false, + 0x1.000000001p+0, false, false, + 0x1.000000001p+0, false, false, + true, + 0x1.000000001p+0, false, false, + 0x1.000000001p+0, false, false, + 0x1.000000001p+0, false, false, + 0x1.000000001p+0, false, false, + true, + 0x1.000000001p+0, false, false, + 0x1.000000001p+0, false, false, + 0x1.000000001p+0, false, false, + 0x1.000000001p+0, false, false, + true, + 0x1.000000001p+0, false, false, + 0x1.000000001p+0, false, false, + 0x1.000000001p+0, false, false, + 0x1.000000001p+0, false, 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), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + true, + 0x1.0000000008p+0, false, false, + 0x1.0000000008p+0, false, false, + 0x1.0000000008p+0, false, false, + 0x1.0000000008p+0, false, false, + true, + 0x1.0000000008p+0, false, false, + 0x1.0000000008p+0, false, false, + 0x1.0000000008p+0, false, false, + 0x1.0000000008p+0, false, false, + true, + 0x1.0000000008p+0, false, false, + 0x1.0000000008p+0, false, false, + 0x1.0000000008p+0, false, false, + 0x1.0000000008p+0, false, false, + true, + 0x1.0000000008p+0, false, false, + 0x1.0000000008p+0, false, false, + 0x1.0000000008p+0, false, false, + 0x1.0000000008p+0, false, false, + true, + 0x1.0000000008p+0, false, false, + 0x1.0000000008p+0, false, false, + 0x1.0000000008p+0, false, false, + 0x1.0000000008p+0, false, 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), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + true, + 0x1.0000000004p+0, false, false, + 0x1.0000000004p+0, false, false, + 0x1.0000000004p+0, false, false, + 0x1.0000000004p+0, false, false, + true, + 0x1.0000000004p+0, false, false, + 0x1.0000000004p+0, false, false, + 0x1.0000000004p+0, false, false, + 0x1.0000000004p+0, false, false, + true, + 0x1.0000000004p+0, false, false, + 0x1.0000000004p+0, false, false, + 0x1.0000000004p+0, false, false, + 0x1.0000000004p+0, false, false, + true, + 0x1.0000000004p+0, false, false, + 0x1.0000000004p+0, false, false, + 0x1.0000000004p+0, false, false, + 0x1.0000000004p+0, false, false, + true, + 0x1.0000000004p+0, false, false, + 0x1.0000000004p+0, false, false, + 0x1.0000000004p+0, false, false, + 0x1.0000000004p+0, false, 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), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + true, + 0x1.0000000002p+0, false, false, + 0x1.0000000002p+0, false, false, + 0x1.0000000002p+0, false, false, + 0x1.0000000002p+0, false, false, + true, + 0x1.0000000002p+0, false, false, + 0x1.0000000002p+0, false, false, + 0x1.0000000002p+0, false, false, + 0x1.0000000002p+0, false, false, + true, + 0x1.0000000002p+0, false, false, + 0x1.0000000002p+0, false, false, + 0x1.0000000002p+0, false, false, + 0x1.0000000002p+0, false, false, + true, + 0x1.0000000002p+0, false, false, + 0x1.0000000002p+0, false, false, + 0x1.0000000002p+0, false, false, + 0x1.0000000002p+0, false, false, + true, + 0x1.0000000002p+0, false, false, + 0x1.0000000002p+0, false, false, + 0x1.0000000002p+0, false, false, + 0x1.0000000002p+0, false, 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), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + true, + 0x1.0000000001p+0, false, false, + 0x1.0000000001p+0, false, false, + 0x1.0000000001p+0, false, false, + 0x1.0000000001p+0, false, false, + true, + 0x1.0000000001p+0, false, false, + 0x1.0000000001p+0, false, false, + 0x1.0000000001p+0, false, false, + 0x1.0000000001p+0, false, false, + true, + 0x1.0000000001p+0, false, false, + 0x1.0000000001p+0, false, false, + 0x1.0000000001p+0, false, false, + 0x1.0000000001p+0, false, false, + true, + 0x1.0000000001p+0, false, false, + 0x1.0000000001p+0, false, false, + 0x1.0000000001p+0, false, false, + 0x1.0000000001p+0, false, false, + true, + 0x1.0000000001p+0, false, false, + 0x1.0000000001p+0, false, false, + 0x1.0000000001p+0, false, false, + 0x1.0000000001p+0, false, 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), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + true, + 0x1.00000000008p+0, false, false, + 0x1.00000000008p+0, false, false, + 0x1.00000000008p+0, false, false, + 0x1.00000000008p+0, false, false, + true, + 0x1.00000000008p+0, false, false, + 0x1.00000000008p+0, false, false, + 0x1.00000000008p+0, false, false, + 0x1.00000000008p+0, false, false, + true, + 0x1.00000000008p+0, false, false, + 0x1.00000000008p+0, false, false, + 0x1.00000000008p+0, false, false, + 0x1.00000000008p+0, false, false, + true, + 0x1.00000000008p+0, false, false, + 0x1.00000000008p+0, false, false, + 0x1.00000000008p+0, false, false, + 0x1.00000000008p+0, false, false, + true, + 0x1.00000000008p+0, false, false, + 0x1.00000000008p+0, false, false, + 0x1.00000000008p+0, false, false, + 0x1.00000000008p+0, false, 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), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + true, + 0x1.00000000004p+0, false, false, + 0x1.00000000004p+0, false, false, + 0x1.00000000004p+0, false, false, + 0x1.00000000004p+0, false, false, + true, + 0x1.00000000004p+0, false, false, + 0x1.00000000004p+0, false, false, + 0x1.00000000004p+0, false, false, + 0x1.00000000004p+0, false, false, + true, + 0x1.00000000004p+0, false, false, + 0x1.00000000004p+0, false, false, + 0x1.00000000004p+0, false, false, + 0x1.00000000004p+0, false, false, + true, + 0x1.00000000004p+0, false, false, + 0x1.00000000004p+0, false, false, + 0x1.00000000004p+0, false, false, + 0x1.00000000004p+0, false, false, + true, + 0x1.00000000004p+0, false, false, + 0x1.00000000004p+0, false, false, + 0x1.00000000004p+0, false, false, + 0x1.00000000004p+0, false, 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), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + true, + 0x1.00000000002p+0, false, false, + 0x1.00000000002p+0, false, false, + 0x1.00000000002p+0, false, false, + 0x1.00000000002p+0, false, false, + true, + 0x1.00000000002p+0, false, false, + 0x1.00000000002p+0, false, false, + 0x1.00000000002p+0, false, false, + 0x1.00000000002p+0, false, false, + true, + 0x1.00000000002p+0, false, false, + 0x1.00000000002p+0, false, false, + 0x1.00000000002p+0, false, false, + 0x1.00000000002p+0, false, false, + true, + 0x1.00000000002p+0, false, false, + 0x1.00000000002p+0, false, false, + 0x1.00000000002p+0, false, false, + 0x1.00000000002p+0, false, false, + true, + 0x1.00000000002p+0, false, false, + 0x1.00000000002p+0, false, false, + 0x1.00000000002p+0, false, false, + 0x1.00000000002p+0, false, 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), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + true, + 0x1.00000000001p+0, false, false, + 0x1.00000000001p+0, false, false, + 0x1.00000000001p+0, false, false, + 0x1.00000000001p+0, false, false, + true, + 0x1.00000000001p+0, false, false, + 0x1.00000000001p+0, false, false, + 0x1.00000000001p+0, false, false, + 0x1.00000000001p+0, false, false, + true, + 0x1.00000000001p+0, false, false, + 0x1.00000000001p+0, false, false, + 0x1.00000000001p+0, false, false, + 0x1.00000000001p+0, false, false, + true, + 0x1.00000000001p+0, false, false, + 0x1.00000000001p+0, false, false, + 0x1.00000000001p+0, false, false, + 0x1.00000000001p+0, false, false, + true, + 0x1.00000000001p+0, false, false, + 0x1.00000000001p+0, false, false, + 0x1.00000000001p+0, false, false, + 0x1.00000000001p+0, false, 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), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + true, + 0x1.000000000008p+0, false, false, + 0x1.000000000008p+0, false, false, + 0x1.000000000008p+0, false, false, + 0x1.000000000008p+0, false, false, + true, + 0x1.000000000008p+0, false, false, + 0x1.000000000008p+0, false, false, + 0x1.000000000008p+0, false, false, + 0x1.000000000008p+0, false, false, + true, + 0x1.000000000008p+0, false, false, + 0x1.000000000008p+0, false, false, + 0x1.000000000008p+0, false, false, + 0x1.000000000008p+0, false, false, + true, + 0x1.000000000008p+0, false, false, + 0x1.000000000008p+0, false, false, + 0x1.000000000008p+0, false, false, + 0x1.000000000008p+0, false, false, + true, + 0x1.000000000008p+0, false, false, + 0x1.000000000008p+0, false, false, + 0x1.000000000008p+0, false, false, + 0x1.000000000008p+0, false, 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), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + true, + 0x1.000000000004p+0, false, false, + 0x1.000000000004p+0, false, false, + 0x1.000000000004p+0, false, false, + 0x1.000000000004p+0, false, false, + true, + 0x1.000000000004p+0, false, false, + 0x1.000000000004p+0, false, false, + 0x1.000000000004p+0, false, false, + 0x1.000000000004p+0, false, false, + true, + 0x1.000000000004p+0, false, false, + 0x1.000000000004p+0, false, false, + 0x1.000000000004p+0, false, false, + 0x1.000000000004p+0, false, false, + true, + 0x1.000000000004p+0, false, false, + 0x1.000000000004p+0, false, false, + 0x1.000000000004p+0, false, false, + 0x1.000000000004p+0, false, false, + true, + 0x1.000000000004p+0, false, false, + 0x1.000000000004p+0, false, false, + 0x1.000000000004p+0, false, false, + 0x1.000000000004p+0, false, 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), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + true, + 0x1.000000000002p+0, false, false, + 0x1.000000000002p+0, false, false, + 0x1.000000000002p+0, false, false, + 0x1.000000000002p+0, false, false, + true, + 0x1.000000000002p+0, false, false, + 0x1.000000000002p+0, false, false, + 0x1.000000000002p+0, false, false, + 0x1.000000000002p+0, false, false, + true, + 0x1.000000000002p+0, false, false, + 0x1.000000000002p+0, false, false, + 0x1.000000000002p+0, false, false, + 0x1.000000000002p+0, false, false, + true, + 0x1.000000000002p+0, false, false, + 0x1.000000000002p+0, false, false, + 0x1.000000000002p+0, false, false, + 0x1.000000000002p+0, false, false, + true, + 0x1.000000000002p+0, false, false, + 0x1.000000000002p+0, false, false, + 0x1.000000000002p+0, false, false, + 0x1.000000000002p+0, false, 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), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + true, + 0x1.000000000001p+0, false, false, + 0x1.000000000001p+0, false, false, + 0x1.000000000001p+0, false, false, + 0x1.000000000001p+0, false, false, + true, + 0x1.000000000001p+0, false, false, + 0x1.000000000001p+0, false, false, + 0x1.000000000001p+0, false, false, + 0x1.000000000001p+0, false, false, + true, + 0x1.000000000001p+0, false, false, + 0x1.000000000001p+0, false, false, + 0x1.000000000001p+0, false, false, + 0x1.000000000001p+0, false, false, + true, + 0x1.000000000001p+0, false, false, + 0x1.000000000001p+0, false, false, + 0x1.000000000001p+0, false, false, + 0x1.000000000001p+0, false, false, + true, + 0x1.000000000001p+0, false, false, + 0x1.000000000001p+0, false, false, + 0x1.000000000001p+0, false, false, + 0x1.000000000001p+0, false, 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), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + true, + 0x1.0000000000008p+0, false, false, + 0x1.0000000000008p+0, false, false, + 0x1.0000000000008p+0, false, false, + 0x1.0000000000008p+0, false, false, + true, + 0x1.0000000000008p+0, false, false, + 0x1.0000000000008p+0, false, false, + 0x1.0000000000008p+0, false, false, + 0x1.0000000000008p+0, false, false, + true, + 0x1.0000000000008p+0, false, false, + 0x1.0000000000008p+0, false, false, + 0x1.0000000000008p+0, false, false, + 0x1.0000000000008p+0, false, false, + true, + 0x1.0000000000008p+0, false, false, + 0x1.0000000000008p+0, false, false, + 0x1.0000000000008p+0, false, false, + 0x1.0000000000008p+0, false, false, + true, + 0x1.0000000000008p+0, false, false, + 0x1.0000000000008p+0, false, false, + 0x1.0000000000008p+0, false, false, + 0x1.0000000000008p+0, false, 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), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + true, + 0x1.0000000000004p+0, false, false, + 0x1.0000000000004p+0, false, false, + 0x1.0000000000004p+0, false, false, + 0x1.0000000000004p+0, false, false, + true, + 0x1.0000000000004p+0, false, false, + 0x1.0000000000004p+0, false, false, + 0x1.0000000000004p+0, false, false, + 0x1.0000000000004p+0, false, false, + true, + 0x1.0000000000004p+0, false, false, + 0x1.0000000000004p+0, false, false, + 0x1.0000000000004p+0, false, false, + 0x1.0000000000004p+0, false, false, + true, + 0x1.0000000000004p+0, false, false, + 0x1.0000000000004p+0, false, false, + 0x1.0000000000004p+0, false, false, + 0x1.0000000000004p+0, false, false, + true, + 0x1.0000000000004p+0, false, false, + 0x1.0000000000004p+0, false, false, + 0x1.0000000000004p+0, false, false, + 0x1.0000000000004p+0, false, 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), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + true, + 0x1.0000000000002p+0, false, false, + 0x1.0000000000002p+0, false, false, + 0x1.0000000000002p+0, false, false, + 0x1.0000000000002p+0, false, false, + true, + 0x1.0000000000002p+0, false, false, + 0x1.0000000000002p+0, false, false, + 0x1.0000000000002p+0, false, false, + 0x1.0000000000002p+0, false, false, + true, + 0x1.0000000000002p+0, false, false, + 0x1.0000000000002p+0, false, false, + 0x1.0000000000002p+0, false, false, + 0x1.0000000000002p+0, false, false, + true, + 0x1.0000000000002p+0, false, false, + 0x1.0000000000002p+0, false, false, + 0x1.0000000000002p+0, false, false, + 0x1.0000000000002p+0, false, false, + true, + 0x1.0000000000002p+0, false, false, + 0x1.0000000000002p+0, false, false, + 0x1.0000000000002p+0, false, false, + 0x1.0000000000002p+0, false, 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), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + true, + 0x1.0000000000001p+0, false, false, + 0x1.0000000000001p+0, false, false, + 0x1.0000000000001p+0, false, false, + 0x1.0000000000001p+0, false, false, + true, + 0x1.0000000000001p+0, false, false, + 0x1.0000000000001p+0, false, false, + 0x1.0000000000001p+0, false, false, + 0x1.0000000000001p+0, false, false, + true, + 0x1.0000000000001p+0, false, false, + 0x1.0000000000001p+0, false, false, + 0x1.0000000000001p+0, false, false, + 0x1.0000000000001p+0, false, false, + true, + 0x1.0000000000001p+0, false, false, + 0x1.0000000000001p+0, false, false, + 0x1.0000000000001p+0, false, false, + 0x1.0000000000001p+0, false, false, + true, + 0x1.0000000000001p+0, false, false, + 0x1.0000000000001p+0, false, false, + 0x1.0000000000001p+0, false, false, + 0x1.0000000000001p+0, false, 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), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000001p+0, false, false, + true, + 0x1.00000000000008p+0, false, false, + 0x1.00000000000008p+0, false, false, + 0x1.00000000000008p+0, false, false, + 0x1.00000000000008p+0, false, false, + true, + 0x1.00000000000008p+0, false, false, + 0x1.00000000000008p+0, false, false, + 0x1.00000000000008p+0, false, false, + 0x1.00000000000008p+0, false, false, + true, + 0x1.00000000000008p+0, false, false, + 0x1.00000000000008p+0, false, false, + 0x1.00000000000008p+0, false, false, + 0x1.00000000000008p+0, false, false, + true, + 0x1.00000000000008p+0, false, false, + 0x1.00000000000008p+0, false, false, + 0x1.00000000000008p+0, false, false, + 0x1.00000000000008p+0, false, 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), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000001p+0, false, false, + true, + 0x1.00000000000004p+0, false, false, + 0x1.00000000000004p+0, false, false, + 0x1.00000000000004p+0, false, false, + 0x1.00000000000004p+0, false, false, + true, + 0x1.00000000000004p+0, false, false, + 0x1.00000000000004p+0, false, false, + 0x1.00000000000004p+0, false, false, + 0x1.00000000000004p+0, false, false, + true, + 0x1.00000000000004p+0, false, false, + 0x1.00000000000004p+0, false, false, + 0x1.00000000000004p+0, false, false, + 0x1.00000000000004p+0, false, false, + true, + 0x1.00000000000004p+0, false, false, + 0x1.00000000000004p+0, false, false, + 0x1.00000000000004p+0, false, false, + 0x1.00000000000004p+0, false, 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), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000001p+0, false, false, + true, + 0x1.00000000000002p+0, false, false, + 0x1.00000000000002p+0, false, false, + 0x1.00000000000002p+0, false, false, + 0x1.00000000000002p+0, false, false, + true, + 0x1.00000000000002p+0, false, false, + 0x1.00000000000002p+0, false, false, + 0x1.00000000000002p+0, false, false, + 0x1.00000000000002p+0, false, false, + true, + 0x1.00000000000002p+0, false, false, + 0x1.00000000000002p+0, false, false, + 0x1.00000000000002p+0, false, false, + 0x1.00000000000002p+0, false, false, + true, + 0x1.00000000000002p+0, false, false, + 0x1.00000000000002p+0, false, false, + 0x1.00000000000002p+0, false, false, + 0x1.00000000000002p+0, false, 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), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000001p+0, false, false, + true, + 0x1.00000000000001p+0, false, false, + 0x1.00000000000001p+0, false, false, + 0x1.00000000000001p+0, false, false, + 0x1.00000000000001p+0, false, false, + true, + 0x1.00000000000001p+0, false, false, + 0x1.00000000000001p+0, false, false, + 0x1.00000000000001p+0, false, false, + 0x1.00000000000001p+0, false, false, + true, + 0x1.00000000000001p+0, false, false, + 0x1.00000000000001p+0, false, false, + 0x1.00000000000001p+0, false, false, + 0x1.00000000000001p+0, false, false, + true, + 0x1.00000000000001p+0, false, false, + 0x1.00000000000001p+0, false, false, + 0x1.00000000000001p+0, false, false, + 0x1.00000000000001p+0, false, 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), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000001p+0, false, false, + true, + 0x1.000000000000008p+0, false, false, + 0x1.000000000000008p+0, false, false, + 0x1.000000000000008p+0, false, false, + 0x1.000000000000008p+0, false, false, + true, + 0x1.000000000000008p+0, false, false, + 0x1.000000000000008p+0, false, false, + 0x1.000000000000008p+0, false, false, + 0x1.000000000000008p+0, false, false, + true, + 0x1.000000000000008p+0, false, false, + 0x1.000000000000008p+0, false, false, + 0x1.000000000000008p+0, false, false, + 0x1.000000000000008p+0, false, false, + true, + 0x1.000000000000008p+0, false, false, + 0x1.000000000000008p+0, false, false, + 0x1.000000000000008p+0, false, false, + 0x1.000000000000008p+0, false, 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), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000001p+0, false, false, + true, + 0x1.000000000000004p+0, false, false, + 0x1.000000000000004p+0, false, false, + 0x1.000000000000004p+0, false, false, + 0x1.000000000000004p+0, false, false, + true, + 0x1.000000000000004p+0, false, false, + 0x1.000000000000004p+0, false, false, + 0x1.000000000000004p+0, false, false, + 0x1.000000000000004p+0, false, false, + true, + 0x1.000000000000004p+0, false, false, + 0x1.000000000000004p+0, false, false, + 0x1.000000000000004p+0, false, false, + 0x1.000000000000004p+0, false, false, + true, + 0x1.000000000000004p+0, false, false, + 0x1.000000000000004p+0, false, false, + 0x1.000000000000004p+0, false, false, + 0x1.000000000000004p+0, false, 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), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000001p+0, false, false, + true, + 0x1.000000000000002p+0, false, false, + 0x1.000000000000002p+0, false, false, + 0x1.000000000000002p+0, false, false, + 0x1.000000000000002p+0, false, false, + true, + 0x1.000000000000002p+0, false, false, + 0x1.000000000000002p+0, false, false, + 0x1.000000000000002p+0, false, false, + 0x1.000000000000002p+0, false, false, + true, + 0x1.000000000000002p+0, false, false, + 0x1.000000000000002p+0, false, false, + 0x1.000000000000002p+0, false, false, + 0x1.000000000000002p+0, false, false, + true, + 0x1.000000000000002p+0, false, false, + 0x1.000000000000002p+0, false, false, + 0x1.000000000000002p+0, false, false, + 0x1.000000000000002p+0, false, 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), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000001p+0, false, false, + true, + 0x1.000000000000001p+0, false, false, + 0x1.000000000000001p+0, false, false, + 0x1.000000000000001p+0, false, false, + 0x1.000000000000001p+0, false, false, + true, + 0x1.000000000000001p+0, false, false, + 0x1.000000000000001p+0, false, false, + 0x1.000000000000001p+0, false, false, + 0x1.000000000000001p+0, false, false, + true, + 0x1.000000000000001p+0, false, false, + 0x1.000000000000001p+0, false, false, + 0x1.000000000000001p+0, false, false, + 0x1.000000000000001p+0, false, false, + true, + 0x1.000000000000001p+0, false, false, + 0x1.000000000000001p+0, false, false, + 0x1.000000000000001p+0, false, false, + 0x1.000000000000001p+0, false, 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), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000001p+0, false, false, + true, + 0x1.0000000000000008p+0, false, false, + 0x1.0000000000000008p+0, false, false, + 0x1.0000000000000008p+0, false, false, + 0x1.0000000000000008p+0, false, false, + true, + 0x1.0000000000000008p+0, false, false, + 0x1.0000000000000008p+0, false, false, + 0x1.0000000000000008p+0, false, false, + 0x1.0000000000000008p+0, false, false, + true, + 0x1.0000000000000008p+0, false, false, + 0x1.0000000000000008p+0, false, false, + 0x1.0000000000000008p+0, false, false, + 0x1.0000000000000008p+0, false, false, + true, + 0x1.0000000000000008p+0, false, false, + 0x1.0000000000000008p+0, false, false, + 0x1.0000000000000008p+0, false, false, + 0x1.0000000000000008p+0, false, 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), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000001p+0, false, false, + true, + 0x1.0000000000000004p+0, false, false, + 0x1.0000000000000004p+0, false, false, + 0x1.0000000000000004p+0, false, false, + 0x1.0000000000000004p+0, false, false, + true, + 0x1.0000000000000004p+0, false, false, + 0x1.0000000000000004p+0, false, false, + 0x1.0000000000000004p+0, false, false, + 0x1.0000000000000004p+0, false, false, + true, + 0x1.0000000000000004p+0, false, false, + 0x1.0000000000000004p+0, false, false, + 0x1.0000000000000004p+0, false, false, + 0x1.0000000000000004p+0, false, false, + true, + 0x1.0000000000000004p+0, false, false, + 0x1.0000000000000004p+0, false, false, + 0x1.0000000000000004p+0, false, false, + 0x1.0000000000000004p+0, false, 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), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000001p+0, false, false, + true, + 0x1.0000000000000002p+0, false, false, + 0x1.0000000000000002p+0, false, false, + 0x1.0000000000000002p+0, false, false, + 0x1.0000000000000002p+0, false, false, + true, + 0x1.0000000000000002p+0, false, false, + 0x1.0000000000000002p+0, false, false, + 0x1.0000000000000002p+0, false, false, + 0x1.0000000000000002p+0, false, false, + true, + 0x1.0000000000000002p+0, false, false, + 0x1.0000000000000002p+0, false, false, + 0x1.0000000000000002p+0, false, false, + 0x1.0000000000000002p+0, false, false, + true, + 0x1.0000000000000002p+0, false, false, + 0x1.0000000000000002p+0, false, false, + 0x1.0000000000000002p+0, false, false, + 0x1.0000000000000002p+0, false, 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), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000001p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000000002p+0, false, false, + true, + 0x1.0000000000000001p+0, false, false, + 0x1.0000000000000001p+0, false, false, + 0x1.0000000000000001p+0, false, false, + 0x1.0000000000000001p+0, false, false, + true, + 0x1.0000000000000001p+0, false, false, + 0x1.0000000000000001p+0, false, false, + 0x1.0000000000000001p+0, false, false, + 0x1.0000000000000001p+0, false, 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), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000001p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000000002p+0, false, false, + true, + 0x1.00000000000000008p+0, false, false, + 0x1.00000000000000008p+0, false, false, + 0x1.00000000000000008p+0, false, false, + 0x1.00000000000000008p+0, false, false, + true, + 0x1.00000000000000008p+0, false, false, + 0x1.00000000000000008p+0, false, false, + 0x1.00000000000000008p+0, false, false, + 0x1.00000000000000008p+0, false, 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), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000001p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000000002p+0, false, false, + true, + 0x1.00000000000000004p+0, false, false, + 0x1.00000000000000004p+0, false, false, + 0x1.00000000000000004p+0, false, false, + 0x1.00000000000000004p+0, false, false, + true, + 0x1.00000000000000004p+0, false, false, + 0x1.00000000000000004p+0, false, false, + 0x1.00000000000000004p+0, false, false, + 0x1.00000000000000004p+0, false, 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), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000001p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000000002p+0, false, false, + true, + 0x1.00000000000000002p+0, false, false, + 0x1.00000000000000002p+0, false, false, + 0x1.00000000000000002p+0, false, false, + 0x1.00000000000000002p+0, false, false, + true, + 0x1.00000000000000002p+0, false, false, + 0x1.00000000000000002p+0, false, false, + 0x1.00000000000000002p+0, false, false, + 0x1.00000000000000002p+0, false, 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), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000001p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000000002p+0, false, false, + true, + 0x1.00000000000000001p+0, false, false, + 0x1.00000000000000001p+0, false, false, + 0x1.00000000000000001p+0, false, false, + 0x1.00000000000000001p+0, false, false, + true, + 0x1.00000000000000001p+0, false, false, + 0x1.00000000000000001p+0, false, false, + 0x1.00000000000000001p+0, false, false, + 0x1.00000000000000001p+0, false, 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), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000001p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000000002p+0, false, false, + true, + 0x1.000000000000000008p+0, false, false, + 0x1.000000000000000008p+0, false, false, + 0x1.000000000000000008p+0, false, false, + 0x1.000000000000000008p+0, false, false, + true, + 0x1.000000000000000008p+0, false, false, + 0x1.000000000000000008p+0, false, false, + 0x1.000000000000000008p+0, false, false, + 0x1.000000000000000008p+0, false, 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), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000001p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000000002p+0, false, false, + true, + 0x1.000000000000000004p+0, false, false, + 0x1.000000000000000004p+0, false, false, + 0x1.000000000000000004p+0, false, false, + 0x1.000000000000000004p+0, false, false, + true, + 0x1.000000000000000004p+0, false, false, + 0x1.000000000000000004p+0, false, false, + 0x1.000000000000000004p+0, false, false, + 0x1.000000000000000004p+0, false, 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), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000001p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000000002p+0, false, false, + true, + 0x1.000000000000000002p+0, false, false, + 0x1.000000000000000002p+0, false, false, + 0x1.000000000000000002p+0, false, false, + 0x1.000000000000000002p+0, false, false, + true, + 0x1.000000000000000002p+0, false, false, + 0x1.000000000000000002p+0, false, false, + 0x1.000000000000000002p+0, false, false, + 0x1.000000000000000002p+0, false, 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), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000001p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000000002p+0, false, false, + true, + 0x1.000000000000000001p+0, false, false, + 0x1.000000000000000001p+0, false, false, + 0x1.000000000000000001p+0, false, false, + 0x1.000000000000000001p+0, false, false, + true, + 0x1.000000000000000001p+0, false, false, + 0x1.000000000000000001p+0, false, false, + 0x1.000000000000000001p+0, false, false, + 0x1.000000000000000001p+0, false, 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), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000001p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000000002p+0, false, false, + true, + 0x1.0000000000000000008p+0, false, false, + 0x1.0000000000000000008p+0, false, false, + 0x1.0000000000000000008p+0, false, false, + 0x1.0000000000000000008p+0, false, false, + true, + 0x1.0000000000000000008p+0, false, false, + 0x1.0000000000000000008p+0, false, false, + 0x1.0000000000000000008p+0, false, false, + 0x1.0000000000000000008p+0, false, 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), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000001p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000000002p+0, false, false, + true, + 0x1.0000000000000000004p+0, false, false, + 0x1.0000000000000000004p+0, false, false, + 0x1.0000000000000000004p+0, false, false, + 0x1.0000000000000000004p+0, false, false, + true, + 0x1.0000000000000000004p+0, false, false, + 0x1.0000000000000000004p+0, false, false, + 0x1.0000000000000000004p+0, false, false, + 0x1.0000000000000000004p+0, false, 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), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000001p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000000002p+0, false, false, + true, + 0x1.0000000000000000002p+0, false, false, + 0x1.0000000000000000002p+0, false, false, + 0x1.0000000000000000002p+0, false, false, + 0x1.0000000000000000002p+0, false, false, + true, + 0x1.0000000000000000002p+0, false, false, + 0x1.0000000000000000002p+0, false, false, + 0x1.0000000000000000002p+0, false, false, + 0x1.0000000000000000002p+0, false, 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), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000001p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000000002p+0, false, false, + true, + 0x1.0000000000000000001p+0, false, false, + 0x1.0000000000000000001p+0, false, false, + 0x1.0000000000000000001p+0, false, false, + 0x1.0000000000000000001p+0, false, false, + true, + 0x1.0000000000000000001p+0, false, false, + 0x1.0000000000000000001p+0, false, false, + 0x1.0000000000000000001p+0, false, false, + 0x1.0000000000000000001p+0, false, 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), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000001p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000000002p+0, false, false, + true, + 0x1.00000000000000000008p+0, false, false, + 0x1.00000000000000000008p+0, false, false, + 0x1.00000000000000000008p+0, false, false, + 0x1.00000000000000000008p+0, false, false, + true, + 0x1.00000000000000000008p+0, false, false, + 0x1.00000000000000000008p+0, false, false, + 0x1.00000000000000000008p+0, false, false, + 0x1.00000000000000000008p+0, false, 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), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000001p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000000002p+0, false, false, + true, + 0x1.00000000000000000004p+0, false, false, + 0x1.00000000000000000004p+0, false, false, + 0x1.00000000000000000004p+0, false, false, + 0x1.00000000000000000004p+0, false, false, + true, + 0x1.00000000000000000004p+0, false, false, + 0x1.00000000000000000004p+0, false, false, + 0x1.00000000000000000004p+0, false, false, + 0x1.00000000000000000004p+0, false, 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), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000001p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000000002p+0, false, false, + true, + 0x1.00000000000000000002p+0, false, false, + 0x1.00000000000000000002p+0, false, false, + 0x1.00000000000000000002p+0, false, false, + 0x1.00000000000000000002p+0, false, false, + true, + 0x1.00000000000000000002p+0, false, false, + 0x1.00000000000000000002p+0, false, false, + 0x1.00000000000000000002p+0, false, false, + 0x1.00000000000000000002p+0, false, 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), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000001p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000000002p+0, false, false, + true, + 0x1.00000000000000000001p+0, false, false, + 0x1.00000000000000000001p+0, false, false, + 0x1.00000000000000000001p+0, false, false, + 0x1.00000000000000000001p+0, false, false, + true, + 0x1.00000000000000000001p+0, false, false, + 0x1.00000000000000000001p+0, false, false, + 0x1.00000000000000000001p+0, false, false, + 0x1.00000000000000000001p+0, false, 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), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000001p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000000002p+0, false, false, + true, + 0x1.000000000000000000008p+0, false, false, + 0x1.000000000000000000008p+0, false, false, + 0x1.000000000000000000008p+0, false, false, + 0x1.000000000000000000008p+0, false, false, + true, + 0x1.000000000000000000008p+0, false, false, + 0x1.000000000000000000008p+0, false, false, + 0x1.000000000000000000008p+0, false, false, + 0x1.000000000000000000008p+0, false, 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), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000001p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000000002p+0, false, false, + true, + 0x1.000000000000000000004p+0, false, false, + 0x1.000000000000000000004p+0, false, false, + 0x1.000000000000000000004p+0, false, false, + 0x1.000000000000000000004p+0, false, false, + true, + 0x1.000000000000000000004p+0, false, false, + 0x1.000000000000000000004p+0, false, false, + 0x1.000000000000000000004p+0, false, false, + 0x1.000000000000000000004p+0, false, 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), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000001p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000000002p+0, false, false, + true, + 0x1.000000000000000000002p+0, false, false, + 0x1.000000000000000000002p+0, false, false, + 0x1.000000000000000000002p+0, false, false, + 0x1.000000000000000000002p+0, false, false, + true, + 0x1.000000000000000000002p+0, false, false, + 0x1.000000000000000000002p+0, false, false, + 0x1.000000000000000000002p+0, false, false, + 0x1.000000000000000000002p+0, false, 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), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000001p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000000002p+0, false, false, + true, + 0x1.000000000000000000001p+0, false, false, + 0x1.000000000000000000001p+0, false, false, + 0x1.000000000000000000001p+0, false, false, + 0x1.000000000000000000001p+0, false, false, + true, + 0x1.000000000000000000001p+0, false, false, + 0x1.000000000000000000001p+0, false, false, + 0x1.000000000000000000001p+0, false, false, + 0x1.000000000000000000001p+0, false, 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), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000001p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000000002p+0, false, false, + true, + 0x1.0000000000000000000008p+0, false, false, + 0x1.0000000000000000000008p+0, false, false, + 0x1.0000000000000000000008p+0, false, false, + 0x1.0000000000000000000008p+0, false, false, + true, + 0x1.0000000000000000000008p+0, false, false, + 0x1.0000000000000000000008p+0, false, false, + 0x1.0000000000000000000008p+0, false, false, + 0x1.0000000000000000000008p+0, false, 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), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000001p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000000002p+0, false, false, + true, + 0x1.0000000000000000000004p+0, false, false, + 0x1.0000000000000000000004p+0, false, false, + 0x1.0000000000000000000004p+0, false, false, + 0x1.0000000000000000000004p+0, false, false, + true, + 0x1.0000000000000000000004p+0, false, false, + 0x1.0000000000000000000004p+0, false, false, + 0x1.0000000000000000000004p+0, false, false, + 0x1.0000000000000000000004p+0, false, 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), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000001p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000000002p+0, false, false, + true, + 0x1.0000000000000000000002p+0, false, false, + 0x1.0000000000000000000002p+0, false, false, + 0x1.0000000000000000000002p+0, false, false, + 0x1.0000000000000000000002p+0, false, false, + true, + 0x1.0000000000000000000002p+0, false, false, + 0x1.0000000000000000000002p+0, false, false, + 0x1.0000000000000000000002p+0, false, false, + 0x1.0000000000000000000002p+0, false, 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), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000001p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000000002p+0, false, false, + true, + 0x1.0000000000000000000001p+0, false, false, + 0x1.0000000000000000000001p+0, false, false, + 0x1.0000000000000000000001p+0, false, false, + 0x1.0000000000000000000001p+0, false, false, + true, + 0x1.0000000000000000000001p+0, false, false, + 0x1.0000000000000000000001p+0, false, false, + 0x1.0000000000000000000001p+0, false, false, + 0x1.0000000000000000000001p+0, false, 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), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000001p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000000002p+0, false, false, + true, + 0x1.00000000000000000000008p+0, false, false, + 0x1.00000000000000000000008p+0, false, false, + 0x1.00000000000000000000008p+0, false, false, + 0x1.00000000000000000000008p+0, false, false, + true, + 0x1.00000000000000000000008p+0, false, false, + 0x1.00000000000000000000008p+0, false, false, + 0x1.00000000000000000000008p+0, false, false, + 0x1.00000000000000000000008p+0, false, 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), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000001p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000000002p+0, false, false, + true, + 0x1.00000000000000000000004p+0, false, false, + 0x1.00000000000000000000004p+0, false, false, + 0x1.00000000000000000000004p+0, false, false, + 0x1.00000000000000000000004p+0, false, false, + true, + 0x1.00000000000000000000004p+0, false, false, + 0x1.00000000000000000000004p+0, false, false, + 0x1.00000000000000000000004p+0, false, false, + 0x1.00000000000000000000004p+0, false, 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), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000001p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000000002p+0, false, false, + true, + 0x1.00000000000000000000002p+0, false, false, + 0x1.00000000000000000000002p+0, false, false, + 0x1.00000000000000000000002p+0, false, false, + 0x1.00000000000000000000002p+0, false, false, + true, + 0x1.00000000000000000000002p+0, false, false, + 0x1.00000000000000000000002p+0, false, false, + 0x1.00000000000000000000002p+0, false, false, + 0x1.00000000000000000000002p+0, false, 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), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000001p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000000002p+0, false, false, + true, + 0x1.00000000000000000000001p+0, false, false, + 0x1.00000000000000000000001p+0, false, false, + 0x1.00000000000000000000001p+0, false, false, + 0x1.00000000000000000000001p+0, false, false, + true, + 0x1.00000000000000000000001p+0, false, false, + 0x1.00000000000000000000001p+0, false, false, + 0x1.00000000000000000000001p+0, false, false, + 0x1.00000000000000000000001p+0, false, 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), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000001p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000000002p+0, false, false, + true, + 0x1.000000000000000000000008p+0, false, false, + 0x1.000000000000000000000008p+0, false, false, + 0x1.000000000000000000000008p+0, false, false, + 0x1.000000000000000000000008p+0, false, false, + true, + 0x1.000000000000000000000008p+0, false, false, + 0x1.000000000000000000000008p+0, false, false, + 0x1.000000000000000000000008p+0, false, false, + 0x1.000000000000000000000008p+0, false, 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), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000001p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000000002p+0, false, false, + true, + 0x1.000000000000000000000004p+0, false, false, + 0x1.000000000000000000000004p+0, false, false, + 0x1.000000000000000000000004p+0, false, false, + 0x1.000000000000000000000004p+0, false, false, + true, + 0x1.000000000000000000000004p+0, false, false, + 0x1.000000000000000000000004p+0, false, false, + 0x1.000000000000000000000004p+0, false, false, + 0x1.000000000000000000000004p+0, false, 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), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000001p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000000002p+0, false, false, + true, + 0x1.000000000000000000000002p+0, false, false, + 0x1.000000000000000000000002p+0, false, false, + 0x1.000000000000000000000002p+0, false, false, + 0x1.000000000000000000000002p+0, false, false, + true, + 0x1.000000000000000000000002p+0, false, false, + 0x1.000000000000000000000002p+0, false, false, + 0x1.000000000000000000000002p+0, false, false, + 0x1.000000000000000000000002p+0, false, 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), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000001p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000000002p+0, false, false, + true, + 0x1.000000000000000000000001p+0, false, false, + 0x1.000000000000000000000001p+0, false, false, + 0x1.000000000000000000000001p+0, false, false, + 0x1.000000000000000000000001p+0, false, false, + true, + 0x1.000000000000000000000001p+0, false, false, + 0x1.000000000000000000000001p+0, false, false, + 0x1.000000000000000000000001p+0, false, false, + 0x1.000000000000000000000001p+0, false, 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), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000001p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000000002p+0, false, false, + true, + 0x1.0000000000000000000000008p+0, false, false, + 0x1.0000000000000000000000008p+0, false, false, + 0x1.0000000000000000000000008p+0, false, false, + 0x1.0000000000000000000000008p+0, false, false, + true, + 0x1.0000000000000000000000008p+0, false, false, + 0x1.0000000000000000000000008p+0, false, false, + 0x1.0000000000000000000000008p+0, false, false, + 0x1.0000000000000000000000008p+0, false, 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), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000001p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000000002p+0, false, false, + true, + 0x1.0000000000000000000000004p+0, false, false, + 0x1.0000000000000000000000004p+0, false, false, + 0x1.0000000000000000000000004p+0, false, false, + 0x1.0000000000000000000000004p+0, false, false, + true, + 0x1.0000000000000000000000004p+0, false, false, + 0x1.0000000000000000000000004p+0, false, false, + 0x1.0000000000000000000000004p+0, false, false, + 0x1.0000000000000000000000004p+0, false, 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), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000001p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000000002p+0, false, false, + true, + 0x1.0000000000000000000000002p+0, false, false, + 0x1.0000000000000000000000002p+0, false, false, + 0x1.0000000000000000000000002p+0, false, false, + 0x1.0000000000000000000000002p+0, false, false, + true, + 0x1.0000000000000000000000002p+0, false, false, + 0x1.0000000000000000000000002p+0, false, false, + 0x1.0000000000000000000000002p+0, false, false, + 0x1.0000000000000000000000002p+0, false, 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), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000001p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000000002p+0, false, false, + true, + 0x1.0000000000000000000000001p+0, false, false, + 0x1.0000000000000000000000001p+0, false, false, + 0x1.0000000000000000000000001p+0, false, false, + 0x1.0000000000000000000000001p+0, false, false, + true, + 0x1.0000000000000000000000001p+0, false, false, + 0x1.0000000000000000000000001p+0, false, false, + 0x1.0000000000000000000000001p+0, false, false, + 0x1.0000000000000000000000001p+0, false, 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), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000001p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000000002p+0, false, false, + true, + 0x1.00000000000000000000000008p+0, false, false, + 0x1.00000000000000000000000008p+0, false, false, + 0x1.00000000000000000000000008p+0, false, false, + 0x1.00000000000000000000000008p+0, false, false, + true, + 0x1.00000000000000000000000008p+0, false, false, + 0x1.00000000000000000000000008p+0, false, false, + 0x1.00000000000000000000000008p+0, false, false, + 0x1.00000000000000000000000008p+0, false, 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), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000001p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000000002p+0, false, false, + true, + 0x1.00000000000000000000000004p+0, false, false, + 0x1.00000000000000000000000004p+0, false, false, + 0x1.00000000000000000000000004p+0, false, false, + 0x1.00000000000000000000000004p+0, false, false, + true, + 0x1.00000000000000000000000004p+0, false, false, + 0x1.00000000000000000000000004p+0, false, false, + 0x1.00000000000000000000000004p+0, false, false, + 0x1.00000000000000000000000004p+0, false, 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), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000001p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000000002p+0, false, false, + true, + 0x1.00000000000000000000000002p+0, false, false, + 0x1.00000000000000000000000002p+0, false, false, + 0x1.00000000000000000000000002p+0, false, false, + 0x1.00000000000000000000000002p+0, false, false, + true, + 0x1.00000000000000000000000002p+0, false, false, + 0x1.00000000000000000000000002p+0, false, false, + 0x1.00000000000000000000000002p+0, false, false, + 0x1.00000000000000000000000002p+0, false, 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), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000001p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000000002p+0, false, false, + true, + 0x1.00000000000000000000000001p+0, false, false, + 0x1.00000000000000000000000001p+0, false, false, + 0x1.00000000000000000000000001p+0, false, false, + 0x1.00000000000000000000000001p+0, false, false, + true, + 0x1.00000000000000000000000001p+0, false, false, + 0x1.00000000000000000000000001p+0, false, false, + 0x1.00000000000000000000000001p+0, false, false, + 0x1.00000000000000000000000001p+0, false, 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), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000001p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000000002p+0, false, false, + true, + 0x1.000000000000000000000000008p+0, false, false, + 0x1.000000000000000000000000008p+0, false, false, + 0x1.000000000000000000000000008p+0, false, false, + 0x1.000000000000000000000000008p+0, false, false, + true, + 0x1.000000000000000000000000008p+0, false, false, + 0x1.000000000000000000000000008p+0, false, false, + 0x1.000000000000000000000000008p+0, false, false, + 0x1.000000000000000000000000008p+0, false, 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), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000001p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000000000000000000000000008p+0, false, false, + true, + 0x1.000000000000000000000000004p+0, false, false, + 0x1.000000000000000000000000004p+0, false, false, + 0x1.000000000000000000000000004p+0, false, false, + 0x1.000000000000000000000000004p+0, false, 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), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000001p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000000000000000000000000008p+0, false, false, + true, + 0x1.000000000000000000000000002p+0, false, false, + 0x1.000000000000000000000000002p+0, false, false, + 0x1.000000000000000000000000002p+0, false, false, + 0x1.000000000000000000000000002p+0, false, 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), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000001p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000000000000000000000000008p+0, false, false, + true, + 0x1.000000000000000000000000001p+0, false, false, + 0x1.000000000000000000000000001p+0, false, false, + 0x1.000000000000000000000000001p+0, false, false, + 0x1.000000000000000000000000001p+0, false, 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), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000001p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000000000000000000000000008p+0, false, false, + true, + 0x1.0000000000000000000000000008p+0, false, false, + 0x1.0000000000000000000000000008p+0, false, false, + 0x1.0000000000000000000000000008p+0, false, false, + 0x1.0000000000000000000000000008p+0, false, 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), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000001p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000000000000000000000000008p+0, false, false, + true, + 0x1.0000000000000000000000000004p+0, false, false, + 0x1.0000000000000000000000000004p+0, false, false, + 0x1.0000000000000000000000000004p+0, false, false, + 0x1.0000000000000000000000000004p+0, false, 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), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000001p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000000000000000000000000008p+0, false, false, + true, + 0x1.0000000000000000000000000002p+0, false, false, + 0x1.0000000000000000000000000002p+0, false, false, + 0x1.0000000000000000000000000002p+0, false, false, + 0x1.0000000000000000000000000002p+0, false, 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), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000001p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000000000000000000000000008p+0, false, false, + true, + 0x1.0000000000000000000000000001p+0, false, false, + 0x1.0000000000000000000000000001p+0, false, false, + 0x1.0000000000000000000000000001p+0, false, false, + 0x1.0000000000000000000000000001p+0, false, 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), + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000001p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000000002p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.000000000000000000000000008p+0, false, false, + false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1p+0, false, false, + 0x1.0000000000000000000000000001p+0, false, false), + TEST ("0x30000002222225p-1077", + false, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x8p-152, false, true, + false, + 0x1.800000111111p-1024, false, true, + 0x1.8000001111114p-1024, false, true, + 0x1.800000111111p-1024, false, true, + 0x1.8000001111114p-1024, false, true, + true, + 0x1.80000011111128p-1024, false, false, + 0x1.80000011111128p-1024, false, false, + 0x1.80000011111128p-1024, false, false, + 0x1.80000011111128p-1024, false, false, + true, + 0x1.80000011111128p-1024, false, false, + 0x1.80000011111128p-1024, false, false, + 0x1.80000011111128p-1024, false, false, + 0x1.80000011111128p-1024, false, false, + false, + 0x1.800000111111p-1024, false, true, + 0x1.8000001111114p-1024, false, true, + 0x1.800000111111p-1024, false, true, + 0x1.8000001111114p-1024, false, true, + true, + 0x1.80000011111128p-1024, false, false, + 0x1.80000011111128p-1024, false, false, + 0x1.80000011111128p-1024, false, false, + 0x1.80000011111128p-1024, false, false), + TEST ("0x0.7fffffffffffeap-1022", + false, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x8p-152, false, true, + false, + 0x1.ffffffffffff8p-1024, false, true, + 0x1.ffffffffffffcp-1024, false, true, + 0x1.ffffffffffff8p-1024, false, true, + 0x1.ffffffffffffcp-1024, false, true, + true, + 0x1.ffffffffffffa8p-1024, false, false, + 0x1.ffffffffffffa8p-1024, false, false, + 0x1.ffffffffffffa8p-1024, false, false, + 0x1.ffffffffffffa8p-1024, false, false, + true, + 0x1.ffffffffffffa8p-1024, false, false, + 0x1.ffffffffffffa8p-1024, false, false, + 0x1.ffffffffffffa8p-1024, false, false, + 0x1.ffffffffffffa8p-1024, false, false, + false, + 0x1.ffffffffffff8p-1024, false, true, + 0x1.ffffffffffffcp-1024, false, true, + 0x1.ffffffffffff8p-1024, false, true, + 0x1.ffffffffffffcp-1024, false, true, + true, + 0x1.ffffffffffffa8p-1024, false, false, + 0x1.ffffffffffffa8p-1024, false, false, + 0x1.ffffffffffffa8p-1024, false, false, + 0x1.ffffffffffffa8p-1024, false, false), + TEST ("0x0.7fffffffffffe9p-1022", + false, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x8p-152, false, true, + false, + 0x1.ffffffffffff8p-1024, false, true, + 0x1.ffffffffffffcp-1024, false, true, + 0x1.ffffffffffff8p-1024, false, true, + 0x1.ffffffffffffcp-1024, false, true, + true, + 0x1.ffffffffffffa4p-1024, false, false, + 0x1.ffffffffffffa4p-1024, false, false, + 0x1.ffffffffffffa4p-1024, false, false, + 0x1.ffffffffffffa4p-1024, false, false, + true, + 0x1.ffffffffffffa4p-1024, false, false, + 0x1.ffffffffffffa4p-1024, false, false, + 0x1.ffffffffffffa4p-1024, false, false, + 0x1.ffffffffffffa4p-1024, false, false, + false, + 0x1.ffffffffffff8p-1024, false, true, + 0x1.ffffffffffffcp-1024, false, true, + 0x1.ffffffffffff8p-1024, false, true, + 0x1.ffffffffffffcp-1024, false, true, + true, + 0x1.ffffffffffffa4p-1024, false, false, + 0x1.ffffffffffffa4p-1024, false, false, + 0x1.ffffffffffffa4p-1024, false, false, + 0x1.ffffffffffffa4p-1024, false, false), + TEST ("0x0.7ffffd4p-126", + false, + 0x1.fffffp-128, false, true, + 0x1.fffff8p-128, false, true, + 0x1.fffffp-128, false, true, + 0x1.fffff8p-128, false, true, + true, + 0x1.fffff5p-128, false, false, + 0x1.fffff5p-128, false, false, + 0x1.fffff5p-128, false, false, + 0x1.fffff5p-128, false, false, + true, + 0x1.fffff5p-128, false, false, + 0x1.fffff5p-128, false, false, + 0x1.fffff5p-128, false, false, + 0x1.fffff5p-128, false, false, + true, + 0x1.fffff5p-128, false, false, + 0x1.fffff5p-128, false, false, + 0x1.fffff5p-128, false, false, + 0x1.fffff5p-128, false, false, + true, + 0x1.fffff5p-128, false, false, + 0x1.fffff5p-128, false, false, + 0x1.fffff5p-128, false, false, + 0x1.fffff5p-128, false, false, + true, + 0x1.fffff5p-128, false, false, + 0x1.fffff5p-128, false, false, + 0x1.fffff5p-128, false, false, + 0x1.fffff5p-128, false, false), + TEST ("0x0.7ffffffffffffffd4p-16382", + false, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x8p-152, false, true, + false, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x4p-1076, false, true, + false, + 0x1.fffffffffffffffp-16384, false, true, + 0x1.fffffffffffffff8p-16384, false, true, + 0x1.fffffffffffffffp-16384, false, true, + 0x1.fffffffffffffff8p-16384, false, true, + false, + 0x1.fffffffffffffff4p-16384, false, true, + 0x1.fffffffffffffff4p-16384, false, true, + 0x1.fffffffffffffff4p-16384, false, true, + 0x1.fffffffffffffff8p-16384, false, true, + false, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x4p-1076, false, true, + true, + 0x1.fffffffffffffff5p-16384, false, false, + 0x1.fffffffffffffff5p-16384, false, false, + 0x1.fffffffffffffff5p-16384, false, false, + 0x1.fffffffffffffff5p-16384, false, false), + TEST ("0x0.7ffffffffffffffd4p-16383", + false, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x8p-152, false, true, + false, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x4p-1076, false, true, + false, + 0xf.ffffffffffffff8p-16388, false, true, + 0xf.ffffffffffffff8p-16388, false, true, + 0xf.ffffffffffffff8p-16388, false, true, + 0x1p-16384, false, true, + false, + 0xf.ffffffffffffff8p-16388, false, true, + 0xf.ffffffffffffffcp-16388, false, true, + 0xf.ffffffffffffff8p-16388, false, true, + 0xf.ffffffffffffffcp-16388, false, true, + false, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x4p-1076, false, true, + true, + 0xf.ffffffffffffffa8p-16388, false, false, + 0xf.ffffffffffffffa8p-16388, false, false, + 0xf.ffffffffffffffa8p-16388, false, false, + 0xf.ffffffffffffffa8p-16388, false, false), + TEST ("0x0.7ffffffffffffffffffffffffffeap-16382", + false, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x8p-152, false, true, + false, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x4p-1076, false, true, + false, + 0x1.fffffffffffffff8p-16384, false, true, + 0x2p-16384, false, true, + 0x1.fffffffffffffff8p-16384, false, true, + 0x2p-16384, false, true, + false, + 0x1.fffffffffffffffcp-16384, false, true, + 0x2p-16384, false, true, + 0x1.fffffffffffffffcp-16384, false, true, + 0x2p-16384, false, true, + false, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x4p-1076, false, true, + false, + 0x1.fffffffffffffffffffffffffff8p-16384, false, true, + 0x1.fffffffffffffffffffffffffffcp-16384, false, true, + 0x1.fffffffffffffffffffffffffff8p-16384, false, true, + 0x1.fffffffffffffffffffffffffffcp-16384, false, true), + TEST ("0x0.7000004p-126", + false, + 0x1.cp-128, false, true, + 0x1.cp-128, false, true, + 0x1.cp-128, false, true, + 0x1.c00008p-128, false, true, + true, + 0x1.c00001p-128, false, false, + 0x1.c00001p-128, false, false, + 0x1.c00001p-128, false, false, + 0x1.c00001p-128, false, false, + true, + 0x1.c00001p-128, false, false, + 0x1.c00001p-128, false, false, + 0x1.c00001p-128, false, false, + 0x1.c00001p-128, false, false, + true, + 0x1.c00001p-128, false, false, + 0x1.c00001p-128, false, false, + 0x1.c00001p-128, false, false, + 0x1.c00001p-128, false, false, + true, + 0x1.c00001p-128, false, false, + 0x1.c00001p-128, false, false, + 0x1.c00001p-128, false, false, + 0x1.c00001p-128, false, false, + true, + 0x1.c00001p-128, false, false, + 0x1.c00001p-128, false, false, + 0x1.c00001p-128, false, false, + 0x1.c00001p-128, false, false), + TEST ("0x0.70000000000002p-1022", + false, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x8p-152, false, true, + false, + 0x1.cp-1024, false, true, + 0x1.cp-1024, false, true, + 0x1.cp-1024, false, true, + 0x1.c000000000004p-1024, false, true, + true, + 0x1.c0000000000008p-1024, false, false, + 0x1.c0000000000008p-1024, false, false, + 0x1.c0000000000008p-1024, false, false, + 0x1.c0000000000008p-1024, false, false, + true, + 0x1.c0000000000008p-1024, false, false, + 0x1.c0000000000008p-1024, false, false, + 0x1.c0000000000008p-1024, false, false, + 0x1.c0000000000008p-1024, false, false, + false, + 0x1.cp-1024, false, true, + 0x1.cp-1024, false, true, + 0x1.cp-1024, false, true, + 0x1.c000000000004p-1024, false, true, + true, + 0x1.c0000000000008p-1024, false, false, + 0x1.c0000000000008p-1024, false, false, + 0x1.c0000000000008p-1024, false, false, + 0x1.c0000000000008p-1024, false, false), + TEST ("0x0.70000000000000004p-16382", + false, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x8p-152, false, true, + false, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x4p-1076, false, true, + false, + 0x1.cp-16384, false, true, + 0x1.cp-16384, false, true, + 0x1.cp-16384, false, true, + 0x1.c000000000000008p-16384, false, true, + false, + 0x1.cp-16384, false, true, + 0x1.cp-16384, false, true, + 0x1.cp-16384, false, true, + 0x1.c000000000000004p-16384, false, true, + false, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x4p-1076, false, true, + true, + 0x1.c000000000000001p-16384, false, false, + 0x1.c000000000000001p-16384, false, false, + 0x1.c000000000000001p-16384, false, false, + 0x1.c000000000000001p-16384, false, false), + TEST ("0x0.70000000000000004p-16383", + false, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x8p-152, false, true, + false, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x4p-1076, false, true, + false, + 0xep-16388, false, true, + 0xep-16388, false, true, + 0xep-16388, false, true, + 0xe.000000000000008p-16388, false, true, + false, + 0xep-16388, false, true, + 0xep-16388, false, true, + 0xep-16388, false, true, + 0xe.000000000000004p-16388, false, true, + false, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x4p-1076, false, true, + true, + 0xe.0000000000000008p-16388, false, false, + 0xe.0000000000000008p-16388, false, false, + 0xe.0000000000000008p-16388, false, false, + 0xe.0000000000000008p-16388, false, false), + TEST ("0x0.70000000000000000000000000002p-16382", + false, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x8p-152, false, true, + false, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x4p-1076, false, true, + false, + 0x1.cp-16384, false, true, + 0x1.cp-16384, false, true, + 0x1.cp-16384, false, true, + 0x1.c000000000000008p-16384, false, true, + false, + 0x1.cp-16384, false, true, + 0x1.cp-16384, false, true, + 0x1.cp-16384, false, true, + 0x1.c000000000000004p-16384, false, true, + false, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x0p+0, false, true, + 0x4p-1076, false, true, + false, + 0x1.cp-16384, false, true, + 0x1.cp-16384, false, true, + 0x1.cp-16384, false, true, + 0x1.c000000000000000000000000004p-16384, false, true), }; diff --git a/stdlib/tst-strtod-round-skeleton.c b/stdlib/tst-strtod-round-skeleton.c index 6fba4b5228..be081ba416 100644 --- a/stdlib/tst-strtod-round-skeleton.c +++ b/stdlib/tst-strtod-round-skeleton.c @@ -21,6 +21,7 @@ declared in the headers. */ #define _LIBC_TEST 1 #define __STDC_WANT_IEC_60559_TYPES_EXT__ +#include <errno.h> #include <fenv.h> #include <float.h> #include <math.h> @@ -29,6 +30,7 @@ #include <stdlib.h> #include <string.h> #include <math-tests.h> +#include <tininess.h> #include "tst-strtod.h" @@ -138,16 +140,26 @@ gen-tst-strtod-round utility to select the appropriately rounded long double value for a given format. */ #define TEST(s, \ - fx, fd, fdo, fn, fno, fz, fzo, fu, fuo, \ - dx, dd, ddo, dn, dno, dz, dzo, du, duo, \ - ld64ix, ld64id, ld64ido, ld64in, ld64ino, \ - ld64iz, ld64izo, ld64iu, ld64iuo, \ - ld64mx, ld64md, ld64mdo, ld64mn, ld64mno, \ - ld64mz, ld64mzo, ld64mu, ld64muo, \ - ld106x, ld106d, ld106do, ld106n, ld106no, \ - ld106z, ld106zo, ld106u, ld106uo, \ - ld113x, ld113d, ld113do, ld113n, ld113no, \ - ld113z, ld113zo, ld113u, ld113uo) \ + fx, fd, fdo, fdu, fn, fno, fnu, \ + fz, fzo, fzu, fu, fuo, fuu, \ + dx, dd, ddo, ddu, dn, dno, dnu, \ + dz, dzo, dzu, du, duo, duu, \ + ld64ix, ld64id, ld64ido, ld64idu, \ + ld64in, ld64ino, ld64inu, \ + ld64iz, ld64izo, ld64izu, \ + ld64iu, ld64iuo, ld64iuu, \ + ld64mx, ld64md, ld64mdo, ld64mdu, \ + ld64mn, ld64mno, ld64mnu, \ + ld64mz, ld64mzo, ld64mzu, \ + ld64mu, ld64muo, ld64muu, \ + ld106x, ld106d, ld106do, ld106du, \ + ld106n, ld106no, ld106nu, \ + ld106z, ld106zo, ld106zu, \ + ld106u, ld106uo, ld106uu, \ + ld113x, ld113d, ld113do, ld113du, \ + ld113n, ld113no, ld113nu, \ + ld113z, ld113zo, ld113zu, \ + ld113u, ld113uo, ld113uu) \ { \ L_ (s), \ { XNTRY (fx, dx, ld64ix, ld64mx, ld106x, ld113x) }, \ @@ -162,6 +174,12 @@ { XNTRY (fdo, ddo, ld64ido, ld64mdo, ld106do, ld113do) }, \ { XNTRY (fzo, dzo, ld64izo, ld64mzo, ld106zo, ld113zo) }, \ { XNTRY (fuo, duo, ld64iuo, ld64muo, ld106uo, ld113uo) } \ + }, \ + { \ + { XNTRY (fnu, dnu, ld64inu, ld64mnu, ld106nu, ld113nu) }, \ + { XNTRY (fdu, ddu, ld64idu, ld64mdu, ld106du, ld113du) }, \ + { XNTRY (fzu, dzu, ld64izu, ld64mzu, ld106zu, ld113zu) }, \ + { XNTRY (fuu, duu, ld64iuu, ld64muu, ld106uu, ld113uu) } \ } \ } @@ -180,11 +198,17 @@ struct test_overflow STRUCT_FOREACH_FLOAT_BOOL }; +struct test_underflow + { + STRUCT_FOREACH_FLOAT_BOOL + }; + struct test { const CHAR *s; struct test_exactness exact; struct test_results r[4]; struct test_overflow o[4]; + struct test_underflow u[4]; }; /* Include the generated test data. */ @@ -202,10 +226,16 @@ struct test { # define FE_OVERFLOW 0 #endif +#ifndef FE_UNDERFLOW +# define FE_UNDERFLOW 0 +#endif + #define GEN_ONE_TEST(FSUF, FTYPE, FTOSTR, LSUF, CSUF) \ { \ feclearexcept (FE_ALL_EXCEPT); \ + errno = 12345; \ FTYPE f = STRTO (FSUF) (s, NULL); \ + int new_errno = errno; \ if (f != expected->FSUF \ || (copysign ## CSUF) (1.0 ## LSUF, f) \ != (copysign ## CSUF) (1.0 ## LSUF, expected->FSUF)) \ @@ -254,6 +284,48 @@ struct test { printf ("ignoring this exception error\n"); \ } \ } \ + if (overflow->FSUF && new_errno != ERANGE) \ + { \ + printf (FNPFXS "to" #FSUF \ + " (" STRM ") left errno == %d," \ + " not %d (ERANGE)\n", \ + s, new_errno, ERANGE); \ + result = 1; \ + } \ + if (FE_UNDERFLOW != 0) \ + { \ + bool underflow_raised \ + = fetestexcept (FE_UNDERFLOW) != 0; \ + if (underflow_raised != underflow->FSUF) \ + { \ + printf (FNPFXS "to" #FSUF \ + " (" STRM ") underflow %d " \ + "not %d\n", s, underflow_raised, \ + underflow->FSUF); \ + if (EXCEPTION_TESTS (FTYPE)) \ + result = 1; \ + else \ + printf ("ignoring this exception error\n"); \ + } \ + } \ + if (underflow->FSUF && new_errno != ERANGE) \ + { \ + printf (FNPFXS "to" #FSUF \ + " (" STRM ") left errno == %d," \ + " not %d (ERANGE)\n", \ + s, new_errno, ERANGE); \ + result = 1; \ + } \ + if (!overflow->FSUF \ + && !underflow->FSUF \ + && new_errno != 12345) \ + { \ + printf (FNPFXS "to" #FSUF \ + " (" STRM ") set errno == %d," \ + " should be unchanged\n", \ + s, new_errno); \ + result = 1; \ + } \ } \ } @@ -261,6 +333,7 @@ static int test_in_one_mode (const CHAR *s, const struct test_results *expected, const struct test_exactness *exact, const struct test_overflow *overflow, + const struct test_underflow *underflow, const char *mode_name, int rnd_mode) { int result = 0; @@ -296,6 +369,7 @@ do_test (void) { result |= test_in_one_mode (tests[i].s, &tests[i].r[modes[0].rnd_i], &tests[i].exact, &tests[i].o[modes[0].rnd_i], + &tests[i].u[modes[0].rnd_i], modes[0].mode_name, modes[0].rnd_mode); for (const struct fetestmodes *m = &modes[1]; m->mode_name != NULL; m++) { @@ -303,7 +377,9 @@ do_test (void) { result |= test_in_one_mode (tests[i].s, &tests[i].r[m->rnd_i], &tests[i].exact, - &tests[i].o[m->rnd_i], m->mode_name, + &tests[i].o[m->rnd_i], + &tests[i].u[m->rnd_i], + m->mode_name, m->rnd_mode); fesetround (save_round_mode); } diff --git a/stdlib/tst-strtod1i.c b/stdlib/tst-strtod1i.c index 9d6bb760fb..44ae0264f4 100644 --- a/stdlib/tst-strtod1i.c +++ b/stdlib/tst-strtod1i.c @@ -25,60 +25,91 @@ #include <string.h> #include <math.h> -/* Perform a few tests in a locale with thousands separators. */ -static int -do_test (void) -{ - static const struct - { - const char *loc; - const char *str; - double exp; - ptrdiff_t nread; - } tests[] = - { - { "de_DE.UTF-8", "1,5", 1.5, 3 }, - { "de_DE.UTF-8", "1.5", 1.0, 1 }, - { "de_DE.UTF-8", "1.500", 1500.0, 5 }, - { "de_DE.UTF-8", "36.893.488.147.419.103.232", 0x1.0p65, 26 } - }; -#define ntests (sizeof (tests) / sizeof (tests[0])) - size_t n; - int result = 0; - - puts ("\nLocale tests"); +#include "tst-strtod.h" - for (n = 0; n < ntests; ++n) - { - double d; - char *endp; +/* This tests internal interfaces, which are only defined for types + with distinct ABIs, so disable testing for types without distinct + ABIs. */ +#undef IF_FLOAT32 +#define IF_FLOAT32(x) +#undef IF_FLOAT64 +#define IF_FLOAT64(x) +#undef IF_FLOAT32X +#define IF_FLOAT32X(x) +#undef IF_FLOAT64X +#define IF_FLOAT64X(x) +#if !__HAVE_DISTINCT_FLOAT128 +# undef IF_FLOAT128 +# define IF_FLOAT128(x) +#endif - if (setlocale (LC_ALL, tests[n].loc) == NULL) - { - printf ("cannot set locale %s\n", tests[n].loc); - result = 1; - continue; - } +#define ntests (sizeof (tests) / sizeof (tests[0])) - d = __strtod_internal (tests[n].str, &endp, 1); - if (d != tests[n].exp) - { - printf ("strtod(\"%s\") returns %g and not %g\n", - tests[n].str, d, tests[n].exp); - result = 1; - } - else if (endp - tests[n].str != tests[n].nread) - { - printf ("strtod(\"%s\") read %td bytes and not %td\n", - tests[n].str, endp - tests[n].str, tests[n].nread); - result = 1; - } - } +/* Perform a few tests in a locale with thousands separators. */ +#define TEST_STRTOD(FSUF, FTYPE, FTOSTR, LSUF, CSUF) \ +static int \ +test_strto ## FSUF (void) \ +{ \ + static const struct \ + { \ + const char *loc; \ + const char *str; \ + FTYPE exp; \ + ptrdiff_t nread; \ + } tests[] = \ + { \ + { "de_DE.UTF-8", "1,5", 1.5 ## LSUF, 3 }, \ + { "de_DE.UTF-8", "1.5", 1.0 ## LSUF, 1 }, \ + { "de_DE.UTF-8", "1.500", 1500.0 ## LSUF, 5 }, \ + { "de_DE.UTF-8", "36.893.488.147.419.103.232", 0x1.0p65 ## LSUF, 26 } \ + }; \ + size_t n; \ + int result = 0; \ + \ + puts ("\nLocale tests"); \ + \ + for (n = 0; n < ntests; ++n) \ + { \ + FTYPE d; \ + char *endp; \ + \ + if (setlocale (LC_ALL, tests[n].loc) == NULL) \ + { \ + printf ("cannot set locale %s\n", tests[n].loc); \ + result = 1; \ + continue; \ + } \ + \ + d = __strto ## FSUF ## _internal (tests[n].str, &endp, 1); \ + if (d != tests[n].exp) \ + { \ + char buf1[FSTRLENMAX], buf2[FSTRLENMAX]; \ + FTOSTR (buf1, sizeof (buf1), "%g", d); \ + FTOSTR (buf2, sizeof (buf2), "%g", tests[n].exp); \ + printf ("strto" # FSUF "(\"%s\") returns %s and not %s\n", \ + tests[n].str, buf1, buf2); \ + result = 1; \ + } \ + else if (endp - tests[n].str != tests[n].nread) \ + { \ + printf ("strto" # FSUF "(\"%s\") read %td bytes and not %td\n", \ + tests[n].str, endp - tests[n].str, tests[n].nread); \ + result = 1; \ + } \ + } \ + \ + if (result == 0) \ + puts ("all OK"); \ + \ + return result ? EXIT_FAILURE : EXIT_SUCCESS; \ +} - if (result == 0) - puts ("all OK"); +GEN_TEST_STRTOD_FOREACH (TEST_STRTOD) - return result ? EXIT_FAILURE : EXIT_SUCCESS; +static int +do_test (void) +{ + return STRTOD_TEST_FOREACH (test_strto); } #include <support/test-driver.c> diff --git a/stdlib/tst-strtod3.c b/stdlib/tst-strtod3.c index 23abec1896..0d662d8be8 100644 --- a/stdlib/tst-strtod3.c +++ b/stdlib/tst-strtod3.c @@ -3,19 +3,73 @@ #include <stdlib.h> #include <string.h> -static const struct -{ - const char *in; - const char *out; - double expected; -} tests[] = - { - { "000,,,e1", ",,,e1", 0.0 }, - { "000e1", "", 0.0 }, - { "000,1e1", ",1e1", 0.0 } - }; -#define NTESTS (sizeof (tests) / sizeof (tests[0])) +#include "tst-strtod.h" + +/* This tests internal interfaces, which are only defined for types + with distinct ABIs, so disable testing for types without distinct + ABIs. */ +#undef IF_FLOAT32 +#define IF_FLOAT32(x) +#undef IF_FLOAT64 +#define IF_FLOAT64(x) +#undef IF_FLOAT32X +#define IF_FLOAT32X(x) +#undef IF_FLOAT64X +#define IF_FLOAT64X(x) +#if !__HAVE_DISTINCT_FLOAT128 +# undef IF_FLOAT128 +# define IF_FLOAT128(x) +#endif +#define TEST_STRTOD(FSUF, FTYPE, FTOSTR, LSUF, CSUF) \ +static const struct \ +{ \ + const char *in; \ + const char *out; \ + FTYPE expected; \ +} tests_strto ## FSUF[] = \ + { \ + { "000,,,e1", ",,,e1", 0.0 ## LSUF }, \ + { "000e1", "", 0.0 ## LSUF }, \ + { "000,1e1", ",1e1", 0.0 ## LSUF } \ + }; \ + \ +static int \ +test_strto ## FSUF (void) \ +{ \ + int status = 0; \ + \ + for (int i = 0; \ + i < sizeof (tests_strto ## FSUF) / sizeof (tests_strto ## FSUF[0]); \ + ++i) \ + { \ + char *ep; \ + FTYPE r = __strto ## FSUF ## _internal (tests_strto ## FSUF[i].in, \ + &ep, 1); \ + \ + if (strcmp (ep, tests_strto ## FSUF[i].out) != 0) \ + { \ + printf ("%d: got rest string \"%s\", expected \"%s\"\n", \ + i, ep, tests_strto ## FSUF[i].out); \ + status = 1; \ + } \ + \ + if (r != tests_strto ## FSUF[i].expected) \ + { \ + char buf1[FSTRLENMAX], buf2[FSTRLENMAX]; \ + FTOSTR (buf1, sizeof (buf1), "%g", r); \ + FTOSTR (buf2, sizeof (buf2), "%g", \ + tests_strto ## FSUF[i].expected); \ + printf ("%d: got wrong results %s, expected %s\n", \ + i, buf1, buf2); \ + status = 1; \ + } \ + } \ + \ + return status; \ +} + +GEN_TEST_STRTOD_FOREACH (TEST_STRTOD) static int do_test (void) @@ -26,29 +80,7 @@ do_test (void) return 1; } - int status = 0; - - for (int i = 0; i < NTESTS; ++i) - { - char *ep; - double r = __strtod_internal (tests[i].in, &ep, 1); - - if (strcmp (ep, tests[i].out) != 0) - { - printf ("%d: got rest string \"%s\", expected \"%s\"\n", - i, ep, tests[i].out); - status = 1; - } - - if (r != tests[i].expected) - { - printf ("%d: got wrong results %g, expected %g\n", - i, r, tests[i].expected); - status = 1; - } - } - - return status; + return STRTOD_TEST_FOREACH (test_strto); } #define TEST_FUNCTION do_test () diff --git a/stdlib/tst-strtod4.c b/stdlib/tst-strtod4.c index 6cc4e843c7..dfd3f05027 100644 --- a/stdlib/tst-strtod4.c +++ b/stdlib/tst-strtod4.c @@ -3,22 +3,76 @@ #include <stdlib.h> #include <string.h> +#include "tst-strtod.h" + +/* This tests internal interfaces, which are only defined for types + with distinct ABIs, so disable testing for types without distinct + ABIs. */ +#undef IF_FLOAT32 +#define IF_FLOAT32(x) +#undef IF_FLOAT64 +#define IF_FLOAT64(x) +#undef IF_FLOAT32X +#define IF_FLOAT32X(x) +#undef IF_FLOAT64X +#define IF_FLOAT64X(x) +#if !__HAVE_DISTINCT_FLOAT128 +# undef IF_FLOAT128 +# define IF_FLOAT128(x) +#endif + #define NNBSP "\xe2\x80\xaf" -static const struct -{ - const char *in; - const char *out; - double expected; -} tests[] = - { - { "000"NNBSP"000"NNBSP"000", "", 0.0 }, - { "1"NNBSP"000"NNBSP"000,5x", "x", 1000000.5 }, - /* Bug 30964 */ - { "10"NNBSP NNBSP"200", NNBSP NNBSP"200", 10.0 } - }; -#define NTESTS (sizeof (tests) / sizeof (tests[0])) +#define TEST_STRTOD(FSUF, FTYPE, FTOSTR, LSUF, CSUF) \ +static const struct \ +{ \ + const char *in; \ + const char *out; \ + FTYPE expected; \ +} tests_strto ## FSUF[] = \ + { \ + { "000"NNBSP"000"NNBSP"000", "", 0.0 ## LSUF }, \ + { "1"NNBSP"000"NNBSP"000,5x", "x", 1000000.5 ## LSUF }, \ + /* Bug 30964 */ \ + { "10"NNBSP NNBSP"200", NNBSP NNBSP"200", 10.0 ## LSUF } \ + }; \ + \ +static int \ +test_strto ## FSUF (void) \ +{ \ + int status = 0; \ + \ + for (int i = 0; \ + i < sizeof (tests_strto ## FSUF) / sizeof (tests_strto ## FSUF[0]); \ + ++i) \ + { \ + char *ep; \ + FTYPE r = __strto ## FSUF ## _internal (tests_strto ## FSUF[i].in, \ + &ep, 1); \ + \ + if (strcmp (ep, tests_strto ## FSUF[i].out) != 0) \ + { \ + printf ("%d: got rest string \"%s\", expected \"%s\"\n", \ + i, ep, tests_strto ## FSUF[i].out); \ + status = 1; \ + } \ + \ + if (r != tests_strto ## FSUF[i].expected) \ + { \ + char buf1[FSTRLENMAX], buf2[FSTRLENMAX]; \ + FTOSTR (buf1, sizeof (buf1), "%g", r); \ + FTOSTR (buf2, sizeof (buf2), "%g", \ + tests_strto ## FSUF[i].expected); \ + printf ("%d: got wrong results %s, expected %s\n", \ + i, buf1, buf2); \ + status = 1; \ + } \ + } \ + \ + return status; \ +} +GEN_TEST_STRTOD_FOREACH (TEST_STRTOD) static int do_test (void) @@ -29,29 +83,7 @@ do_test (void) return 1; } - int status = 0; - - for (int i = 0; i < NTESTS; ++i) - { - char *ep; - double r = __strtod_internal (tests[i].in, &ep, 1); - - if (strcmp (ep, tests[i].out) != 0) - { - printf ("%d: got rest string \"%s\", expected \"%s\"\n", - i, ep, tests[i].out); - status = 1; - } - - if (r != tests[i].expected) - { - printf ("%d: got wrong results %g, expected %g\n", - i, r, tests[i].expected); - status = 1; - } - } - - return status; + return STRTOD_TEST_FOREACH (test_strto); } #define TEST_FUNCTION do_test () diff --git a/stdlib/tst-strtod5i.c b/stdlib/tst-strtod5i.c index ee54e3404c..136aedea68 100644 --- a/stdlib/tst-strtod5i.c +++ b/stdlib/tst-strtod5i.c @@ -16,52 +16,112 @@ License along with the GNU C Library; if not, see <https://www.gnu.org/licenses/>. */ +/* Defining _LIBC_TEST ensures long double math functions are + declared in the headers. */ +#define _LIBC_TEST 1 #include <locale.h> #include <stdio.h> #include <stdlib.h> #include <string.h> #include <math.h> +#include "tst-strtod.h" + +/* This tests internal interfaces, which are only defined for types + with distinct ABIs, so disable testing for types without distinct + ABIs. */ +#undef IF_FLOAT32 +#define IF_FLOAT32(x) +#undef IF_FLOAT64 +#define IF_FLOAT64(x) +#undef IF_FLOAT32X +#define IF_FLOAT32X(x) +#undef IF_FLOAT64X +#define IF_FLOAT64X(x) +#if !__HAVE_DISTINCT_FLOAT128 +# undef IF_FLOAT128 +# define IF_FLOAT128(x) +#endif + #define NNBSP "\xe2\x80\xaf" -static const struct -{ - const char *in; - int group; - double expected; -} tests[] = - { - { "0", 0, 0.0 }, - { "000", 0, 0.0 }, - { "-0", 0, -0.0 }, - { "-000", 0, -0.0 }, - { "0,", 0, 0.0 }, - { "-0,", 0, -0.0 }, - { "0,0", 0, 0.0 }, - { "-0,0", 0, -0.0 }, - { "0e-10", 0, 0.0 }, - { "-0e-10", 0, -0.0 }, - { "0,e-10", 0, 0.0 }, - { "-0,e-10", 0, -0.0 }, - { "0,0e-10", 0, 0.0 }, - { "-0,0e-10", 0, -0.0 }, - { "0e-1000000", 0, 0.0 }, - { "-0e-1000000", 0, -0.0 }, - { "0,0e-1000000", 0, 0.0 }, - { "-0,0e-1000000", 0, -0.0 }, - { "0", 1, 0.0 }, - { "000", 1, 0.0 }, - { "-0", 1, -0.0 }, - { "-000", 1, -0.0 }, - { "0e-10", 1, 0.0 }, - { "-0e-10", 1, -0.0 }, - { "0e-1000000", 1, 0.0 }, - { "-0e-1000000", 1, -0.0 }, - { "000"NNBSP"000"NNBSP"000", 1, 0.0 }, - { "-000"NNBSP"000"NNBSP"000", 1, -0.0 } - }; -#define NTESTS (sizeof (tests) / sizeof (tests[0])) +#define TEST_STRTOD(FSUF, FTYPE, FTOSTR, LSUF, CSUF) \ +static const struct \ +{ \ + const char *in; \ + int group; \ + FTYPE expected; \ +} tests_strto ## FSUF[] = \ + { \ + { "0", 0, 0.0 ## LSUF }, \ + { "000", 0, 0.0 ## LSUF }, \ + { "-0", 0, -0.0 ## LSUF }, \ + { "-000", 0, -0.0 ## LSUF }, \ + { "0,", 0, 0.0 ## LSUF }, \ + { "-0,", 0, -0.0 ## LSUF }, \ + { "0,0", 0, 0.0 ## LSUF }, \ + { "-0,0", 0, -0.0 ## LSUF }, \ + { "0e-10", 0, 0.0 ## LSUF }, \ + { "-0e-10", 0, -0.0 ## LSUF }, \ + { "0,e-10", 0, 0.0 ## LSUF }, \ + { "-0,e-10", 0, -0.0 ## LSUF }, \ + { "0,0e-10", 0, 0.0 ## LSUF }, \ + { "-0,0e-10", 0, -0.0 ## LSUF }, \ + { "0e-1000000", 0, 0.0 ## LSUF }, \ + { "-0e-1000000", 0, -0.0 ## LSUF }, \ + { "0,0e-1000000", 0, 0.0 ## LSUF }, \ + { "-0,0e-1000000", 0, -0.0 ## LSUF }, \ + { "0", 1, 0.0 ## LSUF }, \ + { "000", 1, 0.0 ## LSUF }, \ + { "-0", 1, -0.0 ## LSUF }, \ + { "-000", 1, -0.0 ## LSUF }, \ + { "0e-10", 1, 0.0 ## LSUF }, \ + { "-0e-10", 1, -0.0 ## LSUF }, \ + { "0e-1000000", 1, 0.0 ## LSUF }, \ + { "-0e-1000000", 1, -0.0 ## LSUF }, \ + { "000"NNBSP"000"NNBSP"000", 1, 0.0 ## LSUF }, \ + { "-000"NNBSP"000"NNBSP"000", 1, -0.0 ## LSUF } \ + }; \ + \ +static int \ +test_strto ## FSUF (void) \ +{ \ + int status = 0; \ + \ + for (int i = 0; \ + i < sizeof (tests_strto ## FSUF) / sizeof (tests_strto ## FSUF[0]); \ + ++i) \ + { \ + char *ep; \ + FTYPE r = __strto ## FSUF ## _internal (tests_strto ## FSUF[i].in, \ + &ep, \ + tests_strto ## FSUF[i].group); \ + \ + if (*ep != '\0') \ + { \ + printf ("%d: got rest string \"%s\", expected \"\"\n", i, ep); \ + status = 1; \ + } \ + \ + if (r != tests_strto ## FSUF[i].expected \ + || (copysign ## CSUF (10.0 ## LSUF, r) \ + != copysign ## CSUF (10.0 ## LSUF, \ + tests_strto ## FSUF[i].expected))) \ + { \ + char buf1[FSTRLENMAX], buf2[FSTRLENMAX]; \ + FTOSTR (buf1, sizeof (buf1), "%g", r); \ + FTOSTR (buf2, sizeof (buf2), "%g", \ + tests_strto ## FSUF[i].expected); \ + printf ("%d: got wrong results %s, expected %s\n", \ + i, buf1, buf2); \ + status = 1; \ + } \ + } \ + \ + return status; \ +} +GEN_TEST_STRTOD_FOREACH (TEST_STRTOD) static int do_test (void) @@ -72,29 +132,7 @@ do_test (void) return 1; } - int status = 0; - - for (int i = 0; i < NTESTS; ++i) - { - char *ep; - double r = __strtod_internal (tests[i].in, &ep, tests[i].group); - - if (*ep != '\0') - { - printf ("%d: got rest string \"%s\", expected \"\"\n", i, ep); - status = 1; - } - - if (r != tests[i].expected - || copysign (10.0, r) != copysign (10.0, tests[i].expected)) - { - printf ("%d: got wrong results %g, expected %g\n", - i, r, tests[i].expected); - status = 1; - } - } - - return status; + return STRTOD_TEST_FOREACH (test_strto); } #include <support/test-driver.c> diff --git a/stdlib/tst-swapcontext2.c b/stdlib/tst-swapcontext2.c index f679755649..a9c1dc827c 100644 --- a/stdlib/tst-swapcontext2.c +++ b/stdlib/tst-swapcontext2.c @@ -85,7 +85,7 @@ do_test (void) { /* ____longjmp_chk has */ #if 0 -#ifdef _STACK_GROWS_DOWN +#if _STACK_GROWS_DOWN #define called_from(this, saved) ((this) < (saved)) #else #define called_from(this, saved) ((this) > (saved)) @@ -98,7 +98,7 @@ do_test (void) /* Arrange stacks for uctx_func1 and uctx_func2 so that called_from is true when setjmp is called from uctx_func1 and longjmp is called from uctx_func2. */ -#ifdef _STACK_GROWS_DOWN +#if _STACK_GROWS_DOWN # define UCTX_FUNC1_STACK 1 # define UCTX_FUNC2_STACK 0 #else diff --git a/stdlib/tst-system.c b/stdlib/tst-system.c index 47c742f963..b5b630a41b 100644 --- a/stdlib/tst-system.c +++ b/stdlib/tst-system.c @@ -169,7 +169,7 @@ do_test (void) { struct stat64 st; - xstat (_PATH_BSHELL, &st); + xstat64 (_PATH_BSHELL, &st); mode_t mode = st.st_mode; xchmod (_PATH_BSHELL, mode & ~(S_IXUSR | S_IXGRP | S_IXOTH)); diff --git a/string/Makefile b/string/Makefile index 8f31fa49e6..1dff405c27 100644 --- a/string/Makefile +++ b/string/Makefile @@ -184,6 +184,7 @@ tests := \ test-strncpy \ test-strndup \ test-strnlen \ + test-strnlen-nonarray \ test-strpbrk \ test-strrchr \ test-strspn \ @@ -235,7 +236,10 @@ tests-unsupported += $(tests-translation) endif # This test allocates a lot of memory and can run for a long time. -xtests = tst-strcoll-overflow +xtests += tst-strcoll-overflow + +# This test runs for a long time. +xtests += test-strncmp-nonarray # This test needs libdl. ifeq (yes,$(build-shared)) diff --git a/string/strerror_l.c b/string/strerror_l.c index 15cce261e6..70456e5bb4 100644 --- a/string/strerror_l.c +++ b/string/strerror_l.c @@ -20,7 +20,7 @@ #include <stdio.h> #include <string.h> #include <tls-internal.h> - +#include <libc-internal.h> static const char * translate (const char *str, locale_t loc) @@ -31,6 +31,12 @@ translate (const char *str, locale_t loc) return res; } +static char * +unknown_error (locale_t loc) +{ + return (char *) translate ("Unknown error", loc); +} + /* Return a string describing the errno code in ERRNUM. */ char * @@ -40,18 +46,25 @@ __strerror_l (int errnum, locale_t loc) char *err = (char *) __get_errlist (errnum); if (__glibc_unlikely (err == NULL)) { - struct tls_internal_t *tls_internal = __glibc_tls_internal (); - free (tls_internal->strerror_l_buf); - if (__asprintf (&tls_internal->strerror_l_buf, "%s%d", - translate ("Unknown error ", loc), errnum) > 0) - err = tls_internal->strerror_l_buf; - else + if (__libc_initial) { - /* The memory was freed above. */ - tls_internal->strerror_l_buf = NULL; - /* Provide a fallback translation. */ - err = (char *) translate ("Unknown error", loc); + struct tls_internal_t *tls_internal = __glibc_tls_internal (); + free (tls_internal->strerror_l_buf); + if (__asprintf (&tls_internal->strerror_l_buf, "%s%d", + translate ("Unknown error ", loc), errnum) > 0) + err = tls_internal->strerror_l_buf; + else + { + /* The memory was freed above. */ + tls_internal->strerror_l_buf = NULL; + /* Provide a fallback translation. */ + err = unknown_error (loc); + } } + else + /* Secondary namespaces use a different malloc, so cannot + participate in the buffer management. */ + err = unknown_error (loc); } else err = (char *) translate (err, loc); diff --git a/string/strsignal.c b/string/strsignal.c index 3114601564..d9b0365468 100644 --- a/string/strsignal.c +++ b/string/strsignal.c @@ -21,6 +21,7 @@ #include <string.h> #include <libintl.h> #include <tls-internal.h> +#include <libc-internal.h> /* Return a string describing the meaning of the signal number SIGNUM. */ char * @@ -30,21 +31,28 @@ strsignal (int signum) if (desc != NULL) return _(desc); - struct tls_internal_t *tls_internal = __glibc_tls_internal (); - free (tls_internal->strsignal_buf); + if (__libc_initial) + { + struct tls_internal_t *tls_internal = __glibc_tls_internal (); + free (tls_internal->strsignal_buf); - int r; + int r; #ifdef SIGRTMIN - if (signum >= SIGRTMIN && signum <= SIGRTMAX) - r = __asprintf (&tls_internal->strsignal_buf, _("Real-time signal %d"), - signum - SIGRTMIN); - else + if (signum >= SIGRTMIN && signum <= SIGRTMAX) + r = __asprintf (&tls_internal->strsignal_buf, _("Real-time signal %d"), + signum - SIGRTMIN); + else #endif - r = __asprintf (&tls_internal->strsignal_buf, _("Unknown signal %d"), - signum); - - if (r == -1) - tls_internal->strsignal_buf = NULL; - - return tls_internal->strsignal_buf; + r = __asprintf (&tls_internal->strsignal_buf, _("Unknown signal %d"), + signum); + + if (r >= 0) + return tls_internal->strsignal_buf; + else + tls_internal->strsignal_buf = NULL; + } + /* Fall through on asprintf error, and for !__libc_initial: + secondary namespaces use a different malloc and cannot + participate in the buffer management. */ + return _("Unknown signal"); } diff --git a/string/test-Xncmp-nonarray.c b/string/test-Xncmp-nonarray.c new file mode 100644 index 0000000000..9f3a3ca75d --- /dev/null +++ b/string/test-Xncmp-nonarray.c @@ -0,0 +1,183 @@ +/* Test non-array inputs to string comparison functions. + Copyright (C) 2024 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 + <https://www.gnu.org/licenses/>. */ + +/* This skeleton file is included from string/test-strncmp-nonarray.c and + wcsmbs/test-wcsncmp-nonarray.c to test that reading of the arrays stops + at the first null character. + + TEST_IDENTIFIER must be the test function identifier. TEST_NAME is + the same as a string. + + CHAR must be defined as the character type. */ + +#include <array_length.h> +#include <string.h> +#include <support/check.h> +#include <support/next_to_fault.h> +#include <support/test-driver.h> +#include <sys/param.h> +#include <unistd.h> + +/* Much shorter than test-Xnlen-nonarray.c because of deeply nested loops. */ +enum { buffer_length = 80 }; + +/* The test buffer layout follows what is described test-Xnlen-nonarray.c, + except that there two buffers, left and right. The variables + a_count, zero_count, start_offset are all duplicated. */ + +/* Return the maximum string length for a string that starts at + start_offset. */ +static int +string_length (int a_count, int start_offset) +{ + if (start_offset == buffer_length || start_offset >= a_count) + return 0; + else + return a_count - start_offset; +} + +/* This is the valid maximum length argument computation for + strnlen/wcsnlen. See text-Xnlen-nonarray.c. */ +static int +maximum_length (int start_offset, int zero_count) +{ + if (start_offset == buffer_length) + return 0; + else if (zero_count > 0) + /* Effectively unbounded, but we need to stop fairly low, + otherwise testing takes too long. */ + return buffer_length + 32; + else + return buffer_length - start_offset; +} + +typedef __typeof (TEST_IDENTIFIER) *proto_t; + +#define TEST_MAIN +#include "test-string.h" + +IMPL (TEST_IDENTIFIER, 1) + +static int +test_main (void) +{ + TEST_VERIFY_EXIT (sysconf (_SC_PAGESIZE) >= buffer_length); + test_init (); + + struct support_next_to_fault left_ntf + = support_next_to_fault_allocate (buffer_length * sizeof (CHAR)); + CHAR *left_buffer = (CHAR *) left_ntf.buffer; + struct support_next_to_fault right_ntf + = support_next_to_fault_allocate (buffer_length * sizeof (CHAR)); + CHAR *right_buffer = (CHAR *) right_ntf.buffer; + + FOR_EACH_IMPL (impl, 0) + { + printf ("info: testing %s\n", impl->name); + for (size_t i = 0; i < buffer_length; ++i) + left_buffer[i] = 'A'; + + for (int left_zero_count = 0; left_zero_count <= buffer_length; + ++left_zero_count) + { + if (left_zero_count > 0) + left_buffer[buffer_length - left_zero_count] = 0; + int left_a_count = buffer_length - left_zero_count; + for (size_t i = 0; i < buffer_length; ++i) + right_buffer[i] = 'A'; + for (int right_zero_count = 0; right_zero_count <= buffer_length; + ++right_zero_count) + { + if (right_zero_count > 0) + right_buffer[buffer_length - right_zero_count] = 0; + int right_a_count = buffer_length - right_zero_count; + for (int left_start_offset = 0; + left_start_offset <= buffer_length; + ++left_start_offset) + { + CHAR *left_start_pointer = left_buffer + left_start_offset; + int left_maxlen + = maximum_length (left_start_offset, left_zero_count); + int left_length + = string_length (left_a_count, left_start_offset); + for (int right_start_offset = 0; + right_start_offset <= buffer_length; + ++right_start_offset) + { + CHAR *right_start_pointer + = right_buffer + right_start_offset; + int right_maxlen + = maximum_length (right_start_offset, right_zero_count); + int right_length + = string_length (right_a_count, right_start_offset); + + /* Maximum length is modelled after strnlen/wcsnlen, + and must be valid for both pointer arguments at + the same time. */ + int maxlen = MIN (left_maxlen, right_maxlen); + + for (int length_argument = 0; length_argument <= maxlen; + ++length_argument) + { + if (test_verbose) + { + printf ("left: zero_count=%d" + " a_count=%d start_offset=%d\n", + left_zero_count, left_a_count, + left_start_offset); + printf ("right: zero_count=%d" + " a_count=%d start_offset=%d\n", + right_zero_count, right_a_count, + right_start_offset); + printf ("length argument: %d\n", + length_argument); + } + + /* Effective lengths bounded by length argument. + The effective length determines the + outcome of the comparison. */ + int left_effective + = MIN (left_length, length_argument); + int right_effective + = MIN (right_length, length_argument); + if (left_effective == right_effective) + TEST_COMPARE (CALL (impl, + left_start_pointer, + right_start_pointer, + length_argument), 0); + else if (left_effective < right_effective) + TEST_COMPARE (CALL (impl, + left_start_pointer, + right_start_pointer, + length_argument) < 0, 1); + else + TEST_COMPARE (CALL (impl, + left_start_pointer, + right_start_pointer, + length_argument) > 0, 1); + } + } + } + } + } + } + + return 0; +} + +#include <support/test-driver.c> diff --git a/string/test-Xnlen-nonarray.c b/string/test-Xnlen-nonarray.c new file mode 100644 index 0000000000..499bef2041 --- /dev/null +++ b/string/test-Xnlen-nonarray.c @@ -0,0 +1,133 @@ +/* Test non-array inputs to string length functions. + Copyright (C) 2024 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 + <https://www.gnu.org/licenses/>. */ + +/* This skeleton file is included from string/test-strnlen-nonarray.c + and wcsmbs/test-wcsnlen-nonarray.c to test that reading of the array + stops at the first null character. + + TEST_IDENTIFIER must be the test function identifier. TEST_NAME is + the same as a string. + + CHAR must be defined as the character type. */ + +#include <array_length.h> +#include <string.h> +#include <support/check.h> +#include <support/next_to_fault.h> +#include <support/test-driver.h> +#include <sys/param.h> +#include <unistd.h> + +typedef __typeof (TEST_IDENTIFIER) *proto_t; + +#define TEST_MAIN +#include "test-string.h" + +IMPL (TEST_IDENTIFIER, 1) + +static int +test_main (void) +{ + enum { buffer_length = 256 }; + TEST_VERIFY_EXIT (sysconf (_SC_PAGESIZE) >= buffer_length); + + test_init (); + + /* Buffer layout: There are a_count 'A' character followed by + zero_count null character, for a total of buffer_length + character: + + AAAAA...AAAAA 00000 ... 00000 (unmapped page follows) + \ / \ / + (a_count) (zero_count) + \___ (buffer_length) ___/ + ^ + | + start_offset + + The buffer length does not change, but a_count (and thus _zero) + and start_offset vary. + + If start_offset == buffer_length, only 0 is a valid length + argument. The result is 0. + + Otherwwise, if zero_count > 0 (if there a null characters in the + buffer), then any length argument is valid. If start_offset < + a_count (i.e., there is a non-null character at start_offset), the + result is the minimum of a_count - start_offset and the length + argument. Otherwise the result is 0. + + Otherwise, there are no null characters before the unmapped page. + The length argument must not be greater than buffer_length - + start_offset, and the result is the length argument. */ + + struct support_next_to_fault ntf + = support_next_to_fault_allocate (buffer_length * sizeof (CHAR)); + CHAR *buffer = (CHAR *) ntf.buffer; + + FOR_EACH_IMPL (impl, 0) + { + printf ("info: testing %s\n", impl->name); + for (size_t i = 0; i < buffer_length; ++i) + buffer[i] = 'A'; + + for (int zero_count = 0; zero_count <= buffer_length; ++zero_count) + { + if (zero_count > 0) + buffer[buffer_length - zero_count] = 0; + int a_count = buffer_length - zero_count; + for (int start_offset = 0; start_offset <= buffer_length; + ++start_offset) + { + CHAR *start_pointer = buffer + start_offset; + if (start_offset == buffer_length) + TEST_COMPARE (CALL (impl, buffer + start_offset, 0), 0); + else if (zero_count > 0) + for (int length_argument = 0; + length_argument <= 2 * buffer_length; + ++length_argument) + { + if (test_verbose) + printf ("zero_count=%d a_count=%d start_offset=%d" + " length_argument=%d\n", + zero_count, a_count, start_offset, + length_argument); + if (start_offset < a_count) + TEST_COMPARE (CALL (impl, start_pointer, length_argument), + MIN (a_count - start_offset, + length_argument)); + else + TEST_COMPARE (CALL (impl, start_pointer, length_argument), + 0); + } + else + for (int length_argument = 0; + length_argument <= buffer_length - start_offset; + ++length_argument) + TEST_COMPARE (CALL (impl, start_pointer, length_argument), + length_argument); + } + } + } + + support_next_to_fault_free (&ntf); + + return 0; +} + +#include <support/test-driver.c> diff --git a/string/test-strchr.c b/string/test-strchr.c index c795eac6fa..72b17af687 100644 --- a/string/test-strchr.c +++ b/string/test-strchr.c @@ -255,6 +255,69 @@ check1 (void) check_result (impl, s, c, exp_result); } +static void +check2 (void) +{ + CHAR *s = (CHAR *) (buf1 + getpagesize () - 4 * sizeof (CHAR)); + CHAR *s_begin = (CHAR *) (buf1 + getpagesize () - 64); +#ifndef USE_FOR_STRCHRNUL + CHAR *exp_result = NULL; +#else + CHAR *exp_result = s + 1; +#endif + CHAR val = 0x12; + for (; s_begin != s; ++s_begin) + *s_begin = val; + + s[0] = val + 1; + s[1] = 0; + s[2] = val + 1; + s[3] = val + 1; + + { + FOR_EACH_IMPL (impl, 0) + check_result (impl, s, val, exp_result); + } + s[3] = val; + { + FOR_EACH_IMPL (impl, 0) + check_result (impl, s, val, exp_result); + } + exp_result = s; + s[0] = val; + { + FOR_EACH_IMPL (impl, 0) + check_result (impl, s, val, exp_result); + } + + s[3] = val + 1; + { + FOR_EACH_IMPL (impl, 0) + check_result (impl, s, val, exp_result); + } + + s[0] = val + 1; + s[1] = val + 1; + s[2] = val + 1; + s[3] = val + 1; + s[4] = val; + exp_result = s + 4; + { + FOR_EACH_IMPL (impl, 0) + check_result (impl, s, val, exp_result); + } + s[4] = 0; +#ifndef USE_FOR_STRCHRNUL + exp_result = NULL; +#else + exp_result = s + 4; +#endif + { + FOR_EACH_IMPL (impl, 0) + check_result (impl, s, val, exp_result); + } +} + int test_main (void) { @@ -263,7 +326,7 @@ test_main (void) test_init (); check1 (); - + check2 (); printf ("%20s", ""); FOR_EACH_IMPL (impl, 0) printf ("\t%s", impl->name); diff --git a/string/test-strncmp-nonarray.c b/string/test-strncmp-nonarray.c new file mode 100644 index 0000000000..581e52d01b --- /dev/null +++ b/string/test-strncmp-nonarray.c @@ -0,0 +1,4 @@ +#define TEST_IDENTIFIER strncmp +#define TEST_NAME "strncmp" +typedef char CHAR; +#include "test-Xncmp-nonarray.c" diff --git a/string/test-strnlen-nonarray.c b/string/test-strnlen-nonarray.c new file mode 100644 index 0000000000..0ad05756d9 --- /dev/null +++ b/string/test-strnlen-nonarray.c @@ -0,0 +1,4 @@ +#define TEST_IDENTIFIER strnlen +#define TEST_NAME "strnlen" +typedef char CHAR; +#include "test-Xnlen-nonarray.c" diff --git a/support/Makefile b/support/Makefile index aa57207bdc..93d32ae75f 100644 --- a/support/Makefile +++ b/support/Makefile @@ -42,15 +42,15 @@ libsupport-routines = \ resolv_test \ set_fortify_handler \ support-open-dev-null-range \ - support-xfstat \ - support-xfstat-time64 \ - support-xstat \ - support-xstat-time64 \ support_become_root \ support_can_chroot \ support_capture_subprocess \ support_capture_subprocess_check \ + support_check_stat_fd \ + support_check_stat_path \ support_chroot \ + support_compare_file_bytes \ + support_compare_file_string \ support_copy_file \ support_copy_file_range \ support_create_timer \ @@ -64,9 +64,12 @@ libsupport-routines = \ support_format_herrno \ support_format_hostent \ support_format_netent \ + support_fuse \ support_isolate_in_subprocess \ support_mutex_pi_monotonic \ support_need_proc \ + support_open_and_compare_file_bytes \ + support_open_and_compare_file_string \ support_openpty \ support_path_support_time64 \ support_paths \ @@ -75,6 +78,8 @@ libsupport-routines = \ support_quote_blob \ support_quote_blob_wide \ support_quote_string \ + support_readdir_check \ + support_readdir_r_check \ support_record_failure \ support_run_diff \ support_select_modifies_timeout \ @@ -117,6 +122,7 @@ libsupport-routines = \ xclock_settime_time64 \ xclone \ xclose \ + xclosedir \ xconnect \ xcopy_file_range \ xdlfcn \ @@ -124,6 +130,7 @@ libsupport-routines = \ xdup2 \ xfchmod \ xfclose \ + xfdopendir \ xfgets \ xfopen \ xfork \ @@ -135,8 +142,6 @@ libsupport-routines = \ xgetsockname \ xlisten \ xlseek \ - xlstat \ - xlstat-time64 \ xmalloc \ xmemstream \ xmkdir \ @@ -147,6 +152,7 @@ libsupport-routines = \ xmunmap \ xnewlocale \ xopen \ + xopendir \ xpipe \ xpoll \ xposix_memalign \ @@ -210,6 +216,7 @@ libsupport-routines = \ xsignal \ xsigstack \ xsocket \ + xstatx \ xstrdup \ xstrndup \ xsymlink \ @@ -321,6 +328,7 @@ tests = \ tst-support_capture_subprocess \ tst-support_descriptors \ tst-support_format_dns_packet \ + tst-support_fuse \ tst-support_quote_blob \ tst-support_quote_blob_wide \ tst-support_quote_string \ @@ -330,6 +338,7 @@ tests = \ tst-test_compare_string \ tst-test_compare_string_wide \ tst-timespec \ + tst-xdirent \ tst-xreadlink \ tst-xsigstack \ # tests diff --git a/support/bundled/README b/support/bundled/README new file mode 100644 index 0000000000..e861b3d40a --- /dev/null +++ b/support/bundled/README @@ -0,0 +1,5 @@ +This subtree contains bundled files included verbatim from other +sources. They are used for building the support/ infrastructure. + +linux/ + Select files from the Linux 6.10 source tree. diff --git a/support/bundled/linux/COPYING b/support/bundled/linux/COPYING new file mode 100644 index 0000000000..a635a38ef9 --- /dev/null +++ b/support/bundled/linux/COPYING @@ -0,0 +1,20 @@ +The Linux Kernel is provided under: + + SPDX-License-Identifier: GPL-2.0 WITH Linux-syscall-note + +Being under the terms of the GNU General Public License version 2 only, +according with: + + LICENSES/preferred/GPL-2.0 + +With an explicit syscall exception, as stated at: + + LICENSES/exceptions/Linux-syscall-note + +In addition, other licenses may also apply. Please see: + + Documentation/process/license-rules.rst + +for more details. + +All contributions to the Linux Kernel are subject to this COPYING file. diff --git a/support/bundled/linux/LICENSES/exceptions/Linux-syscall-note b/support/bundled/linux/LICENSES/exceptions/Linux-syscall-note new file mode 100644 index 0000000000..adbe756a05 --- /dev/null +++ b/support/bundled/linux/LICENSES/exceptions/Linux-syscall-note @@ -0,0 +1,24 @@ +SPDX-Exception-Identifier: Linux-syscall-note +SPDX-URL: https://spdx.org/licenses/Linux-syscall-note.html +SPDX-Licenses: GPL-2.0, GPL-2.0+, GPL-1.0+, LGPL-2.0, LGPL-2.0+, LGPL-2.1, LGPL-2.1+, GPL-2.0-only, GPL-2.0-or-later +Usage-Guide: + This exception is used together with one of the above SPDX-Licenses + to mark user space API (uapi) header files so they can be included + into non GPL compliant user space application code. + To use this exception add it with the keyword WITH to one of the + identifiers in the SPDX-Licenses tag: + SPDX-License-Identifier: <SPDX-License> WITH Linux-syscall-note +License-Text: + + NOTE! This copyright does *not* cover user programs that use kernel + services by normal system calls - this is merely considered normal use + of the kernel, and does *not* fall under the heading of "derived work". + Also note that the GPL below is copyrighted by the Free Software + Foundation, but the instance of code that it refers to (the Linux + kernel) is copyrighted by me and others who actually wrote it. + + Also note that the only valid version of the GPL as far as the kernel + is concerned is _this_ particular version of the license (ie v2, not + v2.2 or v3.x or whatever), unless explicitly otherwise stated. + + Linus Torvalds diff --git a/support/bundled/linux/LICENSES/preferred/GPL-2.0 b/support/bundled/linux/LICENSES/preferred/GPL-2.0 new file mode 100644 index 0000000000..ff0812fd89 --- /dev/null +++ b/support/bundled/linux/LICENSES/preferred/GPL-2.0 @@ -0,0 +1,359 @@ +Valid-License-Identifier: GPL-2.0 +Valid-License-Identifier: GPL-2.0-only +Valid-License-Identifier: GPL-2.0+ +Valid-License-Identifier: GPL-2.0-or-later +SPDX-URL: https://spdx.org/licenses/GPL-2.0.html +Usage-Guide: + To use this license in source code, put one of the following SPDX + tag/value pairs into a comment according to the placement + guidelines in the licensing rules documentation. + For 'GNU General Public License (GPL) version 2 only' use: + SPDX-License-Identifier: GPL-2.0 + or + SPDX-License-Identifier: GPL-2.0-only + For 'GNU General Public License (GPL) version 2 or any later version' use: + SPDX-License-Identifier: GPL-2.0+ + or + SPDX-License-Identifier: GPL-2.0-or-later +License-Text: + + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + <one line to give the program's name and a brief idea of what it does.> + Copyright (C) <year> <name of author> + + This program is free software; you can redistribute it and/or modify + it under the terms of the GNU General Public License as published by + the Free Software Foundation; either version 2 of the License, or + (at your option) any later version. + + This program 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 General Public License for more details. + + You should have received a copy of the GNU General Public License + along with this program; if not, write to the Free Software + Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + <signature of Ty Coon>, 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff --git a/support/bundled/linux/include/uapi/linux/fuse.h b/support/bundled/linux/include/uapi/linux/fuse.h new file mode 100644 index 0000000000..d08b99d60f --- /dev/null +++ b/support/bundled/linux/include/uapi/linux/fuse.h @@ -0,0 +1,1189 @@ +/* SPDX-License-Identifier: ((GPL-2.0 WITH Linux-syscall-note) OR BSD-2-Clause) */ +/* + This file defines the kernel interface of FUSE + Copyright (C) 2001-2008 Miklos Szeredi <miklos@szeredi.hu> + + This program can be distributed under the terms of the GNU GPL. + See the file COPYING. + + This -- and only this -- header file may also be distributed under + the terms of the BSD Licence as follows: + + Copyright (C) 2001-2007 Miklos Szeredi. All rights reserved. + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions + are met: + 1. Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + 2. Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + + THIS SOFTWARE IS PROVIDED BY AUTHOR AND CONTRIBUTORS ``AS IS'' AND + ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE + IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE + ARE DISCLAIMED. IN NO EVENT SHALL AUTHOR OR CONTRIBUTORS BE LIABLE + FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL + DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS + OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) + HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT + LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY + OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF + SUCH DAMAGE. +*/ + +/* + * This file defines the kernel interface of FUSE + * + * Protocol changelog: + * + * 7.1: + * - add the following messages: + * FUSE_SETATTR, FUSE_SYMLINK, FUSE_MKNOD, FUSE_MKDIR, FUSE_UNLINK, + * FUSE_RMDIR, FUSE_RENAME, FUSE_LINK, FUSE_OPEN, FUSE_READ, FUSE_WRITE, + * FUSE_RELEASE, FUSE_FSYNC, FUSE_FLUSH, FUSE_SETXATTR, FUSE_GETXATTR, + * FUSE_LISTXATTR, FUSE_REMOVEXATTR, FUSE_OPENDIR, FUSE_READDIR, + * FUSE_RELEASEDIR + * - add padding to messages to accommodate 32-bit servers on 64-bit kernels + * + * 7.2: + * - add FOPEN_DIRECT_IO and FOPEN_KEEP_CACHE flags + * - add FUSE_FSYNCDIR message + * + * 7.3: + * - add FUSE_ACCESS message + * - add FUSE_CREATE message + * - add filehandle to fuse_setattr_in + * + * 7.4: + * - add frsize to fuse_kstatfs + * - clean up request size limit checking + * + * 7.5: + * - add flags and max_write to fuse_init_out + * + * 7.6: + * - add max_readahead to fuse_init_in and fuse_init_out + * + * 7.7: + * - add FUSE_INTERRUPT message + * - add POSIX file lock support + * + * 7.8: + * - add lock_owner and flags fields to fuse_release_in + * - add FUSE_BMAP message + * - add FUSE_DESTROY message + * + * 7.9: + * - new fuse_getattr_in input argument of GETATTR + * - add lk_flags in fuse_lk_in + * - add lock_owner field to fuse_setattr_in, fuse_read_in and fuse_write_in + * - add blksize field to fuse_attr + * - add file flags field to fuse_read_in and fuse_write_in + * - Add ATIME_NOW and MTIME_NOW flags to fuse_setattr_in + * + * 7.10 + * - add nonseekable open flag + * + * 7.11 + * - add IOCTL message + * - add unsolicited notification support + * - add POLL message and NOTIFY_POLL notification + * + * 7.12 + * - add umask flag to input argument of create, mknod and mkdir + * - add notification messages for invalidation of inodes and + * directory entries + * + * 7.13 + * - make max number of background requests and congestion threshold + * tunables + * + * 7.14 + * - add splice support to fuse device + * + * 7.15 + * - add store notify + * - add retrieve notify + * + * 7.16 + * - add BATCH_FORGET request + * - FUSE_IOCTL_UNRESTRICTED shall now return with array of 'struct + * fuse_ioctl_iovec' instead of ambiguous 'struct iovec' + * - add FUSE_IOCTL_32BIT flag + * + * 7.17 + * - add FUSE_FLOCK_LOCKS and FUSE_RELEASE_FLOCK_UNLOCK + * + * 7.18 + * - add FUSE_IOCTL_DIR flag + * - add FUSE_NOTIFY_DELETE + * + * 7.19 + * - add FUSE_FALLOCATE + * + * 7.20 + * - add FUSE_AUTO_INVAL_DATA + * + * 7.21 + * - add FUSE_READDIRPLUS + * - send the requested events in POLL request + * + * 7.22 + * - add FUSE_ASYNC_DIO + * + * 7.23 + * - add FUSE_WRITEBACK_CACHE + * - add time_gran to fuse_init_out + * - add reserved space to fuse_init_out + * - add FATTR_CTIME + * - add ctime and ctimensec to fuse_setattr_in + * - add FUSE_RENAME2 request + * - add FUSE_NO_OPEN_SUPPORT flag + * + * 7.24 + * - add FUSE_LSEEK for SEEK_HOLE and SEEK_DATA support + * + * 7.25 + * - add FUSE_PARALLEL_DIROPS + * + * 7.26 + * - add FUSE_HANDLE_KILLPRIV + * - add FUSE_POSIX_ACL + * + * 7.27 + * - add FUSE_ABORT_ERROR + * + * 7.28 + * - add FUSE_COPY_FILE_RANGE + * - add FOPEN_CACHE_DIR + * - add FUSE_MAX_PAGES, add max_pages to init_out + * - add FUSE_CACHE_SYMLINKS + * + * 7.29 + * - add FUSE_NO_OPENDIR_SUPPORT flag + * + * 7.30 + * - add FUSE_EXPLICIT_INVAL_DATA + * - add FUSE_IOCTL_COMPAT_X32 + * + * 7.31 + * - add FUSE_WRITE_KILL_PRIV flag + * - add FUSE_SETUPMAPPING and FUSE_REMOVEMAPPING + * - add map_alignment to fuse_init_out, add FUSE_MAP_ALIGNMENT flag + * + * 7.32 + * - add flags to fuse_attr, add FUSE_ATTR_SUBMOUNT, add FUSE_SUBMOUNTS + * + * 7.33 + * - add FUSE_HANDLE_KILLPRIV_V2, FUSE_WRITE_KILL_SUIDGID, FATTR_KILL_SUIDGID + * - add FUSE_OPEN_KILL_SUIDGID + * - extend fuse_setxattr_in, add FUSE_SETXATTR_EXT + * - add FUSE_SETXATTR_ACL_KILL_SGID + * + * 7.34 + * - add FUSE_SYNCFS + * + * 7.35 + * - add FOPEN_NOFLUSH + * + * 7.36 + * - extend fuse_init_in with reserved fields, add FUSE_INIT_EXT init flag + * - add flags2 to fuse_init_in and fuse_init_out + * - add FUSE_SECURITY_CTX init flag + * - add security context to create, mkdir, symlink, and mknod requests + * - add FUSE_HAS_INODE_DAX, FUSE_ATTR_DAX + * + * 7.37 + * - add FUSE_TMPFILE + * + * 7.38 + * - add FUSE_EXPIRE_ONLY flag to fuse_notify_inval_entry + * - add FOPEN_PARALLEL_DIRECT_WRITES + * - add total_extlen to fuse_in_header + * - add FUSE_MAX_NR_SECCTX + * - add extension header + * - add FUSE_EXT_GROUPS + * - add FUSE_CREATE_SUPP_GROUP + * - add FUSE_HAS_EXPIRE_ONLY + * + * 7.39 + * - add FUSE_DIRECT_IO_ALLOW_MMAP + * - add FUSE_STATX and related structures + * + * 7.40 + * - add max_stack_depth to fuse_init_out, add FUSE_PASSTHROUGH init flag + * - add backing_id to fuse_open_out, add FOPEN_PASSTHROUGH open flag + * - add FUSE_NO_EXPORT_SUPPORT init flag + * - add FUSE_NOTIFY_RESEND, add FUSE_HAS_RESEND init flag + */ + +#ifndef _LINUX_FUSE_H +#define _LINUX_FUSE_H + +#ifdef __KERNEL__ +#include <linux/types.h> +#else +#include <stdint.h> +#endif + +/* + * Version negotiation: + * + * Both the kernel and userspace send the version they support in the + * INIT request and reply respectively. + * + * If the major versions match then both shall use the smallest + * of the two minor versions for communication. + * + * If the kernel supports a larger major version, then userspace shall + * reply with the major version it supports, ignore the rest of the + * INIT message and expect a new INIT message from the kernel with a + * matching major version. + * + * If the library supports a larger major version, then it shall fall + * back to the major protocol version sent by the kernel for + * communication and reply with that major version (and an arbitrary + * supported minor version). + */ + +/** Version number of this interface */ +#define FUSE_KERNEL_VERSION 7 + +/** Minor version number of this interface */ +#define FUSE_KERNEL_MINOR_VERSION 40 + +/** The node ID of the root inode */ +#define FUSE_ROOT_ID 1 + +/* Make sure all structures are padded to 64bit boundary, so 32bit + userspace works under 64bit kernels */ + +struct fuse_attr { + uint64_t ino; + uint64_t size; + uint64_t blocks; + uint64_t atime; + uint64_t mtime; + uint64_t ctime; + uint32_t atimensec; + uint32_t mtimensec; + uint32_t ctimensec; + uint32_t mode; + uint32_t nlink; + uint32_t uid; + uint32_t gid; + uint32_t rdev; + uint32_t blksize; + uint32_t flags; +}; + +/* + * The following structures are bit-for-bit compatible with the statx(2) ABI in + * Linux. + */ +struct fuse_sx_time { + int64_t tv_sec; + uint32_t tv_nsec; + int32_t __reserved; +}; + +struct fuse_statx { + uint32_t mask; + uint32_t blksize; + uint64_t attributes; + uint32_t nlink; + uint32_t uid; + uint32_t gid; + uint16_t mode; + uint16_t __spare0[1]; + uint64_t ino; + uint64_t size; + uint64_t blocks; + uint64_t attributes_mask; + struct fuse_sx_time atime; + struct fuse_sx_time btime; + struct fuse_sx_time ctime; + struct fuse_sx_time mtime; + uint32_t rdev_major; + uint32_t rdev_minor; + uint32_t dev_major; + uint32_t dev_minor; + uint64_t __spare2[14]; +}; + +struct fuse_kstatfs { + uint64_t blocks; + uint64_t bfree; + uint64_t bavail; + uint64_t files; + uint64_t ffree; + uint32_t bsize; + uint32_t namelen; + uint32_t frsize; + uint32_t padding; + uint32_t spare[6]; +}; + +struct fuse_file_lock { + uint64_t start; + uint64_t end; + uint32_t type; + uint32_t pid; /* tgid */ +}; + +/** + * Bitmasks for fuse_setattr_in.valid + */ +#define FATTR_MODE (1 << 0) +#define FATTR_UID (1 << 1) +#define FATTR_GID (1 << 2) +#define FATTR_SIZE (1 << 3) +#define FATTR_ATIME (1 << 4) +#define FATTR_MTIME (1 << 5) +#define FATTR_FH (1 << 6) +#define FATTR_ATIME_NOW (1 << 7) +#define FATTR_MTIME_NOW (1 << 8) +#define FATTR_LOCKOWNER (1 << 9) +#define FATTR_CTIME (1 << 10) +#define FATTR_KILL_SUIDGID (1 << 11) + +/** + * Flags returned by the OPEN request + * + * FOPEN_DIRECT_IO: bypass page cache for this open file + * FOPEN_KEEP_CACHE: don't invalidate the data cache on open + * FOPEN_NONSEEKABLE: the file is not seekable + * FOPEN_CACHE_DIR: allow caching this directory + * FOPEN_STREAM: the file is stream-like (no file position at all) + * FOPEN_NOFLUSH: don't flush data cache on close (unless FUSE_WRITEBACK_CACHE) + * FOPEN_PARALLEL_DIRECT_WRITES: Allow concurrent direct writes on the same inode + * FOPEN_PASSTHROUGH: passthrough read/write io for this open file + */ +#define FOPEN_DIRECT_IO (1 << 0) +#define FOPEN_KEEP_CACHE (1 << 1) +#define FOPEN_NONSEEKABLE (1 << 2) +#define FOPEN_CACHE_DIR (1 << 3) +#define FOPEN_STREAM (1 << 4) +#define FOPEN_NOFLUSH (1 << 5) +#define FOPEN_PARALLEL_DIRECT_WRITES (1 << 6) +#define FOPEN_PASSTHROUGH (1 << 7) + +/** + * INIT request/reply flags + * + * FUSE_ASYNC_READ: asynchronous read requests + * FUSE_POSIX_LOCKS: remote locking for POSIX file locks + * FUSE_FILE_OPS: kernel sends file handle for fstat, etc... (not yet supported) + * FUSE_ATOMIC_O_TRUNC: handles the O_TRUNC open flag in the filesystem + * FUSE_EXPORT_SUPPORT: filesystem handles lookups of "." and ".." + * FUSE_BIG_WRITES: filesystem can handle write size larger than 4kB + * FUSE_DONT_MASK: don't apply umask to file mode on create operations + * FUSE_SPLICE_WRITE: kernel supports splice write on the device + * FUSE_SPLICE_MOVE: kernel supports splice move on the device + * FUSE_SPLICE_READ: kernel supports splice read on the device + * FUSE_FLOCK_LOCKS: remote locking for BSD style file locks + * FUSE_HAS_IOCTL_DIR: kernel supports ioctl on directories + * FUSE_AUTO_INVAL_DATA: automatically invalidate cached pages + * FUSE_DO_READDIRPLUS: do READDIRPLUS (READDIR+LOOKUP in one) + * FUSE_READDIRPLUS_AUTO: adaptive readdirplus + * FUSE_ASYNC_DIO: asynchronous direct I/O submission + * FUSE_WRITEBACK_CACHE: use writeback cache for buffered writes + * FUSE_NO_OPEN_SUPPORT: kernel supports zero-message opens + * FUSE_PARALLEL_DIROPS: allow parallel lookups and readdir + * FUSE_HANDLE_KILLPRIV: fs handles killing suid/sgid/cap on write/chown/trunc + * FUSE_POSIX_ACL: filesystem supports posix acls + * FUSE_ABORT_ERROR: reading the device after abort returns ECONNABORTED + * FUSE_MAX_PAGES: init_out.max_pages contains the max number of req pages + * FUSE_CACHE_SYMLINKS: cache READLINK responses + * FUSE_NO_OPENDIR_SUPPORT: kernel supports zero-message opendir + * FUSE_EXPLICIT_INVAL_DATA: only invalidate cached pages on explicit request + * FUSE_MAP_ALIGNMENT: init_out.map_alignment contains log2(byte alignment) for + * foffset and moffset fields in struct + * fuse_setupmapping_out and fuse_removemapping_one. + * FUSE_SUBMOUNTS: kernel supports auto-mounting directory submounts + * FUSE_HANDLE_KILLPRIV_V2: fs kills suid/sgid/cap on write/chown/trunc. + * Upon write/truncate suid/sgid is only killed if caller + * does not have CAP_FSETID. Additionally upon + * write/truncate sgid is killed only if file has group + * execute permission. (Same as Linux VFS behavior). + * FUSE_SETXATTR_EXT: Server supports extended struct fuse_setxattr_in + * FUSE_INIT_EXT: extended fuse_init_in request + * FUSE_INIT_RESERVED: reserved, do not use + * FUSE_SECURITY_CTX: add security context to create, mkdir, symlink, and + * mknod + * FUSE_HAS_INODE_DAX: use per inode DAX + * FUSE_CREATE_SUPP_GROUP: add supplementary group info to create, mkdir, + * symlink and mknod (single group that matches parent) + * FUSE_HAS_EXPIRE_ONLY: kernel supports expiry-only entry invalidation + * FUSE_DIRECT_IO_ALLOW_MMAP: allow shared mmap in FOPEN_DIRECT_IO mode. + * FUSE_NO_EXPORT_SUPPORT: explicitly disable export support + * FUSE_HAS_RESEND: kernel supports resending pending requests, and the high bit + * of the request ID indicates resend requests + */ +#define FUSE_ASYNC_READ (1 << 0) +#define FUSE_POSIX_LOCKS (1 << 1) +#define FUSE_FILE_OPS (1 << 2) +#define FUSE_ATOMIC_O_TRUNC (1 << 3) +#define FUSE_EXPORT_SUPPORT (1 << 4) +#define FUSE_BIG_WRITES (1 << 5) +#define FUSE_DONT_MASK (1 << 6) +#define FUSE_SPLICE_WRITE (1 << 7) +#define FUSE_SPLICE_MOVE (1 << 8) +#define FUSE_SPLICE_READ (1 << 9) +#define FUSE_FLOCK_LOCKS (1 << 10) +#define FUSE_HAS_IOCTL_DIR (1 << 11) +#define FUSE_AUTO_INVAL_DATA (1 << 12) +#define FUSE_DO_READDIRPLUS (1 << 13) +#define FUSE_READDIRPLUS_AUTO (1 << 14) +#define FUSE_ASYNC_DIO (1 << 15) +#define FUSE_WRITEBACK_CACHE (1 << 16) +#define FUSE_NO_OPEN_SUPPORT (1 << 17) +#define FUSE_PARALLEL_DIROPS (1 << 18) +#define FUSE_HANDLE_KILLPRIV (1 << 19) +#define FUSE_POSIX_ACL (1 << 20) +#define FUSE_ABORT_ERROR (1 << 21) +#define FUSE_MAX_PAGES (1 << 22) +#define FUSE_CACHE_SYMLINKS (1 << 23) +#define FUSE_NO_OPENDIR_SUPPORT (1 << 24) +#define FUSE_EXPLICIT_INVAL_DATA (1 << 25) +#define FUSE_MAP_ALIGNMENT (1 << 26) +#define FUSE_SUBMOUNTS (1 << 27) +#define FUSE_HANDLE_KILLPRIV_V2 (1 << 28) +#define FUSE_SETXATTR_EXT (1 << 29) +#define FUSE_INIT_EXT (1 << 30) +#define FUSE_INIT_RESERVED (1 << 31) +/* bits 32..63 get shifted down 32 bits into the flags2 field */ +#define FUSE_SECURITY_CTX (1ULL << 32) +#define FUSE_HAS_INODE_DAX (1ULL << 33) +#define FUSE_CREATE_SUPP_GROUP (1ULL << 34) +#define FUSE_HAS_EXPIRE_ONLY (1ULL << 35) +#define FUSE_DIRECT_IO_ALLOW_MMAP (1ULL << 36) +#define FUSE_PASSTHROUGH (1ULL << 37) +#define FUSE_NO_EXPORT_SUPPORT (1ULL << 38) +#define FUSE_HAS_RESEND (1ULL << 39) + +/* Obsolete alias for FUSE_DIRECT_IO_ALLOW_MMAP */ +#define FUSE_DIRECT_IO_RELAX FUSE_DIRECT_IO_ALLOW_MMAP + +/** + * CUSE INIT request/reply flags + * + * CUSE_UNRESTRICTED_IOCTL: use unrestricted ioctl + */ +#define CUSE_UNRESTRICTED_IOCTL (1 << 0) + +/** + * Release flags + */ +#define FUSE_RELEASE_FLUSH (1 << 0) +#define FUSE_RELEASE_FLOCK_UNLOCK (1 << 1) + +/** + * Getattr flags + */ +#define FUSE_GETATTR_FH (1 << 0) + +/** + * Lock flags + */ +#define FUSE_LK_FLOCK (1 << 0) + +/** + * WRITE flags + * + * FUSE_WRITE_CACHE: delayed write from page cache, file handle is guessed + * FUSE_WRITE_LOCKOWNER: lock_owner field is valid + * FUSE_WRITE_KILL_SUIDGID: kill suid and sgid bits + */ +#define FUSE_WRITE_CACHE (1 << 0) +#define FUSE_WRITE_LOCKOWNER (1 << 1) +#define FUSE_WRITE_KILL_SUIDGID (1 << 2) + +/* Obsolete alias; this flag implies killing suid/sgid only. */ +#define FUSE_WRITE_KILL_PRIV FUSE_WRITE_KILL_SUIDGID + +/** + * Read flags + */ +#define FUSE_READ_LOCKOWNER (1 << 1) + +/** + * Ioctl flags + * + * FUSE_IOCTL_COMPAT: 32bit compat ioctl on 64bit machine + * FUSE_IOCTL_UNRESTRICTED: not restricted to well-formed ioctls, retry allowed + * FUSE_IOCTL_RETRY: retry with new iovecs + * FUSE_IOCTL_32BIT: 32bit ioctl + * FUSE_IOCTL_DIR: is a directory + * FUSE_IOCTL_COMPAT_X32: x32 compat ioctl on 64bit machine (64bit time_t) + * + * FUSE_IOCTL_MAX_IOV: maximum of in_iovecs + out_iovecs + */ +#define FUSE_IOCTL_COMPAT (1 << 0) +#define FUSE_IOCTL_UNRESTRICTED (1 << 1) +#define FUSE_IOCTL_RETRY (1 << 2) +#define FUSE_IOCTL_32BIT (1 << 3) +#define FUSE_IOCTL_DIR (1 << 4) +#define FUSE_IOCTL_COMPAT_X32 (1 << 5) + +#define FUSE_IOCTL_MAX_IOV 256 + +/** + * Poll flags + * + * FUSE_POLL_SCHEDULE_NOTIFY: request poll notify + */ +#define FUSE_POLL_SCHEDULE_NOTIFY (1 << 0) + +/** + * Fsync flags + * + * FUSE_FSYNC_FDATASYNC: Sync data only, not metadata + */ +#define FUSE_FSYNC_FDATASYNC (1 << 0) + +/** + * fuse_attr flags + * + * FUSE_ATTR_SUBMOUNT: Object is a submount root + * FUSE_ATTR_DAX: Enable DAX for this file in per inode DAX mode + */ +#define FUSE_ATTR_SUBMOUNT (1 << 0) +#define FUSE_ATTR_DAX (1 << 1) + +/** + * Open flags + * FUSE_OPEN_KILL_SUIDGID: Kill suid and sgid if executable + */ +#define FUSE_OPEN_KILL_SUIDGID (1 << 0) + +/** + * setxattr flags + * FUSE_SETXATTR_ACL_KILL_SGID: Clear SGID when system.posix_acl_access is set + */ +#define FUSE_SETXATTR_ACL_KILL_SGID (1 << 0) + +/** + * notify_inval_entry flags + * FUSE_EXPIRE_ONLY + */ +#define FUSE_EXPIRE_ONLY (1 << 0) + +/** + * extension type + * FUSE_MAX_NR_SECCTX: maximum value of &fuse_secctx_header.nr_secctx + * FUSE_EXT_GROUPS: &fuse_supp_groups extension + */ +enum fuse_ext_type { + /* Types 0..31 are reserved for fuse_secctx_header */ + FUSE_MAX_NR_SECCTX = 31, + FUSE_EXT_GROUPS = 32, +}; + +enum fuse_opcode { + FUSE_LOOKUP = 1, + FUSE_FORGET = 2, /* no reply */ + FUSE_GETATTR = 3, + FUSE_SETATTR = 4, + FUSE_READLINK = 5, + FUSE_SYMLINK = 6, + FUSE_MKNOD = 8, + FUSE_MKDIR = 9, + FUSE_UNLINK = 10, + FUSE_RMDIR = 11, + FUSE_RENAME = 12, + FUSE_LINK = 13, + FUSE_OPEN = 14, + FUSE_READ = 15, + FUSE_WRITE = 16, + FUSE_STATFS = 17, + FUSE_RELEASE = 18, + FUSE_FSYNC = 20, + FUSE_SETXATTR = 21, + FUSE_GETXATTR = 22, + FUSE_LISTXATTR = 23, + FUSE_REMOVEXATTR = 24, + FUSE_FLUSH = 25, + FUSE_INIT = 26, + FUSE_OPENDIR = 27, + FUSE_READDIR = 28, + FUSE_RELEASEDIR = 29, + FUSE_FSYNCDIR = 30, + FUSE_GETLK = 31, + FUSE_SETLK = 32, + FUSE_SETLKW = 33, + FUSE_ACCESS = 34, + FUSE_CREATE = 35, + FUSE_INTERRUPT = 36, + FUSE_BMAP = 37, + FUSE_DESTROY = 38, + FUSE_IOCTL = 39, + FUSE_POLL = 40, + FUSE_NOTIFY_REPLY = 41, + FUSE_BATCH_FORGET = 42, + FUSE_FALLOCATE = 43, + FUSE_READDIRPLUS = 44, + FUSE_RENAME2 = 45, + FUSE_LSEEK = 46, + FUSE_COPY_FILE_RANGE = 47, + FUSE_SETUPMAPPING = 48, + FUSE_REMOVEMAPPING = 49, + FUSE_SYNCFS = 50, + FUSE_TMPFILE = 51, + FUSE_STATX = 52, + + /* CUSE specific operations */ + CUSE_INIT = 4096, + + /* Reserved opcodes: helpful to detect structure endian-ness */ + CUSE_INIT_BSWAP_RESERVED = 1048576, /* CUSE_INIT << 8 */ + FUSE_INIT_BSWAP_RESERVED = 436207616, /* FUSE_INIT << 24 */ +}; + +enum fuse_notify_code { + FUSE_NOTIFY_POLL = 1, + FUSE_NOTIFY_INVAL_INODE = 2, + FUSE_NOTIFY_INVAL_ENTRY = 3, + FUSE_NOTIFY_STORE = 4, + FUSE_NOTIFY_RETRIEVE = 5, + FUSE_NOTIFY_DELETE = 6, + FUSE_NOTIFY_RESEND = 7, + FUSE_NOTIFY_CODE_MAX, +}; + +/* The read buffer is required to be at least 8k, but may be much larger */ +#define FUSE_MIN_READ_BUFFER 8192 + +#define FUSE_COMPAT_ENTRY_OUT_SIZE 120 + +struct fuse_entry_out { + uint64_t nodeid; /* Inode ID */ + uint64_t generation; /* Inode generation: nodeid:gen must + be unique for the fs's lifetime */ + uint64_t entry_valid; /* Cache timeout for the name */ + uint64_t attr_valid; /* Cache timeout for the attributes */ + uint32_t entry_valid_nsec; + uint32_t attr_valid_nsec; + struct fuse_attr attr; +}; + +struct fuse_forget_in { + uint64_t nlookup; +}; + +struct fuse_forget_one { + uint64_t nodeid; + uint64_t nlookup; +}; + +struct fuse_batch_forget_in { + uint32_t count; + uint32_t dummy; +}; + +struct fuse_getattr_in { + uint32_t getattr_flags; + uint32_t dummy; + uint64_t fh; +}; + +#define FUSE_COMPAT_ATTR_OUT_SIZE 96 + +struct fuse_attr_out { + uint64_t attr_valid; /* Cache timeout for the attributes */ + uint32_t attr_valid_nsec; + uint32_t dummy; + struct fuse_attr attr; +}; + +struct fuse_statx_in { + uint32_t getattr_flags; + uint32_t reserved; + uint64_t fh; + uint32_t sx_flags; + uint32_t sx_mask; +}; + +struct fuse_statx_out { + uint64_t attr_valid; /* Cache timeout for the attributes */ + uint32_t attr_valid_nsec; + uint32_t flags; + uint64_t spare[2]; + struct fuse_statx stat; +}; + +#define FUSE_COMPAT_MKNOD_IN_SIZE 8 + +struct fuse_mknod_in { + uint32_t mode; + uint32_t rdev; + uint32_t umask; + uint32_t padding; +}; + +struct fuse_mkdir_in { + uint32_t mode; + uint32_t umask; +}; + +struct fuse_rename_in { + uint64_t newdir; +}; + +struct fuse_rename2_in { + uint64_t newdir; + uint32_t flags; + uint32_t padding; +}; + +struct fuse_link_in { + uint64_t oldnodeid; +}; + +struct fuse_setattr_in { + uint32_t valid; + uint32_t padding; + uint64_t fh; + uint64_t size; + uint64_t lock_owner; + uint64_t atime; + uint64_t mtime; + uint64_t ctime; + uint32_t atimensec; + uint32_t mtimensec; + uint32_t ctimensec; + uint32_t mode; + uint32_t unused4; + uint32_t uid; + uint32_t gid; + uint32_t unused5; +}; + +struct fuse_open_in { + uint32_t flags; + uint32_t open_flags; /* FUSE_OPEN_... */ +}; + +struct fuse_create_in { + uint32_t flags; + uint32_t mode; + uint32_t umask; + uint32_t open_flags; /* FUSE_OPEN_... */ +}; + +struct fuse_open_out { + uint64_t fh; + uint32_t open_flags; + int32_t backing_id; +}; + +struct fuse_release_in { + uint64_t fh; + uint32_t flags; + uint32_t release_flags; + uint64_t lock_owner; +}; + +struct fuse_flush_in { + uint64_t fh; + uint32_t unused; + uint32_t padding; + uint64_t lock_owner; +}; + +struct fuse_read_in { + uint64_t fh; + uint64_t offset; + uint32_t size; + uint32_t read_flags; + uint64_t lock_owner; + uint32_t flags; + uint32_t padding; +}; + +#define FUSE_COMPAT_WRITE_IN_SIZE 24 + +struct fuse_write_in { + uint64_t fh; + uint64_t offset; + uint32_t size; + uint32_t write_flags; + uint64_t lock_owner; + uint32_t flags; + uint32_t padding; +}; + +struct fuse_write_out { + uint32_t size; + uint32_t padding; +}; + +#define FUSE_COMPAT_STATFS_SIZE 48 + +struct fuse_statfs_out { + struct fuse_kstatfs st; +}; + +struct fuse_fsync_in { + uint64_t fh; + uint32_t fsync_flags; + uint32_t padding; +}; + +#define FUSE_COMPAT_SETXATTR_IN_SIZE 8 + +struct fuse_setxattr_in { + uint32_t size; + uint32_t flags; + uint32_t setxattr_flags; + uint32_t padding; +}; + +struct fuse_getxattr_in { + uint32_t size; + uint32_t padding; +}; + +struct fuse_getxattr_out { + uint32_t size; + uint32_t padding; +}; + +struct fuse_lk_in { + uint64_t fh; + uint64_t owner; + struct fuse_file_lock lk; + uint32_t lk_flags; + uint32_t padding; +}; + +struct fuse_lk_out { + struct fuse_file_lock lk; +}; + +struct fuse_access_in { + uint32_t mask; + uint32_t padding; +}; + +struct fuse_init_in { + uint32_t major; + uint32_t minor; + uint32_t max_readahead; + uint32_t flags; + uint32_t flags2; + uint32_t unused[11]; +}; + +#define FUSE_COMPAT_INIT_OUT_SIZE 8 +#define FUSE_COMPAT_22_INIT_OUT_SIZE 24 + +struct fuse_init_out { + uint32_t major; + uint32_t minor; + uint32_t max_readahead; + uint32_t flags; + uint16_t max_background; + uint16_t congestion_threshold; + uint32_t max_write; + uint32_t time_gran; + uint16_t max_pages; + uint16_t map_alignment; + uint32_t flags2; + uint32_t max_stack_depth; + uint32_t unused[6]; +}; + +#define CUSE_INIT_INFO_MAX 4096 + +struct cuse_init_in { + uint32_t major; + uint32_t minor; + uint32_t unused; + uint32_t flags; +}; + +struct cuse_init_out { + uint32_t major; + uint32_t minor; + uint32_t unused; + uint32_t flags; + uint32_t max_read; + uint32_t max_write; + uint32_t dev_major; /* chardev major */ + uint32_t dev_minor; /* chardev minor */ + uint32_t spare[10]; +}; + +struct fuse_interrupt_in { + uint64_t unique; +}; + +struct fuse_bmap_in { + uint64_t block; + uint32_t blocksize; + uint32_t padding; +}; + +struct fuse_bmap_out { + uint64_t block; +}; + +struct fuse_ioctl_in { + uint64_t fh; + uint32_t flags; + uint32_t cmd; + uint64_t arg; + uint32_t in_size; + uint32_t out_size; +}; + +struct fuse_ioctl_iovec { + uint64_t base; + uint64_t len; +}; + +struct fuse_ioctl_out { + int32_t result; + uint32_t flags; + uint32_t in_iovs; + uint32_t out_iovs; +}; + +struct fuse_poll_in { + uint64_t fh; + uint64_t kh; + uint32_t flags; + uint32_t events; +}; + +struct fuse_poll_out { + uint32_t revents; + uint32_t padding; +}; + +struct fuse_notify_poll_wakeup_out { + uint64_t kh; +}; + +struct fuse_fallocate_in { + uint64_t fh; + uint64_t offset; + uint64_t length; + uint32_t mode; + uint32_t padding; +}; + +/** + * FUSE request unique ID flag + * + * Indicates whether this is a resend request. The receiver should handle this + * request accordingly. + */ +#define FUSE_UNIQUE_RESEND (1ULL << 63) + +struct fuse_in_header { + uint32_t len; + uint32_t opcode; + uint64_t unique; + uint64_t nodeid; + uint32_t uid; + uint32_t gid; + uint32_t pid; + uint16_t total_extlen; /* length of extensions in 8byte units */ + uint16_t padding; +}; + +struct fuse_out_header { + uint32_t len; + int32_t error; + uint64_t unique; +}; + +struct fuse_dirent { + uint64_t ino; + uint64_t off; + uint32_t namelen; + uint32_t type; + char name[]; +}; + +/* Align variable length records to 64bit boundary */ +#define FUSE_REC_ALIGN(x) \ + (((x) + sizeof(uint64_t) - 1) & ~(sizeof(uint64_t) - 1)) + +#define FUSE_NAME_OFFSET offsetof(struct fuse_dirent, name) +#define FUSE_DIRENT_ALIGN(x) FUSE_REC_ALIGN(x) +#define FUSE_DIRENT_SIZE(d) \ + FUSE_DIRENT_ALIGN(FUSE_NAME_OFFSET + (d)->namelen) + +struct fuse_direntplus { + struct fuse_entry_out entry_out; + struct fuse_dirent dirent; +}; + +#define FUSE_NAME_OFFSET_DIRENTPLUS \ + offsetof(struct fuse_direntplus, dirent.name) +#define FUSE_DIRENTPLUS_SIZE(d) \ + FUSE_DIRENT_ALIGN(FUSE_NAME_OFFSET_DIRENTPLUS + (d)->dirent.namelen) + +struct fuse_notify_inval_inode_out { + uint64_t ino; + int64_t off; + int64_t len; +}; + +struct fuse_notify_inval_entry_out { + uint64_t parent; + uint32_t namelen; + uint32_t flags; +}; + +struct fuse_notify_delete_out { + uint64_t parent; + uint64_t child; + uint32_t namelen; + uint32_t padding; +}; + +struct fuse_notify_store_out { + uint64_t nodeid; + uint64_t offset; + uint32_t size; + uint32_t padding; +}; + +struct fuse_notify_retrieve_out { + uint64_t notify_unique; + uint64_t nodeid; + uint64_t offset; + uint32_t size; + uint32_t padding; +}; + +/* Matches the size of fuse_write_in */ +struct fuse_notify_retrieve_in { + uint64_t dummy1; + uint64_t offset; + uint32_t size; + uint32_t dummy2; + uint64_t dummy3; + uint64_t dummy4; +}; + +struct fuse_backing_map { + int32_t fd; + uint32_t flags; + uint64_t padding; +}; + +/* Device ioctls: */ +#define FUSE_DEV_IOC_MAGIC 229 +#define FUSE_DEV_IOC_CLONE _IOR(FUSE_DEV_IOC_MAGIC, 0, uint32_t) +#define FUSE_DEV_IOC_BACKING_OPEN _IOW(FUSE_DEV_IOC_MAGIC, 1, \ + struct fuse_backing_map) +#define FUSE_DEV_IOC_BACKING_CLOSE _IOW(FUSE_DEV_IOC_MAGIC, 2, uint32_t) + +struct fuse_lseek_in { + uint64_t fh; + uint64_t offset; + uint32_t whence; + uint32_t padding; +}; + +struct fuse_lseek_out { + uint64_t offset; +}; + +struct fuse_copy_file_range_in { + uint64_t fh_in; + uint64_t off_in; + uint64_t nodeid_out; + uint64_t fh_out; + uint64_t off_out; + uint64_t len; + uint64_t flags; +}; + +#define FUSE_SETUPMAPPING_FLAG_WRITE (1ull << 0) +#define FUSE_SETUPMAPPING_FLAG_READ (1ull << 1) +struct fuse_setupmapping_in { + /* An already open handle */ + uint64_t fh; + /* Offset into the file to start the mapping */ + uint64_t foffset; + /* Length of mapping required */ + uint64_t len; + /* Flags, FUSE_SETUPMAPPING_FLAG_* */ + uint64_t flags; + /* Offset in Memory Window */ + uint64_t moffset; +}; + +struct fuse_removemapping_in { + /* number of fuse_removemapping_one follows */ + uint32_t count; +}; + +struct fuse_removemapping_one { + /* Offset into the dax window start the unmapping */ + uint64_t moffset; + /* Length of mapping required */ + uint64_t len; +}; + +#define FUSE_REMOVEMAPPING_MAX_ENTRY \ + (PAGE_SIZE / sizeof(struct fuse_removemapping_one)) + +struct fuse_syncfs_in { + uint64_t padding; +}; + +/* + * For each security context, send fuse_secctx with size of security context + * fuse_secctx will be followed by security context name and this in turn + * will be followed by actual context label. + * fuse_secctx, name, context + */ +struct fuse_secctx { + uint32_t size; + uint32_t padding; +}; + +/* + * Contains the information about how many fuse_secctx structures are being + * sent and what's the total size of all security contexts (including + * size of fuse_secctx_header). + * + */ +struct fuse_secctx_header { + uint32_t size; + uint32_t nr_secctx; +}; + +/** + * struct fuse_ext_header - extension header + * @size: total size of this extension including this header + * @type: type of extension + * + * This is made compatible with fuse_secctx_header by using type values > + * FUSE_MAX_NR_SECCTX + */ +struct fuse_ext_header { + uint32_t size; + uint32_t type; +}; + +/** + * struct fuse_supp_groups - Supplementary group extension + * @nr_groups: number of supplementary groups + * @groups: flexible array of group IDs + */ +struct fuse_supp_groups { + uint32_t nr_groups; + uint32_t groups[]; +}; + +#endif /* _LINUX_FUSE_H */ diff --git a/support/check.h b/support/check.h index 711f34b83b..7ea22c7a2c 100644 --- a/support/check.h +++ b/support/check.h @@ -25,6 +25,11 @@ __BEGIN_DECLS /* Record a test failure, print the failure message to standard output + and pass the result of 1 through. */ +#define FAIL(...) \ + support_print_failure_impl (__FILE__, __LINE__, __VA_ARGS__) + +/* Record a test failure, print the failure message to standard output and return 1. */ #define FAIL_RET(...) \ return support_print_failure_impl (__FILE__, __LINE__, __VA_ARGS__) diff --git a/support/file_contents.h b/support/file_contents.h new file mode 100644 index 0000000000..9b2d750aae --- /dev/null +++ b/support/file_contents.h @@ -0,0 +1,63 @@ +/* Functionality for checking file contents. + Copyright (C) 2024 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 + <https://www.gnu.org/licenses/>. */ + +#ifndef SUPPORT_FILE_CONTENTS_H +#define SUPPORT_FILE_CONTENTS_H + +#include <support/check.h> +#include <stdio.h> + +__BEGIN_DECLS + +/* Check that an already-open file has exactly the given bytes, + starting at the current location in the file. The file position + indicator is updated to point after the bytes compared. Return 0 + if equal, 1 otherwise or on read error. */ +int support_compare_file_bytes (FILE *fp, const char *contents, size_t length); + +/* Check that an already-open file has exactly the given string as + contents, starting at the current offset. The file position + indicator is updated to point after the bytes compared. Return 0 + if equal, 1 otherwise or on read error. */ +int support_compare_file_string (FILE *fp, const char *contents); + +/* Check that a not-currently-open file has exactly the given bytes. + Return 0 if equal, 1 otherwise or on read error. */ +int support_open_and_compare_file_bytes (const char *file, + const char *contents, + size_t length); + +/* Check that a not-currently-open file has exactly the given string + as contents, starting at the current offset. Return 0 if equal, 1 + otherwise or on read error. */ +int support_open_and_compare_file_string (const char *file, + const char *contents); + +/* Compare bytes read from an open file with the given string. The + file position indicator is updated to point after the bytes + compared. */ +#define TEST_COMPARE_FILE_STRING(FP, CONTENTS) \ + TEST_COMPARE (support_compare_file_string (FP, CONTENTS), 0) + +/* Read a file and compare bytes read from it with the given string. */ +#define TEST_OPEN_AND_COMPARE_FILE_STRING(FILE, CONTENTS) \ + TEST_COMPARE (support_open_and_compare_file_string (FILE, CONTENTS), 0) + +__END_DECLS + +#endif /* SUPPORT_FILE_CONTENTS_H */ diff --git a/support/fuse.h b/support/fuse.h new file mode 100644 index 0000000000..4c365fbc0c --- /dev/null +++ b/support/fuse.h @@ -0,0 +1,215 @@ +/* Facilities for FUSE-backed file system tests. + Copyright (C) 2024 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 + <https://www.gnu.org/licenses/>. */ + +/* Before using this functionality, use support_enter_mount_namespace + to ensure that mounts do not impact the overall system. */ + +#ifndef SUPPORT_FUSE_H +#define SUPPORT_FUSE_H + +#include <stdbool.h> +#include <stddef.h> +#include <stdint.h> +#include <stdlib.h> + +#include <support/bundled/linux/include/uapi/linux/fuse.h> + +/* This function must be called furst, before support_fuse_mount, to + prepare unprivileged mounting. */ +void support_fuse_init (void); + +/* This function can be called instead of support_fuse_init. It does + not use mount and user namespaces, so it requires root privileges, + and cleanup after testing may be incomplete. This is intended only + for test development. */ +void support_fuse_init_no_namespace (void); + +/* Opaque type for tracking FUSE mount state. */ +struct support_fuse; + +/* This function disables a mount point created using + support_fuse_mount. */ +void support_fuse_unmount (struct support_fuse *) __nonnull ((1)); + +/* This function is called on a separate thread after calling + support_fuse_mount. F is the mount state, and CLOSURE the argument + that was passed to support_fuse_mount. The callback function is + expected to call support_fuse_next to read packets from the kernel + and handle them according to the test's need. */ +typedef void (*support_fuse_callback) (struct support_fuse *f, void *closure); + +/* This function creates a new mount point, implemented by CALLBACK. + CLOSURE is passed to CALLBACK as the second argument. */ +struct support_fuse *support_fuse_mount (support_fuse_callback callback, + void *closure) + __nonnull ((1)) __attr_dealloc (support_fuse_unmount, 1); + +/* This function returns the path to the mount point for F. The + returned string is valid until support_fuse_unmount (F) is called. */ +const char * support_fuse_mountpoint (struct support_fuse *f) __nonnull ((1)); + + +/* Renders the OPCODE as a string (FUSE_* constant. The caller must + free the returned string. */ +char * support_fuse_opcode (uint32_t opcode) __attr_dealloc_free; + +/* Use to provide a checked cast facility. Use the + support_fuse_in_cast macro below. */ +void *support_fuse_cast_internal (struct fuse_in_header *, uint32_t) + __nonnull ((1)); +void *support_fuse_cast_name_internal (struct fuse_in_header *, uint32_t, + size_t skip, char **name) + __nonnull ((1)); + +/* The macro expansion support_fuse_in_cast (P, TYPE) casts the + pointer INH to the appropriate type corresponding to the FUSE_TYPE + opcode. It fails (terminates the process) if INH->opcode does not + match FUSE_TYPE. The type of the returned pointer matches that of + the FUSE_* constant. + + Maintenance note: Adding support for additional struct fuse_*_in + types is generally easy, except when there is trailing data after + the struct (see below for support_fuse_cast_name, for example), and + the kernel has changed struct sizes over time. This has happened + recently with struct fuse_setxattr_in, and would require special + handling if implemented. */ +#define support_fuse_payload_type_INIT struct fuse_init_in +#define support_fuse_payload_type_LOOKUP char +#define support_fuse_payload_type_OPEN struct fuse_open_in +#define support_fuse_payload_type_READ struct fuse_read_in +#define support_fuse_payload_type_SETATTR struct fuse_setattr_in +#define support_fuse_payload_type_WRITE struct fuse_write_in +#define support_fuse_cast(typ, inh) \ + ((support_fuse_payload_type_##typ *) \ + support_fuse_cast_internal ((inh), FUSE_##typ)) + +/* Same as support_fuse_cast, but also writes the passed name to *NAMEP. */ +#define support_fuse_payload_name_type_CREATE struct fuse_create_in +#define support_fuse_payload_name_type_MKDIR struct fuse_mkdir_in +#define support_fuse_cast_name(typ, inh, namep) \ + ((support_fuse_payload_name_type_##typ *) \ + support_fuse_cast_name_internal \ + ((inh), FUSE_##typ, sizeof (support_fuse_payload_name_type_##typ), \ + (namep))) + +/* This function should be called from the callback function. It + returns NULL if the mount point has been unmounted. The result can + be cast using support_fuse_in_cast. The pointer is invalidated + with the next call to support_fuse_next. + + Typical use involves handling some basics using the + support_fuse_handle_* building blocks, following by a switch + statement on the result member of the returned struct, to implement + what a particular test needs. Casts to payload data should be made + using support_fuse_in_cast. + + By default, FUSE_FORGET responses are filtered. See + support_fuse_filter_forget for turning that off. */ +struct fuse_in_header *support_fuse_next (struct support_fuse *f) + __nonnull ((1)); + +/* This function can be called from a callback function to handle + basic aspects of directories (OPENDIR, GETATTR, RELEASEDIR). + inh->nodeid is used as the inode number for the directory. This + function must be called after support_fuse_next. */ +bool support_fuse_handle_directory (struct support_fuse *f) __nonnull ((1)); + +/* This function can be called from a callback function to handle + access to the mount point itself, after call support_fuse_next. */ +bool support_fuse_handle_mountpoint (struct support_fuse *f) __nonnull ((1)); + +/* If FILTER_ENABLED, future support_fuse_next calls will not return + FUSE_FORGET events (and simply discared them, as they require no + reply). If !FILTER_ENABLED, the callback needs to handle + FUSE_FORGET events and call support_fuse_no_reply. */ +void support_fuse_filter_forget (struct support_fuse *f, bool filter_enabled) + __nonnull ((1)); + +/* This function should be called from the callback function after + support_fuse_next returned a non-null pointer. It sends out a + response packet on the FUSE device with the supplied payload data. */ +void support_fuse_reply (struct support_fuse *f, + const void *payload, size_t payload_size) + __nonnull ((1)) __attr_access ((__read_only__, 2, 3)); + +/* This function should be called from the callback function. It + replies to a request with an error indicator. ERROR must be positive. */ +void support_fuse_reply_error (struct support_fuse *f, uint32_t error) + __nonnull ((1)); + +/* This function should be called from the callback function. It + sends out an empty (but success-indicating) reply packet. */ +void support_fuse_reply_empty (struct support_fuse *f) __nonnull ((1)); + +/* Do not send a reply. Only to be used after a support_fuse_next + call that returned a FUSE_FORGET event. */ +void support_fuse_no_reply (struct support_fuse *f) __nonnull ((1)); + +/* Specific reponse preparation functions. The returned object can be + updated as needed. If a NODEID argument is present, it will be + used to set the inode and FUSE nodeid fields. Without such an + argument, it is initialized from the current request (if the reply + requires this field). This function must be called after + support_fuse_next. The actual response must be sent using + support_fuse_reply_prepared (or a support_fuse_reply_error call can + be used to cancel the response). */ +struct fuse_entry_out *support_fuse_prepare_entry (struct support_fuse *f, + uint64_t nodeid) + __nonnull ((1)); +struct fuse_attr_out *support_fuse_prepare_attr (struct support_fuse *f) + __nonnull ((1)); + +/* Similar to the other support_fuse_prepare_* functions, but it + prepares for two response packets. They can be updated through the + pointers written to *OUT_ENTRY and *OUT_OPEN prior to calling + support_fuse_reply_prepared. */ +void support_fuse_prepare_create (struct support_fuse *f, + uint64_t nodeid, + struct fuse_entry_out **out_entry, + struct fuse_open_out **out_open) + __nonnull ((1, 3, 4)); + + +/* Prepare sending a directory stream. Must be called after + support_fuse_next and before support_fuse_dirstream_add. */ +struct support_fuse_dirstream; +struct support_fuse_dirstream *support_fuse_prepare_readdir (struct + support_fuse *f); + +/* Adds directory using D_INO, D_OFF, D_TYPE, D_NAME to the directory + stream D. Must be called after support_fuse_prepare_readdir. + + D_OFF is the offset of the next directory entry, not the current + one. The first entry has offset zero. The first requested offset + can be obtained from the READ payload (struct fuse_read_in) prior + to calling this function. + + Returns true if the entry could be added to the buffer, or false if + there was insufficient room. Sending the buffer is delayed until + support_fuse_reply_prepared is called. */ +bool support_fuse_dirstream_add (struct support_fuse_dirstream *d, + uint64_t d_ino, uint64_t d_off, + uint32_t d_type, + const char *d_name); + +/* Send a prepared response. Must be called after one of the + support_fuse_prepare_* functions and before the next + support_fuse_next call. */ +void support_fuse_reply_prepared (struct support_fuse *f) __nonnull ((1)); + +#endif /* SUPPORT_FUSE_H */ diff --git a/support/support-xfstat.c b/support/support_check_stat_fd.c index ab4b01c97d..4c12adf6b7 100644 --- a/support/support-xfstat.c +++ b/support/support_check_stat_fd.c @@ -1,5 +1,5 @@ -/* fstat64 with error checking. - Copyright (C) 2017-2024 Free Software Foundation, Inc. +/* Error checking for descriptor-based stat functions. + Copyright (C) 2024 Free Software Foundation, Inc. This file is part of the GNU C Library. The GNU C Library is free software; you can redistribute it and/or @@ -18,11 +18,10 @@ #include <support/check.h> #include <support/xunistd.h> -#include <sys/stat.h> void -xfstat (int fd, struct stat64 *result) +support_check_stat_fd (const char *name, int fd, int result) { - if (fstat64 (fd, result) != 0) - FAIL_EXIT1 ("fstat64 (%d): %m", fd); + if (result != 0) + FAIL_EXIT1 ("%s (%d): %m", name, fd); } diff --git a/support/xlstat.c b/support/support_check_stat_path.c index 87df988879..3cf72afe59 100644 --- a/support/xlstat.c +++ b/support/support_check_stat_path.c @@ -1,4 +1,4 @@ -/* lstat64 with error checking. +/* Error checking for path-based stat functions. Copyright (C) 2017-2024 Free Software Foundation, Inc. This file is part of the GNU C Library. @@ -18,11 +18,10 @@ #include <support/check.h> #include <support/xunistd.h> -#include <sys/stat.h> void -xlstat (const char *path, struct stat64 *result) +support_check_stat_path (const char *name, const char *path, int result) { - if (lstat64 (path, result) != 0) - FAIL_EXIT1 ("lstat64 (\"%s\"): %m", path); + if (result != 0) + FAIL_EXIT1 ("%s (\"%s\"): %m", name, path); } diff --git a/elf/dl-symaddr.c b/support/support_compare_file_bytes.c index b0299fdb35..e261e1da8f 100644 --- a/elf/dl-symaddr.c +++ b/support/support_compare_file_bytes.c @@ -1,5 +1,5 @@ -/* Get the symbol address. Generic version. - Copyright (C) 1999-2024 Free Software Foundation, Inc. +/* Compare bytes from an open file. + Copyright (C) 2024 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 @@ -16,18 +16,27 @@ License along with the GNU C Library; if not, see <https://www.gnu.org/licenses/>. */ -#include <ldsodefs.h> -#include <dl-fptr.h> +#include <stdio.h> -void * -_dl_symbol_address (struct link_map *map, const ElfW(Sym) *ref) -{ - ElfW(Addr) value = SYMBOL_ADDRESS (map, ref, false); +#include <support/file_contents.h> + +/* Check that an already-open file has exactly the given bytes, + starting at the current offset. */ - /* Return the pointer to function descriptor. */ - if (ELFW(ST_TYPE) (ref->st_info) == STT_FUNC) - return (void *) _dl_make_fptr (map, ref, value); - else - return (void *) value; +int +support_compare_file_bytes (FILE *fp, const char *contents, size_t length) +{ + int c; + while (length > 0) + { + c = getc (fp); + if (c == EOF || (unsigned char) c != (unsigned char) contents[0]) + return 1; + contents++; + length--; + } + c = getc (fp); + if (c != EOF || ferror (fp)) + return 1; + return 0; } -rtld_hidden_def (_dl_symbol_address) diff --git a/support/support_compare_file_string.c b/support/support_compare_file_string.c new file mode 100644 index 0000000000..04513c3af1 --- /dev/null +++ b/support/support_compare_file_string.c @@ -0,0 +1,28 @@ +/* Compare string from an open file. + Copyright (C) 2024 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 + <https://www.gnu.org/licenses/>. */ + +#include <stdio.h> +#include <string.h> + +#include <support/file_contents.h> + +int +support_compare_file_string (FILE *fp, const char *contents) +{ + return support_compare_file_bytes (fp, contents, strlen (contents)); +} diff --git a/support/support_format_addrinfo.c b/support/support_format_addrinfo.c index cbc72910a9..77f4db345c 100644 --- a/support/support_format_addrinfo.c +++ b/support/support_format_addrinfo.c @@ -22,6 +22,7 @@ #include <errno.h> #include <stdio.h> #include <stdlib.h> +#include <string.h> #include <support/support.h> #include <support/xmemstream.h> diff --git a/support/support_fuse.c b/support/support_fuse.c new file mode 100644 index 0000000000..135dbf1198 --- /dev/null +++ b/support/support_fuse.c @@ -0,0 +1,705 @@ +/* Facilities for FUSE-backed file system tests. + Copyright (C) 2024 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 + <https://www.gnu.org/licenses/>. */ + +#include <support/fuse.h> + +#include <dirent.h> +#include <errno.h> +#include <fcntl.h> +#include <string.h> +#include <sys/sysmacros.h> +#include <sys/uio.h> +#include <unistd.h> + +#include <array_length.h> +#include <support/check.h> +#include <support/namespace.h> +#include <support/support.h> +#include <support/test-driver.h> +#include <support/xdirent.h> +#include <support/xthread.h> +#include <support/xunistd.h> + +#ifdef __linux__ +# include <sys/mount.h> +#else +/* Fallback definitions that mark the test as unsupported. */ +# define mount(...) ({ FAIL_UNSUPPORTED ("mount"); -1; }) +# define umount(...) ({ FAIL_UNSUPPORTED ("mount"); -1; }) +#endif + +struct support_fuse +{ + char *mountpoint; + void *buffer_start; /* Begin of allocation. */ + void *buffer_next; /* Next read position. */ + void *buffer_limit; /* End of buffered data. */ + void *buffer_end; /* End of allocation. */ + struct fuse_in_header *inh; /* Most recent request (support_fuse_next). */ + union /* Space for prepared responses. */ + { + struct fuse_attr_out attr; + struct fuse_entry_out entry; + struct + { + struct fuse_entry_out entry; + struct fuse_open_out open; + } create; + } prepared; + void *prepared_pointer; /* NULL if inactive. */ + size_t prepared_size; /* 0 if inactive. */ + + /* Used for preparing readdir responses. Already used-up area for + the current request is counted by prepared_size. */ + void *readdir_buffer; + size_t readdir_buffer_size; + + pthread_t handler; /* Thread handling requests. */ + uid_t uid; /* Cached value for the current process. */ + uid_t gid; /* Cached value for the current process. */ + int fd; /* FUSE file descriptor. */ + int connection; /* Entry under /sys/fs/fuse/connections. */ + bool filter_forget; /* Controls FUSE_FORGET event dropping. */ + _Atomic bool disconnected; +}; + +struct fuse_thread_wrapper_args +{ + struct support_fuse *f; + support_fuse_callback callback; + void *closure; +}; + +/* Set by support_fuse_init to indicate that support_fuse_mount may be + called. */ +static bool support_fuse_init_called; + +/* Allocate the read buffer in F with SIZE bytes capacity. Does not + free the previously allocated buffer. */ +static void support_fuse_allocate (struct support_fuse *f, size_t size) + __nonnull ((1)); + +/* Internal mkdtemp replacement */ +static char * support_fuse_mkdir (const char *prefix) __nonnull ((1)); + +/* Low-level allocation function for support_fuse_mount. Does not + perform the mount. */ +static struct support_fuse *support_fuse_open (void); + +/* Thread wrapper function for use with pthread_create. Uses struct + fuse_thread_wrapper_args. */ +static void *support_fuse_thread_wrapper (void *closure) __nonnull ((1)); + +/* Initial step before preparing a reply. SIZE must be the size of + the F->prepared member that is going to be used. */ +static void support_fuse_prepare_1 (struct support_fuse *f, size_t size); + +/* Similar to support_fuse_reply_error, but not check that ERROR is + not zero. */ +static void support_fuse_reply_error_1 (struct support_fuse *f, + uint32_t error) __nonnull ((1)); + +/* Path to the directory containing mount points. Initialized by an + ELF constructor. All mountpoints are collected there so that the + test wrapper can clean them up without keeping track of them + individually. */ +static char *support_fuse_mountpoints; + +/* PID of the process that should clean up the mount points in the ELF + destructor. */ +static pid_t support_fuse_cleanup_pid; + +static void +support_fuse_allocate (struct support_fuse *f, size_t size) +{ + f->buffer_start = xmalloc (size); + f->buffer_end = f->buffer_start + size; + f->buffer_limit = f->buffer_start; + f->buffer_next = f->buffer_limit; +} + +void +support_fuse_filter_forget (struct support_fuse *f, bool filter) +{ + f->filter_forget = filter; +} + +void * +support_fuse_cast_internal (struct fuse_in_header *p, uint32_t expected) +{ + if (expected != p->opcode + && !(expected == FUSE_READ && p->opcode == FUSE_READDIR)) + { + char *expected1 = support_fuse_opcode (expected); + char *actual = support_fuse_opcode (p->opcode); + FAIL_EXIT1 ("attempt to cast %s to %s", actual, expected1); + } + return p + 1; +} + +void * +support_fuse_cast_name_internal (struct fuse_in_header *p, uint32_t expected, + size_t skip, char **name) +{ + char *result = support_fuse_cast_internal (p, expected); + *name = result + skip; + return result; +} + +bool +support_fuse_dirstream_add (struct support_fuse_dirstream *d, + uint64_t d_ino, uint64_t d_off, + uint32_t d_type, const char *d_name) +{ + struct support_fuse *f = (struct support_fuse *) d; + size_t structlen = offsetof (struct fuse_dirent, name); + size_t namelen = strlen (d_name); /* No null termination. */ + size_t required_size = FUSE_DIRENT_ALIGN (structlen + namelen); + if (f->readdir_buffer_size - f->prepared_size < required_size) + return false; + struct fuse_dirent entry = + { + .ino = d_ino, + .off = d_off, + .type = d_type, + .namelen = namelen, + }; + memcpy (f->readdir_buffer + f->prepared_size, &entry, structlen); + /* Use strncpy to write padding and avoid passing uninitialized + bytes to the read system call. */ + strncpy (f->readdir_buffer + f->prepared_size + structlen, d_name, + required_size - structlen); + f->prepared_size += required_size; + return true; +} + +bool +support_fuse_handle_directory (struct support_fuse *f) +{ + TEST_VERIFY (f->inh != NULL); + switch (f->inh->opcode) + { + case FUSE_OPENDIR: + { + struct fuse_open_out out = + { + }; + support_fuse_reply (f, &out, sizeof (out)); + } + return true; + case FUSE_RELEASEDIR: + support_fuse_reply_empty (f); + return true; + case FUSE_GETATTR: + { + struct fuse_attr_out *out = support_fuse_prepare_attr (f); + out->attr.mode = S_IFDIR | 0700; + support_fuse_reply_prepared (f); + } + return true; + default: + return false; + } +} + +bool +support_fuse_handle_mountpoint (struct support_fuse *f) +{ + TEST_VERIFY (f->inh != NULL); + /* 1 is the root node. */ + if (f->inh->opcode == FUSE_GETATTR && f->inh->nodeid == 1) + return support_fuse_handle_directory (f); + return false; +} + +void +support_fuse_init (void) +{ + support_fuse_init_called = true; + + support_become_root (); + if (!support_enter_mount_namespace ()) + FAIL_UNSUPPORTED ("mount namespaces not supported"); +} + +void +support_fuse_init_no_namespace (void) +{ + support_fuse_init_called = true; +} + +static char * +support_fuse_mkdir (const char *prefix) +{ + /* Do not use mkdtemp to avoid interfering with its tests. */ + unsigned int counter = 1; + unsigned int pid = getpid (); + while (true) + { + char *path = xasprintf ("%s%u.%u/", prefix, pid, counter); + if (mkdir (path, 0700) == 0) + return path; + if (errno != EEXIST) + FAIL_EXIT1 ("mkdir (\"%s\"): %m", path); + free (path); + ++counter; + } +} + +struct support_fuse * +support_fuse_mount (support_fuse_callback callback, void *closure) +{ + TEST_VERIFY_EXIT (support_fuse_init_called); + + /* Request at least minor version 12 because it changed struct sizes. */ + enum { min_version = 12 }; + + struct support_fuse *f = support_fuse_open (); + char *mount_options + = xasprintf ("fd=%d,rootmode=040700,user_id=%u,group_id=%u", + f->fd, f->uid, f->gid); + if (mount ("fuse", f->mountpoint, "fuse.glibc", + MS_NOSUID|MS_NODEV, mount_options) + != 0) + FAIL_EXIT1 ("FUSE mount on %s: %m", f->mountpoint); + free (mount_options); + + /* Retry with an older FUSE version. */ + while (true) + { + struct fuse_in_header *inh = support_fuse_next (f); + struct fuse_init_in *init_in = support_fuse_cast (INIT, inh); + if (init_in->major < 7 + || (init_in->major == 7 && init_in->minor < min_version)) + FAIL_UNSUPPORTED ("kernel FUSE version is %u.%u, too old", + init_in->major, init_in->minor); + if (init_in->major > 7) + { + uint32_t major = 7; + support_fuse_reply (f, &major, sizeof (major)); + continue; + } + TEST_VERIFY (init_in->flags & FUSE_DONT_MASK); + struct fuse_init_out out = + { + .major = 7, + .minor = min_version, + /* Request that the kernel does not apply umask. */ + .flags = FUSE_DONT_MASK, + }; + support_fuse_reply (f, &out, sizeof (out)); + + { + struct fuse_thread_wrapper_args args = + { + .f = f, + .callback = callback, + .closure = closure, + }; + f->handler = xpthread_create (NULL, + support_fuse_thread_wrapper, &args); + struct stat64 st; + xstat64 (f->mountpoint, &st); + f->connection = minor (st.st_dev); + /* Got a reply from the thread, safe to deallocate args. */ + } + + return f; + } +} + +const char * +support_fuse_mountpoint (struct support_fuse *f) +{ + return f->mountpoint; +} + +void +support_fuse_no_reply (struct support_fuse *f) +{ + TEST_VERIFY (f->inh != NULL); + TEST_COMPARE (f->inh->opcode, FUSE_FORGET); + f->inh = NULL; +} + +char * +support_fuse_opcode (uint32_t op) +{ + const char *result; + switch (op) + { +#define X(n) case n: result = #n; break + X(FUSE_LOOKUP); + X(FUSE_FORGET); + X(FUSE_GETATTR); + X(FUSE_SETATTR); + X(FUSE_READLINK); + X(FUSE_SYMLINK); + X(FUSE_MKNOD); + X(FUSE_MKDIR); + X(FUSE_UNLINK); + X(FUSE_RMDIR); + X(FUSE_RENAME); + X(FUSE_LINK); + X(FUSE_OPEN); + X(FUSE_READ); + X(FUSE_WRITE); + X(FUSE_STATFS); + X(FUSE_RELEASE); + X(FUSE_FSYNC); + X(FUSE_SETXATTR); + X(FUSE_GETXATTR); + X(FUSE_LISTXATTR); + X(FUSE_REMOVEXATTR); + X(FUSE_FLUSH); + X(FUSE_INIT); + X(FUSE_OPENDIR); + X(FUSE_READDIR); + X(FUSE_RELEASEDIR); + X(FUSE_FSYNCDIR); + X(FUSE_GETLK); + X(FUSE_SETLK); + X(FUSE_SETLKW); + X(FUSE_ACCESS); + X(FUSE_CREATE); + X(FUSE_INTERRUPT); + X(FUSE_BMAP); + X(FUSE_DESTROY); + X(FUSE_IOCTL); + X(FUSE_POLL); + X(FUSE_NOTIFY_REPLY); + X(FUSE_BATCH_FORGET); + X(FUSE_FALLOCATE); + X(FUSE_READDIRPLUS); + X(FUSE_RENAME2); + X(FUSE_LSEEK); + X(FUSE_COPY_FILE_RANGE); + X(FUSE_SETUPMAPPING); + X(FUSE_REMOVEMAPPING); + X(FUSE_SYNCFS); + X(FUSE_TMPFILE); + X(FUSE_STATX); +#undef X + default: + return xasprintf ("FUSE_unknown_%u", op); + } + return xstrdup (result); +} + +static struct support_fuse * +support_fuse_open (void) +{ + struct support_fuse *result = xmalloc (sizeof (*result)); + result->mountpoint = support_fuse_mkdir (support_fuse_mountpoints); + result->inh = NULL; + result->prepared_pointer = NULL; + result->prepared_size = 0; + result->readdir_buffer = NULL; + result->readdir_buffer_size = 0; + result->uid = getuid (); + result->gid = getgid (); + result->fd = open ("/dev/fuse", O_RDWR, 0); + if (result->fd < 0) + { + if (errno == ENOENT || errno == ENODEV || errno == EPERM + || errno == EACCES) + FAIL_UNSUPPORTED ("cannot open /dev/fuse: %m"); + else + FAIL_EXIT1 ("cannot open /dev/fuse: %m"); + } + result->connection = -1; + result->filter_forget = true; + result->disconnected = false; + support_fuse_allocate (result, FUSE_MIN_READ_BUFFER); + return result; +} + +static void +support_fuse_prepare_1 (struct support_fuse *f, size_t size) +{ + TEST_VERIFY (f->prepared_pointer == NULL); + f->prepared_size = size; + memset (&f->prepared, 0, size); + f->prepared_pointer = &f->prepared; +} + +struct fuse_attr_out * +support_fuse_prepare_attr (struct support_fuse *f) +{ + support_fuse_prepare_1 (f, sizeof (f->prepared.attr)); + f->prepared.attr.attr.uid = f->uid; + f->prepared.attr.attr.gid = f->gid; + f->prepared.attr.attr.ino = f->inh->nodeid; + return &f->prepared.attr; +} + +void +support_fuse_prepare_create (struct support_fuse *f, + uint64_t nodeid, + struct fuse_entry_out **out_entry, + struct fuse_open_out **out_open) +{ + support_fuse_prepare_1 (f, sizeof (f->prepared.create)); + f->prepared.create.entry.nodeid = nodeid; + f->prepared.create.entry.attr.uid = f->uid; + f->prepared.create.entry.attr.gid = f->gid; + f->prepared.create.entry.attr.ino = nodeid; + *out_entry = &f->prepared.create.entry; + *out_open = &f->prepared.create.open; +} + +struct fuse_entry_out * +support_fuse_prepare_entry (struct support_fuse *f, uint64_t nodeid) +{ + support_fuse_prepare_1 (f, sizeof (f->prepared.entry)); + f->prepared.entry.nodeid = nodeid; + f->prepared.entry.attr.uid = f->uid; + f->prepared.entry.attr.gid = f->gid; + f->prepared.entry.attr.ino = nodeid; + return &f->prepared.entry; +} + +struct support_fuse_dirstream * +support_fuse_prepare_readdir (struct support_fuse *f) +{ + support_fuse_prepare_1 (f, 0); + struct fuse_read_in *p = support_fuse_cast (READ, f->inh); + if (p->size > f->readdir_buffer_size) + { + free (f->readdir_buffer); + f->readdir_buffer = xmalloc (p->size); + f->readdir_buffer_size = p->size; + } + f->prepared_pointer = f->readdir_buffer; + return (struct support_fuse_dirstream *) f; +} + +struct fuse_in_header * +support_fuse_next (struct support_fuse *f) +{ + TEST_VERIFY (f->inh == NULL); + while (true) + { + if (f->buffer_next < f->buffer_limit) + { + f->inh = f->buffer_next; + f->buffer_next = (void *) f->buffer_next + f->inh->len; + /* Suppress FUSE_FORGET responses if requested. */ + if (f->filter_forget && f->inh->opcode == FUSE_FORGET) + { + f->inh = NULL; + continue; + } + return f->inh; + } + ssize_t ret = read (f->fd, f->buffer_start, + f->buffer_end - f->buffer_start); + if (ret == 0) + FAIL_EXIT (1, "unexpected EOF on FUSE device"); + if (ret < 0 && errno == EINVAL) + { + /* Increase buffer size. */ + size_t new_size = 2 * (size_t) (f->buffer_end - f->buffer_start); + free (f->buffer_start); + support_fuse_allocate (f, new_size); + continue; + } + if (ret < 0) + { + if (f->disconnected) + /* Unmount detected. */ + return NULL; + FAIL_EXIT1 ("read error on FUSE device: %m"); + } + /* Read was successful, make [next, limit) the active buffer area. */ + f->buffer_next = f->buffer_start; + f->buffer_limit = (void *) f->buffer_start + ret; + } +} + +void +support_fuse_reply (struct support_fuse *f, + const void *payload, size_t payload_size) +{ + TEST_VERIFY_EXIT (f->inh != NULL); + TEST_VERIFY (f->prepared_pointer == NULL); + struct fuse_out_header outh = + { + .len = sizeof (outh) + payload_size, + .unique = f->inh->unique, + }; + struct iovec iov[] = + { + { &outh, sizeof (outh) }, + { (void *) payload, payload_size }, + }; + ssize_t ret = writev (f->fd, iov, array_length (iov)); + if (ret < 0) + { + if (!f->disconnected) + /* Some kernels produce write errors upon disconnect. */ + FAIL_EXIT1 ("FUSE write failed for %s response" + " (%zu bytes payload): %m", + support_fuse_opcode (f->inh->opcode), payload_size); + } + else if (ret != sizeof (outh) + payload_size) + FAIL_EXIT1 ("FUSE write short for %s response (%zu bytes payload):" + " %zd bytes", + support_fuse_opcode (f->inh->opcode), payload_size, ret); + f->inh = NULL; +} + +void +support_fuse_reply_empty (struct support_fuse *f) +{ + support_fuse_reply_error_1 (f, 0); +} + +static void +support_fuse_reply_error_1 (struct support_fuse *f, uint32_t error) +{ + TEST_VERIFY_EXIT (f->inh != NULL); + struct fuse_out_header outh = + { + .len = sizeof (outh), + .error = -error, + .unique = f->inh->unique, + }; + ssize_t ret = write (f->fd, &outh, sizeof (outh)); + if (ret < 0) + { + /* Some kernels produce write errors upon disconnect. */ + if (!f->disconnected) + FAIL_EXIT1 ("FUSE write failed for %s error response: %m", + support_fuse_opcode (f->inh->opcode)); + } + else if (ret != sizeof (outh)) + FAIL_EXIT1 ("FUSE write short for %s error response: %zd bytes", + support_fuse_opcode (f->inh->opcode), ret); + f->inh = NULL; + f->prepared_pointer = NULL; + f->prepared_size = 0; +} + +void +support_fuse_reply_error (struct support_fuse *f, uint32_t error) +{ + TEST_VERIFY (error > 0); + support_fuse_reply_error_1 (f, error); +} + +void +support_fuse_reply_prepared (struct support_fuse *f) +{ + TEST_VERIFY_EXIT (f->prepared_pointer != NULL); + /* Re-use the non-prepared reply function. It requires + f->prepared_* to be non-null, so reset the fields before the call. */ + void *prepared_pointer = f->prepared_pointer; + size_t prepared_size = f->prepared_size; + f->prepared_pointer = NULL; + f->prepared_size = 0; + support_fuse_reply (f, prepared_pointer, prepared_size); +} + +static void * +support_fuse_thread_wrapper (void *closure) +{ + struct fuse_thread_wrapper_args args + = *(struct fuse_thread_wrapper_args *) closure; + + /* Handle the initial stat call. */ + struct fuse_in_header *inh = support_fuse_next (args.f); + if (inh == NULL || !support_fuse_handle_mountpoint (args.f)) + { + support_fuse_reply_error (args.f, EIO); + return NULL; + } + + args.callback (args.f, args.closure); + return NULL; +} + +void +support_fuse_unmount (struct support_fuse *f) +{ + /* Signal the unmount to the handler thread. Some kernels report + not just ENODEV errors on read. */ + f->disconnected = true; + + { + char *path = xasprintf ("/sys/fs/fuse/connections/%d/abort", + f->connection); + /* Some kernels do not support these files under /sys. */ + int fd = open (path, O_RDWR | O_TRUNC); + if (fd >= 0) + { + TEST_COMPARE (write (fd, "1", 1), 1); + xclose (fd); + } + free (path); + } + if (umount (f->mountpoint) != 0) + FAIL ("FUSE: umount (\"%s\"): %m", f->mountpoint); + xpthread_join (f->handler); + if (rmdir (f->mountpoint) != 0) + FAIL ("FUSE: rmdir (\"%s\"): %m", f->mountpoint); + xclose (f->fd); + free (f->mountpoint); + free (f->readdir_buffer); + free (f); +} + +static void __attribute__ ((constructor)) +init (void) +{ + /* The test_dir test driver variable is not yet set at this point. */ + const char *tmpdir = getenv ("TMPDIR"); + if (tmpdir == NULL || tmpdir[0] == '\0') + tmpdir = "/tmp"; + + char *prefix = xasprintf ("%s/glibc-tst-fuse.", tmpdir); + support_fuse_mountpoints = support_fuse_mkdir (prefix); + free (prefix); + support_fuse_cleanup_pid = getpid (); +} + +static void __attribute__ ((destructor)) +fini (void) +{ + if (support_fuse_cleanup_pid != getpid () + || support_fuse_mountpoints == NULL) + return; + DIR *dir = xopendir (support_fuse_mountpoints); + while (true) + { + struct dirent64 *e = readdir64 (dir); + if (e == NULL) + /* Ignore errors. */ + break; + if (*e->d_name == '.') + /* Skip "." and "..". No hidden files expected. */ + continue; + if (unlinkat (dirfd (dir), e->d_name, AT_REMOVEDIR) != 0) + break; + rewinddir (dir); + } + xclosedir (dir); + rmdir (support_fuse_mountpoints); + free (support_fuse_mountpoints); + support_fuse_mountpoints = NULL; +} diff --git a/support/xlstat-time64.c b/support/support_open_and_compare_file_bytes.c index 2bc3ca6593..f804ed8e46 100644 --- a/support/xlstat-time64.c +++ b/support/support_open_and_compare_file_bytes.c @@ -1,5 +1,5 @@ -/* 64-bit time_t stat with error checking. - Copyright (C) 2021-2024 Free Software Foundation, Inc. +/* Compare bytes from a file. + Copyright (C) 2024 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 @@ -16,17 +16,18 @@ License along with the GNU C Library; if not, see <https://www.gnu.org/licenses/>. */ -/* NB: Non-standard file name to avoid sysdeps override for xstat. */ +#include <support/file_contents.h> +#include <support/xstdio.h> -#include <support/check.h> -#include <support/xunistd.h> -#include <sys/stat.h> +/* Check that a not-currently-open file has exactly the given + bytes. */ -#if __TIMESIZE != 64 -void -xlstat_time64 (const char *path, struct __stat64_t64 *result) +int +support_open_and_compare_file_bytes (const char *file, const char *contents, + size_t length) { - if (__lstat64_time64 (path, result) != 0) - FAIL_EXIT1 ("__lstat64_time64 (\"%s\"): %m", path); + FILE *fp = xfopen (file, "r"); + int ret = support_compare_file_bytes (fp, contents, length); + xfclose (fp); + return ret; } -#endif diff --git a/support/support_open_and_compare_file_string.c b/support/support_open_and_compare_file_string.c new file mode 100644 index 0000000000..2b596d4c88 --- /dev/null +++ b/support/support_open_and_compare_file_string.c @@ -0,0 +1,32 @@ +/* Compare string from a file. + Copyright (C) 2024 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 + <https://www.gnu.org/licenses/>. */ + +#include <string.h> + +#include <support/file_contents.h> +#include <support/xstdio.h> + +/* Check that a not-currently-open file has exactly the given string + as contents, starting at the current offset. */ + +int +support_open_and_compare_file_string (const char *file, const char *contents) +{ + return support_open_and_compare_file_bytes (file, contents, + strlen (contents)); +} diff --git a/support/support_readdir_check.c b/support/support_readdir_check.c new file mode 100644 index 0000000000..5687004276 --- /dev/null +++ b/support/support_readdir_check.c @@ -0,0 +1,30 @@ +/* Error-checking helper for xreaddir, xreaddir64. + Copyright (C) 2024 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 + <https://www.gnu.org/licenses/>. */ + +#include <support/xdirent.h> + +#include <support/check.h> + +void * +support_readdir_check (const char *name, void *result, int saved_errno) +{ + if (result == NULL && errno != 0) + FAIL_EXIT1 ("%s: %m", name); + errno = saved_errno; + return result; +} diff --git a/support/support-xstat-time64.c b/support/support_readdir_r_check.c index 451948734a..6bbb0d0b32 100644 --- a/support/support-xstat-time64.c +++ b/support/support_readdir_r_check.c @@ -1,5 +1,5 @@ -/* 64-bit time_t stat with error checking. - Copyright (C) 2021-2024 Free Software Foundation, Inc. +/* Error-checking helper for xreaddir_r, xreaddir64_r. + Copyright (C) 2024 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 @@ -16,17 +16,20 @@ License along with the GNU C Library; if not, see <https://www.gnu.org/licenses/>. */ -/* NB: Non-standard file name to avoid sysdeps override for xstat. */ +#include <support/xdirent.h> #include <support/check.h> -#include <support/xunistd.h> -#include <sys/stat.h> -#if __TIMESIZE != 64 -void -xstat_time64 (const char *path, struct __stat64_t64 *result) +int +support_readdir_r_check (const char *name, int result, void *buf, void *ptr) { - if (__stat64_time64 (path, result) != 0) - FAIL_EXIT1 ("__stat64_time64 (\"%s\"): %m", path); + if (result != 0) + { + errno = result; + FAIL_EXIT1 ("%s: %m", name); + } + if (buf != ptr) + FAIL_EXIT1 ("%s: buffer pointer and returned pointer differ: %p != %p", + name, buf, ptr); + return result; } -#endif diff --git a/support/support_test_compare_failure.c b/support/support_test_compare_failure.c index ae73d200cd..dba79e413f 100644 --- a/support/support_test_compare_failure.c +++ b/support/support_test_compare_failure.c @@ -17,7 +17,9 @@ <https://www.gnu.org/licenses/>. */ #include <errno.h> +#include <limits.h> #include <stdio.h> +#include <string.h> #include <support/check.h> static void @@ -31,7 +33,14 @@ report (const char *which, const char *expr, long long value, int positive, printf ("%lld", value); unsigned long long mask = (~0ULL) >> (8 * (sizeof (unsigned long long) - size)); - printf (" (0x%llx); from: %s\n", (unsigned long long) value & mask, expr); + const char *errno_constant = NULL; + if (strcmp (expr, "errno") == 0 + && positive && (unsigned long long int) value <= INT_MAX) + errno_constant = strerrorname_np (value); + printf (" (0x%llx", (unsigned long long) value & mask); + if (errno_constant != NULL) + printf (", %s", errno_constant); + printf ("); from: %s\n", expr); } void diff --git a/support/test-driver.c b/support/test-driver.c index f4c3e4d666..04ceebc08f 100644 --- a/support/test-driver.c +++ b/support/test-driver.c @@ -155,6 +155,7 @@ main (int argc, char **argv) { CMDLINE_OPTIONS TEST_DEFAULT_OPTIONS + { 0, } }; test_config.options = &options; #endif diff --git a/support/timespec-add.c b/support/timespec-add.c index 55fd812f31..57b968c316 100644 --- a/support/timespec-add.c +++ b/support/timespec-add.c @@ -20,7 +20,6 @@ /* Return the sum of two timespec values A and B. On overflow, return an extremal value. This assumes 0 <= tv_nsec < TIMESPEC_HZ. */ -#include <config.h> #include "timespec.h" #include "intprops.h" diff --git a/support/timespec-sub.c b/support/timespec-sub.c index 7d89c1415a..2897343fce 100644 --- a/support/timespec-sub.c +++ b/support/timespec-sub.c @@ -21,7 +21,6 @@ overflow, return an extremal value. This assumes 0 <= tv_nsec < TIMESPEC_HZ. */ -#include <config.h> #include "timespec.h" #include "intprops.h" diff --git a/support/tst-support_fuse.c b/support/tst-support_fuse.c new file mode 100644 index 0000000000..c4075a6608 --- /dev/null +++ b/support/tst-support_fuse.c @@ -0,0 +1,348 @@ +/* Facilities for FUSE-backed file system tests. + Copyright (C) 2024 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 + <https://www.gnu.org/licenses/>. */ + +#include <support/fuse.h> + +#include <dirent.h> +#include <errno.h> +#include <fcntl.h> +#include <stdio.h> +#include <string.h> +#include <support/check.h> +#include <support/support.h> +#include <support/xdirent.h> +#include <support/xunistd.h> + +static void +fuse_thread (struct support_fuse *f, void *closure) +{ + /* Turn on returning FUSE_FORGET responses. */ + support_fuse_filter_forget (f, false); + + /* Inode and nodeid for "file" and "new". */ + enum { NODE_FILE = 2, NODE_NEW, NODE_SUBDIR, NODE_SYMLINK }; + struct fuse_in_header *inh; + while ((inh = support_fuse_next (f)) != NULL) + { + { + char *opcode = support_fuse_opcode (inh->opcode); + printf ("info: (T) event %s(%llu) len=%u nodeid=%llu\n", + opcode, (unsigned long long int) inh->unique, inh->len, + (unsigned long long int) inh->nodeid); + free (opcode); + } + + /* Handle mountpoint and basic directory operation for the root (1). */ + if (support_fuse_handle_mountpoint (f) + || (inh->nodeid == 1 && support_fuse_handle_directory (f))) + continue; + + switch (inh->opcode) + { + case FUSE_READDIR: + /* Implementation of getdents64. */ + if (inh->nodeid == 1) + { + struct support_fuse_dirstream *d + = support_fuse_prepare_readdir (f); + TEST_COMPARE (support_fuse_cast (READ, inh)->offset, 0); + TEST_VERIFY (support_fuse_dirstream_add (d, 1, 1, DT_DIR, ".")); + TEST_VERIFY (support_fuse_dirstream_add (d, 1, 2, DT_DIR, "..")); + TEST_VERIFY (support_fuse_dirstream_add (d, NODE_FILE, 3, DT_REG, + "file")); + support_fuse_reply_prepared (f); + } + else + support_fuse_reply_error (f, EIO); + break; + case FUSE_LOOKUP: + /* Part of the implementation of open. */ + { + char *name = support_fuse_cast (LOOKUP, inh); + printf (" name: %s\n", name); + if (inh->nodeid == 1 && strcmp (name, "file") == 0) + { + struct fuse_entry_out *out + = support_fuse_prepare_entry (f, NODE_FILE); + out->attr.mode = S_IFREG | 0600; + support_fuse_reply_prepared (f); + } + else if (inh->nodeid == 1 && strcmp (name, "symlink") == 0) + { + struct fuse_entry_out *out + = support_fuse_prepare_entry (f, NODE_SYMLINK); + out->attr.mode = S_IFLNK | 0777; + support_fuse_reply_prepared (f); + } + else + support_fuse_reply_error (f, ENOENT); + } + break; + case FUSE_OPEN: + /* Implementation of open. */ + { + struct fuse_open_in *p = support_fuse_cast (OPEN, inh); + if (inh->nodeid == NODE_FILE) + { + TEST_VERIFY (!(p->flags & O_EXCL)); + struct fuse_open_out out = { 0, }; + support_fuse_reply (f, &out, sizeof (out)); + } + else + support_fuse_reply_error (f, ENOENT); + } + break; + case FUSE_GETATTR: + /* Happens after open. */ + if (inh->nodeid == NODE_FILE) + { + struct fuse_attr_out *out = support_fuse_prepare_attr (f); + out->attr.mode = S_IFREG | 0600; + out->attr.size = strlen ("Hello, world!"); + support_fuse_reply_prepared (f); + } + else + support_fuse_reply_error (f, ENOENT); + break; + case FUSE_READ: + /* Implementation of read. */ + if (inh->nodeid == NODE_FILE) + { + struct fuse_read_in *p = support_fuse_cast (READ, inh); + TEST_COMPARE (p->offset, 0); + TEST_VERIFY (p->size >= strlen ("Hello, world!")); + support_fuse_reply (f, + "Hello, world!", strlen ("Hello, world!")); + } + else + support_fuse_reply_error (f, EIO); + break; + case FUSE_FLUSH: + /* Sent in response to close. */ + support_fuse_reply_empty (f); + break; + case FUSE_GETXATTR: + /* This happens as part of a open-for-write operation. + Signal no support for extended attributes. */ + support_fuse_reply_error (f, ENOSYS); + break; + case FUSE_SETATTR: + /* This happens as part of a open-for-write operation to + implement O_TRUNC. */ + if (inh->nodeid == NODE_FILE) + { + struct fuse_setattr_in *p = support_fuse_cast (SETATTR, inh); + /* FATTR_LOCKOWNER may also be set. */ + TEST_COMPARE ((p->valid) & ~ FATTR_LOCKOWNER, FATTR_SIZE); + TEST_COMPARE (p->size, 0); + struct fuse_attr_out *out = support_fuse_prepare_attr (f); + out->attr.mode = S_IFREG | 0600; + support_fuse_reply_prepared (f); + } + else + support_fuse_reply_error (f, EIO); + break; + case FUSE_WRITE: + /* Implementation of write. */ + if (inh->nodeid == NODE_FILE) + { + struct fuse_write_in *p = support_fuse_cast (WRITE, inh); + TEST_COMPARE (p->offset, 0); + /* Write payload follows after struct fuse_write_in. */ + TEST_COMPARE_BLOB (p + 1, p->size, + "Good day to you too.", + strlen ("Good day to you too.")); + struct fuse_write_out out = + { + .size = p->size, + }; + support_fuse_reply (f, &out, sizeof (out)); + } + else + support_fuse_reply_error (f, EIO); + break; + case FUSE_CREATE: + /* Implementation of O_CREAT. */ + if (inh->nodeid == 1) + { + char *name; + struct fuse_create_in *p + = support_fuse_cast_name (CREATE, inh, &name); + TEST_VERIFY (S_ISREG (p->mode)); + TEST_COMPARE (p->mode & 07777, 0600); + TEST_COMPARE_STRING (name, "new"); + struct fuse_entry_out *out_entry; + struct fuse_open_out *out_open; + support_fuse_prepare_create (f, NODE_NEW, &out_entry, &out_open); + out_entry->attr.mode = S_IFREG | 0600; + support_fuse_reply_prepared (f); + } + else + support_fuse_reply_error (f, EIO); + break; + case FUSE_MKDIR: + /* Implementation of mkdir. */ + { + if (inh->nodeid == 1) + { + char *name; + struct fuse_mkdir_in *p + = support_fuse_cast_name (MKDIR, inh, &name); + TEST_COMPARE (p->mode, 01234); + TEST_COMPARE_STRING (name, "subdir"); + struct fuse_entry_out *out + = support_fuse_prepare_entry (f, NODE_SUBDIR); + out->attr.mode = S_IFDIR | p->mode; + support_fuse_reply_prepared (f); + } + else + support_fuse_reply_error (f, EIO); + } + break; + case FUSE_READLINK: + /* Implementation of readlink. */ + TEST_COMPARE (inh->nodeid, NODE_SYMLINK); + if (inh->nodeid == NODE_SYMLINK) + support_fuse_reply (f, "target-of-symbolic-link", + strlen ("target-of-symbolic-link")); + else + support_fuse_reply_error (f, EINVAL); + break; + case FUSE_FORGET: + support_fuse_no_reply (f); + break; + default: + support_fuse_reply_error (f, EIO); + } + } +} + +static int +do_test (void) +{ + support_fuse_init (); + + struct support_fuse *f = support_fuse_mount (fuse_thread, NULL); + + printf ("info: Attributes of mountpoint/root directory %s\n", + support_fuse_mountpoint (f)); + { + struct statx st; + xstatx (AT_FDCWD, support_fuse_mountpoint (f), 0, STATX_BASIC_STATS, &st); + TEST_COMPARE (st.stx_uid, getuid ()); + TEST_COMPARE (st.stx_gid, getgid ()); + TEST_VERIFY (S_ISDIR (st.stx_mode)); + TEST_COMPARE (st.stx_mode & 07777, 0700); + } + + printf ("info: List directory %s\n", support_fuse_mountpoint (f)); + { + DIR *dir = xopendir (support_fuse_mountpoint (f)); + + struct dirent *e = xreaddir (dir); + TEST_COMPARE (e->d_ino, 1); +#ifdef _DIRENT_HAVE_D_OFF + TEST_COMPARE (e->d_off, 1); +#endif + TEST_COMPARE (e->d_type, DT_DIR); + TEST_COMPARE_STRING (e->d_name, "."); + + e = xreaddir (dir); + TEST_COMPARE (e->d_ino, 1); +#ifdef _DIRENT_HAVE_D_OFF + TEST_COMPARE (e->d_off, 2); +#endif + TEST_COMPARE (e->d_type, DT_DIR); + TEST_COMPARE_STRING (e->d_name, ".."); + + e = xreaddir (dir); + TEST_COMPARE (e->d_ino, 2); +#ifdef _DIRENT_HAVE_D_OFF + TEST_COMPARE (e->d_off, 3); +#endif + TEST_COMPARE (e->d_type, DT_REG); + TEST_COMPARE_STRING (e->d_name, "file"); + + TEST_COMPARE (closedir (dir), 0); + } + + char *file_path = xasprintf ("%s/file", support_fuse_mountpoint (f)); + + printf ("info: Attributes of file %s\n", file_path); + { + struct statx st; + xstatx (AT_FDCWD, file_path, 0, STATX_BASIC_STATS, &st); + TEST_COMPARE (st.stx_uid, getuid ()); + TEST_COMPARE (st.stx_gid, getgid ()); + TEST_VERIFY (S_ISREG (st.stx_mode)); + TEST_COMPARE (st.stx_mode & 07777, 0600); + TEST_COMPARE (st.stx_size, strlen ("Hello, world!")); + } + + printf ("info: Read from %s\n", file_path); + { + int fd = xopen (file_path, O_RDONLY, 0); + char buf[64]; + ssize_t len = read (fd, buf, sizeof (buf)); + if (len < 0) + FAIL_EXIT1 ("read: %m"); + TEST_COMPARE_BLOB (buf, len, "Hello, world!", strlen ("Hello, world!")); + xclose (fd); + } + + printf ("info: Write to %s\n", file_path); + { + int fd = xopen (file_path, O_WRONLY | O_TRUNC, 0); + xwrite (fd, "Good day to you too.", strlen ("Good day to you too.")); + xclose (fd); + } + + printf ("info: Attempt O_EXCL creation of existing %s\n", file_path); + /* O_EXCL creation shall fail. */ + errno = 0; + TEST_COMPARE (open64 (file_path, O_RDWR | O_EXCL | O_CREAT, 0600), -1); + TEST_COMPARE (errno, EEXIST); + + free (file_path); + + { + char *new_path = xasprintf ("%s/new", support_fuse_mountpoint (f)); + printf ("info: Test successful O_EXCL creation at %s\n", new_path); + int fd = xopen (new_path, O_RDWR | O_EXCL | O_CREAT, 0600); + xclose (fd); + free (new_path); + } + + { + char *subdir_path = xasprintf ("%s/subdir", support_fuse_mountpoint (f)); + xmkdir (subdir_path, 01234); + } + + { + char *symlink_path = xasprintf ("%s/symlink", support_fuse_mountpoint (f)); + char *target = xreadlink (symlink_path); + TEST_COMPARE_STRING (target, "target-of-symbolic-link"); + free (target); + free (symlink_path); + } + + support_fuse_unmount (f); + return 0; +} + +#include <support/test-driver.c> diff --git a/support/tst-xdirent.c b/support/tst-xdirent.c new file mode 100644 index 0000000000..642483165a --- /dev/null +++ b/support/tst-xdirent.c @@ -0,0 +1,76 @@ +/* Compile test for error-checking wrappers for <dirent.h> + Copyright (C) 2024 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 + <https://www.gnu.org/licenses/>. */ + +#include <support/xdirent.h> + +#include <libc-diag.h> +#include <support/check.h> +#include <unistd.h> + +static int +do_test (void) +{ + { + DIR *d = xopendir ("."); + struct dirent *e = xreaddir (d); + /* Assume that the "." special entry always comes first. */ + TEST_COMPARE_STRING (e->d_name, "."); + while (xreaddir (d) != NULL) + ; + xclosedir (d); + } + + { + DIR *d = xopendir ("."); + struct dirent64 *e = xreaddir64 (d); + TEST_COMPARE_STRING (e->d_name, "."); + while (xreaddir64 (d) != NULL) + ; + xclosedir (d); + } + + /* The functions readdir_r, readdir64_r were deprecated in glibc 2.24. */ + DIAG_PUSH_NEEDS_COMMENT; + DIAG_IGNORE_NEEDS_COMMENT (4.9, "-Wdeprecated-declarations"); + + { + DIR *d = xopendir ("."); + struct dirent buf = { 0, }; + TEST_VERIFY (xreaddir_r (d, &buf)); + TEST_COMPARE_STRING (buf.d_name, "."); + while (xreaddir_r (d, &buf)) + ; + xclosedir (d); + } + + { + DIR *d = xopendir ("."); + struct dirent64 buf = { 0, }; + TEST_VERIFY (xreaddir64_r (d, &buf)); + TEST_COMPARE_STRING (buf.d_name, "."); + while (xreaddir64_r (d, &buf)) + ; + xclosedir (d); + } + + DIAG_POP_NEEDS_COMMENT; + + return 0; +} + +#include <support/test-driver.c> diff --git a/support/support-xfstat-time64.c b/support/xclosedir.c index 589a69bb3e..b490df5598 100644 --- a/support/support-xfstat-time64.c +++ b/support/xclosedir.c @@ -1,5 +1,5 @@ -/* 64-bit time_t stat with error checking. - Copyright (C) 2021-2024 Free Software Foundation, Inc. +/* Error-checking wrapper for closedir. + Copyright (C) 2024 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 @@ -16,17 +16,13 @@ License along with the GNU C Library; if not, see <https://www.gnu.org/licenses/>. */ -/* NB: Non-standard file name to avoid sysdeps override for xstat. */ +#include <support/xdirent.h> #include <support/check.h> -#include <support/xunistd.h> -#include <sys/stat.h> -#if __TIMESIZE != 64 void -xfstat_time64 (int fd, struct __stat64_t64 *result) +xclosedir (DIR *dir) { - if (__fstat64_time64 (fd, result) != 0) - FAIL_EXIT1 ("__fstat64_time64 (%d): %m", fd); + if (closedir (dir) != 0) + FAIL_EXIT1 ("closedir: %m"); } -#endif diff --git a/support/xdirent.h b/support/xdirent.h new file mode 100644 index 0000000000..8465d70ec1 --- /dev/null +++ b/support/xdirent.h @@ -0,0 +1,86 @@ +/* Error-checking wrappers for <dirent.h> + Copyright (C) 2024 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 + <https://www.gnu.org/licenses/>. */ + +#ifndef SUPPORT_XDIRENT_H +#define SUPPORT_XDIRENT_H + +#include <dirent.h> +#include <errno.h> +#include <libc-diag.h> +#include <stdbool.h> +#include <stddef.h> + +__BEGIN_DECLS + +DIR *xopendir (const char *path); +DIR *xfdopendir (int fd); +void xclosedir (DIR *); + +void *support_readdir_check (const char *, void *, int); + +static __attribute__ ((unused)) struct dirent * +xreaddir (DIR *stream) +{ + int saved_errno = errno; + errno = 0; + struct dirent *result = readdir (stream); + return support_readdir_check ("readdir", result, saved_errno); +} + +static __attribute__ ((unused)) struct dirent64 * +xreaddir64 (DIR *stream) +{ + int saved_errno = errno; + errno = 0; + struct dirent64 *result = readdir64 (stream); + return support_readdir_check ("readdir64", result, saved_errno); +} + +/* The functions readdir_r, readdir64_r were deprecated in glibc 2.24. */ +DIAG_PUSH_NEEDS_COMMENT; +DIAG_IGNORE_NEEDS_COMMENT (4.9, "-Wdeprecated-declarations"); + +int support_readdir_r_check (const char *, int, void *, void *); + +static __attribute__ ((unused)) bool +xreaddir_r (DIR *stream, struct dirent *buf) +{ + struct dirent *ptr; + int ret = readdir_r (stream, buf, &ptr); + if (ret == 0 && ptr == NULL) + return false; + support_readdir_r_check ("readdir_r", ret, buf, ptr); + return true; +} + +static __attribute__ ((unused)) bool +xreaddir64_r (DIR *stream, struct dirent64 *buf) +{ + struct dirent64 *ptr; + int ret = readdir64_r (stream, buf, &ptr); + if (ret == 0 && ptr == NULL) + return false; + support_readdir_r_check ("readdir64_r", ret, buf, ptr); + return true; +} + +DIAG_POP_NEEDS_COMMENT; + +__END_DECLS + +#endif /* SUPPORT_XDIRENT_H */ diff --git a/support/xfdopendir.c b/support/xfdopendir.c new file mode 100644 index 0000000000..d881d28c73 --- /dev/null +++ b/support/xfdopendir.c @@ -0,0 +1,30 @@ +/* Error-checking wrapper for fdopendir. + Copyright (C) 2024 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 + <https://www.gnu.org/licenses/>. */ + +#include <support/xdirent.h> + +#include <support/check.h> + +DIR * +xfdopendir (int fd) +{ + DIR *result = fdopendir (fd); + if (result == NULL) + FAIL_EXIT1 ("fdopendir (%d): %m", fd); + return result; +} diff --git a/support/xopendir.c b/support/xopendir.c new file mode 100644 index 0000000000..e4aee07fee --- /dev/null +++ b/support/xopendir.c @@ -0,0 +1,30 @@ +/* Error-checking wrapper for opendir. + Copyright (C) 2024 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 + <https://www.gnu.org/licenses/>. */ + +#include <support/xdirent.h> + +#include <support/check.h> + +DIR * +xopendir (const char *path) +{ + DIR *result = opendir (path); + if (result == NULL) + FAIL_EXIT1 ("opendir (\"%s\"): %m", path); + return result; +} diff --git a/support/support-xstat.c b/support/xstatx.c index ce866f74d2..621f2440f8 100644 --- a/support/support-xstat.c +++ b/support/xstatx.c @@ -1,5 +1,5 @@ -/* stat64 with error checking. - Copyright (C) 2017-2024 Free Software Foundation, Inc. +/* Error-checking wrapper for statx. + Copyright (C) 2024 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 @@ -16,15 +16,17 @@ License along with the GNU C Library; if not, see <https://www.gnu.org/licenses/>. */ -/* NB: Non-standard file name to avoid sysdeps override for xstat. */ +#include <support/xunistd.h> +#include <fcntl.h> #include <support/check.h> -#include <support/xunistd.h> #include <sys/stat.h> void -xstat (const char *path, struct stat64 *result) +xstatx (int fd, const char *path, int flags, unsigned int mask, + struct statx *stx) { - if (stat64 (path, result) != 0) - FAIL_EXIT1 ("stat64 (\"%s\"): %m", path); + if (statx (fd, path, flags, mask, stx) != 0) + FAIL_EXIT1 ("statx (AT_FDCWD, \"%s\", 0x%x, 0x%x): %m", + path, (unsigned int) flags, mask); } diff --git a/support/xunistd.h b/support/xunistd.h index 13be9a46a3..204951bce7 100644 --- a/support/xunistd.h +++ b/support/xunistd.h @@ -29,28 +29,28 @@ __BEGIN_DECLS -struct stat64; +struct statx; pid_t xfork (void); pid_t xwaitpid (pid_t, int *status, int flags); void xpipe (int[2]); void xdup2 (int, int); int xopen (const char *path, int flags, mode_t); -#ifndef __USE_TIME64_REDIRECTS -# ifdef __USE_FILE_OFFSET64 -void xstat (const char *path, struct stat *); -void xlstat (const char *path, struct stat *); -void xfstat (int fd, struct stat *); -# else -void xstat (const char *path, struct stat64 *); -void xlstat (const char *path, struct stat64 *); -void xfstat (int fd, struct stat64 *); -# endif -#else -void __REDIRECT (xstat, (const char *path, struct stat *), xstat_time64); -void __REDIRECT (xlstat, (const char *path, struct stat *), xlstat_time64); -void __REDIRECT (xfstat, (int fd, struct stat *), xfstat_time64); -#endif +void support_check_stat_fd (const char *name, int fd, int result); +void support_check_stat_path (const char *name, const char *path, int result); +#define xstat(path, st) \ + (support_check_stat_path ("stat", (path), stat ((path), (st)))) +#define xfstat(fd, st) \ + (support_check_stat_fd ("fstat", (fd), fstat ((fd), (st)))) +#define xlstat(path, st) \ + (support_check_stat_path ("lstat", (path), lstat ((path), (st)))) +#define xstat64(path, st) \ + (support_check_stat_path ("stat64", (path), stat64 ((path), (st)))) +#define xfstat64(fd, st) \ + (support_check_stat_fd ("fstat64", (fd), fstat64 ((fd), (st)))) +#define xlstat64(path, st) \ + (support_check_stat_path ("lstat64", (path), lstat64 ((path), (st)))) +void xstatx (int, const char *, int, unsigned int, struct statx *); void xmkdir (const char *path, mode_t); void xchroot (const char *path); void xunlink (const char *path); diff --git a/sysdeps/aarch64/libm-test-ulps b/sysdeps/aarch64/libm-test-ulps index 6c96304611..846fb2c29e 100644 --- a/sysdeps/aarch64/libm-test-ulps +++ b/sysdeps/aarch64/libm-test-ulps @@ -1082,24 +1082,24 @@ float: 1 ldouble: 3 Function: "exp10m1": -double: 2 -float: 1 -ldouble: 1 +double: 4 +float: 2 +ldouble: 3 Function: "exp10m1_downward": -double: 1 -float: 1 -ldouble: 3 +double: 3 +float: 3 +ldouble: 6 Function: "exp10m1_towardzero": -double: 1 -float: 1 -ldouble: 3 +double: 2 +float: 3 +ldouble: 6 Function: "exp10m1_upward": -double: 3 -float: 1 -ldouble: 3 +double: 5 +float: 3 +ldouble: 6 Function: "exp2": double: 1 @@ -1130,24 +1130,24 @@ float: 1 ldouble: 2 Function: "exp2m1": -double: 1 -float: 1 -ldouble: 1 +double: 2 +float: 2 +ldouble: 2 Function: "exp2m1_downward": -double: 1 -float: 1 -ldouble: 2 +double: 3 +float: 3 +ldouble: 3 Function: "exp2m1_towardzero": -double: 2 -float: 1 -ldouble: 2 +double: 3 +float: 2 +ldouble: 4 Function: "exp2m1_upward": -double: 1 -float: 1 -ldouble: 2 +double: 3 +float: 3 +ldouble: 5 Function: "exp_advsimd": double: 1 @@ -1356,24 +1356,24 @@ float: 2 ldouble: 1 Function: "log10p1": -double: 1 -float: 1 +double: 2 +float: 2 ldouble: 3 Function: "log10p1_downward": double: 2 -float: 1 -ldouble: 2 +float: 3 +ldouble: 4 Function: "log10p1_towardzero": -double: 2 +double: 3 float: 2 -ldouble: 2 +ldouble: 3 Function: "log10p1_upward": double: 2 -float: 1 -ldouble: 3 +float: 3 +ldouble: 4 Function: "log1p": double: 1 @@ -1432,8 +1432,8 @@ float: 3 ldouble: 1 Function: "log2p1": -double: 1 -float: 1 +double: 2 +float: 2 ldouble: 3 Function: "log2p1_downward": @@ -1447,9 +1447,9 @@ float: 2 ldouble: 2 Function: "log2p1_upward": -double: 1 +double: 2 float: 2 -ldouble: 2 +ldouble: 3 Function: "log_advsimd": double: 1 diff --git a/sysdeps/aarch64/strlen.S b/sysdeps/aarch64/strlen.S index ab2a576cdb..352fb40d3a 100644 --- a/sysdeps/aarch64/strlen.S +++ b/sysdeps/aarch64/strlen.S @@ -1,4 +1,5 @@ -/* Copyright (C) 2012-2024 Free Software Foundation, Inc. +/* Generic optimized strlen using SIMD. + Copyright (C) 2012-2024 Free Software Foundation, Inc. This file is part of the GNU C Library. @@ -56,36 +57,50 @@ ENTRY (STRLEN) shrn vend.8b, vhas_nul.8h, 4 /* 128->64 */ fmov synd, dend lsr synd, synd, shift - cbz synd, L(loop) + cbz synd, L(next16) rbit synd, synd clz result, synd lsr result, result, 2 ret +L(next16): + ldr data, [src, 16] + cmeq vhas_nul.16b, vdata.16b, 0 + shrn vend.8b, vhas_nul.8h, 4 /* 128->64 */ + fmov synd, dend + cbz synd, L(loop) + add src, src, 16 +#ifndef __AARCH64EB__ + rbit synd, synd +#endif + sub result, src, srcin + clz tmp, synd + add result, result, tmp, lsr 2 + ret + .p2align 5 L(loop): - ldr data, [src, 16] + ldr data, [src, 32]! cmeq vhas_nul.16b, vdata.16b, 0 - umaxp vend.16b, vhas_nul.16b, vhas_nul.16b + addhn vend.8b, vhas_nul.8h, vhas_nul.8h fmov synd, dend cbnz synd, L(loop_end) - ldr data, [src, 32]! + ldr data, [src, 16] cmeq vhas_nul.16b, vdata.16b, 0 - umaxp vend.16b, vhas_nul.16b, vhas_nul.16b + addhn vend.8b, vhas_nul.8h, vhas_nul.8h fmov synd, dend cbz synd, L(loop) - sub src, src, 16 + add src, src, 16 L(loop_end): - shrn vend.8b, vhas_nul.8h, 4 /* 128->64 */ - sub result, src, srcin - fmov synd, dend + sub result, shift, src, lsl 2 /* (srcin - src) << 2. */ #ifndef __AARCH64EB__ rbit synd, synd + sub result, result, 3 #endif - add result, result, 16 clz tmp, synd - add result, result, tmp, lsr 2 + sub result, tmp, result + lsr result, result, 2 ret END (STRLEN) diff --git a/sysdeps/alpha/fpu/libm-test-ulps b/sysdeps/alpha/fpu/libm-test-ulps index 392d23f80a..e28c2af683 100644 --- a/sysdeps/alpha/fpu/libm-test-ulps +++ b/sysdeps/alpha/fpu/libm-test-ulps @@ -976,6 +976,18 @@ double: 2 float: 1 ldouble: 3 +Function: "exp10m1": +ldouble: 1 + +Function: "exp10m1_downward": +ldouble: 3 + +Function: "exp10m1_towardzero": +ldouble: 3 + +Function: "exp10m1_upward": +ldouble: 3 + Function: "exp2": double: 1 float: 1 @@ -996,6 +1008,18 @@ double: 1 float: 1 ldouble: 2 +Function: "exp2m1": +ldouble: 1 + +Function: "exp2m1_downward": +ldouble: 2 + +Function: "exp2m1_towardzero": +ldouble: 2 + +Function: "exp2m1_upward": +ldouble: 2 + Function: "exp_downward": double: 1 float: 1 @@ -1168,6 +1192,18 @@ double: 2 float: 2 ldouble: 1 +Function: "log10p1": +ldouble: 3 + +Function: "log10p1_downward": +ldouble: 2 + +Function: "log10p1_towardzero": +ldouble: 2 + +Function: "log10p1_upward": +ldouble: 3 + Function: "log1p": double: 1 float: 1 @@ -1208,6 +1244,18 @@ double: 3 float: 3 ldouble: 1 +Function: "log2p1": +ldouble: 3 + +Function: "log2p1_downward": +ldouble: 3 + +Function: "log2p1_towardzero": +ldouble: 2 + +Function: "log2p1_upward": +ldouble: 2 + Function: "log_downward": float: 2 ldouble: 1 diff --git a/sysdeps/arc/fpu/libm-test-ulps b/sysdeps/arc/fpu/libm-test-ulps index 41c8ef16d7..7e2c2dff13 100644 --- a/sysdeps/arc/fpu/libm-test-ulps +++ b/sysdeps/arc/fpu/libm-test-ulps @@ -787,6 +787,22 @@ Function: "exp10_upward": double: 4 float: 1 +Function: "exp10m1": +double: 4 +float: 2 + +Function: "exp10m1_downward": +double: 3 +float: 3 + +Function: "exp10m1_towardzero": +double: 2 +float: 3 + +Function: "exp10m1_upward": +double: 5 +float: 3 + Function: "exp2": double: 1 float: 1 @@ -801,6 +817,22 @@ Function: "exp2_upward": double: 2 float: 1 +Function: "exp2m1": +double: 2 +float: 2 + +Function: "exp2m1_downward": +double: 3 +float: 3 + +Function: "exp2m1_towardzero": +double: 3 +float: 2 + +Function: "exp2m1_upward": +double: 3 +float: 3 + Function: "exp_downward": double: 1 float: 1 @@ -943,6 +975,22 @@ Function: "log10_upward": double: 3 float: 4 +Function: "log10p1": +double: 2 +float: 2 + +Function: "log10p1_downward": +double: 2 +float: 3 + +Function: "log10p1_towardzero": +double: 3 +float: 2 + +Function: "log10p1_upward": +double: 2 +float: 3 + Function: "log1p": double: 1 float: 1 @@ -971,6 +1019,22 @@ Function: "log2_upward": double: 1 float: 1 +Function: "log2p1": +double: 2 +float: 2 + +Function: "log2p1_downward": +double: 2 +float: 2 + +Function: "log2p1_towardzero": +double: 2 +float: 2 + +Function: "log2p1_upward": +double: 2 +float: 2 + Function: "log_towardzero": double: 1 float: 1 diff --git a/sysdeps/arc/nofpu/libm-test-ulps b/sysdeps/arc/nofpu/libm-test-ulps index d3f45957d4..d9d6c76c3e 100644 --- a/sysdeps/arc/nofpu/libm-test-ulps +++ b/sysdeps/arc/nofpu/libm-test-ulps @@ -192,9 +192,17 @@ Function: "exp10": double: 2 float: 1 +Function: "exp10m1": +double: 3 +float: 2 + Function: "exp2": double: 1 +Function: "exp2m1": +double: 2 +float: 2 + Function: "expm1": double: 1 float: 1 @@ -205,6 +213,7 @@ float: 7 Function: "hypot": double: 1 +float: 1 Function: "j0": double: 2 @@ -226,6 +235,10 @@ Function: "log10": double: 2 float: 2 +Function: "log10p1": +double: 1 +float: 2 + Function: "log1p": double: 1 float: 1 @@ -234,6 +247,10 @@ Function: "log2": double: 2 float: 1 +Function: "log2p1": +double: 1 +float: 2 + Function: "logp1": double: 1 float: 1 diff --git a/sysdeps/arm/libm-test-ulps b/sysdeps/arm/libm-test-ulps index cad14a1ef1..100e9d1956 100644 --- a/sysdeps/arm/libm-test-ulps +++ b/sysdeps/arm/libm-test-ulps @@ -778,20 +778,20 @@ double: 2 float: 1 Function: "exp10m1": -double: 2 -float: 1 +double: 3 +float: 2 Function: "exp10m1_downward": -double: 1 -float: 1 +double: 3 +float: 3 Function: "exp10m1_towardzero": -double: 1 -float: 1 +double: 2 +float: 3 Function: "exp10m1_upward": -double: 3 -float: 1 +double: 4 +float: 4 Function: "exp2": double: 1 @@ -810,20 +810,20 @@ double: 1 float: 1 Function: "exp2m1": -double: 1 -float: 1 +double: 2 +float: 2 Function: "exp2m1_downward": -double: 2 -float: 1 +double: 3 +float: 3 Function: "exp2m1_towardzero": -double: 2 -float: 1 +double: 3 +float: 2 Function: "exp2m1_upward": -double: 1 -float: 1 +double: 3 +float: 3 Function: "exp_downward": double: 1 @@ -967,19 +967,19 @@ float: 2 Function: "log10p1": double: 1 -float: 1 +float: 2 Function: "log10p1_downward": double: 2 -float: 1 +float: 3 Function: "log10p1_towardzero": -double: 2 +double: 3 float: 2 Function: "log10p1_upward": double: 2 -float: 1 +float: 3 Function: "log1p": double: 1 @@ -1015,7 +1015,7 @@ float: 3 Function: "log2p1": double: 1 -float: 1 +float: 2 Function: "log2p1_downward": double: 2 @@ -1026,7 +1026,7 @@ double: 2 float: 2 Function: "log2p1_upward": -double: 1 +double: 2 float: 2 Function: "log_downward": diff --git a/sysdeps/generic/dl-fptr.h b/sysdeps/generic/dl-fptr.h deleted file mode 100644 index 71cfb62411..0000000000 --- a/sysdeps/generic/dl-fptr.h +++ /dev/null @@ -1,45 +0,0 @@ -/* Function descriptors. Generic version. - Copyright (C) 1995-2024 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 - <https://www.gnu.org/licenses/>. */ - -#ifndef dl_fptr_h -#define dl_fptr_h 1 - -/* An FDESC is a function descriptor. */ - -struct fdesc - { - ElfW(Addr) ip; /* code entry point */ - ElfW(Addr) gp; /* global pointer */ - }; - -struct fdesc_table - { - struct fdesc_table *next; - unsigned int len; /* # of entries in fdesc table */ - volatile unsigned int first_unused; /* index of first available entry */ - struct fdesc fdesc[0]; - }; - -struct link_map; - -extern ElfW(Addr) _dl_boot_fptr_table []; - -extern ElfW(Addr) _dl_make_fptr (struct link_map *, const ElfW(Sym) *, - ElfW(Addr)); - -#endif /* !dl_fptr_h */ diff --git a/sysdeps/generic/ldsodefs.h b/sysdeps/generic/ldsodefs.h index 656e8a3fa0..259ce2e7d6 100644 --- a/sysdeps/generic/ldsodefs.h +++ b/sysdeps/generic/ldsodefs.h @@ -1200,10 +1200,8 @@ extern void _dl_get_tls_static_info (size_t *sizep, size_t *alignp); extern void _dl_allocate_static_tls (struct link_map *map) attribute_hidden; -/* These are internal entry points to the two halves of _dl_allocate_tls, - only used within rtld.c itself at startup time. */ extern void *_dl_allocate_tls_storage (void) attribute_hidden; -extern void *_dl_allocate_tls_init (void *, bool); +extern void *_dl_allocate_tls_init (void *result, bool main_thread); rtld_hidden_proto (_dl_allocate_tls_init) /* True if the TCB has been set up. */ @@ -1241,13 +1239,7 @@ extern void *_dl_open (const char *name, int mode, const void *caller, extern int _dl_scope_free (void *) attribute_hidden; -/* Add module to slot information data. If DO_ADD is false, only the - required memory is allocated. Must be called with GL - (dl_load_tls_lock) acquired. If the function has already been called - for the link map L with !do_add, then this function will not raise - an exception, otherwise it is possible that it encounters a memory - allocation failure. */ -extern void _dl_add_to_slotinfo (struct link_map *l, bool do_add) +extern bool _dl_add_to_slotinfo (struct link_map *l, bool do_add) attribute_hidden; /* Update slot information data for at least the generation of the diff --git a/sysdeps/generic/mremap-failure.h b/sysdeps/generic/mremap-failure.h new file mode 100644 index 0000000000..bc0d476368 --- /dev/null +++ b/sysdeps/generic/mremap-failure.h @@ -0,0 +1,25 @@ +/* mremap failure handling. Generic version. + Copyright (C) 2024 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 + <https://www.gnu.org/licenses/>. */ + +/* Return exit value on mremap failure with errno ERR. */ + +static int +mremap_failure_exit (int err) +{ + return EXIT_FAILURE; +} diff --git a/sysdeps/generic/syscall_types.h b/sysdeps/generic/syscall_types.h new file mode 100644 index 0000000000..2ddeaa2b5f --- /dev/null +++ b/sysdeps/generic/syscall_types.h @@ -0,0 +1,25 @@ +/* Types and macros used for syscall issuing. + Copyright (C) 2023 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 + <https://www.gnu.org/licenses/>. */ + +#ifndef _SYSCALL_TYPES_H +#define _SYSCALL_TYPES_H + +typedef long int __syscall_arg_t; +#define __SSC(__x) ((__syscall_arg_t) (__x)) + +#endif diff --git a/sysdeps/gnu/Makefile b/sysdeps/gnu/Makefile index c89eb8ed1c..d23ded40a0 100644 --- a/sysdeps/gnu/Makefile +++ b/sysdeps/gnu/Makefile @@ -16,37 +16,67 @@ # <https://www.gnu.org/licenses/>. ifeq ($(subdir),login) -sysdep_routines += setutxent getutxent endutxent getutxid getutxline \ - pututxline utmpxname updwtmpx getutmpx getutmp +sysdep_routines += \ + endutxent \ + getutmp \ + getutmpx \ + getutxent \ + getutxid \ + getutxline \ + pututxline \ + setutxent \ + updwtmpx \ + utmpxname \ + # sysdep_routines -sysdep_headers += utmpx.h bits/utmpx.h +sysdep_headers += \ + bits/utmpx.h \ + utmpx.h \ + # sysdep_headers endif ifeq ($(subdir),inet) -sysdep_headers += netinet/udp.h netinet/ip_icmp.h +sysdep_headers += \ + netinet/ip_icmp.h \ + netinet/udp.h \ + # sysdep_headers endif ifeq ($(subdir),misc) -sysdep_headers += sys/mtio.h +sysdep_headers += \ + sys/mtio.h \ + # sysdep_headers endif ifeq ($(subdir),csu) -routines += unwind-resume -shared-only-routines += unwind-resume +routines += \ + unwind-resume \ + # routines +shared-only-routines += \ + unwind-resume \ + # shared-only-routines CFLAGS-unwind-resume.c += -fexceptions -fasynchronous-unwind-tables endif + ifeq ($(subdir),rt) -librt-sysdep_routines += rt-unwind-resume -librt-shared-only-routines += rt-unwind-resume +librt-sysdep_routines += \ + rt-unwind-resume \ + # librt-sysdep_routines +librt-shared-only-routines += \ + rt-unwind-resume \ + # librt-shared-only-routines CFLAGS-rt-unwind-resume.c += -fexceptions -fasynchronous-unwind-tables endif + ifeq ($(subdir),sysvipc) -sysdep_headers += bits/ipc-perm.h \ - bits/types/struct_msqid_ds.h \ - bits/types/struct_shmid_ds.h +sysdep_headers += \ + bits/ipc-perm.h \ + bits/types/struct_msqid_ds.h \ + bits/types/struct_shmid_ds.h + # sysdep_headers endif diff --git a/sysdeps/hppa/dl-fptr.h b/sysdeps/hppa/dl-fptr.h index 7c5eb0bd30..b7fd9cf71a 100644 --- a/sysdeps/hppa/dl-fptr.h +++ b/sysdeps/hppa/dl-fptr.h @@ -19,7 +19,28 @@ #ifndef dl_hppa_fptr_h #define dl_hppa_fptr_h 1 -#include <sysdeps/generic/dl-fptr.h> +/* An FDESC is a function descriptor. */ + +struct fdesc + { + ElfW(Addr) ip; /* code entry point */ + ElfW(Addr) gp; /* global pointer */ + }; + +struct fdesc_table + { + struct fdesc_table *next; + unsigned int len; /* # of entries in fdesc table */ + volatile unsigned int first_unused; /* index of first available entry */ + struct fdesc fdesc[0]; + }; + +struct link_map; + +extern ElfW(Addr) _dl_boot_fptr_table []; + +extern ElfW(Addr) _dl_make_fptr (struct link_map *, const ElfW(Sym) *, + ElfW(Addr)); /* Initialize function pointer code. Call before relocation processing. */ extern void _dl_fptr_init (void); diff --git a/sysdeps/hppa/fpu/libm-test-ulps b/sysdeps/hppa/fpu/libm-test-ulps index d91a85bfc8..ea5101f6b6 100644 --- a/sysdeps/hppa/fpu/libm-test-ulps +++ b/sysdeps/hppa/fpu/libm-test-ulps @@ -903,12 +903,12 @@ Function: "hypot_upward": double: 1 Function: "j0": -double: 2 +double: 4 float: 9 ldouble: 2 Function: "j0_downward": -double: 5 +double: 6 float: 9 Function: "j0_towardzero": @@ -925,11 +925,11 @@ float: 9 ldouble: 1 Function: "j1_downward": -double: 5 +double: 9 float: 8 Function: "j1_towardzero": -double: 4 +double: 5 float: 8 Function: "j1_upward": @@ -971,6 +971,7 @@ double: 5 float: 6 Function: "log": +double: 1 float: 1 Function: "log10": @@ -1039,8 +1040,8 @@ double: 3 float: 3 Function: "log2p1": -double: 1 -float: 1 +double: 2 +float: 2 Function: "log2p1_downward": double: 2 @@ -1051,7 +1052,7 @@ double: 2 float: 2 Function: "log2p1_upward": -double: 1 +double: 2 float: 2 Function: "log_downward": diff --git a/sysdeps/htl/pt-attr-getdetachstate.c b/sysdeps/htl/pt-attr-getdetachstate.c index 8b077e38f3..da27398260 100644 --- a/sysdeps/htl/pt-attr-getdetachstate.c +++ b/sysdeps/htl/pt-attr-getdetachstate.c @@ -17,6 +17,7 @@ <https://www.gnu.org/licenses/>. */ #include <pthread.h> +#include <shlib-compat.h> #include <pt-internal.h> int @@ -26,4 +27,8 @@ __pthread_attr_getdetachstate (const pthread_attr_t *attr, int *detachstate) return 0; } -weak_alias (__pthread_attr_getdetachstate, pthread_attr_getdetachstate); +versioned_symbol (libc, __pthread_attr_getdetachstate, pthread_attr_getdetachstate, GLIBC_2_21); + +#if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_12, GLIBC_2_21) +compat_symbol (libc, __pthread_attr_getdetachstate, pthread_attr_getdetachstate, GLIBC_2_12); +#endif diff --git a/sysdeps/htl/pt-attr-getinheritsched.c b/sysdeps/htl/pt-attr-getinheritsched.c index 078face3eb..ba02e202c3 100644 --- a/sysdeps/htl/pt-attr-getinheritsched.c +++ b/sysdeps/htl/pt-attr-getinheritsched.c @@ -17,6 +17,7 @@ <https://www.gnu.org/licenses/>. */ #include <pthread.h> +#include <shlib-compat.h> #include <pt-internal.h> int @@ -26,4 +27,8 @@ __pthread_attr_getinheritsched (const pthread_attr_t *attr, int *inheritsched) return 0; } -weak_alias (__pthread_attr_getinheritsched, pthread_attr_getinheritsched); +versioned_symbol (libc, __pthread_attr_getinheritsched, pthread_attr_getinheritsched, GLIBC_2_21); + +#if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_12, GLIBC_2_21) +compat_symbol (libc, __pthread_attr_getinheritsched, pthread_attr_getinheritsched, GLIBC_2_12); +#endif diff --git a/sysdeps/htl/pt-attr-getschedparam.c b/sysdeps/htl/pt-attr-getschedparam.c index 3fa001871e..35eeedc442 100644 --- a/sysdeps/htl/pt-attr-getschedparam.c +++ b/sysdeps/htl/pt-attr-getschedparam.c @@ -19,6 +19,7 @@ #include <pthread.h> #include <sched.h> #include <string.h> +#include <shlib-compat.h> #include <pt-internal.h> @@ -30,4 +31,8 @@ __pthread_attr_getschedparam (const pthread_attr_t *attr, return 0; } -weak_alias (__pthread_attr_getschedparam, pthread_attr_getschedparam); +versioned_symbol (libc, __pthread_attr_getschedparam, pthread_attr_getschedparam, GLIBC_2_21); + +#if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_12, GLIBC_2_21) +compat_symbol (libc, __pthread_attr_getschedparam, pthread_attr_getschedparam, GLIBC_2_12); +#endif diff --git a/sysdeps/htl/pt-attr-getschedpolicy.c b/sysdeps/htl/pt-attr-getschedpolicy.c index 8b4cc7ce48..5deaf01c5e 100644 --- a/sysdeps/htl/pt-attr-getschedpolicy.c +++ b/sysdeps/htl/pt-attr-getschedpolicy.c @@ -17,6 +17,7 @@ <https://www.gnu.org/licenses/>. */ #include <pthread.h> +#include <shlib-compat.h> #include <pt-internal.h> int @@ -26,4 +27,8 @@ __pthread_attr_getschedpolicy (const pthread_attr_t *attr, int *policy) return 0; } -weak_alias (__pthread_attr_getschedpolicy, pthread_attr_getschedpolicy); +versioned_symbol (libc, __pthread_attr_getschedpolicy, pthread_attr_getschedpolicy, GLIBC_2_21); + +#if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_12, GLIBC_2_21) +compat_symbol (libc, __pthread_attr_getschedpolicy, pthread_attr_getschedpolicy, GLIBC_2_12); +#endif diff --git a/sysdeps/htl/pt-attr-setdetachstate.c b/sysdeps/htl/pt-attr-setdetachstate.c index b40557f816..26b6f91dc6 100644 --- a/sysdeps/htl/pt-attr-setdetachstate.c +++ b/sysdeps/htl/pt-attr-setdetachstate.c @@ -17,6 +17,7 @@ <https://www.gnu.org/licenses/>. */ #include <pthread.h> +#include <shlib-compat.h> #include <pt-internal.h> int @@ -35,4 +36,8 @@ __pthread_attr_setdetachstate (pthread_attr_t *attr, int detachstate) return 0; } -weak_alias (__pthread_attr_setdetachstate, pthread_attr_setdetachstate); +versioned_symbol (libc, __pthread_attr_setdetachstate, pthread_attr_setdetachstate, GLIBC_2_21); + +#if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_12, GLIBC_2_21) +compat_symbol (libc, __pthread_attr_setdetachstate, pthread_attr_setdetachstate, GLIBC_2_12); +#endif diff --git a/sysdeps/htl/pt-attr-setinheritsched.c b/sysdeps/htl/pt-attr-setinheritsched.c index 533b805b12..4ad0bb1dec 100644 --- a/sysdeps/htl/pt-attr-setinheritsched.c +++ b/sysdeps/htl/pt-attr-setinheritsched.c @@ -17,6 +17,7 @@ <https://www.gnu.org/licenses/>. */ #include <pthread.h> +#include <shlib-compat.h> #include <pt-internal.h> int @@ -35,4 +36,8 @@ __pthread_attr_setinheritsched (pthread_attr_t *attr, int inheritsched) return 0; } -weak_alias (__pthread_attr_setinheritsched, pthread_attr_setinheritsched); +versioned_symbol (libc, __pthread_attr_setinheritsched, pthread_attr_setinheritsched, GLIBC_2_21); + +#if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_12, GLIBC_2_21) +compat_symbol (libc, __pthread_attr_setinheritsched, pthread_attr_setinheritsched, GLIBC_2_12); +#endif diff --git a/sysdeps/htl/pt-attr-setschedpolicy.c b/sysdeps/htl/pt-attr-setschedpolicy.c index d8086e8316..9648c774d0 100644 --- a/sysdeps/htl/pt-attr-setschedpolicy.c +++ b/sysdeps/htl/pt-attr-setschedpolicy.c @@ -17,6 +17,7 @@ <https://www.gnu.org/licenses/>. */ #include <pthread.h> +#include <shlib-compat.h> #include <pt-internal.h> int @@ -39,4 +40,8 @@ __pthread_attr_setschedpolicy (pthread_attr_t *attr, int policy) return 0; } -weak_alias (__pthread_attr_setschedpolicy, pthread_attr_setschedpolicy); +versioned_symbol (libc, __pthread_attr_setschedpolicy, pthread_attr_setschedpolicy, GLIBC_2_21); + +#if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_12, GLIBC_2_21) +compat_symbol (libc, __pthread_attr_setschedpolicy, pthread_attr_setschedpolicy, GLIBC_2_12); +#endif diff --git a/sysdeps/htl/pt-equal.c b/sysdeps/htl/pt-equal.c index 6411110608..7727cca370 100644 --- a/sysdeps/htl/pt-equal.c +++ b/sysdeps/htl/pt-equal.c @@ -17,6 +17,7 @@ <https://www.gnu.org/licenses/>. */ #include <pthread.h> +#include <shlib-compat.h> #include <pt-internal.h> /* Return true if __T1 and __T2 both name the same thread. Otherwise, @@ -27,4 +28,8 @@ __pthread_equal (pthread_t __t1, pthread_t __t2) return __t1 == __t2; } -weak_alias (__pthread_equal, pthread_equal); +versioned_symbol (libc, __pthread_equal, pthread_equal, GLIBC_2_21); + +#if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_12, GLIBC_2_21) +compat_symbol (libc, __pthread_equal, pthread_equal, GLIBC_2_12); +#endif diff --git a/sysdeps/htl/pt-getschedparam.c b/sysdeps/htl/pt-getschedparam.c index 8ec3d54bd4..0c6a2d0ab3 100644 --- a/sysdeps/htl/pt-getschedparam.c +++ b/sysdeps/htl/pt-getschedparam.c @@ -17,6 +17,7 @@ <https://www.gnu.org/licenses/>. */ #include <pthread.h> +#include <shlib-compat.h> #include <pt-internal.h> int @@ -28,4 +29,8 @@ __pthread_getschedparam (pthread_t thread, int *policy, return 0; } -weak_alias (__pthread_getschedparam, pthread_getschedparam); +versioned_symbol (libc, __pthread_getschedparam, pthread_getschedparam, GLIBC_2_21); + +#if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_12, GLIBC_2_21) +compat_symbol (libc, __pthread_getschedparam, pthread_getschedparam, GLIBC_2_12); +#endif diff --git a/sysdeps/htl/pt-setschedparam.c b/sysdeps/htl/pt-setschedparam.c index aea4e7b0e4..5594c9f390 100644 --- a/sysdeps/htl/pt-setschedparam.c +++ b/sysdeps/htl/pt-setschedparam.c @@ -17,6 +17,7 @@ <https://www.gnu.org/licenses/>. */ #include <pthread.h> +#include <shlib-compat.h> #include <pt-internal.h> int @@ -26,5 +27,9 @@ __pthread_setschedparam (pthread_t thread, int policy, return ENOSYS; } -weak_alias (__pthread_setschedparam, pthread_setschedparam); +versioned_symbol (libc, __pthread_setschedparam, pthread_setschedparam, GLIBC_2_21); stub_warning (pthread_setschedparam) + +#if OTHER_SHLIB_COMPAT (libpthread, GLIBC_2_12, GLIBC_2_21) +compat_symbol (libc, __pthread_setschedparam, pthread_setschedparam, GLIBC_2_12); +#endif diff --git a/sysdeps/htl/pthread.h b/sysdeps/htl/pthread.h index fa626ebc82..65837d10cf 100644 --- a/sysdeps/htl/pthread.h +++ b/sysdeps/htl/pthread.h @@ -892,6 +892,17 @@ extern int pthread_setschedparam (pthread_t __thr, int __policy, extern int pthread_setschedprio (pthread_t __thr, int __prio) __THROW; #ifdef __USE_GNU +/* Get thread name visible in the kernel and its interfaces. */ +extern int pthread_getname_np (pthread_t __target_thread, char *__buf, + size_t __buflen) + __THROW __nonnull ((2)) __attr_access ((__write_only__, 2)); + +/* Set thread name visible in the kernel and its interfaces. */ +extern int pthread_setname_np (pthread_t __target_thread, const char *__name) + __THROW __nonnull ((2)) __attr_access ((__read_only__, 2)); +#endif + +#ifdef __USE_GNU /* Yield the processor to another thread or process. This function is similar to the POSIX `sched_yield' function but might be differently implemented in the case of a m-on-n thread diff --git a/sysdeps/i386/fpu/libm-test-ulps b/sysdeps/i386/fpu/libm-test-ulps index 14c6d12f37..9e46244752 100644 --- a/sysdeps/i386/fpu/libm-test-ulps +++ b/sysdeps/i386/fpu/libm-test-ulps @@ -1154,28 +1154,28 @@ float128: 3 ldouble: 2 Function: "exp10m1": -double: 1 +double: 3 float: 1 -float128: 1 -ldouble: 1 +float128: 3 +ldouble: 4 Function: "exp10m1_downward": -double: 1 -float: 1 -float128: 3 -ldouble: 2 +double: 3 +float: 3 +float128: 6 +ldouble: 6 Function: "exp10m1_towardzero": -double: 1 -float: 1 -float128: 3 -ldouble: 2 +double: 2 +float: 2 +float128: 6 +ldouble: 5 Function: "exp10m1_upward": -double: 3 -float: 1 -float128: 3 -ldouble: 2 +double: 5 +float: 3 +float128: 6 +ldouble: 6 Function: "exp2": double: 1 @@ -1197,28 +1197,28 @@ float128: 2 ldouble: 1 Function: "exp2m1": -double: 1 -float: 1 -float128: 1 -ldouble: 1 - -Function: "exp2m1_downward": double: 2 float: 1 float128: 2 -ldouble: 2 +ldouble: 3 + +Function: "exp2m1_downward": +double: 3 +float: 3 +float128: 3 +ldouble: 6 Function: "exp2m1_towardzero": -double: 2 -float: 1 -float128: 2 -ldouble: 2 +double: 3 +float: 2 +float128: 4 +ldouble: 5 Function: "exp2m1_upward": -double: 1 -float: 1 -float128: 2 -ldouble: 3 +double: 3 +float: 3 +float128: 5 +ldouble: 6 Function: "exp_downward": double: 1 @@ -1427,25 +1427,25 @@ Function: "log10p1": double: 1 float: 2 float128: 3 -ldouble: 2 +ldouble: 4 Function: "log10p1_downward": double: 2 -float: 1 -float128: 2 -ldouble: 4 +float: 3 +float128: 4 +ldouble: 8 Function: "log10p1_towardzero": double: 2 float: 1 -float128: 2 -ldouble: 4 +float128: 3 +ldouble: 8 Function: "log10p1_upward": double: 2 -float: 2 -float128: 3 -ldouble: 3 +float: 3 +float128: 4 +ldouble: 6 Function: "log1p": double: 1 @@ -1497,7 +1497,7 @@ Function: "log2p1": double: 1 float: 1 float128: 3 -ldouble: 2 +ldouble: 4 Function: "log2p1_downward": double: 2 @@ -1512,9 +1512,9 @@ float128: 2 ldouble: 3 Function: "log2p1_upward": -double: 1 +double: 2 float: 2 -float128: 2 +float128: 3 ldouble: 5 Function: "log_downward": diff --git a/sysdeps/i386/i686/fpu/multiarch/libm-test-ulps b/sysdeps/i386/i686/fpu/multiarch/libm-test-ulps index fff853e93f..5c41bf36dc 100644 --- a/sysdeps/i386/i686/fpu/multiarch/libm-test-ulps +++ b/sysdeps/i386/i686/fpu/multiarch/libm-test-ulps @@ -1157,28 +1157,28 @@ float128: 3 ldouble: 2 Function: "exp10m1": -double: 1 +double: 3 float: 1 -float128: 1 -ldouble: 1 +float128: 3 +ldouble: 4 Function: "exp10m1_downward": -double: 1 -float: 1 -float128: 3 -ldouble: 2 +double: 3 +float: 3 +float128: 6 +ldouble: 6 Function: "exp10m1_towardzero": -double: 1 -float: 1 -float128: 3 -ldouble: 2 +double: 2 +float: 2 +float128: 6 +ldouble: 5 Function: "exp10m1_upward": -double: 3 -float: 1 -float128: 3 -ldouble: 2 +double: 5 +float: 3 +float128: 6 +ldouble: 6 Function: "exp2": double: 1 @@ -1200,28 +1200,28 @@ float128: 2 ldouble: 1 Function: "exp2m1": -double: 1 -float: 1 -float128: 1 -ldouble: 1 - -Function: "exp2m1_downward": double: 2 float: 1 float128: 2 ldouble: 3 +Function: "exp2m1_downward": +double: 3 +float: 3 +float128: 3 +ldouble: 6 + Function: "exp2m1_towardzero": -double: 2 -float: 1 -float128: 2 -ldouble: 3 +double: 3 +float: 2 +float128: 4 +ldouble: 6 Function: "exp2m1_upward": -double: 1 -float: 1 -float128: 2 -ldouble: 3 +double: 3 +float: 3 +float128: 5 +ldouble: 6 Function: "exp_downward": double: 1 @@ -1430,25 +1430,25 @@ Function: "log10p1": double: 1 float: 2 float128: 3 -ldouble: 2 +ldouble: 4 Function: "log10p1_downward": double: 2 float: 1 -float128: 2 -ldouble: 4 +float128: 4 +ldouble: 8 Function: "log10p1_towardzero": double: 2 float: 1 -float128: 2 -ldouble: 4 +float128: 3 +ldouble: 8 Function: "log10p1_upward": double: 2 float: 2 -float128: 3 -ldouble: 3 +float128: 4 +ldouble: 6 Function: "log1p": double: 1 @@ -1500,7 +1500,7 @@ Function: "log2p1": double: 1 float: 1 float128: 3 -ldouble: 2 +ldouble: 4 Function: "log2p1_downward": double: 2 @@ -1517,7 +1517,7 @@ ldouble: 4 Function: "log2p1_upward": double: 1 float: 2 -float128: 2 +float128: 3 ldouble: 5 Function: "log_downward": diff --git a/sysdeps/loongarch/dl-machine.h b/sysdeps/loongarch/dl-machine.h index ab6f1da7c0..a15d8e0ab6 100644 --- a/sysdeps/loongarch/dl-machine.h +++ b/sysdeps/loongarch/dl-machine.h @@ -223,6 +223,13 @@ elf_machine_rela (struct link_map *map, struct r_scope_elem *scope[], { td->arg = _dl_make_tlsdesc_dynamic (sym_map, sym->st_value + reloc->r_addend); +# ifndef __loongarch_soft_float + if (RTLD_SUPPORT_LASX) + td->entry = _dl_tlsdesc_dynamic_lasx; + else if (RTLD_SUPPORT_LSX) + td->entry = _dl_tlsdesc_dynamic_lsx; + else +# endif td->entry = _dl_tlsdesc_dynamic; } else diff --git a/sysdeps/loongarch/dl-tlsdesc-dynamic.h b/sysdeps/loongarch/dl-tlsdesc-dynamic.h new file mode 100644 index 0000000000..d10f4a8800 --- /dev/null +++ b/sysdeps/loongarch/dl-tlsdesc-dynamic.h @@ -0,0 +1,225 @@ +/* Thread-local storage handling in the ELF dynamic linker. + LoongArch version. + Copyright (C) 2024 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 + <https://www.gnu.org/licenses/>. */ + +#define FRAME_SIZE (-((-14 * SZREG) & ALMASK)) +#define FRAME_SIZE_LSX (-((-32 * SZVREG) & ALMASK)) +#define FRAME_SIZE_LASX (-((-32 * SZXREG) & ALMASK)) +#define FRAME_SIZE_FLOAT (-((-24 * SZFREG) & ALMASK)) + + /* Handler for dynamic TLS symbols. + Prototype: + _dl_tlsdesc_dynamic (tlsdesc *) ; + + The second word of the descriptor points to a + tlsdesc_dynamic_arg structure. + + Returns the offset between the thread pointer and the + object referenced by the argument. + + ptrdiff_t + _dl_tlsdesc_dynamic (struct tlsdesc *tdp) + { + struct tlsdesc_dynamic_arg *td = tdp->arg; + dtv_t *dtv = *(dtv_t **)((char *)__thread_pointer - SIZE_OF_TCB); + if (__glibc_likely (td->gen_count <= dtv[0].counter + && (dtv[td->tlsinfo.ti_module].pointer.val + != TLS_DTV_UNALLOCATED), + 1)) + return dtv[td->tlsinfo.ti_module].pointer.val + + td->tlsinfo.ti_offset + - __thread_pointer; + + return ___tls_get_addr (&td->tlsinfo) - __thread_pointer; + } */ + .hidden _dl_tlsdesc_dynamic + .global _dl_tlsdesc_dynamic + .type _dl_tlsdesc_dynamic,%function + cfi_startproc + .align 2 +_dl_tlsdesc_dynamic: + /* Save just enough registers to support fast path, if we fall + into slow path we will save additional registers. */ + ADDI sp, sp, -32 + cfi_adjust_cfa_offset (32) + REG_S t0, sp, 0 + REG_S t1, sp, 8 + REG_S t2, sp, 16 + cfi_rel_offset (12, 0) + cfi_rel_offset (13, 8) + cfi_rel_offset (14, 16) + +/* Runtime Storage Layout of Thread-Local Storage + TP point to the start of TLS block. + + dtv +Low address TCB ----------------> dtv0(counter) + TP --> static_block0 <----- dtv1 + static_block1 <----- dtv2 + static_block2 <----- dtv3 + dynamic_block0 <----- dtv4 +Hign address dynamic_block1 <----- dtv5 */ + + REG_L t0, tp, -SIZE_OF_TCB /* t0 = dtv */ + REG_L a0, a0, TLSDESC_ARG /* a0(td) = tdp->arg */ + REG_L t1, a0, TLSDESC_GEN_COUNT /* t1 = td->gen_count */ + REG_L t2, t0, DTV_COUNTER /* t2 = dtv[0].counter */ + /* If dtv[0].counter < td->gen_count, goto slow path. */ + bltu t2, t1, .Lslow + + REG_L t1, a0, TLSDESC_MODID /* t1 = td->tlsinfo.ti_module */ + /* t1 = t1 * sizeof(dtv_t) = t1 * (2 * sizeof(void*)) */ + slli.d t1, t1, 4 + add.d t1, t1, t0 /* t1 = dtv[td->tlsinfo.ti_module] */ + REG_L t1, t1, 0 /* t1 = dtv[td->tlsinfo.ti_module].pointer.val */ + li.d t2, TLS_DTV_UNALLOCATED + /* If dtv[td->tlsinfo.ti_module].pointer.val is TLS_DTV_UNALLOCATED, + goto slow path. */ + beq t1, t2, .Lslow + + cfi_remember_state + REG_L t2, a0, TLSDESC_MODOFF /* t2 = td->tlsinfo.ti_offset */ + /* dtv[td->tlsinfo.ti_module].pointer.val + td->tlsinfo.ti_offset */ + add.d a0, t1, t2 +.Lret: + sub.d a0, a0, tp + REG_L t0, sp, 0 + REG_L t1, sp, 8 + REG_L t2, sp, 16 + ADDI sp, sp, 32 + cfi_adjust_cfa_offset (-32) + RET + +.Lslow: + /* This is the slow path. We need to call __tls_get_addr() which + means we need to save and restore all the register that the + callee will trash. */ + + /* Save the remaining registers that we must treat as caller save. */ + cfi_restore_state + ADDI sp, sp, -FRAME_SIZE + cfi_adjust_cfa_offset (FRAME_SIZE) + REG_S ra, sp, 0 * SZREG + REG_S a1, sp, 1 * SZREG + REG_S a2, sp, 2 * SZREG + REG_S a3, sp, 3 * SZREG + REG_S a4, sp, 4 * SZREG + REG_S a5, sp, 5 * SZREG + REG_S a6, sp, 6 * SZREG + REG_S a7, sp, 7 * SZREG + REG_S t3, sp, 8 * SZREG + REG_S t4, sp, 9 * SZREG + REG_S t5, sp, 10 * SZREG + REG_S t6, sp, 11 * SZREG + REG_S t7, sp, 12 * SZREG + REG_S t8, sp, 13 * SZREG + cfi_rel_offset (1, 0 * SZREG) + cfi_rel_offset (5, 1 * SZREG) + cfi_rel_offset (6, 2 * SZREG) + cfi_rel_offset (7, 3 * SZREG) + cfi_rel_offset (8, 4 * SZREG) + cfi_rel_offset (9, 5 * SZREG) + cfi_rel_offset (10, 6 * SZREG) + cfi_rel_offset (11, 7 * SZREG) + cfi_rel_offset (15, 8 * SZREG) + cfi_rel_offset (16, 9 * SZREG) + cfi_rel_offset (17, 10 * SZREG) + cfi_rel_offset (18, 11 * SZREG) + cfi_rel_offset (19, 12 * SZREG) + cfi_rel_offset (20, 13 * SZREG) + +#ifndef __loongarch_soft_float + + /* Save fcsr0 register. + Only one physical fcsr0 register, fcsr1-fcsr3 are aliases + of some fields in fcsr0. */ + movfcsr2gr t0, fcsr0 + st.w t0, sp, FRAME_SIZE + 24 /* Use the spare slot above t2. */ + +#ifdef USE_LASX + #define V_REG_S xvst + #define V_REG_L xvld + #define V_SPACE FRAME_SIZE_LASX + #define V_REG(n) $xr##n + #define V_REGS 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16, \ + 17,18,19,20,21,22,23,24,25,26,27,28,29,30,31 + #define V_REGSZ SZXREG +#elif defined USE_LSX + #define V_REG_S vst + #define V_REG_L vld + #define V_SPACE FRAME_SIZE_LSX + #define V_REG(n) $vr##n + #define V_REGS 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16, \ + 17,18,19,20,21,22,23,24,25,26,27,28,29,30,31 + #define V_REGSZ SZVREG +#else + #define V_REG_S fst.d + #define V_REG_L fld.d + #define V_SPACE FRAME_SIZE_FLOAT + #define V_REG(n) $f##n + #define V_REGS 0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23 + #define V_REGSZ SZFREG +#endif + + ADDI sp, sp, -V_SPACE + cfi_adjust_cfa_offset (V_SPACE) + .irp i,V_REGS + V_REG_S V_REG(\i), sp, \i * V_REGSZ + .endr + +#endif /* #ifndef __loongarch_soft_float */ + + bl HIDDEN_JUMPTARGET(__tls_get_addr) + ADDI a0, a0, -TLS_DTV_OFFSET + +#ifndef __loongarch_soft_float + + .irp i,V_REGS + V_REG_L V_REG(\i), sp, \i * V_REGSZ + .endr + ADDI sp, sp, V_SPACE + cfi_adjust_cfa_offset (-V_SPACE) + + /* Restore fcsr0 register. */ + ld.w t0, sp, FRAME_SIZE + 24 + movgr2fcsr fcsr0, t0 + +#endif /* #ifndef __loongarch_soft_float */ + + REG_L ra, sp, 0 * SZREG + REG_L a1, sp, 1 * SZREG + REG_L a2, sp, 2 * SZREG + REG_L a3, sp, 3 * SZREG + REG_L a4, sp, 4 * SZREG + REG_L a5, sp, 5 * SZREG + REG_L a6, sp, 6 * SZREG + REG_L a7, sp, 7 * SZREG + REG_L t3, sp, 8 * SZREG + REG_L t4, sp, 9 * SZREG + REG_L t5, sp, 10 * SZREG + REG_L t6, sp, 11 * SZREG + REG_L t7, sp, 12 * SZREG + REG_L t8, sp, 13 * SZREG + ADDI sp, sp, FRAME_SIZE + cfi_adjust_cfa_offset (-FRAME_SIZE) + + b .Lret + cfi_endproc + .size _dl_tlsdesc_dynamic, .-_dl_tlsdesc_dynamic + .hidden HIDDEN_JUMPTARGET(__tls_get_addr) diff --git a/sysdeps/loongarch/dl-tlsdesc.S b/sysdeps/loongarch/dl-tlsdesc.S index a6627cc754..b6cfd6121d 100644 --- a/sysdeps/loongarch/dl-tlsdesc.S +++ b/sysdeps/loongarch/dl-tlsdesc.S @@ -59,376 +59,34 @@ _dl_tlsdesc_undefweak: cfi_endproc .size _dl_tlsdesc_undefweak, .-_dl_tlsdesc_undefweak - #ifdef SHARED -#define FRAME_SIZE (-((-14 * SZREG) & ALMASK)) -#define FRAME_SIZE_LSX (-((-32 * SZVREG) & ALMASK)) -#define FRAME_SIZE_LASX (-((-32 * SZXREG) & ALMASK)) -#define FRAME_SIZE_FLOAT (-((-24 * SZFREG) & ALMASK)) - - /* Handler for dynamic TLS symbols. - Prototype: - _dl_tlsdesc_dynamic (tlsdesc *) ; - - The second word of the descriptor points to a - tlsdesc_dynamic_arg structure. - - Returns the offset between the thread pointer and the - object referenced by the argument. - - ptrdiff_t - _dl_tlsdesc_dynamic (struct tlsdesc *tdp) - { - struct tlsdesc_dynamic_arg *td = tdp->arg; - dtv_t *dtv = *(dtv_t **)((char *)__thread_pointer - SIZE_OF_TCB); - if (__glibc_likely (td->gen_count <= dtv[0].counter - && (dtv[td->tlsinfo.ti_module].pointer.val - != TLS_DTV_UNALLOCATED), - 1)) - return dtv[td->tlsinfo.ti_module].pointer.val - + td->tlsinfo.ti_offset - - __thread_pointer; - - return ___tls_get_addr (&td->tlsinfo) - __thread_pointer; - } */ - .hidden _dl_tlsdesc_dynamic - .global _dl_tlsdesc_dynamic - .type _dl_tlsdesc_dynamic,%function - cfi_startproc - .align 2 -_dl_tlsdesc_dynamic: - /* Save just enough registers to support fast path, if we fall - into slow path we will save additional registers. */ - ADDI sp, sp, -32 - REG_S t0, sp, 0 - REG_S t1, sp, 8 - REG_S t2, sp, 16 - -/* Runtime Storage Layout of Thread-Local Storage - TP point to the start of TLS block. - - dtv -Low address TCB ----------------> dtv0(counter) - TP --> static_block0 <----- dtv1 - static_block1 <----- dtv2 - static_block2 <----- dtv3 - dynamic_block0 <----- dtv4 -Hign address dynamic_block1 <----- dtv5 */ - - REG_L t0, tp, -SIZE_OF_TCB /* t0 = dtv */ - REG_L a0, a0, TLSDESC_ARG /* a0(td) = tdp->arg */ - REG_L t1, a0, TLSDESC_GEN_COUNT /* t1 = td->gen_count */ - REG_L t2, t0, DTV_COUNTER /* t2 = dtv[0].counter */ - /* If dtv[0].counter < td->gen_count, goto slow path. */ - bltu t2, t1, .Lslow - - REG_L t1, a0, TLSDESC_MODID /* t1 = td->tlsinfo.ti_module */ - /* t1 = t1 * sizeof(dtv_t) = t1 * (2 * sizeof(void*)) */ - slli.d t1, t1, 4 - add.d t1, t1, t0 /* t1 = dtv[td->tlsinfo.ti_module] */ - REG_L t1, t1, 0 /* t1 = dtv[td->tlsinfo.ti_module].pointer.val */ - li.d t2, TLS_DTV_UNALLOCATED - /* If dtv[td->tlsinfo.ti_module].pointer.val is TLS_DTV_UNALLOCATED, - goto slow path. */ - beq t1, t2, .Lslow - - REG_L t2, a0, TLSDESC_MODOFF /* t2 = td->tlsinfo.ti_offset */ - /* dtv[td->tlsinfo.ti_module].pointer.val + td->tlsinfo.ti_offset */ - add.d a0, t1, t2 -.Lret: - sub.d a0, a0, tp - REG_L t0, sp, 0 - REG_L t1, sp, 8 - REG_L t2, sp, 16 - ADDI sp, sp, 32 - RET - -.Lslow: - /* This is the slow path. We need to call __tls_get_addr() which - means we need to save and restore all the register that the - callee will trash. */ - - /* Save the remaining registers that we must treat as caller save. */ - ADDI sp, sp, -FRAME_SIZE - REG_S ra, sp, 0 * SZREG - REG_S a1, sp, 1 * SZREG - REG_S a2, sp, 2 * SZREG - REG_S a3, sp, 3 * SZREG - REG_S a4, sp, 4 * SZREG - REG_S a5, sp, 5 * SZREG - REG_S a6, sp, 6 * SZREG - REG_S a7, sp, 7 * SZREG - REG_S t3, sp, 8 * SZREG - REG_S t4, sp, 9 * SZREG - REG_S t5, sp, 10 * SZREG - REG_S t6, sp, 11 * SZREG - REG_S t7, sp, 12 * SZREG - REG_S t8, sp, 13 * SZREG - #ifndef __loongarch_soft_float - /* Save fcsr0 register. - Only one physical fcsr0 register, fcsr1-fcsr3 are aliases - of some fields in fcsr0. */ - movfcsr2gr t0, fcsr0 - st.w t0, sp, FRAME_SIZE + 24 /* Use the spare slot above t2 */ - - /* Whether support LASX. */ - la.global t0, _rtld_global_ro - REG_L t0, t0, GLRO_DL_HWCAP_OFFSET - andi t1, t0, HWCAP_LOONGARCH_LASX - beqz t1, .Llsx - - /* Save 256-bit vector registers. - FIXME: Without vector ABI, save all vector registers. */ - ADDI sp, sp, -FRAME_SIZE_LASX - xvst xr0, sp, 0*SZXREG - xvst xr1, sp, 1*SZXREG - xvst xr2, sp, 2*SZXREG - xvst xr3, sp, 3*SZXREG - xvst xr4, sp, 4*SZXREG - xvst xr5, sp, 5*SZXREG - xvst xr6, sp, 6*SZXREG - xvst xr7, sp, 7*SZXREG - xvst xr8, sp, 8*SZXREG - xvst xr9, sp, 9*SZXREG - xvst xr10, sp, 10*SZXREG - xvst xr11, sp, 11*SZXREG - xvst xr12, sp, 12*SZXREG - xvst xr13, sp, 13*SZXREG - xvst xr14, sp, 14*SZXREG - xvst xr15, sp, 15*SZXREG - xvst xr16, sp, 16*SZXREG - xvst xr17, sp, 17*SZXREG - xvst xr18, sp, 18*SZXREG - xvst xr19, sp, 19*SZXREG - xvst xr20, sp, 20*SZXREG - xvst xr21, sp, 21*SZXREG - xvst xr22, sp, 22*SZXREG - xvst xr23, sp, 23*SZXREG - xvst xr24, sp, 24*SZXREG - xvst xr25, sp, 25*SZXREG - xvst xr26, sp, 26*SZXREG - xvst xr27, sp, 27*SZXREG - xvst xr28, sp, 28*SZXREG - xvst xr29, sp, 29*SZXREG - xvst xr30, sp, 30*SZXREG - xvst xr31, sp, 31*SZXREG - b .Ltga - -.Llsx: - /* Whether support LSX. */ - andi t1, t0, HWCAP_LOONGARCH_LSX - beqz t1, .Lfloat - - /* Save 128-bit vector registers. */ - ADDI sp, sp, -FRAME_SIZE_LSX - vst vr0, sp, 0*SZVREG - vst vr1, sp, 1*SZVREG - vst vr2, sp, 2*SZVREG - vst vr3, sp, 3*SZVREG - vst vr4, sp, 4*SZVREG - vst vr5, sp, 5*SZVREG - vst vr6, sp, 6*SZVREG - vst vr7, sp, 7*SZVREG - vst vr8, sp, 8*SZVREG - vst vr9, sp, 9*SZVREG - vst vr10, sp, 10*SZVREG - vst vr11, sp, 11*SZVREG - vst vr12, sp, 12*SZVREG - vst vr13, sp, 13*SZVREG - vst vr14, sp, 14*SZVREG - vst vr15, sp, 15*SZVREG - vst vr16, sp, 16*SZVREG - vst vr17, sp, 17*SZVREG - vst vr18, sp, 18*SZVREG - vst vr19, sp, 19*SZVREG - vst vr20, sp, 20*SZVREG - vst vr21, sp, 21*SZVREG - vst vr22, sp, 22*SZVREG - vst vr23, sp, 23*SZVREG - vst vr24, sp, 24*SZVREG - vst vr25, sp, 25*SZVREG - vst vr26, sp, 26*SZVREG - vst vr27, sp, 27*SZVREG - vst vr28, sp, 28*SZVREG - vst vr29, sp, 29*SZVREG - vst vr30, sp, 30*SZVREG - vst vr31, sp, 31*SZVREG - b .Ltga - -.Lfloat: - /* Save float registers. */ - ADDI sp, sp, -FRAME_SIZE_FLOAT - FREG_S fa0, sp, 0*SZFREG - FREG_S fa1, sp, 1*SZFREG - FREG_S fa2, sp, 2*SZFREG - FREG_S fa3, sp, 3*SZFREG - FREG_S fa4, sp, 4*SZFREG - FREG_S fa5, sp, 5*SZFREG - FREG_S fa6, sp, 6*SZFREG - FREG_S fa7, sp, 7*SZFREG - FREG_S ft0, sp, 8*SZFREG - FREG_S ft1, sp, 9*SZFREG - FREG_S ft2, sp, 10*SZFREG - FREG_S ft3, sp, 11*SZFREG - FREG_S ft4, sp, 12*SZFREG - FREG_S ft5, sp, 13*SZFREG - FREG_S ft6, sp, 14*SZFREG - FREG_S ft7, sp, 15*SZFREG - FREG_S ft8, sp, 16*SZFREG - FREG_S ft9, sp, 17*SZFREG - FREG_S ft10, sp, 18*SZFREG - FREG_S ft11, sp, 19*SZFREG - FREG_S ft12, sp, 20*SZFREG - FREG_S ft13, sp, 21*SZFREG - FREG_S ft14, sp, 22*SZFREG - FREG_S ft15, sp, 23*SZFREG - -#endif /* #ifndef __loongarch_soft_float */ - -.Ltga: - bl HIDDEN_JUMPTARGET(__tls_get_addr) - ADDI a0, a0, -TLS_DTV_OFFSET - -#ifndef __loongarch_soft_float - - la.global t0, _rtld_global_ro - REG_L t0, t0, GLRO_DL_HWCAP_OFFSET - andi t1, t0, HWCAP_LOONGARCH_LASX - beqz t1, .Llsx1 - - /* Restore 256-bit vector registers. */ - xvld xr0, sp, 0*SZXREG - xvld xr1, sp, 1*SZXREG - xvld xr2, sp, 2*SZXREG - xvld xr3, sp, 3*SZXREG - xvld xr4, sp, 4*SZXREG - xvld xr5, sp, 5*SZXREG - xvld xr6, sp, 6*SZXREG - xvld xr7, sp, 7*SZXREG - xvld xr8, sp, 8*SZXREG - xvld xr9, sp, 9*SZXREG - xvld xr10, sp, 10*SZXREG - xvld xr11, sp, 11*SZXREG - xvld xr12, sp, 12*SZXREG - xvld xr13, sp, 13*SZXREG - xvld xr14, sp, 14*SZXREG - xvld xr15, sp, 15*SZXREG - xvld xr16, sp, 16*SZXREG - xvld xr17, sp, 17*SZXREG - xvld xr18, sp, 18*SZXREG - xvld xr19, sp, 19*SZXREG - xvld xr20, sp, 20*SZXREG - xvld xr21, sp, 21*SZXREG - xvld xr22, sp, 22*SZXREG - xvld xr23, sp, 23*SZXREG - xvld xr24, sp, 24*SZXREG - xvld xr25, sp, 25*SZXREG - xvld xr26, sp, 26*SZXREG - xvld xr27, sp, 27*SZXREG - xvld xr28, sp, 28*SZXREG - xvld xr29, sp, 29*SZXREG - xvld xr30, sp, 30*SZXREG - xvld xr31, sp, 31*SZXREG - ADDI sp, sp, FRAME_SIZE_LASX - b .Lfcsr - -.Llsx1: - andi t1, t0, HWCAP_LOONGARCH_LSX - beqz t1, .Lfloat1 - - /* Restore 128-bit vector registers. */ - vld vr0, sp, 0*SZVREG - vld vr1, sp, 1*SZVREG - vld vr2, sp, 2*SZVREG - vld vr3, sp, 3*SZVREG - vld vr4, sp, 4*SZVREG - vld vr5, sp, 5*SZVREG - vld vr6, sp, 6*SZVREG - vld vr7, sp, 7*SZVREG - vld vr8, sp, 8*SZVREG - vld vr9, sp, 9*SZVREG - vld vr10, sp, 10*SZVREG - vld vr11, sp, 11*SZVREG - vld vr12, sp, 12*SZVREG - vld vr13, sp, 13*SZVREG - vld vr14, sp, 14*SZVREG - vld vr15, sp, 15*SZVREG - vld vr16, sp, 16*SZVREG - vld vr17, sp, 17*SZVREG - vld vr18, sp, 18*SZVREG - vld vr19, sp, 19*SZVREG - vld vr20, sp, 20*SZVREG - vld vr21, sp, 21*SZVREG - vld vr22, sp, 22*SZVREG - vld vr23, sp, 23*SZVREG - vld vr24, sp, 24*SZVREG - vld vr25, sp, 25*SZVREG - vld vr26, sp, 26*SZVREG - vld vr27, sp, 27*SZVREG - vld vr28, sp, 28*SZVREG - vld vr29, sp, 29*SZVREG - vld vr30, sp, 30*SZVREG - vld vr31, sp, 31*SZVREG - ADDI sp, sp, FRAME_SIZE_LSX - b .Lfcsr - -.Lfloat1: - /* Restore float registers. */ - FREG_L fa0, sp, 0*SZFREG - FREG_L fa1, sp, 1*SZFREG - FREG_L fa2, sp, 2*SZFREG - FREG_L fa3, sp, 3*SZFREG - FREG_L fa4, sp, 4*SZFREG - FREG_L fa5, sp, 5*SZFREG - FREG_L fa6, sp, 6*SZFREG - FREG_L fa7, sp, 7*SZFREG - FREG_L ft0, sp, 8*SZFREG - FREG_L ft1, sp, 9*SZFREG - FREG_L ft2, sp, 10*SZFREG - FREG_L ft3, sp, 11*SZFREG - FREG_L ft4, sp, 12*SZFREG - FREG_L ft5, sp, 13*SZFREG - FREG_L ft6, sp, 14*SZFREG - FREG_L ft7, sp, 15*SZFREG - FREG_L ft8, sp, 16*SZFREG - FREG_L ft9, sp, 17*SZFREG - FREG_L ft10, sp, 18*SZFREG - FREG_L ft11, sp, 19*SZFREG - FREG_L ft12, sp, 20*SZFREG - FREG_L ft13, sp, 21*SZFREG - FREG_L ft14, sp, 22*SZFREG - FREG_L ft15, sp, 23*SZFREG - ADDI sp, sp, FRAME_SIZE_FLOAT - -.Lfcsr: - /* Restore fcsr0 register. */ - ld.w t0, sp, FRAME_SIZE + 24 - movgr2fcsr fcsr0, t0 +#define USE_LASX +#define _dl_tlsdesc_dynamic _dl_tlsdesc_dynamic_lasx +#define Lret Lret_lasx +#define Lslow Lslow_lasx +#include "dl-tlsdesc-dynamic.h" +#undef FRAME_SIZE +#undef USE_LASX +#undef _dl_tlsdesc_dynamic +#undef Lret +#undef Lslow + +#define USE_LSX +#define _dl_tlsdesc_dynamic _dl_tlsdesc_dynamic_lsx +#define Lret Lret_lsx +#define Lslow Lslow_lsx +#include "dl-tlsdesc-dynamic.h" +#undef FRAME_SIZE +#undef USE_LSX +#undef _dl_tlsdesc_dynamic +#undef Lret +#undef Lslow #endif /* #ifndef __loongarch_soft_float */ - REG_L ra, sp, 0 * SZREG - REG_L a1, sp, 1 * SZREG - REG_L a2, sp, 2 * SZREG - REG_L a3, sp, 3 * SZREG - REG_L a4, sp, 4 * SZREG - REG_L a5, sp, 5 * SZREG - REG_L a6, sp, 6 * SZREG - REG_L a7, sp, 7 * SZREG - REG_L t3, sp, 8 * SZREG - REG_L t4, sp, 9 * SZREG - REG_L t5, sp, 10 * SZREG - REG_L t6, sp, 11 * SZREG - REG_L t7, sp, 12 * SZREG - REG_L t8, sp, 13 * SZREG - ADDI sp, sp, FRAME_SIZE - - b .Lret - cfi_endproc - .size _dl_tlsdesc_dynamic, .-_dl_tlsdesc_dynamic - .hidden HIDDEN_JUMPTARGET(__tls_get_addr) +#include "dl-tlsdesc-dynamic.h" #endif /* #ifdef SHARED */ diff --git a/sysdeps/loongarch/dl-tlsdesc.h b/sysdeps/loongarch/dl-tlsdesc.h index ff8c69cb93..45c43a5b52 100644 --- a/sysdeps/loongarch/dl-tlsdesc.h +++ b/sysdeps/loongarch/dl-tlsdesc.h @@ -43,6 +43,10 @@ extern ptrdiff_t attribute_hidden _dl_tlsdesc_undefweak (struct tlsdesc *); #ifdef SHARED extern void *_dl_make_tlsdesc_dynamic (struct link_map *, size_t); +#ifndef __loongarch_soft_float +extern ptrdiff_t attribute_hidden _dl_tlsdesc_dynamic_lasx (struct tlsdesc *); +extern ptrdiff_t attribute_hidden _dl_tlsdesc_dynamic_lsx (struct tlsdesc *); +#endif extern ptrdiff_t attribute_hidden _dl_tlsdesc_dynamic (struct tlsdesc *); #endif diff --git a/sysdeps/loongarch/lp64/libm-test-ulps b/sysdeps/loongarch/lp64/libm-test-ulps index bdfd683454..833dca40e4 100644 --- a/sysdeps/loongarch/lp64/libm-test-ulps +++ b/sysdeps/loongarch/lp64/libm-test-ulps @@ -976,24 +976,24 @@ float: 1 ldouble: 3 Function: "exp10m1": -double: 2 -float: 1 -ldouble: 1 +double: 4 +float: 2 +ldouble: 3 Function: "exp10m1_downward": -double: 1 -float: 1 -ldouble: 3 +double: 3 +float: 3 +ldouble: 6 Function: "exp10m1_towardzero": -double: 1 -float: 1 -ldouble: 3 +double: 2 +float: 3 +ldouble: 6 Function: "exp10m1_upward": -double: 3 -float: 1 -ldouble: 3 +double: 5 +float: 3 +ldouble: 6 Function: "exp2": double: 1 @@ -1013,24 +1013,24 @@ float: 1 ldouble: 2 Function: "exp2m1": -double: 1 -float: 1 -ldouble: 1 +double: 2 +float: 2 +ldouble: 2 Function: "exp2m1_downward": -double: 1 -float: 1 -ldouble: 2 +double: 3 +float: 3 +ldouble: 3 Function: "exp2m1_towardzero": -double: 2 -float: 1 -ldouble: 2 +double: 3 +float: 2 +ldouble: 4 Function: "exp2m1_upward": -double: 1 -float: 1 -ldouble: 2 +double: 3 +float: 3 +ldouble: 5 Function: "exp_downward": double: 1 @@ -1206,24 +1206,24 @@ float: 2 ldouble: 1 Function: "log10p1": -double: 1 -float: 1 +double: 2 +float: 2 ldouble: 3 Function: "log10p1_downward": double: 2 -float: 1 -ldouble: 2 +float: 3 +ldouble: 4 Function: "log10p1_towardzero": -double: 2 +double: 3 float: 2 -ldouble: 2 +ldouble: 3 Function: "log10p1_upward": double: 2 -float: 1 -ldouble: 3 +float: 3 +ldouble: 4 Function: "log1p": double: 1 @@ -1263,8 +1263,8 @@ double: 3 ldouble: 1 Function: "log2p1": -double: 1 -float: 1 +double: 2 +float: 2 ldouble: 3 Function: "log2p1_downward": @@ -1278,9 +1278,9 @@ float: 2 ldouble: 2 Function: "log2p1_upward": -double: 1 +double: 2 float: 2 -ldouble: 2 +ldouble: 3 Function: "log_downward": ldouble: 1 diff --git a/sysdeps/loongarch/tlsdesc.sym b/sysdeps/loongarch/tlsdesc.sym index 213d0b3074..9f80fceca6 100644 --- a/sysdeps/loongarch/tlsdesc.sym +++ b/sysdeps/loongarch/tlsdesc.sym @@ -4,12 +4,6 @@ #include <link.h> #include <dl-tlsdesc.h> -#define SHARED 1 - -#include <ldsodefs.h> - -#define GLRO_offsetof(name) offsetof (struct rtld_global_ro, _##name) - -- -- Abuse tls.h macros to derive offsets relative to the thread register. @@ -23,6 +17,3 @@ DTV_COUNTER offsetof(dtv_t, counter) TLS_DTV_UNALLOCATED TLS_DTV_UNALLOCATED TLS_DTV_OFFSET TLS_DTV_OFFSET SIZE_OF_TCB sizeof(tcbhead_t) -GLRO_DL_HWCAP_OFFSET GLRO_offsetof (dl_hwcap) -HWCAP_LOONGARCH_LSX HWCAP_LOONGARCH_LSX -HWCAP_LOONGARCH_LASX HWCAP_LOONGARCH_LASX diff --git a/sysdeps/mach/configure b/sysdeps/mach/configure index 5779efd1ef..cd21b26df4 100644 --- a/sysdeps/mach/configure +++ b/sysdeps/mach/configure @@ -293,6 +293,9 @@ if test "x$mach_interface_list" = x; then as_fn_error $? "what manner of Mach is this?" "$LINENO" 5 fi + + + { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for egrep -e" >&5 printf %s "checking for egrep -e... " >&6; } if test ${ac_cv_path_EGREP_TRADITIONAL+y} @@ -429,7 +432,7 @@ printf "%s\n" "$ac_cv_path_EGREP_TRADITIONAL" >&6; } { printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for host_page_size in mach_host.defs" >&5 printf %s "checking for host_page_size in mach_host.defs... " >&6; } -if test ${libc_cv_mach_host_page_size+y} +if test ${libc_cv_mach_rpc_host_page_size+y} then : printf %s "(cached) " >&6 else case e in #( @@ -441,22 +444,83 @@ _ACEOF if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | $EGREP_TRADITIONAL "host_page_size" >/dev/null 2>&1 then : - libc_cv_mach_host_page_size=yes + libc_cv_mach_rpc_host_page_size=yes else case e in #( - e) libc_cv_mach_host_page_size=no ;; + e) libc_cv_mach_rpc_host_page_size=no ;; esac fi rm -rf conftest* ;; esac fi -{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_mach_host_page_size" >&5 -printf "%s\n" "$libc_cv_mach_host_page_size" >&6; } -if test $libc_cv_mach_host_page_size = yes; then +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_mach_rpc_host_page_size" >&5 +printf "%s\n" "$libc_cv_mach_rpc_host_page_size" >&6; } +if test $libc_cv_mach_rpc_host_page_size = yes; then printf "%s\n" "#define HAVE_HOST_PAGE_SIZE 1" >>confdefs.h fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for thread_set_name in gnumach.defs" >&5 +printf %s "checking for thread_set_name in gnumach.defs... " >&6; } +if test ${libc_cv_mach_rpc_thread_set_name+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <mach/gnumach.defs> + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP_TRADITIONAL "thread_set_name" >/dev/null 2>&1 +then : + libc_cv_mach_rpc_thread_set_name=yes +else case e in #( + e) libc_cv_mach_rpc_thread_set_name=no ;; +esac +fi +rm -rf conftest* + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_mach_rpc_thread_set_name" >&5 +printf "%s\n" "$libc_cv_mach_rpc_thread_set_name" >&6; } +if test $libc_cv_mach_rpc_thread_set_name = yes; then + printf "%s\n" "#define HAVE_MACH_THREAD_SET_NAME 1" >>confdefs.h + +fi + +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: checking for thread_get_name in gnumach.defs" >&5 +printf %s "checking for thread_get_name in gnumach.defs... " >&6; } +if test ${libc_cv_mach_rpc_thread_get_name+y} +then : + printf %s "(cached) " >&6 +else case e in #( + e) cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <mach/gnumach.defs> + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP_TRADITIONAL "thread_get_name" >/dev/null 2>&1 +then : + libc_cv_mach_rpc_thread_get_name=yes +else case e in #( + e) libc_cv_mach_rpc_thread_get_name=no ;; +esac +fi +rm -rf conftest* + ;; +esac +fi +{ printf "%s\n" "$as_me:${as_lineno-$LINENO}: result: $libc_cv_mach_rpc_thread_get_name" >&5 +printf "%s\n" "$libc_cv_mach_rpc_thread_get_name" >&6; } +if test $libc_cv_mach_rpc_thread_get_name = yes; then + printf "%s\n" "#define HAVE_MACH_THREAD_GET_NAME 1" >>confdefs.h + +fi + + ac_fn_c_check_header_preproc "$LINENO" "mach/machine/ndr_def.h" "ac_cv_header_mach_machine_ndr_def_h" if test "x$ac_cv_header_mach_machine_ndr_def_h" = xyes then : diff --git a/sysdeps/mach/configure.ac b/sysdeps/mach/configure.ac index 730fb25d50..648035e832 100644 --- a/sysdeps/mach/configure.ac +++ b/sysdeps/mach/configure.ac @@ -72,14 +72,29 @@ if test "x$mach_interface_list" = x; then AC_MSG_ERROR([what manner of Mach is this?]) fi -AC_CACHE_CHECK(for host_page_size in mach_host.defs, - libc_cv_mach_host_page_size, [dnl -AC_EGREP_HEADER(host_page_size, mach/mach_host.defs, - libc_cv_mach_host_page_size=yes, - libc_cv_mach_host_page_size=no)]) -if test $libc_cv_mach_host_page_size = yes; then - AC_DEFINE([HAVE_HOST_PAGE_SIZE]) +dnl +dnl mach_RPC_CHECK(interface.defs, rpc_method, define) +dnl +dnl Check if rpc_method RPC is defined by interface.defs +dnl and define `define`. +dnl +AC_DEFUN([mach_RPC_CHECK], [dnl +AC_CACHE_CHECK(for $2 in $1, libc_cv_mach_rpc_$2, [dnl +AC_EGREP_HEADER($2, mach/$1, + libc_cv_mach_rpc_$2=yes, + libc_cv_mach_rpc_$2=no)]) +if test $libc_cv_mach_rpc_$2 = yes; then + AC_DEFINE([$3]) fi +]) + + +mach_RPC_CHECK(mach_host.defs, host_page_size, + HAVE_HOST_PAGE_SIZE) +mach_RPC_CHECK(gnumach.defs, thread_set_name, + HAVE_MACH_THREAD_SET_NAME) +mach_RPC_CHECK(gnumach.defs, thread_get_name, + HAVE_MACH_THREAD_GET_NAME) AC_CHECK_HEADER(mach/machine/ndr_def.h, [dnl DEFINES="$DEFINES -DNDR_DEF_HEADER='<mach/machine/ndr_def.h>'"], [dnl diff --git a/sysdeps/mach/htl/pt-getname-np.c b/sysdeps/mach/htl/pt-getname-np.c new file mode 100644 index 0000000000..8943474b3d --- /dev/null +++ b/sysdeps/mach/htl/pt-getname-np.c @@ -0,0 +1,67 @@ +/* pthread_getname_np. + Copyright (C) 2024 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 + <https://www.gnu.org/licenses/>. */ + +#include <hurd.h> +#include <mach_debug/mach_debug_types.h> +#include <pthread.h> +#include <pthreadP.h> +#include <string.h> + +#include <pt-internal.h> + +int +__pthread_getname_np (pthread_t thread, char *buf, size_t len) +{ +#ifdef HAVE_MACH_THREAD_GET_NAME +/* GNU Mach doesn't export this so we have to define it ourselves. */ +#define MACH_THREAD_NAME_MAX 32 + struct __pthread *pthread; + error_t err; + kernel_debug_name_t tmp; + + /* Note that we don't check for len to be MACH_THREAD_NAME_MAX + * since we want to be more compatible with the Linux API which + * requires that the buffer is at least 16 bytes long. + * + * We check for at least 1 byte since we truncate the result below. */ + if (len < 1) + return ERANGE; + if (len > MACH_THREAD_NAME_MAX) + len = MACH_THREAD_NAME_MAX; + + /* Lookup the thread structure for THREAD. */ + pthread = __pthread_getid (thread); + if (pthread == NULL) + return ESRCH; + + /* __thread_get_name expects a buffer of size sizeof (kernel_debug_name_t) + * and anything smaller will overflow. */ + err = __thread_get_name (pthread->kernel_thread, tmp); + if (err != KERN_SUCCESS) + return __hurd_fail (err); + /* Truncate the source name to fit in the destination buffer. */ + tmp[len - 1] = '\0'; + memcpy (buf, tmp, len); + + return 0; +#else + return ENOTSUP; +#endif +} + +weak_alias (__pthread_getname_np, pthread_getname_np) diff --git a/sysdeps/mach/htl/pt-setname-np.c b/sysdeps/mach/htl/pt-setname-np.c new file mode 100644 index 0000000000..2fd66730e9 --- /dev/null +++ b/sysdeps/mach/htl/pt-setname-np.c @@ -0,0 +1,52 @@ +/* pthread_setname_np. Mach version. + Copyright (C) 2024 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 + <https://www.gnu.org/licenses/>. */ + +#include <hurd.h> +#include <pthread.h> +#include <pthreadP.h> +#include <string.h> + +#include <pt-internal.h> + +int +__pthread_setname_np (pthread_t thread, const char *name) +{ +#ifdef HAVE_MACH_THREAD_SET_NAME +/* GNU Mach doesn't export this so we have to define it ourselves. */ +#define MACH_THREAD_NAME_MAX 32 + struct __pthread *pthread; + error_t err; + + /* Lookup the thread structure for THREAD. */ + pthread = __pthread_getid (thread); + if (pthread == NULL) + return ESRCH; + + if (strlen (name) >= MACH_THREAD_NAME_MAX) + return ERANGE; + + err = __thread_set_name (pthread->kernel_thread, name); + if (err != KERN_SUCCESS) + return __hurd_fail (err); + return 0; +#else + return ENOTSUP; +#endif +} + +weak_alias (__pthread_setname_np, pthread_setname_np) diff --git a/sysdeps/mach/hurd/htl/pt-pthread_self.c b/sysdeps/mach/hurd/htl/pt-pthread_self.c index 04fa283aab..d11d0ec676 100644 --- a/sysdeps/mach/hurd/htl/pt-pthread_self.c +++ b/sysdeps/mach/hurd/htl/pt-pthread_self.c @@ -17,6 +17,14 @@ <https://www.gnu.org/licenses/>. */ #include <pt-sysdep.h> +#include <pt-internal.h> -__thread struct __pthread *___pthread_self; +/* Initial thread structure used before libpthread is initialized, so various + * functions can already work at least basically. */ +struct __pthread __pthread_init_thread = { + .thread = 1, +}; +libc_hidden_def (__pthread_init_thread) + +__thread struct __pthread *___pthread_self = &__pthread_init_thread; libc_hidden_tls_def (___pthread_self) diff --git a/sysdeps/mach/hurd/htl/pt-sysdep.c b/sysdeps/mach/hurd/htl/pt-sysdep.c index 5372cbf77f..f5c1c246eb 100644 --- a/sysdeps/mach/hurd/htl/pt-sysdep.c +++ b/sysdeps/mach/hurd/htl/pt-sysdep.c @@ -26,10 +26,6 @@ #include <pt-internal.h> #include <pthreadP.h> -/* Initial thread structure used temporarily during initialization, so various - * functions can already work at least basically. */ -static struct __pthread init_thread; - static void reset_pthread_total (void) { @@ -51,10 +47,6 @@ _init_routine (void *stack) /* Already initialized */ return; - /* Initialize early thread structure. */ - init_thread.thread = 1; - ___pthread_self = &init_thread; - /* Initialize the library. */ ___pthread_init (); @@ -116,9 +108,9 @@ _init_routine (void *stack) #endif /* Copy over the thread-specific state */ - assert (!init_thread.thread_specifics); + assert (!__pthread_init_thread.thread_specifics); memcpy (&thread->static_thread_specifics, - &init_thread.static_thread_specifics, + &__pthread_init_thread.static_thread_specifics, sizeof (thread->static_thread_specifics)); ___pthread_self = thread; diff --git a/sysdeps/mach/hurd/htl/pt-sysdep.h b/sysdeps/mach/hurd/htl/pt-sysdep.h index 09d9547a8e..8e94395be7 100644 --- a/sysdeps/mach/hurd/htl/pt-sysdep.h +++ b/sysdeps/mach/hurd/htl/pt-sysdep.h @@ -34,6 +34,8 @@ extern __thread struct __pthread *___pthread_self; libc_hidden_tls_proto (___pthread_self) +extern struct __pthread __pthread_init_thread; +libc_hidden_proto (__pthread_init_thread) #ifdef DEBUG #define _pthread_self() \ diff --git a/sysdeps/mach/hurd/i386/libc.abilist b/sysdeps/mach/hurd/i386/libc.abilist index 2adf98e71d..dc2c6b505b 100644 --- a/sysdeps/mach/hurd/i386/libc.abilist +++ b/sysdeps/mach/hurd/i386/libc.abilist @@ -29,7 +29,17 @@ GLIBC_2.11 mkostemps64 F GLIBC_2.11 mkstemps F GLIBC_2.11 mkstemps64 F GLIBC_2.12 __pthread_self F +GLIBC_2.12 pthread_attr_getdetachstate F +GLIBC_2.12 pthread_attr_getinheritsched F +GLIBC_2.12 pthread_attr_getschedparam F +GLIBC_2.12 pthread_attr_getschedpolicy F +GLIBC_2.12 pthread_attr_setdetachstate F +GLIBC_2.12 pthread_attr_setinheritsched F +GLIBC_2.12 pthread_attr_setschedpolicy F +GLIBC_2.12 pthread_equal F +GLIBC_2.12 pthread_getschedparam F GLIBC_2.12 pthread_self F +GLIBC_2.12 pthread_setschedparam F GLIBC_2.13 __fentry__ F GLIBC_2.14 syncfs F GLIBC_2.15 __fdelt_chk F diff --git a/sysdeps/mach/hurd/i386/libpthread.abilist b/sysdeps/mach/hurd/i386/libpthread.abilist index fa90cc6597..3ea7cb41fa 100644 --- a/sysdeps/mach/hurd/i386/libpthread.abilist +++ b/sysdeps/mach/hurd/i386/libpthread.abilist @@ -164,3 +164,5 @@ GLIBC_2.32 tss_create F GLIBC_2.32 tss_delete F GLIBC_2.32 tss_get F GLIBC_2.32 tss_set F +GLIBC_2.40 pthread_getname_np F +GLIBC_2.40 pthread_setname_np F diff --git a/sysdeps/mach/hurd/x86_64/libpthread.abilist b/sysdeps/mach/hurd/x86_64/libpthread.abilist index 80615d16ee..69999df5bb 100644 --- a/sysdeps/mach/hurd/x86_64/libpthread.abilist +++ b/sysdeps/mach/hurd/x86_64/libpthread.abilist @@ -163,3 +163,5 @@ GLIBC_2.38 tss_create F GLIBC_2.38 tss_delete F GLIBC_2.38 tss_get F GLIBC_2.38 tss_set F +GLIBC_2.40 pthread_getname_np F +GLIBC_2.40 pthread_setname_np F diff --git a/sysdeps/mach/sleep.c b/sysdeps/mach/sleep.c index 572be150bc..aa750c13c5 100644 --- a/sysdeps/mach/sleep.c +++ b/sysdeps/mach/sleep.c @@ -43,6 +43,9 @@ __sleep (unsigned int seconds) after = time_now (); __mach_port_destroy (__mach_task_self (), recv); + if (after - before > seconds) + return 0; + return seconds - (after - before); } weak_alias (__sleep, sleep) diff --git a/sysdeps/mips/Makefile b/sysdeps/mips/Makefile index d770e59fc9..d189973aa0 100644 --- a/sysdeps/mips/Makefile +++ b/sysdeps/mips/Makefile @@ -23,6 +23,15 @@ ASFLAGS-.o += $(pie-default) ASFLAGS-.op += $(pie-default) ifeq ($(subdir),elf) + +# These tests fail on all mips configurations (BZ 29404) +test-xfail-tst-audit24a = yes +test-xfail-tst-audit24b = yes +test-xfail-tst-audit24c = yes +test-xfail-tst-audit24d = yes +test-xfail-tst-audit25a = yes +test-xfail-tst-audit25b = yes + ifneq ($(o32-fpabi),) tests += tst-abi-interlink diff --git a/sysdeps/mips/mips32/libm-test-ulps b/sysdeps/mips/mips32/libm-test-ulps index 1c27b6615b..d95230724b 100644 --- a/sysdeps/mips/mips32/libm-test-ulps +++ b/sysdeps/mips/mips32/libm-test-ulps @@ -778,20 +778,20 @@ double: 2 float: 1 Function: "exp10m1": -double: 2 -float: 1 +double: 3 +float: 2 Function: "exp10m1_downward": -double: 1 -float: 1 +double: 3 +float: 3 Function: "exp10m1_towardzero": -double: 1 -float: 1 +double: 2 +float: 3 Function: "exp10m1_upward": -double: 3 -float: 1 +double: 4 +float: 4 Function: "exp2": double: 1 @@ -810,20 +810,20 @@ double: 1 float: 1 Function: "exp2m1": -double: 1 -float: 1 +double: 2 +float: 2 Function: "exp2m1_downward": -double: 2 -float: 1 +double: 3 +float: 3 Function: "exp2m1_towardzero": -double: 2 -float: 1 +double: 3 +float: 2 Function: "exp2m1_upward": -double: 1 -float: 1 +double: 3 +float: 3 Function: "exp_downward": double: 1 @@ -967,19 +967,19 @@ float: 2 Function: "log10p1": double: 1 -float: 1 +float: 2 Function: "log10p1_downward": double: 2 -float: 1 +float: 3 Function: "log10p1_towardzero": -double: 2 +double: 3 float: 2 Function: "log10p1_upward": double: 2 -float: 1 +float: 3 Function: "log1p": double: 1 @@ -1015,7 +1015,7 @@ float: 3 Function: "log2p1": double: 1 -float: 1 +float: 2 ldouble: 1 Function: "log2p1_downward": @@ -1029,7 +1029,7 @@ float: 2 ldouble: 2 Function: "log2p1_upward": -double: 1 +double: 2 float: 2 ldouble: 1 diff --git a/sysdeps/mips/mips64/libm-test-ulps b/sysdeps/mips/mips64/libm-test-ulps index 902551b448..ce33d9b4b3 100644 --- a/sysdeps/mips/mips64/libm-test-ulps +++ b/sysdeps/mips/mips64/libm-test-ulps @@ -977,24 +977,24 @@ float: 1 ldouble: 3 Function: "exp10m1": -double: 2 -float: 1 -ldouble: 1 +double: 3 +float: 2 +ldouble: 3 Function: "exp10m1_downward": -double: 1 -float: 1 -ldouble: 3 +double: 3 +float: 3 +ldouble: 6 Function: "exp10m1_towardzero": -double: 1 -float: 1 -ldouble: 3 +double: 2 +float: 3 +ldouble: 6 Function: "exp10m1_upward": -double: 3 -float: 1 -ldouble: 3 +double: 4 +float: 4 +ldouble: 6 Function: "exp2": double: 1 @@ -1017,24 +1017,24 @@ float: 1 ldouble: 2 Function: "exp2m1": -double: 1 -float: 1 -ldouble: 1 - -Function: "exp2m1_downward": double: 2 -float: 1 +float: 2 ldouble: 2 +Function: "exp2m1_downward": +double: 3 +float: 3 +ldouble: 3 + Function: "exp2m1_towardzero": -double: 2 -float: 1 -ldouble: 2 +double: 3 +float: 2 +ldouble: 4 Function: "exp2m1_upward": -double: 1 -float: 1 -ldouble: 2 +double: 3 +float: 3 +ldouble: 5 Function: "exp_downward": double: 1 @@ -1212,23 +1212,23 @@ ldouble: 1 Function: "log10p1": double: 1 -float: 1 +float: 2 ldouble: 3 Function: "log10p1_downward": double: 2 -float: 1 -ldouble: 2 +float: 3 +ldouble: 4 Function: "log10p1_towardzero": -double: 2 +double: 3 float: 2 -ldouble: 2 +ldouble: 3 Function: "log10p1_upward": double: 2 -float: 1 -ldouble: 3 +float: 3 +ldouble: 4 Function: "log1p": double: 1 @@ -1272,7 +1272,7 @@ ldouble: 1 Function: "log2p1": double: 1 -float: 1 +float: 2 ldouble: 3 Function: "log2p1_downward": @@ -1286,9 +1286,9 @@ float: 2 ldouble: 2 Function: "log2p1_upward": -double: 1 +double: 2 float: 2 -ldouble: 2 +ldouble: 3 Function: "log_downward": float: 2 diff --git a/sysdeps/nptl/cancellation-pc-check.h b/sysdeps/nptl/cancellation-pc-check.h new file mode 100644 index 0000000000..cb38ad6819 --- /dev/null +++ b/sysdeps/nptl/cancellation-pc-check.h @@ -0,0 +1,54 @@ +/* Architecture specific code for pthread cancellation handling. + Copyright (C) 2023 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +#ifndef _NPTL_CANCELLATION_PC_CHECK +#define _NPTL_CANCELLATION_PC_CHECK + +#include <sigcontextinfo.h> + +/* For syscalls with side-effects (e.g read that might return partial read), + the kernel cannot restart the syscall when interrupted by a signal, it must + return from the call with whatever partial result. In this case, the saved + program counter is set just after the syscall instruction, so the SIGCANCEL + handler should not act on cancellation. + + The __syscall_cancel_arch function, used for all cancellable syscalls, + contains two extra markers, __syscall_cancel_arch_start and + __syscall_cancel_arch_end. The former points to just before the initial + conditional branch that checks if the thread has received a cancellation + request, while former points to the instruction after the one responsible + to issue the syscall. + + The function check if the program counter (PC) from ucontext_t CTX is + within the start and then end boundary from the __syscall_cancel_arch + bridge. Return TRUE if the PC is within the boundary, meaning the + syscall does not have any side effects; or FALSE otherwise. */ + +static __always_inline bool +cancellation_pc_check (void *ctx) +{ + /* Both are defined in syscall_cancel.S. */ + extern const char __syscall_cancel_arch_start[1]; + extern const char __syscall_cancel_arch_end[1]; + + uintptr_t pc = sigcontext_get_pc (ctx); + return pc >= (uintptr_t) __syscall_cancel_arch_start + && pc < (uintptr_t) __syscall_cancel_arch_end; +} + +#endif diff --git a/sysdeps/nptl/dl-tls_init_tp.c b/sysdeps/nptl/dl-tls_init_tp.c index 7eb35fb133..7803e19fd1 100644 --- a/sysdeps/nptl/dl-tls_init_tp.c +++ b/sysdeps/nptl/dl-tls_init_tp.c @@ -46,10 +46,6 @@ rtld_mutex_dummy (pthread_mutex_t *lock) const unsigned int __rseq_flags; -/* The variables are in .data.relro but are not yet write-protected. */ -extern unsigned int _rseq_size attribute_hidden; -extern ptrdiff_t _rseq_offset attribute_hidden; - void __tls_pre_init_tp (void) { @@ -106,9 +102,7 @@ __tls_init_tp (void) bool do_rseq = true; do_rseq = TUNABLE_GET (rseq, int, NULL); if (rseq_register_current_thread (pd, do_rseq)) - { - _rseq_size = sizeof (pd->rseq_area); - } + _rseq_size = RSEQ_AREA_SIZE_INITIAL_USED; #ifdef RSEQ_SIG /* This should be a compile-time constant, but the current diff --git a/sysdeps/nptl/lowlevellock-futex.h b/sysdeps/nptl/lowlevellock-futex.h index 278213a37b..c205806300 100644 --- a/sysdeps/nptl/lowlevellock-futex.h +++ b/sysdeps/nptl/lowlevellock-futex.h @@ -21,7 +21,6 @@ #ifndef __ASSEMBLER__ # include <sysdep.h> -# include <sysdep-cancel.h> # include <kernel-features.h> #endif @@ -120,21 +119,10 @@ nr_wake, nr_move, mutex, val) /* Like lll_futex_wait, but acting as a cancellable entrypoint. */ -# define lll_futex_wait_cancel(futexp, val, private) \ - ({ \ - int __oldtype = LIBC_CANCEL_ASYNC (); \ - long int __err = lll_futex_wait (futexp, val, LLL_SHARED); \ - LIBC_CANCEL_RESET (__oldtype); \ - __err; \ - }) - -/* Like lll_futex_timed_wait, but acting as a cancellable entrypoint. */ -# define lll_futex_timed_wait_cancel(futexp, val, timeout, private) \ - ({ \ - int __oldtype = LIBC_CANCEL_ASYNC (); \ - long int __err = lll_futex_timed_wait (futexp, val, timeout, private); \ - LIBC_CANCEL_RESET (__oldtype); \ - __err; \ +# define lll_futex_wait_cancel(futexp, val, private) \ + ({ \ + int __op = __lll_private_flag (FUTEX_WAIT, private); \ + INTERNAL_SYSCALL_CANCEL (futex, futexp, __op, val, NULL); \ }) #endif /* !__ASSEMBLER__ */ diff --git a/sysdeps/nptl/pthreadP.h b/sysdeps/nptl/pthreadP.h index 30e8a2d177..7d9b95e6ac 100644 --- a/sysdeps/nptl/pthreadP.h +++ b/sysdeps/nptl/pthreadP.h @@ -261,10 +261,12 @@ libc_hidden_proto (__pthread_unregister_cancel) /* Called when a thread reacts on a cancellation request. */ static inline void __attribute ((noreturn, always_inline)) -__do_cancel (void) +__do_cancel (void *result) { struct pthread *self = THREAD_SELF; + self->result = result; + /* Make sure we get no more cancellations. */ atomic_fetch_or_relaxed (&self->cancelhandling, EXITING_BITMASK); @@ -272,6 +274,13 @@ __do_cancel (void) THREAD_GETMEM (self, cleanup_jmp_buf)); } +extern long int __syscall_cancel_arch (volatile int *, __syscall_arg_t nr, + __syscall_arg_t arg1, __syscall_arg_t arg2, __syscall_arg_t arg3, + __syscall_arg_t arg4, __syscall_arg_t arg5, __syscall_arg_t arg6 + __SYSCALL_CANCEL7_ARCH_ARG_DEF) attribute_hidden; + +extern _Noreturn void __syscall_do_cancel (void) attribute_hidden; + /* Internal prototypes. */ diff --git a/sysdeps/powerpc/fpu/libm-test-ulps b/sysdeps/powerpc/fpu/libm-test-ulps index c6292a695b..2b5d2b940d 100644 --- a/sysdeps/powerpc/fpu/libm-test-ulps +++ b/sysdeps/powerpc/fpu/libm-test-ulps @@ -1185,28 +1185,28 @@ float128: 3 ldouble: 4 Function: "exp10m1": -double: 2 -float: 1 -float128: 1 -ldouble: 2 +double: 4 +float: 2 +float128: 3 +ldouble: 4 Function: "exp10m1_downward": -double: 1 -float: 1 -float128: 3 +double: 3 +float: 3 +float128: 6 ldouble: 9 Function: "exp10m1_towardzero": -double: 1 -float: 1 -float128: 3 +double: 2 +float: 3 +float128: 6 ldouble: 9 Function: "exp10m1_upward": -double: 3 -float: 1 -float128: 3 -ldouble: 4 +double: 5 +float: 3 +float128: 6 +ldouble: 8 Function: "exp2": double: 1 @@ -1230,28 +1230,28 @@ float128: 2 ldouble: 2 Function: "exp2m1": -double: 1 -float: 1 -float128: 1 -ldouble: 2 - -Function: "exp2m1_downward": -double: 1 -float: 1 +double: 2 +float: 2 float128: 2 ldouble: 3 +Function: "exp2m1_downward": +double: 3 +float: 3 +float128: 3 +ldouble: 7 + Function: "exp2m1_towardzero": -double: 2 -float: 1 -float128: 2 -ldouble: 3 +double: 3 +float: 2 +float128: 4 +ldouble: 8 Function: "exp2m1_upward": -double: 1 -float: 1 -float128: 2 -ldouble: 3 +double: 3 +float: 3 +float128: 5 +ldouble: 9 Function: "exp_downward": double: 1 @@ -1507,28 +1507,28 @@ float128: 1 ldouble: 2 Function: "log10p1": -double: 1 -float: 1 +double: 2 +float: 2 float128: 3 ldouble: 3 Function: "log10p1_downward": double: 2 -float: 1 -float128: 2 -ldouble: 4 +float: 3 +float128: 4 +ldouble: 6 Function: "log10p1_towardzero": -double: 2 +double: 3 float: 2 -float128: 2 -ldouble: 4 +float128: 3 +ldouble: 6 Function: "log10p1_upward": double: 2 -float: 1 -float128: 3 -ldouble: 4 +float: 3 +float128: 4 +ldouble: 6 Function: "log1p": double: 1 @@ -1579,8 +1579,8 @@ float128: 1 ldouble: 4 Function: "log2p1": -double: 1 -float: 1 +double: 2 +float: 2 float128: 3 ldouble: 2 @@ -1594,13 +1594,13 @@ Function: "log2p1_towardzero": double: 2 float: 2 float128: 2 -ldouble: 4 +ldouble: 5 Function: "log2p1_upward": -double: 1 +double: 2 float: 2 -float128: 2 -ldouble: 4 +float128: 3 +ldouble: 6 Function: "log_downward": float: 2 diff --git a/sysdeps/powerpc/nofpu/libm-test-ulps b/sysdeps/powerpc/nofpu/libm-test-ulps index 94d737a400..d56327ac33 100644 --- a/sysdeps/powerpc/nofpu/libm-test-ulps +++ b/sysdeps/powerpc/nofpu/libm-test-ulps @@ -918,6 +918,9 @@ ldouble: 10 Function: "div_ldouble": float: 1 +Function: "div_towardzero_ldouble": +double: 1 + Function: "erf": double: 1 float: 1 @@ -982,6 +985,26 @@ double: 2 float: 1 ldouble: 4 +Function: "exp10m1": +double: 3 +float: 2 +ldouble: 3 + +Function: "exp10m1_downward": +double: 3 +float: 3 +ldouble: 9 + +Function: "exp10m1_towardzero": +double: 2 +float: 3 +ldouble: 9 + +Function: "exp10m1_upward": +double: 4 +float: 4 +ldouble: 10 + Function: "exp2": double: 1 float: 1 @@ -1002,6 +1025,26 @@ double: 1 float: 1 ldouble: 2 +Function: "exp2m1": +double: 2 +float: 2 +ldouble: 2 + +Function: "exp2m1_downward": +double: 3 +float: 3 +ldouble: 7 + +Function: "exp2m1_towardzero": +double: 3 +float: 2 +ldouble: 8 + +Function: "exp2m1_upward": +double: 3 +float: 3 +ldouble: 9 + Function: "exp_downward": double: 1 float: 1 @@ -1043,12 +1086,28 @@ ldouble: 1 Function: "fma_downward": ldouble: 1 +Function: "fma_downward_ldouble": +double: 1 +float: 1 + +Function: "fma_ldouble": +double: 1 +float: 1 + Function: "fma_towardzero": ldouble: 2 +Function: "fma_towardzero_ldouble": +double: 1 +float: 1 + Function: "fma_upward": ldouble: 3 +Function: "fma_upward_ldouble": +double: 1 +float: 1 + Function: "fmod": ldouble: 1 @@ -1083,6 +1142,7 @@ ldouble: 11 Function: "hypot": double: 1 +float: 1 ldouble: 1 Function: "hypot_downward": @@ -1207,6 +1267,26 @@ double: 2 float: 2 ldouble: 2 +Function: "log10p1": +double: 1 +float: 2 +ldouble: 3 + +Function: "log10p1_downward": +double: 2 +float: 3 +ldouble: 6 + +Function: "log10p1_towardzero": +double: 3 +float: 2 +ldouble: 6 + +Function: "log10p1_upward": +double: 2 +float: 3 +ldouble: 6 + Function: "log1p": double: 1 float: 1 @@ -1247,6 +1327,26 @@ double: 3 float: 3 ldouble: 4 +Function: "log2p1": +double: 1 +float: 2 +ldouble: 2 + +Function: "log2p1_downward": +double: 2 +float: 2 +ldouble: 4 + +Function: "log2p1_towardzero": +double: 2 +float: 2 +ldouble: 5 + +Function: "log2p1_upward": +double: 2 +float: 2 +ldouble: 6 + Function: "log_downward": float: 2 ldouble: 1 @@ -1406,6 +1506,9 @@ ldouble: 1 Function: "sqrt_downward": ldouble: 1 +Function: "sqrt_ldouble": +double: 1 + Function: "sqrt_towardzero": ldouble: 1 diff --git a/sysdeps/powerpc/powerpc32/sysdep.h b/sysdeps/powerpc/powerpc32/sysdep.h index 62de4ca2e5..852a755c7c 100644 --- a/sysdeps/powerpc/powerpc32/sysdep.h +++ b/sysdeps/powerpc/powerpc32/sysdep.h @@ -104,6 +104,9 @@ GOT_LABEL: ; \ # define JUMPTARGET(name) name #endif +#define TAIL_CALL_NO_RETURN(__func) \ + b __func@local + #if defined SHARED && defined PIC && !defined NO_HIDDEN # undef HIDDEN_JUMPTARGET # define HIDDEN_JUMPTARGET(name) __GI_##name##@local diff --git a/sysdeps/powerpc/powerpc64/le/Makefile b/sysdeps/powerpc/powerpc64/le/Makefile index 9d568d4f44..b77775cf95 100644 --- a/sysdeps/powerpc/powerpc64/le/Makefile +++ b/sysdeps/powerpc/powerpc64/le/Makefile @@ -129,6 +129,10 @@ CFLAGS-tst-strtod-round.c += $(type-float128-CFLAGS) CFLAGS-tst-wcstod-round.c += $(type-float128-CFLAGS) CFLAGS-tst-strtod-nan-locale.c += $(type-float128-CFLAGS) CFLAGS-tst-wcstod-nan-locale.c += $(type-float128-CFLAGS) +CFLAGS-tst-strtod1i.c += $(type-float128-CFLAGS) +CFLAGS-tst-strtod3.c += $(type-float128-CFLAGS) +CFLAGS-tst-strtod4.c += $(type-float128-CFLAGS) +CFLAGS-tst-strtod5i.c += $(type-float128-CFLAGS) CFLAGS-tst-strtod6.c += $(type-float128-CFLAGS) CFLAGS-tst-strfrom.c += $(type-float128-CFLAGS) CFLAGS-tst-strfrom-locale.c += $(type-float128-CFLAGS) diff --git a/sysdeps/powerpc/powerpc64/le/power9/strcpy.S b/sysdeps/powerpc/powerpc64/le/power9/strcpy.S index 603bde1e39..2f50625a19 100644 --- a/sysdeps/powerpc/powerpc64/le/power9/strcpy.S +++ b/sysdeps/powerpc/powerpc64/le/power9/strcpy.S @@ -42,22 +42,48 @@ if USE_AS_STPCPY is defined. - The implementation can load bytes past a null terminator, but only - up to the next 16B boundary, so it never crosses a page. */ + This implementation never reads across a page boundary, but may + read beyond the NUL terminator. */ -/* Load quadword at addr+offset to vreg, check for null bytes, +/* Load 4 quadwords, merge into one VR for speed and check for NUL + and branch to label if NUL is found. */ +#define CHECK_64B(offset,addr,label) \ + lxv 32+v4,(offset+0)(addr); \ + lxv 32+v5,(offset+16)(addr); \ + lxv 32+v6,(offset+32)(addr); \ + lxv 32+v7,(offset+48)(addr); \ + vminub v14,v4,v5; \ + vminub v15,v6,v7; \ + vminub v16,v14,v15; \ + vcmpequb. v0,v16,v18; \ + beq cr6,$+12; \ + li r7,offset; \ + b L(label); \ + stxv 32+v4,(offset+0)(r11); \ + stxv 32+v5,(offset+16)(r11); \ + stxv 32+v6,(offset+32)(r11); \ + stxv 32+v7,(offset+48)(r11) + +/* Load quadword at addr+offset to vreg, check for NUL bytes, and branch to label if any are found. */ -#define CHECK16(vreg,offset,addr,label) \ - lxv vreg+32,offset(addr); \ - vcmpequb. v6,vreg,v18; \ +#define CHECK_16B(vreg,offset,addr,label) \ + lxv vreg+32,offset(addr); \ + vcmpequb. v15,vreg,v18; \ bne cr6,L(label); -.machine power9 +/* Store vreg2 with length if NUL is found. */ +#define STORE_WITH_LEN(vreg1,vreg2,reg) \ + vctzlsbb r8,vreg1; \ + addi r9,r8,1; \ + sldi r9,r9,56; \ + stxvl 32+vreg2,reg,r9; + +.machine power9 ENTRY_TOCLESS (FUNC_NAME, 4) CALL_MCOUNT 2 - vspltisb v18,0 /* Zeroes in v18 */ - vspltisb v19,-1 /* 0xFF bytes in v19 */ + vspltisb v18,0 /* Zeroes in v18. */ + vspltisb v19,-1 /* 0xFF bytes in v19. */ /* Next 16B-aligned address. Prepare address for L(loop). */ addi r5,r4,16 @@ -70,14 +96,11 @@ ENTRY_TOCLESS (FUNC_NAME, 4) lvsr v1,0,r4 vperm v0,v19,v0,v1 - vcmpequb. v6,v0,v18 /* 0xff if byte is NULL, 0x00 otherwise */ + vcmpequb. v6,v0,v18 /* 0xff if byte is NUL, 0x00 otherwise. */ beq cr6,L(no_null) - /* There's a null byte. */ - vctzlsbb r8,v6 /* Number of trailing zeroes */ - addi r9,r8,1 /* Add null byte. */ - sldi r10,r9,56 /* stxvl wants size in top 8 bits. */ - stxvl 32+v0,r3,r10 /* Partial store */ + /* There's a NUL byte. */ + STORE_WITH_LEN(v6,v0,r3) #ifdef USE_AS_STPCPY /* stpcpy returns the dest address plus the size not counting the @@ -87,17 +110,22 @@ ENTRY_TOCLESS (FUNC_NAME, 4) blr L(no_null): - sldi r10,r8,56 /* stxvl wants size in top 8 bits */ - stxvl 32+v0,r3,r10 /* Partial store */ + sldi r10,r8,56 /* stxvl wants size in top 8 bits. */ + stxvl 32+v0,r3,r10 /* Partial store. */ +/* The main loop is optimized for longer strings(> 512 bytes), + so checking the first bytes in 16B chunks benefits shorter + strings a lot. */ .p2align 4 -L(loop): - CHECK16(v0,0,r5,tail1) - CHECK16(v1,16,r5,tail2) - CHECK16(v2,32,r5,tail3) - CHECK16(v3,48,r5,tail4) - CHECK16(v4,64,r5,tail5) - CHECK16(v5,80,r5,tail6) +L(aligned): + CHECK_16B(v0,0,r5,tail1) + CHECK_16B(v1,16,r5,tail2) + CHECK_16B(v2,32,r5,tail3) + CHECK_16B(v3,48,r5,tail4) + CHECK_16B(v4,64,r5,tail5) + CHECK_16B(v5,80,r5,tail6) + CHECK_16B(v6,96,r5,tail7) + CHECK_16B(v7,112,r5,tail8) stxv 32+v0,0(r11) stxv 32+v1,16(r11) @@ -105,21 +133,146 @@ L(loop): stxv 32+v3,48(r11) stxv 32+v4,64(r11) stxv 32+v5,80(r11) + stxv 32+v6,96(r11) + stxv 32+v7,112(r11) - addi r5,r5,96 - addi r11,r11,96 + addi r11,r11,128 + + CHECK_16B(v0,128,r5,tail1) + CHECK_16B(v1,128+16,r5,tail2) + CHECK_16B(v2,128+32,r5,tail3) + CHECK_16B(v3,128+48,r5,tail4) + CHECK_16B(v4,128+64,r5,tail5) + CHECK_16B(v5,128+80,r5,tail6) + CHECK_16B(v6,128+96,r5,tail7) + CHECK_16B(v7,128+112,r5,tail8) + + stxv 32+v0,0(r11) + stxv 32+v1,16(r11) + stxv 32+v2,32(r11) + stxv 32+v3,48(r11) + stxv 32+v4,64(r11) + stxv 32+v5,80(r11) + stxv 32+v6,96(r11) + stxv 32+v7,112(r11) + + addi r11,r11,128 + + CHECK_16B(v0,256,r5,tail1) + CHECK_16B(v1,256+16,r5,tail2) + CHECK_16B(v2,256+32,r5,tail3) + CHECK_16B(v3,256+48,r5,tail4) + CHECK_16B(v4,256+64,r5,tail5) + CHECK_16B(v5,256+80,r5,tail6) + CHECK_16B(v6,256+96,r5,tail7) + CHECK_16B(v7,256+112,r5,tail8) + + stxv 32+v0,0(r11) + stxv 32+v1,16(r11) + stxv 32+v2,32(r11) + stxv 32+v3,48(r11) + stxv 32+v4,64(r11) + stxv 32+v5,80(r11) + stxv 32+v6,96(r11) + stxv 32+v7,112(r11) + + addi r11,r11,128 + + CHECK_16B(v0,384,r5,tail1) + CHECK_16B(v1,384+16,r5,tail2) + CHECK_16B(v2,384+32,r5,tail3) + CHECK_16B(v3,384+48,r5,tail4) + CHECK_16B(v4,384+64,r5,tail5) + CHECK_16B(v5,384+80,r5,tail6) + CHECK_16B(v6,384+96,r5,tail7) + CHECK_16B(v7,384+112,r5,tail8) + + stxv 32+v0,0(r11) + stxv 32+v1,16(r11) + stxv 32+v2,32(r11) + stxv 32+v3,48(r11) + stxv 32+v4,64(r11) + stxv 32+v5,80(r11) + stxv 32+v6,96(r11) + stxv 32+v7,112(r11) + + /* Align src pointer down to a 64B boundary. */ + addi r5,r4,512 + clrrdi r5,r5,6 + subf r7,r4,r5 + add r11,r3,r7 + +/* Switch to a more aggressive approach checking 64B each time. */ + .p2align 5 +L(strcpy_loop): + CHECK_64B(0,r5,tail_64b) + CHECK_64B(64,r5,tail_64b) + CHECK_64B(128,r5,tail_64b) + CHECK_64B(192,r5,tail_64b) + + CHECK_64B(256,r5,tail_64b) + CHECK_64B(256+64,r5,tail_64b) + CHECK_64B(256+128,r5,tail_64b) + CHECK_64B(256+192,r5,tail_64b) + addi r5,r5,512 + addi r11,r11,512 + + b L(strcpy_loop) + + .p2align 5 +L(tail_64b): + /* OK, we found a NUL byte. Let's look for it in the current 64-byte + block and mark it in its corresponding VR. */ + add r11,r11,r7 + vcmpequb. v8,v4,v18 + beq cr6,L(no_null_16B) + /* There's a NUL byte. */ + STORE_WITH_LEN(v8,v4,r11) +#ifdef USE_AS_STPCPY + add r3,r11,r8 +#endif + blr + +L(no_null_16B): + stxv 32+v4,0(r11) + vcmpequb. v8,v5,v18 + beq cr6,L(no_null_32B) + /* There's a NUL byte. */ + addi r11,r11,16 + STORE_WITH_LEN(v8,v5,r11) +#ifdef USE_AS_STPCPY + add r3,r11,r8 +#endif + blr - b L(loop) +L(no_null_32B): + stxv 32+v5,16(r11) + vcmpequb. v8,v6,v18 + beq cr6,L(no_null_48B) + /* There's a NUL byte. */ + addi r11,r11,32 + STORE_WITH_LEN(v8,v6,r11) +#ifdef USE_AS_STPCPY + add r3,r11,r8 +#endif + blr + +L(no_null_48B): + stxv 32+v6,32(r11) + vcmpequb. v8,v7,v18; + /* There's a NUL byte. */ + addi r11,r11,48 + STORE_WITH_LEN(v8,v7,r11) +#ifdef USE_AS_STPCPY + add r3,r11,r8 +#endif + blr .p2align 4 L(tail1): - vctzlsbb r8,v6 /* Number of trailing zeroes */ - addi r9,r8,1 /* Add null terminator */ - sldi r9,r9,56 /* stxvl wants size in top 8 bits */ - stxvl 32+v0,r11,r9 /* Partial store */ + /* There's a NUL byte. */ + STORE_WITH_LEN(v15,v0,r11) #ifdef USE_AS_STPCPY - /* stpcpy returns the dest address plus the size not counting the - final '\0'. */ add r3,r11,r8 #endif blr @@ -127,11 +280,9 @@ L(tail1): .p2align 4 L(tail2): stxv 32+v0,0(r11) - vctzlsbb r8,v6 - addi r9,r8,1 - sldi r9,r9,56 + /* There's a NUL byte. */ addi r11,r11,16 - stxvl 32+v1,r11,r9 + STORE_WITH_LEN(v15,v1,r11) #ifdef USE_AS_STPCPY add r3,r11,r8 #endif @@ -141,11 +292,8 @@ L(tail2): L(tail3): stxv 32+v0,0(r11) stxv 32+v1,16(r11) - vctzlsbb r8,v6 - addi r9,r8,1 - sldi r9,r9,56 addi r11,r11,32 - stxvl 32+v2,r11,r9 + STORE_WITH_LEN(v15,v2,r11) #ifdef USE_AS_STPCPY add r3,r11,r8 #endif @@ -156,11 +304,8 @@ L(tail4): stxv 32+v0,0(r11) stxv 32+v1,16(r11) stxv 32+v2,32(r11) - vctzlsbb r8,v6 - addi r9,r8,1 - sldi r9,r9,56 addi r11,r11,48 - stxvl 32+v3,r11,r9 + STORE_WITH_LEN(v15,v3,r11) #ifdef USE_AS_STPCPY add r3,r11,r8 #endif @@ -172,11 +317,8 @@ L(tail5): stxv 32+v1,16(r11) stxv 32+v2,32(r11) stxv 32+v3,48(r11) - vctzlsbb r8,v6 - addi r9,r8,1 - sldi r9,r9,56 addi r11,r11,64 - stxvl 32+v4,r11,r9 + STORE_WITH_LEN(v15,v4,r11) #ifdef USE_AS_STPCPY add r3,r11,r8 #endif @@ -189,11 +331,39 @@ L(tail6): stxv 32+v2,32(r11) stxv 32+v3,48(r11) stxv 32+v4,64(r11) - vctzlsbb r8,v6 - addi r9,r8,1 - sldi r9,r9,56 addi r11,r11,80 - stxvl 32+v5,r11,r9 + STORE_WITH_LEN(v15,v5,r11) +#ifdef USE_AS_STPCPY + add r3,r11,r8 +#endif + blr + + .p2align 4 +L(tail7): + stxv 32+v0,0(r11) + stxv 32+v1,16(r11) + stxv 32+v2,32(r11) + stxv 32+v3,48(r11) + stxv 32+v4,64(r11) + stxv 32+v5,80(r11) + addi r11,r11,96 + STORE_WITH_LEN(v15,v6,r11) +#ifdef USE_AS_STPCPY + add r3,r11,r8 +#endif + blr + + .p2align 4 +L(tail8): + stxv 32+v0,0(r11) + stxv 32+v1,16(r11) + stxv 32+v2,32(r11) + stxv 32+v3,48(r11) + stxv 32+v4,64(r11) + stxv 32+v5,80(r11) + stxv 32+v6,96(r11) + addi r11,r11,112 + STORE_WITH_LEN(v15,v7,r11) #ifdef USE_AS_STPCPY add r3,r11,r8 #endif diff --git a/sysdeps/powerpc/powerpc64/sysdep.h b/sysdeps/powerpc/powerpc64/sysdep.h index c363939e1a..c439b06121 100644 --- a/sysdeps/powerpc/powerpc64/sysdep.h +++ b/sysdeps/powerpc/powerpc64/sysdep.h @@ -353,6 +353,25 @@ LT_LABELSUFFIX(name,_name_end): ; \ DO_CALL (SYS_ify (syscall_name)) #ifdef SHARED +# define TAIL_CALL_NO_RETURN(__func) \ + b JUMPTARGET (NOTOC (__func)) +#else +# define TAIL_CALL_NO_RETURN(__func) \ + .ifdef .Local ## __func; \ + b .Local ## __func; \ + .else; \ +.Local ## __func: \ + mflr 0; \ + std 0,FRAME_LR_SAVE(1); \ + stdu 1,-FRAME_MIN_SIZE(1); \ + cfi_adjust_cfa_offset(FRAME_MIN_SIZE); \ + cfi_offset(lr,FRAME_LR_SAVE); \ + bl JUMPTARGET(__func); \ + nop; \ + .endif +#endif + +#ifdef SHARED #define TAIL_CALL_SYSCALL_ERROR \ b JUMPTARGET (NOTOC (__syscall_error)) #else diff --git a/sysdeps/pthread/tst-cancel2.c b/sysdeps/pthread/tst-cancel2.c index ac38b50115..b4f7098235 100644 --- a/sysdeps/pthread/tst-cancel2.c +++ b/sysdeps/pthread/tst-cancel2.c @@ -32,6 +32,10 @@ tf (void *arg) char buf[100000]; while (write (fd[1], buf, sizeof (buf)) > 0); + /* The write can return -1/EPIPE if the pipe was closed before the + thread calls write, which signals a side-effect that must be + signaled to the thread. */ + pthread_testcancel (); return (void *) 42l; } diff --git a/sysdeps/pthread/tst-setuid3.c b/sysdeps/pthread/tst-setuid3.c index 83f42a0ae5..3845ab03d3 100644 --- a/sysdeps/pthread/tst-setuid3.c +++ b/sysdeps/pthread/tst-setuid3.c @@ -15,24 +15,19 @@ License along with the GNU C Library; if not, see <https://www.gnu.org/licenses/>. */ -#include <stdio.h> #include <errno.h> #include <pthread.h> #include <stdbool.h> #include <unistd.h> +#include <support/check.h> + /* The test must run under a non-privileged user ID. */ static const uid_t test_uid = 1; static pthread_barrier_t barrier1; static pthread_barrier_t barrier2; -#define FAIL(fmt, ...) \ - do { printf ("FAIL: " fmt "\n", __VA_ARGS__); _exit (1); } while (0) - -#define FAIL_ERR(fmt, ...) \ - do { printf ("FAIL: " fmt ": %m\n", __VA_ARGS__); _exit (1); } while (0) - /* True if x is not a successful return code from pthread_barrier_wait. */ static inline bool is_invalid_barrier_ret (int x) @@ -45,10 +40,10 @@ thread_func (void *ctx __attribute__ ((unused))) { int ret = pthread_barrier_wait (&barrier1); if (is_invalid_barrier_ret (ret)) - FAIL ("pthread_barrier_wait (barrier1) (on thread): %d", ret); + FAIL_EXIT1 ("pthread_barrier_wait (barrier1) (on thread): %d", ret); ret = pthread_barrier_wait (&barrier2); if (is_invalid_barrier_ret (ret)) - FAIL ("pthread_barrier_wait (barrier2) (on thread): %d", ret); + FAIL_EXIT1 ("pthread_barrier_wait (barrier2) (on thread): %d", ret); return NULL; } @@ -59,13 +54,13 @@ setuid_failure (int phase) switch (ret) { case 0: - FAIL ("setuid succeeded unexpectedly in phase %d", phase); + FAIL_EXIT1 ("setuid succeeded unexpectedly in phase %d", phase); case -1: if (errno != EPERM) - FAIL_ERR ("setuid phase %d", phase); + FAIL_EXIT1 ("setuid phase %d: %m", phase); break; default: - FAIL ("invalid setuid return value in phase %d: %d", phase, ret); + FAIL_EXIT1 ("invalid setuid return value in phase %d: %d", phase, ret); } } @@ -74,42 +69,42 @@ do_test (void) { if (getuid () == 0) if (setuid (test_uid) != 0) - FAIL_ERR ("setuid (%u)", (unsigned) test_uid); + FAIL_EXIT1 ("setuid (%u): %m", (unsigned) test_uid); if (setuid (getuid ())) - FAIL_ERR ("setuid (%s)", "getuid ()"); + FAIL_EXIT1 ("setuid (%s): %m", "getuid ()"); setuid_failure (1); int ret = pthread_barrier_init (&barrier1, NULL, 2); if (ret != 0) - FAIL ("pthread_barrier_init (barrier1): %d", ret); + FAIL_EXIT1 ("pthread_barrier_init (barrier1): %d", ret); ret = pthread_barrier_init (&barrier2, NULL, 2); if (ret != 0) - FAIL ("pthread_barrier_init (barrier2): %d", ret); + FAIL_EXIT1 ("pthread_barrier_init (barrier2): %d", ret); pthread_t thread; ret = pthread_create (&thread, NULL, thread_func, NULL); if (ret != 0) - FAIL ("pthread_create: %d", ret); + FAIL_EXIT1 ("pthread_create: %d", ret); /* Ensure that the thread is running properly. */ ret = pthread_barrier_wait (&barrier1); if (is_invalid_barrier_ret (ret)) - FAIL ("pthread_barrier_wait (barrier1): %d", ret); + FAIL_EXIT1 ("pthread_barrier_wait (barrier1): %d", ret); setuid_failure (2); /* Check success case. */ if (setuid (getuid ()) != 0) - FAIL_ERR ("setuid (%s)", "getuid ()"); + FAIL_EXIT1 ("setuid (%s): %m", "getuid ()"); /* Shutdown. */ ret = pthread_barrier_wait (&barrier2); if (is_invalid_barrier_ret (ret)) - FAIL ("pthread_barrier_wait (barrier2): %d", ret); + FAIL_EXIT1 ("pthread_barrier_wait (barrier2): %d", ret); ret = pthread_join (thread, NULL); if (ret != 0) - FAIL ("pthread_join: %d", ret); + FAIL_EXIT1 ("pthread_join: %d", ret); return 0; } diff --git a/sysdeps/riscv/rvd/libm-test-ulps b/sysdeps/riscv/rvd/libm-test-ulps index b9df07dc8c..233186f29a 100644 --- a/sysdeps/riscv/rvd/libm-test-ulps +++ b/sysdeps/riscv/rvd/libm-test-ulps @@ -976,24 +976,24 @@ float: 1 ldouble: 3 Function: "exp10m1": -double: 2 -float: 1 -ldouble: 1 +double: 4 +float: 2 +ldouble: 3 Function: "exp10m1_downward": -double: 1 -float: 1 -ldouble: 3 +double: 3 +float: 3 +ldouble: 6 Function: "exp10m1_towardzero": -double: 1 -float: 1 -ldouble: 3 +double: 2 +float: 3 +ldouble: 6 Function: "exp10m1_upward": -double: 3 -float: 1 -ldouble: 3 +double: 5 +float: 3 +ldouble: 6 Function: "exp2": double: 1 @@ -1013,24 +1013,24 @@ float: 1 ldouble: 2 Function: "exp2m1": -double: 1 -float: 1 -ldouble: 1 +double: 2 +float: 2 +ldouble: 2 Function: "exp2m1_downward": -double: 1 -float: 1 -ldouble: 2 +double: 3 +float: 3 +ldouble: 3 Function: "exp2m1_towardzero": -double: 2 -float: 1 -ldouble: 2 +double: 3 +float: 2 +ldouble: 4 Function: "exp2m1_upward": -double: 1 -float: 1 -ldouble: 2 +double: 3 +float: 3 +ldouble: 5 Function: "exp_downward": double: 1 @@ -1206,24 +1206,24 @@ float: 2 ldouble: 1 Function: "log10p1": -double: 1 -float: 1 +double: 2 +float: 2 ldouble: 3 Function: "log10p1_downward": double: 2 -float: 1 -ldouble: 2 +float: 3 +ldouble: 4 Function: "log10p1_towardzero": -double: 2 +double: 3 float: 2 -ldouble: 2 +ldouble: 3 Function: "log10p1_upward": double: 2 -float: 1 -ldouble: 3 +float: 3 +ldouble: 4 Function: "log1p": double: 1 @@ -1263,8 +1263,8 @@ double: 3 ldouble: 1 Function: "log2p1": -double: 1 -float: 1 +double: 2 +float: 2 ldouble: 3 Function: "log2p1_downward": @@ -1278,9 +1278,9 @@ float: 2 ldouble: 2 Function: "log2p1_upward": -double: 1 +double: 2 float: 2 -ldouble: 2 +ldouble: 3 Function: "log_downward": ldouble: 1 diff --git a/sysdeps/s390/fpu/libm-test-ulps b/sysdeps/s390/fpu/libm-test-ulps index 4ffd344a4e..e10b5c69ae 100644 --- a/sysdeps/s390/fpu/libm-test-ulps +++ b/sysdeps/s390/fpu/libm-test-ulps @@ -977,24 +977,24 @@ float: 1 ldouble: 3 Function: "exp10m1": -double: 2 -float: 1 -ldouble: 1 +double: 4 +float: 2 +ldouble: 3 Function: "exp10m1_downward": -double: 1 -float: 1 -ldouble: 3 +double: 3 +float: 3 +ldouble: 6 Function: "exp10m1_towardzero": -double: 1 -float: 1 -ldouble: 3 +double: 2 +float: 3 +ldouble: 6 Function: "exp10m1_upward": -double: 3 -float: 1 -ldouble: 3 +double: 5 +float: 3 +ldouble: 6 Function: "exp2": double: 1 @@ -1014,24 +1014,24 @@ float: 1 ldouble: 2 Function: "exp2m1": -double: 1 -float: 1 -ldouble: 1 +double: 2 +float: 2 +ldouble: 2 Function: "exp2m1_downward": -double: 1 -float: 1 -ldouble: 2 +double: 3 +float: 3 +ldouble: 3 Function: "exp2m1_towardzero": -double: 2 -float: 1 -ldouble: 2 +double: 3 +float: 2 +ldouble: 4 Function: "exp2m1_upward": -double: 1 -float: 1 -ldouble: 2 +double: 3 +float: 3 +ldouble: 5 Function: "exp_downward": double: 1 @@ -1207,24 +1207,24 @@ float: 2 ldouble: 1 Function: "log10p1": -double: 1 -float: 1 +double: 2 +float: 2 ldouble: 3 Function: "log10p1_downward": double: 2 -float: 1 -ldouble: 2 +float: 3 +ldouble: 4 Function: "log10p1_towardzero": -double: 2 +double: 3 float: 2 -ldouble: 2 +ldouble: 3 Function: "log10p1_upward": double: 2 -float: 1 -ldouble: 3 +float: 3 +ldouble: 4 Function: "log1p": double: 1 @@ -1262,8 +1262,8 @@ double: 1 ldouble: 1 Function: "log2p1": -double: 1 -float: 1 +double: 2 +float: 2 ldouble: 3 Function: "log2p1_downward": @@ -1277,9 +1277,9 @@ float: 2 ldouble: 2 Function: "log2p1_upward": -double: 1 +double: 2 float: 2 -ldouble: 2 +ldouble: 3 Function: "log_downward": ldouble: 1 diff --git a/sysdeps/s390/wcsncmp-vx.S b/sysdeps/s390/wcsncmp-vx.S index bf6dfa6bc2..8b081567a2 100644 --- a/sysdeps/s390/wcsncmp-vx.S +++ b/sysdeps/s390/wcsncmp-vx.S @@ -59,14 +59,7 @@ ENTRY(WCSNCMP_Z13) sllg %r4,%r4,2 /* Convert character-count to byte-count. */ locgrne %r4,%r1 /* Use max byte-count, if bit 0/1 was one. */ - /* Check first character without vector load. */ - lghi %r5,4 /* current_len = 4 bytes. */ - /* Check s1/2[0]. */ - lt %r0,0(%r2) - l %r1,0(%r3) - je .Lend_cmp_one_char - crjne %r0,%r1,.Lend_cmp_one_char - + lghi %r5,0 /* current_len = 0 bytes. */ .Lloop: vlbb %v17,0(%r5,%r3),6 /* Load s2 to block boundary. */ vlbb %v16,0(%r5,%r2),6 /* Load s1 to block boundary. */ @@ -167,7 +160,6 @@ ENTRY(WCSNCMP_Z13) srl %r4,2 /* And convert it to character-index. */ vlgvf %r0,%v16,0(%r4) /* Load character-values. */ vlgvf %r1,%v17,0(%r4) -.Lend_cmp_one_char: cr %r0,%r1 je .Lend_equal lghi %r2,1 diff --git a/sysdeps/sh/sysdep.h b/sysdeps/sh/sysdep.h index 0c9e5626e9..377d29b950 100644 --- a/sysdeps/sh/sysdep.h +++ b/sysdeps/sh/sysdep.h @@ -24,6 +24,7 @@ #define ALIGNARG(log2) log2 #define ASM_SIZE_DIRECTIVE(name) .size name,.-name +#define L(label) .L##label #ifdef SHARED #define PLTJMP(_x) _x##@PLT diff --git a/sysdeps/sparc/fpu/libm-test-ulps b/sysdeps/sparc/fpu/libm-test-ulps index 23523f094f..1bb8b7c5f4 100644 --- a/sysdeps/sparc/fpu/libm-test-ulps +++ b/sysdeps/sparc/fpu/libm-test-ulps @@ -977,24 +977,24 @@ float: 1 ldouble: 3 Function: "exp10m1": -double: 2 -float: 1 -ldouble: 1 +double: 3 +float: 2 +ldouble: 3 Function: "exp10m1_downward": -double: 1 -float: 1 -ldouble: 3 +double: 3 +float: 3 +ldouble: 6 Function: "exp10m1_towardzero": -double: 1 -float: 1 -ldouble: 3 +double: 2 +float: 3 +ldouble: 6 Function: "exp10m1_upward": -double: 3 -float: 1 -ldouble: 3 +double: 4 +float: 4 +ldouble: 6 Function: "exp2": double: 1 @@ -1017,24 +1017,24 @@ float: 1 ldouble: 2 Function: "exp2m1": -double: 1 -float: 1 -ldouble: 1 - -Function: "exp2m1_downward": double: 2 -float: 1 +float: 2 ldouble: 2 +Function: "exp2m1_downward": +double: 3 +float: 3 +ldouble: 3 + Function: "exp2m1_towardzero": -double: 2 -float: 1 -ldouble: 2 +double: 3 +float: 2 +ldouble: 4 Function: "exp2m1_upward": -double: 1 -float: 1 -ldouble: 2 +double: 3 +float: 3 +ldouble: 5 Function: "exp_downward": double: 1 @@ -1212,23 +1212,23 @@ ldouble: 1 Function: "log10p1": double: 1 -float: 1 +float: 2 ldouble: 3 Function: "log10p1_downward": double: 2 -float: 1 -ldouble: 2 +float: 3 +ldouble: 4 Function: "log10p1_towardzero": -double: 2 +double: 3 float: 2 -ldouble: 2 +ldouble: 3 Function: "log10p1_upward": double: 2 -float: 1 -ldouble: 3 +float: 3 +ldouble: 4 Function: "log1p": double: 1 @@ -1272,7 +1272,7 @@ ldouble: 1 Function: "log2p1": double: 1 -float: 1 +float: 2 ldouble: 3 Function: "log2p1_downward": @@ -1286,9 +1286,9 @@ float: 2 ldouble: 2 Function: "log2p1_upward": -double: 1 +double: 2 float: 2 -ldouble: 2 +ldouble: 3 Function: "log_downward": float: 2 diff --git a/sysdeps/unix/sysdep.h b/sysdeps/unix/sysdep.h index a19e84165b..adc8d71f49 100644 --- a/sysdeps/unix/sysdep.h +++ b/sysdeps/unix/sysdep.h @@ -24,6 +24,9 @@ #define SYSCALL__(name, args) PSEUDO (__##name, name, args) #define SYSCALL(name, args) PSEUDO (name, name, args) +#ifndef __ASSEMBLER__ +# include <errno.h> + #define __SYSCALL_CONCAT_X(a,b) a##b #define __SYSCALL_CONCAT(a,b) __SYSCALL_CONCAT_X (a, b) @@ -108,42 +111,148 @@ #define INLINE_SYSCALL_CALL(...) \ __INLINE_SYSCALL_DISP (__INLINE_SYSCALL, __VA_ARGS__) -#if IS_IN (rtld) -/* All cancellation points are compiled out in the dynamic loader. */ -# define NO_SYSCALL_CANCEL_CHECKING 1 +#define __INTERNAL_SYSCALL_NCS0(name) \ + INTERNAL_SYSCALL_NCS (name, 0) +#define __INTERNAL_SYSCALL_NCS1(name, a1) \ + INTERNAL_SYSCALL_NCS (name, 1, a1) +#define __INTERNAL_SYSCALL_NCS2(name, a1, a2) \ + INTERNAL_SYSCALL_NCS (name, 2, a1, a2) +#define __INTERNAL_SYSCALL_NCS3(name, a1, a2, a3) \ + INTERNAL_SYSCALL_NCS (name, 3, a1, a2, a3) +#define __INTERNAL_SYSCALL_NCS4(name, a1, a2, a3, a4) \ + INTERNAL_SYSCALL_NCS (name, 4, a1, a2, a3, a4) +#define __INTERNAL_SYSCALL_NCS5(name, a1, a2, a3, a4, a5) \ + INTERNAL_SYSCALL_NCS (name, 5, a1, a2, a3, a4, a5) +#define __INTERNAL_SYSCALL_NCS6(name, a1, a2, a3, a4, a5, a6) \ + INTERNAL_SYSCALL_NCS (name, 6, a1, a2, a3, a4, a5, a6) +#define __INTERNAL_SYSCALL_NCS7(name, a1, a2, a3, a4, a5, a6, a7) \ + INTERNAL_SYSCALL_NCS (name, 7, a1, a2, a3, a4, a5, a6, a7) + +/* Issue a syscall defined by syscall number plus any other argument required. + It is similar to INTERNAL_SYSCALL_NCS macro, but without the need to pass + the expected argument number as third parameter. */ +#define INTERNAL_SYSCALL_NCS_CALL(...) \ + __INTERNAL_SYSCALL_DISP (__INTERNAL_SYSCALL_NCS, __VA_ARGS__) + +/* Cancellation macros. */ +#include <syscall_types.h> + +/* Adjust both the __syscall_cancel and the SYSCALL_CANCEL macro to support + 7 arguments instead of default 6 (curently only mip32). It avoid add + the requirement to each architecture to support 7 argument macros + {INTERNAL,INLINE}_SYSCALL. */ +#ifdef HAVE_CANCELABLE_SYSCALL_WITH_7_ARGS +# define __SYSCALL_CANCEL7_ARG_DEF __syscall_arg_t a7, +# define __SYSCALL_CANCEL7_ARCH_ARG_DEF ,__syscall_arg_t a7 +# define __SYSCALL_CANCEL7_ARG 0, +# define __SYSCALL_CANCEL7_ARG7 a7, +# define __SYSCALL_CANCEL7_ARCH_ARG7 , a7 #else -# define NO_SYSCALL_CANCEL_CHECKING SINGLE_THREAD_P +# define __SYSCALL_CANCEL7_ARG_DEF +# define __SYSCALL_CANCEL7_ARCH_ARG_DEF +# define __SYSCALL_CANCEL7_ARG +# define __SYSCALL_CANCEL7_ARG7 +# define __SYSCALL_CANCEL7_ARCH_ARG7 #endif +long int __internal_syscall_cancel (__syscall_arg_t a1, __syscall_arg_t a2, + __syscall_arg_t a3, __syscall_arg_t a4, + __syscall_arg_t a5, __syscall_arg_t a6, + __SYSCALL_CANCEL7_ARG_DEF + __syscall_arg_t nr) attribute_hidden; -#define SYSCALL_CANCEL(...) \ - ({ \ - long int sc_ret; \ - if (NO_SYSCALL_CANCEL_CHECKING) \ - sc_ret = INLINE_SYSCALL_CALL (__VA_ARGS__); \ - else \ - { \ - int sc_cancel_oldtype = LIBC_CANCEL_ASYNC (); \ - sc_ret = INLINE_SYSCALL_CALL (__VA_ARGS__); \ - LIBC_CANCEL_RESET (sc_cancel_oldtype); \ - } \ - sc_ret; \ - }) +long int __syscall_cancel (__syscall_arg_t arg1, __syscall_arg_t arg2, + __syscall_arg_t arg3, __syscall_arg_t arg4, + __syscall_arg_t arg5, __syscall_arg_t arg6, + __SYSCALL_CANCEL7_ARG_DEF + __syscall_arg_t nr) attribute_hidden; -/* Issue a syscall defined by syscall number plus any other argument - required. Any error will be returned unmodified (including errno). */ -#define INTERNAL_SYSCALL_CANCEL(...) \ - ({ \ - long int sc_ret; \ - if (NO_SYSCALL_CANCEL_CHECKING) \ - sc_ret = INTERNAL_SYSCALL_CALL (__VA_ARGS__); \ - else \ - { \ - int sc_cancel_oldtype = LIBC_CANCEL_ASYNC (); \ - sc_ret = INTERNAL_SYSCALL_CALL (__VA_ARGS__); \ - LIBC_CANCEL_RESET (sc_cancel_oldtype); \ - } \ - sc_ret; \ - }) +#define __SYSCALL_CANCEL0(name) \ + __syscall_cancel (0, 0, 0, 0, 0, 0, __SYSCALL_CANCEL7_ARG __NR_##name) +#define __SYSCALL_CANCEL1(name, a1) \ + __syscall_cancel (__SSC (a1), 0, 0, 0, 0, 0, \ + __SYSCALL_CANCEL7_ARG __NR_##name) +#define __SYSCALL_CANCEL2(name, a1, a2) \ + __syscall_cancel (__SSC (a1), __SSC (a2), 0, 0, 0, 0, \ + __SYSCALL_CANCEL7_ARG __NR_##name) +#define __SYSCALL_CANCEL3(name, a1, a2, a3) \ + __syscall_cancel (__SSC (a1), __SSC (a2), __SSC (a3), 0, 0, 0, \ + __SYSCALL_CANCEL7_ARG __NR_##name) +#define __SYSCALL_CANCEL4(name, a1, a2, a3, a4) \ + __syscall_cancel (__SSC (a1), __SSC (a2), __SSC (a3), \ + __SSC(a4), 0, 0, __SYSCALL_CANCEL7_ARG __NR_##name) +#define __SYSCALL_CANCEL5(name, a1, a2, a3, a4, a5) \ + __syscall_cancel (__SSC (a1), __SSC (a2), __SSC (a3), __SSC(a4), \ + __SSC (a5), 0, __SYSCALL_CANCEL7_ARG __NR_##name) +#define __SYSCALL_CANCEL6(name, a1, a2, a3, a4, a5, a6) \ + __syscall_cancel (__SSC (a1), __SSC (a2), __SSC (a3), __SSC (a4), \ + __SSC (a5), __SSC (a6), __SYSCALL_CANCEL7_ARG \ + __NR_##name) +#define __SYSCALL_CANCEL7(name, a1, a2, a3, a4, a5, a6, a7) \ + __syscall_cancel (__SSC (a1), __SSC (a2), __SSC (a3), __SSC (a4), \ + __SSC (a5), __SSC (a6), __SSC (a7), __NR_##name) + +#define __SYSCALL_CANCEL_NARGS_X(a,b,c,d,e,f,g,h,n,...) n +#define __SYSCALL_CANCEL_NARGS(...) \ + __SYSCALL_CANCEL_NARGS_X (__VA_ARGS__,7,6,5,4,3,2,1,0,) +#define __SYSCALL_CANCEL_CONCAT_X(a,b) a##b +#define __SYSCALL_CANCEL_CONCAT(a,b) __SYSCALL_CANCEL_CONCAT_X (a, b) +#define __SYSCALL_CANCEL_DISP(b,...) \ + __SYSCALL_CANCEL_CONCAT (b,__SYSCALL_CANCEL_NARGS(__VA_ARGS__))(__VA_ARGS__) + +/* Issue a cancellable syscall defined first argument plus any other argument + required. If and error occurs its value, the macro returns -1 and sets + errno accordingly. */ +#define __SYSCALL_CANCEL_CALL(...) \ + __SYSCALL_CANCEL_DISP (__SYSCALL_CANCEL, __VA_ARGS__) + +#define __INTERNAL_SYSCALL_CANCEL0(name) \ + __internal_syscall_cancel (0, 0, 0, 0, 0, 0, __SYSCALL_CANCEL7_ARG \ + __NR_##name) +#define __INTERNAL_SYSCALL_CANCEL1(name, a1) \ + __internal_syscall_cancel (__SSC (a1), 0, 0, 0, 0, 0, \ + __SYSCALL_CANCEL7_ARG __NR_##name) +#define __INTERNAL_SYSCALL_CANCEL2(name, a1, a2) \ + __internal_syscall_cancel (__SSC (a1), __SSC (a2), 0, 0, 0, 0, \ + __SYSCALL_CANCEL7_ARG __NR_##name) +#define __INTERNAL_SYSCALL_CANCEL3(name, a1, a2, a3) \ + __internal_syscall_cancel (__SSC (a1), __SSC (a2), __SSC (a3), 0, \ + 0, 0, __SYSCALL_CANCEL7_ARG __NR_##name) +#define __INTERNAL_SYSCALL_CANCEL4(name, a1, a2, a3, a4) \ + __internal_syscall_cancel (__SSC (a1), __SSC (a2), __SSC (a3), \ + __SSC(a4), 0, 0, \ + __SYSCALL_CANCEL7_ARG __NR_##name) +#define __INTERNAL_SYSCALL_CANCEL5(name, a1, a2, a3, a4, a5) \ + __internal_syscall_cancel (__SSC (a1), __SSC (a2), __SSC (a3), \ + __SSC(a4), __SSC (a5), 0, \ + __SYSCALL_CANCEL7_ARG __NR_##name) +#define __INTERNAL_SYSCALL_CANCEL6(name, a1, a2, a3, a4, a5, a6) \ + __internal_syscall_cancel (__SSC (a1), __SSC (a2), __SSC (a3), \ + __SSC (a4), __SSC (a5), __SSC (a6), \ + __SYSCALL_CANCEL7_ARG __NR_##name) +#define __INTERNAL_SYSCALL_CANCEL7(name, a1, a2, a3, a4, a5, a6, a7) \ + __internal_syscall_cancel (__SSC (a1), __SSC (a2), __SSC (a3), \ + __SSC (a4), __SSC (a5), __SSC (a6), \ + __SSC (a7), __NR_##name) + +/* Issue a cancellable syscall defined by syscall number NAME plus any other + argument required. If an error occurs its value is returned as an negative + number unmodified and errno is not set. */ +#define __INTERNAL_SYSCALL_CANCEL_CALL(...) \ + __SYSCALL_CANCEL_DISP (__INTERNAL_SYSCALL_CANCEL, __VA_ARGS__) + +#if IS_IN (rtld) +/* The loader does not need to handle thread cancellation, use direct + syscall instead. */ +# define INTERNAL_SYSCALL_CANCEL(...) INTERNAL_SYSCALL_CALL(__VA_ARGS__) +# define SYSCALL_CANCEL(...) INLINE_SYSCALL_CALL (__VA_ARGS__) +#else +# define INTERNAL_SYSCALL_CANCEL(...) \ + __INTERNAL_SYSCALL_CANCEL_CALL (__VA_ARGS__) +# define SYSCALL_CANCEL(...) \ + __SYSCALL_CANCEL_CALL (__VA_ARGS__) +#endif + +#endif /* __ASSEMBLER__ */ /* Machine-dependent sysdep.h files are expected to define the macro PSEUDO (function_name, syscall_name) to emit assembly code to define the diff --git a/sysdeps/unix/sysv/linux/Makefile b/sysdeps/unix/sysv/linux/Makefile index 097b5a26fc..59998c7af4 100644 --- a/sysdeps/unix/sysv/linux/Makefile +++ b/sysdeps/unix/sysv/linux/Makefile @@ -206,6 +206,7 @@ tests += \ tst-getauxval \ tst-gettid \ tst-gettid-kill \ + tst-linux-mremap1 \ tst-memfd_create \ tst-misalign-clone \ tst-mlock2 \ diff --git a/sysdeps/unix/sysv/linux/____longjmp_chk.c b/sysdeps/unix/sysv/linux/____longjmp_chk.c index 0896dc5755..3c66a4638e 100644 --- a/sysdeps/unix/sysv/linux/____longjmp_chk.c +++ b/sysdeps/unix/sysv/linux/____longjmp_chk.c @@ -23,7 +23,7 @@ #include <stdio.h> #include <stackinfo.h> -#ifdef _STACK_GROWS_DOWN +#if _STACK_GROWS_DOWN #define called_from(this, saved) ((this) < (saved)) #else #define called_from(this, saved) ((this) > (saved)) diff --git a/sysdeps/unix/sysv/linux/aarch64/arch-syscall.h b/sysdeps/unix/sysv/linux/aarch64/arch-syscall.h index 7ee8a2167a..19b6316cb6 100644 --- a/sysdeps/unix/sysv/linux/aarch64/arch-syscall.h +++ b/sysdeps/unix/sysv/linux/aarch64/arch-syscall.h @@ -158,6 +158,7 @@ #define __NR_mq_timedsend 182 #define __NR_mq_unlink 181 #define __NR_mremap 216 +#define __NR_mseal 462 #define __NR_msgctl 187 #define __NR_msgget 186 #define __NR_msgrcv 188 diff --git a/sysdeps/unix/sysv/linux/aarch64/syscall_cancel.S b/sysdeps/unix/sysv/linux/aarch64/syscall_cancel.S new file mode 100644 index 0000000000..e91a431b36 --- /dev/null +++ b/sysdeps/unix/sysv/linux/aarch64/syscall_cancel.S @@ -0,0 +1,59 @@ +/* Cancellable syscall wrapper. Linux/AArch64 version. + Copyright (C) 2023 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +#include <sysdep.h> +#include <descr-const.h> + +/* long int [x0] __syscall_cancel_arch (int *cancelhandling [x0], + long int nr [x1], + long int arg1 [x2], + long int arg2 [x3], + long int arg3 [x4], + long int arg4 [x5], + long int arg5 [x6], + long int arg6 [x7]) */ + +ENTRY (__syscall_cancel_arch) + + .globl __syscall_cancel_arch_start +__syscall_cancel_arch_start: + + /* if (*cancelhandling & CANCELED_BITMASK) + __syscall_do_cancel() */ + ldr w0, [x0] + tbnz w0, TCB_CANCELED_BIT, 1f + + /* Issue a 6 argument syscall, the nr [x1] being the syscall + number. */ + mov x8, x1 + mov x0, x2 + mov x1, x3 + mov x2, x4 + mov x3, x5 + mov x4, x6 + mov x5, x7 + svc 0x0 + + .globl __syscall_cancel_arch_end +__syscall_cancel_arch_end: + ret + +1: + b __syscall_do_cancel + +END (__syscall_cancel_arch) diff --git a/sysdeps/unix/sysv/linux/alpha/arch-syscall.h b/sysdeps/unix/sysv/linux/alpha/arch-syscall.h index 0f4ea7670b..216a5575c6 100644 --- a/sysdeps/unix/sysv/linux/alpha/arch-syscall.h +++ b/sysdeps/unix/sysv/linux/alpha/arch-syscall.h @@ -24,6 +24,7 @@ #define __NR_clock_nanosleep 422 #define __NR_clock_settime 419 #define __NR_clone 312 +#define __NR_clone3 545 #define __NR_close 6 #define __NR_close_range 546 #define __NR_connect 98 @@ -189,6 +190,7 @@ #define __NR_mq_timedsend 434 #define __NR_mq_unlink 433 #define __NR_mremap 341 +#define __NR_mseal 572 #define __NR_msgctl 200 #define __NR_msgget 201 #define __NR_msgrcv 202 diff --git a/sysdeps/unix/sysv/linux/alpha/syscall_cancel.S b/sysdeps/unix/sysv/linux/alpha/syscall_cancel.S new file mode 100644 index 0000000000..377eef48be --- /dev/null +++ b/sysdeps/unix/sysv/linux/alpha/syscall_cancel.S @@ -0,0 +1,80 @@ +/* Cancellable syscall wrapper. Linux/alpha version. + Copyright (C) 2023 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +#include <sysdep.h> +#include <descr-const.h> + +/* long int __syscall_cancel_arch (int *ch, + __syscall_arg_t nr, + __syscall_arg_t arg1, + __syscall_arg_t arg2, + __syscall_arg_t arg3, + __syscall_arg_t arg4, + __syscall_arg_t arg5, + __syscall_arg_t arg6) */ + + .set noreorder + .set noat + .set nomacro +ENTRY (__syscall_cancel_arch) + .frame sp, 16, ra, 0 + .mask 0x4000000,-16 + cfi_startproc + ldah gp, 0(t12) + lda gp, 0(gp) + lda sp, -16(sp) + cfi_def_cfa_offset (16) + mov a1, v0 + stq ra, 0(sp) + cfi_offset (26, -16) + .prologue 1 + + .global __syscall_cancel_arch_start +__syscall_cancel_arch_start: + ldl t0, 0(a0) + addl zero, t0, t0 + /* if (*ch & CANCELED_BITMASK) */ + and t0, TCB_CANCELED_BITMASK, t0 + bne t0, 1f + mov a2, a0 + mov a3, a1 + mov a4, a2 + ldq a4, 16(sp) + mov a5, a3 + ldq a5, 24(sp) + .set macro + callsys + .set nomacro + + .global __syscall_cancel_arch_end +__syscall_cancel_arch_end: + subq zero, v0, t0 + ldq ra, 0(sp) + cmovne a3, t0, v0 + lda sp, 16(sp) + cfi_remember_state + cfi_restore (26) + cfi_def_cfa_offset (0) + ret zero, (ra), 1 + .align 4 +1: + cfi_restore_state + ldq t12, __syscall_do_cancel(gp) !literal!2 + jsr ra, (t12), __syscall_do_cancel !lituse_jsr!2 + cfi_endproc +END (__syscall_cancel_arch) diff --git a/sysdeps/unix/sysv/linux/arc/arch-syscall.h b/sysdeps/unix/sysv/linux/arc/arch-syscall.h index 90359482a8..ea581b0a6d 100644 --- a/sysdeps/unix/sysv/linux/arc/arch-syscall.h +++ b/sysdeps/unix/sysv/linux/arc/arch-syscall.h @@ -161,6 +161,7 @@ #define __NR_mq_timedsend_time64 418 #define __NR_mq_unlink 181 #define __NR_mremap 216 +#define __NR_mseal 462 #define __NR_msgctl 187 #define __NR_msgget 186 #define __NR_msgrcv 188 diff --git a/sysdeps/unix/sysv/linux/arc/syscall_cancel.S b/sysdeps/unix/sysv/linux/arc/syscall_cancel.S new file mode 100644 index 0000000000..fa02af4163 --- /dev/null +++ b/sysdeps/unix/sysv/linux/arc/syscall_cancel.S @@ -0,0 +1,56 @@ +/* Cancellable syscall wrapper. Linux/ARC version. + Copyright (C) 2023 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +#include <sysdep.h> +#include <descr-const.h> + +/* long int __syscall_cancel_arch (int *cancelhandling, + __syscall_arg_t nr, + __syscall_arg_t arg1, + __syscall_arg_t arg2, + __syscall_arg_t arg3, + __syscall_arg_t arg4, + __syscall_arg_t arg5, + __syscall_arg_t arg6) */ + +ENTRY (__syscall_cancel_arch) + + .globl __syscall_cancel_arch_start +__syscall_cancel_arch_start: + ld_s r12,[r0] + bbit1 r12, TCB_CANCELED_BITMASK, 1f + mov_s r8, r1 + mov_s r0, r2 + mov_s r1, r3 + mov_s r2, r4 + mov_s r3, r5 + mov_s r4, r6 + mov_s r5, r7 + trap_s 0 + + .globl __syscall_cancel_arch_end +__syscall_cancel_arch_end: + j_s [blink] + + .align 4 +1: push_s blink + cfi_def_cfa_offset (4) + cfi_offset (31, -4) + bl @__syscall_do_cancel + +END (__syscall_cancel_arch) diff --git a/sysdeps/unix/sysv/linux/arm/arch-syscall.h b/sysdeps/unix/sysv/linux/arm/arch-syscall.h index 4930167a03..2809f52f94 100644 --- a/sysdeps/unix/sysv/linux/arm/arch-syscall.h +++ b/sysdeps/unix/sysv/linux/arm/arch-syscall.h @@ -205,6 +205,7 @@ #define __NR_mq_timedsend_time64 418 #define __NR_mq_unlink 275 #define __NR_mremap 163 +#define __NR_mseal 462 #define __NR_msgctl 304 #define __NR_msgget 303 #define __NR_msgrcv 302 diff --git a/sysdeps/unix/sysv/linux/arm/syscall_cancel.S b/sysdeps/unix/sysv/linux/arm/syscall_cancel.S new file mode 100644 index 0000000000..6b899306e3 --- /dev/null +++ b/sysdeps/unix/sysv/linux/arm/syscall_cancel.S @@ -0,0 +1,78 @@ +/* Cancellable syscall wrapper. Linux/arm version. + Copyright (C) 2023 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +#include <sysdep.h> +#include <descr-const.h> + +/* long int [r0] __syscall_cancel_arch (int *cancelhandling [r0], + long int nr [r1], + long int arg1 [r2], + long int arg2 [r3], + long int arg3 [SP], + long int arg4 [SP+4], + long int arg5 [SP+8], + long int arg6 [SP+12]) */ + + .syntax unified + +ENTRY (__syscall_cancel_arch) + .fnstart + mov ip, sp + stmfd sp!, {r4, r5, r6, r7, lr} + .save {r4, r5, r6, r7, lr} + + cfi_adjust_cfa_offset (20) + cfi_rel_offset (r4, 0) + cfi_rel_offset (r5, 4) + cfi_rel_offset (r6, 8) + cfi_rel_offset (r7, 12) + cfi_rel_offset (lr, 16) + + .globl __syscall_cancel_arch_start +__syscall_cancel_arch_start: + + /* if (*cancelhandling & CANCELED_BITMASK) + __syscall_do_cancel() */ + ldr r0, [r0] + tst r0, #TCB_CANCELED_BITMASK + bne 1f + + /* Issue a 6 argument syscall, the nr [r1] being the syscall + number. */ + mov r7, r1 + mov r0, r2 + mov r1, r3 + ldmfd ip, {r2, r3, r4, r5, r6} + svc 0x0 + + .globl __syscall_cancel_arch_end +__syscall_cancel_arch_end: + ldmfd sp!, {r4, r5, r6, r7, lr} + cfi_adjust_cfa_offset (-20) + cfi_restore (r4) + cfi_restore (r5) + cfi_restore (r6) + cfi_restore (r7) + cfi_restore (lr) + BX (lr) + +1: + ldmfd sp!, {r4, r5, r6, r7, lr} + b __syscall_do_cancel + .fnend +END (__syscall_cancel_arch) diff --git a/sysdeps/unix/sysv/linux/bits/fcntl-linux.h b/sysdeps/unix/sysv/linux/bits/fcntl-linux.h index 628612b885..61c100d984 100644 --- a/sysdeps/unix/sysv/linux/bits/fcntl-linux.h +++ b/sysdeps/unix/sysv/linux/bits/fcntl-linux.h @@ -200,6 +200,7 @@ # define F_SETLEASE 1024 /* Set a lease. */ # define F_GETLEASE 1025 /* Enquire what lease is active. */ # define F_NOTIFY 1026 /* Request notifications on a directory. */ +# define F_DUPFD_QUERY 1027 /* Compare two file descriptors for sameness. */ # define F_SETPIPE_SZ 1031 /* Set pipe page size array. */ # define F_GETPIPE_SZ 1032 /* Set pipe page size array. */ # define F_ADD_SEALS 1033 /* Add seals to file. */ diff --git a/sysdeps/unix/sysv/linux/csky/arch-syscall.h b/sysdeps/unix/sysv/linux/csky/arch-syscall.h index 3f16a29f57..ede3551a00 100644 --- a/sysdeps/unix/sysv/linux/csky/arch-syscall.h +++ b/sysdeps/unix/sysv/linux/csky/arch-syscall.h @@ -168,6 +168,7 @@ #define __NR_mq_timedsend_time64 418 #define __NR_mq_unlink 181 #define __NR_mremap 216 +#define __NR_mseal 462 #define __NR_msgctl 187 #define __NR_msgget 186 #define __NR_msgrcv 188 @@ -301,7 +302,7 @@ #define __NR_swapon 224 #define __NR_symlinkat 36 #define __NR_sync 81 -#define __NR_sync_file_range 84 +#define __NR_sync_file_range2 84 #define __NR_syncfs 267 #define __NR_sysinfo 179 #define __NR_syslog 116 diff --git a/sysdeps/unix/sysv/linux/csky/syscall_cancel.S b/sysdeps/unix/sysv/linux/csky/syscall_cancel.S new file mode 100644 index 0000000000..2989765f8c --- /dev/null +++ b/sysdeps/unix/sysv/linux/csky/syscall_cancel.S @@ -0,0 +1,114 @@ +/* Cancellable syscall wrapper. Linux/csky version. + Copyright (C) 2023 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +#include <sysdep.h> +#include <descr-const.h> + +/* long int __syscall_cancel_arch (int *cancelhandling, + __syscall_arg_t nr, + __syscall_arg_t arg1, + __syscall_arg_t arg2, + __syscall_arg_t arg3, + __syscall_arg_t arg4, + __syscall_arg_t arg5, + __syscall_arg_t arg6) */ + +#ifdef SHARED +# define STACK_ADJ 4 +#else +# define STACK_ADJ 0 +#endif + +ENTRY (__syscall_cancel_arch) + subi sp, sp, 16 + STACK_ADJ + cfi_def_cfa_offset (16 + STACK_ADJ) +#ifdef SHARED + st.w gb, (sp, 16) + lrw t1, 1f@GOTPC + cfi_offset (gb, -4) + grs gb, 1f +1: +#endif + st.w lr, (sp, 12) + st.w l3, (sp, 8) + st.w l1, (sp, 4) + st.w l0, (sp, 0) +#ifdef SHARED + addu gb, gb, t1 +#endif + subi sp, sp, 16 + cfi_def_cfa_offset (32 + STACK_ADJ) + cfi_offset (lr, -( 4 + STACK_ADJ)) + cfi_offset (l3, -( 8 + STACK_ADJ)) + cfi_offset (l1, -(12 + STACK_ADJ)) + cfi_offset (l0, -(16 + STACK_ADJ)) + + mov l3, a1 + mov a1, a3 + ld.w a3, (sp, 32 + STACK_ADJ) + st.w a3, (sp, 0) + ld.w a3, (sp, 36 + STACK_ADJ) + st.w a3, (sp, 4) + ld.w a3, (sp, 40 + STACK_ADJ) + st.w a3, (sp, 8) + ld.w a3, (sp, 44 + STACK_ADJ) + st.w a3, (sp, 12) + + .globl __syscall_cancel_arch_start +__syscall_cancel_arch_start: + ld.w t0, (a0, 0) + andi t0, t0, TCB_CANCELED_BITMASK + jbnez t0, 2f + mov a0, a2 + ld.w a3, (sp, 4) + ld.w a2, (sp, 0) + ld.w l0, (sp, 8) + ld.w l1, (sp, 12) + trap 0 + + .globl __syscall_cancel_arch_end +__syscall_cancel_arch_end: + addi sp, sp, 16 + cfi_remember_state + cfi_def_cfa_offset (16 + STACK_ADJ) +#ifdef SHARED + ld.w gb, (sp, 16) + cfi_restore (gb) +#endif + ld.w lr, (sp, 12) + cfi_restore (lr) + ld.w l3, (sp, 8) + cfi_restore (l3) + ld.w l1, (sp, 4) + cfi_restore (l1) + ld.w l0, (sp, 0) + cfi_restore (l0) + addi sp, sp, 16 + cfi_def_cfa_offset (0) + rts + +2: + cfi_restore_state +#ifdef SHARED + lrw a3, __syscall_do_cancel@GOTOFF + addu a3, a3, gb + jsr a3 +#else + jbsr __syscall_do_cancel +#endif +END (__syscall_cancel_arch) diff --git a/sysdeps/unix/sysv/linux/hppa/arch-syscall.h b/sysdeps/unix/sysv/linux/hppa/arch-syscall.h index a1b2c819d6..08b153f2cc 100644 --- a/sysdeps/unix/sysv/linux/hppa/arch-syscall.h +++ b/sysdeps/unix/sysv/linux/hppa/arch-syscall.h @@ -197,6 +197,7 @@ #define __NR_mq_timedsend_time64 418 #define __NR_mq_unlink 230 #define __NR_mremap 163 +#define __NR_mseal 462 #define __NR_msgctl 191 #define __NR_msgget 190 #define __NR_msgrcv 189 diff --git a/sysdeps/unix/sysv/linux/hppa/syscall_cancel.S b/sysdeps/unix/sysv/linux/hppa/syscall_cancel.S new file mode 100644 index 0000000000..b9c19747ea --- /dev/null +++ b/sysdeps/unix/sysv/linux/hppa/syscall_cancel.S @@ -0,0 +1,81 @@ +/* Cancellable syscall wrapper. Linux/hppa version. + Copyright (C) 2023 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library. If not, see + <http://www.gnu.org/licenses/>. */ + +#include <sysdep.h> +#include <descr-const.h> + +/* long int __syscall_cancel_arch (int *cancelhandling, + long int nr, + long int arg1, + long int arg2, + long int arg3, + long int arg4, + long int arg5, + long int arg6) */ + + .text +ENTRY(__syscall_cancel_arch) + stw %r2,-20(%r30) + ldo 128(%r30),%r30 + cfi_def_cfa_offset (-128) + cfi_offset (2, -20) + ldw -180(%r30),%r28 + copy %r26,%r20 + stw %r28,-108(%r30) + ldw -184(%r30),%r28 + copy %r24,%r26 + stw %r28,-112(%r30) + ldw -188(%r30),%r28 + stw %r28,-116(%r30) + ldw -192(%r30),%r28 + stw %r4,-104(%r30) + stw %r28,-120(%r30) + copy %r25,%r28 + copy %r23,%r25 +#ifdef __PIC__ + stw %r19,-32(%r30) +#endif + cfi_offset (4, 24) + + .global __syscall_cancel_arch_start +__syscall_cancel_arch_start: + ldw 0(%r20),%r20 + bb,< %r20,31-TCB_CANCELED_BIT,1f + ldw -120(%r30),%r21 + ldw -116(%r30),%r22 + ldw -112(%r30),%r23 + ldw -108(%r30),%r24 + copy %r19, %r4 + ble 0x100(%sr2, %r0) + + .global __syscall_cancel_arch_end +__syscall_cancel_arch_end: + + copy %r28,%r20 + copy %r4,%r19 + + ldw -148(%r30),%r2 + ldw -104(%r30),%r4 + bv %r0(%r2) + ldo -128(%r30),%r30 +1: + bl __syscall_do_cancel,%r2 + nop + nop + +END(__syscall_cancel_arch) diff --git a/sysdeps/unix/sysv/linux/i386/arch-syscall.h b/sysdeps/unix/sysv/linux/i386/arch-syscall.h index cc775432d6..500ca1ec70 100644 --- a/sysdeps/unix/sysv/linux/i386/arch-syscall.h +++ b/sysdeps/unix/sysv/linux/i386/arch-syscall.h @@ -222,6 +222,7 @@ #define __NR_mq_timedsend_time64 418 #define __NR_mq_unlink 278 #define __NR_mremap 163 +#define __NR_mseal 462 #define __NR_msgctl 402 #define __NR_msgget 399 #define __NR_msgrcv 401 diff --git a/sysdeps/unix/sysv/linux/i386/syscall_cancel.S b/sysdeps/unix/sysv/linux/i386/syscall_cancel.S new file mode 100644 index 0000000000..46fb746da0 --- /dev/null +++ b/sysdeps/unix/sysv/linux/i386/syscall_cancel.S @@ -0,0 +1,104 @@ +/* Cancellable syscall wrapper. Linux/i686 version. + Copyright (C) 2023 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +#include <sysdep.h> +#include <descr-const.h> + +/* long int [eax] __syscall_cancel_arch (int *cancelhandling [SP], + long int nr [SP+4], + long int arg1 [SP+8], + long int arg2 [SP+12], + long int arg3 [SP+16], + long int arg4 [SP+20], + long int arg5 [SP+24], + long int arg6 [SP+28]) */ + +ENTRY (__syscall_cancel_arch) + pushl %ebp + cfi_def_cfa_offset (8) + cfi_offset (ebp, -8) + pushl %edi + cfi_def_cfa_offset (12) + cfi_offset (edi, -12) + pushl %esi + cfi_def_cfa_offset (16) + cfi_offset (esi, -16) + pushl %ebx + cfi_def_cfa_offset (20) + cfi_offset (ebx, -20) + + .global __syscall_cancel_arch_start +__syscall_cancel_arch_start: + + /* if (*cancelhandling & CANCELED_BITMASK) + __syscall_do_cancel() */ + movl 20(%esp), %eax + testb $TCB_CANCELED_BITMASK, (%eax) + jne 1f + + /* Issue a 6 argument syscall, the nr [%eax] being the syscall + number. */ + movl 24(%esp), %eax + movl 28(%esp), %ebx + movl 32(%esp), %ecx + movl 36(%esp), %edx + movl 40(%esp), %esi + movl 44(%esp), %edi + movl 48(%esp), %ebp + + /* We can not use the vDSO helper for syscall (__kernel_vsyscall) + because the returned PC from kernel will point to the vDSO page + instead of the expected __syscall_cancel_arch_{start,end} + marks. */ + int $0x80 + + .global __syscall_cancel_arch_end +__syscall_cancel_arch_end: + + popl %ebx + cfi_restore (ebx) + cfi_def_cfa_offset (16) + popl %esi + cfi_restore (esi) + cfi_def_cfa_offset (12) + popl %edi + cfi_restore (edi) + cfi_def_cfa_offset (8) + popl %ebp + cfi_restore (ebp) + cfi_def_cfa_offset (4) + ret + +1: + /* Although the __syscall_do_cancel do not return, we need to stack + being set correctly for unwind. */ + popl %ebx + cfi_restore (ebx) + cfi_def_cfa_offset (16) + popl %esi + cfi_restore (esi) + cfi_def_cfa_offset (12) + popl %edi + cfi_restore (edi) + cfi_def_cfa_offset (8) + popl %ebp + cfi_restore (ebp) + cfi_def_cfa_offset (4) + jmp __syscall_do_cancel + +END (__syscall_cancel_arch) diff --git a/sysdeps/unix/sysv/linux/loongarch/arch-syscall.h b/sysdeps/unix/sysv/linux/loongarch/arch-syscall.h index 56bb08718a..8bb82448a7 100644 --- a/sysdeps/unix/sysv/linux/loongarch/arch-syscall.h +++ b/sysdeps/unix/sysv/linux/loongarch/arch-syscall.h @@ -155,6 +155,7 @@ #define __NR_mq_timedsend 182 #define __NR_mq_unlink 181 #define __NR_mremap 216 +#define __NR_mseal 462 #define __NR_msgctl 187 #define __NR_msgget 186 #define __NR_msgrcv 188 diff --git a/sysdeps/unix/sysv/linux/loongarch/syscall_cancel.S b/sysdeps/unix/sysv/linux/loongarch/syscall_cancel.S new file mode 100644 index 0000000000..edea9632ff --- /dev/null +++ b/sysdeps/unix/sysv/linux/loongarch/syscall_cancel.S @@ -0,0 +1,50 @@ +/* Cancellable syscall wrapper. Linux/loongarch version. + Copyright (C) 2023 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +#include <sysdep.h> +#include <descr-const.h> + +ENTRY (__syscall_cancel_arch) + + .global __syscall_cancel_arch_start +__syscall_cancel_arch_start: + + /* if (*cancelhandling & CANCELED_BITMASK) + __syscall_do_cancel() */ + ld.w t0, a0, 0 + andi t0, t0, TCB_CANCELED_BITMASK + bnez t0, 1f + + /* Issue a 6 argument syscall. */ + move t1, a1 + move a0, a2 + move a1, a3 + move a2, a4 + move a3, a5 + move a4, a6 + move a5, a7 + move a7, t1 + syscall 0 + + .global __syscall_cancel_arch_end +__syscall_cancel_arch_end: + jr ra +1: + b __syscall_do_cancel + +END (__syscall_cancel_arch) diff --git a/sysdeps/unix/sysv/linux/m68k/arch-syscall.h b/sysdeps/unix/sysv/linux/m68k/arch-syscall.h index 79f277dd5b..4ab34f6228 100644 --- a/sysdeps/unix/sysv/linux/m68k/arch-syscall.h +++ b/sysdeps/unix/sysv/linux/m68k/arch-syscall.h @@ -213,6 +213,7 @@ #define __NR_mq_timedsend_time64 418 #define __NR_mq_unlink 272 #define __NR_mremap 163 +#define __NR_mseal 462 #define __NR_msgctl 402 #define __NR_msgget 399 #define __NR_msgrcv 401 diff --git a/sysdeps/unix/sysv/linux/m68k/syscall_cancel.S b/sysdeps/unix/sysv/linux/m68k/syscall_cancel.S new file mode 100644 index 0000000000..8923bcc71c --- /dev/null +++ b/sysdeps/unix/sysv/linux/m68k/syscall_cancel.S @@ -0,0 +1,84 @@ +/* Cancellable syscall wrapper. Linux/m68k version. + Copyright (C) 2023 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +#include <sysdep.h> +#include <descr-const.h> + +/* long int __syscall_cancel_arch (int *cancelhandling, + __syscall_arg_t nr, + __syscall_arg_t arg1, + __syscall_arg_t arg2, + __syscall_arg_t arg3, + __syscall_arg_t arg4, + __syscall_arg_t arg5, + __syscall_arg_t arg6) */ + + +ENTRY (__syscall_cancel_arch) +#ifdef __mcoldfire__ + lea (-16,%sp),%sp + movem.l %d2-%d5,(%sp) +#else + movem.l %d2-%d5,-(%sp) +#endif + cfi_def_cfa_offset (20) + cfi_offset (2, -20) + cfi_offset (3, -16) + cfi_offset (4, -12) + cfi_offset (5, -8) + + .global __syscall_cancel_arch_start +__syscall_cancel_arch_start: + + move.l 20(%sp),%a0 + move.l (%a0),%d0 +#ifdef __mcoldfire__ + move.w %d0,%ccr + jeq 1f +#else + btst #TCB_CANCELED_BIT,%d0 + jne 1f +#endif + + move.l 48(%sp),%a0 + move.l 44(%sp),%d5 + move.l 40(%sp),%d4 + move.l 36(%sp),%d3 + move.l 32(%sp),%d2 + move.l 28(%sp),%d1 + move.l 24(%sp),%d0 + trap #0 + + .global __syscall_cancel_arch_end +__syscall_cancel_arch_end: + +#ifdef __mcoldfire__ + movem.l (%sp),%d2-%d5 + lea (16,%sp),%sp +#else + movem.l (%sp)+,%d2-%d5 +#endif + rts + +1: +#ifdef PIC + bsr.l __syscall_do_cancel +#else + jsr __syscall_do_cancel +#endif +END (__syscall_cancel_arch) diff --git a/sysdeps/unix/sysv/linux/microblaze/arch-syscall.h b/sysdeps/unix/sysv/linux/microblaze/arch-syscall.h index 779d5d5d70..79e225e50c 100644 --- a/sysdeps/unix/sysv/linux/microblaze/arch-syscall.h +++ b/sysdeps/unix/sysv/linux/microblaze/arch-syscall.h @@ -221,6 +221,7 @@ #define __NR_mq_timedsend_time64 418 #define __NR_mq_unlink 278 #define __NR_mremap 163 +#define __NR_mseal 462 #define __NR_msgctl 331 #define __NR_msgget 332 #define __NR_msgrcv 333 diff --git a/sysdeps/unix/sysv/linux/microblaze/syscall_cancel.S b/sysdeps/unix/sysv/linux/microblaze/syscall_cancel.S new file mode 100644 index 0000000000..1f9d202bf5 --- /dev/null +++ b/sysdeps/unix/sysv/linux/microblaze/syscall_cancel.S @@ -0,0 +1,61 @@ +/* Cancellable syscall wrapper. Linux/microblaze version. + Copyright (C) 2023 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +#include <sysdep.h> +#include <descr-const.h> + +/* long int __syscall_cancel_arch (int *cancelhandling, + long int nr, + long int arg1, + long int arg2, + long int arg3, + long int arg4, + long int arg5, + long int arg6) */ + +ENTRY (__syscall_cancel_arch) + + .globl __syscall_cancel_arch_start +__syscall_cancel_arch_start: + + lwi r3,r5,0 + andi r3,r3,TCB_CANCELED_BITMASK + bneid r3,1f + addk r12,r6,r0 + + addk r5,r7,r0 + addk r6,r8,r0 + addk r7,r9,r0 + addk r8,r10,r0 + lwi r9,r1,56 + lwi r10,r1,60 + brki r14,8 + + .globl __syscall_cancel_arch_end +__syscall_cancel_arch_end: + + nop + lwi r15,r1,0 + rtsd r15,8 + addik r1,r1,28 + +1: + brlid r15, __syscall_do_cancel + nop + +END (__syscall_cancel_arch) diff --git a/sysdeps/unix/sysv/linux/mips/mips32/arch-syscall.h b/sysdeps/unix/sysv/linux/mips/mips32/arch-syscall.h index 86ffd5ce84..dadd7f3130 100644 --- a/sysdeps/unix/sysv/linux/mips/mips32/arch-syscall.h +++ b/sysdeps/unix/sysv/linux/mips/mips32/arch-syscall.h @@ -211,6 +211,7 @@ #define __NR_mq_timedsend_time64 4418 #define __NR_mq_unlink 4272 #define __NR_mremap 4167 +#define __NR_mseal 4462 #define __NR_msgctl 4402 #define __NR_msgget 4399 #define __NR_msgrcv 4401 diff --git a/sysdeps/unix/sysv/linux/mips/mips32/syscall_cancel.S b/sysdeps/unix/sysv/linux/mips/mips32/syscall_cancel.S new file mode 100644 index 0000000000..eb3b2ed005 --- /dev/null +++ b/sysdeps/unix/sysv/linux/mips/mips32/syscall_cancel.S @@ -0,0 +1,128 @@ +/* Cancellable syscall wrapper. Linux/mips32 version. + Copyright (C) 2023 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +#include <sysdep.h> +#include <sys/asm.h> +#include <descr-const.h> + +/* long int __syscall_cancel_arch (int *cancelhandling, + __syscall_arg_t nr, + __syscall_arg_t arg1, + __syscall_arg_t arg2, + __syscall_arg_t arg3, + __syscall_arg_t arg4, + __syscall_arg_t arg5, + __syscall_arg_t arg6, + __syscall_arg_t arg7) */ + +#define FRAME_SIZE 56 + +NESTED (__syscall_cancel_arch, FRAME_SIZE, fp) + .mask 0xc0070000,-SZREG + .fmask 0x00000000,0 + + PTR_ADDIU sp, -FRAME_SIZE + cfi_def_cfa_offset (FRAME_SIZE) + + sw fp, 48(sp) + sw ra, 52(sp) + sw s2, 44(sp) + sw s1, 40(sp) + sw s0, 36(sp) +#ifdef __PIC__ + .cprestore 16 +#endif + cfi_offset (ra, -4) + cfi_offset (fp, -8) + cfi_offset (s2, -12) + cfi_offset (s1, -16) + cfi_offset (s0, -20) + + move fp ,sp + cfi_def_cfa_register (fp) + + .globl __syscall_cancel_arch_start +__syscall_cancel_arch_start: + + lw v0, 0(a0) + andi v0, v0, TCB_CANCELED_BITMASK + bne v0, zero, 2f + + addiu sp, sp, -16 + addiu v0, sp, 16 + sw v0, 24(fp) + + move s0, a1 + move a0, a2 + move a1, a3 + lw a2, 72(fp) + lw a3, 76(fp) + lw v0, 84(fp) + lw s1, 80(fp) + lw s2, 88(fp) + + .set noreorder + subu sp, 32 + sw s1, 16(sp) + sw v0, 20(sp) + sw s2, 24(sp) + move v0, s0 + syscall + + .globl __syscall_cancel_arch_end +__syscall_cancel_arch_end: + addiu sp, sp, 32 + .set reorder + + beq a3, zero, 1f + subu v0, zero, v0 +1: + move sp, fp + cfi_remember_state + cfi_def_cfa_register (sp) + lw ra, 52(fp) + lw fp, 48(sp) + lw s2, 44(sp) + lw s1, 40(sp) + lw s0, 36(sp) + + .set noreorder + .set nomacro + jr ra + addiu sp,sp,FRAME_SIZE + + .set macro + .set reorder + + cfi_def_cfa_offset (0) + cfi_restore (s0) + cfi_restore (s1) + cfi_restore (s2) + cfi_restore (fp) + cfi_restore (ra) + +2: + cfi_restore_state +#ifdef __PIC__ + PTR_LA t9, __syscall_do_cancel + jalr t9 +#else + jal __syscall_do_cancel +#endif + +END (__syscall_cancel_arch) diff --git a/sysdeps/unix/sysv/linux/mips/mips32/sysdep.h b/sysdeps/unix/sysv/linux/mips/mips32/sysdep.h index 1827caf595..47a1b97351 100644 --- a/sysdeps/unix/sysv/linux/mips/mips32/sysdep.h +++ b/sysdeps/unix/sysv/linux/mips/mips32/sysdep.h @@ -18,6 +18,10 @@ #ifndef _LINUX_MIPS_MIPS32_SYSDEP_H #define _LINUX_MIPS_MIPS32_SYSDEP_H 1 +/* mips32 have cancelable syscalls with 7 arguments (currently only + sync_file_range). */ +#define HAVE_CANCELABLE_SYSCALL_WITH_7_ARGS 1 + /* There is some commonality. */ #include <sysdeps/unix/sysv/linux/mips/sysdep.h> #include <sysdeps/unix/sysv/linux/sysdep.h> diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/arch-syscall.h b/sysdeps/unix/sysv/linux/mips/mips64/n32/arch-syscall.h index 5d37a686e5..db6b2d4609 100644 --- a/sysdeps/unix/sysv/linux/mips/mips64/n32/arch-syscall.h +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/arch-syscall.h @@ -194,6 +194,7 @@ #define __NR_mq_timedsend_time64 6418 #define __NR_mq_unlink 6235 #define __NR_mremap 6024 +#define __NR_mseal 6462 #define __NR_msgctl 6069 #define __NR_msgget 6066 #define __NR_msgrcv 6068 diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n32/syscall_types.h b/sysdeps/unix/sysv/linux/mips/mips64/n32/syscall_types.h new file mode 100644 index 0000000000..b3a8b0b634 --- /dev/null +++ b/sysdeps/unix/sysv/linux/mips/mips64/n32/syscall_types.h @@ -0,0 +1,28 @@ +/* Types and macros used for syscall issuing. MIPS64n32 version. + Copyright (C) 2023 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 + <https://www.gnu.org/licenses/>. */ + +#ifndef _SYSCALL_TYPES_H +#define _SYSCALL_TYPES_H + +typedef long long int __syscall_arg_t; + +/* Convert X to a long long, without losing any bits if it is one + already or warning if it is a 32-bit pointer. */ +#define __SSC(__x) ((__syscall_arg_t) (__typeof__ ((__x) - (__x))) (__x)) + +#endif diff --git a/sysdeps/unix/sysv/linux/mips/mips64/n64/arch-syscall.h b/sysdeps/unix/sysv/linux/mips/mips64/n64/arch-syscall.h index 9b1e846e76..b4129a4dbd 100644 --- a/sysdeps/unix/sysv/linux/mips/mips64/n64/arch-syscall.h +++ b/sysdeps/unix/sysv/linux/mips/mips64/n64/arch-syscall.h @@ -183,6 +183,7 @@ #define __NR_mq_timedsend 5232 #define __NR_mq_unlink 5231 #define __NR_mremap 5024 +#define __NR_mseal 5462 #define __NR_msgctl 5069 #define __NR_msgget 5066 #define __NR_msgrcv 5068 diff --git a/sysdeps/unix/sysv/linux/mips/mips64/syscall_cancel.S b/sysdeps/unix/sysv/linux/mips/mips64/syscall_cancel.S new file mode 100644 index 0000000000..cfc0596b6a --- /dev/null +++ b/sysdeps/unix/sysv/linux/mips/mips64/syscall_cancel.S @@ -0,0 +1,112 @@ +/* Cancellable syscall wrapper. Linux/mips64 version. + Copyright (C) 2023 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +#include <sysdep.h> +#include <sys/asm.h> +#include <descr-const.h> + +/* long int __syscall_cancel_arch (int *cancelhandling, + __syscall_arg_t nr, + __syscall_arg_t arg1, + __syscall_arg_t arg2, + __syscall_arg_t arg3, + __syscall_arg_t arg4, + __syscall_arg_t arg5, + __syscall_arg_t arg6, + __syscall_arg_t arg7) */ + +#define FRAME_SIZE 32 + + .text +NESTED (__syscall_cancel_arch, FRAME_SIZE, ra) + .mask 0x90010000, -SZREG + .fmask 0x00000000, 0 + LONG_ADDIU sp, sp, -FRAME_SIZE + cfi_def_cfa_offset (FRAME_SIZE) + sd gp, 16(sp) + cfi_offset (gp, -16) + lui gp, %hi(%neg(%gp_rel(__syscall_cancel_arch))) + LONG_ADDU gp, gp, t9 + sd ra, 24(sp) + sd s0, 8(sp) + cfi_offset (ra, -8) + cfi_offset (s0, -24) + LONG_ADDIU gp, gp, %lo(%neg(%gp_rel(__syscall_cancel_arch))) + + .global __syscall_cancel_arch_start +__syscall_cancel_arch_start: + + lw v0, 0(a0) + andi v0, v0, TCB_CANCELED_BITMASK + .set noreorder + .set nomacro + bne v0, zero, 2f + move s0, a1 + .set macro + .set reorder + + move a0, a2 + move a1, a3 + move a2, a4 + move a3, a5 + move a4, a6 + move a5, a7 + + .set noreorder + move v0, s0 + syscall + .set reorder + + .global __syscall_cancel_arch_end +__syscall_cancel_arch_end: + + .set noreorder + .set nomacro +#if __mips_isa_rev >= 6 + beqzc $7, 1f +#else + bnel a3, zero, 1f +#endif + SUBU v0, zero, v0 + .set macro + .set reorder + +1: + ld ra, 24(sp) + ld gp, 16(sp) + ld s0, 8(sp) + + .set noreorder + .set nomacro + jr ra + LONG_ADDIU sp, sp, FRAME_SIZE + .set macro + .set reorder + + cfi_remember_state + cfi_def_cfa_offset (0) + cfi_restore (s0) + cfi_restore (gp) + cfi_restore (ra) + .align 3 +2: + cfi_restore_state + LONG_L t9, %got_disp(__syscall_do_cancel)(gp) + .reloc 3f, R_MIPS_JALR, __syscall_do_cancel +3: jalr t9 +END (__syscall_cancel_arch) diff --git a/sysdeps/unix/sysv/linux/mips/mips64/sysdep.h b/sysdeps/unix/sysv/linux/mips/mips64/sysdep.h index 0a1711dad2..0438bed23d 100644 --- a/sysdeps/unix/sysv/linux/mips/mips64/sysdep.h +++ b/sysdeps/unix/sysv/linux/mips/mips64/sysdep.h @@ -44,15 +44,7 @@ #undef HAVE_INTERNAL_BRK_ADDR_SYMBOL #define HAVE_INTERNAL_BRK_ADDR_SYMBOL 1 -#if _MIPS_SIM == _ABIN32 -/* Convert X to a long long, without losing any bits if it is one - already or warning if it is a 32-bit pointer. */ -# define ARGIFY(X) ((long long int) (__typeof__ ((X) - (X))) (X)) -typedef long long int __syscall_arg_t; -#else -# define ARGIFY(X) ((long int) (X)) -typedef long int __syscall_arg_t; -#endif +#include <syscall_types.h> /* Note that the original Linux syscall restart convention required the instruction immediately preceding SYSCALL to initialize $v0 with the @@ -120,7 +112,7 @@ typedef long int __syscall_arg_t; long int _sys_result; \ \ { \ - __syscall_arg_t _arg1 = ARGIFY (arg1); \ + __syscall_arg_t _arg1 = __SSC (arg1); \ register __syscall_arg_t __s0 asm ("$16") __attribute__ ((unused))\ = (number); \ register __syscall_arg_t __v0 asm ("$2"); \ @@ -144,8 +136,8 @@ typedef long int __syscall_arg_t; long int _sys_result; \ \ { \ - __syscall_arg_t _arg1 = ARGIFY (arg1); \ - __syscall_arg_t _arg2 = ARGIFY (arg2); \ + __syscall_arg_t _arg1 = __SSC (arg1); \ + __syscall_arg_t _arg2 = __SSC (arg2); \ register __syscall_arg_t __s0 asm ("$16") __attribute__ ((unused))\ = (number); \ register __syscall_arg_t __v0 asm ("$2"); \ @@ -170,9 +162,9 @@ typedef long int __syscall_arg_t; long int _sys_result; \ \ { \ - __syscall_arg_t _arg1 = ARGIFY (arg1); \ - __syscall_arg_t _arg2 = ARGIFY (arg2); \ - __syscall_arg_t _arg3 = ARGIFY (arg3); \ + __syscall_arg_t _arg1 = __SSC (arg1); \ + __syscall_arg_t _arg2 = __SSC (arg2); \ + __syscall_arg_t _arg3 = __SSC (arg3); \ register __syscall_arg_t __s0 asm ("$16") __attribute__ ((unused))\ = (number); \ register __syscall_arg_t __v0 asm ("$2"); \ @@ -199,10 +191,10 @@ typedef long int __syscall_arg_t; long int _sys_result; \ \ { \ - __syscall_arg_t _arg1 = ARGIFY (arg1); \ - __syscall_arg_t _arg2 = ARGIFY (arg2); \ - __syscall_arg_t _arg3 = ARGIFY (arg3); \ - __syscall_arg_t _arg4 = ARGIFY (arg4); \ + __syscall_arg_t _arg1 = __SSC (arg1); \ + __syscall_arg_t _arg2 = __SSC (arg2); \ + __syscall_arg_t _arg3 = __SSC (arg3); \ + __syscall_arg_t _arg4 = __SSC (arg4); \ register __syscall_arg_t __s0 asm ("$16") __attribute__ ((unused))\ = (number); \ register __syscall_arg_t __v0 asm ("$2"); \ @@ -229,11 +221,11 @@ typedef long int __syscall_arg_t; long int _sys_result; \ \ { \ - __syscall_arg_t _arg1 = ARGIFY (arg1); \ - __syscall_arg_t _arg2 = ARGIFY (arg2); \ - __syscall_arg_t _arg3 = ARGIFY (arg3); \ - __syscall_arg_t _arg4 = ARGIFY (arg4); \ - __syscall_arg_t _arg5 = ARGIFY (arg5); \ + __syscall_arg_t _arg1 = __SSC (arg1); \ + __syscall_arg_t _arg2 = __SSC (arg2); \ + __syscall_arg_t _arg3 = __SSC (arg3); \ + __syscall_arg_t _arg4 = __SSC (arg4); \ + __syscall_arg_t _arg5 = __SSC (arg5); \ register __syscall_arg_t __s0 asm ("$16") __attribute__ ((unused))\ = (number); \ register __syscall_arg_t __v0 asm ("$2"); \ @@ -261,12 +253,12 @@ typedef long int __syscall_arg_t; long int _sys_result; \ \ { \ - __syscall_arg_t _arg1 = ARGIFY (arg1); \ - __syscall_arg_t _arg2 = ARGIFY (arg2); \ - __syscall_arg_t _arg3 = ARGIFY (arg3); \ - __syscall_arg_t _arg4 = ARGIFY (arg4); \ - __syscall_arg_t _arg5 = ARGIFY (arg5); \ - __syscall_arg_t _arg6 = ARGIFY (arg6); \ + __syscall_arg_t _arg1 = __SSC (arg1); \ + __syscall_arg_t _arg2 = __SSC (arg2); \ + __syscall_arg_t _arg3 = __SSC (arg3); \ + __syscall_arg_t _arg4 = __SSC (arg4); \ + __syscall_arg_t _arg5 = __SSC (arg5); \ + __syscall_arg_t _arg6 = __SSC (arg6); \ register __syscall_arg_t __s0 asm ("$16") __attribute__ ((unused))\ = (number); \ register __syscall_arg_t __v0 asm ("$2"); \ diff --git a/sysdeps/unix/sysv/linux/mremap-failure.h b/sysdeps/unix/sysv/linux/mremap-failure.h new file mode 100644 index 0000000000..c99ab30ca9 --- /dev/null +++ b/sysdeps/unix/sysv/linux/mremap-failure.h @@ -0,0 +1,30 @@ +/* mremap failure handling. Linux version. + Copyright (C) 2024 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 + <https://www.gnu.org/licenses/>. */ + +#include <support/check.h> + +/* Return exit value on mremap failure with errno ERR. */ + +static int +mremap_failure_exit (int err) +{ + if (err != EINVAL) + return EXIT_FAILURE; + + return EXIT_UNSUPPORTED; +} diff --git a/sysdeps/unix/sysv/linux/mremap.c b/sysdeps/unix/sysv/linux/mremap.c index 4f770799c4..1ada5c1f40 100644 --- a/sysdeps/unix/sysv/linux/mremap.c +++ b/sysdeps/unix/sysv/linux/mremap.c @@ -20,6 +20,12 @@ #include <sysdep.h> #include <stdarg.h> #include <stddef.h> +#include <errno.h> + +#define MREMAP_KNOWN_BITS \ + (MREMAP_MAYMOVE \ + | MREMAP_FIXED \ + | MREMAP_DONTUNMAP) void * __mremap (void *addr, size_t old_len, size_t new_len, int flags, ...) @@ -27,7 +33,13 @@ __mremap (void *addr, size_t old_len, size_t new_len, int flags, ...) va_list va; void *new_addr = NULL; - if (flags & MREMAP_FIXED) + if (flags & ~(MREMAP_KNOWN_BITS)) + { + __set_errno (EINVAL); + return MAP_FAILED; + } + + if (flags & (MREMAP_FIXED | MREMAP_DONTUNMAP)) { va_start (va, flags); new_addr = va_arg (va, void *); diff --git a/sysdeps/unix/sysv/linux/nios2/arch-syscall.h b/sysdeps/unix/sysv/linux/nios2/arch-syscall.h index abbc9ab6b0..f94e212995 100644 --- a/sysdeps/unix/sysv/linux/nios2/arch-syscall.h +++ b/sysdeps/unix/sysv/linux/nios2/arch-syscall.h @@ -167,6 +167,7 @@ #define __NR_mq_timedsend_time64 418 #define __NR_mq_unlink 181 #define __NR_mremap 216 +#define __NR_mseal 462 #define __NR_msgctl 187 #define __NR_msgget 186 #define __NR_msgrcv 188 diff --git a/sysdeps/unix/sysv/linux/nios2/syscall_cancel.S b/sysdeps/unix/sysv/linux/nios2/syscall_cancel.S new file mode 100644 index 0000000000..19d0795886 --- /dev/null +++ b/sysdeps/unix/sysv/linux/nios2/syscall_cancel.S @@ -0,0 +1,95 @@ +/* Cancellable syscall wrapper. Linux/nios2 version. + Copyright (C) 2023 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +#include <sysdep.h> +#include <descr-const.h> + +/* long int __syscall_cancel_arch (int *cancelhandling, + __syscall_arg_t nr, + __syscall_arg_t arg1, + __syscall_arg_t arg2, + __syscall_arg_t arg3, + __syscall_arg_t arg4, + __syscall_arg_t arg5, + __syscall_arg_t arg6) */ + +ENTRY (__syscall_cancel_arch) +#ifdef SHARED + addi sp, sp, -8 + stw r22, 0(sp) + nextpc r22 +1: + movhi r8, %hiadj(_gp_got - 1b) + addi r8, r8, %lo(_gp_got - 1b) + stw ra, 4(sp) + add r22, r22, r8 +#else + addi sp, sp, -4 + cfi_def_cfa_offset (4) + stw ra, 0(sp) + cfi_offset (31, -4) +#endif + + .globl __syscall_cancel_arch_start +__syscall_cancel_arch_start: + ldw r3, 0(r4) + andi r3, r3, TCB_CANCELED_BITMASK + bne r3, zero, 3f + mov r10, r6 + mov r2, r5 +#ifdef SHARED +# define STACK_ADJ 4 +#else +# define STACK_ADJ 0 +#endif + ldw r9, (16 + STACK_ADJ)(sp) + mov r5, r7 + ldw r8, (12 + STACK_ADJ)(sp) + ldw r7, (8 + STACK_ADJ)(sp) + ldw r6, (4 + STACK_ADJ)(sp) + mov r4, r10 + trap + + .globl __syscall_cancel_arch_end +__syscall_cancel_arch_end: + beq r7, zero, 2f + sub r2, zero, r2 +2: +#ifdef SHARED + ldw ra, 4(sp) + ldw r22, 0(sp) + addi sp, sp, 8 +#else + ldw ra, (0 + STACK_ADJ)(sp) + cfi_remember_state + cfi_restore (31) + addi sp, sp, 4 + cfi_def_cfa_offset (0) +#endif + ret + +3: +#ifdef SHARED + ldw r2, %call(__syscall_do_cancel)(r22) + callr r2 +#else + cfi_restore_state + call __syscall_do_cancel +#endif + +END (__syscall_cancel_arch) diff --git a/sysdeps/unix/sysv/linux/or1k/arch-syscall.h b/sysdeps/unix/sysv/linux/or1k/arch-syscall.h index 7223a93673..2d21fa2085 100644 --- a/sysdeps/unix/sysv/linux/or1k/arch-syscall.h +++ b/sysdeps/unix/sysv/linux/or1k/arch-syscall.h @@ -167,6 +167,7 @@ #define __NR_mq_timedsend_time64 418 #define __NR_mq_unlink 181 #define __NR_mremap 216 +#define __NR_mseal 462 #define __NR_msgctl 187 #define __NR_msgget 186 #define __NR_msgrcv 188 diff --git a/sysdeps/unix/sysv/linux/or1k/syscall_cancel.S b/sysdeps/unix/sysv/linux/or1k/syscall_cancel.S new file mode 100644 index 0000000000..876f5e05ab --- /dev/null +++ b/sysdeps/unix/sysv/linux/or1k/syscall_cancel.S @@ -0,0 +1,63 @@ +/* Cancellable syscall wrapper. Linux/or1k version. + Copyright (C) 2023 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +#include <sysdep.h> +#include <descr-const.h> + +ENTRY (__syscall_cancel_arch) + l.addi r1, r1, -4 + cfi_def_cfa_offset (4) + l.sw 0(r1), r9 + cfi_offset (9, -4) + + .global __syscall_cancel_arch_start +__syscall_cancel_arch_start: + + /* if (*cancelhandling & CANCELED_BITMASK) + __syscall_do_cancel() */ + l.movhi r19, hi(0) + l.lwz r17, 0(r3) + l.andi r17, r17, 8 + l.sfeq r17, r19 + l.bnf 1f + + /* Issue a 6 argument syscall. */ + l.or r11, r4, r4 + l.or r3, r5, r5 + l.or r4, r6, r6 + l.or r5, r7, r7 + l.or r6, r8, r8 + l.lwz r7, 4(r1) + l.lwz r8, 8(r1) + l.sys 1 + l.nop + + .global __syscall_cancel_arch_end +__syscall_cancel_arch_end: + + l.lwz r9, 0(r1) + l.jr r9 + l.addi r1, r1, 4 + cfi_remember_state + cfi_def_cfa_offset (0) + cfi_restore (9) +1: + cfi_restore_state + l.jal __syscall_do_cancel + l.nop +END (__syscall_cancel_arch) diff --git a/sysdeps/unix/sysv/linux/powerpc/cancellation-pc-check.h b/sysdeps/unix/sysv/linux/powerpc/cancellation-pc-check.h new file mode 100644 index 0000000000..1175e1a070 --- /dev/null +++ b/sysdeps/unix/sysv/linux/powerpc/cancellation-pc-check.h @@ -0,0 +1,65 @@ +/* Architecture specific code for pthread cancellation handling. + Linux/PowerPC version. + Copyright (C) 2023 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +#ifndef _NPTL_CANCELLATION_PC_CHECK +#define _NPTL_CANCELLATION_PC_CHECK + +#include <sigcontextinfo.h> + +/* For syscalls with side-effects (e.g read that might return partial read), + the kernel cannot restart the syscall when interrupted by a signal, it must + return from the call with whatever partial result. In this case, the saved + program counter is set just after the syscall instruction, so the SIGCANCEL + handler should not act on cancellation. + + The __syscall_cancel_arch function, used for all cancellable syscalls, + contains two extra markers, __syscall_cancel_arch_start and + __syscall_cancel_arch_end. The former points to just before the initial + conditional branch that checks if the thread has received a cancellation + request, while former points to the instruction after the one responsible + to issue the syscall. + + The function check if the program counter (PC) from ucontext_t CTX is + within the start and then end boundary from the __syscall_cancel_arch + bridge. Return TRUE if the PC is within the boundary, meaning the + syscall does not have any side effects; or FALSE otherwise. */ + +static __always_inline bool +cancellation_pc_check (void *ctx) +{ + /* Both are defined in syscall_cancel.S. */ + extern const char __syscall_cancel_arch_start[1]; + extern const char __syscall_cancel_arch_end_sc[1]; +#if defined(USE_PPC_SVC) && defined(__powerpc64__) + extern const char __syscall_cancel_arch_end_svc[1]; +#endif + + uintptr_t pc = sigcontext_get_pc (ctx); + + return pc >= (uintptr_t) __syscall_cancel_arch_start +#if defined(USE_PPC_SVC) && defined(__powerpc64__) + && THREAD_GET_HWCAP() & PPC_FEATURE2_SCV + ? pc < (uintptr_t) __syscall_cancel_arch_end_sc + : pc < (uintptr_t) __syscall_cancel_arch_end_svc; +#else + && pc < (uintptr_t) __syscall_cancel_arch_end_sc; +#endif +} + +#endif diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc32/arch-syscall.h b/sysdeps/unix/sysv/linux/powerpc/powerpc32/arch-syscall.h index af0d2b121e..206d9fd656 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc32/arch-syscall.h +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc32/arch-syscall.h @@ -211,6 +211,7 @@ #define __NR_mq_timedsend_time64 418 #define __NR_mq_unlink 263 #define __NR_mremap 163 +#define __NR_mseal 462 #define __NR_msgctl 402 #define __NR_msgget 399 #define __NR_msgrcv 401 diff --git a/sysdeps/unix/sysv/linux/powerpc/powerpc64/arch-syscall.h b/sysdeps/unix/sysv/linux/powerpc/powerpc64/arch-syscall.h index a4c70aa7fe..19f72a7f69 100644 --- a/sysdeps/unix/sysv/linux/powerpc/powerpc64/arch-syscall.h +++ b/sysdeps/unix/sysv/linux/powerpc/powerpc64/arch-syscall.h @@ -195,6 +195,7 @@ #define __NR_mq_timedsend 264 #define __NR_mq_unlink 263 #define __NR_mremap 163 +#define __NR_mseal 462 #define __NR_msgctl 402 #define __NR_msgget 399 #define __NR_msgrcv 401 diff --git a/sysdeps/unix/sysv/linux/powerpc/syscall_cancel.S b/sysdeps/unix/sysv/linux/powerpc/syscall_cancel.S new file mode 100644 index 0000000000..1f119d0889 --- /dev/null +++ b/sysdeps/unix/sysv/linux/powerpc/syscall_cancel.S @@ -0,0 +1,86 @@ +/* Cancellable syscall wrapper. Linux/powerpc version. + Copyright (C) 2023 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +#include <sysdep.h> +#include <descr-const.h> + +/* long int [r3] __syscall_cancel_arch (int *cancelhandling [r3], + long int nr [r4], + long int arg1 [r5], + long int arg2 [r6], + long int arg3 [r7], + long int arg4 [r8], + long int arg5 [r9], + long int arg6 [r10]) */ + +ENTRY (__syscall_cancel_arch) + + .globl __syscall_cancel_arch_start +__syscall_cancel_arch_start: + + /* if (*cancelhandling & CANCELED_BITMASK) + __syscall_do_cancel() */ + lwz r0,0(r3) + andi. r0,r0,TCB_CANCELED_BITMASK + bne 1f + + /* Issue a 6 argument syscall, the nr [r4] being the syscall + number. */ + mr r0,r4 + mr r3,r5 + mr r4,r6 + mr r5,r7 + mr r6,r8 + mr r7,r9 + mr r8,r10 + +#if defined(USE_PPC_SVC) && defined(__powerpc64__) + CHECK_SCV_SUPPORT r9 0f + + stdu r1, -SCV_FRAME_SIZE(r1) + cfi_adjust_cfa_offset (SCV_FRAME_SIZE) + .machine "push" + .machine "power9" + scv 0 + .machine "pop" + .globl __syscall_cancel_arch_end_svc +__syscall_cancel_arch_end_svc: + ld r9, SCV_FRAME_SIZE + FRAME_LR_SAVE(r1) + mtlr r9 + addi r1, r1, SCV_FRAME_SIZE + cfi_restore (lr) + li r9, -4095 + cmpld r3, r9 + bnslr+ + neg r3,r3 + blr +0: +#endif + sc + .globl __syscall_cancel_arch_end_sc +__syscall_cancel_arch_end_sc: + bnslr+ + neg r3,r3 + blr + + /* Although the __syscall_do_cancel do not return, we need to stack + being set correctly for unwind. */ +1: + TAIL_CALL_NO_RETURN (__syscall_do_cancel) + +END (__syscall_cancel_arch) diff --git a/sysdeps/unix/sysv/linux/readdir_r.c b/sysdeps/unix/sysv/linux/readdir_r.c index ffd5262cf5..1d595688f7 100644 --- a/sysdeps/unix/sysv/linux/readdir_r.c +++ b/sysdeps/unix/sysv/linux/readdir_r.c @@ -25,14 +25,22 @@ __readdir_r (DIR *dirp, struct dirent *entry, struct dirent **result) { struct dirent *dp; size_t reclen; + int saved_errno = errno; __libc_lock_lock (dirp->lock); while (1) { + /* If errno is changed from 0, the NULL return value indicates + an actual error. It overrides a pending ENAMETOOLONG error. */ + __set_errno (0); dp = __readdir_unlocked (dirp); if (dp == NULL) - break; + { + if (errno != 0) + dirp->errcode = errno; + break; + } reclen = dp->d_reclen; if (reclen <= offsetof (struct dirent, d_name) + NAME_MAX + 1) @@ -61,6 +69,7 @@ __readdir_r (DIR *dirp, struct dirent *entry, struct dirent **result) __libc_lock_unlock (dirp->lock); + __set_errno (saved_errno); return dp != NULL ? 0 : dirp->errcode; } diff --git a/sysdeps/unix/sysv/linux/riscv/rv32/arch-syscall.h b/sysdeps/unix/sysv/linux/riscv/rv32/arch-syscall.h index 7315d164d6..eb9e57b028 100644 --- a/sysdeps/unix/sysv/linux/riscv/rv32/arch-syscall.h +++ b/sysdeps/unix/sysv/linux/riscv/rv32/arch-syscall.h @@ -153,6 +153,7 @@ #define __NR_mq_timedsend_time64 418 #define __NR_mq_unlink 181 #define __NR_mremap 216 +#define __NR_mseal 462 #define __NR_msgctl 187 #define __NR_msgget 186 #define __NR_msgrcv 188 diff --git a/sysdeps/unix/sysv/linux/riscv/rv64/arch-syscall.h b/sysdeps/unix/sysv/linux/riscv/rv64/arch-syscall.h index 31a1130db9..1eac18e582 100644 --- a/sysdeps/unix/sysv/linux/riscv/rv64/arch-syscall.h +++ b/sysdeps/unix/sysv/linux/riscv/rv64/arch-syscall.h @@ -158,6 +158,7 @@ #define __NR_mq_timedsend 182 #define __NR_mq_unlink 181 #define __NR_mremap 216 +#define __NR_mseal 462 #define __NR_msgctl 187 #define __NR_msgget 186 #define __NR_msgrcv 188 diff --git a/sysdeps/unix/sysv/linux/riscv/syscall_cancel.S b/sysdeps/unix/sysv/linux/riscv/syscall_cancel.S new file mode 100644 index 0000000000..742c748d09 --- /dev/null +++ b/sysdeps/unix/sysv/linux/riscv/syscall_cancel.S @@ -0,0 +1,67 @@ +/* Cancellable syscall wrapper. Linux/riscv version. + Copyright (C) 2023 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +#include <sysdep.h> +#include <descr-const.h> + +/* long int __syscall_cancel_arch (int *cancelhandling, + __syscall_arg_t nr, + __syscall_arg_t arg1, + __syscall_arg_t arg2, + __syscall_arg_t arg3, + __syscall_arg_t arg4, + __syscall_arg_t arg5, + __syscall_arg_t arg6) */ + +#ifdef SHARED + .option pic +#else + .option nopic +#endif + +ENTRY (__syscall_cancel_arch) + + .globl __syscall_cancel_arch_start +__syscall_cancel_arch_start: + lw t1, 0(a0) + /* if (*ch & CANCELED_BITMASK) */ + andi t1, t1, TCB_CANCELED_BITMASK + bne t1, zero, 1f + + mv t3, a1 + mv a0, a2 + mv a1, a3 + mv a2, a4 + mv a3, a5 + mv a4, a6 + mv a5, a7 + mv a7, t3 + scall + + .globl __syscall_cancel_arch_end +__syscall_cancel_arch_end: + ret + +1: + addi sp, sp, -16 + cfi_def_cfa_offset (16) + REG_S ra, (16-SZREG)(sp) + cfi_offset (ra, -SZREG) + call __syscall_do_cancel + +END (__syscall_cancel_arch) diff --git a/sysdeps/unix/sysv/linux/rseq-internal.h b/sysdeps/unix/sysv/linux/rseq-internal.h index 48eebc1e16..7ea935b4ad 100644 --- a/sysdeps/unix/sysv/linux/rseq-internal.h +++ b/sysdeps/unix/sysv/linux/rseq-internal.h @@ -25,15 +25,34 @@ #include <stdio.h> #include <sys/rseq.h> +/* 32 is the initially required value for the area size. The + actually used rseq size may be less (20 bytes initially). */ +#define RSEQ_AREA_SIZE_INITIAL 32 +#define RSEQ_AREA_SIZE_INITIAL_USED 20 + +/* The variables are in .data.relro but are not yet write-protected. */ +extern unsigned int _rseq_size attribute_hidden; +extern ptrdiff_t _rseq_offset attribute_hidden; + #ifdef RSEQ_SIG static inline bool rseq_register_current_thread (struct pthread *self, bool do_rseq) { if (do_rseq) { + unsigned int size; +#if IS_IN (rtld) + /* Use the hidden symbol in ld.so. */ + size = _rseq_size; +#else + size = __rseq_size; +#endif + if (size < RSEQ_AREA_SIZE_INITIAL) + /* The initial implementation used only 20 bytes out of 32, + but still expected size 32. */ + size = RSEQ_AREA_SIZE_INITIAL; int ret = INTERNAL_SYSCALL_CALL (rseq, &self->rseq_area, - sizeof (self->rseq_area), - 0, RSEQ_SIG); + size, 0, RSEQ_SIG); if (!INTERNAL_SYSCALL_ERROR_P (ret)) return true; } diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/arch-syscall.h b/sysdeps/unix/sysv/linux/s390/s390-32/arch-syscall.h index cf8569304d..464eca58b2 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-32/arch-syscall.h +++ b/sysdeps/unix/sysv/linux/s390/s390-32/arch-syscall.h @@ -214,6 +214,7 @@ #define __NR_mq_timedsend_time64 418 #define __NR_mq_unlink 272 #define __NR_mremap 163 +#define __NR_mseal 462 #define __NR_msgctl 402 #define __NR_msgget 399 #define __NR_msgrcv 401 diff --git a/sysdeps/unix/sysv/linux/s390/s390-32/syscall_cancel.S b/sysdeps/unix/sysv/linux/s390/s390-32/syscall_cancel.S new file mode 100644 index 0000000000..9e0ad2a635 --- /dev/null +++ b/sysdeps/unix/sysv/linux/s390/s390-32/syscall_cancel.S @@ -0,0 +1,62 @@ +/* Cancellable syscall wrapper. Linux/s390 version. + Copyright (C) 2023 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +#include <sysdep.h> +#include <descr-const.h> + +/* long int __syscall_cancel_arch (int *cancelhandling, + __syscall_arg_t nr, + __syscall_arg_t arg1, + __syscall_arg_t arg2, + __syscall_arg_t arg3, + __syscall_arg_t arg4, + __syscall_arg_t arg5, + __syscall_arg_t arg6) */ + +ENTRY (__syscall_cancel_arch) + stm %r6,%r7,24(%r15) + cfi_offset (%r6, -72) + cfi_offset (%r7, -68) + + .globl __syscall_cancel_arch_start +__syscall_cancel_arch_start: + /* if (*cancelhandling & CANCELED_BITMASK) + __syscall_do_cancel() */ + tm 3(%r2),TCB_CANCELED_BITMASK + jne 1f + + /* Issue a 6 argument syscall, the nr [%r1] being the syscall + number. */ + lr %r1,%r3 + lr %r2,%r4 + lr %r3,%r5 + lr %r4,%r6 + lm %r5,%r7,96(%r15) + svc 0 + + .globl __syscall_cancel_arch_end +__syscall_cancel_arch_end: + lm %r6,%r7,24(%r15) + cfi_remember_state + cfi_restore (%r7) + cfi_restore (%r6) + br %r14 +1: + cfi_restore_state + jg __syscall_do_cancel +END (__syscall_cancel_arch) diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/arch-syscall.h b/sysdeps/unix/sysv/linux/s390/s390-64/arch-syscall.h index f3536ed03f..57842702fd 100644 --- a/sysdeps/unix/sysv/linux/s390/s390-64/arch-syscall.h +++ b/sysdeps/unix/sysv/linux/s390/s390-64/arch-syscall.h @@ -185,6 +185,7 @@ #define __NR_mq_timedsend 273 #define __NR_mq_unlink 272 #define __NR_mremap 163 +#define __NR_mseal 462 #define __NR_msgctl 402 #define __NR_msgget 399 #define __NR_msgrcv 401 diff --git a/sysdeps/unix/sysv/linux/s390/s390-64/syscall_cancel.S b/sysdeps/unix/sysv/linux/s390/s390-64/syscall_cancel.S new file mode 100644 index 0000000000..e1620add6a --- /dev/null +++ b/sysdeps/unix/sysv/linux/s390/s390-64/syscall_cancel.S @@ -0,0 +1,62 @@ +/* Cancellable syscall wrapper. Linux/s390x version. + Copyright (C) 2023 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +#include <sysdep.h> +#include <descr-const.h> + +/* long int __syscall_cancel_arch (int *cancelhandling, + __syscall_arg_t nr, + __syscall_arg_t arg1, + __syscall_arg_t arg2, + __syscall_arg_t arg3, + __syscall_arg_t arg4, + __syscall_arg_t arg5, + __syscall_arg_t arg6) */ + +ENTRY (__syscall_cancel_arch) + stmg %r6,%r7,48(%r15) + cfi_offset (%r6, -112) + cfi_offset (%r7, -104) + + .globl __syscall_cancel_arch_start +__syscall_cancel_arch_start: + /* if (*cancelhandling & CANCELED_BITMASK) + __syscall_do_cancel() */ + tm 3(%r2),TCB_CANCELED_BITMASK + jne 1f + + /* Issue a 6 argument syscall, the nr [%r1] being the syscall + number. */ + lgr %r1,%r3 + lgr %r2,%r4 + lgr %r3,%r5 + lgr %r4,%r6 + lmg %r5,%r7,160(%r15) + svc 0 + + .globl __syscall_cancel_arch_end +__syscall_cancel_arch_end: + lmg %r6,%r7,48(%r15) + cfi_remember_state + cfi_restore (%r7) + cfi_restore (%r6) + br %r14 +1: + cfi_restore_state + jg __syscall_do_cancel +END (__syscall_cancel_arch) diff --git a/sysdeps/unix/sysv/linux/sh/arch-syscall.h b/sysdeps/unix/sysv/linux/sh/arch-syscall.h index 0c88bf10c7..165ba017c7 100644 --- a/sysdeps/unix/sysv/linux/sh/arch-syscall.h +++ b/sysdeps/unix/sysv/linux/sh/arch-syscall.h @@ -206,6 +206,7 @@ #define __NR_mq_timedsend_time64 418 #define __NR_mq_unlink 278 #define __NR_mremap 163 +#define __NR_mseal 462 #define __NR_msgctl 402 #define __NR_msgget 399 #define __NR_msgrcv 401 @@ -378,6 +379,7 @@ #define __NR_symlinkat 304 #define __NR_sync 36 #define __NR_sync_file_range 314 +#define __NR_sync_file_range2 388 #define __NR_syncfs 362 #define __NR_sysfs 135 #define __NR_sysinfo 116 diff --git a/sysdeps/unix/sysv/linux/sh/syscall_cancel.S b/sysdeps/unix/sysv/linux/sh/syscall_cancel.S new file mode 100644 index 0000000000..2afd23928d --- /dev/null +++ b/sysdeps/unix/sysv/linux/sh/syscall_cancel.S @@ -0,0 +1,126 @@ +/* Cancellable syscall wrapper. Linux/sh version. + Copyright (C) 2023 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +#include <sysdep.h> +#include <descr-const.h> + +/* long int __syscall_cancel_arch (int *cancelhandling, + long int nr, + long int arg1, + long int arg2, + long int arg3, + long int arg4, + long int arg5, + long int arg6) */ + +ENTRY (__syscall_cancel_arch) + +#ifdef SHARED + mov.l r12,@-r15 + cfi_def_cfa_offset (4) + cfi_offset (12, -4) + mova L(GT),r0 + mov.l L(GT),r12 + sts.l pr,@-r15 + cfi_def_cfa_offset (8) + cfi_offset (17, -8) + add r0,r12 +#else + sts.l pr,@-r15 + cfi_def_cfa_offset (4) + cfi_offset (17, -4) +#endif + + .globl __syscall_cancel_arch_start +__syscall_cancel_arch_start: + + /* if (*cancelhandling & CANCELED_BITMASK) + __syscall_do_cancel() */ + mov.l @r4,r0 + tst #TCB_CANCELED_BITMASK,r0 + bf/s 1f + + /* Issue a 6 argument syscall. */ + mov r5,r3 + mov r6,r4 + mov r7,r5 +#ifdef SHARED + mov.l @(8,r15),r6 + mov.l @(12,r15),r7 + mov.l @(16,r15),r0 + mov.l @(20,r15),r1 +#else + mov.l @(4,r15),r6 + mov.l @(8,r15),r7 + mov.l @(12,r15),r0 + mov.l @(16,r15),r1 +#endif + trapa #0x16 + + .globl __syscall_cancel_arch_end +__syscall_cancel_arch_end: + + /* The additional or is a workaround for a hardware issue: + http://documentation.renesas.com/eng/products/mpumcu/tu/tnsh7456ae.pdf + */ + or r0,r0 + or r0,r0 + or r0,r0 + or r0,r0 + or r0,r0 + + lds.l @r15+,pr + cfi_remember_state + cfi_restore (17) +#ifdef SHARED + cfi_def_cfa_offset (4) + rts + mov.l @r15+,r12 + cfi_def_cfa_offset (0) + cfi_restore (12) + .align 1 +1: + cfi_restore_state + mov.l L(SC),r1 + bsrf r1 +L(M): + nop + + .align 2 +L(GT): + .long _GLOBAL_OFFSET_TABLE_ +L(SC): + .long __syscall_do_cancel-(L(M)+2) +#else + cfi_def_cfa_offset (0) + rts + nop + + .align 1 +1: + cfi_restore_state + mov.l 2f,r1 + jsr @r1 + nop + + .align 2 +2: + .long __syscall_do_cancel +#endif + +END (__syscall_cancel_arch) diff --git a/sysdeps/unix/sysv/linux/socketcall.h b/sysdeps/unix/sysv/linux/socketcall.h index 537fa43678..0efa5ee9e4 100644 --- a/sysdeps/unix/sysv/linux/socketcall.h +++ b/sysdeps/unix/sysv/linux/socketcall.h @@ -88,14 +88,33 @@ sc_ret; \ }) - -#define SOCKETCALL_CANCEL(name, args...) \ - ({ \ - int oldtype = LIBC_CANCEL_ASYNC (); \ - long int sc_ret = __SOCKETCALL (SOCKOP_##name, args); \ - LIBC_CANCEL_RESET (oldtype); \ - sc_ret; \ - }) +#define __SOCKETCALL_CANCEL1(__name, __a1) \ + SYSCALL_CANCEL (socketcall, __name, \ + ((long int [1]) { (long int) __a1 })) +#define __SOCKETCALL_CANCEL2(__name, __a1, __a2) \ + SYSCALL_CANCEL (socketcall, __name, \ + ((long int [2]) { (long int) __a1, (long int) __a2 })) +#define __SOCKETCALL_CANCEL3(__name, __a1, __a2, __a3) \ + SYSCALL_CANCEL (socketcall, __name, \ + ((long int [3]) { (long int) __a1, (long int) __a2, (long int) __a3 })) +#define __SOCKETCALL_CANCEL4(__name, __a1, __a2, __a3, __a4) \ + SYSCALL_CANCEL (socketcall, __name, \ + ((long int [4]) { (long int) __a1, (long int) __a2, (long int) __a3, \ + (long int) __a4 })) +#define __SOCKETCALL_CANCEL5(__name, __a1, __a2, __a3, __a4, __a5) \ + SYSCALL_CANCEL (socketcall, __name, \ + ((long int [5]) { (long int) __a1, (long int) __a2, (long int) __a3, \ + (long int) __a4, (long int) __a5 })) +#define __SOCKETCALL_CANCEL6(__name, __a1, __a2, __a3, __a4, __a5, __a6) \ + SYSCALL_CANCEL (socketcall, __name, \ + ((long int [6]) { (long int) __a1, (long int) __a2, (long int) __a3, \ + (long int) __a4, (long int) __a5, (long int) __a6 })) + +#define __SOCKETCALL_CANCEL(...) __SOCKETCALL_DISP (__SOCKETCALL_CANCEL,\ + __VA_ARGS__) + +#define SOCKETCALL_CANCEL(name, args...) \ + __SOCKETCALL_CANCEL (SOCKOP_##name, args) #endif /* sys/socketcall.h */ diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/arch-syscall.h b/sysdeps/unix/sysv/linux/sparc/sparc32/arch-syscall.h index 19fa614624..3bad6f102f 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc32/arch-syscall.h +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/arch-syscall.h @@ -211,6 +211,7 @@ #define __NR_mq_timedsend_time64 418 #define __NR_mq_unlink 274 #define __NR_mremap 250 +#define __NR_mseal 462 #define __NR_msgctl 402 #define __NR_msgget 399 #define __NR_msgrcv 401 diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/clone.S b/sysdeps/unix/sysv/linux/sparc/sparc32/clone.S index 748d25fcfe..c9cf9bb055 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc32/clone.S +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/clone.S @@ -28,6 +28,9 @@ .text ENTRY (__clone) save %sp,-96,%sp + save %sp,-96,%sp + flushw + restore cfi_def_cfa_register(%fp) cfi_window_save cfi_register(%o7, %i7) diff --git a/sysdeps/unix/sysv/linux/sparc/sparc32/syscall_cancel.S b/sysdeps/unix/sysv/linux/sparc/sparc32/syscall_cancel.S new file mode 100644 index 0000000000..aa5c658ce1 --- /dev/null +++ b/sysdeps/unix/sysv/linux/sparc/sparc32/syscall_cancel.S @@ -0,0 +1,71 @@ +/* Cancellable syscall wrapper. Linux/sparc32 version. + Copyright (C) 2023 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +#include <sysdep.h> +#include <descr-const.h> + +/* long int __syscall_cancel_arch (int *cancelhandling, + long int nr, + long int arg1, + long int arg2, + long int arg3, + long int arg4, + long int arg5, + long int arg6) */ + +ENTRY (__syscall_cancel_arch) + save %sp, -96, %sp + + cfi_window_save + cfi_register (%o7, %i7) + cfi_def_cfa_register (%fp) + + .globl __syscall_cancel_arch_start +__syscall_cancel_arch_start: + + /* if (*cancelhandling & CANCELED_BITMASK) + __syscall_do_cancel() */ + ld [%i0], %g2 + andcc %g2, TCB_CANCELED_BITMASK, %g0 + bne,pn %icc, 2f + /* Issue a 6 argument syscall. */ + mov %i1, %g1 + mov %i2, %o0 + mov %i3, %o1 + mov %i4, %o2 + mov %i5, %o3 + ld [%fp+92], %o4 + ld [%fp+96], %o5 + ta 0x10 + + .globl __syscall_cancel_arch_end +__syscall_cancel_arch_end: + bcc 1f + nop + sub %g0, %o0, %o0 +1: + mov %o0, %i0 + return %i7+8 + nop + +2: + call __syscall_do_cancel, 0 + nop + nop + +END (__syscall_cancel_arch) diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/arch-syscall.h b/sysdeps/unix/sysv/linux/sparc/sparc64/arch-syscall.h index 18516f20cb..98e1437920 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc64/arch-syscall.h +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/arch-syscall.h @@ -192,6 +192,7 @@ #define __NR_mq_timedsend 275 #define __NR_mq_unlink 274 #define __NR_mremap 250 +#define __NR_mseal 462 #define __NR_msgctl 402 #define __NR_msgget 399 #define __NR_msgrcv 401 diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/clone.S b/sysdeps/unix/sysv/linux/sparc/sparc64/clone.S index e5ff2cf1a0..370d51fda2 100644 --- a/sysdeps/unix/sysv/linux/sparc/sparc64/clone.S +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/clone.S @@ -32,6 +32,9 @@ ENTRY (__clone) save %sp, -192, %sp + save %sp, -192, %sp + flushw + restore cfi_def_cfa_register(%fp) cfi_window_save cfi_register(%o7, %i7) diff --git a/sysdeps/unix/sysv/linux/sparc/sparc64/syscall_cancel.S b/sysdeps/unix/sysv/linux/sparc/sparc64/syscall_cancel.S new file mode 100644 index 0000000000..21b0728d5a --- /dev/null +++ b/sysdeps/unix/sysv/linux/sparc/sparc64/syscall_cancel.S @@ -0,0 +1,74 @@ +/* Cancellable syscall wrapper. Linux/sparc64 version. + Copyright (C) 2023 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +#include <sysdep.h> +#include <descr-const.h> + + .register %g2, #scratch + +/* long int __syscall_cancel_arch (int *cancelhandling, + long int nr, + long int arg1, + long int arg2, + long int arg3, + long int arg4, + long int arg5, + long int arg6) */ + +ENTRY (__syscall_cancel_arch) + save %sp, -176, %sp + + cfi_window_save + cfi_register (%o7, %i7) + cfi_def_cfa_register (%fp) + + .globl __syscall_cancel_arch_start +__syscall_cancel_arch_start: + + /* if (*cancelhandling & CANCELED_BITMASK) + __syscall_do_cancel() */ + lduw [%i0], %g2 + andcc %g2, TCB_CANCELED_BITMASK, %g0 + bne,pn %xcc, 2f + /* Issue a 6 argument syscall. */ + mov %i1, %g1 + mov %i2, %o0 + mov %i3, %o1 + mov %i4, %o2 + mov %i5, %o3 + ldx [%fp + STACK_BIAS + 176], %o4 + ldx [%fp + STACK_BIAS + 184], %o5 + ta 0x6d + + .global __syscall_cancel_arch_end +__syscall_cancel_arch_end: + + bcc,pt %xcc, 1f + nop + sub %g0, %o0, %o0 +1: + mov %o0, %i0 + return %i7+8 + nop + +2: + call __syscall_do_cancel, 0 + nop + nop + +END (__syscall_cancel_arch) diff --git a/sysdeps/unix/sysv/linux/syscall-names.list b/sysdeps/unix/sysv/linux/syscall-names.list index 672d39eaad..7871f93b94 100644 --- a/sysdeps/unix/sysv/linux/syscall-names.list +++ b/sysdeps/unix/sysv/linux/syscall-names.list @@ -21,8 +21,8 @@ # This file can list all potential system calls. The names are only # used if the installed kernel headers also provide them. -# The list of system calls is current as of Linux 6.9. -kernel 6.9 +# The list of system calls is current as of Linux 6.10. +kernel 6.10 FAST_atomic_update FAST_cmpxchg @@ -287,6 +287,7 @@ mq_timedsend mq_timedsend_time64 mq_unlink mremap +mseal msgctl msgget msgrcv diff --git a/sysdeps/unix/sysv/linux/syscall_cancel.c b/sysdeps/unix/sysv/linux/syscall_cancel.c new file mode 100644 index 0000000000..5fa0706486 --- /dev/null +++ b/sysdeps/unix/sysv/linux/syscall_cancel.c @@ -0,0 +1,73 @@ +/* Pthread cancellation syscall bridge. Default Linux version. + Copyright (C) 2023 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +#include <sysdep.h> +#include <pthreadP.h> + +#warning "This implementation should be use just as reference or for bootstrapping" + +/* This is the generic version of the cancellable syscall code which + adds the label guards (__syscall_cancel_arch_{start,end}) used on SIGCANCEL + handler to check if the cancelled syscall have side-effects that need to be + returned to the caller. + + This implementation should be used as a reference one to document the + implementation constraints: + + 1. The __syscall_cancel_arch_start should point just before the test + that thread is already cancelled, + 2. The __syscall_cancel_arch_end should point to the immediate next + instruction after the syscall one. + 3. It should return the syscall value or a negative result if is has + failed, similar to INTERNAL_SYSCALL_CALL. + + The __syscall_cancel_arch_end one is because the kernel will signal + interrupted syscall with side effects by setting the signal frame program + counter (on the ucontext_t third argument from SA_SIGINFO signal handler) + right after the syscall instruction. + + For some architecture, the INTERNAL_SYSCALL_NCS macro use more instructions + to get the error condition from kernel (as for powerpc and sparc that + checks for the conditional register), or uses an out of the line helper + (ARM thumb), or uses a kernel helper gate (i686 or ia64). In this case + the architecture should either adjust the macro or provide a custom + __syscall_cancel_arch implementation. */ + +long int +__syscall_cancel_arch (volatile int *ch, __syscall_arg_t nr, + __syscall_arg_t a1, __syscall_arg_t a2, + __syscall_arg_t a3, __syscall_arg_t a4, + __syscall_arg_t a5, __syscall_arg_t a6 + __SYSCALL_CANCEL7_ARG_DEF) +{ +#define ADD_LABEL(__label) \ + asm volatile ( \ + ".global " __label "\t\n" \ + __label ":\n"); + + ADD_LABEL ("__syscall_cancel_arch_start"); + if (__glibc_unlikely (*ch & CANCELED_BITMASK)) + __syscall_do_cancel(); + + long int result = INTERNAL_SYSCALL_NCS_CALL (nr, a1, a2, a3, a4, a5, a6 + __SYSCALL_CANCEL7_ARG7); + ADD_LABEL ("__syscall_cancel_arch_end"); + if (__glibc_unlikely (INTERNAL_SYSCALL_ERROR_P (result))) + return -INTERNAL_SYSCALL_ERRNO (result); + return result; +} diff --git a/sysdeps/unix/sysv/linux/sysdep-cancel.h b/sysdeps/unix/sysv/linux/sysdep-cancel.h index c48a50fa88..3f1543fec2 100644 --- a/sysdeps/unix/sysv/linux/sysdep-cancel.h +++ b/sysdeps/unix/sysv/linux/sysdep-cancel.h @@ -21,17 +21,5 @@ #define _SYSDEP_CANCEL_H #include <sysdep.h> -#include <tls.h> -#include <errno.h> - -/* Set cancellation mode to asynchronous. */ -extern int __pthread_enable_asynccancel (void); -libc_hidden_proto (__pthread_enable_asynccancel) -#define LIBC_CANCEL_ASYNC() __pthread_enable_asynccancel () - -/* Reset to previous cancellation mode. */ -extern void __pthread_disable_asynccancel (int oldtype); -libc_hidden_proto (__pthread_disable_asynccancel) -#define LIBC_CANCEL_RESET(oldtype) __pthread_disable_asynccancel (oldtype) #endif diff --git a/sysdeps/unix/sysv/linux/tst-linux-mremap1.c b/sysdeps/unix/sysv/linux/tst-linux-mremap1.c new file mode 100644 index 0000000000..408e8af2ab --- /dev/null +++ b/sysdeps/unix/sysv/linux/tst-linux-mremap1.c @@ -0,0 +1,63 @@ +/* Test mremap with MREMAP_DONTUNMAP. + Copyright (C) 2024 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 + <https://www.gnu.org/licenses/>. */ + +#include <errno.h> +#include <sys/mman.h> +#include <support/xstdlib.h> +#include <support/xunistd.h> +#include <support/check.h> +#include <support/test-driver.h> +#include <mremap-failure.h> + +static int +do_test (void) +{ + size_t old_size = getpagesize (); + size_t new_size = old_size; + char *old_addr = xmmap (NULL, old_size, PROT_READ | PROT_WRITE, + MAP_PRIVATE | MAP_ANONYMOUS, -1); + old_addr[0] = 1; + old_addr[old_size - 1] = 2; + + /* Create an available 64-page mmap region. */ + size_t fixed_size = old_size * 64; + char *fixed_addr = xmmap (NULL, fixed_size, PROT_READ | PROT_WRITE, + MAP_PRIVATE | MAP_ANONYMOUS, -1); + xmunmap (fixed_addr, fixed_size); + + /* Add 3 * pagesize. */ + fixed_size += 3 * old_size; + + /* Test MREMAP_DONTUNMAP. It should return FIXED_ADDR created above. */ + char *new_addr = mremap (old_addr, old_size, new_size, + MREMAP_DONTUNMAP | MREMAP_MAYMOVE, + fixed_addr); + if (new_addr == MAP_FAILED) + return mremap_failure_exit (errno); + TEST_VERIFY_EXIT (fixed_addr == new_addr); + old_addr[0] = 3; + old_addr[old_size - 1] = 4; + new_addr[0] = 1; + new_addr[new_size - 1] = 2; + xmunmap (new_addr, new_size); + xmunmap (old_addr, old_size); + + return 0; +} + +#include <support/test-driver.c> diff --git a/sysdeps/unix/sysv/linux/tst-mman-consts.py b/sysdeps/unix/sysv/linux/tst-mman-consts.py index 441261c945..a1137eb1d5 100644 --- a/sysdeps/unix/sysv/linux/tst-mman-consts.py +++ b/sysdeps/unix/sysv/linux/tst-mman-consts.py @@ -33,7 +33,7 @@ def main(): help='C compiler (including options) to use') args = parser.parse_args() linux_version_headers = glibcsyscalls.linux_kernel_version(args.cc) - linux_version_glibc = (6, 9) + linux_version_glibc = (6, 10) sys.exit(glibcextract.compare_macro_consts( '#define _GNU_SOURCE 1\n' '#include <sys/mman.h>\n', diff --git a/sysdeps/unix/sysv/linux/tst-mount-consts.py b/sysdeps/unix/sysv/linux/tst-mount-consts.py index c4a67221c1..675f1790b6 100755 --- a/sysdeps/unix/sysv/linux/tst-mount-consts.py +++ b/sysdeps/unix/sysv/linux/tst-mount-consts.py @@ -39,10 +39,10 @@ def main(): sys.exit (77) linux_version_headers = glibcsyscalls.linux_kernel_version(args.cc) - # Constants in glibc were updated to match Linux v6.9. When glibc + # Constants in glibc were updated to match Linux v6.10. When glibc # constants are updated this value should be updated to match the # released kernel version from which the constants were taken. - linux_version_glibc = (6, 9) + linux_version_glibc = (6, 10) def check(cte, exclude=None): return glibcextract.compare_macro_consts( '#include <sys/mount.h>\n', diff --git a/sysdeps/unix/sysv/linux/tst-pidfd-consts.py b/sysdeps/unix/sysv/linux/tst-pidfd-consts.py index 6f05291949..9824fd214d 100644 --- a/sysdeps/unix/sysv/linux/tst-pidfd-consts.py +++ b/sysdeps/unix/sysv/linux/tst-pidfd-consts.py @@ -39,7 +39,7 @@ def main(): sys.exit (77) linux_version_headers = glibcsyscalls.linux_kernel_version(args.cc) - linux_version_glibc = (6, 9) + linux_version_glibc = (6, 10) sys.exit(glibcextract.compare_macro_consts( '#include <sys/pidfd.h>\n', '#include <asm/fcntl.h>\n' diff --git a/sysdeps/unix/sysv/linux/tst-pkey.c b/sysdeps/unix/sysv/linux/tst-pkey.c index d9083daab9..297a7fbc02 100644 --- a/sysdeps/unix/sysv/linux/tst-pkey.c +++ b/sysdeps/unix/sysv/linux/tst-pkey.c @@ -205,7 +205,13 @@ do_test (void) " protection keys"); FAIL_EXIT1 ("pkey_alloc: %m"); } - TEST_COMPARE (pkey_get (keys[0]), 0); + if (pkey_get (keys[0]) < 0) + { + if (errno == ENOSYS) + FAIL_UNSUPPORTED + ("glibc does not support memory protection keys"); + FAIL_EXIT1 ("pkey_get: %m"); + } for (int i = 1; i < key_count; ++i) { keys[i] = pkey_alloc (0, i); diff --git a/sysdeps/unix/sysv/linux/tst-rseq-nptl.c b/sysdeps/unix/sysv/linux/tst-rseq-nptl.c index b9f498473d..2a246c4593 100644 --- a/sysdeps/unix/sysv/linux/tst-rseq-nptl.c +++ b/sysdeps/unix/sysv/linux/tst-rseq-nptl.c @@ -28,6 +28,11 @@ #include <sys/rseq.h> #include <unistd.h> +/* Set this in 'do_test' only so as to invoke the destructor test in + the test process only and not 'support_test_main' parent. Otherwise + the test harness may hang in the destructor if something goes wrong. */ +static int run_destructor_test; + #ifdef RSEQ_SIG # include <array_length.h> # include <errno.h> @@ -236,6 +241,9 @@ do_rseq_test (void) static void __attribute__ ((destructor)) do_rseq_destructor_test (void) { + if (!run_destructor_test) + return; + /* Cannot use deferred failure reporting after main returns. */ if (do_rseq_test ()) FAIL_EXIT1 ("rseq not registered within destructor"); @@ -254,6 +262,7 @@ do_rseq_test (void) static int do_test (void) { + run_destructor_test = 1; return do_rseq_test (); } diff --git a/sysdeps/unix/sysv/linux/tst-rseq.c b/sysdeps/unix/sysv/linux/tst-rseq.c index 2c90409ba0..08a9533130 100644 --- a/sysdeps/unix/sysv/linux/tst-rseq.c +++ b/sysdeps/unix/sysv/linux/tst-rseq.c @@ -29,6 +29,7 @@ # include <stdlib.h> # include <string.h> # include <syscall.h> +# include <sys/auxv.h> # include <thread_pointer.h> # include <tls.h> # include "tst-rseq.h" @@ -42,7 +43,8 @@ do_rseq_main_test (void) TEST_COMPARE (__rseq_flags, 0); TEST_VERIFY ((char *) __thread_pointer () + __rseq_offset == (char *) &pd->rseq_area); - TEST_COMPARE (__rseq_size, sizeof (pd->rseq_area)); + /* The current implementation only supports the initial size. */ + TEST_COMPARE (__rseq_size, 20); } static void @@ -52,6 +54,12 @@ do_rseq_test (void) { FAIL_UNSUPPORTED ("kernel does not support rseq, skipping test"); } + printf ("info: __rseq_size: %u\n", __rseq_size); + printf ("info: __rseq_offset: %td\n", __rseq_offset); + printf ("info: __rseq_flags: %u\n", __rseq_flags); + printf ("info: getauxval (AT_RSEQ_FEATURE_SIZE): %ld\n", + getauxval (AT_RSEQ_FEATURE_SIZE)); + printf ("info: getauxval (AT_RSEQ_ALIGN): %ld\n", getauxval (AT_RSEQ_ALIGN)); do_rseq_main_test (); } #else /* RSEQ_SIG */ diff --git a/sysdeps/unix/sysv/linux/tst-skeleton-affinity.c b/sysdeps/unix/sysv/linux/tst-skeleton-affinity.c index 31a15b3ad7..2f921ed397 100644 --- a/sysdeps/unix/sysv/linux/tst-skeleton-affinity.c +++ b/sysdeps/unix/sysv/linux/tst-skeleton-affinity.c @@ -157,7 +157,7 @@ test_size (const struct conf *conf, size_t size) if (setaffinity (kernel_size, initial_set) < 0) { printf ("error: size %zu: setaffinity: %m\n", size); - return true; + return false; } /* Use one-CPU set to test switching between CPUs. */ diff --git a/sysdeps/unix/sysv/linux/x86_64/64/arch-syscall.h b/sysdeps/unix/sysv/linux/x86_64/64/arch-syscall.h index b122216013..5d86e75dd5 100644 --- a/sysdeps/unix/sysv/linux/x86_64/64/arch-syscall.h +++ b/sysdeps/unix/sysv/linux/x86_64/64/arch-syscall.h @@ -189,6 +189,7 @@ #define __NR_mq_timedsend 242 #define __NR_mq_unlink 241 #define __NR_mremap 25 +#define __NR_mseal 462 #define __NR_msgctl 71 #define __NR_msgget 68 #define __NR_msgrcv 70 diff --git a/sysdeps/unix/sysv/linux/x86_64/dl-cet.h b/sysdeps/unix/sysv/linux/x86_64/dl-cet.h index 1fe3133406..b4f7e6c9cd 100644 --- a/sysdeps/unix/sysv/linux/x86_64/dl-cet.h +++ b/sysdeps/unix/sysv/linux/x86_64/dl-cet.h @@ -92,9 +92,9 @@ dl_cet_ibt_enabled (void) # Pass GL(dl_x86_feature_1) to _dl_cet_setup_features.\n\ movl %edx, %edi\n\ # Align stack for the _dl_cet_setup_features call.\n\ - andq $-16, %rsp\n\ + and $-16, %" RSP_LP "\n\ call _dl_cet_setup_features\n\ # Restore %rax and %rsp from %r12 and %r13.\n\ - movq %r12, %rax\n\ - movq %r13, %rsp\n\ + mov %" R12_LP ", %" RAX_LP "\n\ + mov %" R13_LP ", %" RSP_LP "\n\ " diff --git a/sysdeps/unix/sysv/linux/x86_64/syscall_cancel.S b/sysdeps/unix/sysv/linux/x86_64/syscall_cancel.S new file mode 100644 index 0000000000..cda9d20a83 --- /dev/null +++ b/sysdeps/unix/sysv/linux/x86_64/syscall_cancel.S @@ -0,0 +1,57 @@ +/* Cancellable syscall wrapper. Linux/x86_64 version. + Copyright (C) 2023 Free Software Foundation, Inc. + This file is part of the GNU C Library. + + The GNU C Library is free software; you can redistribute it and/or + modify it under the terms of the GNU Lesser General Public + License as published by the Free Software Foundation; either + version 2.1 of the License, or (at your option) any later version. + + The GNU C Library is distributed in the hope that it will be useful, + but WITHOUT ANY WARRANTY; without even the implied warranty of + MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + Lesser General Public License for more details. + + You should have received a copy of the GNU Lesser General Public + License along with the GNU C Library; if not, see + <http://www.gnu.org/licenses/>. */ + +#include <sysdep.h> +#include <descr-const.h> + +/* long int [rax] __syscall_cancel_arch (volatile int *cancelhandling [%rdi], + __syscall_arg_t nr [%rsi], + __syscall_arg_t arg1 [%rdx], + __syscall_arg_t arg2 [%rcx], + __syscall_arg_t arg3 [%r8], + __syscall_arg_t arg4 [%r9], + __syscall_arg_t arg5 [SP+8], + __syscall_arg_t arg6 [SP+16]) */ + +ENTRY (__syscall_cancel_arch) + .globl __syscall_cancel_arch_start +__syscall_cancel_arch_start: + + /* if (*cancelhandling & CANCELED_BITMASK) + __syscall_do_cancel() */ + mov (%rdi),%eax + testb $TCB_CANCELED_BITMASK, (%rdi) + jne __syscall_do_cancel + + /* Issue a 6 argument syscall, the nr [%rax] being the syscall + number. */ + mov %rdi,%r11 + mov %rsi,%rax + mov %rdx,%rdi + mov %rcx,%rsi + mov %r8,%rdx + mov %r9,%r10 + mov 8(%rsp),%r8 + mov 16(%rsp),%r9 + mov %r11,8(%rsp) + syscall + + .globl __syscall_cancel_arch_end +__syscall_cancel_arch_end: + ret +END (__syscall_cancel_arch) diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/arch-syscall.h b/sysdeps/unix/sysv/linux/x86_64/x32/arch-syscall.h index 3040a47d72..6c35068d8e 100644 --- a/sysdeps/unix/sysv/linux/x86_64/x32/arch-syscall.h +++ b/sysdeps/unix/sysv/linux/x86_64/x32/arch-syscall.h @@ -155,6 +155,7 @@ #define __NR_lsm_set_self_attr 1073742284 #define __NR_lstat 1073741830 #define __NR_madvise 1073741852 +#define __NR_map_shadow_stack 1073742277 #define __NR_mbind 1073742061 #define __NR_membarrier 1073742148 #define __NR_memfd_create 1073742143 @@ -182,6 +183,7 @@ #define __NR_mq_timedsend 1073742066 #define __NR_mq_unlink 1073742065 #define __NR_mremap 1073741849 +#define __NR_mseal 1073742286 #define __NR_msgctl 1073741895 #define __NR_msgget 1073741892 #define __NR_msgrcv 1073741894 diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/fixup-asm-unistd.h b/sysdeps/unix/sysv/linux/x86_64/x32/fixup-asm-unistd.h index 98124169e6..47fa8af4ce 100644 --- a/sysdeps/unix/sysv/linux/x86_64/x32/fixup-asm-unistd.h +++ b/sysdeps/unix/sysv/linux/x86_64/x32/fixup-asm-unistd.h @@ -15,6 +15,10 @@ License along with the GNU C Library; if not, see <http://www.gnu.org/licenses/>. */ +#ifndef __NR_map_shadow_stack +# define __NR_map_shadow_stack 1073742277 +#endif + /* X32 uses the same 64-bit syscall interface for set_thread_area. */ #ifndef __NR_set_thread_area # define __NR_set_thread_area 1073742029 diff --git a/sysdeps/unix/sysv/linux/x86_64/x32/syscall_types.h b/sysdeps/unix/sysv/linux/x86_64/x32/syscall_types.h new file mode 100644 index 0000000000..ac2019751d --- /dev/null +++ b/sysdeps/unix/sysv/linux/x86_64/x32/syscall_types.h @@ -0,0 +1,34 @@ +/* Types and macros used for syscall issuing. x86_64/x32 version. + Copyright (C) 2023 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 + <https://www.gnu.org/licenses/>. */ + +#ifndef _SYSCALL_TYPES_H +#define _SYSCALL_TYPES_H + +#include <libc-diag.h> + +typedef long long int __syscall_arg_t; + +/* Syscall arguments for x32 follows x86_64 ABI, however pointers are 32 bits + should be zero extended. */ +#define __SSC(__x) \ + ({ \ + TYPEFY (__x, __tmp) = ARGIFY (__x); \ + (__syscall_arg_t) __tmp; \ + }) + +#endif diff --git a/sysdeps/x86/cpu-features.c b/sysdeps/x86/cpu-features.c index e501e084ef..1f30e237f5 100644 --- a/sysdeps/x86/cpu-features.c +++ b/sysdeps/x86/cpu-features.c @@ -756,6 +756,12 @@ init_cpu_features (struct cpu_features *cpu_features) unsigned int stepping = 0; enum cpu_features_kind kind; + /* Default is avoid non-temporal memset for non Intel/AMD/Hygon hardware. This is, + as of writing this, we only have benchmarks indicatings it profitability + on Intel/AMD/Hygon. */ + cpu_features->preferred[index_arch_Avoid_Non_Temporal_Memset] + |= bit_arch_Avoid_Non_Temporal_Memset; + cpu_features->cachesize_non_temporal_divisor = 4; #if !HAS_CPUID if (__get_cpuid_max (0, 0) == 0) @@ -781,6 +787,11 @@ init_cpu_features (struct cpu_features *cpu_features) update_active (cpu_features); + /* Benchmarks indicate non-temporal memset can be profitable on Intel + hardware. */ + cpu_features->preferred[index_arch_Avoid_Non_Temporal_Memset] + &= ~bit_arch_Avoid_Non_Temporal_Memset; + if (family == 0x06) { model += extended_model; @@ -870,11 +881,19 @@ init_cpu_features (struct cpu_features *cpu_features) /* Newer Bigcore microarch (larger non-temporal store threshold). */ - case INTEL_BIGCORE_SKYLAKE: - case INTEL_BIGCORE_KABYLAKE: - case INTEL_BIGCORE_COMETLAKE: case INTEL_BIGCORE_SKYLAKE_AVX512: case INTEL_BIGCORE_CANNONLAKE: + /* Benchmarks indicate non-temporal memset is not + necessarily profitable on SKX (and in some cases much + worse). This is likely unique to SKX due its it unique + mesh interconnect (not present on ICX or BWD). Disable + non-temporal on all Skylake servers. */ + cpu_features->preferred[index_arch_Avoid_Non_Temporal_Memset] + |= bit_arch_Avoid_Non_Temporal_Memset; + /* fallthrough */ + case INTEL_BIGCORE_COMETLAKE: + case INTEL_BIGCORE_SKYLAKE: + case INTEL_BIGCORE_KABYLAKE: case INTEL_BIGCORE_ICELAKE: case INTEL_BIGCORE_TIGERLAKE: case INTEL_BIGCORE_ROCKETLAKE: @@ -967,9 +986,8 @@ https://www.intel.com/content/www/us/en/support/articles/000059422/processors.ht cpu_features->preferred[index_arch_Avoid_Short_Distance_REP_MOVSB] |= bit_arch_Avoid_Short_Distance_REP_MOVSB; } - /* This spells out "AuthenticAMD" or "HygonGenuine". */ - else if ((ebx == 0x68747541 && ecx == 0x444d4163 && edx == 0x69746e65) - || (ebx == 0x6f677948 && ecx == 0x656e6975 && edx == 0x6e65476e)) + /* This spells out "AuthenticAMD". */ + else if (ebx == 0x68747541 && ecx == 0x444d4163 && edx == 0x69746e65) { unsigned int extended_model; @@ -984,6 +1002,11 @@ https://www.intel.com/content/www/us/en/support/articles/000059422/processors.ht ecx = cpu_features->features[CPUID_INDEX_1].cpuid.ecx; + /* Benchmarks indicate non-temporal memset can be profitable on AMD + hardware. */ + cpu_features->preferred[index_arch_Avoid_Non_Temporal_Memset] + &= ~bit_arch_Avoid_Non_Temporal_Memset; + if (CPU_FEATURE_USABLE_P (cpu_features, AVX)) { /* Since the FMA4 bit is in CPUID_INDEX_80000001 and @@ -1066,6 +1089,7 @@ https://www.intel.com/content/www/us/en/support/articles/000059422/processors.ht /* Yongfeng and Shijidadao mircoarch tuning. */ case 0x5b: cpu_features->cachesize_non_temporal_divisor = 2; + /* fallthrough */ case 0x6b: cpu_features->preferred[index_arch_AVX_Fast_Unaligned_Load] &= ~bit_arch_AVX_Fast_Unaligned_Load; @@ -1079,6 +1103,25 @@ https://www.intel.com/content/www/us/en/support/articles/000059422/processors.ht } } } + /* This spells out "HygonGenuine". */ + else if (ebx == 0x6f677948 && ecx == 0x656e6975 && edx == 0x6e65476e) + { + unsigned int extended_model; + + kind = arch_kind_hygon; + + get_common_indices (cpu_features, &family, &model, &extended_model, + &stepping); + + get_extended_indices (cpu_features); + + update_active (cpu_features); + + /* Benchmarks indicate non-temporal memset can be profitable on Hygon + hardware. */ + cpu_features->preferred[index_arch_Avoid_Non_Temporal_Memset] + &= ~bit_arch_Avoid_Non_Temporal_Memset; + } else { kind = arch_kind_other; @@ -1094,6 +1137,10 @@ https://www.intel.com/content/www/us/en/support/articles/000059422/processors.ht if (CPU_FEATURES_CPU_P (cpu_features, CMOV)) cpu_features->preferred[index_arch_I686] |= bit_arch_I686; + /* No ERMS, we want to avoid stosb for memset. */ + if (!CPU_FEATURE_USABLE_P (cpu_features, ERMS)) + cpu_features->preferred[index_arch_Avoid_STOSB] |= bit_arch_Avoid_STOSB; + #if !HAS_CPUID no_cpuid: #endif diff --git a/sysdeps/x86/cpu-tunables.c b/sysdeps/x86/cpu-tunables.c index 89da7a03da..cd36de2d8b 100644 --- a/sysdeps/x86/cpu-tunables.c +++ b/sysdeps/x86/cpu-tunables.c @@ -193,6 +193,8 @@ TUNABLE_CALLBACK (set_hwcaps) (tunable_val_t *valp) 11); CHECK_GLIBC_IFUNC_PREFERRED_BOTH (n, cpu_features, Prefer_FSRM, 11); + CHECK_GLIBC_IFUNC_PREFERRED_BOTH (n, cpu_features, Avoid_STOSB, + 11); CHECK_GLIBC_IFUNC_PREFERRED_NEED_BOTH (n, cpu_features, Slow_SSE4_2, SSE4_2, @@ -243,6 +245,12 @@ TUNABLE_CALLBACK (set_hwcaps) (tunable_val_t *valp) (n, cpu_features, MathVec_Prefer_No_AVX512, AVX512F, 24); } break; + case 25: + { + CHECK_GLIBC_IFUNC_PREFERRED_BOTH (n, cpu_features, + Avoid_Non_Temporal_Memset, 25); + } + break; case 26: { CHECK_GLIBC_IFUNC_PREFERRED_NEED_BOTH diff --git a/sysdeps/x86/dl-cacheinfo.h b/sysdeps/x86/dl-cacheinfo.h index 5e77345a6e..e9579505a3 100644 --- a/sysdeps/x86/dl-cacheinfo.h +++ b/sysdeps/x86/dl-cacheinfo.h @@ -567,6 +567,48 @@ handle_zhaoxin (int name) return 0; } +static long int __attribute__ ((noinline)) +handle_hygon (int name) +{ + unsigned int eax; + unsigned int ebx; + unsigned int ecx; + unsigned int edx; + unsigned int count = 0x1; + + if (name >= _SC_LEVEL3_CACHE_SIZE) + count = 0x3; + else if (name >= _SC_LEVEL2_CACHE_SIZE) + count = 0x2; + else if (name >= _SC_LEVEL1_DCACHE_SIZE) + count = 0x0; + + /* Use __cpuid__ '0x8000_001D' to compute cache details. */ + __cpuid_count (0x8000001D, count, eax, ebx, ecx, edx); + + switch (name) + { + case _SC_LEVEL1_ICACHE_ASSOC: + case _SC_LEVEL1_DCACHE_ASSOC: + case _SC_LEVEL2_CACHE_ASSOC: + case _SC_LEVEL3_CACHE_ASSOC: + return ((ebx >> 22) & 0x3ff) + 1; + case _SC_LEVEL1_ICACHE_LINESIZE: + case _SC_LEVEL1_DCACHE_LINESIZE: + case _SC_LEVEL2_CACHE_LINESIZE: + case _SC_LEVEL3_CACHE_LINESIZE: + return (ebx & 0xfff) + 1; + case _SC_LEVEL1_ICACHE_SIZE: + case _SC_LEVEL1_DCACHE_SIZE: + case _SC_LEVEL2_CACHE_SIZE: + case _SC_LEVEL3_CACHE_SIZE: + return (((ebx >> 22) & 0x3ff) + 1) * ((ebx & 0xfff) + 1) * (ecx + 1); + default: + __builtin_unreachable (); + } + return -1; +} + static void get_common_cache_info (long int *shared_ptr, long int * shared_per_thread_ptr, unsigned int *threads_ptr, long int core) @@ -889,6 +931,24 @@ dl_init_cacheinfo (struct cpu_features *cpu_features) shared_per_thread = shared; } + else if (cpu_features->basic.kind == arch_kind_hygon) + { + data = handle_hygon (_SC_LEVEL1_DCACHE_SIZE); + shared = handle_hygon (_SC_LEVEL3_CACHE_SIZE); + shared_per_thread = shared; + + level1_icache_size = handle_hygon (_SC_LEVEL1_ICACHE_SIZE); + level1_icache_linesize = handle_hygon (_SC_LEVEL1_ICACHE_LINESIZE); + level1_dcache_size = data; + level1_dcache_assoc = handle_hygon (_SC_LEVEL1_DCACHE_ASSOC); + level1_dcache_linesize = handle_hygon (_SC_LEVEL1_DCACHE_LINESIZE); + level2_cache_size = handle_hygon (_SC_LEVEL2_CACHE_SIZE);; + level2_cache_assoc = handle_hygon (_SC_LEVEL2_CACHE_ASSOC); + level2_cache_linesize = handle_hygon (_SC_LEVEL2_CACHE_LINESIZE); + level3_cache_size = shared; + level3_cache_assoc = handle_hygon (_SC_LEVEL3_CACHE_ASSOC); + level3_cache_linesize = handle_hygon (_SC_LEVEL3_CACHE_LINESIZE); + } cpu_features->level1_icache_size = level1_icache_size; cpu_features->level1_icache_linesize = level1_icache_linesize; @@ -988,16 +1048,9 @@ dl_init_cacheinfo (struct cpu_features *cpu_features) if (CPU_FEATURE_USABLE_P (cpu_features, FSRM)) rep_movsb_threshold = 2112; - /* Non-temporal stores are more performant on Intel and AMD hardware above - non_temporal_threshold. Enable this for both Intel and AMD hardware. */ - unsigned long int memset_non_temporal_threshold = SIZE_MAX; - if (cpu_features->basic.kind == arch_kind_intel - || cpu_features->basic.kind == arch_kind_amd) - memset_non_temporal_threshold = non_temporal_threshold; - - /* For AMD CPUs that support ERMS (Zen3+), REP MOVSB is in a lot of - cases slower than the vectorized path (and for some alignments, - it is really slow, check BZ #30994). */ + /* For AMD CPUs that support ERMS (Zen3+), REP MOVSB is in a lot of + cases slower than the vectorized path (and for some alignments, + it is really slow, check BZ #30994). */ if (cpu_features->basic.kind == arch_kind_amd) rep_movsb_threshold = non_temporal_threshold; @@ -1016,6 +1069,13 @@ dl_init_cacheinfo (struct cpu_features *cpu_features) if (tunable_size != 0) shared = tunable_size; + /* Non-temporal stores are more performant on some hardware above + non_temporal_threshold. Currently Prefer_Non_Temporal is set for for both + Intel, AMD and Hygon hardware. */ + unsigned long int memset_non_temporal_threshold = SIZE_MAX; + if (!CPU_FEATURES_ARCH_P (cpu_features, Avoid_Non_Temporal_Memset)) + memset_non_temporal_threshold = non_temporal_threshold; + tunable_size = TUNABLE_GET (x86_non_temporal_threshold, long int, NULL); if (tunable_size > minimum_non_temporal_threshold && tunable_size <= maximum_non_temporal_threshold) @@ -1041,18 +1101,42 @@ dl_init_cacheinfo (struct cpu_features *cpu_features) slightly better than ERMS. */ rep_stosb_threshold = SIZE_MAX; + /* + For memset, the non-temporal implementation is only accessed through the + stosb code. ie: + ``` + if (size >= rep_stosb_thresh) + { + if (size >= non_temporal_thresh) + { + do_non_temporal (); + } + do_stosb (); + } + do_normal_vec_loop (); + ``` + So if we prefer non-temporal, set `rep_stosb_thresh = non_temporal_thresh` + to enable the implementation. If `rep_stosb_thresh = non_temporal_thresh`, + `rep stosb` will never be used. + */ + TUNABLE_SET_WITH_BOUNDS (x86_memset_non_temporal_threshold, + memset_non_temporal_threshold, + minimum_non_temporal_threshold, SIZE_MAX); + /* Do `rep_stosb_thresh = non_temporal_thresh` after setting/getting the + final value of `x86_memset_non_temporal_threshold`. In some cases this can + be a matter of correctness. */ + if (CPU_FEATURES_ARCH_P (cpu_features, Avoid_STOSB)) + rep_stosb_threshold + = TUNABLE_GET (x86_memset_non_temporal_threshold, long int, NULL); + TUNABLE_SET_WITH_BOUNDS (x86_rep_stosb_threshold, rep_stosb_threshold, 1, + SIZE_MAX); TUNABLE_SET_WITH_BOUNDS (x86_data_cache_size, data, 0, SIZE_MAX); TUNABLE_SET_WITH_BOUNDS (x86_shared_cache_size, shared, 0, SIZE_MAX); TUNABLE_SET_WITH_BOUNDS (x86_non_temporal_threshold, non_temporal_threshold, minimum_non_temporal_threshold, maximum_non_temporal_threshold); - TUNABLE_SET_WITH_BOUNDS (x86_memset_non_temporal_threshold, - memset_non_temporal_threshold, - minimum_non_temporal_threshold, SIZE_MAX); TUNABLE_SET_WITH_BOUNDS (x86_rep_movsb_threshold, rep_movsb_threshold, minimum_rep_movsb_threshold, SIZE_MAX); - TUNABLE_SET_WITH_BOUNDS (x86_rep_stosb_threshold, rep_stosb_threshold, 1, - SIZE_MAX); unsigned long int rep_movsb_stop_threshold; /* Setting the upper bound of ERMS to the computed value of diff --git a/sysdeps/x86/include/cpu-features-preferred_feature_index_1.def b/sysdeps/x86/include/cpu-features-preferred_feature_index_1.def index 85e7f54ec8..2a58000147 100644 --- a/sysdeps/x86/include/cpu-features-preferred_feature_index_1.def +++ b/sysdeps/x86/include/cpu-features-preferred_feature_index_1.def @@ -33,3 +33,5 @@ BIT (Prefer_No_AVX512) BIT (MathVec_Prefer_No_AVX512) BIT (Prefer_FSRM) BIT (Avoid_Short_Distance_REP_MOVSB) +BIT (Avoid_Non_Temporal_Memset) +BIT (Avoid_STOSB) diff --git a/sysdeps/x86/include/cpu-features.h b/sysdeps/x86/include/cpu-features.h index aaae44f0e1..b8e790c8fd 100644 --- a/sysdeps/x86/include/cpu-features.h +++ b/sysdeps/x86/include/cpu-features.h @@ -881,6 +881,7 @@ enum cpu_features_kind arch_kind_intel, arch_kind_amd, arch_kind_zhaoxin, + arch_kind_hygon, arch_kind_other }; diff --git a/sysdeps/x86/tst-hwcap-tunables.c b/sysdeps/x86/tst-hwcap-tunables.c index 8589a9fd66..1920f5057e 100644 --- a/sysdeps/x86/tst-hwcap-tunables.c +++ b/sysdeps/x86/tst-hwcap-tunables.c @@ -60,7 +60,8 @@ static const struct test_t /* Disable everything. */ "-Prefer_ERMS,-Prefer_FSRM,-AVX,-AVX2,-AVX512F,-AVX512VL," "-SSE4_1,-SSE4_2,-SSSE3,-Fast_Unaligned_Load,-ERMS," - "-AVX_Fast_Unaligned_Load", + "-AVX_Fast_Unaligned_Load,-Avoid_Non_Temporal_Memset," + "-Avoid_STOSB", test_1, array_length (test_1) }, @@ -68,7 +69,8 @@ static const struct test_t /* Same as before, but with some empty suboptions. */ ",-,-Prefer_ERMS,-Prefer_FSRM,-AVX,-AVX2,-AVX512F,-AVX512VL," "-SSE4_1,-SSE4_2,-SSSE3,-Fast_Unaligned_Load,,-," - "-ERMS,-AVX_Fast_Unaligned_Load,-,", + "-ERMS,-AVX_Fast_Unaligned_Load,-Avoid_Non_Temporal_Memset," + "-Avoid_STOSB,-,", test_1, array_length (test_1) } diff --git a/sysdeps/x86_64/dl-machine.h b/sysdeps/x86_64/dl-machine.h index a6de3793e4..4f12955875 100644 --- a/sysdeps/x86_64/dl-machine.h +++ b/sysdeps/x86_64/dl-machine.h @@ -139,37 +139,37 @@ elf_machine_runtime_setup (struct link_map *l, struct r_scope_elem *scope[], .globl _start\n\ .globl _dl_start_user\n\ _start:\n\ - movq %rsp, %rdi\n\ + mov %" RSP_LP ", %" RDI_LP "\n\ call _dl_start\n\ _dl_start_user:\n\ # Save the user entry point address in %r12.\n\ - movq %rax, %r12\n\ + mov %" RAX_LP ", %" R12_LP "\n\ # Save %rsp value in %r13.\n\ - movq %rsp, %r13\n\ + mov %" RSP_LP ", % " R13_LP "\n\ "\ RTLD_START_ENABLE_X86_FEATURES \ "\ # Read the original argument count.\n\ - movq (%rsp), %rdx\n\ + mov (%rsp), %" RDX_LP "\n\ # Call _dl_init (struct link_map *main_map, int argc, char **argv, char **env)\n\ # argc -> rsi\n\ - movq %rdx, %rsi\n\ + mov %" RDX_LP ", %" RSI_LP "\n\ # And align stack for the _dl_init call. \n\ - andq $-16, %rsp\n\ + and $-16, %" RSP_LP "\n\ # _dl_loaded -> rdi\n\ - movq _rtld_local(%rip), %rdi\n\ + mov _rtld_local(%rip), %" RDI_LP "\n\ # env -> rcx\n\ - leaq 16(%r13,%rdx,8), %rcx\n\ + lea 2*" LP_SIZE "(%r13,%rdx," LP_SIZE "), %" RCX_LP "\n\ # argv -> rdx\n\ - leaq 8(%r13), %rdx\n\ + lea " LP_SIZE "(%r13), %" RDX_LP "\n\ # Clear %rbp to mark outermost frame obviously even for constructors.\n\ xorl %ebp, %ebp\n\ # Call the function to run the initializers.\n\ call _dl_init\n\ # Pass our finalizer function to the user in %rdx, as per ELF ABI.\n\ - leaq _dl_fini(%rip), %rdx\n\ + lea _dl_fini(%rip), %" RDX_LP "\n\ # And make sure %rsp points to argc stored on the stack.\n\ - movq %r13, %rsp\n\ + mov %" R13_LP ", %" RSP_LP "\n\ # Jump to the user's entry point.\n\ jmp *%r12\n\ .previous\n\ @@ -234,8 +234,13 @@ elf_machine_plt_value (struct link_map *map, const ElfW(Rela) *reloc, /* Names of the architecture-specific auditing callback functions. */ +#ifdef __LP64__ #define ARCH_LA_PLTENTER x86_64_gnu_pltenter #define ARCH_LA_PLTEXIT x86_64_gnu_pltexit +#else +#define ARCH_LA_PLTENTER x32_gnu_pltenter +#define ARCH_LA_PLTEXIT x32_gnu_pltexit +#endif #endif /* !dl_machine_h */ diff --git a/sysdeps/x86_64/fpu/libm-test-ulps b/sysdeps/x86_64/fpu/libm-test-ulps index 3592dfae1d..c2e36dcbdf 100644 --- a/sysdeps/x86_64/fpu/libm-test-ulps +++ b/sysdeps/x86_64/fpu/libm-test-ulps @@ -1430,28 +1430,28 @@ Function: "exp10_vlen8_avx2": float: 1 Function: "exp10m1": -double: 2 -float: 1 -float128: 1 -ldouble: 1 +double: 4 +float: 2 +float128: 3 +ldouble: 4 Function: "exp10m1_downward": -double: 1 -float: 1 -float128: 3 -ldouble: 2 +double: 3 +float: 3 +float128: 6 +ldouble: 6 Function: "exp10m1_towardzero": -double: 1 -float: 1 -float128: 3 -ldouble: 2 +double: 2 +float: 3 +float128: 6 +ldouble: 5 Function: "exp10m1_upward": -double: 3 -float: 1 -float128: 3 -ldouble: 2 +double: 5 +float: 4 +float128: 6 +ldouble: 6 Function: "exp2": double: 1 @@ -1498,28 +1498,28 @@ Function: "exp2_vlen8_avx2": float: 1 Function: "exp2m1": -double: 1 -float: 1 -float128: 1 -ldouble: 1 - -Function: "exp2m1_downward": double: 2 -float: 1 +float: 2 float128: 2 ldouble: 3 +Function: "exp2m1_downward": +double: 3 +float: 3 +float128: 3 +ldouble: 6 + Function: "exp2m1_towardzero": -double: 2 -float: 1 -float128: 2 -ldouble: 3 +double: 3 +float: 2 +float128: 4 +ldouble: 5 Function: "exp2m1_upward": -double: 1 -float: 1 -float128: 2 -ldouble: 3 +double: 3 +float: 3 +float128: 5 +ldouble: 6 Function: "exp_downward": double: 1 @@ -1808,28 +1808,28 @@ Function: "log10_vlen8_avx2": float: 1 Function: "log10p1": -double: 1 -float: 1 +double: 2 +float: 2 float128: 3 -ldouble: 2 +ldouble: 4 Function: "log10p1_downward": double: 2 -float: 1 -float128: 2 -ldouble: 4 +float: 3 +float128: 4 +ldouble: 8 Function: "log10p1_towardzero": -double: 2 +double: 3 float: 2 -float128: 2 -ldouble: 4 +float128: 3 +ldouble: 8 Function: "log10p1_upward": double: 2 -float: 1 -float128: 3 -ldouble: 3 +float: 3 +float128: 4 +ldouble: 6 Function: "log1p": double: 1 @@ -1920,10 +1920,10 @@ Function: "log2_vlen8_avx2": float: 1 Function: "log2p1": -double: 1 -float: 1 +double: 2 +float: 2 float128: 3 -ldouble: 2 +ldouble: 4 Function: "log2p1_downward": double: 2 @@ -1938,9 +1938,9 @@ float128: 2 ldouble: 4 Function: "log2p1_upward": -double: 1 +double: 2 float: 2 -float128: 2 +float128: 3 ldouble: 5 Function: "log_downward": diff --git a/sysdeps/x86_64/multiarch/ifunc-memset.h b/sysdeps/x86_64/multiarch/ifunc-memset.h index 7a637ef7ca..8dc3d7ab5a 100644 --- a/sysdeps/x86_64/multiarch/ifunc-memset.h +++ b/sysdeps/x86_64/multiarch/ifunc-memset.h @@ -46,6 +46,13 @@ extern __typeof (REDIRECT_NAME) OPTIMIZE (sse2_unaligned) extern __typeof (REDIRECT_NAME) OPTIMIZE (sse2_unaligned_erms) attribute_hidden; +static inline int +prefer_erms_nt_impl (const struct cpu_features *cpu_features) +{ + return CPU_FEATURE_USABLE_P (cpu_features, ERMS) + || !CPU_FEATURES_ARCH_P (cpu_features, Avoid_Non_Temporal_Memset); +} + static inline void * IFUNC_SELECTOR (void) { @@ -61,7 +68,7 @@ IFUNC_SELECTOR (void) && X86_ISA_CPU_FEATURE_USABLE_P (cpu_features, AVX512BW) && X86_ISA_CPU_FEATURE_USABLE_P (cpu_features, BMI2)) { - if (CPU_FEATURE_USABLE_P (cpu_features, ERMS)) + if (prefer_erms_nt_impl (cpu_features)) return OPTIMIZE (avx512_unaligned_erms); return OPTIMIZE (avx512_unaligned); @@ -76,7 +83,7 @@ IFUNC_SELECTOR (void) && X86_ISA_CPU_FEATURE_USABLE_P (cpu_features, AVX512BW) && X86_ISA_CPU_FEATURE_USABLE_P (cpu_features, BMI2)) { - if (CPU_FEATURE_USABLE_P (cpu_features, ERMS)) + if (prefer_erms_nt_impl (cpu_features)) return OPTIMIZE (evex_unaligned_erms); return OPTIMIZE (evex_unaligned); @@ -84,7 +91,7 @@ IFUNC_SELECTOR (void) if (CPU_FEATURE_USABLE_P (cpu_features, RTM)) { - if (CPU_FEATURE_USABLE_P (cpu_features, ERMS)) + if (prefer_erms_nt_impl (cpu_features)) return OPTIMIZE (avx2_unaligned_erms_rtm); return OPTIMIZE (avx2_unaligned_rtm); @@ -93,14 +100,15 @@ IFUNC_SELECTOR (void) if (X86_ISA_CPU_FEATURES_ARCH_P (cpu_features, Prefer_No_VZEROUPPER, !)) { - if (CPU_FEATURE_USABLE_P (cpu_features, ERMS)) + if (prefer_erms_nt_impl (cpu_features)) return OPTIMIZE (avx2_unaligned_erms); return OPTIMIZE (avx2_unaligned); } } - if (CPU_FEATURE_USABLE_P (cpu_features, ERMS)) + if (CPU_FEATURE_USABLE_P (cpu_features, ERMS) + || !CPU_FEATURES_ARCH_P (cpu_features, Avoid_Non_Temporal_Memset)) return OPTIMIZE (sse2_unaligned_erms); return OPTIMIZE (sse2_unaligned); diff --git a/sysdeps/x86_64/multiarch/strchr-evex-base.S b/sysdeps/x86_64/multiarch/strchr-evex-base.S index 04e2c0e79e..3a0b7c9d64 100644 --- a/sysdeps/x86_64/multiarch/strchr-evex-base.S +++ b/sysdeps/x86_64/multiarch/strchr-evex-base.S @@ -124,13 +124,13 @@ L(page_cross): VPCMPNE %VMM(1), %VMM(0), %k1 VPTEST %VMM(1), %VMM(1), %k0{%k1} KMOV %k0, %VRAX -# ifdef USE_AS_WCSCHR + sar %cl, %VRAX +#ifdef USE_AS_WCSCHR sub $VEC_MATCH_MASK, %VRAX -# else +#else inc %VRAX -# endif +#endif /* Ignore number of character for alignment adjustment. */ - shr %cl, %VRAX jz L(align_more) bsf %VRAX, %VRAX diff --git a/sysdeps/x86_64/multiarch/strnlen-evex-base.S b/sysdeps/x86_64/multiarch/strnlen-evex-base.S new file mode 100644 index 0000000000..1c2cfdfe06 --- /dev/null +++ b/sysdeps/x86_64/multiarch/strnlen-evex-base.S @@ -0,0 +1,462 @@ +/* strnlen/wcsnlen optimized with 256/512-bit EVEX instructions. + Copyright (C) 2022-2024 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 + <https://www.gnu.org/licenses/>. */ + + +#include <isa-level.h> + +#if ISA_SHOULD_BUILD (4) + +# include <sysdep.h> + +#ifdef USE_AS_WCSLEN +# define VPCMPEQ vpcmpeqd +# define VPTESTN vptestnmd +# define VPMINU vpminud +# define CHAR_SIZE 4 +#else +# define VPCMPEQ vpcmpeqb +# define VPTESTN vptestnmb +# define VPMINU vpminub +# define CHAR_SIZE 1 +#endif + +#define XZERO VMM_128(0) +#define VZERO VMM(0) +#define PAGE_SIZE 4096 +#define CHAR_PER_VEC (VEC_SIZE / CHAR_SIZE) + +#if CHAR_PER_VEC == 32 +# define SUB_SHORT(imm, reg) subb $(imm), %VGPR_SZ(reg, 8) +#else +# define SUB_SHORT(imm, reg) subl $(imm), %VGPR_SZ(reg, 32) +#endif + +#ifdef USE_AS_WCSLEN +/* For wide-character, we care more about limitting code size + than optimally aligning targets, so just cap nop padding + reasonably low. */ +# define P2ALIGN(...) .p2align 4,, 6 +# define P2ALIGN_CLAMPED(...) P2ALIGN(__VA_ARGS__) +#else +# define P2ALIGN(x) .p2align x +# define P2ALIGN_CLAMPED(x, y) .p2align x,, y +#endif + + .section SECTION(.text), "ax", @progbits + /* Aligning entry point to 64 byte, provides better performance for + one vector length string. */ +ENTRY_P2ALIGN(STRNLEN, 6) + /* rdi is pointer to array, rsi is the upper limit. */ + + /* Check zero length. */ + test %RSI_LP, %RSI_LP + jz L(zero) + +#ifdef __ILP32__ + /* Clear the upper 32 bits. */ + movl %esi, %esi +#endif + + vpxorq %XZERO, %XZERO, %XZERO + + /* Check that we won't cross a page boundary with our first load. */ + movl %edi, %eax + shll $20, %eax + cmpl $((PAGE_SIZE - VEC_SIZE) << 20), %eax + ja L(crosses_page_boundary) + + /* Check the first VEC_SIZE bytes. Each bit in K0 represents a + null byte. */ + VPCMPEQ (%rdi), %VZERO, %k0 + KMOV %k0, %VRCX + + /* If src (rcx) is zero, bsf does not change the result. NB: + Must use 64-bit bsf here so that upper bits of len are not + cleared. */ + movq %rsi, %rax + bsfq %rcx, %rax + + /* If rax > CHAR_PER_VEC then rcx must have been zero (no null + CHAR) and rsi must be > CHAR_PER_VEC. */ + cmpq $CHAR_PER_VEC, %rax + ja L(more_1x_vec) + + /* Check if first match in bounds. */ + cmpq %rax, %rsi + cmovb %esi, %eax + ret + +#if VEC_SIZE == 32 + P2ALIGN_CLAMPED(4, 2) +L(zero): +L(max_0): + movl %esi, %eax + ret +#endif + + P2ALIGN_CLAMPED(4, 10) +L(more_1x_vec): +L(cross_page_continue): + /* After this calculation, rax stores the number of elements + left to be processed The complexity comes from the fact some + elements get read twice due to alignment and we need to be + sure we don't count them twice (else, it would just be rsi - + CHAR_PER_VEC). */ + +#ifdef USE_AS_WCSLEN + /* Need to compute directly for wcslen as CHAR_SIZE * rsi can + overflow. */ + movq %rdi, %rax + andq $(VEC_SIZE * -1), %rdi + subq %rdi, %rax + sarq $2, %rax + leaq -(CHAR_PER_VEC * 1)(%rax, %rsi), %rax +#else + /* Calculate ptr + N - VEC_SIZE, then mask off the low bits, + then subtract ptr to get the new aligned limit value. */ + leaq (VEC_SIZE * -1)(%rsi, %rdi), %rax + andq $(VEC_SIZE * -1), %rdi + subq %rdi, %rax +#endif + + VPCMPEQ VEC_SIZE(%rdi), %VZERO, %k0 + + /* Checking here is faster for 256-bit but not 512-bit */ +#if VEC_SIZE == 0 + KMOV %k0, %VRDX + test %VRDX, %VRDX + jnz L(last_vec_check) +#endif + + cmpq $(CHAR_PER_VEC * 2), %rax + ja L(more_2x_vec) + +L(last_2x_vec_or_less): + + /* Checking here is faster for 512-bit but not 256-bit */ +#if VEC_SIZE != 0 + KMOV %k0, %VRDX + test %VRDX, %VRDX + jnz L(last_vec_check) +#endif + + /* Check for the end of data. */ + SUB_SHORT (CHAR_PER_VEC, rax) + jbe L(max_0) + + /* Check the final remaining vector. */ + VPCMPEQ (VEC_SIZE * 2)(%rdi), %VZERO, %k0 + KMOV %k0, %VRDX + test %VRDX, %VRDX +#if VEC_SIZE == 32 + jz L(max_0) +#else + jnz L(last_vec_check) + P2ALIGN_CLAMPED(4, 2) +L(zero): +L(max_0): + movl %esi, %eax + ret + +#endif + P2ALIGN_CLAMPED(4, 4) +L(last_vec_check): + bsf %VRDX, %VRDX + sub %eax, %edx + lea (%rsi, %rdx), %eax + cmovae %esi, %eax + ret + + +#if VEC_SIZE == 32 + P2ALIGN_CLAMPED(4, 8) +#endif +L(last_4x_vec_or_less): + addl $(CHAR_PER_VEC * -4), %eax + VPCMPEQ (VEC_SIZE * 5)(%rdi), %VZERO, %k0 + +#if VEC_SIZE == 64 + KMOV %k0, %VRDX + test %VRDX, %VRDX + jnz L(last_vec_check) +#endif + + subq $(VEC_SIZE * -4), %rdi + cmpl $(CHAR_PER_VEC * 2), %eax + jbe L(last_2x_vec_or_less) + + P2ALIGN_CLAMPED(4, 6) +L(more_2x_vec): + /* Remaining length >= 2 * CHAR_PER_VEC so do VEC0/VEC1 without + rechecking bounds. */ + + /* Already checked in 256-bit case */ +#if VEC_SIZE != 0 + KMOV %k0, %VRDX + + test %VRDX, %VRDX + jnz L(first_vec_x1) +#endif + + VPCMPEQ (VEC_SIZE * 2)(%rdi), %VZERO, %k0 + KMOV %k0, %VRDX + + test %VRDX, %VRDX + jnz L(first_vec_x2) + + cmpq $(CHAR_PER_VEC * 4), %rax + ja L(more_4x_vec) + + + VPCMPEQ (VEC_SIZE * 3)(%rdi), %VZERO, %k0 + KMOV %k0, %VRDX + addl $(CHAR_PER_VEC * -2), %eax + test %VRDX, %VRDX + jnz L(last_vec_check) + + subb $(CHAR_PER_VEC), %al + jbe L(max_1) + + VPCMPEQ (VEC_SIZE * 4)(%rdi), %VZERO, %k0 + KMOV %k0, %VRDX + + test %VRDX, %VRDX + jnz L(last_vec_check) +L(max_1): + movl %esi, %eax + ret + + + P2ALIGN_CLAMPED(4, 14) +L(first_vec_x2): +#if VEC_SIZE == 64 + /* If VEC_SIZE == 64 we can fit logic for full return label in + spare bytes before next cache line. */ + bsf %VRDX, %VRDX + sub %eax, %esi + leal (CHAR_PER_VEC * 1)(%rsi, %rdx), %eax + ret + P2ALIGN_CLAMPED(4, 6) +#else + addl $CHAR_PER_VEC, %esi +#endif +L(first_vec_x1): + bsf %VRDX, %VRDX + sub %eax, %esi + leal (CHAR_PER_VEC * 0)(%rsi, %rdx), %eax + ret + +#if VEC_SIZE == 64 + P2ALIGN_CLAMPED(4, 6) +L(first_vec_x4): +# if VEC_SIZE == 64 + /* If VEC_SIZE == 64 we can fit logic for full return label in + spare bytes before next cache line. */ + bsf %VRDX, %VRDX + sub %eax, %esi + leal (CHAR_PER_VEC * 3)(%rsi, %rdx), %eax + ret + P2ALIGN_CLAMPED(4, 6) +# else + addl $CHAR_PER_VEC, %esi +# endif +L(first_vec_x3): + bsf %VRDX, %VRDX + sub %eax, %esi + leal (CHAR_PER_VEC * 2)(%rsi, %rdx), %eax + ret +#endif + + P2ALIGN_CLAMPED(6, 20) +L(more_4x_vec): + VPCMPEQ (VEC_SIZE * 3)(%rdi), %VZERO, %k0 + KMOV %k0, %VRDX + test %VRDX, %VRDX + jnz L(first_vec_x3) + + VPCMPEQ (VEC_SIZE * 4)(%rdi), %VZERO, %k0 + KMOV %k0, %VRDX + test %VRDX, %VRDX + jnz L(first_vec_x4) + + /* Check if at last VEC_SIZE * 4 length before aligning for the + loop. */ + cmpq $(CHAR_PER_VEC * 8), %rax + jbe L(last_4x_vec_or_less) + + + /* Compute number of words checked after aligning. */ +#ifdef USE_AS_WCSLEN + /* Need to compute directly for wcslen as CHAR_SIZE * rsi can + overflow. */ + leaq (VEC_SIZE * -3)(%rdi), %rdx +#else + leaq (VEC_SIZE * -3)(%rdi, %rax), %rax +#endif + + subq $(VEC_SIZE * -1), %rdi + + /* Align data to VEC_SIZE * 4. */ +#if VEC_SIZE == 64 + /* Saves code size. No evex512 processor has partial register + stalls. If that change this can be replaced with `andq + $-(VEC_SIZE * 4), %rdi`. */ + xorb %dil, %dil +#else + andq $-(VEC_SIZE * 4), %rdi +#endif + +#ifdef USE_AS_WCSLEN + subq %rdi, %rdx + sarq $2, %rdx + addq %rdx, %rax +#else + subq %rdi, %rax +#endif + + // mov %rdi, %rdx + + P2ALIGN(6) +L(loop): + /* VPMINU and VPCMP combination provide better performance as + compared to alternative combinations. */ + VMOVA (VEC_SIZE * 4)(%rdi), %VMM(1) + VPMINU (VEC_SIZE * 5)(%rdi), %VMM(1), %VMM(2) + VMOVA (VEC_SIZE * 6)(%rdi), %VMM(3) + VPMINU (VEC_SIZE * 7)(%rdi), %VMM(3), %VMM(4) + + VPTESTN %VMM(2), %VMM(2), %k0 + VPTESTN %VMM(4), %VMM(4), %k1 + + subq $-(VEC_SIZE * 4), %rdi + KORTEST %k0, %k1 + + jnz L(loopend) + subq $(CHAR_PER_VEC * 4), %rax + ja L(loop) + mov %rsi, %rax + ret + + +#if VEC_SIZE == 32 + P2ALIGN_CLAMPED(4, 6) +L(first_vec_x4): +# if VEC_SIZE == 64 + /* If VEC_SIZE == 64 we can fit logic for full return label in + spare bytes before next cache line. */ + bsf %VRDX, %VRDX + sub %eax, %esi + leal (CHAR_PER_VEC * 3)(%rsi, %rdx), %eax + ret + P2ALIGN_CLAMPED(4, 6) +# else + addl $CHAR_PER_VEC, %esi +# endif +L(first_vec_x3): + bsf %VRDX, %VRDX + sub %eax, %esi + leal (CHAR_PER_VEC * 2)(%rsi, %rdx), %eax + ret +#endif + + + P2ALIGN_CLAMPED(4, 11) +L(loopend): + /* We found a null terminator in one of the 4 vectors. */ + + /* Check the first vector. */ + movq %rax, %r8 + VPTESTN %VMM(1), %VMM(1), %k2 + KMOV %k2, %VRCX + bsf %rcx, %r8 + + cmpq $(CHAR_PER_VEC), %r8 + jbe L(end_vec) + + /* Check the second vector. */ + subq $(CHAR_PER_VEC), %rax + movq %rax, %r8 + KMOV %k0, %VRCX + bsf %rcx, %r8 + + cmpq $(CHAR_PER_VEC), %r8 + jbe L(end_vec) + + /* Check the third vector. */ + subq $(CHAR_PER_VEC), %rax + movq %rax, %r8 + VPTESTN %VMM(3), %VMM(3), %k2 + KMOV %k2, %VRCX + bsf %rcx, %r8 + + cmpq $(CHAR_PER_VEC), %r8 + jbe L(end_vec) + + /* It is in the fourth vector. */ + subq $(CHAR_PER_VEC), %rax + movq %rax, %r8 + KMOV %k1, %VRCX + bsf %rcx, %r8 + + P2ALIGN_CLAMPED(4, 3) +L(end_vec): + /* Get the number that has been processed. */ + movq %rsi, %rcx + subq %rax, %rcx + + /* Add that to the offset we found the null terminator at. */ + leaq (%r8, %rcx), %rax + + /* Take the min of that and the limit. */ + cmpq %rsi, %rax + cmovnb %rsi, %rax + ret + + P2ALIGN_CLAMPED(4, 11) +L(crosses_page_boundary): + /* Align data backwards to VEC_SIZE. */ + shrl $20, %eax + movq %rdi, %rcx + andq $-VEC_SIZE, %rcx + VPCMPEQ (%rcx), %VZERO, %k0 + + KMOV %k0, %VRCX +#ifdef USE_AS_WCSLEN + shrl $2, %eax + andl $(CHAR_PER_VEC - 1), %eax +#endif + /* By this point rax contains number of bytes we need to skip. */ + shrx %VRAX, %VRCX, %VRCX + + /* Calculates CHAR_PER_VEC - eax and stores in eax. */ + negl %eax + andl $(CHAR_PER_VEC - 1), %eax + + movq %rsi, %rdx + bsf %VRCX, %VRDX + cmpq %rax, %rdx + ja L(cross_page_continue) + + /* The vector had a null terminator or we are at the limit. */ + movl %edx, %eax + cmpq %rdx, %rsi + cmovb %esi, %eax + ret + +END(STRNLEN) +#endif diff --git a/sysdeps/x86_64/multiarch/strnlen-evex.S b/sysdeps/x86_64/multiarch/strnlen-evex.S index 91b16830eb..c41288906c 100644 --- a/sysdeps/x86_64/multiarch/strnlen-evex.S +++ b/sysdeps/x86_64/multiarch/strnlen-evex.S @@ -1,423 +1,7 @@ -/* strnlen/wcsnlen optimized with 256-bit EVEX instructions. - Copyright (C) 2022-2024 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 - <https://www.gnu.org/licenses/>. */ - -#include <isa-level.h> -#include <sysdep.h> - -#if ISA_SHOULD_BUILD (4) - -# ifndef VEC_SIZE -# include "x86-evex256-vecs.h" -# endif - - -# ifndef STRNLEN -# define STRNLEN __strnlen_evex -# endif - -# ifdef USE_AS_WCSLEN -# define VPCMPEQ vpcmpeqd -# define VPCMPNEQ vpcmpneqd -# define VPTESTN vptestnmd -# define VPTEST vptestmd -# define VPMINU vpminud -# define CHAR_SIZE 4 - -# else -# define VPCMPEQ vpcmpeqb -# define VPCMPNEQ vpcmpneqb -# define VPTESTN vptestnmb -# define VPTEST vptestmb -# define VPMINU vpminub -# define CHAR_SIZE 1 - -# define REG_WIDTH VEC_SIZE -# endif - -# define CHAR_PER_VEC (VEC_SIZE / CHAR_SIZE) - -# include "reg-macros.h" - -# if CHAR_PER_VEC == 32 -# define SUB_SHORT(imm, reg) subb $(imm), %VGPR_SZ(reg, 8) -# else -# define SUB_SHORT(imm, reg) subl $(imm), %VGPR_SZ(reg, 32) -# endif - - - -# if CHAR_PER_VEC == 64 -# define FALLTHROUGH_RETURN_OFFSET (CHAR_PER_VEC * 3) -# else -# define FALLTHROUGH_RETURN_OFFSET (CHAR_PER_VEC * 2) -# endif - - -# define XZERO VMM_128(0) -# define VZERO VMM(0) -# define PAGE_SIZE 4096 - - .section SECTION(.text), "ax", @progbits -ENTRY_P2ALIGN (STRNLEN, 6) - /* Check zero length. */ - test %RSI_LP, %RSI_LP - jz L(zero) -# ifdef __ILP32__ - /* Clear the upper 32 bits. */ - movl %esi, %esi -# endif - - movl %edi, %eax - vpxorq %XZERO, %XZERO, %XZERO - andl $(PAGE_SIZE - 1), %eax - cmpl $(PAGE_SIZE - VEC_SIZE), %eax - ja L(cross_page_boundary) - - /* Check the first VEC_SIZE bytes. Each bit in K0 represents a - null byte. */ - VPCMPEQ (%rdi), %VZERO, %k0 - - KMOV %k0, %VRCX - movq %rsi, %rax - - /* If src (rcx) is zero, bsf does not change the result. NB: - Must use 64-bit bsf here so that upper bits of len are not - cleared. */ - bsfq %rcx, %rax - /* If rax > CHAR_PER_VEC then rcx must have been zero (no null - CHAR) and rsi must be > CHAR_PER_VEC. */ - cmpq $CHAR_PER_VEC, %rax - ja L(more_1x_vec) - /* Check if first match in bounds. */ - cmpq %rax, %rsi - cmovb %esi, %eax - ret - - -# if CHAR_PER_VEC != 32 - .p2align 4,, 2 -L(zero): -L(max_0): - movl %esi, %eax - ret -# endif - - /* Aligned more for strnlen compares remaining length vs 2 * - CHAR_PER_VEC, 4 * CHAR_PER_VEC, and 8 * CHAR_PER_VEC before - going to the loop. */ - .p2align 4,, 10 -L(more_1x_vec): -L(cross_page_continue): - /* Compute number of words checked after aligning. */ -# ifdef USE_AS_WCSLEN - /* Need to compute directly for wcslen as CHAR_SIZE * rsi can - overflow. */ - movq %rdi, %rax - andq $(VEC_SIZE * -1), %rdi - subq %rdi, %rax - sarq $2, %rax - leaq -(CHAR_PER_VEC * 1)(%rax, %rsi), %rax -# else - leaq (VEC_SIZE * -1)(%rsi, %rdi), %rax - andq $(VEC_SIZE * -1), %rdi - subq %rdi, %rax -# endif - - - VPCMPEQ VEC_SIZE(%rdi), %VZERO, %k0 - - cmpq $(CHAR_PER_VEC * 2), %rax - ja L(more_2x_vec) - -L(last_2x_vec_or_less): - KMOV %k0, %VRDX - test %VRDX, %VRDX - jnz L(last_vec_check) - - /* Check the end of data. */ - SUB_SHORT (CHAR_PER_VEC, rax) - jbe L(max_0) - VPCMPEQ (VEC_SIZE * 2)(%rdi), %VZERO, %k0 - KMOV %k0, %VRDX - test %VRDX, %VRDX - jz L(max_0) - /* Best place for LAST_VEC_CHECK if ZMM. */ - .p2align 4,, 8 -L(last_vec_check): - bsf %VRDX, %VRDX - sub %eax, %edx - lea (%rsi, %rdx), %eax - cmovae %esi, %eax - ret - -# if CHAR_PER_VEC == 32 - .p2align 4,, 2 -L(zero): -L(max_0): - movl %esi, %eax - ret -# endif - - .p2align 4,, 8 -L(last_4x_vec_or_less): - addl $(CHAR_PER_VEC * -4), %eax - VPCMPEQ (VEC_SIZE * 5)(%rdi), %VZERO, %k0 - subq $(VEC_SIZE * -4), %rdi - cmpl $(CHAR_PER_VEC * 2), %eax - jbe L(last_2x_vec_or_less) - - .p2align 4,, 6 -L(more_2x_vec): - /* Remaining length >= 2 * CHAR_PER_VEC so do VEC0/VEC1 without - rechecking bounds. */ - - KMOV %k0, %VRDX - - test %VRDX, %VRDX - jnz L(first_vec_x1) - - VPCMPEQ (VEC_SIZE * 2)(%rdi), %VZERO, %k0 - KMOV %k0, %VRDX - test %VRDX, %VRDX - jnz L(first_vec_x2) - - cmpq $(CHAR_PER_VEC * 4), %rax - ja L(more_4x_vec) - - - VPCMPEQ (VEC_SIZE * 3)(%rdi), %VZERO, %k0 - KMOV %k0, %VRDX - addl $(CHAR_PER_VEC * -2), %eax - test %VRDX, %VRDX - jnz L(last_vec_check) - - subl $(CHAR_PER_VEC), %eax - jbe L(max_1) - - VPCMPEQ (VEC_SIZE * 4)(%rdi), %VZERO, %k0 - KMOV %k0, %VRDX - - test %VRDX, %VRDX - jnz L(last_vec_check) -L(max_1): - movl %esi, %eax - ret - - .p2align 4,, 3 -L(first_vec_x2): -# if VEC_SIZE == 64 - /* If VEC_SIZE == 64 we can fit logic for full return label in - spare bytes before next cache line. */ - bsf %VRDX, %VRDX - sub %eax, %esi - leal (CHAR_PER_VEC * 1)(%rsi, %rdx), %eax - ret - .p2align 4,, 6 -# else - addl $CHAR_PER_VEC, %esi -# endif -L(first_vec_x1): - bsf %VRDX, %VRDX - sub %eax, %esi - leal (CHAR_PER_VEC * 0)(%rsi, %rdx), %eax - ret - - - .p2align 4,, 6 -L(first_vec_x4): -# if VEC_SIZE == 64 - /* If VEC_SIZE == 64 we can fit logic for full return label in - spare bytes before next cache line. */ - bsf %VRDX, %VRDX - sub %eax, %esi - leal (CHAR_PER_VEC * 3)(%rsi, %rdx), %eax - ret - .p2align 4,, 6 -# else - addl $CHAR_PER_VEC, %esi -# endif -L(first_vec_x3): - bsf %VRDX, %VRDX - sub %eax, %esi - leal (CHAR_PER_VEC * 2)(%rsi, %rdx), %eax - ret - - .p2align 4,, 5 -L(more_4x_vec): - VPCMPEQ (VEC_SIZE * 3)(%rdi), %VZERO, %k0 - KMOV %k0, %VRDX - test %VRDX, %VRDX - jnz L(first_vec_x3) - - VPCMPEQ (VEC_SIZE * 4)(%rdi), %VZERO, %k0 - KMOV %k0, %VRDX - test %VRDX, %VRDX - jnz L(first_vec_x4) - - /* Check if at last VEC_SIZE * 4 length before aligning for the - loop. */ - cmpq $(CHAR_PER_VEC * 8), %rax - jbe L(last_4x_vec_or_less) - - - /* Compute number of words checked after aligning. */ -# ifdef USE_AS_WCSLEN - /* Need to compute directly for wcslen as CHAR_SIZE * rsi can - overflow. */ - leaq (VEC_SIZE * -3)(%rdi), %rdx -# else - leaq (VEC_SIZE * -3)(%rdi, %rax), %rax -# endif - - subq $(VEC_SIZE * -1), %rdi - - /* Align data to VEC_SIZE * 4. */ -# if VEC_SIZE == 64 - /* Saves code size. No evex512 processor has partial register - stalls. If that change this can be replaced with `andq - $-(VEC_SIZE * 4), %rdi`. */ - xorb %dil, %dil -# else - andq $-(VEC_SIZE * 4), %rdi -# endif - -# ifdef USE_AS_WCSLEN - subq %rdi, %rdx - sarq $2, %rdx - addq %rdx, %rax -# else - subq %rdi, %rax -# endif - /* Compare 4 * VEC at a time forward. */ - .p2align 4,, 11 -L(loop_4x_vec): - VMOVA (VEC_SIZE * 4)(%rdi), %VMM(1) - VPMINU (VEC_SIZE * 5)(%rdi), %VMM(1), %VMM(2) - VMOVA (VEC_SIZE * 6)(%rdi), %VMM(3) - VPMINU (VEC_SIZE * 7)(%rdi), %VMM(3), %VMM(4) - VPTESTN %VMM(2), %VMM(2), %k0 - VPTESTN %VMM(4), %VMM(4), %k2 - subq $-(VEC_SIZE * 4), %rdi - /* Break if at end of length. */ - subq $(CHAR_PER_VEC * 4), %rax - jbe L(loop_len_end) - - - KORTEST %k0, %k2 - jz L(loop_4x_vec) - - -L(loop_last_4x_vec): - movq %rsi, %rcx - subq %rax, %rsi - VPTESTN %VMM(1), %VMM(1), %k1 - KMOV %k1, %VRDX - test %VRDX, %VRDX - jnz L(last_vec_x0) - - KMOV %k0, %VRDX - test %VRDX, %VRDX - jnz L(last_vec_x1) - - VPTESTN %VMM(3), %VMM(3), %k0 - - /* Separate logic for VEC_SIZE == 64 and VEC_SIZE == 32 for - returning last 2x VEC. For VEC_SIZE == 64 we test each VEC - individually, for VEC_SIZE == 32 we combine them in a single - 64-bit GPR. */ -# if CHAR_PER_VEC == 64 - KMOV %k0, %VRDX - test %VRDX, %VRDX - jnz L(last_vec_x2) - KMOV %k2, %VRDX -# else - /* We can only combine last 2x VEC masks if CHAR_PER_VEC <= 32. - */ - kmovd %k2, %edx - kmovd %k0, %eax - salq $CHAR_PER_VEC, %rdx - orq %rax, %rdx -# endif - - /* first_vec_x3 for strlen-ZMM and first_vec_x2 for strlen-YMM. - */ - bsfq %rdx, %rdx - leaq (FALLTHROUGH_RETURN_OFFSET - CHAR_PER_VEC * 4)(%rsi, %rdx), %rax - cmpq %rax, %rcx - cmovb %rcx, %rax - ret - - /* Handle last 4x VEC after loop. All VECs have been loaded. */ - .p2align 4,, 4 -L(loop_len_end): - KORTEST %k0, %k2 - jnz L(loop_last_4x_vec) - movq %rsi, %rax - ret - - -# if CHAR_PER_VEC == 64 - /* Since we can't combine the last 2x VEC for VEC_SIZE == 64 - need return label for it. */ - .p2align 4,, 8 -L(last_vec_x2): - bsf %VRDX, %VRDX - leaq (CHAR_PER_VEC * -2)(%rsi, %rdx), %rax - cmpq %rax, %rcx - cmovb %rcx, %rax - ret -# endif - - - .p2align 4,, 10 -L(last_vec_x1): - addq $CHAR_PER_VEC, %rsi -L(last_vec_x0): - bsf %VRDX, %VRDX - leaq (CHAR_PER_VEC * -4)(%rsi, %rdx), %rax - cmpq %rax, %rcx - cmovb %rcx, %rax - ret - - - .p2align 4,, 8 -L(cross_page_boundary): - /* Align data to VEC_SIZE. */ - movq %rdi, %rcx - andq $-VEC_SIZE, %rcx - VPCMPEQ (%rcx), %VZERO, %k0 - - KMOV %k0, %VRCX -# ifdef USE_AS_WCSLEN - shrl $2, %eax - andl $(CHAR_PER_VEC - 1), %eax -# endif - shrx %VRAX, %VRCX, %VRCX - - negl %eax - andl $(CHAR_PER_VEC - 1), %eax - movq %rsi, %rdx - bsf %VRCX, %VRDX - cmpq %rax, %rdx - ja L(cross_page_continue) - movl %edx, %eax - cmpq %rdx, %rsi - cmovb %esi, %eax - ret -END (STRNLEN) +#ifndef STRNLEN +#define STRNLEN __strnlen_evex #endif + +#include "x86-evex256-vecs.h" +#include "reg-macros.h" +#include "strnlen-evex-base.S" diff --git a/sysdeps/x86_64/multiarch/strnlen-evex512.S b/sysdeps/x86_64/multiarch/strnlen-evex512.S index f8e55883bb..8ef54078f8 100644 --- a/sysdeps/x86_64/multiarch/strnlen-evex512.S +++ b/sysdeps/x86_64/multiarch/strnlen-evex512.S @@ -1,264 +1,7 @@ -/* Placeholder function, not used by any processor at the moment. - Copyright (C) 2022-2024 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 - <https://www.gnu.org/licenses/>. */ - #ifndef STRNLEN #define STRNLEN __strnlen_evex512 #endif #include "x86-evex512-vecs.h" #include "reg-macros.h" - -#include <isa-level.h> - -#if ISA_SHOULD_BUILD (4) - -# include <sysdep.h> - -# ifdef USE_AS_WCSLEN -# define VPCMPEQ vpcmpeqd -# define VPTESTN vptestnmd -# define VPMINU vpminud -# define CHAR_SIZE 4 -# else -# define VPCMPEQ vpcmpeqb -# define VPTESTN vptestnmb -# define VPMINU vpminub -# define CHAR_SIZE 1 -# endif - -# define PAGE_SIZE 4096 -# define CHAR_PER_VEC (VEC_SIZE / CHAR_SIZE) - - .section SECTION(.text),"ax",@progbits -/* Aligning entry point to 64 byte, provides better performance for - one vector length string. */ -ENTRY_P2ALIGN (STRNLEN, 6) - /* Check zero length. */ - test %RSI_LP, %RSI_LP - jz L(ret_max) -# ifdef __ILP32__ - /* Clear the upper 32 bits. */ - movl %esi, %esi -# endif - - movl %edi, %eax - vpxorq %VMM_128(0), %VMM_128(0), %VMM_128(0) - sall $20, %eax - cmpl $((PAGE_SIZE - VEC_SIZE) << 20), %eax - ja L(page_cross) - - /* Compare [w]char for null, mask bit will be set for match. */ - VPCMPEQ (%rdi), %VMM(0), %k0 - KMOV %k0, %VRCX - /* Store max length in rax. */ - mov %rsi, %rax - /* If rcx is 0, rax will have max length. We can not use VRCX - and VRAX here for evex256 because, upper 32 bits may be - undefined for ecx and eax. */ - bsfq %rcx, %rax - cmp $CHAR_PER_VEC, %rax - ja L(align_more) - cmpq %rax, %rsi - cmovb %esi, %eax - ret - - /* At this point vector max length reached. */ - .p2align 4,,3 -L(ret_max): - movq %rsi, %rax - ret - -L(align_more): - mov %rdi, %rax - /* Align rax to VEC_SIZE. */ - andq $-VEC_SIZE, %rax - movq %rdi, %rdx - subq %rax, %rdx -# ifdef USE_AS_WCSLEN - shr $2, %VRDX -# endif - /* At this point rdx contains [w]chars already compared. */ - leaq -CHAR_PER_VEC(%rsi, %rdx), %rdx - /* At this point rdx contains number of w[char] needs to go. - Now onwards rdx will keep decrementing with each compare. */ - - /* Loop unroll 4 times for 4 vector loop. */ - VPCMPEQ VEC_SIZE(%rax), %VMM(0), %k0 - subq $-VEC_SIZE, %rax - KMOV %k0, %VRCX - test %VRCX, %VRCX - jnz L(ret_vec_x1) - - subq $CHAR_PER_VEC, %rdx - jbe L(ret_max) - - VPCMPEQ VEC_SIZE(%rax), %VMM(0), %k0 - KMOV %k0, %VRCX - test %VRCX, %VRCX - jnz L(ret_vec_x2) - - subq $CHAR_PER_VEC, %rdx - jbe L(ret_max) - - VPCMPEQ (VEC_SIZE * 2)(%rax), %VMM(0), %k0 - KMOV %k0, %VRCX - test %VRCX, %VRCX - jnz L(ret_vec_x3) - - subq $CHAR_PER_VEC, %rdx - jbe L(ret_max) - - VPCMPEQ (VEC_SIZE * 3)(%rax), %VMM(0), %k0 - KMOV %k0, %VRCX - test %VRCX, %VRCX - jnz L(ret_vec_x4) - - subq $CHAR_PER_VEC, %rdx - jbe L(ret_max) - /* Save pointer before 4 x VEC_SIZE alignment. */ - movq %rax, %rcx - - /* Align address to VEC_SIZE * 4 for loop. */ - andq $-(VEC_SIZE * 4), %rax - - subq %rax, %rcx -# ifdef USE_AS_WCSLEN - shr $2, %VRCX -# endif - /* rcx contains number of [w]char will be recompared due to - alignment fixes. rdx must be incremented by rcx to offset - alignment adjustment. */ - addq %rcx, %rdx - /* Need jump as we don't want to add/subtract rdx for first - iteration of 4 x VEC_SIZE aligned loop. */ - - .p2align 4,,11 -L(loop): - /* VPMINU and VPCMP combination provide better performance as - compared to alternative combinations. */ - VMOVA (VEC_SIZE * 4)(%rax), %VMM(1) - VPMINU (VEC_SIZE * 5)(%rax), %VMM(1), %VMM(2) - VMOVA (VEC_SIZE * 6)(%rax), %VMM(3) - VPMINU (VEC_SIZE * 7)(%rax), %VMM(3), %VMM(4) - - VPTESTN %VMM(2), %VMM(2), %k0 - VPTESTN %VMM(4), %VMM(4), %k1 - - subq $-(VEC_SIZE * 4), %rax - KORTEST %k0, %k1 - - jnz L(loopend) - subq $(CHAR_PER_VEC * 4), %rdx - ja L(loop) - mov %rsi, %rax - ret - -L(loopend): - - VPTESTN %VMM(1), %VMM(1), %k2 - KMOV %k2, %VRCX - test %VRCX, %VRCX - jnz L(ret_vec_x1) - - KMOV %k0, %VRCX - /* At this point, if k0 is non zero, null char must be in the - second vector. */ - test %VRCX, %VRCX - jnz L(ret_vec_x2) - - VPTESTN %VMM(3), %VMM(3), %k3 - KMOV %k3, %VRCX - test %VRCX, %VRCX - jnz L(ret_vec_x3) - /* At this point null [w]char must be in the fourth vector so no - need to check. */ - KMOV %k1, %VRCX - - /* Fourth, third, second vector terminating are pretty much - same, implemented this way to avoid branching and reuse code - from pre loop exit condition. */ -L(ret_vec_x4): - bsf %VRCX, %VRCX - subq %rdi, %rax -# ifdef USE_AS_WCSLEN - subq $-(VEC_SIZE * 3), %rax - shrq $2, %rax - addq %rcx, %rax -# else - leaq (VEC_SIZE * 3)(%rcx, %rax), %rax -# endif - - cmpq %rsi, %rax - cmovnb %rsi, %rax - ret - -L(ret_vec_x3): - bsf %VRCX, %VRCX - subq %rdi, %rax -# ifdef USE_AS_WCSLEN - subq $-(VEC_SIZE * 2), %rax - shrq $2, %rax - addq %rcx, %rax -# else - leaq (VEC_SIZE * 2)(%rcx, %rax), %rax -# endif - cmpq %rsi, %rax - cmovnb %rsi, %rax - ret - -L(ret_vec_x2): - subq $-VEC_SIZE, %rax -L(ret_vec_x1): - bsf %VRCX, %VRCX - subq %rdi, %rax -# ifdef USE_AS_WCSLEN - shrq $2, %rax -# endif - addq %rcx, %rax - cmpq %rsi, %rax - cmovnb %rsi, %rax - ret - -L(page_cross): - mov %rdi, %rax - movl %edi, %ecx - andl $(VEC_SIZE - 1), %ecx -# ifdef USE_AS_WCSLEN - sarl $2, %ecx -# endif - /* ecx contains number of w[char] to be skipped as a result - of address alignment. */ - andq $-VEC_SIZE, %rax - VPCMPEQ (%rax), %VMM(0), %k0 - KMOV %k0, %VRDX - /* Ignore number of character for alignment adjustment. */ - shr %cl, %VRDX - jnz L(page_cross_end) - movl $CHAR_PER_VEC, %eax - sub %ecx, %eax - cmp %rax, %rsi - ja L(align_more) - -L(page_cross_end): - bsf %VRDX, %VRAX - cmpq %rsi, %rax - cmovnb %esi, %eax - ret - -END (STRNLEN) -#endif +#include "strnlen-evex-base.S" \ No newline at end of file diff --git a/sysdeps/x86_64/nptl/tcb-offsets.sym b/sysdeps/x86_64/nptl/tcb-offsets.sym index 2bbd563a6c..988a4b8593 100644 --- a/sysdeps/x86_64/nptl/tcb-offsets.sym +++ b/sysdeps/x86_64/nptl/tcb-offsets.sym @@ -13,6 +13,3 @@ MULTIPLE_THREADS_OFFSET offsetof (tcbhead_t, multiple_threads) POINTER_GUARD offsetof (tcbhead_t, pointer_guard) FEATURE_1_OFFSET offsetof (tcbhead_t, feature_1) SSP_BASE_OFFSET offsetof (tcbhead_t, ssp_base) - --- Not strictly offsets, but these values are also used in the TCB. -TCB_CANCELED_BITMASK CANCELED_BITMASK diff --git a/sysdeps/x86_64/x32/Makefile b/sysdeps/x86_64/x32/Makefile index a015789a4f..a9b20b798f 100644 --- a/sysdeps/x86_64/x32/Makefile +++ b/sysdeps/x86_64/x32/Makefile @@ -1,3 +1,9 @@ +ifeq ($(subdir),elf) +# Xfail tst-platform-1 on x32 since kernel passes i686 in AT_PLATFORM. +# See https://sourceware.org/bugzilla/show_bug.cgi?id=22363 +test-xfail-tst-platform-1 = yes +endif + ifeq ($(subdir),math) # Since x32 returns 32-bit long int and 64-bit long long int in the # same 64-bit register, we make the 32b-bit lround an alias of the diff --git a/sysdeps/x86_64/x32/dl-machine.h b/sysdeps/x86_64/x32/dl-machine.h deleted file mode 100644 index c35cee9261..0000000000 --- a/sysdeps/x86_64/x32/dl-machine.h +++ /dev/null @@ -1,76 +0,0 @@ -/* Machine-dependent ELF dynamic relocation inline functions. x32 version. - Copyright (C) 2012-2024 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 - <https://www.gnu.org/licenses/>. */ - -/* Must allow <sysdeps/x86_64/dl-machine.h> to be included more than once. - See #ifdef RESOLVE_MAP in sysdeps/x86_64/dl-machine.h. */ -#include <sysdeps/x86_64/dl-machine.h> - -#ifndef _X32_DL_MACHINE_H -#define _X32_DL_MACHINE_H - -#undef ARCH_LA_PLTENTER -#undef ARCH_LA_PLTEXIT -#undef RTLD_START - -/* Names of the architecture-specific auditing callback functions. */ -#define ARCH_LA_PLTENTER x32_gnu_pltenter -#define ARCH_LA_PLTEXIT x32_gnu_pltexit - -/* Initial entry point code for the dynamic linker. - The C function `_dl_start' is the real entry point; - its return value is the user program's entry point. */ -#define RTLD_START asm ("\n\ -.text\n\ - .p2align 4\n\ -.globl _start\n\ -.globl _dl_start_user\n\ -_start:\n\ - movl %esp, %edi\n\ - call _dl_start\n\ -_dl_start_user:\n\ - # Save the user entry point address in %r12.\n\ - movl %eax, %r12d\n\ - # Read the original argument count.\n\ - movl (%rsp), %edx\n\ - # Call _dl_init (struct link_map *main_map, int argc, char **argv, char **env)\n\ - # argc -> rsi\n\ - movl %edx, %esi\n\ - # Save %rsp value in %r13.\n\ - movl %esp, %r13d\n\ - # And align stack for the _dl_init call.\n\ - and $-16, %esp\n\ - # _dl_loaded -> rdi\n\ - movl _rtld_local(%rip), %edi\n\ - # env -> rcx\n\ - lea 8(%r13,%rdx,4), %ecx\n\ - # argv -> rdx\n\ - lea 4(%r13), %edx\n\ - # Clear %rbp to mark outermost frame obviously even for constructors.\n\ - xorl %ebp, %ebp\n\ - # Call the function to run the initializers.\n\ - call _dl_init\n\ - # Pass our finalizer function to the user in %rdx, as per ELF ABI.\n\ - lea _dl_fini(%rip), %edx\n\ - # And make sure %rsp points to argc stored on the stack.\n\ - movl %r13d, %esp\n\ - # Jump to the user's entry point.\n\ - jmp *%r12\n\ -.previous\n\ -"); - -#endif /* !_X32_DL_MACHINE_H */ diff --git a/time/Makefile b/time/Makefile index f4c75b786d..d06797b06c 100644 --- a/time/Makefile +++ b/time/Makefile @@ -42,16 +42,49 @@ routines := offtime asctime clock ctime ctime_r difftime \ aux := era alt_digit lc-time-cleanup -tests := test_time clocktest tst-posixtz tst-strptime tst_wcsftime \ - tst-getdate tst-mktime tst-mktime2 tst-ftime_l tst-strftime \ - tst-mktime3 tst-strptime2 bug-asctime bug-asctime_r bug-mktime1 \ - tst-strptime3 bug-getdate1 tst-strptime-whitespace tst-ftime \ - tst-tzname tst-y2039 bug-mktime4 tst-strftime2 tst-strftime3 \ - tst-clock tst-clock2 tst-clock_nanosleep tst-cpuclock1 \ - tst-adjtime tst-ctime tst-difftime tst-mktime4 tst-clock_settime \ - tst-settimeofday tst-itimer tst-gmtime tst-timegm \ - tst-timespec_get tst-timespec_getres tst-strftime4 \ - tst-tzfile-fault +tests := \ + bug-asctime \ + bug-asctime_r \ + bug-getdate1 \ + bug-mktime1 \ + bug-mktime4 \ + clocktest \ + test_time \ + tst-adjtime \ + tst-clock \ + tst-clock2 \ + tst-clock_nanosleep \ + tst-clock_settime \ + tst-cpuclock1 \ + tst-ctime \ + tst-difftime \ + tst-ftime \ + tst-ftime_l \ + tst-getdate \ + tst-gmtime \ + tst-itimer \ + tst-mktime \ + tst-mktime2 \ + tst-mktime3 \ + tst-mktime4 \ + tst-posixtz \ + tst-settimeofday \ + tst-strftime \ + tst-strftime2 \ + tst-strftime3 \ + tst-strftime4 \ + tst-strptime \ + tst-strptime-whitespace \ + tst-strptime2 \ + tst-strptime3 \ + tst-timegm \ + tst-timespec_get \ + tst-timespec_getres \ + tst-tzfile-fault \ + tst-tzname \ + tst-y2039 \ + tst_wcsftime \ + # tests tests-time64 := \ tst-adjtime-time64 \ diff --git a/timezone/private.h b/timezone/private.h index 0dac6af4e3..c33041049f 100644 --- a/timezone/private.h +++ b/timezone/private.h @@ -19,19 +19,22 @@ /* PORT_TO_C89 means the code should work even if the underlying compiler and library support only C89 plus C99's 'long long' - and perhaps a few other extensions to C89. SUPPORT_C89 means the - tzcode library should support C89 callers in addition to the usual - support for C99-and-later callers; however, C89 support can trigger - latent bugs in C99-and-later callers. These macros are obsolescent, - and the plan is to remove them along with any code needed only when - they are nonzero. A good time to do that might be in the year 2029 + and perhaps a few other extensions to C89. + + This macro is obsolescent, and the plan is to remove it along with + associated code. A good time to do that might be in the year 2029 because RHEL 7 (whose GCC defaults to C89) extended life cycle support (ELS) is scheduled to end on 2028-06-30. */ #ifndef PORT_TO_C89 # define PORT_TO_C89 0 #endif + +/* SUPPORT_C89 means the tzcode library should support C89 callers + in addition to the usual support for C99-and-later callers. + This defaults to 1 as POSIX requires, even though that can trigger + latent bugs in callers. */ #ifndef SUPPORT_C89 -# define SUPPORT_C89 0 +# define SUPPORT_C89 1 #endif #ifndef __STDC_VERSION__ @@ -69,10 +72,6 @@ ** You can override these in your C compiler options, e.g. '-DHAVE_GETTEXT=1'. */ -#ifndef HAVE_DECL_ASCTIME_R -# define HAVE_DECL_ASCTIME_R 1 -#endif - #if !defined HAVE__GENERIC && defined __has_extension # if !__has_extension(c_generic_selections) # define HAVE__GENERIC 0 @@ -236,6 +235,31 @@ # include <unistd.h> /* for R_OK, and other POSIX goodness */ #endif /* HAVE_UNISTD_H */ +/* SUPPORT_POSIX2008 means the tzcode library should support + POSIX.1-2017-and-earlier callers in addition to the usual support for + POSIX.1-2024-and-later callers; however, this can be + incompatible with POSIX.1-2024-and-later callers. + This macro is obsolescent, and the plan is to remove it + along with any code needed only when it is nonzero. + A good time to do that might be in the year 2034. + This macro's name is SUPPORT_POSIX2008 because _POSIX_VERSION == 200809 + in POSIX.1-2017, a minor revision of POSIX.1-2008. */ +#ifndef SUPPORT_POSIX2008 +# if defined _POSIX_VERSION && _POSIX_VERSION <= 200809 +# define SUPPORT_POSIX2008 1 +# else +# define SUPPORT_POSIX2008 0 +# endif +#endif + +#ifndef HAVE_DECL_ASCTIME_R +# if SUPPORT_POSIX2008 +# define HAVE_DECL_ASCTIME_R 1 +# else +# define HAVE_DECL_ASCTIME_R 0 +# endif +#endif + #ifndef HAVE_STRFTIME_L # if _POSIX_VERSION < 200809 # define HAVE_STRFTIME_L 0 @@ -460,14 +484,6 @@ typedef unsigned long uintmax_t; # define ckd_mul(r, a, b) __builtin_mul_overflow(a, b, r) #endif -#if 3 <= __GNUC__ -# define ATTRIBUTE_MALLOC __attribute__((malloc)) -# define ATTRIBUTE_FORMAT(spec) __attribute__((format spec)) -#else -# define ATTRIBUTE_MALLOC /* empty */ -# define ATTRIBUTE_FORMAT(spec) /* empty */ -#endif - #if (defined __has_c_attribute \ && (202311 <= __STDC_VERSION__ || !defined __STRICT_ANSI__)) # define HAVE___HAS_C_ATTRIBUTE true @@ -535,24 +551,27 @@ typedef unsigned long uintmax_t; # endif #endif #ifndef ATTRIBUTE_REPRODUCIBLE -# if 3 <= __GNUC__ -# define ATTRIBUTE_REPRODUCIBLE __attribute__((pure)) -# else -# define ATTRIBUTE_REPRODUCIBLE /* empty */ -# endif +# define ATTRIBUTE_REPRODUCIBLE /* empty */ #endif -#if HAVE___HAS_C_ATTRIBUTE -# if __has_c_attribute(unsequenced) -# define ATTRIBUTE_UNSEQUENCED [[unsequenced]] -# endif +/* GCC attributes that are useful in tzcode. + __attribute__((pure)) is stricter than [[reproducible]], + so the latter is an adequate substitute in non-GCC C23 platforms. */ +#if __GNUC__ < 3 +# define ATTRIBUTE_FORMAT(spec) /* empty */ +# define ATTRIBUTE_PURE ATTRIBUTE_REPRODUCIBLE +#else +# define ATTRIBUTE_FORMAT(spec) __attribute__((format spec)) +# define ATTRIBUTE_PURE __attribute__((pure)) #endif -#ifndef ATTRIBUTE_UNSEQUENCED -# if 3 <= __GNUC__ -# define ATTRIBUTE_UNSEQUENCED __attribute__((const)) -# else -# define ATTRIBUTE_UNSEQUENCED /* empty */ -# endif + +/* Avoid GCC bug 114833 <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=114833>. + Remove this macro and its uses when the bug is fixed in a GCC release, + because only the latest GCC matters for $(GCC_DEBUG_FLAGS). */ +#ifdef GCC_LINT +# define ATTRIBUTE_PURE_114833 ATTRIBUTE_PURE +#else +# define ATTRIBUTE_PURE_114833 /* empty */ #endif #if (__STDC_VERSION__ < 199901 && !defined restrict \ @@ -604,12 +623,8 @@ typedef time_tz tz_time_t; # undef asctime # define asctime tz_asctime -# undef asctime_r -# define asctime_r tz_asctime_r # undef ctime # define ctime tz_ctime -# undef ctime_r -# define ctime_r tz_ctime_r # undef difftime # define difftime tz_difftime # undef gmtime @@ -654,6 +669,12 @@ typedef time_tz tz_time_t; # define tzfree tz_tzfree # undef tzset # define tzset tz_tzset +# if SUPPORT_POSIX2008 +# undef asctime_r +# define asctime_r tz_asctime_r +# undef ctime_r +# define ctime_r tz_ctime_r +# endif # if HAVE_STRFTIME_L # undef strftime_l # define strftime_l tz_strftime_l @@ -679,10 +700,12 @@ typedef time_tz tz_time_t; # define DEPRECATED_IN_C23 ATTRIBUTE_DEPRECATED # endif DEPRECATED_IN_C23 char *asctime(struct tm const *); -char *asctime_r(struct tm const *restrict, char *restrict); DEPRECATED_IN_C23 char *ctime(time_t const *); +#if SUPPORT_POSIX2008 +char *asctime_r(struct tm const *restrict, char *restrict); char *ctime_r(time_t const *, char *); -ATTRIBUTE_UNSEQUENCED double difftime(time_t, time_t); +#endif +double difftime(time_t, time_t); size_t strftime(char *restrict, size_t, char const *restrict, struct tm const *restrict); # if HAVE_STRFTIME_L @@ -713,7 +736,7 @@ void tzset(void); time_t timegm(struct tm *); #endif -#if !HAVE_DECL_ASCTIME_R && !defined asctime_r +#if !HAVE_DECL_ASCTIME_R && !defined asctime_r && SUPPORT_POSIX2008 extern char *asctime_r(struct tm const *restrict, char *restrict); #endif @@ -798,10 +821,10 @@ timezone_t tzalloc(char const *); void tzfree(timezone_t); # if STD_INSPIRED # if TZ_TIME_T || !defined posix2time_z -ATTRIBUTE_REPRODUCIBLE time_t posix2time_z(timezone_t, time_t); +ATTRIBUTE_PURE time_t posix2time_z(timezone_t, time_t); # endif # if TZ_TIME_T || !defined time2posix_z -ATTRIBUTE_REPRODUCIBLE time_t time2posix_z(timezone_t, time_t); +ATTRIBUTE_PURE time_t time2posix_z(timezone_t, time_t); # endif # endif #endif @@ -973,8 +996,9 @@ enum { /* How many years to generate (in zic.c) or search through (in localtime.c). This is two years larger than the obvious 400, to avoid edge cases. - E.g., suppose a non-POSIX.1-2017 rule applies from 2012 on with transitions - in March and September, plus one-off transitions in November 2013. + E.g., suppose a rule applies from 2012 on with transitions + in March and September, plus one-off transitions in November 2013, + and suppose the rule cannot be expressed as a proleptic TZ string. If zic looked only at the last 400 years, it would set max_year=2413, with the intent that the 400 years 2014 through 2413 will be repeated. The last transition listed in the tzfile would be in 2413-09, diff --git a/timezone/tzfile.h b/timezone/tzfile.h index 3155010ed1..b154146654 100644 --- a/timezone/tzfile.h +++ b/timezone/tzfile.h @@ -76,14 +76,16 @@ struct tzhead { ** If tzh_version is '2' or greater, the above is followed by a second instance ** of tzhead and a second instance of the data in which each coded transition ** time uses 8 rather than 4 chars, -** then a POSIX-TZ-environment-variable-style string for use in handling +** then a POSIX.1-2017 proleptic TZ string for use in handling ** instants after the last transition time stored in the file ** (with nothing between the newlines if there is no POSIX.1-2017 ** representation for such instants). ** -** If tz_version is '3' or greater, the above is extended as follows. +** If tz_version is '3' or greater, the TZ string can be any POSIX.1-2024 +** proleptic TZ string, which means the above is extended as follows. ** First, the TZ string's hour offset may range from -167 -** through 167 as compared to the POSIX-required 0 through 24. +** through 167 as compared to the range 0 through 24 required +** by POSIX.1-2017 and earlier. ** Second, its DST start time may be January 1 at 00:00 and its stop ** time December 31 at 24:00 plus the difference between DST and ** standard time, indicating DST all year. diff --git a/timezone/tzselect.ksh b/timezone/tzselect.ksh index 38941bbc55..ca3d82c6aa 100755 --- a/timezone/tzselect.ksh +++ b/timezone/tzselect.ksh @@ -20,12 +20,6 @@ REPORT_BUGS_TO=tz@iana.org # Korn Shell <http://www.kornshell.com/> # MirBSD Korn Shell <http://www.mirbsd.org/mksh.htm> # -# For portability to Solaris 10 /bin/sh (supported by Oracle through -# January 2027) this script avoids some POSIX features and common -# extensions, such as $(...), $((...)), ! CMD, unquoted ^, ${#ID}, -# ${ID##PAT}, ${ID%%PAT}, and $10. Although some of these constructs -# work sometimes, it's simpler to avoid them entirely. -# # This script also uses several features of POSIX awk. # If your host lacks awk, or has an old awk that does not conform to POSIX, # you can use any of the following free programs instead: @@ -45,7 +39,6 @@ set -f # Specify default values for environment variables if they are unset. : ${AWK=awk} -: ${PWD=`pwd`} : ${TZDIR=$PWD} # Output one argument as-is to standard output, with trailing newline. @@ -54,13 +47,6 @@ say() { printf '%s\n' "$1" } -# Check for awk POSIX compliance. -($AWK -v x=y 'BEGIN { exit 123 }') <>/dev/null >&0 2>&0 -[ $? = 123 ] || { - say >&2 "$0: Sorry, your '$AWK' program is not POSIX compatible." - exit 1 -} - coord= location_limit=10 zonetabtype=zone1970 @@ -117,8 +103,7 @@ then else doselect() { # Field width of the prompt numbers. - print_nargs_length="BEGIN {print length(\"$#\");}" - select_width=`$AWK "$print_nargs_length"` + select_width=${##} select_i= @@ -129,14 +114,14 @@ else select_i=0 for select_word do - select_i=`$AWK "BEGIN { print $select_i + 1 }"` + select_i=$(($select_i + 1)) printf >&2 "%${select_width}d) %s\\n" $select_i "$select_word" done;; *[!0-9]*) echo >&2 'Please enter a number in range.';; *) if test 1 -le $select_i && test $select_i -le $#; then - shift `$AWK "BEGIN { print $select_i - 1 }"` + shift $(($select_i - 1)) select_result=$1 break fi @@ -170,7 +155,7 @@ do esac done -shift `$AWK "BEGIN { print $OPTIND - 1 }"` +shift $(($OPTIND - 1)) case $# in 0) ;; *) say >&2 "$0: $1: unknown argument"; exit 1 @@ -178,11 +163,13 @@ esac # translit=true to try transliteration. # This is false if U+12345 CUNEIFORM SIGN URU TIMES KI has length 1 -# which means awk (and presumably the shell) do not need transliteration. -if $AWK 'BEGIN { u12345 = "\360\222\215\205"; exit length(u12345) == 1 }'; then - translit=true -else - translit=false +# which means the shell and (presumably) awk do not need transliteration. +# It is true if the byte string has some other length in characters, or +# if this is a POSIX.1-2017 or earlier shell that does not support $'...'. +CUNEIFORM_SIGN_URU_TIMES_KI=$'\360\222\215\205' +if test ${#CUNEIFORM_SIGN_URU_TIMES_KI} = 1 +then translit=false +else translit=true fi # Read into shell variable $1 the contents of file $2. @@ -192,10 +179,10 @@ fi # if that does not work, fall back on 'cat'. read_file() { { $translit && { - eval "$1=\`(iconv -f UTF-8 -t //TRANSLIT) 2>/dev/null <\"\$2\"\`" || - eval "$1=\`(iconv -f UTF-8) 2>/dev/null <\"\$2\"\`" + eval "$1=\$( (iconv -f UTF-8 -t //TRANSLIT) 2>/dev/null <\"\$2\")" || + eval "$1=\$( (iconv -f UTF-8) 2>/dev/null <\"\$2\")" }; } || - eval "$1=\`cat <\"\$2\"\`" || { + eval "$1=\$(cat <\"\$2\")" || { say >&2 "$0: time zone files are not set up correctly" exit 1 } @@ -403,7 +390,7 @@ while echo >&2 \ 'Please select a continent, ocean, "coord", "TZ", "time", or "now".' - quoted_continents=` + quoted_continents=$( $AWK ' function handle_entry(entry) { entry = substr(entry, 1, index(entry, "/") - 1) @@ -433,12 +420,12 @@ while sort -u | tr '\n' ' ' echo '' - ` + ) eval ' doselect '"$quoted_continents"' \ "coord - I want to use geographical coordinates." \ - "TZ - I want to specify the timezone using a POSIX.1-2017 TZ string." \ + "TZ - I want to specify the timezone using a proleptic TZ string." \ "time - I know local time already." \ "now - Like \"time\", but configure only for timestamps from now on." continent=$select_result @@ -462,16 +449,17 @@ while case $continent in TZ) - # Ask the user for a POSIX.1-2017 TZ string. Check that it conforms. + # Ask the user for a proleptic TZ string. Check that it conforms. check_POSIX_TZ_string=' BEGIN { tz = substr(ARGV[1], 2) ARGV[1] = "" tzname = ("(<[[:alnum:]+-][[:alnum:]+-][[:alnum:]+-]+>" \ "|[[:alpha:]][[:alpha:]][[:alpha:]]+)") - time = ("(2[0-4]|[0-1]?[0-9])" \ - "(:[0-5][0-9](:[0-5][0-9])?)?") - offset = "[-+]?" time + sign = "[-+]?" + hhmm = "(:[0-5][0-9](:[0-5][0-9])?)?" + offset = sign "(2[0-4]|[0-1]?[0-9])" hhmm + time = sign "(16[0-7]|(1[0-5]|[0-9]?)[0-9])" hhmm mdate = "M([1-9]|1[0-2])\\.[1-5]\\.[0-6]" jdate = ("((J[1-9]|[0-9]|J?[1-9][0-9]" \ "|J?[1-2][0-9][0-9])|J?3[0-5][0-9]|J?36[0-5])") @@ -492,7 +480,7 @@ while read tz $AWK "$check_POSIX_TZ_string" ="$tz" do - say >&2 "'$tz' is not a conforming POSIX.1-2017 timezone string." + say >&2 "'$tz' is not a conforming POSIX proleptic TZ string." done TZ_for_date=$tz;; *) @@ -507,14 +495,14 @@ while '74 degrees 3 minutes west.' read coord esac - distance_table=` + distance_table=$( $AWK \ "$output_distances_or_times" \ ="$coord" ="$TZ_COUNTRY_TABLE" ="$TZ_ZONE_TABLE" | sort -n | $AWK "{print} NR == $location_limit { exit }" - ` - regions=` + ) + regions=$( $AWK ' BEGIN { distance_table = substr(ARGV[1], 2) @@ -526,13 +514,13 @@ while } } ' ="$distance_table" - ` + ) echo >&2 'Please select one of the following timezones,' echo >&2 'listed roughly in increasing order' \ "of distance from $coord". doselect $regions region=$select_result - tz=` + tz=$( $AWK ' BEGIN { distance_table = substr(ARGV[1], 2) @@ -546,22 +534,22 @@ while } } ' ="$distance_table" ="$region" - `;; + );; *) case $continent in now|time) minute_format='%a %b %d %H:%M' - old_minute=`TZ=UTC0 date +"$minute_format"` + old_minute=$(TZ=UTC0 date +"$minute_format") for i in 1 2 3 do - time_table_command=` + time_table_command=$( $AWK \ -v output_times=1 \ "$output_distances_or_times" \ = = ="$TZ_ZONE_TABLE" - ` - time_table=`eval "$time_table_command"` - new_minute=`TZ=UTC0 date +"$minute_format"` + ) + time_table=$(eval "$time_table_command") + new_minute=$(TZ=UTC0 date +"$minute_format") case $old_minute in "$new_minute") break esac @@ -569,11 +557,11 @@ while done echo >&2 "The system says Universal Time is $new_minute." echo >&2 "Assuming that's correct, what is the local time?" - sorted_table=`say "$time_table" | sort -k2n -k2,5 -k1n` || { + sorted_table=$(say "$time_table" | sort -k2n -k2,5 -k1n) || { say >&2 "$0: cannot sort time table" exit 1 } - eval doselect ` + eval doselect $( $AWK ' BEGIN { sorted_table = substr(ARGV[1], 2) @@ -590,10 +578,10 @@ while } } ' ="$sorted_table" - ` + ) time=$select_result continent_re='^' - zone_table=` + zone_table=$( $AWK ' BEGIN { time = substr(ARGV[1], 2) @@ -609,13 +597,13 @@ while } } ' ="$time" ="$time_table" - ` - countries=` + ) + countries=$( $AWK \ "$output_country_list" \ ="$continent_re" ="$TZ_COUNTRY_TABLE" ="$zone_table" | sort -f - ` + ) ;; *) continent_re="^$continent/" @@ -623,16 +611,16 @@ while esac # Get list of names of countries in the continent or ocean. - countries=` + countries=$( $AWK \ "$output_country_list" \ ="$continent_re" ="$TZ_COUNTRY_TABLE" ="$zone_table" | sort -f - ` + ) # If all zone table entries have comments, and there are # at most 22 entries, asked based on those comments. # This fits the prompt onto old-fashioned 24-line screens. - regions=` + regions=$( $AWK ' BEGIN { TZ_ZONE_TABLE = substr(ARGV[1], 2) @@ -653,7 +641,7 @@ while print comment[i] } ' ="$zone_table" - ` + ) # If there's more than one country, ask the user which one. case $countries in @@ -669,7 +657,7 @@ while # Get list of timezones in the country. - regions=` + regions=$( $AWK ' BEGIN { country = substr(ARGV[1], 2) @@ -696,7 +684,7 @@ while } } ' ="$country" ="$TZ_COUNTRY_TABLE" ="$zone_table" - ` + ) # If there's more than one region, ask the user which one. case $regions in @@ -707,7 +695,7 @@ while esac # Determine tz from country and region. - tz=` + tz=$( $AWK ' BEGIN { country = substr(ARGV[1], 2) @@ -735,7 +723,7 @@ while } } ' ="$country" ="$region" ="$TZ_COUNTRY_TABLE" ="$zone_table" - ` + ) esac # Make sure the corresponding zoneinfo file exists. @@ -754,14 +742,11 @@ while extra_info= for i in 1 2 3 4 5 6 7 8 do - TZdate=`LANG=C TZ="$TZ_for_date" date` - UTdate=`LANG=C TZ=UTC0 date` - if $AWK ' - function getsecs(d) { - return match(d, /.*:[0-5][0-9]/) ? substr(d, RLENGTH - 1, 2) : "" - } - BEGIN { exit getsecs(ARGV[1]) != getsecs(ARGV[2]) } - ' ="$TZdate" ="$UTdate" + TZdate=$(LANG=C TZ="$TZ_for_date" date) + UTdate=$(LANG=C TZ=UTC0 date) + TZsecsetc=${TZdate##*[0-5][0-9]:} + UTsecsetc=${UTdate##*[0-5][0-9]:} + if test "${TZsecsetc%%[!0-9]*}" = "${UTsecsetc%%[!0-9]*}" then extra_info=" Selected time is now: $TZdate. @@ -801,7 +786,7 @@ done case $SHELL in *csh) file=.login line="setenv TZ '$tz'";; -*) file=.profile line="TZ='$tz'; export TZ" +*) file=.profile line="export TZ='$tz'" esac test -t 1 && say >&2 " diff --git a/timezone/zdump.c b/timezone/zdump.c index 7d99cc74bd..e817873337 100644 --- a/timezone/zdump.c +++ b/timezone/zdump.c @@ -89,7 +89,7 @@ static bool warned; static bool errout; static char const *abbr(struct tm const *); -ATTRIBUTE_REPRODUCIBLE static intmax_t delta(struct tm *, struct tm *); +static intmax_t delta(struct tm *, struct tm *); static void dumptime(struct tm const *); static time_t hunt(timezone_t, time_t, time_t, bool); static void show(timezone_t, char *, time_t, bool); @@ -97,7 +97,7 @@ static void showextrema(timezone_t, char *, time_t, struct tm *, time_t); static void showtrans(char const *, struct tm const *, time_t, char const *, char const *); static const char *tformat(void); -ATTRIBUTE_REPRODUCIBLE static time_t yeartot(intmax_t); +ATTRIBUTE_PURE_114833 static time_t yeartot(intmax_t); /* Is C an ASCII digit? */ static bool @@ -134,7 +134,7 @@ size_overflow(void) /* Return A + B, exiting if the result would overflow either ptrdiff_t or size_t. A and B are both nonnegative. */ -ATTRIBUTE_REPRODUCIBLE static ptrdiff_t +ATTRIBUTE_PURE_114833 static ptrdiff_t sumsize(ptrdiff_t a, ptrdiff_t b) { #ifdef ckd_add @@ -162,7 +162,7 @@ xstrsize(char const *str) /* Return a pointer to a newly allocated buffer of size SIZE, exiting on failure. SIZE should be positive. */ -ATTRIBUTE_MALLOC static void * +static void * xmalloc(ptrdiff_t size) { void *p = malloc(size); @@ -932,7 +932,7 @@ showextrema(timezone_t tz, char *zone, time_t lo, struct tm *lotmp, time_t hi) # include <stdarg.h> /* A substitute for snprintf that is good enough for zdump. */ -ATTRIBUTE_FORMAT((printf, 3, 4)) static int +static int my_snprintf(char *s, size_t size, char const *format, ...) { int n; diff --git a/timezone/zic.c b/timezone/zic.c index 00f00e307a..cf8e79dff4 100644 --- a/timezone/zic.c +++ b/timezone/zic.c @@ -470,7 +470,7 @@ size_overflow(void) memory_exhausted(_("size overflow")); } -ATTRIBUTE_REPRODUCIBLE static ptrdiff_t +ATTRIBUTE_PURE_114833 static ptrdiff_t size_sum(size_t a, size_t b) { #ifdef ckd_add @@ -484,7 +484,7 @@ size_sum(size_t a, size_t b) size_overflow(); } -ATTRIBUTE_REPRODUCIBLE static ptrdiff_t +ATTRIBUTE_PURE_114833 static ptrdiff_t size_product(ptrdiff_t nitems, ptrdiff_t itemsize) { #ifdef ckd_mul @@ -499,7 +499,7 @@ size_product(ptrdiff_t nitems, ptrdiff_t itemsize) size_overflow(); } -ATTRIBUTE_REPRODUCIBLE static ptrdiff_t +ATTRIBUTE_PURE_114833 static ptrdiff_t align_to(ptrdiff_t size, ptrdiff_t alignment) { ptrdiff_t lo_bits = alignment - 1, sum = size_sum(size, lo_bits); @@ -523,7 +523,7 @@ memcheck(void *ptr) return ptr; } -ATTRIBUTE_MALLOC static void * +static void * emalloc(size_t size) { return memcheck(malloc(size)); @@ -535,7 +535,7 @@ erealloc(void *ptr, size_t size) return memcheck(realloc(ptr, size)); } -ATTRIBUTE_MALLOC static char * +static char * estrdup(char const *str) { return memcheck(strdup(str)); @@ -1435,7 +1435,7 @@ relname(char const *target, char const *linkname) /* Return true if A and B must have the same parent dir if A and B exist. Return false if this is not necessarily true (though it might be true). Keep it simple, and do not inspect the file system. */ -static bool +ATTRIBUTE_PURE_114833 static bool same_parent_dirs(char const *a, char const *b) { for (; *a == *b; a++, b++) @@ -2982,10 +2982,10 @@ rule_cmp(struct rule const *a, struct rule const *b) return a->r_dayofmonth - b->r_dayofmonth; } -/* Store into RESULT a POSIX.1-2017 TZ string that represent the future +/* Store into RESULT a proleptic TZ string that represent the future predictions for the zone ZPFIRST with ZONECOUNT entries. Return a compatibility indicator (a TZDB release year) if successful, a - negative integer if no such TZ string exissts. */ + negative integer if no such TZ string exists. */ static int stringzone(char *result, struct zone const *zpfirst, ptrdiff_t zonecount) { @@ -3177,8 +3177,7 @@ outzone(const struct zone *zpfirst, ptrdiff_t zonecount) if (noise) { if (!*envvar) warning("%s %s", - _("no POSIX.1-2017 environment variable" - " for zone"), + _("no proleptic TZ string for zone"), zpfirst->z_name); else if (compat != 0) { /* Circa-COMPAT clients, and earlier clients, might @@ -3442,7 +3441,7 @@ outzone(const struct zone *zpfirst, ptrdiff_t zonecount) if (do_extend) { /* ** If we're extending the explicitly listed observations for - ** 400 years because we can't fill the POSIX.1-2017 TZ field, + ** 400 years because we can't fill the proleptic TZ field, ** check whether we actually ended up explicitly listing ** observations through that period. If there aren't any ** near the end of the 400-year period, add a redundant @@ -3627,7 +3626,7 @@ lowerit(char a) } /* case-insensitive equality */ -ATTRIBUTE_REPRODUCIBLE static bool +ATTRIBUTE_PURE_114833 static bool ciequal(register const char *ap, register const char *bp) { while (lowerit(*ap) == lowerit(*bp++)) @@ -3636,7 +3635,7 @@ ciequal(register const char *ap, register const char *bp) return false; } -ATTRIBUTE_REPRODUCIBLE static bool +ATTRIBUTE_PURE_114833 static bool itsabbr(register const char *abbr, register const char *word) { if (lowerit(*abbr) != lowerit(*word)) @@ -3652,7 +3651,7 @@ itsabbr(register const char *abbr, register const char *word) /* Return true if ABBR is an initial prefix of WORD, ignoring ASCII case. */ -ATTRIBUTE_REPRODUCIBLE static bool +ATTRIBUTE_PURE_114833 static bool ciprefix(char const *abbr, char const *word) { do @@ -3762,7 +3761,7 @@ time_overflow(void) exit(EXIT_FAILURE); } -ATTRIBUTE_REPRODUCIBLE static zic_t +ATTRIBUTE_PURE_114833 static zic_t oadd(zic_t t1, zic_t t2) { #ifdef ckd_add @@ -3776,7 +3775,7 @@ oadd(zic_t t1, zic_t t2) time_overflow(); } -ATTRIBUTE_REPRODUCIBLE static zic_t +ATTRIBUTE_PURE_114833 static zic_t tadd(zic_t t1, zic_t t2) { #ifdef ckd_add diff --git a/version.h b/version.h index 1fb72da2a5..3b675229f5 100644 --- a/version.h +++ b/version.h @@ -1,4 +1,4 @@ /* This file just defines the current version number of libc. */ #define RELEASE "development" -#define VERSION "2.39.9000" +#define VERSION "2.40.9000" diff --git a/wcsmbs/Makefile b/wcsmbs/Makefile index 1cddd8cc6d..63adf0e8ef 100644 --- a/wcsmbs/Makefile +++ b/wcsmbs/Makefile @@ -160,6 +160,7 @@ tests := \ test-wcsncmp \ test-wcsncpy \ test-wcsnlen \ + test-wcsnlen-nonarray \ test-wcspbrk \ test-wcsrchr \ test-wcsspn \ @@ -205,6 +206,10 @@ tests := \ wcsmbs-tst1 \ # tests +# This test runs for a long time. +xtests += test-wcsncmp-nonarray + + include ../Rules ifeq ($(run-built-tests),yes) diff --git a/wcsmbs/bits/wchar2.h b/wcsmbs/bits/wchar2.h index 9fdff47ee2..43c6b63027 100644 --- a/wcsmbs/bits/wchar2.h +++ b/wcsmbs/bits/wchar2.h @@ -74,9 +74,9 @@ __fortify_function __attribute_overloadable__ wchar_t * __NTH (wcscpy (__fortify_clang_overload_arg (wchar_t *, __restrict, __dest), const wchar_t *__restrict __src)) { - size_t sz = __glibc_objsize (__dest); - if (sz != (size_t) -1) - return __wcscpy_chk (__dest, __src, sz / sizeof (wchar_t)); + size_t __sz = __glibc_objsize (__dest); + if (__sz != (size_t) -1) + return __wcscpy_chk (__dest, __src, __sz / sizeof (wchar_t)); return __wcscpy_alias (__dest, __src); } @@ -84,9 +84,9 @@ __fortify_function __attribute_overloadable__ wchar_t * __NTH (wcpcpy (__fortify_clang_overload_arg (wchar_t *, __restrict, __dest), const wchar_t *__restrict __src)) { - size_t sz = __glibc_objsize (__dest); - if (sz != (size_t) -1) - return __wcpcpy_chk (__dest, __src, sz / sizeof (wchar_t)); + size_t __sz = __glibc_objsize (__dest); + if (__sz != (size_t) -1) + return __wcpcpy_chk (__dest, __src, __sz / sizeof (wchar_t)); return __wcpcpy_alias (__dest, __src); } @@ -118,9 +118,9 @@ __fortify_function __attribute_overloadable__ wchar_t * __NTH (wcscat (__fortify_clang_overload_arg (wchar_t *, __restrict, __dest), const wchar_t *__restrict __src)) { - size_t sz = __glibc_objsize (__dest); - if (sz != (size_t) -1) - return __wcscat_chk (__dest, __src, sz / sizeof (wchar_t)); + size_t __sz = __glibc_objsize (__dest); + if (__sz != (size_t) -1) + return __wcscat_chk (__dest, __src, __sz / sizeof (wchar_t)); return __wcscat_alias (__dest, __src); } @@ -128,9 +128,9 @@ __fortify_function __attribute_overloadable__ wchar_t * __NTH (wcsncat (__fortify_clang_overload_arg (wchar_t *, __restrict, __dest), const wchar_t *__restrict __src, size_t __n)) { - size_t sz = __glibc_objsize (__dest); - if (sz != (size_t) -1) - return __wcsncat_chk (__dest, __src, __n, sz / sizeof (wchar_t)); + size_t __sz = __glibc_objsize (__dest); + if (__sz != (size_t) -1) + return __wcsncat_chk (__dest, __src, __n, __sz / sizeof (wchar_t)); return __wcsncat_alias (__dest, __src, __n); } @@ -170,10 +170,10 @@ __fortify_function int __NTH (swprintf (wchar_t *__restrict __s, size_t __n, const wchar_t *__restrict __fmt, ...)) { - size_t sz = __glibc_objsize (__s); - if (sz != (size_t) -1 || __USE_FORTIFY_LEVEL > 1) + size_t __sz = __glibc_objsize (__s); + if (__sz != (size_t) -1 || __USE_FORTIFY_LEVEL > 1) return __swprintf_chk (__s, __n, __USE_FORTIFY_LEVEL - 1, - sz / sizeof (wchar_t), __fmt, __va_arg_pack ()); + __sz / sizeof (wchar_t), __fmt, __va_arg_pack ()); return __swprintf_alias (__s, __n, __fmt, __va_arg_pack ()); } #elif __fortify_use_clang @@ -206,10 +206,10 @@ __fortify_function int __NTH (vswprintf (wchar_t *__restrict __s, size_t __n, const wchar_t *__restrict __fmt, __gnuc_va_list __ap)) { - size_t sz = __glibc_objsize (__s); - if (sz != (size_t) -1 || __USE_FORTIFY_LEVEL > 1) + size_t __sz = __glibc_objsize (__s); + if (__sz != (size_t) -1 || __USE_FORTIFY_LEVEL > 1) return __vswprintf_chk (__s, __n, __USE_FORTIFY_LEVEL - 1, - sz / sizeof (wchar_t), __fmt, __ap); + __sz / sizeof (wchar_t), __fmt, __ap); return __vswprintf_alias (__s, __n, __fmt, __ap); } @@ -257,14 +257,14 @@ fgetws (__fortify_clang_overload_arg (wchar_t *, __restrict, __s), int __n, "fgetws called with length bigger " "than size of destination buffer") { - size_t sz = __glibc_objsize (__s); - if (__glibc_safe_or_unknown_len (__n, sizeof (wchar_t), sz)) + size_t __sz = __glibc_objsize (__s); + if (__glibc_safe_or_unknown_len (__n, sizeof (wchar_t), __sz)) return __fgetws_alias (__s, __n, __stream); #if !__fortify_use_clang - if (__glibc_unsafe_len (__n, sizeof (wchar_t), sz)) - return __fgetws_chk_warn (__s, sz / sizeof (wchar_t), __n, __stream); + if (__glibc_unsafe_len (__n, sizeof (wchar_t), __sz)) + return __fgetws_chk_warn (__s, __sz / sizeof (wchar_t), __n, __stream); #endif - return __fgetws_chk (__s, sz / sizeof (wchar_t), __n, __stream); + return __fgetws_chk (__s, __sz / sizeof (wchar_t), __n, __stream); } #ifdef __USE_GNU @@ -275,15 +275,15 @@ fgetws_unlocked (__fortify_clang_overload_arg (wchar_t *, __restrict, __s), "fgetws_unlocked called with length bigger " "than size of destination buffer") { - size_t sz = __glibc_objsize (__s); - if (__glibc_safe_or_unknown_len (__n, sizeof (wchar_t), sz)) + size_t __sz = __glibc_objsize (__s); + if (__glibc_safe_or_unknown_len (__n, sizeof (wchar_t), __sz)) return __fgetws_unlocked_alias (__s, __n, __stream); # if !__fortify_use_clang - if (__glibc_unsafe_len (__n, sizeof (wchar_t), sz)) - return __fgetws_unlocked_chk_warn (__s, sz / sizeof (wchar_t), __n, + if (__glibc_unsafe_len (__n, sizeof (wchar_t), __sz)) + return __fgetws_unlocked_chk_warn (__s, __sz / sizeof (wchar_t), __n, __stream); # endif - return __fgetws_unlocked_chk (__s, sz / sizeof (wchar_t), __n, __stream); + return __fgetws_unlocked_chk (__s, __sz / sizeof (wchar_t), __n, __stream); } #endif diff --git a/wcsmbs/test-wcsncmp-nonarray.c b/wcsmbs/test-wcsncmp-nonarray.c new file mode 100644 index 0000000000..1ad9ebd8fd --- /dev/null +++ b/wcsmbs/test-wcsncmp-nonarray.c @@ -0,0 +1,5 @@ +#include <wchar.h> +#define TEST_IDENTIFIER wcsncmp +#define TEST_NAME "wcsncmp" +typedef wchar_t CHAR; +#include "../string/test-Xncmp-nonarray.c" diff --git a/wcsmbs/test-wcsnlen-nonarray.c b/wcsmbs/test-wcsnlen-nonarray.c new file mode 100644 index 0000000000..a4b21fecd3 --- /dev/null +++ b/wcsmbs/test-wcsnlen-nonarray.c @@ -0,0 +1,5 @@ +#include <wchar.h> +#define TEST_IDENTIFIER wcsnlen +#define TEST_NAME "wcsnlen" +typedef wchar_t CHAR; +#include "../string/test-Xnlen-nonarray.c" |