aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2016-05-24malloc: Correct malloc alignment on 32-bit architectures [BZ #6527]Florian Weimer3-15/+10
After the heap rewriting added in commit 4cf6c72fd2a482e7499c29162349810029632c3f (malloc: Rewrite dumped heap for compatibility in __malloc_set_state), we can change malloc alignment for new allocations because the alignment of old allocations no longer matters. We need to increase the malloc state version number, so that binaries containing dumped heaps of the new layout will not try to run on previous versions of glibc, resulting in obscure crashes. This commit addresses a failure of tst-malloc-thread-fail on the affected architectures (32-bit ppc and mips) because the test checks pointer alignment.
2016-05-23Refactor tst-strtod6.cPaul E. Murphy2-65/+41
Use the type-generic macros in tst-strtod.h to simplify this test case and enable extension to future variants of this functions.
2016-05-23Refactor bug-strtod2.c to be type genericPaul E. Murphy2-18/+35
This only tested for strtod. This expands the testing to all variants of strto*.
2016-05-23Refactor bug-strtod.c to better test new types.Paul E. Murphy3-65/+96
This introduces tst-strtod.h to contain some macros to assist with updating strto{f,d,ld} test code to support additional variants of this function.
2016-05-23CVE-2016-4429: sunrpc: Do not use alloca in clntudp_call [BZ #20112]Florian Weimer3-1/+20
The call is technically in a loop, and under certain circumstances (which are quite difficult to reproduce in a test case), alloca can be invoked repeatedly during a single call to clntudp_call. As a result, the available stack space can be exhausted (even though individual alloca sizes are bounded implicitly by what can fit into a UDP packet, as a side effect of the earlier successful send operation).
2016-05-23Make padding in struct sockaddr_storage explicit [BZ #20111]Florian Weimer9-15/+213
This avoids aliasing issues with GCC 6 in -fno-strict-aliasing mode. (With implicit padding, not all data is copied.) This change makes it explicit that struct sockaddr_storage is only 126 bytes large on m68k (unlike elsewhere, where we end up with the requested 128 bytes). The new test case makes sure that this does not happen on other architectures.
2016-05-23conformtest: Correct some limits.h expectations for XPG3, XPG4.Joseph Myers3-4/+16
The conform/ test of limits.h namespace for XPG3 was failing because of NL_* and NZERO defines. Those symbols are EX-shaded, not UX-shaded, so it's correct for them to be defined for XPG3; this patch corrects the expectations accordingly. (Actually it looks like they should not be listed as optional for these standards, but that's another matter.) Tested for x86_64 and x86. * conform/data/limits.h-data (CHARCLASS_NAME_MAX): Also expect for [XPG3 || XPG4]. (NL_ARGMAX): Also expect for [XPG3]. (NL_LANGMAX): Likewise. (NL_MSGMAX): Likewise. (NL_NMAX): Likewise. (NL_SETMAX): Likewise. (NL_TEXTMAX): Likewise. (NZERO): Likewise. (TMP_MAX): Likewise. * conform/Makefile (test-xfail-XPG3/limits.h/conform): Remove variable.
2016-05-23Update sysdeps/unix/sysv/linux/bits/socket.h for Linux 4.6.Joseph Myers2-1/+42
This patch updates sysdeps/unix/sysv/linux/bits/socket.h for new constants added in Linux 4.6. AF_KCM / PF_KCM are added. SOL_KCM is new, and I added a lot of SOL_* values postdating the last one present in the header, since I saw no apparent reason for the set in glibc to stop at SOL_IRDA. MSG_BATCH is added; Linux also has MSG_SENDPAGE_NOTLAST which is not in glibc, but given the comment starts "sendpage() internal" I presume it's correct for it not to be in glibc. (Note that this is a case where the Linux kernel header with userspace relevant values is *not* a uapi header but include/linux/socket.h - I don't know why, but at least this header, as well as uapi headers, needs reviewing for glibc-relevant changes each release.) Tested for x86_64 and x86 (testsuite, and that installed stripped shared libraries are unchanged by the patch). * sysdeps/unix/sysv/linux/bits/socket.h (PF_KCM): New macro. (PF_MAX): Update value. (AF_KCM): New macro. (SOL_NETBEUI): Likewise. (SOL_LLC): Likewise. (SOL_DCCP): Likewise. (SOL_NETLINK): Likewise. (SOL_TIPC): Likewise. (SOL_RXRPC): Likewise. (SOL_PPPOL2TP): Likewise. (SOL_BLUETOOTH): Likewise. (SOL_PNPIPE): Likewise. (SOL_RDS): Likewise. (SOL_IUCV): Likewise. (SOL_CAIF): Likewise. (SOL_ALG): Likewise. (SOL_NFC): Likewise. (SOL_KCM): Likewise. (MSG_BATCH): New enum value and macro.
2016-05-20Remove special L2 cache case for Knights LandingH.J. Lu2-2/+6
L2 cache is shared by 2 cores on Knights Landing, which has 4 threads per core: https://en.wikipedia.org/wiki/Xeon_Phi#Knights_Landing So L2 cache is shared by 8 threads on Knights Landing as reported by CPUID. We should remove special L2 cache case for Knights Landing. [BZ #18185] * sysdeps/x86/cacheinfo.c (init_cacheinfo): Don't limit threads sharing L2 cache to 2 for Knights Landing.
2016-05-20conformtest: Correct ftw.h expectations for XPG3, XPG4.Joseph Myers3-1/+23
This patch corrects various conformtest expectations in ftw.h for XPG3 and XPG4. Tested for x86_64 and x86. * conform/data/ftw.h-data (struct FTW): Do not expect for [XPG3]. (FTW_DP): Do not expect for [XPG3 || XPG4]. (FTW_SL): Do not expect for [XPG3]. (FTW_SLN): Likewise. (FTW_PHYS): Likewise. (FTW_MOUNT): Likewise. (FTW_DEPTH): Likewise. (FTW_CHDIR): Likewise. (nftw): Likewise. * conform/Makefile (test-xfail-XPG3/ftw.h/conform): Remove variable.
2016-05-19manual: fix typos in error reportingricaljasan@pacific.net2-11/+15
2016-05-19manual: fix typo in the introductionricaljasan@pacific.net2-1/+5
2016-05-19Implement proper fmal for ldbl-128ibm (bug 13304).Joseph Myers4-6148/+6404
ldbl-128ibm had an implementation of fmal that just did (x * y) + z in most cases, with no attempt at actually being a fused operation. This patch replaces it with a genuine fused operation. It is not necessarily correctly rounding, but should produce a result at least as accurate as the long double arithmetic operations in libgcc, which I think is all that can reasonably be expected for such a non-IEEE format where arithmetic is approximate rather than rounded according to any particular rule for determining the exact result. Like the libgcc arithmetic, it may produce spurious overflow and underflow results, and it falls back to the libgcc multiplication in the case of (finite, finite, zero). This concludes the fixes for bug 13304; any subsequently found fma issues should go in separate Bugzilla bugs. Various other pieces of bug 13304 were fixed in past releases over the past several years. Tested for powerpc. [BZ #13304] * sysdeps/ieee754/ldbl-128ibm/s_fmal.c: Include <fenv.h>, <float.h>, <math_private.h> and <stdlib.h>. (add_split): New function. (mul_split): Likewise. (ext_val): New typedef. (store_ext_val): New function. (mul_ext_val): New function. (compare): New function. (add_split_ext): New function. (__fmal): After checking for Inf, NaN and zero, compute result as an exact sum of scaled double values in round-to-nearest before adding those up and adjusting for other rounding modes. * math/auto-libm-test-in: Remove xfail-rounding:ldbl-128ibm from tests of fma. * math/auto-libm-test-out: Regenerated.
2016-05-19Correct Intel processor level type mask from CPUIDH.J. Lu2-1/+7
Intel CPUID with EAX == 11 returns: ECX Bits 07 - 00: Level number. Same value in ECX input. Bits 15 - 08: Level type. ^^^^^^^^^^^^^^^^^^^^^^^^ This is level type. Bits 31 - 16: Reserved. Intel processor level type mask should be 0xff00, not 0xff0. [BZ #20119] * sysdeps/x86/cacheinfo.c (init_cacheinfo): Correct Intel processor level type mask for CPUID with EAX == 11.
2016-05-19Check the HTT bit before counting logical threadsH.J. Lu3-76/+93
Skip counting logical threads for Intel processors if the HTT bit is 0 which indicates there is only a single logical processor. * sysdeps/x86/cacheinfo.c (init_cacheinfo): Skip counting logical threads if the HTT bit is 0. * sysdeps/x86/cpu-features.h (bit_cpu_HTT): New. (index_cpu_HTT): Likewise. (reg_HTT): Likewise.
2016-05-19Remove alignments on jump targets in memsetH.J. Lu2-32/+11
X86-64 memset-vec-unaligned-erms.S aligns many jump targets, which increases code sizes, but not necessarily improve performance. As memset benchtest data of align vs no align on various Intel and AMD processors https://sourceware.org/bugzilla/attachment.cgi?id=9277 shows that aligning jump targets isn't necessary. [BZ #20115] * sysdeps/x86_64/multiarch/memset-vec-unaligned-erms.S (__memset): Remove alignments on jump targets.
2016-05-19conformtest: Correct pwd.h expectations for XPG3.Joseph Myers3-2/+7
This patch corrects some conformtest expectations for pwd.h for XPG4. Tested for x86_64 and x86. * conform/data/pwd.h-data (endpwent): Do not expect for [XPG3]. (getpwent): Likewise. (setpwent): Likewise. * conform/Makefile (test-xfail-XPG3/pwd.h/conform): Remove variable.
2016-05-19conformtest: Correct search.h expectations for XPG3.Joseph Myers3-1/+11
This patch corrects some conformtest expectations for search.h for XPG3. Tested for x86_64 and x86. * conform/data/search.h-data (insque): Do not expect for [XPG3]. (remque): Likewise. * conform/Makefile (test-xfail-XPG3/search.h/conform): Remove variable.
2016-05-18Update libm-test.inc comment about NaN signs.Joseph Myers2-2/+6
libm-test.inc has a comment about signs of NaNs not being tested. This is out of date since: commit ce66581742e7ae1d6ce59e5d2d4859b2ae41218c Author: Joseph Myers <joseph@codesourcery.com> Date: Sat Nov 16 12:48:35 2013 +0000 Test signs of NaNs in libm-test.inc where appropriate. This patch removes the inaccurate statement. * math/libm-test.inc: Update comment not to refer to signs of NaNs not being tested.
2016-05-18Don't call internal _Unwind_Resume via PLTH.J. Lu3-2/+10
There is no need to call the internal funtion, _Unwind_Resume, which is defined in unwind-forcedunwind.c, via PLT. * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S (__condvar_cleanup2): Remove JUMPTARGET from _Unwind_Resume call. * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S (__condvar_cleanup1): Likewise.
2016-05-18Don't call internal __pthread_unwind via PLTH.J. Lu2-2/+13
Add PTHREAD_UNWIND to replace JUMPTARGET(__pthread_unwind) and define it to __GI___pthread_unwind within libpthread. * sysdeps/unix/sysv/linux/x86_64/cancellation.S (PTHREAD_UNWIND): New (__pthread_unwind): Renamed to ... (PTHREAD_UNWIND): This. (__pthread_enable_asynccancel): Replace JUMPTARGET(__pthread_unwind) with PTHREAD_UNWIND.
2016-05-18Add CLONE_NEWCGROUP from Linux 4.6 to bits/sched.h.Joseph Myers2-0/+4
This patch adds CLONE_NEWCGROUP, new in Linux 4.6, to sysdeps/unix/sysv/linux/bits/sched.h. Tested for x86_64 and x86 (testsuite, and that installed stripped shared libraries are unchanged by the patch). * sysdeps/unix/sysv/linux/bits/sched.h [__USE_GNU] (CLONE_NEWCGROUP): New macro.
2016-05-18Add Q_GETNEXTQUOTA from Linux 4.6 to sys/quota.h.Joseph Myers2-0/+6
This patch adds Q_GETNEXTQUOTA, new in Linux 4.6, to sysdeps/unix/sysv/linux/sys/quota.h. Tested for x86_64 and x86 (testsuite, and that installed shared libraries are unchanged by the patch). * sysdeps/unix/sysv/linux/sys/quota.h [_LINUX_QUOTA_VERSION >= 2] (Q_GETNEXTQUOTA): New macro.
2016-05-18Clear destination buffer updated by the previous runH.J. Lu5-0/+21
Clear the destination buffer updated by the previous run in bench-memcpy.c and test-memcpy.c to catch the error when the following implementations do not copy anything. [BZ #19907] * benchtests/bench-memcpy.c (do_one_test): Clear the destination buffer updated by the previous run. * string/test-memcpy.c (do_one_test): Likewise. * benchtests/bench-memmove.c (do_one_test): Add a comment. * string/test-memmove.c (do_one_test): Likewise.
2016-05-17Do not declare grantpt, ptsname, unlockpt in stdlib.h for XPG3 (bug 20094).Joseph Myers3-2/+9
stdlib.h declares grantpt, ptsname, unlockpt for __USE_XOPEN. This patch corrects the condition to __USE_XOPEN_EXTENDED (these functions are new in XPG4). Tested for x86_64 and x86 (testsuite, and that installed shared libraries are unchanged by the patch). [BZ #20094] * stdlib/stdlib.h (grantpt): Declare if [__USE_XOPEN_EXTENDED], not [__USE_XOPEN]. (unlockpt): Likewise. (ptsname): Likewise. * conform/Makefile (test-xfail-XPG3/stdlib.h/conform): Remove variable.
2016-05-17Make sys/stat.h define S_IFSOCK, S_ISSOCK for XPG4 (bug 20076).Joseph Myers3-3/+9
sys/stat.h should define S_IFSOCK and S_ISSOCK for XPG4 (XNS), but does not. This patch corrects the relevant header conditionals. Tested for x86_64 and x86 (testsuite, and that installed shared libraries are unchanged by the patch). [BZ #20076] * io/sys/stat.h (S_IFSOCK): Define for [__USE_XOPEN_EXTENDED] instead of [__USE_UNIX98]. (S_ISSOCK): Likewise. * conform/Makefile (test-xfail-XPG4/sys/stat.h/conform): Remove variable.
2016-05-17Fix stdlib.h rand_r namespace (bug 20074).Joseph Myers3-2/+7
stdlib.h declares rand_r if __USE_POSIX; i.e., POSIX.1:1990. But rand_r was added along with threads, so the condition should be __USE_POSIX199506. This patch corrects the condition. Tested for x86_64 and x86 (testsuite, and that installed stripped shared libraries are unchanged by the patch). [BZ #20074] * stdlib/stdlib.h (rand_r): Declare if [__USE_POSIX199506], not if [__USE_POSIX]. * conform/Makefile (test-xfail-XPG4/stdlib.h/conform): Remove variable.
2016-05-17Correct ttyslot header declaration conditions (bug 20051).Joseph Myers4-4/+18
UNIX98 and XPG4 have ttyslot in <stdlib.h>. glibc, however, has it in <unistd.h>, for __USE_MISC || (__USE_XOPEN_EXTENDED && !__USE_UNIX98), but no supported standard has it in <unistd.h>. This patch adds a properly conditioned declaration to <stdlib.h> (only enabled for the relevant standards, not for __USE_MISC or __USE_GNU). The <unistd.h> declaration is restricted to __USE_MISC. Some relevant XFAILs are removed. Tested for x86_64 and x86 (testsuite, and that installed stripped shared libraries are unchanged by the patch). [BZ #20051] * posix/unistd.h [__USE_XOPEN_EXTENDED && !__USE_UNIX98] (ttyslot): Do not declare. * stdlib/stdlib.h [__USE_XOPEN_EXTENDED && !__USE_XOPEN2K] (ttyslot): New prototype. * conform/Makefile (test-xfail-XPG4/unistd.h/conform): Remove variable. (test-xfail-UNIX98/stdlib.h/conform): Likewise.
2016-05-17Fix tst-cancel17/tst-cancelx17, which sometimes segfaults while exiting.Stefan Liebler2-0/+20
The testcase tst-cancel[x]17 ends sometimes with a segmentation fault. This happens in one of 10000 cases. Then the real testcase has already exited with success and returned from do_test(). The segmentation fault occurs after returning from main in _dl_fini(). In those cases, the aio_read(&a) was not canceled because the read request was already in progress. In the meanwhile aio_write(ap) wrote something to the pipe and the read request is able to read the requested byte. The read request hasn't finished before returning from do_test(). After it finishes, it writes the return value and error code from the read syscall to the struct aiocb a, which lies on the stack of do_test. The stack of the subsequent function call of _dl_fini or _dl_sort_fini, which is inlined in _dl_fini is corrupted. In case of S390, it reads a zero and decrements it by 1: unsigned int k = nmaps - 1; struct link_map **runp = maps[k]->l_initfini; The load from unmapped memory leads to the segmentation fault. The stack corruption also happens on other architectures. I saw them e.g. on x86 and ppc, too. This patch adds an aio_suspend call to ensure, that the read request is finished before returning from do_test(). ChangeLog: * nptl/tst-cancel17.c (do_test): Wait for finishing aio_read(&a).
2016-05-13tst-mallocfork2: Fix race condition, use fewer resourcesFlorian Weimer2-1/+14
The first SIGUSR1 signal could arrive when sigusr1_sender_pid was still 0. As a result, kill would send SIGSTOP to the entire process group. This would cause the test to hang before printing any output. This commit also adds a sched_yield to the signal source, so that it does not flood the parent process with signals it has never a chance to handle. Even with these changes, tst-mallocfork2 still fails reliably after the fix in commit commit 56290d6e762c1194547e73ff0b948cd79d3a1e03 (Increase fork signal safety for single-threaded processes) is backed out.
2016-05-13conformtest: Correct some stdlib.h expectations for XPG3.Joseph Myers2-14/+45
This patch corrects some spurious conformtest stdlib.h expectations for XPG3 (not based on a full review of the expectations for that standard, so other issues may remain). Tested for x86_64 and x86. * conform/data/stdlib.h-data (a64l): Do not expect for [XPG3]. (ecvt): Likewise. (fcvt): Likewise. (gcvt): Likewise. (getsubopt): Likewise. (grantpt): Likewise. (initstate): Likewise. (l64a): Likewise. (mktemp): Likewise. (mkstemp): Likewise. (ptsname): Likewise. (random): Likewise. (realpath): Likewise. (setstate): Likewise. (srandom): Likewise. (ttyslot): Likewise. (unlockpt): Likewise. (valloc): Likewise.
2016-05-13conformtest: Do not expect strdup in string.h for XPG3.Joseph Myers3-2/+7
This patch corrects a spurious conformtest expectation of strdup in string.h for XPG3. Tested for x86_64 and x86. * conform/data/string.h-data (strdup): Do not expect for [XPG3]. * conform/Makefile (test-xfail-XPG3/string.h/conform): Remove variable.
2016-05-13Call init_cpu_features only if SHARED is definedH.J. Lu3-0/+15
In static executable, since init_cpu_features is called early from __libc_start_main, there is no need to call it again in dl_platform_init. [BZ #20072] * sysdeps/i386/dl-machine.h (dl_platform_init): Call init_cpu_features only if SHARED is defined. * sysdeps/x86_64/dl-machine.h (dl_platform_init): Likewise.
2016-05-13Support non-inclusive caches on Intel processorsH.J. Lu2-1/+16
* sysdeps/x86/cacheinfo.c (init_cacheinfo): Check and support non-inclusive caches on Intel processors.
2016-05-13malloc: Rewrite dumped heap for compatibility in __malloc_set_stateFlorian Weimer3-109/+110
This will allow us to change many aspects of the malloc implementation while preserving compatibility with existing Emacs binaries. As a result, existing Emacs binaries will have a larger RSS, and Emacs needs a few more milliseconds to start. This overhead is specific to Emacs (and will go away once Emacs switches to its internal malloc). The new checks to make free and realloc compatible with the dumped heap are confined to the mmap paths, which are already quite slow due to the munmap overhead. This commit weakens some security checks, but only for heap pointers in the dumped main arena. By default, this area is empty, so those checks are as effective as before.
2016-05-12conformtest: Correct time.h XPG3 expectations.Joseph Myers3-3/+8
This patch corrects spurious conformtest expectations of getdate and getdate_err for XPG3. (This is not based on a full review of the expectations, so there may be other issues where the header and tests agree but are both incorrect.) Tested for x86_64 and x86. * conform/data/time.h-data (getdate_err): Do not expect for [XPG3]. (getdate): Likewise. * conform/Makefile (test-xfail-XPG3/time.h/conform): Remove variable.
2016-05-12conformtest: Correct some unistd.h expectations for XPG3, XPG4.Joseph Myers3-22/+59
The conformtest tests of unistd.h fail for XPG3 because of various expectations that are incorrect for XPG3. This patch corrects those bogus expectations, and one bogus expectation for XPG4. (This is not based on a full review of the standards so there may well still be other bugs in the expectations for this header.) Tested for x86_64 and x86. * conform/data/unistd.h-data (F_LOCK): Do not expect for [XPG3]. (F_ULOCK): Likewise. (F_TEST): Likewise. (F_TLOCK): Likewise. (useconds_t): Likewise. (intptr_t): Do not expect for [XPG3] or [XPG4]. (brk): Do not expect for [XPG3] (fchown): Likewise. (fchdir): Likewise. (ftruncate): Likewise. (getdtablesize): Likewise. (gethostid): Likewise. (getpagesize): Likewise. (getpgid): Likewise. (getsid): Likewise. (getwd): Likewise. (lchown): Likewise. (lockf): Likewise. (readlink): Likewise. (sbrk): Likewise. (setpgrp): Likewise. (setregid): Likewise. (setreuid): Likewise. (symlink): Likewise. (sync): Likewise. (truncate): Likewise. (ualarm): Likewise. (usleep): Likewise. (vfork): Likewise. * conform/Makefile (test-xfail-XPG3/unistd.h/conform): Remove variable.
2016-05-12Declare gethostname for XPG4 (bug 20054).Joseph Myers3-2/+8
unistd.h declares gethostname for __USE_UNIX98 || __USE_XOPEN2K. But it's also in XPG4 (XNS volume - C438 - not the main definitions of system interfaces and headers in C435). This patch corrects the condition. Tested for x86_64 and x86 (testsuite, and that installed stripped shared libraries are unchanged by the patch). [BZ #20054] * posix/unistd.h (gethostname): Declare if [__USE_XOPEN_EXTENDED], not [__USE_UNIX98]. * conform/data/unistd.h-data (gethostname): Do not expect for [XPG3].
2016-05-12conformtest: Do not expect S_IF* in fcntl.h.Joseph Myers3-11/+14
The conform/ tests for fcntl.h are failing for XPG3 and XPG4 because of missing S_IFSOCK. This is a case of a bogus test. The relevant wording requiring such constants is, in current POSIX (and this requirement dates back as far as XPG4), "The <fcntl.h> header shall define the symbolic constants for file modes for use as values of mode_t as described in <sys/stat.h>.". Note that this is *file modes* not *file types*. That makes sense, since the point is presumably for use with functions such as open that are declared in fcntl.h, where file modes are relevant but file types aren't. So this patch removes all those spurious S_IF* expectations for fcntl.h (the macros are generally still *allowed* through the permission to make everything from sys/stat.h visible). Tested for x86_64 and x86. * conform/data/fcntl.h-data [!POSIX] (S_IFMT): Do not expect. [!POSIX] (S_IFBLK): Likewise. [!POSIX] (S_IFCHR): Likewise. [!POSIX] (S_IFIFO): Likewise. [!POSIX] (S_IFREG): Likewise. [!POSIX] (S_IFDIR): Likewise. [!POSIX] (S_IFLNK): Likewise. [!POSIX] (S_IFSOCK): Likewise. * conform/Makefile (test-xfail-XPG3/fcntl.h/conform): Remove variable. (test-xfail-XPG4/fcntl.h/conform): Likewise.
2016-05-12This is an optimized memset for AArch64. Memset is split into 4 main cases:Wilco Dijkstra2-198/+166
small sets of up to 16 bytes, medium of 16..96 bytes which are fully unrolled. Large memsets of more than 96 bytes align the destination and use an unrolled loop processing 64 bytes per iteration. Memsets of zero of more than 256 use the dc zva instruction, and there are faster versions for the common ZVA sizes 64 or 128. STP of Q registers is used to reduce codesize without loss of performance. The speedup on test-memset is 1% on Cortex-A57 and 8% on Cortex-A53. * sysdeps/aarch64/memset.S (__memset): Rewrite of optimized memset.
2016-05-12Increase fork signal safety for single-threaded processes [BZ #19703]Florian Weimer4-16/+262
This provides a band-aid and addresses the scenario where fork is called from a signal handler while the process is in the malloc subsystem (or has acquired the libio list lock). It does not address the general issue of async-signal-safety of fork; multi-threaded processes are not covered, and some glibc subsystems have fork handlers which are not async-signal-safe.
2016-05-12getaddrinfo: Convert from extend_alloca to struct scratch_bufferFlorian Weimer2-92/+68
2016-05-11Declare tcgetsid for XPG4 (bug 20055).Joseph Myers4-5/+16
termios.h should declare tcgetsid for XPG4, but only does so for __USE_UNIX98 || __USE_XOPEN2K8 at present. This patch fixes the declaration conditions. A spurious conformtest expectation of this declaration for XPG3 is removed, and two XFAILs that are fixed by these changes are also removed. Tested for x86_64 and x86 (testsuite, and that installed stripped shared libraries are unchanged by the patch). [BZ #20055] * termios/termios.h (pid_t): Define for [__USE_XOPEN_EXTENDED] instead of [__USE_UNIX98]. (tcgetsid): Declare for [__USE_XOPEN_EXTENDED] instead of [__USE_UNIX98]. * conform/data/termios.h-data (tcgetsid): Do not expect for [XPG3]. * conform/Makefile (test-xfail-XPG3/termios.h/conform): Remove variable. (test-xfail-XPG4/termios.h/conform): Likewise.
2016-05-11localedef: Do not compile with mcheckFlorian Weimer2-12/+6
__malloc_initialize_hook is deprecated.
2016-05-11S390: Use fPIC to avoid R_390_GOT12 relocation in gcrt1.o.Stefan Liebler3-4/+5
if glibc is build with -march=z900 | -march=z990, the startup file gcrt1.o (used if you link with gcc -pg) contains R_390_GOT12 | R_390_GOT20 relocations. Thus, an entry in the GOT can be addressed relative to the GOT pointer with a 12 | 20 bit displacement value. The startup files should not contain R_390_GOT12, R_390_GOT20 relocations, but R_390_GOTENT ones. This patch removes the overrides of pic-ccflag and the default pic-ccflag = -fPIC in Makeconfig is used instead to get the R_390_GOTENT relocations in gcrt1.o. ChangeLog: * sysdeps/s390/s390-32/Makefile (pic-ccflag): Remove. * sysdeps/s390/s390-64/Makefile: Likewise.
2016-05-11Remove x86 ifunc-defines.sym and rtld-global-offsets.symH.J. Lu9-51/+34
Merge x86 ifunc-defines.sym with x86 cpu-features-offsets.sym. Remove x86 ifunc-defines.sym and rtld-global-offsets.sym. No code changes on i686 and x86-64. * sysdeps/i386/i686/multiarch/Makefile (gen-as-const-headers): Remove ifunc-defines.sym. * sysdeps/x86_64/multiarch/Makefile (gen-as-const-headers): Likewise. * sysdeps/i386/i686/multiarch/ifunc-defines.sym: Removed. * sysdeps/x86/rtld-global-offsets.sym: Likewise. * sysdeps/x86_64/multiarch/ifunc-defines.sym: Likewise. * sysdeps/x86/Makefile (gen-as-const-headers): Remove rtld-global-offsets.sym. * sysdeps/x86_64/multiarch/ifunc-defines.sym: Merged with ... * sysdeps/x86/cpu-features-offsets.sym: This. * sysdeps/x86/cpu-features.h: Include <cpu-features-offsets.h> instead of <ifunc-defines.h> and <rtld-global-offsets.h>.
2016-05-10Fix sys/stat.h fchmod namespace (bug 20073).Joseph Myers3-2/+7
sys/stat.h declares fchmod if __USE_POSIX (i.e. POSIX.1:1990). But it was actually added in 1993 and also in XPG4. This patch changes the conditions to the correct __USE_POSIX199309 || __USE_XOPEN_EXTENDED. Tested for x86_64 and x86 (testsuite, and that installed shared libraries are unchanged by the patch). [BZ #20073] * io/sys/stat.h (fchmod): Declare for [__USE_POSIX199309 || __USE_XOPEN_EXTENDED], not [__USE_POSIX]. * conform/Makefile (test-xfail-XPG3/sys/stat.h/conform): Remove variable.
2016-05-10conformtest: Correct some sys/stat.h expectations for XPG3.Joseph Myers2-4/+17
This patch fixes various conformtest sys/stat.h expectations that were incorrect for XPG3 (not based on a full review, so not necessarily an exhaustive set of such corrections). Most of these corrections fix spurious failures shown in testing (but that for fchmod introduces a correct failure, as that function is wrongly declared for XPG3, so this doesn't eliminate any XFAILs). Tested for x86_64 and x86. * conform/data/sys/stat.h-data [XPG3] (S_IFLNK): Do not expect. [XPG3] (S_IFSOCK): Likewise. [XPG3] (S_ISVTX): Likewise. [XPG3] (S_ISLNK): Likewise. [XPG3] (S_ISSOCK): Likewise. [XPG3] (fchmod): Likewise. [XPG3] (lstat): Likewise. [XPG3] (mknod): Likewise.
2016-05-10conformtest: Fix st_blksize, st_blocks expectations for XPG3, XPG4.Joseph Myers2-1/+13
The conformtest expectations expect the struct stat fields st_blksize and st_blocks to be of types blksize_t and blkcnt_t. But XPG4 does not have those types, using long instead, and XPG3 does not have these fields at all. This patch adjusts the expectations for those standards, XFAILing them for XPG4 to allow for systems where the typedefs don't correspond to long. Tested for x86_64 and x86. * conform/data/sys/stat.h-data (st_blksize): Do not expect for [XPG3]. Expect type long and XFAIL for [XPG4]. (st_blocks): Likewise.
2016-05-10Declare pthread_atfork in unistd.h for UNIX98 (bug 20044).Joseph Myers3-1/+15
For UNIX98 (only), unistd.h should declare pthread_atfork, but that declaration is missing. This patch adds it. Tested for x86_64 and x86 (testsuite, and that installed stripped shared libraries are unchanged by the patch). [BZ #20044] * posix/unistd.h [__USE_UNIX98 && !__USE_XOPEN2K] (pthread_atfork): New prototype. * conform/Makefile (test-xfail-UNIX98/unistd.h/conform): Remove variable.