I used these shell commands:
../glibc/scripts/update-copyrights $PWD/../gnulib/build-aux/update-copyright
(cd ../glibc && git commit -am"[this commit message]")
and then ignored the output, which consisted lines saying "FOO: warning:
copyright statement not found" for each of 7061 files FOO.
I then removed trailing white space from math/tgmath.h,
support/tst-support-open-dev-null-range.c, and
sysdeps/x86_64/multiarch/strlen-vec.S, to work around the following
obscure pre-commit check failure diagnostics from Savannah. I don't
know why I run into these diagnostics whereas others evidently do not.
remote: *** 912-#endif
remote: *** 913:
remote: *** 914-
remote: *** error: lines with trailing whitespace found
...
remote: *** error: sysdeps/unix/sysv/linux/statx_cp.c: trailing lines
We stopped adding "Contributed by" or similar lines in sources in 2012
in favour of git logs and keeping the Contributors section of the
glibc manual up to date. Removing these lines makes the license
header a bit more consistent across files and also removes the
possibility of error in attribution when license blocks or files are
copied across since the contributed-by lines don't actually reflect
reality in those cases.
Move all "Contributed by" and similar lines (Written by, Test by,
etc.) into a new file CONTRIBUTED-BY to retain record of these
contributions. These contributors are also mentioned in
manual/contrib.texi, so we just maintain this additional record as a
courtesy to the earlier developers.
The following scripts were used to filter a list of files to edit in
place and to clean up the CONTRIBUTED-BY file respectively. These
were not added to the glibc sources because they're not expected to be
of any use in future given that this is a one time task:
https://gist.github.com/siddhesh/b5ecac94eabfd72ed2916d6d8157e7dchttps://gist.github.com/siddhesh/15ea1f5e435ace9774f485030695ee02
Reviewed-by: Carlos O'Donell <carlos@redhat.com>
I used these shell commands:
../glibc/scripts/update-copyrights $PWD/../gnulib/build-aux/update-copyright
(cd ../glibc && git commit -am"[this commit message]")
and then ignored the output, which consisted lines saying "FOO: warning:
copyright statement not found" for each of 6694 files FOO.
I then removed trailing white space from benchtests/bench-pthread-locks.c
and iconvdata/tst-iconv-big5-hkscs-to-2ucs4.c, to work around this
diagnostic from Savannah:
remote: *** pre-commit check failed ...
remote: *** error: lines with trailing whitespace found
remote: error: hook declined to update refs/heads/master
The ldbl-128ibm implementations of remainderl and remquol have logic
resulting in incorrect tests for equality of the absolute values of
the arguments. Equality is tested based on the integer
representations of the high and low parts, with the sign bit masked
off the high part - but when this changes the sign of the high part,
the sign of the low part needs to be changed as well, and failure to
do this means arguments are wrongly treated as equal when they are
not.
This patch fixes the logic to adjust signs of low parts as needed.
Tested for powerpc.
[BZ #19603]
* sysdeps/ieee754/ldbl-128ibm/e_remainderl.c
(__ieee754_remainderl): Adjust sign of integer version of low part
when taking absolute value of high part.
* sysdeps/ieee754/ldbl-128ibm/s_remquol.c (__remquol): Likewise.
* math/libm-test.inc (remainder_test_data): Add another test.
(remquo_test_data): Likewise.
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.
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.
http://sourceware.org/ml/libc-alpha/2013-08/msg00083.html
Further replacement of ieee854 macros and unions. These files also
have some optimisations for comparison against 0.0L, infinity and nan.
Since the ABI specifies that the high double of an IBM long double
pair is the value rounded to double, a high double of 0.0 means the
low double must also be 0.0. The ABI also says that infinity and
nan are encoded in the high double, with the low double unspecified.
This means that tests for 0.0L, +/-Infinity and +/-NaN need only check
the high double.
* sysdeps/ieee754/ldbl-128ibm/e_atan2l.c (__ieee754_atan2l): Rewrite
all uses of ieee854 long double macros and unions. Simplify tests
for long doubles that are fully specified by the high double.
* sysdeps/ieee754/ldbl-128ibm/e_gammal_r.c (__ieee754_gammal_r):
Likewise.
* sysdeps/ieee754/ldbl-128ibm/e_ilogbl.c (__ieee754_ilogbl): Likewise.
Remove dead code too.
* sysdeps/ieee754/ldbl-128ibm/e_jnl.c (__ieee754_jnl): Likewise.
(__ieee754_ynl): Likewise.
* sysdeps/ieee754/ldbl-128ibm/e_log10l.c (__ieee754_log10l): Likewise.
* sysdeps/ieee754/ldbl-128ibm/e_logl.c (__ieee754_logl): Likewise.
* sysdeps/ieee754/ldbl-128ibm/e_powl.c (__ieee754_powl): Likewise.
Remove dead code too.
* sysdeps/ieee754/ldbl-128ibm/k_tanl.c (__kernel_tanl): Likewise.
* sysdeps/ieee754/ldbl-128ibm/s_expm1l.c (__expm1l): Likewise.
* sysdeps/ieee754/ldbl-128ibm/s_frexpl.c (__frexpl): Likewise.
* sysdeps/ieee754/ldbl-128ibm/s_isinf_nsl.c (__isinf_nsl): Likewise.
Simplify.
* sysdeps/ieee754/ldbl-128ibm/s_isinfl.c (___isinfl): Likewise.
Simplify.
* sysdeps/ieee754/ldbl-128ibm/s_log1pl.c (__log1pl): Likewise.
* sysdeps/ieee754/ldbl-128ibm/s_modfl.c (__modfl): Likewise.
* sysdeps/ieee754/ldbl-128ibm/s_nextafterl.c (__nextafterl): Likewise.
Comment on variable precision.
* sysdeps/ieee754/ldbl-128ibm/s_nexttoward.c (__nexttoward): Likewise.
* sysdeps/ieee754/ldbl-128ibm/s_nexttowardf.c (__nexttowardf):
Likewise.
* sysdeps/ieee754/ldbl-128ibm/s_remquol.c (__remquol): Likewise.
* sysdeps/ieee754/ldbl-128ibm/s_scalblnl.c (__scalblnl): Likewise.
* sysdeps/ieee754/ldbl-128ibm/s_scalbnl.c (__scalbnl): Likewise.
* sysdeps/ieee754/ldbl-128ibm/s_tanhl.c (__tanhl): Likewise.
* sysdeps/powerpc/fpu/libm-test-ulps: Adjust tan_towardzero ulps.
Jakub Jelinek <jakub@redhat.com>
Roland McGrath <roland@redhat.com>
Steven Munroe <sjmunroe@us.ibm.com>
Alan Modra <amodra@bigpond.net.au>
* sysdeps/powerpc/powerpc64/fpu/s_truncf.S: Comment fix.
* sysdeps/powerpc/powerpc32/fpu/s_truncf.S: Likewise.
* sysdeps/powerpc/powerpc64/fpu/s_llroundf.S: Likewise.
* sysdeps/powerpc/fpu/libm-test-ulps: Update.
* math/libm-test.inc (check_float_internal): Allow ulp <= 0.5.
(erfc_test): Don't run erfcl (27.0L) test if erfcl (27.0L) is
denormal.
[TEST_LDOUBLE] (ceil_test, floor_test, llrint_test, llround_test,
rint_test, round_test, trunc_test): Add new tests.
* sysdeps/powerpc/powerpc32/fpu/s_copysignl.S: New file.
* sysdeps/powerpc/powerpc32/fpu/s_fabs.S: New file.
* sysdeps/powerpc/powerpc32/fpu/s_fabsl.S: New file.
* sysdeps/powerpc/powerpc32/fpu/s_fdim.c: New file.
* sysdeps/powerpc/powerpc32/fpu/s_fmax.S: New file.
* sysdeps/powerpc/powerpc32/fpu/s_fmin.S: New file.
* sysdeps/powerpc/powerpc32/fpu/s_isnan.c: New file.
* sysdeps/powerpc/powerpc64/fpu/s_ceill.S: New file.
* sysdeps/powerpc/powerpc64/fpu/s_copysignl.S: New file.
* sysdeps/powerpc/powerpc64/fpu/s_fabs.S: New file.
* sysdeps/powerpc/powerpc64/fpu/s_fabsl.S: New file.
* sysdeps/powerpc/powerpc64/fpu/s_fdim.c: New file.
* sysdeps/powerpc/powerpc64/fpu/s_floorl.S: New file.
* sysdeps/powerpc/powerpc64/fpu/s_fmax.S: New file.
* sysdeps/powerpc/powerpc64/fpu/s_fmin.S: New file.
* sysdeps/powerpc/powerpc64/fpu/s_isnan.c: New file.
* sysdeps/powerpc/powerpc64/fpu/s_llrintl.S: New file.
* sysdeps/powerpc/powerpc64/fpu/s_llroundl.S: New file.
* sysdeps/powerpc/powerpc64/fpu/s_lrintl.S: New file.
* sysdeps/powerpc/powerpc64/fpu/s_lroundl.S: New file.
* sysdeps/powerpc/powerpc64/fpu/s_nearbyintl.S: New file.
* sysdeps/powerpc/powerpc64/fpu/s_rintl.S: New file.
* sysdeps/powerpc/powerpc64/fpu/s_roundl.S: New file.
* sysdeps/powerpc/powerpc64/fpu/s_truncl.S: New file.
* sysdeps/unix/sysv/linux/powerpc/Implies: New file.
* sysdeps/unix/sysv/linux/powerpc/powerpc64/fpu/Implies: New file.
* sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/Implies: New file.
* sysdeps/unix/sysv/linux/powerpc/configure.in: New file.
* sysdeps/unix/sysv/linux/powerpc/configure: New file.
* sysdeps/unix/sysv/linux/powerpc/bits/wordsize.h
(__LONG_DOUBLE_MATH_OPTIONAL): Define.
(__NO_LONG_DOUBLE_MATH): Define.
* sysdeps/unix/sysv/linux/powerpc/nldbl-abi.h: New file.
* sysdeps/powerpc/fpu/s_isnan.c: Include math_ldbl_opt.h.
* sysdeps/powerpc/powerpc64/fpu/s_ceil.S: Include math_ldbl_opt.h.
[LONG_DOUBLE_COMPAT] (ceill): Add compatibility symbols.
* sysdeps/powerpc/powerpc64/fpu/s_copysign.S: Include math_ldbl_opt.h.
[LONG_DOUBLE_COMPAT] (copysignl): Add compatibility symbols.
* sysdeps/powerpc/powerpc64/fpu/s_floor.S: Include math_ldbl_opt.h.
[LONG_DOUBLE_COMPAT] (floorl): Add compatibility symbols.
* sysdeps/powerpc/powerpc64/fpu/s_llrint.S: Include math_ldbl_opt.h.
[LONG_DOUBLE_COMPAT] (llrintl, lrintl): Add compatibility symbols.
* sysdeps/powerpc/powerpc64/fpu/s_llround.S: Include math_ldbl_opt.h.
[LONG_DOUBLE_COMPAT] (llroundl, lroundl): Add compatibility symbols.
* sysdeps/powerpc/powerpc64/fpu/s_rint.S: Include math_ldbl_opt.h.
[LONG_DOUBLE_COMPAT] (rintl): Add compatibility symbols.
* sysdeps/powerpc/powerpc64/fpu/s_round.S: Include math_ldbl_opt.h.
[LONG_DOUBLE_COMPAT] (roundl): Add compatibility symbols.
* sysdeps/powerpc/powerpc64/fpu/s_trunc.S: Include math_ldbl_opt.h.
[LONG_DOUBLE_COMPAT] (truncl): Add compatibility symbols.
* sysdeps/powerpc/powerpc32/fpu/s_ceil.S: Include math_ldbl_opt.h.
[LONG_DOUBLE_COMPAT] (ceill): Add compatibility symbols.
* sysdeps/powerpc/powerpc32/fpu/s_copysign.S: Include math_ldbl_opt.h.
[LONG_DOUBLE_COMPAT] (copysignl): Add compatibility symbols.
* sysdeps/powerpc/powerpc32/fpu/s_floor.S: Include math_ldbl_opt.h.
[LONG_DOUBLE_COMPAT] (floorl): Add compatibility symbols.
* sysdeps/powerpc/powerpc32/fpu/s_lrint.S: Include math_ldbl_opt.h.
[LONG_DOUBLE_COMPAT] (lrintl): Add compatibility symbols.
* sysdeps/powerpc/powerpc32/fpu/s_llrint.c: Include math_ldbl_opt.h.
[LONG_DOUBLE_COMPAT] (llrintl): Add compatibility symbols.
* sysdeps/powerpc/powerpc32/fpu/s_lround.S: Include math_ldbl_opt.h.
[LONG_DOUBLE_COMPAT] (lroundl): Add compatibility symbols.
* sysdeps/powerpc/powerpc32/fpu/s_rint.S: Include math_ldbl_opt.h.
[LONG_DOUBLE_COMPAT] (rintl): Add compatibility symbols.
* sysdeps/powerpc/powerpc32/fpu/s_round.S: Include math_ldbl_opt.h.
[LONG_DOUBLE_COMPAT] (roundl): Add compatibility symbols.
* sysdeps/powerpc/powerpc32/fpu/s_trunc.S: Include math_ldbl_opt.h.
[LONG_DOUBLE_COMPAT] (truncl): Add compatibility symbols.
* misc/qefgcvt_r.c [LDBL_MIN_10_EXP == -291] (FLOAT_MIN_10_NORM): New.
* sysdeps/powerpc/fpu/bits/mathdef.h (__NO_LONG_DOUBLE_MATH): Remove.
* sysdeps/powerpc/Implies: Add ieee754/ldbl-128ibm.
* sysdeps/powerpc/powerpc32/Implies: Remove powerpc/soft-fp.
* sysdeps/ieee754/ldbl-128ibm/Makefile: New file.
* sysdeps/ieee754/ldbl-128ibm/e_acoshl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/e_acosl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/e_asinl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/e_atan2l.c: New file.
* sysdeps/ieee754/ldbl-128ibm/e_atanhl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/e_coshl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/e_expl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/e_fmodl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/e_gammal_r.c: New file.
* sysdeps/ieee754/ldbl-128ibm/e_hypotl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/e_j0l.c: New file.
* sysdeps/ieee754/ldbl-128ibm/e_j1l.c: New file.
* sysdeps/ieee754/ldbl-128ibm/e_jnl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/e_lgammal_r.c: New file.
* sysdeps/ieee754/ldbl-128ibm/e_log10l.c: New file.
* sysdeps/ieee754/ldbl-128ibm/e_log2l.c: New file.
* sysdeps/ieee754/ldbl-128ibm/e_logl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/e_powl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/e_rem_pio2l.c: New file.
* sysdeps/ieee754/ldbl-128ibm/e_remainderl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/e_sinhl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/e_sqrtl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/ieee754.h: New file.
* sysdeps/ieee754/ldbl-128ibm/k_cosl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/k_sincosl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/k_sinl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/k_tanl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/ldbl2mpn.c: New file.
* sysdeps/ieee754/ldbl-128ibm/math_ldbl.h: New file.
* sysdeps/ieee754/ldbl-128ibm/mpn2ldbl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/printf_fphex.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_asinhl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_atanl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_cbrtl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_cosl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_erfl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_expm1l.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_fabsl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_finitel.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_fpclassifyl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_frexpl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_ilogbl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_isinfl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_isnanl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_log1pl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_logbl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_modfl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_nextafterl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_nexttoward.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_nexttowardf.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_remquol.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_rintl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_scalblnl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_scalbnl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_signbitl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_sincosl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_sinl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_tanhl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_tanl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_truncl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/strtold_l.c: New file.
* sysdeps/ieee754/ldbl-128ibm/t_sincosl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/w_expl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_copysignl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_floorl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_llrintl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_llroundl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_roundl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_ceill.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_nearbyintl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_lrintl.c: New file.
* sysdeps/ieee754/ldbl-128ibm/s_lroundl.c: New file.
* sysdeps/ieee754/ldbl-128/e_powl.c: Fix old comment.