aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)AuthorFilesLines
2020-01-19Update translationsSiddhesh Poyarekar34-3945/+4304
Update translations from the translation project.
2020-01-19translations: Run msgmerge when downloading translationsSiddhesh Poyarekar1-1/+3
The latest translations in the translationproject URL need to be merged in using msgmerge for the po files to be correctly updated, otherwise we may end up getting odd results, such as the previous translations update. This patch adds another step to the update-translations Makefile target which does a msgmerge of the downloaded po file with libc.pot and then uses that as the final result.
2020-01-17Fix maybe-uninitialized error on powerpcMatheus Castanho1-0/+7
The build has been failing on powerpc64le-linux-gnu with GCC 10 due to a maybe-uninitialized error: ../sysdeps/ieee754/dbl-64/mpa.c:875:6: error: ‘w.e’ may be used uninitialized in this function [-Werror=maybe-uninitialized] 875 | EY -= EX; | ^~ The warning is thrown because when __inv is called by __dvd *y is not initialized and if t == 0 before calling __dbl_mp, EY will stay uninitialized, as the function does not touch it in this case. However, since t will be set to 1/t before calling __dbl_mp, t == 0 will never happen, so we can instruct the compiler to ignore this case, which suppresses the warning. Tested on powerpc64le. Reviewed-by: Tulio Magno Quites Machado Filho <tuliom@linux.ibm.com>
2020-01-18powerpc32: Fix syntax error in __GLRO macroAndreas Schwab1-1/+1
2020-01-17Remove incorrect alloc_size attribute from pvalloc [BZ #25401]Florian Weimer3-3/+50
pvalloc is guarantueed to round up the allocation size to the page size, so applications can assume that the memory region is larger than the passed-in argument. The alloc_size attribute cannot express that. The test case is based on a suggestion from Jakub Jelinek. This fixes commit 9bf8e29ca136094f73f69f725f15c51facc97206 ("malloc: make malloc fail with requests larger than PTRDIFF_MAX (BZ#23741)"). Reviewed-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
2020-01-17Fix tst-pkey.c pkey_alloc return checks and manualLucas A. M. Magalhaes2-0/+8
This test was failing in some powerpc systems as it was not checking for ENOSPC return. As said on the Linux man-pages and can be observed by the implementation at mm/mprotect.c in the Linux Kernel source. The syscall pkey_alloc can return EINVAL or ENOSPC. ENOSPC will indicate either that all keys are in use or that the kernel does not support pkeys. Reviewed-by: Gabriel F. T. Gomes <gabriel@inconstante.net.br>
2020-01-17powerpc: Move cache line size to rtld_global_roTulio Magno Quites Machado Filho20-67/+312
GCC 10.0 enabled -fno-common by default and this started to point that __cache_line_size had been implemented in 2 different places: loader and libc. In order to avoid this duplication, the libc variable has been removed and the loader variable is moved to rtld_global_ro. File sysdeps/unix/sysv/linux/powerpc/dl-auxv.h has been added in order to reuse code for both static and dynamic linking scenarios. Reviewed-by: Carlos O'Donell <carlos@redhat.com>
2020-01-17powerpc: Initialize rtld_global_ro for static dlopen [BZ #20802]Tulio Magno Quites Machado Filho1-2/+11
Initialize dl_auxv, dl_hwcap and dl_hwcap2 in rtld_global_ro for DSOs that have been statically dlopen'ed. Reviewed-by: Carlos O'Donell <carlos@redhat.com>
2020-01-17Revert outdated translationsSiddhesh Poyarekar16-38597/+54712
The update-translation target seems to have downloaded outdated translations for these languages. Revert them and try to figure out if this is a problem with the target or an error in translations.
2020-01-17vcs-to-changelog: Add quirk for __nonnullSiddhesh Poyarekar1-0/+2
The parser cannot identify the __nonnull off the bat and confuses __typeof in the change db25266c9 to be a function declaration.
2020-01-16elf: Add elf/tst-dlopenfail-2 [BZ #25396]Florian Weimer3-2/+83
Without CET, a jump into a newly loaded object through an overwritten link map often does not crash, it just executes some random code. CET detects this in some cases because the function pointer does not point to the start of a function in the replacement shared object, so there is no ENDBR instruction. The new test uses a small shared object and the existing dangling link map to trigger the bug. Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
2020-01-16Clear GL(dl_initfirst) when freeing its link_map memory [BZ# 25396]H.J. Lu1-0/+4
We should clear GL(dl_initfirst) when freeing its link_map memory. Tested on Fedora 31/x86-64 with CET. Reviewed-by: Florian Weimer <fweimer@redhat.com>
2020-01-16Update TranslationsSiddhesh Poyarekar27-57666/+40739
Update translations from translationproject.org for 2.30.9000.
2020-01-13htl: Add internal version of __pthread_mutex_timedlockSamuel Thibault4-2/+7
The C11 threads implementation will need it.
2020-01-13htl: Avoid crashing when passed invalid pthread_t valuesSamuel Thibault1-2/+4
2020-01-13Update build-many-glibcs.py for GCC move to git.Joseph Myers1-10/+17
This patch updates build-many-glibcs.py for the move of GCC to git, teaching it to do the initial checkout from git, to replace an SVN checkout with a git one if --replace-sources is used, and to get the commit identifier from a git checkout after updating it.
2020-01-13Fix "elf: Add tst-ldconfig-ld_so_conf-update test" on 32bit.Stefan Liebler1-2/+4
This new test was introduced with recent commit 591236f1a33f11cc65ccf009d997071ba853e186. If run on 32bit, it fails while renaming tst-ldconfig-ld-mod.so as there is no /usr/lib64 directory. This patch is constructing the file name with help of support_libdir_prefix. Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
2020-01-13htl: Avoid exposing unixoid functionsSamuel Thibault5-4/+7
C11 threads should not expose them.
2020-01-13htl: Add type sizes in bits/pthreadtypes-arch.h and check themSamuel Thibault14-0/+42
2020-01-13htl: Add internal versions of functions used by C11 threadsSamuel Thibault4-2/+7
The C11 threads implementation needs to call pthread_join and pthread_key_delete without exposing them.
2020-01-09Update timezone/READMEPaul Eggert2-6/+9
* timezone/version: New file, also taken from tzcode2018i. * timezone/README: Reword so that people needn't paw through old ChangeLog files to see which version we're using, a process that is error-prone. Update an obsolescent URL.
2020-01-09 elf: Add tst-ldconfig-ld_so_conf-update testAlexandra Hájková5-3/+132
Test ldconfig after /etc/ld.so.conf update and verify a running process observes changes to /etc/ld.so.cache. The test uses the test-in-container framework. Reviewed-by: Arjun Shankar <arjun@redhat.com>
2020-01-09Revise NEWS description of changes to gettimeofday etc.Zack Weinberg1-25/+38
Mostly English grammar and style improvements. The bullet list is reorganized a little for clarity. The details of exactly which Linux-based ports still report system-wide time zone information from gettimeofday has been removed, as this is not intended to be something people should rely on. Also clarify the deprecation of older SPARC ISAs, based on the fact that “SPARC version 7” is actually the very first version of the SPARC ISA (Sun Microsystems was very fond of letting the marketing department pick version numbers). Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
2020-01-09Drop dependency of dist target on ChangeLogSiddhesh Poyarekar2-1/+5
We no longer write manual ChangeLog entries since they are auto-generated at release time. Drop dependency of the `make dist` target on the file and document the fact that the latest ChangeLog entries can be read in the highest numbered ChangeLog.N file in ChangeLog.old. The ChangeLog.old/ChangeLog.20 file for 2.31 will thus be generated just before tagging a release. Reviewed-by: Paul Eggert <eggert@cs.ucla.edu> Reviewed-by: Jonathan Nieder <jrnieder@gmail.com>
2020-01-08MIPS: Fix circular definition of __LDBL_MANT_DIG__ in ieee754.hZack Weinberg1-1/+1
In commit aa706e13f4bfdf32a27c498902edf4f6006e433e, sysdeps/mips/ieee754/ieee754.h was changed to use GCC’s predefined macro __LDBL_MANT_DIG__, instead of including <float.h> and using LDBL_MANT_DIG (and therefore polluting the user namespace with all of the macros defined in float.h). In order to support compilers that don’t provide __LDBL_MANT_DIG__, there is a fallback #if block which was supposed to include <float.h> and then define __LDBL_MANT_DIG__ to LDBL_MANT_DIG. However, at some point during the development of the patch, a typo was introduced, causing the fallback block to define __LDBL_MANT_DIG__ to expand to __LDBL_MANT_DIG__. Correct this typo.
2020-01-08sl_SI locale: Use "." as the thousands separator (bug 25233)Rafał Lużyński1-2/+2
This is correct according to CLDR [1] and Florian Weimer's quick research. [2] [1] https://st.unicode.org/cldr-apps/v#/sl/Symbols/ [2] https://sourceware.org/bugzilla/show_bug.cgi?id=25233#c0 Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
2020-01-07Fix formatting of ChangeLog ouputSiddhesh Poyarekar1-1/+1
Add another newline when the number of files differing is too large. This is typical for across-the-board changes such as the copyright year update that happened recently.
2020-01-05hurd: Fix message reception for timer_threadSamuel Thibault1-1/+2
Without a proper size, we get MACH_RCV_TOO_LARGE instead of MACH_MSG_SUCCESS. * sysdeps/mach/hurd/setitimer.c (timer_thread): Add return_code_type field to received message, and set the receive size in __mach_msg call.
2020-01-04htl: Add __errno_location and __h_errno_locationSamuel Thibault5-0/+42
As explained on https://sourceware.org/ml/libc-alpha/2020-01/msg00049.html the presence of __errno_location in libpthread.so on GNU/Linux makes libpthread getting linked in for libstdc++. This aligns on that behavior, to avoid issues that only GNU/Hurd would get.
2020-01-04htl: Move pthread_atfork to libc_nonshared.aSamuel Thibault3-34/+6
This follows bd60ce86520b ('nptl: Move pthread_atfork to libc_nonshared.a') with the same rationale: there is no non-libpthread equivalent to be used for making linking against libpthread optional. libpthread_nonshared.a is unused after this, so remove it from the build. There is no ABI impact because pthread_atfork was implemented using __register_atfork in libc even before this change. pthread_atfork has to be a weak alias because pthread_* names are not reserved in libc.
2020-01-04htl: Drop common tcbhead_t definitionSamuel Thibault1-10/+2
This would conflict when including pt-internal.h outside libpthread, while we can actually just include <tls.h>
2020-01-04htl: Use dso_handle.hSamuel Thibault1-5/+2
2020-01-03linux: Optimize fallback 32-bit clock_getresAdhemerval Zanella1-4/+12
This patch avoid probing the __NR_clock_getttime64 syscall each time __clock_gettime64 is issued on a kernel without 64 bit time support. Once ENOSYS is obtained, only 32-bit clock_gettime are used. The following snippet: clock_getres (CLOCK_REALTIME, &(struct timespec) { 0 }); clock_getres (CLOCK_MONOTONIC, &(struct timespec) { 0 }); clock_getres (CLOCK_BOOTTIME, &(struct timespec) { 0 }); clock_getres (20, &(struct timespec) { 0 }); On a kernel without 64 bit time support issues the syscalls: syscall_0x196(0, 0xffb83330, [...]) = -1 ENOSYS (Function not implemented) clock_getres(CLOCK_REALTIME, {tv_sec=0, tv_nsec=1}) = 0 clock_getres(CLOCK_MONOTONIC, {tv_sec=0, tv_nsec=1}) = 0 clock_getres(CLOCK_BOOTTIME, {tv_sec=0, tv_nsec=1}) = 0 Checked on i686-linux-gnu on 4.15 kernel. Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
2020-01-03linux: Add support for clock_getres64 vDSOAdhemerval Zanella8-12/+24
No architecture currently defines the vDSO symbol. On archictures with 64-bit time_t the HAVE_CLOCK_GETRES_VSYSCALL is renamed to HAVE_CLOCK_GETRES64_VSYSCALL, it simplifies clock_gettime code. Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
2020-01-03linux: Enable vDSO clock_gettime64 for mipsAdhemerval Zanella1-0/+5
It was added on Linux 5.4 (commit 1f66c45db3302). Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
2020-01-03linux: Enable vDSO clock_gettime64 for armAdhemerval Zanella1-0/+1
It was added on Linux 5.5 (commit 74d06efb9c2f9). Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
2020-01-03linux: Enable vDSO clock_gettime64 for i386Adhemerval Zanella1-0/+1
It was added on Linux 5.3 (commit 22ca962288c0a). Checked on i686-linux-gnu with 5.3.0 kernel. Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
2020-01-03linux: Optimize fallback 32-bit clock_gettimeAdhemerval Zanella1-4/+12
This patch avoid probing the __NR_clock_getttime64 syscall each time __clock_gettime64 is issued on a kernel without 64 bit time support. Once ENOSYS is obtained, only 32-bit clock_gettime are used. The following snippet: clock_gettime (CLOCK_REALTIME, &(struct timespec) { 0 }); clock_gettime (CLOCK_MONOTONIC, &(struct timespec) { 0 }); clock_gettime (CLOCK_BOOTTIME, &(struct timespec) { 0 }); clock_gettime (20, &(struct timespec) { 0 }); On a kernel without 64 bit time support and with vDSO support results on the following syscalls: syscall_0x193(0, 0xff87ba30, [...]) = -1 ENOSYS (Function not implemented) clock_gettime(CLOCK_BOOTTIME, {tv_sec=927082, tv_nsec=474382032}) = 0 clock_gettime(0x14 /* CLOCK_??? */, 0xff87b9f8) = -1 EINVAL (Invalid argument) While on a kernel without vDSO support: syscall_0x193(0, 0xbec95550, 0xb6ed2000, 0x1, 0xbec95550, 0) = -1 (errno 38) clock_gettime(CLOCK_REALTIME, {tv_sec=1576615930, tv_nsec=638250162}) = 0 clock_gettime(CLOCK_MONOTONIC, {tv_sec=1665478, tv_nsec=638779620}) = 0 clock_gettime(CLOCK_BOOTTIME, {tv_sec=1675418, tv_nsec=292932704}) = 0 clock_gettime(0x14 /* CLOCK_??? */, 0xbec95530) = -1 EINVAL (Invalid argument) Checked on i686-linux-gnu on 4.15 kernel and on a 5.3 kernel. Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
2020-01-03linux: Add support for clock_gettime64 vDSOAdhemerval Zanella9-12/+34
No architecture currently defines the vDSO symbol. On architectures with 64-bit time_t the HAVE_CLOCK_GETTIME_VSYSCALL is renamed to HAVE_CLOCK_GETTIME64_VSYSCALL, it simplifies clock_gettime code. Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
2020-01-03elf: Move vDSO setup to rtld (BZ#24967)Adhemerval Zanella31-289/+257
This patch moves the vDSO setup from libc to loader code, just after the vDSO link_map setup. For static case the initialization is moved to _dl_non_dynamic_init instead. Instead of using the mangled pointer, the vDSO data is set as attribute_relro (on _rtld_global_ro for shared or _dl_vdso_* for static). It is read-only even with partial relro. It fixes BZ#24967 now that the vDSO pointer is setup earlier than malloc interposition is called. Also, vDSO calls should not be a problem for static dlopen as indicated by BZ#20802. The vDSO pointer would be zero-initialized and the syscall will be issued instead. Checked on x86_64-linux-gnu, i686-linux-gnu, aarch64-linux-gnu, arm-linux-gnueabihf, powerpc64le-linux-gnu, powerpc64-linux-gnu, powerpc-linux-gnu, s390x-linux-gnu, sparc64-linux-gnu, and sparcv9-linux-gnu. I also run some tests on mips. Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
2020-01-03elf: Enable relro for static buildAdhemerval Zanella1-4/+14
The code is similar to the one at elf/dl-reloc.c, where it checks for the l_relro_size from the link_map (obtained from PT_GNU_RELRO header from program headers) and calls_dl_protected_relro. For testing I will use the ones proposed by Florian's patch 'elf: Add tests for working RELRO protection' [1]. Checked on x86_64-linux-gnu, i686-linux-gnu, powerpc64le-linux-gnu, aarch64-linux-gnu, s390x-linux-gnu, and sparc64-linux-gnu. I also check with --enable-static pie on x86_64-linux-gnu, i686-linux-gnu, and aarch64-linux-gnu which seems the only architectures where static PIE is actually working (as per 9d7a3741c9e, on arm-linux-gnueabihf, powerpc64{le}-linux-gnu, and s390x-linux-gnu I am seeing runtime issues not related to my patch). [1] https://sourceware.org/ml/libc-alpha/2019-10/msg00059.html Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
2020-01-03linux: Consolidate time implementationAdhemerval Zanella3-55/+54
The IFUNC bypass to vDSO is used when USE_IFUNC_TIME is set. Currently powerpc and x86 defines it. Otherwise the generic implementation is used, which calls clock_gettime. Checked on powerpc64le-linux-gnu, powerpc64-linux-gnu, powerpc-linux-gnu-power4, x86_64-linux-gnu, and i686-linux-gnu. Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
2020-01-03linux: Consolidate Linux gettimeofdayAdhemerval Zanella4-100/+63
The IFUNC bypass to vDSO is used when USE_IFUNC_GETTIMEOFDAY is set. Currently aarch64, powerpc*, and x86 defines it. Otherwise the generic implementation is used, which calls clock_gettime. Checked on aarch64-linux-gnu, powerpc64le-linux-gnu, powerpc64-linux-gnu, powerpc-linux-gnu-power4, x86_64-linux-gnu, and i686-linux-gnu. Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
2020-01-03linux: Update mips vDSO symbolsAdhemerval Zanella1-0/+1
The clock_getres is a new implementation added on Linux 5.4 (abed3d826f2f). Checked with a build against mips-linux-gnu and mips64-linux-gnu. Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
2020-01-03linux: Update x86 vDSO symbolsAdhemerval Zanella3-4/+4
Add the missing time and clock_getres vDSO symbol names on x86. For time, the iFUNC already uses expected name so it affects only the static build. The clock_getres is a new implementation added on Linux 5.3 (f66501dc53e72). Checked on x86-linux-gnu and i686-linux-gnu. Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
2020-01-03Remove vDSO support from make-syscall.shAdhemerval Zanella1-44/+1
The auto-generated vDSO call shows some issues: - It requires sync the auto-generated C file with current glibc implementation; - It still uses symbol redirections hacks where libc-symbols.h provide macros that uses compiler builtins (libc_ifunc_redirected for instance); - It does not handle all required compiler handling (inhibit_stack_protector on iFUNC resolver). - No architecure uses it. Checked with a build against all major ABIs. Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
2020-01-03x86: Make x32 use x86 time implementationAdhemerval Zanella2-2/+0
This is the only use of auto-generation syscall which uses a vDSO plus IFUNC and the current x86 generic implementation already covers the expected semantic. Checked on x86_64-linux-gnu-x32. Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
2020-01-03linux: Fix vDSO macros build with time64 interfacesAdhemerval Zanella10-98/+58
As indicated on libc-help [1] the ec138c67cb commit broke 32-bit builds when configured with --enable-kernel=5.1 or higher. The scenario 10 from [2] might also occur in this configuration and INLINE_VSYSCALL will try to use the vDSO symbol and HAVE_CLOCK_GETTIME64_VSYSCALL does not set HAVE_VSYSCALL prior its usage. Also, there is no easy way to just enable the code to use one vDSO symbol since the macro INLINE_VSYSCALL is redefined if HAVE_VSYSCALL is set. Instead of adding more pre-processor handling and making the code even more convoluted, this patch removes the requirement of defining HAVE_VSYSCALL before including sysdep-vdso.h to enable vDSO usage. The INLINE_VSYSCALL is now expected to be issued inside a HAVE_*_VSYSCALL check, since it will try to use the internal vDSO pointers. Both clock_getres and clock_gettime vDSO code for time64_t were removed since there is no vDSO setup code for the symbol (an architecture can not set HAVE_CLOCK_GETTIME64_VSYSCALL). Checked on i686-linux-gnu (default and with --enable-kernel=5.1), x86_64-linux-gnu, aarch64-linux-gnu, and powerpc64le-linux-gnu. I also checked against a build to mips64-linux-gnu and sparc64-linux-gnu. [1] https://sourceware.org/ml/libc-help/2019-12/msg00014.html [2] https://sourceware.org/ml/libc-alpha/2019-12/msg00142.html Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>
2020-01-03Linux: Fix clock_nanosleep time64 checkAdhemerval Zanella1-8/+12
The result of INTERNAL_SYSCALL_CANCEL should be checked with macros INTERNAL_SYSCALL_ERROR_P and INTERNAL_SYSCALL_ERRNO instead of comparing the result directly. Checked on powerpc-linux-gnu.
2020-01-03Add libm_alias_finite for _finite symbolsWilco Dijkstra263-351/+605
This patch adds a new macro, libm_alias_finite, to define all _finite symbol. It sets all _finite symbol as compat symbol based on its first version (obtained from the definition at built generated first-versions.h). The <fn>f128_finite symbols were introduced in GLIBC 2.26 and so need special treatment in code that is shared between long double and float128. It is done by adding a list, similar to internal symbol redifinition, on sysdeps/ieee754/float128/float128_private.h. Alpha also needs some tricky changes to ensure we still emit 2 compat symbols for sqrt(f). Passes buildmanyglibc. Co-authored-by: Adhemerval Zanella <adhemerval.zanella@linaro.org> Reviewed-by: Siddhesh Poyarekar <siddhesh@sourceware.org>