aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2017-11-20benchtests: Fix walking sizes and directions for *-walk benchmarksSiddhesh Poyarekar
Make the walking benchmarks walk only backwards since copying both ways is biased in favour of implementations that use non-temporal stores for larger sizes; falkor is one of them. This also fixes up bugs in computation of the result which ended up multiplying the length with the timing result unnecessarily. * benchtests/bench-memcpy-walk.c (do_one_test): Copy only backwards. Fix timing computation. * benchtests/bench-memmove-walk.c (do_one_test): Likewise. * benchtests/bench-memset-walk.c (do_one_test): Walk backwards on memset by N at a time. Fix timing computation.
2017-11-20manual: Document the MAP_HUGETLB, MADV_HUGEPAGE, MADV_NOHUGEPAGE flagsFlorian Weimer
2017-11-19manual: Document mprotect and introduce section on memory protectionFlorian Weimer
2017-11-19manual: Move preadv/writev variants to Scatter-Gather sectionFlorian Weimer
Also remove a comment about performance. fwrite vs writev performance is a very complex topic and cannot be reduced to a simple advice based on transfer size.
2017-11-18support_become_root: Fix comment styleChristian Brauner
2017-11-18support_become_root: Don't fail when /proc/<pid/setgroups is missingChristian Brauner
The requirement to write "deny" to /proc/<pid>/setgroups for a given user namespace before being able to write a gid mapping was introduced in Linux 3.19. Before that this requirement including the file did not exist. So don't fail when errno == ENOENT.
2017-11-18tst-ttyname: Fix namespace setup for FedoraFlorian Weimer
On Fedora, the previous initialization sequence did not work and resulted in failures like: info: entering chroot 1 info: testcase: basic smoketest info: ttyname: PASS {name="/dev/pts/5", errno=0} info: ttyname_r: PASS {name="/dev/pts/5", ret=0, errno=0} error: ../sysdeps/unix/sysv/linux/tst-ttyname.c:122: write (setroups, "deny"): Operation not permitted info: entering chroot 2 error: ../sysdeps/unix/sysv/linux/tst-ttyname.c:122: write (setroups, "deny"): Operation not permitted error: 2 test failures Reviewed-by: Christian Brauner <christian.brauner@ubuntu.com>
2017-11-18support_enter_mount_namespace: Unshare with mount --make-rprivateFlorian Weimer
System defaults vary, and a mere unshare (CLONE_NEWNS) (which is part of support_become_root) is no longer sufficient. Reviewed-by: Christian Brauner <christian.brauner@ubuntu.com>
2017-11-18support_create_temp_directory: Align behavior with create_temp_fileFlorian Weimer
create_temp_file automatically supplies the test directory and the XXXXXX suffix. support_create_temp_directory required the caller to specify them, which was confusing. Reviewed-by: Jonathan Nieder <jrnieder@gmail.com>
2017-11-17powerpc: Update AT_HWCAP2 bitsTulio Magno Quites Machado Filho
Linux commit ID cba6ac4869e45cc93ac5497024d1d49576e82666 reserved a new bit for a scenario where transactional memory is available, but the suspended state is disabled. * sysdeps/powerpc/bits/hwcap.h (PPC_FEATURE2_HTM_NO_SUSPEND): New macro. * sysdeps/powerpc/dl-procinfo.c (_dl_powerpc_cap_flags): Add htm-no-suspend. Signed-off-by: Tulio Magno Quites Machado Filho <tuliom@linux.vnet.ibm.com>
2017-11-17Use libm_alias_ldouble in sysdeps/x86_64/fpu.Joseph Myers
This patch continues the preparation for additional _FloatN / _FloatNx function aliases by using libm_alias_ldouble for sysdeps/x86_64/fpu long double functions, so that they can have _Float64x aliases added in future. Tested for x86_64, including build-many-glibcs.py tests that installed stripped shared libraries are unchanged by the patch. * sysdeps/x86_64/fpu/e_expl.S: Include <libm-alias-ldouble.h>. [USE_AS_EXPM1L] (expm1l): Define using libm_alias_ldouble. * sysdeps/x86_64/fpu/s_ceill.S: Include <libm-alias-ldouble.h>. (ceill): Define using libm_alias_ldouble. * sysdeps/x86_64/fpu/s_copysignl.S: Include <libm-alias-ldouble.h>. (copysignl): Define using libm_alias_ldouble. * sysdeps/x86_64/fpu/s_fabsl.S: Include <libm-alias-ldouble.h>. (fabsl): Define using libm_alias_ldouble. * sysdeps/x86_64/fpu/s_floorl.S: Include <libm-alias-ldouble.h>. (floorl): Define using libm_alias_ldouble. * sysdeps/x86_64/fpu/s_fmaxl.S: Include <libm-alias-ldouble.h>. (fmaxl): Define using libm_alias_ldouble. * sysdeps/x86_64/fpu/s_fminl.S: Include <libm-alias-ldouble.h>. (fminl): Define using libm_alias_ldouble. * sysdeps/x86_64/fpu/s_llrintl.S: Include <libm-alias-ldouble.h>. (llrintl): Define using libm_alias_ldouble. (lrintl): Likewise. * sysdeps/x86_64/fpu/s_nearbyintl.S: Include <libm-alias-ldouble.h>. (nearbyintl): Define using libm_alias_ldouble. * sysdeps/x86_64/fpu/s_truncl.S: Include <libm-alias-ldouble.h>. (truncl): Define using libm_alias_ldouble. * sysdeps/x86_64/x32/fpu/s_lrintl.S: Include <libm-alias-ldouble.h>. (lrintl): Define using libm_alias_ldouble.
2017-11-17Use libm_alias_ldouble in sysdeps/i386/fpu.Joseph Myers
This patch continues the preparation for additional _FloatN / _FloatNx function aliases by using libm_alias_ldouble for sysdeps/i386/fpu long double functions, so that they can have _Float64x aliases added in future. Tested for x86_64 (which includes some of these implementations) and x86, including build-many-glibcs.py tests that installed stripped shared libraries are unchanged by the patch. * sysdeps/i386/fpu/e_expl.S: Include <libm-alias-ldouble.h>. [USE_AS_EXPM1L] (expm1l): Define using libm_alias_ldouble. * sysdeps/i386/fpu/s_asinhl.S: Include <libm-alias-ldouble.h>. (asinhl): Define using libm_alias_ldouble. * sysdeps/i386/fpu/s_atanl.c: Include <libm-alias-ldouble.h>. (atanl): Define using libm_alias_ldouble. * sysdeps/i386/fpu/s_cbrtl.S: Include <libm-alias-ldouble.h>. (cbrtl): Define using libm_alias_ldouble. * sysdeps/i386/fpu/s_ceill.S: Include <libm-alias-ldouble.h>. (ceill): Define using libm_alias_ldouble. * sysdeps/i386/fpu/s_copysignl.S: Include <libm-alias-ldouble.h>. (copysignl): Define using libm_alias_ldouble. * sysdeps/i386/fpu/s_fabsl.S: Include <libm-alias-ldouble.h>. (fabsl): Define using libm_alias_ldouble. * sysdeps/i386/fpu/s_floorl.S: Include <libm-alias-ldouble.h>. (floorl): Define using libm_alias_ldouble. * sysdeps/i386/fpu/s_fmaxl.S: Include <libm-alias-ldouble.h>. (fmaxl): Define using libm_alias_ldouble. * sysdeps/i386/fpu/s_fminl.S: Include <libm-alias-ldouble.h>. (fminl): Define using libm_alias_ldouble. * sysdeps/i386/fpu/s_frexpl.S: Include <libm-alias-ldouble.h>. (frexpl): Define using libm_alias_ldouble. * sysdeps/i386/fpu/s_llrintl.S: Include <libm-alias-ldouble.h>. (llrintl): Define using libm_alias_ldouble. * sysdeps/i386/fpu/s_logbl.c: Include <libm-alias-ldouble.h>. (logbl): Define using libm_alias_ldouble. * sysdeps/i386/fpu/s_lrintl.S: Include <libm-alias-ldouble.h>. (lrintl): Define using libm_alias_ldouble. * sysdeps/i386/fpu/s_nearbyintl.S: Include <libm-alias-ldouble.h>. (nearbyintl): Define using libm_alias_ldouble. * sysdeps/i386/fpu/s_nextafterl.c: Include <libm-alias-ldouble.h>. (nextafterl): Define using libm_alias_ldouble. * sysdeps/i386/fpu/s_remquol.S: Include <libm-alias-ldouble.h>. (remquol): Define using libm_alias_ldouble. * sysdeps/i386/fpu/s_rintl.c: Include <libm-alias-ldouble.h>. (rintl): Define using libm_alias_ldouble. * sysdeps/i386/fpu/s_truncl.S: Include <libm-alias-ldouble.h>. (truncl): Define using libm_alias_ldouble. * sysdeps/i386/i686/fpu/s_fmaxl.S: Include <libm-alias-ldouble.h>. (fmaxl): Define using libm_alias_ldouble. * sysdeps/i386/i686/fpu/s_fminl.S: Include <libm-alias-ldouble.h>. (fminl): Define using libm_alias_ldouble.
2017-11-17Support bits/floatn.h inclusion from .S files.Joseph Myers
Further _FloatN / _FloatNx type alias support will involve making architecture-specific .S files use the common macros for libm function aliases. Making them use those macros will also serve to simplify existing code for aliases / symbol versions in various cases, similar to such simplifications for ldbl-opt code. The libm-alias-*.h files sometimes need to include <bits/floatn.h> to determine which aliases they should define. At present, this does not work for inclusion from .S files because <bits/floatn.h> can define typedefs for old compilers. This patch changes all the <bits/floatn.h> and <bits/floatn-common.h> headers to include __ASSEMBLER__ conditionals. Those conditionals disable everything related to C syntax in the __ASSEMBLER__ case, not just the problem typedefs, as that seemed cleanest. The __HAVE_* definitions remain in the __ASSEMBLER__ case, as those provide information that is required to define the correct set of aliases. Tested with build-many-glibcs.py for a representative set of configurations (x86_64-linux-gnu i686-linux-gnu ia64-linux-gnu powerpc64le-linux-gnu mips64-linux-gnu-n64 sparc64-linux-gnu) with GCC 6. Also tested with GCC 6 for i686-linux-gnu in conjunction with changes to use alias macros in .S files. * bits/floatn-common.h [!__ASSEMBLER]: Disable everything related to C syntax instead of availability and properties of types. * bits/floatn.h [!__ASSEMBLER]: Likewise. * sysdeps/ia64/bits/floatn.h [!__ASSEMBLER]: Likewise. * sysdeps/ieee754/ldbl-128/bits/floatn.h [!__ASSEMBLER]: Likewise. * sysdeps/mips/ieee754/bits/floatn.h [!__ASSEMBLER]: Likewise. * sysdeps/powerpc/bits/floatn.h [!__ASSEMBLER]: Likewise. * sysdeps/x86/bits/floatn.h [!__ASSEMBLER]: Likewise.
2017-11-17support_become_root: Enable file creation in user namespacesFlorian Weimer
Without UID/GID maps, file creation will file with EOVERFLOW. This patch is based on DJ Delorie's work on container testing. Reviewed-by: Jonathan Nieder <jrnieder@gmail.com>
2017-11-17Add AArch64 HWCAP_DCPOP from Linux 4.14.Joseph Myers
This patch adds the HWCAP_DCPOP macro from Linux 4.14 to the AArch64 bits/hwcap.h. Tested (compilation only) for aarch64 with build-many-glibcs.py. * sysdeps/unix/sysv/linux/aarch64/bits/hwcap.h (HWCAP_DCPOP): New macro.
2017-11-17aarch64: Fix f{max,min}{f} build for GCC 4.9 and 5Adhemerval Zanella
GCC 4.9 and 5 do not generate a correct f{max,min}nm instruction for __builtin_{fmax,fmin}{f} without -ffinite-math-only. It is clear a compiler issue since the instruction can handle NaN and Inf correctly and GCC6+ does not show this issue. We can backport a fix to GCC 5, raise the minimum required GCC version for aarch64 (since GCC 4.9 branch is now closed [1]) and/or add configure check to check for this issue. However I think -ffinite-math-only should be safe for these specific implementations and it is a simpler solution. Checked on aarch64-linux-gnu with GCC 5.3.1. * sysdeps/aarch64/fpu/Makefile (CFLAGS-s_fmax.c, CFLAGS-s_fmaxf.c, CFLAGS-s_fmin.c, CFLAGS-s_fminf.c): New rule: add -ffinite-math-only. [1] https://gcc.gnu.org/ml/gcc/2016-08/msg00010.html Signed-off-by: Adhemerval Zanella <adhemerval.zanella@linaro.org> Reviewed-by: Szabolcs Nagy <szabolcs.nagy@arm.com>
2017-11-16Add Linux 4.14 ARPHRD_RAWIP to net/if_arp.h.Joseph Myers
This patch adds ARPHRD_RAWIP from Linux 4.14 to the Linux net/if_arp.h. Tested for x86_64. * sysdeps/unix/sysv/linux/net/if_arp.h (ARPHRD_RAWIP): New macro.
2017-11-16Update kernel version in syscall-names.list to 4.14.Joseph Myers
Linux 4.14 does not add any new syscalls; this patch updates the version number in syscall-names.list to reflect that it's still current for 4.14. Tested for x86_64 (compilation with build-many-glibcs.py, using Linux 4.14). * sysdeps/unix/sysv/linux/syscall-names.list: Update kernel version to 4.14.
2017-11-16Fix botched up regeneration in the last commitSiddhesh Poyarekar
2017-11-16Prefer https for Sourceware linksSiddhesh Poyarekar
Update all sourceware links to https. The website redirects everything to https anyway so let the web server do a bit less work. The only reference that remains unchanged is the one in the old ChangeLog, since it didn't seem worth changing it. * NEWS: Update sourceware link to https. * configure.ac: Likewise. * crypt/md5test-giant.c: Likewise. * dlfcn/bug-atexit1.c: Likewise. * dlfcn/bug-atexit2.c: Likewise. * localedata/README: Likewise. * malloc/tst-mallocfork.c: Likewise. * manual/install.texi: Likewise. * nptl/tst-pthread-getattr.c: Likewise. * stdio-common/tst-fgets.c: Likewise. * stdio-common/tst-fwrite.c: Likewise. * sunrpc/Makefile: Likewise. * sysdeps/arm/armv7/multiarch/memcpy_impl.S: Likewise. * wcsmbs/tst-mbrtowc2.c: Likewise. * configure: Regenerate. * INSTALL: Regenerate.
2017-11-15The -Wstringop-truncation option new in GCC 8 detects common misusesMartin Sebor
of the strncat and strncpy function that may result in truncating the copied string before the terminating NUL. To avoid false positive warnings for correct code that intentionally creates sequences of characters that aren't guaranteed to be NUL-terminated, arrays that are intended to store such sequences should be decorated with a new nonstring attribute. This change add this attribute to Glibc and uses it to suppress such false positives. ChangeLog: * misc/sys/cdefs.h (__attribute_nonstring__): New macro. * sysdeps/gnu/bits/utmp.h (struct utmp): Use it. * sysdeps/unix/sysv/linux/s390/bits/utmp.h (struct utmp): Same.
2017-11-15linux ttyname{_r}: Add testsLuke Shumaker
Add a new tst-ttyname test that includes several named sub-testcases. This patch is ordered after the patches with the fixes that it tests for (to avoid breaking `git bisect`), but for reference, here's how each relevant change so far affected the testcases in this commit, starting with 15e9a4f378c8607c2ae1aa465436af4321db0e23: | | before | | make checks | don't | | | 15e9a4f | 15e9a4f | consistent | bail | |---------------------------------+---------+---------+-------------+-------| | basic smoketest | PASS | PASS | PASS | PASS | | no conflict, no match | PASS[1] | PASS | PASS | PASS | | no conflict, console | PASS | FAIL! | FAIL | PASS! | | conflict, no match | FAIL | PASS! | PASS | PASS | | conflict, console | FAIL | FAIL | FAIL | PASS! | | with readlink target | PASS | PASS | PASS | PASS | | with readlink trap; fallback | FAIL | FAIL | FAIL | PASS! | | with readlink trap; no fallback | FAIL | PASS! | PASS | PASS | | with search-path trap | FAIL | FAIL | PASS! | PASS | |---------------------------------+---------+---------+-------------+-------| | | 4/9 | 5/9 | 6/9 | 9/9 | [1]: 15e9a4f introduced a semantic that, under certain failure conditions, ttyname sets errno=ENODEV, where previously it didn't set errno; it's not quite fair to hold "before 15e9a4f" ttyname to those new semantics. This testcase actually fails, but would have passed if we tested for the old the semantics. Each of the failing tests before 15e9a4f are all essentially the same bug: that it returns a PTY slave with the correct minor device number, but from the wrong devpts filesystem instance. 15e9a4f sought to fix this, but missed several of the cases that can cause this to happen, and also broke the case where both the erroneous PTY and the correct PTY exist. Acked-by: Christian Brauner <christian.brauner@ubuntu.com>
2017-11-15linux ttyname{_r}: Don't bail prematurely [BZ #22145]Luke Shumaker
Commit 15e9a4f378c8607c2ae1aa465436af4321db0e23 introduced logic for ttyname() sending back ENODEV to signal that we can't get a name for the TTY because we inherited it from a different mount namespace. However, just because we inherited it from a different mount namespace and it isn't available at its original path, doesn't mean that its name is unknowable; we can still try to find it by allowing the normal fall back on iterating through devices. An example scenario where this happens is with "/dev/console" in containers. It's a common practice among container managers to allocate a PTY master/slave pair in the host's mount namespace (the slave having a path like "/dev/pty/$X"), bind mount the slave to "/dev/console" in the container's mount namespace, and send the slave FD to a process in the container. Inside of the container, the slave-end isn't available at its original path ("/dev/pts/$X"), since the container mount namespace has a separate devpts instance from the host (that path may or may not exist in the container; if it does exist, it's not the same PTY slave device). Currently ttyname{_r} sees that the file at the original "/dev/pts/$X" path doesn't match the FD passed to it, and fails early and gives up, even though if it kept searching it would find the TTY at "/dev/console". Fix that; don't have the ENODEV path force an early return inhibiting the fall-back search. This change is based on the previous patch that adds use of is_mytty in getttyname and getttyname_r. Without that change, this effectively reverts 15e9a4f, which made us disregard the false similarity of file pointed to by "/proc/self/fd/$Y", because if it doesn't bail prematurely then that file ("/dev/pts/$X") will just come up again anyway in the fall-back search. Reviewed-by: Christian Brauner <christian.brauner@ubuntu.com>
2017-11-15linux ttyname{_r}: Make tty checks consistentLuke Shumaker
In the ttyname and ttyname_r routines on Linux, at several points it needs to check if a given TTY is the TTY we are looking for. It used to be that this check was (to see if `maybe` is `mytty`): __xstat64(_STAT_VER, maybe_filename, &maybe) == 0 #ifdef _STATBUF_ST_RDEV && S_ISCHR(maybe.st_mode) && maybe.st_rdev == mytty.st_rdev #else && maybe.st_ino == mytty.st_ino && maybe.st_dev == mytty.st_dev #endif This check appears in several places. Then, one of the changes made in commit 15e9a4f378c8607c2ae1aa465436af4321db0e23 was to change that check to: __xstat64(_STAT_VER, maybe_filename, &maybe) == 0 #ifdef _STATBUF_ST_RDEV && S_ISCHR(maybe.st_mode) && maybe.st_rdev == mytty.st_rdev #endif && maybe.st_ino == mytty.st_ino && maybe.st_dev == mytty.st_dev That is, it made the st_ino and st_dev parts of the check happen even if we have the st_rdev member. This is an important change, because the kernel allows multiple devpts filesystem instances to be created; a device file in one devpts instance may share the same st_rdev with a file in another devpts instance, but they aren't the same file. This check appears twice in each file (ttyname.c and ttyname_r.c), once (in ttyname and __ttyname_r) to check if a candidate file found by inspecting /proc is the desired TTY, and once (in getttyname and getttyname_r) to check if a candidate file found by searching /dev is the desired TTY. However, 15e9a4f only updated the checks for files found via /proc; but the concern about collisions between devpts instances is just as valid for files found via /dev. So, update all 4 occurrences the check to be consistent with the version of the check introduced in 15e9a4f. Make it easy to keep all 4 occurrences of the check consistent by pulling it in to a static inline function, is_mytty. Reviewed-by: Christian Brauner <christian.brauner@ubuntu.com>
2017-11-15linux ttyname: Change return type of is_pty from int to boolLuke Shumaker
is_pty returning a bool is fine since there's no possible outcome other than true or false, and bool is used throughout the codebase. Reviewed-by: Christian Brauner <christian.brauner@ubuntu.com>
2017-11-15linux ttyname: Update a reference to kernel docs for kernel 4.10Luke Shumaker
Linux 4.10 moved many of the documentation files around. 4.10 came out between the time the patch adding the comment (commit 15e9a4f378c8607c2ae1aa465436af4321db0e23) was submitted and the time it was applied (in February, January, and March 2017; respectively). Reviewed-by: Christian Brauner <christian.brauner@ubuntu.com>
2017-11-15manual: Update to mention ENODEV for ttyname and ttyname_rLuke Shumaker
Commit 15e9a4f378c8607c2ae1aa465436af4321db0e23 introduced ENODEV as a possible error condition for ttyname and ttyname_r. Update the manual to mention this GNU extension. Reviewed-by: Christian Brauner <christian.brauner@ubuntu.com>
2017-11-15Add MSG_ZEROCOPY from Linux 4.14 to bits/socket.h.Joseph Myers
This patch adds the new MSG_ZEROCOPY constant from Linux 4.14 to the Linux bits/socket.h. Tested for x86_64. * sysdeps/unix/sysv/linux/bits/socket.h (MSG_ZEROCOPY): New enum constant and macro.
2017-11-15Add MADV_WIPEONFORK, MADV_KEEPONFORK from Linux 4.14.Joseph Myers
This patch adds the new MADV_WIPEONFORK and MADV_KEEPONFORK from Linux 4.14 to bits/mman-linux.h (and bits/mman.h in the hppa case). Note there are further hppa MADV_* changes in 4.14; I plan a separate glibc patch for those. Tested for x86_64. * sysdeps/unix/sysv/linux/bits/mman-linux.h [__USE_MISC] (MADV_WIPEONFORK): New macro. [__USE_MISC] (MADV_KEEPONFORK): Likewise. * sysdeps/unix/sysv/linux/hppa/bits/mman.h [__USE_MISC] (MADV_WIPEONFORK): Likewise. [__USE_MISC] (MADV_KEEPONFORK): Likewise.
2017-11-15Optimize sigrelse implementationAdhemerval Zanella
This patch simplifies sighold a bit by removing an extra sigprocmask and using SIG_BLOCK (which union of the current set and the set argument). Checked on x86_64-linux-gnu. * signal/sighold.c (sighold): Optimize implementation. Signed-off-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
2017-11-15Cleanup sigpause implementationAdhemerval Zanella
This patch simplify sigpause by remobing the single thread optimization since it will be handled already by the __sigsuspend call. Checked on x86_64-linux-gnu. * sysdeps/posix/sigpause.c (do_sigpause): Remove. (__sigpause): Rely on __sigsuspend to implement single thread optimization. Add LIBC_CANCEL_HANDLED for cancellation marking. Signed-off-by: Adhemerval Zanella <adhemerval.zanella@linaro.org> Reviewed-by: Zack Weinberg <zackw@panix.com>
2017-11-15Use Linux 4.14 in build-many-glibcs.py.Joseph Myers
* scripts/build-many-glibcs.py (Context.checkout): Default Linux kernel version to 4.14.
2017-11-15Check length of ifname before copying it into to ifreq structure.Steve Ellcey
[BZ #22442] * sysdeps/unix/sysv/linux/if_index.c (__if_nametoindex): Check if ifname is too long.
2017-11-15linux: Include <sysdep-cancel.h> for epoll_waitLuke Shumaker
The epoll_wait wrapper uses the raw syscall if __NR_epoll_wait is defined, and falls back to calling epoll_pwait(..., NULL) if it isn't defined. However, it didn't include the appropriate headers for __NR_epoll_wait to be defined, so it was *always* falling back to calling epoll_pwait! This mistake was introduced in b62c3815912bc679a966134affdedd3f35ae8621, when epoll_wait changed from being in syscalls.list to always having a C wrapper. Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
2017-11-15ka_GE locale: Add “X” back to yesexpr.Mike FABIAN
* localedata/locales/ka_GE (LC_MESSAGES): Add “X” back to yesexpr, was accidentally lost.
2017-11-15az_IR locale: Add standard copyright headerMike FABIAN
* localedata/locales/az_IR: Add standard copyright header.
2017-11-15malloc: Account for all heaps in an arena in malloc_info [BZ #22439]Florian Weimer
This commit adds a "subheaps" field to the malloc_info output that shows the number of heaps that were allocated to extend a non-main arena. Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
2017-11-15malloc: Add missing arena lock in malloc_info [BZ #22408]Florian Weimer
Obtain the size information while the arena lock is acquired, and only print it later.
2017-11-15Use __builtin_tgmath in tgmath.h with GCC 8 (bug 21660).Joseph Myers
GCC mainline now supports __builtin_tgmath to allow <tgmath.h> macro implementations that expand their arguments only once, so avoiding exponential blowup in the size of macro expansions when calls to those macros are nested in arguments to those macros. This patch makes glibc's tgmath.h support using __builtin_tgmath, as a much simpler and more efficient alternative to the existing implementation. (As a side effect, the new feature would make it much more practical to support decimal floating point in <tgmath.h> with new compilers; currently, libdfp does not provide a <tgmath.h> implementation, and making decimal arguments cause integer arguments to be considered of type _Decimal64 instead of double would have been very problematic in the old implementation.) Tested for x86_64 (with GCC mainline). [BZ #21660] * math/tgmath.h (__HAVE_BUILTIN_TGMATH): New macro. [__HAVE_BUILTIN_TGMATH] (__TG_F16_ARG): Likewise. [__HAVE_BUILTIN_TGMATH] (__TG_F32_ARG): Likewise. [__HAVE_BUILTIN_TGMATH] (__TG_F64_ARG): Likewise. [__HAVE_BUILTIN_TGMATH] (__TG_F128_ARG): Likewise. [__HAVE_BUILTIN_TGMATH] (__TG_F32X_ARG): Likewise. [__HAVE_BUILTIN_TGMATH] (__TG_F64X_ARG): Likewise. [__HAVE_BUILTIN_TGMATH] (__TG_F128X_ARG): Likewise. [__HAVE_BUILTIN_TGMATH] (__TGMATH_FUNCS): Likewise. [__HAVE_BUILTIN_TGMATH] (__TGMATH_RCFUNCS): Likewise. [__HAVE_BUILTIN_TGMATH] (__TGMATH_1): Likewise. [__HAVE_BUILTIN_TGMATH] (__TGMATH_2): Likewise. [__HAVE_BUILTIN_TGMATH] (__TGMATH_2STD): Likewise. [__HAVE_BUILTIN_TGMATH] (__TGMATH_3): Likewise. [__HAVE_BUILTIN_TGMATH] (__TGMATH_1C): Likewise. [__HAVE_BUILTIN_TGMATH] (__TGMATH_2C): Likewise. (__tgml): Make conditional on [!__HAVE_BUILTIN_TGMATH]. (__floating_type): Likewise. (__real_integer_type): Likewise. (__complex_integer_type): Likewise. (__expr_is_real): Likewise. (__tgmath_real_type_sub): Likewise. (__tgmath_real_type): Likewise. (__tgmath_complex_type_sub): Likewise. (__tgmath_complex_type): Likewise. (__TGMATH_F128): Likewise. (__TGMATH_CF128): Likewise. [__HAVE_BUILTIN_TGMATH] (__TGMATH_UNARY_REAL_ONLY): Define using new macros. [__HAVE_BUILTIN_TGMATH] (__TGMATH_UNARY_REAL_RET_ONLY): Likewise. [__HAVE_BUILTIN_TGMATH] (__TGMATH_BINARY_FIRST_REAL_ONLY): Likewise. [__HAVE_BUILTIN_TGMATH] (__TGMATH_BINARY_FIRST_REAL_STD_ONLY): Likewise. [__HAVE_BUILTIN_TGMATH] (__TGMATH_BINARY_REAL_ONLY): Likewise. [__HAVE_BUILTIN_TGMATH] (__TGMATH_BINARY_REAL_STD_ONLY): Likewise. [__HAVE_BUILTIN_TGMATH] (__TGMATH_BINARY_REAL_RET_ONLY): Likewise. [__HAVE_BUILTIN_TGMATH] (__TGMATH_TERNARY_FIRST_SECOND_REAL_ONLY): Likewise. [__HAVE_BUILTIN_TGMATH] (__TGMATH_TERNARY_REAL_ONLY): Likewise. [__HAVE_BUILTIN_TGMATH] (__TGMATH_TERNARY_FIRST_REAL_RET_ONLY): Likewise. [__HAVE_BUILTIN_TGMATH] (__TGMATH_UNARY_REAL_IMAG): Likewise. [__HAVE_BUILTIN_TGMATH] (__TGMATH_UNARY_IMAG): Likewise. [__HAVE_BUILTIN_TGMATH] (__TGMATH_UNARY_REAL_IMAG_RET_REAL): Likewise. [__HAVE_BUILTIN_TGMATH] (__TGMATH_BINARY_REAL_IMAG): Likewise. (__TGMATH_UNARY_REAL_IMAG_RET_REAL_SAME): New macro. (carg): Use __TGMATH_UNARY_REAL_IMAG_RET_REAL_SAME. (cimag): Likewise. (creal): Likewise.
2017-11-14Fix string/tester.c build with GCC 8.Joseph Myers
GCC 8 warns about more cases of string functions truncating their output or not copying a trailing NUL byte. This patch fixes testsuite build failures caused by such warnings in string/tester.c. In general, the warnings are disabled around the relevant calls using DIAG_* macros, since the relevant cases are being deliberately tested. In one case, the warning is with -Wstringop-overflow= instead of -Wstringop-truncation; in that case, the conditional is __GNUC_PREREQ (7, 0) (being the version where -Wstringop-overflow= was introduced), to allow the conditional to be removed sooner, since it's harmless to disable the warning for a GCC version where it doesn't actually occur. In the case of warnings for strncpy calls in test_memcmp, the calls in question are changed to use memcpy, as they don't copy a trailing NUL and the point of that code is to test memcmp rather than strncpy. Tested (compilation) with GCC 8 for x86_64-linux-gnu with build-many-glibcs.py (in conjunction with Martin's patch to allow glibc to build). * string/tester.c (test_stpncpy): Disable -Wstringop-truncation for stpncpy calls for GCC 8. (test_strncat): Disable -Wstringop-truncation warning for strncat calls for GCC 8. Disable -Wstringop-overflow= warning for one strncat call for GCC 7. (test_strncpy): Disable -Wstringop-truncation warning for strncpy calls for GCC 8. (test_memcmp): Use memcpy instead of strncpy for calls not copying trailing NUL.
2017-11-14Fix string/bug-strncat1.c build with GCC 8.Joseph Myers
GCC 8 warns about strncat calls with truncated output. string/bug-strncat1.c tests such a call; this patch disables the warning for it. Tested (compilation) with GCC 8 for x86_64-linux-gnu with build-many-glibcs.py (in conjunction with Martin's patch to allow glibc to build). * string/bug-strncat1.c: Include <libc-diag.h>. (main): Disable -Wstringop-truncation for strncat call for GCC 8.
2017-11-14Replaced unicode sequences in the ASCII printable rangeClaude Paroz
[BZ #22387] * localedata/locales/aa_DJ: Improved readibility by replacing <Uxxxx> sequences in the ASCII printable range by their ASCII character equivalents. * localedata/locales/aa_ER: Likewise. * localedata/locales/aa_ER@saaho: Likewise. * localedata/locales/aa_ET: Likewise. * localedata/locales/af_ZA: Likewise. * localedata/locales/agr_PE: Likewise. * localedata/locales/ak_GH: Likewise. * localedata/locales/am_ET: Likewise. * localedata/locales/anp_IN: Likewise. * localedata/locales/ar_AE: Likewise. * localedata/locales/ar_BH: Likewise. * localedata/locales/ar_DZ: Likewise. * localedata/locales/ar_EG: Likewise. * localedata/locales/ar_IN: Likewise. * localedata/locales/ar_IQ: Likewise. * localedata/locales/ar_JO: Likewise. * localedata/locales/ar_KW: Likewise. * localedata/locales/ar_LB: Likewise. * localedata/locales/ar_LY: Likewise. * localedata/locales/ar_MA: Likewise. * localedata/locales/ar_OM: Likewise. * localedata/locales/ar_QA: Likewise. * localedata/locales/ar_SA: Likewise. * localedata/locales/ar_SD: Likewise. * localedata/locales/ar_SS: Likewise. * localedata/locales/ar_SY: Likewise. * localedata/locales/ar_TN: Likewise. * localedata/locales/ar_YE: Likewise. * localedata/locales/as_IN: Likewise. * localedata/locales/ast_ES: Likewise. * localedata/locales/ayc_PE: Likewise. * localedata/locales/az_AZ: Likewise. * localedata/locales/az_IR: Likewise. * localedata/locales/be_BY: Likewise. * localedata/locales/be_BY@latin: Likewise. * localedata/locales/bem_ZM: Likewise. * localedata/locales/ber_DZ: Likewise. * localedata/locales/ber_MA: Likewise. * localedata/locales/bg_BG: Likewise. * localedata/locales/bhb_IN: Likewise. * localedata/locales/bho_IN: Likewise. * localedata/locales/bi_VU: Likewise. * localedata/locales/bn_BD: Likewise. * localedata/locales/bn_IN: Likewise. * localedata/locales/bo_CN: Likewise. * localedata/locales/bo_IN: Likewise. * localedata/locales/br_FR: Likewise. * localedata/locales/brx_IN: Likewise. * localedata/locales/bs_BA: Likewise. * localedata/locales/byn_ER: Likewise. * localedata/locales/ca_AD: Likewise. * localedata/locales/ca_ES: Likewise. * localedata/locales/ca_FR: Likewise. * localedata/locales/ca_IT: Likewise. * localedata/locales/ce_RU: Likewise. * localedata/locales/chr_US: Likewise. * localedata/locales/cmn_TW: Likewise. * localedata/locales/crh_UA: Likewise. * localedata/locales/cs_CZ: Likewise. * localedata/locales/csb_PL: Likewise. * localedata/locales/cv_RU: Likewise. * localedata/locales/cy_GB: Likewise. * localedata/locales/da_DK: Likewise. * localedata/locales/de_AT: Likewise. * localedata/locales/de_BE: Likewise. * localedata/locales/de_CH: Likewise. * localedata/locales/de_DE: Likewise. * localedata/locales/de_IT: Likewise. * localedata/locales/de_LI: Likewise. * localedata/locales/de_LU: Likewise. * localedata/locales/doi_IN: Likewise. * localedata/locales/dv_MV: Likewise. * localedata/locales/dz_BT: Likewise. * localedata/locales/el_CY: Likewise. * localedata/locales/el_GR: Likewise. * localedata/locales/en_AG: Likewise. * localedata/locales/en_AU: Likewise. * localedata/locales/en_BW: Likewise. * localedata/locales/en_CA: Likewise. * localedata/locales/en_DK: Likewise. * localedata/locales/en_GB: Likewise. * localedata/locales/en_HK: Likewise. * localedata/locales/en_IE: Likewise. * localedata/locales/en_IL: Likewise. * localedata/locales/en_IN: Likewise. * localedata/locales/en_NG: Likewise. * localedata/locales/en_NZ: Likewise. * localedata/locales/en_PH: Likewise. * localedata/locales/en_SG: Likewise. * localedata/locales/en_US: Likewise. * localedata/locales/en_ZA: Likewise. * localedata/locales/en_ZM: Likewise. * localedata/locales/en_ZW: Likewise. * localedata/locales/eo: Likewise. * localedata/locales/es_AR: Likewise. * localedata/locales/es_BO: Likewise. * localedata/locales/es_CL: Likewise. * localedata/locales/es_CO: Likewise. * localedata/locales/es_CR: Likewise. * localedata/locales/es_CU: Likewise. * localedata/locales/es_DO: Likewise. * localedata/locales/es_EC: Likewise. * localedata/locales/es_ES: Likewise. * localedata/locales/es_GT: Likewise. * localedata/locales/es_HN: Likewise. * localedata/locales/es_MX: Likewise. * localedata/locales/es_NI: Likewise. * localedata/locales/es_PA: Likewise. * localedata/locales/es_PE: Likewise. * localedata/locales/es_PR: Likewise. * localedata/locales/es_PY: Likewise. * localedata/locales/es_SV: Likewise. * localedata/locales/es_US: Likewise. * localedata/locales/es_UY: Likewise. * localedata/locales/es_VE: Likewise. * localedata/locales/et_EE: Likewise. * localedata/locales/eu_ES: Likewise. * localedata/locales/eu_ES@euro: Likewise. * localedata/locales/fa_IR: Likewise. * localedata/locales/ff_SN: Likewise. * localedata/locales/fi_FI: Likewise. * localedata/locales/fil_PH: Likewise. * localedata/locales/fo_FO: Likewise. * localedata/locales/fr_BE: Likewise. * localedata/locales/fr_CA: Likewise. * localedata/locales/fr_CH: Likewise. * localedata/locales/fr_FR: Likewise. * localedata/locales/fr_LU: Likewise. * localedata/locales/fur_IT: Likewise. * localedata/locales/fy_DE: Likewise. * localedata/locales/fy_NL: Likewise. * localedata/locales/ga_IE: Likewise. * localedata/locales/gd_GB: Likewise. * localedata/locales/gez_ER: Likewise. * localedata/locales/gez_ET: Likewise. * localedata/locales/gl_ES: Likewise. * localedata/locales/gu_IN: Likewise. * localedata/locales/gv_GB: Likewise. * localedata/locales/ha_NG: Likewise. * localedata/locales/hak_TW: Likewise. * localedata/locales/he_IL: Likewise. * localedata/locales/hi_IN: Likewise. * localedata/locales/hif_FJ: Likewise. * localedata/locales/hne_IN: Likewise. * localedata/locales/hr_HR: Likewise. * localedata/locales/hsb_DE: Likewise. * localedata/locales/ht_HT: Likewise. * localedata/locales/hu_HU: Likewise. * localedata/locales/hy_AM: Likewise. * localedata/locales/i18n: Likewise. * localedata/locales/ia_FR: Likewise. * localedata/locales/id_ID: Likewise. * localedata/locales/ig_NG: Likewise. * localedata/locales/ik_CA: Likewise. * localedata/locales/is_IS: Likewise. * localedata/locales/it_CH: Likewise. * localedata/locales/it_IT: Likewise. * localedata/locales/iu_CA: Likewise. * localedata/locales/ja_JP: Likewise. * localedata/locales/ka_GE: Likewise. * localedata/locales/kk_KZ: Likewise. * localedata/locales/kl_GL: Likewise. * localedata/locales/kn_IN: Likewise. * localedata/locales/ko_KR: Likewise. * localedata/locales/kok_IN: Likewise. * localedata/locales/ks_IN: Likewise. * localedata/locales/ks_IN@devanagari: Likewise. * localedata/locales/ku_TR: Likewise. * localedata/locales/kw_GB: Likewise. * localedata/locales/ky_KG: Likewise. * localedata/locales/lb_LU: Likewise. * localedata/locales/lg_UG: Likewise. * localedata/locales/li_BE: Likewise. * localedata/locales/li_NL: Likewise. * localedata/locales/lij_IT: Likewise. * localedata/locales/ln_CD: Likewise. * localedata/locales/lo_LA: Likewise. * localedata/locales/lt_LT: Likewise. * localedata/locales/lv_LV: Likewise. * localedata/locales/lzh_TW: Likewise. * localedata/locales/mag_IN: Likewise. * localedata/locales/mai_IN: Likewise. * localedata/locales/mg_MG: Likewise. * localedata/locales/mhr_RU: Likewise. * localedata/locales/mi_NZ: Likewise. * localedata/locales/mk_MK: Likewise. * localedata/locales/ml_IN: Likewise. * localedata/locales/mn_MN: Likewise. * localedata/locales/mni_IN: Likewise. * localedata/locales/mr_IN: Likewise. * localedata/locales/ms_MY: Likewise. * localedata/locales/mt_MT: Likewise. * localedata/locales/my_MM: Likewise. * localedata/locales/nan_TW: Likewise. * localedata/locales/nan_TW@latin: Likewise. * localedata/locales/nb_NO: Likewise. * localedata/locales/nds_DE: Likewise. * localedata/locales/nds_NL: Likewise. * localedata/locales/ne_NP: Likewise. * localedata/locales/nhn_MX: Likewise. * localedata/locales/niu_NU: Likewise. * localedata/locales/niu_NZ: Likewise. * localedata/locales/nl_AW: Likewise. * localedata/locales/nl_BE: Likewise. * localedata/locales/nl_NL: Likewise. * localedata/locales/nn_NO: Likewise. * localedata/locales/nr_ZA: Likewise. * localedata/locales/nso_ZA: Likewise. * localedata/locales/oc_FR: Likewise. * localedata/locales/om_ET: Likewise. * localedata/locales/om_KE: Likewise. * localedata/locales/or_IN: Likewise. * localedata/locales/os_RU: Likewise. * localedata/locales/pa_IN: Likewise. * localedata/locales/pa_PK: Likewise. * localedata/locales/pap_AW: Likewise. * localedata/locales/pap_CW: Likewise. * localedata/locales/pl_PL: Likewise. * localedata/locales/ps_AF: Likewise. * localedata/locales/pt_BR: Likewise. * localedata/locales/pt_PT: Likewise. * localedata/locales/quz_PE: Likewise. * localedata/locales/raj_IN: Likewise. * localedata/locales/ro_RO: Likewise. * localedata/locales/ru_RU: Likewise. * localedata/locales/ru_UA: Likewise. * localedata/locales/rw_RW: Likewise. * localedata/locales/sa_IN: Likewise. * localedata/locales/sat_IN: Likewise. * localedata/locales/sc_IT: Likewise. * localedata/locales/sd_IN: Likewise. * localedata/locales/sd_IN@devanagari: Likewise. * localedata/locales/se_NO: Likewise. * localedata/locales/sgs_LT: Likewise. * localedata/locales/shs_CA: Likewise. * localedata/locales/si_LK: Likewise. * localedata/locales/sid_ET: Likewise. * localedata/locales/sk_SK: Likewise. * localedata/locales/sl_SI: Likewise. * localedata/locales/sm_WS: Likewise. * localedata/locales/so_DJ: Likewise. * localedata/locales/so_ET: Likewise. * localedata/locales/so_KE: Likewise. * localedata/locales/so_SO: Likewise. * localedata/locales/sq_AL: Likewise. * localedata/locales/sq_MK: Likewise. * localedata/locales/sr_ME: Likewise. * localedata/locales/sr_RS: Likewise. * localedata/locales/sr_RS@latin: Likewise. * localedata/locales/ss_ZA: Likewise. * localedata/locales/st_ZA: Likewise. * localedata/locales/sv_FI: Likewise. * localedata/locales/sv_SE: Likewise. * localedata/locales/sw_KE: Likewise. * localedata/locales/sw_TZ: Likewise. * localedata/locales/szl_PL: Likewise. * localedata/locales/ta_IN: Likewise. * localedata/locales/ta_LK: Likewise. * localedata/locales/tcy_IN: Likewise. * localedata/locales/te_IN: Likewise. * localedata/locales/tg_TJ: Likewise. * localedata/locales/th_TH: Likewise. * localedata/locales/the_NP: Likewise. * localedata/locales/ti_ER: Likewise. * localedata/locales/ti_ET: Likewise. * localedata/locales/tig_ER: Likewise. * localedata/locales/tk_TM: Likewise. * localedata/locales/tl_PH: Likewise. * localedata/locales/tn_ZA: Likewise. * localedata/locales/to_TO: Likewise. * localedata/locales/tpi_PG: Likewise. * localedata/locales/tr_CY: Likewise. * localedata/locales/tr_TR: Likewise. * localedata/locales/ts_ZA: Likewise. * localedata/locales/tt_RU: Likewise. * localedata/locales/tt_RU@iqtelif: Likewise. * localedata/locales/ug_CN: Likewise. * localedata/locales/uk_UA: Likewise. * localedata/locales/unm_US: Likewise. * localedata/locales/ur_IN: Likewise. * localedata/locales/ur_PK: Likewise. * localedata/locales/uz_UZ: Likewise. * localedata/locales/uz_UZ@cyrillic: Likewise. * localedata/locales/ve_ZA: Likewise. * localedata/locales/vi_VN: Likewise. * localedata/locales/wa_BE: Likewise. * localedata/locales/wae_CH: Likewise. * localedata/locales/wal_ET: Likewise. * localedata/locales/wo_SN: Likewise. * localedata/locales/xh_ZA: Likewise. * localedata/locales/yi_US: Likewise. * localedata/locales/yo_NG: Likewise. * localedata/locales/yue_HK: Likewise. * localedata/locales/yuw_PG: Likewise. * localedata/locales/zh_CN: Likewise. * localedata/locales/zh_HK: Likewise. * localedata/locales/zh_SG: Likewise. * localedata/locales/zh_TW: Likewise. * localedata/locales/zu_ZA: Likewise.
2017-11-13support: Add <support/next_to_fault.h>Florian Weimer
Based on the implementation in resolv/tst-inet_pton.c.
2017-11-13Add missing ChangeLog sub-entriesFlorian Weimer
2017-11-13ld.so: Add architecture specific fieldsH.J. Lu
To support Intel Control-flow Enforcement Technology (CET) run-time control: 1. An architecture specific field in the writable ld.so namespace is needed to indicate if CET features are enabled at run-time. 2. An architecture specific field in struct link_map is needed if CET features are enabled in an ELF module. This patch adds dl-procruntime.c to the writable ld.so namespace and link_map.h to struct link_map. Tested with build-many-glibcs.py. * elf/dl-support.c: Include <dl-procruntime.c>. * include/link.h: Include <link_map.h>. * sysdeps/generic/dl-procruntime.c: New file. * sysdeps/generic/link_map.h: Likewise. * sysdeps/generic/ldsodefs.h: Include <dl-procruntime.c> in the writable ld.so namespace.
2017-11-12timezone: pacify GCC -Wstringop-truncationPaul Eggert
Problem reported by Martin Sebor in: https://sourceware.org/ml/libc-alpha/2017-11/msg00336.html * timezone/zic.c (writezone): Use memcpy, not strncpy.
2017-11-12support: Add xstrndup, xunlink, xreadlink, support_create_temp_directoryFlorian Weimer
2017-11-11Fix clog10_downward ulps on hppa.John David Anglin
2017-11-11 John David Anglin <danglin@gcc.gnu.org> * sysdeps/hppa/fpu/libm-test-ulps: Update clog10_downward ulps.
2017-11-11resolv: More precise checks in res_hnok, res_dnok [BZ #22409] [BZ #22412]Florian Weimer
res_hnok rejected some host names used on the Internet, such as www-.example.com. res_hnok and res_dnok failed to perform basic syntax checking on DNS domain names. Also fix res_mailok, res_ownok.
2017-11-11resolv: ns_name_pton should report trailing \ as error [BZ #22413]Florian Weimer