platform/upstream/glibc.git
3 years agotst: Add test for utime
Lukasz Majewski [Wed, 24 Feb 2021 21:19:06 +0000 (22:19 +0100)]
tst: Add test for utime

This patch provides test for utime. It uses wrapper to read access
and modification times to compare them with ones written by utime.

Moreover, access and modification times beyond the Y2038 threshold
date (i.e. 32 bit time_t overflow) are also checked.

Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
3 years agotst: Add test for futimens
Lukasz Majewski [Mon, 8 Feb 2021 09:58:44 +0000 (10:58 +0100)]
tst: Add test for futimens

This patch provides test for futimens. It uses wrapper, which
reads access and modification time to compare them with ones
written by futimens.

Moreover, access and modification times beyond the Y2038 threshold
date (i.e. 32 bit time_t overflow) are also checked.

Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
3 years agonptl: __libc_cleanup_push/__libc_cleanup_pop require -fexceptions
Florian Weimer [Tue, 2 Mar 2021 09:49:03 +0000 (10:49 +0100)]
nptl: __libc_cleanup_push/__libc_cleanup_pop require -fexceptions

Do not define these macros if they do nothing in a particular
compilation, otherwise they can easily be used accidentally, while
not actually achieving anything.

3 years agoelf: Build __dl_iterate_phdr with unwinding support [BZ #27498]
Florian Weimer [Tue, 2 Mar 2021 09:46:45 +0000 (10:46 +0100)]
elf: Build __dl_iterate_phdr with unwinding support [BZ #27498]

3 years agonptl: Use <unwind-link.h> for accessing the libgcc_s unwinder
Florian Weimer [Mon, 1 Mar 2021 14:56:36 +0000 (15:56 +0100)]
nptl: Use <unwind-link.h> for accessing the libgcc_s unwinder

Reviewed-by: Carlos O'Donell <carlos@redhat.com>
3 years agoImplement _Unwind_Resume in libc on top of <unwind-link.h>
Florian Weimer [Mon, 1 Mar 2021 14:56:36 +0000 (15:56 +0100)]
Implement _Unwind_Resume in libc on top of <unwind-link.h>

Temporarily move the arm _Unwind_Resume implementation to the file
used by libpthread.  It will be ported to <unwind-link.h> along with
the rest of nptl.

Reviewed-by: Carlos O'Donell <carlos@redhat.com>
3 years agoMove sysdeps/gnu/unwind-resume.c to sysdeps/generic/unwind-resume.c
Florian Weimer [Mon, 1 Mar 2021 14:56:36 +0000 (15:56 +0100)]
Move sysdeps/gnu/unwind-resume.c to sysdeps/generic/unwind-resume.c

This change allows architecture-specific sysdeps directories to override
it.

Reviewed-by: Carlos O'Donell <carlos@redhat.com>
3 years ago__frame_state_for: Use <unwind-link.h> for unwinder access
Florian Weimer [Mon, 1 Mar 2021 14:56:36 +0000 (15:56 +0100)]
__frame_state_for: Use <unwind-link.h> for unwinder access

Reviewed-by: Carlos O'Donell <carlos@redhat.com>
3 years agosparc: Implement backtrace on top <unwind-link.h>
Florian Weimer [Mon, 1 Mar 2021 14:56:36 +0000 (15:56 +0100)]
sparc: Implement backtrace on top <unwind-link.h>

Reviewed-by: Carlos O'Donell <carlos@redhat.com>
3 years agom68k: Implement backtrace on top of <unwind-link.h>
Florian Weimer [Mon, 1 Mar 2021 14:56:36 +0000 (15:56 +0100)]
m68k: Implement backtrace on top of <unwind-link.h>

Reviewed-by: Carlos O'Donell <carlos@redhat.com>
3 years agoi386: Implement backtrace on top of <unwind-link.h>
Florian Weimer [Mon, 1 Mar 2021 14:56:36 +0000 (15:56 +0100)]
i386: Implement backtrace on top of <unwind-link.h>

Reviewed-by: Carlos O'Donell <carlos@redhat.com>
3 years agoarm: Implement backtrace on top of <unwind-link.h>
Florian Weimer [Mon, 1 Mar 2021 14:56:36 +0000 (15:56 +0100)]
arm: Implement backtrace on top of <unwind-link.h>

Reviewed-by: Carlos O'Donell <carlos@redhat.com>
3 years agobacktrace: Implement on top of <unwind-link.h>
Florian Weimer [Mon, 1 Mar 2021 14:56:36 +0000 (15:56 +0100)]
backtrace: Implement on top of <unwind-link.h>

This reimplements the generic version of backtrace.

Reviewed-by: Carlos O'Donell <carlos@redhat.com>
3 years agoImplement <unwind-link.h> for dynamically loading the libgcc_s unwinder
Florian Weimer [Mon, 1 Mar 2021 14:56:36 +0000 (15:56 +0100)]
Implement <unwind-link.h> for dynamically loading the libgcc_s unwinder

This will be used to consolidate the libgcc_s access for backtrace
and pthread_cancel.

Unlike the existing backtrace implementations, it provides some
hardening based on pointer mangling.

Reviewed-by: Carlos O'Donell <carlos@redhat.com>
3 years agoCorrect buffer end pointer in IO_wdefault_doallocate (BZ #26874)
Martin Sebor [Mon, 1 Mar 2021 05:05:39 +0000 (10:35 +0530)]
Correct buffer end pointer in IO_wdefault_doallocate (BZ #26874)

An experimental build of GCC 11 with an enhanced -Warray-bounds
reports a bug in IO_wdefault_doallocate where the function forms
an invalid past-the-end pointer to an allocated wchar_t buffer
by failingf to consider the scaling by sizeof (wchar_t).

The fix path below corrects this problem.  It keeps the buffer
size the same as opposed to increasing it according to what other
code like it does.

Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
3 years agoaarch64: update ulps.
Szabolcs Nagy [Mon, 1 Mar 2021 12:29:17 +0000 (12:29 +0000)]
aarch64: update ulps.

For new test cases in
commit 5a051454a9b50c27984bbc499ee1297de48e2dc8

3 years agoAdd inputs that generate larger error bounds
Paul Zimmermann [Fri, 26 Feb 2021 07:00:03 +0000 (08:00 +0100)]
Add inputs that generate larger error bounds

(Using values from https://members.loria.fr/PZimmermann/papers/accuracy.pdf)

3 years agoReduce the statically linked startup code [BZ #23323]
Florian Weimer [Thu, 25 Feb 2021 11:10:57 +0000 (12:10 +0100)]
Reduce the statically linked startup code [BZ #23323]

It turns out the startup code in csu/elf-init.c has a perfect pair of
ROP gadgets (see Marco-Gisbert and Ripoll-Ripoll, "return-to-csu: A
New Method to Bypass 64-bit Linux ASLR").  These functions are not
needed in dynamically-linked binaries because DT_INIT/DT_INIT_ARRAY
are already processed by the dynamic linker.  However, the dynamic
linker skipped the main program for some reason.  For maximum
backwards compatibility, this is not changed, and instead, the main
map is consulted from __libc_start_main if the init function argument
is a NULL pointer.

For statically linked binaries, the old approach based on linker
symbols is still used because there is nothing else available.

A new symbol version __libc_start_main@@GLIBC_2.34 is introduced because
new binaries running on an old libc would not run their ELF
constructors, leading to difficult-to-debug issues.

3 years agoposix: Falling back to non wide mode in case of encoding error [BZ #14185]
Adhemerval Zanella [Mon, 4 Jan 2021 17:26:30 +0000 (14:26 -0300)]
posix: Falling back to non wide mode in case of encoding error [BZ #14185]

Gnulib has added the proposed fix with aed23714d60 (done in 2005), but
recently with a glibc merge with 67306f6 (done in 2020 with sync back)
it has fallback to old semantic to return -1 on in case of failure.

From gnulib developer feedback it was an oversight.  Although the full
fix for BZ #14185 would require to rewrite fnmatch implementation to use
mbrtowc instead of mbsrtowcs on the full input, this mitigate the issue
and it has been used by gnulib for a long time.

This patch also removes the alloca usage on the string convertion to
wide characters before calling the internal function.

Checked on x86_64-linux-gnu.

3 years agonptl: Move elision implementations into libc
Florian Weimer [Tue, 23 Feb 2021 13:59:34 +0000 (14:59 +0100)]
nptl: Move elision implementations into libc

The elision interfaces are closely aligned between the targets that
implement them, so declare them in the generic <lowlevellock.h>
file.

Empty .c stubs are provided, so that fewer makefile updates
under sysdeps are needed.  Also simplify initialization via
__libc_early_init.

The symbols __lll_clocklock_elision, __lll_lock_elision,
__lll_trylock_elision, __lll_unlock_elision, __pthread_force_elision
move into libc.  For the time being, non-hidden references are used
from libpthread to access them, but once that part of libpthread
is moved into libc, hidden symbols will be used again.  (Hidden
references seem desirable to reduce the likelihood of transactions
aborts.)

3 years agoNEWS: Add missing bug closures
Samuel Thibault [Tue, 23 Feb 2021 12:35:34 +0000 (13:35 +0100)]
NEWS: Add missing bug closures

3 years agoadded rt to malloc/Depend [BZ #27132]
Paul Zimmermann [Tue, 23 Feb 2021 08:16:39 +0000 (09:16 +0100)]
added rt to malloc/Depend [BZ #27132]

This avoids a failure when a new glibc version is compiled with an older
system librt. Patch proposed by Florian Weimer.

3 years agox86: Use x86/nptl/pthreaddef.h
H.J. Lu [Fri, 12 Feb 2021 17:57:30 +0000 (09:57 -0800)]
x86: Use x86/nptl/pthreaddef.h

1. Move sysdeps/i386/nptl/pthreaddef.h to sysdeps/x86/nptl/pthreaddef.h.
2. Remove sysdeps/x86_64/nptl/pthreaddef.h.

Reviewed-by: DJ Delorie <dj@redhat.com>
3 years agonptl: Move futex-internal into libc
Florian Weimer [Mon, 22 Feb 2021 17:30:52 +0000 (18:30 +0100)]
nptl: Move futex-internal into libc

This moves  __futex_abstimed_wait64 and
__futex_abstimed_wait_cancelable64 and exports these functions as
GLIBC_PRIVATE.

Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
3 years agonptl: Move lowlevellock into libc [BZ #15648]
Florian Weimer [Mon, 22 Feb 2021 17:30:52 +0000 (18:30 +0100)]
nptl: Move lowlevellock into libc [BZ #15648]

And export __lll_lock_wait and __lll_lock_wait_private as
GLIBC_PRIVATE.  This should eliminate the need for the previous
riscv kludge.

3 years agonptl: Move futex-internal.c into main nptl directory
Florian Weimer [Mon, 22 Feb 2021 17:30:52 +0000 (18:30 +0100)]
nptl: Move futex-internal.c into main nptl directory

Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
3 years agonptl: Reformat Versions
Florian Weimer [Mon, 22 Feb 2021 17:30:52 +0000 (18:30 +0100)]
nptl: Reformat Versions

One symbol per line, lexicographically ordered.

Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
3 years agonptl: Split libpthread-routines into one routine per line
Florian Weimer [Mon, 22 Feb 2021 17:30:52 +0000 (18:30 +0100)]
nptl: Split libpthread-routines into one routine per line

And sort the lines lexicographically.  This will make it easier to review
patches which move symbols from libpthread to libc.

Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
3 years agox86: Remove unused variables for raw cache sizes from cacheinfo.h
Florian Weimer [Mon, 22 Feb 2021 16:36:03 +0000 (17:36 +0100)]
x86: Remove unused variables for raw cache sizes from cacheinfo.h

3 years agoUse Linux 5.11 in build-many-glibcs.py.
Joseph Myers [Mon, 22 Feb 2021 16:11:21 +0000 (16:11 +0000)]
Use Linux 5.11 in build-many-glibcs.py.

This patch makes build-many-glibcs.py use Linux 5.11.

Tested with build-many-glibcs.py (host-libraries, compilers and glibcs
builds).

3 years ago<bits/platform/x86.h>: Correct x86_cpu_TBM
H.J. Lu [Tue, 2 Feb 2021 14:49:02 +0000 (06:49 -0800)]
<bits/platform/x86.h>: Correct x86_cpu_TBM

x86_cpu_TBM should be x86_cpu_index_80000001_ecx + 21.

3 years agox86_64/clone.S: Upate comments
H.J. Lu [Sat, 13 Feb 2021 19:46:38 +0000 (11:46 -0800)]
x86_64/clone.S: Upate comments

3 years agoi386/clone.S: Remove redundant EBX load
H.J. Lu [Sun, 14 Feb 2021 03:02:53 +0000 (19:02 -0800)]
i386/clone.S: Remove redundant EBX load

There is no neeed for

call L(here)
L(here):
popl %ebx
addl $_GLOBAL_OFFSET_TABLE_+[.-L(here)], %ebx

before

movl %eax, %ebx

3 years agoaarch64: Remove the unused __read_tp symbol
Szabolcs Nagy [Thu, 18 Feb 2021 10:56:34 +0000 (10:56 +0000)]
aarch64: Remove the unused __read_tp symbol

This was likely a mistake in the original aarch64 port copied over
from arm: on aarch64 tpidr_el0 register is always available.

The __read_tp symbol is visible with static linking, but it's not
part of the public ABI so it should be safe to remove.

3 years agobuild-many-glibcs.py: Use make -O for more consistent log output
Florian Weimer [Mon, 22 Feb 2021 08:39:14 +0000 (09:39 +0100)]
build-many-glibcs.py: Use make -O for more consistent log output

The -O option avoids interleaving (e.g.) compiler error messages
with other build messages, and makes attribution of messages to
commands easier.

According to my tests, the impact on build time is within the noise.

3 years agoconfigure: Replace obsolete AC_TRY_LINK with AC_LINK_IFELSE
Naohiro Tamura [Wed, 17 Feb 2021 01:20:17 +0000 (01:20 +0000)]
configure: Replace obsolete AC_TRY_LINK with AC_LINK_IFELSE

This patch replaces obsolete AC_TRY_LINK with AC_LINK_IFELSE.
It has been confirmed that GNU 'autoconf' 2.69 doesn't change the
'configure' file and suppressed obsolete warning.

3 years agoconfigure: Remove obsolete AC_CHECK_TOOL_PREFIX
Naohiro Tamura [Tue, 16 Feb 2021 12:01:00 +0000 (12:01 +0000)]
configure: Remove obsolete AC_CHECK_TOOL_PREFIX

This patch removes obsolete AC_CHECK_TOOL_PREFIX.
It has been confirmed that AC_CHECK_TOOL_PREFIX is defined as NOP in
GNU 'autoconf' 2.69 [1], so we can safely remove it.
The 'configure' file has been deleted one blank line by the 'autoconf'
2.69 command .

   [1] autoconf-2.69/share/autoconf/autoconf/programs.m4
   181 # AC_CHECK_TOOL_PREFIX
   182 # --------------------
   183 AU_DEFUN([AC_CHECK_TOOL_PREFIX])

3 years agoconfigure: Replace obsoleted AC_HELP_STRING with AS_HELP_STRING
Naohiro Tamura [Mon, 15 Feb 2021 12:31:37 +0000 (12:31 +0000)]
configure: Replace obsoleted AC_HELP_STRING with AS_HELP_STRING

This patch replaces obsoleted AC_HELP_STRING with AS_HELP_STRING.
As of Glibc 2.33, INSTALL says "GNU 'autoconf' 2.69 (exactly)" is
required. So we can safely replace obsoleted macro without worrying
about older autoconf.
This change doesn't affect the contents of "configure" file.

3 years agoUpdate syscall lists for Linux 5.11.
Joseph Myers [Fri, 19 Feb 2021 21:16:27 +0000 (21:16 +0000)]
Update syscall lists for Linux 5.11.

Linux 5.11 has one new syscall, epoll_pwait2.  Update
syscall-names.list and regenerate the arch-syscall.h headers with
build-many-glibcs.py update-syscalls.

Tested with build-many-glibcs.py.

3 years agoCorrect hppa EFD_NONBLOCK, IN_NONBLOCK, SFD_NONBLOCK and TFD_NONBLOCK defines.
John David Anglin [Fri, 19 Feb 2021 17:08:47 +0000 (17:08 +0000)]
Correct hppa EFD_NONBLOCK, IN_NONBLOCK, SFD_NONBLOCK and TFD_NONBLOCK defines.

3 years agostring: Work around GCC PR 98512 in rawmemchr
Florian Weimer [Fri, 19 Feb 2021 12:29:00 +0000 (13:29 +0100)]
string: Work around GCC PR 98512 in rawmemchr

3 years agotst: time: Provide Y2038 tests for mktime (tst-mktime4.c)
Lukasz Majewski [Mon, 25 Jan 2021 12:48:13 +0000 (13:48 +0100)]
tst: time: Provide Y2038 tests for mktime (tst-mktime4.c)

This change adds new test to assess mktime's functionality.

To be more specific - following use cases are checked:
- Pass struct tm as epoch time
- Pass struct tm as value just before Y2038 threshold (returned
  value shall be 0x7FFFFFFF)
- Pass struct tm as the first value after Y2038 threshold
  (expected value - 0x80000000)

Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
3 years agotst: Provide test for difftime
Lukasz Majewski [Mon, 25 Jan 2021 11:51:41 +0000 (12:51 +0100)]
tst: Provide test for difftime

This change adds new test to assess difftime's functionality by
adding some arbitrary offsets to current time_t value (read via
time).

If 64 bit time_t is supported, the same procedure is applied around
the threshold of Y2038 time overflow.

Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
3 years agotst: Provide test for ctime
Lukasz Majewski [Thu, 21 Jan 2021 08:33:34 +0000 (09:33 +0100)]
tst: Provide test for ctime

This change adds new test to assess ctime's functionality.

To be more specific - following use cases are checked:
- Pass time_t value as 0 to check if epoch time is converted
- Pass time_t as max value for 32 bit systems
- Pass time_t as the first value after Y2038 threshold

Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
3 years agotst: Provide test for sched_rr_get_interval
Lukasz Majewski [Mon, 25 Jan 2021 09:26:57 +0000 (10:26 +0100)]
tst: Provide test for sched_rr_get_interval

This change adds new test to assess sched_rr_get_interval's
functionality.

To be more specific - following use cases are checked:
- If the read interval is correct
- If the proper ABI is used - to check if adjacent data is not
  overwritten

Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
3 years agoS390: Add new hwcap values.
Stefan Liebler [Tue, 16 Feb 2021 15:18:56 +0000 (16:18 +0100)]
S390: Add new hwcap values.

The new hwcap values indicate support for arch14 architecture.

3 years agoaarch64: Fix sys/ptrace.h if linux headers are included
Szabolcs Nagy [Mon, 15 Feb 2021 13:10:03 +0000 (13:10 +0000)]
aarch64: Fix sys/ptrace.h if linux headers are included

If the linux asm/ptrace.h is included before sys/ptrace.h that
breaks the newly added declarations there, so undef the names
that may be defined as macros in the linux header.

3 years agoelf: Do not copy vDSO soname when setting up link map
Florian Weimer [Fri, 12 Feb 2021 17:22:59 +0000 (18:22 +0100)]
elf: Do not copy vDSO soname when setting up link map

The kernel does not put the vDSO at special addresses, so writev can
write the name directly.  Also remove the incorrect comment about not
setting l_name.

Andy Lutomirski confirmed in
<https://lore.kernel.org/linux-api/442A16C0-AE5A-4A44-B261-FE6F817EAF3C@amacapital.net/>
that this copy is not necessary.

Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
3 years agox86: Remove the extra space between "# endif"
H.J. Lu [Fri, 12 Feb 2021 15:46:32 +0000 (07:46 -0800)]
x86: Remove the extra space between "# endif"

Remove the extra space between "# endif" left over from

commit f380868f6dcfdeae8d449d556298d9c41012ed8d
Author: H.J. Lu <hjl.tools@gmail.com>
Date:   Thu Dec 24 15:43:34 2020 -0800

    Remove _ISOMAC check from <cpu-features.h>

3 years agohurd: Fix fstatfs build failure
Adhemerval Zanella [Thu, 11 Feb 2021 20:42:14 +0000 (17:42 -0300)]
hurd: Fix fstatfs build failure

It was added by 1bfbaf7130 where it added a libc_hidden_proto for
__fstatfs but it didn't update the Hurd version as well.

Checked with a build for i686-gnu.

3 years agolinux: Remove stat-check.c
Adhemerval Zanella [Sun, 7 Feb 2021 18:45:15 +0000 (18:45 +0000)]
linux: Remove stat-check.c

The check is moved to LFS fstatat implementation (since it is the
code that actually implements the syscall).

Reviewed-by: Carlos O'Donell <carlos@redhat.com>
3 years agolinux: Remove overflow.h
Adhemerval Zanella [Sun, 7 Feb 2021 18:45:12 +0000 (18:45 +0000)]
linux: Remove overflow.h

The header is not used anywhere.

Reviewed-by: Carlos O'Donell <carlos@redhat.com>
3 years agolinux: Consolidate internal_statvfs
Adhemerval Zanella [Sun, 7 Feb 2021 17:43:02 +0000 (17:43 +0000)]
linux: Consolidate internal_statvfs

Remove the internal_statvfs64.c and open code the implementation
on internal_statvfs.c.  The alpha is now unrequired, the generic
implementation also handles it.

Also, remove unused includes on internal_statvfs.c, and remove
unused arguments on __internal_statvfs{64}.

Reviewed-by: Carlos O'Donell <carlos@redhat.com>
3 years agolinux: Consolidate statvfs implementations
Adhemerval Zanella [Sat, 6 Feb 2021 11:26:28 +0000 (11:26 +0000)]
linux: Consolidate statvfs implementations

There is no need to handle ENOSYS on fstatfs64 call, required only
for alpha (where is already fallbacks to fstatfs).

Checked on x86_64-linux-gnu.

Reviewed-by: Carlos O'Donell <carlos@redhat.com>
3 years agolinux: Consolidate fstatvfs implementations
Adhemerval Zanella [Sat, 6 Feb 2021 11:32:57 +0000 (11:32 +0000)]
linux: Consolidate fstatvfs implementations

There is no need to handle ENOSYS on fstatfs64 call, required only
for alpha (where is already fallbacks to fstatfs).  The wordsize
internal_statvfs64.c is removed, since how the LFS support is
provided by fstatvfs64.c (used on 64-bit architectures as well).

Checked on x86_64-linux-gnu.

Reviewed-by: Carlos O'Donell <carlos@redhat.com>
3 years agolinux: Consolidate statfs implementations
Adhemerval Zanella [Fri, 5 Feb 2021 21:26:57 +0000 (21:26 +0000)]
linux: Consolidate statfs implementations

The __NR_statfs64 syscall is supported on all architectures but
aarch64, mips64, riscv64, and x86_64.  And newer ABIs also uses
the new statfs64 interface (where the struct size is used as
second argument).

So the default implementation now uses:

  1. __NR_statfs64 for non-LFS call and handle overflow directly
     There is no need to handle __NR_statfs since all architectures
     that only support are LFS only.

  2. __NR_statfs if defined or __NR_statfs64 otherwise for LFS
     call.

Alpha is the only outlier, since it is a 64-bit architecture which
provides non-LFS interface and only provides __NR_statfs64 on
newer kernels (v5.1+).

Checked on x86_64-linux-gnu.

Reviewed-by: Carlos O'Donell <carlos@redhat.com>
3 years agolinux: Consolidate fstatfs implementations
Adhemerval Zanella [Fri, 5 Feb 2021 20:13:58 +0000 (20:13 +0000)]
linux: Consolidate fstatfs implementations

The __NR_fstatfs64 syscall is supported on all architectures but
aarch64, mips64, riscv64, and x86_64.  And newer ABIs also uses
the new fstatfs64 interface (where the struct size is used as
first argument).

So the default implementation now uses:

  1. __NR_fstatfs64 for non-LFS call and handle overflow directly
     There is no need to handle __NR_fstatfs since all architectures
     that only support are LFS only.

  2. __NR_fstatfs if defined or __NR_fstatfs64 otherwise for LFS
     call.

Alpha is the only outlier, it is a 64-bit architecture which
provides non-LFS interface and only provides __NR_fstatfs64 on
newer kernels (5.1+).

Checked on x86_64-linux-gnu.

Reviewed-by: Carlos O'Donell <carlos@redhat.com>
3 years agolinux: Set LFS statfs as default
Adhemerval Zanella [Fri, 5 Feb 2021 18:37:02 +0000 (18:37 +0000)]
linux: Set LFS statfs as default

Currently glibc has three different struct statfs{64} definitions:

  1. Non-LFS support where non-LFS and LFS struct have different
     size: alpha, arm, hppa, i686, m68k, microblaze, mips (all abis),
     powerpc32, s390, sh4, and sparc.

  2. Non-LFS support where non-LFS and LFS struct have the same
     size: csky and nios2.

  3. Only LFS support (where both struct have the same size): arc,
     ia64, powerpc64 (including LE), riscv (both 32 and 64 bits),
     s390x, sparc64, and x86 (including x32).

The STATFS_IS_STATFS64/__STATFS_MATCHES_STATFS64 does not tell apart
between 1. and 2. since for both the only difference is the struct
size (for 2. both non-LFS and LFS uses the same syscall, where for
1. the old non-LFS is used for [f]statfs).

This patch move the generic statfs.h for both csky and nios2, and
make the default definitions for newer ABIs to assume that only
LFS will be support (so there is no need to keep no-LFS and LFS
struct statfs with the same size, it will be implicit).

This patch does not change the code generation.

Reviewed-by: Carlos O'Donell <carlos@redhat.com>
3 years agolinux: Set default kernel_stat.h to LFS
Adhemerval Zanella [Fri, 5 Feb 2021 16:36:30 +0000 (16:36 +0000)]
linux: Set default kernel_stat.h to LFS

The XSTAT_IS_XSTAT64 and STAT_IS_KERNEL_STAT flags are now set to 1 and
STATFS_IS_STATFS64 is set to __STATFS_MATCHES_STATFS64.  This makes the
default ABI for newer ports to provide only LFS calls.

A copy of non-LFS support is provided to 32-bit ABIS with non-LFS
support (arm, csky, i386, m68k, nios2, s390, and sh).  Is also allows
to remove the 64-bit ports, which already uses the default values.

This patch does not change the code generation.

Reviewed-by: Carlos O'Donell <carlos@redhat.com>
3 years agolinux: Fix STATFS_IS_STATFS64 definition
Adhemerval Zanella [Fri, 5 Feb 2021 14:55:45 +0000 (14:55 +0000)]
linux: Fix STATFS_IS_STATFS64 definition

aarch64, arc, ia64, mips64, powerpc64, riscv32, riscv64, s390x, sparc64,
and x86_64 defines STATFS_IS_STATFS64 to 0, but all of them alias
statfs to statfs64 and the struct statfs has the same and layout of
struct statfs64.

The correct definition will be used on the [f]statfs[64] consolidation.

This patch does not change code generation since the symbols are
implemented using the auto-generation syscall for all the aforementioned
ABIs.

Reviewed-by: Carlos O'Donell <carlos@redhat.com>
3 years agotunables: Disallow negative values for some tunables
Siddhesh Poyarekar [Fri, 5 Feb 2021 08:39:24 +0000 (14:09 +0530)]
tunables: Disallow negative values for some tunables

The glibc.malloc.mmap_max tunable as well as al of the INT_32 tunables
don't have use for negative values, so pin the hardcoded limits in the
non-negative range of INT.  There's no real benefit in any of those
use cases for the extended range of unsigned, so I have avoided added
a new type to keep things simple.

3 years agox86: Use SIZE_MAX instead of (long int)-1 for tunable range value
Siddhesh Poyarekar [Wed, 3 Feb 2021 14:33:19 +0000 (20:03 +0530)]
x86: Use SIZE_MAX instead of (long int)-1 for tunable range value

The tunable types are SIZE_T, so set the ranges to the correct maximum
value, i.e. SIZE_MAX.

3 years agotunables: Simplify TUNABLE_SET interface
Siddhesh Poyarekar [Fri, 5 Feb 2021 07:48:58 +0000 (13:18 +0530)]
tunables: Simplify TUNABLE_SET interface

The TUNABLE_SET interface took a primitive C type argument, which
resulted in inconsistent type conversions internally due to incorrect
dereferencing of types, especialy on 32-bit architectures.  This
change simplifies the TUNABLE setting logic along with the interfaces.

Now all numeric tunable values are stored as signed numbers in
tunable_num_t, which is intmax_t.  All calls to set tunables cast the
input value to its primitive type and then to tunable_num_t for
storage.  This relies on gcc-specific (although I suspect other
compilers woul also do the same) unsigned to signed integer conversion
semantics, i.e. the bit pattern is conserved.  The reverse conversion
is guaranteed by the standard.

3 years agosetrlimit/getrlimit: Use __nonnull to avoid null pointer
Xiaoming Ni [Mon, 4 Jan 2021 04:07:38 +0000 (12:07 +0800)]
setrlimit/getrlimit: Use __nonnull to avoid null pointer

Add __nonnull((2)) to the setrlimit()/getrlimit() function declaration
to avoid null pointer access.

-----
v2
  According to the suggestions of the Adhemerval Zanella and Zack Weinberg:
    use __nonnull() to check null pointers in the compilation phase.
    do not add pointer check code to setrlimit()/getrlimit().
    The validity of the "resource" parameter is checked in the syscall.
v1
  https://public-inbox.org/libc-alpha/20201230114131.47589-1-nixiaoming@huawei.com/
-----
Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
3 years agobenchtests: Updated json bench-variant attribute
Naohiro Tamura [Mon, 8 Feb 2021 07:59:53 +0000 (07:59 +0000)]
benchtests: Updated json bench-variant attribute

This patch updates json "bench-variant" attribute of "bench-memset.c"
to "default" so that the script "benchtests/scripts/plot_strings.py"
can generate a file "memset_time_default_linear.png".
Without this patch, the script "benchtests/scripts/plot_strings.py"
generates a file "memset_time__linear.png" which has inconsistent form
with "memcpy_time_default_linear.png" and
"memmove_time_default_linear.png".

3 years agoregex: stop using alloca
Adhemerval Zanella [Mon, 16 Jul 2018 20:39:23 +0000 (17:39 -0300)]
regex: stop using alloca

It syncs with gnulib version 87ed1f9c4.  No functional changes is
expected.

Checked on x86_64-linux-gnu.

3 years agoregexec: remove alloca usage in build_trtable
Adhemerval Zanella [Mon, 11 Jan 2021 15:23:00 +0000 (12:23 -0300)]
regexec: remove alloca usage in build_trtable

It syncs with gnulib version 1731fef3d.  On build_trtable prevent
inlining, so that it doesn't bloat the caller's stack and use auto
variables instead of alloca/malloc.

After these changes, build_trtable's total stack allocation is
only 20 KiB on a 64-bit machine, and this is less than glibc's 64
KiB cutoff so there's little point to using alloca to shrink it.

Checked on x86_64-linux-gnu.

3 years agoregex: remove alloca usage on regex set_regs
Adhemerval Zanella [Mon, 16 Jul 2018 20:31:29 +0000 (17:31 -0300)]
regex: remove alloca usage on regex set_regs

It syncs with gnulib version b6207ab38.  It replaces the regmatch_t
with a dynarray list.

Checked on x86_64-linux-gnu.

3 years agomalloc: Sync dynarray with gnulib
Adhemerval Zanella [Mon, 11 Jan 2021 15:03:38 +0000 (12:03 -0300)]
malloc: Sync dynarray with gnulib

It syncs with gnulib version a8bac4d49.  The main changes are:

  - Remove the usage of anonymous union within DYNARRAY_STRUCT.
  - Use DYNARRAY_FREE instead of DYNARRAY_NAME (free) so that
    Gnulib does not change 'free' to 'rpl_free'.
  - Use __nonnull instead of __attribute__ ((nonnull ())).
  - Use __attribute_maybe_unused__ instead of
    __attribute__ ((unused, nonnull (1))).
  - Use of _Noreturn instead of _attribute__ ((noreturn)).

The only difference with gnulib is:

--- glibc
+++ gnulib
@@ -18,6 +18,7 @@

 #include <dynarray.h>
 #include <stdio.h>
+#include <stdlib.h>

 void
 __libc_dynarray_at_failure (size_t size, size_t index)
@@ -27,7 +28,6 @@
   __snprintf (buf, sizeof (buf), "Fatal glibc error: "
               "array index %zu not less than array length %zu\n",
               index, size);
- __libc_fatal (buf);
 #else
  abort ();
 #endif

It seems a wrong sync from gnulib (the code is used on loader and
thus it requires __libc_fatal instead of abort).

Checked on x86_64-linux-gnu.

3 years agomisc: Sync cdefs.h with gnulib
Adhemerval Zanella [Mon, 11 Jan 2021 14:53:32 +0000 (11:53 -0300)]
misc: Sync cdefs.h with gnulib

It adds __glibc_has_builtin, __glibc_has_extension, and
__attribute_maybe_unused__ alongsize with some fixes.

The differences are:

--- glibc
+++ gnulib
@@ -259,7 +259,9 @@
 # define __attribute_const__ /* Ignore */
 #endif

-#if __GNUC_PREREQ (2,7) || __glibc_has_attribute (__unused__)
+#if defined __STDC_VERSION__ && 201710L < __STDC_VERSION__
+# define __attribute_maybe_unused__ [[__maybe_unused__]]
+#elif __GNUC_PREREQ (2,7) || __glibc_has_attribute (__unused__)
 # define __attribute_maybe_unused__ __attribute__ ((__unused__))
 #else
 # define __attribute_maybe_unused__ /* Ignore */
@@ -485,7 +487,7 @@

 /* The #ifndef lets Gnulib avoid including these on non-glibc
    platforms, where the includes typically do not exist.  */
-#ifdef __GLIBC__
+#ifndef __WORDSIZE
 # include <bits/wordsize.h>
 # include <bits/long-double.h>
 #endif

The [[__attribute_maybe_unused__]] attribute removal __ is due Joseph
questioning gcc support with -std=c2x or -std=gnu2x [1].

The _WORDSIZE replacement by __GLIBC__ is because it does not play
well with internal cdefs.h that also uses
__LDOUBLE_REDIRECTS_TO_FLOAT128_ABI.

Checked on x86_64-linux-gnu.

[1] https://sourceware.org/pipermail/libc-alpha/2021-January/121600.html

3 years agolinux: Fix __sem_check_add_mapping search_sem
Adhemerval Zanella [Tue, 9 Feb 2021 19:09:51 +0000 (16:09 -0300)]
linux: Fix __sem_check_add_mapping search_sem

Similar to __sem_check_add_mapping fix, take in consideration the
trailling NULL.

Checked x86_64-linux-gnu.

3 years agolinux: Fix __sem_check_add_mapping name length
Adhemerval Zanella [Tue, 9 Feb 2021 17:40:06 +0000 (14:40 -0300)]
linux: Fix __sem_check_add_mapping name length

Take in consideration the trailling NULL since sem_search uses
strcmp to compare entries.

Checked on x86_64-linux-gnu and powerpc-linux-gnu (where it triggered
a nptl/tst-sem7 regression).

3 years agoAdd more ptrace constants for AArch64 and PowerPC.
Joseph Myers [Mon, 8 Feb 2021 22:47:04 +0000 (22:47 +0000)]
Add more ptrace constants for AArch64 and PowerPC.

Linux 5.10 adds PTRACE_PEEKMTETAGS and PTRACE_POKEMTETAGS for AArch64.
Adding those shows up that glibc is also missing PTRACE_SYSEMU and
PTRACE_SYSEMU_SINGLESTEP, for AArch64 (where they were added to Linux
in 5.3) and for PowerPC (where they were added in Linux 4.20); it
already has those two defines for x86.  Add all those defines to
glibc's headers.

Tested with build-many-glibcs.py for aarch64-linux-gnu and
powerpc-linux-gnu.

3 years agostrchr: Add additional benchmarks and tests
noah [Wed, 3 Feb 2021 05:39:00 +0000 (00:39 -0500)]
strchr: Add additional benchmarks and tests

This patch adds additional benchmarks and tests for string size of
4096 and several benchmarks for string size 256 with different
alignments.

3 years agox86-64: Refactor and improve performance of strchr-avx2.S
noah [Wed, 3 Feb 2021 05:38:59 +0000 (00:38 -0500)]
x86-64: Refactor and improve performance of strchr-avx2.S

No bug. Just seemed the performance could be improved a bit. Observed
and expected behavior are unchanged. Optimized body of main
loop. Updated page cross logic and optimized accordingly. Made a few
minor instruction selection modifications. No regressions in test
suite. Both test-strchrnul and test-strchr passed.

3 years agopthread: Remove alloca usage from __sem_check_add_mapping
Adhemerval Zanella [Wed, 3 Feb 2021 17:19:27 +0000 (14:19 -0300)]
pthread: Remove alloca usage from __sem_check_add_mapping

sem_open already returns EINVAL for input names larger than NAME_MAX,
so it can assume the largest name length with tfind.

Checked on x86_64-linux-gnu.

3 years agopthread: Refactor semaphore code
Adhemerval Zanella [Wed, 3 Feb 2021 16:50:21 +0000 (13:50 -0300)]
pthread: Refactor semaphore code

The internal semaphore list code is moved to a specific file,
sem_routine.c, and the internal usage is simplified to only two
functions (one to insert a new semaphore and one to remove it
from the internal list).  There is no need to expose the
internal locking, neither how the semaphore mapping is implemented.

No functional or semantic change is expected, tested on
x86_64-linux-gnu.

3 years agolinux: Require /dev/shm as the shared memory file system
Florian Weimer [Wed, 3 Feb 2021 11:55:13 +0000 (08:55 -0300)]
linux: Require /dev/shm as the shared memory file system

Previously, glibc would pick an arbitrary tmpfs file system from
/proc/mounts if /dev/shm was not available.  This could lead to
an unsuitable file system being picked for the backing storage for
shm_open, sem_open, and related functions.

This patch introduces a new function, __shm_get_name, which builds
the file name under the appropriate (now hard-coded) directory.  It is
called from the various shm_* and sem_* function.  Unlike the
SHM_GET_NAME macro it replaces, the callers handle the return values
and errno updates.  shm-directory.c is moved directly into the posix
subdirectory because it can be implemented directly using POSIX
functionality.  It resides in libc because it is needed by both
librt and nptl/htl.

In the sem_open implementation, tmpfname is initialized directly
from a string constant.  This happens to remove one alloca call.

Checked on x86_64-linux-gnu.

3 years agosunrpc: Fix typo in xdr_string comment
Paul Zimmermann [Wed, 3 Feb 2021 05:45:16 +0000 (06:45 +0100)]
sunrpc: Fix typo in xdr_string comment

3 years agotst: Provide test for ppoll
Lukasz Majewski [Wed, 13 Jan 2021 16:10:21 +0000 (17:10 +0100)]
tst: Provide test for ppoll

This change adds new test to assess ppoll()'s timeout related
functionality (the struct pollfd does not provide valid fd to wait
for - just wait for timeout).

To be more specific - two use cases are checked:
- if ppoll() times out immediately when passed struct timespec has zero
values of tv_nsec and tv_sec.
- if ppoll() times out after timeout specified in passed argument

3 years agotst: Provide test for timerfd related functions
Lukasz Majewski [Wed, 13 Jan 2021 12:35:40 +0000 (13:35 +0100)]
tst: Provide test for timerfd related functions

This change adds new test to assess functionality of timerfd_*
functions.
It creates new timer (operates on its file descriptor) and checks
if time before and after sleep is between expected values.

3 years agox86: Add PTWRITE feature detection [BZ #27346]
H.J. Lu [Thu, 4 Feb 2021 18:39:34 +0000 (10:39 -0800)]
x86: Add PTWRITE feature detection [BZ #27346]

1. Add CPUID_INDEX_14_ECX_0 for CPUID leaf 0x14 to detect PTWRITE feature
in EBX of CPUID leaf 0x14 with ECX == 0.
2. Add PTWRITE detection to CPU feature tests.
3. Add 2 static CPU feature tests.

3 years agonsswitch: return result when nss database is locked [BZ #27343]
Sergei Trofimovich [Fri, 5 Feb 2021 07:32:18 +0000 (07:32 +0000)]
nsswitch: return result when nss database is locked [BZ #27343]

Before the change nss_database_check_reload_and_get() did not populate
the '*result' value when it returned success in a case of chroot
detection. This caused initgroups() to use garage pointer in the
following test (extracted from unbound):

```

int main() {
    // load some NSS modules
    struct passwd * pw = getpwnam("root");

    chdir("/tmp");
    chroot("/tmp");
    chdir("/");
    // access nsswitch.conf in a chroot
    initgroups("root", 0);
}
```

Reviewed-by: DJ Delorie <dj@redhat.com>
3 years agoprintf: Add smoke tests for long double
Siddhesh Poyarekar [Fri, 5 Feb 2021 04:22:52 +0000 (09:52 +0530)]
printf: Add smoke tests for long double

The printf tests have no coverage for long double.  Duplicate the
double tests so that we have some basic coverage.

Reviewed-by: Carlos O'Donell <carlos@redhat.com>
3 years agoAdd NT_ARM_TAGGED_ADDR_CTRL from Linux 5.10 to elf.h.
Joseph Myers [Fri, 5 Feb 2021 01:47:57 +0000 (01:47 +0000)]
Add NT_ARM_TAGGED_ADDR_CTRL from Linux 5.10 to elf.h.

This patch adds the new NT_ARM_TAGGED_ADDR_CTRL constant from Linux
5.10 to glibc's elf.h.

Tested for x86_64.

3 years agoargp: Avoid undefined behaviour when invoking qsort().
Bruno Haible [Thu, 7 Jan 2021 01:06:20 +0000 (02:06 +0100)]
argp: Avoid undefined behaviour when invoking qsort().

This fixes a Gnulib test-argp-2.sh test failure on macOS and FreeBSD.

Reported by Jeffrey Walton <noloader@gmail.com> in
<https://lists.gnu.org/archive/html/bug-gnulib/2020-03/msg00085.html>.

* argp/argp-help.c (group_cmp): Remove third argument.
(hol_sibling_cluster_cmp, hol_cousin_cluster_cmp): New functions, based
upon hol_cluster_cmp.
(hol_cluster_cmp): Use hol_cousin_cluster_cmp.
(hol_entry_cmp): Rewritten to implement a total order.

Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
3 years agoargp: Improve comments.
Bruno Haible [Thu, 7 Jan 2021 01:06:19 +0000 (02:06 +0100)]
argp: Improve comments.

* argp/argp-help.c: Add sectioning comments. Write NULL to designate a
null pointer.
(struct hol_entry): Fix comment regarding sort order of group.
(hol_entry_short_iterate, hol_entry_long_iterate): Add comment.
(until_short, canon_doc_option, hol_entry_qcmp): Improve comment.
(hol_cluster_is_child, argp_hol): Move functions.

Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
3 years agoargp: Don't pass invalid arguments to isspace, isalnum, isalpha, isdigit.
Bruno Haible [Thu, 7 Jan 2021 01:06:18 +0000 (02:06 +0100)]
argp: Don't pass invalid arguments to isspace, isalnum, isalpha, isdigit.

* lib/argp-help.c (SKIPWS): Cast character to 'unsigned char' before passing it
to isspace().
(fill_in_uparams): Likewise for isalpha(), isalnum(), isdigit().
(canon_doc_option): Likewise for isspace(), isalnum().

Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
3 years agoargp: Don't rely on undefined behaviour of _tolower().
Bruno Haible [Thu, 7 Jan 2021 01:06:17 +0000 (02:06 +0100)]
argp: Don't rely on undefined behaviour of _tolower().

Patch by Eric Blake
<https://lists.gnu.org/archive/html/bug-gnulib/2009-09/msg00287.html>.

* argp/argp-help.c (hol_entry_cmp): Don't use _tolower on values that are
not upper-case.  Pass correct range to tolower.

Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
3 years agoargp: fix pointer-subtraction bug
Paul Eggert [Thu, 7 Jan 2021 01:06:16 +0000 (02:06 +0100)]
argp: fix pointer-subtraction bug

* argp/argp-help.c (hol_append): Don't subtract pointers to
different arrays, as this can run afoul of -fcheck-pointer-bounds.
See the thread containing Bruno Haible's report in:
http://lists.gnu.org/archive/html/bug-gnulib/2017-05/msg00171.html

Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
3 years agoUse binutils 2.36 branch in build-many-glibcs.py.
Joseph Myers [Thu, 4 Feb 2021 16:00:36 +0000 (16:00 +0000)]
Use binutils 2.36 branch in build-many-glibcs.py.

This patch makes build-many-glibcs.py use binutils 2.36 branch.

Tested with build-many-glibcs.py (compilers and glibcs builds).

3 years agomanual: Correct description of ENTRY [BZ #17183]
Florian Weimer [Thu, 4 Feb 2021 14:02:38 +0000 (15:02 +0100)]
manual: Correct description of ENTRY [BZ #17183]

The struct tag is actually entry (not ENTRY).  The data member has
type void *, and it can point to binary data.  Only the key member is
required to be a null-terminated string.

Reviewed-by: Arjun Shankar <arjun@redhat.com>
3 years agonptl: Remove private futex optimization [BZ #27304]
Florian Weimer [Thu, 4 Feb 2021 14:00:20 +0000 (15:00 +0100)]
nptl: Remove private futex optimization [BZ #27304]

It is effectively used, unexcept for pthread_cond_destroy, where we do
not want it; see bug 27304.  The internal locks do not support a
process-shared mode.

This fixes commit dc6cfdc934db9997c33728082d63552b9eee4563 ("nptl:
Move pthread_cond_destroy implementation into libc").

Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
3 years agostdio-common: Add a few double formatting tests [BZ #27245]
Mike Hommey [Wed, 27 Jan 2021 04:45:05 +0000 (13:45 +0900)]
stdio-common: Add a few double formatting tests [BZ #27245]

Checked on x86_64-linux-gnu.

Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
3 years ago posix/tst-rfc3484: Fix compile failure linking to local __stat64
Stafford Horne [Wed, 3 Feb 2021 18:36:47 +0000 (15:36 -0300)]
 posix/tst-rfc3484: Fix compile failure linking to local __stat64

After 04986243d1 ("Remove internal usage of extensible stat functions")
linking the __stat64 symbol in getaddrinfo for this test fails with the
below error:

    [...] or1k-smh-linux-gnu/bin/ld: [...]/posix/tst-rfc3484.o: in function `gaiconf_reload':
    [...]/sysdeps/posix/getaddrinfo.c:2136: undefined reference to `__stat64'
    collect2: error: ld returned 1 exit status

This is because __stat64 is a local symbol, the test includes the
getaddrinfo directly and fails to link against the local symbol.  Fix
this by setting up an alias to the global stat64 symbol name like is
done for other local symbol usage.

Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
3 years agoi686: Regenerate ULPs
Siddhesh Poyarekar [Wed, 3 Feb 2021 17:41:43 +0000 (23:11 +0530)]
i686: Regenerate ULPs

3 years agotst-rtld-list-tunables.sh: Unset glibc tunables
H.J. Lu [Tue, 2 Feb 2021 17:31:56 +0000 (09:31 -0800)]
tst-rtld-list-tunables.sh: Unset glibc tunables

Unset glibc tunables and their aliases for --list-tunables test.

3 years agolinux: Remove shmmax check from tst-sysvshm-linux
Adhemerval Zanella [Tue, 2 Feb 2021 12:55:50 +0000 (09:55 -0300)]
linux: Remove shmmax check from tst-sysvshm-linux

The shmmax expected value is tricky to check because kernel clamps it
to INT_MAX in two cases:

  1. Compat symbols with IPC_64, i.e, 32-bit binaries running on 64-bit
     kernels.

  2. Default symbol without IPC_64 (defined as IPC_OLD within Linux) and
     glibc always use IPC_64 for 32-bit ABIs (to support 64-bit time_t).
     It means that 32-bit binaries running on 32-bit kernels will not see
     shmmax being clamped.

And finding out whether the compat symbol is used would require checking
the underlying kernel against the current ABI.  The shmall and shmmni
already provided enough coverage.

Checked on x86_64-linux-gnu and i686-linux-gnu.  It should fix the
tst-sysvshm-linux failures on 32-bit kernels.

3 years agox86: Adding an upper bound for Enhanced REP MOVSB.
Sajan Karumanchi [Tue, 2 Feb 2021 11:42:14 +0000 (12:42 +0100)]
x86: Adding an upper bound for Enhanced REP MOVSB.

In the process of optimizing memcpy for AMD machines, we have found the
vector move operations are outperforming enhanced REP MOVSB for data
transfers above the L2 cache size on Zen3 architectures.
To handle this use case, we are adding an upper bound parameter on
enhanced REP MOVSB:'__x86_rep_movsb_stop_threshold'.
As per large-bench results, we are configuring this parameter to the
L2 cache size for AMD machines and applicable from Zen3 architecture
supporting the ERMS feature.
For architectures other than AMD, it is the computed value of
non-temporal threshold parameter.

Reviewed-by: Premachandra Mallappa <premachandra.mallappa@amd.com>
3 years agoFix version.h for glibc 2.34 development
Adhemerval Zanella [Tue, 2 Feb 2021 11:22:25 +0000 (08:22 -0300)]
Fix version.h for glibc 2.34 development