aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2020-08-27RISC-V: Support the 32-bit ABI implementationAlistair Francis7-22/+146
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>
2020-08-27RISC-V: Add arch-syscall.h for RV32Alistair Francis1-0/+284
Reviewed-by: Maciej W. Rozycki <macro@wdc.com>
2020-08-27RISC-V: Add path of library directories for the 32-bitAlistair Francis1-16/+38
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>
2020-08-27RISC-V: Support dynamic loader for the 32-bitZong Li1-1/+1
Add the LD_SO_ABI definition for RISC-V 32-bit. Reviewed-by: Maciej W. Rozycki <macro@wdc.com>
2020-08-27RISC-V: Add support for 32-bit vDSO callsAlistair Francis1-6/+17
Reviewed-by: Maciej W. Rozycki <macro@wdc.com>
2020-08-27RISC-V: Use 64-bit-time syscall numbers with the 32-bit portAlistair Francis1-0/+23
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>
2020-08-27RISC-V: Cleanup some of the sysdep.h codeAlistair Francis1-13/+4
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>
2020-08-27RISC-V: Use 64-bit time_t and off_t for RV32 and RV64Alistair Francis4-0/+162
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>
2020-08-27io/lockf: Include bits/types.h before __OFF_T_MATCHES_OFF64_T checkAlistair Francis1-0/+2
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>
2020-08-27elf/tst-libc_dlvsym: Add a TEST_COMPAT around some symbol testsAlistair Francis1-0/+5
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>
2020-08-27hurd: define BSD 4.3 ioctls only under __USE_MISCSamuel Thibault1-0/+2
2020-08-26string: test strncasecmp and strncpy near page boundariesRaphael Moreira Zinsly2-0/+78
Add tests to check if strings placed at page boundaries are handled correctly by strncasecmp and strncpy similar to tests for strncmp and strnlen.
2020-08-24linux: Simplify utimensatAdhemerval Zanella1-13/+10
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>
2020-08-24linux: Simplify timerfd_settimeAdhemerval Zanella1-14/+9
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>
2020-08-24linux: Simplify timer_gettimeAdhemerval Zanella1-12/+8
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>
2020-08-24linux: Simplify sched_rr_get_intervalAdhemerval Zanella1-12/+8
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>
2020-08-24linux: Simplify ppollAdhemerval Zanella1-11/+10
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>
2020-08-24linux: Simplify mq_timedsendAdhemerval Zanella1-7/+7
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>
2020-08-24linux: Simplify mq_timedreceiveAdhemerval Zanella1-9/+9
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>
2020-08-24linux: Simplify clock_settimeAdhemerval Zanella1-9/+9
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>
2020-08-24linux: Simplify clock_nanosleepAdhemerval Zanella1-22/+11
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>
2020-08-24linux: Simplify clock_gettimeAdhemerval Zanella1-25/+17
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).
2020-08-24linux: Simplify clock_adjtimeAdhemerval Zanella1-13/+10
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>
2020-08-24linux: Add helper function to optimize 64-bit time_t fallback supportAdhemerval Zanella3-1/+95
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.
2020-08-21S390: Sync HWCAP names with kernel by adding aliases [BZ #25971]Stefan Liebler2-0/+6
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
2020-08-20[vcstocl] Import ProjectQuirks from its own fileSiddhesh Poyarekar1-1/+1
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.
2020-08-20build-many-glibcs.py: Add a s390x -O3 glibc variant.Stefan Liebler1-2/+11
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.
2020-08-20Fix namespace violation in stdio.h and sys/stat.h if build with ↵Stefan Liebler2-3/+5
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".
2020-08-19Add C2x BOOL_MAX and BOOL_WIDTH to limits.h.Joseph Myers1-0/+12
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.
2020-08-19Use MPC 1.2.0 in build-many-glibcs.py.Joseph Myers1-1/+1
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).
2020-08-19Add new STATX_* constants from Linux 5.8 to bits/statx-generic.h.Joseph Myers1-0/+3
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.
2020-08-18Correct locking and cancellation cleanup in syslog functions (bug 26100)Andreas Schwab1-16/+28
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.
2020-08-17nptl: Handle NULL abstime [BZ #26394]H.J. Lu2-6/+16
Since abstime passed to pthread_{clock|timed}join_np may be NULL, convert to 64 bit abstime only if abstime isn't NULL.
2020-08-13Update build-many-glibcs.py for binutils ia64 obsoletion.Joseph Myers1-3/+9
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).
2020-08-13Update kernel version to 5.8 in tst-mman-consts.py.Joseph Myers1-1/+1
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.
2020-08-13y2038: nptl: Convert pthread_{clock|timed}join_np to support 64 bit timeLukasz Majewski5-14/+110
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>
2020-08-13aarch64: update ulps.Szabolcs Nagy1-1/+1
For new j0 test.
2020-08-12S390: Regenerate ULPs.Stefan Liebler1-1/+1
Updates needed after new j0 test: commit 9bfc225078219521439ec8b0f665915e769d40c2 math: Regenerate auto-libm-test-out-j0
2020-08-08manual: Fix sigdescr_np and sigabbrev_np return type (BZ #26343)Adhemerval Zanella1-2/+2
2020-08-08math: Update x86_64 ulpsAdhemerval Zanella2-6/+6
From new j0 test.
2020-08-08math: Regenerate auto-libm-test-out-j0Adhemerval Zanella1-0/+25
This is a missing bit for b7dd366dbe.
2020-08-07manual: Put the istrerrorname_np and strerrordesc_np return type in bracesAdhemerval Zanella1-2/+2
Otherwise it is not rendered or indexed correctly.
2020-08-07Linux: Use faccessat2 to implement faccessat (bug 18683)Florian Weimer2-3/+19
This provides correct AT_EACCESS handling and also takes Linux security modules into account. Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
2020-08-07manual: Fix strerrorname_np and strerrordesc_np return type (BZ #26343)Adhemerval Zanella1-2/+2
2020-08-07math: Fix inaccuracy of j0f for x >= 2^127 when sin(x)+cos(x) is tinyPaul Zimmermann2-1/+18
Checked on x86_64-linux-gnu and i686-linux-gnu.
2020-08-07Update syscall lists for Linux 5.8.Joseph Myers25-2/+27
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.
2020-08-07Use Linux 5.8 in build-many-glibcs.py.Joseph Myers1-1/+1
This patch makes build-many-glibcs.py use Linux 5.8. Tested with build-many-glibcs.py (host-libraries, compilers and glibcs builds).
2020-08-06htl: Enable tst-cancelx?[45]Samuel Thibault8-16/+17
* 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.
2020-08-07tst-cancel4: Make blocking on write more portableSamuel Thibault1-4/+4
* nptl/tst-cancel4.c (tf_send, tf_sendto): Set socket buffer size after connecting.
2020-08-06hurd: Add missing hidden defSamuel Thibault1-0/+1
* sysdeps/mach/hurd/sched_gets.c (__sched_getscheduler): Add hidden def.