]> git.ipfire.org Git - thirdparty/glibc.git/log
thirdparty/glibc.git
5 years agomalloc: Verify size of top chunk.
Pochang Chen [Thu, 16 Aug 2018 19:24:24 +0000 (15:24 -0400)] 
malloc: Verify size of top chunk.

The House of Force is a well-known technique to exploit heap
overflow. In essence, this exploit takes three steps:
1. Overwrite the size of top chunk with very large value (e.g. -1).
2. Request x bytes from top chunk. As the size of top chunk
   is corrupted, x can be arbitrarily large and top chunk will
   still be offset by x.
3. The next allocation from top chunk will thus be controllable.

If we verify the size of top chunk at step 2, we can stop such attack.

5 years agoReallocate buffers for every run in strlen
Siddhesh Poyarekar [Thu, 16 Aug 2018 08:39:56 +0000 (14:09 +0530)] 
Reallocate buffers for every run in strlen

Try and avoid influencing performance of neighbouring functions.

5 years agoPrint strlen benchmark output in json
Siddhesh Poyarekar [Thu, 16 Aug 2018 08:29:13 +0000 (13:59 +0530)] 
Print strlen benchmark output in json

Allow reading the benchmark using the compare_strings.py script.

5 years agopowerpc: Rearrange little endian specific files
Rajalakshmi Srinivasaraghavan [Thu, 16 Aug 2018 06:42:02 +0000 (12:12 +0530)] 
powerpc: Rearrange little endian specific files

This patch moves little endian specific POWER9 optimization files to
sysdeps/powerpc/powerpc64/le and creates POWER9 ifunc functions
only for little endian.

5 years ago[aarch64] Add an ASIMD variant of strlen for falkor
Siddhesh Poyarekar [Wed, 15 Aug 2018 17:31:33 +0000 (23:01 +0530)] 
[aarch64] Add an ASIMD variant of strlen for falkor

This variant of strlen uses vector loads and operations to reduce the
size of the code and also eliminate the non-ascii fallback.  This
works very well for falkor because of its two vector units and
efficient vector ops.  In the best case it reduces latency of cases in
bench-strlen by 48%, with gains throughout the benchmark.
strlen-walk also sees uniform gains in the 5%-15% range.

Overall the routine appears to work better than the stock one for falkor
regardless of the benchmark, length of string or cache state.

The same cannot be said of a53 and a72 though.  a53 performance was
greatly reduced and for a72 it was a bit of a mixed bag, slightly on the
negative side but I reckon it might be fast in some situations.

* sysdeps/aarch64/strlen.S (__strlen): Rename to STRLEN.
[!STRLEN](STRLEN): Set to __strlen.
* sysdeps/aarch64/multiarch/strlen.c: New file.
* sysdeps/aarch64/multiarch/strlen_generic.S: Likewise.
* sysdeps/aarch64/multiarch/strlen_asimd.S: Likewise.
* sysdeps/aarch64/multiarch/ifunc-impl-list.c
(__libc_ifunc_impl_list): Add strlen.
* sysdeps/aarch64/multiarch/Makefile (sysdep_routines): Add
strlen_generic and strlen_asimd.

Reviewed-By: szabolcs.nagy@arm.com
CC: pinskia@gmail.com
5 years agoUse generic sinf/cosf in lgammaf_r
Wilco Dijkstra [Wed, 15 Aug 2018 15:01:21 +0000 (16:01 +0100)] 
Use generic sinf/cosf in lgammaf_r

The internal functions __kernel_sinf and __kernel_cosf are used only by
lgammaf_r.  Removing the internal functions and using the generic sinf
and cosf is better overall.  Benchmarking on Cortex-A72 shows the generic
sinf and cosf are 1.4x and 2.3x faster in the range |x| < PI/4, and 0.66x
and 1.1x for |x| < PI/2, so it should make lgammaf_r faster on average.

GLIBC regression tests pass on AArch64.

* sysdeps/ieee754/flt-32/e_lgammaf_r.c (sin_pif): Use __sinf/__cosf.
* sysdeps/ieee754/flt-32/k_cosf.c (__kernel_cosf): Remove all code.
* sysdeps/ieee754/flt-32/k_sinf.c (__kernel_sinf): Likewise.

5 years agoFix spaces in x86_64 ULP file
Wilco Dijkstra [Wed, 15 Aug 2018 11:56:22 +0000 (12:56 +0100)] 
Fix spaces in x86_64 ULP file

Fix a few missing spaces, it's now identical to the regenerated version.

Passes GLIBC tests on x64.

* sysdeps/x86_64/fpu/libm-test-ulps: Regenerate to fix spaces.

5 years agoerror, warn, warnx: Use __fxprintf for wide printing [BZ #23519]
Florian Weimer [Tue, 14 Aug 2018 11:36:10 +0000 (13:36 +0200)] 
error, warn, warnx: Use __fxprintf for wide printing [BZ #23519]

Also introduce the __vfxprintf function.

5 years agoImprove performance of sinf and cosf
Wilco Dijkstra [Tue, 14 Aug 2018 09:45:59 +0000 (10:45 +0100)] 
Improve performance of sinf and cosf

The second patch improves performance of sinf and cosf using the same
algorithms and polynomials.  The returned values are identical to sincosf
for the same input.  ULP definitions for AArch64 and x64 are updated.

sinf/cosf througput gains on Cortex-A72:
* |x| < 0x1p-12 : 1.2x
* |x| < M_PI_4  : 1.8x
* |x| < 2 * M_PI: 1.7x
* |x| < 120.0   : 2.3x
* |x| < Inf     : 3.0x

* NEWS: Mention sinf, cosf, sincosf.
* sysdeps/aarch64/libm-test-ulps: Update ULP for sinf, cosf, sincosf.
* sysdeps/x86_64/fpu/libm-test-ulps: Update ULP for sinf and cosf.
* sysdeps/x86_64/fpu/multiarch/s_sincosf-fma.c: Add definitions of
constants rather than including generic sincosf.h.
* sysdeps/x86_64/fpu/s_sincosf_data.c: Remove.
* sysdeps/ieee754/flt-32/s_cosf.c (cosf): Rewrite.
* sysdeps/ieee754/flt-32/s_sincosf.h (reduced_sin): Remove.
(reduced_cos): Remove.
(sinf_poly): New function.
* sysdeps/ieee754/flt-32/s_sinf.c (sinf): Rewrite.

5 years agonss_files: Fix file stream leak in aliases lookup [BZ #23521]
Florian Weimer [Tue, 14 Aug 2018 08:52:06 +0000 (10:52 +0200)] 
nss_files: Fix file stream leak in aliases lookup [BZ #23521]

In order to get a clean test case, it was necessary to fix partially
fixed bug 23522 as well.

5 years agonscd: Deallocate existing user names in file parser
Florian Weimer [Tue, 14 Aug 2018 08:51:07 +0000 (10:51 +0200)] 
nscd: Deallocate existing user names in file parser

This avoids a theoretical memory leak (theoretical because it depends on
multiple server-user/stat-user directives in the configuration file).

5 years agoUpdate syscall-names.list for Linux 4.18.
Joseph Myers [Mon, 13 Aug 2018 21:35:27 +0000 (21:35 +0000)] 
Update syscall-names.list for Linux 4.18.

This patch updates sysdeps/unix/sysv/linux/syscall-names.list for
Linux 4.18.  The io_pgetevents and rseq syscalls are added to the
kernel on various architectures, so need to be mentioned in this file.

Tested with build-many-glibcs.py.

* sysdeps/unix/sysv/linux/syscall-names.list: Update kernel
version to 4.18.
(io_pgetevents): New syscall.
(rseq): Likewise.

5 years agoUpdate install.texi documentation of uses of Perl and Python.
Joseph Myers [Mon, 13 Aug 2018 17:20:46 +0000 (17:20 +0000)] 
Update install.texi documentation of uses of Perl and Python.

The install.texi documentation of uses of Perl and Python is
substantially out of date.

The description of Perl is "to test the installation" (which I
interpret as referring to test-installation.pl), but it's used for
more tests than that, and to build the manual, and to regenerate one
file in the source tree.

The description of Python is only for pretty-printer tests, but it's
used for other tests / benchmarks as well (and for other internal uses
such as updating Unicode data, for which we already require Python 3,
but I think install.texi only needs to describe uses from the main
glibc Makefiles).

This patch updates the descriptions of what those tools are used for.
The Python information (and information about other tools for testing
pretty printers) was awkwardly in the middle of the general
description of building and testing glibc, rather than with the rest
of information about tools used in glibc build and test; this patch
moves the information about those tools into the main list.

Tested with regeneration of INSTALL as well as "make info" and "make
pdf".

* manual/install.texi (Configuring and compiling): Do not list
tools used for testing pretty printers here.
(Tools for Compilation): List Python, PExpect and GDB here.
Update descriptions of uses of Perl and Python.
* INSTALL: Regenerate.

5 years agoUse Linux 4.18 in build-many-glibcs.py.
Joseph Myers [Mon, 13 Aug 2018 16:46:13 +0000 (16:46 +0000)] 
Use Linux 4.18 in build-many-glibcs.py.

* scripts/build-many-glibcs.py (Context.checkout): Default Linux
version to 4.18.

5 years agoerror, error_at_line: Add missing va_end calls
Florian Weimer [Mon, 13 Aug 2018 12:28:07 +0000 (14:28 +0200)] 
error, error_at_line: Add missing va_end calls

5 years agombstowcs: Remove outdated comment
Florian Weimer [Mon, 13 Aug 2018 12:05:00 +0000 (14:05 +0200)] 
mbstowcs: Remove outdated comment

ISO C requires that there is no effect on any global conversion state,
so the change in commit 9f097308c7465443765d1e25699a4cf33eff5455 was
correct in princple.

5 years ago[benchtests] Add workload test properties to schema
Siddhesh Poyarekar [Sat, 11 Aug 2018 13:24:46 +0000 (18:54 +0530)] 
[benchtests] Add workload test properties to schema

Add the workload test properties (max-throughput, latency, etc.) to
the schema to prevent benchmark output validation from failing.

* benchtests/scripts/benchout.schema.json (properties): Add
new properties.

5 years ago[benchtests] Add mandatory attributes to workload tests
Siddhesh Poyarekar [Sat, 11 Aug 2018 13:15:03 +0000 (18:45 +0530)] 
[benchtests] Add mandatory attributes to workload tests

Add the duration and iterations attributes to the workloads tests to
make the json schema parser happy

* benchtests/bench-skeleton.c (main): Add duration and
iterations attributes.

5 years agoChangeLog: Fix an obvious typo.
Rafal Luzynski [Fri, 10 Aug 2018 21:57:35 +0000 (23:57 +0200)] 
ChangeLog: Fix an obvious typo.

The typo has been introduced in commit
08a5ee14c6fcd87caa4f6f5c442be2fc345211f0.

5 years agoregex: Gnulib unibyte RRI uses bytes not chars
Paul Eggert [Fri, 10 Aug 2018 21:19:05 +0000 (14:19 -0700)] 
regex: Gnulib unibyte RRI uses bytes not chars

Adjust the non-glibc code to agree with what Gawk needs for
rational range interpretation (RRI) for regular expression ranges.
In unibyte locales, Gawk wants ranges to use the underlying byte
rather than the character code point.  This change does not affect
glibc proper.
* posix/regcomp.c (parse_byte) [!LIBC && RE_ENABLE_I18N]:
In unibyte locales, use the byte value rather than
running it through btowc.

5 years agoMove SNAN_TESTS_* out of math-tests.h.
Joseph Myers [Fri, 10 Aug 2018 19:22:01 +0000 (19:22 +0000)] 
Move SNAN_TESTS_* out of math-tests.h.

Continuing moving macros out of math-tests.h to smaller headers
following typo-proof conventions instead of using #ifndef, this patch
moves the SNAN_TESTS_* macros for individual types out to their own
sysdeps header (while the type-generic SNAN_TESTS wrapper for those
macros remains in math-tests.h).

Tested for x86_64 and x86, and with build-many-glibcs.py.

* sysdeps/generic/math-tests-snan.h: New file.
* sysdeps/generic/math-tests.h: Include <math-tests-snan.h>.
(SNAN_TESTS_float): Do not define here.
(SNAN_TESTS_double): Likewise.
(SNAN_TESTS_long_double): Likewise.
(SNAN_TESTS_float128): Likewise.
* sysdeps/i386/fpu/math-tests-snan.h: New file.
* sysdeps/i386/fpu/math-tests.h: Remove file.
* sysdeps/ia64/math-tests-snan.h: New file.
* sysdeps/ia64/math-tests.h: Remove file.
* sysdeps/x86/math-tests.h: Likewise.
* sysdeps/x86_64/fpu/math-tests-snan.h: New file.

5 years agoImprove performance of sincosf
Wilco Dijkstra [Fri, 10 Aug 2018 16:31:30 +0000 (17:31 +0100)] 
Improve performance of sincosf

This patch is a complete rewrite of sincosf.  The new version is
significantly faster, as well as simple and accurate.
The worst-case ULP is 0.5607, maximum relative error is 0.5303 * 2^-23 over
all 4 billion inputs.  In non-nearest rounding modes the error is 1ULP.

The algorithm uses 3 main cases: small inputs which don't need argument
reduction, small inputs which need a simple range reduction and large inputs
requiring complex range reduction.  The code uses approximate integer
comparisons to quickly decide between these cases.

The small range reducer uses a single reduction step to handle values up to
120.0.  It is fastest on targets which support inlined round instructions.

The large range reducer uses integer arithmetic for simplicity.  It does a
32x96 bit multiply to compute a 64-bit modulo result.  This is more than
accurate enough to handle the worst-case cancellation for values close to
an integer multiple of PI/4.  It could be further optimized, however it is
already much faster than necessary.

sincosf throughput gains on Cortex-A72:
* |x| < 0x1p-12 : 1.6x
* |x| < M_PI_4  : 1.7x
* |x| < 2 * M_PI: 1.5x
* |x| < 120.0   : 1.8x
* |x| < Inf     : 2.3x

* math/Makefile: Add s_sincosf_data.c.
* sysdeps/ia64/fpu/s_sincosf_data.c: New file.
* sysdeps/ieee754/flt-32/s_sincosf.h (abstop12): Add new function.
(sincosf_poly): Likewise.
(reduce_small): Likewise.
(reduce_large): Likewise.
* sysdeps/ieee754/flt-32/s_sincosf.c (sincosf): Rewrite.
* sysdeps/ieee754/flt-32/s_sincosf_data.c: New file with sincosf data.
* sysdeps/m68k/m680x0/fpu/s_sincosf_data.c: New file.
* sysdeps/x86_64/fpu/s_sincosf_data.c: New file.

5 years agoClean up converttoint handling and document the semantics
Szabolcs Nagy [Wed, 4 Jul 2018 11:29:29 +0000 (12:29 +0100)] 
Clean up converttoint handling and document the semantics

This patch currently only affects aarch64.

The roundtoint and converttoint internal functions are only called with small
values, so 32 bit result is enough for converttoint and it is a signed int
conversion so the return type is changed to int32_t.

The original idea was to help the compiler keeping the result in uint64_t,
then it's clear that no sign extension is needed and there is no accidental
undefined or implementation defined signed int arithmetics.

But it turns out gcc does a good job with inlining so changing the type has
no overhead and the semantics of the conversion is less surprising this way.
Since we want to allow the asuint64 (x + 0x1.8p52) style conversion, the top
bits were never usable and the existing code ensures that only the bottom
32 bits of the conversion result are used.

On aarch64 the neon intrinsics (which round ties to even) are changed to
round and lround (which round ties away from zero) this does not affect the
results in a significant way, but more portable (relies on round and lround
being inlined which works with -fno-math-errno).

The TOINT_SHIFT and TOINT_RINT macros were removed, only keep separate code
paths for TOINT_INTRINSICS and !TOINT_INTRINSICS.

* sysdeps/aarch64/fpu/math_private.h (roundtoint): Use round.
(converttoint): Use lround.
* sysdeps/ieee754/flt-32/math_config.h (roundtoint): Declare and
document the semantics when TOINT_INTRINSICS is set.
(converttoint): Likewise.
(TOINT_RINT): Remove.
(TOINT_SHIFT): Remove.
* sysdeps/ieee754/flt-32/e_expf.c (__expf): Remove the TOINT_RINT code
path.

5 years agoLinux: Rewrite __old_getdents64 [BZ #23497]
Florian Weimer [Fri, 10 Aug 2018 08:20:13 +0000 (10:20 +0200)] 
Linux: Rewrite __old_getdents64 [BZ #23497]

Commit 298d0e3129c0b5137f4989275b13fe30d0733c4d ("Consolidate Linux
getdents{64} implementation") broke the implementation because it does
not take into account struct offset differences.

The new implementation is close to the old one, before the
consolidation, but has been cleaned up slightly.

5 years agoS390: Fix unwind in 32-bit _mcount
Ilya Leoshkevich [Fri, 10 Aug 2018 07:07:44 +0000 (09:07 +0200)] 
S390: Fix unwind in 32-bit _mcount

* Fix CFI offset for %r14.
* Fix unwound value of %r15 being off by 128 bytes.

ChangeLog:

* sysdeps/s390/s390-32/s390-mcount.S (_mcount):
Fix unwind.

5 years agoS390: Implement 64-bit __fentry__
Ilya Leoshkevich [Fri, 10 Aug 2018 07:07:44 +0000 (09:07 +0200)] 
S390: Implement 64-bit __fentry__

* Since __fentry__ is almost the same as _mcount, reuse the code by
  #including it twice with different #defines around.
* Remove LA usages - they are needed in 31-bit mode to clear the top
  bit, but in 64-bit they appear to do nothing.
* Add CFI rule for the nonstandard return register. This rule applies
  to the current function (binutils generates a new CIE - see
  gas/dw2gencfi.c:select_cie_for_fde()), so it is not necessary to put
  __fentry__ into a new file.
* Fix CFI offset for %r14.
* Add CFI rule for %r0.
* Fix unwound value of %r15 being off by 244 bytes.
* Unwinding in __fentry__@plt does not work, no plan to fix it - it
  would require asking linker to generate CFI for return address in
  %r0.  From functional perspective keeping it broken is fine, since
  the callee did not have a chance to do anything yet.  From
  convenience perspective it would be possible to enhance GDB in the
  future to treat __fentry__@plt in a special way.
* Fix whitespace.
* Fix offsets in comments, which were copied from 32-bit code.
* 32-bit version will not be implemented, since it's not compatible
  with the corresponding PLT stubs: they assume %r12 points to GOT,
  which is not the case for gcc-emitted __fentry__ stub, which runs
  before the prolog.

This patch adds the runtime support in glibc for the -mfentry
gcc feature introduced in [1] and [2].

[1] https://gcc.gnu.org/ml/gcc-patches/2018-07/msg00784.html
[2] https://gcc.gnu.org/ml/gcc-patches/2018-07/msg00912.html

ChangeLog:

* sysdeps/s390/s390-64/Versions (__fentry__): Add.
* sysdeps/s390/s390-64/s390x-mcount.S: Move the common
code to s390x-mcount.h and #include it.
* sysdeps/s390/s390-64/s390x-mcount.h: New file.
* sysdeps/unix/sysv/linux/s390/s390-64/libc.abilist
(__fentry__): Add.

5 years agoMove __fentry__ version definition to sysdeps/{i386,x86_64}
Ilya Leoshkevich [Fri, 10 Aug 2018 07:07:44 +0000 (09:07 +0200)] 
Move __fentry__ version definition to sysdeps/{i386,x86_64}

__fentry__ symbol is currently not defined for other architectures.
Attempts to introduce it cause abicheck to fail, because it will be
available since 2.29 earliest, and not 2.13, which is the case for
Intel.  With the new code, abicheck passes for i686-linux-gnu,
x86_64-linux-gnu and x86_64-linux-gnu32 triples.

ChangeLog:

* stdlib/Versions: Remove __fentry__.
* sysdeps/i386/Versions: Add __fentry__.
* sysdeps/x86_64/Versions: Add __fentry__.

5 years agoS390: Test that lazy binding does not clobber R0
Ilya Leoshkevich [Fri, 10 Aug 2018 07:07:43 +0000 (09:07 +0200)] 
S390: Test that lazy binding does not clobber R0

The following combinations need to be tested:
* 32- (g5, esa and zarch) and 64-bit
  * linux32 glibc/configure CC='gcc -m31 -march=g5'
  * linux32 glibc/configure CC='gcc -m31'
  * linux32 glibc/configure CC='gcc -m31 -mzarch'
* With and without VX:
  * glibc/configure libc_cv_asm_s390_vx=no
* With and without profiling (using LD_PROFILE)
* With and without pltexit (using LD_AUDIT)

ChangeLog:

* sysdeps/s390/Makefile: Register the new tests.
* sysdeps/s390/tst-dl-runtime-mod.S: New file.
* sysdeps/s390/tst-dl-runtime-profile-audit.c: New file.
* sysdeps/s390/tst-dl-runtime-profile-noaudit.c: New file.
* sysdeps/s390/tst-dl-runtime-resolve-audit.c: New file.
* sysdeps/s390/tst-dl-runtime-resolve-noaudit.c: New file.
* sysdeps/s390/tst-dl-runtime.c: New file.

5 years agoS390: Do not clobber R0 in 64-bit _dl_runtime_profile
Ilya Leoshkevich [Fri, 10 Aug 2018 07:07:43 +0000 (09:07 +0200)] 
S390: Do not clobber R0 in 64-bit _dl_runtime_profile

Preparation for the usage of R0 by __fentry__.

ChangeLog:

* sysdeps/s390/s390-64/dl-trampoline.h (_dl_runtime_profile):
Do not clobber R0.

5 years agoS390: Do not clobber R0 in 64-bit _dl_runtime_resolve
Ilya Leoshkevich [Fri, 10 Aug 2018 07:07:43 +0000 (09:07 +0200)] 
S390: Do not clobber R0 in 64-bit _dl_runtime_resolve

Preparation for the usage of R0 by __fentry__.

ChangeLog:

* sysdeps/s390/s390-64/dl-trampoline.h (_dl_runtime_resolve):
Do not clobber R0.

5 years agoS390: Do not clobber R0 in 32-bit _dl_runtime_profile
Ilya Leoshkevich [Fri, 10 Aug 2018 07:07:43 +0000 (09:07 +0200)] 
S390: Do not clobber R0 in 32-bit _dl_runtime_profile

Preparation for the usage of R0 by __fentry__.

ChangeLog:

* sysdeps/s390/s390-32/dl-trampoline.h (_dl_runtime_profile):
Do not clobber R0.

5 years agoS390: Do not clobber R0 in 32-bit _dl_runtime_resolve
Ilya Leoshkevich [Fri, 10 Aug 2018 07:07:42 +0000 (09:07 +0200)] 
S390: Do not clobber R0 in 32-bit _dl_runtime_resolve

Preparation for the usage of R0 by __fentry__.

ChangeLog:

* sysdeps/s390/s390-32/dl-trampoline.h (_dl_runtime_resolve):
Do not clobber R0.

5 years agoS390: Use symbolic offsets for stack variables in 64-bit _dl_runtime_profile
Ilya Leoshkevich [Fri, 10 Aug 2018 07:07:42 +0000 (09:07 +0200)] 
S390: Use symbolic offsets for stack variables in 64-bit _dl_runtime_profile

Maintainability improvement.

ChangeLog:

* sysdeps/s390/s390-64/dl-trampoline.h (_dl_runtime_profile):
Use symbolic offsets for stack variables.

5 years agoS390: Use symbolic offsets for stack variables in 64-bit _dl_runtime_resolve
Ilya Leoshkevich [Fri, 10 Aug 2018 07:07:42 +0000 (09:07 +0200)] 
S390: Use symbolic offsets for stack variables in 64-bit _dl_runtime_resolve

Maintainability improvement.

ChangeLog:

* sysdeps/s390/s390-64/dl-trampoline.h (_dl_runtime_resolve):
Use symbolic offsets for stack variables.

5 years agoS390: Use symbolic offsets for stack variables in 32-bit _dl_runtime_profile
Ilya Leoshkevich [Fri, 10 Aug 2018 07:07:41 +0000 (09:07 +0200)] 
S390: Use symbolic offsets for stack variables in 32-bit _dl_runtime_profile

Maintainability improvement.

ChangeLog:

* sysdeps/s390/s390-32/dl-trampoline.h (_dl_runtime_profile):
Use symbolic offsets for stack variables.

5 years agoS390: Use symbolic offsets for stack variables in 32-bit _dl_runtime_resolve
Ilya Leoshkevich [Fri, 10 Aug 2018 07:07:41 +0000 (09:07 +0200)] 
S390: Use symbolic offsets for stack variables in 32-bit _dl_runtime_resolve

Maintainability improvement.

ChangeLog:

* sysdeps/s390/s390-32/dl-trampoline.h (_dl_runtime_resolve):
Use symbolic offsets for stack variables.

5 years agoReplace gen-libm-test.pl with gen-libm-test.py.
Joseph Myers [Thu, 9 Aug 2018 15:34:12 +0000 (15:34 +0000)] 
Replace gen-libm-test.pl with gen-libm-test.py.

Following the recent discussion of using Python instead of Perl and
Awk for glibc build / test, this patch replaces gen-libm-test.pl with
a new gen-libm-test.py script.  This script should work with all
Python versions supported by glibc (tested by hand with Python 2.7,
tested in the build system with Python 3.5; configure prefers Python 3
if available).

This script is designed to give identical output to gen-libm-test.pl
for ease of verification of the change, except for generated comments
referring to .py instead of .pl.  (That is, identical for actual
inputs passed to the script, not necessarily for all possible input;
for example, this version more precisely follows the C standard syntax
for floating-point constants when deciding when to add LIT macro
calls.)  In one place a comment notes that the generation of
NON_FINITE flags is replicating a bug in the Perl script to assist in
such comparisons (with the expectation that this bug can then be
separately fixed in the Python script later).

Tested for x86_64, including comparison of generated files (and hand
testing of the case of generating a sorted libm-test-ulps file, which
isn't covered by normal "make check").

I'd expect to follow this up by extending the new script to produce
the ulps tables for the manual as well (replacing
manual/libm-err-tab.pl, so that then we just have one ulps file
parser) - at which point the manual build would depend on both Perl
and Python (eliminating the Perl dependency would require someone to
rewrite summary.pl in Python, and that would only eliminate the
*direct* Perl dependency; current makeinfo is written in Perl so there
would still be an indirect dependency).

I think install.texi is more or less equally out-of-date regarding
Perl and Python uses before and after this patch, so I don't think
this patch depends on my patch
<https://sourceware.org/ml/libc-alpha/2018-08/msg00133.html> to update
install.texi regarding such uses (pending review).

* math/gen-libm-test.py: New file.
* math/gen-libm-test.pl: Remove.
* math/Makefile [$(PERL) != no]: Change condition to [PYTHON].
($(objpfx)libm-test-ulps.h): Use gen-libm-test.py instead of
gen-libm-test.pl.
($(libm-test-c-noauto-obj)): Likewise.
($(libm-test-c-auto-obj)): Likewise.
($(libm-test-c-narrow-obj)): Likewise.
(regen-ulps): Likewise.
* math/README.libm-test: Update references to gen-libm-test.pl.
* math/libm-test-driver.c (struct test_fj_f_data): Update comment
referencing gen-libm-test.pl.
* math/libm-test-nexttoward.inc (nexttoward_test_data): Likewise.
* math/libm-test-support.c: Likewise.
* math/libm-test-support.h: Likewise.
* sysdeps/generic/libm-test-ulps: Likewise.

5 years agohurd: Avoid PLTs for __pthread_get/setspecific
Samuel Thibault [Wed, 8 Aug 2018 23:26:19 +0000 (01:26 +0200)] 
hurd: Avoid PLTs for __pthread_get/setspecific

* sysdeps/htl/pthreadP.h [IS_IN (libpthread)] (__pthread_getspecific,
__pthread_setspecific): Add hidden proto.
* sysdeps/htl/pt-getspecific.c (__pthread_getspecific): Add hidden def.
* sysdeps/htl/pt-setspecific.c (__pthread_setspecific): Add hidden def.

5 years ago[aarch64] Fix value of MIN_PAGE_SIZE for testing
Siddhesh Poyarekar [Wed, 8 Aug 2018 15:46:07 +0000 (21:16 +0530)] 
[aarch64] Fix value of MIN_PAGE_SIZE for testing

MIN_PAGE_SIZE is normally set to 4096 but for testing it can be set to
16 so that it exercises the page crossing code for every misaligned
access.  The value was set to 15, which is obviously wrong, so fixed
as obvious and tested.

* sysdeps/aarch64/strlen.S [TEST_PAGE_CROSS](MIN_PAGE_SIZE):
Fix value.

5 years agoMove comment from libm-test-nextdown.inc to libm-test-nexttoward.inc.
Joseph Myers [Wed, 8 Aug 2018 16:16:59 +0000 (16:16 +0000)] 
Move comment from libm-test-nextdown.inc to libm-test-nexttoward.inc.

When libm tests were split into separate per-function .inc files, a
comment relating to the nexttoward tests ended up at the end of
libm-test-nextdown.inc (because the split was based on starting each
function's tests with the <function>_test_data definition, which
failed to allow for comments before such definitions).  This patch
moves that comment to the correct location.

Tested for x86_64.

* math/libm-test-nextdown.inc (do_test): Move comment to ....
* math/libm-test-nexttoward.inc (nexttoward_test_data): ... here.

5 years agohurd: Add missing symbols for proper libc_get/setspecific
Samuel Thibault [Tue, 7 Aug 2018 23:55:04 +0000 (01:55 +0200)] 
hurd: Add missing symbols for proper libc_get/setspecific

* htl/Versions (__pthread_getspecific, __pthread_setspecific): Add
symbols.

5 years agobenchtests: Clean up the alloc_bufs
Siddhesh Poyarekar [Tue, 7 Aug 2018 19:14:56 +0000 (00:44 +0530)] 
benchtests: Clean up the alloc_bufs

Drop realloc_bufs in favour of making alloc_bufs transparently
reallocate the buffers if it had allocated before.  Also consolidate
computation of buffer lengths so that they don't get repeated on every
reallocation.

* benchtests/bench-string.h (buf1_size, buf2_size): New
variables.
(init_sizes): New function.
(test_init): Use it.
(alloc_buf, exit_error): New functions.
(alloc_bufs): Use ALLOC_BUF.
(realloc_bufs): Remove.
* benchtests/bench-memcmp.c (do_test): Adjust.
* benchtests/bench-memset-large.c (do_test): Likewise.
* benchtests/bench-memset-walk.c (do_test): Likewise.
* benchtests/bench-memset.c (do_test): Likewise.
* benchtests/bench-strncmp.c (do_test): Likewise.

5 years agoRISC-V: Don't use ps_get_thread_area in libthread_db (bug 23402)
Andreas Schwab [Thu, 12 Jul 2018 07:24:36 +0000 (09:24 +0200)] 
RISC-V: Don't use ps_get_thread_area in libthread_db (bug 23402)

Since RISC-V stores the thread pointer in a general register libthread_db
can just ask the debugger for the register contents instead of trying to
call ps_get_thread_area.  This enables thread debugging in gdb.

* sysdeps/riscv/nptl/tls.h (DB_THREAD_SELF): Use REGISTER instead
of CONST_THREAD_AREA.

5 years agox86: Move STATE_SAVE_OFFSET/STATE_SAVE_MASK to sysdep.h
H.J. Lu [Mon, 6 Aug 2018 13:25:28 +0000 (06:25 -0700)] 
x86: Move STATE_SAVE_OFFSET/STATE_SAVE_MASK to sysdep.h

Move STATE_SAVE_OFFSET and STATE_SAVE_MASK to sysdep.h to make
sysdeps/x86/cpu-features.h a C header file.

* sysdeps/x86/cpu-features.h (STATE_SAVE_OFFSET): Removed.
(STATE_SAVE_MASK): Likewise.
Don't check __ASSEMBLER__ to include <cpu-features-offsets.h>.
* sysdeps/x86/sysdep.h (STATE_SAVE_OFFSET): New.
(STATE_SAVE_MASK): Likewise.
* sysdeps/x86_64/dl-trampoline.S: Include <cpu-features-offsets.h>
instead of <cpu-features.h>.

5 years agoImprove ChangeLog message.
DJ Delorie [Fri, 3 Aug 2018 23:24:14 +0000 (19:24 -0400)] 
Improve ChangeLog message.

5 years agoRegen RISC-V rvd ULPs
DJ Delorie [Fri, 3 Aug 2018 17:52:01 +0000 (13:52 -0400)] 
Regen RISC-V rvd ULPs

* sysdeps/riscv/rv64/rvd/libm-test-ulps: Update.

Note: I regen'd these from scratch, but I'm only committing the
increases, as I only tested on hardware.  There were a few 2->1
decreases that I omitted, possibly "for now".

5 years agoRISC-V: Fix rounding save/restore bug.
DJ Delorie [Fri, 3 Aug 2018 17:43:31 +0000 (13:43 -0400)] 
RISC-V: Fix rounding save/restore bug.

* sysdeps/riscv/rvf/math_private.h (libc_feholdexcept_setround_riscv):
Fix rounding save-restore bug.

Fixes about a hundred off-by-ULP failures in the math testsuite.

5 years agoConsistently terminate libm-test-*.inc TEST lines with commas.
Joseph Myers [Fri, 3 Aug 2018 16:56:02 +0000 (16:56 +0000)] 
Consistently terminate libm-test-*.inc TEST lines with commas.

Some TEST_* lines in libm-test-*.inc end with semicolons not commas.
This works at present because gen-libm-test.pl ignores whatever comes
after the TEST_* call, but is logically wrong (since the TEST_* calls
generate array elements, not statements) and the Python replacement
for gen-libm-test.pl that I'm working on is stricter about the syntax
here.  This patch fixes the lines in question to use commas like most
such lines already do.

Tested for x86_64.

* math/libm-test-ilogb.inc (ilogb_test_data): Use ',' not ';'
after TEST_* calls.
* math/libm-test-llogb.inc (llogb_test_data): Likewise.
* math/libm-test-logb.inc (logb_test_data): Likewise.

5 years agoSimplify and speedup strstr/strcasestr first match
Wilco Dijkstra [Fri, 3 Aug 2018 16:24:12 +0000 (17:24 +0100)] 
Simplify and speedup strstr/strcasestr first match

Looking at the benchtests, both strstr and strcasestr spend a lot of time
in a slow initialization loop handling one character per iteration.
This can be simplified and use the much faster strlen/strnlen/strchr/memcmp.
Read ahead a few cachelines to reduce the number of strnlen calls, which
improves performance by ~3-4%.  This patch improves the time taken for the
full strstr benchtest by >40%.

* string/strcasestr.c (STRCASESTR): Simplify and speedup first match.
* string/strstr.c (AVAILABLE): Likewise.

5 years agox86: Don't include <init-arch.h> in assembly codes
H.J. Lu [Fri, 3 Aug 2018 15:04:49 +0000 (08:04 -0700)] 
x86: Don't include <init-arch.h> in assembly codes

There is no need to include <init-arch.h> in assembly codes since all
x86 IFUNC selector functions are written in C.  Tested on i686 and
x86-64.  There is no code change in libc.so, ld.so and libmvec.so.

* sysdeps/i386/i686/multiarch/bzero-ia32.S: Don't include
<init-arch.h>.
* sysdeps/x86_64/fpu/multiarch/svml_d_sin8_core-avx2.S: Likewise.
* sysdeps/x86_64/fpu/multiarch/svml_s_expf16_core-avx2.S: Likewise.
* sysdeps/x86_64/multiarch/memset-sse2-unaligned-erms.S: Likewise.

5 years agoUpdate be translations.
Carlos O'Donell [Fri, 3 Aug 2018 14:13:47 +0000 (10:13 -0400)] 
Update be translations.

5 years agoUpdate be translations.
Carlos O'Donell [Thu, 2 Aug 2018 18:48:10 +0000 (14:48 -0400)] 
Update be translations.

5 years agox86: Cleanup cpu-features-offsets.sym
H.J. Lu [Fri, 3 Aug 2018 13:40:48 +0000 (06:40 -0700)] 
x86: Cleanup cpu-features-offsets.sym

Remove the unused macros.  There is no code changes in libc.so nor
ld.so on i686 and x86-64.

* sysdeps/x86/cpu-features-offsets.sym
(rtld_global_ro_offsetof): Removed.
(CPU_FEATURES_SIZE): Likewise.
(CPUID_OFFSET): Likewise.
(CPUID_SIZE): Likewise.
(CPUID_EAX_OFFSET): Likewise.
(CPUID_EBX_OFFSET): Likewise.
(CPUID_ECX_OFFSET): Likewise.
(CPUID_EDX_OFFSET): Likewise.
(FAMILY_OFFSET): Likewise.
(MODEL_OFFSET): Likewise.
(FEATURE_OFFSET): Likewise.
(FEATURE_SIZ): Likewise.
(COMMON_CPUID_INDEX_1): Likewise.
(COMMON_CPUID_INDEX_7): Likewise.
(FEATURE_INDEX_1): Likewise.
(RTLD_GLOBAL_RO_DL_X86_CPU_FEATURES_OFFSET): Updated.

5 years agoFix ChangeLog date.
Carlos O'Donell [Thu, 2 Aug 2018 19:32:23 +0000 (15:32 -0400)] 
Fix ChangeLog date.

5 years agoAdd convenience target 'install-locale-files'.
Carlos O'Donell [Thu, 26 Jul 2018 14:14:55 +0000 (10:14 -0400)] 
Add convenience target 'install-locale-files'.

The convenience install target 'install-locale-files' is created
to allow distributions to install all of the SUPPORTED locales as
files instead of into the locale-archive.

You invoke the new convenience target like this:
make localedata/install-locale-files DESTDIR=<prefix>

5 years ago[benchtests] Fix compare_strings.py for python2
Siddhesh Poyarekar [Thu, 2 Aug 2018 18:56:45 +0000 (00:26 +0530)] 
[benchtests] Fix compare_strings.py for python2

Python 2 does not have a FileNotFoundError so drop it in favour of
simply printing out the last (and most informative) line of the
exception.

* benchtests/scripts/compare_strings.py: Import traceback.
(parse_file): Pretty-print error.

5 years agoAdd ChangeLog for the last commit
Siddhesh Poyarekar [Thu, 2 Aug 2018 18:26:18 +0000 (23:56 +0530)] 
Add ChangeLog for the last commit

5 years agoRename the glibc.tune namespace to glibc.cpu
Siddhesh Poyarekar [Thu, 2 Aug 2018 18:19:19 +0000 (23:49 +0530)] 
Rename the glibc.tune namespace to glibc.cpu

The glibc.tune namespace is vaguely named since it is a 'tunable', so
give it a more specific name that describes what it refers to.  Rename
the tunable namespace to 'cpu' to more accurately reflect what it
encompasses.  Also rename glibc.tune.cpu to glibc.cpu.name since
glibc.cpu.cpu is weird.

* NEWS: Mention the change.
* elf/dl-tunables.list: Rename tune namespace to cpu.
* sysdeps/powerpc/dl-tunables.list: Likewise.
* sysdeps/x86/dl-tunables.list: Likewise.
* sysdeps/aarch64/dl-tunables.list: Rename tune.cpu to
cpu.name.
* elf/dl-hwcaps.c (_dl_important_hwcaps): Adjust.
* elf/dl-hwcaps.h (GET_HWCAP_MASK): Likewise.
* manual/README.tunables: Likewise.
* manual/tunables.texi: Likewise.
* sysdeps/powerpc/cpu-features.c: Likewise.
* sysdeps/unix/sysv/linux/aarch64/cpu-features.c
(init_cpu_features): Likewise.
* sysdeps/x86/cpu-features.c: Likewise.
* sysdeps/x86/cpu-features.h: Likewise.
* sysdeps/x86/cpu-tunables.c: Likewise.
* sysdeps/x86_64/Makefile: Likewise.
* sysdeps/x86/dl-cet.c: Likewise.

Reviewed-by: Carlos O'Donell <carlos@redhat.com>
5 years agoDo not define various fenv.h macros for MIPS soft-float (bug 23479).
Joseph Myers [Thu, 2 Aug 2018 15:53:29 +0000 (15:53 +0000)] 
Do not define various fenv.h macros for MIPS soft-float (bug 23479).

MIPS soft-float glibc does not support floating-point exceptions and
rounding modes, and uses a different ABI from hard-float so a
soft-float compilation cannot use a glibc that does support
floating-point exceptions and rounding modes.  Thus, bits/fenv.h
should not, when compiling for soft-float, define macros for the
unsupported features.

This patch changes it accordingly to define those macros only for
hard-float.  None of the exception macros are defined for soft-float,
with FE_ALL_EXCEPT defined to 0 in that case, and only FE_TONEAREST is
defined of the rounding-mode macros, and FE_NOMASK_ENV is not defined;
this is consistent with how architectures lacking exception and
rounding mode support generally define things in this header.  As well
as making the header more correct for this case, this also means the
generic math_private.h optimizations for this case automatically apply
(inlining libm-internal fenv.h function calls that are trivial when
exceptions and rounding modes are not supported).

The mips64 sfp-machine.h then needs similar changes to disable more of
the exception and rounding mode handling for soft-float.  (The mips32
sfp-machine.h is already used only for soft-float, has no integration
with hardware exceptions or rounding modes and so needs no changes.)

Existing binaries might use the old FE_NOMASK_ENV value as an argument
to fesetenv / feupdateenv and expect an error for it (given that it
was defined in a header that also defined FE_ALL_EXCEPT to a nonzero
value).  To preserve that error, wrappers for the fallback fesetenv
and feupdateenv are created in sysdeps/mips/nofpu/.

Tested for mips64 (hard-float and soft-float, all three ABIs).

[BZ #23479]
* sysdeps/mips/bits/fenv.h (FE_INEXACT): Define only if
[__mips_hard_float].
(FE_UNDERFLOW): Likewise.
(FE_OVERFLOW): Likewise.
(FE_DIVBYZERO): Likewise.
(FE_INVALID): Likewise.
(FE_ALL_EXCEPT): Define to 0 if [!__mips_hard_float].
(FE_TOWARDZERO): Define only if [__mips_hard_float].
(FE_UPWARD): Likewise.
(FE_DOWNWARD): Likewise.
(__FE_UNDEFINED): Define if [!__mips_hard_float]
(FE_NOMASK_ENV): Define only if [__mips_hard_float].
* sysdeps/mips/mips64/sfp-machine.h (_FP_DECL_EX): Define only if
[__mips_hard_float].
(FP_ROUNDMODE): Likewise.
(FP_RND_NEAREST): Likewise.
(FP_RND_ZERO): Likewise.
(FP_RND_PINF): Likewise.
(FP_RND_MINF): Likewise.
(FP_EX_INVALID): Likewise.
(FP_EX_OVERFLOW): Likewise.
(FP_EX_UNDERFLOW): Likewise.
(FP_EX_DIVZERO): Likewise.
(FP_EX_INEXACT): Likewise.
(FP_INIT_ROUNDMODE): Likewise.
* sysdeps/mips/nofpu/fesetenv.c: New file.
* sysdeps/mips/nofpu/feupdateenv.c: Likewise.

5 years agoFix math/test-misc.c for undefined fenv.h macros.
Joseph Myers [Wed, 1 Aug 2018 22:22:00 +0000 (22:22 +0000)] 
Fix math/test-misc.c for undefined fenv.h macros.

math/test-misc.c contains some code that uses fenv.h macros
FE_UNDERFLOW, FE_OVERFLOW and FE_UPWARD without being conditional on
those macros being defined.

That would normally break the build for configurations (typically
soft-float) not defining those macros.  However, the code in question
is inside LDBL_MANT_DIG > DBL_MANT_DIG conditionals.  And, while we
have configurations lacking rounding mode and exception support where
LDBL_MANT_DIG > DBL_MANT_DIG (soft-float MIPS64 and RISC-V), those
configurations currently define the fenv.h macros in question even for
soft-float.

There may be some case for defining those macros in cases where a
soft-float compilation could use a hard-float libm (where both
soft-float and hard-float can use the same ABI, as on ARM and RISC-V,
for example).  But MIPS is not such a case - the hard-float and
soft-float ABIs are incompatible - and thus I am testing a patch to
stop defining those macros for soft-float MIPS (motivated by reducing
the extent to which architectures need their own definitions of
math-tests.h macros - if lack of rounding mode / exception support can
be determined by the lack of macros in fenv.h, that avoids the need
for math-tests.h to declare that lack as well).  Introducing a case of
LDBL_MANT_DIG > DBL_MANT_DIG without these macros defined shows up the
problem with math/test-misc.c.  This patch then fixes that problem by
adding appropriate conditionals.

Tested for MIPS64 in conjunction with changes to stop defining the
macros in question in bits/fenv.h for soft-float.

* math/test-misc.c (do_test) [LDBL_MANT_DIG > DBL_MANT_DIG]: Make
code using FE_UNDERFLOW conditional on [FE_UNDERFLOW], code using
FE_OVERFLOW conditional on [FE_OVERFLOW] and code using FE_UPWARD
conditional on [FE_UPWARD].

5 years agoregex: fix memory leak in Gnulib
Paul Eggert [Wed, 1 Aug 2018 20:22:16 +0000 (13:22 -0700)] 
regex: fix memory leak in Gnulib

Problem and fix reported by Assaf Gordon in:
https://lists.gnu.org/r/bug-gnulib/2018-07/txtqLKNwBdefE.txt
* posix/regcomp.c (free_charset) [!_LIBC]: Free range_starts and
range_ends members too, as they are defined in 'struct
re_charset_t' even if not _LIBC.  This affects only Gnulib.

5 years agox86: Rename get_common_indeces to get_common_indices
H.J. Lu [Wed, 1 Aug 2018 11:57:34 +0000 (04:57 -0700)] 
x86: Rename get_common_indeces to get_common_indices

Reviewed-by: Carlos O'Donell <carlos@redhat.com>
* sysdeps/x86/cpu-features.c (get_common_indeces): Renamed to
...
(get_common_indices): This.
(init_cpu_features): Updated.

5 years agoMove SNAN_TESTS_PRESERVE_PAYLOAD out of math-tests.h.
Joseph Myers [Wed, 1 Aug 2018 11:21:16 +0000 (11:21 +0000)] 
Move SNAN_TESTS_PRESERVE_PAYLOAD out of math-tests.h.

Continuing moving macros out of math-tests.h to smaller headers
following typo-proof conventions instead of using #ifndef, this patch
moves SNAN_TESTS_PRESERVE_PAYLOAD out to its own sysdeps header.

Tested with build-many-glibcs.py.

* sysdeps/generic/math-tests-snan-payload.h: New file.
* sysdeps/hppa/math-tests-snan-payload.h: Likewise.
* sysdeps/mips/math-tests-snan-payload.h: Likewise.
* sysdeps/riscv/math-tests-snan-payload.h: Likewise.
* sysdeps/generic/math-tests.h: Include
<math-tests-snan-payload.h>.
(SNAN_TESTS_PRESERVE_PAYLOAD): Do not define macro here.
* sysdeps/hppa/math-tests.h: Remove file.
* sysdeps/mips/math-tests.h [!__mips_nan2008]
(SNAN_TESTS_PRESERVE_PAYLOAD): Do not define macro here.
* sysdeps/riscv/math-tests.h (SNAN_TESTS_PRESERVE_PAYLOAD):
Likewise.

5 years agoMove SNAN_TESTS_TYPE_CAST out of math-tests.h.
Joseph Myers [Wed, 1 Aug 2018 11:18:57 +0000 (11:18 +0000)] 
Move SNAN_TESTS_TYPE_CAST out of math-tests.h.

The math-tests.h header has many different macros and groups of
macros, defined using #ifndef in the generic version which is included
by architecture versions with #include_next after possibly defining
non-default versions of some of those macros.

This use of #ifndef is contrary to our normal typo-proof conventions
for macro definitions.  This patch moves one of the macros,
SNAN_TESTS_TYPE_CAST, out to its own sysdeps header, to follow those
typo-proof conventions more closely.

Tested with build-many-glibcs.py.

2018-08-01  Joseph Myers  <joseph@codesourcery.com>

* sysdeps/generic/math-tests-snan-cast.h: New file.
* sysdeps/powerpc/math-tests-snan-cast.h: Likewise.
* sysdeps/generic/math-tests.h: Include <math-tests-snan-cast.h>.
(SNAN_TESTS_TYPE_CAST): Do not define macro here.
* sysdeps/powerpc/math-tests.h (SNAN_TESTS_TYPE_CAST): Likewise.

5 years agoAdd version.h, and NEWS update to ChangeLog.
Carlos O'Donell [Wed, 1 Aug 2018 05:42:50 +0000 (01:42 -0400)] 
Add version.h, and NEWS update to ChangeLog.

5 years agoOpen master branch for glibc 2.29 development glibc-2.28.9000
Carlos O'Donell [Wed, 1 Aug 2018 05:34:25 +0000 (01:34 -0400)] 
Open master branch for glibc 2.29 development

5 years agoUpdate NEWS, version.h, and features.h for glibc 2.28. glibc-2.28
Carlos O'Donell [Wed, 1 Aug 2018 05:10:47 +0000 (01:10 -0400)] 
Update NEWS, version.h, and features.h for glibc 2.28.

5 years agoSynchronize translation project PO files.
Carlos O'Donell [Wed, 1 Aug 2018 04:59:03 +0000 (00:59 -0400)] 
Synchronize translation project PO files.

5 years agohurd: Fix exec usage of mach_setup_thread
Samuel Thibault [Tue, 31 Jul 2018 22:10:03 +0000 (00:10 +0200)] 
hurd: Fix exec usage of mach_setup_thread

Exec needs that mach_setup_thread does *not* set up TLS since it works on
another task, so we have to split this into mach_setup_tls.

* mach/mach.h (__mach_setup_tls, mach_setup_tls): Add prototypes.
* mach/setup-thread.c (__mach_setup_thread): Move TLS setup to...
(__mach_setup_tls): ... new function.
(mach_setup_tls): New alias.
* hurd/hurdsig.c (_hurdsig_init): Call __mach_setup_tls after
__mach_setup_thread.
* sysdeps/mach/hurd/profil.c (update_waiter): Likewise.
* sysdeps/mach/hurd/setitimer.c (setitimer_locked): Likewise.
* mach/Versions [libc] (mach_setup_tls): Add symbol.
* sysdeps/mach/hurd/i386/libc.abilist (mach_setup_tls): Likewise.

5 years agohurd: Add missing ChangeLog entry
Samuel Thibault [Tue, 31 Jul 2018 22:07:29 +0000 (00:07 +0200)] 
hurd: Add missing ChangeLog entry

5 years agohurd: Fix startup of static binaries linked against libpthread
Samuel Thibault [Tue, 31 Jul 2018 20:33:05 +0000 (22:33 +0200)] 
hurd: Fix startup of static binaries linked against libpthread

* sysdeps/mach/hurd/i386/init-first.c (init1): Move ELF hdr and TLS
initialization...
(init): ... before initializing libpthread.

5 years agoUpdate tooling versions verified to work with glibc.
Carlos O'Donell [Tue, 31 Jul 2018 20:37:07 +0000 (16:37 -0400)] 
Update tooling versions verified to work with glibc.

5 years agoUpdate contrib.texi contributions.
Carlos O'Donell [Tue, 31 Jul 2018 19:26:24 +0000 (15:26 -0400)] 
Update contrib.texi contributions.

5 years agoUpdate translation for be.
Carlos O'Donell [Tue, 31 Jul 2018 19:23:23 +0000 (15:23 -0400)] 
Update translation for be.

5 years agoUpdate SH libm-tests-ulps
Adhemerval Zanella [Tue, 31 Jul 2018 13:33:53 +0000 (10:33 -0300)] 
Update SH libm-tests-ulps

* sysdeps/sh/libm-test-ulps: Update.

5 years agoUpdate translations for bg, de, hr, pt_BR, sv, and vi.
Carlos O'Donell [Mon, 30 Jul 2018 20:20:00 +0000 (16:20 -0400)] 
Update translations for bg, de, hr, pt_BR, sv, and vi.

5 years agox86/CET: Fix property note parser [BZ #23467]
H.J. Lu [Mon, 30 Jul 2018 23:14:46 +0000 (16:14 -0700)] 
x86/CET: Fix property note parser [BZ #23467]

GNU_PROPERTY_X86_FEATURE_1_AND may not be the first property item.  We
need to check each property item until we reach the end of the property
or find GNU_PROPERTY_X86_FEATURE_1_AND.

This patch adds 2 tests.  The first test checks if IBT is enabled and
the second test reads the output from the first test to check if IBT
is is enabled.  The second second test fails if IBT isn't enabled
properly.

Reviewed-by: Carlos O'Donell <carlos@redhat.com>
[BZ #23467]
* sysdeps/unix/sysv/linux/x86/Makefile (tests): Add
tst-cet-property-1 and tst-cet-property-2 if CET is enabled.
(CFLAGS-tst-cet-property-1.o): New.
(ASFLAGS-tst-cet-property-dep-2.o): Likewise.
($(objpfx)tst-cet-property-2): Likewise.
($(objpfx)tst-cet-property-2.out): Likewise.
* sysdeps/unix/sysv/linux/x86/tst-cet-property-1.c: New file.
* sysdeps/unix/sysv/linux/x86/tst-cet-property-2.c: Likewise.
* sysdeps/unix/sysv/linux/x86/tst-cet-property-dep-2.S: Likewise.
* sysdeps/x86/dl-prop.h (_dl_process_cet_property_note): Parse
each property item until GNU_PROPERTY_X86_FEATURE_1_AND is found.

5 years agox86: Add tst-get-cpu-features-static to $(tests) [BZ #23458]
H.J. Lu [Mon, 30 Jul 2018 23:11:05 +0000 (16:11 -0700)] 
x86: Add tst-get-cpu-features-static to $(tests) [BZ #23458]

All tests should be added to $(tests).

Reviewed-by: Carlos O'Donell <carlos@redhat.com>
[BZ #23458]
* sysdeps/x86/Makefile (tests): Add tst-get-cpu-features-static.

5 years agohurd: Fix some ld.so symbol override from libc
Samuel Thibault [Sat, 28 Jul 2018 13:12:42 +0000 (15:12 +0200)] 
hurd: Fix some ld.so symbol override from libc

ld.so symbols to be overriden by libc need to be extern to really get
overriden.

* sysdeps/mach/hurd/not-errno.h: New file.
* sysdeps/mach/hurd/i386/localplt.data: Update accordingly.

5 years agohurd: Fix some ld.so symbol override from libc
Samuel Thibault [Sat, 28 Jul 2018 12:57:10 +0000 (14:57 +0200)] 
hurd: Fix some ld.so symbol override from libc

ld.so symbols to be overriden by libc need to be extern to really get
overriden.

* sysdeps/mach/hurd/dl-unistd.h (__access, __brk, __lseek, __read,
__sbrk): Do not set attribute_hidden.
* sysdeps/mach/hurd/i386/ld.abilist: Update accordingly.
* sysdeps/mach/hurd/i386/localplt.data: Update accordingly.

5 years agoUpdate translations for cs, pl, and uk.
Carlos O'Donell [Sat, 28 Jul 2018 00:07:33 +0000 (20:07 -0400)] 
Update translations for cs, pl, and uk.

5 years agox86/CET: Don't parse beyond the note end
H.J. Lu [Fri, 27 Jul 2018 20:20:51 +0000 (13:20 -0700)] 
x86/CET: Don't parse beyond the note end

Simply check if "ptr < ptr_end" since "ptr" is always incremented by 8.

Reviewed-by: Carlos O'Donell <carlos@redhat.com>
* sysdeps/x86/dl-prop.h (_dl_process_cet_property_note): Don't
parse beyond the note end.

5 years agoUpdate NEWS with ISO 14651 update information.
Carlos O'Donell [Fri, 27 Jul 2018 19:56:24 +0000 (15:56 -0400)] 
Update NEWS with ISO 14651 update information.

5 years agoNEWS: Avoid the words "nominative" and "genitive".
Rafal Luzynski [Fri, 27 Jul 2018 09:27:48 +0000 (11:27 +0200)] 
NEWS: Avoid the words "nominative" and "genitive".

Glibc supports two grammatical forms of month names and we keep adding
the locale data which actually use this feature but those two forms are
not necessarily nominative and genitive.  It is better to use a more
generic term.

Reviewed-by: Carlos O'Donell <carlos@redhat.com>
5 years agoFix Linux fcntl OFD locks on unsupported kernels
Adhemerval Zanella [Fri, 27 Jul 2018 13:07:14 +0000 (10:07 -0300)] 
Fix Linux fcntl OFD locks on unsupported kernels

This patch make the OFD tests return unsupported if kernel does not
support OFD locks (it was added on 3.15).

Checked on a ia64-linux-gnu with Linux 3.14.

* sysdeps/unix/sysv/linux/tst-ofdlocks.c: Return unsupported if
kernel does not support OFD locks.
* sysdeps/unix/sysv/linux/tst-ofdlocks-compat.c: Likewise.

5 years agoAdd the missing ChangeLog entry for commit be525a69a66
H.J. Lu [Fri, 27 Jul 2018 17:28:30 +0000 (10:28 -0700)] 
Add the missing ChangeLog entry for commit be525a69a66

5 years agohurd: Fix some ld.so symbol override from libc
Samuel Thibault [Fri, 27 Jul 2018 09:18:29 +0000 (11:18 +0200)] 
hurd: Fix some ld.so symbol override from libc

ld.so symbols to be overriden by libc need to be extern to really get
overriden.

More fixes are needed to avoid the hidden attribute.

* sysdeps/mach/hurd/Versions (libc): Make __access and
__access_noerrno external so they can override the ld symbols.
(ld): Make __access, __read, __sbrk, __strtoul_internal, __write,
__writev, __open64, __access_noerrno extern so they can be overrided.
* sysdeps/mach/hurd/i386/libc.abilist: Update accordingly.
* sysdeps/mach/hurd/i386/ld.abilist: Update accordingly.

5 years agoUpdate libc.pot.
Carlos O'Donell [Fri, 27 Jul 2018 02:21:34 +0000 (22:21 -0400)] 
Update libc.pot.

5 years agoUpdate powerpc-nofpu ulps.
Joseph Myers [Thu, 26 Jul 2018 22:51:06 +0000 (22:51 +0000)] 
Update powerpc-nofpu ulps.

* sysdeps/powerpc/nofpu/libm-test-ulps: Update.

5 years agox86: Populate COMMON_CPUID_INDEX_80000001 for Intel CPUs [BZ #23459]
H.J. Lu [Thu, 26 Jul 2018 17:49:19 +0000 (10:49 -0700)] 
x86: Populate COMMON_CPUID_INDEX_80000001 for Intel CPUs [BZ #23459]

Reviewed-by: Carlos O'Donell <carlos@redhat.com>
[BZ #23459]
* sysdeps/x86/cpu-features.c (get_extended_indices): New
function.
(init_cpu_features): Call get_extended_indices for both Intel
and AMD CPUs.
* sysdeps/x86/cpu-features.h (COMMON_CPUID_INDEX_80000001):
Remove "for AMD" comment.

5 years agox86: Correct index_cpu_LZCNT [BZ # 23456]
H.J. Lu [Thu, 26 Jul 2018 18:10:08 +0000 (11:10 -0700)] 
x86: Correct index_cpu_LZCNT [BZ # 23456]

cpu-features.h has

 #define bit_cpu_LZCNT (1 << 5)
 #define index_cpu_LZCNT COMMON_CPUID_INDEX_1
 #define reg_LZCNT

But the LZCNT feature bit is in COMMON_CPUID_INDEX_80000001:

Initial EAX Value: 80000001H
ECX Extended Processor Signature and Feature Bits:
Bit 05: LZCNT available

index_cpu_LZCNT should be COMMON_CPUID_INDEX_80000001, not
COMMON_CPUID_INDEX_1.  The VMX feature bit is in COMMON_CPUID_INDEX_1:

Initial EAX Value: 01H
Feature Information Returned in the ECX Register:
5 VMX

Reviewed-by: Carlos O'Donell <carlos@redhat.com>
[BZ # 23456]
* sysdeps/x86/cpu-features.h (index_cpu_LZCNT): Set to
COMMON_CPUID_INDEX_80000001.

5 years agoFix string/tst-xbzero-opt if build with gcc head.
Stefan Liebler [Thu, 26 Jul 2018 15:09:44 +0000 (17:09 +0200)] 
Fix string/tst-xbzero-opt if build with gcc head.

On s390x, the test string/tst-xbzero-opt is failing if build with gcc head:
FAIL: no clear/prepare: expected 32 got 0
FAIL: no clear/test: expected some got 0
FAIL: ordinary clear/prepare: expected 32 got 0
INFO: ordinary clear/test: found 0 patterns (memset not eliminated)
PASS: explicit clear/prepare: expected 32 got 32
PASS: explicit clear/test: expected 0 got 0

In setup_no_clear / setup_ordinary_clear, GCC is omitting the memcpy loop
in prepare_test_buffer. Thus count_test_patterns does not find any of the
test_pattern.

This patch calls use_test_buffer in order to force the compiler to really copy
the pattern to buf.

ChangeLog:

* string/tst-xbzero-opt.c (use_test_buffer): New function.
(prepare_test_buffer): Call use_test_buffer as compiler barrier.

5 years agohtl: Use weak aliases for public symbols
Florian Weimer [Thu, 26 Jul 2018 06:34:05 +0000 (08:34 +0200)] 
htl: Use weak aliases for public symbols

Strong definitions of flockfile, funlockfile, ftrylockfile can conflict
with application symbols when linking statically.

5 years agoAdd missing localedata/en_US.UTF-8.in (Bug 23393).
Carlos O'Donell [Thu, 26 Jul 2018 01:58:10 +0000 (21:58 -0400)] 
Add missing localedata/en_US.UTF-8.in (Bug 23393).

Commit 7cd7d36f1feb3ccacf476e909b115b45cdd46e77 failed to include
the new testing file en_US.UTF-8.in.

5 years agoKeep expected behaviour for [a-z] and [A-z] (Bug 23393).
Carlos O'Donell [Wed, 25 Jul 2018 21:00:45 +0000 (17:00 -0400)] 
Keep expected behaviour for [a-z] and [A-z] (Bug 23393).

In commit 9479b6d5e08eacce06c6ab60abc9b2f4eb8b71e4 we updated all of
the collation data to harmonize with the new version of ISO 14651
which is derived from Unicode 9.0.0.  This collation update brought
with it some changes to locales which were not desirable by some
users, in particular it altered the meaning of the
locale-dependent-range regular expression, namely [a-z] and [A-Z], and
for en_US it caused uppercase letters to be matched by [a-z] for the
first time.  The matching of uppercase letters by [a-z] is something
which is already known to users of other locales which have this
property, but this change could cause significant problems to en_US
and other similar locales that had never had this change before.
Whether this behaviour is desirable or not is contentious and GNU Awk
has this to say on the topic:
https://www.gnu.org/software/gawk/manual/html_node/Ranges-and-Locales.html
While the POSIX standard also has this further to say: "RE Bracket
Expression":
http://pubs.opengroup.org/onlinepubs/9699919799/xrat/V4_xbd_chap09.html
"The current standard leaves unspecified the behavior of a range
expression outside the POSIX locale. ... As noted above, efforts were
made to resolve the differences, but no solution has been found that
would be specific enough to allow for portable software while not
invalidating existing implementations."
In glibc we implement the requirement of ISO POSIX-2:1993 and use
collation element order (CEO) to construct the range expression, the
API internally is __collseq_table_lookup().  The fact that we use CEO
and also have 4-level weights on each collation rule means that we can
in practice reorder the collation rules in iso14651_t1_common (the new
data) to provide consistent range expression resolution *and* the
weights should maintain the expected total order.  Therefore this
patch does three things:

* Reorder the collation rules for the LATIN script in
  iso14651_t1_common to deinterlace uppercase and lowercase letters in
  the collation element orders.

* Adds new test data en_US.UTF-8.in for sort-test.sh which exercises
  strcoll* and strxfrm* and ensures the ISO 14651 collation remains.

* Add back tests to tst-fnmatch.input and tst-regexloc.c which
  exercise that [a-z] does not match A or Z.

The reordering of the ISO 14651 data is done in an entirely mechanical
fashion using the following program attached to the bug:
https://sourceware.org/bugzilla/show_bug.cgi?id=23393#c28

It is up for discussion if the iso14651_t1_common data should be
refined further to have 3 very tight collation element ranges that
include only a-z, A-Z, and 0-9, which would implement the solution
sought after in:
https://sourceware.org/bugzilla/show_bug.cgi?id=23393#c12
and implemented here:
https://www.sourceware.org/ml/libc-alpha/2018-07/msg00854.html

No regressions on x86_64.
Verified that removal of the iso14651_t1_common change causes tst-fnmatch
to regress with:
422: fnmatch ("[a-z]", "A", 0) = 0 (FAIL, expected FNM_NOMATCH) ***
...
425: fnmatch ("[A-Z]", "z", 0) = 0 (FAIL, expected FNM_NOMATCH) ***

5 years agoia64: Work around incorrect type of IA64 uc_sigmask
H.J. Lu [Wed, 25 Jul 2018 20:54:08 +0000 (13:54 -0700)] 
ia64: Work around incorrect type of IA64 uc_sigmask

Work around:

https://sourceware.org/bugzilla/show_bug.cgi?id=21634

* sysdeps/unix/sysv/linux/ia64/tst-setcontext4.c: New file.

5 years agoFix ISO C threads installed header and HURD assumption
Adhemerval Zanella [Wed, 25 Jul 2018 18:20:44 +0000 (15:20 -0300)] 
Fix ISO C threads installed header and HURD assumption

Set installed NPTL header as the expected one (instead of an
internal one for glibc testsuite) and add a hurd specific
stdc-predef with __STDC_NO_THREADS__.

Checked on both i686-linux-gnu and i686-gnu that both threads.h
and stdc-predef.h are the expected ones.

* nptl/threads.h: Move to ...
* sysdeps/nptl/threads.h: ... here.
* sysdeps/hurd/stdc-predef.h: New file.

5 years agox86/CET: Add a setcontext test for CET
H.J. Lu [Wed, 25 Jul 2018 15:40:39 +0000 (08:40 -0700)] 
x86/CET: Add a setcontext test for CET

Verify that setcontext works with gaps above and below the newly
allocated shadow stack.

* sysdeps/unix/sysv/linux/x86/Makefile (tests): Add
tst-cet-setcontext-1 if CET is enabled.
(CFLAGS-tst-cet-setcontext-1.c): Add -mshstk.
* sysdeps/unix/sysv/linux/x86/tst-cet-setcontext-1.c: New file.

5 years agoFix C11 conformance issues
Adhemerval Zanella [Wed, 25 Jul 2018 13:20:15 +0000 (13:20 +0000)] 
Fix C11 conformance issues

Remove conformace assumption of NPTL implementation for ISO C threads
and revert wrong libcrypt addition on linknamespace-libs-XPG4.

The i686-gnu target now shows two new conformance failures:

FAIL: conform/ISO11/threads.h/conform
FAIL: conform/ISO11/threads.h/linknamespace

It is expected due missing HTL ISO C threads support and both conformance
.out files indicates the reason ("#error "HTL does not implement ISO C
threads").

Checked on i686-linux-gnu and i686-gnu.

* include/threads.h: Move to ...
* sysdeps/nptl/threads.h: ... here.
* sysdeps/htl/threads.h: New file.
* conform/Makefile (linknamespace-libs-ISO11): Use
static-thread-library instead of linking libpthread.
(linknamespace-libs-XPG4): Revert wrong libcrypt.a addition.

5 years agoC11 threads: Fix timeout and locking issues
Florian Weimer [Wed, 25 Jul 2018 14:31:45 +0000 (16:31 +0200)] 
C11 threads: Fix timeout and locking issues