about summary refs log tree commit diff
Commit message (Collapse)AuthorAgeFilesLines
* Fix nscd/cachedumper.c compile errorsDJ Delorie2020-03-161-6/+8
|
* manual: Fix inconsistent declaration of wcsrchr [BZ #24655]Girish Joshi2020-03-131-1/+1
| | | | Reviewed-by: DJ Delorie <dj@redhat.com>
* nscd: add cache dumperDJ Delorie2020-03-134-1/+389
|
* parse_tunables: Fix typo in commentJonathan Wakely2020-03-131-1/+1
|
* ldconfig: trace origin paths with -vDJ Delorie2020-03-111-6/+24
| | | | | | With this patch, -v turns on a "from" trace for each directory searched, that tells you WHY that directory is being searched - is it a builtin, from the command line, or from some config file?
* test-container: print errno when execvp failsMichael Hudson-Doyle2020-03-111-1/+1
| | | | | | | I'm debugging a situation where lots of tests using test-container fail and it's possible knowing errno would help understand why. Reviewed-by: DJ Delorie <dj@redhat.com>
* [AArch64] Improve integer memcpyWilco Dijkstra2020-03-111-96/+101
| | | | | | Further optimize integer memcpy. Small cases now include copies up to 32 bytes. 64-128 byte copies are split into two cases to improve performance of 64-96 byte copies. Comments have been rewritten.
* Add NEWS entry for CVE-2020-10029 (bug 25487)Aurelien Jarno2020-03-111-1/+3
|
* gcc PR 89877: miscompilation due to missing cc clobber in longlong.h macrosVineet Gupta2020-03-101-2/+4
| | | | | | | | | | | | | | | | | | | | | | | | | | simple test such as below was failing. | void main(int argc, char *argv[]) | { | size_t total_time = 115424; // expected 115.424 | double secs = (double)total_time/(double)1000; | printf("%s %d %lf\n", "secs", total_time, secs); // prints 113.504 | printf("%d\n", (size_t)secs); | } The printf eventually called into glibc stdlib/divrem.c:__mpn_divrem() which uses the __arc__ specific inline asm macros from longlong.h which were causing miscompilation. include/ 2019-03-28 Vineet Gupta <vgupta@synopsys.com> PR 89877 * longlong.h [__arc__] (add_ssaaaa): Add cc clobber (sub_ddmmss): Likewise. Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
* mips: Fix wrong INTERNAL_SYSCALL_ERROR_P check from bc2eb9321eAdhemerval Zanella2020-03-101-1/+1
| | | | Checked on mips64-linux-gnu.
* elf: Fix wrong indentation from commit eb447b7b4bAdhemerval Zanella2020-03-101-5/+6
|
* y2038: linux: Provide __futimesat64 implementationLukasz Majewski2020-03-092-13/+32
| | | | | | | | | This conversion patch for supporting 64 bit time for futimesat only differs from the work performed for futimes (when providing __futimes64) with passing also the file name (and path) to utimensat. All the design and conversion decisions are exactly the same as for futimens conversion.
* y2038: linux: Provide __lutimes64 implementationLukasz Majewski2020-03-092-13/+27
| | | | | | | | | | | This conversion patch for supporting 64 bit time for lutimes mostly differs from the work performed for futimes (when providing __futimes64) with adding the AT_SYMLINK_NOFOLLOW flag to utimensat. It also supports passing file name instead of file descriptor number, but this is not relevant for utimensat used to implement it. All the design and conversion decisions are exactly the same as for futimens conversion.
* y2038: linux: Provide __futimes64 implementationLukasz Majewski2020-03-092-19/+26
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch provides new __futimes64 explicit 64 bit function for setting file's 64 bit attributes for access and modification time (by specifying file descriptor number). Internally, the __utimensat64_helper function is used. This patch is necessary for having architectures with __WORDSIZE == 32 Y2038 safe. Moreover, a 32 bit version - __futimes has been refactored to internally use __futimes64. The __futimes is now supposed to be used on systems still supporting 32 bit time (__TIMESIZE != 64) - hence the necessary conversion of struct timeval to 64 bit struct __timeval64. The check if struct timevals' usec fields are in the range between 0 and 1000000 has been removed as Linux kernel performs it internally in the implementation of utimensat (the conversion between struct __timeval64 and __timespec64 is not relevant for this particular check). Last but not least, checks for tvp{64} not being NULL have been preserved from the original code as some legacy user space programs may rely on it. 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 __futimes64 and __futimes.
* y2038: fix: Add missing libc_hidden_def for __futimens64Lukasz Majewski2020-03-071-0/+2
| | | | | The libc_hidden_def () declaration for __futimens64 function was missing, so it is added in this patch.
* sparc: Move sigreturn stub to assemblyAdhemerval Zanella2020-03-065-38/+73
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | It seems that some gcc versions might generates a stack frame for the sigreturn stub requires on sparc signal handling. For instance: $ cat test.c #define _GNU_SOURCE #include <sys/syscall.h> __attribute__ ((__optimize__ ("-fno-stack-protector"))) void __sigreturn_stub (void) { __asm__ ("mov %0, %%g1\n\t" "ta 0x10\n\t" : /* no outputs */ : "i" (SYS_rt_sigreturn)); } $ gcc -v [...] gcc version 9.2.1 20200224 (Debian 9.2.1-30) $ gcc -O2 -m64 test.c -S -o - [...] __sigreturn_stub: save %sp, -176, %sp #APP ! 9 "t.c" 1 mov 101, %g1 ta 0x10 ! 0 "" 2 #NO_APP .size __sigreturn_stub, .-__sigreturn_stub As indicated by kernel developers [1], the sigreturn stub can not change the register window or the stack pointer since the kernel has setup the restore frame at a precise location relative to the stack pointer when the stub is invoked. I tried to play with some compiler flags and even with _Noreturn and __builtin_unreachable after the asm does not help (and Sparc does not support naked functions). To avoid similar issues, as the stack-protector support also have stumbled, this patch moves the implementation of the sigreturn stubs to assembly. Checked on sparcv9-linux-gnu and sparc64-linux-gnu with gcc 9.2.1 and gcc 7.5.0. [1] https://lkml.org/lkml/2016/5/27/465
* ldbl-128ibm: Let long double files have specific compiler flagsTulio Magno Quites Machado Filho2020-03-061-3/+19
| | | | | | Soon, powerpc64le will need to provide extra compiler flags to the long double files in order to continue to build using the IBM 128-bit extended floating point type as long double.
* ldbl-128ibm-compat: Add tests for IBM long double functionsRajalakshmi Srinivasaraghavan2020-03-064-1/+35
| | | | | | | | | | | | This patch creates test-ibm128* tests from the long double function tests. In order to explicitly test IBM long double functions -mabi=ibmlongdouble is added to CFLAGS. Likewise, update the test headers to correct choose ULPs when redirects are enabled. Co-authored-by: Tulio Magno Quites Machado Filho <tuliom@linux.ibm.com> Co-authored-by: Paul E. Murphy <murphyp@linux.vnet.ibm.com>
* powerpc: Fix feraiseexcept and feclearexcept macrosMatheus Castanho2020-03-061-2/+2
| | | | | | | | | | | | | | | | | A recent change to fenvinline.h modified the check if __e is a a power of 2 inside feraiseexcept and feclearexcept macros. It introduced the use of the powerof2 macro but also removed the if statement checking whether __e != 0 before issuing an mtfsb* instruction. This is problematic because powerof2 (0) evaluates to 1 and without the removed if __e is allowed to be 0 when __builtin_clz is called. In that case the value 32 is passed to __MTFSB*, which is invalid. This commit uses __builtin_popcount instead of powerof2 to fix this issue and avoid the extra check for __e != 0. This was the approach used by the initial versions of that previous patch. Reviewed-by: Tulio Magno Quites Machado Filho <tuliom@linux.ibm.com>
* arm: Fix softp-fp Implies (BZ #25635)Adhemerval Zanella2020-03-062-0/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The commit "arm: Split BE/LE abilist" (1673ba87fefe019c834c09d33673d1d453ea698d) changed the soft-fp order for ARM selection when __SOFTFP__ is defined by the compiler. On 2.30 the sysdeps order is: 2.30 sysdeps/unix/sysv/linux/arm sysdeps/arm/nptl sysdeps/unix/sysv/linux sysdeps/nptl sysdeps/pthread sysdeps/gnu sysdeps/unix/inet sysdeps/unix/sysv sysdeps/unix/arm sysdeps/unix sysdeps/posix sysdeps/arm/nofpu sysdeps/ieee754/soft-fp sysdeps/arm sysdeps/wordsize-32 sysdeps/ieee754/flt-32 sysdeps/ieee754/dbl-64 sysdeps/ieee754 sysdeps/generic While on master is: sysdeps/unix/sysv/linux/arm/le sysdeps/unix/sysv/linux/arm sysdeps/arm/nptl sysdeps/unix/sysv/linux sysdeps/nptl sysdeps/pthread sysdeps/gnu sysdeps/unix/inet sysdeps/unix/sysv sysdeps/unix/arm sysdeps/unix sysdeps/posix sysdeps/arm/le sysdeps/arm sysdeps/wordsize-32 sysdeps/ieee754/flt-32 sysdeps/ieee754/dbl-64 sysdeps/arm/nofpu sysdeps/ieee754/soft-fp sysdeps/ieee754 sysdeps/generic It make the build select some routines (fadd, fdiv, fmul, fsub, and fma) on ieee754/flt-32 and ieee754/dbl-64 that requires fenv support to be correctly rounded which in turns lead to math failures since the __SOFTFP__ does not have fenv support. With this patch the order is now: sysdeps/unix/sysv/linux/arm/le sysdeps/unix/sysv/linux/arm sysdeps/arm/nptl sysdeps/unix/sysv/linux sysdeps/nptlsysdeps/pthread sysdeps/gnu sysdeps/unix/inet sysdeps/unix/sysv sysdeps/unix/arm sysdeps/unix sysdeps/posix sysdeps/arm/le/nofpu sysdeps/arm/nofpu sysdeps/ieee754/soft-fp sysdeps/arm/le sysdeps/arm sysdeps/wordsize-32 sysdeps/ieee754/flt-32 sysdeps/ieee754/dbl-64 sysdeps/ieee754 sysdeps/generic Checked on arm-linux-gnuaebi.
* Remove reference of --without-fp on configureAdhemerval Zanella2020-03-062-2/+4
|
* linux/sysipc: Include linux/posix_types.h for __kernel_mode_tAdhemerval Zanella2020-03-063-0/+3
| | | | | The posix_types.h (where __kernel_mode_t is defined) is included implicitly, which might not happen on older kernels.
* Improve IFUNC check [BZ #25506]Fangrui Song2020-03-052-2/+2
| | | | | | | | | GNU ld's RISCV port does not support IFUNC. ld -no-pie produces no relocation and the test passed incorrectly. Be more rigid by testing IRELATIVE explicitly. Tested-by: Aurelien Jarno <aurelien@aurel32.net> Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
* linux: Clear mode_t padding bits (BZ#25623)Adhemerval Zanella2020-03-053-6/+21
| | | | | | | | | | | | | | | | | | | | The kernel might not clear the padding value for the ipc_perm mode fields in compat mode (32 bit running on a 64 bit kernel). It was fixed on v4.14 when the ipc compat code was refactored to move (commits 553f770ef71b, 469391684626, c0ebccb6fa1e). Although it is most likely a kernel issue, it was shown only due BZ#18231 fix which made all the SysVIPC mode_t 32-bit regardless of the kABI. This patch fixes it by explicitly zeroing the upper bits for such cases. The __ASSUME_SYSVIPC_BROKEN_MODE_T case already handles it with the shift. (The aarch64 ipc_priv.h is superflous since __ASSUME_SYSVIPC_DEFAULT_IPC_64 is now defined as default). Checked on i686-linux-gnu on 3.10 and on 4.15 kernel.
* linux: Remove aarch64 ipc_priv.hAdhemerval Zanella2020-03-051-21/+0
| | | | | The aarch64 ipc_priv.h is superflous since __ASSUME_SYSVIPC_DEFAULT_IPC_64 is now defined as default.
* Linux: Use __fstatat64 in fchmodat implementationFlorian Weimer2020-03-051-1/+1
| | | | | | | fstatat64 depends on inlining to produce the desired __fxstatat64 call, which does not happen with -Os, leading to a link failure with an undefined reference to fstatat64. __fxstatat64 has a macro definition in include/sys/stat.h and thus avoids the problem.
* Linux: Use AT_FDCWD in utime, utimes when calling utimensatFlorian Weimer2020-03-052-2/+4
| | | | | | 0 is a valid descriptor without any special meaning. Reviewed-by: Lukasz Majewski <lukma@denx.de>
* S390: Remove backchain-based fallback and use generic backtrace.c.Stefan Liebler2020-03-052-295/+0
| | | | | | | | | | | | | | | | | | | | | | After recent discussions: - "[PATCH] s390: Remove backchain-based fallback from backtrace" https://www.sourceware.org/ml/libc-alpha/2020-02/msg00287.html - "Re: [PATCH 07/11] s390: Implement backtrace on top of <unwind-link.h>" https://www.sourceware.org/ml/libc-alpha/2020-02/msg00637.html We've checked and decided to remove the backchain: We don't know of any environments without libgcc. Thus the backchain unwinder is not used. If somebody builds with -mbackchain and without fasynchronous-unwind-tables and has libgcc installed, then the libgcc unwinder is called but not the backchain-based fallback. This step allows to get rid of the s390x specific backtrace.c files at all. Furthermore the now used debug/backtrace.c version has some more advantages: - Free all resources if necessary. (libc_freeres_fn) - Remove NULL address above _start. - Check whether we make any progress while getting addresses.
* manual: Fix wrong declaration of wcschr [BZ #24654]Girish Joshi2020-03-051-1/+1
|
* manual: Fix typo in parse_printf_format example [BZ #24638]Girish Joshi2020-03-041-1/+1
|
* Update translationsSiddhesh Poyarekar2020-03-042-10/+236
| | | | Incorporated updated translations from translationproject.org
* Convert Python scripts to Python 3Alistair Francis2020-03-037-7/+7
| | | | | | | | | Change all of the #! lines in Python scripts that are called from Makefiles to reference /usr/bin/python3. All of the scripts called from Makefiles are already run with Python 3, so let's make sure they are explicitly using Python 3 if called manually.
* alpha: Do not build with -fpicFlorian Weimer2020-03-031-4/+0
| | | | | | | | | | | | | | The combination of GCC 10 and binutils 2.35 (both unreleased) is no longer able to link the dynamic linker, due to a GP16 relocation overflow error: glibc/alpha-linux-gnu/elf/librtld.os: in function `calloc': glibc/elf/../include/rtld-malloc.h:44:(.text+0xd98): relocation truncated to fit: GPREL16 against symbol `__rtld_calloc' defined in .data.rel.ro section in glibc/alpha-linux-gnu/elf/librtld.os glibc/alpha-linux-gnu/elf/librtld.os: in function `malloc': glibc/elf/../include/rtld-malloc.h:56:(.text+0x2978): relocation truncated to fit: GPREL16 against symbol `__rtld_malloc' defined in .data.rel.ro section in glibc/alpha-linux-gnu/elf/librtld.os This is arguably a linker bug; the object files and their section size requirements look reasonable enough. Using -fPIC (the default) works around this issue.
* y2038: linux: Provide __utime64 implementationLukasz Majewski2020-03-033-1/+59
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch replaces auto generated wrapper (as described in sysdeps/unix/sysv/linux/syscalls.list) for utime with one which adds extra support for setting file's access and modification 64 bit time on machines with __TIMESIZE != 64. Internally, the __utimensat_time64 helper function is used. This patch is necessary for having architectures with __WORDSIZE == 32 && __TIMESIZE != 64 Y2038 safe. Moreover, a 32 bit version - __utime has been refactored to internally use __utime64. The __utime is now supposed to be used on systems still supporting 32 bit time (__TIMESIZE != 64) - hence the necessary conversion between struct utimbuf and struct __utimbuf64. 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 proper usage of both __utime64 and __utime. Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
* y2038: linux: Provide __utimes64 implementationLukasz Majewski2020-03-032-11/+29
| | | | | | | | | | | | | | | | | | | | | | | | | | | | This patch provides new __utimes64 explicit 64 bit function for setting file's 64 bit attributes for access and modification time. Internally, the __utimensat64_helper function is used. This patch is necessary for having architectures with __WORDSIZE == 32 Y2038 safe. Moreover, a 32 bit version - __utimes has been refactored to internally use __utimes64. The __utimes is now supposed to be used on systems still supporting 32 bit time (__TIMESIZE != 64) - hence the necessary conversion of struct timeval to 64 bit struct __timeval64. 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 proper usage of both __utimes64 and __utimes. Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
* y2038: Introduce struct __utimbuf64 - new internal glibc typeLukasz Majewski2020-03-031-0/+12
| | | | | | | | | | | This type is a glibc's "internal" type to store file's access and modification times in __time64_t rather than __time_t, which makes it Y2038-proof. Build tests: ./src/scripts/build-many-glibcs.py glibcs Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org> Reviewed-by: Alistair Francis <alistair.francis@wdc.com>
* microblaze: vfork is always availableFlorian Weimer2020-03-031-4/+0
| | | | | | | | | | Due to the built-in tables, __NR_vfork is always defined, so the fork-based fallback code is never used. (It appears that the vfork system call was wired up when the port was contributed to the kernel.) Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
* m68k: getpagesize syscall number is always availableFlorian Weimer2020-03-031-4/+0
| | | | | | Due to the built-in tables, __NR_getpagesize is always defined. Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
* Linux: epoll_pwait syscall number is always availableFlorian Weimer2020-03-031-16/+0
| | | | | | Due to the built-in tables, __NR_epoll_pwait is always defined. Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
* x86_64: Do not define __NR_semtimedop in <sysdep.h>Florian Weimer2020-03-031-7/+0
| | | | | | The definition is always available from the built-in system call table. Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
* ia64: Do not define __NR_semtimedop in <sysdep.h>Florian Weimer2020-03-031-6/+0
| | | | | | The definition is always available from the built-in system call table. Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
* Linux: open_by_handle_at syscall number is always availableFlorian Weimer2020-03-031-9/+0
| | | | | | Due to the built-in tables, __NR_open_by_handle_at is always defined. Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
* Linux: set_robust_list syscall number is always availableFlorian Weimer2020-03-033-14/+6
| | | | | | | Due to the built-in tables, __NR_set_robust_list is always defined (although it may not be available at run time). Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
* Linux: pciconfig_iobase syscall number is always available on alphaFlorian Weimer2020-03-031-2/+0
| | | | | | Due to the built-in tables, __NR_pciconfig_iobase is always defined. Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
* Linux: getdents64 syscall number is always available on MIPSFlorian Weimer2020-03-031-2/+0
| | | | | | | Due to the built-in tables, __NR_getdents64 is always defined, although it may not be supported at run time. Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
* Linux: Clean up preadv2, pwritev2 system call namesFlorian Weimer2020-03-034-22/+7
| | | | | | | | | | | With the built-in tables __NR_preadv2 and __NR_pwritev2 are always defined. The kernel has never defined __NR_preadv64v2 and __NR_pwritev64v2 and is unlikely to do so, given that the preadv2 and pwritev2 system calls themselves are 64-bit. Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
* Linux: exit_group syscall number is always availableFlorian Weimer2020-03-031-2/+0
| | | | | | Due to the built-in tables, __NR_exit_group is always defined. Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
* Linux: set_tid_address syscall number is always availableFlorian Weimer2020-03-031-2/+0
| | | | | | Due to the built-in tables, __NR_set_tid_address is always defined. Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
* Linux: pkey_mprotect syscall number is always availableFlorian Weimer2020-03-031-5/+0
| | | | | | Due to the built-in tables, __NR_pkey_mprotect is always defined. Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
* Linux: rt_sigqueueinfo syscall number is always availableFlorian Weimer2020-03-032-10/+0
| | | | | | | | | Due to the built-in tables, __NR_rt_sigqueueinfo is always defined. sysdeps/pthread/time_routines.c is not updated because it is shared with Hurd. Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>