about summary refs log tree commit diff
Commit message (Collapse)AuthorAgeFilesLines
* in.h: Coordinate in6_pktinfo and ip6_mtuinfo for kernel and glibc [BZ #15850]Cong Wang2015-02-253-5/+14
| | | | | | | | Similarly to what we did for in6_addr, we need a macro to guard in6_pktinfo and ip6_mtuinfo too. Cc: Carlos O'Donell <carlos@redhat.com> Signed-off-by: Cong Wang <xiyou.wangcong@gmail.com>
* sprof: Make an error message identical to two others, and more accurate.Benno Schulenberg2015-02-252-1/+5
|
* Reduce lock contention in __tz_convert() [BZ #16145] (partial fix)Kevin Easton2015-02-242-2/+8
| | | | | | | | | | | | This patch is an "easy win" partial fix for BZ #16145, which notes the heavy contention on tzset_lock when multiple threads are converting times with localtime_r(). In __tz_convert(), the lock does not need to be held after __tzfile_compute() / __tz_compute() have been called, so we can move the unlock up. At this point there is still significant work to be done in __offtime(), so we see some improvement (in my testing with 8 cores banging on localtime_r(), ~20% improvement in throughput).
* Update timex.h for ADJ_SETOFFSET.Miroslav Lichvar2015-02-242-2/+9
| | | | | ADJ_SETOFFSET is a new adjtimex() mode that can be used to precisely step the clock. It was introduced in kernel 2.6.39.
* Fix ldbl-128ibm acoshl inaccuracy (bug 18019).Joseph Myers2015-02-257-5/+899
| | | | | | | | | | | | | | | | | | The ldbl-128ibm implementation of acoshl uses a cut-off of 0x1p28 to determine when to use log(x) + log(2) as a formula. That cut-off is too small for this format, resulting in large errors. This patch changes it to a more appropriate cut-off of 0x1p56, adding tests around the cut-offs for various floating-point formats. Tested for powerpc. Also tested for x86_64 and x86 and updated ulps. [BZ #18019] * sysdeps/ieee754/ldbl-128ibm/e_acoshl.c (__ieee754_acoshl): Use 2**56 not 2**28 as threshold for log (2x) formula. * math/auto-libm-test-in: Add more tests of acosh. * math/auto-libm-test-out: Regenerated. * sysdeps/i386/fpu/libm-test-ulps: Update. * sysdeps/x86_64/fpu/libm-test-ulps: Likewise.
* alloca: fix buf interactionMike Frysinger2015-02-242-2/+8
| | | | | | | | | The stack-grows-down case is missing paren around the buf cast. The stack-grows-up case is missing a cast with the buf assignment. This leads to build failures due to -Werror: vfprintf.c: In function '_IO_vfprintf_internal': vfprintf.c:1738:16: error: initialization from incompatible pointer type [-Werror]
* Fix x86/x86_64 scalb (qNaN, -Inf) (bug 16783).Joseph Myers2015-02-247-7/+27
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | Various x86 / x86_64 versions of scalb / scalbf / scalbl produce spurious "invalid" exceptions for (qNaN, -Inf) arguments, because this is wrongly handled like (+/-Inf, -Inf) which *should* raise such an exception. (In fact the NaN case of the code determining whether to quietly return a zero or a NaN for second argument -Inf was accidentally dead since the code had been made to return a NaN with exception.) This patch fixes the code to do the proper test for an infinity as distinct from a NaN. (Since the existing code does nothing to distinguish qNaNs and sNaNs here, this patch doesn't either. If in future we systematically implement proper sNaN semantics following TS 18661-1:2014, there will be lots of bugs to address - Thomas found lots of issues with his patch <https://sourceware.org/ml/libc-ports/2013-04/msg00008.html> to add SNaN tests (which never went in and would now require significant reworking).) Tested for x86_64 and x86. Committed. [BZ #16783] * sysdeps/i386/fpu/e_scalb.S (__ieee754_scalb): Do not handle arguments (NaN, -Inf) the same as (+/-Inf, -Inf). * sysdeps/i386/fpu/e_scalbf.S (__ieee754_scalbf): Likewise. * sysdeps/i386/fpu/e_scalbl.S (__ieee754_scalbl): Likewise. * sysdeps/x86_64/fpu/e_scalbl.S (__ieee754_scalbl): Likewise. * math/libm-test.inc (scalb_test_data): Add more tests.
* Fix BZ #17916 - fopen unbounded stack usage for ccs= modesPaul Pluzhnikov2015-02-244-4/+47
|
* linux: open and openat ignore 'mode' with O_TMPFILE in flagsEric Rannaud2015-02-2420-47/+81
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Both open and openat load their last argument 'mode' lazily, using va_arg() only if O_CREAT is found in oflag. This is wrong, mode is also necessary if O_TMPFILE is in oflag. By chance on x86_64, the problem wasn't evident when using O_TMPFILE with open, as the 3rd argument of open, even when not loaded with va_arg, is left untouched in RDX, where the syscall expects it. However, openat was not so lucky, and O_TMPFILE couldn't be used: mode is the 4th argument, in RCX, but the syscall expects its 4th argument in a different register than the glibc wrapper, in R10. Introduce a macro __OPEN_NEEDS_MODE (oflag) to test if either O_CREAT or O_TMPFILE is set in oflag. Tested on Linux x86_64. [BZ #17523] * io/fcntl.h (__OPEN_NEEDS_MODE): New macro. * io/bits/fcntl2.h (open): Use it. (openat): Likewise. * io/open.c (__libc_open): Likewise. * io/open64.c (__libc_open64): Likewise. * io/open64_2.c (__open64_2): Likewise. * io/open_2.c (__open_2): Likewise. * io/openat.c (__openat): Likewise. * io/openat64.c (__openat64): Likewise. * io/openat64_2.c (__openat64_2): Likewise. * io/openat_2.c (__openat_2): Likewise. * sysdeps/mach/hurd/open.c (__libc_open): Likewise. * sysdeps/mach/hurd/openat.c (__openat): Likewise. * sysdeps/posix/open64.c (__libc_open64): Likewise. * sysdeps/unix/sysv/linux/dl-openat64.c (openat64): Likewise. * sysdeps/unix/sysv/linux/generic/open.c (__libc_open): Likewise. (__open_nocancel): Likewise. * sysdeps/unix/sysv/linux/generic/open64.c (__libc_open64): Likewise. * sysdeps/unix/sysv/linux/open64.c (__libc_open64): Likewise. * sysdeps/unix/sysv/linux/openat.c (__OPENAT): Likewise.
* Skip logging for DNSSEC responses [BZ 14841]Siddhesh Poyarekar2015-02-244-33/+28
| | | | | | | | | | | | | | DNSSEC defines a number of response types that one me expect when the DO bit is set. We don't process any of them, but since we do allow setting the DO bit, skip them without logging an error since it is only a nuisance. Tested on x86_64. [BZ #14841] * resolv/gethnamaddr.c (getanswer): Skip logging if RES_USE_DNSSEC is set. * resolv/nss_dns/dns-host.c (getanswer_r): Likewise.
* add changelog for previous commitMike Frysinger2015-02-241-0/+4
|
* hppa: fix build failure with RTLD_PRIVATE_ERRNOMike Frysinger2015-02-241-0/+3
| | | | | Pull in dl-sysdep.h like every other linux sysdep.h header does when it wants to use RTLD_PRIVATE_ERRNO.
* Amendments to Unicode 7 update.Alexandre Oliva2015-02-238-17/+38
| | | | | | | | | | | | | | | | | | for ChangeLog * include/stdc-predef.h (__STDC_ISO_10646__): Update to 201304L, for Unicode 7. for localedata/ChangeLog * unicode-gen/ctype_compatibility.py: Use date ranges in copyright notice. * unicode-gen/ctype_compatibility_test_cases.py: Likewise. * unicode-gen/gen_unicode_ctype.py: Likewise. * unicode-gen/utf8_compatibility.py: Likewise. * unicode-gen/utf8_gen.py: Likewise. Use upper case for global variables, use tuples for global constant arrays. From Mike FABIAN. Suggested by Mike Frysinger <vapier@gentoo.org>.
* Compile gcrt1.o with -fPICH.J. Lu2015-02-233-4/+22
| | | | | | | | | | | We compile gcrt1.o with -fPIC to support both "gcc -pg" and "gcc -pie -pg". [BZ #17836] * csu/Makefile (extra-objs): Add gmon-start.o if not builing shared library. Add gmon-start.os otherwise. ($(objpfx)g$(start-installed-name)): Use $(objpfx)S% $(objpfx)gmon-start.os if builing shared library. ($(objpfx)g$(static-start-installed-name)): Likewise.
* Fix failure of elf/tst-audit2 when compiled with GCC-5Andreas Schwab2015-02-232-0/+6
|
* Fix BZ #17269 -- _IO_wstr_overflow integer overflowPaul Pluzhnikov2015-02-223-4/+16
|
* Adjust timeouts for some tests, to accommodate slow processors,Chung-Lin Tang2015-02-225-3/+11
| | | | often without FPUs.
* Unicode 7.0.0 update; added generator scripts.Alexandre Oliva2015-02-2016-5382/+53305
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | for localedata/ChangeLog [BZ #17588] [BZ #13064] [BZ #14094] [BZ #17998] * unicode-gen/Makefile: New. * unicode-gen/unicode-license.txt: New, from Unicode. * unicode-gen/UnicodeData.txt: New, from Unicode. * unicode-gen/DerivedCoreProperties.txt: New, from Unicode. * unicode-gen/EastAsianWidth.txt: New, from Unicode. * unicode-gen/gen_unicode_ctype.py: New generator, from Mike FABIAN <mfabian@redhat.com>. * unicode-gen/ctype_compatibility.py: New verifier, from Pravin Satpute <psatpute@redhat.com> and Mike FABIAN. * unicode-gen/ctype_compatibility_test_cases.py: New verifier module, from Mike FABIAN. * unicode-gen/utf8_gen.py: New generator, from Pravin Satpute and Mike FABIAN. * unicode-gen/utf8_compatibility.py: New verifier, from Pravin Satpute and Mike FABIAN. * charmaps/UTF-8: Update. * locales/i18n: Update. * gen-unicode-ctype.c: Remove. * tst-ctype-de_DE.ISO-8859-1.in: Adjust, islower now returns true for ordinal indicators.
* soft-fp: Adjust call to abort for kernel use.Joseph Myers2015-02-202-1/+6
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | soft-fp calls abort in various cases that the code doesn't handle, all cases that should never actually occur for any supported choice of types. Calling an abort function is not appropriate for kernel use, so the Linux kernel redefines abort as a macro in various ways in the ports using this code, typically to "return 0" or similar. One use of abort in soft-fp is inside a comma expression and doesn't work with such a macro. This patch changes it to use a statement expression. Tested for powerpc-nofpu that installed shared libraries are unchanged by this patch. (There are two classes of aborts: those to make control flow visible to the compiler, in default cases of switches over _FP_CLS_COMBINE, which could reasonably change to __builtin_unreachable for glibc but would still need to handle pre-4.5 compilers for kernel use, and those intended to detect any use of soft-fp for combinations of types the code doesn't know how to handle, which could reasonably become link failures if the calls should always be optimized away. But those are separate possible future enhancements.) * soft-fp/op-common.h (_FP_FROM_INT): Wrap call to abort in expression inside statement expression.
* s390: Use generic lowlevellock-futex.hStefan Liebler2015-02-203-325/+60
| | | | | | | | | * sysdeps/unix/sysv/linux/s390/lowlevellock.h: Include <sysdeps/nptl/lowlevellock.h> and remove macros and functions that are now defined there. (SYS_futex): Remove. (lll_compare_and_swap): Remove. * sysdeps/s390/bits/atomic.h (atomic_exchange_acq): Define.
* Fix scandir scandirat namespace (bug 17999).Joseph Myers2015-02-196-6/+24
| | | | | | | | | | | | | | | | | | | | | | | | The POSIX function scandir calls scandirat, which is not a POSIX function. This patch fixes this by making it use __scandirat and making scandirat a weak alias. There are no changes for scandir64 / scandirat64 because those are both _GNU_SOURCE-only functions so no namespace issue arises for them. Tested for x86_64 that the disassembly of installed shared libraries is unchanged by this patch. [BZ #17999] * dirent/scandir.c [!SCANDIR] (SCANDIRAT): Define to __scandirat instead of scandirat. * dirent/scandirat.c [!SCANDIRAT] (SCANDIRAT): Likewise. [!SCANDIRAT] (SCANDIRAT_WEAK_ALIAS): Define. [SCANDIRAT_WEAK_ALIAS] (scandirat): Define as weak alias of __scandirat. * include/dirent.h (scandirat): Do not use libc_hidden_proto. (__scandirat): Declare. Use libc_hidden_proto. * conform/Makefile (test-xfail-POSIX2008/dirent.h/linknamespace): Remove variable. (test-xfail-XOPEN2K8/dirent.h/linknamespace): Likewise.
* Fix atan / atan2 missing underflows (bug 15319).Joseph Myers2015-02-1817-993/+1840
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch fixes bug 15319, missing underflows from atan / atan2 when the result of atan is very close to its small argument (or that of atan2 is very close to the ratio of its arguments, which may be an exact division). The usual approach of doing an underflowing computation if the computed result is subnormal is followed. For 32-bit x86, there are extra complications: the inline __ieee754_atan2 in bits/mathinline.h needs to be disabled for float and double because other libm functions using it generally rely on getting proper underflow exceptions from it, while the out-of-line functions have to remove excess range and precision from the underflowing result so as to return an exact 0 in the case where errno should be set for underflow to 0. (The failures I saw without that are similar to those Carlos reported for other functions, where I haven't seen a response to <https://sourceware.org/ml/libc-alpha/2015-01/msg00485.html> confirming if my diagnosis is correct. Arguably all libm functions with float and double returns should remove excess range and precision, but that's a separate matter.) The x86_64 long double case reported in a comment in bug 15319 is not a bug (it's an argument of LDBL_MIN, and x86_64 is an after-rounding architecture so the correct IEEE result is not to raise underflow in the given rounding mode, in addition to treating the result as an exact LDBL_MIN being within the newly clarified documentation of accuracy goals). I'm presuming that the fpatan instruction can be trusted to raise appropriate exceptions when the (long double) result underflows (after rounding) and so no changes are needed for x86 / x86_64 long double functions here; empirically this is the case for the cases covered in the testsuite, on my system. Tested for x86_64, x86, powerpc and mips64. Only 32-bit x86 needs ulps updates (for the changes to inlines meaning some functions no longer get excess precision from their __ieee754_atan2* calls). [BZ #15319] * sysdeps/i386/fpu/e_atan2.S (dbl_min): New object. (MO): New macro. (__ieee754_atan2): For results with small absolute value, force underflow exception and remove excess range and precision from return value. * sysdeps/i386/fpu/e_atan2f.S (flt_min): New object. (MO): New macro. (__ieee754_atan2f): For results with small absolute value, force underflow exception and remove excess range and precision from return value. * sysdeps/i386/fpu/s_atan.S (dbl_min): New object. (MO): New macro. (__atan): For results with small absolute value, force underflow exception and remove excess range and precision from return value. * sysdeps/i386/fpu/s_atanf.S (flt_min): New object. (MO): New macro. (__atanf): For results with small absolute value, force underflow exception and remove excess range and precision from return value. * sysdeps/ieee754/dbl-64/e_atan2.c: Include <float.h> and <math.h>. (__ieee754_atan2): Force underflow exception for results with small absolute value. * sysdeps/ieee754/dbl-64/s_atan.c: Include <float.h> and <math_private.h>. (atan): Force underflow exception for results with small absolute value. * sysdeps/ieee754/flt-32/s_atanf.c: Include <float.h>. (__atanf): Force underflow exception for results with small absolute value. * sysdeps/ieee754/ldbl-128/s_atanl.c: Include <float.h> and <math.h>. (__atanl): Force underflow exception for results with small absolute value. * sysdeps/ieee754/ldbl-128ibm/s_atanl.c: Include <float.h>. (__atanl): Force underflow exception for results with small absolute value. * sysdeps/x86/fpu/bits/mathinline.h [!__SSE2_MATH__ && !__x86_64__ && __LIBC_INTERNAL_MATH_INLINES] (__ieee754_atan2): Only define inline for long double. * sysdeps/x86_64/fpu/multiarch/e_atan2.c [HAVE_FMA4_SUPPORT || HAVE_AVX_SUPPORT]: Include <math.h>. * math/auto-libm-test-in: Do not mark underflow exceptions as possibly missing for bug 15319. Add more tests of atan2. * math/auto-libm-test-out: Regenerated. * math/libm-test.inc (casin_test_data): Do not mark underflow exceptions as possibly missing for bug 15319. (casinh_test_data): Likewise. * sysdeps/i386/fpu/libm-test-ulps: Update.
* 2015-02-18 Steve Ellcey <sellcey@imgtec.com>Steve Ellcey2015-02-183-17/+8
| | | | | * sysdeps/unix/sysv/linux/mips/bits/endian.h: Remove. * sysdeps/mips/bits/endian.h: Fix comments.
* Fix search.h namespace (bug 17996).Joseph Myers2015-02-186-18/+44
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The implementation of the (XSI POSIX) functions hsearch / hcreate / hdestroy uses hsearch_r / hcreate_r / hdestroy_r, which are not POSIX functions. This patch makes those into weak aliases for __*_r and uses those names for the calls within libc. Tested for x86_64 that the disassembly of installed shared libraries is unchanged by this patch. [BZ #17996] * include/search.h (hcreate_r): Don't use libc_hidden_proto. (hdestroy_r): Likewise. (hsearch_r): Likewise. (__hcreate_r): Declare and use libc_hidden_proto. (__hdestroy_r): Likewise. (__hsearch_r): Likewise. * misc/hsearch.c (hsearch): Call __hsearch_r instead of hsearch_r. (hcreate): Call __hcreate_r instead of hcreate_r. (__hdestroy): Call __hdestroy_r instead of hdestroy_r. * misc/hsearch_r.c (hcreate_r): Rename to __hcreate_r and define as weak alias of __hcreate_r. (hdestroy_r): Rename to __hdestroy_r and define as weak alias of __hdestroy_r. (hsearch_r): Rename to __hsearch_r and define as weak alias of __hsearch_r. * conform/Makefile (test-xfail-XPG3/search.h/linknamespace): Remove variable. (test-xfail-XPG4/search.h/linknamespace): Likewise. (test-xfail-UNIX98/search.h/linknamespace): Likewise. (test-xfail-XOPEN2K/search.h/linknamespace): Likewise. (test-xfail-XOPEN2K8/search.h/linknamespace): Likewise.
* Consolidate arena_lookup and arena_lock into a single arena_getSiddhesh Poyarekar2015-02-182-2/+6
| | | | | | | | | | | | | | | | This seems to have been left behind as an artifact of some old changes and can now be merged. Verified that the only generated code change on x86_64 is that of line numbers in asserts, like so: @@ -27253,7 +27253,7 @@ Disassembly of section .text: 416f09: 48 89 42 20 mov %rax,0x20(%rdx) 416f0d: e9 7e f6 ff ff jmpq 416590 <_int_free+0x230> 416f12: b9 3f 9f 4a 00 mov $0x4a9f3f,%ecx - 416f17: ba d5 0f 00 00 mov $0xfd5,%edx + 416f17: ba d6 0f 00 00 mov $0xfd6,%edx 416f1c: be a8 9b 4a 00 mov $0x4a9ba8,%esi 416f21: bf 6a 9c 4a 00 mov $0x4a9c6a,%edi 416f26: e8 45 e8 ff ff callq 415770 <__malloc_assert>
* Use alignment macros, pagesize and powerof2.Carlos O'Donell2015-02-174-37/+57
| | | | | | | | | | | | | | We are replacing all of the bespoke alignment code with ALIGN_UP, ALIGN_DOWN, PTR_ALIGN_UP, and PTR_ALIGN_DOWN. This cleans up malloc/malloc.c, malloc/arena.c, and elf/dl-reloc.c. It also makes all the code consistently use pagesize, and powerof2 as required. Code size is reduced with the removal of precomputed pagemask, and use of pagesize instead. No measurable difference in performance. No regressions on x86_64.
* Fix posix_spawn getrlimit64 namespace (bug 17991).Joseph Myers2015-02-1811-16/+50
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | posix_spawn (a standard POSIX function) brings in a use of getrlimit64 (not a standard POSIX function). This patch fixes this by using __getrlimit64 and making getrlimit64 a weak alias. This is more complicated than some such changes because of files that define getrlimit64 in their own way using symbol versioning after including the main sysdeps/unix/sysv/linux/getrlimit64.c with a getrlimit macro defined. There are various existing patterns for such cases in glibc; the one I've used here is that a getrlimit64 macro disables the weak_alias / libc_hidden_weak calls, leaving it to the including file to define the getrlimit64 name in whatever way is appropriate. Tested for x86_64 and x86 that installed stripped shared libraries are unchanged by this patch. [BZ #17991] * include/sys/resource.h (__getrlimit64): Declare. Use libc_hidden_proto. * resource/getrlimit64.c (getrlimit64): Rename to __getrlimit64 and define as weak alias of __getrlimit64. Use libc_hidden_weak. * sysdeps/posix/spawni.c (__spawni): Call __getrlimit64 instead of getrlimit64. * sysdeps/unix/sysv/linux/getrlimit64.c (getrlimit64): Rename to __getrlimit64. [!getrlimit64] (getrlimit64): Define as weak alias of __getrlimit64. Use libc_hidden_weak. * sysdeps/unix/sysv/linux/i386/getrlimit64.c (getrlimit64): Define using __getrlimit64 not __new_getrlimit64. (__GI_getrlimit64): Likewise. * sysdeps/unix/sysv/linux/mips/getrlimit64.c (getrlimit64): Likewise. (__GI_getrlimit64): Likewise. (__old_getrlimit64): Use __getrlimit64 not __new_getrlimit64. * sysdeps/unix/sysv/linux/powerpc/powerpc64/syscalls.list (getrlimit): Add __getrlimit64 alias. * sysdeps/unix/sysv/linux/wordsize-64/syscalls.list (getrlimit): Likewise. * conform/Makefile (test-xfail-XOPEN2K/spawn.h/linknamespace): Remove variable. (test-xfail-POSIX2008/spawn.h/linknamespace): Likewise. (test-xfail-XOPEN2K8/spawn.h/linknamespace): Likewise.
* Cleanup: add missing #include'sPaul Pluzhnikov2015-02-173-1/+7
| | | | | * libio/fileops.c: Add missing sys/mman.h * libio/iopopen.c: Add missing fcntl.h, remove redundant unistd.h
* Refine documentation of libm exceptions goals.Joseph Myers2015-02-172-6/+18
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch refines the math.texi documentation of the goals for when libm function raise the inexact and underflow exceptions. The previous text was problematic in some cases around the underflow threshold. * Strictly, it would have meant that if the mathematical result of pow was very slightly below DBL_MIN, for example, it was required to raise the underflow exception; although normally a few ulps error would be OK, if that error meant the computed value was slightly above DBL_MIN it would fail the previously described underflow exception goal. * Similarly, strict IEEE semantics would imply that sin (DBL_MIN), in round-to-nearest mode, underflows on before-rounding but not after-rounding architectures, while returning DBL_MIN; the previous wording would have required an underflow exception, so preventing checks for a result with absolute value below DBL_MIN from being sufficient checks to determine whether the exception is required. (Under the previous wording, checks for a result with absolute value <= DBL_MIN wouldn't have been sufficient either, because in FE_TOWARDZERO mode a result of DBL_MIN definitely does not result from an underflowing infinite-precision result.) * The previous wording about rounding infinite-precision values could be taken to mean all exceptions including "inexact" must be consistent with some such value. That would mean that a result of DBL_MIN in FE_UPWARD mode with "inexact" raised must also have "underflow" raised on before-rounding architectures. Again, that would cause problems for computing a result (possibly with spurious "inexact" exceptions) and then using a rounding-mode-independent test for results with absolute value below DBL_MIN to determine whether an underflow exception must be forced in case the underflows from intermediate computations happened to be exact. By refining the documentation, this patch avoids stating goals for accuracy close to the underflow threshold that were stricter than applied anywhere else, and allows the implementation strategy of: compute a result within a few ulps, taking care to avoid underflows in intermediate computations, then force an underflow exception if that result was subnormal. Only fully-defined functions such as fma need to take greater care about the exact underflow threshold (including its dependence on whether the architecture is before-rounding or after-rounding, and on the rounding mode on after-rounding architectures). (If the rounding mode is changed as part of the computation, it's still necessary to ensure that not just intermediate computations, but the final computation of the result to be returned, do not raise underflow if that result is the least normal value and underflow would be inconsistent with the original rounding mode. Since such code can readily discard exceptions as part of saving and restoring the rounding mode - SET_RESTORE_ROUND_NOEX etc. - I don't think that should be a problem in practice.) * manual/math.texi (Errors in Math Functions): Clarify goals regarding inexact and underflow exceptions.
* 2015-02-17 Steve Ellcey <sellcey@imgtec.com>Steve Ellcey2015-02-173-16/+21
| | | | | * sysdeps/mips/memcpy.S: Move R6 PREFETCH_STORE_HINT check. * sysdeps/mips/memset.S: Ditto.
* 2015-02-17 Steve Ellcey <sellcey@imgtec.com>Steve Ellcey2015-02-172-1/+5
| | | | * sysdeps/mips/bits/endian.h (__MIPSEL): Use #ifdef instead of #if.
* S390: Build failure due to nptl/pt-longjmp.c changes.Stefan Liebler2015-02-172-15/+12
|
* ia64: Remove custom lowlevellock.hTorvald Riegel2015-02-172-317/+4
| | | | | | | | | | | ia64 seems to use the same implementation of low-level locks as the generic Linux lowlevellock.h. The futex syscalls are somewhat different, but Roland thought it shouldn't matter. Note that the futex calls are on the slow path always (except for PI mutexes). Removing the custom low-level lock implementation will make further refactoring easier, for example adding proper error checking to futex operations.
* ia64: drop custom getpagesizeMike Frysinger2015-02-172-38/+4
| | | | This is equivalent to the common linux version now, so we can drop it.
* Fix sign of remquo zero remainder in round-downward mode (bug 17987).Joseph Myers2015-02-179-1/+43
| | | | | | | | | | | | | | | | | | | | | | Various remquo implementations produce a zero remainder with the wrong sign (a zero remainder should always have the sign of the first argument, as specified in IEEE 754) in round-downward mode, resulting from the sign of 0 - 0. This patch checks for zero results and fixes their sign accordingly. Tested for x86_64, x86, mips64 and powerpc. [BZ #17987] * sysdeps/ieee754/dbl-64/s_remquo.c (__remquo): Ensure sign of zero result does not depend on the sign resulting from subtraction. * sysdeps/ieee754/dbl-64/wordsize-64/s_remquo.c (__remquo): Likewise. * sysdeps/ieee754/flt-32/s_remquof.c (__remquof): Likewise. * sysdeps/ieee754/ldbl-128/s_remquol.c (__remquol): Likewise. * sysdeps/ieee754/ldbl-128ibm/s_remquol.c (__remquol): Likewise. * sysdeps/ieee754/ldbl-96/s_remquol.c (__remquol): Likewise. * math/libm-test.inc (remquo_test_data): Add more tests.
* * manual/time.texi (TZ Variable): glibc no longer comes with tzdata.Paul Eggert2015-02-162-1/+7
| | | | Problem reported by J William Piggott.
* Fix remquo spurious overflows (bug 17978).Joseph Myers2015-02-169-13/+78
| | | | | | | | | | | | | | | | | | | | | | | Various remquo implementations, when computing the last three bits of the quotient, have spurious overflows when 4 times the second argument to remquo overflows. These overflows can in turn cause bad results in rounding modes where that overflow results in a finite value. This patch adds tests to avoid the problem multiplications in cases where they would overflow, similar to those that control an earlier multiplication by 8. Tested for x86_64, x86, mips64 and powerpc. [BZ #17978] * sysdeps/ieee754/dbl-64/s_remquo.c (__remquo): Do not form products 4 * y and 2 * y where those would overflow. * sysdeps/ieee754/dbl-64/wordsize-64/s_remquo.c (__remquo): Likewise. * sysdeps/ieee754/flt-32/s_remquof.c (__remquof): Likewise. * sysdeps/ieee754/ldbl-128/s_remquol.c (__remquol): Likewise. * sysdeps/ieee754/ldbl-128ibm/s_remquol.c (__remquol): Likewise. * sysdeps/ieee754/ldbl-96/s_remquol.c (__remquol): Likewise. * math/libm-test.inc (remquo_test_data): Add more tests.
* Fix MIPS _ABIO64 -Werror=undef build.Joseph Myers2015-02-162-0/+6
| | | | | | | | | | | | | | | | I see an error ../sysdeps/mips/memcpy.S:209:68: error: "_ABIO64" is not defined [-Werror=undef] #if defined(_MIPS_SIM) && ((_MIPS_SIM == _ABIO32) || (_MIPS_SIM == _ABIO64)) ^ cc1: some warnings being treated as errors in MIPS builds. This patch arranges for _ABIO64 to be defined with the same value as GCC uses when building for O64 (the ABI itself isn't supported by glibc, but defining the macro seems the simplest way of avoiding the error in code that may be shared with other C libraries). * sysdeps/mips/sgidefs.h [!_ABIO64] (_ABIO64): New macro.
* Fix MIPS _COMPILING_NEWLIB -Werror=undef build.Joseph Myers2015-02-164-3/+8
| | | | | | | | | | | | | | | | | | | | | | I see an error ../sysdeps/mips/strcmp.S:25:7: error: "_COMPILING_NEWLIB" is not defined [-Werror=undef] #elif _COMPILING_NEWLIB ^ cc1: some warnings being treated as errors in MIPS builds. (This is with GCC 4.9; it's possible that the DR#412 change in GCC 5 - see <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=60570> - means that -Wundef diagnostics no longer occur for #elif conditions where a previous group's condition was true, just as with other errors there.) This patch duly adjusts the conditionals to test whether _COMPILING_NEWLIB is defined. * sysdeps/mips/memcpy.S [_COMPILING_NEWLIB]: Change condition to [defined _COMPILING_NEWLIB]. * sysdeps/mips/memset.S [_COMPILING_NEWLIB]: Likewise. * sysdeps/mips/strcmp.S [_COMPILING_NEWLIB]: Likewise.
* Fix MIPS __mips_isa_rev -Werror=undef build.Joseph Myers2015-02-162-1/+6
| | | | | | | | | | | | | | | | | | | | I see an error In file included from ../sysdeps/mips/include/sys/asm.h:20:0, from ../sysdeps/mips/start.S:39: ../sysdeps/mips/sys/asm.h:421:5: error: "__mips_isa_rev" is not defined [-Werror=undef] #if __mips_isa_rev < 6 ^ cc1: some warnings being treated as errors in MIPS builds. As sys/asm.h is an installed header, it seems better to test for !defined __mips_isa_rev here, instead of defining it to 0 as done in sysdeps/unix/mips/sysdep.h, to avoid perturbing any code outside glibc that tests whether __mips_isa_rev is defined; this patch does so. * sysdeps/mips/sys/asm.h [__mips_isa_rev < 6]: Change condition to [!defined __mips_isa_rev || __mips_isa_rev < 6].
* Make error checking effective in nptl/tst-cond25.c.Torvald Riegel2015-02-162-1/+14
|
* ia64: remove fixed page size macros and others [BZ #17792]Matthew Fortune2015-02-153-8/+9
| | | | | | | | | | | | Remove IA64 PAGE_SIZE related macros as PAGE_SIZE is not defined. Also remove macros that are only used for BFD's trad-core support which is not relavant for IA64 according to the thread starting here: https://sourceware.org/ml/libc-ports/2013-11/msg00028.html This patch is neither built nor tested but is equivalent to a MIPS patch for the same fix.
* 2015-02-13 Steve Ellcey <sellcey@imgtec.com>Steve Ellcey2015-02-134-6/+12
| | | | | | * sysdeps/mips/bits/endian.h (__MIPSEB): Use #ifdef instead of #if. * sysdeps/mips/memcpy.S (__MIPSEB): Ditto. * sysdeps/mips/memset.S (__MIPSEB): Ditto.
* Add placeholder c++-types.data and *.abilist files.Roland McGrath2015-02-1312-0/+36
|
* Fix dbl-64/wordsize-64 remquo (bug 17569).Joseph Myers2015-02-134-17/+34
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The dbl-64/wordsize-64 remquo implementation follows similar logic to various other implementations, but where that logic computes some absolute values, it wrongly uses a previously computed bit-pattern for the absolute value of the first argument, where actually it needs the absolute value of the first argument mod 8 times the second. This patch fixes it to compute the correct absolute value. The integer quotient result of remquo is only specified mod 8 (including its sign); architecture-specific versions may well vary in what results they give for higher bits of that result (and indeed bug 17569 gives an example correct result from __builtin_remquo giving 9 for that result, where the particular glibc implementation used in that bug report would give 1 after this fix). Thus, this patch adapts the tests of remquo to test that result only mod 8, to allow for such variation when tests with higher quotient are included. Tested for x86_64 and x86. [BZ #17569] * sysdeps/ieee754/dbl-64/wordsize-64/s_remquo.c (__remquo): Compute absolute value of x as modified by fmod, not original value of x. * math/libm-test.inc (RUN_TEST_ffI_f1): Rename to RUN_TEST_ffI_f1_mod8. Check extra return value mod 8. (RUN_TEST_LOOP_ffI_f1): Rename to RUN_TEST_LOOP_ffI_f1_mod8. Call RUN_TEST_ffI_f1_mod8. (remquo_test_data): Add more tests.
* NPTL: Initializer for .init_array-only configurations.Roland McGrath2015-02-132-0/+27
|
* Fix powerpc software sqrtf (bug 17967).Joseph Myers2015-02-133-12/+20
| | | | | | | | | | | | | | | | | | | Similarly to sqrt in <https://sourceware.org/ml/libc-alpha/2015-02/msg00353.html>, the powerpc sqrtf implementation for when _ARCH_PPCSQ is not defined also relies on a * b + c being contracted into a fused multiply-add. Although this contraction is not explicitly disabled for e_sqrtf.c, it still seems appropriate to make the file explicit about its requirements by using __builtin_fmaf; this patch does so. Furthermore, it turns out that doing so fixes the observed inaccuracy and missing exceptions (that is, that without explicit __builtin_fmaf usage, it was not being compiled as intended). Tested for powerpc32 (hard float). [BZ #17967] * sysdeps/powerpc/fpu/e_sqrtf.c (__slow_ieee754_sqrtf): Use __builtin_fmaf instead of relying on contraction of a * b + c.
* [BZ #17969]J William Piggott2015-02-123-3/+10
| | | | | * manual/time.texi (TZ Variable): The zoneinfo path is /usr/share/zoneinfo.
* Fix powerpc software sqrt (bug 17964).Joseph Myers2015-02-123-16/+25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | As Adhemerval noted in <https://sourceware.org/ml/libc-alpha/2015-01/msg00451.html>, the powerpc sqrt implementation for when _ARCH_PPCSQ is not defined is inaccurate in some cases. The problem is that this code relies on fused multiply-add, and relies on the compiler contracting a * b + c to get a fused operation. But sysdeps/ieee754/dbl-64/Makefile disables contraction for e_sqrt.c, because the implementation in that directory relies on *not* having contracted operations. While it would be possible to arrange makefiles so that an earlier sysdeps directory can disable the setting in sysdeps/ieee754/dbl-64/Makefile, it seems a lot cleaner to make the dependence on fused operations explicit in the .c file. GCC 4.6 introduced support for __builtin_fma on powerpc and other architectures with such instructions, so we can rely on that; this patch duly makes the code use __builtin_fma for all such fused operations. Tested for powerpc32 (hard float). 2015-02-12 Joseph Myers <joseph@codesourcery.com> [BZ #17964] * sysdeps/powerpc/fpu/e_sqrt.c (__slow_ieee754_sqrt): Use __builtin_fma instead of relying on contraction of a * b + c.
* Use -Werror=undef for assembly code.Roland McGrath2015-02-124-9/+14
|