about summary refs log tree commit diff
path: root/sysdeps
Commit message (Collapse)AuthorAgeFilesLines
* Fix powerpc nearbyint wrongly clearing "inexact" and leaving traps disabled ↵Joseph Myers2015-11-114-8/+16
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | (bug 19228). Similar to bug 15491 recently fixed for x86_64 / x86, the powerpc (both powerpc32 and powerpc64) hard-float implementations of nearbyintf and nearbyint wrongly clear an "inexact" exception that was raised before the function was called; this shows up as failure of the test math/test-nearbyint-except added when that bug was fixed. They also wrongly leave traps on "inexact" disabled if they were enabled before the function was called. This patch fixes the bugs similar to how the x86 bug was fixed: saving and restoring the whole floating-point state, both to restore the original "inexact" flag state and to restore the original state of whether traps on "inexact" were enabled. Because there's a convenient point in the powerpc implementations to save state after any sNaN arguments will have raised "invalid" but before "inexact" traps need to be disabled, no special handling for "invalid" is needed as in the x86 version. Tested for powerpc64 and powerpc32, where it fixes the math/test-nearbyint-except failure as well as fixing the new test math/test-nearbyint-except-2 added by this patch. Also tested for x86_64 and x86 that the new test passes. If powerpc experts see a more efficient way of doing this (e.g. instruction positioning that's better for pipelines on typical processors) then of course followups optimizing the fix are welcome. [BZ #19228] * sysdeps/powerpc/powerpc32/fpu/s_nearbyint.S (__nearbyint): Save and restore full floating-point state. * sysdeps/powerpc/powerpc32/fpu/s_nearbyintf.S (__nearbyintf): Likewise. * sysdeps/powerpc/powerpc64/fpu/s_nearbyint.S (__nearbyint): Likewise. * sysdeps/powerpc/powerpc64/fpu/s_nearbyintf.S (__nearbyintf): Likewise. * math/test-nearbyint-except-2.c: New file. * math/Makefile (tests): Add test-nearbyint-except-2.
* Add a test for prelink outputH.J. Lu2015-11-103-0/+46
| | | | | | | | | | | | | | This test applies to i386 and x86_64 which set R_386_GLOB_DAT and R_X86_64_GLOB_DAT to ELF_RTYPE_CLASS_EXTERN_PROTECTED_DATA. [BZ #19178] * sysdeps/x86/Makefile (tests): Add tst-prelink. (tst-prelink-ENV): New. ($(objpfx)tst-prelink-conflict.out): Likewise. ($(objpfx)tst-prelink-cmp.out): Likewise. (tests-special): Add $(objpfx)tst-prelink-cmp.out. * sysdeps/x86/tst-prelink.c: New file. * sysdeps/x86/tst-prelink.exp: Likewise.
* Fix nearbyintl linkage for ia64 (bug 19219)Adhemerval Zanella2015-11-101-2/+3
| | | | | | | | | | | | | GLIBC fails to build for ia64 since commit d0d286d32dda654f8983e8fe77bca0a2cda2051b. It is because this commit uses the internal definition for nearbyintl, but ia64 specialized implementation (sysdeps/ia64/fpu/s_nearbyintl.S) does not define it. Tested with a ia64 build. [BZ #19219] * sysdeps/ia64/fpu/s_nearbyintl.S (__nearbyint): Define and weak_alias to nearbyintl.
* Enable _STRING_ARCH_unaligned on AArch64.Wilco Dijkstra2015-11-101-0/+24
| | | | | * sysdeps/aarch64/bits/string.h: New file. (_STRING_ARCH_unaligned): Define.
* Remove __signbit* from localplt.data as they are no longer called from ↵Wilco Dijkstra2015-11-105-17/+0
| | | | | | | | | | within GLIBC. * sysdeps/unix/sysv/linux/aarch64/localplt.data: Remove __signbit*. * sysdeps/unix/sysv/linux/arm/localplt.data: Likewise. * sysdeps/unix/sysv/linux/microblaze/localplt.data: Likewise. * sysdeps/unix/sysv/linux/nios2/localplt.data: Likewise. * sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/localplt.data: Likewise.
* ld.so: Add original DSO name if overridden by audit module [BZ #18251]Florian Weimer2015-11-091-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | * elf/dl-load.c (_dl_map_object_from_fd): Add additional parameter for original name of the DSO. Add it to the name list of the DSO if it is actually given. (_dl_map_object): Keep track of whether an audit module rewrote the file name. If yes, pass the original name to _dl_map_object_from_fd in a new parameter, otherwise NULL. When debugging is enabled, log the change of the file name. * sysdeps/mach/hur/dl-sysdep.c: Adjust commented-out call to _dl_map_object_from_fd. * elf/Makefile: Build and run tst-audit11 and tst-audit12. * elf/tst-audit11.c: New file * elf/tst-auditmod11.c: New file. * elf/tst-audit11mod1.c: New file. * elf/tst-audit11mod2.c: New file. * elf/tst-audit11mod2.map: New file. * elf/tst-audit12.c: New file * elf/tst-auditmod12.c: New file. * elf/tst-audit12mod1.c: New file. * elf/tst-audit12mod2.c: New file. * elf/tst-audit12mod2.map: New file. * elf/tst-audit12mod3.c: New file.
* S390: Clean setjmp, longjmp, getcontext symbols.Stefan Liebler2015-11-095-30/+50
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | For each function setjmp, longjmp, getcontext, there exist a symbol <func> and a default/versioned symbol <func>@@GLIBC_2.x in the build obj-files. This is wrong because it should only exist an unversioned or a default-versioned symbol with the same name in an obj-file. Glibc can't be build with recent binutils. See the already fixed linker bug https://sourceware.org/bugzilla/show_bug.cgi?id=19073. Nevertheless, this patch cleans this up. Furthermore the BSD entry points setjmp, _setjmp were marked as weak, but should be strong as on other architectures. (see https://sourceware.org/ml/libc-alpha/2014-07/msg00568.html for an older discussion with Andreas Schwab) Some whitespace issues are corrected in sysdeps/s390/s390-64/setjmp.S, too. But there is no change in the assembler code. ChangeLog: * sysdeps/s390/longjmp.c (longjmp, _longjmp, siglongjmp): Don't create weak aliases, because versioned symbols are created later. * sysdeps/s390/s390-32/setjmp.S (setjmp, _setjmp): Remove weak and rename to an unique name in SHARED case due to existing versioned symbols. * sysdeps/s390/s390-64/setjmp.S: Likewise. * sysdeps/unix/sysv/linux/s390/s390-32/getcontext.S (getcontext): Create weak alias only in non SHARED case. * sysdeps/unix/sysv/linux/s390/s390-64/getcontext.S: Likewise.
* S390: Call direct system calls for socket operations.Stefan Liebler2015-11-095-19/+30
| | | | | | | | | | | | | | | | | | | | | this patch calls direct system calls for socket operations in the same way as power does. The system calls were introduced in kernel commit https://git.kernel.org/cgit/linux/kernel/git/torvalds/linux.git/commit/?id=977108f89c989b1eeb5c8d938e1e71913391eb5f. There are no direct recv, send, accept syscalls available on s390. Thus recvfrom, sendto, accept4 are called instead of the socketcall by defining __ASSUME_*_FOR_*_SYSCALL macros. See recv.c, send.c, accept.c in sysdeps/unix/sysv/linux/ folder. The socketcalls in syscalls.list for s390-64 are removed. They were never used on s390x. ChangeLog: * sysdeps/unix/sysv/linux/s390/kernel-features.h: (__ASSUME_*_SYSCALL) Define new macros. * sysdeps/unix/sysv/linux/s390/s390-64/syscalls.list: Remove socketcall syscalls. * sysdeps/unix/sysv/linux/accept.c (__libc_accept): Use accept4 if defined __ASSUME_ACCEPT4_FOR_ACCEPT_SYSCALL. * sysdeps/unix/sysv/linux/recv.c (__libc_recv): Use recvfrom if defined __ASSUME_RECVFROM_FOR_RECV_SYSCALL. * sysdeps/unix/sysv/linux/send.c (__libc_send): Use sendto if defined __ASSUME_SENDTO_FOR_SEND_SYSCALL.
* Terminate process on invalid netlink response from kernel [BZ #12926]Florian Weimer2015-11-097-1/+121
| | | | | | | | | | | | | | | | | | | | | | | | | The recvmsg system calls for netlink sockets have been particularly prone to picking up unrelated data after a file descriptor race (where the descriptor is closed and reopened concurrently in a multi-threaded process, as the result of a file descriptor management issue elsewhere). This commit adds additional error checking and aborts the process if a datagram of unexpected length (without the netlink header) is received, or an error code which cannot happen due to the way the netlink socket is used. [BZ #12926] Terminate process on invalid netlink response. * sysdeps/unix/sysv/linux/netlinkaccess.h (__netlink_assert_response): Declare. * sysdeps/unix/sysv/linux/netlink_assert_response.c: New file. * sysdeps/unix/sysv/linux/Makefile [$(subdir) == inet] (sysdep_routines): Add netlink_assert_response. * sysdeps/unix/sysv/linux/check_native.c (__check_native): Call __netlink_assert_response. * sysdeps/unix/sysv/linux/check_pf.c (make_request): Likewise. * sysdeps/unix/sysv/linux/ifaddrs.c (__netlink_request): Likewise. * sysdeps/unix/sysv/linux/Versions (GLIBC_PRIVATE): Add __netlink_assert_response.
* Simplify the abilist formatFlorian Weimer2015-11-06360-92535/+91052
| | | | | | | | | | | | | | | The new format lists the version on each line, as in: VERSION SYMBOL TYPE [VALUE] This makes it easier to process the files with line-oriented tools. The abilist files were converted with this awk script: /^[^ ]/ { version = $1 } /^ / { print version, substr($0, 2) } And sorted under the "C" locale with sort.
* Add LFS support for fts functions (bug 11460)Mark Wielaard2015-11-0634-0/+220
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | fts didn't have large-file support yet and fts.h had an #error preventing usage when _FILE_OFFSET_BITS was set. This required nasty workarounds for programs using fts with LFS. This patch implements LFS support for fts by adding FTS64 and FTENT64 variants plus fts64 functions. Which are simple aliases for 64bit off_t arches. Also includes a simple testcase for some of the fts functions with or without LFS enabled. [BZ #11460] * io/Makefile (routines): Add fts64. (tests): Add tst-fts and tst-fts-lfs. (CFLAGS-fts64.c): New. * io/Versions (GLIBC_2.23): New. * io/fts.c: Replace FTS with FTSOBJ, FTSENT with FTSENTRY. Use function defines FTS_OPEN, FTS_CLOSE, FTS_READ, FTS_SET and FTS_CHILDREN. Define FTSOBJ, FTSENTRY, FTS_OPEN, FTS_CLOSE, FTS_READ, FTS_SET, FTS_CHILDREN, INO_T, STAT and LSTAT if necessary. * io/fts.h (FTS64): New if _USE_LARGEFILE64. (FTSENT64): Likewise. (fts64_children): Likewise. (fts64_close): Likewise. (fts64_open): Likewise. (fts64_read): Likewise. (fts64_set): Likewise. * io/fts64.c: New file. * io/tst-fts.c: New test. * io/tst-fts-lfs.c: Likewise. * sysdeps/unix/sysv/linux/aarch64/libc.abilist (GLIBC_2.23): Add GLIBC_2.23, fts64_children, fts64_close, fts64_open, fts64_read and fts64_set. * sysdeps/unix/sysv/linux/alpha/libc.abilist: Likewise. * sysdeps/unix/sysv/linux/arm/libc.abilist: Likewise. * sysdeps/unix/sysv/linux/hppa/libc.abilist: Likewise. * sysdeps/unix/sysv/linux/i386/libc.abilist: Likewise. * sysdeps/unix/sysv/linux/ia64/libc.abilist: Likewise. * sysdeps/unix/sysv/linux/m68k/coldfire/libc.abilist: Likewise. * sysdeps/unix/sysv/linux/m68k/m680x0/libc.abilist: Likewise. * sysdeps/unix/sysv/linux/microblaze/libc.abilist: Likewise. * sysdeps/unix/sysv/linux/mips/mips32/fpu/libc.abilist: Likewise. * sysdeps/unix/sysv/linux/mips/mips32/nofpu/libc.abilist: Likewise. * sysdeps/unix/sysv/linux/mips/mips64/n32/libc.abilist: Likewise. * sysdeps/unix/sysv/linux/mips/mips64/n64/libc.abilist: Likewise. * sysdeps/unix/sysv/linux/nios2/libc.abilist: Likewise. * sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libc.abilist: Likewise. * sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libc.abilist: Likewise. * sysdeps/unix/sysv/linux/powerpc/powerpc64/libc.abilist: Likewise. * sysdeps/unix/sysv/linux/powerpc/powerpc64/libc-le.abilist: Likewise. * sysdeps/unix/sysv/linux/s390/s390-32/libc.abilist: Likewise. * sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist: Likewise. * sysdeps/unix/sysv/linux/sh/libc.abilist: Likewise. * sysdeps/unix/sysv/linux/sparc/sparc32/libc.abilist: Likewise. * sysdeps/unix/sysv/linux/sparc/sparc64/libc.abilist: Likewise. * sysdeps/unix/sysv/linux/tile/tilegx/tilegx32/libc.abilist: Likewise. * sysdeps/unix/sysv/linux/tile/tilegx/tilegx64/libc.abilist: Likewise. * sysdeps/unix/sysv/linux/tile/tilepro/libc.abilist: Likewise. * sysdeps/unix/sysv/linux/x86_64/64/libc.abilist: Likewise. * sysdeps/unix/sysv/linux/x86_64/x32/libc.abilist: Likewise. * sysdeps/wordsize-64/fts.c: New file. * sysdeps/wordsize-64/fts64.c: Likewise. * sysdeps/unix/sysv/linux/mips/mips64/n64/fts.c: Likewise. * sysdeps/unix/sysv/linux/mips/mips64/n64/fts64.c: Likewise. * sysdeps/unix/sysv/linux/x86_64/x32/fts.c: likewise. * sysdeps/unix/sysv/linux/x86_64/x32/fts64.c: likewise.
* Fix i386/x86_64 log* (1) zero sign for -ffinite-math-only (bug 19213).Joseph Myers2015-11-057-7/+49
| | | | | | | | | | | | | | | | | | | | | For the -ffinite-math-only versions of various x86_64 and x86 log* functions, a zero result from log* (1) is returned with incorrect sign in round-downward mode. This patch fixes this in a similar way to the previous fixes for the non-*_finite versions of the functions. Tested for x86_64 and x86 (including an i586 build), together with a patch that will be applied separately to enable the main libm-test.inc tests for the finite-math-only functions. [BZ #19213] * sysdeps/i386/fpu/e_log.S (__log_finite): Ensure +0 is always returned for argument 1. * sysdeps/i386/fpu/e_logf.S (__logf_finite): Likewise. * sysdeps/i386/fpu/e_logl.S (__logl_finite): Likewise. * sysdeps/i386/i686/fpu/e_logl.S (__logl_finite): Likewise. * sysdeps/x86_64/fpu/e_log10l.S (__log10l_finite): Likewise. * sysdeps/x86_64/fpu/e_log2l.S (__log2l_finite): Likewise. * sysdeps/x86_64/fpu/e_logl.S (__logl_finite): Likewise.
* Remove miscellaneous GCC >= 4.7 version conditionals.Joseph Myers2015-11-044-47/+25
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch removes miscellaneous __GNUC_PREREQ (4, 7) conditionals that are now dead. Tested for x86_64 and x86 (testsuite, and that installed stripped shared libraries are unchanged by the patch). * sysdeps/arm/atomic-machine.h [__GNUC_PREREQ (4, 7) && __GCC_HAVE_SYNC_COMPARE_AND_SWAP_4]: Change conditional to [__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4]. [__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4 && !__GNUC_PREREQ (4, 7)]: Remove conditional code. [!__GNUC_PREREQ (4, 7) || !__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4]: Change conditional to [!__GCC_HAVE_SYNC_COMPARE_AND_SWAP_4]. * sysdeps/i386/sysdep.h [__ASSEMBLER__ && __GNUC_PREREQ (4, 7)]: Change conditional to [__ASSEMBLER__]. [__ASSEMBLER__ && !__GNUC_PREREQ (4, 7)]: Remove conditional code. [!__ASSEMBLER__ && __GNUC_PREREQ (4, 7)]: Change conditional to [!__ASSEMBLER__]. [!__ASSEMBLER__ && !__GNUC_PREREQ (4, 7)]: Remove conditional code. * sysdeps/unix/sysv/linux/sh/atomic-machine.h (rNOSP): Remove conditional macro definitions. (__arch_compare_and_exchange_val_8_acq): Use "u" instead of rNOSP. (__arch_compare_and_exchange_val_16_acq): Likewise. (__arch_compare_and_exchange_val_32_acq): Likewise. (atomic_exchange_and_add): Likewise. (atomic_add): Likewise. (atomic_add_negative): Likewise. (atomic_add_zero): Likewise. (atomic_bit_set): Likewise. (atomic_bit_test_set): Likewise. * sysdeps/x86_64/atomic-machine.h [__GNUC_PREREQ (4, 7)]: Make code unconditional. [!__GNUC_PREREQ (4, 7)]: Remove conditional code.
* Add more libm tests (scalb*, signbit, sin, sincos, sinh, sqrt, tan, tanh, ↵Joseph Myers2015-11-041-4/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | tgamma, y0, y1, yn, significand). This patch improves the libm test coverage for a few more functions. Tested for x86_64 and x86. * math/auto-libm-test-in: Add more tests of sin, sincos, sinh, sqrt, tan, tanh, y0, y1 and yn. * math/auto-libm-test-out: Regenerated. * math/libm-test.inc (scalb_test_data): Add more tests. (scalbn_test_data): Likewise. (scalbln_test_data): Likewise. (signbit_test_data): Likewise. (sin_test_data): Likewise. (sincos_test_data): Likewise. (sinh_test_data): Likewise. (sqrt_test_data): Likewise. (tan_test_data): Likewise. (tanh_test_data): Likewise. (tgamma_test_data): Likewise. (y0_test_data): Likewise. (y1_test_data): Likewise. (yn_test_data): Likewise. (significand_test_data): Likewise. * sysdeps/i386/fpu/libm-test-ulps: Update.
* Fix dbl-64 remainder sign of zero result (bug 19201).Joseph Myers2015-11-031-0/+2
| | | | | | | | | | | | | | | | | | For some large arguments, the dbl-64 implementation of remainder gives zero results with the wrong sign, resulting from a subtraction that is mathematically correct but does not guarantee that a zero result has the sign of the first argument to remainder. This patch adds an appropriate check for this case, similar to other implementations of remainder in the case of equality, and adds tests of remainder on inputs already used to test remquo. Tested for x86_64 and x86. [BZ #19201] * sysdeps/ieee754/dbl-64/e_remainder.c (__ieee754_remainder): Check for zero remainder in case of large exponents and ensure correct sign of result in that case. * math/libm-test.inc (remainder_test_data): Add more tests.
* Make nextafter, nexttoward set errno (bug 6799).Joseph Myers2015-11-0214-0/+44
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | nextafter and nexttoward fail to set errno on overflow and underflow. This patch makes them do so in cases that should include all the cases where such errno setting is required by glibc's goals for when to set errno (but not all cases of underflow where the result is nonzero and so glibc's goals do not require errno setting). Tested for x86_64, x86, mips64 and powerpc. [BZ #6799] * math/s_nextafter.c: Include <errno.h>. (__nextafter): Set errno on overflow and underflow. * math/s_nexttowardf.c: Include <errno.h>. (__nexttowardf): Set errno on overflow and underflow. * sysdeps/i386/fpu/s_nextafterl.c: Include <errno.h>. (__nextafterl): Set errno on overflow and underflow. * sysdeps/i386/fpu/s_nexttoward.c: Include <errno.h>. (__nexttoward): Set errno on overflow and underflow. * sysdeps/i386/fpu/s_nexttowardf.c: Include <errno.h>. (__nexttowardf): Set errno on overflow and underflow. * sysdeps/ieee754/flt-32/s_nextafterf.c: Include <errno.h>. (__nextafterf): Set errno on overflow and underflow. * sysdeps/ieee754/ldbl-128/s_nextafterl.c: Include <errno.h>. (__nextafterl): Set errno on overflow and underflow. * sysdeps/ieee754/ldbl-128/s_nexttoward.c: Include <errno.h>. (__nexttoward): Set errno on overflow and underflow. * sysdeps/ieee754/ldbl-128/s_nexttowardf.c: Include <errno.h>. (__nexttowardf): Set errno on overflow and underflow. * sysdeps/ieee754/ldbl-128ibm/s_nextafterl.c: Include <errno.h>. (__nextafterl): Set errno on overflow and underflow. * sysdeps/ieee754/ldbl-128ibm/s_nexttoward.c: Include <errno.h>. (__nexttoward): Set errno on overflow and underflow. * sysdeps/ieee754/ldbl-128ibm/s_nexttowardf.c: Include <errno.h>. (__nexttowardf): Set errno on overflow and underflow. * sysdeps/ieee754/ldbl-96/s_nexttoward.c: Include <errno.h>. (__nexttoward): Set errno on overflow and underflow. * sysdeps/ieee754/ldbl-96/s_nexttowardf.c: Include <errno.h>. (__nexttowardf): Set errno on overflow and underflow. * sysdeps/ieee754/ldbl-opt/s_nexttowardfd.c: Include <errno.h>. (__nldbl_nexttowardf): Set errno on overflow and underflow. * sysdeps/m68k/m680x0/fpu/s_nextafterl.c: Include <errno.h>. (__nextafterl): Set errno on overflow and underflow. * math/libm-test.inc (nextafter_test_data): Do not allow errno setting to be missing on overflow. Add more tests. (nexttoward_test_data): Likewise.
* Fix ldbl-128 log1pl (-qNaN) spurious "invalid" exception (bug 19189).Joseph Myers2015-10-291-2/+2
| | | | | | | | | | | | | | | The ldbl-128 version of log1pl raises a spurious "invalid" exception for a -qNaN argument. This patch fixes this by making the initial check for infinities and NaNs handle arguments of both signs in such a way that NaNs result in a NaN being returned (quietly if the input NaN was quiet) while +Inf results in +Inf being returned and -Inf results in a qNaN being returned with "invalid" exception raised. Tested for mips64. [BZ #19189] * sysdeps/ieee754/ldbl-128/s_log1pl.c (__log1pl): Make check for non-finite argument handle arguments with negative sign.
* Make drem an alias of remainder (bug 16171).Joseph Myers2015-10-2910-21/+11
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The libm drem functions just call the corresponding __remainder functions. This patch removes the unnecessary wrappers by making them into weak aliases at the ELF level. Tested for x86_64, x86, mips64 and powerpc. [BZ #16171] * math/w_remainder.c (drem): Define as weak alias of __remainder. [NO_LONG_DOUBLE] (dreml): Define as weak alias of __remainder. * math/w_remainderf.c (dremf): Define as weak alias of __remainderf. * math/w_remainderl.c (dreml): Define as weak alias of __remainderl. * sysdeps/ia64/fpu/e_remainder.S (drem): Define as weak alias of __remainder. * sysdeps/ia64/fpu/e_remainderf.S (dremf): Define as weak alias of __remainderf. * sysdeps/ia64/fpu/e_remainderl.S (dreml): Define as weak alias of __remainderl. * sysdeps/ieee754/ldbl-opt/nldbl-remainder.c (dreml): Define as weak alias of remainderl. * sysdeps/ieee754/ldbl-opt/w_remainder.c [LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)] (__drem): Define as strong alias of __remainder. [LONG_DOUBLE_COMPAT(libm, GLIBC_2_0)] (dreml): Use compat_symbol. * sysdeps/ieee754/ldbl-opt/w_remainderl.c (__dreml): Define as strong alias of __remainderl. (dreml): Use long_double_symbol. * math/Makefile (libm-calls): Remove w_drem. * sysdeps/ieee754/ldbl-opt/Makefile (libnldbl-calls): Remove drem. (CFLAGS-nldbl-drem.c): Remove variable. (CFLAGS-nldbl-remainder.c): Add -fno-builtin-dreml. * math/w_drem.c: Remove file. * math/w_dremf.c: Likewise. * math/w_dreml.c: Likewise. * sysdeps/ieee754/ldbl-opt/nldbl-drem.c: Likewise. * sysdeps/ieee754/ldbl-opt/w_drem.c: Likewise. * sysdeps/ieee754/ldbl-opt/w_dreml.c: Likewise.
* Remove cpuid.h configure tests.Joseph Myers2015-10-294-92/+0
| | | | | | | | | | | | | | There are configure tests for the cpuid.h header for x86 / x86_64. GCC 4.3 and later install this header, so those tests are obsolete. This patch removes them. Tested for x86_64 and x86 (testsuite, and that installed shared libraries are unchanged by the patch). * sysdeps/i386/configure.ac (cpuid.h): Do not test for header. * sysdeps/i386/configure: Regenerated. * sysdeps/x86_64/configure.ac (cpuid.h): Do not test for header. * sysdeps/x86_64/configure: Regenerated.
* Handle more state in i386/x86_64 fesetenv (bug 16068).Joseph Myers2015-10-285-21/+407
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | fenv_t should include architecture-specific floating-point modes and status flags. i386 and x86_64 fesetenv limit which bits they use from the x87 status and control words, when using saved state, and limit which parts of the state they set to fixed values, when using FE_DFL_ENV / FE_NOMASK_ENV. The following should be included but are excluded in at least some cases: status and masking for the "denormal operand" exception (which isn't part of FE_ALL_EXCEPT); precision control (explicitly mentioned in Annex F as something that counts as part of the floating-point environment); MXCSR FZ and DAZ bits (for FE_DFL_ENV and FE_NOMASK_ENV). This patch arranges for this extra state to be handled by fesetenv (and thereby by feupdateenv, which calls fesetenv). (Note that glibc functions using floating point are not generally expected to work correctly with non-default values of this state, especially precision control, but it is still logically part of the floating-point environment and should be handled as such by fesetenv. Changes to the state relating to subnormals ought generally to work with libm functions when the arguments aren't subnormal and neither are the expected results; that's a consequence of functions avoiding spurious internal underflows.) A question arising from this is whether FE_NOMASK_ENV should or should not mask the "denormal operand" exception. I decided it should mask that exception. This is the status quo - previously that exception could only be unmasked by direct manipulation of control registers (possibly via <fpu_control.h>). In addition, it means that use of FE_NOMASK_ENV leaves a floating-point environment the same as could be obtained by fesetenv (FE_DFL_ENV); feenableexcept (FE_ALL_EXCEPT);, rather than an environment in which an exception is unmasked that could only be masked again by using fesetenv with FE_DFL_ENV (or a previously saved environment) - this exception not being usable with other <fenv.h> functions because it's outside FE_ALL_EXCEPT. Tested for x86_64 and x86. [BZ #16068] * sysdeps/i386/fpu/fesetenv.c: Include <fpu_control.h>. (FE_ALL_EXCEPT_X86): New macro. (__fesetenv): Use FE_ALL_EXCEPT_X86 in most places instead of FE_ALL_EXCEPT. Ensure precision control is included in floating-point state. Ensure that FE_DFL_ENV and FE_NOMASK_ENV handle "denormal operand exception" and clear FZ and DAZ bits. * sysdeps/x86_64/fpu/fesetenv.c: Include <fpu_control.h>. (FE_ALL_EXCEPT_X86): New macro. (__fesetenv): Use FE_ALL_EXCEPT_X86 in most places instead of FE_ALL_EXCEPT. Ensure precision control is included in floating-point state. Ensure that FE_DFL_ENV and FE_NOMASK_ENV handle "denormal operand exception" and clear FZ and DAZ bits. * sysdeps/x86/fpu/test-fenv-sse-2.c: New file. * sysdeps/x86/fpu/test-fenv-x87.c: Likewise. * sysdeps/x86/fpu/Makefile [$(subdir) = math] (tests): Add test-fenv-x87 and test-fenv-sse-2. [$(subdir) = math] (CFLAGS-test-fenv-sse-2.c): New variable.
* Use C11 *_TRUE_MIN macros where applicable.Joseph Myers2015-10-284-6/+7
| | | | | | | | | | | | | | | | | | | | | | | | | C11 defines standard <float.h> macros *_TRUE_MIN for the least positive subnormal value of a type. Now that we build with -std=gnu11, we can use these macros in glibc. This patch replaces previous uses of the GCC predefines __*_DENORM_MIN__ (used in <float.h> to define *_TRUE_MIN), as well as *_DENORM_MIN references in comments. Tested for x86_64 and x86 (testsuite, and that installed shared libraries are unchanged by the patch). Also tested for powerpc that installed stripped shared libraries are unchanged by the patch. * math/libm-test.inc (min_subnorm_value): Use LDBL_TRUE_MIN, DBL_TRUE_MIN and FLT_TRUE_MIN instead of __LDBL_DENORM_MIN__, __DBL_DENORM_MIN__ and __FLT_DENORM_MIN__. * sysdeps/ieee754/dbl-64/s_fma.c (__fma): Refer to DBL_TRUE_MIN instead of DBL_DENORM_MIN in comment. * sysdeps/ieee754/ldbl-128/s_fmal.c (__fmal): Refer to LDBL_TRUE_MIN instead of LDBL_DENORM_MIN in comment. * sysdeps/ieee754/ldbl-128ibm/s_nextafterl.c: Include <float.h>. (__nextafterl): Use LDBL_TRUE_MIN instead of __LDBL_DENORM_MIN__. * sysdeps/ieee754/ldbl-96/s_fmal.c (__fmal): Refer to LDBL_TRUE_MIN instead of LDBL_DENORM_MIN in comment.
* Fix i386/x86_64 fesetenv SSE exception clearing (bug 19181).Joseph Myers2015-10-284-1/+55
| | | | | | | | | | | | | | | | | | | | | | | The i386 and x86_64 versions of fesetenv, when called with FE_DFL_ENV or FE_NOMASK_ENV as argument, do not clear SSE exceptions raised in MXCSR. These arguments should, like other fenv_t values, represent the whole of the floating-point state, so such exceptions should be cleared; this patch adds the required clearing. (Discovered while working on bug 16068.) Tested for x86_64 and x86. [BZ #19181] * sysdeps/i386/fpu/fesetenv.c (__fesetenv): Clear already-raised SSE exceptions when argument is FE_DFL_ENV or FE_NOMASK_ENV. * sysdeps/x86_64/fpu/fesetenv.c (__fesetenv): Likewise. * math/test-fenv-clear-main.c: New file. * math/test-fenv-clear.c: Likewise. * math/Makefile (tests): Add test-fenv-clear. * sysdeps/x86/fpu/test-fenv-clear-sse.c: New file. * sysdeps/x86/fpu/Makefile [$(subdir) = math] (tests): Add test-fenv-clear-sse. [$(subdir) = math] (CFLAGS-test-fenv-clear-sse.c): New variable.
* powerpc: Provide __tls_get_addr () in static libcCarlos Eduardo Seo2015-10-281-0/+32
| | | | | | | | | Since '--no-tls-optimize' is available for Power in ld, we need to provide __tls_get_addr () in static libc in order to avoid undefined references to this symbol when that flag is used. * sysdeps/powerpc/libc-tls.c: New file. Provides __tls_get_addr () in static libc.
* Remove -mavx2 configure tests.Joseph Myers2015-10-288-93/+15
| | | | | | | | | | | | | | | | | | | | | | | | | | | There are configure tests for the -mavx2 compiler option. AVX2 support was added in GCC 4.7, so these tests are now obsolete; this patch removes them. Tested for x86_64 and x86 (testsuite, and that installed stripped shared libraries are unchanged by the patch). * sysdeps/i386/configure.ac (libc_cv_cc_avx2): Remove configure test. * sysdeps/i386/configure: Regenerated. * sysdeps/x86_64/configure.ac (libc_cv_cc_avx2): Remove configure test. * sysdeps/x86_64/configure: Regenerated. * config.h.in (HAVE_AVX2_SUPPORT): Remove #undef. * sysdeps/x86_64/multiarch/Makefile (sysdep_routines): Add memset-avx2 unconditionally instead of conditionally on [$(config-cflags-avx2) = yes]. * sysdeps/x86_64/multiarch/ifunc-impl-list.c (__libc_ifunc_impl_list) [HAVE_AVX2_SUPPORT]: Make code unconditional. * sysdeps/x86_64/multiarch/memset.S [HAVE_AVX2_SUPPORT]: Likewise. * sysdeps/x86_64/multiarch/memset_chk.S [IS_IN (libc) && SHARED && HAVE_AVX2_SUPPORT]: Change conditional to [IS_IN (libc) && SHARED].
* Remove configure test for ARM TLS descriptors support.Joseph Myers2015-10-273-49/+5
| | | | | | | | | | | | | | | | GCC 4.7 added support for ARM TLS descriptors. The binutils support is present in binutils 2.22. Thus, this patch removes the associated configure test as obsolete (leaving Makefile conditionals, as NaCl sets have-arm-tls-desc = no in its sysdeps fragment). Tested for ARM that installed shared libraries are unchanged by the patch. * sysdeps/arm/configure.ac (libc_cv_arm_tls_desc): Remove configure test. * sysdeps/arm/configure: Regenerated. * sysdeps/arm/Makefile [!have-arm-tls-desc] (have-arm-tls-desc): Define variable if not already defined.
* Remove MIPS16 atomics using __sync_* (bug 17404).Joseph Myers2015-10-271-26/+1
| | | | | | | | | | | | | | | MIPS16 atomics used __sync_* with GCC before 4.7, which as noted in bug 17404 is missing the required barrier semantics for atomic_exchange_rel. This patch removes the code in question as dead now GCC before 4.7 is no longer supported for building glibc. Sanity tested with builds for MIPS. [BZ #17404] * sysdeps/mips/atomic-machine.h [__GNUC_PREREQ (4, 8) || (__mips16 && __GNUC_PREREQ (4, 7))]: Change conditional to [__GNUC_PREREQ (4, 8) || __mips16]. [__mips16 && !__GNUC_PREREQ (4, 7)]: Remove conditional code.
* Remove GCC version conditionals on -Wmaybe-uninitialized pragmas.Joseph Myers2015-10-276-24/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | One common case of __GNUC_PREREQ (4, 7) conditionals is use of diagnostic control pragmas for -Wmaybe-uninitialized, an option introduced in GCC 4.7 where older GCC needed -Wuninitialized to be controlled instead if the warning appeared with older GCC. This patch removes such conditionals. (There remain several older uses of -Wno-uninitialized in makefiles that still need to be converted to diagnostic control pragmas if the issue is still present with current sources and supported GCC versions, and it's likely that in most cases those pragmas also will end up controlling -Wmaybe-uninitialized.) Tested for x86_64 and x86 (testsuite, and that installed stripped shared libraries are unchanged by the patch, except for libresolv since res_send.c contains assertions whose line numbers are changed by the patch). * resolv/res_send.c (send_vc) [__GNUC_PREREQ (4, 7)]: Make code unconditional. * soft-fp/fmadf4.c [__GNUC_PREREQ (4, 7)]: Likewise. [!__GNUC_PREREQ (4, 7)]: Remove conditional code. * soft-fp/fmasf4.c [__GNUC_PREREQ (4, 7)]: Make code unconditional. [!__GNUC_PREREQ (4, 7)]: Remove conditional code. * soft-fp/fmatf4.c [__GNUC_PREREQ (4, 7)]: Make code unconditional. [!__GNUC_PREREQ (4, 7)]: Remove conditional code. * stdlib/setenv.c [((__GNUC__ << 16) + __GNUC_MINOR__) >= ((4 << 16) + 7)]: Make code unconditional. [!(((__GNUC__ << 16) + __GNUC_MINOR__) >= ((4 << 16) + 7))]: Remove conditional code. * sysdeps/ieee754/dbl-64/e_lgamma_r.c (__ieee754_lgamma_r) [__GNUC_PREREQ (4, 7)]: Make code unconditional. (__ieee754_lgamma_r) [!__GNUC_PREREQ (4, 7)]: Remove conditional code. * sysdeps/ieee754/flt-32/e_lgammaf_r.c (__ieee754_lgammaf_r) [__GNUC_PREREQ (4, 7)]: Make code unconditional. (__ieee754_lgammaf_r) [!__GNUC_PREREQ (4, 7)]: Remove conditional code. * sysdeps/ieee754/ldbl-128/k_tanl.c (__kernel_tanl) [__GNUC_PREREQ (4, 7)]: Make code unconditional. (__kernel_tanl) [!__GNUC_PREREQ (4, 7)]: Remove conditional code. * sysdeps/ieee754/ldbl-128ibm/k_tanl.c (__kernel_tanl) [__GNUC_PREREQ (4, 7)]: Make code unconditional. (__kernel_tanl) [!__GNUC_PREREQ (4, 7)]: Remove conditional code. * sysdeps/ieee754/ldbl-96/e_lgammal_r.c (__ieee754_lgammal_r) [__GNUC_PREREQ (4, 7)]: Make code unconditional. (__ieee754_lgammal_r) [!__GNUC_PREREQ (4, 7)]: Remove conditional code. * sysdeps/ieee754/ldbl-96/k_tanl.c (__kernel_tanl) [__GNUC_PREREQ (4, 7)]: Make code unconditional. (__kernel_tanl) [!__GNUC_PREREQ (4, 7)]: Remove conditional code.
* Remove sysdeps/nptl/configure.ac.Joseph Myers2015-10-273-117/+0
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | sysdeps/nptl/configure.ac tests for forced unwind support and the C cleanup attribute, giving errors if either is unsupported. It does nothing beyond running those two tests. Both the attribute, and _Unwind_GetCFA which is used in the forced unwind test, were added in GCC 3.3. Thus these tests are long obsolete, and this patch removes the configure fragment running them, along with associated conditionals. Tested for x86_64 and x86 (testsuite, and that installed stripped shared libraries are unchanged by the patch). * sysdeps/nptl/configure.ac: Remove file. * sysdeps/nptl/configure: Remove generated file. * configure.ac (libc_cv_forced_unwind): Do not substitute. * configure: Regenerated. * config.h.in (HAVE_FORCED_UNWIND): Remove #undef. * config.make.in (have-forced-unwind): Remove variable. * nptl/Makefile [$(have-forced-unwind) = yes]: Make code unconditional. * nptl/descr.h [HAVE_FORCED_UNWIND]: Likewise. * nptl/unwind.c [HAVE_FORCED_UNWIND]: Likewise. (__pthread_unwind) [!HAVE_FORCED_UNWIND]: Remove conditional code. * nptl/version.c [HAVE_FORCED_UNWIND]: Make code unconditional. * sysdeps/nptl/Makefile [$(have-forced-unwind) = yes]: Make code unconditional.
* powerpc: Fix usage of elision transient failure adapt paramPaul Murphy2015-10-272-12/+9
| | | | | | | | | | | | | | The skip_lock_out_of_tbegin_retries adaptive parameter was not being used correctly, nor as described. This prevents a fallback for all users of the lock if a transient abort occurs within the accepted number of retries. [BZ #19174] * sysdeps/powerpc/nptl/elide.h (__elide_lock): Fix usage of .skip_lock_out_of_tbegin_retries. * sysdeps/unix/sysv/linux/powerpc/elision-lock.c (__lll_lock_elision): Likewise, and respect a value of try_tbegin <= 0.
* x86_64: Regenerate ulps [BZ #19168]Florian Weimer2015-10-261-6/+6
| | | | This comes from running “make regen-ulps” on AMD Opteron 6272 CPUs.
* Add more libm tests (ilogb, is*, j0, j1, jn, lgamma, log*).Joseph Myers2015-10-231-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch improves the libm test coverage for a few more functions. Tested for x86_64 and x86. * math/auto-libm-test-in: Add more tests of log, log10, log1p and log2. * math/auto-libm-test-out: Regenerated. * math/libm-test.inc (MAX_EXP): New macro. (ilogb_test_data): Add more tests. (isfinite_test_data): Likewise. (isgreater_test_data): Likewise. (isgreaterequal_test_data): Likewise. (isinf_test_data): Likewise. (isless_test_data): Likewise. (islessequal_test_data): Likewise. (islessgreater_test_data): Likewise. (isnan_test_data): Likewise. (isnormal_test_data): Likewise. (issignaling_test_data): Likewise. (isunordered_test_data): Likewise. (j0_test_data): Likewise. (j1_test_data): Likewise. (jn_test_data): Likewise. (lgamma_test_data): Likewise. (log_test_data): Likewise. (log10_test_data): Likewise. (log1p_test_data): Likewise. (log2_test_data): Likewise. (logb_test_data): Likewise. * sysdeps/x86_64/fpu/libm-test-ulps: Update.
* Fix j1, jn missing errno setting on underflow (bug 18611).Joseph Myers2015-10-239-7/+32
| | | | | | | | | | | | | | | | | | | | | | | | j1 and jn can underflow for small arguments, but fail to set errno when underflowing to 0. This patch fixes them to set errno in that case. Tested for x86_64, x86, mips64 and powerpc. [BZ #18611] * sysdeps/ieee754/dbl-64/e_j1.c (__ieee754_j1): Set errno and avoid excess range and precision on underflow. * sysdeps/ieee754/dbl-64/e_jn.c (__ieee754_jn): Likewise. * sysdeps/ieee754/flt-32/e_j1f.c (__ieee754_j1f): Likewise. * sysdeps/ieee754/flt-32/e_jnf.c (__ieee754_jnf): Likewise. * sysdeps/ieee754/ldbl-128/e_j1l.c (__ieee754_j1l): Set errno on underflow. * sysdeps/ieee754/ldbl-128/e_jnl.c (__ieee754_jnl): Likewise. * sysdeps/ieee754/ldbl-128ibm/e_jnl.c (__ieee754_jnl): Likewise. * sysdeps/ieee754/ldbl-96/e_j1l.c (__ieee754_j1l): Likewise. * sysdeps/ieee754/ldbl-96/e_jnl.c (__ieee754_jnl): Likewise. * math/auto-libm-test-in: Do not allow missing errno setting for tests of j1 and jn. * math/auto-libm-test-out: Regenerated.
* Fix i386 / x86_64 nearbyint exception clearing (bug 15491).Joseph Myers2015-10-224-48/+38
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The implementations of nearbyint functions using x87 floating point (i386 all versions, x86_64 long double only) use the fclex instruction, which clears any exceptions that were raised before the function was called. These functions must not clear exceptions that were raised before they were called. This patch fixes these functions to save and restore the whole floating-point environment (fnstenv / fldenv) as the way of avoiding raising "inexact" (recall that there isn't an x87 instruction for loading just the status word, so the whole environment has to be saved and loaded instead - the code already saved and loaded the control word, which is now obtained from the saved environment after this patch, to disable traps on "inexact"). In the case of the long double functions, any "invalid" exception from frndint (applied to a signaling NaN) needs merging into the saved state; this issue doesn't apply to the float and double functions because that exception would have been raised when the argument is loaded, before the environment is saved. [BZ #15491] * sysdeps/i386/fpu/s_nearbyint.S (__nearbyint): Save and restore floating-point environment instead of clearing all exceptions. * sysdeps/i386/fpu/s_nearbyintf.S (__nearbyintf): Likewise. * sysdeps/i386/fpu/s_nearbyintl.S (__nearbyintl): Likewise, merging in "invalid" exceptions from frndint. * sysdeps/x86_64/fpu/s_nearbyintl.S (__nearbyintl): Likewise. * math/test-nearbyint-except.c: New file. * math/Makefile (tests): Add test-nearbyint-except.
* tile: regenerate libm-test-ulpsChris Metcalf2015-10-221-20/+24
|
* Cleanup sync_file_range implementationAdhemerval Zanella2015-10-222-22/+0
| | | | | | | | | | | | | Since GLIBC requires a minimum 2.6.32 kernel, the patch cleanups the mips code to assume __NR_sync_file_range and the powerpc one to either assume __NR_sync_file_range2 or __NR_sync_file_range. Checked on powerpc64le and build for mips (ABIO32, ABIN32, and ABI64). * sysdeps/unix/sysv/linux/powerpc/powerpc64/sync_file_range.c (__NR_sync_file_range2): Assume it is always defined. * sysdeps/unix/sysv/linux/mips/mips32/sync_file_range.c (__NR_sync_file_range): Assume it is always defined.
* Always use INTERNAL_SYSCALL_ERRNO with INTERNAL_SYSCALLAndreas Schwab2015-10-226-6/+12
|
* Build i386 __libc_do_syscall when PROF is definedH.J. Lu2015-10-212-11/+10
| | | | | | | | | | | Need to provide i386 __libc_do_syscall when PROF is defined. Define OPTIMIZE_FOR_GCC_5 for .S files so that it can be used in libc-do-syscall.S. * sysdeps/unix/sysv/linux/i386/libc-do-syscall.S: Replace __GNUC_PREREQ (5,0) with OPTIMIZE_FOR_GCC_5. * sysdeps/unix/sysv/linux/i386/sysdep.h (OPTIMIZE_FOR_GCC_5): Moved before "#ifdef __ASSEMBLER__".
* Fix ldbl-128 j0l spurious underflows (bug 19156).Joseph Myers2015-10-211-0/+2
| | | | | | | | | | | | | | My recent addition of more tests for j0 showed up that the ldbl-128 implementation of j0l produces spurious underflow exceptions for arguments close to 0 (when the result is very close to 1). This patch fixes this by just returning the argument in that case. Tested for mips64 (where it fixes the recently-added tests that were previously failing). [BZ #19156] * sysdeps/ieee754/ldbl-128/e_j0l.c (__ieee754_j0l): Return 1 for arguments very close to 0.
* tile: avoid preprocessor redefinition warningsChris Metcalf2015-10-211-0/+3
| | | | | | PSEUDO_END and PSEUDO_END_NOERRNO are being defined in sysdeps/unix/sysdep.h and then redefined for tile. Add an undef before each define to silence the warnings.
* Disable GCC 5 optimization when PROF is definedH.J. Lu2015-10-211-7/+13
| | | | | | | | | | | Since asm ("ebp") can't be used to put the 6th argument in %ebp for syscall when compiling for profiling, we disable GCC 5 optimization when PROF is defined. * sysdeps/unix/sysv/linux/i386/sysdep.h (OPTIMIZE_FOR_GCC_5): New. Defined for GCC 5 and above when not compiling for profiling. Replace __GNUC_PREREQ (5,0) with OPTIMIZE_FOR_GCC_5.
* Apply -fomit-frame-pointer only to .o/.os filesH.J. Lu2015-10-211-4/+8
| | | | | | | | | | | | | | | | | | | Since -fomit-frame-pointer is compatible with -pg, apply it only to .o/.os files. * sysdeps/unix/sysv/linux/i386/Makefile (CFLAGS-epoll_pwait.c): Renamed to ... (CFLAGS-epoll_pwait.o): This. (CFLAGS-mmap.c): Renamed to ... (CFLAGS-mmap.o): This. (CFLAGS-mmap64.c): Renamed to ... (CFLAGS-mmap64.o): This. (CFLAGS-epoll_pwait.os): New. (CFLAGS-mmap.os): Likewise. (CFLAGS-mmap64.os): Likewise. (CFLAGS-semtimedop.os): Likewise. (CFLAGS-semtimedop.c): Renamed to ... (CFLAGS-semtimedop.o): This.
* Convert miscellaneous function definitions to prototype style.Joseph Myers2015-10-205-15/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch converts various miscellaneous functions definitions in glibc, found with grep and not covered by my previous scripted conversions, from old-style K&R to prototype-style. These changes were made manually. This is not necessarily exhaustive as formatting variants may have prevented my grep from finding some such definitions. Regarding the changes to files from GMP, they may originally have been omitted when removing __STDC__ conditionals because of the files coming from another package, but (a) GMP no longer has __STDC__ conditionals there anyway and (b) we don't try to keep these files verbatim in sync with GMP (and there are licensing differences), so making the change to them in glibc seems reasonable. Tested for x86_64 and x86 (testsuite - this patch affects files containing assertions). * debug/fortify_fail.c (__fortify_fail): Convert to prototype-style function definition. Use internal_function. * libio/genops.c (save_for_backup): Convert to prototype-style function definition. * libio/wgenops.c (save_for_wbackup): Likewise. * login/grantpt.c (grantpt): Likewise. * login/ptsname.c (ptsname): Likewise. (__ptsname_r): Likewise. * login/unlockpt.c (unlockpt): Likewise. * mach/msgserver.c (__mach_msg_server): Likewise. * misc/efgcvt.c (__APPEND (FUNC_PREFIX, fcvt)): Likewise. (__APPEND (FUNC_PREFIX, ecvt)): Likewise. (__APPEND (FUNC_PREFIX, gcvt)): Likewise. * misc/efgcvt_r.c (__APPEND (FUNC_PREFIX, fcvt_r)): Likewise. (__APPEND (FUNC_PREFIX, ecvt_r)): Likewise. * nptl/cleanup_compat.c (_pthread_cleanup_push): Likewise. * nptl/cleanup_defer_compat.c (_pthread_cleanup_push_defer): Likewise. * nptl/libc_pthread_init.c (__libc_pthread_init): Likewise. Use internal_function. * nptl/pthread_atfork.c (__pthread_atfork): Convert to prototype-style function definition. * nptl/pthread_create.c (__pthread_create_2_1): Likewise. [SHLIB_COMPAT(libpthread, GLIBC_2_0, GLIBC_2_1)] (__pthread_create_2_0): Likewise. * nptl/pthread_key_create.c (__pthread_key_create): Likewise. * nptl/register-atfork.c (__register_atfork): Likewise. * posix/glob.c (glob): Likewise. * posix/regcomp.c (re_comp): Likewise. * posix/regexec.c (re_exec): Likewise. * stdlib/add_n.c [__STDC__]: Make code unconditional. [!__STDC__]: Remove conditional code. * stdlib/cmp.c [__STDC__]: Make code unconditional. [!__STDC__]: Remove conditional code. * stdlib/divmod_1.c [__STDC__]: Make code unconditional. [!__STDC__]: Remove conditional code. * stdlib/divrem.c [__STDC__]: Make code unconditional. [!__STDC__]: Remove conditional code. * stdlib/lshift.c [__STDC__]: Make code unconditional. [!__STDC__]: Remove conditional code. * stdlib/mod_1.c [__STDC__]: Make code unconditional. [!__STDC__]: Remove conditional code. * stdlib/mul.c [__STDC__]: Make code unconditional. [!__STDC__]: Remove conditional code. * stdlib/mul_n.c [__STDC__]: Make code unconditional. [!__STDC__]: Remove conditional code. * stdlib/rshift.c [__STDC__]: Make code unconditional. [!__STDC__]: Remove conditional code. * stdlib/strtod.c (INTERNAL (STRTOF)): Convert to prototype-style function definition. (STRTOF): Likewise. * stdlib/strtod_l.c (__STRTOF): Likewise. * stdlib/strtol.c (INTERNAL (strtol)): Likewise. * stdlib/strtol_l.c (INTERNAL (__strtol_l)): Likewise. (__strtol_l): Likewise. * stdlib/sub_n.c [__STDC__]: Make code unconditional. [!__STDC__]: Remove conditional code. * string/memrchr.c (MEMRCHR): Convert to prototype-style function definition. * string/strcasecmp.c (LOCALE_PARAM_DECL): Remove macro. [USE_IN_EXTENDED_LOCALE_MODEL] (LOCALE_PARAM): Include argument type. (__strcasecmp): Convert to prototype-style function definition. * string/strncase.c (LOCALE_PARAM_DECL): Remove macro. [USE_IN_EXTENDED_LOCALE_MODEL] (LOCALE_PARAM): Include argument type. (__strncasecmp): Convert to prototype-style function definition. * sunrpc/pm_getport.c (__libc_rpc_getport): Likewise. * sunrpc/xdr.c (xdr_union): Likewise. * sunrpc/xdr_array.c (xdr_array): Likewise. * sunrpc/xdr_ref.c (xdr_reference): Likewise. * sysdeps/m68k/m680x0/fpu/s_atan.c (__CONCATX(__,FUNC)): Likewise. * sysdeps/m68k/m680x0/fpu/s_isinf.c (__CONCATX(__,FUNC)): Likewise. * sysdeps/m68k/m680x0/fpu/s_scalbn.c (__CONCATX(__scalbn,suffix): Likewise. * sysdeps/m68k/m680x0/fpu/s_sincos.c (CONCATX(__,FUNC)): Likewise. * sysdeps/unix/sysv/linux/i386/scandir64.c (__old_scandir64): Likewise. * time/strftime_l.c (LOCALE_PARAM_DECL): Remove macro. (LOCALE_PARAM_PROTO): Likewise. [_LIBC && USE_IN_EXTENDED_LOCALE_MODEL] (LOCALE_PARAM): Include argument type. (ut_argument_spec): Remove macro. (ut_argument_spec_iso): Rename to ut_argument_spec. (memcpy_lowcase): Use LOCALE_PARAM in declaration. Convert to prototype-style function definition. (memcpy_uppcase): Likewise. (__strftime_internal): Likewise. (my_strftime): Likewise. * time/strptime_l.c (LOCALE_PARAM_PROTO): Remove macro. (LOCALE_PARAM_DECL): Likewise. [_LIBC] (LOCALE_PARAM): Include argument type. (__strptime_internal): Convert to prototype-style function definition. (strptime): Likewise. * wcsmbs/wcscasecmp.c (LOCALE_PARAM_DECL): Remove macro. [USE_IN_EXTENDED_LOCALE_MODEL] (LOCALE_PARAM): Include argument type. (__wcscasecmp): Convert to prototype-style function definition. * wcsmbs/wcsncase.c (LOCALE_PARAM_DECL): Remove macro. [USE_IN_EXTENDED_LOCALE_MODEL] (LOCALE_PARAM): Include argument type. (__wcsncasecmp): Convert to prototype-style function definition.
* Convert 113 more function definitions to prototype style (files with ↵Joseph Myers2015-10-204-13/+5
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | assertions). This mostly automatically-generated patch converts 113 function definitions in glibc from old-style K&R to prototype-style. Following my other recent such patches, this one deals with the case of function definitions in files that either contain assertions or where grep suggested they might contain assertions - and thus where it isn't possible to use a simple object code comparison as a sanity check on the correctness of the patch, because line numbers are changed. A few such automatically-generated changes needed to be supplemented by manual changes for the result to compile. openat64 had a prototype declaration with "..." but an old-style definition in sysdeps/unix/sysv/linux/dl-openat64.c, and "..." needed adding to the generated prototype in the definition (I've filed <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68024> for diagnosing such cases in GCC; the old state was undefined behavior not requiring a diagnostic, but one seems a good idea). In addition, as Florian has noted regparm attribute mismatches between declaration and definition are only diagnosed for prototype definitions, and five functions needed internal_function added to their definitions (in the case of __pthread_mutex_cond_lock, via the macro definition of __pthread_mutex_lock) to compile on i386. After this patch is in, remaining old-style definitions are probably most readily fixed manually before we can turn on -Wold-style-definition for all builds. Tested for x86_64 and x86 (testsuite). * crypt/md5-crypt.c (__md5_crypt_r): Convert to prototype-style function definition. * crypt/sha256-crypt.c (__sha256_crypt_r): Likewise. * crypt/sha512-crypt.c (__sha512_crypt_r): Likewise. * debug/backtracesyms.c (__backtrace_symbols): Likewise. * elf/dl-minimal.c (_itoa): Likewise. * hurd/hurdmalloc.c (malloc): Likewise. (free): Likewise. (realloc): Likewise. * inet/inet6_option.c (inet6_option_space): Likewise. (inet6_option_init): Likewise. (inet6_option_append): Likewise. (inet6_option_alloc): Likewise. (inet6_option_next): Likewise. (inet6_option_find): Likewise. * io/ftw.c (FTW_NAME): Likewise. (NFTW_NAME): Likewise. (NFTW_NEW_NAME): Likewise. (NFTW_OLD_NAME): Likewise. * libio/iofwide.c (_IO_fwide): Likewise. * libio/strops.c (_IO_str_init_static_internal): Likewise. (_IO_str_init_static): Likewise. (_IO_str_init_readonly): Likewise. (_IO_str_overflow): Likewise. (_IO_str_underflow): Likewise. (_IO_str_count): Likewise. (_IO_str_seekoff): Likewise. (_IO_str_pbackfail): Likewise. (_IO_str_finish): Likewise. * libio/wstrops.c (_IO_wstr_init_static): Likewise. (_IO_wstr_overflow): Likewise. (_IO_wstr_underflow): Likewise. (_IO_wstr_count): Likewise. (_IO_wstr_seekoff): Likewise. (_IO_wstr_pbackfail): Likewise. (_IO_wstr_finish): Likewise. * locale/programs/localedef.c (normalize_codeset): Likewise. * locale/programs/locarchive.c (add_locale_to_archive): Likewise. (add_locales_to_archive): Likewise. (delete_locales_from_archive): Likewise. * malloc/malloc.c (__libc_mallinfo): Likewise. * math/gen-auto-libm-tests.c (init_fp_formats): Likewise. * misc/tsearch.c (__tfind): Likewise. * nptl/pthread_attr_destroy.c (__pthread_attr_destroy): Likewise. * nptl/pthread_attr_getdetachstate.c (__pthread_attr_getdetachstate): Likewise. * nptl/pthread_attr_getguardsize.c (pthread_attr_getguardsize): Likewise. * nptl/pthread_attr_getinheritsched.c (__pthread_attr_getinheritsched): Likewise. * nptl/pthread_attr_getschedparam.c (__pthread_attr_getschedparam): Likewise. * nptl/pthread_attr_getschedpolicy.c (__pthread_attr_getschedpolicy): Likewise. * nptl/pthread_attr_getscope.c (__pthread_attr_getscope): Likewise. * nptl/pthread_attr_getstack.c (__pthread_attr_getstack): Likewise. * nptl/pthread_attr_getstackaddr.c (__pthread_attr_getstackaddr): Likewise. * nptl/pthread_attr_getstacksize.c (__pthread_attr_getstacksize): Likewise. * nptl/pthread_attr_init.c (__pthread_attr_init_2_1): Likewise. (__pthread_attr_init_2_0): Likewise. * nptl/pthread_attr_setdetachstate.c (__pthread_attr_setdetachstate): Likewise. * nptl/pthread_attr_setguardsize.c (pthread_attr_setguardsize): Likewise. * nptl/pthread_attr_setinheritsched.c (__pthread_attr_setinheritsched): Likewise. * nptl/pthread_attr_setschedparam.c (__pthread_attr_setschedparam): Likewise. * nptl/pthread_attr_setschedpolicy.c (__pthread_attr_setschedpolicy): Likewise. * nptl/pthread_attr_setscope.c (__pthread_attr_setscope): Likewise. * nptl/pthread_attr_setstack.c (__pthread_attr_setstack): Likewise. * nptl/pthread_attr_setstackaddr.c (__pthread_attr_setstackaddr): Likewise. * nptl/pthread_attr_setstacksize.c (__pthread_attr_setstacksize): Likewise. * nptl/pthread_condattr_setclock.c (pthread_condattr_setclock): Likewise. * nptl/pthread_create.c (__find_in_stack_list): Likewise. * nptl/pthread_getattr_np.c (pthread_getattr_np): Likewise. * nptl/pthread_mutex_cond_lock.c (__pthread_mutex_lock): Define to use internal_function. * nptl/pthread_mutex_init.c (__pthread_mutex_init): Convert to prototype-style function definition. * nptl/pthread_mutex_lock.c (__pthread_mutex_lock): Likewise. (__pthread_mutex_cond_lock_adjust): Likewise. Use internal_function. * nptl/pthread_mutex_timedlock.c (pthread_mutex_timedlock): Convert to prototype-style function definition. * nptl/pthread_mutex_trylock.c (__pthread_mutex_trylock): Likewise. * nptl/pthread_mutex_unlock.c (__pthread_mutex_unlock_usercnt): Likewise. (__pthread_mutex_unlock): Likewise. * nptl_db/td_ta_clear_event.c (td_ta_clear_event): Likewise. * nptl_db/td_ta_set_event.c (td_ta_set_event): Likewise. * nptl_db/td_thr_clear_event.c (td_thr_clear_event): Likewise. * nptl_db/td_thr_event_enable.c (td_thr_event_enable): Likewise. * nptl_db/td_thr_set_event.c (td_thr_set_event): Likewise. * nss/makedb.c (process_input): Likewise. * posix/fnmatch.c (__strchrnul): Likewise. (__wcschrnul): Likewise. (fnmatch): Likewise. * posix/fnmatch_loop.c (FCT): Likewise. * posix/glob.c (globfree): Likewise. (__glob_pattern_type): Likewise. (__glob_pattern_p): Likewise. * posix/regcomp.c (re_compile_pattern): Likewise. (re_set_syntax): Likewise. (re_compile_fastmap): Likewise. (regcomp): Likewise. (regerror): Likewise. (regfree): Likewise. * posix/regexec.c (regexec): Likewise. (re_match): Likewise. (re_search): Likewise. (re_match_2): Likewise. (re_search_2): Likewise. (re_search_stub): Likewise. Use internal_function (re_copy_regs): Likewise. (re_set_registers): Convert to prototype-style function definition. (prune_impossible_nodes): Likewise. Use internal_function. * resolv/inet_net_pton.c (inet_net_pton): Convert to prototype-style function definition. (inet_net_pton_ipv4): Likewise. * stdlib/strtod_l.c (____STRTOF_INTERNAL): Likewise. * sysdeps/pthread/aio_cancel.c (aio_cancel): Likewise. * sysdeps/pthread/aio_suspend.c (aio_suspend): Likewise. * sysdeps/pthread/timer_delete.c (timer_delete): Likewise. * sysdeps/unix/sysv/linux/dl-openat64.c (openat64): Likewise. Make variadic. * time/strptime_l.c (localtime_r): Convert to prototype-style function definition. * wcsmbs/mbsnrtowcs.c (__mbsnrtowcs): Likewise. * wcsmbs/mbsrtowcs_l.c (__mbsrtowcs_l): Likewise. * wcsmbs/wcsnrtombs.c (__wcsnrtombs): Likewise. * wcsmbs/wcsrtombs.c (__wcsrtombs): Likewise.
* Convert 24 more function definitions to prototype style (array parameters).Joseph Myers2015-10-203-11/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This automatically-generated patch converts 24 function definitions in glibc from old-style K&R to prototype-style. Following my other recent such patches, this one deals with the case of functions with array parameters. Tested for x86_64 and x86 (testsuite, and that installed stripped shared libraries are unchanged by the patch). * crypt/cert.c (main): Convert to prototype-style function definition. * io/pipe.c (__pipe): Likewise. * io/pipe2.c (__pipe2): Likewise. * misc/futimesat.c (futimesat): Likewise. * misc/utimes.c (__utimes): Likewise. * posix/execve.c (__execve): Likewise. * posix/execvp.c (execvp): Likewise. * posix/execvpe.c (__execvpe): Likewise. * posix/fexecve.c (fexecve): Likewise. * socket/socketpair.c (socketpair): Likewise. * stdlib/drand48-iter.c (__drand48_iterate): Likewise. * stdlib/erand48.c (erand48): Likewise. * stdlib/erand48_r.c (__erand48_r): Likewise. * stdlib/jrand48.c (jrand48): Likewise. * stdlib/jrand48_r.c (__jrand48_r): Likewise. * stdlib/lcong48.c (lcong48): Likewise. * stdlib/lcong48_r.c (__lcong48_r): Likewise. * stdlib/nrand48.c (nrand48): Likewise. * stdlib/nrand48_r.c (__nrand48_r): Likewise. * stdlib/seed48.c (seed48): Likewise. * stdlib/seed48_r.c (__seed48_r): Likewise. * sysdeps/mach/hurd/execve.c (__execve): Likewise. * sysdeps/mach/hurd/utimes.c (__utimes): Likewise. * sysdeps/unix/sysv/linux/fexecve.c (fexecve): Likewise.
* Convert 69 more function definitions to prototype style (line wrap cases).Joseph Myers2015-10-1912-65/+24
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This automatically-generated patch converts 69 function definitions in glibc from old-style K&R to prototype-style. This patch, covering both sysdeps and non-sysdeps files, deals with cases where the prototype needed to be wrapped over more than one line. Otherwise, exclusions and caveats are as for <https://sourceware.org/ml/libc-alpha/2015-10/msg00594.html> and <https://sourceware.org/ml/libc-alpha/2015-10/msg00599.html>. Tested for x86_64 and x86 (testsuite, and that installed stripped shared libraries are unchanged by the patch). * crypt/crypt-entry.c (__crypt_r): Convert to prototype-style function definition. * crypt/crypt_util.c (__encrypt_r): Likewise. * libio/genops.c (_IO_no_init): Likewise. * libio/iofopncook.c (_IO_fopencookie): Likewise. (_IO_old_fopencookie): Likewise. * libio/iofwrite_u.c (fwrite_unlocked): Likewise. * libio/iogetline.c (_IO_getline): Likewise. (_IO_getline_info): Likewise. * libio/iogetwline.c (_IO_getwline): Likewise. (_IO_getwline_info): Likewise. * libio/vsnprintf.c (_IO_vsnprintf): Likewise. * libio/vswprintf.c (_IO_vswprintf): Likewise. * locale/programs/simple-hash.c (insert_entry_2): Likewise. (find_entry): Likewise. (iterate_table): Likewise. (lookup): Likewise. * login/forkpty.c (forkpty): Likewise. * misc/hsearch_r.c (__hsearch_r): Likewise. * misc/select.c (__select): Likewise. * nptl/cleanup_defer_compat.c (_pthread_cleanup_pop_restore): Likewise. * nptl/old_pthread_cond_init.c (__pthread_cond_init_2_0): Likewise. * nptl/old_pthread_cond_timedwait.c (__pthread_cond_timedwait_2_0): Likewise. * nptl/pthread_barrier_init.c (__pthread_barrier_init): Likewise. * nptl/pthread_barrierattr_getpshared.c (pthread_barrierattr_getpshared): Likewise. * nptl/pthread_getschedparam.c (__pthread_getschedparam): Likewise. * nptl/pthread_mutex_setprioceiling.c (pthread_mutex_setprioceiling): Likewise. * nptl/pthread_mutexattr_getprioceiling.c (pthread_mutexattr_getprioceiling): Likewise. * nptl/pthread_rwlock_init.c (__pthread_rwlock_init): Likewise. * nptl/pthread_rwlock_timedrdlock.c (pthread_rwlock_timedrdlock): Likewise. * nptl/pthread_rwlock_timedwrlock.c (pthread_rwlock_timedwrlock): Likewise. * nptl/pthread_setschedparam.c (__pthread_setschedparam): Likewise. * socket/recvfrom.c (__recvfrom): Likewise. * socket/sendto.c (__sendto): Likewise. * socket/setsockopt.c (__setsockopt): Likewise. * stdio-common/_itoa.c (_itoa): Likewise. * stdio-common/_itowa.c (_itowa): Likewise. * stdio-common/reg-printf.c (__register_printf_specifier): Likewise. (__register_printf_function): Likewise. * stdio-common/tempname.c (__path_search): Likewise. * stdlib/addmul_1.c (mpn_addmul_1): Likewise. * stdlib/mul_1.c (mpn_mul_1): Likewise. * stdlib/random_r.c (__initstate_r): Likewise. * stdlib/setenv.c (__add_to_environ): Likewise. * stdlib/submul_1.c (mpn_submul_1): Likewise. * streams/getpmsg.c (getpmsg): Likewise. * streams/putmsg.c (putmsg): Likewise. * streams/putpmsg.c (putpmsg): Likewise. * sunrpc/clnt_raw.c (clntraw_call): Likewise. * sunrpc/clnt_tcp.c (clnttcp_call): Likewise. * sunrpc/clnt_udp.c (clntudp_create): Likewise. * sunrpc/clnt_unix.c (clntunix_call): Likewise. * sunrpc/pm_getport.c (pmap_getport): Likewise. * sunrpc/svc_udp.c (cache_get): Likewise. * sunrpc/xdr_array.c (xdr_vector): Likewise. * sysdeps/mach/hurd/getcwd.c (__canonicalize_directory_name_internal): Likewise. * sysdeps/mach/hurd/pselect.c (__pselect): Likewise. * sysdeps/mach/hurd/recvfrom.c (__recvfrom): Likewise. * sysdeps/mach/hurd/select.c (__select): Likewise. * sysdeps/posix/ttyname_r.c (getttyname_r): Likewise. * sysdeps/pthread/timer_settime.c (timer_settime): Likewise. * sysdeps/sparc/nptl/pthread_barrier_init.c (__pthread_barrier_init): Likewise. * sysdeps/unix/sysv/linux/hppa/pthread_cond_timedwait.c (__pthread_cond_timedwait): Likewise. * sysdeps/unix/sysv/linux/i386/putmsg.c (putmsg): Likewise. * sysdeps/unix/sysv/linux/s390/semtimedop.c (semtimedop): Likewise. * sysdeps/unix/sysv/linux/semtimedop.c (semtimedop): Likewise. * sysdeps/unix/sysv/linux/timer_settime.c (timer_settime): Likewise. * sysvipc/semtimedop.c (semtimedop): Likewise. * time/setitimer.c (__setitimer): Likewise. * time/strftime_l.c (emacs_strftime): Likewise.
* PowerPC: Fix a race condition when eliding a lockTulio Magno Quites Machado Filho2015-10-191-52/+63
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The previous code used to evaluate the preprocessor token is_lock_free to a variable before starting a transaction. This behavior can cause an error if another thread got the lock (without using a transaction) between the evaluation of the token and the beginning of the transaction. This bug can be triggered with the following order of events: 1. The lock accessed by is_lock_free is free. 2. Thread T1 evaluates is_lock_free and stores into register R1 that the lock is free. 3. Thread T2 acquires the same lock used in is_lock_free. 4. T1 begins the transaction, creating a memory barrier where is_lock_free is false, but R1 is true. 5. T1 reads R1 and doesn't abort the transaction. 6. T1 calls ELIDE_UNLOCK, which reads false from is_lock_free and decides to unlock a lock acquired by T2, leading to undefined behavior. This patch delays the evaluation of is_lock_free to inside a transaction by moving this part of the code to the macro ELIDE_LOCK. [BZ #18743] * sysdeps/powerpc/nptl/elide.h (__elide_lock): Move most of this code to... (ELIDE_LOCK): ...here. (__get_new_count): New function with part of the code from __elide_lock that updates the value of adapt_count after a transaction abort. (__elided_trylock): Moved this code to... (ELIDE_TRYLOCK): ...here.
* Convert 231 sysdeps function definitions to prototype style.Joseph Myers2015-10-19217-678/+233
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This mostly automatically-generated patch converts 231 sysdeps function definitions in glibc from old-style K&R to prototype-style. For __aio_sigqueue and __gai_sigqueue I had to add internal_function to the definitions as noted by Florian in <https://sourceware.org/ml/libc-alpha/2015-10/msg00595.html> to keep the functions compiling on x86 after conversion to prototype definitions. Otherwise, the patch is automatically generated with all the same exclusions and caveats as in <https://sourceware.org/ml/libc-alpha/2015-10/msg00594.html> except that it's a patch for sysdeps files. Tested for x86_64 and x86 (testsuite, and that installed stripped shared libraries are unchanged by the patch). Also tested for arm, mips64 and powerpc32 that installed stripped shared libraries are unchanged by the patch. * sysdeps/arm/backtrace.c (__backtrace): Convert to prototype-style function definition. * sysdeps/i386/backtrace.c (__backtrace): Likewise. * sysdeps/i386/ffs.c (__ffs): Likewise. * sysdeps/i386/i686/ffs.c (__ffs): Likewise. * sysdeps/ia64/nptl/pthread_spin_lock.c (pthread_spin_lock): Likewise. * sysdeps/ia64/nptl/pthread_spin_trylock.c (pthread_spin_trylock): Likewise. * sysdeps/ieee754/ldbl-128/e_log2l.c (__ieee754_log2l): Likewise. * sysdeps/ieee754/ldbl-128ibm/e_log2l.c (__ieee754_log2l): Likewise. * sysdeps/m68k/ffs.c (__ffs): Likewise. * sysdeps/m68k/m680x0/fpu/e_acos.c (FUNC): Likewise. * sysdeps/m68k/m680x0/fpu/e_fmod.c (FUNC): Likewise. * sysdeps/mach/adjtime.c (__adjtime): Likewise. * sysdeps/mach/gettimeofday.c (__gettimeofday): Likewise. * sysdeps/mach/hurd/_exit.c (_exit): Likewise. * sysdeps/mach/hurd/access.c (__access): Likewise. * sysdeps/mach/hurd/adjtime.c (__adjtime): Likewise. * sysdeps/mach/hurd/chdir.c (__chdir): Likewise. * sysdeps/mach/hurd/chmod.c (__chmod): Likewise. * sysdeps/mach/hurd/chown.c (__chown): Likewise. * sysdeps/mach/hurd/cthreads.c (cthread_keycreate): Likewise. (cthread_getspecific): Likewise. (cthread_setspecific): Likewise. (__libc_getspecific): Likewise. * sysdeps/mach/hurd/euidaccess.c (__euidaccess): Likewise. * sysdeps/mach/hurd/faccessat.c (faccessat): Likewise. * sysdeps/mach/hurd/fchdir.c (__fchdir): Likewise. * sysdeps/mach/hurd/fchmod.c (__fchmod): Likewise. * sysdeps/mach/hurd/fchmodat.c (fchmodat): Likewise. * sysdeps/mach/hurd/fchown.c (__fchown): Likewise. * sysdeps/mach/hurd/fchownat.c (fchownat): Likewise. * sysdeps/mach/hurd/flock.c (__flock): Likewise. * sysdeps/mach/hurd/fsync.c (fsync): Likewise. * sysdeps/mach/hurd/ftruncate.c (__ftruncate): Likewise. * sysdeps/mach/hurd/getgroups.c (__getgroups): Likewise. * sysdeps/mach/hurd/gethostname.c (__gethostname): Likewise. * sysdeps/mach/hurd/getitimer.c (__getitimer): Likewise. * sysdeps/mach/hurd/getlogin_r.c (__getlogin_r): Likewise. * sysdeps/mach/hurd/getpgid.c (__getpgid): Likewise. * sysdeps/mach/hurd/getrusage.c (__getrusage): Likewise. * sysdeps/mach/hurd/getsockname.c (__getsockname): Likewise. * sysdeps/mach/hurd/group_member.c (__group_member): Likewise. * sysdeps/mach/hurd/isatty.c (__isatty): Likewise. * sysdeps/mach/hurd/lchown.c (__lchown): Likewise. * sysdeps/mach/hurd/link.c (__link): Likewise. * sysdeps/mach/hurd/linkat.c (linkat): Likewise. * sysdeps/mach/hurd/listen.c (__listen): Likewise. * sysdeps/mach/hurd/mkdir.c (__mkdir): Likewise. * sysdeps/mach/hurd/mkdirat.c (mkdirat): Likewise. * sysdeps/mach/hurd/openat.c (__openat): Likewise. * sysdeps/mach/hurd/poll.c (__poll): Likewise. * sysdeps/mach/hurd/readlink.c (__readlink): Likewise. * sysdeps/mach/hurd/readlinkat.c (readlinkat): Likewise. * sysdeps/mach/hurd/recv.c (__recv): Likewise. * sysdeps/mach/hurd/rename.c (rename): Likewise. * sysdeps/mach/hurd/renameat.c (renameat): Likewise. * sysdeps/mach/hurd/revoke.c (revoke): Likewise. * sysdeps/mach/hurd/rewinddir.c (__rewinddir): Likewise. * sysdeps/mach/hurd/rmdir.c (__rmdir): Likewise. * sysdeps/mach/hurd/seekdir.c (seekdir): Likewise. * sysdeps/mach/hurd/send.c (__send): Likewise. * sysdeps/mach/hurd/setdomain.c (setdomainname): Likewise. * sysdeps/mach/hurd/setegid.c (setegid): Likewise. * sysdeps/mach/hurd/seteuid.c (seteuid): Likewise. * sysdeps/mach/hurd/setgid.c (__setgid): Likewise. * sysdeps/mach/hurd/setgroups.c (setgroups): Likewise. * sysdeps/mach/hurd/sethostid.c (sethostid): Likewise. * sysdeps/mach/hurd/sethostname.c (sethostname): Likewise. * sysdeps/mach/hurd/setlogin.c (setlogin): Likewise. * sysdeps/mach/hurd/setpgid.c (__setpgid): Likewise. * sysdeps/mach/hurd/setregid.c (__setregid): Likewise. * sysdeps/mach/hurd/setreuid.c (__setreuid): Likewise. * sysdeps/mach/hurd/settimeofday.c (__settimeofday): Likewise. * sysdeps/mach/hurd/setuid.c (__setuid): Likewise. * sysdeps/mach/hurd/shutdown.c (shutdown): Likewise. * sysdeps/mach/hurd/sigaction.c (__sigaction): Likewise. * sysdeps/mach/hurd/sigaltstack.c (__sigaltstack): Likewise. * sysdeps/mach/hurd/sigpending.c (sigpending): Likewise. * sysdeps/mach/hurd/sigprocmask.c (__sigprocmask): Likewise. * sysdeps/mach/hurd/sigsuspend.c (__sigsuspend): Likewise. * sysdeps/mach/hurd/socket.c (__socket): Likewise. * sysdeps/mach/hurd/symlink.c (__symlink): Likewise. * sysdeps/mach/hurd/symlinkat.c (symlinkat): Likewise. * sysdeps/mach/hurd/telldir.c (telldir): Likewise. * sysdeps/mach/hurd/truncate.c (__truncate): Likewise. * sysdeps/mach/hurd/umask.c (__umask): Likewise. * sysdeps/mach/hurd/unlink.c (__unlink): Likewise. * sysdeps/mach/hurd/unlinkat.c (unlinkat): Likewise. * sysdeps/mips/mips64/__longjmp.c (__longjmp): Likewise. * sysdeps/posix/alarm.c (alarm): Likewise. * sysdeps/posix/cuserid.c (cuserid): Likewise. * sysdeps/posix/dirfd.c (dirfd): Likewise. * sysdeps/posix/dup.c (__dup): Likewise. * sysdeps/posix/dup2.c (__dup2): Likewise. * sysdeps/posix/euidaccess.c (euidaccess): Likewise. (main): Likewise. * sysdeps/posix/flock.c (__flock): Likewise. * sysdeps/posix/fpathconf.c (__fpathconf): Likewise. * sysdeps/posix/getcwd.c (__getcwd): Likewise. * sysdeps/posix/gethostname.c (__gethostname): Likewise. * sysdeps/posix/gettimeofday.c (__gettimeofday): Likewise. * sysdeps/posix/isatty.c (__isatty): Likewise. * sysdeps/posix/killpg.c (killpg): Likewise. * sysdeps/posix/libc_fatal.c (__libc_fatal): Likewise. * sysdeps/posix/mkfifoat.c (mkfifoat): Likewise. * sysdeps/posix/raise.c (raise): Likewise. * sysdeps/posix/remove.c (remove): Likewise. * sysdeps/posix/rename.c (rename): Likewise. * sysdeps/posix/rewinddir.c (__rewinddir): Likewise. * sysdeps/posix/seekdir.c (seekdir): Likewise. * sysdeps/posix/sigblock.c (__sigblock): Likewise. * sysdeps/posix/sigignore.c (sigignore): Likewise. * sysdeps/posix/sigintr.c (siginterrupt): Likewise. * sysdeps/posix/signal.c (__bsd_signal): Likewise. * sysdeps/posix/sigset.c (sigset): Likewise. * sysdeps/posix/sigsuspend.c (__sigsuspend): Likewise. * sysdeps/posix/sysconf.c (__sysconf): Likewise. * sysdeps/posix/sysv_signal.c (__sysv_signal): Likewise. * sysdeps/posix/time.c (time): Likewise. * sysdeps/posix/ttyname.c (getttyname): Likewise. (ttyname): Likewise. * sysdeps/posix/ttyname_r.c (__ttyname_r): Likewise. * sysdeps/posix/utime.c (utime): Likewise. * sysdeps/powerpc/fpu/s_isnan.c (__isnan): Likewise. * sysdeps/powerpc/nptl/pthread_spin_lock.c (pthread_spin_lock): Likewise. * sysdeps/powerpc/nptl/pthread_spin_trylock.c (pthread_spin_trylock): Likewise. * sysdeps/pthread/aio_error.c (aio_error): Likewise. * sysdeps/pthread/aio_read.c (aio_read): Likewise. * sysdeps/pthread/aio_read64.c (aio_read64): Likewise. * sysdeps/pthread/aio_write.c (aio_write): Likewise. * sysdeps/pthread/aio_write64.c (aio_write64): Likewise. * sysdeps/pthread/flockfile.c (__flockfile): Likewise. * sysdeps/pthread/ftrylockfile.c (__ftrylockfile): Likewise. * sysdeps/pthread/funlockfile.c (__funlockfile): Likewise. * sysdeps/pthread/timer_create.c (timer_create): Likewise. * sysdeps/pthread/timer_getoverr.c (timer_getoverrun): Likewise. * sysdeps/pthread/timer_gettime.c (timer_gettime): Likewise. * sysdeps/s390/ffs.c (__ffs): Likewise. * sysdeps/s390/nptl/pthread_spin_lock.c (pthread_spin_lock): Likewise. * sysdeps/s390/nptl/pthread_spin_trylock.c (pthread_spin_trylock): Likewise. * sysdeps/sh/nptl/pthread_spin_lock.c (pthread_spin_lock): Likewise. * sysdeps/sparc/nptl/pthread_barrier_destroy.c (pthread_barrier_destroy): Likewise. * sysdeps/sparc/nptl/pthread_barrier_wait.c (__pthread_barrier_wait): Likewise. * sysdeps/sparc/sparc32/e_sqrt.c (__ieee754_sqrt): Likewise. * sysdeps/sparc/sparc32/pthread_barrier_wait.c (__pthread_barrier_wait): Likewise. * sysdeps/sparc/sparc32/sem_init.c (__old_sem_init): Likewise. * sysdeps/tile/memcmp.c (memcmp_common_alignment): Likewise. (memcmp_not_common_alignment): Likewise. (MEMCMP): Likewise. * sysdeps/tile/wordcopy.c (_wordcopy_fwd_aligned): Likewise. (_wordcopy_fwd_dest_aligned): Likewise. (_wordcopy_bwd_aligned): Likewise. (_wordcopy_bwd_dest_aligned): Likewise. * sysdeps/unix/bsd/ftime.c (ftime): Likewise. * sysdeps/unix/bsd/gtty.c (gtty): Likewise. * sysdeps/unix/bsd/stty.c (stty): Likewise. * sysdeps/unix/bsd/tcflow.c (tcflow): Likewise. * sysdeps/unix/bsd/tcflush.c (tcflush): Likewise. * sysdeps/unix/bsd/tcgetattr.c (__tcgetattr): Likewise. * sysdeps/unix/bsd/tcgetpgrp.c (tcgetpgrp): Likewise. * sysdeps/unix/bsd/tcsendbrk.c (tcsendbreak): Likewise. * sysdeps/unix/bsd/tcsetattr.c (tcsetattr): Likewise. * sysdeps/unix/bsd/tcsetpgrp.c (tcsetpgrp): Likewise. * sysdeps/unix/bsd/ualarm.c (ualarm): Likewise. * sysdeps/unix/bsd/wait3.c (__wait3): Likewise. * sysdeps/unix/getlogin_r.c (__getlogin_r): Likewise. * sysdeps/unix/sockatmark.c (sockatmark): Likewise. * sysdeps/unix/stime.c (stime): Likewise. * sysdeps/unix/sysv/linux/_exit.c (_exit): Likewise. * sysdeps/unix/sysv/linux/aio_sigqueue.c (__aio_sigqueue): Likewise. Use internal_function. * sysdeps/unix/sysv/linux/arm/sigaction.c (__libc_sigaction): Convert to prototype-style function definition. * sysdeps/unix/sysv/linux/faccessat.c (faccessat): Likewise. * sysdeps/unix/sysv/linux/fchmodat.c (fchmodat): Likewise. * sysdeps/unix/sysv/linux/fpathconf.c (__fpathconf): Likewise. * sysdeps/unix/sysv/linux/gai_sigqueue.c (__gai_sigqueue): Likewise. Use internal_function. * sysdeps/unix/sysv/linux/gethostid.c (sethostid): Convert to prototype-style function definition * sysdeps/unix/sysv/linux/getlogin_r.c (__getlogin_r_loginuid): Likewise. (__getlogin_r): Likewise. * sysdeps/unix/sysv/linux/getpt.c (__posix_openpt): Likewise. * sysdeps/unix/sysv/linux/hppa/pthread_cond_broadcast.c (__pthread_cond_broadcast): Likewise. * sysdeps/unix/sysv/linux/hppa/pthread_cond_destroy.c (__pthread_cond_destroy): Likewise. * sysdeps/unix/sysv/linux/hppa/pthread_cond_init.c (__pthread_cond_init): Likewise. * sysdeps/unix/sysv/linux/hppa/pthread_cond_signal.c (__pthread_cond_signal): Likewise. * sysdeps/unix/sysv/linux/hppa/pthread_cond_wait.c (__pthread_cond_wait): Likewise. * sysdeps/unix/sysv/linux/i386/getmsg.c (getmsg): Likewise. * sysdeps/unix/sysv/linux/i386/setegid.c (setegid): Likewise. * sysdeps/unix/sysv/linux/ia64/sigaction.c (__libc_sigaction): Likewise. * sysdeps/unix/sysv/linux/ia64/sigpending.c (sigpending): Likewise. * sysdeps/unix/sysv/linux/ia64/sigprocmask.c (__sigprocmask): Likewise. * sysdeps/unix/sysv/linux/mips/sigaction.c (__libc_sigaction): Likewise. * sysdeps/unix/sysv/linux/msgget.c (msgget): Likewise. * sysdeps/unix/sysv/linux/powerpc/powerpc32/ftruncate64.c (__ftruncate64): Likewise. * sysdeps/unix/sysv/linux/powerpc/powerpc32/truncate64.c (truncate64): Likewise. * sysdeps/unix/sysv/linux/pt-raise.c (raise): Likewise. * sysdeps/unix/sysv/linux/pthread_getcpuclockid.c (pthread_getcpuclockid): Likewise. * sysdeps/unix/sysv/linux/pthread_getname.c (pthread_getname_np): Likewise. * sysdeps/unix/sysv/linux/pthread_setname.c (pthread_setname_np): Likewise. * sysdeps/unix/sysv/linux/pthread_sigmask.c (pthread_sigmask): Likewise. * sysdeps/unix/sysv/linux/pthread_sigqueue.c (pthread_sigqueue): Likewise. * sysdeps/unix/sysv/linux/raise.c (raise): Likewise. * sysdeps/unix/sysv/linux/s390/s390-64/sigaction.c (__libc_sigaction): Likewise. * sysdeps/unix/sysv/linux/s390/s390-64/sigpending.c (sigpending): Likewise. * sysdeps/unix/sysv/linux/s390/s390-64/sigprocmask.c (__sigprocmask): Likewise. * sysdeps/unix/sysv/linux/semget.c (semget): Likewise. * sysdeps/unix/sysv/linux/semop.c (semop): Likewise. * sysdeps/unix/sysv/linux/setrlimit64.c (setrlimit64): Likewise. * sysdeps/unix/sysv/linux/shmat.c (shmat): Likewise. * sysdeps/unix/sysv/linux/shmdt.c (shmdt): Likewise. * sysdeps/unix/sysv/linux/shmget.c (shmget): Likewise. * sysdeps/unix/sysv/linux/sigaction.c (__libc_sigaction): Likewise. * sysdeps/unix/sysv/linux/sigpending.c (sigpending): Likewise. * sysdeps/unix/sysv/linux/sigprocmask.c (__sigprocmask): Likewise. * sysdeps/unix/sysv/linux/sigqueue.c (__sigqueue): Likewise. * sysdeps/unix/sysv/linux/sigstack.c (sigstack): Likewise. * sysdeps/unix/sysv/linux/sparc/sparc64/sigpending.c (sigpending): Likewise. * sysdeps/unix/sysv/linux/sparc/sparc64/sigprocmask.c (__sigprocmask): Likewise. * sysdeps/unix/sysv/linux/speed.c (cfgetospeed): Likewise. (cfgetispeed): Likewise. (cfsetospeed): Likewise. (cfsetispeed): Likewise. * sysdeps/unix/sysv/linux/tcflow.c (tcflow): Likewise. * sysdeps/unix/sysv/linux/tcflush.c (tcflush): Likewise. * sysdeps/unix/sysv/linux/tcgetattr.c (__tcgetattr): Likewise. * sysdeps/unix/sysv/linux/tcsetattr.c (tcsetattr): Likewise. * sysdeps/unix/sysv/linux/time.c (time): Likewise. * sysdeps/unix/sysv/linux/timer_create.c (timer_create): Likewise. * sysdeps/unix/sysv/linux/timer_delete.c (timer_delete): Likewise. * sysdeps/unix/sysv/linux/timer_getoverr.c (timer_getoverrun): Likewise. * sysdeps/unix/sysv/linux/timer_gettime.c (timer_gettime): Likewise. * sysdeps/unix/sysv/linux/x86_64/sigpending.c (sigpending): Likewise. * sysdeps/unix/sysv/linux/x86_64/sigprocmask.c (__sigprocmask): Likewise. * sysdeps/x86_64/backtrace.c (__backtrace): Likewise.
* malloc: Rewrite with explicit TLS access using __threadFlorian Weimer2015-10-173-27/+0
|
* Assume that SOCK_CLOEXEC is available and worksFlorian Weimer2015-10-171-1/+0
| | | | | This fixes (harmless) data races when accessing the various __have_sock_cloexec variables.
* Make performance improvement to MIPS memcpy for small copies.Steve Ellcey2015-10-161-2/+43
| | | | | * sysdeps/mips/memcpy.S (memcpy): Add word copies for small aligned data.