about summary refs log tree commit diff
Commit message (Collapse)AuthorAgeFilesLines
...
* Make totalorder and totalordermag functions take pointer arguments.Joseph Myers2019-08-1559-579/+1521
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The resolution of C floating-point Clarification Request 25 <http://www.open-std.org/jtc1/sc22/wg14/www/docs/n2397.htm#dr_25> is that the totalorder and totalordermag functions should take pointer arguments, and this has been adopted in C2X (with const added; note that the integration of this change into C2X is present in the C standard git repository but postdates the most recent public PDF draft). This patch updates glibc accordingly. As a defect resolution, the API is changed unconditionally rather than supporting any sort of TS 18661-1 mode for compilation with the old version of the API. There are compat symbols for existing binaries that pass floating-point arguments directly. As a consequence of changing to pointer arguments, there are no longer type-generic macros in tgmath.h for these functions. Because of the fairly complicated logic for creating libm function aliases and determining the set of aliases to create in a given glibc configuration, rather than duplicating all that in individual source files to create the versioned and compat symbols, the source files for the various versions of totalorder functions are set up to redefine weak_alias before using libm_alias_* macros to create the symbols required. In turn, this requires creating a separate alias for each symbol version pointing to the same implementation (see binutils bug <https://sourceware.org/bugzilla/show_bug.cgi?id=23840>), which is done automatically using __COUNTER__. (As I noted in <https://sourceware.org/ml/libc-alpha/2018-10/msg00631.html>, it might well make sense for glibc's symbol versioning macros to do that alias creation with __COUNTER__ themselves, which would somewhat simplify the logic in the totalorder source files.) It is of course desirable to test the compat symbols. I did this with the generic libm-test machinery, but didn't wish to duplicate the actual tables of test inputs and outputs, and thought it risky to attempt to have a single object file refer to both default and compat versions of the same function in order to test them together. Thus, I created libm-test-compat_totalorder.inc and libm-test-compat_totalordermag.inc which include the generated .c files (with the processed version of those tables of inputs) from the non-compat tests, and added appropriate dependencies. I think this provides sufficient test coverage for the compat symbols without also needing to make the special ldbl-96 and ldbl-128ibm tests (of peculiarities relating to the representations of those formats that can't be covered in the generic tests) run for the compat symbols. Tests of compat symbols need to be internal tests, meaning _ISOMAC is not defined. Making some libm-test tests into internal tests showed up two other issues. GCC diagnoses duplicate macro definitions of __STDC_* macros, including __STDC_WANT_IEC_60559_TYPES_EXT__; I added an appropriate conditional and filed <https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91451> for this issue. On ia64, include/setjmp.h ends up getting included indirectly from libm-symbols.h, resulting in conflicting definitions of the STR macro (also defined in libm-test-driver.c); I renamed the macros in include/setjmp.h. (It's arguable that we should have common internal headers used everywhere for stringizing and concatenation macros.) Tested for x86_64 and x86, and with build-many-glibcs.py. * math/bits/mathcalls.h [__GLIBC_USE (IEC_60559_BFP_EXT) || __MATH_DECLARING_FLOATN] (totalorder): Take pointer arguments. [__GLIBC_USE (IEC_60559_BFP_EXT) || __MATH_DECLARING_FLOATN] (totalordermag): Likewise. * manual/arith.texi (totalorder): Likewise. (totalorderf): Likewise. (totalorderl): Likewise. (totalorderfN): Likewise. (totalorderfNx): Likewise. (totalordermag): Likewise. (totalordermagf): Likewise. (totalordermagl): Likewise. (totalordermagfN): Likewise. (totalordermagfNx): Likewise. * math/tgmath.h (__TGMATH_BINARY_REAL_RET_ONLY): Remove macro. [__GLIBC_USE (IEC_60559_BFP_EXT)] (totalorder): Likewise. [__GLIBC_USE (IEC_60559_BFP_EXT)] (totalordermag): Likewise. * math/Versions (GLIBC_2.31): Add totalorder, totalorderf, totalorderl, totalordermag, totalordermagf, totalordermagl, totalorderf32, totalorderf64, totalorderf32x, totalordermagf32, totalordermagf64, totalordermagf32x, totalorderf64x, totalordermagf64x, totalorderf128 and totalordermagf128. * math/Makefile (libm-test-funcs-noauto): Add compat_totalorder and compat_totalordermag. (libm-test-funcs-compat): New variable. (libm-tests-compat): Likewise. (tests): Do not include compat tests. (tests-internal): Add compat tests. ($(foreach t,$(libm-tests-base), $(objpfx)$(t)-compat_totalorder.o)): Depend on $(objpfx)libm-test-totalorder.c. ($(foreach t,$(libm-tests-base), $(objpfx)$(t)-compat_totalordermag.o): Depend on $(objpfx)libm-test-totalordermag.c. (tgmath3-macros): Remove totalorder and totalordermag. * math/libm-test-compat_totalorder.inc: New file. * math/libm-test-compat_totalordermag.inc: Likewise. * math/libm-test-driver.c (struct test_ff_i_data): Update comment. (RUN_TEST_fpfp_b): New macro. (RUN_TEST_LOOP_fpfp_b): Likewise. * math/libm-test-totalorder.inc (totalorder_test_data): Use TEST_fpfp_b. (totalorder_test): Condition on [!COMPAT_TEST]. (do_test): Likewise. * math/libm-test-totalordermag.inc (totalordermag_test_data): Use TEST_fpfp_b. (totalordermag_test): Condition on [!COMPAT_TEST]. (do_test): Likewise. * math/gen-tgmath-tests.py (Tests.add_all_tests): Remove totalorder and totalordermag. * math/test-tgmath.c (NCALLS): Change to 132. (F(compile_test)): Do not call totalorder or totalordermag. (F(totalorder)): Remove. (F(totalordermag)): Likewise. * include/float.h (__STDC_WANT_IEC_60559_TYPES_EXT__): Do not define if [__STDC_WANT_IEC_60559_TYPES_EXT__]. * include/setjmp.h [!_ISOMAC] (STR_HELPER): Rename to SJSTR_HELPER. [!_ISOMAC] (STR): Rename to SJSTR. Update call to STR_HELPER. [!_ISOMAC] (TEST_SIZE): Update call to STR. [!_ISOMAC] (TEST_ALIGN): Likewise. [!_ISOMAC] (TEST_OFFSET): Likewise. * sysdeps/ieee754/dbl-64/s_totalorder.c: Include <shlib-compat.h> and <first-versions.h>. (__totalorder): Take pointer arguments. Add symbol versions and compat symbols. * sysdeps/ieee754/dbl-64/s_totalordermag.c: Include <shlib-compat.h> and <first-versions.h>. (__totalordermag): Take pointer arguments. Add symbol versions and compat symbols. * sysdeps/ieee754/dbl-64/wordsize-64/s_totalorder.c: Include <shlib-compat.h> and <first-versions.h>. (__totalorder): Take pointer arguments. Add symbol versions and compat symbols. * sysdeps/ieee754/dbl-64/wordsize-64/s_totalordermag.c: Include <shlib-compat.h> and <first-versions.h>. (__totalordermag): Take pointer arguments. Add symbol versions and compat symbols. * sysdeps/ieee754/float128/float128_private.h (__totalorder_compatl): New macro. (__totalordermag_compatl): Likewise. * sysdeps/ieee754/flt-32/s_totalorderf.c: Include <shlib-compat.h> and <first-versions.h>. (__totalorderf): Take pointer arguments. Add symbol versions and compat symbols. * sysdeps/ieee754/flt-32/s_totalordermagf.c: Include <shlib-compat.h> and <first-versions.h>. (__totalordermagf): Take pointer arguments. Add symbol versions and compat symbols. * sysdeps/ieee754/ldbl-128/s_totalorderl.c: Include <shlib-compat.h> and <first-versions.h>. (__totalorderl): Take pointer arguments. Add symbol versions and compat symbols. * sysdeps/ieee754/ldbl-128/s_totalordermagl.c: Include <shlib-compat.h> and <first-versions.h>. (__totalordermagl): Take pointer arguments. Add symbol versions and compat symbols. * sysdeps/ieee754/ldbl-128ibm/s_totalorderl.c: Include <shlib-compat.h>. (__totalorderl): Take pointer arguments. Add symbol versions and compat symbols. * sysdeps/ieee754/ldbl-128ibm/s_totalordermagl.c: Include <shlib-compat.h>. (__totalordermagl): Take pointer arguments. Add symbol versions and compat symbols. * sysdeps/ieee754/ldbl-96/s_totalorderl.c: Include <shlib-compat.h> and <first-versions.h>. (__totalorderl): Take pointer arguments. Add symbol versions and compat symbols. * sysdeps/ieee754/ldbl-96/s_totalordermagl.c: Include <shlib-compat.h> and <first-versions.h>. (__totalordermagl): Take pointer arguments. Add symbol versions and compat symbols. * sysdeps/ieee754/ldbl-opt/nldbl-totalorder.c (totalorderl): Take pointer arguments. * sysdeps/ieee754/ldbl-opt/nldbl-totalordermag.c (totalordermagl): Likewise. * sysdeps/ieee754/ldbl-128ibm/test-totalorderl-ldbl-128ibm.c (do_test): Update calls to totalorderl and totalordermagl. * sysdeps/ieee754/ldbl-96/test-totalorderl-ldbl-96.c (do_test): Update calls to totalorderl and totalordermagl. * sysdeps/mach/hurd/i386/libm.abilist: Update. * sysdeps/unix/sysv/linux/aarch64/libm.abilist: Likewise. * sysdeps/unix/sysv/linux/alpha/libm.abilist: Likewise. * sysdeps/unix/sysv/linux/arm/libm.abilist: Likewise. * sysdeps/unix/sysv/linux/csky/libm.abilist: Likewise. * sysdeps/unix/sysv/linux/hppa/libm.abilist: Likewise. * sysdeps/unix/sysv/linux/i386/libm.abilist: Likewise. * sysdeps/unix/sysv/linux/ia64/libm.abilist: Likewise. * sysdeps/unix/sysv/linux/m68k/coldfire/libm.abilist: Likewise. * sysdeps/unix/sysv/linux/m68k/m680x0/libm.abilist: Likewise. * sysdeps/unix/sysv/linux/microblaze/libm.abilist: Likewise. * sysdeps/unix/sysv/linux/mips/mips32/libm.abilist: Likewise. * sysdeps/unix/sysv/linux/mips/mips64/libm.abilist: Likewise. * sysdeps/unix/sysv/linux/nios2/libm.abilist: Likewise. * sysdeps/unix/sysv/linux/powerpc/powerpc32/fpu/libm.abilist: Likewise. * sysdeps/unix/sysv/linux/powerpc/powerpc32/nofpu/libm.abilist: Likewise. * sysdeps/unix/sysv/linux/powerpc/powerpc64/be/libm.abilist: Likewise. * sysdeps/unix/sysv/linux/powerpc/powerpc64/le/libm.abilist: Likewise. * sysdeps/unix/sysv/linux/riscv/rv64/libm.abilist: Likewise. * sysdeps/unix/sysv/linux/s390/s390-32/libm.abilist: Likewise. * sysdeps/unix/sysv/linux/s390/s390-64/libm.abilist: Likewise. * sysdeps/unix/sysv/linux/sh/libm.abilist: Likewise. * sysdeps/unix/sysv/linux/sparc/sparc32/libm.abilist: Likewise. * sysdeps/unix/sysv/linux/sparc/sparc64/libm.abilist: Likewise. * sysdeps/unix/sysv/linux/x86_64/64/libm.abilist: Likewise. * sysdeps/unix/sysv/linux/x86_64/x32/libm.abilist: Likewise.
* login: Add nonstring attributes to struct utmp, struct utmpx [BZ #24899]Florian Weimer2019-08-155-10/+32
| | | | | | | | Commit 7532837d7b03b3ca5b9a63d77a5bd81dd23f3d9c ("The -Wstringop-truncation option new in GCC 8 detects common misuses") added __attribute_nonstring__ to bits/utmp.h, but it did not update the parallel bits/utmpx.h header. In struct utmp, the nonstring attribute for ut_id was missing.
* login: Use struct flock64 in utmp [BZ #24880]Florian Weimer2019-08-152-2/+8
| | | | | | | Commit 06ab719d30b01da401150068054d3b8ea93dd12f ("Fix Linux fcntl OFD locks for non-LFS architectures (BZ#20251)") introduced the use of fcntl64 into the utmp implementation. However, the lock file structure was not updated to struct flock64 at that point.
* login: Disarm timer after utmp lock acquisition [BZ #24879]Florian Weimer2019-08-152-52/+41
| | | | | | | | If the file processing takes a long time for some reason, SIGALRM can arrive while the file is still being processed. At that point, file access will fail with EINTR. Disarming the timer after lock acquisition avoids that. (If there was a previous alarm, it is the responsibility of the caller to deal with the EINTR error.)
* nptl: Remove pthread_self compatibility symbol from libpthreadFlorian Weimer2019-08-1526-52/+54
| | | | | The symbol is no longer needed because since glibc 2.30, the dynamic loader continues searching for the symbol in libc.
* nptl: Move pthread_attr_destroy implementation into libcFlorian Weimer2019-08-1531-32/+68
|
* Update i386 libm-test-ulpsAndreas Schwab2019-08-152-4/+8
|
* malloc: Various cleanups for malloc/tst-mxfastFlorian Weimer2019-08-153-9/+16
|
* login: Fix updwtmp, updwtmx unlockingFlorian Weimer2019-08-154-2/+121
| | | | | | | Commit 5a3afa9738f3dbbaf8c0a35665318c1af782111b (login: Replace macro-based control flow with function calls in utmp) introduced a regression because after it, __libc_updwtmp attempts to unlock the wrong file descriptor.
* nptl: Move pthread_equal implementation into libcFlorian Weimer2019-08-1529-32/+60
|
* support: Include <support/descriptors.h> in support_descriptors.cFlorian Weimer2019-08-142-0/+5
|
* aarch64: Disable using DC ZVA in emag memsetFeng Xue2019-08-143-7/+24
| | | | | | | * sysdeps/aarch64/multiarch/memset_base64.S (DC_ZVA_THRESHOLD): Disable DC ZVA code if this macro is defined as zero. * sysdeps/aarch64/multiarch/memset_emag.S (DC_ZVA_THRESHOLD): Change to zero to disable using DC ZVA.
* Declare some TS 18661-4 interfaces for C2X.Joseph Myers2019-08-134-3/+21
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | C2X (current version in git, postdating the most recent public draft available as a PDF on the WG14 website) adds the interfaces from TS 18661-4, other than the reduction functions, as unconditionally required and visible in <math.h> for hosted implementations; the __STDC_WANT_IEC_60559_FUNCS_EXT__ macro is not included in C2X at all (as the reduction functions aren't included at all, expected to end up in a version of the TS updated to be relative to C2X). This patch updates the glibc headers accordingly, following the same pattern used for 18661-1 functions. As the only 18661-4 functions currently supported are the exp10 functions that have been in glibc for a very long time, this means that in fact __GLIBC_USE (IEC_60559_FUNCS_EXT) ends up being used only to determine the definition of __GLIBC_USE_IEC_60559_FUNCS_EXT_C2X, not yet in any headers other than bits/libc-header-start.h. (I hope to add the other 18661-4 functions to glibc at some point; the main complication is the current lack of MPFR support for many of these functions.) Tested for x86_64. * bits/libc-header-start.h (__GLIBC_USE_IEC_60559_FUNCS_EXT): Update comment. (__GLIBC_USE_IEC_60559_FUNCS_EXT_C2X): New macro. * bits/math-finite.h [__GLIBC_USE (IEC_60559_FUNCS_EXT)]: Change to [__GLIBC_USE (IEC_60559_FUNCS_EXT_C2X)]. * math/bits/mathcalls.h [__GLIBC_USE (IEC_60559_FUNCS_EXT)]: Likewise.
* login: Replace macro-based control flow with function calls in utmpFlorian Weimer2019-08-132-73/+112
|
* Declare most TS 18661-1 interfaces for C2X.Joseph Myers2019-08-1327-40/+102
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | C2X adds the interfaces from TS 18661-1, and all except a handful in Annex F are unconditionally visible in C2X rather than only visible when __STDC_WANT_IEC_60559_BFP_EXT__ is defined. This patch updates glibc headers accordingly: most uses of __GLIBC_USE (IEC_60559_BFP_EXT) are changed to a new __GLIBC_USE (IEC_60559_BFP_EXT_C2X). (Regarding totalorder and totalordermag, the type-generic macros in tgmath.h will go away when the functions are changed to take pointer arguments.) * bits/libc-header-start.h (__GLIBC_USE_IEC_60559_BFP_EXT): Update comment. (__GLIBC_USE_IEC_60559_BFP_EXT_C2X): New macro. * bits/fenv.h [__GLIBC_USE (IEC_60559_BFP_EXT)]: Change to [__GLIBC_USE (IEC_60559_BFP_EXT_C2X)]. * include/limits.h [__GLIBC_USE (IEC_60559_BFP_EXT)]: Likewise. * math/fenv.h [__GLIBC_USE (IEC_60559_BFP_EXT)]: Likewise. * math/math.h [__GLIBC_USE (IEC_60559_BFP_EXT)]: Likewise. * stdlib/bits/stdlib-ldbl.h [__GLIBC_USE (IEC_60559_BFP_EXT)]: Likewise. * stdlib/stdint.h [__GLIBC_USE (IEC_60559_BFP_EXT)]: Likewise. * stdlib/stdlib.h [__GLIBC_USE (IEC_60559_BFP_EXT)]: Likewise. * sysdeps/aarch64/bits/fenv.h [__GLIBC_USE (IEC_60559_BFP_EXT)]: Likewise. * sysdeps/alpha/fpu/bits/fenv.h [__GLIBC_USE (IEC_60559_BFP_EXT)]: Likewise. * sysdeps/arm/bits/fenv.h [__GLIBC_USE (IEC_60559_BFP_EXT)]: Likewise. * sysdeps/csky/bits/fenv.h [__GLIBC_USE (IEC_60559_BFP_EXT)]: Likewise. * sysdeps/hppa/fpu/bits/fenv.h [__GLIBC_USE (IEC_60559_BFP_EXT)]: Likewise. * sysdeps/ia64/bits/fenv.h [__GLIBC_USE (IEC_60559_BFP_EXT)]: Likewise. * sysdeps/m68k/bits/fenv.h [__GLIBC_USE (IEC_60559_BFP_EXT)]: Likewise. * sysdeps/microblaze/bits/fenv.h [__GLIBC_USE (IEC_60559_BFP_EXT)]: Likewise. * sysdeps/mips/bits/fenv.h [__GLIBC_USE (IEC_60559_BFP_EXT)]: Likewise. * sysdeps/nios2/bits/fenv.h [__GLIBC_USE (IEC_60559_BFP_EXT)]: Likewise. * sysdeps/powerpc/bits/fenv.h [__GLIBC_USE (IEC_60559_BFP_EXT)]: Likewise. * sysdeps/riscv/bits/fenv.h [__GLIBC_USE (IEC_60559_BFP_EXT)]: Likewise. * sysdeps/s390/fpu/bits/fenv.h [__GLIBC_USE (IEC_60559_BFP_EXT)]: Likewise. * sysdeps/sh/bits/fenv.h [__GLIBC_USE (IEC_60559_BFP_EXT)]: Likewise. * sysdeps/sparc/fpu/bits/fenv.h [__GLIBC_USE (IEC_60559_BFP_EXT)]: Likewise. * sysdeps/x86/fpu/bits/fenv.h [__GLIBC_USE (IEC_60559_BFP_EXT)]: Likewise. * math/bits/mathcalls.h [__GLIBC_USE (IEC_60559_BFP_EXT)]: Likewise, except for totalorder, totalordermag, getpayload, setpayload and setpayloadsig. * math/tgmath.h [__GLIBC_USE (IEC_60559_BFP_EXT)]: Likewise, except for totalorder and totalordermag.
* Declare memccpy, strdup, strndup for C2X.Joseph Myers2019-08-132-3/+7
| | | | | | | | | | | | C2X adds the memccpy, strdup and strndup functions. This patch duly adds __GLIBC_USE (ISOC2X) to the conditions under which <string.h> declares them. Tested for x86_64. * string/string.h (memccpy): Also declare if [__GLIBC_USE (ISOC2X)]. (strdup): Likewise. (strndup): Likewise.
* Add feature test macro _ISOC2X_SOURCE.Joseph Myers2019-08-134-4/+42
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch starts preparation for C2X support in glibc headers by adding a feature test macro _ISOC2X_SOURCE and corresponding __GLIBC_USE (ISOC2X). (I chose to use the newer __GLIBC_USE style for this rather than the older __USE_* macros tested with #ifdef.) As with other such macros, C2X features are also enabled by compiling for a standard newer than C17, or by using _GNU_SOURCE. This patch does not itself enable anything new in the headers for C2X; that is to be done in followup patches. (For example, most of the TS 18661-1 functions should be declared for C2X without any __STDC_WANT_IEC_60559_BFP_EXT__ being needed, but the ones that 18661-1 adds to Annex F because of their close relation to IEEE 754 formats do still need the WANT macro in C2X.) Once C2X becomes an actual standard we'll presumably move to using the actual year in the feature test macro and __GLIBC_USE, with some period when both macro spellings are accepted, as was done with _ISOC9X_SOURCE. Tested for x86_64. * include/features.h (_ISOC2X_SOURCE): New feature test macro. Undefine and define to 1 if [_GNU_SOURCE]. (__GLIBC_USE_ISOC2X): New macro. Undefine and redefine depending on [_ISOC2X_SOURCE] and [__STDC_VERSION__ > 201710L]. (__USE_ISOC11): Also define to 1 if [_ISOC2X_SOURCE]. (__USE_ISOC99): Likewise. (__USE_ISOC95): Likewise. * manual/creature.texi (_ISOC2X_SOURCE): Document.
* login: Assume that _HAVE_UT_* constants are trueFlorian Weimer2019-08-1313-302/+138
| | | | | | Make the GNU version of bits/utmp.h the generic version because all remaining ports use it (with a sysdeps override for Linux s390/s390x).
* elf: Support elf/tst-dlopen-aout in more configurationsFlorian Weimer2019-08-123-13/+23
| | | | | | | | | | | | dlopen can no longer open PIE binaries, so it is not necessary to link the executable as non-PIE to trigger a dlopen failure. If we hard-code the path to the real executable, we can run the test with and without hard-coded paths because the dlopen path will not be recognized as the main program in both cases. (With an explict loader invocation, the loader currently adds argv[0] to l_libname for the main map and the dlopen call suceeds as a result; it does not do that in standard mode.)
* Add glibc.malloc.mxfast tunableDJ Delorie2019-08-097-7/+96
| | | | | | | | | | | | * elf/dl-tunables.list: Add glibc.malloc.mxfast. * manual/tunables.texi: Document it. * malloc/malloc.c (do_set_mxfast): New. (__libc_mallopt): Call it. * malloc/arena.c: Add mxfast tunable. * malloc/tst-mxfast.c: New. * malloc/Makefile: Add it. Reviewed-by: Carlos O'Donell <carlos@redhat.com>
* malloc: Fix missing accounting of top chunk in malloc_info [BZ #24026]Niklas Hambüchen2019-08-082-0/+12
| | | | | | | | | | | | Fixes `<total type="rest" size="..."> incorrectly showing as 0 most of the time. The rest value being wrong is significant because to compute the actual amount of memory handed out via malloc, the user must subtract it from <system type="current" size="...">. That result being wrong makes investigating memory fragmentation issues like <https://bugzilla.redhat.com/show_bug.cgi?id=843478> close to impossible.
* Add SYNC_FILE_RANGE_WRITE_AND_WAIT from Linux 5.2 to bits/fcntl-linux.h.Joseph Myers2019-08-072-0/+10
| | | | | | | | | | | This patch adds the SYNC_FILE_RANGE_WRITE_AND_WAIT constant from Linux 5.2 (a new name for a combination of existing bits, not actually a new kernel interface) to bits/fcntl-linux.h. Tested for x86_64. * sysdeps/unix/sysv/linux/bits/fcntl-linux.h [__USE_GNU] (SYNC_FILE_RANGE_WRITE_AND_WAIT): New macro.
* Add AT_RECURSIVE from Linux 5.2 to fcntl.h.Joseph Myers2019-08-062-0/+5
| | | | | | | | | | This patch adds the AT_RECURSIVE constant from Linux 5.2 to glibc's fcntl.h. (Existing practice in glibc is that the AT_* constants go directly in io/fcntl.h rather than somewhere OS-specific.) Tested for x86_64. * io/fcntl.h [__USE_GNU] (AT_RECURSIVE): New macro.
* s390: Fix Enable VDSO for static linkingStefan Liebler2019-08-062-0/+6
| | | | | | | | | | | | | The commit 5e855c8954014bca7b0d6f07312ec09553695ffd "s390: Enable VDSO for static linking" removed the definition of VDSO_SETUP which leads to not setup the vdso symbols. Instead it jumps to false addresses. This patch just re adds the removed VDSO_SETUP macro definition. ChangeLog: * sysdeps/unix/sysv/linux/s390/init-first.c (VDSO_SETUP): New define.
* Add CLONE_PIDFD from Linux 5.2 to bits/sched.h.Joseph Myers2019-08-052-0/+7
| | | | | | | | | | This patch adds the CLONE_PIDFD constant from Linux 5.2 to glibc's bits/sched.h. Tested for x86_64. * sysdeps/unix/sysv/linux/bits/sched.h [__USE_GNU] (CLONE_PIDFD): New macro.
* linux: Enable vDSO for static linking as default (BZ#19767)Adhemerval Zanella2019-08-0517-52/+34
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch assumes static vDSO is supported as default, it is now supported on all current architectures that support vDSO. It allows removing both ALWAYS_USE_VSYSCALL define, which an architecture requires to explicit define and USE_VSYSCALL (which defines vDSO only for shared or if architecture defines ALWAYS_USE_VSYSCALL). Checked with a build against all affected ABIs. [BZ #19767] * sysdeps/unix/sysv/linux/aarch64/sysdep.h (ALWAYS_USE_VSYSCALL): Remove definition. * sysdeps/unix/sysv/linux/arm/sysdep.h (ALWAYS_USE_VSYSCALL): Likewise. * sysdeps/unix/sysv/linux/i386/sysdep.h (ALWAYS_USE_VSYSCALL): Likewise. * sysdeps/unix/sysv/linux/mips/mips32/sysdep.h (ALWAYS_USE_VSYSCALL): Likewise. * sysdeps/unix/sysv/linux/mips/mips64/n32/sysdep.h (ALWAYS_USE_VSYSCALL): Likewise. * sysdeps/unix/sysv/linux/mips/mips64/n64/sysdep.h (ALWAYS_USE_VSYSCALL): Likewise. * sysdeps/unix/sysv/linux/powerpc/powerpc32/sysdep.h (ALWAYS_USE_VSYSCALL): Likewise. * sysdeps/unix/sysv/linux/powerpc/powerpc64/sysdep.h (ALWAYS_USE_VSYSCALL): Likewise. * sysdeps/unix/sysv/linux/riscv/sysdep.h (ALWAYS_USE_VSYSCALL): Likewise. * sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h (ALWAYS_USE_VSYSCALL): Likewise. * sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h (ALWAYS_USE_VSYSCALL): Likewise. * sysdeps/unix/sysv/linux/sparc/sysdep.h (ALWAYS_USE_VSYSCALL): Likewise. * sysdeps/unix/sysv/linux/x86_64/sysdep.h (ALWAYS_USE_VSYSCALL): Likewise. * sysdeps/unix/sysv/linux/x86/libc-vdso.h: Remove #if USE_VSYSCALL. * sysdeps/unix/sysv/linux/sysdep-vdso.h: Likewise. * sysdeps/unix/sysv/linux/sysdep.h (ALWAYS_USE_VSYSCALL, USE_VSYSCALL): Remove defitions.
* sparc: Enable VDSO for static linkingAdhemerval Zanella2019-08-054-10/+13
| | | | | | | | | | Checked on sparc64-linux-gnu and sparcv9-linux-gnu. [BZ #19767] * sysdeps/unix/sysv/linux/sparc/init-first.c: Remove #ifdef SHARED. * sysdeps/unix/sysv/linux/sparc/libc-vdso.h: Likewise. * sysdeps/unix/sysv/linux/sparc/sysdep.h (ALWAYS_USE_VSYSCALL): Define.
* s390: Enable VDSO for static linkingAdhemerval Zanella2019-08-055-9/+16
| | | | | | | | | | | | | | | | | | | Although s390 only enables vDSO for dynamically linked elf binaries (arch/s390/kernel/vdso.c:217), there is no indication in the code or associated commit message for why not enable it for statically linked binaries as well. To double check, I rebuilt a kernel with the check removed and the vDSO does work for static build for supplied symbols. Checked on s390x-linux-gnu and s390-linux-gnu. [BZ #19767] * sysdeps/unix/sysv/linux/s390/init-first.c: Remove #ifdef SHARED. * sysdeps/unix/sysv/linux/s390/libc-vdso.h: Likewise. * sysdeps/unix/sysv/linux/s390/s390-32/sysdep.h (ALWAYS_USE_VSYSCALL): Define. * sysdeps/unix/sysv/linux/s390/s390-64/sysdep.h (ALWAYS_USE_VSYSCALL): Likewise.
* riscv: Enable VDSO for static linkingAdhemerval Zanella2019-08-054-10/+13
| | | | | | | | | | | Checked on riscv64-linux-gnu-rv64imafdc-lp64d qemu system with some static tests. [BZ #19767] * sysdeps/unix/sysv/linux/riscv/init-first.c: Remove #ifdef SHARED. * sysdeps/unix/sysv/linux/riscv/libc-vdso.h: Likewise. * sysdeps/unix/sysv/linux/riscv/sysdep.h (ALWAYS_USE_VSYSCALL): Define.
* sh: Update libm-tests-ulpsAdhemerval Zanella2019-08-052-20/+24
| | | | | | The make regen-ulps was done on a SH7785LCR. * sysdeps/sh/libm-test-ulps: Update.
* login: Remove utmp backend jump tables [BZ #23518]Florian Weimer2019-08-0510-197/+105
| | | | | | | There is just one file-based implementation, so this dispatch mechanism is unnecessary. Instead of the vtable pointer __libc_utmp_jump_table, use a non-negative file_fd as the indicator that the backend is initialized.
* elf: tst-ldconfig-bad-aux-cache: use support_capture_subprocessAlexandra Hájková2019-08-052-39/+38
|
* Update kernel version in comment in syscall-names.list.Joseph Myers2019-08-022-1/+3
| | | | | | | This patch updates the Linux kernel version in a comment in syscall-names.list to agree with the following "kernel" line. * sysdeps/unix/sysv/linux/syscall-names.list: Update comment.
* Update Linux kernel version number in tst-mman-consts.py to 5.2.Joseph Myers2019-08-022-1/+6
| | | | | | | | | | | | | | The tst-mman-consts.py test includes a kernel version number, to avoid failures because of newly added constants in the kernel (if kernel headers are newer than this version of glibc) or missing constants in the kernel (if kernel headers are older than this version of glibc). This patch updates it to 5.2 to reflect that the MAP_* constants in glibc are still current as of that kernel version. Tested with build-many-glibcs.py. * sysdeps/unix/sysv/linux/tst-mman-consts.py (main): Update Linux kernel version number to 5.2.
* powerpc: Cleanup: use actual power8 assembly mnemonicsRaoni Fassina Firmino2019-08-0112-187/+102
| | | | | | | | | | | | | | | | | | | | | | Some implementations in sysdeps/powerpc/powerpc64/power8/*.S still had pre power8 compatible binutils hardcoded macros and were not using .machine power8. This patch should not have semantic changes, in fact it should have the same exact code generated. Tested that generated stripped shared objects are identical when using "strip --remove-section=.note.gnu.build-id". Checked on: - powerpc64le, power9, build-many-glibcs.py, gcc 6.4.1 20180104, binutils 2.26.2.20160726 - powerpc64le, power8, debian 9, gcc 6.3.0 20170516, binutils 2.28 - powerpc64le, power9, ubuntu 19.04, gcc 8.3.0, binutils 2.32 - powerpc64le, power9, opensuse tumbleweed, gcc 9.1.1 20190527, binutils 2.32 - powerpc64, power9, debian 10, gcc 8.3.0, binutils 2.31.1 Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org> Reviewed-by: Gabriel F. T. Gomes <gabrielftg@linux.ibm.com>
* hppa: Update libm-tests-ulpsAdhemerval Zanella2019-08-012-44/+48
| | | | | | The make regen-ulps was done on a PA8900 with 8.3.0. * sysdeps/hppa/fpu/libm-test-ulps: Update.
* malloc: Remove unwanted leading whitespace in malloc_info [BZ #24867]Florian Weimer2019-08-012-1/+7
| | | | | | | It was introduced in commit 6c8dbf00f536d78b1937b5af6f57be47fd376344 ("Reformat malloc to gnu style."). Reviewed-by: Carlos O'Donell <carlos@redhat.com>
* Get new entropy on each attempt __gen_tempname (BZ #15813)Adhemerval Zanella2019-08-012-7/+12
| | | | | | | | | | | This is missing bit for fully fix BZ#15813 (the other two were fixed by 359653aaacad463). Checked on x86_64-linux-gnu. [BZ #15813] sysdeps/posix/tempname.c (__gen_tempname): get entrypy on each attempt.
* Open master for 2.31 development. glibc-2.30.9000Carlos O'Donell2019-08-012-2/+26
|
* Tag 2.30 release. glibc-2.30Carlos O'Donell2019-08-013-3/+7
|
* Update install and NEWS for 2.30 release.Carlos O'Donell2019-08-014-12/+119
|
* Update translations.Carlos O'Donell2019-07-3135-8668/+8494
| | | | Update translations from translationproject.org for 2.29.9000.
* iconv: Revert steps array reference counting changesFlorian Weimer2019-07-318-132/+31
| | | | | | | | | | | | | | | The changes introduce a memory leak for gconv steps arrays whose first element is an internal conversion, which has a fixed reference count which is not decremented. As a result, after the change in commit 50ce3eae5ba304650459d4441d7d246a7cefc26f, the steps array is never freed, resulting in an unbounded memory leak. This reverts commit 50ce3eae5ba304650459d4441d7d246a7cefc26f ("gconv: Check reference count in __gconv_release_cache [BZ #24677]") and commit 7e740ab2e7be7d83b75513aa406e0b10875f7f9c ("libio: Fix gconv-related memory leak [BZ #24583]"). It reintroduces bug 24583. (Bug 24677 was just a regression caused by the second commit.)
* Restore r31 setting in powerpc32 swapcontext.Joseph Myers2019-07-302-0/+8
| | | | | | | | | | | | | | | | | | | | | | | | | | Commit ffe8a9a8318e1db225b22da8bc067408494bac5c, "powerpc: Remove rt_sigreturn usage on context function", removed from powerpc32 swapcontext a setting of r31 that is relied upon in subsequent code. I'm not sure why this didn't produce test failures in Adhemerval's 32-bit testing; in my (soft-float) testing in preparation for 2.30 release, I see several context-related failures FAIL: stdlib/tst-makecontext2 FAIL: stdlib/tst-makecontext3 FAIL: stdlib/tst-setcontext FAIL: stdlib/tst-setcontext2 FAIL: stdlib/tst-setcontext4 FAIL: stdlib/tst-setcontext7 FAIL: stdlib/tst-setcontext9 FAIL: stdlib/tst-swapcontext1 that did not appear in 2.29 testing. This patch restores the removed register setting in question, and thus fixes those failures. Tested for powerpc (soft-float). * sysdeps/unix/sysv/linux/powerpc/powerpc32/swapcontext-common.S (__CONTEXT_FUNC_NAME): Restore setting of r31.
* nptl: Use uintptr_t for address diagnostic in nptl/tst-pthread-getattrFlorian Weimer2019-07-302-8/+15
| | | | | | | | | | | | | | | | | | | | | Recent GCC versions warn about the attempt to return the address of a local variable: tst-pthread-getattr.c: In function ‘allocate_and_test’: tst-pthread-getattr.c:54:10: error: function returns address of local variable [-Werror=return-local-addr] 54 | return mem; | ^~~ In file included from ../include/alloca.h:3, from tst-pthread-getattr.c:26: ../stdlib/alloca.h:35:23: note: declared here 35 | # define alloca(size) __builtin_alloca (size) | ^~~~~~~~~~~~~~~~~~~~~~~ tst-pthread-getattr.c:51:9: note: in expansion of macro ‘alloca’ 51 | mem = alloca ((size_t) (mem - target)); | ^~~~~~ The address itself is used in a check in the caller, so using uintptr_t instead is reasonable.
* Linux: Move getdents64 to <dirent.h>Florian Weimer2019-07-297-8/+70
| | | | | | This matches the location of the declaration in musl. Reviewed-by: Carlos O'Donell <carlos@redhat.com>
* test-container: Install with $(sorted-subdirs) [BZ #24794]Tulio Magno Quites Machado Filho2019-07-293-4/+12
| | | | | | | | | | | | | Commit 35e038c1d2ccb3a75395662f9c4f28d85a61444f started to use an incomplete list of subdirs based on $(all-subdirs) causing testroot.pristine to miss files from nss. Tested if the list of files in testroot.pristine remains the same. [BZ #24794] * Makeconfig (all-subdirs): Improved source comments. * Makefile (testroot.pristine/install.stamp): Pass subdirs='$(sorted-subdirs)' to make install.
* gconv: Check reference count in __gconv_release_cache [BZ #24677]Florian Weimer2019-07-262-3/+12
| | | | | | | | | | This fixes a regression introduced in commit 7e740ab2e7be7d83b75513aa406e0b10875f7f9c ("libio: Fix gconv-related memory leak [BZ #24583]"). __gconv_release_cache is only ever called with heap-allocated arrays which contain at least one member. The statically allocated ASCII steps are filtered out by __wcsmbs_close_conv.
* x86-64: Compile branred.c with -mprefer-vector-width=128 [BZ #24603]H.J. Lu2019-07-244-0/+52
| | | | | | | | | | | | | | | | | | | | | When compiled with -O3 and AVX, GCC 8 and 9 optimize some loops in sysdeps/ieee754/dbl-64/branred.c with 256-bit vector instructions, which leads to store forward stall: https://gcc.gnu.org/bugzilla/show_bug.cgi?id=90579 There is no easy fix in compiler. This patch limits vector width to 128 bits to work around this issue. It improves performance of sin and cos by more than 40% on Skylake compiled with -O3 -march=skylake. Tested with GCC 7/8/9 on x86-64. [BZ #24603] * sysdeps/x86_64/configure.ac: Check if -mprefer-vector-width=128 works. * sysdeps/x86_64/configure: Regenerated. * sysdeps/x86_64/fpu/Makefile (CFLAGS-branred.c): New. Set to -mprefer-vector-width=128 if supported.
* build-many-glibcs.py: Use Linux 5.2 by defaultFlorian Weimer2019-07-242-1/+6
|