Zong Li [Fri, 30 Nov 2018 09:16:38 +0000 (17:16 +0800)]
RISC-V: Add hard float support for 32-bit CPUs
This patch adds support for hardware floating-point support for the
RV32IF and RV32IFD platforms.
Reviewed-by: Maciej W. Rozycki <macro@wdc.com>
Alistair Francis [Mon, 10 Feb 2020 18:36:21 +0000 (10:36 -0800)]
RISC-V: Support the 32-bit ABI implementation
This patch adds the ABI implementation for 32-bit RISC-V. It contains
the Linux-specific and RISC-V architecture code.
Reviewed-by: Maciej W. Rozycki <macro@wdc.com>
Alistair Francis [Thu, 2 Jan 2020 19:38:27 +0000 (11:38 -0800)]
RISC-V: Add arch-syscall.h for RV32
Reviewed-by: Maciej W. Rozycki <macro@wdc.com>
Alistair Francis [Thu, 9 Jul 2020 17:02:06 +0000 (10:02 -0700)]
RISC-V: Add path of library directories for the 32-bit
With RV32 support the list of possible RISC-V system directories
increases to:
- /lib64/lp64d
- /lib64/lp64
- /lib32/ilp32d
- /lib32/ilp32
- /lib (only ld.so)
This patch changes the add_system_dir () macro to support the new ilp32d
and ilp32 directories for RV32. While refactoring this code let's split
out the confusing if statements into a loop to make it easier to
understand and extend.
Reviewed-by: Maciej W. Rozycki <macro@wdc.com>
Zong Li [Fri, 30 Nov 2018 09:14:35 +0000 (17:14 +0800)]
RISC-V: Support dynamic loader for the 32-bit
Add the LD_SO_ABI definition for RISC-V 32-bit.
Reviewed-by: Maciej W. Rozycki <macro@wdc.com>
Alistair Francis [Wed, 18 Sep 2019 15:41:59 +0000 (08:41 -0700)]
RISC-V: Add support for 32-bit vDSO calls
Reviewed-by: Maciej W. Rozycki <macro@wdc.com>
Alistair Francis [Tue, 25 Jun 2019 23:32:38 +0000 (16:32 -0700)]
RISC-V: Use 64-bit-time syscall numbers with the 32-bit port
sysdep.h redefines only the syscall where the generic implementation
still does not have actual 64-bit time_t support:
/* Workarounds for generic code needing to handle 64-bit time_t. */
/* Fix sysdeps/unix/sysv/linux/clock_getcpuclockid.c. */
#define __NR_clock_getres __NR_clock_getres_time64
/* Fix sysdeps/nptl/lowlevellock-futex.h. */
#define __NR_futex __NR_futex_time64
[...]
This patch also adds a comment that it is a workaround to handle 64-bit
time_t and on each #define comment for which implementation it intends
to.
Reviewed-by: Maciej W. Rozycki <macro@wdc.com>
Alistair Francis [Wed, 8 Jul 2020 14:49:40 +0000 (07:49 -0700)]
RISC-V: Cleanup some of the sysdep.h code
Remove a duplicate inclusion of <sysdeps/unix/sysdep.h> which is already
pulled via <sysdeps/unix/sysv/linux/generic/sysdep.h>, and the inclusion
of <errno.h> whose definition of `__set_errno' is not needed here.
Reviewed-by: Maciej W. Rozycki <macro@wdc.com>
Alistair Francis [Fri, 21 Jun 2019 18:31:56 +0000 (11:31 -0700)]
RISC-V: Use 64-bit time_t and off_t for RV32 and RV64
Using the original glibc headers under bits/ let's make small
modifications to use 64-bit time_t and off_t for both RV32 and RV64.
For the typesizes.h, here are justifications for the changes from the
generic version (based on Arnd's very helpful feedback):
- All the !__USE_FILE_OFFSET64 types (__off_t, __ino_t, __rlim_t, ...)
are changed to match the 64-bit replacements.
- __time_t is defined to 64 bit, but no __time64_t is added. This makes
sense as we don't have the time64 support for other 32-bit
architectures yet, and it will be easy to change when that happens.
- __suseconds_t is 64-bit. This matches what we use the kernel ABI for
the few drivers that are relying on 'struct timeval' input arguments
in ioctl, as well as the adjtimex system call. It means that timeval
has to be defined without the padding, unlike timespec, which needs
padding.
Reviewed-by: Maciej W. Rozycki <macro@wdc.com>
Alistair Francis [Tue, 25 Aug 2020 18:15:27 +0000 (11:15 -0700)]
io/lockf: Include bits/types.h before __OFF_T_MATCHES_OFF64_T check
It's possible that although __OFF_T_MATCHES_OFF64_T is defined the
included the relevent header file. This results in a io/tst-lockf
failure for RV32 by calling the non 64-bit version of lockf. This
patch fixes the failure by including bits/types.h.
Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
Alistair Francis [Mon, 24 Aug 2020 22:35:44 +0000 (15:35 -0700)]
elf/tst-libc_dlvsym: Add a TEST_COMPAT around some symbol tests
The _sys_errlist and _sys_siglist symbols are deprecated since 2.32.
This patch adds a TEST_COMPAT check around the tests. This fixes test
failures on new architectures (such as RV32) that don't have this
symbol defined.
Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
Samuel Thibault [Thu, 27 Aug 2020 11:35:58 +0000 (13:35 +0200)]
hurd: define BSD 4.3 ioctls only under __USE_MISC
Raphael Moreira Zinsly [Fri, 21 Aug 2020 15:10:22 +0000 (12:10 -0300)]
string: test strncasecmp and strncpy near page boundaries
Add tests to check if strings placed at page boundaries are
handled correctly by strncasecmp and strncpy similar to tests
for strncmp and strnlen.
Adhemerval Zanella [Fri, 10 Jul 2020 18:13:48 +0000 (15:13 -0300)]
linux: Simplify utimensat
With arch-syscall.h it can now assumes the existance of either
__NR_utimensat or __NR_utimensat_time64. The 32-bit time_t
support is now only build for !__ASSUME_TIME64_SYSCALLS.
Checked on x86_64-linux-gnu and i686-linux-gnu (on 5.4 and on 4.15
kernel).
Reviewed-by: Lukasz Majewski <lukma@denx.de>
Adhemerval Zanella [Fri, 10 Jul 2020 18:11:13 +0000 (15:11 -0300)]
linux: Simplify timerfd_settime
With arch-syscall.h it can now assumes the existance of either
__NR_timer_settime or __NR_time_settime_time64. The 32-bit time_t
support is now only build for !__ASSUME_TIME64_SYSCALLS.
Checked on x86_64-linux-gnu and i686-linux-gnu (on 5.4 and on 4.15
kernel).
Reviewed-by: Lukasz Majewski <lukma@denx.de>
Adhemerval Zanella [Fri, 10 Jul 2020 18:05:51 +0000 (15:05 -0300)]
linux: Simplify timer_gettime
With arch-syscall.h it can now assumes the existance of either
__NR_timer_gettime or __NR_time_gettime_time64. The 32-bit time_t
support is now only build for !__ASSUME_TIME64_SYSCALLS.
Checked on x86_64-linux-gnu and i686-linux-gnu (on 5.4 and on 4.15
kernel).
Reviewed-by: Lukasz Majewski <lukma@denx.de>
Adhemerval Zanella [Fri, 10 Jul 2020 17:04:48 +0000 (14:04 -0300)]
linux: Simplify sched_rr_get_interval
With arch-syscall.h it can now assumes the existance of either
__NR_sched_rr_get_interval or __NR_sched_rr_get_interval_time64.
The 32-bit time_t support is now only build for
!__ASSUME_TIME64_SYSCALLS.
Checked on x86_64-linux-gnu and i686-linux-gnu (on 5.4 and on 4.15
kernel).
Reviewed-by: Lukasz Majewski <lukma@denx.de>
Adhemerval Zanella [Fri, 10 Jul 2020 16:33:40 +0000 (13:33 -0300)]
linux: Simplify ppoll
With arch-syscall.h it can now assumes the existance of either
__NR_ppoll or __NR_ppoll_time64. The 32-bit time_t support is now
only build for !__ASSUME_TIME64_SYSCALLS.
Checked on x86_64-linux-gnu and i686-linux-gnu (on 5.4 and on 4.15
kernel).
Reviewed-by: Lukasz Majewski <lukma@denx.de>
Adhemerval Zanella [Fri, 10 Jul 2020 14:15:42 +0000 (11:15 -0300)]
linux: Simplify mq_timedsend
With arch-syscall.h it can now assumes the existance of either
__NR_mq_timedsend or __NR_mq_timedsend_time64. The 32-bit
time_t support is now only build for !__ASSUME_TIME64_SYSCALLS.
Checked on x86_64-linux-gnu and i686-linux-gnu (on 5.4 and on 4.15
kernel).
Reviewed-by: Lukasz Majewski <lukma@denx.de>
Adhemerval Zanella [Fri, 10 Jul 2020 13:41:23 +0000 (10:41 -0300)]
linux: Simplify mq_timedreceive
With arch-syscall.h it can now assumes the existance of either
__NR_mq_timedreceive or __NR_mq_timedreceive_time64. The 32-bit
time_t support is now only build for !__ASSUME_TIME64_SYSCALLS.
Checked on x86_64-linux-gnu and i686-linux-gnu (on 5.4 and on 4.15
kernel).
Reviewed-by: Lukasz Majewski <lukma@denx.de>
Adhemerval Zanella [Fri, 10 Jul 2020 13:04:14 +0000 (10:04 -0300)]
linux: Simplify clock_settime
With arch-syscall.h it can now assumes the existance of either
__NR_clock_settime or __NR_clock_settime_time64. The 32-bit
time_t support is now only build for !__ASSUME_TIME64_SYSCALLS.
Checked on x86_64-linux-gnu and i686-linux-gnu (on 5.4 and on 4.15
kernel).
Reviewed-by: Lukasz Majewski <lukma@denx.de>
Adhemerval Zanella [Fri, 10 Jul 2020 12:54:35 +0000 (09:54 -0300)]
linux: Simplify clock_nanosleep
With arch-syscall.h it can now assumes the existance of either
__NR_clock_nanosleep or __NR_clock_nanosleep_time64. The 32-bit
time_t support is now only build for !__ASSUME_TIME64_SYSCALLS.
Checked on x86_64-linux-gnu and i686-linux-gnu (on 5.4 and on 4.15
kernel).
Reviewed-by: Lukasz Majewski <lukma@denx.de>
Adhemerval Zanella [Fri, 10 Jul 2020 12:50:04 +0000 (09:50 -0300)]
linux: Simplify clock_gettime
With arch-syscall.h it can now assumes the existance of either
__NR_clock_gettime or __NR_clock_gettime_time64. The 32-bit time_t
support is now only build for !__ASSUME_TIME64_SYSCALLS.
It also uses the time64-support functions to simplify it further.
Checked on x86_64-linux-gnu and i686-linux-gnu (on 5.4 and on 4.15
kernel).
Adhemerval Zanella [Thu, 9 Jul 2020 19:42:14 +0000 (16:42 -0300)]
linux: Simplify clock_adjtime
With arch-syscall.h it can now assumes the existance of either
__NR_clock_adjtime or __NR_clock_adjtime_time64. The 32-bit time_t
support is now only build for !__ASSUME_TIME64_SYSCALLS.
Checked on x86_64-linux-gnu and i686-linux-gnu (on 5.4 and on 4.15
kernel).
Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
Reviewed-by: Lukasz Majewski <lukma@denx.de>
Adhemerval Zanella [Thu, 20 Aug 2020 12:18:15 +0000 (09:18 -0300)]
linux: Add helper function to optimize 64-bit time_t fallback support
These helper functions are used to optimize the 64-bit time_t support on
configurations that requires support for 32-bit time_t fallback
(!__ASSUME_TIME64_SYSCALLS). The idea is once the kernel advertises that
it does not have 64-bit time_t support, glibc will stop to try issue the
64-bit time_t syscall altogether.
For instance:
#ifndef __NR_symbol_time64
# define __NR_symbol_time64 __NR_symbol
#endif
int r;
if (supports_time64 ())
{
r = INLINE_SYSCALL_CALL (symbol, ...);
if (r == 0 || errno != ENOSYS)
return r;
mark_time64_unsupported ();
}
#ifndef __ASSUME_TIME64_SYSCALLS
<32-bit fallback syscall>
#endif
return r;
On configuration with default 64-bit time_t this optimization should be
optimized away by the compiler resulting in no overhead.
Stefan Liebler [Fri, 21 Aug 2020 09:23:17 +0000 (11:23 +0200)]
S390: Sync HWCAP names with kernel by adding aliases [BZ #25971]
Unfortunately some HWCAP names like HWCAP_S390_VX differs between
kernel (see <kernel>/arch/s390/include/asm/elf.h) and glibc.
Therefore, those HWCAP names from kernel are now introduced as alias
Siddhesh Poyarekar [Thu, 20 Aug 2020 03:15:02 +0000 (08:45 +0530)]
[vcstocl] Import ProjectQuirks from its own file
ProjectQuirks moved into its own file in gnulib because one cannot
import modules with hyphens in them. Adjust the quirks file to
reflect this reality.
Stefan Liebler [Thu, 20 Aug 2020 08:51:42 +0000 (10:51 +0200)]
build-many-glibcs.py: Add a s390x -O3 glibc variant.
On s390x, gcc inlines more aggresive compared to other architectures.
This occaisionally leads to build warnings / errors.
Therefore this patch adds a s390x glibc variant with optimization.
There is the ccopts field which contain ABI options which are passed
to configure as CC / CXX. Now there is also the cflags field which
contains non-ABI options like -g or -O. Those are passed to configure
as CFLAGS / CXXFLAGS.
Currently CC is passed to conformtest.py or linknamespace.py but not
the CFLAGS.
Stefan Liebler [Thu, 20 Aug 2020 08:45:26 +0000 (10:45 +0200)]
Fix namespace violation in stdio.h and sys/stat.h if build with optimization. [BZ #26376]
If build with optimization, stdio.h and sys/stat.h are defining some inlining
functions. This leads to test fails if glibc is build with the following
commands. (Note that the conformtests usually builds without optimization or
other CFLAGS):
<glibc>/configure CC="gcc -O3" --prefix=/usr
make
make subdirs=conform check
- FAIL: conform/XPG4/stdio.h/conform
- FAIL: conform/XPG42/stdio.h/conform
out-files:
...
PASSCOMBINED: Availability of variable optopt
PASSCOMBINED: Type of variable optopt
Namespace violation: "getc_unlocked"
Namespace violation: "getchar_unlocked"
Namespace violation: "putc_unlocked"
Namespace violation: "putchar_unlocked"
FAIL: Namespace of <stdio.h>
----------------------------------------------------------------------------
Total number of tests : 168
Number of failed tests : 1
Number of xfailed tests : 0
Number of skipped tests : 0
- FAIL: conform/POSIX2008/sys/stat.h/conform
out-file:
...
PASSCOMBINED: Availability of function utimensat
PASSCOMBINED: Type of function utimensat
Namespace violation: "mknodat"
FAIL: Namespace of <sys/stat.h>
----------------------------------------------------------------------------
Total number of tests : 97
Number of failed tests : 1
Number of xfailed tests : 0
Number of skipped tests : 0
For getc_unlocked, getchar_unlocked, putc_unlocked, putchar_unlocked in stdio.h,
those are defined "# ifdef __USE_POSIX" instead of "#ifdef __USE_POSIX199506"
for the non-inlining declaration. See also
"Bug 20014 - stdio.h namespace for pre-threads POSIX"
(https://sourceware.org/bugzilla/show_bug.cgi?id=20014).
For mknodat in sys/stat.h, those are defined "# ifdef __USE_ATFILE" instead of
the additional guard "# if defined __USE_MISC || defined __USE_XOPEN_EXTENDED".
Joseph Myers [Wed, 19 Aug 2020 22:46:41 +0000 (22:46 +0000)]
Add C2x BOOL_MAX and BOOL_WIDTH to limits.h.
C2x adds BOOL_MAX and BOOL_WIDTH macros to <limits.h>. This patch
adds them to glibc's <limits.h> for the case when they aren't defined
by GCC's <limits.h>.
Tested for x86_64.
Joseph Myers [Wed, 19 Aug 2020 13:48:14 +0000 (13:48 +0000)]
Use MPC 1.2.0 in build-many-glibcs.py.
This patch makes build-many-glibcs.py use the new MPC 1.2.0 release.
Tested with build-many-glibcs.py (host-libraries, compilers and glibcs
builds).
Joseph Myers [Wed, 19 Aug 2020 13:47:37 +0000 (13:47 +0000)]
Add new STATX_* constants from Linux 5.8 to bits/statx-generic.h.
This patch adds the new STATX_MNT_ID, STATX_ATTR_MOUNT_ROOT and
STATX_ATTR_DAX macros from Linux 5.8 to glibc's bits/statx-generic.h.
(As with previous such changes, this only does anything if glibc is
being used with old kernel headers.)
A comment in the Linux kernel headers indicates that STATX_ALL is
deliberately not being changed.
Tested for x86_64.
Andreas Schwab [Tue, 23 Jun 2020 10:55:49 +0000 (12:55 +0200)]
Correct locking and cancellation cleanup in syslog functions (bug 26100)
Properly serialize the access to the global state shared between the
syslog functions, to avoid races in multithreaded processes. Protect a
local allocation in the __vsyslog_internal function from leaking during
cancellation.
H.J. Lu [Sat, 15 Aug 2020 18:06:35 +0000 (11:06 -0700)]
nptl: Handle NULL abstime [BZ #26394]
Since abstime passed to pthread_{clock|timed}join_np may be NULL, convert
to 64 bit abstime only if abstime isn't NULL.
Joseph Myers [Thu, 13 Aug 2020 18:51:10 +0000 (18:51 +0000)]
Update build-many-glibcs.py for binutils ia64 obsoletion.
Since binutils has obsoleted ia64 support, use --enable-obsolete for
now when configuring binutils for ia64 in build-many-glibcs.py (which
requires adding support for architecture-specific binutils configure
options there). As with other obsoletions, the removal of support for
ia64 in any of (binutils, GCC, Linux kernel) should imply its removal
from glibc.
Tested with build-many-glibcs.py for ia64-linux-gnu (compilers and
glibcs build).
Joseph Myers [Thu, 13 Aug 2020 18:50:24 +0000 (18:50 +0000)]
Update kernel version to 5.8 in tst-mman-consts.py.
This patch updates the kernel version in the test tst-mman-consts.py
to 5.8. (There are no new MAP_* constants covered by this test in 5.8
that need any other header changes.)
Tested with build-many-glibcs.py.
Lukasz Majewski [Mon, 20 Jul 2020 13:50:12 +0000 (15:50 +0200)]
y2038: nptl: Convert pthread_{clock|timed}join_np to support 64 bit time
The pthread_clockjoin_np and pthread_timedjoin_np have been converted to
support 64 bit time.
This change introduces new futex_timed_wait_cancel64 function in
./sysdeps/nptl/futex-internal.h, which uses futex_time64 where possible
and tries to replace low-level preprocessor macros from
lowlevellock-futex.h
The pthread_{timed|clock}join_np only accept absolute time. Moreover,
there is no need to check for NULL passed as *abstime pointer as
clockwait_tid() always passes struct __timespec64.
For systems with __TIMESIZE != 64 && __WORDSIZE == 32:
- Conversions between 64 bit time to 32 bit are necessary
- Redirection to __pthread_{clock|timed}join_np64 will provide support
for 64 bit time
Build tests:
./src/scripts/build-many-glibcs.py glibcs
Run-time tests:
- Run specific tests on ARM/x86 32bit systems (qemu):
https://github.com/lmajewski/meta-y2038 and run tests:
https://github.com/lmajewski/y2038-tests/commits/master
Above tests were performed with Y2038 redirection applied as well as without
to test the proper usage of both __pthread_{timed|clock}join_np64 and
__pthread_{timed|clock}join_np.
Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
Szabolcs Nagy [Thu, 13 Aug 2020 12:02:35 +0000 (13:02 +0100)]
aarch64: update ulps.
For new j0 test.
Stefan Liebler [Wed, 12 Aug 2020 14:23:12 +0000 (16:23 +0200)]
S390: Regenerate ULPs.
Updates needed after new j0 test:
commit
9bfc225078219521439ec8b0f665915e769d40c2
math: Regenerate auto-libm-test-out-j0
Adhemerval Zanella [Sat, 8 Aug 2020 19:49:53 +0000 (16:49 -0300)]
manual: Fix sigdescr_np and sigabbrev_np return type (BZ #26343)
Adhemerval Zanella [Sat, 8 Aug 2020 19:43:11 +0000 (16:43 -0300)]
math: Update x86_64 ulps
From new j0 test.
Adhemerval Zanella [Sat, 8 Aug 2020 19:41:40 +0000 (16:41 -0300)]
math: Regenerate auto-libm-test-out-j0
This is a missing bit for
b7dd366dbe.
Adhemerval Zanella [Fri, 7 Aug 2020 20:14:49 +0000 (17:14 -0300)]
manual: Put the istrerrorname_np and strerrordesc_np return type in braces
Otherwise it is not rendered or indexed correctly.
Florian Weimer [Fri, 7 Aug 2020 20:06:59 +0000 (22:06 +0200)]
Linux: Use faccessat2 to implement faccessat (bug 18683)
This provides correct AT_EACCESS handling and also takes
Linux security modules into account.
Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
Adhemerval Zanella [Fri, 7 Aug 2020 19:49:59 +0000 (16:49 -0300)]
manual: Fix strerrorname_np and strerrordesc_np return type (BZ #26343)
Paul Zimmermann [Fri, 7 Aug 2020 19:14:53 +0000 (16:14 -0300)]
math: Fix inaccuracy of j0f for x >= 2^127 when sin(x)+cos(x) is tiny
Checked on x86_64-linux-gnu and i686-linux-gnu.
Joseph Myers [Fri, 7 Aug 2020 14:38:43 +0000 (14:38 +0000)]
Update syscall lists for Linux 5.8.
Linux 5.8 has one new syscall, faccessat2. Update syscall-names.list
and regenerate the arch-syscall.h headers with build-many-glibcs.py
update-syscalls.
Tested with build-many-glibcs.py.
Joseph Myers [Fri, 7 Aug 2020 14:38:12 +0000 (14:38 +0000)]
Use Linux 5.8 in build-many-glibcs.py.
This patch makes build-many-glibcs.py use Linux 5.8.
Tested with build-many-glibcs.py (host-libraries, compilers and glibcs
builds).
Samuel Thibault [Thu, 6 Aug 2020 23:38:27 +0000 (23:38 +0000)]
htl: Enable tst-cancelx?[45]
* nptl/{tst-cancel4-common.c, tst-cancel4-common.h, tst-cancel4.c,
tst-cancel5.c, tst-cancelx4.c, tst-cancelx5.c}: Move to sysdeps/pthread/
* nptl/Makefile: Move corresponding rules to...
* sysdeps/pthread/Makefile: ... here.
Samuel Thibault [Thu, 6 Aug 2020 23:13:17 +0000 (01:13 +0200)]
tst-cancel4: Make blocking on write more portable
* nptl/tst-cancel4.c (tf_send, tf_sendto): Set socket buffer size after
connecting.
Samuel Thibault [Thu, 6 Aug 2020 18:10:58 +0000 (20:10 +0200)]
hurd: Add missing hidden def
* sysdeps/mach/hurd/sched_gets.c (__sched_getscheduler): Add hidden def.
Samuel Thibault [Wed, 5 Aug 2020 21:48:58 +0000 (23:48 +0200)]
hurd: Rework sbrk
Making the brk start exactly at the end of the main application binary was
requiring to get it through the _end symbol, which does not work any more
with recent toolchains, and actually produces in libc.so a confusing
external _end symbol that produces odd results, see
https://sourceware.org/bugzilla/show_bug.cgi?id=23499
Trying to do so is quite outdated anyway with the tendency for address
randomization.
Using _end was also allowing to include the main binary data within
the RLIMIT_DATA, but this also seems outdated with dynamic library
loading, and nowadays' memory consumption via malloc and mmap rather than
statically-allocated data.
This adds a BRK_START macro in <vm_param.h> that just tells where we
want to start the brk, and thus removes the _end symbol.
* sysdeps/mach/hurd/i386/vm_param.h: New file.
* sysdeps/mach/hurd/brk.c: Use BRK_START as brk start instead of _end.
Also ignore __data_start.
* hurd/Versions: Remove _end symbol.
* sysdeps/mach/hurd/i386/libc.abilist: Remove _end symbol.
Samuel Thibault [Wed, 5 Aug 2020 21:46:14 +0000 (23:46 +0200)]
hurd: Implement basic sched_get/setscheduler
* sysdeps/mach/hurd/sched_gets.c: New file.
* sysdeps/mach/hurd/sched_sets.c: New file.
H.J. Lu [Wed, 5 Aug 2020 15:20:52 +0000 (08:20 -0700)]
x86: Rename Intel CPU feature names
Intel64 and IA-32 Architectures Software Developer’s Manual has changed
the following CPU feature names:
1. The CPU feature of Enhanced Intel SpeedStep Technology is renamed
from EST to EIST.
2. The CPU feature which supports Platform Quality of Service Monitoring
(PQM) capability is changed to Intel Resource Director Technology
(Intel RDT) Monitoring capability, i.e. PQM is renamed to RDT_M.
3. The CPU feature which supports Platform Quality of Service
Enforcement (PQE) capability is changed to Intel Resource Director
Technology (Intel RDT) Allocation capability, i.e. PQE is renamed to
RDT_A.
Florian Weimer [Mon, 9 Sep 2019 09:21:08 +0000 (11:21 +0200)]
manual: Fix some @code/@var formatting glitches chapter Date And Time
Paul Eggert [Wed, 5 Aug 2020 06:45:27 +0000 (23:45 -0700)]
Copy regex_internal.h from Gnulib
Sync this file from Gnulib, thus incorporating the following
fix for a bug with regexps with 16 or more subexpressions:
* posix/regex_internal.h (struct re_backref_cache_entry):
Use bitset_word_t as the type of eps_reachable_subexps_map,
instead of unsigned short int. This fixes a bug I introduced
to glibc in 2005-09-28T17:33:18Z!drepper@redhat.com (glibc commit
2c05d33f90861d074dc12808dafbde30f487b1a0, BZ #1302).
Remove unused member 'unused'.
Paul Eggert [Wed, 5 Aug 2020 06:39:20 +0000 (23:39 -0700)]
Copy regex BITSET_WORD_BITS porting from Gnulib
* posix/regex.c (__STDC_WANT_IEC_60559_BFP_EXT__):
Define, for ULONG_WIDTH. This syncs regex.c from Gnujlib.
* posix/regex_internal.h (ULONG_WIDTH):
Use a more-portable fallback, from Gnulib.
(BITSET_WORD_BITS): Now defined in terms of ULONG_WIDTH.
Paul Eggert [Wed, 5 Aug 2020 06:24:03 +0000 (23:24 -0700)]
Sync regex.h from Gnulib
* posix/regex.h: Remove an ‘#ifndef _CRAY’ that hasn’t been needed
for years in Gnulib (and was needed only because of Gnulib).
Paul Eggert [Wed, 5 Aug 2020 06:15:31 +0000 (23:15 -0700)]
Sync mktime.c from Gnulib
* time/mktime.c: Sync from Gnulib.
This micro-optimizes three division-related computations.
Paul Eggert [Wed, 5 Aug 2020 05:58:58 +0000 (22:58 -0700)]
Sync intprops.h from Gnulib
* include/intprops.h: Sync from Gnulib. This improves
performance of INT_MULTIPLY_WRAPV on recent GCC, which affects
glibc only in the support library.
Carlos O'Donell [Wed, 5 Aug 2020 03:41:43 +0000 (23:41 -0400)]
Open master branch for glibc 2.33 development.
Happy hacking!
Carlos O'Donell [Wed, 5 Aug 2020 02:17:00 +0000 (22:17 -0400)]
Prepare for glibc 2.32 release.
Update version.h, features.h, and ChangeLog.old/ChangeLog.21.
Carlos O'Donell [Wed, 5 Aug 2020 01:36:19 +0000 (21:36 -0400)]
Regenerate configure scripts.
Carlos O'Donell [Wed, 5 Aug 2020 00:39:09 +0000 (20:39 -0400)]
Update NEWS with bugs.
Carlos O'Donell [Wed, 5 Aug 2020 00:31:51 +0000 (20:31 -0400)]
Update translations.
Incorporate updates from translationproject.org.
Alan Modra [Wed, 29 Jul 2020 06:58:57 +0000 (16:28 +0930)]
Don't mix linker error messages into edited scripts
* Makerules (shlib.lds): Discard linker warning output.
(format.lds): Likewise.
Reviewed-by: Carlos O'Donell <carlos@redhat.com>
Paul Zimmermann [Tue, 4 Aug 2020 11:27:39 +0000 (13:27 +0200)]
benchtests/README update.
Improve documentation of the 'name' directive and the 'workload' mechanism.
Reviewed-by: Carlos O'Donell <carlos@redhat.com>
Maciej W. Rozycki [Tue, 4 Aug 2020 12:00:17 +0000 (13:00 +0100)]
RISC-V: Update lp64d libm-test-ulps according to HiFive Unleashed
Produced with HiFive Unleashed hardware using Linux 5.8-rc5 exactly and
GCC 10.0.1
20200426.
Reviewed-by: Carlos O'Donell <carlos@redhat.com>
Szabolcs Nagy [Wed, 29 Jul 2020 07:27:27 +0000 (08:27 +0100)]
aarch64: update NEWS about branch protection
After some discussions it seems the original news was not clear
and that it is valid to manually pass the branch protection flags
iff GCC target libs are built with them too. The main difference
between manually passing the flags and using the configure
option is that the latter also makes branch protection the
default in GCC which may not be desirable in some cases.
Reviewed-by: Carlos O'Donell <carlos@redhat.com>
Aurelien Jarno [Thu, 30 Jul 2020 08:07:33 +0000 (10:07 +0200)]
Add NEWS entry for CVE-2016-10228 (bug 19519)
Florian Weimer [Mon, 3 Aug 2020 16:07:19 +0000 (18:07 +0200)]
powerpc: Fix incorrect cache line size load in memset (bug 26332)
__GLRO loaded the word after the requested variable on big-endian
PowerPC, where LOWORD is 4. This can cause the memset implement
go wrong because the masking with the cache line size produces
wrong results, particularly if the loaded value happens to be 1.
The __GLRO macro is not used in any place where loading the lower
32-bit word of a 64-bit value is desired, so the +4 offset is always
wrong.
Fixes commit
18363b4f010da9ba459b13310b113ac0647c2fcc
("powerpc: Move cache line size to rtld_global_ro") and bug 26332.
Reviewed-by: Carlos O'Donell <carlos@redhat.com>
Chung-Lin Tang [Mon, 3 Aug 2020 08:42:48 +0000 (01:42 -0700)]
Update Nios II libm-test-ulps file.
Florian Weimer [Fri, 31 Jul 2020 10:07:06 +0000 (12:07 +0200)]
Move NEWS entry for CVE-2020-1751 to the 2.31 section
It was fixed in commit
d93769405996dfc11d216ddbe415946617b5a494
("Fix array overflow in backtrace on PowerPC (bug 25423)"), which
went into glibc 2.31.
Reviewed-by: Carlos O'Donell <carlos@redhat.com>
Florian Weimer [Fri, 24 Jul 2020 14:50:38 +0000 (16:50 +0200)]
NEWS: Deprecate weak libpthread symbols for single-threaded checks
Recommend the new __libc_single_thread variable instead.
Reviewed-by: Carlos O'Donell <carlos@redhat.com>
Florian Weimer [Fri, 24 Jul 2020 14:46:23 +0000 (16:46 +0200)]
NEWS: Deprecate nss_hesiod
Storing user databases in DNS, without client-side DNSSEC validation,
is problematic from a security point of view.
Reviewed-by: Carlos O'Donell <carlos@redhat.com>
H.J. Lu [Thu, 16 Jul 2020 10:37:10 +0000 (03:37 -0700)]
nptl: Zero-extend arguments to SETXID syscalls [BZ #26248]
nptl has
/* Opcodes and data types for communication with the signal handler to
change user/group IDs. */
struct xid_command
{
int syscall_no;
long int id[3];
volatile int cntr;
volatile int error;
};
/* This must be last, otherwise the current thread might not have
permissions to send SIGSETXID syscall to the other threads. */
result = INTERNAL_SYSCALL_NCS (cmdp->syscall_no, 3,
cmdp->id[0], cmdp->id[1], cmdp->id[2]);
But the second argument of setgroups syscal is a pointer:
int setgroups (size_t size, const gid_t *list);
But on x32, pointers passed to syscall must have pointer type so that
they will be zero-extended. The kernel XID arguments are unsigned and
do not require sign extension. Change xid_command to
struct xid_command
{
int syscall_no;
unsigned long int id[3];
volatile int cntr;
volatile int error;
};
so that all arguments are zero-extended. A testcase is added for x32 and
setgroups returned with EFAULT when running as root without the fix.
Joseph Myers [Mon, 27 Jul 2020 14:55:10 +0000 (14:55 +0000)]
Use binutils 2.35 branch in build-many-glibcs.py.
This patch makes build-many-glibcs.py use binutils 2.35 branch.
Tested with build-many-glibcs.py (compilers and glibcs builds).
Szabolcs Nagy [Fri, 24 Jul 2020 11:37:23 +0000 (12:37 +0100)]
aarch64: Use future HWCAP2_MTE in ifunc resolver
Make glibc MTE-safe on systems where MTE is available. This allows
using heap tagging with an LD_PRELOADed malloc implementation that
enables MTE. We don't document this as guaranteed contract yet, so
glibc may not be MTE safe when HWCAP2_MTE is set (older glibcs
certainly aren't). This is mainly for testing and debugging.
The HWCAP flag is not exposed in public headers until Linux adds it
to its uapi. The HWCAP value reservation will be in Linux 5.9.
Andreas K. Hüttel [Sat, 25 Jul 2020 09:36:00 +0000 (12:36 +0300)]
Update x86-64 libm-test-ulps
x86_64 Intel(R) Core(TM) i5-8265U
gcc (Gentoo 10.1.0-r2 p3) 10.1.0
Reviewed-by: Carlos O'Donell <carlos@redhat.com>
Szabolcs Nagy [Mon, 13 Jul 2020 10:28:18 +0000 (11:28 +0100)]
aarch64: Respect p_flags when protecting code with PROT_BTI
Use PROT_READ and PROT_WRITE according to the load segment p_flags
when adding PROT_BTI.
This is before processing relocations which may drop PROT_BTI in
case of textrels. Executable stacks are not protected via PROT_BTI
either. PROT_BTI is hardening in case memory corruption happened,
it's value is reduced if there is writable and executable memory
available so missing it on such memory is fine, but we should
respect the p_flags and should not drop PROT_WRITE.
Arjun Shankar [Thu, 23 Jul 2020 10:20:38 +0000 (12:20 +0200)]
Disable warnings due to deprecated libselinux symbols used by nss and nscd
The SELinux API deprecated several symbols in its 3.1 release, including
security_context_t, matchpathcon, avc_init, and sidput, which are used in
makedb and nscd. While the usage of these should eventually be replaced by
newer interfaces, this commit disables GCC warnings due to the use of the
above symbols.
Reviewed-by: Carlos O'Donell <carlos@redhat.com>
Tested-by: Carlos O'Donell <carlos@redhat.com>
Carlos O'Donell [Thu, 23 Jul 2020 03:32:07 +0000 (23:32 -0400)]
Regenerate INSTALL for ARC port updates.
Carlos O'Donell [Thu, 23 Jul 2020 03:28:05 +0000 (23:28 -0400)]
Update libc.pot for 2.32 release.
Tulio Magno Quites Machado Filho [Tue, 21 Jul 2020 21:01:39 +0000 (18:01 -0300)]
powerpc: Fix POWER10 selection
Add a line that was missing from a previous commit.
Without increasing str, the null-byte is not validated, and
_dl_string_platform returns -1.
Fixes:
d2ba3677da7a ("powerpc: Add support for POWER10")
Reviewed-by: Carlos O'Donell <carlos@redhat.com>
Paul E. Murphy [Wed, 8 Jul 2020 21:49:34 +0000 (16:49 -0500)]
powerpc64le: guarantee a .gnu.attributes section [BZ #26220]
Upstream GCC 11 development is now building the ibm128 runtime
support (in libgcc) without a .gnu.attributes section on ppc64le.
Ensure we have one to replace by building one ibm128 file in
libc and libm with attributes.
Reviewed-by: Carlos O'Donell <carlos@redhat.com>
Reviewed-by: Tulio Magno Quites Machado Filho <tuliom@linux.ibm.com>
Florian Weimer [Wed, 15 Jul 2020 10:37:01 +0000 (12:37 +0200)]
libio: Remove __libc_readline_unlocked
__nss_readline supersedes it. This reverts part of commit
3f5e3f5d066dcffb80af48ae2cf35a01a85a8f10 ("libio: Implement
internal function __libc_readline_unlocked"). The internal
aliases __fseeko64 and __ftello64 are preserved because
they are needed by __nss_readline as well.
Tested-by: Carlos O'Donell <carlos@redhat.com>
Reviewed-by: Carlos O'Donell <carlos@redhat.com>
Florian Weimer [Thu, 16 Jul 2020 15:34:43 +0000 (17:34 +0200)]
shadow: Implement fgetspent_r using __nss_fgetent_r
Tested-by: Carlos O'Donell <carlos@redhat.com>
Reviewed-by: Carlos O'Donell <carlos@redhat.com>
Florian Weimer [Thu, 16 Jul 2020 15:34:19 +0000 (17:34 +0200)]
pwd: Implement fgetpwent_r using __nss_fgetent_r
Tested-by: Carlos O'Donell <carlos@redhat.com>
Reviewed-by: Carlos O'Donell <carlos@redhat.com>
Florian Weimer [Thu, 16 Jul 2020 15:31:20 +0000 (17:31 +0200)]
gshadow: Implement fgetsgent_r using __nss_fgetent_r (bug 20338)
Tested-by: Carlos O'Donell <carlos@redhat.com>
Reviewed-by: Carlos O'Donell <carlos@redhat.com>
Florian Weimer [Thu, 16 Jul 2020 15:28:28 +0000 (17:28 +0200)]
grp: Implement fgetgrent_r using __nss_fgetent_r
Tested-by: Carlos O'Donell <carlos@redhat.com>
Reviewed-by: Carlos O'Donell <carlos@redhat.com>
Florian Weimer [Wed, 15 Jul 2020 11:41:31 +0000 (13:41 +0200)]
nss: Add __nss_fgetent_r
And helper functions __nss_readline, __nss_readline_seek,
__nss_parse_line_result.
This consolidates common code for handling overlong lines and
parse files. Use the new functionality in internal_getent
in nss/nss_files/files-XXX.c.
Tested-by: Carlos O'Donell <carlos@redhat.com>
Reviewed-by: Carlos O'Donell <carlos@redhat.com>
Florian Weimer [Thu, 16 Jul 2020 15:00:46 +0000 (17:00 +0200)]
libio: Add fseterr_unlocked for internal use
Tested-by: Carlos O'Donell <carlos@redhat.com>
Reviewed-by: Carlos O'Donell <carlos@redhat.com>
Florian Weimer [Thu, 16 Jul 2020 14:55:45 +0000 (16:55 +0200)]
nss_files: Use generic result pointer in parse_line
As a result, all parse_line functions have the same prototype, except
for that producing struct hostent. This change is ABI-compatible, so
it does not alter the internal GLIBC_PRIVATE ABI (otherwise we should
probably have renamed the exported functions).
A future change will use this to implement a generict fget*ent_r
function.
Tested-by: Carlos O'Donell <carlos@redhat.com>
Reviewed-by: Carlos O'Donell <carlos@redhat.com>
Florian Weimer [Thu, 16 Jul 2020 14:40:44 +0000 (16:40 +0200)]
nss_files: Consolidate line parse declarations in <nss_files.h>
These functions should eventually have the same type, so it makes
sense to declare them together.
Tested-by: Carlos O'Donell <carlos@redhat.com>
Reviewed-by: Carlos O'Donell <carlos@redhat.com>
Florian Weimer [Thu, 16 Jul 2020 14:21:28 +0000 (16:21 +0200)]
nss_compat: Do not use mmap to read database files (bug 26258)
This avoids crashes in case the files are truncated for some reason.
For typically file sizes, it is also going to be slightly faster.
Using __nss_files_fopen instead mirrors what nss_files does.
Tested-by: Carlos O'Donell <carlos@redhat.com>
Reviewed-by: Carlos O'Donell <carlos@redhat.com>
Florian Weimer [Thu, 16 Jul 2020 14:12:46 +0000 (16:12 +0200)]
nss_files: Consolidate file opening in __nss_files_fopen
Tested-by: Carlos O'Donell <carlos@redhat.com>
Reviewed-by: Carlos O'Donell <carlos@redhat.com>
Joseph Myers [Mon, 20 Jul 2020 20:16:25 +0000 (20:16 +0000)]
Update powerpc-nofpu libm-test-ulps.
Joseph Myers [Mon, 20 Jul 2020 18:16:50 +0000 (18:16 +0000)]
Use MPFR 4.1.0 in build-many-glibcs.py.
This patch makes build-many-glibcs.py use the new MPFR 4.1.0 release.
Tested with build-many-glibcs.py (host-libraries, compilers and glibcs
builds).
Florian Weimer [Mon, 20 Jul 2020 11:30:45 +0000 (13:30 +0200)]
elf: Change TLS static surplus default back to 1664
Make the computation in elf/dl-tls.c more transparent, and add
an explicit test for the historic value.
Reviewed-by: Carlos O'Donell <carlos@redhat.com>
Samuel Thibault [Sat, 18 Jul 2020 13:12:56 +0000 (15:12 +0200)]
hurd: Fix longjmp check for sigstate
* sysdeps/mach/hurd/i386/____longjmp_chk.S,__longjmp.S: Properly check for
sigstate being NULL.