aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2016-06-08Generate new format names in auto-libm-test-outPaul E. Murphy4-307667/+307674
This converts the inclusion macro for each test to use the format specific macro. In addition, the format specifier is removed as it is applied via the LIT() macro which is itself applied when converting the auto inputs and libm-test.inc into libm-test.c.
2016-06-08Remove type specific information from auto-libm-test-inPaul E. Murphy3-2864/+2877
Apply the following sed regexes to auto-libm-test-in in order: s/flt-32/binary32/ s/dbl-64/binary64/ s/ldbl-96-intel/intel96/ s/ldbl-96-m68k/m68k96/ s/ldbl-128ibm/ibm128/ s/ldbl-128/binary128/ and fixup ldbl-96 comment manually.
2016-06-08Remove CHOOSE() macro from libm-tests.incPaul E. Murphy21-39/+73
Use gen-libm-test.pl to generate a list of macros mapping to libm-test-ulps.h as this simplifies adding new types without having to modify a growing number of static headers each time a type is added. This also removes the final usage of the TEST_(DOUBLE|FLOAT|LDOUBLE) macros. Thus, they too are removed.
2016-06-08Apply LIT(x) to floating point literals in libm-test.cPaul E. Murphy3-95/+145
With the exception of the second argument of nexttoward, any suffixes should be stripped from the test input, and the macro LIT(x) should be applied to use the correct suffix for the type being tested. This adds a new argument type "j" to gen-test-libm.pl to signify an argument to a test input which does not require fixup. The test cases of nexttoward have been updated to use this new feature. This applies post-processing to all of the test inputs through gen-libm-test.pl to strip literal suffixes and apply the LIT(x) macro, with one exception stated above. This seems a bit cleaner than tossing the macro onto everything, albeit slightly more obfuscated.
2016-06-08malloc: Correct size computation in realloc for dumped fake mmapped chunksFlorian Weimer2-4/+15
For regular mmapped chunks there are two size fields (hence a reduction by 2 * SIZE_SZ bytes), but for fake chunks, we only have one size field, so we need to subtract SIZE_SZ bytes. This was initially reported as Emacs bug 23726.
2016-06-07Fix i386 atanhl (sNaN) (bug 20219).Joseph Myers3-0/+8
The i386 version of atanhl returns sNaN for sNaN input. This patch fixes it to add NaN arguments to themselves so it returns qNaN in this case. Tested for x86_64 and x86. [BZ #20219] * sysdeps/i386/fpu/e_atanhl.S (__ieee754_atanhl): Add NaN argument to itself. * math/libm-test.inc (atanh_test_data): Add sNaN tests.
2016-06-07Fix i386 asinhl (sNaN) (bug 20218).Joseph Myers3-0/+10
The i386 version of asinhl returns sNaN (without raising any exceptions) for sNaN input. This patch fixes it to add non-finite arguments to themselves, so that "invalid" is raised and qNaN returned. Tested for x86_64 and x86. [BZ #20218] * sysdeps/i386/fpu/s_asinhl.S (__asinhl): Add non-finite argument to itself. * math/libm-test.inc (asinh_test_data): Add sNaN tests.
2016-06-07Check FMA after COMMON_CPUID_INDEX_80000001H.J. Lu2-4/+16
Since the FMA4 bit is in COMMON_CPUID_INDEX_80000001 and FMA4 requires AVX, determine if FMA4 is usable after COMMON_CPUID_INDEX_80000001 is available and if AVX is usable. [BZ #20195] * sysdeps/x86/cpu-features.c (get_common_indeces): Move FMA4 check to ... (init_cpu_features): Here.
2016-06-07Bug 20214: Fix linux/in6.h and netinet/in.h sync.Carlos O'Donell2-5/+26
In: https://sourceware.org/glibc/wiki/Synchronizing_Headers we explain how we synchronize our headers with Linux kernel headers. In order to synchronize with the Linux linux/in6.h and linux/ipv6.h headers we checked for their guard macros and then defined __USE_KERNEL_IPV6_DEFS and conditionalized code on this macro. In upstream kernel 56c176c9 the _UAPI prefix was stripped and this broke our synchronized headers again. We now need to check for _LINUX_IN6_H and _IPV6_H, and keep checking the old versions of the header guard checks for maximum backwards compatibility with older Linux headers (the history is actually a bit muddled here and it appears upstream linus kernel broke this 10 months *before* our fix was ever applied to glibc, but without glibc testing we didn't notice and distro kernels have their own testing to fix this). This patch fixes synchronization with linux/in6.h and with netinet/in.h.
2016-06-06Bug 20198: quick_exit should not call destructors.Carlos O'Donell37-8/+215
In C++11 18.5.12 says "Objects shall not be destroyed as a result of calling quick_exit." In C11 quick_exit is silent about thread object destruction. Therefore to make glibc C++ compliant we do not call any thread local destructors. A new regression test verifies the fix. I will note that C++11 18.5.3 makes it clear that C++ defines additional requirements for _Exit() to prevent it from executing destructors. Given that the point of _Exit() is to terminate the process immediately it makes sense the C and C++ should line up and avoid calling destructors. No failures. New regtest passes.
2016-06-06Fix a typo in comments in memmove-vec-unaligned-erms.SH.J. Lu2-1/+6
* sysdeps/x86_64/multiarch/memmove-vec-unaligned-erms.S: Fix a typo in comments.
2016-06-06Fix dbl-64 asin (sNaN) (bug 20213).Joseph Myers3-1/+10
The dbl-64 version of asin returns sNaN for sNaN arguments. This patch fixes it to add NaN arguments to themselves so that qNaN is returned in this case. Tested for x86_64 and x86. [BZ #20213] * sysdeps/ieee754/dbl-64/e_asin.c (__ieee754_asin): Add NaN argument to itself. * math/libm-test.inc (asin_test_data): Add sNaN tests.
2016-06-06Consolidate pwritev/pwritev64 implementationsAdhemerval Zanella11-199/+155
This patch consolidates all the pwritev{64} implementation for Linux in only one (sysdeps/unix/sysv/linux/pwritev{64}.c). It also removes the syscall from the auto-generation using assembly macros. It was based on previous pwrite/pwrite64 consolidation patch. The new macro SYSCALL_LL{64} is used to handle the offset argument and alias is created for __ASSUME_OFF_DIFF_OFF64 in case of pread64. Checked on x86_64, i386, aarch64, and powerpc64le. * misc/Makefile (CFLAGS-pwritev.c): New variable: add cancellation required flags. (CFLAGS-pwritev64.c): Likewise. * sysdeps/unix/sysv/linux/generic/wordsize-32/pwritev.c: Remove file. * sysdeps/unix/sysv/linux/generic/wordsize-32/pwritev64.c: Likewise. * sysdeps/unix/sysv/linux/mips/mips64/n64/pwritev64.c: Likewise. * sysdeps/unix/sysv/linux/wordsize-64/pwritev.c: Likewise. * sysdeps/unix/sysv/linux/wordsize-64/pwritev64.: Likwise. * sysdeps/unix/sysv/linux/x86_64/x32/syscalls.list (pwritev): Remove syscall from auto-generation. * sysdeps/unix/sysv/linux/pwritev.c: Rewrite implementation. [WORDSIZE == 64] (pwritev64): Remove macro. [!PWRITEV] (PWRITEV): Likewise. [!PWRITEV] (PWRITEV_REPLACEMENT): Likewise. [!PWRITEV] (PWRITE): Likewise. [!PWRITEV] (OFF_T): Likewise. [!__ASSUME_PWRITEV] (PWRITEV_REPLACEMENT): Likewise. (LO_HI_LONG): Remove macro. [__WORDSIZE != 64 || __ASSUME_OFF_DIFF_OFF64] (pwritev): Add function. * sysdeps/unix/sysv/linux/pwritev64.c: Rewrite implementation. (PWRITEV): Remove macro. (PWRITEV_REPLACEMENTE): Likewise. (PWRITE): Likewise. (OFF_T): Likewise. (pwritev64): New function. * nptl/tst-cancel4.c (tf_writev): Add test.
2016-06-06Consolidate preadv/preadv64 implementationAdhemerval Zanella11-200/+155
This patch consolidates all the preadv{64} implementation for Linux in only one (sysdeps/unix/sysv/linux/preadv{64}.c). It also removes the syscall from the auto-generation using assembly macros. It was based on previous pread/pread64 consolidation patch. The new macro SYSCALL_LL{64} is used to handle the offset argument and alias is created for __ASSUME_OFF_DIFF_OFF64 in case of pread64. Checked on x86_64, i386, aarch64, and powerpc64le. * misc/Makefile (CFLAGS-preadv.c): New variable: add cancellation required flags. (CFLAGS-preadv64.c): Likewise. * sysdeps/unix/sysv/linux/generic/wordsize-32/preadv.c: Remove file. * sysdeps/unix/sysv/linux/generic/wordsize-32/preadv64.c: Likewise. * sysdeps/unix/sysv/linux/mips/mips64/n64/preadv64.c: Likewise. * sysdeps/unix/sysv/linux/wordsize-64/preadv.c: Likewise. * sysdeps/unix/sysv/linux/wordsize-64/preadv64.: Likwise. * sysdeps/unix/sysv/linux/x86_64/x32/syscalls.list (preadv): Remove syscall from auto-generation. * sysdeps/unix/sysv/linux/preadv.c: Rewrite implementation. [WORDSIZE == 64] (preadv64): Remove macro. [!PREADV] (PREADV): Likewise. [!PREADV] (PREADV_REPLACEMENT): Likewise. [!PREADV] (PREAD): Likewise. [!PREADV] (OFF_T): Likewise. [!__ASSUME_PREADV] (PREADV_REPLACEMENT): Likewise. (LO_HI_LONG): Remove macro. [__WORDSIZE != 64 || __ASSUME_OFF_DIFF_OFF64] (preadv): Add function. * sysdeps/unix/sysv/linux/preadv64.c: Rewrite implementation. (PREADV): Remove macro. (PREADV_REPLACEMENTE): Likewise. (PREAD): Likewise. (OFF_T): Likewise. (preadv64): New function. * nptl/tst-cancel4.c (tf_preadv): Add test.
2016-06-06Fix dbl-64 acos (sNaN) (bug 20212).Joseph Myers3-1/+10
The dbl-64 version of acos returns sNaN for sNaN arguments. This patch fixes it to add NaN arguments to themselves so that qNaN is returned in this case. Tested for x86_64 and x86. [BZ #20212] * sysdeps/ieee754/dbl-64/e_asin.c (__ieee754_acos): Add NaN argument to itself. * math/libm-test.inc (acos_test_data): Add sNaN tests.
2016-06-06powerpc: Fix --disable-multi-arch build on POWER8Tulio Magno Quites Machado Filho6-6/+42
Add missing symbols of stpncpy and strcasestr when multi-arch is disabled. Fix memset call from strncpy/stpncpy when multi-arch is disabled.
2016-06-06tst-rec-dlopen: Fix build fail due to missing inclusion of string.hStefan Liebler2-0/+5
on S390, I get a compile error for dlfcn/tst-rec-dlopen.c: tst-rec-dlopen.c: In function ‘malloc’: tst-rec-dlopen.c:101:4: error: implicit declaration of function ‘strlen’ [-Werror=implicit-function-declaration] (void) write (STDOUT_FILENO, message, strlen (message)); ^ tst-rec-dlopen.c:101:42: error: incompatible implicit declaration of built-in function ‘strlen’ [-Werror] (void) write (STDOUT_FILENO, message, strlen (message)); ^ tst-rec-dlopen.c:112:42: error: incompatible implicit declaration of built-in function ‘strlen’ [-Werror] (void) write (STDOUT_FILENO, message, strlen (message)); ^ This patch adds the missing "#include <string.h>" for strlen. ChangeLog: * dlfcn/tst-rec-dlopen.c: Include string.h.
2016-06-052016-06-05 Paul Pluzhnikov <ppluzhnikov@google.com>Paul Pluzhnikov3-12/+5
* manual/install.texi: Remove mention of --without-tls * INSTALL: Regenerate.
2016-06-05tst-rec-dlopen: Use interposed malloc instead of hooksFlorian Weimer2-25/+68
This avoids use of the deprecated hook variables.
2016-06-04Use __typeof instead of typeofAndreas Schwab2-1/+5
2016-06-03Fix include/wchar.h for C++Carlos O'Donell2-1/+5
When trying to compile regression tests that use C++ and the threads header you get this failure: In file included from /usr/include/c++/5.3.1/cwchar:44:0, from /usr/include/c++/5.3.1/bits/postypes.h:40, from /usr/include/c++/5.3.1/bits/char_traits.h:40, from /usr/include/c++/5.3.1/string:40, from /usr/include/c++/5.3.1/stdexcept:39, from /usr/include/c++/5.3.1/array:38, from /usr/include/c++/5.3.1/tuple:39, from /usr/include/c++/5.3.1/functional:55, from /usr/include/c++/5.3.1/thread:39, from tst-thread-quick_exit.cc:19: ../include/wchar.h:105:23: error: invalid conversion from ‘wchar_t* (*)(wchar_t*, wchar_t, size_t) throw () {aka wchar_t* (*)(wchar_t*, wchar_t, long unsigned int) throw ()}’ to ‘int’ [-fpermissive] extern typeof (wmemset) __wmemset; ^ ../include/wchar.h:105:25: error: expected ‘,’ or ‘;’ before ‘__wmemset’ extern typeof (wmemset) __wmemset; ^ The simplest fix for C++ is to avoid the use of typeof and just declare the prototype as expected. No regressions on x86_64. Committed as obvious. The include/wchar.h header is only for internal build uses and therefore is not ever seen by any external users and needs no bug #.
2016-06-03Fix x86/x86_64 nextafterl incrementing negative subnormals (bug 20205).Joseph Myers3-1/+14
The x86 / x86_64 implementation of nextafterl (also used for nexttowardl) produces incorrect results (NaNs) when negative subnormals, the low 32 bits of whose mantissa are zero, are incremented towards zero. This patch fixes this by disabling the logic to decrement the exponent in that case. Tested for x86_64 and x86. [BZ #20205] * sysdeps/i386/fpu/s_nextafterl.c (__nextafterl): Do not adjust exponent when incrementing negative subnormal with low mantissa word zero. * math/libm-test.inc (nextafter_test_data) [TEST_COND_intel96]: Add another test.
2016-06-03libio: Use wmemset instead of __wmemset to avoid linknamespace issueFlorian Weimer2-3/+8
If the wide string operations are pulled into the link, the wmemset symbol can cause a linknamespace failure.
2016-06-02Fix macro API for __USE_KERNEL_IPV6_DEFS.Carlos O'Donell3-8/+19
The use of __USE_KERNEL_IPV6_DEFS with ifndef is bad practice per: https://sourceware.org/glibc/wiki/Wundef. This change moves it to use 'if' and always define the macro. Please note that this is not the only problem with this code. I have a series of fixes after this one to resolve breakage with this code and add regression tests for it via compile-only source testing (to be discussed in another thread). Unfortunately __USE_KERNEL_XATTR_DEFS is set by the kernel and not glibc, and uses 'define', so we can't fix that yet.
2016-06-01fork in libpthread cannot use IFUNC resolver [BZ #19861]Florian Weimer2-33/+19
This commit only addresses the fork case, the vfork case has to be a tail call, which is why the generic code needs an IFUNC resolver there.
2016-05-30Merge branch 'master' of ssh://sourceware.org/git/glibcPaul Pluzhnikov4-1/+18
2016-05-302016-05-30 Paul Pluzhnikov <ppluzhnikov@google.com>Paul Pluzhnikov3-84/+6
[BZ 19653] * inet/if_index.c (__protocol_available): Delete #if 0'd code. * inet/ruserpass.c (ruserpass): Delete #if 0'd code.
2016-05-30hurd: disable ifunc for nowSamuel Thibault3-0/+11
* sysdeps/mach/hurd/configure.ac (libc_cv_ld_gnu_indirect_function): Set to no. * sysdeps/mach/hurd/configure: Refresh.
2016-05-30Add more hurd exception to local headers listSamuel Thibault2-1/+7
* scripts/check-local-headers.sh (exclude): Add hurd/ihash.h, and include .*-.*/ in addition to .*-.*-.*/ (i.e. i386-gnu in addition to i386-linux-gnu).
2016-05-30posix: Call _exit in failure case for posix_spawn{p} (BZ#20178)Adhemerval Zanella2-1/+7
This patch call _exit instead of exit in failure case for the spawned child in Linux posix_spawn{p} implementation. Tested on x86_64. [BZ #20178] * sysdeps/unix/sysv/linux/spawni.c (__spawni_child): Call _exit on failure instead of exit.
2016-05-30stpcpy is part of POSIX.1-2008 [BZ #3629]Roland McGrath2-3/+9
2016-05-30hurd: fix _hurd_self_sigstate reference from ____longjmp_chkSamuel Thibault2-1/+11
* sysdeps/mach/hurd/i386/____longjmp_chk.S (____longjmp_chk) [PIC]: Use PLT entry for calling _hurd_self_sigstate.
2016-05-27Count number of logical processors sharing L2 cacheH.J. Lu2-34/+122
For Intel processors, when there are both L2 and L3 caches, SMT level type should be ued to count number of available logical processors sharing L2 cache. If there is only L2 cache, core level type should be used to count number of available logical processors sharing L2 cache. Number of available logical processors sharing L2 cache should be used for non-inclusive L2 and L3 caches. * sysdeps/x86/cacheinfo.c (init_cacheinfo): Count number of available logical processors with SMT level type sharing L2 cache for Intel processors.
2016-05-27Fix powerpc64 ceil, rint etc. on sNaN input (bug 20160).Joseph Myers13-12/+101
The powerpc64 versions of ceil, floor, round, trunc, rint, nearbyint and their float versions return sNaN for sNaN input when they should return qNaN. This patch fixes them to add a NaN argument to itself to quiet sNaNs before returning. Tested for powerpc64. [BZ #20160] * sysdeps/powerpc/powerpc64/fpu/s_ceil.S (__ceil): Add NaN argument to itself before returning the result. * sysdeps/powerpc/powerpc64/fpu/s_ceilf.S (__ceilf): Likewise. * sysdeps/powerpc/powerpc64/fpu/s_floor.S (__floor): Likewise. * sysdeps/powerpc/powerpc64/fpu/s_floorf.S (__floorf): Likewise. * sysdeps/powerpc/powerpc64/fpu/s_nearbyint.S (__nearbyint): Likewise. * sysdeps/powerpc/powerpc64/fpu/s_nearbyintf.S (__nearbyintf): Likewise. * sysdeps/powerpc/powerpc64/fpu/s_rint.S (__rint): Likewise. * sysdeps/powerpc/powerpc64/fpu/s_rintf.S (__rintf): Likewise. * sysdeps/powerpc/powerpc64/fpu/s_round.S (__round): Likewise. * sysdeps/powerpc/powerpc64/fpu/s_roundf.S (__roundf): Likewise. * sysdeps/powerpc/powerpc64/fpu/s_trunc.S (__trunc): Likewise. * sysdeps/powerpc/powerpc64/fpu/s_truncf.S (__truncf): Likewise.
2016-05-27Fix powerpc32 ceil, rint etc. on sNaN input (bug 20160).Joseph Myers13-12/+103
The powerpc32 versions of ceil, floor, round, trunc, rint, nearbyint and their float versions return sNaN for sNaN input when they should return qNaN. This patch fixes them to add a NaN argument to itself to quiet sNaNs before returning. The powerpc64 versions, which have the same bug, will be addressed separately. Tested for powerpc32. [BZ #20160] * sysdeps/powerpc/powerpc32/fpu/s_ceil.S (__ceil): Add NaN argument to itself before returning the result. * sysdeps/powerpc/powerpc32/fpu/s_ceilf.S (__ceilf): Likewise. * sysdeps/powerpc/powerpc32/fpu/s_floor.S (__floor): Likewise. * sysdeps/powerpc/powerpc32/fpu/s_floorf.S (__floorf): Likewise. * sysdeps/powerpc/powerpc32/fpu/s_nearbyint.S (__nearbyint): Likewise. * sysdeps/powerpc/powerpc32/fpu/s_nearbyintf.S (__nearbyintf): Likewise. * sysdeps/powerpc/powerpc32/fpu/s_rint.S (__rint): Likewise. * sysdeps/powerpc/powerpc32/fpu/s_rintf.S (__rintf): Likewise. * sysdeps/powerpc/powerpc32/fpu/s_round.S (__round): Likewise. * sysdeps/powerpc/powerpc32/fpu/s_roundf.S (__roundf): Likewise. * sysdeps/powerpc/powerpc32/fpu/s_trunc.S (__trunc): Likewise. * sysdeps/powerpc/powerpc32/fpu/s_truncf.S (__truncf): Likewise.
2016-05-27Replace M_El with lit_e in libm-test.incPaul E. Murphy2-3/+13
This is useful in situations where the long double type is less precise than the type under test.
2016-05-27Replace M_PI_4l with lit_pi_4_d in libm-test.incPaul E. Murphy2-26/+33
This is useful in situations where the long double type is less precise than the type under test.
2016-05-27Replace M_PIl with lit_pi in libm-test.incPaul E. Murphy2-38/+45
This is useful in situations where the long double type is less precise than the type under test.
2016-05-27Replace M_PI2l with lit_pi_2_d in libm-test.incPaul E. Murphy5-157/+172
This is useful in situations where the long double type is less precise than the type under test. This adds a new wrapper macro LITM(x) to each type to append the proper suffix onto macro constants found in math.h.
2016-05-27Refactor M_ macros defined in libm-test.incPaul E. Murphy2-33/+54
These are local to the test suite. Rename them as a macro starting with lit_pi and a series of postfix operations to give us a constant starting with lit_pi. The lit prefix is intended to enable easy substitutions via gen-test-libm.pl if needed.
2016-05-27Avoid "invalid" exceptions from powerpc fabsl (sNaN) (bug 20157).Joseph Myers3-5/+28
The powerpc implementations of fabsl for ldbl-128ibm (both powerpc32 and powerpc64) wrongly raise the "invalid" exception for sNaN arguments. fabs functions should be quiet for all inputs including signaling NaNs. The problem is the use of a comparison instruction fcmpu to determine if the high part of the argument is negative and so the low part needs to be negated; such instructions raise "invalid" for sNaNs. There is a pure integer implementation of fabsl in sysdeps/ieee754/ldbl-128ibm/s_fabsl.c. However, it's not necessary to use it to avoid such exceptions. The fsel instruction does not raise exceptions for sNaNs, and can be used in place of the original comparison. (Note that if the high part is zero or a NaN, it does not matter whether the low part is negated; the choice of whether the low part of a zero is +0 or -0 does not affect the value, and the low part of a NaN does not affect the value / payload either.) The condition in GCC for fsel to be available is TARGET_PPC_GFXOPT, corresponding to the _ARCH_PPCGR predefined macro. fsel is available on all 64-bit processors supported by GCC. A few 32-bit processors supported by GCC do not have TARGET_PPC_GFXOPT despite having hard float support. To support those processors, integer code (similar to that in copysignl) is included for the !_ARCH_PPCGR case for powerpc32. Tested for powerpc32 (configurations with and without _ARCH_PPCGR) and powerpc64. [BZ #20157] * sysdeps/powerpc/powerpc32/fpu/s_fabsl.S (__fabsl): Use fsel to determine whether to negate low half if [_ARCH_PPCGR], and integer comparison otherwise. * sysdeps/powerpc/powerpc64/fpu/s_fabsl.S (__fabsl): Use fsel to determine whether to negate low half.
2016-05-27Remove unused macros from libm-test.inc.Joseph Myers2-25/+8
This patch removes various no-longer-used macros from libm-test.inc. NO_TEST_INLINE_FLOAT, NO_TEST_INLINE_DOUBLE and M_PI_6l would have been used before relevant tests were moved to auto-libm-test-in. TEST_COND_x86_64 and TEST_COND_x86 were for tests in auto-libm-test-in XFAILed for x86, and are no longer relevant now the bugs in question have been fixed and the XFAILing removed (if future x86-specific XFAILs become needed, they can always be added back). Tested for x86_64 and x86. * math/libm-test.inc (NO_TEST_INLINE_FLOAT): Remove macro. (NO_TEST_INLINE_DOUBLE): Likewise. (TEST_COND_x86_64): Likewise. (TEST_COND_x86): Likewise. (M_PI_6l): Likewise.
2016-05-27Refactor type specific macros using regexesPaul E. Murphy2-343/+343
Replace most of the type specific macros with the equivalent type-generic macro using the following sed replacement command below: sed -ri -e 's/defined TEST_FLOAT/TEST_COND_binary32/' \ -e 's/ndef TEST_FLOAT/ !TEST_COND_binary32/' \ -e 's/def TEST_FLOAT/ TEST_COND_binary32/' \ -e 's/defined TEST_DOUBLE/TEST_COND_binary64/'\ -e 's/ndef TEST_DOUBLE/ !TEST_COND_binary64/' \ -e 's/def TEST_DOUBLE/ TEST_COND_binary64/' \ -e 's/defined TEST_LDOUBLE && //' \ -e 's/ifdef TEST_LDOUBLE/if MANT_DIG >= 64/' \ -e 's/defined TEST_LDOUBLE/MANT_DIG >= 64/' \ -e '/nexttoward_test_data\[\]/,/ };/!s/LDBL_(MIN_EXP|MAX_EXP|MANT_DIG)/\1/g' \ libm-test.inc With a little extra manual cleanup to simplify the following case: #if MANT_DIG >= 64 # if MANT_DIG >= 64 ... # endif ... Note, TEST_LDOUBLE checks are replaced by MANT_DIG >= 64 excepting where another property of the type is being tested. And, the final regex is intended to avoid replacing LDBL_ macro usage within the nexttoward tests which explicitly take argument 2 as long double.
2016-05-27Begin refactor of libm-test.incPaul E. Murphy5-94/+187
Attempt to creatively redefine the macros to choose tests based on the format being tested, not the type. Note, TS 18661 does not define any printf modifiers, so we need to be a little more verbose about constructing strings to output.
2016-05-27Fix ldbl-128ibm ceill, rintl etc. for sNaN arguments (bug 20156).Joseph Myers6-0/+25
The ldbl-128ibm implementations of ceill, floorl, roundl, truncl, rintl and nearbyintl wrongly return an sNaN when given an sNaN argument. This patch fixes them to add such an argument to itself to turn it into a quiet NaN. (The code structure means this "else" case applies to any argument which is zero or not finite; it's OK to do this in all such cases.) Tested for powerpc. [BZ #20156] * sysdeps/ieee754/ldbl-128ibm/s_ceill.c (__ceill): Add high part to itself when zero or not finite. * sysdeps/ieee754/ldbl-128ibm/s_floorl.c (__floorl): Likewise. * sysdeps/ieee754/ldbl-128ibm/s_rintl.c (__rintl): Likewise. * sysdeps/ieee754/ldbl-128ibm/s_roundl.c (__roundl): Likewise. * sysdeps/ieee754/ldbl-128ibm/s_truncl.c (__truncl): Likewise.
2016-05-26Fix ldbl-128ibm sqrtl (sNaN) (bug 20153).Joseph Myers2-5/+7
The ldbl-128ibm implementation of sqrtl wrongly returns an sNaN for signaling NaN arguments. This patch fixes it to quiet its argument, using the same x * x + x return for infinities and NaNs as the dbl-64 implementation uses to ensure that +Inf maps to +Inf while -Inf and NaN map to NaN. Tested for powerpc. [BZ #20153] * sysdeps/ieee754/ldbl-128ibm/e_sqrtl.c (__ieee754_sqrtl): Return x * x + x for infinities and NaNs.
2016-05-26Fix ldbl-128 j0l, j1l, y0l, y1l for sNaN argument (bug 20151).Joseph Myers3-4/+11
The ldbl-128 implementations of j0l, j1l, y0l, y1l (also used for ldbl-128ibm) return an sNaN argument unchanged. This patch fixes them to add a NaN argument to itself to quiet it before return. Tested for mips64. [BZ #20151] * sysdeps/ieee754/ldbl-128/e_j0l.c (__ieee754_j0l): Add NaN argument to itself before returning result. (__ieee754_y0l): Likewise. * sysdeps/ieee754/ldbl-128/e_j1l.c (__ieee754_j1l): Likewise. (__ieee754_y1l).
2016-05-26Add more sNaN tests to libm-test.inc.Joseph Myers2-0/+118
This patch adds more tests of signaling NaN inputs to libm-test.inc. These tests are for a subset of functions with a single floating-point input where no failures appeared in x86_64 or x86 testing. I intend to investigate any failures of these new tests on some other architectures before dealing with other functions. Tested for x86_64 and x86. * math/libm-test.inc (acosh_test_data): Add sNaN tests. (atan_test_data): Likewise. (ceil_test_data): Likewise. (cos_test_data): Likewise. (cosh_test_data): Likewise. (erf_test_data): Likewise. (exp2_test_data): Likewise. (fabs_test_data): Likewise. (floor_test_data): Likewise. (ilogb_test_data): Likewise. (j0_test_data): Likewise. (j1_test_data): Likewise. (jn_test_data): Likewise. (lgamma_test_data): Likewise. (lrint_test_data): Likewise. (llrint_test_data): Likewise. (logb_test_data): Likewise. (lround_test_data): Likewise. (llround_test_data): Likewise. (nearbyint_test_data): Likewise. (rint_test_data): Likewise. (round_test_data): Likewise. (sin_test_data): Likewise. (sincos_test_data): Likewise. (sinh_test_data): Likewise. (sqrt_test_data): Likewise. (tan_test_data): Likewise. (tanh_test_data): Likewise. (tgamma_test_data): Likewise. (trunc_test_data): Likewise. (y0_test_data): Likewise. (y1_test_data): Likewise. (yn_test_data): Likewise.
2016-05-26Support sNaN testing in libm-test.inc.Joseph Myers4-8/+56
This patch adds support in libm-test.inc for tests with signaling NaN arguments. gen-libm-test.pl is made to set a flag TEST_SNAN for such tests, so that they can be disabled automatically when sNaN testing isn't supported for a given type (at present, for float and double on 32-bit x86 because it's unpredictable when a value might be loaded into a floating-point register and so automatically converted to long double with sNaNs converted to quiet NaNs). -fsignaling-nans is used where needed. Tests are added for classification macros, as a starting point; this is deliberately more conservative than Thomas's patch <https://sourceware.org/ml/libc-ports/2013-04/msg00008.html>, to allow more tests to be added, and issues exposed fixed, bit by bit. Tested for x86_64 and x86. * math/libm-test.inc: Update comment about NaN testing. (TEST_SNAN): New macro. (snan_value): Likewise. (enable_test): Disable tests of sNaNs when SNAN_TESTS fails. (fpclassify_test_data): Add sNaN tests. (isfinite_test_data): Likewise. (isinf_test_data): Likewise. (isnan_test_data): Likewise. (isnormal_test_data): Likewise. (issignaling_test_data): Likewise. (signbit_test_data): Likewise. * math/gen-libm-test.pl (%beautify): Add snan_value. (show_exceptions): Add argument $test_snan. (parse_args): Handle snan_value as non-finite. Update call to show_exceptions. * math/Makefile (libm-test-no-inline-cflags): Add -fsignaling-nans.
2016-05-26network: Fix missing bits from {recv,send}{m}msg standard com,plianceAdhemerval Zanella4-3/+12
This patch fixes wrong/missing bits from the Fix {recv,send}{m}msg standard compliance (BZ#16919) patches: * nptl/Makefile sets CFLAGS-oldrecvfrom.c, but there's no such file as oldrecvfrom.c. It should be oldsendmsg.c as defined by ChangeLog. * sysdeps/unix/sysv/linux/hppa/Versions and sysdeps/unix/sysv/linux/i386/Versions list a symbol recvms instead of recvmsg at version GLIBC_2.24. * nptl/Makefile (CFLAGS-oldrecvfrom.c): Remove rule. (CFLAGS-oldsendmsg.c): Add rule. * sysdeps/unix/sysv/linux/hppa/Versions [libc] (GLIBC_2.24): Correct recvmsg symbol name. * sysdeps/unix/sysv/linux/i386/Versions [libc] (GLIBC_2.24): Likewise.