Joseph Myers [Tue, 10 Mar 2015 17:53:40 +0000 (17:53 +0000)]
Add test for bug 18104.
[BZ #18104]
* math/auto-libm-test-in: Add another test of pow.
* math/auto-libm-test-out: Regenerated.
Adhemerval Zanella [Tue, 10 Mar 2015 13:38:54 +0000 (09:38 -0400)]
powerpc: Fix incorrect results for pow when using FMA
This patch adds no FMA generation for e_pow to avoid precision issues
for powerpc. This fixes BZ#18104.
Joseph Myers [Tue, 10 Mar 2015 00:32:29 +0000 (00:32 +0000)]
soft-fp: Use multiple-include guards.
This patch makes soft-fp headers consistently use multiple-include
guards, something previously done mainly only in the Linux kernel
version. The guard macros aren't the same as those used in the Linux
kernel, but there seems to be enough variation in such guards in Linux
kernel code that hopefully this version will be acceptable there.
Tested for powerpc-nofpu that installed stripped shared libraries are
unchanged by this patch.
* soft-fp/double.h [SOFT_FP_DOUBLE_H]: New multiple-include guard.
* soft-fp/extended.h [SOFT_FP_EXTENDED_H]: Likewise.
* soft-fp/op-1.h [SOFT_FP_OP_1_H]: Likewise.
* soft-fp/op-2.h [SOFT_FP_OP_2_H]: Likewise.
* soft-fp/op-4.h [SOFT_FP_OP_4_H]: Likewise.
* soft-fp/op-8.h [SOFT_FP_OP_8_H]: Likewise.
* soft-fp/op-common.h [SOFT_FP_OP_COMMON_H]: Likewise.
* soft-fp/quad.h [SOFT_FP_QUAD_H]: Likewise.
* soft-fp/single.h [SOFT_FP_SINGLE_H]: Likewise.
* soft-fp/soft-fp.h (SOFT_FP_H): Define to 1 rather than empty.
Add comment on closing #endif.
Paul Pluzhnikov [Mon, 9 Mar 2015 21:41:35 +0000 (14:41 -0700)]
Minor refactoring:
* posix/wordexp.c (CHAR_IN_SET): New macro.
(parse_param): Use it.
Adhemerval Zanella [Mon, 9 Mar 2015 17:26:48 +0000 (13:26 -0400)]
Update powerpc-fpu ULPs.
Paul Pluzhnikov [Mon, 9 Mar 2015 14:22:36 +0000 (07:22 -0700)]
Fix BZ #18043 (c4): buffer-overflow (read past the end) in wordexp/parse_dollars/parse_param
Paul Pluzhnikov [Mon, 9 Mar 2015 04:58:26 +0000 (21:58 -0700)]
Mention BZ #18042 in NEWS.
Paul Pluzhnikov [Mon, 9 Mar 2015 04:55:13 +0000 (21:55 -0700)]
Fix off-by-one which caused BZ #18042 and add a test for it.
Paul Pluzhnikov [Mon, 9 Mar 2015 04:37:31 +0000 (21:37 -0700)]
Refactor wordexp-test.c such that words always ends at the edge of
unreadable page.
This makes it easy to catch overflows, such as BZ #18043 (and BZ #18042).
Paul Pluzhnikov [Sun, 8 Mar 2015 16:46:53 +0000 (09:46 -0700)]
Cleanup: in preparation for fixing BZ #16734, fix memory leaks exposed by
switching fopen()ed streams from mmap to malloc.
Samuel Thibault [Sun, 8 Mar 2015 10:26:57 +0000 (11:26 +0100)]
hurd: Make libc able to call pthread stubs
* sysdeps/mach/hurd/bits/libc-lock.h [_LIBC]: Include
<bits/libc-lockP.h>
Joseph Myers [Sat, 7 Mar 2015 01:39:42 +0000 (01:39 +0000)]
soft-fp: Support conditional zero-initialization in declarations.
In the Linux kernel, some architectures have a single function that
uses different kinds of unpacking and packing depending on the
instruction being emulated, meaning it is not readily visible to the
compiler that variables from _FP_DECL and _FP_FRAC_DECL_* macros are
only used in cases where they were initialized. The existing copy of
soft-fp in the Linux kernel uses zero-initialization to avoid warnings
in this case, so while frowned upon as a warning suppression mechanism
in code built for glibc it seems appropriate to have such
zero-initialization conditional on __KERNEL__. This patch duly adds
it, via a macro _FP_ZERO_INIT that expands to empty for non-kernel
compilations.
Tested for powerpc-nofpu that installed stripped shared libraries are
unchanged by this patch.
* soft-fp/soft-fp.h (_FP_ZERO_INIT): New macro. Define depending
on [__KERNEL__].
* soft-fp/op-1.h (_FP_FRAC_DECL_1): Use _FP_ZERO_INIT.
* soft-fp/op-2.h (_FP_FRAC_DECL_2): Likewise.
* soft-fp/op-common.h (_FP_DECL): Likewise.
H.J. Lu [Fri, 6 Mar 2015 12:55:56 +0000 (04:55 -0800)]
Replace __attribute__((visibility("protected")))
With copy relocation, address of protected data defined in the shared
library may be external. Compiler shouldn't asssume protected data will
be local. But due to
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=65248
__attribute__((visibility("protected"))) doesn't work correctly, we need
to use asm (".protected xxx") instead.
* elf/ifuncdep2.c (global): Replace
__attribute__((visibility("protected"))) with
asm (".protected global").
* elf/ifuncmod1.c (global): Likewise.
* elf/ifuncmod5.c (global): Likewise.
Joseph Myers [Sat, 7 Mar 2015 00:59:56 +0000 (00:59 +0000)]
Fix /* in comment in previous commit.
Joseph Myers [Sat, 7 Mar 2015 00:36:02 +0000 (00:36 +0000)]
soft-fp: Condition sfp-machine.h include path on __KERNEL__.
My Linux kernel patch to update the kernel to current glibc soft-fp
<https://sourceware.org/ml/libc-alpha/2015-02/msg00107.html> still
leaves a few small differences between the two copies of soft-fp.
I think it's desirable to avoid such differences completely if
possible by having one set of sources suitable for use in both places.
To that end, this patch introduces a conditional on __KERNEL__ for the
path by which sfp-machine.h is included.
Tested for powerpc-nofpu that installed stripped shared libraries are
unchanged by this patch.
* soft-fp/soft-fp.h [!_LIBC && __KERNEL__]: Include
<asm/sfp-machine.h> instead of <sfp-machine.h>.
Roland McGrath [Fri, 6 Mar 2015 18:59:15 +0000 (10:59 -0800)]
Document test-wrapper-env-only in INSTALL.
Roland McGrath [Fri, 6 Mar 2015 18:52:53 +0000 (10:52 -0800)]
ChangeLog format
Paul Pluzhnikov [Fri, 6 Mar 2015 17:13:16 +0000 (09:13 -0800)]
Fix BZ #18043: buffer-overflow (read past the end) in wordexp/parse_dollars/parse_param
Vincent Bernat [Fri, 6 Mar 2015 11:01:52 +0000 (12:01 +0100)]
time: ensure failing strptime() tests are reported correctly
Samuel Thibault [Fri, 6 Mar 2015 10:32:24 +0000 (11:32 +0100)]
Fix aio_error thread-safety.
* sysdeps/pthread/aio_error.c: New file
* sysdeps/pthread/aio_misc.c: Remove optimistic comment about
synchronization.
Florian Weimer [Sun, 1 Mar 2015 20:52:15 +0000 (21:52 +0100)]
vfprintf: Define WORK_BUFFER_SIZE
This constant will allow us to refer to the number of elements in
work_buffer across a function call boundary.
Florian Weimer [Sun, 1 Mar 2015 20:47:31 +0000 (21:47 +0100)]
vfprintf: Introduce JUMP_TABLE_BASE_LABEL
This makes the offset handling more explicit and avoids
cross-references between the jump tables.
Florian Weimer [Fri, 6 Mar 2015 09:26:58 +0000 (10:26 +0100)]
vfprintf: Introduce THOUSANDS_SEP_T
This avoids preprocessor conditionals in function declarations.
Rical Jasan [Fri, 6 Mar 2015 05:59:49 +0000 (00:59 -0500)]
manual: complete example in error message documentation
The manual gives "an example showing how to handle failure to open a
file correctly." The example function, open_sesame, uses the
newly-introduced strerror function and errno and
program_invocation_short_name variables. It fails to specify GNU
extensions, however, so attempts to use it in the following way:
int main (void) {open_sesame ("badname");}
fail during compilation with "error: ‘program_invocation_short_name’
undeclared", indicating the example is incomplete. The presence of
"#include"s suggest everything neccesary for the function to work should
be present. For completeness, the example is lacking the following line:
#define _GNU_SOURCE
as the declarations of program_invocation_*name in errno.h are wrapped
in an "#ifdef __USE_GNU" conditional.
The documentation of the variables is also expanded, adding that their
definition lies in errno.h and noting specifically they are GNU
extensions.
Mike Frysinger [Thu, 5 Mar 2015 19:09:50 +0000 (14:09 -0500)]
manual: drop strerror C89 compatibility note
Mentioning systems that are old and don't support C89 is probably
a waste of time nowadays. Drop the note.
Roland McGrath [Thu, 5 Mar 2015 20:58:49 +0000 (12:58 -0800)]
Avoid re-exec-self in bug-setlocale1.
H.J. Lu [Thu, 5 Mar 2015 16:26:21 +0000 (08:26 -0800)]
Replace ELF_RTYPE_CLASS_NOCOPY with ELF_RTYPE_CLASS_COPY
ELF_RTYPE_CLASS_NOCOPY in comments is a typo. It should be
ELF_RTYPE_CLASS_COPY.
[BZ #18082]
* sysdeps/alpha/dl-machine.h (elf_machine_type_class): Replace
ELF_RTYPE_CLASS_NOCOPY with ELF_RTYPE_CLASS_COPY in comments.
* sysdeps/arm/dl-machine.h (elf_machine_type_class): Likewise.
* sysdeps/hppa/dl-machine.h (elf_machine_type_class): Likewise.
* sysdeps/i386/dl-machine.h (elf_machine_type_class): Likewise.
* sysdeps/ia64/dl-machine.h (elf_machine_type_class): Likewise.
* sysdeps/m68k/dl-machine.h (elf_machine_type_class): Likewise.
* sysdeps/microblaze/dl-machine.h (elf_machine_type_class):
Likewise.
* sysdeps/nios2/dl-machine.h (elf_machine_type_class): Likewise.
* sysdeps/powerpc/powerpc32/dl-machine.h (elf_machine_type_class):
Likewise.
* sysdeps/powerpc/powerpc64/dl-machine.h (elf_machine_type_class):
Likewise.
* sysdeps/s390/s390-32/dl-machine.h (elf_machine_type_class):
Likewise.
* sysdeps/s390/s390-64/dl-machine.h (elf_machine_type_class):
Likewise.
* sysdeps/sh/dl-machine.h (elf_machine_type_class): Likewise.
* sysdeps/sparc/sparc32/dl-machine.h (elf_machine_type_class):
Likewise.
* sysdeps/sparc/sparc64/dl-machine.h (elf_machine_type_class):
Likewise.
* sysdeps/tile/dl-machine.h (elf_machine_type_class): Likewise.
* sysdeps/x86_64/dl-machine.h (elf_machine_type_class): Likewise.
Roland McGrath [Thu, 5 Mar 2015 00:11:31 +0000 (16:11 -0800)]
Define ETH_ALEN in generic <netinet/if_ether.h>.
Roland McGrath [Wed, 4 Mar 2015 23:55:38 +0000 (15:55 -0800)]
Split rpcent tests out of tst-netdb.
Roland McGrath [Wed, 4 Mar 2015 23:14:56 +0000 (15:14 -0800)]
Conditionalize some test code for SIGRTMIN, SA_SIGINFO.
Roland McGrath [Wed, 4 Mar 2015 22:11:39 +0000 (14:11 -0800)]
Avoid more C++ tests.
Roland McGrath [Wed, 4 Mar 2015 21:52:45 +0000 (13:52 -0800)]
Avoid C++ tests when the C++ cannot be linked.
Andreas Schwab [Wed, 10 Dec 2014 10:28:51 +0000 (11:28 +0100)]
Don't define __CORRECT_ISO_CPP_STRING_H_PROTO for non-GCC compilers (bug 17631)
The implementation of __CORRECT_ISO_CPP_STRING_H_PROTO requires
support for asm aliases.
Adhemerval Zanella [Wed, 28 Jan 2015 11:10:41 +0000 (06:10 -0500)]
powerpc: Fix inline feraiseexcept, feclearexcept macros
This patch fixes the inline feraiseexcept and feclearexcept macros for
powerpc by casting the input argument to integer before operation on it.
It fixes BZ#17776.
Alan Modra [Fri, 20 Feb 2015 04:53:28 +0000 (15:23 +1030)]
Fix localplt test breakage with new readelf
Since 2014-11-24 binutils git commit
bb4d2ac2, readelf has appended
the symbol version to symbols shown in reloc dumps.
[BZ #16512]
* scripts/localplt.awk: Strip off symbol version.
* NEWS: Mention bug fix.
Roland McGrath [Mon, 2 Mar 2015 23:44:27 +0000 (15:44 -0800)]
Deglobalize internal variables in timer_routines.c.
Joseph Myers [Mon, 2 Mar 2015 23:05:55 +0000 (23:05 +0000)]
Correct __ASSUME_PRLIMIT64 for hppa/microblaze/sh (bug 17779).
__ASSUME_PRLIMIT64 is defined in kernel-features.h for kernels 2.6.36
and later, but hppa, microblaze and sh did not add the prlimit64
syscall until 2.6.37. This patch adds corresponding undefines of
__ASSUME_PRLIMIT64 to those architectures' kernel-features.h files.
(This concludes the kernel-features.h fixes arising out of the review
- limited to macros defined in the architecture-independent
kernel-features.h file - I did in connection with the move to 2.6.32
minimum kernel version. For that subset of macros - I didn't check
any purely architecture-specific macros - I think they are now defined
for the correct kernel versions on each architecture after this
patch.)
[BZ #17779]
* sysdeps/unix/sysv/linux/hppa/kernel-features.h
[__LINUX_KERNEL_VERSION < 0x020625] (__ASSUME_PRLIMIT64):
Undefine.
* sysdeps/unix/sysv/linux/microblaze/kernel-features.h
[__LINUX_KERNEL_VERSION < 0x020625] (__ASSUME_PRLIMIT64):
Likewise.
* sysdeps/unix/sysv/linux/sh/kernel-features.h
[__LINUX_KERNEL_VERSION < 0x020625] (__ASSUME_PRLIMIT64):
Likewise.
Paul Pluzhnikov [Mon, 2 Mar 2015 21:34:22 +0000 (13:34 -0800)]
Fix BZ 18036 buffer overflow (read past end of buffer) in internal_fnmatch
Andreas Schwab [Mon, 2 Mar 2015 14:47:56 +0000 (15:47 +0100)]
Fix parallel build error
Florian Weimer [Mon, 2 Mar 2015 09:07:12 +0000 (10:07 +0100)]
_nss_nis_initgroups_dyn: Return status instead of NSS_STATUS_SUCCESS
Alexandre Oliva [Sat, 28 Feb 2015 01:18:56 +0000 (22:18 -0300)]
Avoid unsafe loc_name type casts with additional variable
for ChangeLog
[BZ #15969]
* locale/findlocale.c (_nl_find_locale): Introduce const
version of loc_name and drop unsafe type casts.
Roland McGrath [Fri, 27 Feb 2015 23:21:03 +0000 (15:21 -0800)]
Convert dlfcn/tststatic2 to use test-skeleton.
H.J. Lu [Fri, 27 Feb 2015 21:56:44 +0000 (13:56 -0800)]
Compile vismain with -fPIE and link with -pie
Protocted symbol in shared library can only be accessed from PIE
or shared library. Linker in binutils 2.26 enforces it. We must
compile vismain with -fPIE and link it with -pie.
[BZ #17711]
* elf/Makefile (tests): Add vismain only if PIE is enabled.
(tests-pie): Add vismain.
(CFLAGS-vismain.c): New.
* elf/vismain.c: Add comments for PIE requirement.
Joseph Myers [Fri, 27 Feb 2015 17:48:37 +0000 (17:48 +0000)]
Fix ldbl-96, ldbl-128ibm atanhl inaccuracy (bug 18046, bug 18047).
The threshold in ldbl-96 atanhl for when to return the argument,
0x1p-28, is a bit too big, and that in ldbl-128ibm atanhl is much too
big (the relevant condition being x^3/3 being < 0.5ulp of x),
resulting in errors a bit above the limits of those considered
acceptable in glibc in the ldbl-96 case, and in large errors in the
ldbl-128ibm case. This patch changes those implementations to use
more appropriate thresholds and adds tests around the thresholds for
various formats.
Tested for x86_64, x86 and powerpc. x86_64 and x86 ulps updated
accordingly.
[BZ #18046]
[BZ #18047]
* sysdeps/ieee754/ldbl-128ibm/e_atanhl.c (__ieee754_atanhl): Use
0x1p-56L as threshold for just returning the argument.
* sysdeps/ieee754/ldbl-96/e_atanhl.c (__ieee754_atanhl): Use
0x1p-32L as threshold for just returning the argument.
* math/auto-libm-test-in: Add more tests of atanh.
* math/auto-libm-test-out: Regenerated.
* sysdeps/i386/fpu/libm-test-ulps: Update.
* sysdeps/x86_64/fpu/libm-test-ulp: Likewise.
Wilco Dijkstra [Fri, 27 Feb 2015 14:44:41 +0000 (14:44 +0000)]
Rather than using a C implementation of memmove, directly call memmove, which
typically has a much faster optimized implementation.
Wilco Dijkstra [Fri, 27 Feb 2015 14:41:46 +0000 (14:41 +0000)]
Rather than using a C implementation of memset, directly call memset, which
typically has a much faster optimized implementation.
John David Anglin [Sun, 10 Aug 2014 14:00:23 +0000 (10:00 -0400)]
hppa: fix __O_SYNC to match the kernel
Joseph Myers [Fri, 27 Feb 2015 01:12:19 +0000 (01:12 +0000)]
Add comment to CSTR macro in k_standard.c.
* sysdeps/ieee754/k_standard.c (CSTR): Add comment.
Joseph Myers [Thu, 26 Feb 2015 22:50:54 +0000 (22:50 +0000)]
Avoid -Wno-write-strings for k_standard.c.
We want to avoid -Wno- options in makefiles as far as possible, by
cleaning up the underlying issues if possible or failing that by using
diagnostic pragmas. This patch eliminates the use of
-Wno-write-strings for sysdeps/ieee754/k_standard.c by using casts in
the source file to cast away const; those casts are encapsulated in a
macro that also deals with the choice of strings for float / double /
long double functions (for which the logic was previously replicated
many times).
Tested for x86_64; the only change to disassembly of installed
stripped shared libraries was a line number in an assertion.
* sysdeps/ieee754/k_standard.c (CSTR): New macro.
(__kernel_standard): Use CSTR macro when setting exc.name.
* sysdeps/ieee754/Makefile [$(subdir) = math]
(CFLAGS-k_standard.c): Remove variable.
Joseph Myers [Thu, 26 Feb 2015 21:49:19 +0000 (21:49 +0000)]
Avoid uninitialized warnings in Bessel functions.
math/Makefile currently has:
# The fdlibm code generates a lot of these warnings but is otherwise clean.
override CFLAGS += -Wno-uninitialized
This is of course undesirable; warnings should be disabled as narrowly
as possible. To remove this override, we need to fix files that
generate such warnings, or put warning-disabling pragmas in them.
This patch does so for Bessel function implementations, one of the
cases that have the warnings if the override is removed. The warnings
arise because functions set pointer variables p and q only for certain
values of the function argument, then use them unconditionally. As
the static functions in question only get called for arguments that
satisfy the last condition in the if/else chain, the natural fix is to
change the last "else if" to just "else", which this patch does. (The
ldbl-128 / ldbl-128ibm implementation of these functions is
substantially different and looks like it already does use "else" in
the last case in the nearest corresponding code.)
Tested for x86_64 and x86.
* sysdeps/ieee754/dbl-64/e_j0.c (pzero): Change last case for
setting p and q from "else if" to "else".
(qzero): Likewise.
* sysdeps/ieee754/dbl-64/e_j1.c (pone): Likewise.
(qone): Likewise.
* sysdeps/ieee754/flt-32/e_j0f.c (pzerof): Likewise.
(qzerof): Likewise.
* sysdeps/ieee754/flt-32/e_j1f.c (ponef): Likewise.
(qonef): Likewise.
* sysdeps/ieee754/ldbl-96/e_j0l.c (pzero): Likewise.
(qzero): Likewise.
* sysdeps/ieee754/ldbl-96/e_j1l.c (pone): Likewise.
(qone): Likewise.
Joseph Myers [Thu, 26 Feb 2015 21:06:34 +0000 (21:06 +0000)]
Fix ldbl-128/ldbl-128ibm acosl inaccuracy (bug 18038, bug 18039).
The ldbl-128 and ldbl-128ibm implementations of acosl have similar
bugs, using a threshold of 0x1p-57L to determine when they just return
pi/2. Since the result pi/2 - asinl (x) is roughly pi/2 - x for small
x, the relevant cut-off is actually x being < 0.5ulp of 1. This patch
fixes the implementations to use that cut-off and adds tests of small
acos arguments.
Tested for powerpc and mips64. Also tested for x86_64 and x86; no
ulps updates needed.
[BZ #18038]
[BZ #18039]
* sysdeps/ieee754/ldbl-128/e_acosl.c (__ieee754_acosl): Only
return pi/2 for arguments below 0x1p-113L.
* sysdeps/ieee754/ldbl-128ibm/e_acosl.c (__ieee754_acosl): Only
return pi/2 for arguments below 0x1p-106L.
* math/auto-libm-test-in: Add more tests of acos.
* math/auto-libm-test-out: Regenerated.
Joseph Myers [Thu, 26 Feb 2015 17:18:54 +0000 (17:18 +0000)]
Fix asin missing underflows (bug 16351).
Similar to various other bugs in this area, some asin implementations
do not raise the underflow exception for subnormal arguments, when the
result is tiny and inexact. This patch forces the exception in a
similar way to previous fixes.
Tested for x86_64, x86, powerpc and mips64.
[BZ #16351]
* sysdeps/i386/fpu/e_asin.S (dbl_min): New object.
(MO): New macro.
(__ieee754_asin): Force underflow exception for results with small
absolute value.
* sysdeps/i386/fpu/e_asinf.S (flt_min): New object.
(MO): New macro.
(__ieee754_asinf): Force underflow exception for results with
small absolute value.
* sysdeps/ieee754/dbl-64/e_asin.c: Include <float.h> and <math.h>.
(__ieee754_asin): Force underflow exception for results with small
absolute value.
* sysdeps/ieee754/flt-32/e_asinf.c: Include <float.h>.
(__ieee754_asinf): Force underflow exception for results with
small absolute value.
* sysdeps/ieee754/ldbl-128/e_asinl.c: Include <float.h>.
(__ieee754_asinl): Force underflow exception for results with
small absolute value.
* sysdeps/ieee754/ldbl-128ibm/e_asinl.c: Include <float.h>.
(__ieee754_asinl): Force underflow exception for results with
small absolute value.
* sysdeps/ieee754/ldbl-96/e_asinl.c: Include <float.h>.
(__ieee754_asinl): Force underflow exception for results with
small absolute value.
* sysdeps/x86_64/fpu/multiarch/e_asin.c [HAVE_FMA4_SUPPORT]:
Include <math.h>.
* math/auto-libm-test-in: Do not mark underflow exceptions as
possibly missing for bug 16351.
* math/auto-libm-test-out: Regenerated.
Joseph Myers [Thu, 26 Feb 2015 15:13:22 +0000 (15:13 +0000)]
Fix ldbl-128ibm logbl near powers of 2 (bug 18030).
The ldbl-128ibm implementation of logbl produces incorrect results
when the high part of the argument is a power of 2 and the low part a
nonzero number with the opposite sign (and so the returned exponent
should be 1 less than that of the high part). For example, logbl
(0x1.ffffffffffffffp1L) returns 2 but should return 1. (This is
similar to (fixed) bug 16740 for frexpl, and (fixed) bug 18029 for
ilogbl.) This patch adds checks for that case.
Tested for powerpc.
[BZ #18030]
* sysdeps/ieee754/ldbl-128ibm/s_logbl.c (__logbl): Adjust exponent
of power of 2 down when low part has opposite sign.
* math/libm-test.inc (logb_test_data): Add more tests.
Andreas Schwab [Thu, 26 Feb 2015 13:55:24 +0000 (14:55 +0100)]
Fix read past end of pattern in fnmatch (bug 18032)
Joseph Myers [Thu, 26 Feb 2015 12:57:21 +0000 (12:57 +0000)]
Fix ldbl-128ibm ilogbl near powers of 2 (bug 18029).
The ldbl-128ibm implementation of ilogbl produces incorrect results
when the high part of the argument is a power of 2 and the low part a
nonzero number with the opposite sign (and so the returned exponent
should be 1 less than that of the high part). For example, ilogbl
(0x1.ffffffffffffffp1L) returns 2 but should return 1. (This is
similar to (fixed) bug 16740 for frexpl, and bug 18030 for logbl.)
This patch adds checks for that case.
Tested for powerpc.
[BZ #18029]
* sysdeps/ieee754/ldbl-128ibm/e_ilogbl.c (__ieee754_ilogbl):
Adjust exponent of power of 2 down when low part has opposite
sign.
* math/libm-test.inc (ilogb_test_data): Add more tests.
Alexandre Oliva [Thu, 26 Feb 2015 05:46:02 +0000 (02:46 -0300)]
Fix constness error just introduced in findlocale.
for ChangeLog
[BZ #15969]
* locale/findlocale.c (_nl_find_locale): Fix constness error in
the previous change.
Alexandre Oliva [Tue, 18 Nov 2014 00:00:58 +0000 (22:00 -0200)]
BZ #15969: search locale archive again after alias expansion
If a locale alias is defined in locale.alias but not in an archive,
and the referenced locale is only present in the archive, setlocale
will fail if given the alias name. This is unintuitive. This patch
fixes it, arranging for the locale archive to be searched again after
alias expansion.
for ChangeLog
[BZ #15969]
* locale/findlocale.c (_nl_find_locale): Retry archive search
after alias expansion.
Roland McGrath [Thu, 26 Feb 2015 00:01:13 +0000 (16:01 -0800)]
Convert tst-iconv3 to use test-skeleton.
Roland McGrath [Wed, 25 Feb 2015 23:55:08 +0000 (15:55 -0800)]
Convert tst-iconv5 to use test-skeleton.
Roland McGrath [Wed, 25 Feb 2015 23:41:31 +0000 (15:41 -0800)]
Don't crash in iconv setup when getcwd fails.
Paul Pluzhnikov [Wed, 25 Feb 2015 21:11:26 +0000 (13:11 -0800)]
Fix minor formatting violation.
Adhemerval Zanella [Wed, 25 Feb 2015 12:49:51 +0000 (07:49 -0500)]
powerpc: Fix memmove static build
This patch fixes the missing "__memcpy_ppc" symbol for memmove-ppc64
object in static builds. Since memcpy ifunc is not enabled in static
mode, the specialized symbols are not provided. The patch changed the
it to just "__memcpy" instead.
Joseph Myers [Wed, 25 Feb 2015 11:13:41 +0000 (11:13 +0000)]
Fix ldbl-128ibm asinhl inaccuracy (bug 18020).
The ldbl-128ibm implementation of asinhl uses cut-offs of 0x1p28 and
0x1p-29 to determine when to use simpler formulas that avoid possible
overflow / underflow. Both those cut-offs are inappropriate for this
format, resulting in large errors. This patch changes the code to use
more appropriate cut-offs of 0x1p56 and 0x1p-56, 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 #18020]
* sysdeps/ieee754/ldbl-128ibm/s_asinhl.c (__asinhl): Use 2**56 and
2**-56 not 2**28 and 2**-29 as thresholds for simpler formulas.
* math/auto-libm-test-in: Add more tests of asinh.
* math/auto-libm-test-out: Regenerated.
* sysdeps/i386/fpu/libm-test-ulps: Update.
* sysdeps/x86_64/fpu/libm-test-ulps: Likewise.
Cong Wang [Wed, 7 Jan 2015 00:13:19 +0000 (16:13 -0800)]
in.h: Coordinate in6_pktinfo and ip6_mtuinfo for kernel and glibc [BZ #15850]
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>
Benno Schulenberg [Sun, 25 Jan 2015 16:12:05 +0000 (17:12 +0100)]
sprof: Make an error message identical to two others, and more accurate.
Kevin Easton [Wed, 25 Feb 2015 04:57:07 +0000 (23:57 -0500)]
Reduce lock contention in __tz_convert() [BZ #16145] (partial fix)
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).
Miroslav Lichvar [Tue, 16 Dec 2014 15:26:14 +0000 (16:26 +0100)]
Update timex.h for ADJ_SETOFFSET.
ADJ_SETOFFSET is a new adjtimex() mode that can be used to precisely
step the clock. It was introduced in kernel 2.6.39.
Joseph Myers [Wed, 25 Feb 2015 00:01:15 +0000 (00:01 +0000)]
Fix ldbl-128ibm acoshl inaccuracy (bug 18019).
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.
Mike Frysinger [Tue, 24 Feb 2015 05:15:41 +0000 (00:15 -0500)]
alloca: fix buf interaction
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]
Joseph Myers [Tue, 24 Feb 2015 17:30:02 +0000 (17:30 +0000)]
Fix x86/x86_64 scalb (qNaN, -Inf) (bug 16783).
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.
Paul Pluzhnikov [Tue, 24 Feb 2015 16:05:34 +0000 (08:05 -0800)]
Fix BZ #17916 - fopen unbounded stack usage for ccs= modes
Eric Rannaud [Tue, 24 Feb 2015 07:42:26 +0000 (13:12 +0530)]
linux: open and openat ignore 'mode' with O_TMPFILE in flags
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.
Siddhesh Poyarekar [Tue, 24 Feb 2015 07:27:26 +0000 (12:57 +0530)]
Skip logging for DNSSEC responses [BZ 14841]
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.
Mike Frysinger [Tue, 24 Feb 2015 05:15:23 +0000 (00:15 -0500)]
add changelog for previous commit
Mike Frysinger [Tue, 24 Feb 2015 05:10:42 +0000 (00:10 -0500)]
hppa: fix build failure with RTLD_PRIVATE_ERRNO
Pull in dl-sysdep.h like every other linux sysdep.h header does when it
wants to use RTLD_PRIVATE_ERRNO.
Alexandre Oliva [Mon, 23 Feb 2015 14:22:37 +0000 (11:22 -0300)]
Amendments to Unicode 7 update.
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>.
H.J. Lu [Mon, 23 Feb 2015 14:28:18 +0000 (06:28 -0800)]
Compile gcrt1.o with -fPIC
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.
Andreas Schwab [Thu, 22 Jan 2015 16:54:21 +0000 (17:54 +0100)]
Fix failure of elf/tst-audit2 when compiled with GCC-5
Paul Pluzhnikov [Sun, 22 Feb 2015 20:01:47 +0000 (12:01 -0800)]
Fix BZ #17269 -- _IO_wstr_overflow integer overflow
Chung-Lin Tang [Sun, 22 Feb 2015 09:05:02 +0000 (01:05 -0800)]
Adjust timeouts for some tests, to accommodate slow processors,
often without FPUs.
Alexandre Oliva [Fri, 20 Feb 2015 22:14:59 +0000 (20:14 -0200)]
Unicode 7.0.0 update; added generator scripts.
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.
Joseph Myers [Fri, 20 Feb 2015 18:07:03 +0000 (18:07 +0000)]
soft-fp: Adjust call to abort for kernel use.
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.
Stefan Liebler [Fri, 20 Feb 2015 09:48:06 +0000 (10:48 +0100)]
s390: Use generic lowlevellock-futex.h
* 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.
Joseph Myers [Thu, 19 Feb 2015 17:18:51 +0000 (17:18 +0000)]
Fix scandir scandirat namespace (bug 17999).
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.
Joseph Myers [Wed, 18 Feb 2015 21:10:49 +0000 (21:10 +0000)]
Fix atan / atan2 missing underflows (bug 15319).
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.
Steve Ellcey [Wed, 18 Feb 2015 18:51:37 +0000 (10:51 -0800)]
2015-02-18 Steve Ellcey <sellcey@imgtec.com>
* sysdeps/unix/sysv/linux/mips/bits/endian.h: Remove.
* sysdeps/mips/bits/endian.h: Fix comments.
Joseph Myers [Wed, 18 Feb 2015 18:47:34 +0000 (18:47 +0000)]
Fix search.h namespace (bug 17996).
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.
Siddhesh Poyarekar [Wed, 18 Feb 2015 05:36:05 +0000 (11:06 +0530)]
Consolidate arena_lookup and arena_lock into a single arena_get
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>
Carlos O'Donell [Wed, 18 Feb 2015 00:25:01 +0000 (19:25 -0500)]
Use alignment macros, pagesize and powerof2.
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.
Joseph Myers [Wed, 18 Feb 2015 00:26:35 +0000 (00:26 +0000)]
Fix posix_spawn getrlimit64 namespace (bug 17991).
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.
Paul Pluzhnikov [Wed, 18 Feb 2015 00:03:41 +0000 (16:03 -0800)]
Cleanup: add missing #include's
* libio/fileops.c: Add missing sys/mman.h
* libio/iopopen.c: Add missing fcntl.h, remove redundant unistd.h
Joseph Myers [Tue, 17 Feb 2015 23:41:27 +0000 (23:41 +0000)]
Refine documentation of libm exceptions goals.
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.
Steve Ellcey [Tue, 17 Feb 2015 21:38:49 +0000 (13:38 -0800)]
2015-02-17 Steve Ellcey <sellcey@imgtec.com>
* sysdeps/mips/memcpy.S: Move R6 PREFETCH_STORE_HINT check.
* sysdeps/mips/memset.S: Ditto.
Steve Ellcey [Tue, 17 Feb 2015 18:04:33 +0000 (10:04 -0800)]
2015-02-17 Steve Ellcey <sellcey@imgtec.com>
* sysdeps/mips/bits/endian.h (__MIPSEL): Use #ifdef instead of #if.
Stefan Liebler [Tue, 17 Feb 2015 07:47:49 +0000 (08:47 +0100)]
S390: Build failure due to nptl/pt-longjmp.c changes.
Torvald Riegel [Wed, 17 Dec 2014 22:08:25 +0000 (23:08 +0100)]
ia64: Remove custom lowlevellock.h
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.
Mike Frysinger [Sun, 15 Feb 2015 05:57:48 +0000 (00:57 -0500)]
ia64: drop custom getpagesize
This is equivalent to the common linux version now, so we can drop it.
Joseph Myers [Tue, 17 Feb 2015 00:41:50 +0000 (00:41 +0000)]
Fix sign of remquo zero remainder in round-downward mode (bug 17987).
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.
Paul Eggert [Mon, 16 Feb 2015 23:31:57 +0000 (15:31 -0800)]
* manual/time.texi (TZ Variable): glibc no longer comes with tzdata.
Problem reported by J William Piggott.
Joseph Myers [Mon, 16 Feb 2015 22:38:28 +0000 (22:38 +0000)]
Fix remquo spurious overflows (bug 17978).
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.